@pipeline-builder/pipeline-core 4.1.13 → 4.1.15
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/lib/config/config-types.d.ts +11 -0
- package/lib/config/config-types.js +1 -1
- package/lib/config/infrastructure-config.d.ts +2 -0
- package/lib/config/infrastructure-config.js +4 -1
- package/lib/config/server-config.js +3 -1
- package/lib/core/artifact-manager.d.ts +17 -0
- package/lib/core/artifact-manager.js +17 -1
- package/lib/core/metadata-builder.d.ts +7 -0
- package/lib/core/metadata-builder.js +8 -2
- package/lib/core/pipeline-helpers.d.ts +7 -2
- package/lib/core/pipeline-helpers.js +32 -8
- package/lib/pipeline/pipeline-builder.js +12 -7
- package/lib/pipeline/plugin-lookup.js +16 -1
- package/lib/pipeline/stage-builder.d.ts +1 -1
- package/lib/pipeline/stage-builder.js +16 -5
- package/lib/template/plugin-resolver.js +19 -5
- package/lib/template/tokenizer.d.ts +2 -1
- package/lib/template/tokenizer.js +18 -3
- package/package.json +3 -3
|
@@ -59,6 +59,10 @@ export interface ServerConfig {
|
|
|
59
59
|
readonly billingHost: string;
|
|
60
60
|
readonly billingPort: number;
|
|
61
61
|
readonly billingTimeout: number;
|
|
62
|
+
/** image-registry service — the plugin worker asks it to sign pushed images (env: `IMAGE_REGISTRY_SERVICE_HOST`). */
|
|
63
|
+
readonly imageRegistryHost: string;
|
|
64
|
+
/** env: `IMAGE_REGISTRY_SERVICE_PORT` */
|
|
65
|
+
readonly imageRegistryPort: number;
|
|
62
66
|
};
|
|
63
67
|
}
|
|
64
68
|
/** Authentication configuration for the generic service scaffold. */
|
|
@@ -154,6 +158,13 @@ export interface BuildConfig {
|
|
|
154
158
|
* buildkitd sidecar.
|
|
155
159
|
*/
|
|
156
160
|
readonly buildkitAddr: string;
|
|
161
|
+
/**
|
|
162
|
+
* PEM public key plugin images are verified against (env:
|
|
163
|
+
* `PLUGIN_SIGNING_PUBLIC_KEY_FILE`). The PRIVATE half lives only in the
|
|
164
|
+
* image-registry service, which signs every pushed plugin image — never in the
|
|
165
|
+
* plugin pod, whose network namespace is shared with untrusted builds.
|
|
166
|
+
*/
|
|
167
|
+
readonly signingPublicKeyFile: string;
|
|
157
168
|
}
|
|
158
169
|
export interface ObservabilityConfig {
|
|
159
170
|
readonly logLevel: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
export {};
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9jb25maWctdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IFF1b3RhVGllciwgUXVvdGFUaWVyTGltaXRzIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuXG4vKipcbiAqIFR5cGUtc2FmZSBjb25maWd1cmF0aW9uIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcENvbmZpZyB7XG4gIHJlYWRvbmx5IHNlcnZlcjogU2VydmVyQ29uZmlnO1xuICByZWFkb25seSBhdXRoOiBBdXRoQ29uZmlnO1xuICByZWFkb25seSBkYXRhYmFzZTogRGF0YWJhc2VDb25maWc7XG4gIHJlYWRvbmx5IHJlZ2lzdHJ5OiBSZWdpc3RyeUNvbmZpZztcbiAgcmVhZG9ubHkgcGx1Z2luQnVpbGQ6IFBsdWdpbkJ1aWxkQ29uZmlnO1xuICByZWFkb25seSBkb2NrZXJDb25maWc6IEJ1aWxkQ29uZmlnO1xuICByZWFkb25seSBvYnNlcnZhYmlsaXR5OiBPYnNlcnZhYmlsaXR5Q29uZmlnO1xuICByZWFkb25seSBjb21wbGlhbmNlOiBDb21wbGlhbmNlQ29uZmlnO1xuICByZWFkb25seSBhd3M6IEFXU0NvbmZpZztcbiAgcmVhZG9ubHkgcmF0ZUxpbWl0OiBSYXRlTGltaXRDb25maWc7XG4gIHJlYWRvbmx5IGJpbGxpbmc6IEJpbGxpbmdDb25maWc7XG59XG5cbi8qKiBFeHByZXNzIHNlcnZlciBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJDb25maWcge1xuICAvKiogSFRUUCBsaXN0ZW4gcG9ydCAoZW52OiBgUE9SVGApLiAqL1xuICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gIHJlYWRvbmx5IGNvcnM6IHtcbiAgICAvKiogV2hldGhlciB0byBpbmNsdWRlIGNyZWRlbnRpYWxzIGluIENPUlMgcmVzcG9uc2VzIChlbnY6IGBDT1JTX0NSRURFTlRJQUxTYCkuICovXG4gICAgcmVhZG9ubHkgY3JlZGVudGlhbHM6IGJvb2xlYW47XG4gICAgLyoqIEFsbG93ZWQgb3JpZ2luKHMpIOKAlCBzaW5nbGUgc3RyaW5nLCBhcnJheSwgb3IgYCcqJ2AgKGVudjogYENPUlNfT1JJR0lOYCkuICovXG4gICAgcmVhZG9ubHkgb3JpZ2luOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgfTtcbiAgLyoqIE51bWJlciBvZiByZXZlcnNlIHByb3h5IGhvcHMgdG8gdHJ1c3QgKGVudjogYFRSVVNUX1BST1hZYCkuICovXG4gIHJlYWRvbmx5IHRydXN0UHJveHk6IG51bWJlcjtcbiAgLyoqIEZyb250ZW5kIGJhc2UgVVJMLCB1c2VkIGFzIENPUlMgZmFsbGJhY2sgKGVudjogYFBMQVRGT1JNX0JBU0VfVVJMYCkuICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGh0dHBDbGllbnQ6IHtcbiAgICAvKiogRGVmYXVsdCBIVFRQIHJlcXVlc3QgdGltZW91dCBpbiBtcyAoZW52OiBgSFRUUF9DTElFTlRfVElNRU9VVGApLiAqL1xuICAgIHJlYWRvbmx5IHRpbWVvdXQ6IG51bWJlcjtcbiAgICAvKiogTWF4aW11bSByZXRyeSBhdHRlbXB0cyBmb3IgZmFpbGVkIHJlcXVlc3RzIChlbnY6IGBIVFRQX0NMSUVOVF9NQVhfUkVUUklFU2ApLiAqL1xuICAgIHJlYWRvbmx5IG1heFJldHJpZXM6IG51bWJlcjtcbiAgICAvKiogQmFzZSBkZWxheSBiZXR3ZWVuIHJldHJpZXMgaW4gbXMgKGVudjogYEhUVFBfQ0xJRU5UX1JFVFJZX0RFTEFZX01TYCkuICovXG4gICAgcmVhZG9ubHkgcmV0cnlEZWxheU1zOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNzZToge1xuICAgIC8qKiBNYXggU1NFIGNsaWVudHMgcGVyIHJlcXVlc3QgKGVudjogYFNTRV9NQVhfQ0xJRU5UU19QRVJfUkVRVUVTVGApLiAqL1xuICAgIHJlYWRvbmx5IG1heENsaWVudHNQZXJSZXF1ZXN0OiBudW1iZXI7XG4gICAgLyoqIFNTRSBjbGllbnQgdGltZW91dCBpbiBtcyAoZW52OiBgU1NFX0NMSUVOVF9USU1FT1VUX01TYCkuICovXG4gICAgcmVhZG9ubHkgY2xpZW50VGltZW91dE1zOiBudW1iZXI7XG4gICAgLyoqIFNTRSBjbGVhbnVwIGludGVydmFsIGluIG1zIChlbnY6IGBTU0VfQ0xFQU5VUF9JTlRFUlZBTF9NU2ApLiAqL1xuICAgIHJlYWRvbmx5IGNsZWFudXBJbnRlcnZhbE1zOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNlcnZpY2VzOiB7XG4gICAgcmVhZG9ubHkgcGx1Z2luSG9zdDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHBsdWdpblBvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBwaXBlbGluZUhvc3Q6IHN0cmluZztcbiAgICByZWFkb25seSBwaXBlbGluZVBvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBtZXNzYWdlSG9zdDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IG1lc3NhZ2VQb3J0OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgcGxhdGZvcm1Ib3N0OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgcGxhdGZvcm1Qb3J0OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgY29tcGxpYW5jZUhvc3Q6IHN0cmluZztcbiAgICByZWFkb25seSBjb21wbGlhbmNlUG9ydDogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGJpbGxpbmdIb3N0OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYmlsbGluZ1BvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBiaWxsaW5nVGltZW91dDogbnVtYmVyO1xuICB9O1xufVxuXG4vKiogQXV0aGVudGljYXRpb24gY29uZmlndXJhdGlvbiBmb3IgdGhlIGdlbmVyaWMgc2VydmljZSBzY2FmZm9sZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aENvbmZpZyB7XG4gIHJlYWRvbmx5IGp3dDoge1xuICAgIC8qKlxuICAgICAqIFRva2VuIGxpZmV0aW1lIGluIHNlY29uZHMgKGVudjogYEpXVF9FWFBJUkVTX0lOYCkuXG4gICAgICpcbiAgICAgKiBUaGVyZSBpcyBubyBKV1QgU0VDUkVUIGhlcmUgYW55IG1vcmUuIEV2ZXJ5IHRva2VuIGlzIGFzeW1tZXRyaWM6IGEgdXNlclxuICAgICAqIHRva2VuIGlzIEVTMjU2IHNpZ25lZCBieSBwbGF0Zm9ybSBhbG9uZSAoYHNlcnZpY2VzL3Rva2VuLXNpZ25pbmdgKSwgYW5kIGFuXG4gICAgICogaW50ZXJuYWwgc2VydmljZSB0b2tlbiBpcyBFUzI1NiBzaWduZWQgYnkgdGhlIENBTExJTkcgc2VydmljZSB3aXRoIGl0cyBvd25cbiAgICAgKiBrZXkgKCMxNCwgYFNFUlZJQ0VfU0lHTklOR19LRVlfRklMRWAgLyBgU0VSVklDRV9LRVlfQlVORExFX0ZJTEVgKS5cbiAgICAgKi9cbiAgICByZWFkb25seSBleHBpcmVzSW46IG51bWJlcjtcbiAgICAvKiogYmNyeXB0IHNhbHQgcm91bmRzIGZvciBwYXNzd29yZCBoYXNoaW5nIChlbnY6IGBCQ1JZUFRfU0FMVF9ST1VORFNgKS4gKi9cbiAgICByZWFkb25seSBzYWx0Um91bmRzOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHJlZnJlc2hUb2tlbjoge1xuICAgIC8qKlxuICAgICAqIFRva2VuIGxpZmV0aW1lIGluIHNlY29uZHMgKGVudjogYFJFRlJFU0hfVE9LRU5fRVhQSVJFU19JTmApLiBUaGVyZSBpcyBub1xuICAgICAqIHJlZnJlc2gtdG9rZW4gU0VDUkVUIGFueSBtb3JlOiBhIHJlZnJlc2ggdG9rZW4gaXMgYSB1c2VyIHRva2VuLCBzaWduZWRcbiAgICAgKiB3aXRoIHBsYXRmb3JtJ3MgRVMyNTYga2V5IGxpa2UgZXZlcnkgb3RoZXIgY3JlZGVudGlhbCBhIHBlcnNvbiBob2xkcy5cbiAgICAgKi9cbiAgICByZWFkb25seSBleHBpcmVzSW46IG51bWJlcjtcbiAgfTtcbn1cblxuLyoqIFBvc3RncmVTUUwgYW5kIERyaXp6bGUgT1JNIGRhdGFiYXNlIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlQ29uZmlnIHtcbiAgcmVhZG9ubHkgcG9zdGdyZXM6IHtcbiAgICAvKiogUG9zdGdyZVNRTCBob3N0IChlbnY6IGBEQl9IT1NUYCkuICovXG4gICAgcmVhZG9ubHkgaG9zdDogc3RyaW5nO1xuICAgIC8qKiBQb3N0Z3JlU1FMIHBvcnQgKGVudjogYERCX1BPUlRgKS4gKi9cbiAgICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gICAgLyoqIERhdGFiYXNlIG5hbWUgKGVudjogYERBVEFCQVNFYCkuICovXG4gICAgcmVhZG9ubHkgZGF0YWJhc2U6IHN0cmluZztcbiAgICAvKiogRGF0YWJhc2UgdXNlciAoZW52OiBgREJfVVNFUmApLiAqL1xuICAgIHJlYWRvbmx5IHVzZXI6IHN0cmluZztcbiAgICAvKiogRGF0YWJhc2UgcGFzc3dvcmQgKGVudjogYERCX1BBU1NXT1JEYCkuICovXG4gICAgcmVhZG9ubHkgcGFzc3dvcmQ6IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgZHJpenpsZToge1xuICAgIC8qKiBNYXhpbXVtIGNvbm5lY3Rpb24gcG9vbCBzaXplIChlbnY6IGBEUklaWkxFX01BWF9QT09MX1NJWkVgKS4gKi9cbiAgICByZWFkb25seSBtYXhQb29sU2l6ZTogbnVtYmVyO1xuICAgIC8qKiBJZGxlIGNvbm5lY3Rpb24gdGltZW91dCBpbiBtcyAoZW52OiBgRFJJWlpMRV9JRExFX1RJTUVPVVRfTUlMTElTYCkuICovXG4gICAgcmVhZG9ubHkgaWRsZVRpbWVvdXRNaWxsaXM6IG51bWJlcjtcbiAgICAvKiogTmV3IGNvbm5lY3Rpb24gdGltZW91dCBpbiBtcyAoZW52OiBgRFJJWlpMRV9DT05ORUNUSU9OX1RJTUVPVVRfTUlMTElTYCkuICovXG4gICAgcmVhZG9ubHkgY29ubmVjdGlvblRpbWVvdXRNaWxsaXM6IG51bWJlcjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RyeUNvbmZpZyB7XG4gIHJlYWRvbmx5IGhvc3Q6IHN0cmluZztcbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuICAvKipcbiAgICogSG9zdC9wb3J0IGFuIE9VVC1PRi1DTFVTVEVSIGNsaWVudCAobm90YWJseSBBV1MgQ29kZUJ1aWxkKSB1c2VzIHRvIHB1bGxcbiAgICogcGx1Z2luIGltYWdlcywgd2hlbiBpdCBkaWZmZXJzIGZyb20gdGhlIGluLWNsdXN0ZXIgYGhvc3RgL2Bwb3J0YC4gVGhlXG4gICAqIGluLWNsdXN0ZXIgYHJlZ2lzdHJ5OjUwMDBgIENsdXN0ZXJJUCBpc24ndCByZXNvbHZhYmxlIGZyb20gdGhlIFZQQywgc28gdGhlXG4gICAqIHN5bnRoZXNpemVkIENvZGVCdWlsZCBpbWFnZSBVUkkgbXVzdCBwb2ludCBhdCB0aGUgcHVibGljIGdhdGV3YXkgaW5zdGVhZC5cbiAgICogRW52OiBgSU1BR0VfUkVHSVNUUllfUFVMTF9IT1NUYCAvIGBJTUFHRV9SRUdJU1RSWV9QVUxMX1BPUlRgLiBPcHRpb25hbDtcbiAgICogY29uc3VtZXJzIGZhbGwgYmFjayB0byBgaG9zdGAvYHBvcnRgIHdoZW4gdW5zZXQgKHNpbmdsZS1ob3N0IC9cbiAgICogaW4tY2x1c3Rlci1vbmx5IGRlcGxveXMpLiBgbG9hZFJlZ2lzdHJ5Q29uZmlnYCBhbHdheXMgcG9wdWxhdGVzIHRoZW0uXG4gICAqL1xuICByZWFkb25seSBwdWxsSG9zdD86IHN0cmluZztcbiAgcmVhZG9ubHkgcHVsbFBvcnQ/OiBudW1iZXI7XG4gIC8qKiBEb2NrZXIgbmV0d29yayBmb3IgYnVpbGQvcHVzaCAoZW1wdHkgc3RyaW5nID0gZGVmYXVsdCkuICovXG4gIHJlYWRvbmx5IG5ldHdvcms6IHN0cmluZztcbiAgLyoqXG4gICAqIEJ1aWxkS2l0IHRhbGtzIHRvIHRoZSByZWdpc3RyeSBvdmVyIHBsYWluIEhUVFAgd2hlbiB0cnVlOyBIVFRQUyB3aXRoIHRoZVxuICAgKiBzeXN0ZW0gQ0EgYnVuZGxlIG90aGVyd2lzZS4gRW52OiBgSU1BR0VfUkVHSVNUUllfSFRUUGAgKGRlZmF1bHRzIHRydWUg4oCUXG4gICAqIHRoZSBpbi1jbHVzdGVyIHJlZ2lzdHJ5IGhhcyBubyBUTFMpLlxuICAgKi9cbiAgcmVhZG9ubHkgaHR0cDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5CdWlsZENvbmZpZyB7XG4gIHJlYWRvbmx5IGNvbmN1cnJlbmN5OiBudW1iZXI7XG4gIHJlYWRvbmx5IG1heEF0dGVtcHRzOiBudW1iZXI7XG4gIHJlYWRvbmx5IGJhY2tvZmZEZWxheU1zOiBudW1iZXI7XG4gIHJlYWRvbmx5IHdvcmtlclRpbWVvdXRNczogbnVtYmVyO1xuICByZWFkb25seSB0ZW1wRGlyTWF4QWdlTXM6IG51bWJlcjtcbiAgcmVhZG9ubHkgZGxxTWF4QXR0ZW1wdHM6IG51bWJlcjtcbiAgcmVhZG9ubHkgZGxxQmFja29mZkJhc2VNczogbnVtYmVyO1xuICByZWFkb25seSBkbHFNYXhTaXplOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRDb25maWcge1xuICAvKiogUm9vdCBkaXJlY3RvcnkgZm9yIGJ1aWxkIHRlbXAgZmlsZXMuICovXG4gIHJlYWRvbmx5IHRlbXBSb290OiBzdHJpbmc7XG4gIC8qKiBCdWlsZCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gKi9cbiAgcmVhZG9ubHkgdGltZW91dE1zOiBudW1iZXI7XG4gIC8qKiBQdXNoIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLiAqL1xuICByZWFkb25seSBwdXNoVGltZW91dE1zOiBudW1iZXI7XG4gIC8qKlxuICAgKiBQYXRoIHRvIHRoZSBidWlsZGtpdGQgc29ja2V0IHRoZSBwbHVnaW4ncyBgYnVpbGRjdGxgIGNvbm5lY3RzIHRvLiBJbiBrOHNcbiAgICogYW5kIGNvbXBvc2UgdGhpcyBpcyBhIHNoYXJlZCBlbXB0eURpci90bXBmcyB2b2x1bWUgbW91bnRlZCBmcm9tIHRoZVxuICAgKiBidWlsZGtpdGQgc2lkZWNhci5cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxka2l0QWRkcjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9ic2VydmFiaWxpdHlDb25maWcge1xuICByZWFkb25seSBsb2dMZXZlbDogc3RyaW5nO1xuICByZWFkb25seSBsb2dGb3JtYXQ6IHN0cmluZztcbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgdHJhY2luZzoge1xuICAgIHJlYWRvbmx5IGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgZW5kcG9pbnQ6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wbGlhbmNlQ29uZmlnIHtcbiAgcmVhZG9ubHkgc2NhblNjaGVkdWxlckludGVydmFsTXM6IG51bWJlcjtcbiAgLyoqIFdoZW4gZmFsc2UsIHRoZSBzY2hlZHVsZXIgc2tpcHMgc2NhbnMvc2NoZWR1bGVzIGZvciB0aGUgc3lzdGVtIG9yZy4gRGVmYXVsdDogZmFsc2UuICovXG4gIHJlYWRvbmx5IHN5c3RlbU9yZ1NjYW5zRW5hYmxlZDogYm9vbGVhbjtcbiAgLyoqIENyb3NzLXBvZCBsZWFkZXItbG9jayBUVEwgZm9yIHRoZSBzY2FuIHNjaGVkdWxlciAobXMpLiBEZWZhdWx0OiAzMDAwMDAuICovXG4gIHJlYWRvbmx5IHNjYW5Mb2NrVHRsTXM6IG51bWJlcjtcbiAgLyoqIEhvdyBvZnRlbiB0aGUgZGlnZXN0IHNjaGVkdWxlciBjaGVja3MgZm9yIGR1ZSBkaWdlc3RzIChtcykuIERlZmF1bHQ6IDM2MDAwMDAuICovXG4gIHJlYWRvbmx5IGRpZ2VzdFNjaGVkdWxlckludGVydmFsTXM6IG51bWJlcjtcbiAgLyoqIENyb3NzLXBvZCBsZWFkZXItbG9jayBUVEwgZm9yIHRoZSBkaWdlc3Qgc2NoZWR1bGVyIChtcykuIERlZmF1bHQ6IDMwMDAwMC4gKi9cbiAgcmVhZG9ubHkgZGlnZXN0TG9ja1R0bE1zOiBudW1iZXI7XG59XG5cbi8qKlxuICogQVdTIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogRGVsaWJlcmF0ZWx5IGV4cHJlc3NlZCBpbiBQTEFJTiBEQVRBIChudW1iZXJzLCBzdHJpbmdzLCBzdHJpbmcgdW5pb25zKSByYXRoZXJcbiAqIHRoYW4gQ0RLIHZhbHVlIG9iamVjdHMgKGBEdXJhdGlvbmAsIGBSdW50aW1lYCwgYFJldGVudGlvbkRheXNgLCAuLi4pLiBDb25maWcgaXNcbiAqIGxvYWRlZCBieSBldmVyeSBzZXJ2aWNlLCBidXQgb25seSB0aGUgQ0RLIGVudHJ5IHBvaW50IChgQHBpcGVsaW5lLWJ1aWxkZXIvXG4gKiBwaXBlbGluZS1jb3JlL2Nka2ApIGJ1aWxkcyBzdGFja3MgIHR5cGluZyB0aGlzIGJsb2NrIHdpdGggQ0RLIGNsYXNzZXMgcHV0XG4gKiBgYXdzLWNkay1saWJgIG9uIHRoZSBpbXBvcnQgZ3JhcGggb2YgYENvbmZpZ2AsIGFuZCB0aGVyZWZvcmUgb2YgZXZlcnkgQVBJXG4gKiBzZXJ2aWNlIHRoYXQgcmVhZHMgc28gbXVjaCBhcyBhIHBvcnQgbnVtYmVyLiBDb252ZXJzaW9uIHRvIENESyBvYmplY3RzIGhhcHBlbnNcbiAqIGF0IHRoZSBjb25zdHJ1Y3QgYm91bmRhcnkgaW4gYGNvbmZpZy9hd3MtY29uZmlnLWNkay50c2AuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVdTQ29uZmlnIHtcbiAgcmVhZG9ubHkgbGFtYmRhOiB7XG4gICAgLyoqIExhbWJkYSBydW50aW1lIGlkZW50aWZpZXIsIGUuZy4gYCdub2RlanMyNC54J2AgKGVudjogYExBTUJEQV9SVU5USU1FYCkuICovXG4gICAgcmVhZG9ubHkgcnVudGltZTogc3RyaW5nO1xuICAgIC8qKiBGdW5jdGlvbiB0aW1lb3V0IGluIHNlY29uZHMgKGVudjogYExBTUJEQV9USU1FT1VUYCkuICovXG4gICAgcmVhZG9ubHkgdGltZW91dFNlY29uZHM6IG51bWJlcjtcbiAgICByZWFkb25seSBtZW1vcnlTaXplOiBudW1iZXI7XG4gICAgLyoqIExhbWJkYSBDUFUgYXJjaGl0ZWN0dXJlIChlbnY6IGBMQU1CREFfQVJDSElURUNUVVJFYCwgYEFSTV82NGAgb3IgYHg4Nl82NGApLiAqL1xuICAgIHJlYWRvbmx5IGFyY2hpdGVjdHVyZTogJ2FybTY0JyB8ICd4ODZfNjQnO1xuICAgIHJlYWRvbmx5IHJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnM/OiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IGxvZ2dpbmc6IHtcbiAgICByZWFkb25seSBncm91cE5hbWU6IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgY29kZUJ1aWxkOiB7XG4gICAgLyoqIENvZGVCdWlsZCBjb21wdXRlIHR5cGUgbmFtZSwgZS5nLiBgJ1NNQUxMJ2AgKGVudjogYENPREVCVUlMRF9DT01QVVRFX1RZUEVgKS4gKi9cbiAgICByZWFkb25seSBjb21wdXRlVHlwZTogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEltYWdlIHVzZWQgZm9yIENvZGVCdWlsZCBzdGVwcyB0aGF0IGRvbid0IGhhdmUgYSBwbHVnaW4tYmFrZWQgaW1hZ2VcbiAgICAgKiAoY29sZC1zdGFydCBzeW50aCBib290c3RyYXAsIFNoZWxsU3RlcHMgd2l0aCBubyByZWdpc3RyeSwgYW5kXG4gICAgICogYG1ldGFkYXRhX29ubHlgIHBsdWdpbnMpLiBlbnY6IGBDT0RFQlVJTERfREVGQVVMVF9JTUFHRWAuIERlZmF1bHRcbiAgICAgKiBgcGlwZWxpbmUtYm9vdHN0cmFwOjEuMGAg4oCUIHRoZSBsb2NhbCB0YWcgYnVpbHQgYnlcbiAgICAgKiBgZGVwbG95L2NvZGVidWlsZC9ib290c3RyYXAvRG9ja2VyZmlsZWAsIHdpdGggYHBpcGVsaW5lLW1hbmFnZXJgXG4gICAgICogYmFrZWQgaW4uXG4gICAgICpcbiAgICAgKiBDb250cmFjdDogdGhlIGltYWdlIE1VU1QgaGF2ZSBgcGlwZWxpbmUtbWFuYWdlcmAgb24gUEFUSC4gVGhlXG4gICAgICogYm9vdHN0cmFwIHN5bnRoIHBhdGggbm8gbG9uZ2VyIHNlbGYtaGVhbHMgdmlhIGBucG0gaW5zdGFsbCAtZ2A7XG4gICAgICogcG9pbnRpbmcgdGhpcyBhdCBhbiBpbWFnZSB3aXRob3V0IHRoZSB0b29sIGdldHMgZXhpdCAxMjcgb24gdGhlXG4gICAgICogZmlyc3QgY29sZC1zdGFydCBidWlsZC5cbiAgICAgKlxuICAgICAqIFJlc29sdXRpb246XG4gICAgICogLSBCYXJlIHRhZyAobm8gYC9gKSDihpIgYXV0by1wcmVmaXhlZCB0b1xuICAgICAqICAgYDxyZWdpc3RyeS1ob3N0Pjo8cG9ydD4vbGlicmFyeS88dGFnPmAgdXNpbmcgdGhlIHJlZ2lzdHJ5IGNvbmZpZyxcbiAgICAgKiAgIHdpdGggdGhlIHBlci1vcmcgcGxhdGZvcm0gU2VjcmV0IGFzIEJhc2ljIGF1dGggKHNhbWUgZmxvdyBhc1xuICAgICAqICAgcGx1Z2luIGltYWdlcykuXG4gICAgICogLSBGdWxseS1xdWFsaWZpZWQgcmVnaXN0cnkgVVJJIChjb250YWlucyBgL2ApIOKGkiB1c2VkIGFzLWlzLCBub1xuICAgICAqICAgYXV0aCB3aXJlZCAob3BlcmF0b3Igb3ducyBtYWtpbmcgaXQgcHVsbGFibGUpLlxuICAgICAqIC0gV2hlbiB0aGUgcmVnaXN0cnkgaXNuJ3QgY29uZmlndXJlZCBvciBwZXItb3JnIGF1dGggaXNuJ3RcbiAgICAgKiAgIGF2YWlsYWJsZSBhdCB0aGUgY2FsbCBzaXRlLCBmYWxscyBiYWNrIHRvXG4gICAgICogICBgYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo4LjBgIHdpdGggYSB3YXJuaW5nIOKAlCBjb2xkLXN0YXJ0IHN5bnRoXG4gICAgICogICB3aWxsIHRoZW4gZmFpbCBvbiBgcGlwZWxpbmUtbWFuYWdlcjogbm90IGZvdW5kYCwgc3VyZmFjaW5nIHRoZVxuICAgICAqICAgbWlzY29uZmlndXJhdGlvbiBsb3VkbHkgaW5zdGVhZCBvZiBzaWxlbnRseSBzd2FwcGluZyBpbWFnZXMuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZGVmYXVsdEltYWdlOiBzdHJpbmc7XG4gIH07XG59XG5cbi8qKiBFeHByZXNzIHJhdGUgbGltaXRpbmcgY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmF0ZUxpbWl0Q29uZmlnIHtcbiAgLyoqIE1heGltdW0gcmVxdWVzdHMgcGVyIHdpbmRvdyAoZW52OiBgTElNSVRFUl9NQVhgKS4gKi9cbiAgcmVhZG9ubHkgbWF4OiBudW1iZXI7XG4gIC8qKiBSYXRlIGxpbWl0IHdpbmRvdyBpbiBtaWxsaXNlY29uZHMgKGVudjogYExJTUlURVJfV0lORE9XTVNgKS4gKi9cbiAgcmVhZG9ubHkgd2luZG93TXM6IG51bWJlcjtcbn1cblxuLyoqIFByaWNlIGNvbmZpZ3VyYXRpb24gZm9yIGEgc2luZ2xlIGJpbGxpbmcgcGxhbiAoaW4gY2VudHMpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaWxsaW5nUGxhblByaWNlcyB7XG4gIHJlYWRvbmx5IG1vbnRobHk6IG51bWJlcjtcbiAgcmVhZG9ubHkgYW5udWFsOiBudW1iZXI7XG59XG5cbi8qKiBGdWxsIGJpbGxpbmcgcGxhbiBkZWZpbml0aW9uIHVzZWQgZm9yIHNlZWRpbmcgYW5kIHJ1bnRpbWUgY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmlsbGluZ1BsYW5Db25maWcge1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRpZXI6IFF1b3RhVGllcjtcbiAgcmVhZG9ubHkgcHJpY2VzOiBCaWxsaW5nUGxhblByaWNlcztcbiAgcmVhZG9ubHkgZmVhdHVyZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICByZWFkb25seSBpc0FjdGl2ZTogYm9vbGVhbjtcbiAgcmVhZG9ubHkgaXNEZWZhdWx0OiBib29sZWFuO1xuICByZWFkb25seSBzb3J0T3JkZXI6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIHB1cmNoYXNhYmxlIGFkZC1vbiBidW5kbGU6IGEgcXVhbnRpdHktc3RhY2thYmxlIHBhY2sgdGhhdCBBRERTIHRvIHRoZVxuICogYWNjb3VudCdzIGJhc2UgKHRpZXIpIGxpbWl0cyBhbmQgYWRkcyBhIHJlY3VycmluZyBsaW5lIGl0ZW0uIFNlZVxuICogZG9jcy9iaWxsaW5nLWJ1bmRsZXMubWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVuZGxlQ29uZmlnIHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKiogUGVyLXVuaXQgZGVsdGFzIG9uIGBRdW90YVRpZXJMaW1pdHNgIGZpZWxkcywgZS5nLiBgeyBzZWF0czogNSB9YC4gS2V5cyBhcmVcbiAgICogIGNvbnN0cmFpbmVkIHRvIHJlYWwgcXVvdGEgZmllbGRzIHNvIGEgdHlwbyBpcyBhIGNvbXBpbGUgZXJyb3IgKHdhc1xuICAgKiAgYFJlY29yZDxzdHJpbmcsIG51bWJlcj5gLCB3aGVyZSBhIG1pc3NwZWxsZWQga2V5IHdhcyBzaWxlbnRseSB1bmVuZm9yY2VhYmxlKS4gKi9cbiAgcmVhZG9ubHkgZ3JhbnRzOiBSZWFkb25seTxQYXJ0aWFsPFJlY29yZDxrZXlvZiBRdW90YVRpZXJMaW1pdHMsIG51bWJlcj4+PjtcbiAgLyoqIEZlYXR1cmUgZmxhZ3MgZ3JhbnRlZCBieSBhIGZlYXR1cmUgYnVuZGxlIChlLmcuIGBhZHZhbmNlZF9yZXBvcnRpbmdgKS4gKi9cbiAgcmVhZG9ubHkgZmVhdHVyZXM/OiByZWFkb25seSBzdHJpbmdbXTtcbiAgLyoqIFBlci11bml0IHByaWNlIChjZW50cykuIFN0cmlwZSBtdWx0aXBsaWVzIGJ5IHF1YW50aXR5LiAqL1xuICByZWFkb25seSBwcmljZXM6IEJpbGxpbmdQbGFuUHJpY2VzO1xuICAvKiogVHJ1ZSBmb3Igc3RhY2thYmxlIHJlc291cmNlIHBhY2tzOyBmYWxzZSBmb3IgYSBib29sZWFuIGZlYXR1cmUgYnVuZGxlLiAqL1xuICByZWFkb25seSBzdGFja2FibGU6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBNYXhpbXVtIHB1cmNoYXNhYmxlIHF1YW50aXR5IGZvciBhIHN0YWNrYWJsZSBwYWNrLiBFbmZvcmNlZCBieSB0aGUgYWRkb25cbiAgICogcHVyY2hhc2UvcHJldmlldyByb3V0ZSAoYHF1YW50aXR5IOKJpCBtYXhRdWFudGl0eWAsIHJlamVjdCBvdmVyLWNhcCkuIFVzZWQgdG9cbiAgICoga2VlcCByZXRlbnRpb24gcGFja3MgdW5kZXIgdGhlIDczMC1kYXkgcmV0ZW50aW9uIGNlaWxpbmcgKGUuZy4gdGhlIFN0YW5kYXJkXG4gICAqIFJldGVudGlvbiBQYWNrIGNhcHMgYXQgNyBzbyAzMCArIDfDlzkwID0gNjYwIOKJpCA3MzApLiBBYnNlbnQg4oeSIHVuYm91bmRlZC5cbiAgICovXG4gIHJlYWRvbmx5IG1heFF1YW50aXR5PzogbnVtYmVyO1xuICAvKipcbiAgICogT3B0aW9uYWwgcGVyLXVuaXQgdm9sdW1lIGRpc2NvdW50IHRpZXJzIGZvciBhIHN0YWNrYWJsZSBwYWNrOiBhdCDiiaUgYG1pblF1YW50aXR5YFxuICAgKiBwdXJjaGFzZWQgdW5pdHMsIGBkaXNjb3VudFBlcmNlbnRgIGNvbWVzIG9mZiB0aGUgbGluZSBzdWJ0b3RhbCAodW5pdCDDlyBxdWFudGl0eSkuXG4gICAqIFRoZSBoaWdoZXN0IG1hdGNoaW5nIHRpZXIgd2lucy4gUmVhbGl6ZWQgYXMgYSByZWN1cnJpbmcgdXNhZ2UgY3JlZGl0IChsaWtlIGFcbiAgICogY29tYm8pLCBzbyB0aGUgcHJvdmlkZXIgc3RpbGwgY2hhcmdlcyB1bml0w5dxdHkgYW5kIHRoZSBjcmVkaXQgb2Zmc2V0cyB0aGVcbiAgICogYmFsYW5jZS4gRW52LW92ZXJyaWRhYmxlIHZpYSBgQklMTElOR19CVU5ETEVfPElEPl9WT0xVTUVfVElFUlNgIChKU09OKS4gVXNlZCBieVxuICAgKiB0aGUgcGVyLXNlYXQgYHNlYXRgIGJ1bmRsZS4gQWJzZW50IOKHkiBubyB2b2x1bWUgZGlzY291bnQuXG4gICAqL1xuICByZWFkb25seSB2b2x1bWVUaWVycz86IHJlYWRvbmx5IHsgcmVhZG9ubHkgbWluUXVhbnRpdHk6IG51bWJlcjsgcmVhZG9ubHkgZGlzY291bnRQZXJjZW50OiBudW1iZXIgfVtdO1xuICAvKiogQmFzZSB0aWVycyB0aGlzIGJ1bmRsZSBpcyBvZmZlcmVkIHRvLiAqL1xuICByZWFkb25seSBhdmFpbGFibGVGb3JUaWVyczogcmVhZG9ubHkgUXVvdGFUaWVyW107XG4gIC8qKlxuICAgKiBQcmVyZXF1aXNpdGUgYnVuZGxlIGlkcyB0aGF0IG11c3QgYmUgaGVsZCAob3IgcHVyY2hhc2VkIGluIHRoZSBzYW1lIGFjdGlvbilcbiAgICogYmVmb3JlIHRoaXMgYnVuZGxlIGNhbiBiZSBhZGRlZC4gRW5mb3JjZWQgYnkgdGhlIGFkZG9uIHB1cmNoYXNlL3ByZXZpZXcgcm91dGVcbiAgICogKHJlamVjdCB3aXRoIDQwMCB3aGVuIHVubWV0KTsgYSBjb21ibyB0aGF0IGluY2x1ZGVzIHRoZSBwcmVyZXF1aXNpdGUgc2F0aXNmaWVzXG4gICAqIGl0LiBVc2VkIGJ5IGBjb21wbGlhbmNlX2FkdmFuY2VkYCAoYHJlcXVpcmVzOiBbJ2NvbXBsaWFuY2Vfc3RhbmRhcmQnXWApLlxuICAgKiBBYnNlbnQg4oeSIG5vIHByZXJlcXVpc2l0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVzPzogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKlxuICAgKiBQcmVyZXF1aXNpdGUgRkVBVFVSRSBmbGFncyB0aGUgYWNjb3VudCBtdXN0IGhvbGQg4oCUIGZyb20gaXRzIHBsYW4gdGllclxuICAgKiAoYFRJRVJfRkVBVFVSRVNgKSBvciBmcm9tIGEgZmVhdHVyZSBidW5kbGUgaXQgaG9sZHMgYWZ0ZXIgdGhlIGNoYW5nZSDigJQgYmVmb3JlXG4gICAqIHRoaXMgYnVuZGxlIGNhbiBiZSBhZGRlZC4gRGlzdGluY3QgZnJvbSB7QGxpbmsgcmVxdWlyZXN9IGJlY2F1c2UgYSBmZWF0dXJlIGNhblxuICAgKiBiZSB0aWVyLWluY2x1ZGVkIChubyBidW5kbGUgdG8gbmFtZSk6IGUuZy4gYGRvcmFfaGlzdG9yeV9wYWNrYCBuZWVkc1xuICAgKiBgYWR2YW5jZWRfcmVwb3J0aW5nYCwgd2hpY2ggRW50ZXJwcmlzZSBpbmNsdWRlcyBhbmQgbG93ZXIgdGllcnMgYnV5IGFzIGFuXG4gICAqIGFkZC1vbi4gRW5mb3JjZWQgYnkgdGhlIGFkZG9uIHB1cmNoYXNlL3ByZXZpZXcgcm91dGUgKDQwMCB3aGVuIHVubWV0KSwgYW5kIGFcbiAgICogaGVsZCBidW5kbGUgd2hvc2UgZmVhdHVyZSBwcmVyZXF1aXNpdGUgZGlzYXBwZWFycyAoaXRzIGdyYW50aW5nIGJ1bmRsZSByZW1vdmVkLFxuICAgKiBvciBhIGRvd25ncmFkZSB0byBhIHRpZXIgd2l0aG91dCBpdCkgaXMgY2FzY2FkZS1yZW1vdmVkLiBBYnNlbnQg4oeSIG5vbmUuXG4gICAqL1xuICByZWFkb25seSByZXF1aXJlc0ZlYXR1cmVzPzogcmVhZG9ubHkgc3RyaW5nW107XG4gIHJlYWRvbmx5IGlzQWN0aXZlOiBib29sZWFuO1xuICByZWFkb25seSBzb3J0T3JkZXI6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIGNvbWJvIGRpc2NvdW50OiB3aGVuIGFuIGFjY291bnQgaG9sZHMgRVZFUlkgYnVuZGxlIGluIGBidW5kbGVJZHNgLCB0aGUgcGFpclxuICogaXMgYmlsbGVkIGF0IGBwcmljZXNgICh0aGUgY29tYmluZWQgcHJpY2UpIGluc3RlYWQgb2YgdGhlIHN1bSBvZiB0aGUgbWVtYmVycydcbiAqIGluZGl2aWR1YWwgcHJpY2VzLiBSZWFsaXplZCBhcyBhIHJlY3VycmluZyB1c2FnZSBjcmVkaXQgZm9yIHRoZSBkaWZmZXJlbmNlIOKAlFxuICogbmV2ZXIgYSBwcm92aWRlciBjb3Vwb24g4oCUIGNvbnNpc3RlbnQgd2l0aCB0aGUgdXNhZ2UtY3JlZGl0IGRpc2NvdW50IG1vZGVsLiBTZWVcbiAqIGRvY3MvYmlsbGluZy1idW5kbGVzLm1kIMKnQ29tYm8gcHJpY2luZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21ib0Rpc2NvdW50Q29uZmlnIHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKiogVGhlIG1lbWJlciBidW5kbGUgaWRzIHRoYXQgbXVzdCBBTEwgYmUgcHJlc2VudCBmb3IgdGhlIGNvbWJvIHRvIGFwcGx5LiAqL1xuICByZWFkb25seSBidW5kbGVJZHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKiogUGVyLW1lbWJlciBtaW5pbXVtIHF1YW50aXR5IChidW5kbGVJZCDihpIgY291bnQ7IGFic2VudCDih5IgMSkuIExldHMgYSBzdGFja2FibGVcbiAgICogIGNhcGFjaXR5IHBhY2sgYW5jaG9yIGEgY29tYm8g4oCUIGUuZy4gYHsgc2VhdDogNSB9YCA9IFwi4omlIDUgc2VhdHNcIi4gVGhlIGNyZWRpdFxuICAgKiAgYmFzaXMgdXNlcyB0aGlzIG1pbmltdW0sIHNvIGV4dHJhIHVuaXRzIG5ldmVyIGluZmxhdGUgdGhlIGRpc2NvdW50LiAqL1xuICByZWFkb25seSBtaW5RdWFudGl0aWVzPzogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgbnVtYmVyPj47XG4gIC8qKiBUaGUgY29tYmluZWQgcHJpY2UgZm9yIHRoZSBtaW5pbXVtIHNldCAoY2VudHMpLiBUaGUgY3JlZGl0IGlzXG4gICAqICBgzqMgbWVtYmVyIHVuaXQgcHJpY2Ugw5cgbWluUXR5IOKIkiBwcmljZXNgLCBjbGFtcGVkIOKJpSAwLiAqL1xuICByZWFkb25seSBwcmljZXM6IEJpbGxpbmdQbGFuUHJpY2VzO1xuICAvKiogRGV0ZXJtaW5pc3RpYyB0aWUtYnJlYWsgYW1vbmcgZXF1YWwtdG90YWwgb3B0aW1hbCBwYWNraW5ncyB3aGVuIGNvbWJvcyBvdmVybGFwXG4gICAqICAobG93ZXIgd2lucykuICovXG4gIHJlYWRvbmx5IHNvcnRPcmRlcjogbnVtYmVyO1xuICByZWFkb25seSBpc0FjdGl2ZTogYm9vbGVhbjtcbn1cblxuLyoqIEJpbGxpbmcgcGxhbnMgKyBhZGQtb24gYnVuZGxlIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIEJpbGxpbmdDb25maWcge1xuICByZWFkb25seSBwbGFuczogcmVhZG9ubHkgQmlsbGluZ1BsYW5Db25maWdbXTtcbiAgcmVhZG9ubHkgYnVuZGxlczogcmVhZG9ubHkgQnVuZGxlQ29uZmlnW107XG4gIHJlYWRvbmx5IGNvbWJvRGlzY291bnRzOiByZWFkb25seSBDb21ib0Rpc2NvdW50Q29uZmlnW107XG59XG4iXX0=
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9jb25maWctdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IFF1b3RhVGllciwgUXVvdGFUaWVyTGltaXRzIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuXG4vKipcbiAqIFR5cGUtc2FmZSBjb25maWd1cmF0aW9uIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcENvbmZpZyB7XG4gIHJlYWRvbmx5IHNlcnZlcjogU2VydmVyQ29uZmlnO1xuICByZWFkb25seSBhdXRoOiBBdXRoQ29uZmlnO1xuICByZWFkb25seSBkYXRhYmFzZTogRGF0YWJhc2VDb25maWc7XG4gIHJlYWRvbmx5IHJlZ2lzdHJ5OiBSZWdpc3RyeUNvbmZpZztcbiAgcmVhZG9ubHkgcGx1Z2luQnVpbGQ6IFBsdWdpbkJ1aWxkQ29uZmlnO1xuICByZWFkb25seSBkb2NrZXJDb25maWc6IEJ1aWxkQ29uZmlnO1xuICByZWFkb25seSBvYnNlcnZhYmlsaXR5OiBPYnNlcnZhYmlsaXR5Q29uZmlnO1xuICByZWFkb25seSBjb21wbGlhbmNlOiBDb21wbGlhbmNlQ29uZmlnO1xuICByZWFkb25seSBhd3M6IEFXU0NvbmZpZztcbiAgcmVhZG9ubHkgcmF0ZUxpbWl0OiBSYXRlTGltaXRDb25maWc7XG4gIHJlYWRvbmx5IGJpbGxpbmc6IEJpbGxpbmdDb25maWc7XG59XG5cbi8qKiBFeHByZXNzIHNlcnZlciBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJDb25maWcge1xuICAvKiogSFRUUCBsaXN0ZW4gcG9ydCAoZW52OiBgUE9SVGApLiAqL1xuICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gIHJlYWRvbmx5IGNvcnM6IHtcbiAgICAvKiogV2hldGhlciB0byBpbmNsdWRlIGNyZWRlbnRpYWxzIGluIENPUlMgcmVzcG9uc2VzIChlbnY6IGBDT1JTX0NSRURFTlRJQUxTYCkuICovXG4gICAgcmVhZG9ubHkgY3JlZGVudGlhbHM6IGJvb2xlYW47XG4gICAgLyoqIEFsbG93ZWQgb3JpZ2luKHMpIOKAlCBzaW5nbGUgc3RyaW5nLCBhcnJheSwgb3IgYCcqJ2AgKGVudjogYENPUlNfT1JJR0lOYCkuICovXG4gICAgcmVhZG9ubHkgb3JpZ2luOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgfTtcbiAgLyoqIE51bWJlciBvZiByZXZlcnNlIHByb3h5IGhvcHMgdG8gdHJ1c3QgKGVudjogYFRSVVNUX1BST1hZYCkuICovXG4gIHJlYWRvbmx5IHRydXN0UHJveHk6IG51bWJlcjtcbiAgLyoqIEZyb250ZW5kIGJhc2UgVVJMLCB1c2VkIGFzIENPUlMgZmFsbGJhY2sgKGVudjogYFBMQVRGT1JNX0JBU0VfVVJMYCkuICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGh0dHBDbGllbnQ6IHtcbiAgICAvKiogRGVmYXVsdCBIVFRQIHJlcXVlc3QgdGltZW91dCBpbiBtcyAoZW52OiBgSFRUUF9DTElFTlRfVElNRU9VVGApLiAqL1xuICAgIHJlYWRvbmx5IHRpbWVvdXQ6IG51bWJlcjtcbiAgICAvKiogTWF4aW11bSByZXRyeSBhdHRlbXB0cyBmb3IgZmFpbGVkIHJlcXVlc3RzIChlbnY6IGBIVFRQX0NMSUVOVF9NQVhfUkVUUklFU2ApLiAqL1xuICAgIHJlYWRvbmx5IG1heFJldHJpZXM6IG51bWJlcjtcbiAgICAvKiogQmFzZSBkZWxheSBiZXR3ZWVuIHJldHJpZXMgaW4gbXMgKGVudjogYEhUVFBfQ0xJRU5UX1JFVFJZX0RFTEFZX01TYCkuICovXG4gICAgcmVhZG9ubHkgcmV0cnlEZWxheU1zOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNzZToge1xuICAgIC8qKiBNYXggU1NFIGNsaWVudHMgcGVyIHJlcXVlc3QgKGVudjogYFNTRV9NQVhfQ0xJRU5UU19QRVJfUkVRVUVTVGApLiAqL1xuICAgIHJlYWRvbmx5IG1heENsaWVudHNQZXJSZXF1ZXN0OiBudW1iZXI7XG4gICAgLyoqIFNTRSBjbGllbnQgdGltZW91dCBpbiBtcyAoZW52OiBgU1NFX0NMSUVOVF9USU1FT1VUX01TYCkuICovXG4gICAgcmVhZG9ubHkgY2xpZW50VGltZW91dE1zOiBudW1iZXI7XG4gICAgLyoqIFNTRSBjbGVhbnVwIGludGVydmFsIGluIG1zIChlbnY6IGBTU0VfQ0xFQU5VUF9JTlRFUlZBTF9NU2ApLiAqL1xuICAgIHJlYWRvbmx5IGNsZWFudXBJbnRlcnZhbE1zOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNlcnZpY2VzOiB7XG4gICAgcmVhZG9ubHkgcGx1Z2luSG9zdDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHBsdWdpblBvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBwaXBlbGluZUhvc3Q6IHN0cmluZztcbiAgICByZWFkb25seSBwaXBlbGluZVBvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBtZXNzYWdlSG9zdDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IG1lc3NhZ2VQb3J0OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgcGxhdGZvcm1Ib3N0OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgcGxhdGZvcm1Qb3J0OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgY29tcGxpYW5jZUhvc3Q6IHN0cmluZztcbiAgICByZWFkb25seSBjb21wbGlhbmNlUG9ydDogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGJpbGxpbmdIb3N0OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYmlsbGluZ1BvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBiaWxsaW5nVGltZW91dDogbnVtYmVyO1xuICAgIC8qKiBpbWFnZS1yZWdpc3RyeSBzZXJ2aWNlIOKAlCB0aGUgcGx1Z2luIHdvcmtlciBhc2tzIGl0IHRvIHNpZ24gcHVzaGVkIGltYWdlcyAoZW52OiBgSU1BR0VfUkVHSVNUUllfU0VSVklDRV9IT1NUYCkuICovXG4gICAgcmVhZG9ubHkgaW1hZ2VSZWdpc3RyeUhvc3Q6IHN0cmluZztcbiAgICAvKiogZW52OiBgSU1BR0VfUkVHSVNUUllfU0VSVklDRV9QT1JUYCAqL1xuICAgIHJlYWRvbmx5IGltYWdlUmVnaXN0cnlQb3J0OiBudW1iZXI7XG4gIH07XG59XG5cbi8qKiBBdXRoZW50aWNhdGlvbiBjb25maWd1cmF0aW9uIGZvciB0aGUgZ2VuZXJpYyBzZXJ2aWNlIHNjYWZmb2xkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRoQ29uZmlnIHtcbiAgcmVhZG9ubHkgand0OiB7XG4gICAgLyoqXG4gICAgICogVG9rZW4gbGlmZXRpbWUgaW4gc2Vjb25kcyAoZW52OiBgSldUX0VYUElSRVNfSU5gKS5cbiAgICAgKlxuICAgICAqIFRoZXJlIGlzIG5vIEpXVCBTRUNSRVQgaGVyZSBhbnkgbW9yZS4gRXZlcnkgdG9rZW4gaXMgYXN5bW1ldHJpYzogYSB1c2VyXG4gICAgICogdG9rZW4gaXMgRVMyNTYgc2lnbmVkIGJ5IHBsYXRmb3JtIGFsb25lIChgc2VydmljZXMvdG9rZW4tc2lnbmluZ2ApLCBhbmQgYW5cbiAgICAgKiBpbnRlcm5hbCBzZXJ2aWNlIHRva2VuIGlzIEVTMjU2IHNpZ25lZCBieSB0aGUgQ0FMTElORyBzZXJ2aWNlIHdpdGggaXRzIG93blxuICAgICAqIGtleSAoIzE0LCBgU0VSVklDRV9TSUdOSU5HX0tFWV9GSUxFYCAvIGBTRVJWSUNFX0tFWV9CVU5ETEVfRklMRWApLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGV4cGlyZXNJbjogbnVtYmVyO1xuICAgIC8qKiBiY3J5cHQgc2FsdCByb3VuZHMgZm9yIHBhc3N3b3JkIGhhc2hpbmcgKGVudjogYEJDUllQVF9TQUxUX1JPVU5EU2ApLiAqL1xuICAgIHJlYWRvbmx5IHNhbHRSb3VuZHM6IG51bWJlcjtcbiAgfTtcbiAgcmVhZG9ubHkgcmVmcmVzaFRva2VuOiB7XG4gICAgLyoqXG4gICAgICogVG9rZW4gbGlmZXRpbWUgaW4gc2Vjb25kcyAoZW52OiBgUkVGUkVTSF9UT0tFTl9FWFBJUkVTX0lOYCkuIFRoZXJlIGlzIG5vXG4gICAgICogcmVmcmVzaC10b2tlbiBTRUNSRVQgYW55IG1vcmU6IGEgcmVmcmVzaCB0b2tlbiBpcyBhIHVzZXIgdG9rZW4sIHNpZ25lZFxuICAgICAqIHdpdGggcGxhdGZvcm0ncyBFUzI1NiBrZXkgbGlrZSBldmVyeSBvdGhlciBjcmVkZW50aWFsIGEgcGVyc29uIGhvbGRzLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGV4cGlyZXNJbjogbnVtYmVyO1xuICB9O1xufVxuXG4vKiogUG9zdGdyZVNRTCBhbmQgRHJpenpsZSBPUk0gZGF0YWJhc2UgY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VDb25maWcge1xuICByZWFkb25seSBwb3N0Z3Jlczoge1xuICAgIC8qKiBQb3N0Z3JlU1FMIGhvc3QgKGVudjogYERCX0hPU1RgKS4gKi9cbiAgICByZWFkb25seSBob3N0OiBzdHJpbmc7XG4gICAgLyoqIFBvc3RncmVTUUwgcG9ydCAoZW52OiBgREJfUE9SVGApLiAqL1xuICAgIHJlYWRvbmx5IHBvcnQ6IG51bWJlcjtcbiAgICAvKiogRGF0YWJhc2UgbmFtZSAoZW52OiBgREFUQUJBU0VgKS4gKi9cbiAgICByZWFkb25seSBkYXRhYmFzZTogc3RyaW5nO1xuICAgIC8qKiBEYXRhYmFzZSB1c2VyIChlbnY6IGBEQl9VU0VSYCkuICovXG4gICAgcmVhZG9ubHkgdXNlcjogc3RyaW5nO1xuICAgIC8qKiBEYXRhYmFzZSBwYXNzd29yZCAoZW52OiBgREJfUEFTU1dPUkRgKS4gKi9cbiAgICByZWFkb25seSBwYXNzd29yZDogc3RyaW5nO1xuICB9O1xuICByZWFkb25seSBkcml6emxlOiB7XG4gICAgLyoqIE1heGltdW0gY29ubmVjdGlvbiBwb29sIHNpemUgKGVudjogYERSSVpaTEVfTUFYX1BPT0xfU0laRWApLiAqL1xuICAgIHJlYWRvbmx5IG1heFBvb2xTaXplOiBudW1iZXI7XG4gICAgLyoqIElkbGUgY29ubmVjdGlvbiB0aW1lb3V0IGluIG1zIChlbnY6IGBEUklaWkxFX0lETEVfVElNRU9VVF9NSUxMSVNgKS4gKi9cbiAgICByZWFkb25seSBpZGxlVGltZW91dE1pbGxpczogbnVtYmVyO1xuICAgIC8qKiBOZXcgY29ubmVjdGlvbiB0aW1lb3V0IGluIG1zIChlbnY6IGBEUklaWkxFX0NPTk5FQ1RJT05fVElNRU9VVF9NSUxMSVNgKS4gKi9cbiAgICByZWFkb25seSBjb25uZWN0aW9uVGltZW91dE1pbGxpczogbnVtYmVyO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdHJ5Q29uZmlnIHtcbiAgcmVhZG9ubHkgaG9zdDogc3RyaW5nO1xuICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gIC8qKlxuICAgKiBIb3N0L3BvcnQgYW4gT1VULU9GLUNMVVNURVIgY2xpZW50IChub3RhYmx5IEFXUyBDb2RlQnVpbGQpIHVzZXMgdG8gcHVsbFxuICAgKiBwbHVnaW4gaW1hZ2VzLCB3aGVuIGl0IGRpZmZlcnMgZnJvbSB0aGUgaW4tY2x1c3RlciBgaG9zdGAvYHBvcnRgLiBUaGVcbiAgICogaW4tY2x1c3RlciBgcmVnaXN0cnk6NTAwMGAgQ2x1c3RlcklQIGlzbid0IHJlc29sdmFibGUgZnJvbSB0aGUgVlBDLCBzbyB0aGVcbiAgICogc3ludGhlc2l6ZWQgQ29kZUJ1aWxkIGltYWdlIFVSSSBtdXN0IHBvaW50IGF0IHRoZSBwdWJsaWMgZ2F0ZXdheSBpbnN0ZWFkLlxuICAgKiBFbnY6IGBJTUFHRV9SRUdJU1RSWV9QVUxMX0hPU1RgIC8gYElNQUdFX1JFR0lTVFJZX1BVTExfUE9SVGAuIE9wdGlvbmFsO1xuICAgKiBjb25zdW1lcnMgZmFsbCBiYWNrIHRvIGBob3N0YC9gcG9ydGAgd2hlbiB1bnNldCAoc2luZ2xlLWhvc3QgL1xuICAgKiBpbi1jbHVzdGVyLW9ubHkgZGVwbG95cykuIGBsb2FkUmVnaXN0cnlDb25maWdgIGFsd2F5cyBwb3B1bGF0ZXMgdGhlbS5cbiAgICovXG4gIHJlYWRvbmx5IHB1bGxIb3N0Pzogc3RyaW5nO1xuICByZWFkb25seSBwdWxsUG9ydD86IG51bWJlcjtcbiAgLyoqIERvY2tlciBuZXR3b3JrIGZvciBidWlsZC9wdXNoIChlbXB0eSBzdHJpbmcgPSBkZWZhdWx0KS4gKi9cbiAgcmVhZG9ubHkgbmV0d29yazogc3RyaW5nO1xuICAvKipcbiAgICogQnVpbGRLaXQgdGFsa3MgdG8gdGhlIHJlZ2lzdHJ5IG92ZXIgcGxhaW4gSFRUUCB3aGVuIHRydWU7IEhUVFBTIHdpdGggdGhlXG4gICAqIHN5c3RlbSBDQSBidW5kbGUgb3RoZXJ3aXNlLiBFbnY6IGBJTUFHRV9SRUdJU1RSWV9IVFRQYCAoZGVmYXVsdHMgdHJ1ZSDigJRcbiAgICogdGhlIGluLWNsdXN0ZXIgcmVnaXN0cnkgaGFzIG5vIFRMUykuXG4gICAqL1xuICByZWFkb25seSBodHRwOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkJ1aWxkQ29uZmlnIHtcbiAgcmVhZG9ubHkgY29uY3VycmVuY3k6IG51bWJlcjtcbiAgcmVhZG9ubHkgbWF4QXR0ZW1wdHM6IG51bWJlcjtcbiAgcmVhZG9ubHkgYmFja29mZkRlbGF5TXM6IG51bWJlcjtcbiAgcmVhZG9ubHkgd29ya2VyVGltZW91dE1zOiBudW1iZXI7XG4gIHJlYWRvbmx5IHRlbXBEaXJNYXhBZ2VNczogbnVtYmVyO1xuICByZWFkb25seSBkbHFNYXhBdHRlbXB0czogbnVtYmVyO1xuICByZWFkb25seSBkbHFCYWNrb2ZmQmFzZU1zOiBudW1iZXI7XG4gIHJlYWRvbmx5IGRscU1heFNpemU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZENvbmZpZyB7XG4gIC8qKiBSb290IGRpcmVjdG9yeSBmb3IgYnVpbGQgdGVtcCBmaWxlcy4gKi9cbiAgcmVhZG9ubHkgdGVtcFJvb3Q6IHN0cmluZztcbiAgLyoqIEJ1aWxkIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLiAqL1xuICByZWFkb25seSB0aW1lb3V0TXM6IG51bWJlcjtcbiAgLyoqIFB1c2ggdGltZW91dCBpbiBtaWxsaXNlY29uZHMuICovXG4gIHJlYWRvbmx5IHB1c2hUaW1lb3V0TXM6IG51bWJlcjtcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIGJ1aWxka2l0ZCBzb2NrZXQgdGhlIHBsdWdpbidzIGBidWlsZGN0bGAgY29ubmVjdHMgdG8uIEluIGs4c1xuICAgKiBhbmQgY29tcG9zZSB0aGlzIGlzIGEgc2hhcmVkIGVtcHR5RGlyL3RtcGZzIHZvbHVtZSBtb3VudGVkIGZyb20gdGhlXG4gICAqIGJ1aWxka2l0ZCBzaWRlY2FyLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRraXRBZGRyOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQRU0gcHVibGljIGtleSBwbHVnaW4gaW1hZ2VzIGFyZSB2ZXJpZmllZCBhZ2FpbnN0IChlbnY6XG4gICAqIGBQTFVHSU5fU0lHTklOR19QVUJMSUNfS0VZX0ZJTEVgKS4gVGhlIFBSSVZBVEUgaGFsZiBsaXZlcyBvbmx5IGluIHRoZVxuICAgKiBpbWFnZS1yZWdpc3RyeSBzZXJ2aWNlLCB3aGljaCBzaWducyBldmVyeSBwdXNoZWQgcGx1Z2luIGltYWdlIOKAlCBuZXZlciBpbiB0aGVcbiAgICogcGx1Z2luIHBvZCwgd2hvc2UgbmV0d29yayBuYW1lc3BhY2UgaXMgc2hhcmVkIHdpdGggdW50cnVzdGVkIGJ1aWxkcy5cbiAgICovXG4gIHJlYWRvbmx5IHNpZ25pbmdQdWJsaWNLZXlGaWxlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JzZXJ2YWJpbGl0eUNvbmZpZyB7XG4gIHJlYWRvbmx5IGxvZ0xldmVsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxvZ0Zvcm1hdDogc3RyaW5nO1xuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICByZWFkb25seSB0cmFjaW5nOiB7XG4gICAgcmVhZG9ubHkgZW5hYmxlZDogYm9vbGVhbjtcbiAgICByZWFkb25seSBlbmRwb2ludDogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBsaWFuY2VDb25maWcge1xuICByZWFkb25seSBzY2FuU2NoZWR1bGVySW50ZXJ2YWxNczogbnVtYmVyO1xuICAvKiogV2hlbiBmYWxzZSwgdGhlIHNjaGVkdWxlciBza2lwcyBzY2Fucy9zY2hlZHVsZXMgZm9yIHRoZSBzeXN0ZW0gb3JnLiBEZWZhdWx0OiBmYWxzZS4gKi9cbiAgcmVhZG9ubHkgc3lzdGVtT3JnU2NhbnNFbmFibGVkOiBib29sZWFuO1xuICAvKiogQ3Jvc3MtcG9kIGxlYWRlci1sb2NrIFRUTCBmb3IgdGhlIHNjYW4gc2NoZWR1bGVyIChtcykuIERlZmF1bHQ6IDMwMDAwMC4gKi9cbiAgcmVhZG9ubHkgc2NhbkxvY2tUdGxNczogbnVtYmVyO1xuICAvKiogSG93IG9mdGVuIHRoZSBkaWdlc3Qgc2NoZWR1bGVyIGNoZWNrcyBmb3IgZHVlIGRpZ2VzdHMgKG1zKS4gRGVmYXVsdDogMzYwMDAwMC4gKi9cbiAgcmVhZG9ubHkgZGlnZXN0U2NoZWR1bGVySW50ZXJ2YWxNczogbnVtYmVyO1xuICAvKiogQ3Jvc3MtcG9kIGxlYWRlci1sb2NrIFRUTCBmb3IgdGhlIGRpZ2VzdCBzY2hlZHVsZXIgKG1zKS4gRGVmYXVsdDogMzAwMDAwLiAqL1xuICByZWFkb25seSBkaWdlc3RMb2NrVHRsTXM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBV1MgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBEZWxpYmVyYXRlbHkgZXhwcmVzc2VkIGluIFBMQUlOIERBVEEgKG51bWJlcnMsIHN0cmluZ3MsIHN0cmluZyB1bmlvbnMpIHJhdGhlclxuICogdGhhbiBDREsgdmFsdWUgb2JqZWN0cyAoYER1cmF0aW9uYCwgYFJ1bnRpbWVgLCBgUmV0ZW50aW9uRGF5c2AsIC4uLikuIENvbmZpZyBpc1xuICogbG9hZGVkIGJ5IGV2ZXJ5IHNlcnZpY2UsIGJ1dCBvbmx5IHRoZSBDREsgZW50cnkgcG9pbnQgKGBAcGlwZWxpbmUtYnVpbGRlci9cbiAqIHBpcGVsaW5lLWNvcmUvY2RrYCkgYnVpbGRzIHN0YWNrcyAgdHlwaW5nIHRoaXMgYmxvY2sgd2l0aCBDREsgY2xhc3NlcyBwdXRcbiAqIGBhd3MtY2RrLWxpYmAgb24gdGhlIGltcG9ydCBncmFwaCBvZiBgQ29uZmlnYCwgYW5kIHRoZXJlZm9yZSBvZiBldmVyeSBBUElcbiAqIHNlcnZpY2UgdGhhdCByZWFkcyBzbyBtdWNoIGFzIGEgcG9ydCBudW1iZXIuIENvbnZlcnNpb24gdG8gQ0RLIG9iamVjdHMgaGFwcGVuc1xuICogYXQgdGhlIGNvbnN0cnVjdCBib3VuZGFyeSBpbiBgY29uZmlnL2F3cy1jb25maWctY2RrLnRzYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBV1NDb25maWcge1xuICByZWFkb25seSBsYW1iZGE6IHtcbiAgICAvKiogTGFtYmRhIHJ1bnRpbWUgaWRlbnRpZmllciwgZS5nLiBgJ25vZGVqczI0LngnYCAoZW52OiBgTEFNQkRBX1JVTlRJTUVgKS4gKi9cbiAgICByZWFkb25seSBydW50aW1lOiBzdHJpbmc7XG4gICAgLyoqIEZ1bmN0aW9uIHRpbWVvdXQgaW4gc2Vjb25kcyAoZW52OiBgTEFNQkRBX1RJTUVPVVRgKS4gKi9cbiAgICByZWFkb25seSB0aW1lb3V0U2Vjb25kczogbnVtYmVyO1xuICAgIHJlYWRvbmx5IG1lbW9yeVNpemU6IG51bWJlcjtcbiAgICAvKiogTGFtYmRhIENQVSBhcmNoaXRlY3R1cmUgKGVudjogYExBTUJEQV9BUkNISVRFQ1RVUkVgLCBgQVJNXzY0YCBvciBgeDg2XzY0YCkuICovXG4gICAgcmVhZG9ubHkgYXJjaGl0ZWN0dXJlOiAnYXJtNjQnIHwgJ3g4Nl82NCc7XG4gICAgcmVhZG9ubHkgcmVzZXJ2ZWRDb25jdXJyZW50RXhlY3V0aW9ucz86IG51bWJlcjtcbiAgfTtcbiAgcmVhZG9ubHkgbG9nZ2luZzoge1xuICAgIHJlYWRvbmx5IGdyb3VwTmFtZTogc3RyaW5nO1xuICB9O1xuICByZWFkb25seSBjb2RlQnVpbGQ6IHtcbiAgICAvKiogQ29kZUJ1aWxkIGNvbXB1dGUgdHlwZSBuYW1lLCBlLmcuIGAnU01BTEwnYCAoZW52OiBgQ09ERUJVSUxEX0NPTVBVVEVfVFlQRWApLiAqL1xuICAgIHJlYWRvbmx5IGNvbXB1dGVUeXBlOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogSW1hZ2UgdXNlZCBmb3IgQ29kZUJ1aWxkIHN0ZXBzIHRoYXQgZG9uJ3QgaGF2ZSBhIHBsdWdpbi1iYWtlZCBpbWFnZVxuICAgICAqIChjb2xkLXN0YXJ0IHN5bnRoIGJvb3RzdHJhcCwgU2hlbGxTdGVwcyB3aXRoIG5vIHJlZ2lzdHJ5LCBhbmRcbiAgICAgKiBgbWV0YWRhdGFfb25seWAgcGx1Z2lucykuIGVudjogYENPREVCVUlMRF9ERUZBVUxUX0lNQUdFYC4gRGVmYXVsdFxuICAgICAqIGBwaXBlbGluZS1ib290c3RyYXA6MS4wYCDigJQgdGhlIGxvY2FsIHRhZyBidWlsdCBieVxuICAgICAqIGBkZXBsb3kvY29kZWJ1aWxkL2Jvb3RzdHJhcC9Eb2NrZXJmaWxlYCwgd2l0aCBgcGlwZWxpbmUtbWFuYWdlcmBcbiAgICAgKiBiYWtlZCBpbi5cbiAgICAgKlxuICAgICAqIENvbnRyYWN0OiB0aGUgaW1hZ2UgTVVTVCBoYXZlIGBwaXBlbGluZS1tYW5hZ2VyYCBvbiBQQVRILiBUaGVcbiAgICAgKiBib290c3RyYXAgc3ludGggcGF0aCBubyBsb25nZXIgc2VsZi1oZWFscyB2aWEgYG5wbSBpbnN0YWxsIC1nYDtcbiAgICAgKiBwb2ludGluZyB0aGlzIGF0IGFuIGltYWdlIHdpdGhvdXQgdGhlIHRvb2wgZ2V0cyBleGl0IDEyNyBvbiB0aGVcbiAgICAgKiBmaXJzdCBjb2xkLXN0YXJ0IGJ1aWxkLlxuICAgICAqXG4gICAgICogUmVzb2x1dGlvbjpcbiAgICAgKiAtIEJhcmUgdGFnIChubyBgL2ApIOKGkiBhdXRvLXByZWZpeGVkIHRvXG4gICAgICogICBgPHJlZ2lzdHJ5LWhvc3Q+Ojxwb3J0Pi9saWJyYXJ5Lzx0YWc+YCB1c2luZyB0aGUgcmVnaXN0cnkgY29uZmlnLFxuICAgICAqICAgd2l0aCB0aGUgcGVyLW9yZyBwbGF0Zm9ybSBTZWNyZXQgYXMgQmFzaWMgYXV0aCAoc2FtZSBmbG93IGFzXG4gICAgICogICBwbHVnaW4gaW1hZ2VzKS5cbiAgICAgKiAtIEZ1bGx5LXF1YWxpZmllZCByZWdpc3RyeSBVUkkgKGNvbnRhaW5zIGAvYCkg4oaSIHVzZWQgYXMtaXMsIG5vXG4gICAgICogICBhdXRoIHdpcmVkIChvcGVyYXRvciBvd25zIG1ha2luZyBpdCBwdWxsYWJsZSkuXG4gICAgICogLSBXaGVuIHRoZSByZWdpc3RyeSBpc24ndCBjb25maWd1cmVkIG9yIHBlci1vcmcgYXV0aCBpc24ndFxuICAgICAqICAgYXZhaWxhYmxlIGF0IHRoZSBjYWxsIHNpdGUsIGZhbGxzIGJhY2sgdG9cbiAgICAgKiAgIGBhd3MvY29kZWJ1aWxkL3N0YW5kYXJkOjguMGAgd2l0aCBhIHdhcm5pbmcg4oCUIGNvbGQtc3RhcnQgc3ludGhcbiAgICAgKiAgIHdpbGwgdGhlbiBmYWlsIG9uIGBwaXBlbGluZS1tYW5hZ2VyOiBub3QgZm91bmRgLCBzdXJmYWNpbmcgdGhlXG4gICAgICogICBtaXNjb25maWd1cmF0aW9uIGxvdWRseSBpbnN0ZWFkIG9mIHNpbGVudGx5IHN3YXBwaW5nIGltYWdlcy5cbiAgICAgKi9cbiAgICByZWFkb25seSBkZWZhdWx0SW1hZ2U6IHN0cmluZztcbiAgfTtcbn1cblxuLyoqIEV4cHJlc3MgcmF0ZSBsaW1pdGluZyBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSYXRlTGltaXRDb25maWcge1xuICAvKiogTWF4aW11bSByZXF1ZXN0cyBwZXIgd2luZG93IChlbnY6IGBMSU1JVEVSX01BWGApLiAqL1xuICByZWFkb25seSBtYXg6IG51bWJlcjtcbiAgLyoqIFJhdGUgbGltaXQgd2luZG93IGluIG1pbGxpc2Vjb25kcyAoZW52OiBgTElNSVRFUl9XSU5ET1dNU2ApLiAqL1xuICByZWFkb25seSB3aW5kb3dNczogbnVtYmVyO1xufVxuXG4vKiogUHJpY2UgY29uZmlndXJhdGlvbiBmb3IgYSBzaW5nbGUgYmlsbGluZyBwbGFuIChpbiBjZW50cykuICovXG5leHBvcnQgaW50ZXJmYWNlIEJpbGxpbmdQbGFuUHJpY2VzIHtcbiAgcmVhZG9ubHkgbW9udGhseTogbnVtYmVyO1xuICByZWFkb25seSBhbm51YWw6IG51bWJlcjtcbn1cblxuLyoqIEZ1bGwgYmlsbGluZyBwbGFuIGRlZmluaXRpb24gdXNlZCBmb3Igc2VlZGluZyBhbmQgcnVudGltZSBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaWxsaW5nUGxhbkNvbmZpZyB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZztcbiAgcmVhZG9ubHkgdGllcjogUXVvdGFUaWVyO1xuICByZWFkb25seSBwcmljZXM6IEJpbGxpbmdQbGFuUHJpY2VzO1xuICByZWFkb25seSBmZWF0dXJlczogcmVhZG9ubHkgc3RyaW5nW107XG4gIHJlYWRvbmx5IGlzQWN0aXZlOiBib29sZWFuO1xuICByZWFkb25seSBpc0RlZmF1bHQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNvcnRPcmRlcjogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgcHVyY2hhc2FibGUgYWRkLW9uIGJ1bmRsZTogYSBxdWFudGl0eS1zdGFja2FibGUgcGFjayB0aGF0IEFERFMgdG8gdGhlXG4gKiBhY2NvdW50J3MgYmFzZSAodGllcikgbGltaXRzIGFuZCBhZGRzIGEgcmVjdXJyaW5nIGxpbmUgaXRlbS4gU2VlXG4gKiBkb2NzL2JpbGxpbmctYnVuZGxlcy5tZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdW5kbGVDb25maWcge1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIC8qKiBQZXItdW5pdCBkZWx0YXMgb24gYFF1b3RhVGllckxpbWl0c2AgZmllbGRzLCBlLmcuIGB7IHNlYXRzOiA1IH1gLiBLZXlzIGFyZVxuICAgKiAgY29uc3RyYWluZWQgdG8gcmVhbCBxdW90YSBmaWVsZHMgc28gYSB0eXBvIGlzIGEgY29tcGlsZSBlcnJvciAod2FzXG4gICAqICBgUmVjb3JkPHN0cmluZywgbnVtYmVyPmAsIHdoZXJlIGEgbWlzc3BlbGxlZCBrZXkgd2FzIHNpbGVudGx5IHVuZW5mb3JjZWFibGUpLiAqL1xuICByZWFkb25seSBncmFudHM6IFJlYWRvbmx5PFBhcnRpYWw8UmVjb3JkPGtleW9mIFF1b3RhVGllckxpbWl0cywgbnVtYmVyPj4+O1xuICAvKiogRmVhdHVyZSBmbGFncyBncmFudGVkIGJ5IGEgZmVhdHVyZSBidW5kbGUgKGUuZy4gYGFkdmFuY2VkX3JlcG9ydGluZ2ApLiAqL1xuICByZWFkb25seSBmZWF0dXJlcz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKiogUGVyLXVuaXQgcHJpY2UgKGNlbnRzKS4gU3RyaXBlIG11bHRpcGxpZXMgYnkgcXVhbnRpdHkuICovXG4gIHJlYWRvbmx5IHByaWNlczogQmlsbGluZ1BsYW5QcmljZXM7XG4gIC8qKiBUcnVlIGZvciBzdGFja2FibGUgcmVzb3VyY2UgcGFja3M7IGZhbHNlIGZvciBhIGJvb2xlYW4gZmVhdHVyZSBidW5kbGUuICovXG4gIHJlYWRvbmx5IHN0YWNrYWJsZTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE1heGltdW0gcHVyY2hhc2FibGUgcXVhbnRpdHkgZm9yIGEgc3RhY2thYmxlIHBhY2suIEVuZm9yY2VkIGJ5IHRoZSBhZGRvblxuICAgKiBwdXJjaGFzZS9wcmV2aWV3IHJvdXRlIChgcXVhbnRpdHkg4omkIG1heFF1YW50aXR5YCwgcmVqZWN0IG92ZXItY2FwKS4gVXNlZCB0b1xuICAgKiBrZWVwIHJldGVudGlvbiBwYWNrcyB1bmRlciB0aGUgNzMwLWRheSByZXRlbnRpb24gY2VpbGluZyAoZS5nLiB0aGUgU3RhbmRhcmRcbiAgICogUmV0ZW50aW9uIFBhY2sgY2FwcyBhdCA3IHNvIDMwICsgN8OXOTAgPSA2NjAg4omkIDczMCkuIEFic2VudCDih5IgdW5ib3VuZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgbWF4UXVhbnRpdHk/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBwZXItdW5pdCB2b2x1bWUgZGlzY291bnQgdGllcnMgZm9yIGEgc3RhY2thYmxlIHBhY2s6IGF0IOKJpSBgbWluUXVhbnRpdHlgXG4gICAqIHB1cmNoYXNlZCB1bml0cywgYGRpc2NvdW50UGVyY2VudGAgY29tZXMgb2ZmIHRoZSBsaW5lIHN1YnRvdGFsICh1bml0IMOXIHF1YW50aXR5KS5cbiAgICogVGhlIGhpZ2hlc3QgbWF0Y2hpbmcgdGllciB3aW5zLiBSZWFsaXplZCBhcyBhIHJlY3VycmluZyB1c2FnZSBjcmVkaXQgKGxpa2UgYVxuICAgKiBjb21ibyksIHNvIHRoZSBwcm92aWRlciBzdGlsbCBjaGFyZ2VzIHVuaXTDl3F0eSBhbmQgdGhlIGNyZWRpdCBvZmZzZXRzIHRoZVxuICAgKiBiYWxhbmNlLiBFbnYtb3ZlcnJpZGFibGUgdmlhIGBCSUxMSU5HX0JVTkRMRV88SUQ+X1ZPTFVNRV9USUVSU2AgKEpTT04pLiBVc2VkIGJ5XG4gICAqIHRoZSBwZXItc2VhdCBgc2VhdGAgYnVuZGxlLiBBYnNlbnQg4oeSIG5vIHZvbHVtZSBkaXNjb3VudC5cbiAgICovXG4gIHJlYWRvbmx5IHZvbHVtZVRpZXJzPzogcmVhZG9ubHkgeyByZWFkb25seSBtaW5RdWFudGl0eTogbnVtYmVyOyByZWFkb25seSBkaXNjb3VudFBlcmNlbnQ6IG51bWJlciB9W107XG4gIC8qKiBCYXNlIHRpZXJzIHRoaXMgYnVuZGxlIGlzIG9mZmVyZWQgdG8uICovXG4gIHJlYWRvbmx5IGF2YWlsYWJsZUZvclRpZXJzOiByZWFkb25seSBRdW90YVRpZXJbXTtcbiAgLyoqXG4gICAqIFByZXJlcXVpc2l0ZSBidW5kbGUgaWRzIHRoYXQgbXVzdCBiZSBoZWxkIChvciBwdXJjaGFzZWQgaW4gdGhlIHNhbWUgYWN0aW9uKVxuICAgKiBiZWZvcmUgdGhpcyBidW5kbGUgY2FuIGJlIGFkZGVkLiBFbmZvcmNlZCBieSB0aGUgYWRkb24gcHVyY2hhc2UvcHJldmlldyByb3V0ZVxuICAgKiAocmVqZWN0IHdpdGggNDAwIHdoZW4gdW5tZXQpOyBhIGNvbWJvIHRoYXQgaW5jbHVkZXMgdGhlIHByZXJlcXVpc2l0ZSBzYXRpc2ZpZXNcbiAgICogaXQuIFVzZWQgYnkgYGNvbXBsaWFuY2VfYWR2YW5jZWRgIChgcmVxdWlyZXM6IFsnY29tcGxpYW5jZV9zdGFuZGFyZCddYCkuXG4gICAqIEFic2VudCDih5Igbm8gcHJlcmVxdWlzaXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZXM/OiByZWFkb25seSBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFByZXJlcXVpc2l0ZSBGRUFUVVJFIGZsYWdzIHRoZSBhY2NvdW50IG11c3QgaG9sZCDigJQgZnJvbSBpdHMgcGxhbiB0aWVyXG4gICAqIChgVElFUl9GRUFUVVJFU2ApIG9yIGZyb20gYSBmZWF0dXJlIGJ1bmRsZSBpdCBob2xkcyBhZnRlciB0aGUgY2hhbmdlIOKAlCBiZWZvcmVcbiAgICogdGhpcyBidW5kbGUgY2FuIGJlIGFkZGVkLiBEaXN0aW5jdCBmcm9tIHtAbGluayByZXF1aXJlc30gYmVjYXVzZSBhIGZlYXR1cmUgY2FuXG4gICAqIGJlIHRpZXItaW5jbHVkZWQgKG5vIGJ1bmRsZSB0byBuYW1lKTogZS5nLiBgZG9yYV9oaXN0b3J5X3BhY2tgIG5lZWRzXG4gICAqIGBhZHZhbmNlZF9yZXBvcnRpbmdgLCB3aGljaCBFbnRlcnByaXNlIGluY2x1ZGVzIGFuZCBsb3dlciB0aWVycyBidXkgYXMgYW5cbiAgICogYWRkLW9uLiBFbmZvcmNlZCBieSB0aGUgYWRkb24gcHVyY2hhc2UvcHJldmlldyByb3V0ZSAoNDAwIHdoZW4gdW5tZXQpLCBhbmQgYVxuICAgKiBoZWxkIGJ1bmRsZSB3aG9zZSBmZWF0dXJlIHByZXJlcXVpc2l0ZSBkaXNhcHBlYXJzIChpdHMgZ3JhbnRpbmcgYnVuZGxlIHJlbW92ZWQsXG4gICAqIG9yIGEgZG93bmdyYWRlIHRvIGEgdGllciB3aXRob3V0IGl0KSBpcyBjYXNjYWRlLXJlbW92ZWQuIEFic2VudCDih5Igbm9uZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVzRmVhdHVyZXM/OiByZWFkb25seSBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgaXNBY3RpdmU6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNvcnRPcmRlcjogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgY29tYm8gZGlzY291bnQ6IHdoZW4gYW4gYWNjb3VudCBob2xkcyBFVkVSWSBidW5kbGUgaW4gYGJ1bmRsZUlkc2AsIHRoZSBwYWlyXG4gKiBpcyBiaWxsZWQgYXQgYHByaWNlc2AgKHRoZSBjb21iaW5lZCBwcmljZSkgaW5zdGVhZCBvZiB0aGUgc3VtIG9mIHRoZSBtZW1iZXJzJ1xuICogaW5kaXZpZHVhbCBwcmljZXMuIFJlYWxpemVkIGFzIGEgcmVjdXJyaW5nIHVzYWdlIGNyZWRpdCBmb3IgdGhlIGRpZmZlcmVuY2Ug4oCUXG4gKiBuZXZlciBhIHByb3ZpZGVyIGNvdXBvbiDigJQgY29uc2lzdGVudCB3aXRoIHRoZSB1c2FnZS1jcmVkaXQgZGlzY291bnQgbW9kZWwuIFNlZVxuICogZG9jcy9iaWxsaW5nLWJ1bmRsZXMubWQgwqdDb21ibyBwcmljaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbWJvRGlzY291bnRDb25maWcge1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKiBUaGUgbWVtYmVyIGJ1bmRsZSBpZHMgdGhhdCBtdXN0IEFMTCBiZSBwcmVzZW50IGZvciB0aGUgY29tYm8gdG8gYXBwbHkuICovXG4gIHJlYWRvbmx5IGJ1bmRsZUlkczogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKiBQZXItbWVtYmVyIG1pbmltdW0gcXVhbnRpdHkgKGJ1bmRsZUlkIOKGkiBjb3VudDsgYWJzZW50IOKHkiAxKS4gTGV0cyBhIHN0YWNrYWJsZVxuICAgKiAgY2FwYWNpdHkgcGFjayBhbmNob3IgYSBjb21ibyDigJQgZS5nLiBgeyBzZWF0OiA1IH1gID0gXCLiiaUgNSBzZWF0c1wiLiBUaGUgY3JlZGl0XG4gICAqICBiYXNpcyB1c2VzIHRoaXMgbWluaW11bSwgc28gZXh0cmEgdW5pdHMgbmV2ZXIgaW5mbGF0ZSB0aGUgZGlzY291bnQuICovXG4gIHJlYWRvbmx5IG1pblF1YW50aXRpZXM/OiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBudW1iZXI+PjtcbiAgLyoqIFRoZSBjb21iaW5lZCBwcmljZSBmb3IgdGhlIG1pbmltdW0gc2V0IChjZW50cykuIFRoZSBjcmVkaXQgaXNcbiAgICogIGDOoyBtZW1iZXIgdW5pdCBwcmljZSDDlyBtaW5RdHkg4oiSIHByaWNlc2AsIGNsYW1wZWQg4omlIDAuICovXG4gIHJlYWRvbmx5IHByaWNlczogQmlsbGluZ1BsYW5QcmljZXM7XG4gIC8qKiBEZXRlcm1pbmlzdGljIHRpZS1icmVhayBhbW9uZyBlcXVhbC10b3RhbCBvcHRpbWFsIHBhY2tpbmdzIHdoZW4gY29tYm9zIG92ZXJsYXBcbiAgICogIChsb3dlciB3aW5zKS4gKi9cbiAgcmVhZG9ubHkgc29ydE9yZGVyOiBudW1iZXI7XG4gIHJlYWRvbmx5IGlzQWN0aXZlOiBib29sZWFuO1xufVxuXG4vKiogQmlsbGluZyBwbGFucyArIGFkZC1vbiBidW5kbGUgY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmlsbGluZ0NvbmZpZyB7XG4gIHJlYWRvbmx5IHBsYW5zOiByZWFkb25seSBCaWxsaW5nUGxhbkNvbmZpZ1tdO1xuICByZWFkb25seSBidW5kbGVzOiByZWFkb25seSBCdW5kbGVDb25maWdbXTtcbiAgcmVhZG9ubHkgY29tYm9EaXNjb3VudHM6IHJlYWRvbmx5IENvbWJvRGlzY291bnRDb25maWdbXTtcbn1cbiJdfQ==
|
|
@@ -45,6 +45,8 @@ export declare function loadComplianceConfig(): ComplianceConfig;
|
|
|
45
45
|
* - `DOCKER_PUSH_TIMEOUT_MS` — Push timeout in milliseconds (default: `300000` / 5 min)
|
|
46
46
|
* - `BUILDKIT_HOST` — buildctl `--addr` value for the buildkitd sidecar
|
|
47
47
|
* (default: `unix:///run/buildkit/buildkitd.sock`)
|
|
48
|
+
* - `PLUGIN_SIGNING_PUBLIC_KEY_FILE` — PEM public key plugin images are verified
|
|
49
|
+
* against (default: `/etc/pipeline-builder/plugin-signing/plugin-signing.pub`)
|
|
48
50
|
*/
|
|
49
51
|
export declare function loadDockerConfig(): BuildConfig;
|
|
50
52
|
/**
|
|
@@ -122,6 +122,8 @@ export function loadComplianceConfig() {
|
|
|
122
122
|
* - `DOCKER_PUSH_TIMEOUT_MS` — Push timeout in milliseconds (default: `300000` / 5 min)
|
|
123
123
|
* - `BUILDKIT_HOST` — buildctl `--addr` value for the buildkitd sidecar
|
|
124
124
|
* (default: `unix:///run/buildkit/buildkitd.sock`)
|
|
125
|
+
* - `PLUGIN_SIGNING_PUBLIC_KEY_FILE` — PEM public key plugin images are verified
|
|
126
|
+
* against (default: `/etc/pipeline-builder/plugin-signing/plugin-signing.pub`)
|
|
125
127
|
*/
|
|
126
128
|
export function loadDockerConfig() {
|
|
127
129
|
return {
|
|
@@ -129,6 +131,7 @@ export function loadDockerConfig() {
|
|
|
129
131
|
timeoutMs: parseInt(process.env.DOCKER_BUILD_TIMEOUT_MS || '900000', 10),
|
|
130
132
|
pushTimeoutMs: parseInt(process.env.DOCKER_PUSH_TIMEOUT_MS || '300000', 10),
|
|
131
133
|
buildkitAddr: process.env.BUILDKIT_HOST || 'unix:///run/buildkit/buildkitd.sock',
|
|
134
|
+
signingPublicKeyFile: process.env.PLUGIN_SIGNING_PUBLIC_KEY_FILE || '/etc/pipeline-builder/plugin-signing/plugin-signing.pub',
|
|
132
135
|
};
|
|
133
136
|
}
|
|
134
137
|
/**
|
|
@@ -164,4 +167,4 @@ export function loadAWSConfig() {
|
|
|
164
167
|
},
|
|
165
168
|
};
|
|
166
169
|
}
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mcmFzdHJ1Y3R1cmUtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9pbmZyYXN0cnVjdHVyZS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFHeEI7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCO0lBQ2hDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLElBQUksVUFBVSxDQUFDO0lBQzNELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixJQUFJLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyRSw0RUFBNEU7SUFDNUUsd0VBQXdFO0lBQ3hFLDhFQUE4RTtJQUM5RSw0RUFBNEU7SUFDNUUsTUFBTSxRQUFRLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3JFLE9BQU87UUFDTCxJQUFJO1FBQ0osSUFBSTtRQUNKLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixJQUFJLFFBQVEsRUFBRSxJQUFJLElBQUksSUFBSTtRQUN4RSxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0I7WUFDNUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixFQUFFLEVBQUUsQ0FBQztZQUNwRCxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQztRQUM1QixPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksRUFBRTtRQUN6QyxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsS0FBSyxPQUFPO0tBQ2xELENBQUM7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QVMsRUFBRTtZQUNULFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLElBQUksT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFO1lBQzFFLFlBQVksRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixJQUFJLHdCQUF3QjtTQUM5RTtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHR5cGUgeyBBV1NDb25maWcsIEJ1aWxkQ29uZmlnLCBDb21wbGlhbmNlQ29uZmlnLCBEYXRhYmFzZUNvbmZpZywgT2JzZXJ2YWJpbGl0eUNvbmZpZywgUGx1Z2luQnVpbGRDb25maWcsIFJlZ2lzdHJ5Q29uZmlnIH0gZnJvbSAnLi9jb25maWctdHlwZXMuanMnO1xuXG4vKipcbiAqIExvYWQgRG9ja2VyIHJlZ2lzdHJ5IGNvbmZpZ3VyYXRpb24gZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGVzOlxuICogLSBgSU1BR0VfUkVHSVNUUllfSE9TVGAg4oCUIFJlZ2lzdHJ5IGhvc3RuYW1lIChkZWZhdWx0OiBgJ3JlZ2lzdHJ5J2ApXG4gKiAtIGBJTUFHRV9SRUdJU1RSWV9QT1JUYCDigJQgUmVnaXN0cnkgcG9ydCAoZGVmYXVsdDogYDUwMDBgKVxuICogLSBgSU1BR0VfUkVHSVNUUllfUFVMTF9IT1NUYCDigJQgSG9zdCBhbiBvdXQtb2YtY2x1c3RlciBjbGllbnQgKENvZGVCdWlsZClcbiAqICAgdXNlcyB0byBwdWxsIHBsdWdpbiBpbWFnZXMuIFdoZW4gdW5zZXQsIGRlcml2ZWQgZnJvbSBgUExBVEZPUk1fQkFTRV9VUkxgJ3NcbiAqICAgaG9zdCAodGhlIHB1YmxpYyBlbmRwb2ludCBDb2RlQnVpbGQgY2FuIHJlc29sdmUpLCB0aGVuIGBJTUFHRV9SRUdJU1RSWV9IT1NUYC5cbiAqIC0gYElNQUdFX1JFR0lTVFJZX1BVTExfUE9SVGAg4oCUIFBvcnQgZm9yIHRoZSBhYm92ZS4gV2hlbiB1bnNldCwgZGVyaXZlZCBmcm9tXG4gKiAgIGBQTEFURk9STV9CQVNFX1VSTGAncyBwb3J0LCB0aGVuIGBJTUFHRV9SRUdJU1RSWV9QT1JUYC5cbiAqIC0gYERPQ0tFUl9ORVRXT1JLYCDigJQgRG9ja2VyIG5ldHdvcmsgZm9yIGJ1aWxkL3B1c2ggKGRlZmF1bHQ6IGAnJ2ApXG4gKiAtIGBJTUFHRV9SRUdJU1RSWV9IVFRQYCDigJQgVXNlIHBsYWluIEhUVFAgaW5zdGVhZCBvZiBIVFRQUyAoZGVmYXVsdDogYHRydWVgLFxuICogICB0aGUgaW4tY2x1c3RlciByZWdpc3RyeSBoYXMgbm8gVExTKS5cbiAqXG4gKiBAcmV0dXJucyBSZWdpc3RyeSBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkUmVnaXN0cnlDb25maWcoKTogUmVnaXN0cnlDb25maWcge1xuICBjb25zdCBob3N0ID0gcHJvY2Vzcy5lbnYuSU1BR0VfUkVHSVNUUllfSE9TVCB8fCAncmVnaXN0cnknO1xuICBjb25zdCBwb3J0ID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuSU1BR0VfUkVHSVNUUllfUE9SVCB8fCAnNTAwMCcsIDEwKTtcbiAgLy8gV2hlbiBubyBleHBsaWNpdCBwdWxsIGhvc3QgaXMgc2V0LCBkZXJpdmUgaXQgZnJvbSBQTEFURk9STV9CQVNFX1VSTCDigJQgdGhlXG4gIC8vIHB1YmxpYyBwbGF0Zm9ybSBlbmRwb2ludCBhbiBvdXQtb2YtY2x1c3RlciBjbGllbnQgKEFXUyBDb2RlQnVpbGQpIGNhblxuICAvLyByZXNvbHZlLCB1bmxpa2UgdGhlIGluLWNsdXN0ZXIgYHJlZ2lzdHJ5YCBDbHVzdGVySVAuIE9ubHkgZmFsbHMgYmFjayB0byB0aGVcbiAgLy8gaW4tY2x1c3RlciBob3N0IHdoZW4gUExBVEZPUk1fQkFTRV9VUkwgaXMgdW5zZXQvdW5wYXJzZWFibGUgKGUuZy4gbG9jYWwpLlxuICBjb25zdCBwbGF0Zm9ybSA9IHBhcnNlUGxhdGZvcm1CYXNlVXJsKHByb2Nlc3MuZW52LlBMQVRGT1JNX0JBU0VfVVJMKTtcbiAgcmV0dXJuIHtcbiAgICBob3N0LFxuICAgIHBvcnQsXG4gICAgcHVsbEhvc3Q6IHByb2Nlc3MuZW52LklNQUdFX1JFR0lTVFJZX1BVTExfSE9TVCB8fCBwbGF0Zm9ybT8uaG9zdCB8fCBob3N0LFxuICAgIHB1bGxQb3J0OiBwcm9jZXNzLmVudi5JTUFHRV9SRUdJU1RSWV9QVUxMX1BPUlRcbiAgICAgID8gcGFyc2VJbnQocHJvY2Vzcy5lbnYuSU1BR0VfUkVHSVNUUllfUFVMTF9QT1JULCAxMClcbiAgICAgIDogKHBsYXRmb3JtPy5wb3J0ID8/IHBvcnQpLFxuICAgIG5ldHdvcms6IHByb2Nlc3MuZW52LkRPQ0tFUl9ORVRXT1JLIHx8ICcnLFxuICAgIGh0dHA6IHByb2Nlc3MuZW52LklNQUdFX1JFR0lTVFJZX0hUVFAgIT09ICdmYWxzZScsXG4gIH07XG59XG5cbi8qKiBFeHRyYWN0IGhvc3QgKyBwb3J0IGZyb20gUExBVEZPUk1fQkFTRV9VUkwgKGUuZy4gYGh0dHBzOi8vcGlwZWxpbmUtYnVpbGRlci5jb21gXG4gKiAg4oaSIGB7IGhvc3Q6ICdwaXBlbGluZS1idWlsZGVyLmNvbScsIHBvcnQ6IDQ0MyB9YCkuIFJldHVybnMgbnVsbCB3aGVuIHRoZSB2YWx1ZVxuICogIGlzIHVuc2V0IG9yIG5vdCBhIHZhbGlkIFVSTC4gRXhwb3J0ZWQgc28gdGhlIENMSSAocGlwZWxpbmUtbWFuYWdlcikgZGVyaXZlc1xuICogIHRoZSByZWdpc3RyeSBwdWxsIHRhcmdldCB3aXRoIHRoZSBTQU1FIHBhcnNpbmcsIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgaXQuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQbGF0Zm9ybUJhc2VVcmwocmF3Pzogc3RyaW5nKTogeyBob3N0OiBzdHJpbmc7IHBvcnQ6IG51bWJlciB9IHwgbnVsbCB7XG4gIGlmICghcmF3KSByZXR1cm4gbnVsbDtcbiAgdHJ5IHtcbiAgICBjb25zdCB1ID0gbmV3IFVSTChyYXcpO1xuICAgIC8vIEEgc2NoZW1lLWxlc3MgdmFsdWUgbGlrZSBgaG9zdDo4NDQzYCBwYXJzZXMgd2l0aCBhIGN1c3RvbSBwcm90b2NvbCBhbmQgYW5cbiAgICAvLyBFTVBUWSBob3N0bmFtZSDigJQgcmVqZWN0IGl0IHNvIGNhbGxlcnMgZmFsbCBiYWNrIHJhdGhlciB0aGFuIGRlcml2ZSBhXG4gICAgLy8gaG9zdC1sZXNzIGVuZHBvaW50LlxuICAgIGlmICghdS5ob3N0bmFtZSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgcG9ydCA9IHUucG9ydCA/IHBhcnNlSW50KHUucG9ydCwgMTApIDogKHUucHJvdG9jb2wgPT09ICdodHRwczonID8gNDQzIDogODApO1xuICAgIHJldHVybiB7IGhvc3Q6IHUuaG9zdG5hbWUsIHBvcnQgfTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBMb2FkIHBsdWdpbiBidWlsZCBxdWV1ZSBjb25maWd1cmF0aW9uLlxuICpcbiAqIEVudmlyb25tZW50IHZhcmlhYmxlczpcbiAqIC0gYFBMVUdJTl9CVUlMRF9DT05DVVJSRU5DWWAg4oCUIE1heCBjb25jdXJyZW50IHBsdWdpbiBidWlsZHMgKGRlZmF1bHQ6IGAxYClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRQbHVnaW5CdWlsZENvbmZpZygpOiBQbHVnaW5CdWlsZENvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgY29uY3VycmVuY3k6IHBhcnNlSW50KHByb2Nlc3MuZW52LlBMVUdJTl9CVUlMRF9DT05DVVJSRU5DWSB8fCAnMScsIDEwKSxcbiAgICBtYXhBdHRlbXB0czogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUExVR0lOX0JVSUxEX01BWF9BVFRFTVBUUyB8fCAnMicsIDEwKSxcbiAgICBiYWNrb2ZmRGVsYXlNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUExVR0lOX0JVSUxEX0JBQ0tPRkZfREVMQVlfTVMgfHwgJzUwMDAnLCAxMCksXG4gICAgd29ya2VyVGltZW91dE1zOiBwYXJzZUludChwcm9jZXNzLmVudi5QTFVHSU5fQlVJTERfV09SS0VSX1RJTUVPVVRfTVMgfHwgJzEwMDAwJywgMTApLFxuICAgIHRlbXBEaXJNYXhBZ2VNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuVEVNUF9ESVJfTUFYX0FHRV9NUyB8fCAnMTQ0MDAwMDAnLCAxMCksXG4gICAgZGxxTWF4QXR0ZW1wdHM6IHBhcnNlSW50KHByb2Nlc3MuZW52LlBMVUdJTl9ETFFfTUFYX0FUVEVNUFRTIHx8ICczJywgMTApLFxuICAgIGRscUJhY2tvZmZCYXNlTXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LlBMVUdJTl9ETFFfQkFDS09GRl9CQVNFX01TIHx8ICczMDAwMDAnLCAxMCksXG4gICAgZGxxTWF4U2l6ZTogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUExVR0lOX0RMUV9NQVhfU0laRSB8fCAnMjAnLCAxMCksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkRGF0YWJhc2VDb25maWcoKTogRGF0YWJhc2VDb25maWcge1xuICByZXR1cm4ge1xuICAgIHBvc3RncmVzOiB7XG4gICAgICBob3N0OiBwcm9jZXNzLmVudi5EQl9IT1NUIHx8ICdwb3N0Z3JlcycsXG4gICAgICBwb3J0OiBwYXJzZUludChwcm9jZXNzLmVudi5EQl9QT1JUIHx8ICc1NDMyJywgMTApLFxuICAgICAgZGF0YWJhc2U6IHByb2Nlc3MuZW52LkRBVEFCQVNFIHx8ICdwaXBlbGluZV9idWlsZGVyJyxcbiAgICAgIHVzZXI6IHByb2Nlc3MuZW52LkRCX1VTRVIgfHwgJ3Bvc3RncmVzJyxcbiAgICAgIHBhc3N3b3JkOiBwcm9jZXNzLmVudi5EQl9QQVNTV09SRCB8fCAnJyxcbiAgICB9LFxuICAgIGRyaXp6bGU6IHtcbiAgICAgIG1heFBvb2xTaXplOiBwYXJzZUludChwcm9jZXNzLmVudi5EUklaWkxFX01BWF9QT09MX1NJWkUgfHwgJzIwJywgMTApLFxuICAgICAgaWRsZVRpbWVvdXRNaWxsaXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkRSSVpaTEVfSURMRV9USU1FT1VUX01JTExJUyB8fCAnMzAwMDAnLCAxMCksXG4gICAgICBjb25uZWN0aW9uVGltZW91dE1pbGxpczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuRFJJWlpMRV9DT05ORUNUSU9OX1RJTUVPVVRfTUlMTElTIHx8ICcxMDAwMCcsIDEwKSxcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZE9ic2VydmFiaWxpdHlDb25maWcoKTogT2JzZXJ2YWJpbGl0eUNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgbG9nTGV2ZWw6IHByb2Nlc3MuZW52LkxPR19MRVZFTCB8fCAnaW5mbycsXG4gICAgbG9nRm9ybWF0OiBwcm9jZXNzLmVudi5MT0dfRk9STUFUIHx8ICdqc29uJyxcbiAgICBzZXJ2aWNlTmFtZTogcHJvY2Vzcy5lbnYuU0VSVklDRV9OQU1FIHx8ICdhcGknLFxuICAgIHRyYWNpbmc6IHtcbiAgICAgIGVuYWJsZWQ6IHByb2Nlc3MuZW52Lk9URUxfVFJBQ0lOR19FTkFCTEVEID09PSAndHJ1ZScsXG4gICAgICBlbmRwb2ludDogcHJvY2Vzcy5lbnYuT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UIHx8ICdodHRwOi8vbG9jYWxob3N0OjQzMTgvdjEvdHJhY2VzJyxcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZENvbXBsaWFuY2VDb25maWcoKTogQ29tcGxpYW5jZUNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgc2NhblNjaGVkdWxlckludGVydmFsTXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LlNDQU5fU0NIRURVTEVSX0lOVEVSVkFMX01TIHx8ICc2MDAwMCcsIDEwKSxcbiAgICBzeXN0ZW1PcmdTY2Fuc0VuYWJsZWQ6IHByb2Nlc3MuZW52LlNZU1RFTV9PUkdfU0NBTlNfRU5BQkxFRCA9PT0gJ3RydWUnLFxuICAgIHNjYW5Mb2NrVHRsTXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LlNDQU5fTE9DS19UVExfTVMgfHwgJzMwMDAwMCcsIDEwKSxcbiAgICBkaWdlc3RTY2hlZHVsZXJJbnRlcnZhbE1zOiBwYXJzZUludChwcm9jZXNzLmVudi5ESUdFU1RfU0NIRURVTEVSX0lOVEVSVkFMX01TIHx8ICczNjAwMDAwJywgMTApLFxuICAgIGRpZ2VzdExvY2tUdGxNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuRElHRVNUX0xPQ0tfVFRMX01TIHx8ICczMDAwMDAnLCAxMCksXG4gIH07XG59XG5cbi8qKlxuICogTG9hZCBwbHVnaW4gYnVpbGQgY29uZmlndXJhdGlvbi4gQnVpbGRzIHJ1biBhZ2FpbnN0IGEgcm9vdGxlc3MgYG1vYnkvYnVpbGRraXRgXG4gKiBzaWRlY2FyIOKAlCBzZWUgYEJVSUxES0lUX0hPU1RgLlxuICpcbiAqIEVudmlyb25tZW50IHZhcmlhYmxlczpcbiAqIC0gYERPQ0tFUl9CVUlMRF9URU1QX1JPT1RgIOKAlCBUZW1wIGRpcmVjdG9yeSBmb3IgYnVpbGQgY29udGV4dHMgKGRlZmF1bHQ6IGA8Y3dkPi90bXBgKVxuICogLSBgRE9DS0VSX0JVSUxEX1RJTUVPVVRfTVNgIOKAlCBCdWlsZCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdDogYDkwMDAwMGAgLyAxNSBtaW4pXG4gKiAtIGBET0NLRVJfUFVTSF9USU1FT1VUX01TYCDigJQgUHVzaCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdDogYDMwMDAwMGAgLyA1IG1pbilcbiAqIC0gYEJVSUxES0lUX0hPU1RgIOKAlCBidWlsZGN0bCBgLS1hZGRyYCB2YWx1ZSBmb3IgdGhlIGJ1aWxka2l0ZCBzaWRlY2FyXG4gKiAgIChkZWZhdWx0OiBgdW5peDovLy9ydW4vYnVpbGRraXQvYnVpbGRraXRkLnNvY2tgKVxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZERvY2tlckNvbmZpZygpOiBCdWlsZENvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdGVtcFJvb3Q6IHByb2Nlc3MuZW52LkRPQ0tFUl9CVUlMRF9URU1QX1JPT1QgfHwgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICd0bXAnKSxcbiAgICB0aW1lb3V0TXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkRPQ0tFUl9CVUlMRF9USU1FT1VUX01TIHx8ICc5MDAwMDAnLCAxMCksXG4gICAgcHVzaFRpbWVvdXRNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuRE9DS0VSX1BVU0hfVElNRU9VVF9NUyB8fCAnMzAwMDAwJywgMTApLFxuICAgIGJ1aWxka2l0QWRkcjogcHJvY2Vzcy5lbnYuQlVJTERLSVRfSE9TVCB8fCAndW5peDovLy9ydW4vYnVpbGRraXQvYnVpbGRraXRkLnNvY2snLFxuICB9O1xufVxuXG4vKipcbiAqIExvYWQgQVdTIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGVzOlxuICogLSBgTEFNQkRBX1JVTlRJTUVgIOKAlCBMYW1iZGEgcnVudGltZSAoZGVmYXVsdDogYCdub2RlanMyNC54J2A7IHVua25vd24gdmFsdWVzIGZhbGwgYmFjayB0byBpdClcbiAqIC0gYExBTUJEQV9USU1FT1VUYCDigJQgTGFtYmRhIHRpbWVvdXQgaW4gc2Vjb25kcyAoZGVmYXVsdDogYDkwMGApXG4gKiAtIGBMQU1CREFfTUVNT1JZX1NJWkVgIOKAlCBMYW1iZGEgbWVtb3J5IGluIE1CIChkZWZhdWx0OiBgNTEyYClcbiAqIC0gYExBTUJEQV9BUkNISVRFQ1RVUkVgIOKAlCBgJ3g4Nl82NCdgIG9yIEFSTSAoZGVmYXVsdDogQVJNXzY0KVxuICogLSBgTE9HX0dST1VQX05BTUVgIOKAlCBDbG91ZFdhdGNoIGxvZyBncm91cCAoZGVmYXVsdDogYCcvcGlwZWxpbmUtYnVpbGRlci9sb2dzJ2ApXG4gKiAtIGBDT0RFQlVJTERfQ09NUFVURV9UWVBFYCDigJQgQ29kZUJ1aWxkIGNvbXB1dGUgdHlwZSAoZGVmYXVsdDogYCdTTUFMTCdgKVxuICpcbiAqIEByZXR1cm5zIEFXUyBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQVdTQ29uZmlnKCk6IEFXU0NvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgbGFtYmRhOiB7XG4gICAgICBydW50aW1lOiBwcm9jZXNzLmVudi5MQU1CREFfUlVOVElNRSB8fCAnbm9kZWpzMjQueCcsXG4gICAgICB0aW1lb3V0U2Vjb25kczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuTEFNQkRBX1RJTUVPVVQgfHwgJzkwMCcsIDEwKSxcbiAgICAgIG1lbW9yeVNpemU6IHBhcnNlSW50KHByb2Nlc3MuZW52LkxBTUJEQV9NRU1PUllfU0laRSB8fCAnNTEyJywgMTApLFxuICAgICAgYXJjaGl0ZWN0dXJlOiBwcm9jZXNzLmVudi5MQU1CREFfQVJDSElURUNUVVJFID09PSAneDg2XzY0JyA/ICd4ODZfNjQnIDogJ2FybTY0JyxcbiAgICAgIHJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnM6IHByb2Nlc3MuZW52LkxBTUJEQV9SRVNFUlZFRF9DT05DVVJSRU5DWVxuICAgICAgICA/IHBhcnNlSW50KHByb2Nlc3MuZW52LkxBTUJEQV9SRVNFUlZFRF9DT05DVVJSRU5DWSwgMTApXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH0sXG5cbiAgICBsb2dnaW5nOiB7XG4gICAgICBncm91cE5hbWU6IHByb2Nlc3MuZW52LkxPR19HUk9VUF9OQU1FIHx8ICcvcGlwZWxpbmUtYnVpbGRlci9sb2dzJyxcbiAgICB9LFxuXG4gICAgY29kZUJ1aWxkOiB7XG4gICAgICBjb21wdXRlVHlwZTogKHByb2Nlc3MuZW52LkNPREVCVUlMRF9DT01QVVRFX1RZUEUgfHwgJ1NNQUxMJykudG9VcHBlckNhc2UoKSxcbiAgICAgIGRlZmF1bHRJbWFnZTogcHJvY2Vzcy5lbnYuQ09ERUJVSUxEX0RFRkFVTFRfSU1BR0UgfHwgJ3BpcGVsaW5lLWJvb3RzdHJhcDoxLjAnLFxuICAgIH0sXG4gIH07XG59XG4iXX0=
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mcmFzdHJ1Y3R1cmUtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9pbmZyYXN0cnVjdHVyZS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFHeEI7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCO0lBQ2hDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLElBQUksVUFBVSxDQUFDO0lBQzNELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixJQUFJLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyRSw0RUFBNEU7SUFDNUUsd0VBQXdFO0lBQ3hFLDhFQUE4RTtJQUM5RSw0RUFBNEU7SUFDNUUsTUFBTSxRQUFRLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3JFLE9BQU87UUFDTCxJQUFJO1FBQ0osSUFBSTtRQUNKLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixJQUFJLFFBQVEsRUFBRSxJQUFJLElBQUksSUFBSTtRQUN4RSxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0I7WUFDNUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixFQUFFLEVBQUUsQ0FBQztZQUNwRCxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQztRQUM1QixPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksRUFBRTtRQUN6QyxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsS0FBSyxPQUFPO0tBQ2xELENBQUM7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QUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksd0JBQXdCO1NBQ2xFO1FBRUQsU0FBUyxFQUFFO1lBQ1QsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsSUFBSSxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUU7WUFDMUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLElBQUksd0JBQXdCO1NBQzlFO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgdHlwZSB7IEFXU0NvbmZpZywgQnVpbGRDb25maWcsIENvbXBsaWFuY2VDb25maWcsIERhdGFiYXNlQ29uZmlnLCBPYnNlcnZhYmlsaXR5Q29uZmlnLCBQbHVnaW5CdWlsZENvbmZpZywgUmVnaXN0cnlDb25maWcgfSBmcm9tICcuL2NvbmZpZy10eXBlcy5qcyc7XG5cbi8qKlxuICogTG9hZCBEb2NrZXIgcmVnaXN0cnkgY29uZmlndXJhdGlvbiBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAqXG4gKiBFbnZpcm9ubWVudCB2YXJpYWJsZXM6XG4gKiAtIGBJTUFHRV9SRUdJU1RSWV9IT1NUYCDigJQgUmVnaXN0cnkgaG9zdG5hbWUgKGRlZmF1bHQ6IGAncmVnaXN0cnknYClcbiAqIC0gYElNQUdFX1JFR0lTVFJZX1BPUlRgIOKAlCBSZWdpc3RyeSBwb3J0IChkZWZhdWx0OiBgNTAwMGApXG4gKiAtIGBJTUFHRV9SRUdJU1RSWV9QVUxMX0hPU1RgIOKAlCBIb3N0IGFuIG91dC1vZi1jbHVzdGVyIGNsaWVudCAoQ29kZUJ1aWxkKVxuICogICB1c2VzIHRvIHB1bGwgcGx1Z2luIGltYWdlcy4gV2hlbiB1bnNldCwgZGVyaXZlZCBmcm9tIGBQTEFURk9STV9CQVNFX1VSTGAnc1xuICogICBob3N0ICh0aGUgcHVibGljIGVuZHBvaW50IENvZGVCdWlsZCBjYW4gcmVzb2x2ZSksIHRoZW4gYElNQUdFX1JFR0lTVFJZX0hPU1RgLlxuICogLSBgSU1BR0VfUkVHSVNUUllfUFVMTF9QT1JUYCDigJQgUG9ydCBmb3IgdGhlIGFib3ZlLiBXaGVuIHVuc2V0LCBkZXJpdmVkIGZyb21cbiAqICAgYFBMQVRGT1JNX0JBU0VfVVJMYCdzIHBvcnQsIHRoZW4gYElNQUdFX1JFR0lTVFJZX1BPUlRgLlxuICogLSBgRE9DS0VSX05FVFdPUktgIOKAlCBEb2NrZXIgbmV0d29yayBmb3IgYnVpbGQvcHVzaCAoZGVmYXVsdDogYCcnYClcbiAqIC0gYElNQUdFX1JFR0lTVFJZX0hUVFBgIOKAlCBVc2UgcGxhaW4gSFRUUCBpbnN0ZWFkIG9mIEhUVFBTIChkZWZhdWx0OiBgdHJ1ZWAsXG4gKiAgIHRoZSBpbi1jbHVzdGVyIHJlZ2lzdHJ5IGhhcyBubyBUTFMpLlxuICpcbiAqIEByZXR1cm5zIFJlZ2lzdHJ5IGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRSZWdpc3RyeUNvbmZpZygpOiBSZWdpc3RyeUNvbmZpZyB7XG4gIGNvbnN0IGhvc3QgPSBwcm9jZXNzLmVudi5JTUFHRV9SRUdJU1RSWV9IT1NUIHx8ICdyZWdpc3RyeSc7XG4gIGNvbnN0IHBvcnQgPSBwYXJzZUludChwcm9jZXNzLmVudi5JTUFHRV9SRUdJU1RSWV9QT1JUIHx8ICc1MDAwJywgMTApO1xuICAvLyBXaGVuIG5vIGV4cGxpY2l0IHB1bGwgaG9zdCBpcyBzZXQsIGRlcml2ZSBpdCBmcm9tIFBMQVRGT1JNX0JBU0VfVVJMIOKAlCB0aGVcbiAgLy8gcHVibGljIHBsYXRmb3JtIGVuZHBvaW50IGFuIG91dC1vZi1jbHVzdGVyIGNsaWVudCAoQVdTIENvZGVCdWlsZCkgY2FuXG4gIC8vIHJlc29sdmUsIHVubGlrZSB0aGUgaW4tY2x1c3RlciBgcmVnaXN0cnlgIENsdXN0ZXJJUC4gT25seSBmYWxscyBiYWNrIHRvIHRoZVxuICAvLyBpbi1jbHVzdGVyIGhvc3Qgd2hlbiBQTEFURk9STV9CQVNFX1VSTCBpcyB1bnNldC91bnBhcnNlYWJsZSAoZS5nLiBsb2NhbCkuXG4gIGNvbnN0IHBsYXRmb3JtID0gcGFyc2VQbGF0Zm9ybUJhc2VVcmwocHJvY2Vzcy5lbnYuUExBVEZPUk1fQkFTRV9VUkwpO1xuICByZXR1cm4ge1xuICAgIGhvc3QsXG4gICAgcG9ydCxcbiAgICBwdWxsSG9zdDogcHJvY2Vzcy5lbnYuSU1BR0VfUkVHSVNUUllfUFVMTF9IT1NUIHx8IHBsYXRmb3JtPy5ob3N0IHx8IGhvc3QsXG4gICAgcHVsbFBvcnQ6IHByb2Nlc3MuZW52LklNQUdFX1JFR0lTVFJZX1BVTExfUE9SVFxuICAgICAgPyBwYXJzZUludChwcm9jZXNzLmVudi5JTUFHRV9SRUdJU1RSWV9QVUxMX1BPUlQsIDEwKVxuICAgICAgOiAocGxhdGZvcm0/LnBvcnQgPz8gcG9ydCksXG4gICAgbmV0d29yazogcHJvY2Vzcy5lbnYuRE9DS0VSX05FVFdPUksgfHwgJycsXG4gICAgaHR0cDogcHJvY2Vzcy5lbnYuSU1BR0VfUkVHSVNUUllfSFRUUCAhPT0gJ2ZhbHNlJyxcbiAgfTtcbn1cblxuLyoqIEV4dHJhY3QgaG9zdCArIHBvcnQgZnJvbSBQTEFURk9STV9CQVNFX1VSTCAoZS5nLiBgaHR0cHM6Ly9waXBlbGluZS1idWlsZGVyLmNvbWBcbiAqICDihpIgYHsgaG9zdDogJ3BpcGVsaW5lLWJ1aWxkZXIuY29tJywgcG9ydDogNDQzIH1gKS4gUmV0dXJucyBudWxsIHdoZW4gdGhlIHZhbHVlXG4gKiAgaXMgdW5zZXQgb3Igbm90IGEgdmFsaWQgVVJMLiBFeHBvcnRlZCBzbyB0aGUgQ0xJIChwaXBlbGluZS1tYW5hZ2VyKSBkZXJpdmVzXG4gKiAgdGhlIHJlZ2lzdHJ5IHB1bGwgdGFyZ2V0IHdpdGggdGhlIFNBTUUgcGFyc2luZywgaW5zdGVhZCBvZiBkdXBsaWNhdGluZyBpdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVBsYXRmb3JtQmFzZVVybChyYXc/OiBzdHJpbmcpOiB7IGhvc3Q6IHN0cmluZzsgcG9ydDogbnVtYmVyIH0gfCBudWxsIHtcbiAgaWYgKCFyYXcpIHJldHVybiBudWxsO1xuICB0cnkge1xuICAgIGNvbnN0IHUgPSBuZXcgVVJMKHJhdyk7XG4gICAgLy8gQSBzY2hlbWUtbGVzcyB2YWx1ZSBsaWtlIGBob3N0Ojg0NDNgIHBhcnNlcyB3aXRoIGEgY3VzdG9tIHByb3RvY29sIGFuZCBhblxuICAgIC8vIEVNUFRZIGhvc3RuYW1lIOKAlCByZWplY3QgaXQgc28gY2FsbGVycyBmYWxsIGJhY2sgcmF0aGVyIHRoYW4gZGVyaXZlIGFcbiAgICAvLyBob3N0LWxlc3MgZW5kcG9pbnQuXG4gICAgaWYgKCF1Lmhvc3RuYW1lKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBwb3J0ID0gdS5wb3J0ID8gcGFyc2VJbnQodS5wb3J0LCAxMCkgOiAodS5wcm90b2NvbCA9PT0gJ2h0dHBzOicgPyA0NDMgOiA4MCk7XG4gICAgcmV0dXJuIHsgaG9zdDogdS5ob3N0bmFtZSwgcG9ydCB9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIExvYWQgcGx1Z2luIGJ1aWxkIHF1ZXVlIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGVzOlxuICogLSBgUExVR0lOX0JVSUxEX0NPTkNVUlJFTkNZYCDigJQgTWF4IGNvbmN1cnJlbnQgcGx1Z2luIGJ1aWxkcyAoZGVmYXVsdDogYDFgKVxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZFBsdWdpbkJ1aWxkQ29uZmlnKCk6IFBsdWdpbkJ1aWxkQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBjb25jdXJyZW5jeTogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUExVR0lOX0JVSUxEX0NPTkNVUlJFTkNZIHx8ICcxJywgMTApLFxuICAgIG1heEF0dGVtcHRzOiBwYXJzZUludChwcm9jZXNzLmVudi5QTFVHSU5fQlVJTERfTUFYX0FUVEVNUFRTIHx8ICcyJywgMTApLFxuICAgIGJhY2tvZmZEZWxheU1zOiBwYXJzZUludChwcm9jZXNzLmVudi5QTFVHSU5fQlVJTERfQkFDS09GRl9ERUxBWV9NUyB8fCAnNTAwMCcsIDEwKSxcbiAgICB3b3JrZXJUaW1lb3V0TXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LlBMVUdJTl9CVUlMRF9XT1JLRVJfVElNRU9VVF9NUyB8fCAnMTAwMDAnLCAxMCksXG4gICAgdGVtcERpck1heEFnZU1zOiBwYXJzZUludChwcm9jZXNzLmVudi5URU1QX0RJUl9NQVhfQUdFX01TIHx8ICcxNDQwMDAwMCcsIDEwKSxcbiAgICBkbHFNYXhBdHRlbXB0czogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUExVR0lOX0RMUV9NQVhfQVRURU1QVFMgfHwgJzMnLCAxMCksXG4gICAgZGxxQmFja29mZkJhc2VNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUExVR0lOX0RMUV9CQUNLT0ZGX0JBU0VfTVMgfHwgJzMwMDAwMCcsIDEwKSxcbiAgICBkbHFNYXhTaXplOiBwYXJzZUludChwcm9jZXNzLmVudi5QTFVHSU5fRExRX01BWF9TSVpFIHx8ICcyMCcsIDEwKSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWREYXRhYmFzZUNvbmZpZygpOiBEYXRhYmFzZUNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgcG9zdGdyZXM6IHtcbiAgICAgIGhvc3Q6IHByb2Nlc3MuZW52LkRCX0hPU1QgfHwgJ3Bvc3RncmVzJyxcbiAgICAgIHBvcnQ6IHBhcnNlSW50KHByb2Nlc3MuZW52LkRCX1BPUlQgfHwgJzU0MzInLCAxMCksXG4gICAgICBkYXRhYmFzZTogcHJvY2Vzcy5lbnYuREFUQUJBU0UgfHwgJ3BpcGVsaW5lX2J1aWxkZXInLFxuICAgICAgdXNlcjogcHJvY2Vzcy5lbnYuREJfVVNFUiB8fCAncG9zdGdyZXMnLFxuICAgICAgcGFzc3dvcmQ6IHByb2Nlc3MuZW52LkRCX1BBU1NXT1JEIHx8ICcnLFxuICAgIH0sXG4gICAgZHJpenpsZToge1xuICAgICAgbWF4UG9vbFNpemU6IHBhcnNlSW50KHByb2Nlc3MuZW52LkRSSVpaTEVfTUFYX1BPT0xfU0laRSB8fCAnMjAnLCAxMCksXG4gICAgICBpZGxlVGltZW91dE1pbGxpczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuRFJJWlpMRV9JRExFX1RJTUVPVVRfTUlMTElTIHx8ICczMDAwMCcsIDEwKSxcbiAgICAgIGNvbm5lY3Rpb25UaW1lb3V0TWlsbGlzOiBwYXJzZUludChwcm9jZXNzLmVudi5EUklaWkxFX0NPTk5FQ1RJT05fVElNRU9VVF9NSUxMSVMgfHwgJzEwMDAwJywgMTApLFxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkT2JzZXJ2YWJpbGl0eUNvbmZpZygpOiBPYnNlcnZhYmlsaXR5Q29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBsb2dMZXZlbDogcHJvY2Vzcy5lbnYuTE9HX0xFVkVMIHx8ICdpbmZvJyxcbiAgICBsb2dGb3JtYXQ6IHByb2Nlc3MuZW52LkxPR19GT1JNQVQgfHwgJ2pzb24nLFxuICAgIHNlcnZpY2VOYW1lOiBwcm9jZXNzLmVudi5TRVJWSUNFX05BTUUgfHwgJ2FwaScsXG4gICAgdHJhY2luZzoge1xuICAgICAgZW5hYmxlZDogcHJvY2Vzcy5lbnYuT1RFTF9UUkFDSU5HX0VOQUJMRUQgPT09ICd0cnVlJyxcbiAgICAgIGVuZHBvaW50OiBwcm9jZXNzLmVudi5PVEVMX0VYUE9SVEVSX09UTFBfRU5EUE9JTlQgfHwgJ2h0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS90cmFjZXMnLFxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQ29tcGxpYW5jZUNvbmZpZygpOiBDb21wbGlhbmNlQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBzY2FuU2NoZWR1bGVySW50ZXJ2YWxNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuU0NBTl9TQ0hFRFVMRVJfSU5URVJWQUxfTVMgfHwgJzYwMDAwJywgMTApLFxuICAgIHN5c3RlbU9yZ1NjYW5zRW5hYmxlZDogcHJvY2Vzcy5lbnYuU1lTVEVNX09SR19TQ0FOU19FTkFCTEVEID09PSAndHJ1ZScsXG4gICAgc2NhbkxvY2tUdGxNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuU0NBTl9MT0NLX1RUTF9NUyB8fCAnMzAwMDAwJywgMTApLFxuICAgIGRpZ2VzdFNjaGVkdWxlckludGVydmFsTXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkRJR0VTVF9TQ0hFRFVMRVJfSU5URVJWQUxfTVMgfHwgJzM2MDAwMDAnLCAxMCksXG4gICAgZGlnZXN0TG9ja1R0bE1zOiBwYXJzZUludChwcm9jZXNzLmVudi5ESUdFU1RfTE9DS19UVExfTVMgfHwgJzMwMDAwMCcsIDEwKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBMb2FkIHBsdWdpbiBidWlsZCBjb25maWd1cmF0aW9uLiBCdWlsZHMgcnVuIGFnYWluc3QgYSByb290bGVzcyBgbW9ieS9idWlsZGtpdGBcbiAqIHNpZGVjYXIg4oCUIHNlZSBgQlVJTERLSVRfSE9TVGAuXG4gKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGVzOlxuICogLSBgRE9DS0VSX0JVSUxEX1RFTVBfUk9PVGAg4oCUIFRlbXAgZGlyZWN0b3J5IGZvciBidWlsZCBjb250ZXh0cyAoZGVmYXVsdDogYDxjd2Q+L3RtcGApXG4gKiAtIGBET0NLRVJfQlVJTERfVElNRU9VVF9NU2Ag4oCUIEJ1aWxkIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIChkZWZhdWx0OiBgOTAwMDAwYCAvIDE1IG1pbilcbiAqIC0gYERPQ0tFUl9QVVNIX1RJTUVPVVRfTVNgIOKAlCBQdXNoIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIChkZWZhdWx0OiBgMzAwMDAwYCAvIDUgbWluKVxuICogLSBgQlVJTERLSVRfSE9TVGAg4oCUIGJ1aWxkY3RsIGAtLWFkZHJgIHZhbHVlIGZvciB0aGUgYnVpbGRraXRkIHNpZGVjYXJcbiAqICAgKGRlZmF1bHQ6IGB1bml4Oi8vL3J1bi9idWlsZGtpdC9idWlsZGtpdGQuc29ja2ApXG4gKiAtIGBQTFVHSU5fU0lHTklOR19QVUJMSUNfS0VZX0ZJTEVgIOKAlCBQRU0gcHVibGljIGtleSBwbHVnaW4gaW1hZ2VzIGFyZSB2ZXJpZmllZFxuICogICBhZ2FpbnN0IChkZWZhdWx0OiBgL2V0Yy9waXBlbGluZS1idWlsZGVyL3BsdWdpbi1zaWduaW5nL3BsdWdpbi1zaWduaW5nLnB1YmApXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkRG9ja2VyQ29uZmlnKCk6IEJ1aWxkQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0ZW1wUm9vdDogcHJvY2Vzcy5lbnYuRE9DS0VSX0JVSUxEX1RFTVBfUk9PVCB8fCBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJ3RtcCcpLFxuICAgIHRpbWVvdXRNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuRE9DS0VSX0JVSUxEX1RJTUVPVVRfTVMgfHwgJzkwMDAwMCcsIDEwKSxcbiAgICBwdXNoVGltZW91dE1zOiBwYXJzZUludChwcm9jZXNzLmVudi5ET0NLRVJfUFVTSF9USU1FT1VUX01TIHx8ICczMDAwMDAnLCAxMCksXG4gICAgYnVpbGRraXRBZGRyOiBwcm9jZXNzLmVudi5CVUlMREtJVF9IT1NUIHx8ICd1bml4Oi8vL3J1bi9idWlsZGtpdC9idWlsZGtpdGQuc29jaycsXG4gICAgc2lnbmluZ1B1YmxpY0tleUZpbGU6IHByb2Nlc3MuZW52LlBMVUdJTl9TSUdOSU5HX1BVQkxJQ19LRVlfRklMRSB8fCAnL2V0Yy9waXBlbGluZS1idWlsZGVyL3BsdWdpbi1zaWduaW5nL3BsdWdpbi1zaWduaW5nLnB1YicsXG4gIH07XG59XG5cbi8qKlxuICogTG9hZCBBV1MgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAqXG4gKiBFbnZpcm9ubWVudCB2YXJpYWJsZXM6XG4gKiAtIGBMQU1CREFfUlVOVElNRWAg4oCUIExhbWJkYSBydW50aW1lIChkZWZhdWx0OiBgJ25vZGVqczI0LngnYDsgdW5rbm93biB2YWx1ZXMgZmFsbCBiYWNrIHRvIGl0KVxuICogLSBgTEFNQkRBX1RJTUVPVVRgIOKAlCBMYW1iZGEgdGltZW91dCBpbiBzZWNvbmRzIChkZWZhdWx0OiBgOTAwYClcbiAqIC0gYExBTUJEQV9NRU1PUllfU0laRWAg4oCUIExhbWJkYSBtZW1vcnkgaW4gTUIgKGRlZmF1bHQ6IGA1MTJgKVxuICogLSBgTEFNQkRBX0FSQ0hJVEVDVFVSRWAg4oCUIGAneDg2XzY0J2Agb3IgQVJNIChkZWZhdWx0OiBBUk1fNjQpXG4gKiAtIGBMT0dfR1JPVVBfTkFNRWAg4oCUIENsb3VkV2F0Y2ggbG9nIGdyb3VwIChkZWZhdWx0OiBgJy9waXBlbGluZS1idWlsZGVyL2xvZ3MnYClcbiAqIC0gYENPREVCVUlMRF9DT01QVVRFX1RZUEVgIOKAlCBDb2RlQnVpbGQgY29tcHV0ZSB0eXBlIChkZWZhdWx0OiBgJ1NNQUxMJ2ApXG4gKlxuICogQHJldHVybnMgQVdTIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBV1NDb25maWcoKTogQVdTQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBsYW1iZGE6IHtcbiAgICAgIHJ1bnRpbWU6IHByb2Nlc3MuZW52LkxBTUJEQV9SVU5USU1FIHx8ICdub2RlanMyNC54JyxcbiAgICAgIHRpbWVvdXRTZWNvbmRzOiBwYXJzZUludChwcm9jZXNzLmVudi5MQU1CREFfVElNRU9VVCB8fCAnOTAwJywgMTApLFxuICAgICAgbWVtb3J5U2l6ZTogcGFyc2VJbnQocHJvY2Vzcy5lbnYuTEFNQkRBX01FTU9SWV9TSVpFIHx8ICc1MTInLCAxMCksXG4gICAgICBhcmNoaXRlY3R1cmU6IHByb2Nlc3MuZW52LkxBTUJEQV9BUkNISVRFQ1RVUkUgPT09ICd4ODZfNjQnID8gJ3g4Nl82NCcgOiAnYXJtNjQnLFxuICAgICAgcmVzZXJ2ZWRDb25jdXJyZW50RXhlY3V0aW9uczogcHJvY2Vzcy5lbnYuTEFNQkRBX1JFU0VSVkVEX0NPTkNVUlJFTkNZXG4gICAgICAgID8gcGFyc2VJbnQocHJvY2Vzcy5lbnYuTEFNQkRBX1JFU0VSVkVEX0NPTkNVUlJFTkNZLCAxMClcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfSxcblxuICAgIGxvZ2dpbmc6IHtcbiAgICAgIGdyb3VwTmFtZTogcHJvY2Vzcy5lbnYuTE9HX0dST1VQX05BTUUgfHwgJy9waXBlbGluZS1idWlsZGVyL2xvZ3MnLFxuICAgIH0sXG5cbiAgICBjb2RlQnVpbGQ6IHtcbiAgICAgIGNvbXB1dGVUeXBlOiAocHJvY2Vzcy5lbnYuQ09ERUJVSUxEX0NPTVBVVEVfVFlQRSB8fCAnU01BTEwnKS50b1VwcGVyQ2FzZSgpLFxuICAgICAgZGVmYXVsdEltYWdlOiBwcm9jZXNzLmVudi5DT0RFQlVJTERfREVGQVVMVF9JTUFHRSB8fCAncGlwZWxpbmUtYm9vdHN0cmFwOjEuMCcsXG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -50,6 +50,8 @@ export function loadServerConfig() {
|
|
|
50
50
|
billingHost: process.env.BILLING_SERVICE_HOST || 'billing',
|
|
51
51
|
billingPort: parseInt(process.env.BILLING_SERVICE_PORT || '3000', 10),
|
|
52
52
|
billingTimeout: parseInt(process.env.BILLING_SERVICE_TIMEOUT || '5000', 10),
|
|
53
|
+
imageRegistryHost: process.env.IMAGE_REGISTRY_SERVICE_HOST || 'image-registry',
|
|
54
|
+
imageRegistryPort: parseInt(process.env.IMAGE_REGISTRY_SERVICE_PORT || '3000', 10),
|
|
53
55
|
},
|
|
54
56
|
};
|
|
55
57
|
}
|
|
@@ -151,4 +153,4 @@ export function validateAuthConfig(config) {
|
|
|
151
153
|
throw new Error(`Auth configuration validation failed:\n${errors.map(e => ` - ${e}`).join('\n')}`);
|
|
152
154
|
}
|
|
153
155
|
}
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvc2VydmVyLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHaEQsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBRTFDOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixPQUFPO1FBQ0wsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQzlDLElBQUksRUFBRTtZQUNKLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixLQUFLLE9BQU87WUFDckQsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVztnQkFDN0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3ZELENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLElBQUksYUFBYSxDQUFDLG9CQUFvQixDQUFDO1NBQzFFO1FBQ0QsVUFBVSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ3hELFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixJQUFJLGFBQWEsQ0FBQyxvQkFBb0I7UUFFaEYsVUFBVSxFQUFFO1lBQ1YsT0FBTyxFQUFF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bnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB7IENvcmVDb25zdGFudHMgfSBmcm9tICcuL2FwcC1jb25maWcuanMnO1xuaW1wb3J0IHR5cGUgeyBTZXJ2ZXJDb25maWcsIEF1dGhDb25maWcsIFJhdGVMaW1pdENvbmZpZyB9IGZyb20gJy4vY29uZmlnLXR5cGVzLmpzJztcblxuY29uc3QgbG9nID0gY3JlYXRlTG9nZ2VyKCdzZXJ2ZXItY29uZmlnJyk7XG5cbi8qKlxuICogTG9hZCBzZXJ2ZXIgY29uZmlndXJhdGlvbiBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAqXG4gKiBFbnZpcm9ubWVudCB2YXJpYWJsZXM6XG4gKiAtIGBQT1JUYCDigJQgSFRUUCBsaXN0ZW4gcG9ydCAoZGVmYXVsdDogYDMwMDBgKVxuICogLSBgQ09SU19PUklHSU5gIOKAlCBDb21tYS1zZXBhcmF0ZWQgYWxsb3dlZCBvcmlnaW5zIChkZWZhdWx0OiBgUExBVEZPUk1fQkFTRV9VUkxgKVxuICogLSBgQ09SU19DUkVERU5USUFMU2Ag4oCUIEFsbG93IGNyZWRlbnRpYWxzOyBzZXQgdG8gYCdmYWxzZSdgIHRvIGRpc2FibGUgKGRlZmF1bHQ6IGB0cnVlYClcbiAqIC0gYFRSVVNUX1BST1hZYCDigJQgRXhwcmVzcyB0cnVzdCBwcm94eSBob3BzIChkZWZhdWx0OiBgMWApXG4gKiAtIGBQTEFURk9STV9CQVNFX1VSTGAg4oCUIEZyb250ZW5kIFVSTCB1c2VkIGFzIENPUlMgZmFsbGJhY2sgKGRlZmF1bHQ6IGAnaHR0cHM6Ly9sb2NhbGhvc3Q6ODQ0MydgKVxuICpcbiAqIEByZXR1cm5zIFNlcnZlciBjb25maWd1cmF0aW9uIHdpdGggcG9ydCwgQ09SUywgdHJ1c3QgcHJveHksIGFuZCBwbGF0Zm9ybSBVUkxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRTZXJ2ZXJDb25maWcoKTogU2VydmVyQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBwb3J0OiBwYXJzZUludChwcm9jZXNzLmVudi5QT1JUIHx8ICczMDAwJywgMTApLFxuICAgIGNvcnM6IHtcbiAgICAgIGNyZWRlbnRpYWxzOiBwcm9jZXNzLmVudi5DT1JTX0NSRURFTlRJQUxTICE9PSAnZmFsc2UnLFxuICAgICAgb3JpZ2luOiBwcm9jZXNzLmVudi5DT1JTX09SSUdJTlxuICAgICAgICA/IHByb2Nlc3MuZW52LkNPUlNfT1JJR0lOLnNwbGl0KCcsJykubWFwKG8gPT4gby50cmltKCkpXG4gICAgICAgIDogW3Byb2Nlc3MuZW52LlBMQVRGT1JNX0JBU0VfVVJMIHx8IENvcmVDb25zdGFudHMuREVGQVVMVF9QTEFURk9STV9VUkxdLFxuICAgIH0sXG4gICAgdHJ1c3RQcm94eTogcGFyc2VJbnQocHJvY2Vzcy5lbnYuVFJVU1RfUFJPWFkgfHwgJzEnLCAxMCksXG4gICAgcGxhdGZvcm1Vcmw6IHByb2Nlc3MuZW52LlBMQVRGT1JNX0JBU0VfVVJMIHx8IENvcmVDb25zdGFudHMuREVGQVVMVF9QTEFURk9STV9VUkwsXG5cbiAgICBodHRwQ2xpZW50OiB7XG4gICAgICB0aW1lb3V0OiBwYXJzZUludChwcm9jZXNzLmVudi5IVFRQX0NMSUVOVF9USU1FT1VUIHx8ICc1MDAwJywgMTApLFxuICAgICAgbWF4UmV0cmllczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuSFRUUF9DTElFTlRfTUFYX1JFVFJJRVMgfHwgJzInLCAxMCksXG4gICAgICByZXRyeURlbGF5TXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkhUVFBfQ0xJRU5UX1JFVFJZX0RFTEFZX01TIHx8ICcyMDAnLCAxMCksXG4gICAgfSxcblxuICAgIHNzZToge1xuICAgICAgbWF4Q2xpZW50c1BlclJlcXVlc3Q6IHBhcnNlSW50KHByb2Nlc3MuZW52LlNTRV9NQVhfQ0xJRU5UU19QRVJfUkVRVUVTVCB8fCAnMTAnLCAxMCksXG4gICAgICBjbGllbnRUaW1lb3V0TXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LlNTRV9DTElFTlRfVElNRU9VVF9NUyB8fCAnMTgwMDAwMCcsIDEwKSxcbiAgICAgIGNsZWFudXBJbnRlcnZhbE1zOiBwYXJzZUludChwcm9jZXNzLmVudi5TU0VfQ0xFQU5VUF9JTlRFUlZBTF9NUyB8fCAnMzAwMDAwJywgMTApLFxuICAgIH0sXG5cbiAgICBzZXJ2aWNlczoge1xuICAgICAgcGx1Z2luSG9zdDogcHJvY2Vzcy5lbnYuUExVR0lOX1NFUlZJQ0VfSE9TVCB8fCAncGx1Z2luJyxcbiAgICAgIHBsdWdpblBvcnQ6IHBhcnNlSW50KHByb2Nlc3MuZW52LlBMVUdJTl9TRVJWSUNFX1BPUlQgfHwgJzMwMDAnLCAxMCksXG4gICAgICBwaXBlbGluZUhvc3Q6IHByb2Nlc3MuZW52LlBJUEVMSU5FX1NFUlZJQ0VfSE9TVCB8fCAncGlwZWxpbmUnLFxuICAgICAgcGlwZWxpbmVQb3J0OiBwYXJzZUludChwcm9jZXNzLmVudi5QSVBFTElORV9TRVJWSUNFX1BPUlQgfHwgJzMwMDAnLCAxMCksXG4gICAgICBtZXNzYWdlSG9zdDogcHJvY2Vzcy5lbnYuTUVTU0FHRV9TRVJWSUNFX0hPU1QgfHwgJ21lc3NhZ2UnLFxuICAgICAgbWVzc2FnZVBvcnQ6IHBhcnNlSW50KHByb2Nlc3MuZW52Lk1FU1NBR0VfU0VSVklDRV9QT1JUIHx8ICczMDAwJywgMTApLFxuICAgICAgcGxhdGZvcm1Ib3N0OiBwcm9jZXNzLmVudi5QTEFURk9STV9TRVJWSUNFX0hPU1QgfHwgJ3BsYXRmb3JtJyxcbiAgICAgIHBsYXRmb3JtUG9ydDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUExBVEZPUk1fU0VSVklDRV9QT1JUIHx8ICczMDAwJywgMTApLFxuICAgICAgY29tcGxpYW5jZUhvc3Q6IHByb2Nlc3MuZW52LkNPTVBMSUFOQ0VfU0VSVklDRV9IT1NUIHx8ICdjb21wbGlhbmNlJyxcbiAgICAgIGNvbXBsaWFuY2VQb3J0OiBwYXJzZUludChwcm9jZXNzLmVudi5DT01QTElBTkNFX1NFUlZJQ0VfUE9SVCB8fCAnMzAwMCcsIDEwKSxcbiAgICAgIGJpbGxpbmdIb3N0OiBwcm9jZXNzLmVudi5CSUxMSU5HX1NFUlZJQ0VfSE9TVCB8fCAnYmlsbGluZycsXG4gICAgICBiaWxsaW5nUG9ydDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuQklMTElOR19TRVJWSUNFX1BPUlQgfHwgJzMwMDAnLCAxMCksXG4gICAgICBiaWxsaW5nVGltZW91dDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuQklMTElOR19TRVJWSUNFX1RJTUVPVVQgfHwgJzUwMDAnLCAxMCksXG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBMb2FkIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24gZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGVzOlxuICogLSBgSldUX0VYUElSRVNfSU5gIOKAlCBKV1QgbGlmZXRpbWUgaW4gc2Vjb25kcyAoZGVmYXVsdDogYDcyMDBgID0gMiBob3VycylcbiAqIC0gYEJDUllQVF9TQUxUX1JPVU5EU2Ag4oCUIGJjcnlwdCBzYWx0IHJvdW5kcyBmb3IgcGFzc3dvcmQgaGFzaGluZyAoZGVmYXVsdDogYDEyYClcbiAqIC0gYFJFRlJFU0hfVE9LRU5fRVhQSVJFU19JTmAg4oCUIFJlZnJlc2ggdG9rZW4gbGlmZXRpbWUgaW4gc2Vjb25kcyAoZGVmYXVsdDogYDI1OTIwMDBgID0gMzAgZGF5cylcbiAqXG4gKiBAcmV0dXJucyBBdXRoZW50aWNhdGlvbiBjb25maWd1cmF0aW9uIHdpdGggc2FmZSBkZWZhdWx0cyAoZW1wdHkgc3RyaW5ncyB3aGVuIGVudiB2YXJzIGFyZSB1bnNldCkuXG4gKiBDYWxsIHtAbGluayB2YWxpZGF0ZUF1dGhDb25maWd9IGF0IHNlcnZlciBzdGFydHVwIHRvIGVuZm9yY2UgcmVxdWlyZWQgc2VjcmV0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBdXRoQ29uZmlnKCk6IEF1dGhDb25maWcge1xuICByZXR1cm4ge1xuICAgIGp3dDoge1xuICAgICAgZXhwaXJlc0luOiBwYXJzZUludChwcm9jZXNzLmVudi5KV1RfRVhQSVJFU19JTiB8fCAnNzIwMCcsIDEwKSxcbiAgICAgIHNhbHRSb3VuZHM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkJDUllQVF9TQUxUX1JPVU5EUyB8fCAnMTInLCAxMCksXG4gICAgfSxcbiAgICByZWZyZXNoVG9rZW46IHtcbiAgICAgIGV4cGlyZXNJbjogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUkVGUkVTSF9UT0tFTl9FWFBJUkVTX0lOIHx8ICcyNTkyMDAwJywgMTApLFxuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogTG9hZCByYXRlIGxpbWl0aW5nIGNvbmZpZ3VyYXRpb24gZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGVzOlxuICogLSBgTElNSVRFUl9NQVhgIOKAlCBNYXggcmVxdWVzdHMgcGVyIHdpbmRvdyAoZGVmYXVsdDogYDEwMGApXG4gKiAtIGBMSU1JVEVSX1dJTkRPV01TYCDigJQgUmF0ZSBsaW1pdCB3aW5kb3cgaW4gbXMgKGRlZmF1bHQ6IGA5MDAwMDBgID0gMTUgbWludXRlcylcbiAqXG4gKiBAcmV0dXJucyBSYXRlIGxpbWl0IGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRSYXRlTGltaXRDb25maWcoKTogUmF0ZUxpbWl0Q29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBtYXg6IHBhcnNlSW50KHByb2Nlc3MuZW52LkxJTUlURVJfTUFYIHx8ICcxMDAnLCAxMCksXG4gICAgd2luZG93TXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkxJTUlURVJfV0lORE9XTVMgfHwgJzkwMDAwMCcsIDEwKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBzZXJ2ZXIgY29uZmlndXJhdGlvbiBhbmQgbG9nIHdhcm5pbmdzIGZvciBpbnNlY3VyZSBzZXR0aW5ncy5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gU2VydmVyIGNvbmZpZ3VyYXRpb24gdG8gdmFsaWRhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU2VydmVyQ29uZmlnKGNvbmZpZzogU2VydmVyQ29uZmlnKTogdm9pZCB7XG4gIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8vIENoZWNrIENPUlMgY29uZmlndXJhdGlvblxuICBjb25zdCBvcmlnaW4gPSBjb25maWcuY29ycy5vcmlnaW47XG4gIGNvbnN0IGlzV2lsZGNhcmQgPSBvcmlnaW4gPT09ICcqJyB8fCAoQXJyYXkuaXNBcnJheShvcmlnaW4pICYmIG9yaWdpbi5pbmNsdWRlcygnKicpKTtcbiAgaWYgKGlzV2lsZGNhcmQpIHtcbiAgICB3YXJuaW5ncy5wdXNoKCdDT1JTIG9yaWdpbiBzZXQgdG8gd2lsZGNhcmQgKCopIC0gY29uc2lkZXIgcmVzdHJpY3RpbmcgdG8gc3BlY2lmaWMgZG9tYWlucycpO1xuICB9XG4gIGlmIChpc1dpbGRjYXJkICYmIGNvbmZpZy5jb3JzLmNyZWRlbnRpYWxzKSB7XG4gICAgLy8gQnJvd3NlcnMgcmVqZWN0IHRoaXMgY29tYmluYXRpb24sIGJ1dCBpdCBpbmRpY2F0ZXMgYSBtaXNjb25maWd1cmF0aW9uXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1NFQ1VSSVRZIEVSUk9SOiBDT1JTX09SSUdJTj0qIHdpdGggQ09SU19DUkVERU5USUFMUz10cnVlIGlzIGFuIGludmFsaWQgYW5kIGluc2VjdXJlIGNvbmZpZ3VyYXRpb24uICcgK1xuICAgICAgJ1NldCBDT1JTX09SSUdJTiB0byBzcGVjaWZpYyBkb21haW5zIG9yIGRpc2FibGUgQ09SU19DUkVERU5USUFMUy4nLFxuICAgICk7XG4gIH1cblxuICAvLyBDaGVjayBwbGF0Zm9ybSBVUkwgdXNlcyBIVFRQU1xuICBpZiAoY29uZmlnLnBsYXRmb3JtVXJsLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSAmJlxuICAgICFjb25maWcucGxhdGZvcm1VcmwuaW5jbHVkZXMoJ2xvY2FsaG9zdCcpKSB7XG4gICAgd2FybmluZ3MucHVzaCgnUGxhdGZvcm0gVVJMIHVzZXMgSFRUUCBpbnN0ZWFkIG9mIEhUVFBTIC0gaW5zZWN1cmUgZm9yIHByb2R1Y3Rpb24nKTtcbiAgfVxuXG4gIC8vIERpc3BsYXkgd2FybmluZ3NcbiAgaWYgKHdhcm5pbmdzLmxlbmd0aCA+IDApIHtcbiAgICBsb2cud2FybignU2VydmVyIGNvbmZpZ3VyYXRpb24gd2FybmluZ3M6Jyk7XG4gICAgd2FybmluZ3MuZm9yRWFjaCh3YXJuaW5nID0+IGxvZy53YXJuKGAgIC0gJHt3YXJuaW5nfWApKTtcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24gKHRva2VuIGxpZmV0aW1lcykuXG4gKiBDYWxsIHRoaXMgYXQgc2VydmVyIHN0YXJ0dXAsIG5vdCBkdXJpbmcgQ0RLIHN5bnRoZXNpcy5cbiAqXG4gKiBObyBTRUNSRVQgaXMgdmFsaWRhdGVkIGFueSBtb3JlOiB0aGVyZSBpcyBub25lIGxlZnQuIFVzZXIgdG9rZW5zIGFyZSBFUzI1NlxuICogc2lnbmVkIGJ5IHBsYXRmb3JtICh3aG9zZSBzaWduaW5nIGtleSBpcyB2YWxpZGF0ZWQgYXQgcGxhdGZvcm0ncyBib290LCB3aGVyZVxuICogaXQgaXMgbG9hZGVkKSBhbmQgaW50ZXJuYWwgc2VydmljZSB0b2tlbnMgYXJlIEVTMjU2IHNpZ25lZCBwZXIgc2VydmljZSAoIzE0KSxcbiAqIHdob3NlIGtleSBhbmQgYnVuZGxlIGBjcmVhdGVBcHBgIHJlcXVpcmVzIGF0IHN0YXJ0dXAuXG4gKlxuICogQHBhcmFtIGNvbmZpZyAtIEF1dGggY29uZmlndXJhdGlvbiB0byB2YWxpZGF0ZVxuICogQHRocm93cyB7RXJyb3J9IElmIHRva2VuIGxpZmV0aW1lcyBhcmUgb3V0IG9mIHJhbmdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUF1dGhDb25maWcoY29uZmlnOiBBdXRoQ29uZmlnKTogdm9pZCB7XG4gIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3Qgd2FybmluZ3M6IHN0cmluZ1tdID0gW107XG5cbiAgLy8gQ2hlY2sgSldUIGV4cGlyYXRpb24gdGltZXNcbiAgaWYgKGNvbmZpZy5qd3QuZXhwaXJlc0luID4gODY0MDApIHtcbiAgICBlcnJvcnMucHVzaCgnSldUIGV4cGlyYXRpb24gbXVzdCBub3QgZXhjZWVkIDI0IGhvdXJzICg4NjQwMCBzZWNvbmRzKScpO1xuICB9IGVsc2UgaWYgKGNvbmZpZy5qd3QuZXhwaXJlc0luID4gNzIwMCkge1xuICAgIHdhcm5pbmdzLnB1c2goJ0pXVCBleHBpcmF0aW9uIHRpbWUgaXMgZ3JlYXRlciB0aGFuIDIgaG91cnMgLSBzaG9ydGVyIGV4cGlyYXRpb24gcmVjb21tZW5kZWQnKTtcbiAgfVxuXG4gIC8vIERpc3BsYXkgd2FybmluZ3NcbiAgaWYgKHdhcm5pbmdzLmxlbmd0aCA+IDApIHtcbiAgICBsb2cud2FybignQXV0aCBjb25maWd1cmF0aW9uIHdhcm5pbmdzOicpO1xuICAgIHdhcm5pbmdzLmZvckVhY2god2FybmluZyA9PiBsb2cud2FybihgICAtICR7d2FybmluZ31gKSk7XG4gIH1cblxuICAvLyBUaHJvdyBlcnJvcnNcbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEF1dGggY29uZmlndXJhdGlvbiB2YWxpZGF0aW9uIGZhaWxlZDpcXG4ke2Vycm9ycy5tYXAoZSA9PiBgICAtICR7ZX1gKS5qb2luKCdcXG4nKX1gLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvc2VydmVyLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHaEQsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBRTFDOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixPQUFPO1FBQ0wsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQzlDLElBQUksRUFBRTtZQUNKLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixLQUFLLE9BQU87WUFDckQsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVztnQkFDN0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3ZELENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLElBQUksYUFBYSxDQUFDLG9CQUFvQixDQUFDO1NBQzFFO1FBQ0QsVUFBVSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ3hELFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixJQUFJLGFBQWEsQ0FBQyxvQkFBb0I7UUFFaEYsVUFBVSxFQUFFO1lBQ1YsT0FBTyxFQUFF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QUEwQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNuRixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHsgQ29yZUNvbnN0YW50cyB9IGZyb20gJy4vYXBwLWNvbmZpZy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNlcnZlckNvbmZpZywgQXV0aENvbmZpZywgUmF0ZUxpbWl0Q29uZmlnIH0gZnJvbSAnLi9jb25maWctdHlwZXMuanMnO1xuXG5jb25zdCBsb2cgPSBjcmVhdGVMb2dnZXIoJ3NlcnZlci1jb25maWcnKTtcblxuLyoqXG4gKiBMb2FkIHNlcnZlciBjb25maWd1cmF0aW9uIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICpcbiAqIEVudmlyb25tZW50IHZhcmlhYmxlczpcbiAqIC0gYFBPUlRgIOKAlCBIVFRQIGxpc3RlbiBwb3J0IChkZWZhdWx0OiBgMzAwMGApXG4gKiAtIGBDT1JTX09SSUdJTmAg4oCUIENvbW1hLXNlcGFyYXRlZCBhbGxvd2VkIG9yaWdpbnMgKGRlZmF1bHQ6IGBQTEFURk9STV9CQVNFX1VSTGApXG4gKiAtIGBDT1JTX0NSRURFTlRJQUxTYCDigJQgQWxsb3cgY3JlZGVudGlhbHM7IHNldCB0byBgJ2ZhbHNlJ2AgdG8gZGlzYWJsZSAoZGVmYXVsdDogYHRydWVgKVxuICogLSBgVFJVU1RfUFJPWFlgIOKAlCBFeHByZXNzIHRydXN0IHByb3h5IGhvcHMgKGRlZmF1bHQ6IGAxYClcbiAqIC0gYFBMQVRGT1JNX0JBU0VfVVJMYCDigJQgRnJvbnRlbmQgVVJMIHVzZWQgYXMgQ09SUyBmYWxsYmFjayAoZGVmYXVsdDogYCdodHRwczovL2xvY2FsaG9zdDo4NDQzJ2ApXG4gKlxuICogQHJldHVybnMgU2VydmVyIGNvbmZpZ3VyYXRpb24gd2l0aCBwb3J0LCBDT1JTLCB0cnVzdCBwcm94eSwgYW5kIHBsYXRmb3JtIFVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZFNlcnZlckNvbmZpZygpOiBTZXJ2ZXJDb25maWcge1xuICByZXR1cm4ge1xuICAgIHBvcnQ6IHBhcnNlSW50KHByb2Nlc3MuZW52LlBPUlQgfHwgJzMwMDAnLCAxMCksXG4gICAgY29yczoge1xuICAgICAgY3JlZGVudGlhbHM6IHByb2Nlc3MuZW52LkNPUlNfQ1JFREVOVElBTFMgIT09ICdmYWxzZScsXG4gICAgICBvcmlnaW46IHByb2Nlc3MuZW52LkNPUlNfT1JJR0lOXG4gICAgICAgID8gcHJvY2Vzcy5lbnYuQ09SU19PUklHSU4uc3BsaXQoJywnKS5tYXAobyA9PiBvLnRyaW0oKSlcbiAgICAgICAgOiBbcHJvY2Vzcy5lbnYuUExBVEZPUk1fQkFTRV9VUkwgfHwgQ29yZUNvbnN0YW50cy5ERUZBVUxUX1BMQVRGT1JNX1VSTF0sXG4gICAgfSxcbiAgICB0cnVzdFByb3h5OiBwYXJzZUludChwcm9jZXNzLmVudi5UUlVTVF9QUk9YWSB8fCAnMScsIDEwKSxcbiAgICBwbGF0Zm9ybVVybDogcHJvY2Vzcy5lbnYuUExBVEZPUk1fQkFTRV9VUkwgfHwgQ29yZUNvbnN0YW50cy5ERUZBVUxUX1BMQVRGT1JNX1VSTCxcblxuICAgIGh0dHBDbGllbnQ6IHtcbiAgICAgIHRpbWVvdXQ6IHBhcnNlSW50KHByb2Nlc3MuZW52LkhUVFBfQ0xJRU5UX1RJTUVPVVQgfHwgJzUwMDAnLCAxMCksXG4gICAgICBtYXhSZXRyaWVzOiBwYXJzZUludChwcm9jZXNzLmVudi5IVFRQX0NMSUVOVF9NQVhfUkVUUklFUyB8fCAnMicsIDEwKSxcbiAgICAgIHJldHJ5RGVsYXlNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuSFRUUF9DTElFTlRfUkVUUllfREVMQVlfTVMgfHwgJzIwMCcsIDEwKSxcbiAgICB9LFxuXG4gICAgc3NlOiB7XG4gICAgICBtYXhDbGllbnRzUGVyUmVxdWVzdDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuU1NFX01BWF9DTElFTlRTX1BFUl9SRVFVRVNUIHx8ICcxMCcsIDEwKSxcbiAgICAgIGNsaWVudFRpbWVvdXRNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuU1NFX0NMSUVOVF9USU1FT1VUX01TIHx8ICcxODAwMDAwJywgMTApLFxuICAgICAgY2xlYW51cEludGVydmFsTXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LlNTRV9DTEVBTlVQX0lOVEVSVkFMX01TIHx8ICczMDAwMDAnLCAxMCksXG4gICAgfSxcblxuICAgIHNlcnZpY2VzOiB7XG4gICAgICBwbHVnaW5Ib3N0OiBwcm9jZXNzLmVudi5QTFVHSU5fU0VSVklDRV9IT1NUIHx8ICdwbHVnaW4nLFxuICAgICAgcGx1Z2luUG9ydDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUExVR0lOX1NFUlZJQ0VfUE9SVCB8fCAnMzAwMCcsIDEwKSxcbiAgICAgIHBpcGVsaW5lSG9zdDogcHJvY2Vzcy5lbnYuUElQRUxJTkVfU0VSVklDRV9IT1NUIHx8ICdwaXBlbGluZScsXG4gICAgICBwaXBlbGluZVBvcnQ6IHBhcnNlSW50KHByb2Nlc3MuZW52LlBJUEVMSU5FX1NFUlZJQ0VfUE9SVCB8fCAnMzAwMCcsIDEwKSxcbiAgICAgIG1lc3NhZ2VIb3N0OiBwcm9jZXNzLmVudi5NRVNTQUdFX1NFUlZJQ0VfSE9TVCB8fCAnbWVzc2FnZScsXG4gICAgICBtZXNzYWdlUG9ydDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuTUVTU0FHRV9TRVJWSUNFX1BPUlQgfHwgJzMwMDAnLCAxMCksXG4gICAgICBwbGF0Zm9ybUhvc3Q6IHByb2Nlc3MuZW52LlBMQVRGT1JNX1NFUlZJQ0VfSE9TVCB8fCAncGxhdGZvcm0nLFxuICAgICAgcGxhdGZvcm1Qb3J0OiBwYXJzZUludChwcm9jZXNzLmVudi5QTEFURk9STV9TRVJWSUNFX1BPUlQgfHwgJzMwMDAnLCAxMCksXG4gICAgICBjb21wbGlhbmNlSG9zdDogcHJvY2Vzcy5lbnYuQ09NUExJQU5DRV9TRVJWSUNFX0hPU1QgfHwgJ2NvbXBsaWFuY2UnLFxuICAgICAgY29tcGxpYW5jZVBvcnQ6IHBhcnNlSW50KHByb2Nlc3MuZW52LkNPTVBMSUFOQ0VfU0VSVklDRV9QT1JUIHx8ICczMDAwJywgMTApLFxuICAgICAgYmlsbGluZ0hvc3Q6IHByb2Nlc3MuZW52LkJJTExJTkdfU0VSVklDRV9IT1NUIHx8ICdiaWxsaW5nJyxcbiAgICAgIGJpbGxpbmdQb3J0OiBwYXJzZUludChwcm9jZXNzLmVudi5CSUxMSU5HX1NFUlZJQ0VfUE9SVCB8fCAnMzAwMCcsIDEwKSxcbiAgICAgIGJpbGxpbmdUaW1lb3V0OiBwYXJzZUludChwcm9jZXNzLmVudi5CSUxMSU5HX1NFUlZJQ0VfVElNRU9VVCB8fCAnNTAwMCcsIDEwKSxcbiAgICAgIGltYWdlUmVnaXN0cnlIb3N0OiBwcm9jZXNzLmVudi5JTUFHRV9SRUdJU1RSWV9TRVJWSUNFX0hPU1QgfHwgJ2ltYWdlLXJlZ2lzdHJ5JyxcbiAgICAgIGltYWdlUmVnaXN0cnlQb3J0OiBwYXJzZUludChwcm9jZXNzLmVudi5JTUFHRV9SRUdJU1RSWV9TRVJWSUNFX1BPUlQgfHwgJzMwMDAnLCAxMCksXG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBMb2FkIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24gZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGVzOlxuICogLSBgSldUX0VYUElSRVNfSU5gIOKAlCBKV1QgbGlmZXRpbWUgaW4gc2Vjb25kcyAoZGVmYXVsdDogYDcyMDBgID0gMiBob3VycylcbiAqIC0gYEJDUllQVF9TQUxUX1JPVU5EU2Ag4oCUIGJjcnlwdCBzYWx0IHJvdW5kcyBmb3IgcGFzc3dvcmQgaGFzaGluZyAoZGVmYXVsdDogYDEyYClcbiAqIC0gYFJFRlJFU0hfVE9LRU5fRVhQSVJFU19JTmAg4oCUIFJlZnJlc2ggdG9rZW4gbGlmZXRpbWUgaW4gc2Vjb25kcyAoZGVmYXVsdDogYDI1OTIwMDBgID0gMzAgZGF5cylcbiAqXG4gKiBAcmV0dXJucyBBdXRoZW50aWNhdGlvbiBjb25maWd1cmF0aW9uIHdpdGggc2FmZSBkZWZhdWx0cyAoZW1wdHkgc3RyaW5ncyB3aGVuIGVudiB2YXJzIGFyZSB1bnNldCkuXG4gKiBDYWxsIHtAbGluayB2YWxpZGF0ZUF1dGhDb25maWd9IGF0IHNlcnZlciBzdGFydHVwIHRvIGVuZm9yY2UgcmVxdWlyZWQgc2VjcmV0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBdXRoQ29uZmlnKCk6IEF1dGhDb25maWcge1xuICByZXR1cm4ge1xuICAgIGp3dDoge1xuICAgICAgZXhwaXJlc0luOiBwYXJzZUludChwcm9jZXNzLmVudi5KV1RfRVhQSVJFU19JTiB8fCAnNzIwMCcsIDEwKSxcbiAgICAgIHNhbHRSb3VuZHM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkJDUllQVF9TQUxUX1JPVU5EUyB8fCAnMTInLCAxMCksXG4gICAgfSxcbiAgICByZWZyZXNoVG9rZW46IHtcbiAgICAgIGV4cGlyZXNJbjogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUkVGUkVTSF9UT0tFTl9FWFBJUkVTX0lOIHx8ICcyNTkyMDAwJywgMTApLFxuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogTG9hZCByYXRlIGxpbWl0aW5nIGNvbmZpZ3VyYXRpb24gZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGVzOlxuICogLSBgTElNSVRFUl9NQVhgIOKAlCBNYXggcmVxdWVzdHMgcGVyIHdpbmRvdyAoZGVmYXVsdDogYDEwMGApXG4gKiAtIGBMSU1JVEVSX1dJTkRPV01TYCDigJQgUmF0ZSBsaW1pdCB3aW5kb3cgaW4gbXMgKGRlZmF1bHQ6IGA5MDAwMDBgID0gMTUgbWludXRlcylcbiAqXG4gKiBAcmV0dXJucyBSYXRlIGxpbWl0IGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRSYXRlTGltaXRDb25maWcoKTogUmF0ZUxpbWl0Q29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBtYXg6IHBhcnNlSW50KHByb2Nlc3MuZW52LkxJTUlURVJfTUFYIHx8ICcxMDAnLCAxMCksXG4gICAgd2luZG93TXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkxJTUlURVJfV0lORE9XTVMgfHwgJzkwMDAwMCcsIDEwKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBzZXJ2ZXIgY29uZmlndXJhdGlvbiBhbmQgbG9nIHdhcm5pbmdzIGZvciBpbnNlY3VyZSBzZXR0aW5ncy5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gU2VydmVyIGNvbmZpZ3VyYXRpb24gdG8gdmFsaWRhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU2VydmVyQ29uZmlnKGNvbmZpZzogU2VydmVyQ29uZmlnKTogdm9pZCB7XG4gIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8vIENoZWNrIENPUlMgY29uZmlndXJhdGlvblxuICBjb25zdCBvcmlnaW4gPSBjb25maWcuY29ycy5vcmlnaW47XG4gIGNvbnN0IGlzV2lsZGNhcmQgPSBvcmlnaW4gPT09ICcqJyB8fCAoQXJyYXkuaXNBcnJheShvcmlnaW4pICYmIG9yaWdpbi5pbmNsdWRlcygnKicpKTtcbiAgaWYgKGlzV2lsZGNhcmQpIHtcbiAgICB3YXJuaW5ncy5wdXNoKCdDT1JTIG9yaWdpbiBzZXQgdG8gd2lsZGNhcmQgKCopIC0gY29uc2lkZXIgcmVzdHJpY3RpbmcgdG8gc3BlY2lmaWMgZG9tYWlucycpO1xuICB9XG4gIGlmIChpc1dpbGRjYXJkICYmIGNvbmZpZy5jb3JzLmNyZWRlbnRpYWxzKSB7XG4gICAgLy8gQnJvd3NlcnMgcmVqZWN0IHRoaXMgY29tYmluYXRpb24sIGJ1dCBpdCBpbmRpY2F0ZXMgYSBtaXNjb25maWd1cmF0aW9uXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1NFQ1VSSVRZIEVSUk9SOiBDT1JTX09SSUdJTj0qIHdpdGggQ09SU19DUkVERU5USUFMUz10cnVlIGlzIGFuIGludmFsaWQgYW5kIGluc2VjdXJlIGNvbmZpZ3VyYXRpb24uICcgK1xuICAgICAgJ1NldCBDT1JTX09SSUdJTiB0byBzcGVjaWZpYyBkb21haW5zIG9yIGRpc2FibGUgQ09SU19DUkVERU5USUFMUy4nLFxuICAgICk7XG4gIH1cblxuICAvLyBDaGVjayBwbGF0Zm9ybSBVUkwgdXNlcyBIVFRQU1xuICBpZiAoY29uZmlnLnBsYXRmb3JtVXJsLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSAmJlxuICAgICFjb25maWcucGxhdGZvcm1VcmwuaW5jbHVkZXMoJ2xvY2FsaG9zdCcpKSB7XG4gICAgd2FybmluZ3MucHVzaCgnUGxhdGZvcm0gVVJMIHVzZXMgSFRUUCBpbnN0ZWFkIG9mIEhUVFBTIC0gaW5zZWN1cmUgZm9yIHByb2R1Y3Rpb24nKTtcbiAgfVxuXG4gIC8vIERpc3BsYXkgd2FybmluZ3NcbiAgaWYgKHdhcm5pbmdzLmxlbmd0aCA+IDApIHtcbiAgICBsb2cud2FybignU2VydmVyIGNvbmZpZ3VyYXRpb24gd2FybmluZ3M6Jyk7XG4gICAgd2FybmluZ3MuZm9yRWFjaCh3YXJuaW5nID0+IGxvZy53YXJuKGAgIC0gJHt3YXJuaW5nfWApKTtcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24gKHRva2VuIGxpZmV0aW1lcykuXG4gKiBDYWxsIHRoaXMgYXQgc2VydmVyIHN0YXJ0dXAsIG5vdCBkdXJpbmcgQ0RLIHN5bnRoZXNpcy5cbiAqXG4gKiBObyBTRUNSRVQgaXMgdmFsaWRhdGVkIGFueSBtb3JlOiB0aGVyZSBpcyBub25lIGxlZnQuIFVzZXIgdG9rZW5zIGFyZSBFUzI1NlxuICogc2lnbmVkIGJ5IHBsYXRmb3JtICh3aG9zZSBzaWduaW5nIGtleSBpcyB2YWxpZGF0ZWQgYXQgcGxhdGZvcm0ncyBib290LCB3aGVyZVxuICogaXQgaXMgbG9hZGVkKSBhbmQgaW50ZXJuYWwgc2VydmljZSB0b2tlbnMgYXJlIEVTMjU2IHNpZ25lZCBwZXIgc2VydmljZSAoIzE0KSxcbiAqIHdob3NlIGtleSBhbmQgYnVuZGxlIGBjcmVhdGVBcHBgIHJlcXVpcmVzIGF0IHN0YXJ0dXAuXG4gKlxuICogQHBhcmFtIGNvbmZpZyAtIEF1dGggY29uZmlndXJhdGlvbiB0byB2YWxpZGF0ZVxuICogQHRocm93cyB7RXJyb3J9IElmIHRva2VuIGxpZmV0aW1lcyBhcmUgb3V0IG9mIHJhbmdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUF1dGhDb25maWcoY29uZmlnOiBBdXRoQ29uZmlnKTogdm9pZCB7XG4gIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3Qgd2FybmluZ3M6IHN0cmluZ1tdID0gW107XG5cbiAgLy8gQ2hlY2sgSldUIGV4cGlyYXRpb24gdGltZXNcbiAgaWYgKGNvbmZpZy5qd3QuZXhwaXJlc0luID4gODY0MDApIHtcbiAgICBlcnJvcnMucHVzaCgnSldUIGV4cGlyYXRpb24gbXVzdCBub3QgZXhjZWVkIDI0IGhvdXJzICg4NjQwMCBzZWNvbmRzKScpO1xuICB9IGVsc2UgaWYgKGNvbmZpZy5qd3QuZXhwaXJlc0luID4gNzIwMCkge1xuICAgIHdhcm5pbmdzLnB1c2goJ0pXVCBleHBpcmF0aW9uIHRpbWUgaXMgZ3JlYXRlciB0aGFuIDIgaG91cnMgLSBzaG9ydGVyIGV4cGlyYXRpb24gcmVjb21tZW5kZWQnKTtcbiAgfVxuXG4gIC8vIERpc3BsYXkgd2FybmluZ3NcbiAgaWYgKHdhcm5pbmdzLmxlbmd0aCA+IDApIHtcbiAgICBsb2cud2FybignQXV0aCBjb25maWd1cmF0aW9uIHdhcm5pbmdzOicpO1xuICAgIHdhcm5pbmdzLmZvckVhY2god2FybmluZyA9PiBsb2cud2FybihgICAtICR7d2FybmluZ31gKSk7XG4gIH1cblxuICAvLyBUaHJvdyBlcnJvcnNcbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEF1dGggY29uZmlndXJhdGlvbiB2YWxpZGF0aW9uIGZhaWxlZDpcXG4ke2Vycm9ycy5tYXAoZSA9PiBgICAtICR7ZX1gKS5qb2luKCdcXG4nKX1gLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -6,6 +6,23 @@ export interface ArtifactKey {
|
|
|
6
6
|
readonly pluginAlias: string;
|
|
7
7
|
readonly outputDirectory: string;
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* The plugin-alias SEGMENT of an artifact key: the explicit alias, or
|
|
11
|
+
* `${name}-alias` when there is none. THE rule — the frontend's artifact picker
|
|
12
|
+
* (`frontend/src/lib/artifact-keys.ts`), the CLI's pre-resolver and
|
|
13
|
+
* `PluginLookup.normalize` all build keys this way.
|
|
14
|
+
*
|
|
15
|
+
* The two places that REGISTER keys used to disagree with it, in opposite
|
|
16
|
+
* directions: stage steps registered the bare name (`nodejs-build`, no suffix)
|
|
17
|
+
* and the synth step suffixed an explicit alias (`my-synth-alias`). Any step
|
|
18
|
+
* whose input artifact was picked in the UI then failed synth with "No artifact
|
|
19
|
+
* registered", because the key it asked for was never the key that had been
|
|
20
|
+
* stored.
|
|
21
|
+
*/
|
|
22
|
+
export declare function pluginArtifactAlias(plugin: {
|
|
23
|
+
name: string;
|
|
24
|
+
alias?: string;
|
|
25
|
+
}): string;
|
|
9
26
|
/**
|
|
10
27
|
* Manages build step artifacts with hierarchical key-based lookup.
|
|
11
28
|
* Keys follow the pattern: stageName:stageAlias:pluginName:pluginAlias:outputDirectory
|
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import { CodeBuildStep, FileSet, ShellStep } from 'aws-cdk-lib/pipelines';
|
|
4
|
+
/**
|
|
5
|
+
* The plugin-alias SEGMENT of an artifact key: the explicit alias, or
|
|
6
|
+
* `${name}-alias` when there is none. THE rule — the frontend's artifact picker
|
|
7
|
+
* (`frontend/src/lib/artifact-keys.ts`), the CLI's pre-resolver and
|
|
8
|
+
* `PluginLookup.normalize` all build keys this way.
|
|
9
|
+
*
|
|
10
|
+
* The two places that REGISTER keys used to disagree with it, in opposite
|
|
11
|
+
* directions: stage steps registered the bare name (`nodejs-build`, no suffix)
|
|
12
|
+
* and the synth step suffixed an explicit alias (`my-synth-alias`). Any step
|
|
13
|
+
* whose input artifact was picked in the UI then failed synth with "No artifact
|
|
14
|
+
* registered", because the key it asked for was never the key that had been
|
|
15
|
+
* stored.
|
|
16
|
+
*/
|
|
17
|
+
export function pluginArtifactAlias(plugin) {
|
|
18
|
+
return plugin.alias || `${plugin.name}-alias`;
|
|
19
|
+
}
|
|
4
20
|
/**
|
|
5
21
|
* Manages build step artifacts with hierarchical key-based lookup.
|
|
6
22
|
* Keys follow the pattern: stageName:stageAlias:pluginName:pluginAlias:outputDirectory
|
|
@@ -80,4 +96,4 @@ export class ArtifactManager {
|
|
|
80
96
|
return Array.from(this.artifacts.keys());
|
|
81
97
|
}
|
|
82
98
|
}
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWZhY3QtbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL2FydGlmYWN0LW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQVUxRTs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsTUFBd0M7SUFDMUUsT0FBTyxNQUFNLENBQUMsS0FBSyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDO0FBQ2hELENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUNULFNBQVMsR0FBMkMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUUvRTs7T0FFRztJQUNLLFdBQVcsQ0FBQyxHQUFnQjtRQUNsQyxPQUFPLEdBQUcsR0FBRyxDQUFDLFNBQVMsSUFBSSxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDLFdBQVcsSUFBSSxHQUFHLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDMUcsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxHQUFHLENBQUMsR0FBZ0IsRUFBRSxJQUErQjtRQUNuRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsR0FBRyxDQUFDLEdBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFNBQVMsQ0FBQyxHQUFnQjtRQUN4QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDbEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxVQUFVLHlCQUF5QixDQUFDLENBQUM7UUFDcEUsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsU0FBUyxDQUFDLEdBQWdCLEVBQUUsU0FBaUI7UUFDM0MsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7T0FFRztJQUNLLE9BQU8sQ0FBQyxHQUFnQjtRQUM5QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMvQixNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsMkJBQTJCLENBQUM7WUFDakgsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3hGLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJO1FBQ0YsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgQ29kZUJ1aWxkU3RlcCwgRmlsZVNldCwgU2hlbGxTdGVwIH0gZnJvbSAnYXdzLWNkay1saWIvcGlwZWxpbmVzJztcblxuZXhwb3J0IGludGVyZmFjZSBBcnRpZmFjdEtleSB7XG4gIHJlYWRvbmx5IHN0YWdlTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBzdGFnZUFsaWFzOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBsdWdpbk5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcGx1Z2luQWxpYXM6IHN0cmluZztcbiAgcmVhZG9ubHkgb3V0cHV0RGlyZWN0b3J5OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIHBsdWdpbi1hbGlhcyBTRUdNRU5UIG9mIGFuIGFydGlmYWN0IGtleTogdGhlIGV4cGxpY2l0IGFsaWFzLCBvclxuICogYCR7bmFtZX0tYWxpYXNgIHdoZW4gdGhlcmUgaXMgbm9uZS4gVEhFIHJ1bGUg4oCUIHRoZSBmcm9udGVuZCdzIGFydGlmYWN0IHBpY2tlclxuICogKGBmcm9udGVuZC9zcmMvbGliL2FydGlmYWN0LWtleXMudHNgKSwgdGhlIENMSSdzIHByZS1yZXNvbHZlciBhbmRcbiAqIGBQbHVnaW5Mb29rdXAubm9ybWFsaXplYCBhbGwgYnVpbGQga2V5cyB0aGlzIHdheS5cbiAqXG4gKiBUaGUgdHdvIHBsYWNlcyB0aGF0IFJFR0lTVEVSIGtleXMgdXNlZCB0byBkaXNhZ3JlZSB3aXRoIGl0LCBpbiBvcHBvc2l0ZVxuICogZGlyZWN0aW9uczogc3RhZ2Ugc3RlcHMgcmVnaXN0ZXJlZCB0aGUgYmFyZSBuYW1lIChgbm9kZWpzLWJ1aWxkYCwgbm8gc3VmZml4KVxuICogYW5kIHRoZSBzeW50aCBzdGVwIHN1ZmZpeGVkIGFuIGV4cGxpY2l0IGFsaWFzIChgbXktc3ludGgtYWxpYXNgKS4gQW55IHN0ZXBcbiAqIHdob3NlIGlucHV0IGFydGlmYWN0IHdhcyBwaWNrZWQgaW4gdGhlIFVJIHRoZW4gZmFpbGVkIHN5bnRoIHdpdGggXCJObyBhcnRpZmFjdFxuICogcmVnaXN0ZXJlZFwiLCBiZWNhdXNlIHRoZSBrZXkgaXQgYXNrZWQgZm9yIHdhcyBuZXZlciB0aGUga2V5IHRoYXQgaGFkIGJlZW5cbiAqIHN0b3JlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBsdWdpbkFydGlmYWN0QWxpYXMocGx1Z2luOiB7IG5hbWU6IHN0cmluZzsgYWxpYXM/OiBzdHJpbmcgfSk6IHN0cmluZyB7XG4gIHJldHVybiBwbHVnaW4uYWxpYXMgfHwgYCR7cGx1Z2luLm5hbWV9LWFsaWFzYDtcbn1cblxuLyoqXG4gKiBNYW5hZ2VzIGJ1aWxkIHN0ZXAgYXJ0aWZhY3RzIHdpdGggaGllcmFyY2hpY2FsIGtleS1iYXNlZCBsb29rdXAuXG4gKiBLZXlzIGZvbGxvdyB0aGUgcGF0dGVybjogc3RhZ2VOYW1lOnN0YWdlQWxpYXM6cGx1Z2luTmFtZTpwbHVnaW5BbGlhczpvdXRwdXREaXJlY3RvcnlcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gU3ludGggc3RlcDogXCJuby1zdGFnZTpuby1zdGFnZS1hbGlhczpjZGstc3ludGg6Y2RrLXN5bnRoLWFsaWFzOmNkay5vdXRcIlxuICogLy8gQnVpbGQgc3RlcDogXCJidWlsZDpidWlsZC1hbGlhczpub2RlanMtYnVpbGQ6bm9kZWpzLWJ1aWxkLWFsaWFzOmRpc3RcIlxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBBcnRpZmFjdE1hbmFnZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGFydGlmYWN0czogTWFwPHN0cmluZywgQ29kZUJ1aWxkU3RlcCB8IFNoZWxsU3RlcD4gPSBuZXcgTWFwKCk7XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIGEga2V5IHN0cmluZyBmcm9tIGFydGlmYWN0IHBhcmFtZXRlcnNcbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVLZXkoa2V5OiBBcnRpZmFjdEtleSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke2tleS5zdGFnZU5hbWV9OiR7a2V5LnN0YWdlQWxpYXN9OiR7a2V5LnBsdWdpbk5hbWV9OiR7a2V5LnBsdWdpbkFsaWFzfToke2tleS5vdXRwdXREaXJlY3Rvcnl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIGJ1aWxkIHN0ZXAgYXJ0aWZhY3RcbiAgICogQHBhcmFtIGtleSAtIFRoZSBoaWVyYXJjaGljYWwga2V5IGlkZW50aWZ5aW5nIHRoaXMgYXJ0aWZhY3QgKGluY2x1ZGVzIG91dHB1dCBkaXJlY3RvcnkpXG4gICAqIEBwYXJhbSBzdGVwIC0gVGhlIENvZGVCdWlsZFN0ZXAgb3IgU2hlbGxTdGVwIHRvIHN0b3JlXG4gICAqL1xuICBhZGQoa2V5OiBBcnRpZmFjdEtleSwgc3RlcDogQ29kZUJ1aWxkU3RlcCB8IFNoZWxsU3RlcCk6IHZvaWQge1xuICAgIHRoaXMuYXJ0aWZhY3RzLnNldCh0aGlzLmdlbmVyYXRlS2V5KGtleSksIHN0ZXApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIGJ1aWxkIHN0ZXAgYnkgaXRzIGFydGlmYWN0IGtleVxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIGhpZXJhcmNoaWNhbCBrZXkgaWRlbnRpZnlpbmcgdGhlIGFydGlmYWN0XG4gICAqIEByZXR1cm5zIFRoZSBzdG9yZWQgc3RlcCwgb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZFxuICAgKi9cbiAgZ2V0KGtleTogQXJ0aWZhY3RLZXkpOiBDb2RlQnVpbGRTdGVwIHwgU2hlbGxTdGVwIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5hcnRpZmFjdHMuZ2V0KHRoaXMuZ2VuZXJhdGVLZXkoa2V5KSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBwcmltYXJ5IG91dHB1dCBGaWxlU2V0IGZyb20gYSByZWdpc3RlcmVkIHN0ZXAuXG4gICAqIEBwYXJhbSBrZXkgLSBUaGUgYXJ0aWZhY3Qga2V5IGlkZW50aWZ5aW5nIHRoZSBzdGVwXG4gICAqIEByZXR1cm5zIFRoZSBwcmltYXJ5IG91dHB1dCBGaWxlU2V0XG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIHN0ZXAgaXMgbm90IGZvdW5kIG9yIGhhcyBubyBwcmltYXJ5IG91dHB1dFxuICAgKi9cbiAgZ2V0T3V0cHV0KGtleTogQXJ0aWZhY3RLZXkpOiBGaWxlU2V0IHtcbiAgICBjb25zdCBzdGVwID0gdGhpcy5yZXF1aXJlKGtleSk7XG4gICAgY29uc3Qgb3V0cHV0ID0gc3RlcC5wcmltYXJ5T3V0cHV0O1xuICAgIGlmICghb3V0cHV0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFN0ZXAgJyR7a2V5LnBsdWdpbk5hbWV9JyBoYXMgbm8gcHJpbWFyeSBvdXRwdXRgKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhbiBhZGRpdGlvbmFsIG91dHB1dCBkaXJlY3Rvcnkgb24gYSBzdG9yZWQgc3RlcCBhbmQgcmV0dXJuIGl0cyBGaWxlU2V0LlxuICAgKiBDYWxscyBDREsncyBhZGRPdXRwdXREaXJlY3RvcnkoKSB0byBjcmVhdGUgYSBuYW1lZCBvdXRwdXQgYmV5b25kIHRoZSBwcmltYXJ5LlxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIGFydGlmYWN0IGtleSBpZGVudGlmeWluZyB0aGUgc3RlcFxuICAgKiBAcGFyYW0gZGlyZWN0b3J5IC0gVGhlIGFkZGl0aW9uYWwgb3V0cHV0IGRpcmVjdG9yeSBwYXRoIHRvIHJlZ2lzdGVyXG4gICAqIEByZXR1cm5zIFRoZSBGaWxlU2V0IGZvciB0aGUgYWRkaXRpb25hbCBvdXRwdXQgZGlyZWN0b3J5XG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIHN0ZXAgaXMgbm90IGZvdW5kXG4gICAqL1xuICBhZGRPdXRwdXQoa2V5OiBBcnRpZmFjdEtleSwgZGlyZWN0b3J5OiBzdHJpbmcpOiBGaWxlU2V0IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1aXJlKGtleSkuYWRkT3V0cHV0RGlyZWN0b3J5KGRpcmVjdG9yeSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgc3RlcCBieSBrZXkgb3IgdGhyb3cgd2l0aCBhIGhlbHBmdWwgZXJyb3IgbGlzdGluZyBhdmFpbGFibGUgYXJ0aWZhY3RzLlxuICAgKi9cbiAgcHJpdmF0ZSByZXF1aXJlKGtleTogQXJ0aWZhY3RLZXkpOiBDb2RlQnVpbGRTdGVwIHwgU2hlbGxTdGVwIHtcbiAgICBjb25zdCBzdGVwID0gdGhpcy5nZXQoa2V5KTtcbiAgICBpZiAoIXN0ZXApIHtcbiAgICAgIGNvbnN0IHJlZ2lzdGVyZWQgPSB0aGlzLmxpc3QoKTtcbiAgICAgIGNvbnN0IGF2YWlsYWJsZSA9IHJlZ2lzdGVyZWQubGVuZ3RoID4gMCA/IGAgQXZhaWxhYmxlOiBbJHtyZWdpc3RlcmVkLmpvaW4oJywgJyl9XWAgOiAnIE5vIGFydGlmYWN0cyByZWdpc3RlcmVkLic7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGFydGlmYWN0IHJlZ2lzdGVyZWQgZm9yIFwiJHt0aGlzLmdlbmVyYXRlS2V5KGtleSl9XCIuJHthdmFpbGFibGV9YCk7XG4gICAgfVxuICAgIHJldHVybiBzdGVwO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3QgYWxsIGFydGlmYWN0IGtleXNcbiAgICogQHJldHVybnMgQXJyYXkgb2YgYWxsIHN0b3JlZCBhcnRpZmFjdCBrZXkgc3RyaW5nc1xuICAgKi9cbiAgbGlzdCgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5hcnRpZmFjdHMua2V5cygpKTtcbiAgfVxufVxuIl19
|
|
@@ -4,6 +4,13 @@ import type { NetworkConfig } from './network-types.js';
|
|
|
4
4
|
import type { MetaDataType } from './pipeline-types.js';
|
|
5
5
|
import type { RoleConfig } from './role-types.js';
|
|
6
6
|
import type { SecurityGroupConfig } from './security-group-types.js';
|
|
7
|
+
/**
|
|
8
|
+
* THE way to read a boolean metadata value. `MetaDataType` admits strings, and
|
|
9
|
+
* pipeline.json / API / CLI bodies routinely carry `"false"`, which plain
|
|
10
|
+
* truthiness reads as enabled. Exported so every boolean key goes through it —
|
|
11
|
+
* two in pipeline-builder didn't, and `"false"` switched them ON.
|
|
12
|
+
*/
|
|
13
|
+
export declare function isTrue(value: unknown): boolean;
|
|
7
14
|
/** Extract CDK construct config from metadata for a given namespace. */
|
|
8
15
|
export declare function buildConfigFromMetadata(metadata: MetaDataType, namespace: string): Record<string, unknown>;
|
|
9
16
|
/** Extract CodePipeline config from metadata. */
|
|
@@ -32,7 +32,13 @@ const EMPTY_KEY_CONFIG = { booleanKeys: [], passthroughKeys: [] };
|
|
|
32
32
|
function getCustomKey(prefix, key) {
|
|
33
33
|
return `${CDK_METADATA_PREFIX}${prefix}:${key}`.toLowerCase();
|
|
34
34
|
}
|
|
35
|
-
|
|
35
|
+
/**
|
|
36
|
+
* THE way to read a boolean metadata value. `MetaDataType` admits strings, and
|
|
37
|
+
* pipeline.json / API / CLI bodies routinely carry `"false"`, which plain
|
|
38
|
+
* truthiness reads as enabled. Exported so every boolean key goes through it —
|
|
39
|
+
* two in pipeline-builder didn't, and `"false"` switched them ON.
|
|
40
|
+
*/
|
|
41
|
+
export function isTrue(value) {
|
|
36
42
|
if (typeof value === 'boolean')
|
|
37
43
|
return value;
|
|
38
44
|
if (typeof value === 'string')
|
|
@@ -275,4 +281,4 @@ export function parsePipelineVariables(value) {
|
|
|
275
281
|
}
|
|
276
282
|
return [];
|
|
277
283
|
}
|
|
278
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL21ldGFkYXRhLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUt0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFLeEU7O0dBRUc7QUFDSCxNQUFNLFNBQVMsR0FBRztJQUNoQixVQUFVLEVBQUUscUJBQXFCO0lBQ2pDLGVBQWUsRUFBRSx5QkFBeUI7SUFDMUMsaUJBQWlCLEVBQUUsNEJBQTRCO0lBQy9DLGFBQWEsRUFBRSx3QkFBd0I7Q0FDL0IsQ0FBQztBQVFYLE1BQU0saUJBQWlCLEdBQTBDO0lBQy9ELENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQ3RCLFdBQVcsRUFBRSxFQUFFO1FBQ2YsZUFBZSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLENBQUM7S0FDcEk7SUFDRCxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsRUFBRTtRQUMzQixXQUFXLEVBQUUsRUFBRTtRQUNmLGVBQWUsRUFBRSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLHdCQUF3QixFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxDQUFDO0tBQy9SO0lBQ0QsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsRUFBRTtRQUM3QixXQUFXLEVBQUUsQ0FBQyxZQUFZLENBQUM7UUFDM0IsZUFBZSxFQUFFLENBQUMsWUFBWSxFQUFFLGFB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QUM7UUFDL0IsTUFBTSxLQUFLLEdBQTJCLEVBQUUsQ0FBQztRQUN6QyxLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLElBQUk7Z0JBQUUsU0FBUztZQUNwQixNQUFNLFlBQVksR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekUsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IEJ1aWxkRW52aXJvbm1lbnQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkJztcbmltcG9ydCB0eXBlIHsgQ29kZUJ1aWxkU3RlcFByb3BzLCBDb2RlUGlwZWxpbmVQcm9wcywgU2hlbGxTdGVwUHJvcHMgfSBmcm9tICdhd3MtY2RrLWxpYi9waXBlbGluZXMnO1xuaW1wb3J0IHR5cGUgeyBOZXR3b3JrQ29uZmlnLCBTdWJuZXRUeXBlTmFtZSB9IGZyb20gJy4vbmV0d29yay10eXBlcy5qcyc7XG5pbXBvcnQgeyBDREtfTUVUQURBVEFfUFJFRklYLCBNZXRhZGF0YUtleXMgfSBmcm9tICcuL3BpcGVsaW5lLXR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgTWV0YURhdGFUeXBlIH0gZnJvbSAnLi9waXBlbGluZS10eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFJvbGVDb25maWcgfSBmcm9tICcuL3JvbGUtdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTZWN1cml0eUdyb3VwQ29uZmlnIH0gZnJvbSAnLi9zZWN1cml0eS1ncm91cC10eXBlcy5qcyc7XG5cbi8qKlxuICogVHlwZS1zYWZlIG5hbWVzcGFjZSBjb25zdGFudHMgZm9yIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmNvbnN0IE5BTUVTUEFDRSA9IHtcbiAgU0hFTExfU1RFUDogJ3BpcGVsaW5lczpzaGVsbHN0ZXAnLFxuICBDT0RFX0JVSUxEX1NURVA6ICdwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcCcsXG4gIEJVSUxEX0VOVklST05NRU5UOiAnY29kZWJ1aWxkOmJ1aWxkZW52aXJvbm1lbnQnLFxuICBDT0RFX1BJUEVMSU5FOiAncGlwZWxpbmVzOmNvZGVwaXBlbGluZScsXG59IGFzIGNvbnN0O1xudHlwZSBOYW1lc3BhY2UgPSAodHlwZW9mIE5BTUVTUEFDRSlba2V5b2YgdHlwZW9mIE5BTUVTUEFDRV07XG5cbmludGVyZmFjZSBOYW1lc3BhY2VLZXlDb25maWcge1xuICBib29sZWFuS2V5czogcmVhZG9ubHkgc3RyaW5nW107XG4gIHBhc3N0aHJvdWdoS2V5czogcmVhZG9ubHkgc3RyaW5nW107XG59XG5cbmNvbnN0IE5BTUVTUEFDRV9LRVlfTUFQOiBSZWNvcmQ8TmFtZXNwYWNlLCBOYW1lc3BhY2VLZXlDb25maWc+ID0ge1xuICBbTkFNRVNQQUNFLlNIRUxMX1NURVBdOiB7XG4gICAgYm9vbGVhbktleXM6IFtdLFxuICAgIHBhc3N0aHJvdWdoS2V5czogWydhZGRpdGlvbmFsSW5wdXRzJywgJ2NvbW1hbmRzJywgJ2VudicsICdlbnZGcm9tQ2ZuT3V0cHV0cycsICdpbnB1dCcsICdpbnN0YWxsQ29tbWFuZHMnLCAncHJpbWFyeU91dHB1dERpcmVjdG9yeSddLFxuICB9LFxuICBbTkFNRVNQQUNFLkNPREVfQlVJTERfU1RFUF06IHtcbiAgICBib29sZWFuS2V5czogW10sXG4gICAgcGFzc3Rocm91Z2hLZXlzOiBbJ2FjdGlvblJvbGUnLCAnYWRkaXRpb25hbElucHV0cycsICdidWlsZEVudmlyb25tZW50JywgJ2NhY2hlJywgJ2NvbW1hbmRzJywgJ2VudicsICdlbnZGcm9tQ2ZuT3V0cHV0cycsICdmaWxlU3lzdGVtTG9jYXRpb25zJywgJ2lucHV0JywgJ2luc3RhbGxDb21tYW5kcycsICdsb2dnaW5nJywgJ3BhcnRpYWxCdWlsZFNwZWMnLCAncHJpbWFyeU91dHB1dERpcmVjdG9yeScsICdwcm9qZWN0TmFtZScsICdyb2xlJywgJ3JvbGVQb2xpY3lTdGF0ZW1lbnRzJywgJ3RpbWVvdXQnXSxcbiAgfSxcbiAgW05BTUVTUEFDRS5CVUlMRF9FTlZJUk9OTUVOVF06IHtcbiAgICBib29sZWFuS2V5czogWydwcml2aWxlZ2VkJ10sXG4gICAgcGFzc3Rocm91Z2hLZXlzOiBbJ2J1aWxkSW1hZ2UnLCAnY2VydGlmaWNhdGUnLCAnY29tcHV0ZVR5cGUnLCAnZG9ja2VyU2VydmVyJywgJ2Vudmlyb25tZW50VmFyaWFibGVzJywgJ2ZsZWV0J10sXG4gIH0sXG4gIFtOQU1FU1BBQ0UuQ09ERV9QSVBFTElORV06IHtcbiAgICBib29sZWFuS2V5czogWydjcm9zc0FjY291bnRLZXlzJywgJ2RvY2tlckVuYWJsZWRGb3JTZWxmTXV0YXRpb24nLCAnZG9ja2VyRW5hYmxlZEZvclN5bnRoJywgJ2VuYWJsZUtleVJvdGF0aW9uJywgJ3B1Ymxpc2hBc3NldHNJblBhcmFsbGVsJywgJ3JldXNlQ3Jvc3NSZWdpb25TdXBwb3J0U3RhY2tzJywgJ3NlbGZNdXRhdGlvbicsICd1c2VDaGFuZ2VTZXRzJywgJ3VzZVBpcGVsaW5lUm9sZUZvckFjdGlvbnMnXSxcbiAgICBwYXNzdGhyb3VnaEtleXM6IFsnYXJ0aWZhY3RCdWNrZXQnLCAnYXNzZXRQdWJsaXNoaW5nQ29kZUJ1aWxkRGVmYXVsdHMnLCAnY2RrQXNzZXRzQ2xpVmVyc2lvbicsICdjbGlWZXJzaW9uJywgJ2NvZGVCdWlsZERlZmF1bHRzJywgJ2NvZGVQaXBlbGluZScsICdjcm9zc1JlZ2lvblJlcGxpY2F0aW9uQnVja2V0cycsICdkb2NrZXJDcmVkZW50aWFscycsICdwaXBlbGluZU5hbWUnLCAncGlwZWxpbmVUeXBlJywgJ3JvbGUnLCAnc2VsZk11dGF0aW9uQ29kZUJ1aWxkRGVmYXVsdHMnLCAnc3ludGgnLCAnc3ludGhDb2RlQnVpbGREZWZhdWx0cyddLFxuICB9LFxufTtcblxuY29uc3QgRU1QVFlfS0VZX0NPTkZJRzogTmFtZXNwYWNlS2V5Q29uZmlnID0geyBib29sZWFuS2V5czogW10sIHBhc3N0aHJvdWdoS2V5czogW10gfTtcblxuZnVuY3Rpb24gZ2V0Q3VzdG9tS2V5KHByZWZpeDogc3RyaW5nLCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtDREtfTUVUQURBVEFfUFJFRklYfSR7cHJlZml4fToke2tleX1gLnRvTG93ZXJDYXNlKCk7XG59XG5cbmZ1bmN0aW9uIGlzVHJ1ZSh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHJldHVybiB2YWx1ZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSc7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqIEV4dHJhY3QgQ0RLIGNvbnN0cnVjdCBjb25maWcgZnJvbSBtZXRhZGF0YSBmb3IgYSBnaXZlbiBuYW1lc3BhY2UuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDb25maWdGcm9tTWV0YWRhdGEoXG4gIG1ldGFkYXRhOiBNZXRhRGF0YVR5cGUsXG4gIG5hbWVzcGFjZTogc3RyaW5nLFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBjb25zdCB7IGJvb2xlYW5LZXlzLCBwYXNzdGhyb3VnaEtleXMgfSA9XG4gICAgTkFNRVNQQUNFX0tFWV9NQVBbbmFtZXNwYWNlIGFzIE5hbWVzcGFjZV0gPz8gRU1QVFlfS0VZX0NPTkZJRztcblxuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgYm9vbGVhbktleXMpIHtcbiAgICBjb25zdCByYXcgPSBtZXRhZGF0YVtnZXRDdXN0b21LZXkobmFtZXNwYWNlLCBrZXkpXTtcbiAgICBpZiAocmF3ICE9PSB1bmRlZmluZWQpIHJlc3VsdFtrZXldID0gaXNUcnVlKHJhdyk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGtleSBvZiBwYXNzdGhyb3VnaEtleXMpIHtcbiAgICBjb25zdCByYXcgPSBtZXRhZGF0YVtnZXRDdXN0b21LZXkobmFtZXNwYWNlLCBrZXkpXTtcbiAgICBpZiAocmF3ICE9PSB1bmRlZmluZWQpIHJlc3VsdFtrZXldID0gcmF3O1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqIEV4dHJhY3QgQ29kZVBpcGVsaW5lIGNvbmZpZyBmcm9tIG1ldGFkYXRhLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ldGFkYXRhRm9yQ29kZVBpcGVsaW5lKG1ldGFkYXRhOiBNZXRhRGF0YVR5cGUpOiBQYXJ0aWFsPENvZGVQaXBlbGluZVByb3BzPiB7XG4gIHJldHVybiBidWlsZENvbmZpZ0Zyb21NZXRhZGF0YShtZXRhZGF0YSwgTkFNRVNQQUNFLkNPREVfUElQRUxJTkUpIGFzIFBhcnRpYWw8Q29kZVBpcGVsaW5lUHJvcHM+O1xufVxuXG4vKiogRXh0cmFjdCBDb2RlQnVpbGRTdGVwIGNvbmZpZyBmcm9tIG1ldGFkYXRhLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ldGFkYXRhRm9yQ29kZUJ1aWxkU3RlcChtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogUGFydGlhbDxDb2RlQnVpbGRTdGVwUHJvcHM+IHtcbiAgcmV0dXJuIGJ1aWxkQ29uZmlnRnJvbU1ldGFkYXRhKG1ldGFkYXRhLCBOQU1FU1BBQ0UuQ09ERV9CVUlMRF9TVEVQKSBhcyBQYXJ0aWFsPENvZGVCdWlsZFN0ZXBQcm9wcz47XG59XG5cbi8qKiBFeHRyYWN0IFNoZWxsU3RlcCBjb25maWcgZnJvbSBtZXRhZGF0YS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXRhZGF0YUZvclNoZWxsU3RlcChtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogUGFydGlhbDxTaGVsbFN0ZXBQcm9wcz4ge1xuICByZXR1cm4gYnVpbGRDb25maWdGcm9tTWV0YWRhdGEobWV0YWRhdGEsIE5BTUVTUEFDRS5TSEVMTF9TVEVQKSBhcyBQYXJ0aWFsPFNoZWxsU3RlcFByb3BzPjtcbn1cblxuLyoqIEV4dHJhY3QgQnVpbGRFbnZpcm9ubWVudCBjb25maWcgZnJvbSBtZXRhZGF0YS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXRhZGF0YUZvckJ1aWxkRW52aXJvbm1lbnQobWV0YWRhdGE6IE1ldGFEYXRhVHlwZSk6IFBhcnRpYWw8QnVpbGRFbnZpcm9ubWVudD4ge1xuICByZXR1cm4gYnVpbGRDb25maWdGcm9tTWV0YWRhdGEobWV0YWRhdGEsIE5BTUVTUEFDRS5CVUlMRF9FTlZJUk9OTUVOVCkgYXMgUGFydGlhbDxCdWlsZEVudmlyb25tZW50Pjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUeXBlZC1jb25maWcgZXh0cmFjdG9yczogZWMyOm5ldHdvcmsgLyBpYW06cm9sZSAvIGVjMjpzZWN1cml0eWdyb3VwIG1ldGFkYXRhXG4vLyAtPiB0aGUgZGlzY3JpbWluYXRlZC11bmlvbiBjb25maWcgb2JqZWN0cyB0aGUgYnVpbGRlciBhbHJlYWR5IGNvbnN1bWVzXG4vLyAoTmV0d29ya0NvbmZpZyAvIFJvbGVDb25maWcgLyBTZWN1cml0eUdyb3VwQ29uZmlnKS4gVW5saWtlIHRoZSBuYW1lc3BhY2VzXG4vLyBhYm92ZSAod2hpY2ggbWFwIDE6MSB0byBDREsgY29uc3RydWN0IHByb3BzKSwgdGhlc2UgZmVlZCByZXNvbHZlTmV0d29yayAvXG4vLyByZXNvbHZlUm9sZSAvIHJlc29sdmVTZWN1cml0eUdyb3VwLiBFYWNoIHJldHVybnMgdW5kZWZpbmVkIHdoZW4gaXRzIGtleXMgYXJlXG4vLyBhYnNlbnQsIHNvIGNhbGxlcnMgZmFsbCB0aHJvdWdoIHdpdGggYHByb3AgPz8gbWV0YWRhdGEgPz8gZW52YCBwcmVjZWRlbmNlLlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIGFzU3RyKHY6IHVua25vd24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYudHJpbSgpICE9PSAnJyA/IHYgOiB1bmRlZmluZWQ7XG59XG5cbi8qKiBBY2NlcHQgYSBKU09OIGFycmF5IG9yIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZyAtPiBzdHJpbmdbXSAodW5kZWZpbmVkIGlmIGVtcHR5KS4gKi9cbmZ1bmN0aW9uIGFzTGlzdCh2OiB1bmtub3duKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICBjb25zdCBpdGVtcyA9IEFycmF5LmlzQXJyYXkodilcbiAgICA/IHYubWFwKFN0cmluZykubWFwKHMgPT4gcy50cmltKCkpLmZpbHRlcihCb29sZWFuKVxuICAgIDogdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYudHJpbSgpICE9PSAnJ1xuICAgICAgPyB2LnNwbGl0KCcsJykubWFwKHMgPT4gcy50cmltKCkpLmZpbHRlcihCb29sZWFuKVxuICAgICAgOiBbXTtcbiAgcmV0dXJuIGl0ZW1zLmxlbmd0aCA+IDAgPyBpdGVtcyA6IHVuZGVmaW5lZDtcbn1cblxuLyoqIEFjY2VwdCBhIEpTT04gb2JqZWN0IG9yIGEgSlNPTiBzdHJpbmcgLT4gUmVjb3JkPHN0cmluZyxzdHJpbmc+ICh1bmRlZmluZWQgaWYgZW1wdHkpLiAqL1xuZnVuY3Rpb24gYXNUYWdzKHY6IHVua25vd24pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkIHtcbiAgbGV0IG9iajogdW5rbm93biA9IHY7XG4gIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycgJiYgdi50cmltKCkgIT09ICcnKSB7XG4gICAgdHJ5IHsgb2JqID0gSlNPTi5wYXJzZSh2KTsgfSBjYXRjaCB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgfVxuICBpZiAob2JqICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMob2JqIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5tYXAoKFtrLCB2YWxdKSA9PiBbaywgU3RyaW5nKHZhbCldIGFzIGNvbnN0KTtcbiAgICByZXR1cm4gZW50cmllcy5sZW5ndGggPiAwID8gT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpIDogdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKiB1bmRlZmluZWQgd2hlbiB0aGUga2V5IGlzIGFic2VudDsgb3RoZXJ3aXNlIGEgY29lcmNlZCBib29sZWFuLiAqL1xuZnVuY3Rpb24gYXNCb29sKHY6IHVua25vd24pOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHYgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGlzVHJ1ZSh2KTtcbn1cblxuLyoqIENvZXJjZSBhIG1ldGFkYXRhIHZhbHVlIHRvIGEgcG9zaXRpdmUgaW50ZWdlcjsgdW5kZWZpbmVkIGlmIGFic2VudC9pbnZhbGlkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzSW50KHY6IHVua25vd24pOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBpZiAodiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51bGwgfHwgdiA9PT0gJycpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IG4gPSB0eXBlb2YgdiA9PT0gJ251bWJlcicgPyB2IDogTnVtYmVyKFN0cmluZyh2KS50cmltKCkpO1xuICByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihuKSAmJiBuID4gMCA/IG4gOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQnVpbGQgYSBOZXR3b3JrQ29uZmlnIGZyb20gYGVjMjpuZXR3b3JrYCBtZXRhZGF0YSBrZXlzLiBUaGUgdmFyaWFudCBjb21lc1xuICogZnJvbSBORVRXT1JLX1RZUEUsIG9yIGlzIGluZmVycmVkIChzdWJuZXRJZHMgLT4gc3VibmV0SWRzLCB0YWdzIC0+IHZwY0xvb2t1cCxcbiAqIHZwY0lkIC0+IHZwY0lkKS4gUmV0dXJucyB1bmRlZmluZWQgd2hlbiBubyB1c2FibGUgbmV0d29yayBtZXRhZGF0YSBpcyBwcmVzZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV0d29ya0NvbmZpZ0Zyb21NZXRhZGF0YShtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogTmV0d29ya0NvbmZpZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHR5cGUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19UWVBFXSk7XG4gIGNvbnN0IHZwY0lkID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLk5FVFdPUktfVlBDX0lEXSk7XG4gIGNvbnN0IHN1Ym5ldElkcyA9IGFzTGlzdChtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19TVUJORVRfSURTXSk7XG4gIGNvbnN0IHN1Ym5ldFR5cGUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19TVUJORVRfVFlQRV0pIGFzIFN1Ym5ldFR5cGVOYW1lIHwgdW5kZWZpbmVkO1xuICBjb25zdCBhdmFpbGFiaWxpdHlab25lcyA9IGFzTGlzdChtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19BVkFJTEFCSUxJVFlfWk9ORVNdKTtcbiAgY29uc3Qgc3VibmV0R3JvdXBOYW1lID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLk5FVFdPUktfU1VCTkVUX0dST1VQX05BTUVdKTtcbiAgY29uc3Qgc2VjdXJpdHlHcm91cElkcyA9IGFzTGlzdChtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19TRUNVUklUWV9HUk9VUF9JRFNdKTtcbiAgY29uc3QgdGFncyA9IGFzVGFncyhtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19UQUdTXSk7XG4gIGNvbnN0IHZwY05hbWUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19WUENfTkFNRV0pO1xuICBjb25zdCByZWdpb24gPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19SRUdJT05dKTtcblxuICBjb25zdCB2YXJpYW50ID0gdHlwZSA/PyAoc3VibmV0SWRzID8gJ3N1Ym5ldElkcycgOiB0YWdzID8gJ3ZwY0xvb2t1cCcgOiB2cGNJZCA/ICd2cGNJZCcgOiB1bmRlZmluZWQpO1xuXG4gIHN3aXRjaCAodmFyaWFudCkge1xuICAgIGNhc2UgJ3N1Ym5ldElkcyc6XG4gICAgICBpZiAoIXZwY0lkIHx8ICFzdWJuZXRJZHMpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiAnc3VibmV0SWRzJywgb3B0aW9uczogeyB2cGNJZCwgc3VibmV0SWRzLCAuLi4oc2VjdXJpdHlHcm91cElkcyAmJiB7IHNlY3VyaXR5R3JvdXBJZHMgfSkgfSB9O1xuICAgIGNhc2UgJ3ZwY0lkJzpcbiAgICAgIGlmICghdnBjSWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAndnBjSWQnLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgdnBjSWQsXG4gICAgICAgICAgLi4uKHN1Ym5ldFR5cGUgJiYgeyBzdWJuZXRUeXBlIH0pLFxuICAgICAgICAgIC4uLihhdmFpbGFiaWxpdHlab25lcyAmJiB7IGF2YWlsYWJpbGl0eVpvbmVzIH0pLFxuICAgICAgICAgIC4uLihzdWJuZXRHcm91cE5hbWUgJiYgeyBzdWJuZXRHcm91cE5hbWUgfSksXG4gICAgICAgICAgLi4uKHNlY3VyaXR5R3JvdXBJZHMgJiYgeyBzZWN1cml0eUdyb3VwSWRzIH0pLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICBjYXNlICd2cGNMb29rdXAnOlxuICAgICAgaWYgKCF0YWdzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZwY0xvb2t1cCcsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICB0YWdzLFxuICAgICAgICAgIC4uLihzdWJuZXRUeXBlICYmIHsgc3VibmV0VHlwZSB9KSxcbiAgICAgICAgICAuLi4oYXZhaWxhYmlsaXR5Wm9uZXMgJiYgeyBhdmFpbGFiaWxpdHlab25lcyB9KSxcbiAgICAgICAgICAuLi4oc3VibmV0R3JvdXBOYW1lICYmIHsgc3VibmV0R3JvdXBOYW1lIH0pLFxuICAgICAgICAgIC4uLihzZWN1cml0eUdyb3VwSWRzICYmIHsgc2VjdXJpdHlHcm91cElkcyB9KSxcbiAgICAgICAgICAuLi4odnBjTmFtZSAmJiB7IHZwY05hbWUgfSksXG4gICAgICAgICAgLi4uKHJlZ2lvbiAmJiB7IHJlZ2lvbiB9KSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBCdWlsZCBhIFJvbGVDb25maWcgZnJvbSBgaWFtOnJvbGVgIG1ldGFkYXRhIGtleXMgKHJvbGVBcm4gLyByb2xlTmFtZSAvXG4gKiBjb2RlQnVpbGREZWZhdWx0KS4gVGhlIDQga2V5cyBjYW4ndCBleHByZXNzIHRoZSBmdWxsIGBvaWRjYCBvcHRpb24gc2V0LCBzbyBhblxuICogYG9pZGNgIHR5cGUgZnJvbSBtZXRhZGF0YSBpcyBpZ25vcmVkLiBSZXR1cm5zIHVuZGVmaW5lZCB3aGVuIG5vIGtleXMgYXJlIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvbGVDb25maWdGcm9tTWV0YWRhdGEobWV0YWRhdGE6IE1ldGFEYXRhVHlwZSk6IFJvbGVDb25maWcgfCB1bmRlZmluZWQge1xuICBjb25zdCB0eXBlID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLlJPTEVfVFlQRV0pO1xuICBjb25zdCByb2xlQXJuID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLlJPTEVfQVJOXSk7XG4gIGNvbnN0IHJvbGVOYW1lID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLlJPTEVfTkFNRV0pO1xuICBjb25zdCBtdXRhYmxlID0gYXNCb29sKG1ldGFkYXRhW01ldGFkYXRhS2V5cy5ST0xFX01VVEFCTEVdKTtcblxuICBjb25zdCB2YXJpYW50ID0gdHlwZSA/PyAocm9sZUFybiA/ICdyb2xlQXJuJyA6IHJvbGVOYW1lID8gJ3JvbGVOYW1lJyA6IHVuZGVmaW5lZCk7XG5cbiAgc3dpdGNoICh2YXJpYW50KSB7XG4gICAgY2FzZSAncm9sZUFybic6XG4gICAgICBpZiAoIXJvbGVBcm4pIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiAncm9sZUFybicsIG9wdGlvbnM6IHsgcm9sZUFybiwgLi4uKG11dGFibGUgIT09IHVuZGVmaW5lZCAmJiB7IG11dGFibGUgfSkgfSB9O1xuICAgIGNhc2UgJ3JvbGVOYW1lJzpcbiAgICAgIGlmICghcm9sZU5hbWUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiAncm9sZU5hbWUnLCBvcHRpb25zOiB7IHJvbGVOYW1lLCAuLi4obXV0YWJsZSAhPT0gdW5kZWZpbmVkICYmIHsgbXV0YWJsZSB9KSB9IH07XG4gICAgY2FzZSAnY29kZUJ1aWxkRGVmYXVsdCc6XG4gICAgICByZXR1cm4geyB0eXBlOiAnY29kZUJ1aWxkRGVmYXVsdCcsIG9wdGlvbnM6IHsgLi4uKHJvbGVOYW1lICYmIHsgcm9sZU5hbWUgfSkgfSB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogQnVpbGQgYSBTZWN1cml0eUdyb3VwQ29uZmlnIGZyb20gYGVjMjpzZWN1cml0eWdyb3VwYCBtZXRhZGF0YSBrZXlzXG4gKiAoc2VjdXJpdHlHcm91cElkcyAvIHNlY3VyaXR5R3JvdXBMb29rdXApLiBSZXR1cm5zIHVuZGVmaW5lZCB3aGVuIG5vIGtleXMgc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlHcm91cENvbmZpZ0Zyb21NZXRhZGF0YShtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogU2VjdXJpdHlHcm91cENvbmZpZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHR5cGUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuU0VDVVJJVFlfR1JPVVBfVFlQRV0pO1xuICBjb25zdCBpZHMgPSBhc0xpc3QobWV0YWRhdGFbTWV0YWRhdGFLZXlzLlNFQ1VSSVRZX0dST1VQX0lEU10pO1xuICBjb25zdCBtdXRhYmxlID0gYXNCb29sKG1ldGFkYXRhW01ldGFkYXRhS2V5cy5TRUNVUklUWV9HUk9VUF9NVVRBQkxFXSk7XG4gIGNvbnN0IG5hbWUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuU0VDVVJJVFlfR1JPVVBfTkFNRV0pO1xuICBjb25zdCB2cGNJZCA9IGFzU3RyKG1ldGFkYXRhW01ldGFkYXRhS2V5cy5TRUNVUklUWV9HUk9VUF9WUENfSURdKTtcblxuICBjb25zdCB2YXJpYW50ID0gdHlwZSA/PyAoaWRzID8gJ3NlY3VyaXR5R3JvdXBJZHMnIDogbmFtZSA/ICdzZWN1cml0eUdyb3VwTG9va3VwJyA6IHVuZGVmaW5lZCk7XG5cbiAgc3dpdGNoICh2YXJpYW50KSB7XG4gICAgY2FzZSAnc2VjdXJpdHlHcm91cElkcyc6XG4gICAgICBpZiAoIWlkcykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB7IHR5cGU6ICdzZWN1cml0eUdyb3VwSWRzJywgb3B0aW9uczogeyBzZWN1cml0eUdyb3VwSWRzOiBpZHMsIC4uLihtdXRhYmxlICE9PSB1bmRlZmluZWQgJiYgeyBtdXRhYmxlIH0pIH0gfTtcbiAgICBjYXNlICdzZWN1cml0eUdyb3VwTG9va3VwJzpcbiAgICAgIGlmICghbmFtZSB8fCAhdnBjSWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiAnc2VjdXJpdHlHcm91cExvb2t1cCcsIG9wdGlvbnM6IHsgc2VjdXJpdHlHcm91cE5hbWU6IG5hbWUsIHZwY0lkIH0gfTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKiogQSBDb2RlUGlwZWxpbmUgVjIgcGlwZWxpbmUtbGV2ZWwgdmFyaWFibGUgcGFyc2VkIGZyb20gYG9wZXJhdGlvbnMudmFyaWFibGVzYC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVWYXJpYWJsZVNwZWMge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2UgYG9wZXJhdGlvbnMudmFyaWFibGVzYCBtZXRhZGF0YSBpbnRvIENvZGVQaXBlbGluZSBWMiB2YXJpYWJsZSBzcGVjcy5cbiAqIEFjY2VwdHMgYSBKU09OIGFycmF5IChgW3tcIm5hbWVcIjpcIkVOVlwiLFwiZGVmYXVsdFwiOlwicHJvZFwiLFwiZGVzY3JpcHRpb25cIjpcIi4uLlwifV1gKVxuICogb3IgYSBjb21wYWN0IGNvbW1hLXNlcGFyYXRlZCBgbmFtZT1kZWZhdWx0YCBsaXN0IChgRU5WPXByb2QsUkVHSU9OPXVzLWVhc3QtMWApLlxuICogRW50cmllcyB3aXRob3V0IGEgdXNhYmxlIG5hbWUgYXJlIHNraXBwZWQ7IHJldHVybnMgW10gd2hlbiBub3RoaW5nIHZhbGlkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQaXBlbGluZVZhcmlhYmxlcyh2YWx1ZTogdW5rbm93bik6IFBpcGVsaW5lVmFyaWFibGVTcGVjW10ge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiBbXTtcblxuICAvLyBBbHJlYWR5IGFuIGFycmF5IChKU09OLXR5cGVkIG1ldGFkYXRhKSBvciBhIEpTT04tZW5jb2RlZCBzdHJpbmcuXG4gIGxldCBwYXJzZWQ6IHVua25vd24gPSB2YWx1ZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCB0cmltbWVkID0gdmFsdWUudHJpbSgpO1xuICAgIGlmICh0cmltbWVkLnN0YXJ0c1dpdGgoJ1snKSB8fCB0cmltbWVkLnN0YXJ0c1dpdGgoJ3snKSkge1xuICAgICAgdHJ5IHsgcGFyc2VkID0gSlNPTi5wYXJzZSh0cmltbWVkKTsgfSBjYXRjaCB7IHBhcnNlZCA9IHZhbHVlOyB9XG4gICAgfVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkocGFyc2VkKSkge1xuICAgIGNvbnN0IHNwZWNzOiBQaXBlbGluZVZhcmlhYmxlU3BlY1tdID0gW107XG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBwYXJzZWQpIHtcbiAgICAgIGlmICghZW50cnkgfHwgdHlwZW9mIGVudHJ5ICE9PSAnb2JqZWN0JykgY29udGludWU7XG4gICAgICBjb25zdCBlID0gZW50cnkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICBjb25zdCBuYW1lID0gYXNTdHIoZS5uYW1lKTtcbiAgICAgIGlmICghbmFtZSkgY29udGludWU7XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBhc1N0cihlLmRlZmF1bHQpID8/IGFzU3RyKGUuZGVmYXVsdFZhbHVlKTtcbiAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gYXNTdHIoZS5kZXNjcmlwdGlvbik7XG4gICAgICBzcGVjcy5wdXNoKHsgbmFtZSwgLi4uKGRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIHsgZGVmYXVsdFZhbHVlIH0pLCAuLi4oZGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZCAmJiB7IGRlc2NyaXB0aW9uIH0pIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc3BlY3M7XG4gIH1cblxuICAvLyBDb21wYWN0IGBuYW1lPWRlZmF1bHRgIGNvbW1hIGxpc3QuXG4gIGlmICh0eXBlb2YgcGFyc2VkID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IHNwZWNzOiBQaXBlbGluZVZhcmlhYmxlU3BlY1tdID0gW107XG4gICAgZm9yIChjb25zdCBwYWlyIG9mIHBhcnNlZC5zcGxpdCgnLCcpKSB7XG4gICAgICBjb25zdCBpZHggPSBwYWlyLmluZGV4T2YoJz0nKTtcbiAgICAgIGNvbnN0IG5hbWUgPSAoaWR4ID09PSAtMSA/IHBhaXIgOiBwYWlyLnNsaWNlKDAsIGlkeCkpLnRyaW0oKTtcbiAgICAgIGlmICghbmFtZSkgY29udGludWU7XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBpZHggPT09IC0xID8gdW5kZWZpbmVkIDogcGFpci5zbGljZShpZHggKyAxKS50cmltKCk7XG4gICAgICBzcGVjcy5wdXNoKHsgbmFtZSwgLi4uKGRlZmF1bHRWYWx1ZSA/IHsgZGVmYXVsdFZhbHVlIH0gOiB7fSkgfSk7XG4gICAgfVxuICAgIHJldHVybiBzcGVjcztcbiAgfVxuXG4gIHJldHVybiBbXTtcbn1cbiJdfQ==
|
|
284
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL21ldGFkYXRhLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUt0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFLeEU7O0dBRUc7QUFDSCxNQUFNLFNBQVMsR0FBRztJQUNoQixVQUFVLEVBQUUscUJBQXFCO0lBQ2pDLGVBQWUsRUFBRSx5QkFBeUI7SUFDMUMsaUJBQWlCLEVBQUUsNEJBQTRCO0lBQy9DLGFBQWEsRUFBRSx3QkFBd0I7Q0FDL0IsQ0FBQztBQVFYLE1BQU0saUJBQWlCLEdBQTBDO0lBQy9ELENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQ3RCLFdBQVcsRUFBRSxFQUFFO1FBQ2YsZUFBZSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLENBQUM7S0FDcEk7SUFDRCxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsRUFBRTtRQUMzQixXQUFXLEVBQUUsRUFBRTtRQUNmLGVBQWUsRUFBRSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLHdCQUF3QixFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxDQUFDO0tBQy9SO0lBQ0QsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsRUFBRTtRQUM3QixXQUFXLEVBQUUsQ0FBQyxZQUFZLENBQUM7UUFDM0IsZUFBZSxFQUFFLENBQUMsWUFBWSxFQUFFLGFB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TSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQy9CLE1BQU0sS0FBSyxHQUEyQixFQUFFLENBQUM7UUFDekMsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QixNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzdELElBQUksQ0FBQyxJQUFJO2dCQUFFLFNBQVM7WUFDcEIsTUFBTSxZQUFZLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pFLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBCdWlsZEVudmlyb25tZW50IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVidWlsZCc7XG5pbXBvcnQgdHlwZSB7IENvZGVCdWlsZFN0ZXBQcm9wcywgQ29kZVBpcGVsaW5lUHJvcHMsIFNoZWxsU3RlcFByb3BzIH0gZnJvbSAnYXdzLWNkay1saWIvcGlwZWxpbmVzJztcbmltcG9ydCB0eXBlIHsgTmV0d29ya0NvbmZpZywgU3VibmV0VHlwZU5hbWUgfSBmcm9tICcuL25ldHdvcmstdHlwZXMuanMnO1xuaW1wb3J0IHsgQ0RLX01FVEFEQVRBX1BSRUZJWCwgTWV0YWRhdGFLZXlzIH0gZnJvbSAnLi9waXBlbGluZS10eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IE1ldGFEYXRhVHlwZSB9IGZyb20gJy4vcGlwZWxpbmUtdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBSb2xlQ29uZmlnIH0gZnJvbSAnLi9yb2xlLXR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgU2VjdXJpdHlHcm91cENvbmZpZyB9IGZyb20gJy4vc2VjdXJpdHktZ3JvdXAtdHlwZXMuanMnO1xuXG4vKipcbiAqIFR5cGUtc2FmZSBuYW1lc3BhY2UgY29uc3RhbnRzIGZvciBtZXRhZGF0YSBjb25maWd1cmF0aW9uLlxuICovXG5jb25zdCBOQU1FU1BBQ0UgPSB7XG4gIFNIRUxMX1NURVA6ICdwaXBlbGluZXM6c2hlbGxzdGVwJyxcbiAgQ09ERV9CVUlMRF9TVEVQOiAncGlwZWxpbmVzOmNvZGVidWlsZHN0ZXAnLFxuICBCVUlMRF9FTlZJUk9OTUVOVDogJ2NvZGVidWlsZDpidWlsZGVudmlyb25tZW50JyxcbiAgQ09ERV9QSVBFTElORTogJ3BpcGVsaW5lczpjb2RlcGlwZWxpbmUnLFxufSBhcyBjb25zdDtcbnR5cGUgTmFtZXNwYWNlID0gKHR5cGVvZiBOQU1FU1BBQ0UpW2tleW9mIHR5cGVvZiBOQU1FU1BBQ0VdO1xuXG5pbnRlcmZhY2UgTmFtZXNwYWNlS2V5Q29uZmlnIHtcbiAgYm9vbGVhbktleXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICBwYXNzdGhyb3VnaEtleXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG5jb25zdCBOQU1FU1BBQ0VfS0VZX01BUDogUmVjb3JkPE5hbWVzcGFjZSwgTmFtZXNwYWNlS2V5Q29uZmlnPiA9IHtcbiAgW05BTUVTUEFDRS5TSEVMTF9TVEVQXToge1xuICAgIGJvb2xlYW5LZXlzOiBbXSxcbiAgICBwYXNzdGhyb3VnaEtleXM6IFsnYWRkaXRpb25hbElucHV0cycsICdjb21tYW5kcycsICdlbnYnLCAnZW52RnJvbUNmbk91dHB1dHMnLCAnaW5wdXQnLCAnaW5zdGFsbENvbW1hbmRzJywgJ3ByaW1hcnlPdXRwdXREaXJlY3RvcnknXSxcbiAgfSxcbiAgW05BTUVTUEFDRS5DT0RFX0JVSUxEX1NURVBdOiB7XG4gICAgYm9vbGVhbktleXM6IFtdLFxuICAgIHBhc3N0aHJvdWdoS2V5czogWydhY3Rpb25Sb2xlJywgJ2FkZGl0aW9uYWxJbnB1dHMnLCAnYnVpbGRFbnZpcm9ubWVudCcsICdjYWNoZScsICdjb21tYW5kcycsICdlbnYnLCAnZW52RnJvbUNmbk91dHB1dHMnLCAnZmlsZVN5c3RlbUxvY2F0aW9ucycsICdpbnB1dCcsICdpbnN0YWxsQ29tbWFuZHMnLCAnbG9nZ2luZycsICdwYXJ0aWFsQnVpbGRTcGVjJywgJ3ByaW1hcnlPdXRwdXREaXJlY3RvcnknLCAncHJvamVjdE5hbWUnLCAncm9sZScsICdyb2xlUG9saWN5U3RhdGVtZW50cycsICd0aW1lb3V0J10sXG4gIH0sXG4gIFtOQU1FU1BBQ0UuQlVJTERfRU5WSVJPTk1FTlRdOiB7XG4gICAgYm9vbGVhbktleXM6IFsncHJpdmlsZWdlZCddLFxuICAgIHBhc3N0aHJvdWdoS2V5czogWydidWlsZEltYWdlJywgJ2NlcnRpZmljYXRlJywgJ2NvbXB1dGVUeXBlJywgJ2RvY2tlclNlcnZlcicsICdlbnZpcm9ubWVudFZhcmlhYmxlcycsICdmbGVldCddLFxuICB9LFxuICBbTkFNRVNQQUNFLkNPREVfUElQRUxJTkVdOiB7XG4gICAgYm9vbGVhbktleXM6IFsnY3Jvc3NBY2NvdW50S2V5cycsICdkb2NrZXJFbmFibGVkRm9yU2VsZk11dGF0aW9uJywgJ2RvY2tlckVuYWJsZWRGb3JTeW50aCcsICdlbmFibGVLZXlSb3RhdGlvbicsICdwdWJsaXNoQXNzZXRzSW5QYXJhbGxlbCcsICdyZXVzZUNyb3NzUmVnaW9uU3VwcG9ydFN0YWNrcycsICdzZWxmTXV0YXRpb24nLCAndXNlQ2hhbmdlU2V0cycsICd1c2VQaXBlbGluZVJvbGVGb3JBY3Rpb25zJ10sXG4gICAgcGFzc3Rocm91Z2hLZXlzOiBbJ2FydGlmYWN0QnVja2V0JywgJ2Fzc2V0UHVibGlzaGluZ0NvZGVCdWlsZERlZmF1bHRzJywgJ2Nka0Fzc2V0c0NsaVZlcnNpb24nLCAnY2xpVmVyc2lvbicsICdjb2RlQnVpbGREZWZhdWx0cycsICdjb2RlUGlwZWxpbmUnLCAnY3Jvc3NSZWdpb25SZXBsaWNhdGlvbkJ1Y2tldHMnLCAnZG9ja2VyQ3JlZGVudGlhbHMnLCAncGlwZWxpbmVOYW1lJywgJ3BpcGVsaW5lVHlwZScsICdyb2xlJywgJ3NlbGZNdXRhdGlvbkNvZGVCdWlsZERlZmF1bHRzJywgJ3N5bnRoJywgJ3N5bnRoQ29kZUJ1aWxkRGVmYXVsdHMnXSxcbiAgfSxcbn07XG5cbmNvbnN0IEVNUFRZX0tFWV9DT05GSUc6IE5hbWVzcGFjZUtleUNvbmZpZyA9IHsgYm9vbGVhbktleXM6IFtdLCBwYXNzdGhyb3VnaEtleXM6IFtdIH07XG5cbmZ1bmN0aW9uIGdldEN1c3RvbUtleShwcmVmaXg6IHN0cmluZywga2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7Q0RLX01FVEFEQVRBX1BSRUZJWH0ke3ByZWZpeH06JHtrZXl9YC50b0xvd2VyQ2FzZSgpO1xufVxuXG4vKipcbiAqIFRIRSB3YXkgdG8gcmVhZCBhIGJvb2xlYW4gbWV0YWRhdGEgdmFsdWUuIGBNZXRhRGF0YVR5cGVgIGFkbWl0cyBzdHJpbmdzLCBhbmRcbiAqIHBpcGVsaW5lLmpzb24gLyBBUEkgLyBDTEkgYm9kaWVzIHJvdXRpbmVseSBjYXJyeSBgXCJmYWxzZVwiYCwgd2hpY2ggcGxhaW5cbiAqIHRydXRoaW5lc3MgcmVhZHMgYXMgZW5hYmxlZC4gRXhwb3J0ZWQgc28gZXZlcnkgYm9vbGVhbiBrZXkgZ29lcyB0aHJvdWdoIGl0IOKAlFxuICogdHdvIGluIHBpcGVsaW5lLWJ1aWxkZXIgZGlkbid0LCBhbmQgYFwiZmFsc2VcImAgc3dpdGNoZWQgdGhlbSBPTi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVHJ1ZSh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHJldHVybiB2YWx1ZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSc7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqIEV4dHJhY3QgQ0RLIGNvbnN0cnVjdCBjb25maWcgZnJvbSBtZXRhZGF0YSBmb3IgYSBnaXZlbiBuYW1lc3BhY2UuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDb25maWdGcm9tTWV0YWRhdGEoXG4gIG1ldGFkYXRhOiBNZXRhRGF0YVR5cGUsXG4gIG5hbWVzcGFjZTogc3RyaW5nLFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBjb25zdCB7IGJvb2xlYW5LZXlzLCBwYXNzdGhyb3VnaEtleXMgfSA9XG4gICAgTkFNRVNQQUNFX0tFWV9NQVBbbmFtZXNwYWNlIGFzIE5hbWVzcGFjZV0gPz8gRU1QVFlfS0VZX0NPTkZJRztcblxuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgYm9vbGVhbktleXMpIHtcbiAgICBjb25zdCByYXcgPSBtZXRhZGF0YVtnZXRDdXN0b21LZXkobmFtZXNwYWNlLCBrZXkpXTtcbiAgICBpZiAocmF3ICE9PSB1bmRlZmluZWQpIHJlc3VsdFtrZXldID0gaXNUcnVlKHJhdyk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGtleSBvZiBwYXNzdGhyb3VnaEtleXMpIHtcbiAgICBjb25zdCByYXcgPSBtZXRhZGF0YVtnZXRDdXN0b21LZXkobmFtZXNwYWNlLCBrZXkpXTtcbiAgICBpZiAocmF3ICE9PSB1bmRlZmluZWQpIHJlc3VsdFtrZXldID0gcmF3O1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqIEV4dHJhY3QgQ29kZVBpcGVsaW5lIGNvbmZpZyBmcm9tIG1ldGFkYXRhLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ldGFkYXRhRm9yQ29kZVBpcGVsaW5lKG1ldGFkYXRhOiBNZXRhRGF0YVR5cGUpOiBQYXJ0aWFsPENvZGVQaXBlbGluZVByb3BzPiB7XG4gIHJldHVybiBidWlsZENvbmZpZ0Zyb21NZXRhZGF0YShtZXRhZGF0YSwgTkFNRVNQQUNFLkNPREVfUElQRUxJTkUpIGFzIFBhcnRpYWw8Q29kZVBpcGVsaW5lUHJvcHM+O1xufVxuXG4vKiogRXh0cmFjdCBDb2RlQnVpbGRTdGVwIGNvbmZpZyBmcm9tIG1ldGFkYXRhLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ldGFkYXRhRm9yQ29kZUJ1aWxkU3RlcChtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogUGFydGlhbDxDb2RlQnVpbGRTdGVwUHJvcHM+IHtcbiAgcmV0dXJuIGJ1aWxkQ29uZmlnRnJvbU1ldGFkYXRhKG1ldGFkYXRhLCBOQU1FU1BBQ0UuQ09ERV9CVUlMRF9TVEVQKSBhcyBQYXJ0aWFsPENvZGVCdWlsZFN0ZXBQcm9wcz47XG59XG5cbi8qKiBFeHRyYWN0IFNoZWxsU3RlcCBjb25maWcgZnJvbSBtZXRhZGF0YS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXRhZGF0YUZvclNoZWxsU3RlcChtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogUGFydGlhbDxTaGVsbFN0ZXBQcm9wcz4ge1xuICByZXR1cm4gYnVpbGRDb25maWdGcm9tTWV0YWRhdGEobWV0YWRhdGEsIE5BTUVTUEFDRS5TSEVMTF9TVEVQKSBhcyBQYXJ0aWFsPFNoZWxsU3RlcFByb3BzPjtcbn1cblxuLyoqIEV4dHJhY3QgQnVpbGRFbnZpcm9ubWVudCBjb25maWcgZnJvbSBtZXRhZGF0YS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXRhZGF0YUZvckJ1aWxkRW52aXJvbm1lbnQobWV0YWRhdGE6IE1ldGFEYXRhVHlwZSk6IFBhcnRpYWw8QnVpbGRFbnZpcm9ubWVudD4ge1xuICByZXR1cm4gYnVpbGRDb25maWdGcm9tTWV0YWRhdGEobWV0YWRhdGEsIE5BTUVTUEFDRS5CVUlMRF9FTlZJUk9OTUVOVCkgYXMgUGFydGlhbDxCdWlsZEVudmlyb25tZW50Pjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUeXBlZC1jb25maWcgZXh0cmFjdG9yczogZWMyOm5ldHdvcmsgLyBpYW06cm9sZSAvIGVjMjpzZWN1cml0eWdyb3VwIG1ldGFkYXRhXG4vLyAtPiB0aGUgZGlzY3JpbWluYXRlZC11bmlvbiBjb25maWcgb2JqZWN0cyB0aGUgYnVpbGRlciBhbHJlYWR5IGNvbnN1bWVzXG4vLyAoTmV0d29ya0NvbmZpZyAvIFJvbGVDb25maWcgLyBTZWN1cml0eUdyb3VwQ29uZmlnKS4gVW5saWtlIHRoZSBuYW1lc3BhY2VzXG4vLyBhYm92ZSAod2hpY2ggbWFwIDE6MSB0byBDREsgY29uc3RydWN0IHByb3BzKSwgdGhlc2UgZmVlZCByZXNvbHZlTmV0d29yayAvXG4vLyByZXNvbHZlUm9sZSAvIHJlc29sdmVTZWN1cml0eUdyb3VwLiBFYWNoIHJldHVybnMgdW5kZWZpbmVkIHdoZW4gaXRzIGtleXMgYXJlXG4vLyBhYnNlbnQsIHNvIGNhbGxlcnMgZmFsbCB0aHJvdWdoIHdpdGggYHByb3AgPz8gbWV0YWRhdGEgPz8gZW52YCBwcmVjZWRlbmNlLlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIGFzU3RyKHY6IHVua25vd24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYudHJpbSgpICE9PSAnJyA/IHYgOiB1bmRlZmluZWQ7XG59XG5cbi8qKiBBY2NlcHQgYSBKU09OIGFycmF5IG9yIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZyAtPiBzdHJpbmdbXSAodW5kZWZpbmVkIGlmIGVtcHR5KS4gKi9cbmZ1bmN0aW9uIGFzTGlzdCh2OiB1bmtub3duKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICBjb25zdCBpdGVtcyA9IEFycmF5LmlzQXJyYXkodilcbiAgICA/IHYubWFwKFN0cmluZykubWFwKHMgPT4gcy50cmltKCkpLmZpbHRlcihCb29sZWFuKVxuICAgIDogdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYudHJpbSgpICE9PSAnJ1xuICAgICAgPyB2LnNwbGl0KCcsJykubWFwKHMgPT4gcy50cmltKCkpLmZpbHRlcihCb29sZWFuKVxuICAgICAgOiBbXTtcbiAgcmV0dXJuIGl0ZW1zLmxlbmd0aCA+IDAgPyBpdGVtcyA6IHVuZGVmaW5lZDtcbn1cblxuLyoqIEFjY2VwdCBhIEpTT04gb2JqZWN0IG9yIGEgSlNPTiBzdHJpbmcgLT4gUmVjb3JkPHN0cmluZyxzdHJpbmc+ICh1bmRlZmluZWQgaWYgZW1wdHkpLiAqL1xuZnVuY3Rpb24gYXNUYWdzKHY6IHVua25vd24pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkIHtcbiAgbGV0IG9iajogdW5rbm93biA9IHY7XG4gIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycgJiYgdi50cmltKCkgIT09ICcnKSB7XG4gICAgdHJ5IHsgb2JqID0gSlNPTi5wYXJzZSh2KTsgfSBjYXRjaCB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgfVxuICBpZiAob2JqICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMob2JqIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5tYXAoKFtrLCB2YWxdKSA9PiBbaywgU3RyaW5nKHZhbCldIGFzIGNvbnN0KTtcbiAgICByZXR1cm4gZW50cmllcy5sZW5ndGggPiAwID8gT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpIDogdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKiB1bmRlZmluZWQgd2hlbiB0aGUga2V5IGlzIGFic2VudDsgb3RoZXJ3aXNlIGEgY29lcmNlZCBib29sZWFuLiAqL1xuZnVuY3Rpb24gYXNCb29sKHY6IHVua25vd24pOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHYgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGlzVHJ1ZSh2KTtcbn1cblxuLyoqIENvZXJjZSBhIG1ldGFkYXRhIHZhbHVlIHRvIGEgcG9zaXRpdmUgaW50ZWdlcjsgdW5kZWZpbmVkIGlmIGFic2VudC9pbnZhbGlkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzSW50KHY6IHVua25vd24pOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBpZiAodiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51bGwgfHwgdiA9PT0gJycpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IG4gPSB0eXBlb2YgdiA9PT0gJ251bWJlcicgPyB2IDogTnVtYmVyKFN0cmluZyh2KS50cmltKCkpO1xuICByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihuKSAmJiBuID4gMCA/IG4gOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQnVpbGQgYSBOZXR3b3JrQ29uZmlnIGZyb20gYGVjMjpuZXR3b3JrYCBtZXRhZGF0YSBrZXlzLiBUaGUgdmFyaWFudCBjb21lc1xuICogZnJvbSBORVRXT1JLX1RZUEUsIG9yIGlzIGluZmVycmVkIChzdWJuZXRJZHMgLT4gc3VibmV0SWRzLCB0YWdzIC0+IHZwY0xvb2t1cCxcbiAqIHZwY0lkIC0+IHZwY0lkKS4gUmV0dXJucyB1bmRlZmluZWQgd2hlbiBubyB1c2FibGUgbmV0d29yayBtZXRhZGF0YSBpcyBwcmVzZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV0d29ya0NvbmZpZ0Zyb21NZXRhZGF0YShtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogTmV0d29ya0NvbmZpZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHR5cGUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19UWVBFXSk7XG4gIGNvbnN0IHZwY0lkID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLk5FVFdPUktfVlBDX0lEXSk7XG4gIGNvbnN0IHN1Ym5ldElkcyA9IGFzTGlzdChtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19TVUJORVRfSURTXSk7XG4gIGNvbnN0IHN1Ym5ldFR5cGUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19TVUJORVRfVFlQRV0pIGFzIFN1Ym5ldFR5cGVOYW1lIHwgdW5kZWZpbmVkO1xuICBjb25zdCBhdmFpbGFiaWxpdHlab25lcyA9IGFzTGlzdChtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19BVkFJTEFCSUxJVFlfWk9ORVNdKTtcbiAgY29uc3Qgc3VibmV0R3JvdXBOYW1lID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLk5FVFdPUktfU1VCTkVUX0dST1VQX05BTUVdKTtcbiAgY29uc3Qgc2VjdXJpdHlHcm91cElkcyA9IGFzTGlzdChtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19TRUNVUklUWV9HUk9VUF9JRFNdKTtcbiAgY29uc3QgdGFncyA9IGFzVGFncyhtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19UQUdTXSk7XG4gIGNvbnN0IHZwY05hbWUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19WUENfTkFNRV0pO1xuICBjb25zdCByZWdpb24gPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19SRUdJT05dKTtcblxuICBjb25zdCB2YXJpYW50ID0gdHlwZSA/PyAoc3VibmV0SWRzID8gJ3N1Ym5ldElkcycgOiB0YWdzID8gJ3ZwY0xvb2t1cCcgOiB2cGNJZCA/ICd2cGNJZCcgOiB1bmRlZmluZWQpO1xuXG4gIHN3aXRjaCAodmFyaWFudCkge1xuICAgIGNhc2UgJ3N1Ym5ldElkcyc6XG4gICAgICBpZiAoIXZwY0lkIHx8ICFzdWJuZXRJZHMpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiAnc3VibmV0SWRzJywgb3B0aW9uczogeyB2cGNJZCwgc3VibmV0SWRzLCAuLi4oc2VjdXJpdHlHcm91cElkcyAmJiB7IHNlY3VyaXR5R3JvdXBJZHMgfSkgfSB9O1xuICAgIGNhc2UgJ3ZwY0lkJzpcbiAgICAgIGlmICghdnBjSWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAndnBjSWQnLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgdnBjSWQsXG4gICAgICAgICAgLi4uKHN1Ym5ldFR5cGUgJiYgeyBzdWJuZXRUeXBlIH0pLFxuICAgICAgICAgIC4uLihhdmFpbGFiaWxpdHlab25lcyAmJiB7IGF2YWlsYWJpbGl0eVpvbmVzIH0pLFxuICAgICAgICAgIC4uLihzdWJuZXRHcm91cE5hbWUgJiYgeyBzdWJuZXRHcm91cE5hbWUgfSksXG4gICAgICAgICAgLi4uKHNlY3VyaXR5R3JvdXBJZHMgJiYgeyBzZWN1cml0eUdyb3VwSWRzIH0pLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICBjYXNlICd2cGNMb29rdXAnOlxuICAgICAgaWYgKCF0YWdzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZwY0xvb2t1cCcsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICB0YWdzLFxuICAgICAgICAgIC4uLihzdWJuZXRUeXBlICYmIHsgc3VibmV0VHlwZSB9KSxcbiAgICAgICAgICAuLi4oYXZhaWxhYmlsaXR5Wm9uZXMgJiYgeyBhdmFpbGFiaWxpdHlab25lcyB9KSxcbiAgICAgICAgICAuLi4oc3VibmV0R3JvdXBOYW1lICYmIHsgc3VibmV0R3JvdXBOYW1lIH0pLFxuICAgICAgICAgIC4uLihzZWN1cml0eUdyb3VwSWRzICYmIHsgc2VjdXJpdHlHcm91cElkcyB9KSxcbiAgICAgICAgICAuLi4odnBjTmFtZSAmJiB7IHZwY05hbWUgfSksXG4gICAgICAgICAgLi4uKHJlZ2lvbiAmJiB7IHJlZ2lvbiB9KSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBCdWlsZCBhIFJvbGVDb25maWcgZnJvbSBgaWFtOnJvbGVgIG1ldGFkYXRhIGtleXMgKHJvbGVBcm4gLyByb2xlTmFtZSAvXG4gKiBjb2RlQnVpbGREZWZhdWx0KS4gVGhlIDQga2V5cyBjYW4ndCBleHByZXNzIHRoZSBmdWxsIGBvaWRjYCBvcHRpb24gc2V0LCBzbyBhblxuICogYG9pZGNgIHR5cGUgZnJvbSBtZXRhZGF0YSBpcyBpZ25vcmVkLiBSZXR1cm5zIHVuZGVmaW5lZCB3aGVuIG5vIGtleXMgYXJlIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvbGVDb25maWdGcm9tTWV0YWRhdGEobWV0YWRhdGE6IE1ldGFEYXRhVHlwZSk6IFJvbGVDb25maWcgfCB1bmRlZmluZWQge1xuICBjb25zdCB0eXBlID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLlJPTEVfVFlQRV0pO1xuICBjb25zdCByb2xlQXJuID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLlJPTEVfQVJOXSk7XG4gIGNvbnN0IHJvbGVOYW1lID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLlJPTEVfTkFNRV0pO1xuICBjb25zdCBtdXRhYmxlID0gYXNCb29sKG1ldGFkYXRhW01ldGFkYXRhS2V5cy5ST0xFX01VVEFCTEVdKTtcblxuICBjb25zdCB2YXJpYW50ID0gdHlwZSA/PyAocm9sZUFybiA/ICdyb2xlQXJuJyA6IHJvbGVOYW1lID8gJ3JvbGVOYW1lJyA6IHVuZGVmaW5lZCk7XG5cbiAgc3dpdGNoICh2YXJpYW50KSB7XG4gICAgY2FzZSAncm9sZUFybic6XG4gICAgICBpZiAoIXJvbGVBcm4pIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiAncm9sZUFybicsIG9wdGlvbnM6IHsgcm9sZUFybiwgLi4uKG11dGFibGUgIT09IHVuZGVmaW5lZCAmJiB7IG11dGFibGUgfSkgfSB9O1xuICAgIGNhc2UgJ3JvbGVOYW1lJzpcbiAgICAgIGlmICghcm9sZU5hbWUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiAncm9sZU5hbWUnLCBvcHRpb25zOiB7IHJvbGVOYW1lLCAuLi4obXV0YWJsZSAhPT0gdW5kZWZpbmVkICYmIHsgbXV0YWJsZSB9KSB9IH07XG4gICAgY2FzZSAnY29kZUJ1aWxkRGVmYXVsdCc6XG4gICAgICByZXR1cm4geyB0eXBlOiAnY29kZUJ1aWxkRGVmYXVsdCcsIG9wdGlvbnM6IHsgLi4uKHJvbGVOYW1lICYmIHsgcm9sZU5hbWUgfSkgfSB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogQnVpbGQgYSBTZWN1cml0eUdyb3VwQ29uZmlnIGZyb20gYGVjMjpzZWN1cml0eWdyb3VwYCBtZXRhZGF0YSBrZXlzXG4gKiAoc2VjdXJpdHlHcm91cElkcyAvIHNlY3VyaXR5R3JvdXBMb29rdXApLiBSZXR1cm5zIHVuZGVmaW5lZCB3aGVuIG5vIGtleXMgc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlHcm91cENvbmZpZ0Zyb21NZXRhZGF0YShtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogU2VjdXJpdHlHcm91cENvbmZpZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHR5cGUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuU0VDVVJJVFlfR1JPVVBfVFlQRV0pO1xuICBjb25zdCBpZHMgPSBhc0xpc3QobWV0YWRhdGFbTWV0YWRhdGFLZXlzLlNFQ1VSSVRZX0dST1VQX0lEU10pO1xuICBjb25zdCBtdXRhYmxlID0gYXNCb29sKG1ldGFkYXRhW01ldGFkYXRhS2V5cy5TRUNVUklUWV9HUk9VUF9NVVRBQkxFXSk7XG4gIGNvbnN0IG5hbWUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuU0VDVVJJVFlfR1JPVVBfTkFNRV0pO1xuICBjb25zdCB2cGNJZCA9IGFzU3RyKG1ldGFkYXRhW01ldGFkYXRhS2V5cy5TRUNVUklUWV9HUk9VUF9WUENfSURdKTtcblxuICBjb25zdCB2YXJpYW50ID0gdHlwZSA/PyAoaWRzID8gJ3NlY3VyaXR5R3JvdXBJZHMnIDogbmFtZSA/ICdzZWN1cml0eUdyb3VwTG9va3VwJyA6IHVuZGVmaW5lZCk7XG5cbiAgc3dpdGNoICh2YXJpYW50KSB7XG4gICAgY2FzZSAnc2VjdXJpdHlHcm91cElkcyc6XG4gICAgICBpZiAoIWlkcykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB7IHR5cGU6ICdzZWN1cml0eUdyb3VwSWRzJywgb3B0aW9uczogeyBzZWN1cml0eUdyb3VwSWRzOiBpZHMsIC4uLihtdXRhYmxlICE9PSB1bmRlZmluZWQgJiYgeyBtdXRhYmxlIH0pIH0gfTtcbiAgICBjYXNlICdzZWN1cml0eUdyb3VwTG9va3VwJzpcbiAgICAgIGlmICghbmFtZSB8fCAhdnBjSWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiAnc2VjdXJpdHlHcm91cExvb2t1cCcsIG9wdGlvbnM6IHsgc2VjdXJpdHlHcm91cE5hbWU6IG5hbWUsIHZwY0lkIH0gfTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKiogQSBDb2RlUGlwZWxpbmUgVjIgcGlwZWxpbmUtbGV2ZWwgdmFyaWFibGUgcGFyc2VkIGZyb20gYG9wZXJhdGlvbnMudmFyaWFibGVzYC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVWYXJpYWJsZVNwZWMge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2UgYG9wZXJhdGlvbnMudmFyaWFibGVzYCBtZXRhZGF0YSBpbnRvIENvZGVQaXBlbGluZSBWMiB2YXJpYWJsZSBzcGVjcy5cbiAqIEFjY2VwdHMgYSBKU09OIGFycmF5IChgW3tcIm5hbWVcIjpcIkVOVlwiLFwiZGVmYXVsdFwiOlwicHJvZFwiLFwiZGVzY3JpcHRpb25cIjpcIi4uLlwifV1gKVxuICogb3IgYSBjb21wYWN0IGNvbW1hLXNlcGFyYXRlZCBgbmFtZT1kZWZhdWx0YCBsaXN0IChgRU5WPXByb2QsUkVHSU9OPXVzLWVhc3QtMWApLlxuICogRW50cmllcyB3aXRob3V0IGEgdXNhYmxlIG5hbWUgYXJlIHNraXBwZWQ7IHJldHVybnMgW10gd2hlbiBub3RoaW5nIHZhbGlkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQaXBlbGluZVZhcmlhYmxlcyh2YWx1ZTogdW5rbm93bik6IFBpcGVsaW5lVmFyaWFibGVTcGVjW10ge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiBbXTtcblxuICAvLyBBbHJlYWR5IGFuIGFycmF5IChKU09OLXR5cGVkIG1ldGFkYXRhKSBvciBhIEpTT04tZW5jb2RlZCBzdHJpbmcuXG4gIGxldCBwYXJzZWQ6IHVua25vd24gPSB2YWx1ZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCB0cmltbWVkID0gdmFsdWUudHJpbSgpO1xuICAgIGlmICh0cmltbWVkLnN0YXJ0c1dpdGgoJ1snKSB8fCB0cmltbWVkLnN0YXJ0c1dpdGgoJ3snKSkge1xuICAgICAgdHJ5IHsgcGFyc2VkID0gSlNPTi5wYXJzZSh0cmltbWVkKTsgfSBjYXRjaCB7IHBhcnNlZCA9IHZhbHVlOyB9XG4gICAgfVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkocGFyc2VkKSkge1xuICAgIGNvbnN0IHNwZWNzOiBQaXBlbGluZVZhcmlhYmxlU3BlY1tdID0gW107XG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBwYXJzZWQpIHtcbiAgICAgIGlmICghZW50cnkgfHwgdHlwZW9mIGVudHJ5ICE9PSAnb2JqZWN0JykgY29udGludWU7XG4gICAgICBjb25zdCBlID0gZW50cnkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICBjb25zdCBuYW1lID0gYXNTdHIoZS5uYW1lKTtcbiAgICAgIGlmICghbmFtZSkgY29udGludWU7XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBhc1N0cihlLmRlZmF1bHQpID8/IGFzU3RyKGUuZGVmYXVsdFZhbHVlKTtcbiAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gYXNTdHIoZS5kZXNjcmlwdGlvbik7XG4gICAgICBzcGVjcy5wdXNoKHsgbmFtZSwgLi4uKGRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIHsgZGVmYXVsdFZhbHVlIH0pLCAuLi4oZGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZCAmJiB7IGRlc2NyaXB0aW9uIH0pIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc3BlY3M7XG4gIH1cblxuICAvLyBDb21wYWN0IGBuYW1lPWRlZmF1bHRgIGNvbW1hIGxpc3QuXG4gIGlmICh0eXBlb2YgcGFyc2VkID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IHNwZWNzOiBQaXBlbGluZVZhcmlhYmxlU3BlY1tdID0gW107XG4gICAgZm9yIChjb25zdCBwYWlyIG9mIHBhcnNlZC5zcGxpdCgnLCcpKSB7XG4gICAgICBjb25zdCBpZHggPSBwYWlyLmluZGV4T2YoJz0nKTtcbiAgICAgIGNvbnN0IG5hbWUgPSAoaWR4ID09PSAtMSA/IHBhaXIgOiBwYWlyLnNsaWNlKDAsIGlkeCkpLnRyaW0oKTtcbiAgICAgIGlmICghbmFtZSkgY29udGludWU7XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBpZHggPT09IC0xID8gdW5kZWZpbmVkIDogcGFpci5zbGljZShpZHggKyAxKS50cmltKCk7XG4gICAgICBzcGVjcy5wdXNoKHsgbmFtZSwgLi4uKGRlZmF1bHRWYWx1ZSA/IHsgZGVmYXVsdFZhbHVlIH0gOiB7fSkgfSk7XG4gICAgfVxuICAgIHJldHVybiBzcGVjcztcbiAgfVxuXG4gIHJldHVybiBbXTtcbn1cbiJdfQ==
|