@mnaoumov/typescript-dev-toolkit 5.0.0 → 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundlers/esbuild-impl/svelte-preprocessor/package.json +6 -0
- package/dist/lib/cjs/bulk-concurrency.cjs +49 -0
- package/dist/lib/cjs/bulk-concurrency.d.cts +14 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/index.cjs +4 -1
- package/dist/lib/cjs/bundlers/esbuild-impl/index.d.cts +1 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/svelte-preprocessor.cjs +152 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/svelte-preprocessor.d.cts +95 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/svelte-wrapper-plugin.cjs +4 -3
- package/dist/lib/cjs/bundlers/esbuild-impl/svelte-wrapper-plugin.d.cts +1 -1
- package/dist/lib/cjs/docs-site/docs-links.cjs +3 -2
- package/dist/lib/cjs/docs-site/og-images.cjs +3 -2
- package/dist/lib/cjs/index.cjs +4 -1
- package/dist/lib/cjs/index.d.cts +1 -0
- package/dist/lib/cjs/linters/eslint-config.cjs +2 -1
- package/dist/lib/cjs/linters/eslint-no-restricted-syntax.cjs +5 -1
- package/dist/lib/cjs/linters/eslint-rules/import-fix.cjs +116 -0
- package/dist/lib/cjs/linters/eslint-rules/import-fix.d.cts +49 -0
- package/dist/lib/cjs/linters/eslint-rules/in-house-plugin.cjs +5 -1
- package/dist/lib/cjs/linters/eslint-rules/index.cjs +10 -1
- package/dist/lib/cjs/linters/eslint-rules/index.d.cts +3 -0
- package/dist/lib/cjs/linters/eslint-rules/prefer-dedent.cjs +189 -0
- package/dist/lib/cjs/linters/eslint-rules/prefer-dedent.d.cts +10 -0
- package/dist/lib/cjs/linters/eslint-rules/prefer-noop-async.cjs +57 -3
- package/dist/lib/cjs/linters/eslint-rules/readonly-member-arrays.cjs +130 -0
- package/dist/lib/cjs/linters/eslint-rules/readonly-member-arrays.d.cts +6 -0
- package/dist/lib/cjs/linters/markdownlint.cjs +8 -2
- package/dist/lib/cjs/linters/over-exposure.cjs +14 -3
- package/dist/lib/cjs/linters/over-exposure.d.cts +3 -1
- package/dist/lib/cjs/nano-staged-config.cjs +24 -3
- package/dist/lib/cjs/nano-staged-config.d.cts +4 -0
- package/dist/lib/cjs/test-runners/auto.cjs +1 -1
- package/dist/lib/cjs/test-runners/auto.d.cts +5 -0
- package/dist/lib/cjs/test-runners/forwarded-arguments.cjs +50 -0
- package/dist/lib/cjs/test-runners/forwarded-arguments.d.cts +49 -0
- package/dist/lib/cjs/test-runners/index.cjs +4 -1
- package/dist/lib/cjs/test-runners/index.d.cts +1 -0
- package/dist/lib/cjs/test-runners/jest.cjs +16 -3
- package/dist/lib/cjs/test-runners/jest.d.cts +5 -0
- package/dist/lib/cjs/test-runners/vitest.cjs +111 -5
- package/dist/lib/cjs/test-runners/vitest.d.cts +5 -0
- package/dist/lib/esm/bulk-concurrency.d.mts +14 -0
- package/dist/lib/esm/bulk-concurrency.mjs +15 -0
- package/dist/lib/esm/bundlers/esbuild-impl/index.d.mts +1 -0
- package/dist/lib/esm/bundlers/esbuild-impl/index.mjs +3 -1
- package/dist/lib/esm/bundlers/esbuild-impl/svelte-preprocessor.d.mts +95 -0
- package/dist/lib/esm/bundlers/esbuild-impl/svelte-preprocessor.mjs +126 -0
- package/dist/lib/esm/bundlers/esbuild-impl/svelte-wrapper-plugin.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/svelte-wrapper-plugin.mjs +4 -3
- package/dist/lib/esm/docs-site/docs-links.mjs +3 -2
- package/dist/lib/esm/docs-site/og-images.mjs +3 -2
- package/dist/lib/esm/index.d.mts +1 -0
- package/dist/lib/esm/index.mjs +3 -1
- package/dist/lib/esm/linters/eslint-config.mjs +2 -1
- package/dist/lib/esm/linters/eslint-no-restricted-syntax.mjs +5 -1
- package/dist/lib/esm/linters/eslint-rules/import-fix.d.mts +49 -0
- package/dist/lib/esm/linters/eslint-rules/import-fix.mjs +90 -0
- package/dist/lib/esm/linters/eslint-rules/in-house-plugin.mjs +5 -1
- package/dist/lib/esm/linters/eslint-rules/index.d.mts +3 -0
- package/dist/lib/esm/linters/eslint-rules/index.mjs +7 -1
- package/dist/lib/esm/linters/eslint-rules/prefer-dedent.d.mts +10 -0
- package/dist/lib/esm/linters/eslint-rules/prefer-dedent.mjs +168 -0
- package/dist/lib/esm/linters/eslint-rules/prefer-noop-async.mjs +61 -3
- package/dist/lib/esm/linters/eslint-rules/readonly-member-arrays.d.mts +6 -0
- package/dist/lib/esm/linters/eslint-rules/readonly-member-arrays.mjs +106 -0
- package/dist/lib/esm/linters/markdownlint.mjs +8 -2
- package/dist/lib/esm/linters/over-exposure.d.mts +3 -1
- package/dist/lib/esm/linters/over-exposure.mjs +16 -3
- package/dist/lib/esm/nano-staged-config.d.mts +4 -0
- package/dist/lib/esm/nano-staged-config.mjs +24 -3
- package/dist/lib/esm/test-runners/auto.d.mts +5 -0
- package/dist/lib/esm/test-runners/auto.mjs +1 -1
- package/dist/lib/esm/test-runners/forwarded-arguments.d.mts +49 -0
- package/dist/lib/esm/test-runners/forwarded-arguments.mjs +26 -0
- package/dist/lib/esm/test-runners/index.d.mts +1 -0
- package/dist/lib/esm/test-runners/index.mjs +3 -1
- package/dist/lib/esm/test-runners/jest.d.mts +5 -0
- package/dist/lib/esm/test-runners/jest.mjs +16 -3
- package/dist/lib/esm/test-runners/vitest.d.mts +5 -0
- package/dist/lib/esm/test-runners/vitest.mjs +105 -6
- package/linters/eslint-rules/import-fix/package.json +6 -0
- package/linters/eslint-rules/prefer-dedent/package.json +6 -0
- package/linters/eslint-rules/readonly-member-arrays/package.json +6 -0
- package/package.json +5 -2
- package/test-runners/forwarded-arguments/package.json +6 -0
package/dist/lib/cjs/index.cjs
CHANGED
|
@@ -34,6 +34,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
34
34
|
var index_exports = {};
|
|
35
35
|
__export(index_exports, {
|
|
36
36
|
build: () => build,
|
|
37
|
+
"bulk-concurrency": () => bulk_concurrency,
|
|
37
38
|
bundlers: () => bundlers,
|
|
38
39
|
"check-project-types": () => check_project_types,
|
|
39
40
|
"cli-utils": () => cli_utils,
|
|
@@ -72,6 +73,7 @@ __export(index_exports, {
|
|
|
72
73
|
});
|
|
73
74
|
module.exports = __toCommonJS(index_exports);
|
|
74
75
|
var build = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./build.cjs')), 1);
|
|
76
|
+
var bulk_concurrency = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./bulk-concurrency.cjs')), 1);
|
|
75
77
|
var bundlers = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./bundlers/index.cjs')), 1);
|
|
76
78
|
var check_project_types = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./check-project-types.cjs')), 1);
|
|
77
79
|
var cli_utils = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./cli-utils.cjs')), 1);
|
|
@@ -110,6 +112,7 @@ var version = __toESM(((module) => module && module.__esModule && 'default' in m
|
|
|
110
112
|
// Annotate the CommonJS export names for ESM import in node:
|
|
111
113
|
0 && (module.exports = {
|
|
112
114
|
build,
|
|
115
|
+
"bulk-concurrency": null,
|
|
113
116
|
bundlers,
|
|
114
117
|
"check-project-types": null,
|
|
115
118
|
"cli-utils": null,
|
|
@@ -146,4 +149,4 @@ var version = __toESM(((module) => module && module.__esModule && 'default' in m
|
|
|
146
149
|
"validate-dependencies": null,
|
|
147
150
|
version
|
|
148
151
|
});
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ2J1aWxkJyBmcm9tICcuL2J1aWxkLnRzJztcbmV4cG9ydCAqIGFzICdidWxrLWNvbmN1cnJlbmN5JyBmcm9tICcuL2J1bGstY29uY3VycmVuY3kudHMnO1xuZXhwb3J0ICogYXMgJ2J1bmRsZXJzJyBmcm9tICcuL2J1bmRsZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdjaGVjay1wcm9qZWN0LXR5cGVzJyBmcm9tICcuL2NoZWNrLXByb2plY3QtdHlwZXMudHMnO1xuZXhwb3J0ICogYXMgJ2NsaS11dGlscycgZnJvbSAnLi9jbGktdXRpbHMudHMnO1xuZXhwb3J0ICogYXMgJ2NvZGUtZ2VuZXJhdG9yJyBmcm9tICcuL2NvZGUtZ2VuZXJhdG9yLnRzJztcbmV4cG9ydCAqIGFzICdjb21taXRsaW50LWNvbmZpZycgZnJvbSAnLi9jb21taXRsaW50LWNvbmZpZy50cyc7XG5leHBvcnQgKiBhcyAnY29tbWl0bGludC1mb3JiaWRkZW4tcGF0dGVybnMnIGZyb20gJy4vY29tbWl0bGludC1mb3JiaWRkZW4tcGF0dGVybnMudHMnO1xuZXhwb3J0ICogYXMgJ2NvbW1pdGxpbnQtbGludC1tZC1oZWFkZXInIGZyb20gJy4vY29tbWl0bGludC1saW50LW1kLWhlYWRlci50cyc7XG5leHBvcnQgKiBhcyAnY29tbWl0bGludC1zcGVsbGNoZWNrLWhlYWRlcicgZnJvbSAnLi9jb21taXRsaW50LXNwZWxsY2hlY2staGVhZGVyLnRzJztcbmV4cG9ydCAqIGFzICdkb2NzLXNpdGUnIGZyb20gJy4vZG9jcy1zaXRlL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdlbnYtdG9nZ2xlJyBmcm9tICcuL2Vudi10b2dnbGUudHMnO1xuZXhwb3J0ICogYXMgJ2V4ZWMnIGZyb20gJy4vZXhlYy50cyc7XG5leHBvcnQgKiBhcyAnZm9yYmlkZGVuLXBhdHRlcm5zJyBmcm9tICcuL2ZvcmJpZGRlbi1wYXR0ZXJucy50cyc7XG5leHBvcnQgKiBhcyAnZm9ybWF0dGVycycgZnJvbSAnLi9mb3JtYXR0ZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdmcycgZnJvbSAnLi9mcy50cyc7XG5leHBvcnQgKiBhcyAnZ2F0ZScgZnJvbSAnLi9nYXRlLnRzJztcbmV4cG9ydCAqIGFzICdnaXQnIGZyb20gJy4vZ2l0LnRzJztcbmV4cG9ydCAqIGFzICdqc29uJyBmcm9tICcuL2pzb24udHMnO1xuZXhwb3J0ICogYXMgJ2xpYnJhcnktYnVpbGQnIGZyb20gJy4vbGlicmFyeS1idWlsZC50cyc7XG5leHBvcnQgKiBhcyAnbGludGVycycgZnJvbSAnLi9saW50ZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICduYW5vLXN0YWdlZC1jb25maWcnIGZyb20gJy4vbmFuby1zdGFnZWQtY29uZmlnLnRzJztcbmV4cG9ydCAqIGFzICducG0tcHVibGlzaCcgZnJvbSAnLi9ucG0tcHVibGlzaC50cyc7XG5leHBvcnQgKiBhcyAnbnBtLXJ1bicgZnJvbSAnLi9ucG0tcnVuLnRzJztcbmV4cG9ydCAqIGFzICducG0nIGZyb20gJy4vbnBtLnRzJztcbmV4cG9ydCAqIGFzICdwYWNrYWdlLWxvY2staW50ZWdyaXR5JyBmcm9tICcuL3BhY2thZ2UtbG9jay1pbnRlZ3JpdHkudHMnO1xuZXhwb3J0ICogYXMgJ3BhY2thZ2UtbWFuYWdlcicgZnJvbSAnLi9wYWNrYWdlLW1hbmFnZXIudHMnO1xuZXhwb3J0ICogYXMgJ3JlbGVhc2VkLWlzc3VlcycgZnJvbSAnLi9yZWxlYXNlZC1pc3N1ZXMudHMnO1xuZXhwb3J0ICogYXMgJ3JlcG8tcGF0aHMnIGZyb20gJy4vcmVwby1wYXRocy50cyc7XG5leHBvcnQgKiBhcyAncm9vdCcgZnJvbSAnLi9yb290LnRzJztcbmV4cG9ydCAqIGFzICdzaGFyZWQtY29uZmlnLWZpbGVzJyBmcm9tICcuL3NoYXJlZC1jb25maWctZmlsZXMudHMnO1xuZXhwb3J0ICogYXMgJ3Rlc3QtcnVubmVycycgZnJvbSAnLi90ZXN0LXJ1bm5lcnMvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ3Vwc3RyZWFtLXN5bmMtY2xpJyBmcm9tICcuL3Vwc3RyZWFtLXN5bmMtY2xpLnRzJztcbmV4cG9ydCAqIGFzICd1cHN0cmVhbS1zeW5jJyBmcm9tICcuL3Vwc3RyZWFtLXN5bmMudHMnO1xuZXhwb3J0ICogYXMgJ3ZhbGlkYXRlLWRlY2xhcmF0aW9ucycgZnJvbSAnLi92YWxpZGF0ZS1kZWNsYXJhdGlvbnMudHMnO1xuZXhwb3J0ICogYXMgJ3ZhbGlkYXRlLWRlcGVuZGVuY2llcycgZnJvbSAnLi92YWxpZGF0ZS1kZXBlbmRlbmNpZXMudHMnO1xuZXhwb3J0ICogYXMgJ3ZlcnNpb24nIGZyb20gJy4vdmVyc2lvbi50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQSw0QkFBQUE7QUFBQSxFQUFBO0FBQUEsK0JBQUFDO0FBQUEsRUFBQSxtQkFBQUM7QUFBQSxFQUFBLHdCQUFBQztBQUFBLEVBQUEsMkJBQUFDO0FBQUEsRUFBQSx1Q0FBQUM7QUFBQSxFQUFBLG1DQUFBQztBQUFBLEVBQUEsc0NBQUFDO0FBQUEsRUFBQSxtQkFBQUM7QUFBQSxFQUFBLG9CQUFBQztBQUFBLEVBQUE7QUFBQSw4QkFBQUM7QUFBQSxFQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSx5QkFBQUM7QUFBQSxFQUFBO0FBQUEsOEJBQUFDO0FBQUEsRUFBQTtBQUFBLHVCQUFBQztBQUFBLEVBQUEsaUJBQUFDO0FBQUEsRUFBQSxnQ0FBQUM7QUFBQSxFQUFBLHlCQUFBQztBQUFBLEVBQUEseUJBQUFDO0FBQUEsRUFBQSxvQkFBQUM7QUFBQSxFQUFBO0FBQUEsK0JBQUFDO0FBQUEsRUFBQSxzQkFBQUM7QUFBQSxFQUFBLHVCQUFBQztBQUFBLEVBQUEsMkJBQUFDO0FBQUEsRUFBQSwrQkFBQUM7QUFBQSxFQUFBLCtCQUFBQztBQUFBLEVBQUE7QUFBQTtBQUFBO0FBRUEsWUFBeUI7QUFDekIsSUFBQXhCLG1CQUFvQztBQUNwQyxlQUE0QjtBQUM1QixJQUFBQyxzQkFBdUM7QUFDdkMsSUFBQUMsWUFBNkI7QUFDN0IsSUFBQUMsaUJBQWtDO0FBQ2xDLElBQUFDLG9CQUFxQztBQUNyQyxJQUFBQyxnQ0FBaUQ7QUFDakQsSUFBQUMsNEJBQTZDO0FBQzdDLElBQUFDLCtCQUFnRDtBQUNoRCxJQUFBQyxZQUE2QjtBQUM3QixJQUFBQyxhQUE4QjtBQUM5QixXQUF3QjtBQUN4QixJQUFBQyxxQkFBc0M7QUFDdEMsaUJBQThCO0FBQzlCLFNBQXNCO0FBQ3RCLFdBQXdCO0FBQ3hCLFVBQXVCO0FBQ3ZCLFdBQXdCO0FBQ3hCLElBQUFDLGdCQUFpQztBQUNqQyxjQUEyQjtBQUMzQixJQUFBQyxxQkFBc0M7QUFDdEMsSUFBQUMsY0FBK0I7QUFDL0IsSUFBQUMsVUFBMkI7QUFDM0IsVUFBdUI7QUFDdkIsSUFBQUMseUJBQTBDO0FBQzFDLElBQUFDLGtCQUFtQztBQUNuQyxJQUFBQyxrQkFBbUM7QUFDbkMsSUFBQUMsYUFBOEI7QUFDOUIsV0FBd0I7QUFDeEIsSUFBQUMsc0JBQXVDO0FBQ3ZDLElBQUFDLGVBQWdDO0FBQ2hDLElBQUFFLG9CQUFxQztBQUNyQyxJQUFBRCxnQkFBaUM7QUFDakMsSUFBQUUsd0JBQXlDO0FBQ3pDLElBQUFDLHdCQUF5QztBQUN6QyxjQUEyQjsiLAogICJuYW1lcyI6IFsiYnVsay1jb25jdXJyZW5jeSIsICJjaGVjay1wcm9qZWN0LXR5cGVzIiwgImNsaS11dGlscyIsICJjb2RlLWdlbmVyYXRvciIsICJjb21taXRsaW50LWNvbmZpZyIsICJjb21taXRsaW50LWZvcmJpZGRlbi1wYXR0ZXJucyIsICJjb21taXRsaW50LWxpbnQtbWQtaGVhZGVyIiwgImNvbW1pdGxpbnQtc3BlbGxjaGVjay1oZWFkZXIiLCAiZG9jcy1zaXRlIiwgImVudi10b2dnbGUiLCAiZm9yYmlkZGVuLXBhdHRlcm5zIiwgImxpYnJhcnktYnVpbGQiLCAibmFuby1zdGFnZWQtY29uZmlnIiwgIm5wbS1wdWJsaXNoIiwgIm5wbS1ydW4iLCAicGFja2FnZS1sb2NrLWludGVncml0eSIsICJwYWNrYWdlLW1hbmFnZXIiLCAicmVsZWFzZWQtaXNzdWVzIiwgInJlcG8tcGF0aHMiLCAic2hhcmVkLWNvbmZpZy1maWxlcyIsICJ0ZXN0LXJ1bm5lcnMiLCAidXBzdHJlYW0tc3luYyIsICJ1cHN0cmVhbS1zeW5jLWNsaSIsICJ2YWxpZGF0ZS1kZWNsYXJhdGlvbnMiLCAidmFsaWRhdGUtZGVwZW5kZW5jaWVzIl0KfQo=
|
package/dist/lib/cjs/index.d.cts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
/// <reference lib="esnext.disposable" />
|
|
5
5
|
/// <reference types="node" />
|
|
6
6
|
export * as 'build' from './build.cjs';
|
|
7
|
+
export * as 'bulk-concurrency' from './bulk-concurrency.cjs';
|
|
7
8
|
export * as 'bundlers' from './bundlers/index.cjs';
|
|
8
9
|
export * as 'check-project-types' from './check-project-types.cjs';
|
|
9
10
|
export * as 'cli-utils' from './cli-utils.cjs';
|
|
@@ -483,6 +483,7 @@ function getInHousePluginConfigs(context) {
|
|
|
483
483
|
"typescript-dev-toolkit/no-unused-params-members": "error",
|
|
484
484
|
"typescript-dev-toolkit/no-used-underscore-variables": "error",
|
|
485
485
|
"typescript-dev-toolkit/params-options-name-match": "error",
|
|
486
|
+
"typescript-dev-toolkit/prefer-dedent": "error",
|
|
486
487
|
"typescript-dev-toolkit/prefer-logical-operator-over-ternary": "error",
|
|
487
488
|
"typescript-dev-toolkit/prefer-noop-async": "error",
|
|
488
489
|
"typescript-dev-toolkit/readonly-interface-members": "error",
|
|
@@ -1075,4 +1076,4 @@ function getUnicornConfigs(context) {
|
|
|
1075
1076
|
getGlobalIgnoreConfigs,
|
|
1076
1077
|
getTypeScriptEslintConfigs
|
|
1077
1078
|
});
|
|
1078
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1jb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBnZW5lcmljIGhhbGYgb2YgdGhlIHNoYXJlZCBFU0xpbnQgY29uZmlndXJhdGlvbiwgZm9yIGFueSBUeXBlU2NyaXB0IHByb2plY3QuXG4gKlxuICogSXQgaW50ZWdyYXRlcyBFU0xpbnQncyBvd24gcmVjb21tZW5kZWQgcnVsZXMsIGB0eXBlc2NyaXB0LWVzbGludGAsIGBAc3R5bGlzdGljL2VzbGludC1wbHVnaW5gLFxuICogYGVzbGludC1wbHVnaW4taW1wb3J0LXhgIHdpdGggaXRzIFR5cGVTY3JpcHQgcmVzb2x2ZXIsIGBlc2xpbnQtcGx1Z2luLXBlcmZlY3Rpb25pc3RgLCBgZXNsaW50LXBsdWdpbi11bmljb3JuYCxcbiAqIGBlc2xpbnQtcGx1Z2luLW5gIGFuZCB0aGUgZ2VuZXJpYyBpbi1ob3VzZSBydWxlcy4gQSBwcm9qZWN0LXR5cGUgbGF5ZXIgKHRoZSBPYnNpZGlhbiBwbHVnaW4gb25lIGxpdmVzIGluXG4gKiBgQG1uYW91bW92L29ic2lkaWFuLWRldi10b29sa2l0YCkgYnVpbGRzIG9uIHtAbGluayBnZXRUeXBlU2NyaXB0RXNsaW50Q29uZmlnc30gYW5kIGFkZHMgb25seSB3aGF0IGlzIHNwZWNpZmljIHRvIGl0LlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBEZWNsYXJhdGl2ZSBFU0xpbnQgcnVsZS9wbHVnaW4gY29uZmlndXJhdGlvbjsgY29ycmVjdG5lc3MgaXMgdmVyaWZpZWQgYnkgcnVubmluZyBFU0xpbnQsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IExpbnRlciB9IGZyb20gJ2VzbGludCc7XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLW1hZ2ljLW51bWJlcnMgLS0gV2UgZGlzYWJsZWQgbWFnaWMgbnVtYmVycyBiZWNhdXNlIHRoZXkgYXJlIHVzZWQgYWxsIG92ZXIgdGhlIGNvbmZpZ3MuICovXG5pbXBvcnQgY29tbWVudHNDb25maWdzIGZyb20gJ0Blc2xpbnQtY29tbXVuaXR5L2VzbGludC1wbHVnaW4tZXNsaW50LWNvbW1lbnRzL2NvbmZpZ3MnO1xuaW1wb3J0IHsgaW5jbHVkZUlnbm9yZUZpbGUgfSBmcm9tICdAZXNsaW50L2NvbmZpZy1oZWxwZXJzJztcbmltcG9ydCBlc2xpbnQgZnJvbSAnQGVzbGludC9qcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXJlbmFtZS1kZWZhdWx0IC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBwbHVnaW5gIGlzIHRvbyBjb25mdXNpbmcuXG5pbXBvcnQgc3R5bGlzdGljIGZyb20gJ0BzdHlsaXN0aWMvZXNsaW50LXBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVUeXBlU2NyaXB0SW1wb3J0UmVzb2x2ZXIgfSBmcm9tICdlc2xpbnQtaW1wb3J0LXJlc29sdmVyLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgZmxhdENvbmZpZ3MgYXMgZXNsaW50UGx1Z2luSW1wb3J0WEZsYXRDb25maWdzIH0gZnJvbSAnZXNsaW50LXBsdWdpbi1pbXBvcnQteCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tcmVuYW1lLWRlZmF1bHQgLS0gVGhlIGRlZmF1bHQgZXhwb3J0IG5hbWUgYF9kZWZhdWx0YCBpcyB0b28gY29uZnVzaW5nLlxuaW1wb3J0IG5vZGVQbHVnaW4gZnJvbSAnZXNsaW50LXBsdWdpbi1uJztcbmltcG9ydCB7IGNvbmZpZ3MgYXMgcGVyZmVjdGlvbmlzdENvbmZpZ3MgfSBmcm9tICdlc2xpbnQtcGx1Z2luLXBlcmZlY3Rpb25pc3QnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXJlbmFtZS1kZWZhdWx0IC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBpbmRleGAgaXMgdG9vIGNvbmZ1c2luZy5cbmltcG9ydCB1bmljb3JuIGZyb20gJ2VzbGludC1wbHVnaW4tdW5pY29ybic7XG5pbXBvcnQge1xuICBkZWZpbmVDb25maWcsXG4gIGdsb2JhbElnbm9yZXNcbn0gZnJvbSAnZXNsaW50L2NvbmZpZyc7XG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tcmVuYW1lLWRlZmF1bHQgLS0gVGhlIGRlZmF1bHQgZXhwb3J0IG5hbWUgYF9kZWZhdWx0YCBpcyB0b28gY29uZnVzaW5nLlxuaW1wb3J0IHRzZXNsaW50IGZyb20gJ3R5cGVzY3JpcHQtZXNsaW50JztcblxuaW1wb3J0IHsgUmVwb1BhdGhzIH0gZnJvbSAnLi4vcmVwby1wYXRocy50cyc7XG5pbXBvcnQgeyBnZXRSb290Rm9sZGVyIH0gZnJvbSAnLi4vcm9vdC50cyc7XG5pbXBvcnQgeyBub1Jlc3RyaWN0ZWRTeW50YXhSdWxlRW50cmllcyB9IGZyb20gJy4vZXNsaW50LW5vLXJlc3RyaWN0ZWQtc3ludGF4LnRzJztcbmltcG9ydCB7XG4gIElOX0hPVVNFX0VTTElOVF9QTFVHSU5fTkFNRSxcbiAgaW5Ib3VzZUVzbGludFBsdWdpblxufSBmcm9tICcuL2VzbGludC1ydWxlcy9pbi1ob3VzZS1wbHVnaW4udHMnO1xuaW1wb3J0IHsgQ0xBVURFX1dPUktUUkVFU19JR05PUkVfR0xPQiB9IGZyb20gJy4vbGludC1pZ25vcmVzLnRzJztcblxuLyoqXG4gKiBUaGUgcGFyYW1ldGVycyBmb3IgZGVmaW5pbmcgRVNMaW50IGNvbmZpZ3VyYXRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmluZUVzbGludENvbmZpZ3NPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCBidWlsZHMgY3VzdG9tIEVTTGludCBjb25maWd1cmF0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgRVNMaW50IGNvbmZpZ3VyYXRpb24gY29udGV4dC5cbiAgICogQHJldHVybnMgVGhlIGN1c3RvbSBFU0xpbnQgY29uZmlndXJhdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBjdXN0b21Db25maWdzPzogKGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQpID0+IExpbnRlci5Db25maWdbXTtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IGVkaXRzIHRoZSBFU0xpbnQgY29uZmlndXJhdGlvbiBjb250ZXh0LlxuICAgKlxuICAgKiBAcGFyYW0gY29udGV4dCAtIFRoZSBFU0xpbnQgY29uZmlndXJhdGlvbiBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgZWRpdENvbnRleHQ/OiAoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogVGhlIG9sZGVzdCBOb2RlIHZlcnNpb24gc2hpcHBlZCBzb3VyY2UgaGFzIHRvIHJ1biBvbiwgYXMgYSBzZW12ZXIgcmFuZ2U6IGEgbGlicmFyeSB0aGF0IGFsc28gcnVucyBpbnNpZGUgYW5cbiAgICogb2xkZXIgcnVudGltZSB0aGFuIGl0cyBvd24gdG9vbGluZyAoYW4gT2JzaWRpYW4gcmVuZGVyZXIsIHNheSkgbmFtZXMgdGhhdCBydW50aW1lJ3MgTm9kZSBoZXJlLiBXaGVuIG9taXR0ZWQsXG4gICAqIGBlc2xpbnQtcGx1Z2luLW5gIHJlYWRzIHRoZSBgZW5naW5lc2AgZmllbGQgb2YgdGhlIHByb2plY3QncyBgcGFja2FnZS5qc29uYC5cbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1Ob2RlVmVyc2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgcGFyYW1ldGVycyBmb3Ige0BsaW5rIGdldFR5cGVTY3JpcHRFc2xpbnRDb25maWdzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRUeXBlU2NyaXB0RXNsaW50Q29uZmlnc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgRVNMaW50IGNvbmZpZ3VyYXRpb24gY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQ7XG5cbiAgLyoqXG4gICAqIFRoZSBvbGRlc3QgTm9kZSB2ZXJzaW9uIHNoaXBwZWQgc291cmNlIGhhcyB0byBydW4gb24sIGFzIGEgc2VtdmVyIHJhbmdlLiBXaGVuIG9taXR0ZWQsIGBlc2xpbnQtcGx1Z2luLW5gIHJlYWRzXG4gICAqIHRoZSBgZW5naW5lc2AgZmllbGQgb2YgdGhlIHByb2plY3QncyBgcGFja2FnZS5qc29uYC5cbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1Ob2RlVmVyc2lvbj86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEdldE5vZGVDb21wYXRDb25maWdzUGFyYW1zIHtcbiAgcmVhZG9ubHkgY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dDtcbiAgcmVhZG9ubHkgbWluaW11bU5vZGVWZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogVGhlIGNvbnRleHQgZm9yIGRlZmluaW5nIEVTTGludCBjb25maWd1cmF0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEVzbGludENvbmZpZ0NvbnRleHQge1xuICAvKipcbiAgICogVGhlIHJvb3QgY29uZmlndXJhdGlvbiBmaWxlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByb290Q29uZmlnRmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBzY3JpcHQgZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2NyaXB0RmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc291cmNlRmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkZXJzIGhvbGRpbmcgdGhlIHByb2plY3QncyBzb3VyY2VzLCBieSBkZWZhdWx0IGBzcmNgIGFsb25lLiBBIHdvcmtzcGFjZSB3aG9zZSBwYWNrYWdlcyBlYWNoIGhhdmUgdGhlaXIgb3duXG4gICAqIGBzcmNgIGFkZHMgdGhlbSBoZXJlLCBzbyB0aGUgcnVsZXMga2V5ZWQgb24gYSBmaWxlJ3MgbmFtZSBpbnNpZGUgYSBzb3VyY2UgZm9sZGVyIHJlYWNoIHRob3NlIHBhY2thZ2VzIHRvby5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzb3VyY2VGb2xkZXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgdGVzdCBmaWxlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0ZXN0RmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBhbGwgZmlsZXMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBhbGwgZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgYWxsRmlsZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbLi4udGhpcy50ZXN0RmlsZXMsIC4uLnRoaXMuc2NyaXB0RmlsZXMsIC4uLnRoaXMucm9vdENvbmZpZ0ZpbGVzLCAuLi50aGlzLnNvdXJjZUZpbGVzXTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGNvbnRleHQgb2YgYSBwcm9qZWN0IGxhaWQgb3V0IHRoZSBjb252ZW50aW9uYWwgd2F5OiBzb3VyY2VzIHVuZGVyIGBzcmNgLCBzY3JpcHRzIHVuZGVyIGBzY3JpcHRzYCwgdGVzdHNcbiAqIGJlc2lkZSB0aGUgc291cmNlcyBvciB1bmRlciBgX190ZXN0c19fYCwgYW5kIHRoZSBjb21taXRsaW50LCBFU0xpbnQgYW5kIFZpdGVzdCBjb25maWd1cmF0aW9ucyBhdCB0aGUgcm9vdC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgY29udGV4dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRFc2xpbnRDb25maWdDb250ZXh0KCk6IEVzbGludENvbmZpZ0NvbnRleHQge1xuICBjb25zdCBjb250ZXh0ID0gbmV3IEVzbGludENvbmZpZ0NvbnRleHQoKTtcbiAgY29udGV4dC5zb3VyY2VGb2xkZXJzLnB1c2goUmVwb1BhdGhzLlNyYyk7XG4gIGNvbnRleHQucm9vdENvbmZpZ0ZpbGVzLnB1c2goXG4gICAgUmVwb1BhdGhzLkNvbW1pdGxpbnRDb25maWdUcyxcbiAgICBSZXBvUGF0aHMuRXNsaW50Q29uZmlnTXRzLFxuICAgIFJlcG9QYXRocy5WaXRlc3RDb25maWdUc1xuICApO1xuICBjb250ZXh0LnNjcmlwdEZpbGVzLnB1c2goXG4gICAgam9pbihSZXBvUGF0aHMuU2NyaXB0cywgUmVwb1BhdGhzLkFueVBhdGgsIFJlcG9QYXRocy5BbnlUcylcbiAgKTtcbiAgY29udGV4dC5zb3VyY2VGaWxlcy5wdXNoKFxuICAgIGpvaW4oUmVwb1BhdGhzLlNyYywgUmVwb1BhdGhzLkFueVBhdGgsIFJlcG9QYXRocy5BbnlUcyksXG4gICAgam9pbihSZXBvUGF0aHMuU3JjLCBSZXBvUGF0aHMuQW55UGF0aCwgUmVwb1BhdGhzLkFueVRzeClcbiAgKTtcbiAgY29udGV4dC50ZXN0RmlsZXMucHVzaChcbiAgICBqb2luKFJlcG9QYXRocy5UZXN0cywgUmVwb1BhdGhzLkFueVBhdGgsIFJlcG9QYXRocy5BbnlUcyksXG4gICAgam9pbihSZXBvUGF0aHMuTW9ja3MsIFJlcG9QYXRocy5BbnlQYXRoLCBSZXBvUGF0aHMuQW55VHMpLFxuICAgIGpvaW4oUmVwb1BhdGhzLlNyYywgUmVwb1BhdGhzLkFueVBhdGgsIFJlcG9QYXRocy5BbnlUZXN0VHMpLFxuICAgIC8qXG4gICAgICogQSBidWlsZC1zY3JpcHQgdGVzdCBpcyBhIFRFU1QsIGFuZCB0aGlzIGNvbnZlbnRpb24gcHV0cyBpdCBpbiBhIGAqLnRlc3QudHNgIHVuZGVyIGBzY3JpcHRzL2AgLS0gYmVzaWRlIHRoZVxuICAgICAqIHNjcmlwdCBpdCBjb3ZlcnMgcmF0aGVyIHRoYW4gdW5kZXIgYHNyYy9gLiBXaXRob3V0IHRoaXMgZ2xvYiBpdCBtYXRjaGVkIGBzY3JpcHRGaWxlc2AgYWxvbmUsIHNvIGV2ZXJ5IHJlbGF4YXRpb25cbiAgICAgKiB0aGF0IGtleXMgb24gYGNvbnRleHQudGVzdEZpbGVzYCBtaXNzZWQgaXQ6IGBuby1tYWdpYy1udW1iZXJzYCBmaXJlZCBvbiBhIHN1aXRlIHdob3NlIHdob2xlIHN1YmplY3QgaXMgcmVjb3JkZWRcbiAgICAgKiBudW1iZXJzLCBhbmQgYHVuaWNvcm4vY29uc2lzdGVudC1mdW5jdGlvbi1zY29waW5nYCBvbiB0aGUgcGVyLXN1aXRlIGZpeHR1cmUgZmFjdG9yaWVzIHRoZSBibG9jayBhdCB0aGUgYm90dG9tXG4gICAgICogb2YgYGdldFVuaWNvcm5Db25maWdzYCBzYXlzIHRlc3RzIGV4aXN0IHRvIGFsbG93LlxuICAgICAqXG4gICAgICogVGhlIGZpbGUgbm93IG1hdGNoZXMgQk9USCBsaXN0cywgYW5kIHRoYXQgaXMgZGVsaWJlcmF0ZSByYXRoZXIgdGhhbiBhbiBvdmVybGFwIHRvIHJlc29sdmU6IGV2ZXJ5dGhpbmcgc2NvcGVkIHRvXG4gICAgICogYGNvbnRleHQuc2NyaXB0RmlsZXNgIG9ubHkgdHVybnMgcnVsZXMgT0ZGIChgaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXNgLCBgdW5pY29ybi9uby1wcm9jZXNzLWV4aXRgKSwgYm90aCBvZlxuICAgICAqIHdoaWNoIGEgc2NyaXB0IHRlc3Qgd2FudHMgYXMgbXVjaCBhcyB0aGUgc2NyaXB0IGRvZXMsIHNvIHRoZSB0d28gc2V0cyBjb21wb3NlIGluc3RlYWQgb2YgY29tcGV0aW5nLiBLZWVwIGl0IHRoYXRcbiAgICAgKiB3YXkgLS0gYSBydWxlIHR1cm5lZCBPTiBmb3IgYHNjcmlwdEZpbGVzYCB3b3VsZCBsYW5kIG9uIHRoZXNlIGZpbGVzIHRvbywgYW5kIGZsYXQtY29uZmlnIG9yZGVyLCBub3QgaW50ZW50LFxuICAgICAqIHdvdWxkIGRlY2lkZSB3aGljaCBzaWRlIHdvbi5cbiAgICAgKi9cbiAgICBqb2luKFJlcG9QYXRocy5TY3JpcHRzLCBSZXBvUGF0aHMuQW55UGF0aCwgUmVwb1BhdGhzLkFueVRlc3RUcylcbiAgKTtcbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBFU0xpbnQgY29uZmlndXJhdGlvbnMgb2YgYSBnZW5lcmljIFR5cGVTY3JpcHQgcHJvamVjdC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBkZWZpbmluZyBFU0xpbnQgY29uZmlndXJhdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgRVNMaW50IGNvbmZpZ3VyYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lRXNsaW50Q29uZmlncyhvcHRpb25zOiBEZWZpbmVFc2xpbnRDb25maWdzT3B0aW9ucyA9IHt9KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgY29uc3QgY29udGV4dCA9IGNyZWF0ZURlZmF1bHRFc2xpbnRDb25maWdDb250ZXh0KCk7XG4gIG9wdGlvbnMuZWRpdENvbnRleHQ/Lihjb250ZXh0KTtcbiAgY29uc3QgY3VzdG9tQ29uZmlncyA9IG9wdGlvbnMuY3VzdG9tQ29uZmlncz8uKGNvbnRleHQpID8/IFtdO1xuXG4gIHJldHVybiBkZWZpbmVDb25maWcoXG4gICAgLi4uZ2V0R2xvYmFsSWdub3JlQ29uZmlncygpLFxuICAgIC4uLmdldFR5cGVTY3JpcHRFc2xpbnRDb25maWdzKHtcbiAgICAgIGNvbnRleHQsXG4gICAgICAuLi4ob3B0aW9ucy5taW5pbXVtTm9kZVZlcnNpb24gIT09IHVuZGVmaW5lZCAmJiB7IG1pbmltdW1Ob2RlVmVyc2lvbjogb3B0aW9ucy5taW5pbXVtTm9kZVZlcnNpb24gfSlcbiAgICB9KSxcbiAgICAuLi5jdXN0b21Db25maWdzXG4gICk7XG59XG5cbi8qKlxuICogVGhlIGNvbmZpZ3VyYXRpb25zIG9mIEVTTGludCdzIG93biBydWxlcy4gQSBwcm9qZWN0LXR5cGUgbGF5ZXIgcmVhZHMgaXQgdG8gbGVhcm4gd2hpY2ggY29yZSBydWxlcyB0aGlzXG4gKiBjb25maWd1cmF0aW9uIHNldHMgaXRzZWxmLlxuICpcbiAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIEVTTGludCBjb25maWd1cmF0aW9uIGNvbnRleHQuXG4gKiBAcmV0dXJucyBUaGUgY29uZmlndXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFc2xpbnRDb3JlQ29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZXh0ZW5kczogW2VzbGludC5jb25maWdzLnJlY29tbWVuZGVkXSxcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBydWxlczoge1xuICAgICAgICAnYWNjZXNzb3ItcGFpcnMnOiAnZXJyb3InLFxuICAgICAgICAnYXJyYXktY2FsbGJhY2stcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ2NhbWVsY2FzZSc6ICdlcnJvcicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBydWxlIHJlcG9ydHMgcGVyIGNvbW1lbnQgVE9LRU4sIHNvIGV2ZXJ5IGNvbnRpbnVhdGlvbiBsaW5lIG9mIGEgd3JhcHBlZCBgLy9gIGNvbW1lbnQgaXMgaXRzIG93biB0b2tlblxuICAgICAgICAgKiB0aGF0IHdvdWxkIGhhdmUgdG8gc3RhcnQgd2l0aCBhIGNhcGl0YWwg4oCUIHdoaWNoIGlzIGhvdyBwcm9zZSBlbmRzIHVwIHdpdGggY2FwaXRhbHMgbWlkLXNlbnRlbmNlLlxuICAgICAgICAgKiBgaWdub3JlQ29uc2VjdXRpdmVDb21tZW50c2AgZXhlbXB0cyBhIGxpbmUgY29tbWVudCB0aGF0IGRpcmVjdGx5IGZvbGxvd3MgYW5vdGhlciBvbmUsIHdoaWNoIGlzIGV4YWN0bHkgdGhlXG4gICAgICAgICAqIHNoYXBlIG9mIGEgd3JhcHBlZCBibG9jaywgd2hpbGUgc3RpbGwgaG9sZGluZyBpdHMgRklSU1QgbGluZSB0byBhIGNhcGl0YWwuIEJsb2NrIGNvbW1lbnRzIG5lZWQgbm8gc3VjaFxuICAgICAgICAgKiBvcHRpb246IGEgYmxvY2sgY29tbWVudCBpcyBhIHNpbmdsZSB0b2tlbiBob3dldmVyIG1hbnkgbGluZXMgaXQgc3BhbnMuXG4gICAgICAgICAqIGBpZ25vcmVQYXR0ZXJuYCBjb3ZlcnMgdGhlIGhhbGYgdGhhdCBsZWF2ZXMgYmVoaW5kOiBhIGNvbW1lbnQgd2hvc2UgRklSU1Qgd29yZCBpcyBhIGNhbWVsQ2FzZSBpZGVudGlmaWVyIGlzXG4gICAgICAgICAqIGV4ZW1wdCwgc28gYSBjb21tZW50IHRoYXQgb3BlbnMgYnkgbmFtaW5nIGEgc3ltYm9sIGtlZXBzIHRoZSBuYW1lIGEgcmVhZGVyIGNhbiBncmVwIGluc3RlYWQgb2YgYSBQYXNjYWxDYXNlXG4gICAgICAgICAqIG9uZSB0aGF0IGV4aXN0cyBub3doZXJlLiBUaGUgcnVsZSBhbmNob3JzIHRoZSBwYXR0ZXJuIGF0IHRoZSBzdGFydCBvZiB0aGUgY29tbWVudCBhbmQgYFthLXpBLVowLTldYCBtYXRjaGVzXG4gICAgICAgICAqIG5vIHdoaXRlc3BhY2UsIHNvIGl0IGNhbiBvbmx5IGV2ZXIgbWF0Y2ggdGhhdCBmaXJzdCB3b3JkIOKAlCBvcmRpbmFyeSBsb3dlcmNhc2UgcHJvc2Ugc3RheXMgcmVwb3J0ZWQuIEJvdGhcbiAgICAgICAgICogb3B0aW9uIGJhZ3MgbmVlZCBpdCwgYW5kIGBibG9ja2Aga2VlcHMgaXRzIGB2OGAgZXhlbXB0aW9uIGJ5IGFsdGVybmF0aW9uIHJhdGhlciB0aGFuIGxvc2luZyBpdC5cbiAgICAgICAgICovXG4gICAgICAgICdjYXBpdGFsaXplZC1jb21tZW50cyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdhbHdheXMnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJsb2NrOiB7IGlnbm9yZVBhdHRlcm46ICd2OHxbYS16XVthLXpBLVowLTldKltBLVpdJyB9LFxuICAgICAgICAgICAgbGluZTogeyBpZ25vcmVDb25zZWN1dGl2ZUNvbW1lbnRzOiB0cnVlLCBpZ25vcmVQYXR0ZXJuOiAnW2Etel1bYS16QS1aMC05XSpbQS1aXScgfVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ2NvbXBsZXhpdHknOiAnZXJyb3InLFxuICAgICAgICAnY29uc2lzdGVudC10aGlzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2N1cmx5JzogJ2Vycm9yJyxcbiAgICAgICAgJ2RlZmF1bHQtY2FzZSc6ICdlcnJvcicsXG4gICAgICAgICdkZWZhdWx0LWNhc2UtbGFzdCc6ICdlcnJvcicsXG4gICAgICAgICdkZWZhdWx0LXBhcmFtLWxhc3QnOiAnZXJyb3InLFxuICAgICAgICAnZXFlcWVxJzogJ2Vycm9yJyxcbiAgICAgICAgJ2Z1bmMtbmFtZS1tYXRjaGluZyc6ICdlcnJvcicsXG4gICAgICAgICdmdW5jLW5hbWVzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2Z1bmMtc3R5bGUnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAnZGVjbGFyYXRpb24nLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93QXJyb3dGdW5jdGlvbnM6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnZ3JvdXBlZC1hY2Nlc3Nvci1wYWlycyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdnZXRCZWZvcmVTZXQnXG4gICAgICAgIF0sXG4gICAgICAgICdndWFyZC1mb3ItaW4nOiAnZXJyb3InLFxuICAgICAgICAnbm8tYWxlcnQnOiAnZXJyb3InLFxuICAgICAgICAnbm8tYXJyYXktY29uc3RydWN0b3InOiAnZXJyb3InLFxuICAgICAgICAnbm8tYml0d2lzZSc6ICdlcnJvcicsXG4gICAgICAgICduby1jYWxsZXInOiAnZXJyb3InLFxuICAgICAgICAnbm8tY29uc29sZSc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93OiBbXG4gICAgICAgICAgICAgICd3YXJuJyxcbiAgICAgICAgICAgICAgJ2Vycm9yJ1xuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ25vLWNvbnN0cnVjdG9yLXJldHVybic6ICdlcnJvcicsXG4gICAgICAgICduby1kaXYtcmVnZXgnOiAnZXJyb3InLFxuICAgICAgICAnbm8tZWxzZS1yZXR1cm4nOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvd0Vsc2VJZjogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICduby1lbXB0eS1mdW5jdGlvbic6ICdlcnJvcicsXG4gICAgICAgICduby1leHRlbmQtbmF0aXZlJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWV4dHJhLWJpbmQnOiAnZXJyb3InLFxuICAgICAgICAnbm8tZXh0cmEtbGFiZWwnOiAnZXJyb3InLFxuICAgICAgICAnbm8taW1wbGljaXQtY29lcmNpb24nOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvdzogW1xuICAgICAgICAgICAgICAnISEnXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnbm8taW1wbGllZC1ldmFsJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWlubmVyLWRlY2xhcmF0aW9ucyc6ICdlcnJvcicsXG4gICAgICAgICduby1pdGVyYXRvcic6ICdlcnJvcicsXG4gICAgICAgICduby1sYWJlbC12YXInOiAnZXJyb3InLFxuICAgICAgICAnbm8tbGFiZWxzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWxvbmUtYmxvY2tzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWxvbmVseS1pZic6ICdlcnJvcicsXG4gICAgICAgICduby1sb29wLWZ1bmMnOiAnZXJyb3InLFxuICAgICAgICAnbm8tbWFnaWMtbnVtYmVycyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRldGVjdE9iamVjdHM6IHRydWUsXG4gICAgICAgICAgICBlbmZvcmNlQ29uc3Q6IHRydWUsXG4gICAgICAgICAgICBpZ25vcmU6IFtcbiAgICAgICAgICAgICAgLTEsXG4gICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICduby1tdWx0aS1hc3NpZ24nOiAnZXJyb3InLFxuICAgICAgICAnbm8tbXVsdGktc3RyJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5lZ2F0ZWQtY29uZGl0aW9uJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5lc3RlZC10ZXJuYXJ5JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5ldy1mdW5jJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5ldy13cmFwcGVycyc6ICdlcnJvcicsXG4gICAgICAgICduby1vYmplY3QtY29uc3RydWN0b3InOiAnZXJyb3InLFxuICAgICAgICAnbm8tb2N0YWwtZXNjYXBlJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXByb21pc2UtZXhlY3V0b3ItcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXByb3RvJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXJlc3RyaWN0ZWQtc3ludGF4JzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgLi4ubm9SZXN0cmljdGVkU3ludGF4UnVsZUVudHJpZXNcbiAgICAgICAgXSxcbiAgICAgICAgJ25vLXJldHVybi1hc3NpZ24nOiAnZXJyb3InLFxuICAgICAgICAnbm8tc2NyaXB0LXVybCc6ICdlcnJvcicsXG4gICAgICAgICduby1zZWxmLWNvbXBhcmUnOiAnZXJyb3InLFxuICAgICAgICAnbm8tc2VxdWVuY2VzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXNoYWRvdyc6ICdlcnJvcicsXG4gICAgICAgICduby10ZW1wbGF0ZS1jdXJseS1pbi1zdHJpbmcnOiAnZXJyb3InLFxuICAgICAgICAnbm8tdGhyb3ctbGl0ZXJhbCc6ICdlcnJvcicsXG4gICAgICAgICduby11bm1vZGlmaWVkLWxvb3AtY29uZGl0aW9uJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVubmVlZGVkLXRlcm5hcnknOiAnZXJyb3InLFxuICAgICAgICAnbm8tdW5yZWFjaGFibGUtbG9vcCc6ICdlcnJvcicsXG4gICAgICAgICduby11bnVzZWQtZXhwcmVzc2lvbnMnOiAnZXJyb3InLFxuICAgICAgICAnbm8tdXNlbGVzcy1hc3NpZ25tZW50JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtY2FsbCc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbXB1dGVkLWtleSc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbmNhdCc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbnN0cnVjdG9yJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtcmVuYW1lJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXZhcic6ICdlcnJvcicsXG4gICAgICAgICduby12b2lkJzogJ2Vycm9yJyxcbiAgICAgICAgJ29iamVjdC1zaG9ydGhhbmQnOiAnZXJyb3InLFxuICAgICAgICAnb3BlcmF0b3ItYXNzaWdubWVudCc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItYXJyb3ctY2FsbGJhY2snOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLWNvbnN0JzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1leHBvbmVudGlhdGlvbi1vcGVyYXRvcic6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItbmFtZWQtY2FwdHVyZS1ncm91cCc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItbnVtZXJpYy1saXRlcmFscyc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItb2JqZWN0LWhhcy1vd24nOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLW9iamVjdC1zcHJlYWQnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXByb21pc2UtcmVqZWN0LWVycm9ycyc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItcmVnZXgtbGl0ZXJhbHMnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXJlc3QtcGFyYW1zJzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1zcHJlYWQnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXRlbXBsYXRlJzogJ2Vycm9yJyxcbiAgICAgICAgJ3JhZGl4JzogJ2Vycm9yJyxcbiAgICAgICAgJ3JlcXVpcmUtYXRvbWljLXVwZGF0ZXMnOiAnZXJyb3InLFxuICAgICAgICAncmVxdWlyZS1hd2FpdCc6ICdlcnJvcicsXG4gICAgICAgICdzeW1ib2wtZGVzY3JpcHRpb24nOiAnZXJyb3InLFxuICAgICAgICAndW5pY29kZS1ib20nOiAnZXJyb3InLFxuICAgICAgICAndmFycy1vbi10b3AnOiAnZXJyb3InLFxuICAgICAgICAneW9kYSc6ICdlcnJvcidcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVzOiBjb250ZXh0LnRlc3RGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICduby1tYWdpYy1udW1iZXJzJzogJ29mZidcbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG4vKipcbiAqIFRoZSBnbG9iYWwgaWdub3JlczogZXZlcnl0aGluZyBgLmdpdGlnbm9yZWAgbmFtZXMsIHBsdXMgQ2xhdWRlIENvZGUncyB3b3JrdHJlZSBmb2xkZXIuXG4gKlxuICogQHJldHVybnMgVGhlIGNvbmZpZ3VyYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2xvYmFsSWdub3JlQ29uZmlncygpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFxuICAgIC4uLmdldEdpdElnbm9yZUNvbmZpZ3MoKSxcbiAgICAvKlxuICAgICAqIE9uIHRvcCBvZiBgLmdpdGlnbm9yZWAsIG5vdCBpbnN0ZWFkIG9mIGl0OiBnaXQgZXhjbHVkZXMgQ2xhdWRlIENvZGUncyB3b3JrdHJlZSBmb2xkZXIgdGhyb3VnaFxuICAgICAqIGAuZ2l0L2luZm8vZXhjbHVkZWAsIHdoaWNoIGBpbmNsdWRlSWdub3JlRmlsZWAgYWJvdmUgZG9lcyBub3QgcmVhZC4gU2VlIGBsaW50LWlnbm9yZXMudHNgLlxuICAgICAqL1xuICAgIGdsb2JhbElnbm9yZXMoW0NMQVVERV9XT1JLVFJFRVNfSUdOT1JFX0dMT0JdLCAndHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9jbGF1ZGUtd29ya3RyZWVzJylcbiAgKTtcbn1cblxuLyoqXG4gKiBUaGUgZ2VuZXJpYyBsYXllcnMgb2YgdGhlIHNoYXJlZCBjb25maWd1cmF0aW9uLCB3aXRob3V0IHRoZSBnbG9iYWwgaWdub3Jlcy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBUaGUgY29uZmlndXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBlU2NyaXB0RXNsaW50Q29uZmlncyhwYXJhbXM6IEdldFR5cGVTY3JpcHRFc2xpbnRDb25maWdzUGFyYW1zKTogTGludGVyLkNvbmZpZ1tdIHtcbiAgY29uc3QgeyBjb250ZXh0IH0gPSBwYXJhbXM7XG4gIHJldHVybiBkZWZpbmVDb25maWcoXG4gICAgLi4uZ2V0RXNsaW50Q29yZUNvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0VHNlc2xpbnRDb25maWdzKGNvbnRleHQpLFxuICAgIC4uLmdldFN0eWxpc3RpY0NvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0SW1wb3J0WENvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0UGVyZmVjdGlvbmlzdENvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0VW5pY29ybkNvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0RXNsaW50SW1wb3J0UmVzb2x2ZXJUeXBlc2NyaXB0Q29uZmlncygpLFxuICAgIC4uLmdldEVzbGludENvbW1lbnRzQ29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRJbkhvdXNlUGx1Z2luQ29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXROb2RlQ29tcGF0Q29uZmlncyh7IGNvbnRleHQsIG1pbmltdW1Ob2RlVmVyc2lvbjogcGFyYW1zLm1pbmltdW1Ob2RlVmVyc2lvbiB9KVxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRFc2xpbnRDb21tZW50c0NvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1uYW1lZC1hcy1kZWZhdWx0LW1lbWJlciAtLSBUaGUgZGVmYXVsdCBleHBvcnQgbmFtZSBgcmVjb21tZW5kZWRgIGlzIHRvbyBjb25mdXNpbmcuXG4gICAgICBleHRlbmRzOiBbY29tbWVudHNDb25maWdzLnJlY29tbWVuZGVkXSxcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBydWxlczoge1xuICAgICAgICAnQGVzbGludC1jb21tdW5pdHkvZXNsaW50LWNvbW1lbnRzL3JlcXVpcmUtZGVzY3JpcHRpb24nOiAnZXJyb3InXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0RXNsaW50SW1wb3J0UmVzb2x2ZXJUeXBlc2NyaXB0Q29uZmlncygpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFtcbiAgICB7XG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAnaW1wb3J0LXgvcmVzb2x2ZXItbmV4dCc6IFtcbiAgICAgICAgICBjcmVhdGVUeXBlU2NyaXB0SW1wb3J0UmVzb2x2ZXIoe1xuICAgICAgICAgICAgYWx3YXlzVHJ5VHlwZXM6IHRydWVcbiAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0R2l0SWdub3JlQ29uZmlncygpOiBMaW50ZXIuQ29uZmlnW10ge1xuICBjb25zdCBnaXRpZ25vcmVQYXRoID0gam9pbihnZXRSb290Rm9sZGVyKCkgPz8gJycsICcuZ2l0aWdub3JlJyk7XG4gIHJldHVybiBleGlzdHNTeW5jKGdpdGlnbm9yZVBhdGgpID8gW2luY2x1ZGVJZ25vcmVGaWxlKGdpdGlnbm9yZVBhdGgpXSA6IFtdO1xufVxuXG5mdW5jdGlvbiBnZXRJbXBvcnRYQ29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZXh0ZW5kczogW1xuICAgICAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MucmVjb21tZW5kZWQsXG4gICAgICAgIGVzbGludFBsdWdpbkltcG9ydFhGbGF0Q29uZmlncy50eXBlc2NyaXB0LFxuICAgICAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MuZXJyb3JzLFxuICAgICAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3Mud2FybmluZ3NcbiAgICAgIF0sXG4gICAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ2ltcG9ydC14L2NvbnNpc3RlbnQtdHlwZS1zcGVjaWZpZXItc3R5bGUnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvZXh0ZW5zaW9ucyc6IFsnZXJyb3InLCAnaWdub3JlUGFja2FnZXMnXSxcbiAgICAgICAgJ2ltcG9ydC14L2ZpcnN0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L2ltcG9ydHMtZmlyc3QnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbmV3bGluZS1hZnRlci1pbXBvcnQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tYWJzb2x1dGUtcGF0aCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1hbWQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tYW5vbnltb3VzLWRlZmF1bHQtZXhwb3J0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWNvbW1vbmpzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWN5Y2xlJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWRlZmF1bHQtZXhwb3J0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWRlcHJlY2F0ZWQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tZHVwbGljYXRlcyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1keW5hbWljLXJlcXVpcmUnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tZW1wdHktbmFtZWQtYmxvY2tzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWltcG9ydC1tb2R1bGUtZXhwb3J0cyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1tdXRhYmxlLWV4cG9ydHMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tbmFtZWQtZGVmYXVsdCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1uYW1lc3BhY2UnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tcmVsYXRpdmUtcGFja2FnZXMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tcmVzdHJpY3RlZC1wYXRocyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1zZWxmLWltcG9ydCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby11bmFzc2lnbmVkLWltcG9ydCc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93OiBbXG4gICAgICAgICAgICAgICcqKi8qLmNzcycsXG4gICAgICAgICAgICAgICcqKi8qLnNhc3MnLFxuICAgICAgICAgICAgICAnKiovKi5zY3NzJ1xuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ2ltcG9ydC14L25vLXVudXNlZC1tb2R1bGVzJzogJ29mZicsXG4gICAgICAgICdpbXBvcnQteC9uby11c2VsZXNzLXBhdGgtc2VnbWVudHMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8td2VicGFjay1sb2FkZXItc3ludGF4JzogJ2Vycm9yJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZXM6IGNvbnRleHQuc2NyaXB0RmlsZXMsXG4gICAgICBydWxlczoge1xuICAgICAgICAnaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXMnOiAnb2ZmJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQSB0ZXN0IHJ1bnMgdW5kZXIgdGhlIHRlc3QgcnVubmVyIGluIE5vZGUgYW5kIGlzIG5ldmVyIGJ1bmRsZWQgaW50byBhbnl0aGluZyB0aGF0IHNoaXBzLlxuICAgICAgZmlsZXM6IGNvbnRleHQudGVzdEZpbGVzLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ2ltcG9ydC14L25vLW5vZGVqcy1tb2R1bGVzJzogJ29mZidcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVzOiBjb250ZXh0LnJvb3RDb25maWdGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdpbXBvcnQteC9uby1kZWZhdWx0LWV4cG9ydCc6ICdvZmYnXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0SW5Ib3VzZVBsdWdpbkNvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgIFtJTl9IT1VTRV9FU0xJTlRfUExVR0lOX05BTUVdOiBpbkhvdXNlRXNsaW50UGx1Z2luXG4gICAgICB9LFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvbm8tYXN5bmMtY2FsbGJhY2stdG8tdW5zYWZlLXJldHVybic6ICdlcnJvcicsXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L25vLWtleXdvcmQtaWRlbnRpZmllcnMnOiAnZXJyb3InLFxuICAgICAgICAvKlxuICAgICAgICAgKiBNZWFzdXJlZCBvdmVyIDMyIHBsdWdpbnMgYnVpbHQgb24gdGhpcyBjb25maWcgYmVmb3JlIGl0IHdhcyB0dXJuZWQgb24gKDIwMjYtMDktMjQpOiAyOSBoYWQgbm8gZmluZGluZyxcbiAgICAgICAgICogdGhlIG90aGVyIHRocmVlIGhhZCA4IGJldHdlZW4gdGhlbSwgZXZlcnkgb25lIGEgZ2VudWluZWx5IGRlYWQgbGluay5cbiAgICAgICAgICovXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L25vLXVucmVzb2x2ZWQtanNkb2MtbGluayc6ICdlcnJvcicsXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L25vLXVudXNlZC1wYXJhbXMtbWVtYmVycyc6ICdlcnJvcicsXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L25vLXVzZWQtdW5kZXJzY29yZS12YXJpYWJsZXMnOiAnZXJyb3InLFxuICAgICAgICAndHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9wYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoJzogJ2Vycm9yJyxcbiAgICAgICAgJ3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvcHJlZmVyLWxvZ2ljYWwtb3BlcmF0b3Itb3Zlci10ZXJuYXJ5JzogJ2Vycm9yJyxcbiAgICAgICAgJ3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvcHJlZmVyLW5vb3AtYXN5bmMnOiAnZXJyb3InLFxuICAgICAgICAndHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9yZWFkb25seS1pbnRlcmZhY2UtbWVtYmVycyc6ICdlcnJvcicsXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L3JlcXVpcmUtbWV0aG9kLXRlbXBsYXRlJzogJ2Vycm9yJyxcbiAgICAgICAgJ3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvcmVxdWlyZS1zdXBlci1jYWxsJzogJ29mZidcbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG5mdW5jdGlvbiBnZXROb2RlQ29tcGF0Q29uZmlncyhwYXJhbXM6IEdldE5vZGVDb21wYXRDb25maWdzUGFyYW1zKTogTGludGVyLkNvbmZpZ1tdIHtcbiAgY29uc3QgeyBjb250ZXh0LCBtaW5pbXVtTm9kZVZlcnNpb24gfSA9IHBhcmFtcztcbiAgY29uc3QgdmVyc2lvbk9wdGlvbnMgPSBtaW5pbXVtTm9kZVZlcnNpb24gPT09IHVuZGVmaW5lZCA/IHt9IDogeyB2ZXJzaW9uOiBtaW5pbXVtTm9kZVZlcnNpb24gfTtcblxuICByZXR1cm4gZGVmaW5lQ29uZmlnKFtcbiAgICB7XG4gICAgICBmaWxlczogY29udGV4dC5zb3VyY2VGaWxlcyxcbiAgICAgIGlnbm9yZXM6IFtcbiAgICAgICAgLi4uY29udGV4dC50ZXN0RmlsZXMsXG4gICAgICAgIC8vIERldi1vbmx5IHRvb2xpbmcgKGJ1aWxkLCBsaW50LCB2ZXJzaW9uKSBydW5zIHZpYSBgaml0aWAgaW4gdGhlIGRldmVsb3BlcidzIE5vZGUgZW52aXJvbm1lbnQgYW5kIG5ldmVyIHNoaXBzLCBzbyB0aGUgc2hpcHBlZCBzb3VyY2UncyBOb2RlIGZsb29yIGRvZXMgbm90IGFwcGx5IHRvIGl0LlxuICAgICAgICAuLi5jb250ZXh0LnNjcmlwdEZpbGVzXG4gICAgICBdLFxuICAgICAgcGx1Z2luczoge1xuICAgICAgICBuOiBub2RlUGx1Z2luXG4gICAgICB9LFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ24vbm8tdW5zdXBwb3J0ZWQtZmVhdHVyZXMvZXMtYnVpbHRpbnMnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB2ZXJzaW9uT3B0aW9uc1xuICAgICAgICBdLFxuICAgICAgICAnbi9uby11bnN1cHBvcnRlZC1mZWF0dXJlcy9ub2RlLWJ1aWx0aW5zJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy8gYEJsb2JgIGFuZCBgRmlsZWAgYXJlIERPTSB3ZWIgZ2xvYmFscyBwcmVzZW50IGluIGV2ZXJ5IHN1cHBvcnRlZCBicm93c2VyIGVuZ2luZSwgYnV0IHRoZSBydWxlIGFsc28ga25vd3MgdGhlbSBhcyBOb2RlJ3MgZXhwZXJpbWVudGFsIGJ1aWx0aW5zIGFuZCBjYW5ub3QgdGVsbCB3aGljaCBpcyBtZWFudC4gSWdub3JlIHRoZW0gZ2xvYmFsbHk7IGdlbnVpbmVseSBuZXdlciBBUElzIChlLmcuIGBBYm9ydFNpZ25hbC5hbnlgKSBzdGF5IGZsYWdnZWQuXG4gICAgICAgICAgICBpZ25vcmVzOiBbXG4gICAgICAgICAgICAgICdCbG9iJyxcbiAgICAgICAgICAgICAgJ0ZpbGUnXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLi4udmVyc2lvbk9wdGlvbnNcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG5mdW5jdGlvbiBnZXRQZXJmZWN0aW9uaXN0Q29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbe1xuICAgIGV4dGVuZHM6IFtwZXJmZWN0aW9uaXN0Q29uZmlnc1sncmVjb21tZW5kZWQtYWxwaGFiZXRpY2FsJ11dLFxuICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKClcbiAgfV0pO1xufVxuXG4vKipcbiAqIExheW91dCBiZWxvbmdzIHRvIGRwcmludC4gT25seSB0aGUgYEBzdHlsaXN0aWNgIHJ1bGVzIGRwcmludCBjYW5ub3QgZXhwcmVzcyBhcmUga2VwdCwgZWFjaCB2ZXJpZmllZCBieSBmb3JtYXR0aW5nIGFcbiAqIHZpb2xhdGluZyBwcm9iZSB3aXRoIHRoZSBzaGFyZWQgYGRwcmludC5qc29uYCBhbmQgbGludGluZyB0aGUgcmVzdWx0OiB0aGUgcnVsZSBzdGlsbCByZXBvcnRzIHRoZXJlLiBFdmVyeSBvdGhlclxuICogcnVsZSBvZiBgc3R5bGlzdGljLmNvbmZpZ3MucmVjb21tZW5kZWRgIHdhcyBkcm9wcGVkLCBiZWNhdXNlIGRwcmludCBmaXhlcyBpdCBhbHJlYWR5LCBvciBiZWNhdXNlIGl0IGZvdWdodCBkcHJpbnRcbiAqIChgd3JhcC1paWZlYCwgd2hvc2UgcGFyZW50aGVzZXMgZHByaW50IHN0cmlwcywgYGpzeC1xdW90ZXNgIGFnYWluc3QgYHF1b3RlU3R5bGVgLCBgb3BlcmF0b3ItbGluZWJyZWFrYCwgYGluZGVudGApLlxuICogVGhlIGtlcHQgcnVsZXMgYWdyZWUgd2l0aCB0aGUgc2hhcmVkIFByZXR0aWVyIGFuZCBCaW9tZSBjb25maWd1cmF0aW9ucyB0b28sIHNvIGVpdGhlciBjYW4gb3duIGxheW91dCBpbnN0ZWFkLlxuICpcbiAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIHtAbGluayBFc2xpbnRDb25maWdDb250ZXh0fS5cbiAqIEByZXR1cm5zIFRoZSBjb25maWdzLlxuICovXG5mdW5jdGlvbiBnZXRTdHlsaXN0aWNDb25maWdzKGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFtcbiAgICB7XG4gICAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpLFxuICAgICAgcGx1Z2luczoge1xuICAgICAgICAnQHN0eWxpc3RpYyc6IHN0eWxpc3RpY1xuICAgICAgfSxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgIC8vIFRoZSBkcHJpbnQgYGFycm93RnVuY3Rpb24udXNlUGFyZW50aGVzZXNgIGRlZmF1bHQsIGBtYWludGFpbmAsIGtlZXBzIGB4ID0+IHhgLlxuICAgICAgICAnQHN0eWxpc3RpYy9hcnJvdy1wYXJlbnMnOiBbJ2Vycm9yJywgJ2Fsd2F5cyddLFxuICAgICAgICAvLyBOb3QgbGF5b3V0OiBpdCByZW1vdmVzIG9yIGFkZHMgdGhlIGJyYWNlcyB0aGVtc2VsdmVzLCB3aGljaCBkcHJpbnQgbmV2ZXIgZG9lcy5cbiAgICAgICAgJ0BzdHlsaXN0aWMvanN4LWN1cmx5LWJyYWNlLXByZXNlbmNlJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2hpbGRyZW46ICduZXZlcicsXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uYW1lLXJlcGxhY2VtZW50cyAtLSBgcHJvcEVsZW1lbnRWYWx1ZXNgIGlzIHRoZSBydWxlJ3Mgb3duIG9wdGlvbiBuYW1lLlxuICAgICAgICAgICAgcHJvcEVsZW1lbnRWYWx1ZXM6ICdhbHdheXMnLFxuICAgICAgICAgICAgcHJvcHM6ICduZXZlcidcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIC8vIFRoZSBkcHJpbnQgZm9ybWF0dGVyIGtlZXBzIGJsYW5rIGxpbmVzIGFzIHdyaXR0ZW4gYW5kIG5ldmVyIGluc2VydHMgb25lLlxuICAgICAgICAnQHN0eWxpc3RpYy9saW5lcy1iZXR3ZWVuLWNsYXNzLW1lbWJlcnMnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAnYWx3YXlzJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBleGNlcHRBZnRlck92ZXJsb2FkOiB0cnVlLFxuICAgICAgICAgICAgZXhjZXB0QWZ0ZXJTaW5nbGVMaW5lOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAvLyBUaGUgZHByaW50IGZvcm1hdHRlciBrZWVwcyBhIG51bWVyaWMgbGl0ZXJhbCdzIHRleHQsIHNvIGAuNWAgYW5kIGAyLmAgc3RheS5cbiAgICAgICAgJ0BzdHlsaXN0aWMvbm8tZmxvYXRpbmctZGVjaW1hbCc6ICdlcnJvcicsXG4gICAgICAgIC8vIE5vdCBsYXlvdXQ6IGl0IGFza3MgZm9yIHBhcmVudGhlc2VzIHRoYXQgY2hhbmdlIGhvdyB0aGUgZXhwcmVzc2lvbiByZWFkcywgd2hpY2ggZHByaW50IG5ldmVyIGFkZHMuXG4gICAgICAgICdAc3R5bGlzdGljL25vLW1peGVkLW9wZXJhdG9ycyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93U2FtZVByZWNlZGVuY2U6IHRydWUsXG4gICAgICAgICAgICBncm91cHM6IFtcbiAgICAgICAgICAgICAgWyc9PScsICchPScsICc9PT0nLCAnIT09JywgJz4nLCAnPj0nLCAnPCcsICc8PSddLFxuICAgICAgICAgICAgICBbJyYmJywgJ3x8J10sXG4gICAgICAgICAgICAgIFsnaW4nLCAnaW5zdGFuY2VvZiddXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAvLyBUaGUgZHByaW50IGZvcm1hdHRlciByZXBsYWNlcyB0YWIgaW5kZW50YXRpb24gYnV0IGxlYXZlcyBhIHRhYiBpbnNpZGUgYSBjb21tZW50LlxuICAgICAgICAnQHN0eWxpc3RpYy9uby10YWJzJzogJ2Vycm9yJyxcbiAgICAgICAgLy8gVGhlIGRwcmludCBgcXVvdGVQcm9wc2AgZGVmYXVsdCBpcyBgcHJlc2VydmVgLlxuICAgICAgICAnQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyc6IFsnZXJyb3InLCAnY29uc2lzdGVudC1hcy1uZWVkZWQnXSxcbiAgICAgICAgLy8gVGhlIGRwcmludCBgcXVvdGVTdHlsZWAgY292ZXJzIHN0cmluZyBsaXRlcmFscyBvbmx5LCBhbmQgbGVhdmVzIGEgdGVtcGxhdGUgbGl0ZXJhbCB3aXRoIG5vIHN1YnN0aXR1dGlvbi5cbiAgICAgICAgJ0BzdHlsaXN0aWMvcXVvdGVzJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgJ3NpbmdsZScsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWxsb3dUZW1wbGF0ZUxpdGVyYWxzOiAnbmV2ZXInXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAvLyBUaGUgZHByaW50IGZvcm1hdHRlciBhZGRzIHRoZSBzcGFjZSBhZnRlciBgLy9gIGJ1dCBub3QgYWZ0ZXIgYC8qYCBvciBiZWZvcmUgYCovYC5cbiAgICAgICAgJ0BzdHlsaXN0aWMvc3BhY2VkLWNvbW1lbnQnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAnYWx3YXlzJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBibG9jazoge1xuICAgICAgICAgICAgICBiYWxhbmNlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgZXhjZXB0aW9uczogWycqJ10sXG4gICAgICAgICAgICAgIG1hcmtlcnM6IFsnISddXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGluZToge1xuICAgICAgICAgICAgICBleGNlcHRpb25zOiBbJy8nLCAnIyddLFxuICAgICAgICAgICAgICBtYXJrZXJzOiBbJy8nXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIH1cbiAgXSk7XG59XG5cbmZ1bmN0aW9uIGdldFRzZXNsaW50Q29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZXh0ZW5kczogW1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tbmFtZWQtYXMtZGVmYXVsdC1tZW1iZXIgLS0gVGhlIGRlZmF1bHQgZXhwb3J0IG5hbWUgYF9kZWZhdWx0YCBpcyB0b28gY29uZnVzaW5nLlxuICAgICAgICAuLi50c2VzbGludC5jb25maWdzLnN0cmljdFR5cGVDaGVja2VkLFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tbmFtZWQtYXMtZGVmYXVsdC1tZW1iZXIgLS0gVGhlIGRlZmF1bHQgZXhwb3J0IG5hbWUgYF9kZWZhdWx0YCBpcyB0b28gY29uZnVzaW5nLlxuICAgICAgICAuLi50c2VzbGludC5jb25maWdzLnN0eWxpc3RpY1R5cGVDaGVja2VkXG4gICAgICBdLFxuICAgICAgZmlsZXM6IGNvbnRleHQuYWxsRmlsZXMoKSxcbiAgICAgIGxhbmd1YWdlT3B0aW9uczoge1xuICAgICAgICBwYXJzZXJPcHRpb25zOiB7XG4gICAgICAgICAgZWNtYUZlYXR1cmVzOiB7XG4gICAgICAgICAgICBqc3g6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHByb2plY3RTZXJ2aWNlOiB0cnVlLFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25hbWUtcmVwbGFjZW1lbnRzIC0tIGB0c2NvbmZpZ1Jvb3REaXJgIGlzIGEgYHR5cGVzY3JpcHQtZXNsaW50YCBwYXJzZXIgb3B0aW9uLlxuICAgICAgICAgIHRzY29uZmlnUm9vdERpcjogZ2V0Um9vdEZvbGRlcigpID8/ICcnXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBydWxlczoge1xuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LWZ1bmN0aW9uLXJldHVybi10eXBlJzogJ2Vycm9yJyxcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tZW1iZXItYWNjZXNzaWJpbGl0eSc6ICdlcnJvcicsXG4gICAgICAgIC8vIFRoZSBydWxlJ3Mgb3duIGBwcm9wZXJ0eWAgZGVmYXVsdCwgc3BlbGxlZCBhcyBhIGJhcmUgc2V2ZXJpdHkgc28gaXQgc3RheXMgdGhlIHJ1bGUncyBkZWZhdWx0IHJhdGhlciB0aGFuIGEgY29weSBvZiBpdC5cbiAgICAgICAgLy8gRG8gTk9UIHBhc3MgYCdtZXRob2QnYCBmb3IgdGlkaW5lc3M6IHRoZSBtZXRob2QgZm9ybSBrZWVwcyBwYXJhbWV0ZXJzIGJpdmFyaWFudCwgZHJvcHMgYHJlYWRvbmx5YCAodGhlIHJ1bGUncyBvd24gZml4ZXJcbiAgICAgICAgLy8gbWVzc2FnZSBzYXlzIHNvKSwgYW5kIG1ha2VzIGBAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2RgIGZpcmUgb24gZXZlcnkgZm9yd2FyZGVkIGJhZyBtZW1iZXIsIHdoaWNoIGlzIHdoYXQgdGhlXG4gICAgICAgIC8vIGB0aGlzOiB2b2lkYCBib2lsZXJwbGF0ZSB1c2VkIHRvIHBheSBmb3IuIERvIE5PVCBkZWxldGUgdGhlIGxpbmUgZWl0aGVyIC0gdGhlIHJ1bGUgaXMgaW4gbm8gcHJlc2V0LCBzbyB0aGF0IHR1cm5zIGl0IG9mZi5cbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9tZXRob2Qtc2lnbmF0dXJlLXN0eWxlJzogJ2Vycm9yJyxcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlcyc6IFsnZXJyb3InLCB7XG4gICAgICAgICAgY2hlY2tUaGVuYWJsZXM6IHRydWVcbiAgICAgICAgfV0sXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvbm8taW52YWxpZC12b2lkLXR5cGUnOiBbJ2Vycm9yJywge1xuICAgICAgICAgIGFsbG93QXNUaGlzUGFyYW1ldGVyOiB0cnVlXG4gICAgICAgIH1dLFxuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXMnOiBbJ2Vycm9yJywge1xuICAgICAgICAgIGFsbG93ZWROYW1lczogW1xuICAgICAgICAgICAgJ3RoYXQnXG4gICAgICAgICAgXVxuICAgICAgICB9XSxcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25hbWUtcmVwbGFjZW1lbnRzIC0tIGBhcmdzYCBpcyBhbiBFU0xpbnQgcnVsZSBvcHRpb24gbmFtZS5cbiAgICAgICAgICAgIGFyZ3M6ICdhbGwnLFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gYGFyZ3NJZ25vcmVQYXR0ZXJuYCBpcyBhIGB0eXBlc2NyaXB0LWVzbGludGAgcnVsZSBvcHRpb24gbmFtZS5cbiAgICAgICAgICAgIGFyZ3NJZ25vcmVQYXR0ZXJuOiAnXl8nLFxuICAgICAgICAgICAgY2F1Z2h0RXJyb3JzOiAnYWxsJyxcbiAgICAgICAgICAgIGNhdWdodEVycm9yc0lnbm9yZVBhdHRlcm46ICdeXycsXG4gICAgICAgICAgICBkZXN0cnVjdHVyZWRBcnJheUlnbm9yZVBhdHRlcm46ICdeXycsXG4gICAgICAgICAgICBpZ25vcmVSZXN0U2libGluZ3M6IHRydWUsXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uYW1lLXJlcGxhY2VtZW50cyAtLSBgdmFyc0lnbm9yZVBhdHRlcm5gIGlzIGEgYHR5cGVzY3JpcHQtZXNsaW50YCBydWxlIG9wdGlvbiBuYW1lLlxuICAgICAgICAgICAgdmFyc0lnbm9yZVBhdHRlcm46ICdeXydcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvcHJlZmVyLXJlYWRvbmx5JzogJ2Vycm9yJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZXM6IGNvbnRleHQudGVzdEZpbGVzLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9kb3Qtbm90YXRpb24nOiBbJ2Vycm9yJywge1xuICAgICAgICAgIGFsbG93UHJpdmF0ZUNsYXNzUHJvcGVydHlBY2Nlc3M6IHRydWUsXG4gICAgICAgICAgYWxsb3dQcm90ZWN0ZWRDbGFzc1Byb3BlcnR5QWNjZXNzOiB0cnVlXG4gICAgICAgIH1dLFxuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kJzogJ29mZidcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgIHJlYWN0OiB7XG4gICAgICAgICAgdmVyc2lvbjogJ2RldGVjdCdcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgXSk7XG59XG5cbmZ1bmN0aW9uIGdldFVuaWNvcm5Db25maWdzKGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFtcbiAgICB7XG4gICAgICBleHRlbmRzOiBbdW5pY29ybi5jb25maWdzLnJlY29tbWVuZGVkXSxcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBydWxlczoge1xuICAgICAgICAvKlxuICAgICAgICAgKiBUaGVzZSBlbnRyaWVzIGFyZSBub3QgYWJicmV2aWF0aW9ucyB0byBiZSBleHBhbmRlZCDigJQgdGhleSBhcmUgZXN0YWJsaXNoZWQgdm9jYWJ1bGFyeSBoZXJlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBCcmFuZDogYGRldmAsIGBsaWJgLCBgdXRpbGAvYHV0aWxzYCBzcGVsbCB0aGUgcHJvZHVjdCdzIG93biBuYW1lLiBMZWZ0IG9uLCB0aGUgcnVsZSByZXdyaXRlc1xuICAgICAgICAgKiBgUmVwb1BhdGhzYCB0byBgT2JzaWRpYW5EZXZlbG9wbWVudFV0aWxpdGllc1JlcG9QYXRoc2AgYW5kIGBnZXRMaWJEZWJ1Z2dlcmAgdG9cbiAgICAgICAgICogYGdldExpYnJhcnlEZWJ1Z2dlcmAsIHJlbmFtaW5nIGV4cG9ydGVkIEFQSSBhZnRlciB0aGUgcGFja2FnZSBpdCBiZWxvbmdzIHRvLlxuICAgICAgICAgKlxuICAgICAgICAgKiBDb252ZW50aW9uOiBgcGFyYW1zYCBpcyB0aGUgcGFyYW1ldGVyLWJhZyBjb252ZW50aW9uLCBlbmZvcmNlZCBieVxuICAgICAgICAgKiBgdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9wYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoYCwgd2hpY2ggcmVxdWlyZXMgYmFnIHR5cGVzIHRvIGJlIG5hbWVkXG4gICAgICAgICAqIGA8T3duZXI+UGFyYW1zYCAvIGA8T3duZXI+T3B0aW9uc2AuIEV4cGFuZGluZyBpdCB0byBgUGFyYW1ldGVyc2Agd291bGQgcHV0IHRoZSB0d28gcnVsZXMgaW4gZGlyZWN0XG4gICAgICAgICAqIGNvbnRyYWRpY3Rpb24gYW5kIGJyZWFrIDMwMCsgZXhwb3J0ZWQgdHlwZSBuYW1lcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQmFyZSBrZXl3b3JkIGFuZCBjb2xsaWRpbmcgZ2xvYmFsIGJpbmRpbmdzIHVzZSBgJG5hbWVgLCBlbmZvcmNlZCBieVxuICAgICAgICAgKiBgdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9uby1rZXl3b3JkLWlkZW50aWZpZXJzYDogYG9iamVjdGAgYmVjb21lcyBgJG9iamVjdGAsIGBzdHJpbmdgIGJlY29tZXMgYCRzdHJpbmdgLFxuICAgICAgICAgKiBhbmQgc28gb24sIGV2ZW4gd2hlbiBubyBhYmJyZXZpYXRpb24gd2FzIGV4cGFuZGVkLiBQcm9wZXJ0eSBrZXlzIGFuZCBidWlsdGluIHJlYWRzIHN0YXkgbGVnYWwuXG4gICAgICAgICAqIEEgYmFyZSBgYXJnc2AsIGBmbmAsIGBzdHJgLCBgbW9kYCBvciBgZXZ0YCBsaWtld2lzZSB0YWtlcyBgJGFyZ3VtZW50c2AsIGAkZnVuY3Rpb25gLCBhbmQgc28gb24uXG4gICAgICAgICAqIFRoaXMgaXMgZGVsaWJlcmF0ZWx5IE5PVCBjb25maWd1cmVkIGFzIGEgY3VzdG9tIHJlcGxhY2VtZW50OiB1bmljb3JuIHN1YnN0aXR1dGVzIGF0IHRoZSB3b3JkIGxldmVsIGluc2lkZSBjb21wb3VuZCBuYW1lcywgc29cbiAgICAgICAgICogcmVkaXJlY3RpbmcgdGhlIHdob2xlIGVudHJ5IHR1cm5zIGBhc3luY0ZuYCBpbnRvIGBhc3luYyRmdW5jdGlvbmAuIENvbXBvdW5kcyB3YW50IHRoZSBwbGFpbiBleHBhbnNpb25cbiAgICAgICAgICogKGBhc3luY0Z1bmN0aW9uYCk7IG9ubHkgdGhlIGJhcmUsIGdlbnVpbmVseS1jb2xsaWRpbmcgaWRlbnRpZmllcnMgdGFrZSB0aGUgYCRgIGZvcm0uXG4gICAgICAgICAqXG4gICAgICAgICAqIERvbWFpbiB3b3JkczogYGRvY2AvYGRvY3NgLCBgZW52YCwgYGRpc3RgIGFuZCBgc3JjYCBhcmUgdGhlIGNsZWFyZXIgc3BlbGxpbmcgaW4gdGhpcyBjb2RlYmFzZS5cbiAgICAgICAgICogRXhwYW5kaW5nIGBkb2NgIGFsc28gcGlja3MgdGhlIHdyb25nIHdvcmQg4oCUIHRoZSBgYXBpLWRvYy0qYCBtb2R1bGVzIGdlbmVyYXRlIEFQSSAqZG9jdW1lbnRhdGlvbiosIG5vdFxuICAgICAgICAgKiBkb2N1bWVudHMuIGBzcmNgIGFkZGl0aW9uYWxseSBjb3JydXB0cyBjb2RlOiB0aGUgZml4ZXIgcmVuYW1lcyB0aGUgYFNyY2AgbWVtYmVyIG9mIHRoZSBleHBvcnRlZFxuICAgICAgICAgKiBgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHNgIC8gYFJlcG9QYXRoc2AgZW51bXMgd2hpbGUgbGVhdmluZyBldmVyeSBgLlNyY2AgcmVmZXJlbmNlXG4gICAgICAgICAqIGRhbmdsaW5nLCBiZWNhdXNlIGBjaGVja1Byb3BlcnRpZXNgIGV4ZW1wdHMgcHJvcGVydHkgYWNjZXNzZXMgYnV0IG5vdCB0aGUgZGVjbGFyYXRpb25zIHRoZXkgcG9pbnQgYXQuXG4gICAgICAgICAqXG4gICAgICAgICAqIERpc2FibGluZyB0aGUgcmVwbGFjZW1lbnQgZW50cmllcyBwcm90ZWN0cyB0aGVzZSBwZXJtYW5lbnRseTsgYW4gYGFsbG93TGlzdGAgd291bGQgaW5zdGVhZCBuZWVkIGV2ZXJ5XG4gICAgICAgICAqIGFmZmVjdGVkIGlkZW50aWZpZXIgZW51bWVyYXRlZCBieSBoYW5kIGFuZCByZS1lbnVtZXJhdGVkIGZvciBldmVyeSBuZXcgb25lLlxuICAgICAgICAgKlxuICAgICAgICAgKiBOT1RFOiB0aGlzIHJ1bGUncyBhdXRvZml4IGlzIE5PVCByZWZlcmVuY2UtYXdhcmUgZm9yIGRlY2xhcmF0aW9ucyB0aGF0IHBhcnRpY2lwYXRlIGluIGEgY29udHJhY3Qg4oCUXG4gICAgICAgICAqIGVudW0gbWVtYmVycywgaW50ZXJmYWNlIG1lbWJlcnMsIGFuZCBUeXBlU2NyaXB0IHBhcmFtZXRlciBwcm9wZXJ0aWVzIChgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seVxuICAgICAgICAgKiBlbDogSFRNTEVsZW1lbnQpYCkgYXJlIHJlbmFtZWQgd2hpbGUgYHRoaXMuZWxgIGFuZCBgRW51bS5NZW1iZXJgIHJlZmVyZW5jZXMgYXJlIGxlZnQgZGFuZ2xpbmcuIEFwcGx5XG4gICAgICAgICAqIGl0cyByZXBvcnRzIGJ5IGhhbmQ7IG5ldmVyIHJ1biBgLS1maXhgIG92ZXIgaXQuXG4gICAgICAgICAqL1xuICAgICAgICAvKlxuICAgICAgICAgKiBBIGdvb2QgcnVsZSwgYnV0IGl0cyBkZWZhdWx0IHByZWZpeGVzIGZvcmNlIHVuZ3JhbW1hdGljYWwgbmFtZXM6IGBtZW1iZXJQYWdlRXhpc3RzYCB3b3VsZCBiZWNvbWVcbiAgICAgICAgICogYGlzTWVtYmVyUGFnZUV4aXN0c2AgcmF0aGVyIHRoYW4gYGRvZXNNZW1iZXJQYWdlRXhpc3RgLiBUaGVzZSBlbnRyaWVzIEVYVEVORCB0aGUgZGVmYXVsdHMgKGBpc2AsXG4gICAgICAgICAqIGBoYXNgLCBgY2FuYCwgYHNob3VsZGAsIC4uLikgcmF0aGVyIHRoYW4gcmVwbGFjaW5nIHRoZW0sIHNvIGEgYm9vbGVhbiB3aXRoIG5vIGJvb2xlYW4tcmVhZGluZyBwcmVmaXhcbiAgICAgICAgICogYXQgYWxsIGlzIHN0aWxsIHJlamVjdGVkIC0tIHRoZSBydWxlIGp1c3Qgc3RvcHMgaW5zaXN0aW5nIHRoZSBwcmVmaXggY29tZSBmcm9tIGEgc2hvcnRlciBsaXN0LlxuICAgICAgICAgKlxuICAgICAgICAgKiBUaGUgbGlzdCBpcyBiaWRpcmVjdGlvbmFsOiBhZGRpbmcgYSBwcmVmaXggYWxzbyBhc3NlcnRzIHRoYXQgZXZlcnl0aGluZyBuYW1lZCB3aXRoIGl0IElTIGEgYm9vbGVhbi5cbiAgICAgICAgICogYGNoZWNrYCBlYXJucyBpdHMgcGxhY2Ugb24gYm90aCBjb3VudHMsIHNpbmNlIHRoZSBoYW5kZnVsIG9mIG5vbi1ib29sZWFuIGBjaGVjaypgIG5hbWVzIGl0IHN1cmZhY2VkXG4gICAgICAgICAqIHdlcmUgZ2VudWluZWx5IG1pcy1uYW1lZCAodm9pZCBmdW5jdGlvbnMgdGhhdCB0aHJvdywgYSBwcm9iZSByZXR1cm5pbmcgYW4gSFRUUCBzdGF0dXMpLiBgdGVzdGAgd2FzXG4gICAgICAgICAqIG1lYXN1cmVkIGFuZCByZWplY3RlZDogaXQgd291bGQgdmFsaWRhdGUgZml2ZSBgdGVzdCpgIGxpbmsgcHJlZGljYXRlcyB0aGF0IHJlYWQgYmV0dGVyIGFzIGBpcypgXG4gICAgICAgICAqIGFueXdheSwgYXQgdGhlIGNvc3Qgb2YgcmVuYW1pbmcgU0NSRUFNSU5HX0NBU0UgdGVzdCBmaXh0dXJlcyBhbmQgdGhlIGB0ZXN0Q292ZXJhZ2VgL2B0ZXN0V2F0Y2hgXG4gICAgICAgICAqIHJ1bm5lcnMgdGhhdCBkZWxpYmVyYXRlbHkgbWlycm9yIHRoZSBgdGVzdDpjb3ZlcmFnZWAvYHRlc3Q6d2F0Y2hgIG5wbSBzY3JpcHRzLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vY29uc2lzdGVudC1ib29sZWFuLW5hbWUnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcmVmaXhlczoge1xuICAgICAgICAgICAgICBhbGxvd3M6IHRydWUsXG4gICAgICAgICAgICAgIGNoZWNrOiB0cnVlLFxuICAgICAgICAgICAgICBjb250YWluczogdHJ1ZSxcbiAgICAgICAgICAgICAgZG9lczogdHJ1ZSxcbiAgICAgICAgICAgICAgaW5jbHVkZXM6IHRydWUsXG4gICAgICAgICAgICAgIG11c3Q6IHRydWUsXG4gICAgICAgICAgICAgIG5lZWRzOiB0cnVlLFxuICAgICAgICAgICAgICBzdXBwb3J0czogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgLypcbiAgICAgICAgICogVW5zYXRpc2ZpYWJsZSBhbG9uZ3NpZGUgYHBlcmZlY3Rpb25pc3Qvc29ydC1jbGFzc2VzYCwgd2hpY2ggaXMgY29uZmlndXJlZCBoZXJlIGFzIGEgcGxhaW5cbiAgICAgICAgICogYWxwaGFiZXRpY2FsIHNvcnQuIFRoaXMgcnVsZSB3YW50cyBhIGNhdGVnb3J5IG9yZGVyIChhbGwgZmllbGRzLCB0aGVuIHRoZSBjb25zdHJ1Y3RvciwgdGhlbiBhbGxcbiAgICAgICAgICogbWV0aG9kcyksIHNvIHRoZSBleHRyZW1lbHkgY29tbW9uIGBwcml2YXRlIF94YCBmaWVsZCBwYWlyZWQgd2l0aCBhIGBwdWJsaWMgZ2V0IHgoKWAgYWNjZXNzb3IgaXNcbiAgICAgICAgICogcmVqZWN0ZWQgYnkgd2hpY2hldmVyIHJ1bGUgbG9zZXM6IGFscGhhYmV0aWNhbGx5IHRoZSBhY2Nlc3NvciBwcmVjZWRlcyB0aGUgZmllbGQsIGJ5IGNhdGVnb3J5IHRoZVxuICAgICAgICAgKiBmaWVsZCBwcmVjZWRlcyB0aGUgYWNjZXNzb3IuIFVubGlrZSBgcHJlZmVyLWdsb2JhbC10aGlzYCB0aGUgY2xhc2ggcHJvZHVjZXMgbm9cbiAgICAgICAgICogYEVTTGludENpcmN1bGFyRml4ZXNXYXJuaW5nYCwgb25seSBiZWNhdXNlIHRoaXMgcnVsZSBzaGlwcyBubyBmaXhlciAtLSBib3RoIHJ1bGVzIGFyZSBgZXJyb3JgLCBzbyBub1xuICAgICAgICAgKiBhcnJhbmdlbWVudCBvZiBtZW1iZXJzIHNhdGlzZmllcyB0aGVtIGJvdGguIFRoZSBhbHBoYWJldGljYWwgc29ydCBpcyB0aGUgb25lIGFscmVhZHkgcm9sbGVkIG91dFxuICAgICAgICAgKiBhY3Jvc3MgdGhlIHBsdWdpbnMgY29uc3VtaW5nIHRoaXMgY29uZmlnLCBzbyBpdCBrZWVwcyBwcmVjZWRlbmNlLiBSZS1lbmFibGluZyB0aGlzIHJ1bGUgd291bGQgbWVhblxuICAgICAgICAgKiBnaXZpbmcgYHBlcmZlY3Rpb25pc3Qvc29ydC1jbGFzc2VzYCBhIG1hdGNoaW5nIGBncm91cHNgIG9wdGlvbiBhbmQgcmVvcmRlcmluZyBldmVyeSBjbGFzcy5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL2NvbnNpc3RlbnQtY2xhc3MtbWVtYmVyLW9yZGVyJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIEV2ZXJ5IHJlcG9ydCBpcyBgbmV3IEVycm9yKCkuc3RhY2tgLCB3aGljaCBjYXB0dXJlcyBhIHN0YWNrIHRyYWNlIGFuZCBuZXZlciBzdXJmYWNlcyBpdHMgbWVzc2FnZS5cbiAgICAgICAgICogVGhlIHJ1bGUgY2Fubm90IHRlbGwgdGhhdCBmcm9tIGFuIGVycm9yIHRoYXQgaXMgYWN0dWFsbHkgdGhyb3duIGF0IGEgdXNlci5cbiAgICAgICAgICpcbiAgICAgICAgICogTm8gYmFyZSBgbmV3IEFnZ3JlZ2F0ZUVycm9yKGVycm9ycylgIGlzIGxlZnQgZm9yIGl0IHRvIGNhdGNoOiBldmVyeSBzaXRlIG5vdyBidWlsZHMgaXRzIGFnZ3JlZ2F0ZVxuICAgICAgICAgKiB0aHJvdWdoIGBjcmVhdGVBZ2dyZWdhdGVFcnJvcmAsIHdoaWNoIGdpdmVzIGl0IGEgbWVzc2FnZSB0aGF0IG5hbWVzIHRoZSBmYWlsdXJlLiBBbiBlbXB0eSBvbmUgaXNcbiAgICAgICAgICogbG9zc3kgaW4gYSB3YXkgdGhhdCBvbmx5IHNob3dzIHVwIG91dHNpZGUgdGhpcyBsaWJyYXJ5IOKAlCBgZXJyb3JUb1N0cmluZ2Agd2Fsa3MgYGVycm9yc2AgYW5kIHByaW50c1xuICAgICAgICAgKiB0aGUgd2hvbGUgdHJlZSwgd2hpbGUgZXZlcnl0aGluZyByZWFkaW5nIGBtZXNzYWdlYCBzZWVzIGFuIGVtcHR5IHNlbnRlbmNlLiBUaGUgaGVscGVyIGxpdmVzIGluIGl0c1xuICAgICAgICAgKiBvd24gbGVhZiBgYWdncmVnYXRlLWVycm9yLnRzYCByYXRoZXIgdGhhbiBpbiBgZXJyb3IudHNgIHByZWNpc2VseSBzbyB0aGF0IGBkaXNwb3NhYmxlLnRzYCBjYW4gcmVhY2hcbiAgICAgICAgICogaXQsIHdoaWNoIGl0IGNvdWxkIG5vdCB3aGlsZSB0aGUgb25seSBjb3B5IHNhdCBpbiBhIG1vZHVsZSBpbXBvcnRpbmcgaXQgYmFjay5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL2Vycm9yLW1lc3NhZ2UnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIGRlZmF1bHQgc3R5bGUgZm9yIGBub2RlOnBhdGhgIGlzIGEgZGVmYXVsdCBpbXBvcnQsIGJ1dCB0aGlzIGNvZGViYXNlIGltcG9ydHMgaXRzIG1lbWJlcnMgYnkgbmFtZVxuICAgICAgICAgKiB0aHJvdWdob3V0LCBjb25zaXN0ZW50bHkgd2l0aCBldmVyeSBvdGhlciBgbm9kZTpgIG1vZHVsZSBpdCB1c2VzLiBDb25maWd1cmUgdGhlIHJ1bGUgdG8gZW5mb3JjZSB0aGVcbiAgICAgICAgICogc3R5bGUgYWN0dWFsbHkgaW4gdXNlIHJhdGhlciB0aGFuIGFubm90YXRlIDE3IHNpdGVzIHRoYXQgYXJlIG5vdCBnb2luZyB0byBjaGFuZ2UuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9pbXBvcnQtc3R5bGUnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzdHlsZXM6IHtcbiAgICAgICAgICAgICAgLy8gS2V5ZWQgYnkgdGhlIFVOUFJFRklYRUQgbW9kdWxlIG5hbWU6IHRoZSBydWxlJ3Mgb3duIHRhYmxlIHVzZXMgYHBhdGhgLCBzbyBhIGBub2RlOnBhdGhgIGtleSBuZXZlciBtYXRjaGVzLlxuICAgICAgICAgICAgICBwYXRoOiB7XG4gICAgICAgICAgICAgICAgbmFtZWQ6IHRydWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIHJ1bGUgY291bnRzIGNvbnN0cnVjdG9yIGNhbGxzIGFuZCBjb3VudHMgdGhyb3VnaCBhcnJheSBhbmQgb2JqZWN0IGxpdGVyYWxzLCBzbyBpdHMgZGVmYXVsdCBvZiAzXG4gICAgICAgICAqIHJlcG9ydHMgb3JkaW5hcnkgY29tcG9zaXRpb246IGBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ2Jvb20nKSlgIGluc2lkZSBhbiBhc3NlcnRpb24sIGEgdGVzdCBmaXh0dXJlXG4gICAgICAgICAqIGJ1aWx0IGFzIGBjcmVhdGVUeXBlSW5mbyh7IG1ldGhvZHM6IFtjcmVhdGVNZW1iZXJJbmZvKHsgLi4uIH0pXSB9KWAsIGB0aGlzLmFkZENoaWxkKG5ldyBDKHRoaXMuYXBwKSlgXG4gICAgICAgICAqIGluc2lkZSBhIHBhcmFtcyBiYWcuIFJhaXNpbmcgdGhlIGxpbWl0IGJ5IG9uZSBjbGVhcnMgZXZlcnkgcmVwb3J0IGhlcmUgd2hpbGUgc3RpbGwgY2F0Y2hpbmcgdGhlXG4gICAgICAgICAqIGdlbnVpbmVseSB1bnJlYWRhYmxlIG5lc3RpbmcgdGhlIHJ1bGUgaXMgZm9yLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbWF4LW5lc3RlZC1jYWxscyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1heDogNFxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ3VuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvKlxuICAgICAgICAgICAgICogUHJvcGVydHkgYW5kIG1lbWJlciBuYW1lcyBhcmUgY2hlY2tlZCB0b28sIHNvIGFuIGFiYnJldmlhdGlvbiBjYW5ub3Qgc3Vydml2ZSBieSBsaXZpbmcgb24gYW5cbiAgICAgICAgICAgICAqIG9iamVjdCByYXRoZXIgdGhhbiBpbiBhIHZhcmlhYmxlLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIFRoZSBydWxlIGlzIHB1cmVseSBzeW50YWN0aWM6IGl0IGNhbm5vdCB0ZWxsIGEgbWVtYmVyIHdlIGRlY2xhcmUgZnJvbSBvbmUgYmVsb25naW5nIHRvIGFcbiAgICAgICAgICAgICAqIGRlcGVuZGVuY3ksIGFuZCBpdCBvZmZlcnMgbm8gYXV0b2ZpeCBmb3IgcHJvcGVydGllcyAobWVhc3VyZWQ6IDY4MSBoaXRzLCAwIHdpdGggYSBmaXhlcikuIFNpdGVzXG4gICAgICAgICAgICAgKiBuYW1pbmcgYSBmb3JlaWduIG1lbWJlciAtLSBgRG9tRWxlbWVudEluZm8uYXR0cmAsIGBFdmFsSW5PYnNpZGlhblBhcmFtcy5mbmAsIGFuZCB0aGUgbGlrZSAtLSBhcmVcbiAgICAgICAgICAgICAqIHRoZXJlZm9yZSBpbXBvc3NpYmxlIHRvIHNhdGlzZnkgYW5kIGNhcnJ5IGFuIGlubGluZSBkaXNhYmxlLCBzbyBldmVyeXRoaW5nIHN0aWxsIHJlcG9ydGVkIGlzIG91cnNcbiAgICAgICAgICAgICAqIHRvIHJlbmFtZS5cbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBXaGVuIHJlbmFtaW5nIHRoZSByZXN0LCBub3RlIHRoYXQgYHRzY2AgYWxvbmUgaXMgTk9UIGEgc3VmZmljaWVudCBnYXRlOiBvYmplY3QtbGl0ZXJhbCBrZXlzIGluXG4gICAgICAgICAgICAgKiBsb29zZWx5IHR5cGVkIHBvc2l0aW9ucyAoYGV4cGVjdC5hcnJheUNvbnRhaW5pbmcoW3sgYmF0Y2hlZEFyZ3VtZW50czogLi4uIH1dKWApIGFyZSBub3QgY29udGV4dHVhbGx5XG4gICAgICAgICAgICAgKiB0eXBlZCwgc28gYSByZW5hbWUgbGVhdmVzIHRoZW0gYmVoaW5kIGFuZCBicmVha3MgdGhlIHN1aXRlIHdoZXJlIHRoZSB0eXBlIGNoZWNrZXIgc2VlcyBub3RoaW5nLlxuICAgICAgICAgICAgICogUmVuYW1lIGluIHNtYWxsIGJhdGNoZXMgd2l0aCB0aGUgZnVsbCB0ZXN0IHJ1biBpbiB0aGUgbG9vcC5cbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBUaGUgZGlzYWJsZWQgcmVwbGFjZW1lbnRzIGJlbG93IGFyZSBlc3RhYmxpc2hlZCB2b2NhYnVsYXJ5IHJhdGhlciB0aGFuIGFiYnJldmlhdGlvbnMgdG8gYmVcbiAgICAgICAgICAgICAqIGV4cGFuZGVkLiBgZWxgIGlzIGV4ZW1wdCBiZWNhdXNlIE9ic2lkaWFuIG5hbWVzIGV2ZXJ5IGVsZW1lbnQgbWVtYmVyIHRoYXQgd2F5IC0tIGBjb250YWluZXJFbGAsXG4gICAgICAgICAgICAgKiBgY29udGVudEVsYCwgYGlucHV0RWxgLCBgc2VsZWN0RWxgIC0tIHNvIGV4cGFuZGluZyBvdXJzIHRvIGAqRWxlbWVudGAgd291bGQgbGVhdmUgb3VyIGNvbXBvbmVudHNcbiAgICAgICAgICAgICAqIHJlYWRpbmcgaW5jb25zaXN0ZW50bHkgYmVzaWRlIHRoZSBPYnNpZGlhbiBvbmVzIHRoZXkgc2l0IG5leHQgdG8uIERpc2FibGluZyB0aGUgcmVwbGFjZW1lbnQgYWxzb1xuICAgICAgICAgICAgICogY292ZXJzIGNvbXBvdW5kIG5hbWVzLCB3aGljaCBpcyA3MiBzaXRlcyB0aGF0IHdvdWxkIG90aGVyd2lzZSBlYWNoIG5lZWQgYW4gaW5saW5lIGRpc2FibGUuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogYHJlZmAgaXMgZXhlbXB0IGZvciB0aGUgc2FtZSByZWFzb246IGBBc3luY0V2ZW50UmVmYCBpcyB0aGUgYXN5bmMgY291bnRlcnBhcnQgb2YgT2JzaWRpYW4nc1xuICAgICAgICAgICAgICogYEV2ZW50UmVmYCwgaGFuZGVkIHRvIHRoZSBzYW1lIGBvZmZyZWZgIC8gYHJlZ2lzdGVyRXZlbnRgIHNoYXBlcywgc28gdGhlIHR3byBuYW1lcyBoYXZlIHRvIG1hdGNoXG4gICAgICAgICAgICAgKiB0byByZWFkIGFzIGEgcGFpci5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY2hlY2tQcm9wZXJ0aWVzOiB0cnVlLFxuICAgICAgICAgICAgcmVwbGFjZW1lbnRzOiB7XG4gICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAqIGBhdHRyYCAvIGBhdHRyc2AgYXJlIE9ic2lkaWFuJ3Mgb3duOiBgY3JlYXRlRWwoJ2EnLCB7IGF0dHI6IHsgLi4uIH0gfSlgIHRha2VzIHRoZW0gYnkgdGhvc2VcbiAgICAgICAgICAgICAgICogbmFtZXMgb24gYERvbUVsZW1lbnRJbmZvYCwgc28gb3VycyBoYXZlIHRvIG1hdGNoIHRvIGJlIHBhc3NlZCB0aHJvdWdoLiBgcHJvcHNgIGlzIHRoZVxuICAgICAgICAgICAgICAgKiB1bml2ZXJzYWwgY29tcG9uZW50IHZvY2FidWxhcnksIGV4ZW1wdCBmb3IgdGhlIHNhbWUgcmVhc29uIGBwYXJhbXNgIGlzLlxuICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgYXR0cjogZmFsc2UsXG4gICAgICAgICAgICAgIGF0dHJzOiBmYWxzZSxcbiAgICAgICAgICAgICAgZGV2OiBmYWxzZSxcbiAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICogRXZlcnkgYGRpcmAgaGVyZSBpcyBhIGZpbGVzeXN0ZW0gZGlyZWN0b3J5LCBuZXZlciBhIGRpcmVjdGlvbiwgc28gdGhlIHJ1bGUgaXMgbmFycm93ZWQgdG8gdGhlXG4gICAgICAgICAgICAgICAqIG9uZSBleHBhbnNpb24gcmF0aGVyIHRoYW4gbGVmdCBvZmZlcmluZyBhIGNob2ljZSBpdCBjYW5ub3QgbWFrZS5cbiAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25hbWUtcmVwbGFjZW1lbnRzIC0tIFRoaXMgaXMgdGhlIHJ1bGUncyBvd24gcmVwbGFjZW1lbnQga2V5LCB3aGljaCBoYXMgdG8gYmUgc3BlbGxlZCB0aGUgd2F5IHRoZSBydWxlIHJlYWRzIGl0LlxuICAgICAgICAgICAgICBkaXI6IHtcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb246IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRpcmVjdG9yeTogdHJ1ZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBkaXN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgZG9jOiBmYWxzZSxcbiAgICAgICAgICAgICAgZG9jczogZmFsc2UsXG4gICAgICAgICAgICAgIGVsOiBmYWxzZSxcbiAgICAgICAgICAgICAgZW52OiBmYWxzZSxcbiAgICAgICAgICAgICAgbGliOiBmYWxzZSxcbiAgICAgICAgICAgICAgcGFyYW1zOiBmYWxzZSxcbiAgICAgICAgICAgICAgcHJvcHM6IGZhbHNlLFxuICAgICAgICAgICAgICByZWY6IGZhbHNlLFxuICAgICAgICAgICAgICByZWZzOiBmYWxzZSxcbiAgICAgICAgICAgICAgc3JjOiBmYWxzZSxcbiAgICAgICAgICAgICAgdXRpbDogZmFsc2UsXG4gICAgICAgICAgICAgIHV0aWxzOiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIG5leHQgc2l4IHJ1bGVzIGFsbCBzdWdnZXN0IGFuIEFQSSBuZXdlciB0aGFuIHRoaXMgcHJvamVjdCdzIGBsaWJgIChgRVMyMDIyYCksIHNvIGZvbGxvd2luZyBhbnkgb2ZcbiAgICAgICAgICogdGhlbSBmYWlscyB0byBjb21waWxlLiBUaGUgT2JzaWRpYW4gcGx1Z2luIGxheWVyIHRha2VzIHRoZSBmbG9vciBmcm9tIHRoZSBvbGRlc3QgT2JzaWRpYW4gaW5zdGFsbGVyIHRoYXRcbiAgICAgICAgICogY2FuIHN0aWxsIHJ1biBjdXJyZW50IE9ic2lkaWFuLCB3aGljaCByZWNvcmRzIGBlY21hU2NyaXB0VmVyc2lvbjogXCJFUzIwMjJcImAuIEVhY2ggaXMgb2ZmIGF0IHRoZSBjb25maWdcbiAgICAgICAgICogbGV2ZWwgcmF0aGVyIHRoYW4gYW5ub3RhdGVkIHBlciBzaXRlLCBiZWNhdXNlIG5vbmUgY2FuIGV2ZXIgYmUgc2F0aXNmaWVkIHdoaWxlIHRoYXQgZmxvb3IgaG9sZHMuIFJldmlzaXRcbiAgICAgICAgICogdGhlbSB0b2dldGhlciBpZiB0aGUgZmxvb3IgbW92ZXMuXG4gICAgICAgICAqXG4gICAgICAgICAqIGBBcnJheSN0b1JldmVyc2VkYCBhbmQgYEFycmF5I3RvU29ydGVkYCBhcmUgRVMyMDIzLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbm8tYXJyYXktcmV2ZXJzZSc6ICdvZmYnLFxuICAgICAgICAndW5pY29ybi9uby1hcnJheS1zb3J0JzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIGBjb250aW51ZWAgaW5zaWRlIGEgbmVzdGVkIGxvb3AgaXMgb3JkaW5hcnksIHJlYWRhYmxlIGNvbnRyb2wgZmxvdyBoZXJlLiBUaGUgcnVsZSdzIHJlbWVkeSBpcyB0b1xuICAgICAgICAgKiBleHRyYWN0IGV2ZXJ5IHN1Y2ggbG9vcCBpbnRvIGl0cyBvd24gZnVuY3Rpb24sIHdoaWNoIHNwcmVhZHMgb25lIGNvaGVyZW50IHRyYXZlcnNhbCBhY3Jvc3MgdHdvXG4gICAgICAgICAqIGRlY2xhcmF0aW9ucyB3aXRob3V0IG1ha2luZyBhbnl0aGluZyBjbGVhcmVyLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbm8tYnJlYWstaW4tbmVzdGVkLWxvb3AnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIHJ1bGUgY2Fubm90IHNlZSB0aHJvdWdoIGEgaG9pc3RlZCBmdW5jdGlvbiBkZWNsYXJhdGlvbiwgc28gaXQgdHJlYXRzIGEgYmluZGluZyB0aGF0IGEgbmVzdGVkXG4gICAgICAgICAqIGZ1bmN0aW9uIGFscmVhZHkgcmVhZCBhcyB1bnVzZWQgYmVmb3JlIHRoZSBleGl0LiBJbiBgcnVuV2l0aFRpbWVvdXRgIHRoYXQgaXMgYGxldCBpc0NvbXBsZXRlZGAsIHdoaWNoXG4gICAgICAgICAqIGBydW4oKWAgYW5kIGBpbm5lclRpbWVvdXQoKWAgYm90aCB0b3VjaCB3aGlsZSB0aGUgYFByb21pc2UucmFjZWAgYWJvdmUgdGhlIGV4aXQgaXMgc3RpbGwgcnVubmluZyAtLVxuICAgICAgICAgKiBtb3ZpbmcgdGhlIGRlY2xhcmF0aW9uIHBhc3QgdGhlIGV4aXQsIGFzIHRoZSBydWxlIGFza3MsIHdvdWxkIGxlYXZlIHRob3NlIHJlYWRzIGluIHRoZSB0ZW1wb3JhbCBkZWFkXG4gICAgICAgICAqIHpvbmUuIEl0cyBvd24gZml4ZXIgZGVjbGluZXMgYWxsIDE1IHNpdGVzIGZvciB0aGUgc2FtZSByZWFzb24gaXQgY2Fubm90IHByb3ZlIHRoZW0gc2FmZSwgc28gZm9sbG93aW5nXG4gICAgICAgICAqIHRoZSBydWxlIGlzIGVudGlyZWx5IG1hbnVhbC4gV2hhdCBpcyBsZWZ0IGFmdGVyIHRoYXQgaXMgcGxhY2VtZW50IHN0eWxlOiB0aGUgcmVtYWluaW5nIHJlcG9ydHMgYXJlXG4gICAgICAgICAqIG5hbWVkIGNvbnN0YW50cyBhbmQgZGVyaXZlZCBwYXRocyBkZWxpYmVyYXRlbHkgZ3JvdXBlZCBhdCB0aGUgdG9wIG9mIGEgZnVuY3Rpb24sIGFuZCBwdXNoaW5nIGVhY2ggb25lXG4gICAgICAgICAqIGJlbG93IHRoZSBmaXJzdCBndWFyZCBzcGxpdHMgYSBjb2hlc2l2ZSBibG9jayB0byBubyBiZW5lZml0LiBUaGUgdGhyZWUgc2l0ZXMgd2hlcmUgZGVmZXJyaW5nIHNraXBwZWRcbiAgICAgICAgICogcmVhbCB3b3JrIChhIHNlY29uZCBgY29tcHV0ZU5lZWRlZEV4cG9zdXJlYCB3YWxrLCBhIGB0b0pzb25gIHNlcmlhbGl6YXRpb24sIGFuIGBlbnN1cmVMZkVuZGluZ3NgIHBhc3MpXG4gICAgICAgICAqIHdlcmUgYXBwbGllZCBieSBoYW5kIGluc3RlYWQuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9uby1kZWNsYXJhdGlvbnMtYmVmb3JlLWVhcmx5LWV4aXQnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogQXNzaWduaW5nIG9udG8gdGhlIGdsb2JhbCBvYmplY3QgaXMgaG93IHRoaXMgbGlicmFyeSBpbnN0YWxscyBhbmQgcmVzdG9yZXMgdGVzdCBkb3VibGVzLCBhbmQgaG93IGFcbiAgICAgICAgICogZmV3IE9ic2lkaWFuLXJ1bnRpbWUgZ2xvYmFscyBhcmUgcmVhY2hlZCBhdCBhbGwuIFRoZSBydWxlIGNhbm5vdCBzZXBhcmF0ZSB0aGF0IGZyb20gYW4gYWNjaWRlbnRhbFxuICAgICAgICAgKiBnbG9iYWwgd3JpdGUsIGFuZCBpdCBoYXMgbm8gZml4ZXIuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9uby1nbG9iYWwtb2JqZWN0LXByb3BlcnR5LWFzc2lnbm1lbnQnOiAnb2ZmJyxcbiAgICAgICAgLy8gYG51bGxgIGlzIGxvYWQtYmVhcmluZyBoZXJlOiBhbiBvcHRpb25hbCBjb2xsYWJvcmF0b3IgaXMgbW9kZWxsZWQgYXMgYSByZXF1aXJlZCBgbnVsbCB8IFhgIGZpZWxkIHJhdGhlciB0aGFuIGFuIG9wdGlvbmFsIGBYYCwgc28gYG51bGxgIGFuZCBgdW5kZWZpbmVkYCBhcmUgbm90IGludGVyY2hhbmdlYWJsZS5cbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIHJ1bGUncyBsaXN0IG9mIHN0YW5kYXJkIGBTeW1ib2xgIHByb3BlcnRpZXMgcHJlZGF0ZXMgZXhwbGljaXQgcmVzb3VyY2UgbWFuYWdlbWVudCwgc28gaXQgcmVwb3J0c1xuICAgICAgICAgKiBgU3ltYm9sLmRpc3Bvc2VgIGFuZCBgU3ltYm9sLmFzeW5jRGlzcG9zZWAgYXMgbm9uLXN0YW5kYXJkLiBCb3RoIGFyZSBwYXJ0IG9mIHRoZSBsYW5ndWFnZSB0aGF0IHRoaXNcbiAgICAgICAgICogbGlicmFyeSBpcyBidWlsdCBvbiAtLSAxMTQgZmlsZXMgaGVyZSB1c2UgYHVzaW5nYCBkZWNsYXJhdGlvbnMsIGFuZCB0aGUgZGlzcG9zYWJsZSB0eXBlcyBhcmUgYVxuICAgICAgICAgKiBwdWJsaWMgcGFydCBvZiBpdHMgc3VyZmFjZSAtLSBzbyBhbGwgNTkgcmVwb3J0cyBhcmUgdGhlIHJ1bGUgYmVpbmcgb3V0IG9mIGRhdGUgcmF0aGVyIHRoYW4gYSBmaW5kaW5nLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbm8tbm9uc3RhbmRhcmQtYnVpbHRpbi1wcm9wZXJ0aWVzJzogJ29mZicsXG4gICAgICAgICd1bmljb3JuL25vLW51bGwnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogVHlwZVNjcmlwdCdzIGV4cGxpY2l0IGB0aGlzYCBwYXJhbWV0ZXIgKGBmdW5jdGlvbiBnZXQodGhpczogSG9sZGVyKSB7IHJldHVybiB0aGlzLnZhbHVlOyB9YCkgbWFrZXNcbiAgICAgICAgICogYHRoaXNgIG91dHNpZGUgYSBjbGFzcyBib3RoIGxlZ2FsIGFuZCB0eXBlLWNoZWNrZWQsIGJ1dCB0aGUgcnVsZSBpcyBzeW50YWN0aWMgYW5kIGZsYWdzIGl0IGlkZW50aWNhbGx5XG4gICAgICAgICAqIHRvIGEgZ2VudWluZWx5IHVuYm91bmQgYHRoaXNgLiBJdCBoYXMgbm8gb3B0aW9ucyAoYHNjaGVtYTogW11gKSBhbmQgbm8gZml4ZXIsIHNvIHRoZXJlIGlzIG5vIHdheSB0b1xuICAgICAgICAgKiBzZXBhcmF0ZSB0aGUgaWRpb20gZnJvbSB0aGUgYnVnIGl0IHRhcmdldHMuIE1vc3QgaGl0cyBoZXJlIHdlcmUgdHlwZWQgYHRoaXNgIHBhcmFtZXRlcnMgYW5kIHRlc3RzIHRoYXRcbiAgICAgICAgICogZGVsaWJlcmF0ZWx5IGFzc2VydCBgdGhpc2AgYmluZGluZy5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL25vLXRoaXMtb3V0c2lkZS1vZi1jbGFzcyc6ICdvZmYnLFxuICAgICAgICAvLyBTYW1lIGNhbGwgYXMgaXRzIG9iamVjdCBjb3VudGVycGFydCBhYm92ZTogdGhlIGRlc3RydWN0dXJpbmcgZGVwdGggZmxhZ2dlZCBoZXJlIGlzIGRlbGliZXJhdGUgYW5kIHJlYWRzIHdlbGwuXG4gICAgICAgICd1bmljb3JuL25vLXVucmVhZGFibGUtYXJyYXktZGVzdHJ1Y3R1cmluZyc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBUaGUgcmVwb3J0cyBhcmUgYWxsIGBmb3IgKGNvbnN0IGZpbGUgb2YgYXdhaXQgcmVhZGRpclBvc2l4KC4uLikpYCwgd2hpY2ggcmVhZHMgZXhhY3RseSBhcyBpbnRlbmRlZC5cbiAgICAgICAgICogSG9pc3RpbmcgdGhlIGF3YWl0ZWQgY2FsbCBpbnRvIGEgdmFyaWFibGUgbmFtZWQgYWZ0ZXIgdGhlIGxvb3AncyBvd24gaXRlcmFibGUgYWRkcyBhIGxpbmUgYW5kIGEgbmFtZVxuICAgICAgICAgKiB3aXRob3V0IGFkZGluZyBpbmZvcm1hdGlvbi5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL25vLXVucmVhZGFibGUtZm9yLW9mLWV4cHJlc3Npb24nOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIG5lc3RlZCBkZXN0cnVjdHVyaW5nIHRoaXMgZmxhZ3MgaXMgZGVsaWJlcmF0ZSBoZXJlIGFuZCByZWFkcyB3ZWxsOiBwdWxsaW5nIGEgbWVtYmVyIG91dCBvZiBhXG4gICAgICAgICAqIHBhcmFtcyBiYWcgaW4gb25lIHN0ZXAgc3RhdGVzIHdoZXJlIHRoZSB2YWx1ZSBjb21lcyBmcm9tLCB3aGljaCBhIHNlY29uZCBpbnRlcm1lZGlhdGUgYmluZGluZyBvbmx5XG4gICAgICAgICAqIG9ic2N1cmVzLiBUaGUgcnVsZSB0YWtlcyBubyBvcHRpb25zLCBzbyB0aGVyZSBpcyBubyB3YXkgdG8ga2VlcCB0aGUgZGVwdGggbGltaXQgaXQgaXMgcmVhbGx5IGFmdGVyXG4gICAgICAgICAqIHdoaWxlIGFsbG93aW5nIHRoZSBzaGFwZSBpbiB1c2UuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9uby11bnJlYWRhYmxlLW9iamVjdC1kZXN0cnVjdHVyaW5nJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIGBjaGVja0FyZ3VtZW50c2Agc3RyaXBzIGB1bmRlZmluZWRgIGFyZ3VtZW50cywgd2hpY2ggc2hpZnRzIHRoZSByZW1haW5pbmcgcG9zaXRpb25hbCBhcmd1bWVudHMgaW50b1xuICAgICAgICAgKiB0aGUgd3Jvbmcgc2xvdHM7IGBjaGVja0Fycm93RnVuY3Rpb25Cb2R5YCByZW1vdmVzIGByZXR1cm4gdW5kZWZpbmVkO2AgZnJvbSBhcnJvdyBib2RpZXMgd2hvc2Ugb3RoZXJcbiAgICAgICAgICogYnJhbmNoZXMgZG8gcmV0dXJuIGEgdmFsdWUsIHdoaWNoIHZpb2xhdGVzIHRoZSBgbm9JbXBsaWNpdFJldHVybnNgIHNldHRpbmcgdGhpcyBwcm9qZWN0IGNvbXBpbGVzIHdpdGguXG4gICAgICAgICAqIFRoZSBydWxlJ3MgcmVtYWluaW5nIGNhc2VzIChhIGJhcmUgYHVuZGVmaW5lZGAgaW5pdGlhbGl6ZXIsIGByZXR1cm4gdW5kZWZpbmVkO2AgaW4gYSB2b2lkIGZ1bmN0aW9uKVxuICAgICAgICAgKiBhcmUgc3RpbGwgd29ydGggaGF2aW5nLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbm8tdXNlbGVzcy11bmRlZmluZWQnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjaGVja0FyZ3VtZW50czogZmFsc2UsXG4gICAgICAgICAgICBjaGVja0Fycm93RnVuY3Rpb25Cb2R5OiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgLy8gYEFycmF5LmZyb21Bc3luY2AgaXMgRVMyMDI0LiBTZWUgdGhlIEVTMjAyMiBmbG9vciBub3RlIGFib3ZlLlxuICAgICAgICAndW5pY29ybi9wcmVmZXItYXJyYXktZnJvbS1hc3luYyc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBFdmVyeSBoaXQgaGVyZSBpcyBhIHByb21pc2UgZGVsaWJlcmF0ZWx5IE5PVCBhd2FpdGVkLCBhbmQgYGF3YWl0YCB3b3VsZCBjaGFuZ2Ugd2hhdCB0aGUgY29kZSBkb2VzLlxuICAgICAgICAgKiBgcmVzdWx0LmNhdGNoKHRocm93RGVsYXllZClgIGluIGBhc3luYy1ldmVudHMudHNgIGlzIHRoZSBmaXJlLWFuZC1mb3JnZXQgZXJyb3IgcGF0aCB0aGUgbW9kdWxlIGlzXG4gICAgICAgICAqIGJ1aWx0IG9uOyB0aGUgcmVzdCBob2xkIGFuIHVucmVzb2x2ZWQgcHJvbWlzZSBhbmQgYXNzZXJ0IHRoZSBjYWxsYmFjayBoYXMgbm90IGZpcmVkIHlldCwgc28gYXdhaXRpbmdcbiAgICAgICAgICogd291bGQgaGFuZyB0aGUgdGVzdCBvciBpbnZlcnQgd2hhdCBpdCBwcm92ZXMuIFRoZSBydWxlIGNhbm5vdCB0ZWxsIGEgZm9yZ290dGVuIGBhd2FpdGAgZnJvbSBhblxuICAgICAgICAgKiBpbnRlbnRpb25hbCBvbmUsIGFuZCB0aGlzIGNvZGViYXNlIHNjaGVkdWxlcyBmaXJlLWFuZC1mb3JnZXQgd29yayBhcyBhIGNvcmUgcGF0dGVybi5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL3ByZWZlci1hd2FpdCc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBBbGwgdGhyZWUgcmVwb3J0cyByZWFkIEhUTUwgb3V0IChgY29uc3QgaHRtbCA9IGVsLmlubmVySFRNTGApLCBuZXZlciB3cml0ZSBpdCwgYW5kIGZvciBhIHJlYWRcbiAgICAgICAgICogYGdldEhUTUwoKWAgcmV0dXJucyB0aGUgc2FtZSBzdHJpbmcuIFdoYXQgaXQgYWRkcyBpcyBzaGFkb3ctcm9vdCBzZXJpYWxpemF0aW9uIG9wdGlvbnMgdGhhdCBub3RoaW5nXG4gICAgICAgICAqIGhlcmUgYXNrcyBmb3IsIGluIGV4Y2hhbmdlIGZvciBhIG11Y2ggbmV3ZXIgcGxhdGZvcm0gZmxvb3IgdGhhbiBgaW5uZXJIVE1MYCAtLSBhIGJhZCB0cmFkZSBmb3IgYVxuICAgICAgICAgKiBsaWJyYXJ5IHRoYXQgaGFzIHRvIHJ1biBvbiB3aGF0ZXZlciBDaHJvbWl1bSB0aGUgaW5zdGFsbGVkIE9ic2lkaWFuIHNoaXBzLiBUaGUgcnVsZSdzIG90aGVyIGhhbGYsXG4gICAgICAgICAqIHJld3JpdGluZyB3cml0ZXMgdG8gdGhlIHNhbml0aXppbmcgYHNldEhUTUwoKWAsIHdvdWxkIGJlIHdvcnRoIGhhdmluZzsgaXQganVzdCBuZXZlciBmaXJlcyBoZXJlLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLWRvbS1ub2RlLWh0bWwtbWV0aG9kcyc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBJdGVyYXRvciBoZWxwZXJzIChgSXRlcmF0b3Ijc29tZWAgYW5kIGZyaWVuZHMpIGFyZSBFUzIwMjUsIHNvIHRoaXMgYmVsb25ncyB3aXRoIGBuby1hcnJheS1yZXZlcnNlYCBhbmRcbiAgICAgICAgICogYG5vLWFycmF5LXNvcnRgIGFib3ZlOiB0aGUgc2FtZSBFUzIwMjIgZmxvb3IgcnVsZXMgaXQgb3V0LCBhbmQgdGhlIHNhbWUgbm90ZSBhcHBsaWVzIC0tIHJldmlzaXQgdGhlbVxuICAgICAgICAgKiB0b2dldGhlciBpZiB0aGF0IGZsb29yIG1vdmVzLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLWl0ZXJhdG9yLWhlbHBlcnMnOiAnb2ZmJyxcbiAgICAgICAgLy8gYEl0ZXJhdG9yI3RvQXJyYXlgIGlzIEVTMjAyNS4gU2VlIHRoZSBFUzIwMjIgZmxvb3Igbm90ZSBhYm92ZS5cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLWl0ZXJhdG9yLXRvLWFycmF5JzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIFJlcGxhY2VkIGJ5IGB0eXBlc2NyaXB0LWRldi10b29sa2l0L3ByZWZlci1sb2dpY2FsLW9wZXJhdG9yLW92ZXItdGVybmFyeWAsIHdoaWNoIHJlcG9ydHMgdGhlIHNhbWUgYW5kXG4gICAgICAgICAqIGFsc28gZml4ZXMgYSBib29sZWFuIGxpdGVyYWwgYnJhbmNoIGluIFR5cGVTY3JpcHQuIFVuaWNvcm4gd2l0aGhvbGRzIHRoYXQgZml4IHRoZXJlLCB3aGlsZVxuICAgICAgICAgKiBgdW5pY29ybi9wcmVmZXItdGVybmFyeWAga2VlcHMgcHJvZHVjaW5nIHRoZSBzaGFwZSwgc28gYGxpbnQ6Zml4YCBsZWZ0IGFuIGVycm9yIGl0IGhhZCBqdXN0IGNyZWF0ZWQuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9wcmVmZXItbG9naWNhbC1vcGVyYXRvci1vdmVyLXRlcm5hcnknOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIHN1Z2dlc3RlZCByZXBsYWNlbWVudCBpcyBgTWF0aC50cnVuYyhOdW1iZXIoeCkpYCwgd2hpY2ggaXMgbG9uZ2VyIHRoYW4gYHBhcnNlSW50KHgsIDEwKWAgYW5kIG5vXG4gICAgICAgICAqIGNsZWFyZXIsIGFuZCBpdCBpcyBub3QgdGhlIHNhbWUgZnVuY3Rpb246IGBwYXJzZUludGAgc3RvcHMgYXQgdGhlIGZpcnN0IGNoYXJhY3RlciB0aGF0IGNhbm5vdCBiZSBwYXJ0XG4gICAgICAgICAqIG9mIHRoZSBudW1iZXIsIHNvIGAnMTJhYmMnYCBwYXJzZXMgdG8gMTIgd2hlcmUgYE51bWJlcmAgeWllbGRzIGBOYU5gLiBUd28gb2YgdGhlIHJlcG9ydHMgcmVhZCB1c2VyXG4gICAgICAgICAqIGlucHV0IHRocm91Z2ggdGhhdCBkaWZmZXJlbmNlIC0tIHRoZSBwYWdlLWp1bXAgYm94IGluIHRoZSBgRGF0YXZpZXdgIGhlbHBlciwgYW5kXG4gICAgICAgICAqIGBOdW1iZXJDb21wb25lbnQudmFsdWVGcm9tU3RyaW5nYCwgd2hvc2UgbGVuaWVudCBwYXJzZSBpcyBwYXJ0IG9mIGEgcHVibGlzaGVkIGNvbXBvbmVudCdzIGJlaGF2aW9yLlxuICAgICAgICAgKiBUaGUgcmVzdCBwYXJzZSBtYWNoaW5lLWdlbmVyYXRlZCBzdHJpbmdzLCB3aGVyZSB0aGUgdHdvIGFncmVlIGJ1dCB0aGUgc2hvcnRlciBzcGVsbGluZyBzdGlsbCB3aW5zLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLW51bWJlci1jb2VyY2lvbic6ICdvZmYnLFxuICAgICAgICAvLyBgUHJvbWlzZS53aXRoUmVzb2x2ZXJzYCBpcyBFUzIwMjQuIFNlZSB0aGUgRVMyMDIyIGZsb29yIG5vdGUgYWJvdmUuXG4gICAgICAgICd1bmljb3JuL3ByZWZlci1wcm9taXNlLXdpdGgtcmVzb2x2ZXJzJzogJ29mZicsXG4gICAgICAgIC8vIGBTZXQjdW5pb25gIGFuZCBmcmllbmRzIGFyZSBFUzIwMjUuIFNlZSB0aGUgRVMyMDIyIGZsb29yIG5vdGUgYWJvdmUuXG4gICAgICAgICd1bmljb3JuL3ByZWZlci1zZXQtbWV0aG9kcyc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBUaGUgcnVsZSByYW5rcyBvcGVyYW5kcyBieSBzeW50YWN0aWMgc2hhcGUsIG5vdCBjb3N0LCBzbyBldmVyeSByZXBvcnQgaGVyZSBzd2FwcyBvbmUgcHJvcGVydHkgcmVhZFxuICAgICAgICAgKiBhaGVhZCBvZiBhbm90aGVyIGFuZCBidXlzIG5vdGhpbmcuIEl0cyBvd24gbWVzc2FnZSBjb25jZWRlcyBpdCBjYW5ub3QgY2hlY2sgdGhlIHBhcnQgdGhhdCBtYXR0ZXJzIC0tXG4gICAgICAgICAqIFwiYWZ0ZXIgdmVyaWZ5aW5nIHNob3J0LWNpcmN1aXQgYmVoYXZpb3JcIiAtLSBhbmQgb25lIHJlcG9ydCBzaXRzIGRpcmVjdGx5IHVuZGVyIGEgY29tbWVudCByZWNvcmRpbmdcbiAgICAgICAgICogdGhhdCB0aGUgb3BlcmFuZHMgY2hhbmdlIGluc2lkZSBhIGByZW5hbWVgIGV2ZW50IGhhbmRsZXIsIHdoaWNoIGlzIHdoZXJlIG9yZGVyIHN0b3BzIGJlaW5nIGZyZWUuXG4gICAgICAgICAqIFRoZSBjdXJyZW50IG9yZGVycyBhbHNvIGNhcnJ5IGludGVudDogYSBudWxsIGd1YXJkIGJlZm9yZSB0aGUgdXNlIGl0IGd1YXJkcywgYW5kIHRoZSBjb25kaXRpb24gYmVpbmdcbiAgICAgICAgICogcmVwb3J0ZWQgYmVmb3JlIHRoZSBzdGF0ZSBpdCBjb250cmFkaWN0cy5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL3ByZWZlci1zaW1wbGUtY29uZGl0aW9uLWZpcnN0JzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIGBVUkwuY2FuUGFyc2VgIHJlcXVpcmVzIE5vZGUgMTguMTcsIHdlbGwgYWJvdmUgdGhlIE5vZGUgMTYuMTYuMCBmbG9vciB0aGF0IHNoaXBwZWQgc291cmNlIHRhcmdldHNcbiAgICAgICAgICogKHNlZSB0aGUgT2JzaWRpYW4gcGx1Z2luIGxheWVyJ3MgYG1pbmltdW1Ob2RlVmVyc2lvbmApLiBUaGUgcnVsZSBjYW4gdGhlcmVmb3JlIG5ldmVyIGJlIHNhdGlzZmllZCB0aGVyZSwgc28gaXQgaXMgb2ZmIGF0IHRoZVxuICAgICAgICAgKiBjb25maWcgbGV2ZWwgcmF0aGVyIHRoYW4gYW5ub3RhdGVkIGF0IGVhY2ggY2FsbCBzaXRlLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLXVybC1jYW4tcGFyc2UnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogRXZlcnkgYXJyYXkgcmVwb3J0ZWQgaGVyZSBob2xkcyBzdHJpbmdzLCB3aGVyZSB0aGUgZGVmYXVsdCBzb3J0IGlzIGFscmVhZHkgd2VsbCBkZWZpbmVkIGFuZCBjb3JyZWN0LlxuICAgICAgICAgKiBBZGRpbmcgdGhlIGNvbXBhcmF0b3IgdGhlIHJ1bGUgYXNrcyBmb3Igd291bGQgbWVhbiBjaG9vc2luZyBiZXR3ZWVuIGNvZGUtdW5pdCBhbmQgbG9jYWxlIG9yZGVyaW5nLFxuICAgICAgICAgKiBzbyBmb2xsb3dpbmcgaXQgd291bGQgQ0hBTkdFIHRoZSBzb3J0IHJhdGhlciB0aGFuIGRvY3VtZW50IGl0LiBUaGUgcnVsZSBlYXJucyBpdHMgcGxhY2Ugb24gbnVtZXJpY1xuICAgICAgICAgKiBhcnJheXM7IGl0IGRvZXMgbm90IGhhdmUgYW55IGhlcmUuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9yZXF1aXJlLWFycmF5LXNvcnQtY29tcGFyZSc6ICdvZmYnLFxuICAgICAgICAvLyBUaGUgY29kZWJhc2UgYWxyZWFkeSBzcGVsbHMgZW5jb2RpbmdzIHRoZSB3YXkgdGhlIEVuY29kaW5nIFN0YW5kYXJkIGRvZXMgKGB1dGYtOGApLCB3aGljaCBpcyBhbHNvIHdoYXQgYFRleHREZWNvZGVyYCByZXBvcnRzLiBLZWVwIHRoZSBydWxlIGVuZm9yY2luZyBjb25zaXN0ZW5jeSwganVzdCBpbiB0aGUgZGlyZWN0aW9uIGFscmVhZHkgaW4gdXNlLlxuICAgICAgICAndW5pY29ybi90ZXh0LWVuY29kaW5nLWlkZW50aWZpZXItY2FzZSc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHdpdGhEYXNoOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBCdWlsZC9saW50L3ZlcnNpb24gc2NyaXB0cyBhcmUgQ0xJIGVudHJ5IHBvaW50cywgd2hlcmUgZXhpdGluZyB3aXRoIGEgc3RhdHVzIGNvZGUgaXMgdGhlIGludGVyZmFjZS5cbiAgICAgIGZpbGVzOiBjb250ZXh0LnNjcmlwdEZpbGVzLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ3VuaWNvcm4vbm8tcHJvY2Vzcy1leGl0JzogJ29mZidcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIC8qXG4gICAgICAgKiBBIG1vZHVsZS1sZXZlbCBmaXh0dXJlIGFzc2lnbmVkIGZyb20gYGJlZm9yZUVhY2hgIGlzIHRoZSBzdGFuZGFyZCB0ZXN0IHNoYXBlOlxuICAgICAgICpcbiAgICAgICAqICAgbGV0IGFwcDogQXBwO1xuICAgICAgICogICBiZWZvcmVFYWNoKCgpID0+IHsgYXBwID0gQXBwLmNyZWF0ZUNvbmZpZ3VyZWRfXygpOyB9KTtcbiAgICAgICAqXG4gICAgICAgKiBUaGUgcnVsZSBpcyByaWdodCBhYm91dCBwcm9kdWN0aW9uIGNvZGUgLS0gbW9kdWxlIHN0YXRlIHJlYXNzaWduZWQgZnJvbSBpbnNpZGUgYSBmdW5jdGlvbiBpcyB3b3J0aFxuICAgICAgICogZmxhZ2dpbmcsIGFuZCB0aGUgZml4IGlzIHRvIGhvbGQgaXQgaW4gYSBgY29uc3RgIG9iamVjdCBpbnN0ZWFkLiBJbiB0ZXN0cyB0aGF0IHdvdWxkIHJlcGxhY2UgZXZlcnlcbiAgICAgICAqIGBhcHBgIHdpdGggYFNUQVRFLmFwcGAgYW5kIG1ha2UgZWFjaCBmaWxlIHJlYWQgd29yc2UgZm9yIG5vIGdhaW4sIHNpbmNlIHRoZSBmaXh0dXJlIGlzIHJlc2V0IHBlciB0ZXN0XG4gICAgICAgKiBieSBkZXNpZ24uIFNjb3BlZCBvZmYgaGVyZSByYXRoZXIgdGhhbiBkaXNhYmxlZCBvdXRyaWdodCwgc28gcHJvZHVjdGlvbiBjb2RlIGtlZXBzIHRoZSBjaGVjay5cbiAgICAgICAqL1xuICAgICAgZmlsZXM6IGNvbnRleHQudGVzdEZpbGVzLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgLypcbiAgICAgICAgICogVHdvIHNoYXBlcyBoZXJlIGNhbm5vdCBmb2xsb3cgdGhlIGFkdmljZS4gQSBoZWxwZXIgZGVmaW5lZCBpbnNpZGUgYW4gYGV2YWxJbk9ic2lkaWFuYCBjYWxsYmFja1xuICAgICAgICAgKiBjYW5ub3QgYmUgaG9pc3RlZCBhdCBhbGw6IHRoZSBjYWxsYmFjayBpcyBzZXJpYWxpemVkIHdpdGggYHRvU3RyaW5nKClgIGFuZCBydW5zIGluc2lkZSBPYnNpZGlhbiwgc29cbiAgICAgICAgICogYW55dGhpbmcgbGVmdCBiZWhpbmQgaW4gdGhlIG1vZHVsZSBzY29wZSBpcyBzaW1wbHkgbm90IHRoZXJlLiBBbmQgYSBwZXItc3VpdGUgZmFjdG9yeVxuICAgICAgICAgKiAoYGNyZWF0ZUNvbXBvbmVudGAsIGBjcmVhdGVNb2NrUGx1Z2luYCkgaXMgZGVsaWJlcmF0ZWx5IGxvY2FsLCBrZWVwaW5nIGVhY2ggc3VpdGUncyBmaXh0dXJlIG5leHQgdG9cbiAgICAgICAgICogdGhlIGFzc2VydGlvbnMgdGhhdCByZWFkIGl0LiBQcm9kdWN0aW9uIGNvZGUga2VlcHMgdGhlIGNoZWNrLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vY29uc2lzdGVudC1mdW5jdGlvbi1zY29waW5nJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIEEgdGVzdCBiaW5kaW5nIGlzIG5hbWVkIGFmdGVyIHRoZSB0aGluZyBpdCBjYXB0dXJlcywgbm90IGFmdGVyIHdoYXQgaXQgZG9lczogYGNyZWF0ZUVsZW1lbnRTcHlgXG4gICAgICAgICAqIGhvbGRzIHRoZSBzcHkgb24gYGNyZWF0ZUVsZW1lbnRgLCBhbmQgYGNyZWF0ZVByb2dyYW1PcHRpb25zYCBob2xkcyB0aGUgb3B0aW9ucyBgY3JlYXRlUHJvZ3JhbWAgd2FzXG4gICAgICAgICAqIGNhbGxlZCB3aXRoLiBUaGUgdmVyYiBiZWxvbmdzIHRvIHRoZSBuYW1lIGJlaW5nIHJlZmVyZW5jZWQsIHNvIHRoZSBydWxlIHJlYWRzIGl0IGFzIGEgZnVuY3Rpb24gbmFtZVxuICAgICAgICAgKiB0aGF0IGlzIG5vdCBhIGZ1bmN0aW9uLiBMZWZ0IG9uIGZvciBwcm9kdWN0aW9uIGNvZGUsIHdoZXJlIHRoZSBjb21wbGFpbnQgaXMgdGhlIHJpZ2h0IG9uZS5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL25vLW5vbi1mdW5jdGlvbi12ZXJiLXByZWZpeCc6ICdvZmYnLFxuICAgICAgICAndW5pY29ybi9uby10b3AtbGV2ZWwtYXNzaWdubWVudC1pbi1mdW5jdGlvbic6ICdvZmYnXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuLyogZXNsaW50LWVuYWJsZSBuby1tYWdpYy1udW1iZXJzIC0tIFdlIGRpc2FibGVkIG1hZ2ljIG51bWJlcnMgYmVjYXVzZSB0aGV5IGFyZSB1c2VkIGFsbCBvdmVyIHRoZSBjb25maWdzLiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWdCQSxxQkFBNEI7QUFDNUIsNEJBQWtDO0FBQ2xDLGdCQUFtQjtBQUNuQixrQkFBcUI7QUFFckIsMkJBQXNCO0FBQ3RCLCtDQUErQztBQUMvQyxvQ0FBOEQ7QUFFOUQsNkJBQXVCO0FBQ3ZCLHlDQUFnRDtBQUVoRCxtQ0FBb0I7QUFDcEIsb0JBR087QUFDUCxxQkFBMkI7QUFFM0IsK0JBQXFCO0FBRXJCLHdCQUEwQjtBQUMxQixrQkFBOEI7QUFDOUIseUNBQThDO0FBQzlDLDZCQUdPO0FBQ1AsMEJBQTZDO0FBcUR0QyxNQUFNLG9CQUFvQjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSWYsa0JBQTRCLENBQUM7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUs3QixjQUF3QixDQUFDO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLekIsY0FBd0IsQ0FBQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNekIsZ0JBQTBCLENBQUM7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUszQixZQUFzQixDQUFDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT2hDLFdBQXFCO0FBQzFCLFdBQU8sQ0FBQyxHQUFHLEtBQUssV0FBVyxHQUFHLEtBQUssYUFBYSxHQUFHLEtBQUssaUJBQWlCLEdBQUcsS0FBSyxXQUFXO0FBQUEsRUFDOUY7QUFDRjtBQVFPLFNBQVMsbUNBQXdEO0FBQ3RFLFFBQU0sVUFBVSxJQUFJLG9CQUFvQjtBQUN4QyxVQUFRLGNBQWMsS0FBSyw0QkFBVSxHQUFHO0FBQ3hDLFVBQVEsZ0JBQWdCO0FBQUEsSUFDdEIsNEJBQVU7QUFBQSxJQUNWLDRCQUFVO0FBQUEsSUFDViw0QkFBVTtBQUFBLEVBQ1o7QUFDQSxVQUFRLFlBQVk7QUFBQSxRQUNsQixrQkFBSyw0QkFBVSxTQUFTLDRCQUFVLFNBQVMsNEJBQVUsS0FBSztBQUFBLEVBQzVEO0FBQ0EsVUFBUSxZQUFZO0FBQUEsUUFDbEIsa0JBQUssNEJBQVUsS0FBSyw0QkFBVSxTQUFTLDRCQUFVLEtBQUs7QUFBQSxRQUN0RCxrQkFBSyw0QkFBVSxLQUFLLDRCQUFVLFNBQVMsNEJBQVUsTUFBTTtBQUFBLEVBQ3pEO0FBQ0EsVUFBUSxVQUFVO0FBQUEsUUFDaEIsa0JBQUssNEJBQVUsT0FBTyw0QkFBVSxTQUFTLDRCQUFVLEtBQUs7QUFBQSxRQUN4RCxrQkFBSyw0QkFBVSxPQUFPLDRCQUFVLFNBQVMsNEJBQVUsS0FBSztBQUFBLFFBQ3hELGtCQUFLLDRCQUFVLEtBQUssNEJBQVUsU0FBUyw0QkFBVSxTQUFTO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQWMxRCxrQkFBSyw0QkFBVSxTQUFTLDRCQUFVLFNBQVMsNEJBQVUsU0FBUztBQUFBLEVBQ2hFO0FBQ0EsU0FBTztBQUNUO0FBUU8sU0FBUyxvQkFBb0IsVUFBc0MsQ0FBQyxHQUFvQjtBQUM3RixRQUFNLFVBQVUsaUNBQWlDO0FBQ2pELFVBQVEsY0FBYyxPQUFPO0FBQzdCLFFBQU0sZ0JBQWdCLFFBQVEsZ0JBQWdCLE9BQU8sS0FBSyxDQUFDO0FBRTNELGFBQU87QUFBQSxJQUNMLEdBQUcsdUJBQXVCO0FBQUEsSUFDMUIsR0FBRywyQkFBMkI7QUFBQSxNQUM1QjtBQUFBLE1BQ0EsR0FBSSxRQUFRLHVCQUF1QixVQUFhLEVBQUUsb0JBQW9CLFFBQVEsbUJBQW1CO0FBQUEsSUFDbkcsQ0FBQztBQUFBLElBQ0QsR0FBRztBQUFBLEVBQ0w7QUFDRjtBQVNPLFNBQVMscUJBQXFCLFNBQStDO0FBQ2xGLGFBQU8sNEJBQWE7QUFBQSxJQUNsQjtBQUFBLE1BQ0UsU0FBUyxDQUFDLFVBQUFBLFFBQU8sUUFBUSxXQUFXO0FBQUEsTUFDcEMsT0FBTyxRQUFRLFNBQVM7QUFBQSxNQUN4QixPQUFPO0FBQUEsUUFDTCxrQkFBa0I7QUFBQSxRQUNsQix5QkFBeUI7QUFBQSxRQUN6QixhQUFhO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFhYix3QkFBd0I7QUFBQSxVQUN0QjtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsWUFDRSxPQUFPLEVBQUUsZUFBZSw0QkFBNEI7QUFBQSxZQUNwRCxNQUFNLEVBQUUsMkJBQTJCLE1BQU0sZUFBZSx5QkFBeUI7QUFBQSxVQUNuRjtBQUFBLFFBQ0Y7QUFBQSxRQUNBLGNBQWM7QUFBQSxRQUNkLG1CQUFtQjtBQUFBLFFBQ25CLFNBQVM7QUFBQSxRQUNULGdCQUFnQjtBQUFBLFFBQ2hCLHFCQUFxQjtBQUFBLFFBQ3JCLHNCQUFzQjtBQUFBLFFBQ3RCLFVBQVU7QUFBQSxRQUNWLHNCQUFzQjtBQUFBLFFBQ3RCLGNBQWM7QUFBQSxRQUNkLGNBQWM7QUFBQSxVQUNaO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxZQUNFLHFCQUFxQjtBQUFBLFVBQ3ZCO0FBQUEsUUFDRjtBQUFBLFFBQ0EsMEJBQTBCO0FBQUEsVUFDeEI7QUFBQSxVQUNBO0FBQUEsUUFDRjtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsWUFBWTtBQUFBLFFBQ1osd0JBQXdCO0FBQUEsUUFDeEIsY0FBYztBQUFBLFFBQ2QsYUFBYTtBQUFBLFFBQ2IsY0FBYztBQUFBLFVBQ1o7QUFBQSxVQUNBO0FBQUEsWUFDRSxPQUFPO0FBQUEsY0FDTDtBQUFBLGNBQ0E7QUFBQSxZQUNGO0FBQUEsVUFDRjtBQUFBLFFBQ0Y7QUFBQSxRQUNBLHlCQUF5QjtBQUFBLFFBQ3pCLGdCQUFnQjtBQUFBLFFBQ2hCLGtCQUFrQjtBQUFBLFVBQ2hCO0FBQUEsVUFDQTtBQUFBLFlBQ0UsYUFBYTtBQUFBLFVBQ2Y7QUFBQSxRQUNGO0FBQUEsUUFDQSxxQkFBcUI7QUFBQSxRQUNyQixvQkFBb0I7QUFBQSxRQUNwQixpQkFBaUI7QUFBQSxRQUNqQixrQkFBa0I7QUFBQSxRQUNsQix3QkFBd0I7QUFBQSxVQUN0QjtBQUFBLFVBQ0E7QUFBQSxZQUNFLE9BQU87QUFBQSxjQUNMO0FBQUEsWUFDRjtBQUFBLFVBQ0Y7QUFBQSxRQUNGO0FBQUEsUUFDQSxtQkFBbUI7QUFBQSxRQUNuQix5QkFBeUI7QUFBQSxRQUN6QixlQUFlO0FBQUEsUUFDZixnQkFBZ0I7QUFBQSxRQUNoQixhQUFhO0FBQUEsUUFDYixrQkFBa0I7QUFBQSxRQUNsQixnQkFBZ0I7QUFBQSxRQUNoQixnQkFBZ0I7QUFBQSxRQUNoQixvQkFBb0I7QUFBQSxVQUNsQjtBQUFBLFVBQ0E7QUFBQSxZQUNFLGVBQWU7QUFBQSxZQUNmLGNBQWM7QUFBQSxZQUNkLFFBQVE7QUFBQSxjQUNOO0FBQUEsY0FDQTtBQUFBLGNBQ0E7QUFBQSxZQUNGO0FBQUEsVUFDRjtBQUFBLFFBQ0Y7QUFBQSxRQUNBLG1CQUFtQjtBQUFBLFFBQ25CLGdCQUFnQjtBQUFBLFFBQ2hCLHdCQUF3QjtBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLFFBQ3JCLGVBQWU7QUFBQSxRQUNmLG1CQUFtQjtBQUFBLFFBQ25CLHlCQUF5QjtBQUFBLFFBQ3pCLG1CQUFtQjtBQUFBLFFBQ25CLDhCQUE4QjtBQUFBLFFBQzlCLFlBQVk7QUFBQSxRQUNaLHdCQUF3QjtBQUFBLFVBQ3RCO0FBQUEsVUFDQSxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0Esb0JBQW9CO0FBQUEsUUFDcEIsaUJBQWlCO0FBQUEsUUFDakIsbUJBQW1CO0FBQUEsUUFDbkIsZ0JBQWdCO0FBQUEsUUFDaEIsYUFBYTtBQUFBLFFBQ2IsK0JBQStCO0FBQUEsUUFDL0Isb0JBQW9CO0FBQUEsUUFDcEIsZ0NBQWdDO0FBQUEsUUFDaEMsdUJBQXVCO0FBQUEsUUFDdkIsdUJBQXVCO0FBQUEsUUFDdkIseUJBQXlCO0FBQUEsUUFDekIseUJBQXlCO0FBQUEsUUFDekIsbUJBQW1CO0FBQUEsUUFDbkIsMkJBQTJCO0FBQUEsUUFDM0IscUJBQXFCO0FBQUEsUUFDckIsMEJBQTBCO0FBQUEsUUFDMUIscUJBQXFCO0FBQUEsUUFDckIscUJBQXFCO0FBQUEsUUFDckIsVUFBVTtBQUFBLFFBQ1YsV0FBVztBQUFBLFFBQ1gsb0JBQW9CO0FBQUEsUUFDcEIsdUJBQXVCO0FBQUEsUUFDdkIseUJBQXlCO0FBQUEsUUFDekIsZ0JBQWdCO0FBQUEsUUFDaEIsa0NBQWtDO0FBQUEsUUFDbEMsOEJBQThCO0FBQUEsUUFDOUIsMkJBQTJCO0FBQUEsUUFDM0IseUJBQXlCO0FBQUEsUUFDekIsd0JBQXdCO0FBQUEsUUFDeEIsZ0NBQWdDO0FBQUEsUUFDaEMseUJBQXlCO0FBQUEsUUFDekIsc0JBQXNCO0FBQUEsUUFDdEIsaUJBQWlCO0FBQUEsUUFDakIsbUJBQW1CO0FBQUEsUUFDbkIsU0FBUztBQUFBLFFBQ1QsMEJBQTBCO0FBQUEsUUFDMUIsaUJBQWlCO0FBQUEsUUFDakIsc0JBQXNCO0FBQUEsUUFDdEIsZUFBZTtBQUFBLFFBQ2YsZUFBZTtBQUFBLFFBQ2YsUUFBUTtBQUFBLE1BQ1Y7QUFBQSxJQUNGO0FBQUEsSUFDQTtBQUFBLE1BQ0UsT0FBTyxRQUFRO0FBQUEsTUFDZixPQUFPO0FBQUEsUUFDTCxvQkFBb0I7QUFBQSxNQUN0QjtBQUFBLElBQ0Y7QUFBQSxFQUNGLENBQUM7QUFDSDtBQU9PLFNBQVMseUJBQTBDO0FBQ3hELGFBQU87QUFBQSxJQUNMLEdBQUcsb0JBQW9CO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQUt2Qiw2QkFBYyxDQUFDLGdEQUE0QixHQUFHLHlDQUF5QztBQUFBLEVBQ3pGO0FBQ0Y7QUFRTyxTQUFTLDJCQUEyQixRQUEyRDtBQUNwRyxRQUFNLEVBQUUsUUFBUSxJQUFJO0FBQ3BCLGFBQU87QUFBQSxJQUNMLEdBQUcscUJBQXFCLE9BQU87QUFBQSxJQUMvQixHQUFHLG1CQUFtQixPQUFPO0FBQUEsSUFDN0IsR0FBRyxvQkFBb0IsT0FBTztBQUFBLElBQzlCLEdBQUcsa0JBQWtCLE9BQU87QUFBQSxJQUM1QixHQUFHLHdCQUF3QixPQUFPO0FBQUEsSUFDbEMsR0FBRyxrQkFBa0IsT0FBTztBQUFBLElBQzVCLEdBQUcseUNBQXlDO0FBQUEsSUFDNUMsR0FBRyx5QkFBeUIsT0FBTztBQUFBLElBQ25DLEdBQUcsd0JBQXdCLE9BQU87QUFBQSxJQUNsQyxHQUFHLHFCQUFxQixFQUFFLFNBQVMsb0JBQW9CLE9BQU8sbUJBQW1CLENBQUM7QUFBQSxFQUNwRjtBQUNGO0FBRUEsU0FBUyx5QkFBeUIsU0FBK0M7QUFDL0UsYUFBTyw0QkFBYTtBQUFBLElBQ2xCO0FBQUE7QUFBQSxNQUVFLFNBQVMsQ0FBQyxlQUFBQyxRQUFnQixXQUFXO0FBQUEsTUFDckMsT0FBTyxRQUFRLFNBQVM7QUFBQSxNQUN4QixPQUFPO0FBQUEsUUFDTCx5REFBeUQ7QUFBQSxNQUMzRDtBQUFBLElBQ0Y7QUFBQSxFQUNGLENBQUM7QUFDSDtBQUVBLFNBQVMsMkNBQTREO0FBQ25FLGFBQU8sNEJBQWE7QUFBQSxJQUNsQjtBQUFBLE1BQ0UsVUFBVTtBQUFBLFFBQ1IsMEJBQTBCO0FBQUEsY0FDeEIseUVBQStCO0FBQUEsWUFDN0IsZ0JBQWdCO0FBQUEsVUFDbEIsQ0FBQztBQUFBLFFBQ0g7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBRUEsU0FBUyxzQkFBdUM7QUFDOUMsUUFBTSxvQkFBZ0Isc0JBQUssMkJBQWMsS0FBSyxJQUFJLFlBQVk7QUFDOUQsYUFBTywyQkFBVyxhQUFhLElBQUksS0FBQyx5Q0FBa0IsYUFBYSxDQUFDLElBQUksQ0FBQztBQUMzRTtBQUVBLFNBQVMsa0JBQWtCLFNBQStDO0FBQ3hFLGFBQU8sNEJBQWE7QUFBQSxJQUNsQjtBQUFBLE1BQ0UsU0FBUztBQUFBLFFBQ1AsOEJBQUFDLFlBQStCO0FBQUEsUUFDL0IsOEJBQUFBLFlBQStCO0FBQUEsUUFDL0IsOEJBQUFBLFlBQStCO0FBQUEsUUFDL0IsOEJBQUFBLFlBQStCO0FBQUEsTUFDakM7QUFBQSxNQUNBLE9BQU8sUUFBUSxTQUFTO0FBQUEsTUFDeEIsT0FBTztBQUFBLFFBQ0wsNENBQTRDO0FBQUEsUUFDNUMsdUJBQXVCLENBQUMsU0FBUyxnQkFBZ0I7QUFBQSxRQUNqRCxrQkFBa0I7QUFBQSxRQUNsQiwwQkFBMEI7QUFBQSxRQUMxQixpQ0FBaUM7QUFBQSxRQUNqQyw2QkFBNkI7QUFBQSxRQUM3QixtQkFBbUI7QUFBQSxRQUNuQix3Q0FBd0M7QUFBQSxRQUN4Qyx3QkFBd0I7QUFBQSxRQUN4QixxQkFBcUI7QUFBQSxRQUNyQiw4QkFBOEI7QUFBQSxRQUM5QiwwQkFBMEI7QUFBQSxRQUMxQiwwQkFBMEI7QUFBQSxRQUMxQiwrQkFBK0I7QUFBQSxRQUMvQixrQ0FBa0M7QUFBQSxRQUNsQyx1Q0FBdUM7QUFBQSxRQUN2QyxxQ0FBcUM7QUFBQSxRQUNyQywrQkFBK0I7QUFBQSxRQUMvQiw2QkFBNkI7QUFBQSxRQUM3Qix5QkFBeUI7QUFBQSxRQUN6Qiw4QkFBOEI7QUFBQSxRQUM5QixpQ0FBaUM7QUFBQSxRQUNqQyxnQ0FBZ0M7QUFBQSxRQUNoQywyQkFBMkI7QUFBQSxRQUMzQixpQ0FBaUM7QUFBQSxVQUMvQjtBQUFBLFVBQ0E7QUFBQSxZQUNFLE9BQU87QUFBQSxjQUNMO0FBQUEsY0FDQTtBQUFBLGNBQ0E7QUFBQSxZQUNGO0FBQUEsVUFDRjtBQUFBLFFBQ0Y7QUFBQSxRQUNBLDhCQUE4QjtBQUFBLFFBQzlCLHFDQUFxQztBQUFBLFFBQ3JDLHFDQUFxQztBQUFBLE1BQ3ZDO0FBQUEsSUFDRjtBQUFBLElBQ0E7QUFBQSxNQUNFLE9BQU8sUUFBUTtBQUFBLE1BQ2YsT0FBTztBQUFBLFFBQ0wsOEJBQThCO0FBQUEsTUFDaEM7QUFBQSxJQUNGO0FBQUEsSUFDQTtBQUFBO0FBQUEsTUFFRSxPQUFPLFFBQVE7QUFBQSxNQUNmLE9BQU87QUFBQSxRQUNMLDhCQUE4QjtBQUFBLE1BQ2hDO0FBQUEsSUFDRjtBQUFBLElBQ0E7QUFBQSxNQUNFLE9BQU8sUUFBUTtBQUFBLE1BQ2YsT0FBTztBQUFBLFFBQ0wsOEJBQThCO0FBQUEsTUFDaEM7QUFBQSxJQUNGO0FBQUEsRUFDRixDQUFDO0FBQ0g7QUFFQSxTQUFTLHdCQUF3QixTQUErQztBQUM5RSxhQUFPLDRCQUFhO0FBQUEsSUFDbEI7QUFBQSxNQUNFLE9BQU8sUUFBUSxTQUFTO0FBQUEsTUFDeEIsU0FBUztBQUFBLFFBQ1AsQ0FBQyxrREFBMkIsR0FBRztBQUFBLE1BQ2pDO0FBQUEsTUFDQSxPQUFPO0FBQUEsUUFDTCw2REFBNkQ7QUFBQSxRQUM3RCxpREFBaUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBS2pELG1EQUFtRDtBQUFBLFFBQ25ELG1EQUFtRDtBQUFBLFFBQ25ELHVEQUF1RDtBQUFBLFFBQ3ZELG9EQUFvRDtBQUFBLFFBQ3BELCtEQUErRDtBQUFBLFFBQy9ELDRDQUE0QztBQUFBLFFBQzVDLHFEQUFxRDtBQUFBLFFBQ3JELGtEQUFrRDtBQUFBLFFBQ2xELDZDQUE2QztBQUFBLE1BQy9DO0FBQUEsSUFDRjtBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBRUEsU0FBUyxxQkFBcUIsUUFBcUQ7QUFDakYsUUFBTSxFQUFFLFNBQVMsbUJBQW1CLElBQUk7QUFDeEMsUUFBTSxpQkFBaUIsdUJBQXVCLFNBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyxtQkFBbUI7QUFFN0YsYUFBTyw0QkFBYTtBQUFBLElBQ2xCO0FBQUEsTUFDRSxPQUFPLFFBQVE7QUFBQSxNQUNmLFNBQVM7QUFBQSxRQUNQLEdBQUcsUUFBUTtBQUFBO0FBQUEsUUFFWCxHQUFHLFFBQVE7QUFBQSxNQUNiO0FBQUEsTUFDQSxTQUFTO0FBQUEsUUFDUCxHQUFHLHVCQUFBQztBQUFBLE1BQ0w7QUFBQSxNQUNBLE9BQU87QUFBQSxRQUNMLHlDQUF5QztBQUFBLFVBQ3ZDO0FBQUEsVUFDQTtBQUFBLFFBQ0Y7QUFBQSxRQUNBLDJDQUEyQztBQUFBLFVBQ3pDO0FBQUEsVUFDQTtBQUFBO0FBQUEsWUFFRSxTQUFTO0FBQUEsY0FDUDtBQUFBLGNBQ0E7QUFBQSxZQUNGO0FBQUEsWUFDQSxHQUFHO0FBQUEsVUFDTDtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBRUEsU0FBUyx3QkFBd0IsU0FBK0M7QUFDOUUsYUFBTyw0QkFBYSxDQUFDO0FBQUEsSUFDbkIsU0FBUyxDQUFDLG1DQUFBQyxRQUFxQiwwQkFBMEIsQ0FBQztBQUFBLElBQzFELE9BQU8sUUFBUSxTQUFTO0FBQUEsRUFDMUIsQ0FBQyxDQUFDO0FBQ0o7QUFZQSxTQUFTLG9CQUFvQixTQUErQztBQUMxRSxhQUFPLDRCQUFhO0FBQUEsSUFDbEI7QUFBQSxNQUNFLE9BQU8sUUFBUSxTQUFTO0FBQUEsTUFDeEIsU0FBUztBQUFBLFFBQ1AsY0FBYyxxQkFBQUM7QUFBQSxNQUNoQjtBQUFBLE1BQ0EsT0FBTztBQUFBO0FBQUEsUUFFTCwyQkFBMkIsQ0FBQyxTQUFTLFFBQVE7QUFBQTtBQUFBLFFBRTdDLHVDQUF1QztBQUFBLFVBQ3JDO0FBQUEsVUFDQTtBQUFBLFlBQ0UsVUFBVTtBQUFBO0FBQUEsWUFFVixtQkFBbUI7QUFBQSxZQUNuQixPQUFPO0FBQUEsVUFDVDtBQUFBLFFBQ0Y7QUFBQTtBQUFBLFFBRUEsMENBQTBDO0FBQUEsVUFDeEM7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFlBQ0UscUJBQXFCO0FBQUEsWUFDckIsdUJBQXVCO0FBQUEsVUFDekI7QUFBQSxRQUNGO0FBQUE7QUFBQSxRQUVBLGtDQUFrQztBQUFBO0FBQUEsUUFFbEMsaUNBQWlDO0FBQUEsVUFDL0I7QUFBQSxVQUNBO0FBQUEsWUFDRSxxQkFBcUI7QUFBQSxZQUNyQixRQUFRO0FBQUEsY0FDTixDQUFDLE1BQU0sTUFBTSxPQUFPLE9BQU8sS0FBSyxNQUFNLEtBQUssSUFBSTtBQUFBLGNBQy9DLENBQUMsTUFBTSxJQUFJO0FBQUEsY0FDWCxDQUFDLE1BQU0sWUFBWTtBQUFBLFlBQ3JCO0FBQUEsVUFDRjtBQUFBLFFBQ0Y7QUFBQTtBQUFBLFFBRUEsc0JBQXNCO0FBQUE7QUFBQSxRQUV0QiwwQkFBMEIsQ0FBQyxTQUFTLHNCQUFzQjtBQUFBO0FBQUEsUUFFMUQscUJBQXFCO0FBQUEsVUFDbkI7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFlBQ0UsdUJBQXVCO0FBQUEsVUFDekI7QUFBQSxRQUNGO0FBQUE7QUFBQSxRQUVBLDZCQUE2QjtBQUFBLFVBQzNCO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxZQUNFLE9BQU87QUFBQSxjQUNMLFVBQVU7QUFBQSxjQUNWLFlBQVksQ0FBQyxHQUFHO0FBQUEsY0FDaEIsU0FBUyxDQUFDLEdBQUc7QUFBQSxZQUNmO0FBQUEsWUFDQSxNQUFNO0FBQUEsY0FDSixZQUFZLENBQUMsS0FBSyxHQUFHO0FBQUEsY0FDckIsU0FBUyxDQUFDLEdBQUc7QUFBQSxZQUNmO0FBQUEsVUFDRjtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBRUEsU0FBUyxtQkFBbUIsU0FBK0M7QUFDekUsYUFBTyw0QkFBYTtBQUFBLElBQ2xCO0FBQUEsTUFDRSxTQUFTO0FBQUE7QUFBQSxRQUVQLEdBQUcseUJBQUFDLFFBQVMsUUFBUTtBQUFBO0FBQUEsUUFFcEIsR0FBRyx5QkFBQUEsUUFBUyxRQUFRO0FBQUEsTUFDdEI7QUFBQSxNQUNBLE9BQU8sUUFBUSxTQUFTO0FBQUEsTUFDeEIsaUJBQWlCO0FBQUEsUUFDZixlQUFlO0FBQUEsVUFDYixjQUFjO0FBQUEsWUFDWixLQUFLO0FBQUEsVUFDUDtBQUFBLFVBQ0EsZ0JBQWdCO0FBQUE7QUFBQSxVQUVoQixxQkFBaUIsMkJBQWMsS0FBSztBQUFBLFFBQ3RDO0FBQUEsTUFDRjtBQUFBLE1BQ0EsT0FBTztBQUFBLFFBQ0wsb0RBQW9EO0FBQUEsUUFDcEQsb0RBQW9EO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQUtwRCw2Q0FBNkM7QUFBQSxRQUM3QywyQ0FBMkMsQ0FBQyxTQUFTO0FBQUEsVUFDbkQsZ0JBQWdCO0FBQUEsUUFDbEIsQ0FBQztBQUFBLFFBQ0QsMkNBQTJDLENBQUMsU0FBUztBQUFBLFVBQ25ELHNCQUFzQjtBQUFBLFFBQ3hCLENBQUM7QUFBQSxRQUNELG9DQUFvQyxDQUFDLFNBQVM7QUFBQSxVQUM1QyxjQUFjO0FBQUEsWUFDWjtBQUFBLFVBQ0Y7QUFBQSxRQUNGLENBQUM7QUFBQSxRQUNELHFDQUFxQztBQUFBLFVBQ25DO0FBQUEsVUFDQTtBQUFBO0FBQUEsWUFFRSxNQUFNO0FBQUE7QUFBQSxZQUVOLG1CQUFtQjtBQUFBLFlBQ25CLGNBQWM7QUFBQSxZQUNkLDJCQUEyQjtBQUFBLFlBQzNCLGdDQUFnQztBQUFBLFlBQ2hDLG9CQUFvQjtBQUFBO0FBQUEsWUFFcEIsbUJBQW1CO0FBQUEsVUFDckI7QUFBQSxRQUNGO0FBQUEsUUFDQSxzQ0FBc0M7QUFBQSxNQUN4QztBQUFBLElBQ0Y7QUFBQSxJQUNBO0FBQUEsTUFDRSxPQUFPLFFBQVE7QUFBQSxNQUNmLE9BQU87QUFBQSxRQUNMLG1DQUFtQyxDQUFDLFNBQVM7QUFBQSxVQUMzQyxpQ0FBaUM7QUFBQSxVQUNqQyxtQ0FBbUM7QUFBQSxRQUNyQyxDQUFDO0FBQUEsUUFDRCxxQ0FBcUM7QUFBQSxNQUN2QztBQUFBLElBQ0Y7QUFBQSxJQUNBO0FBQUEsTUFDRSxVQUFVO0FBQUEsUUFDUixPQUFPO0FBQUEsVUFDTCxTQUFTO0FBQUEsUUFDWDtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRixDQUFDO0FBQ0g7QUFFQSxTQUFTLGtCQUFrQixTQUErQztBQUN4RSxhQUFPLDRCQUFhO0FBQUEsSUFDbEI7QUFBQSxNQUNFLFNBQVMsQ0FBQyw2QkFBQUMsUUFBUSxRQUFRLFdBQVc7QUFBQSxNQUNyQyxPQUFPLFFBQVEsU0FBUztBQUFBLE1BQ3hCLE9BQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFnREwsbUNBQW1DO0FBQUEsVUFDakM7QUFBQSxVQUNBO0FBQUEsWUFDRSxVQUFVO0FBQUEsY0FDUixRQUFRO0FBQUEsY0FDUixPQUFPO0FBQUEsY0FDUCxVQUFVO0FBQUEsY0FDVixNQUFNO0FBQUEsY0FDTixVQUFVO0FBQUEsY0FDVixNQUFNO0FBQUEsY0FDTixPQUFPO0FBQUEsY0FDUCxVQUFVO0FBQUEsWUFDWjtBQUFBLFVBQ0Y7QUFBQSxRQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBWUEseUNBQXlDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBWXpDLHlCQUF5QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQU16Qix3QkFBd0I7QUFBQSxVQUN0QjtBQUFBLFVBQ0E7QUFBQSxZQUNFLFFBQVE7QUFBQTtBQUFBLGNBRU4sTUFBTTtBQUFBLGdCQUNKLE9BQU87QUFBQSxjQUNUO0FBQUEsWUFDRjtBQUFBLFVBQ0Y7QUFBQSxRQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQVFBLDRCQUE0QjtBQUFBLFVBQzFCO0FBQUEsVUFDQTtBQUFBLFlBQ0UsS0FBSztBQUFBLFVBQ1A7QUFBQSxRQUNGO0FBQUEsUUFDQSw2QkFBNkI7QUFBQSxVQUMzQjtBQUFBLFVBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBMEJFLGlCQUFpQjtBQUFBLFlBQ2pCLGNBQWM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsY0FNWixNQUFNO0FBQUEsY0FDTixPQUFPO0FBQUEsY0FDUCxLQUFLO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGNBTUwsS0FBSztBQUFBLGdCQUNILFdBQVc7QUFBQSxnQkFDWCxXQUFXO0FBQUEsY0FDYjtBQUFBLGNBQ0EsTUFBTTtBQUFBLGNBQ04sS0FBSztBQUFBLGNBQ0wsTUFBTTtBQUFBLGNBQ04sSUFBSTtBQUFBLGNBQ0osS0FBSztBQUFBLGNBQ0wsS0FBSztBQUFBLGNBQ0wsUUFBUTtBQUFBLGNBQ1IsT0FBTztBQUFBLGNBQ1AsS0FBSztBQUFBLGNBQ0wsTUFBTTtBQUFBLGNBQ04sS0FBSztBQUFBLGNBQ0wsTUFBTTtBQUFBLGNBQ04sT0FBTztBQUFBLFlBQ1Q7QUFBQSxVQUNGO0FBQUEsUUFDRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBVUEsNEJBQTRCO0FBQUEsUUFDNUIseUJBQXlCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBTXpCLG1DQUFtQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBYW5DLDZDQUE2QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQU03QyxnREFBZ0Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBUWhELDZDQUE2QztBQUFBLFFBQzdDLG1CQUFtQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFRbkIsb0NBQW9DO0FBQUE7QUFBQSxRQUVwQyw2Q0FBNkM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFNN0MsMkNBQTJDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFPM0MsOENBQThDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQVE5QyxnQ0FBZ0M7QUFBQSxVQUM5QjtBQUFBLFVBQ0E7QUFBQSxZQUNFLGdCQUFnQjtBQUFBLFlBQ2hCLHdCQUF3QjtBQUFBLFVBQzFCO0FBQUEsUUFDRjtBQUFBO0FBQUEsUUFFQSxtQ0FBbUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBUW5DLHdCQUF3QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFReEIsd0NBQXdDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBTXhDLG1DQUFtQztBQUFBO0FBQUEsUUFFbkMsb0NBQW9DO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBTXBDLGdEQUFnRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQVNoRCxrQ0FBa0M7QUFBQTtBQUFBLFFBRWxDLHlDQUF5QztBQUFBO0FBQUEsUUFFekMsOEJBQThCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBUzlCLHlDQUF5QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQU16QyxnQ0FBZ0M7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQU9oQyxzQ0FBc0M7QUFBQTtBQUFBLFFBRXRDLHlDQUF5QztBQUFBLFVBQ3ZDO0FBQUEsVUFDQTtBQUFBLFlBQ0UsVUFBVTtBQUFBLFVBQ1o7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxJQUNBO0FBQUE7QUFBQSxNQUVFLE9BQU8sUUFBUTtBQUFBLE1BQ2YsT0FBTztBQUFBLFFBQ0wsMkJBQTJCO0FBQUEsTUFDN0I7QUFBQSxJQUNGO0FBQUEsSUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQVlFLE9BQU8sUUFBUTtBQUFBLE1BQ2YsT0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFRTCx1Q0FBdUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQU92Qyx1Q0FBdUM7QUFBQSxRQUN2QywrQ0FBK0M7QUFBQSxNQUNqRDtBQUFBLElBQ0Y7QUFBQSxFQUNGLENBQUM7QUFDSDsiLCJuYW1lcyI6WyJlc2xpbnQiLCJjb21tZW50c0NvbmZpZ3MiLCJlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MiLCJub2RlUGx1Z2luIiwicGVyZmVjdGlvbmlzdENvbmZpZ3MiLCJzdHlsaXN0aWMiLCJ0c2VzbGludCIsInVuaWNvcm4iXX0=
|
|
1079
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1jb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBnZW5lcmljIGhhbGYgb2YgdGhlIHNoYXJlZCBFU0xpbnQgY29uZmlndXJhdGlvbiwgZm9yIGFueSBUeXBlU2NyaXB0IHByb2plY3QuXG4gKlxuICogSXQgaW50ZWdyYXRlcyBFU0xpbnQncyBvd24gcmVjb21tZW5kZWQgcnVsZXMsIGB0eXBlc2NyaXB0LWVzbGludGAsIGBAc3R5bGlzdGljL2VzbGludC1wbHVnaW5gLFxuICogYGVzbGludC1wbHVnaW4taW1wb3J0LXhgIHdpdGggaXRzIFR5cGVTY3JpcHQgcmVzb2x2ZXIsIGBlc2xpbnQtcGx1Z2luLXBlcmZlY3Rpb25pc3RgLCBgZXNsaW50LXBsdWdpbi11bmljb3JuYCxcbiAqIGBlc2xpbnQtcGx1Z2luLW5gIGFuZCB0aGUgZ2VuZXJpYyBpbi1ob3VzZSBydWxlcy4gQSBwcm9qZWN0LXR5cGUgbGF5ZXIgKHRoZSBPYnNpZGlhbiBwbHVnaW4gb25lIGxpdmVzIGluXG4gKiBgQG1uYW91bW92L29ic2lkaWFuLWRldi10b29sa2l0YCkgYnVpbGRzIG9uIHtAbGluayBnZXRUeXBlU2NyaXB0RXNsaW50Q29uZmlnc30gYW5kIGFkZHMgb25seSB3aGF0IGlzIHNwZWNpZmljIHRvIGl0LlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBEZWNsYXJhdGl2ZSBFU0xpbnQgcnVsZS9wbHVnaW4gY29uZmlndXJhdGlvbjsgY29ycmVjdG5lc3MgaXMgdmVyaWZpZWQgYnkgcnVubmluZyBFU0xpbnQsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IExpbnRlciB9IGZyb20gJ2VzbGludCc7XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLW1hZ2ljLW51bWJlcnMgLS0gV2UgZGlzYWJsZWQgbWFnaWMgbnVtYmVycyBiZWNhdXNlIHRoZXkgYXJlIHVzZWQgYWxsIG92ZXIgdGhlIGNvbmZpZ3MuICovXG5pbXBvcnQgY29tbWVudHNDb25maWdzIGZyb20gJ0Blc2xpbnQtY29tbXVuaXR5L2VzbGludC1wbHVnaW4tZXNsaW50LWNvbW1lbnRzL2NvbmZpZ3MnO1xuaW1wb3J0IHsgaW5jbHVkZUlnbm9yZUZpbGUgfSBmcm9tICdAZXNsaW50L2NvbmZpZy1oZWxwZXJzJztcbmltcG9ydCBlc2xpbnQgZnJvbSAnQGVzbGludC9qcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXJlbmFtZS1kZWZhdWx0IC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBwbHVnaW5gIGlzIHRvbyBjb25mdXNpbmcuXG5pbXBvcnQgc3R5bGlzdGljIGZyb20gJ0BzdHlsaXN0aWMvZXNsaW50LXBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVUeXBlU2NyaXB0SW1wb3J0UmVzb2x2ZXIgfSBmcm9tICdlc2xpbnQtaW1wb3J0LXJlc29sdmVyLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgZmxhdENvbmZpZ3MgYXMgZXNsaW50UGx1Z2luSW1wb3J0WEZsYXRDb25maWdzIH0gZnJvbSAnZXNsaW50LXBsdWdpbi1pbXBvcnQteCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tcmVuYW1lLWRlZmF1bHQgLS0gVGhlIGRlZmF1bHQgZXhwb3J0IG5hbWUgYF9kZWZhdWx0YCBpcyB0b28gY29uZnVzaW5nLlxuaW1wb3J0IG5vZGVQbHVnaW4gZnJvbSAnZXNsaW50LXBsdWdpbi1uJztcbmltcG9ydCB7IGNvbmZpZ3MgYXMgcGVyZmVjdGlvbmlzdENvbmZpZ3MgfSBmcm9tICdlc2xpbnQtcGx1Z2luLXBlcmZlY3Rpb25pc3QnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXJlbmFtZS1kZWZhdWx0IC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBpbmRleGAgaXMgdG9vIGNvbmZ1c2luZy5cbmltcG9ydCB1bmljb3JuIGZyb20gJ2VzbGludC1wbHVnaW4tdW5pY29ybic7XG5pbXBvcnQge1xuICBkZWZpbmVDb25maWcsXG4gIGdsb2JhbElnbm9yZXNcbn0gZnJvbSAnZXNsaW50L2NvbmZpZyc7XG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tcmVuYW1lLWRlZmF1bHQgLS0gVGhlIGRlZmF1bHQgZXhwb3J0IG5hbWUgYF9kZWZhdWx0YCBpcyB0b28gY29uZnVzaW5nLlxuaW1wb3J0IHRzZXNsaW50IGZyb20gJ3R5cGVzY3JpcHQtZXNsaW50JztcblxuaW1wb3J0IHsgUmVwb1BhdGhzIH0gZnJvbSAnLi4vcmVwby1wYXRocy50cyc7XG5pbXBvcnQgeyBnZXRSb290Rm9sZGVyIH0gZnJvbSAnLi4vcm9vdC50cyc7XG5pbXBvcnQgeyBub1Jlc3RyaWN0ZWRTeW50YXhSdWxlRW50cmllcyB9IGZyb20gJy4vZXNsaW50LW5vLXJlc3RyaWN0ZWQtc3ludGF4LnRzJztcbmltcG9ydCB7XG4gIElOX0hPVVNFX0VTTElOVF9QTFVHSU5fTkFNRSxcbiAgaW5Ib3VzZUVzbGludFBsdWdpblxufSBmcm9tICcuL2VzbGludC1ydWxlcy9pbi1ob3VzZS1wbHVnaW4udHMnO1xuaW1wb3J0IHsgQ0xBVURFX1dPUktUUkVFU19JR05PUkVfR0xPQiB9IGZyb20gJy4vbGludC1pZ25vcmVzLnRzJztcblxuLyoqXG4gKiBUaGUgcGFyYW1ldGVycyBmb3IgZGVmaW5pbmcgRVNMaW50IGNvbmZpZ3VyYXRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmluZUVzbGludENvbmZpZ3NPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCBidWlsZHMgY3VzdG9tIEVTTGludCBjb25maWd1cmF0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgRVNMaW50IGNvbmZpZ3VyYXRpb24gY29udGV4dC5cbiAgICogQHJldHVybnMgVGhlIGN1c3RvbSBFU0xpbnQgY29uZmlndXJhdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBjdXN0b21Db25maWdzPzogKGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQpID0+IExpbnRlci5Db25maWdbXTtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IGVkaXRzIHRoZSBFU0xpbnQgY29uZmlndXJhdGlvbiBjb250ZXh0LlxuICAgKlxuICAgKiBAcGFyYW0gY29udGV4dCAtIFRoZSBFU0xpbnQgY29uZmlndXJhdGlvbiBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgZWRpdENvbnRleHQ/OiAoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogVGhlIG9sZGVzdCBOb2RlIHZlcnNpb24gc2hpcHBlZCBzb3VyY2UgaGFzIHRvIHJ1biBvbiwgYXMgYSBzZW12ZXIgcmFuZ2U6IGEgbGlicmFyeSB0aGF0IGFsc28gcnVucyBpbnNpZGUgYW5cbiAgICogb2xkZXIgcnVudGltZSB0aGFuIGl0cyBvd24gdG9vbGluZyAoYW4gT2JzaWRpYW4gcmVuZGVyZXIsIHNheSkgbmFtZXMgdGhhdCBydW50aW1lJ3MgTm9kZSBoZXJlLiBXaGVuIG9taXR0ZWQsXG4gICAqIGBlc2xpbnQtcGx1Z2luLW5gIHJlYWRzIHRoZSBgZW5naW5lc2AgZmllbGQgb2YgdGhlIHByb2plY3QncyBgcGFja2FnZS5qc29uYC5cbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1Ob2RlVmVyc2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgcGFyYW1ldGVycyBmb3Ige0BsaW5rIGdldFR5cGVTY3JpcHRFc2xpbnRDb25maWdzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRUeXBlU2NyaXB0RXNsaW50Q29uZmlnc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgRVNMaW50IGNvbmZpZ3VyYXRpb24gY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQ7XG5cbiAgLyoqXG4gICAqIFRoZSBvbGRlc3QgTm9kZSB2ZXJzaW9uIHNoaXBwZWQgc291cmNlIGhhcyB0byBydW4gb24sIGFzIGEgc2VtdmVyIHJhbmdlLiBXaGVuIG9taXR0ZWQsIGBlc2xpbnQtcGx1Z2luLW5gIHJlYWRzXG4gICAqIHRoZSBgZW5naW5lc2AgZmllbGQgb2YgdGhlIHByb2plY3QncyBgcGFja2FnZS5qc29uYC5cbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1Ob2RlVmVyc2lvbj86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEdldE5vZGVDb21wYXRDb25maWdzUGFyYW1zIHtcbiAgcmVhZG9ubHkgY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dDtcbiAgcmVhZG9ubHkgbWluaW11bU5vZGVWZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogVGhlIGNvbnRleHQgZm9yIGRlZmluaW5nIEVTTGludCBjb25maWd1cmF0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEVzbGludENvbmZpZ0NvbnRleHQge1xuICAvKipcbiAgICogVGhlIHJvb3QgY29uZmlndXJhdGlvbiBmaWxlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByb290Q29uZmlnRmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBzY3JpcHQgZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2NyaXB0RmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc291cmNlRmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkZXJzIGhvbGRpbmcgdGhlIHByb2plY3QncyBzb3VyY2VzLCBieSBkZWZhdWx0IGBzcmNgIGFsb25lLiBBIHdvcmtzcGFjZSB3aG9zZSBwYWNrYWdlcyBlYWNoIGhhdmUgdGhlaXIgb3duXG4gICAqIGBzcmNgIGFkZHMgdGhlbSBoZXJlLCBzbyB0aGUgcnVsZXMga2V5ZWQgb24gYSBmaWxlJ3MgbmFtZSBpbnNpZGUgYSBzb3VyY2UgZm9sZGVyIHJlYWNoIHRob3NlIHBhY2thZ2VzIHRvby5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzb3VyY2VGb2xkZXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgdGVzdCBmaWxlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0ZXN0RmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBhbGwgZmlsZXMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBhbGwgZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgYWxsRmlsZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbLi4udGhpcy50ZXN0RmlsZXMsIC4uLnRoaXMuc2NyaXB0RmlsZXMsIC4uLnRoaXMucm9vdENvbmZpZ0ZpbGVzLCAuLi50aGlzLnNvdXJjZUZpbGVzXTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGNvbnRleHQgb2YgYSBwcm9qZWN0IGxhaWQgb3V0IHRoZSBjb252ZW50aW9uYWwgd2F5OiBzb3VyY2VzIHVuZGVyIGBzcmNgLCBzY3JpcHRzIHVuZGVyIGBzY3JpcHRzYCwgdGVzdHNcbiAqIGJlc2lkZSB0aGUgc291cmNlcyBvciB1bmRlciBgX190ZXN0c19fYCwgYW5kIHRoZSBjb21taXRsaW50LCBFU0xpbnQgYW5kIFZpdGVzdCBjb25maWd1cmF0aW9ucyBhdCB0aGUgcm9vdC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgY29udGV4dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRFc2xpbnRDb25maWdDb250ZXh0KCk6IEVzbGludENvbmZpZ0NvbnRleHQge1xuICBjb25zdCBjb250ZXh0ID0gbmV3IEVzbGludENvbmZpZ0NvbnRleHQoKTtcbiAgY29udGV4dC5zb3VyY2VGb2xkZXJzLnB1c2goUmVwb1BhdGhzLlNyYyk7XG4gIGNvbnRleHQucm9vdENvbmZpZ0ZpbGVzLnB1c2goXG4gICAgUmVwb1BhdGhzLkNvbW1pdGxpbnRDb25maWdUcyxcbiAgICBSZXBvUGF0aHMuRXNsaW50Q29uZmlnTXRzLFxuICAgIFJlcG9QYXRocy5WaXRlc3RDb25maWdUc1xuICApO1xuICBjb250ZXh0LnNjcmlwdEZpbGVzLnB1c2goXG4gICAgam9pbihSZXBvUGF0aHMuU2NyaXB0cywgUmVwb1BhdGhzLkFueVBhdGgsIFJlcG9QYXRocy5BbnlUcylcbiAgKTtcbiAgY29udGV4dC5zb3VyY2VGaWxlcy5wdXNoKFxuICAgIGpvaW4oUmVwb1BhdGhzLlNyYywgUmVwb1BhdGhzLkFueVBhdGgsIFJlcG9QYXRocy5BbnlUcyksXG4gICAgam9pbihSZXBvUGF0aHMuU3JjLCBSZXBvUGF0aHMuQW55UGF0aCwgUmVwb1BhdGhzLkFueVRzeClcbiAgKTtcbiAgY29udGV4dC50ZXN0RmlsZXMucHVzaChcbiAgICBqb2luKFJlcG9QYXRocy5UZXN0cywgUmVwb1BhdGhzLkFueVBhdGgsIFJlcG9QYXRocy5BbnlUcyksXG4gICAgam9pbihSZXBvUGF0aHMuTW9ja3MsIFJlcG9QYXRocy5BbnlQYXRoLCBSZXBvUGF0aHMuQW55VHMpLFxuICAgIGpvaW4oUmVwb1BhdGhzLlNyYywgUmVwb1BhdGhzLkFueVBhdGgsIFJlcG9QYXRocy5BbnlUZXN0VHMpLFxuICAgIC8qXG4gICAgICogQSBidWlsZC1zY3JpcHQgdGVzdCBpcyBhIFRFU1QsIGFuZCB0aGlzIGNvbnZlbnRpb24gcHV0cyBpdCBpbiBhIGAqLnRlc3QudHNgIHVuZGVyIGBzY3JpcHRzL2AgLS0gYmVzaWRlIHRoZVxuICAgICAqIHNjcmlwdCBpdCBjb3ZlcnMgcmF0aGVyIHRoYW4gdW5kZXIgYHNyYy9gLiBXaXRob3V0IHRoaXMgZ2xvYiBpdCBtYXRjaGVkIGBzY3JpcHRGaWxlc2AgYWxvbmUsIHNvIGV2ZXJ5IHJlbGF4YXRpb25cbiAgICAgKiB0aGF0IGtleXMgb24gYGNvbnRleHQudGVzdEZpbGVzYCBtaXNzZWQgaXQ6IGBuby1tYWdpYy1udW1iZXJzYCBmaXJlZCBvbiBhIHN1aXRlIHdob3NlIHdob2xlIHN1YmplY3QgaXMgcmVjb3JkZWRcbiAgICAgKiBudW1iZXJzLCBhbmQgYHVuaWNvcm4vY29uc2lzdGVudC1mdW5jdGlvbi1zY29waW5nYCBvbiB0aGUgcGVyLXN1aXRlIGZpeHR1cmUgZmFjdG9yaWVzIHRoZSBibG9jayBhdCB0aGUgYm90dG9tXG4gICAgICogb2YgYGdldFVuaWNvcm5Db25maWdzYCBzYXlzIHRlc3RzIGV4aXN0IHRvIGFsbG93LlxuICAgICAqXG4gICAgICogVGhlIGZpbGUgbm93IG1hdGNoZXMgQk9USCBsaXN0cywgYW5kIHRoYXQgaXMgZGVsaWJlcmF0ZSByYXRoZXIgdGhhbiBhbiBvdmVybGFwIHRvIHJlc29sdmU6IGV2ZXJ5dGhpbmcgc2NvcGVkIHRvXG4gICAgICogYGNvbnRleHQuc2NyaXB0RmlsZXNgIG9ubHkgdHVybnMgcnVsZXMgT0ZGIChgaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXNgLCBgdW5pY29ybi9uby1wcm9jZXNzLWV4aXRgKSwgYm90aCBvZlxuICAgICAqIHdoaWNoIGEgc2NyaXB0IHRlc3Qgd2FudHMgYXMgbXVjaCBhcyB0aGUgc2NyaXB0IGRvZXMsIHNvIHRoZSB0d28gc2V0cyBjb21wb3NlIGluc3RlYWQgb2YgY29tcGV0aW5nLiBLZWVwIGl0IHRoYXRcbiAgICAgKiB3YXkgLS0gYSBydWxlIHR1cm5lZCBPTiBmb3IgYHNjcmlwdEZpbGVzYCB3b3VsZCBsYW5kIG9uIHRoZXNlIGZpbGVzIHRvbywgYW5kIGZsYXQtY29uZmlnIG9yZGVyLCBub3QgaW50ZW50LFxuICAgICAqIHdvdWxkIGRlY2lkZSB3aGljaCBzaWRlIHdvbi5cbiAgICAgKi9cbiAgICBqb2luKFJlcG9QYXRocy5TY3JpcHRzLCBSZXBvUGF0aHMuQW55UGF0aCwgUmVwb1BhdGhzLkFueVRlc3RUcylcbiAgKTtcbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBFU0xpbnQgY29uZmlndXJhdGlvbnMgb2YgYSBnZW5lcmljIFR5cGVTY3JpcHQgcHJvamVjdC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBkZWZpbmluZyBFU0xpbnQgY29uZmlndXJhdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgRVNMaW50IGNvbmZpZ3VyYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lRXNsaW50Q29uZmlncyhvcHRpb25zOiBEZWZpbmVFc2xpbnRDb25maWdzT3B0aW9ucyA9IHt9KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgY29uc3QgY29udGV4dCA9IGNyZWF0ZURlZmF1bHRFc2xpbnRDb25maWdDb250ZXh0KCk7XG4gIG9wdGlvbnMuZWRpdENvbnRleHQ/Lihjb250ZXh0KTtcbiAgY29uc3QgY3VzdG9tQ29uZmlncyA9IG9wdGlvbnMuY3VzdG9tQ29uZmlncz8uKGNvbnRleHQpID8/IFtdO1xuXG4gIHJldHVybiBkZWZpbmVDb25maWcoXG4gICAgLi4uZ2V0R2xvYmFsSWdub3JlQ29uZmlncygpLFxuICAgIC4uLmdldFR5cGVTY3JpcHRFc2xpbnRDb25maWdzKHtcbiAgICAgIGNvbnRleHQsXG4gICAgICAuLi4ob3B0aW9ucy5taW5pbXVtTm9kZVZlcnNpb24gIT09IHVuZGVmaW5lZCAmJiB7IG1pbmltdW1Ob2RlVmVyc2lvbjogb3B0aW9ucy5taW5pbXVtTm9kZVZlcnNpb24gfSlcbiAgICB9KSxcbiAgICAuLi5jdXN0b21Db25maWdzXG4gICk7XG59XG5cbi8qKlxuICogVGhlIGNvbmZpZ3VyYXRpb25zIG9mIEVTTGludCdzIG93biBydWxlcy4gQSBwcm9qZWN0LXR5cGUgbGF5ZXIgcmVhZHMgaXQgdG8gbGVhcm4gd2hpY2ggY29yZSBydWxlcyB0aGlzXG4gKiBjb25maWd1cmF0aW9uIHNldHMgaXRzZWxmLlxuICpcbiAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIEVTTGludCBjb25maWd1cmF0aW9uIGNvbnRleHQuXG4gKiBAcmV0dXJucyBUaGUgY29uZmlndXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFc2xpbnRDb3JlQ29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZXh0ZW5kczogW2VzbGludC5jb25maWdzLnJlY29tbWVuZGVkXSxcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBydWxlczoge1xuICAgICAgICAnYWNjZXNzb3ItcGFpcnMnOiAnZXJyb3InLFxuICAgICAgICAnYXJyYXktY2FsbGJhY2stcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ2NhbWVsY2FzZSc6ICdlcnJvcicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBydWxlIHJlcG9ydHMgcGVyIGNvbW1lbnQgVE9LRU4sIHNvIGV2ZXJ5IGNvbnRpbnVhdGlvbiBsaW5lIG9mIGEgd3JhcHBlZCBgLy9gIGNvbW1lbnQgaXMgaXRzIG93biB0b2tlblxuICAgICAgICAgKiB0aGF0IHdvdWxkIGhhdmUgdG8gc3RhcnQgd2l0aCBhIGNhcGl0YWwg4oCUIHdoaWNoIGlzIGhvdyBwcm9zZSBlbmRzIHVwIHdpdGggY2FwaXRhbHMgbWlkLXNlbnRlbmNlLlxuICAgICAgICAgKiBgaWdub3JlQ29uc2VjdXRpdmVDb21tZW50c2AgZXhlbXB0cyBhIGxpbmUgY29tbWVudCB0aGF0IGRpcmVjdGx5IGZvbGxvd3MgYW5vdGhlciBvbmUsIHdoaWNoIGlzIGV4YWN0bHkgdGhlXG4gICAgICAgICAqIHNoYXBlIG9mIGEgd3JhcHBlZCBibG9jaywgd2hpbGUgc3RpbGwgaG9sZGluZyBpdHMgRklSU1QgbGluZSB0byBhIGNhcGl0YWwuIEJsb2NrIGNvbW1lbnRzIG5lZWQgbm8gc3VjaFxuICAgICAgICAgKiBvcHRpb246IGEgYmxvY2sgY29tbWVudCBpcyBhIHNpbmdsZSB0b2tlbiBob3dldmVyIG1hbnkgbGluZXMgaXQgc3BhbnMuXG4gICAgICAgICAqIGBpZ25vcmVQYXR0ZXJuYCBjb3ZlcnMgdGhlIGhhbGYgdGhhdCBsZWF2ZXMgYmVoaW5kOiBhIGNvbW1lbnQgd2hvc2UgRklSU1Qgd29yZCBpcyBhIGNhbWVsQ2FzZSBpZGVudGlmaWVyIGlzXG4gICAgICAgICAqIGV4ZW1wdCwgc28gYSBjb21tZW50IHRoYXQgb3BlbnMgYnkgbmFtaW5nIGEgc3ltYm9sIGtlZXBzIHRoZSBuYW1lIGEgcmVhZGVyIGNhbiBncmVwIGluc3RlYWQgb2YgYSBQYXNjYWxDYXNlXG4gICAgICAgICAqIG9uZSB0aGF0IGV4aXN0cyBub3doZXJlLiBUaGUgcnVsZSBhbmNob3JzIHRoZSBwYXR0ZXJuIGF0IHRoZSBzdGFydCBvZiB0aGUgY29tbWVudCBhbmQgYFthLXpBLVowLTldYCBtYXRjaGVzXG4gICAgICAgICAqIG5vIHdoaXRlc3BhY2UsIHNvIGl0IGNhbiBvbmx5IGV2ZXIgbWF0Y2ggdGhhdCBmaXJzdCB3b3JkIOKAlCBvcmRpbmFyeSBsb3dlcmNhc2UgcHJvc2Ugc3RheXMgcmVwb3J0ZWQuIEJvdGhcbiAgICAgICAgICogb3B0aW9uIGJhZ3MgbmVlZCBpdCwgYW5kIGBibG9ja2Aga2VlcHMgaXRzIGB2OGAgZXhlbXB0aW9uIGJ5IGFsdGVybmF0aW9uIHJhdGhlciB0aGFuIGxvc2luZyBpdC5cbiAgICAgICAgICovXG4gICAgICAgICdjYXBpdGFsaXplZC1jb21tZW50cyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdhbHdheXMnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJsb2NrOiB7IGlnbm9yZVBhdHRlcm46ICd2OHxbYS16XVthLXpBLVowLTldKltBLVpdJyB9LFxuICAgICAgICAgICAgbGluZTogeyBpZ25vcmVDb25zZWN1dGl2ZUNvbW1lbnRzOiB0cnVlLCBpZ25vcmVQYXR0ZXJuOiAnW2Etel1bYS16QS1aMC05XSpbQS1aXScgfVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ2NvbXBsZXhpdHknOiAnZXJyb3InLFxuICAgICAgICAnY29uc2lzdGVudC10aGlzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2N1cmx5JzogJ2Vycm9yJyxcbiAgICAgICAgJ2RlZmF1bHQtY2FzZSc6ICdlcnJvcicsXG4gICAgICAgICdkZWZhdWx0LWNhc2UtbGFzdCc6ICdlcnJvcicsXG4gICAgICAgICdkZWZhdWx0LXBhcmFtLWxhc3QnOiAnZXJyb3InLFxuICAgICAgICAnZXFlcWVxJzogJ2Vycm9yJyxcbiAgICAgICAgJ2Z1bmMtbmFtZS1tYXRjaGluZyc6ICdlcnJvcicsXG4gICAgICAgICdmdW5jLW5hbWVzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2Z1bmMtc3R5bGUnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAnZGVjbGFyYXRpb24nLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93QXJyb3dGdW5jdGlvbnM6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnZ3JvdXBlZC1hY2Nlc3Nvci1wYWlycyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdnZXRCZWZvcmVTZXQnXG4gICAgICAgIF0sXG4gICAgICAgICdndWFyZC1mb3ItaW4nOiAnZXJyb3InLFxuICAgICAgICAnbm8tYWxlcnQnOiAnZXJyb3InLFxuICAgICAgICAnbm8tYXJyYXktY29uc3RydWN0b3InOiAnZXJyb3InLFxuICAgICAgICAnbm8tYml0d2lzZSc6ICdlcnJvcicsXG4gICAgICAgICduby1jYWxsZXInOiAnZXJyb3InLFxuICAgICAgICAnbm8tY29uc29sZSc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93OiBbXG4gICAgICAgICAgICAgICd3YXJuJyxcbiAgICAgICAgICAgICAgJ2Vycm9yJ1xuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ25vLWNvbnN0cnVjdG9yLXJldHVybic6ICdlcnJvcicsXG4gICAgICAgICduby1kaXYtcmVnZXgnOiAnZXJyb3InLFxuICAgICAgICAnbm8tZWxzZS1yZXR1cm4nOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvd0Vsc2VJZjogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICduby1lbXB0eS1mdW5jdGlvbic6ICdlcnJvcicsXG4gICAgICAgICduby1leHRlbmQtbmF0aXZlJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWV4dHJhLWJpbmQnOiAnZXJyb3InLFxuICAgICAgICAnbm8tZXh0cmEtbGFiZWwnOiAnZXJyb3InLFxuICAgICAgICAnbm8taW1wbGljaXQtY29lcmNpb24nOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvdzogW1xuICAgICAgICAgICAgICAnISEnXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnbm8taW1wbGllZC1ldmFsJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWlubmVyLWRlY2xhcmF0aW9ucyc6ICdlcnJvcicsXG4gICAgICAgICduby1pdGVyYXRvcic6ICdlcnJvcicsXG4gICAgICAgICduby1sYWJlbC12YXInOiAnZXJyb3InLFxuICAgICAgICAnbm8tbGFiZWxzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWxvbmUtYmxvY2tzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWxvbmVseS1pZic6ICdlcnJvcicsXG4gICAgICAgICduby1sb29wLWZ1bmMnOiAnZXJyb3InLFxuICAgICAgICAnbm8tbWFnaWMtbnVtYmVycyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRldGVjdE9iamVjdHM6IHRydWUsXG4gICAgICAgICAgICBlbmZvcmNlQ29uc3Q6IHRydWUsXG4gICAgICAgICAgICBpZ25vcmU6IFtcbiAgICAgICAgICAgICAgLTEsXG4gICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICduby1tdWx0aS1hc3NpZ24nOiAnZXJyb3InLFxuICAgICAgICAnbm8tbXVsdGktc3RyJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5lZ2F0ZWQtY29uZGl0aW9uJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5lc3RlZC10ZXJuYXJ5JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5ldy1mdW5jJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5ldy13cmFwcGVycyc6ICdlcnJvcicsXG4gICAgICAgICduby1vYmplY3QtY29uc3RydWN0b3InOiAnZXJyb3InLFxuICAgICAgICAnbm8tb2N0YWwtZXNjYXBlJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXByb21pc2UtZXhlY3V0b3ItcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXByb3RvJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXJlc3RyaWN0ZWQtc3ludGF4JzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgLi4ubm9SZXN0cmljdGVkU3ludGF4UnVsZUVudHJpZXNcbiAgICAgICAgXSxcbiAgICAgICAgJ25vLXJldHVybi1hc3NpZ24nOiAnZXJyb3InLFxuICAgICAgICAnbm8tc2NyaXB0LXVybCc6ICdlcnJvcicsXG4gICAgICAgICduby1zZWxmLWNvbXBhcmUnOiAnZXJyb3InLFxuICAgICAgICAnbm8tc2VxdWVuY2VzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXNoYWRvdyc6ICdlcnJvcicsXG4gICAgICAgICduby10ZW1wbGF0ZS1jdXJseS1pbi1zdHJpbmcnOiAnZXJyb3InLFxuICAgICAgICAnbm8tdGhyb3ctbGl0ZXJhbCc6ICdlcnJvcicsXG4gICAgICAgICduby11bm1vZGlmaWVkLWxvb3AtY29uZGl0aW9uJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVubmVlZGVkLXRlcm5hcnknOiAnZXJyb3InLFxuICAgICAgICAnbm8tdW5yZWFjaGFibGUtbG9vcCc6ICdlcnJvcicsXG4gICAgICAgICduby11bnVzZWQtZXhwcmVzc2lvbnMnOiAnZXJyb3InLFxuICAgICAgICAnbm8tdXNlbGVzcy1hc3NpZ25tZW50JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtY2FsbCc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbXB1dGVkLWtleSc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbmNhdCc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbnN0cnVjdG9yJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtcmVuYW1lJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXZhcic6ICdlcnJvcicsXG4gICAgICAgICduby12b2lkJzogJ2Vycm9yJyxcbiAgICAgICAgJ29iamVjdC1zaG9ydGhhbmQnOiAnZXJyb3InLFxuICAgICAgICAnb3BlcmF0b3ItYXNzaWdubWVudCc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItYXJyb3ctY2FsbGJhY2snOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLWNvbnN0JzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1leHBvbmVudGlhdGlvbi1vcGVyYXRvcic6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItbmFtZWQtY2FwdHVyZS1ncm91cCc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItbnVtZXJpYy1saXRlcmFscyc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItb2JqZWN0LWhhcy1vd24nOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLW9iamVjdC1zcHJlYWQnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXByb21pc2UtcmVqZWN0LWVycm9ycyc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItcmVnZXgtbGl0ZXJhbHMnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXJlc3QtcGFyYW1zJzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1zcHJlYWQnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXRlbXBsYXRlJzogJ2Vycm9yJyxcbiAgICAgICAgJ3JhZGl4JzogJ2Vycm9yJyxcbiAgICAgICAgJ3JlcXVpcmUtYXRvbWljLXVwZGF0ZXMnOiAnZXJyb3InLFxuICAgICAgICAncmVxdWlyZS1hd2FpdCc6ICdlcnJvcicsXG4gICAgICAgICdzeW1ib2wtZGVzY3JpcHRpb24nOiAnZXJyb3InLFxuICAgICAgICAndW5pY29kZS1ib20nOiAnZXJyb3InLFxuICAgICAgICAndmFycy1vbi10b3AnOiAnZXJyb3InLFxuICAgICAgICAneW9kYSc6ICdlcnJvcidcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVzOiBjb250ZXh0LnRlc3RGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICduby1tYWdpYy1udW1iZXJzJzogJ29mZidcbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG4vKipcbiAqIFRoZSBnbG9iYWwgaWdub3JlczogZXZlcnl0aGluZyBgLmdpdGlnbm9yZWAgbmFtZXMsIHBsdXMgQ2xhdWRlIENvZGUncyB3b3JrdHJlZSBmb2xkZXIuXG4gKlxuICogQHJldHVybnMgVGhlIGNvbmZpZ3VyYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2xvYmFsSWdub3JlQ29uZmlncygpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFxuICAgIC4uLmdldEdpdElnbm9yZUNvbmZpZ3MoKSxcbiAgICAvKlxuICAgICAqIE9uIHRvcCBvZiBgLmdpdGlnbm9yZWAsIG5vdCBpbnN0ZWFkIG9mIGl0OiBnaXQgZXhjbHVkZXMgQ2xhdWRlIENvZGUncyB3b3JrdHJlZSBmb2xkZXIgdGhyb3VnaFxuICAgICAqIGAuZ2l0L2luZm8vZXhjbHVkZWAsIHdoaWNoIGBpbmNsdWRlSWdub3JlRmlsZWAgYWJvdmUgZG9lcyBub3QgcmVhZC4gU2VlIGBsaW50LWlnbm9yZXMudHNgLlxuICAgICAqL1xuICAgIGdsb2JhbElnbm9yZXMoW0NMQVVERV9XT1JLVFJFRVNfSUdOT1JFX0dMT0JdLCAndHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9jbGF1ZGUtd29ya3RyZWVzJylcbiAgKTtcbn1cblxuLyoqXG4gKiBUaGUgZ2VuZXJpYyBsYXllcnMgb2YgdGhlIHNoYXJlZCBjb25maWd1cmF0aW9uLCB3aXRob3V0IHRoZSBnbG9iYWwgaWdub3Jlcy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBUaGUgY29uZmlndXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBlU2NyaXB0RXNsaW50Q29uZmlncyhwYXJhbXM6IEdldFR5cGVTY3JpcHRFc2xpbnRDb25maWdzUGFyYW1zKTogTGludGVyLkNvbmZpZ1tdIHtcbiAgY29uc3QgeyBjb250ZXh0IH0gPSBwYXJhbXM7XG4gIHJldHVybiBkZWZpbmVDb25maWcoXG4gICAgLi4uZ2V0RXNsaW50Q29yZUNvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0VHNlc2xpbnRDb25maWdzKGNvbnRleHQpLFxuICAgIC4uLmdldFN0eWxpc3RpY0NvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0SW1wb3J0WENvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0UGVyZmVjdGlvbmlzdENvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0VW5pY29ybkNvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0RXNsaW50SW1wb3J0UmVzb2x2ZXJUeXBlc2NyaXB0Q29uZmlncygpLFxuICAgIC4uLmdldEVzbGludENvbW1lbnRzQ29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRJbkhvdXNlUGx1Z2luQ29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXROb2RlQ29tcGF0Q29uZmlncyh7IGNvbnRleHQsIG1pbmltdW1Ob2RlVmVyc2lvbjogcGFyYW1zLm1pbmltdW1Ob2RlVmVyc2lvbiB9KVxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRFc2xpbnRDb21tZW50c0NvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1uYW1lZC1hcy1kZWZhdWx0LW1lbWJlciAtLSBUaGUgZGVmYXVsdCBleHBvcnQgbmFtZSBgcmVjb21tZW5kZWRgIGlzIHRvbyBjb25mdXNpbmcuXG4gICAgICBleHRlbmRzOiBbY29tbWVudHNDb25maWdzLnJlY29tbWVuZGVkXSxcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBydWxlczoge1xuICAgICAgICAnQGVzbGludC1jb21tdW5pdHkvZXNsaW50LWNvbW1lbnRzL3JlcXVpcmUtZGVzY3JpcHRpb24nOiAnZXJyb3InXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0RXNsaW50SW1wb3J0UmVzb2x2ZXJUeXBlc2NyaXB0Q29uZmlncygpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFtcbiAgICB7XG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAnaW1wb3J0LXgvcmVzb2x2ZXItbmV4dCc6IFtcbiAgICAgICAgICBjcmVhdGVUeXBlU2NyaXB0SW1wb3J0UmVzb2x2ZXIoe1xuICAgICAgICAgICAgYWx3YXlzVHJ5VHlwZXM6IHRydWVcbiAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0R2l0SWdub3JlQ29uZmlncygpOiBMaW50ZXIuQ29uZmlnW10ge1xuICBjb25zdCBnaXRpZ25vcmVQYXRoID0gam9pbihnZXRSb290Rm9sZGVyKCkgPz8gJycsICcuZ2l0aWdub3JlJyk7XG4gIHJldHVybiBleGlzdHNTeW5jKGdpdGlnbm9yZVBhdGgpID8gW2luY2x1ZGVJZ25vcmVGaWxlKGdpdGlnbm9yZVBhdGgpXSA6IFtdO1xufVxuXG5mdW5jdGlvbiBnZXRJbXBvcnRYQ29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZXh0ZW5kczogW1xuICAgICAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MucmVjb21tZW5kZWQsXG4gICAgICAgIGVzbGludFBsdWdpbkltcG9ydFhGbGF0Q29uZmlncy50eXBlc2NyaXB0LFxuICAgICAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MuZXJyb3JzLFxuICAgICAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3Mud2FybmluZ3NcbiAgICAgIF0sXG4gICAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ2ltcG9ydC14L2NvbnNpc3RlbnQtdHlwZS1zcGVjaWZpZXItc3R5bGUnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvZXh0ZW5zaW9ucyc6IFsnZXJyb3InLCAnaWdub3JlUGFja2FnZXMnXSxcbiAgICAgICAgJ2ltcG9ydC14L2ZpcnN0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L2ltcG9ydHMtZmlyc3QnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbmV3bGluZS1hZnRlci1pbXBvcnQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tYWJzb2x1dGUtcGF0aCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1hbWQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tYW5vbnltb3VzLWRlZmF1bHQtZXhwb3J0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWNvbW1vbmpzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWN5Y2xlJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWRlZmF1bHQtZXhwb3J0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWRlcHJlY2F0ZWQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tZHVwbGljYXRlcyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1keW5hbWljLXJlcXVpcmUnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tZW1wdHktbmFtZWQtYmxvY2tzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWltcG9ydC1tb2R1bGUtZXhwb3J0cyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1tdXRhYmxlLWV4cG9ydHMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tbmFtZWQtZGVmYXVsdCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1uYW1lc3BhY2UnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tcmVsYXRpdmUtcGFja2FnZXMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tcmVzdHJpY3RlZC1wYXRocyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1zZWxmLWltcG9ydCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby11bmFzc2lnbmVkLWltcG9ydCc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93OiBbXG4gICAgICAgICAgICAgICcqKi8qLmNzcycsXG4gICAgICAgICAgICAgICcqKi8qLnNhc3MnLFxuICAgICAgICAgICAgICAnKiovKi5zY3NzJ1xuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ2ltcG9ydC14L25vLXVudXNlZC1tb2R1bGVzJzogJ29mZicsXG4gICAgICAgICdpbXBvcnQteC9uby11c2VsZXNzLXBhdGgtc2VnbWVudHMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8td2VicGFjay1sb2FkZXItc3ludGF4JzogJ2Vycm9yJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZXM6IGNvbnRleHQuc2NyaXB0RmlsZXMsXG4gICAgICBydWxlczoge1xuICAgICAgICAnaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXMnOiAnb2ZmJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQSB0ZXN0IHJ1bnMgdW5kZXIgdGhlIHRlc3QgcnVubmVyIGluIE5vZGUgYW5kIGlzIG5ldmVyIGJ1bmRsZWQgaW50byBhbnl0aGluZyB0aGF0IHNoaXBzLlxuICAgICAgZmlsZXM6IGNvbnRleHQudGVzdEZpbGVzLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ2ltcG9ydC14L25vLW5vZGVqcy1tb2R1bGVzJzogJ29mZidcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVzOiBjb250ZXh0LnJvb3RDb25maWdGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdpbXBvcnQteC9uby1kZWZhdWx0LWV4cG9ydCc6ICdvZmYnXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0SW5Ib3VzZVBsdWdpbkNvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgIFtJTl9IT1VTRV9FU0xJTlRfUExVR0lOX05BTUVdOiBpbkhvdXNlRXNsaW50UGx1Z2luXG4gICAgICB9LFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvbm8tYXN5bmMtY2FsbGJhY2stdG8tdW5zYWZlLXJldHVybic6ICdlcnJvcicsXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L25vLWtleXdvcmQtaWRlbnRpZmllcnMnOiAnZXJyb3InLFxuICAgICAgICAvKlxuICAgICAgICAgKiBNZWFzdXJlZCBvdmVyIDMyIHBsdWdpbnMgYnVpbHQgb24gdGhpcyBjb25maWcgYmVmb3JlIGl0IHdhcyB0dXJuZWQgb24gKDIwMjYtMDktMjQpOiAyOSBoYWQgbm8gZmluZGluZyxcbiAgICAgICAgICogdGhlIG90aGVyIHRocmVlIGhhZCA4IGJldHdlZW4gdGhlbSwgZXZlcnkgb25lIGEgZ2VudWluZWx5IGRlYWQgbGluay5cbiAgICAgICAgICovXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L25vLXVucmVzb2x2ZWQtanNkb2MtbGluayc6ICdlcnJvcicsXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L25vLXVudXNlZC1wYXJhbXMtbWVtYmVycyc6ICdlcnJvcicsXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L25vLXVzZWQtdW5kZXJzY29yZS12YXJpYWJsZXMnOiAnZXJyb3InLFxuICAgICAgICAndHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9wYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoJzogJ2Vycm9yJyxcbiAgICAgICAgJ3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvcHJlZmVyLWRlZGVudCc6ICdlcnJvcicsXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L3ByZWZlci1sb2dpY2FsLW9wZXJhdG9yLW92ZXItdGVybmFyeSc6ICdlcnJvcicsXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L3ByZWZlci1ub29wLWFzeW5jJzogJ2Vycm9yJyxcbiAgICAgICAgJ3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvcmVhZG9ubHktaW50ZXJmYWNlLW1lbWJlcnMnOiAnZXJyb3InLFxuICAgICAgICAndHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9yZXF1aXJlLW1ldGhvZC10ZW1wbGF0ZSc6ICdlcnJvcicsXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L3JlcXVpcmUtc3VwZXItY2FsbCc6ICdvZmYnXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0Tm9kZUNvbXBhdENvbmZpZ3MocGFyYW1zOiBHZXROb2RlQ29tcGF0Q29uZmlnc1BhcmFtcyk6IExpbnRlci5Db25maWdbXSB7XG4gIGNvbnN0IHsgY29udGV4dCwgbWluaW11bU5vZGVWZXJzaW9uIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHZlcnNpb25PcHRpb25zID0gbWluaW11bU5vZGVWZXJzaW9uID09PSB1bmRlZmluZWQgPyB7fSA6IHsgdmVyc2lvbjogbWluaW11bU5vZGVWZXJzaW9uIH07XG5cbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZmlsZXM6IGNvbnRleHQuc291cmNlRmlsZXMsXG4gICAgICBpZ25vcmVzOiBbXG4gICAgICAgIC4uLmNvbnRleHQudGVzdEZpbGVzLFxuICAgICAgICAvLyBEZXYtb25seSB0b29saW5nIChidWlsZCwgbGludCwgdmVyc2lvbikgcnVucyB2aWEgYGppdGlgIGluIHRoZSBkZXZlbG9wZXIncyBOb2RlIGVudmlyb25tZW50IGFuZCBuZXZlciBzaGlwcywgc28gdGhlIHNoaXBwZWQgc291cmNlJ3MgTm9kZSBmbG9vciBkb2VzIG5vdCBhcHBseSB0byBpdC5cbiAgICAgICAgLi4uY29udGV4dC5zY3JpcHRGaWxlc1xuICAgICAgXSxcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgbjogbm9kZVBsdWdpblxuICAgICAgfSxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICduL25vLXVuc3VwcG9ydGVkLWZlYXR1cmVzL2VzLWJ1aWx0aW5zJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgdmVyc2lvbk9wdGlvbnNcbiAgICAgICAgXSxcbiAgICAgICAgJ24vbm8tdW5zdXBwb3J0ZWQtZmVhdHVyZXMvbm9kZS1idWlsdGlucyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIGBCbG9iYCBhbmQgYEZpbGVgIGFyZSBET00gd2ViIGdsb2JhbHMgcHJlc2VudCBpbiBldmVyeSBzdXBwb3J0ZWQgYnJvd3NlciBlbmdpbmUsIGJ1dCB0aGUgcnVsZSBhbHNvIGtub3dzIHRoZW0gYXMgTm9kZSdzIGV4cGVyaW1lbnRhbCBidWlsdGlucyBhbmQgY2Fubm90IHRlbGwgd2hpY2ggaXMgbWVhbnQuIElnbm9yZSB0aGVtIGdsb2JhbGx5OyBnZW51aW5lbHkgbmV3ZXIgQVBJcyAoZS5nLiBgQWJvcnRTaWduYWwuYW55YCkgc3RheSBmbGFnZ2VkLlxuICAgICAgICAgICAgaWdub3JlczogW1xuICAgICAgICAgICAgICAnQmxvYicsXG4gICAgICAgICAgICAgICdGaWxlJ1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC4uLnZlcnNpb25PcHRpb25zXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0UGVyZmVjdGlvbmlzdENvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW3tcbiAgICBleHRlbmRzOiBbcGVyZmVjdGlvbmlzdENvbmZpZ3NbJ3JlY29tbWVuZGVkLWFscGhhYmV0aWNhbCddXSxcbiAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpXG4gIH1dKTtcbn1cblxuLyoqXG4gKiBMYXlvdXQgYmVsb25ncyB0byBkcHJpbnQuIE9ubHkgdGhlIGBAc3R5bGlzdGljYCBydWxlcyBkcHJpbnQgY2Fubm90IGV4cHJlc3MgYXJlIGtlcHQsIGVhY2ggdmVyaWZpZWQgYnkgZm9ybWF0dGluZyBhXG4gKiB2aW9sYXRpbmcgcHJvYmUgd2l0aCB0aGUgc2hhcmVkIGBkcHJpbnQuanNvbmAgYW5kIGxpbnRpbmcgdGhlIHJlc3VsdDogdGhlIHJ1bGUgc3RpbGwgcmVwb3J0cyB0aGVyZS4gRXZlcnkgb3RoZXJcbiAqIHJ1bGUgb2YgYHN0eWxpc3RpYy5jb25maWdzLnJlY29tbWVuZGVkYCB3YXMgZHJvcHBlZCwgYmVjYXVzZSBkcHJpbnQgZml4ZXMgaXQgYWxyZWFkeSwgb3IgYmVjYXVzZSBpdCBmb3VnaHQgZHByaW50XG4gKiAoYHdyYXAtaWlmZWAsIHdob3NlIHBhcmVudGhlc2VzIGRwcmludCBzdHJpcHMsIGBqc3gtcXVvdGVzYCBhZ2FpbnN0IGBxdW90ZVN0eWxlYCwgYG9wZXJhdG9yLWxpbmVicmVha2AsIGBpbmRlbnRgKS5cbiAqIFRoZSBrZXB0IHJ1bGVzIGFncmVlIHdpdGggdGhlIHNoYXJlZCBQcmV0dGllciBhbmQgQmlvbWUgY29uZmlndXJhdGlvbnMgdG9vLCBzbyBlaXRoZXIgY2FuIG93biBsYXlvdXQgaW5zdGVhZC5cbiAqXG4gKiBAcGFyYW0gY29udGV4dCAtIFRoZSB7QGxpbmsgRXNsaW50Q29uZmlnQ29udGV4dH0uXG4gKiBAcmV0dXJucyBUaGUgY29uZmlncy5cbiAqL1xuZnVuY3Rpb24gZ2V0U3R5bGlzdGljQ29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZmlsZXM6IGNvbnRleHQuYWxsRmlsZXMoKSxcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgJ0BzdHlsaXN0aWMnOiBzdHlsaXN0aWNcbiAgICAgIH0sXG4gICAgICBydWxlczoge1xuICAgICAgICAvLyBUaGUgZHByaW50IGBhcnJvd0Z1bmN0aW9uLnVzZVBhcmVudGhlc2VzYCBkZWZhdWx0LCBgbWFpbnRhaW5gLCBrZWVwcyBgeCA9PiB4YC5cbiAgICAgICAgJ0BzdHlsaXN0aWMvYXJyb3ctcGFyZW5zJzogWydlcnJvcicsICdhbHdheXMnXSxcbiAgICAgICAgLy8gTm90IGxheW91dDogaXQgcmVtb3ZlcyBvciBhZGRzIHRoZSBicmFjZXMgdGhlbXNlbHZlcywgd2hpY2ggZHByaW50IG5ldmVyIGRvZXMuXG4gICAgICAgICdAc3R5bGlzdGljL2pzeC1jdXJseS1icmFjZS1wcmVzZW5jZSc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiAnbmV2ZXInLFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gYHByb3BFbGVtZW50VmFsdWVzYCBpcyB0aGUgcnVsZSdzIG93biBvcHRpb24gbmFtZS5cbiAgICAgICAgICAgIHByb3BFbGVtZW50VmFsdWVzOiAnYWx3YXlzJyxcbiAgICAgICAgICAgIHByb3BzOiAnbmV2ZXInXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAvLyBUaGUgZHByaW50IGZvcm1hdHRlciBrZWVwcyBibGFuayBsaW5lcyBhcyB3cml0dGVuIGFuZCBuZXZlciBpbnNlcnRzIG9uZS5cbiAgICAgICAgJ0BzdHlsaXN0aWMvbGluZXMtYmV0d2Vlbi1jbGFzcy1tZW1iZXJzJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgJ2Fsd2F5cycsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZXhjZXB0QWZ0ZXJPdmVybG9hZDogdHJ1ZSxcbiAgICAgICAgICAgIGV4Y2VwdEFmdGVyU2luZ2xlTGluZTogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgLy8gVGhlIGRwcmludCBmb3JtYXR0ZXIga2VlcHMgYSBudW1lcmljIGxpdGVyYWwncyB0ZXh0LCBzbyBgLjVgIGFuZCBgMi5gIHN0YXkuXG4gICAgICAgICdAc3R5bGlzdGljL25vLWZsb2F0aW5nLWRlY2ltYWwnOiAnZXJyb3InLFxuICAgICAgICAvLyBOb3QgbGF5b3V0OiBpdCBhc2tzIGZvciBwYXJlbnRoZXNlcyB0aGF0IGNoYW5nZSBob3cgdGhlIGV4cHJlc3Npb24gcmVhZHMsIHdoaWNoIGRwcmludCBuZXZlciBhZGRzLlxuICAgICAgICAnQHN0eWxpc3RpYy9uby1taXhlZC1vcGVyYXRvcnMnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvd1NhbWVQcmVjZWRlbmNlOiB0cnVlLFxuICAgICAgICAgICAgZ3JvdXBzOiBbXG4gICAgICAgICAgICAgIFsnPT0nLCAnIT0nLCAnPT09JywgJyE9PScsICc+JywgJz49JywgJzwnLCAnPD0nXSxcbiAgICAgICAgICAgICAgWycmJicsICd8fCddLFxuICAgICAgICAgICAgICBbJ2luJywgJ2luc3RhbmNlb2YnXVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgLy8gVGhlIGRwcmludCBmb3JtYXR0ZXIgcmVwbGFjZXMgdGFiIGluZGVudGF0aW9uIGJ1dCBsZWF2ZXMgYSB0YWIgaW5zaWRlIGEgY29tbWVudC5cbiAgICAgICAgJ0BzdHlsaXN0aWMvbm8tdGFicyc6ICdlcnJvcicsXG4gICAgICAgIC8vIFRoZSBkcHJpbnQgYHF1b3RlUHJvcHNgIGRlZmF1bHQgaXMgYHByZXNlcnZlYC5cbiAgICAgICAgJ0BzdHlsaXN0aWMvcXVvdGUtcHJvcHMnOiBbJ2Vycm9yJywgJ2NvbnNpc3RlbnQtYXMtbmVlZGVkJ10sXG4gICAgICAgIC8vIFRoZSBkcHJpbnQgYHF1b3RlU3R5bGVgIGNvdmVycyBzdHJpbmcgbGl0ZXJhbHMgb25seSwgYW5kIGxlYXZlcyBhIHRlbXBsYXRlIGxpdGVyYWwgd2l0aCBubyBzdWJzdGl0dXRpb24uXG4gICAgICAgICdAc3R5bGlzdGljL3F1b3Rlcyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdzaW5nbGUnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93VGVtcGxhdGVMaXRlcmFsczogJ25ldmVyJ1xuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgLy8gVGhlIGRwcmludCBmb3JtYXR0ZXIgYWRkcyB0aGUgc3BhY2UgYWZ0ZXIgYC8vYCBidXQgbm90IGFmdGVyIGAvKmAgb3IgYmVmb3JlIGAqL2AuXG4gICAgICAgICdAc3R5bGlzdGljL3NwYWNlZC1jb21tZW50JzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgJ2Fsd2F5cycsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmxvY2s6IHtcbiAgICAgICAgICAgICAgYmFsYW5jZWQ6IHRydWUsXG4gICAgICAgICAgICAgIGV4Y2VwdGlvbnM6IFsnKiddLFxuICAgICAgICAgICAgICBtYXJrZXJzOiBbJyEnXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxpbmU6IHtcbiAgICAgICAgICAgICAgZXhjZXB0aW9uczogWycvJywgJyMnXSxcbiAgICAgICAgICAgICAgbWFya2VyczogWycvJ11cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG5mdW5jdGlvbiBnZXRUc2VzbGludENvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIGV4dGVuZHM6IFtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLW5hbWVkLWFzLWRlZmF1bHQtbWVtYmVyIC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBfZGVmYXVsdGAgaXMgdG9vIGNvbmZ1c2luZy5cbiAgICAgICAgLi4udHNlc2xpbnQuY29uZmlncy5zdHJpY3RUeXBlQ2hlY2tlZCxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLW5hbWVkLWFzLWRlZmF1bHQtbWVtYmVyIC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBfZGVmYXVsdGAgaXMgdG9vIGNvbmZ1c2luZy5cbiAgICAgICAgLi4udHNlc2xpbnQuY29uZmlncy5zdHlsaXN0aWNUeXBlQ2hlY2tlZFxuICAgICAgXSxcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBsYW5ndWFnZU9wdGlvbnM6IHtcbiAgICAgICAgcGFyc2VyT3B0aW9uczoge1xuICAgICAgICAgIGVjbWFGZWF0dXJlczoge1xuICAgICAgICAgICAganN4OiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwcm9qZWN0U2VydmljZTogdHJ1ZSxcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uYW1lLXJlcGxhY2VtZW50cyAtLSBgdHNjb25maWdSb290RGlyYCBpcyBhIGB0eXBlc2NyaXB0LWVzbGludGAgcGFyc2VyIG9wdGlvbi5cbiAgICAgICAgICB0c2NvbmZpZ1Jvb3REaXI6IGdldFJvb3RGb2xkZXIoKSA/PyAnJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1mdW5jdGlvbi1yZXR1cm4tdHlwZSc6ICdlcnJvcicsXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbWVtYmVyLWFjY2Vzc2liaWxpdHknOiAnZXJyb3InLFxuICAgICAgICAvLyBUaGUgcnVsZSdzIG93biBgcHJvcGVydHlgIGRlZmF1bHQsIHNwZWxsZWQgYXMgYSBiYXJlIHNldmVyaXR5IHNvIGl0IHN0YXlzIHRoZSBydWxlJ3MgZGVmYXVsdCByYXRoZXIgdGhhbiBhIGNvcHkgb2YgaXQuXG4gICAgICAgIC8vIERvIE5PVCBwYXNzIGAnbWV0aG9kJ2AgZm9yIHRpZGluZXNzOiB0aGUgbWV0aG9kIGZvcm0ga2VlcHMgcGFyYW1ldGVycyBiaXZhcmlhbnQsIGRyb3BzIGByZWFkb25seWAgKHRoZSBydWxlJ3Mgb3duIGZpeGVyXG4gICAgICAgIC8vIG1lc3NhZ2Ugc2F5cyBzbyksIGFuZCBtYWtlcyBgQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kYCBmaXJlIG9uIGV2ZXJ5IGZvcndhcmRlZCBiYWcgbWVtYmVyLCB3aGljaCBpcyB3aGF0IHRoZVxuICAgICAgICAvLyBgdGhpczogdm9pZGAgYm9pbGVycGxhdGUgdXNlZCB0byBwYXkgZm9yLiBEbyBOT1QgZGVsZXRlIHRoZSBsaW5lIGVpdGhlciAtIHRoZSBydWxlIGlzIGluIG5vIHByZXNldCwgc28gdGhhdCB0dXJucyBpdCBvZmYuXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvbWV0aG9kLXNpZ25hdHVyZS1zdHlsZSc6ICdlcnJvcicsXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZmxvYXRpbmctcHJvbWlzZXMnOiBbJ2Vycm9yJywge1xuICAgICAgICAgIGNoZWNrVGhlbmFibGVzOiB0cnVlXG4gICAgICAgIH1dLFxuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L25vLWludmFsaWQtdm9pZC10eXBlJzogWydlcnJvcicsIHtcbiAgICAgICAgICBhbGxvd0FzVGhpc1BhcmFtZXRlcjogdHJ1ZVxuICAgICAgICB9XSxcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzJzogWydlcnJvcicsIHtcbiAgICAgICAgICBhbGxvd2VkTmFtZXM6IFtcbiAgICAgICAgICAgICd0aGF0J1xuICAgICAgICAgIF1cbiAgICAgICAgfV0sXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uYW1lLXJlcGxhY2VtZW50cyAtLSBgYXJnc2AgaXMgYW4gRVNMaW50IHJ1bGUgb3B0aW9uIG5hbWUuXG4gICAgICAgICAgICBhcmdzOiAnYWxsJyxcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25hbWUtcmVwbGFjZW1lbnRzIC0tIGBhcmdzSWdub3JlUGF0dGVybmAgaXMgYSBgdHlwZXNjcmlwdC1lc2xpbnRgIHJ1bGUgb3B0aW9uIG5hbWUuXG4gICAgICAgICAgICBhcmdzSWdub3JlUGF0dGVybjogJ15fJyxcbiAgICAgICAgICAgIGNhdWdodEVycm9yczogJ2FsbCcsXG4gICAgICAgICAgICBjYXVnaHRFcnJvcnNJZ25vcmVQYXR0ZXJuOiAnXl8nLFxuICAgICAgICAgICAgZGVzdHJ1Y3R1cmVkQXJyYXlJZ25vcmVQYXR0ZXJuOiAnXl8nLFxuICAgICAgICAgICAgaWdub3JlUmVzdFNpYmxpbmdzOiB0cnVlLFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gYHZhcnNJZ25vcmVQYXR0ZXJuYCBpcyBhIGB0eXBlc2NyaXB0LWVzbGludGAgcnVsZSBvcHRpb24gbmFtZS5cbiAgICAgICAgICAgIHZhcnNJZ25vcmVQYXR0ZXJuOiAnXl8nXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1yZWFkb25seSc6ICdlcnJvcidcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVzOiBjb250ZXh0LnRlc3RGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvZG90LW5vdGF0aW9uJzogWydlcnJvcicsIHtcbiAgICAgICAgICBhbGxvd1ByaXZhdGVDbGFzc1Byb3BlcnR5QWNjZXNzOiB0cnVlLFxuICAgICAgICAgIGFsbG93UHJvdGVjdGVkQ2xhc3NQcm9wZXJ0eUFjY2VzczogdHJ1ZVxuICAgICAgICB9XSxcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZCc6ICdvZmYnXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICByZWFjdDoge1xuICAgICAgICAgIHZlcnNpb246ICdkZXRlY3QnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG5mdW5jdGlvbiBnZXRVbmljb3JuQ29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZXh0ZW5kczogW3VuaWNvcm4uY29uZmlncy5yZWNvbW1lbmRlZF0sXG4gICAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlc2UgZW50cmllcyBhcmUgbm90IGFiYnJldmlhdGlvbnMgdG8gYmUgZXhwYW5kZWQg4oCUIHRoZXkgYXJlIGVzdGFibGlzaGVkIHZvY2FidWxhcnkgaGVyZS5cbiAgICAgICAgICpcbiAgICAgICAgICogQnJhbmQ6IGBkZXZgLCBgbGliYCwgYHV0aWxgL2B1dGlsc2Agc3BlbGwgdGhlIHByb2R1Y3QncyBvd24gbmFtZS4gTGVmdCBvbiwgdGhlIHJ1bGUgcmV3cml0ZXNcbiAgICAgICAgICogYFJlcG9QYXRoc2AgdG8gYE9ic2lkaWFuRGV2ZWxvcG1lbnRVdGlsaXRpZXNSZXBvUGF0aHNgIGFuZCBgZ2V0TGliRGVidWdnZXJgIHRvXG4gICAgICAgICAqIGBnZXRMaWJyYXJ5RGVidWdnZXJgLCByZW5hbWluZyBleHBvcnRlZCBBUEkgYWZ0ZXIgdGhlIHBhY2thZ2UgaXQgYmVsb25ncyB0by5cbiAgICAgICAgICpcbiAgICAgICAgICogQ29udmVudGlvbjogYHBhcmFtc2AgaXMgdGhlIHBhcmFtZXRlci1iYWcgY29udmVudGlvbiwgZW5mb3JjZWQgYnlcbiAgICAgICAgICogYHR5cGVzY3JpcHQtZGV2LXRvb2xraXQvcGFyYW1zLW9wdGlvbnMtbmFtZS1tYXRjaGAsIHdoaWNoIHJlcXVpcmVzIGJhZyB0eXBlcyB0byBiZSBuYW1lZFxuICAgICAgICAgKiBgPE93bmVyPlBhcmFtc2AgLyBgPE93bmVyPk9wdGlvbnNgLiBFeHBhbmRpbmcgaXQgdG8gYFBhcmFtZXRlcnNgIHdvdWxkIHB1dCB0aGUgdHdvIHJ1bGVzIGluIGRpcmVjdFxuICAgICAgICAgKiBjb250cmFkaWN0aW9uIGFuZCBicmVhayAzMDArIGV4cG9ydGVkIHR5cGUgbmFtZXMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEJhcmUga2V5d29yZCBhbmQgY29sbGlkaW5nIGdsb2JhbCBiaW5kaW5ncyB1c2UgYCRuYW1lYCwgZW5mb3JjZWQgYnlcbiAgICAgICAgICogYHR5cGVzY3JpcHQtZGV2LXRvb2xraXQvbm8ta2V5d29yZC1pZGVudGlmaWVyc2A6IGBvYmplY3RgIGJlY29tZXMgYCRvYmplY3RgLCBgc3RyaW5nYCBiZWNvbWVzIGAkc3RyaW5nYCxcbiAgICAgICAgICogYW5kIHNvIG9uLCBldmVuIHdoZW4gbm8gYWJicmV2aWF0aW9uIHdhcyBleHBhbmRlZC4gUHJvcGVydHkga2V5cyBhbmQgYnVpbHRpbiByZWFkcyBzdGF5IGxlZ2FsLlxuICAgICAgICAgKiBBIGJhcmUgYGFyZ3NgLCBgZm5gLCBgc3RyYCwgYG1vZGAgb3IgYGV2dGAgbGlrZXdpc2UgdGFrZXMgYCRhcmd1bWVudHNgLCBgJGZ1bmN0aW9uYCwgYW5kIHNvIG9uLlxuICAgICAgICAgKiBUaGlzIGlzIGRlbGliZXJhdGVseSBOT1QgY29uZmlndXJlZCBhcyBhIGN1c3RvbSByZXBsYWNlbWVudDogdW5pY29ybiBzdWJzdGl0dXRlcyBhdCB0aGUgd29yZCBsZXZlbCBpbnNpZGUgY29tcG91bmQgbmFtZXMsIHNvXG4gICAgICAgICAqIHJlZGlyZWN0aW5nIHRoZSB3aG9sZSBlbnRyeSB0dXJucyBgYXN5bmNGbmAgaW50byBgYXN5bmMkZnVuY3Rpb25gLiBDb21wb3VuZHMgd2FudCB0aGUgcGxhaW4gZXhwYW5zaW9uXG4gICAgICAgICAqIChgYXN5bmNGdW5jdGlvbmApOyBvbmx5IHRoZSBiYXJlLCBnZW51aW5lbHktY29sbGlkaW5nIGlkZW50aWZpZXJzIHRha2UgdGhlIGAkYCBmb3JtLlxuICAgICAgICAgKlxuICAgICAgICAgKiBEb21haW4gd29yZHM6IGBkb2NgL2Bkb2NzYCwgYGVudmAsIGBkaXN0YCBhbmQgYHNyY2AgYXJlIHRoZSBjbGVhcmVyIHNwZWxsaW5nIGluIHRoaXMgY29kZWJhc2UuXG4gICAgICAgICAqIEV4cGFuZGluZyBgZG9jYCBhbHNvIHBpY2tzIHRoZSB3cm9uZyB3b3JkIOKAlCB0aGUgYGFwaS1kb2MtKmAgbW9kdWxlcyBnZW5lcmF0ZSBBUEkgKmRvY3VtZW50YXRpb24qLCBub3RcbiAgICAgICAgICogZG9jdW1lbnRzLiBgc3JjYCBhZGRpdGlvbmFsbHkgY29ycnVwdHMgY29kZTogdGhlIGZpeGVyIHJlbmFtZXMgdGhlIGBTcmNgIG1lbWJlciBvZiB0aGUgZXhwb3J0ZWRcbiAgICAgICAgICogYE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzYCAvIGBSZXBvUGF0aHNgIGVudW1zIHdoaWxlIGxlYXZpbmcgZXZlcnkgYC5TcmNgIHJlZmVyZW5jZVxuICAgICAgICAgKiBkYW5nbGluZywgYmVjYXVzZSBgY2hlY2tQcm9wZXJ0aWVzYCBleGVtcHRzIHByb3BlcnR5IGFjY2Vzc2VzIGJ1dCBub3QgdGhlIGRlY2xhcmF0aW9ucyB0aGV5IHBvaW50IGF0LlxuICAgICAgICAgKlxuICAgICAgICAgKiBEaXNhYmxpbmcgdGhlIHJlcGxhY2VtZW50IGVudHJpZXMgcHJvdGVjdHMgdGhlc2UgcGVybWFuZW50bHk7IGFuIGBhbGxvd0xpc3RgIHdvdWxkIGluc3RlYWQgbmVlZCBldmVyeVxuICAgICAgICAgKiBhZmZlY3RlZCBpZGVudGlmaWVyIGVudW1lcmF0ZWQgYnkgaGFuZCBhbmQgcmUtZW51bWVyYXRlZCBmb3IgZXZlcnkgbmV3IG9uZS5cbiAgICAgICAgICpcbiAgICAgICAgICogTk9URTogdGhpcyBydWxlJ3MgYXV0b2ZpeCBpcyBOT1QgcmVmZXJlbmNlLWF3YXJlIGZvciBkZWNsYXJhdGlvbnMgdGhhdCBwYXJ0aWNpcGF0ZSBpbiBhIGNvbnRyYWN0IOKAlFxuICAgICAgICAgKiBlbnVtIG1lbWJlcnMsIGludGVyZmFjZSBtZW1iZXJzLCBhbmQgVHlwZVNjcmlwdCBwYXJhbWV0ZXIgcHJvcGVydGllcyAoYGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHlcbiAgICAgICAgICogZWw6IEhUTUxFbGVtZW50KWApIGFyZSByZW5hbWVkIHdoaWxlIGB0aGlzLmVsYCBhbmQgYEVudW0uTWVtYmVyYCByZWZlcmVuY2VzIGFyZSBsZWZ0IGRhbmdsaW5nLiBBcHBseVxuICAgICAgICAgKiBpdHMgcmVwb3J0cyBieSBoYW5kOyBuZXZlciBydW4gYC0tZml4YCBvdmVyIGl0LlxuICAgICAgICAgKi9cbiAgICAgICAgLypcbiAgICAgICAgICogQSBnb29kIHJ1bGUsIGJ1dCBpdHMgZGVmYXVsdCBwcmVmaXhlcyBmb3JjZSB1bmdyYW1tYXRpY2FsIG5hbWVzOiBgbWVtYmVyUGFnZUV4aXN0c2Agd291bGQgYmVjb21lXG4gICAgICAgICAqIGBpc01lbWJlclBhZ2VFeGlzdHNgIHJhdGhlciB0aGFuIGBkb2VzTWVtYmVyUGFnZUV4aXN0YC4gVGhlc2UgZW50cmllcyBFWFRFTkQgdGhlIGRlZmF1bHRzIChgaXNgLFxuICAgICAgICAgKiBgaGFzYCwgYGNhbmAsIGBzaG91bGRgLCAuLi4pIHJhdGhlciB0aGFuIHJlcGxhY2luZyB0aGVtLCBzbyBhIGJvb2xlYW4gd2l0aCBubyBib29sZWFuLXJlYWRpbmcgcHJlZml4XG4gICAgICAgICAqIGF0IGFsbCBpcyBzdGlsbCByZWplY3RlZCAtLSB0aGUgcnVsZSBqdXN0IHN0b3BzIGluc2lzdGluZyB0aGUgcHJlZml4IGNvbWUgZnJvbSBhIHNob3J0ZXIgbGlzdC5cbiAgICAgICAgICpcbiAgICAgICAgICogVGhlIGxpc3QgaXMgYmlkaXJlY3Rpb25hbDogYWRkaW5nIGEgcHJlZml4IGFsc28gYXNzZXJ0cyB0aGF0IGV2ZXJ5dGhpbmcgbmFtZWQgd2l0aCBpdCBJUyBhIGJvb2xlYW4uXG4gICAgICAgICAqIGBjaGVja2AgZWFybnMgaXRzIHBsYWNlIG9uIGJvdGggY291bnRzLCBzaW5jZSB0aGUgaGFuZGZ1bCBvZiBub24tYm9vbGVhbiBgY2hlY2sqYCBuYW1lcyBpdCBzdXJmYWNlZFxuICAgICAgICAgKiB3ZXJlIGdlbnVpbmVseSBtaXMtbmFtZWQgKHZvaWQgZnVuY3Rpb25zIHRoYXQgdGhyb3csIGEgcHJvYmUgcmV0dXJuaW5nIGFuIEhUVFAgc3RhdHVzKS4gYHRlc3RgIHdhc1xuICAgICAgICAgKiBtZWFzdXJlZCBhbmQgcmVqZWN0ZWQ6IGl0IHdvdWxkIHZhbGlkYXRlIGZpdmUgYHRlc3QqYCBsaW5rIHByZWRpY2F0ZXMgdGhhdCByZWFkIGJldHRlciBhcyBgaXMqYFxuICAgICAgICAgKiBhbnl3YXksIGF0IHRoZSBjb3N0IG9mIHJlbmFtaW5nIFNDUkVBTUlOR19DQVNFIHRlc3QgZml4dHVyZXMgYW5kIHRoZSBgdGVzdENvdmVyYWdlYC9gdGVzdFdhdGNoYFxuICAgICAgICAgKiBydW5uZXJzIHRoYXQgZGVsaWJlcmF0ZWx5IG1pcnJvciB0aGUgYHRlc3Q6Y292ZXJhZ2VgL2B0ZXN0OndhdGNoYCBucG0gc2NyaXB0cy5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL2NvbnNpc3RlbnQtYm9vbGVhbi1uYW1lJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHJlZml4ZXM6IHtcbiAgICAgICAgICAgICAgYWxsb3dzOiB0cnVlLFxuICAgICAgICAgICAgICBjaGVjazogdHJ1ZSxcbiAgICAgICAgICAgICAgY29udGFpbnM6IHRydWUsXG4gICAgICAgICAgICAgIGRvZXM6IHRydWUsXG4gICAgICAgICAgICAgIGluY2x1ZGVzOiB0cnVlLFxuICAgICAgICAgICAgICBtdXN0OiB0cnVlLFxuICAgICAgICAgICAgICBuZWVkczogdHJ1ZSxcbiAgICAgICAgICAgICAgc3VwcG9ydHM6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIC8qXG4gICAgICAgICAqIFVuc2F0aXNmaWFibGUgYWxvbmdzaWRlIGBwZXJmZWN0aW9uaXN0L3NvcnQtY2xhc3Nlc2AsIHdoaWNoIGlzIGNvbmZpZ3VyZWQgaGVyZSBhcyBhIHBsYWluXG4gICAgICAgICAqIGFscGhhYmV0aWNhbCBzb3J0LiBUaGlzIHJ1bGUgd2FudHMgYSBjYXRlZ29yeSBvcmRlciAoYWxsIGZpZWxkcywgdGhlbiB0aGUgY29uc3RydWN0b3IsIHRoZW4gYWxsXG4gICAgICAgICAqIG1ldGhvZHMpLCBzbyB0aGUgZXh0cmVtZWx5IGNvbW1vbiBgcHJpdmF0ZSBfeGAgZmllbGQgcGFpcmVkIHdpdGggYSBgcHVibGljIGdldCB4KClgIGFjY2Vzc29yIGlzXG4gICAgICAgICAqIHJlamVjdGVkIGJ5IHdoaWNoZXZlciBydWxlIGxvc2VzOiBhbHBoYWJldGljYWxseSB0aGUgYWNjZXNzb3IgcHJlY2VkZXMgdGhlIGZpZWxkLCBieSBjYXRlZ29yeSB0aGVcbiAgICAgICAgICogZmllbGQgcHJlY2VkZXMgdGhlIGFjY2Vzc29yLiBVbmxpa2UgYHByZWZlci1nbG9iYWwtdGhpc2AgdGhlIGNsYXNoIHByb2R1Y2VzIG5vXG4gICAgICAgICAqIGBFU0xpbnRDaXJjdWxhckZpeGVzV2FybmluZ2AsIG9ubHkgYmVjYXVzZSB0aGlzIHJ1bGUgc2hpcHMgbm8gZml4ZXIgLS0gYm90aCBydWxlcyBhcmUgYGVycm9yYCwgc28gbm9cbiAgICAgICAgICogYXJyYW5nZW1lbnQgb2YgbWVtYmVycyBzYXRpc2ZpZXMgdGhlbSBib3RoLiBUaGUgYWxwaGFiZXRpY2FsIHNvcnQgaXMgdGhlIG9uZSBhbHJlYWR5IHJvbGxlZCBvdXRcbiAgICAgICAgICogYWNyb3NzIHRoZSBwbHVnaW5zIGNvbnN1bWluZyB0aGlzIGNvbmZpZywgc28gaXQga2VlcHMgcHJlY2VkZW5jZS4gUmUtZW5hYmxpbmcgdGhpcyBydWxlIHdvdWxkIG1lYW5cbiAgICAgICAgICogZ2l2aW5nIGBwZXJmZWN0aW9uaXN0L3NvcnQtY2xhc3Nlc2AgYSBtYXRjaGluZyBgZ3JvdXBzYCBvcHRpb24gYW5kIHJlb3JkZXJpbmcgZXZlcnkgY2xhc3MuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9jb25zaXN0ZW50LWNsYXNzLW1lbWJlci1vcmRlcic6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBFdmVyeSByZXBvcnQgaXMgYG5ldyBFcnJvcigpLnN0YWNrYCwgd2hpY2ggY2FwdHVyZXMgYSBzdGFjayB0cmFjZSBhbmQgbmV2ZXIgc3VyZmFjZXMgaXRzIG1lc3NhZ2UuXG4gICAgICAgICAqIFRoZSBydWxlIGNhbm5vdCB0ZWxsIHRoYXQgZnJvbSBhbiBlcnJvciB0aGF0IGlzIGFjdHVhbGx5IHRocm93biBhdCBhIHVzZXIuXG4gICAgICAgICAqXG4gICAgICAgICAqIE5vIGJhcmUgYG5ldyBBZ2dyZWdhdGVFcnJvcihlcnJvcnMpYCBpcyBsZWZ0IGZvciBpdCB0byBjYXRjaDogZXZlcnkgc2l0ZSBub3cgYnVpbGRzIGl0cyBhZ2dyZWdhdGVcbiAgICAgICAgICogdGhyb3VnaCBgY3JlYXRlQWdncmVnYXRlRXJyb3JgLCB3aGljaCBnaXZlcyBpdCBhIG1lc3NhZ2UgdGhhdCBuYW1lcyB0aGUgZmFpbHVyZS4gQW4gZW1wdHkgb25lIGlzXG4gICAgICAgICAqIGxvc3N5IGluIGEgd2F5IHRoYXQgb25seSBzaG93cyB1cCBvdXRzaWRlIHRoaXMgbGlicmFyeSDigJQgYGVycm9yVG9TdHJpbmdgIHdhbGtzIGBlcnJvcnNgIGFuZCBwcmludHNcbiAgICAgICAgICogdGhlIHdob2xlIHRyZWUsIHdoaWxlIGV2ZXJ5dGhpbmcgcmVhZGluZyBgbWVzc2FnZWAgc2VlcyBhbiBlbXB0eSBzZW50ZW5jZS4gVGhlIGhlbHBlciBsaXZlcyBpbiBpdHNcbiAgICAgICAgICogb3duIGxlYWYgYGFnZ3JlZ2F0ZS1lcnJvci50c2AgcmF0aGVyIHRoYW4gaW4gYGVycm9yLnRzYCBwcmVjaXNlbHkgc28gdGhhdCBgZGlzcG9zYWJsZS50c2AgY2FuIHJlYWNoXG4gICAgICAgICAqIGl0LCB3aGljaCBpdCBjb3VsZCBub3Qgd2hpbGUgdGhlIG9ubHkgY29weSBzYXQgaW4gYSBtb2R1bGUgaW1wb3J0aW5nIGl0IGJhY2suXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9lcnJvci1tZXNzYWdlJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBkZWZhdWx0IHN0eWxlIGZvciBgbm9kZTpwYXRoYCBpcyBhIGRlZmF1bHQgaW1wb3J0LCBidXQgdGhpcyBjb2RlYmFzZSBpbXBvcnRzIGl0cyBtZW1iZXJzIGJ5IG5hbWVcbiAgICAgICAgICogdGhyb3VnaG91dCwgY29uc2lzdGVudGx5IHdpdGggZXZlcnkgb3RoZXIgYG5vZGU6YCBtb2R1bGUgaXQgdXNlcy4gQ29uZmlndXJlIHRoZSBydWxlIHRvIGVuZm9yY2UgdGhlXG4gICAgICAgICAqIHN0eWxlIGFjdHVhbGx5IGluIHVzZSByYXRoZXIgdGhhbiBhbm5vdGF0ZSAxNyBzaXRlcyB0aGF0IGFyZSBub3QgZ29pbmcgdG8gY2hhbmdlLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vaW1wb3J0LXN0eWxlJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3R5bGVzOiB7XG4gICAgICAgICAgICAgIC8vIEtleWVkIGJ5IHRoZSBVTlBSRUZJWEVEIG1vZHVsZSBuYW1lOiB0aGUgcnVsZSdzIG93biB0YWJsZSB1c2VzIGBwYXRoYCwgc28gYSBgbm9kZTpwYXRoYCBrZXkgbmV2ZXIgbWF0Y2hlcy5cbiAgICAgICAgICAgICAgcGF0aDoge1xuICAgICAgICAgICAgICAgIG5hbWVkOiB0cnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBydWxlIGNvdW50cyBjb25zdHJ1Y3RvciBjYWxscyBhbmQgY291bnRzIHRocm91Z2ggYXJyYXkgYW5kIG9iamVjdCBsaXRlcmFscywgc28gaXRzIGRlZmF1bHQgb2YgM1xuICAgICAgICAgKiByZXBvcnRzIG9yZGluYXJ5IGNvbXBvc2l0aW9uOiBgUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdib29tJykpYCBpbnNpZGUgYW4gYXNzZXJ0aW9uLCBhIHRlc3QgZml4dHVyZVxuICAgICAgICAgKiBidWlsdCBhcyBgY3JlYXRlVHlwZUluZm8oeyBtZXRob2RzOiBbY3JlYXRlTWVtYmVySW5mbyh7IC4uLiB9KV0gfSlgLCBgdGhpcy5hZGRDaGlsZChuZXcgQyh0aGlzLmFwcCkpYFxuICAgICAgICAgKiBpbnNpZGUgYSBwYXJhbXMgYmFnLiBSYWlzaW5nIHRoZSBsaW1pdCBieSBvbmUgY2xlYXJzIGV2ZXJ5IHJlcG9ydCBoZXJlIHdoaWxlIHN0aWxsIGNhdGNoaW5nIHRoZVxuICAgICAgICAgKiBnZW51aW5lbHkgdW5yZWFkYWJsZSBuZXN0aW5nIHRoZSBydWxlIGlzIGZvci5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL21heC1uZXN0ZWQtY2FsbHMnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtYXg6IDRcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICd1bmljb3JuL25hbWUtcmVwbGFjZW1lbnRzJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAqIFByb3BlcnR5IGFuZCBtZW1iZXIgbmFtZXMgYXJlIGNoZWNrZWQgdG9vLCBzbyBhbiBhYmJyZXZpYXRpb24gY2Fubm90IHN1cnZpdmUgYnkgbGl2aW5nIG9uIGFuXG4gICAgICAgICAgICAgKiBvYmplY3QgcmF0aGVyIHRoYW4gaW4gYSB2YXJpYWJsZS5cbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBUaGUgcnVsZSBpcyBwdXJlbHkgc3ludGFjdGljOiBpdCBjYW5ub3QgdGVsbCBhIG1lbWJlciB3ZSBkZWNsYXJlIGZyb20gb25lIGJlbG9uZ2luZyB0byBhXG4gICAgICAgICAgICAgKiBkZXBlbmRlbmN5LCBhbmQgaXQgb2ZmZXJzIG5vIGF1dG9maXggZm9yIHByb3BlcnRpZXMgKG1lYXN1cmVkOiA2ODEgaGl0cywgMCB3aXRoIGEgZml4ZXIpLiBTaXRlc1xuICAgICAgICAgICAgICogbmFtaW5nIGEgZm9yZWlnbiBtZW1iZXIgLS0gYERvbUVsZW1lbnRJbmZvLmF0dHJgLCBgRXZhbEluT2JzaWRpYW5QYXJhbXMuZm5gLCBhbmQgdGhlIGxpa2UgLS0gYXJlXG4gICAgICAgICAgICAgKiB0aGVyZWZvcmUgaW1wb3NzaWJsZSB0byBzYXRpc2Z5IGFuZCBjYXJyeSBhbiBpbmxpbmUgZGlzYWJsZSwgc28gZXZlcnl0aGluZyBzdGlsbCByZXBvcnRlZCBpcyBvdXJzXG4gICAgICAgICAgICAgKiB0byByZW5hbWUuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogV2hlbiByZW5hbWluZyB0aGUgcmVzdCwgbm90ZSB0aGF0IGB0c2NgIGFsb25lIGlzIE5PVCBhIHN1ZmZpY2llbnQgZ2F0ZTogb2JqZWN0LWxpdGVyYWwga2V5cyBpblxuICAgICAgICAgICAgICogbG9vc2VseSB0eXBlZCBwb3NpdGlvbnMgKGBleHBlY3QuYXJyYXlDb250YWluaW5nKFt7IGJhdGNoZWRBcmd1bWVudHM6IC4uLiB9XSlgKSBhcmUgbm90IGNvbnRleHR1YWxseVxuICAgICAgICAgICAgICogdHlwZWQsIHNvIGEgcmVuYW1lIGxlYXZlcyB0aGVtIGJlaGluZCBhbmQgYnJlYWtzIHRoZSBzdWl0ZSB3aGVyZSB0aGUgdHlwZSBjaGVja2VyIHNlZXMgbm90aGluZy5cbiAgICAgICAgICAgICAqIFJlbmFtZSBpbiBzbWFsbCBiYXRjaGVzIHdpdGggdGhlIGZ1bGwgdGVzdCBydW4gaW4gdGhlIGxvb3AuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogVGhlIGRpc2FibGVkIHJlcGxhY2VtZW50cyBiZWxvdyBhcmUgZXN0YWJsaXNoZWQgdm9jYWJ1bGFyeSByYXRoZXIgdGhhbiBhYmJyZXZpYXRpb25zIHRvIGJlXG4gICAgICAgICAgICAgKiBleHBhbmRlZC4gYGVsYCBpcyBleGVtcHQgYmVjYXVzZSBPYnNpZGlhbiBuYW1lcyBldmVyeSBlbGVtZW50IG1lbWJlciB0aGF0IHdheSAtLSBgY29udGFpbmVyRWxgLFxuICAgICAgICAgICAgICogYGNvbnRlbnRFbGAsIGBpbnB1dEVsYCwgYHNlbGVjdEVsYCAtLSBzbyBleHBhbmRpbmcgb3VycyB0byBgKkVsZW1lbnRgIHdvdWxkIGxlYXZlIG91ciBjb21wb25lbnRzXG4gICAgICAgICAgICAgKiByZWFkaW5nIGluY29uc2lzdGVudGx5IGJlc2lkZSB0aGUgT2JzaWRpYW4gb25lcyB0aGV5IHNpdCBuZXh0IHRvLiBEaXNhYmxpbmcgdGhlIHJlcGxhY2VtZW50IGFsc29cbiAgICAgICAgICAgICAqIGNvdmVycyBjb21wb3VuZCBuYW1lcywgd2hpY2ggaXMgNzIgc2l0ZXMgdGhhdCB3b3VsZCBvdGhlcndpc2UgZWFjaCBuZWVkIGFuIGlubGluZSBkaXNhYmxlLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIGByZWZgIGlzIGV4ZW1wdCBmb3IgdGhlIHNhbWUgcmVhc29uOiBgQXN5bmNFdmVudFJlZmAgaXMgdGhlIGFzeW5jIGNvdW50ZXJwYXJ0IG9mIE9ic2lkaWFuJ3NcbiAgICAgICAgICAgICAqIGBFdmVudFJlZmAsIGhhbmRlZCB0byB0aGUgc2FtZSBgb2ZmcmVmYCAvIGByZWdpc3RlckV2ZW50YCBzaGFwZXMsIHNvIHRoZSB0d28gbmFtZXMgaGF2ZSB0byBtYXRjaFxuICAgICAgICAgICAgICogdG8gcmVhZCBhcyBhIHBhaXIuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNoZWNrUHJvcGVydGllczogdHJ1ZSxcbiAgICAgICAgICAgIHJlcGxhY2VtZW50czoge1xuICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgKiBgYXR0cmAgLyBgYXR0cnNgIGFyZSBPYnNpZGlhbidzIG93bjogYGNyZWF0ZUVsKCdhJywgeyBhdHRyOiB7IC4uLiB9IH0pYCB0YWtlcyB0aGVtIGJ5IHRob3NlXG4gICAgICAgICAgICAgICAqIG5hbWVzIG9uIGBEb21FbGVtZW50SW5mb2AsIHNvIG91cnMgaGF2ZSB0byBtYXRjaCB0byBiZSBwYXNzZWQgdGhyb3VnaC4gYHByb3BzYCBpcyB0aGVcbiAgICAgICAgICAgICAgICogdW5pdmVyc2FsIGNvbXBvbmVudCB2b2NhYnVsYXJ5LCBleGVtcHQgZm9yIHRoZSBzYW1lIHJlYXNvbiBgcGFyYW1zYCBpcy5cbiAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgIGF0dHI6IGZhbHNlLFxuICAgICAgICAgICAgICBhdHRyczogZmFsc2UsXG4gICAgICAgICAgICAgIGRldjogZmFsc2UsXG4gICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAqIEV2ZXJ5IGBkaXJgIGhlcmUgaXMgYSBmaWxlc3lzdGVtIGRpcmVjdG9yeSwgbmV2ZXIgYSBkaXJlY3Rpb24sIHNvIHRoZSBydWxlIGlzIG5hcnJvd2VkIHRvIHRoZVxuICAgICAgICAgICAgICAgKiBvbmUgZXhwYW5zaW9uIHJhdGhlciB0aGFuIGxlZnQgb2ZmZXJpbmcgYSBjaG9pY2UgaXQgY2Fubm90IG1ha2UuXG4gICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uYW1lLXJlcGxhY2VtZW50cyAtLSBUaGlzIGlzIHRoZSBydWxlJ3Mgb3duIHJlcGxhY2VtZW50IGtleSwgd2hpY2ggaGFzIHRvIGJlIHNwZWxsZWQgdGhlIHdheSB0aGUgcnVsZSByZWFkcyBpdC5cbiAgICAgICAgICAgICAgZGlyOiB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkaXJlY3Rvcnk6IHRydWVcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZGlzdDogZmFsc2UsXG4gICAgICAgICAgICAgIGRvYzogZmFsc2UsXG4gICAgICAgICAgICAgIGRvY3M6IGZhbHNlLFxuICAgICAgICAgICAgICBlbDogZmFsc2UsXG4gICAgICAgICAgICAgIGVudjogZmFsc2UsXG4gICAgICAgICAgICAgIGxpYjogZmFsc2UsXG4gICAgICAgICAgICAgIHBhcmFtczogZmFsc2UsXG4gICAgICAgICAgICAgIHByb3BzOiBmYWxzZSxcbiAgICAgICAgICAgICAgcmVmOiBmYWxzZSxcbiAgICAgICAgICAgICAgcmVmczogZmFsc2UsXG4gICAgICAgICAgICAgIHNyYzogZmFsc2UsXG4gICAgICAgICAgICAgIHV0aWw6IGZhbHNlLFxuICAgICAgICAgICAgICB1dGlsczogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBuZXh0IHNpeCBydWxlcyBhbGwgc3VnZ2VzdCBhbiBBUEkgbmV3ZXIgdGhhbiB0aGlzIHByb2plY3QncyBgbGliYCAoYEVTMjAyMmApLCBzbyBmb2xsb3dpbmcgYW55IG9mXG4gICAgICAgICAqIHRoZW0gZmFpbHMgdG8gY29tcGlsZS4gVGhlIE9ic2lkaWFuIHBsdWdpbiBsYXllciB0YWtlcyB0aGUgZmxvb3IgZnJvbSB0aGUgb2xkZXN0IE9ic2lkaWFuIGluc3RhbGxlciB0aGF0XG4gICAgICAgICAqIGNhbiBzdGlsbCBydW4gY3VycmVudCBPYnNpZGlhbiwgd2hpY2ggcmVjb3JkcyBgZWNtYVNjcmlwdFZlcnNpb246IFwiRVMyMDIyXCJgLiBFYWNoIGlzIG9mZiBhdCB0aGUgY29uZmlnXG4gICAgICAgICAqIGxldmVsIHJhdGhlciB0aGFuIGFubm90YXRlZCBwZXIgc2l0ZSwgYmVjYXVzZSBub25lIGNhbiBldmVyIGJlIHNhdGlzZmllZCB3aGlsZSB0aGF0IGZsb29yIGhvbGRzLiBSZXZpc2l0XG4gICAgICAgICAqIHRoZW0gdG9nZXRoZXIgaWYgdGhlIGZsb29yIG1vdmVzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBgQXJyYXkjdG9SZXZlcnNlZGAgYW5kIGBBcnJheSN0b1NvcnRlZGAgYXJlIEVTMjAyMy5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL25vLWFycmF5LXJldmVyc2UnOiAnb2ZmJyxcbiAgICAgICAgJ3VuaWNvcm4vbm8tYXJyYXktc29ydCc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBgY29udGludWVgIGluc2lkZSBhIG5lc3RlZCBsb29wIGlzIG9yZGluYXJ5LCByZWFkYWJsZSBjb250cm9sIGZsb3cgaGVyZS4gVGhlIHJ1bGUncyByZW1lZHkgaXMgdG9cbiAgICAgICAgICogZXh0cmFjdCBldmVyeSBzdWNoIGxvb3AgaW50byBpdHMgb3duIGZ1bmN0aW9uLCB3aGljaCBzcHJlYWRzIG9uZSBjb2hlcmVudCB0cmF2ZXJzYWwgYWNyb3NzIHR3b1xuICAgICAgICAgKiBkZWNsYXJhdGlvbnMgd2l0aG91dCBtYWtpbmcgYW55dGhpbmcgY2xlYXJlci5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL25vLWJyZWFrLWluLW5lc3RlZC1sb29wJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBydWxlIGNhbm5vdCBzZWUgdGhyb3VnaCBhIGhvaXN0ZWQgZnVuY3Rpb24gZGVjbGFyYXRpb24sIHNvIGl0IHRyZWF0cyBhIGJpbmRpbmcgdGhhdCBhIG5lc3RlZFxuICAgICAgICAgKiBmdW5jdGlvbiBhbHJlYWR5IHJlYWQgYXMgdW51c2VkIGJlZm9yZSB0aGUgZXhpdC4gSW4gYHJ1bldpdGhUaW1lb3V0YCB0aGF0IGlzIGBsZXQgaXNDb21wbGV0ZWRgLCB3aGljaFxuICAgICAgICAgKiBgcnVuKClgIGFuZCBgaW5uZXJUaW1lb3V0KClgIGJvdGggdG91Y2ggd2hpbGUgdGhlIGBQcm9taXNlLnJhY2VgIGFib3ZlIHRoZSBleGl0IGlzIHN0aWxsIHJ1bm5pbmcgLS1cbiAgICAgICAgICogbW92aW5nIHRoZSBkZWNsYXJhdGlvbiBwYXN0IHRoZSBleGl0LCBhcyB0aGUgcnVsZSBhc2tzLCB3b3VsZCBsZWF2ZSB0aG9zZSByZWFkcyBpbiB0aGUgdGVtcG9yYWwgZGVhZFxuICAgICAgICAgKiB6b25lLiBJdHMgb3duIGZpeGVyIGRlY2xpbmVzIGFsbCAxNSBzaXRlcyBmb3IgdGhlIHNhbWUgcmVhc29uIGl0IGNhbm5vdCBwcm92ZSB0aGVtIHNhZmUsIHNvIGZvbGxvd2luZ1xuICAgICAgICAgKiB0aGUgcnVsZSBpcyBlbnRpcmVseSBtYW51YWwuIFdoYXQgaXMgbGVmdCBhZnRlciB0aGF0IGlzIHBsYWNlbWVudCBzdHlsZTogdGhlIHJlbWFpbmluZyByZXBvcnRzIGFyZVxuICAgICAgICAgKiBuYW1lZCBjb25zdGFudHMgYW5kIGRlcml2ZWQgcGF0aHMgZGVsaWJlcmF0ZWx5IGdyb3VwZWQgYXQgdGhlIHRvcCBvZiBhIGZ1bmN0aW9uLCBhbmQgcHVzaGluZyBlYWNoIG9uZVxuICAgICAgICAgKiBiZWxvdyB0aGUgZmlyc3QgZ3VhcmQgc3BsaXRzIGEgY29oZXNpdmUgYmxvY2sgdG8gbm8gYmVuZWZpdC4gVGhlIHRocmVlIHNpdGVzIHdoZXJlIGRlZmVycmluZyBza2lwcGVkXG4gICAgICAgICAqIHJlYWwgd29yayAoYSBzZWNvbmQgYGNvbXB1dGVOZWVkZWRFeHBvc3VyZWAgd2FsaywgYSBgdG9Kc29uYCBzZXJpYWxpemF0aW9uLCBhbiBgZW5zdXJlTGZFbmRpbmdzYCBwYXNzKVxuICAgICAgICAgKiB3ZXJlIGFwcGxpZWQgYnkgaGFuZCBpbnN0ZWFkLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbm8tZGVjbGFyYXRpb25zLWJlZm9yZS1lYXJseS1leGl0JzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIEFzc2lnbmluZyBvbnRvIHRoZSBnbG9iYWwgb2JqZWN0IGlzIGhvdyB0aGlzIGxpYnJhcnkgaW5zdGFsbHMgYW5kIHJlc3RvcmVzIHRlc3QgZG91YmxlcywgYW5kIGhvdyBhXG4gICAgICAgICAqIGZldyBPYnNpZGlhbi1ydW50aW1lIGdsb2JhbHMgYXJlIHJlYWNoZWQgYXQgYWxsLiBUaGUgcnVsZSBjYW5ub3Qgc2VwYXJhdGUgdGhhdCBmcm9tIGFuIGFjY2lkZW50YWxcbiAgICAgICAgICogZ2xvYmFsIHdyaXRlLCBhbmQgaXQgaGFzIG5vIGZpeGVyLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbm8tZ2xvYmFsLW9iamVjdC1wcm9wZXJ0eS1hc3NpZ25tZW50JzogJ29mZicsXG4gICAgICAgIC8vIGBudWxsYCBpcyBsb2FkLWJlYXJpbmcgaGVyZTogYW4gb3B0aW9uYWwgY29sbGFib3JhdG9yIGlzIG1vZGVsbGVkIGFzIGEgcmVxdWlyZWQgYG51bGwgfCBYYCBmaWVsZCByYXRoZXIgdGhhbiBhbiBvcHRpb25hbCBgWGAsIHNvIGBudWxsYCBhbmQgYHVuZGVmaW5lZGAgYXJlIG5vdCBpbnRlcmNoYW5nZWFibGUuXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBydWxlJ3MgbGlzdCBvZiBzdGFuZGFyZCBgU3ltYm9sYCBwcm9wZXJ0aWVzIHByZWRhdGVzIGV4cGxpY2l0IHJlc291cmNlIG1hbmFnZW1lbnQsIHNvIGl0IHJlcG9ydHNcbiAgICAgICAgICogYFN5bWJvbC5kaXNwb3NlYCBhbmQgYFN5bWJvbC5hc3luY0Rpc3Bvc2VgIGFzIG5vbi1zdGFuZGFyZC4gQm90aCBhcmUgcGFydCBvZiB0aGUgbGFuZ3VhZ2UgdGhhdCB0aGlzXG4gICAgICAgICAqIGxpYnJhcnkgaXMgYnVpbHQgb24gLS0gMTE0IGZpbGVzIGhlcmUgdXNlIGB1c2luZ2AgZGVjbGFyYXRpb25zLCBhbmQgdGhlIGRpc3Bvc2FibGUgdHlwZXMgYXJlIGFcbiAgICAgICAgICogcHVibGljIHBhcnQgb2YgaXRzIHN1cmZhY2UgLS0gc28gYWxsIDU5IHJlcG9ydHMgYXJlIHRoZSBydWxlIGJlaW5nIG91dCBvZiBkYXRlIHJhdGhlciB0aGFuIGEgZmluZGluZy5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL25vLW5vbnN0YW5kYXJkLWJ1aWx0aW4tcHJvcGVydGllcyc6ICdvZmYnLFxuICAgICAgICAndW5pY29ybi9uby1udWxsJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIFR5cGVTY3JpcHQncyBleHBsaWNpdCBgdGhpc2AgcGFyYW1ldGVyIChgZnVuY3Rpb24gZ2V0KHRoaXM6IEhvbGRlcikgeyByZXR1cm4gdGhpcy52YWx1ZTsgfWApIG1ha2VzXG4gICAgICAgICAqIGB0aGlzYCBvdXRzaWRlIGEgY2xhc3MgYm90aCBsZWdhbCBhbmQgdHlwZS1jaGVja2VkLCBidXQgdGhlIHJ1bGUgaXMgc3ludGFjdGljIGFuZCBmbGFncyBpdCBpZGVudGljYWxseVxuICAgICAgICAgKiB0byBhIGdlbnVpbmVseSB1bmJvdW5kIGB0aGlzYC4gSXQgaGFzIG5vIG9wdGlvbnMgKGBzY2hlbWE6IFtdYCkgYW5kIG5vIGZpeGVyLCBzbyB0aGVyZSBpcyBubyB3YXkgdG9cbiAgICAgICAgICogc2VwYXJhdGUgdGhlIGlkaW9tIGZyb20gdGhlIGJ1ZyBpdCB0YXJnZXRzLiBNb3N0IGhpdHMgaGVyZSB3ZXJlIHR5cGVkIGB0aGlzYCBwYXJhbWV0ZXJzIGFuZCB0ZXN0cyB0aGF0XG4gICAgICAgICAqIGRlbGliZXJhdGVseSBhc3NlcnQgYHRoaXNgIGJpbmRpbmcuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9uby10aGlzLW91dHNpZGUtb2YtY2xhc3MnOiAnb2ZmJyxcbiAgICAgICAgLy8gU2FtZSBjYWxsIGFzIGl0cyBvYmplY3QgY291bnRlcnBhcnQgYWJvdmU6IHRoZSBkZXN0cnVjdHVyaW5nIGRlcHRoIGZsYWdnZWQgaGVyZSBpcyBkZWxpYmVyYXRlIGFuZCByZWFkcyB3ZWxsLlxuICAgICAgICAndW5pY29ybi9uby11bnJlYWRhYmxlLWFycmF5LWRlc3RydWN0dXJpbmcnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIHJlcG9ydHMgYXJlIGFsbCBgZm9yIChjb25zdCBmaWxlIG9mIGF3YWl0IHJlYWRkaXJQb3NpeCguLi4pKWAsIHdoaWNoIHJlYWRzIGV4YWN0bHkgYXMgaW50ZW5kZWQuXG4gICAgICAgICAqIEhvaXN0aW5nIHRoZSBhd2FpdGVkIGNhbGwgaW50byBhIHZhcmlhYmxlIG5hbWVkIGFmdGVyIHRoZSBsb29wJ3Mgb3duIGl0ZXJhYmxlIGFkZHMgYSBsaW5lIGFuZCBhIG5hbWVcbiAgICAgICAgICogd2l0aG91dCBhZGRpbmcgaW5mb3JtYXRpb24uXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9uby11bnJlYWRhYmxlLWZvci1vZi1leHByZXNzaW9uJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBuZXN0ZWQgZGVzdHJ1Y3R1cmluZyB0aGlzIGZsYWdzIGlzIGRlbGliZXJhdGUgaGVyZSBhbmQgcmVhZHMgd2VsbDogcHVsbGluZyBhIG1lbWJlciBvdXQgb2YgYVxuICAgICAgICAgKiBwYXJhbXMgYmFnIGluIG9uZSBzdGVwIHN0YXRlcyB3aGVyZSB0aGUgdmFsdWUgY29tZXMgZnJvbSwgd2hpY2ggYSBzZWNvbmQgaW50ZXJtZWRpYXRlIGJpbmRpbmcgb25seVxuICAgICAgICAgKiBvYnNjdXJlcy4gVGhlIHJ1bGUgdGFrZXMgbm8gb3B0aW9ucywgc28gdGhlcmUgaXMgbm8gd2F5IHRvIGtlZXAgdGhlIGRlcHRoIGxpbWl0IGl0IGlzIHJlYWxseSBhZnRlclxuICAgICAgICAgKiB3aGlsZSBhbGxvd2luZyB0aGUgc2hhcGUgaW4gdXNlLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbm8tdW5yZWFkYWJsZS1vYmplY3QtZGVzdHJ1Y3R1cmluZyc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBgY2hlY2tBcmd1bWVudHNgIHN0cmlwcyBgdW5kZWZpbmVkYCBhcmd1bWVudHMsIHdoaWNoIHNoaWZ0cyB0aGUgcmVtYWluaW5nIHBvc2l0aW9uYWwgYXJndW1lbnRzIGludG9cbiAgICAgICAgICogdGhlIHdyb25nIHNsb3RzOyBgY2hlY2tBcnJvd0Z1bmN0aW9uQm9keWAgcmVtb3ZlcyBgcmV0dXJuIHVuZGVmaW5lZDtgIGZyb20gYXJyb3cgYm9kaWVzIHdob3NlIG90aGVyXG4gICAgICAgICAqIGJyYW5jaGVzIGRvIHJldHVybiBhIHZhbHVlLCB3aGljaCB2aW9sYXRlcyB0aGUgYG5vSW1wbGljaXRSZXR1cm5zYCBzZXR0aW5nIHRoaXMgcHJvamVjdCBjb21waWxlcyB3aXRoLlxuICAgICAgICAgKiBUaGUgcnVsZSdzIHJlbWFpbmluZyBjYXNlcyAoYSBiYXJlIGB1bmRlZmluZWRgIGluaXRpYWxpemVyLCBgcmV0dXJuIHVuZGVmaW5lZDtgIGluIGEgdm9pZCBmdW5jdGlvbilcbiAgICAgICAgICogYXJlIHN0aWxsIHdvcnRoIGhhdmluZy5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL25vLXVzZWxlc3MtdW5kZWZpbmVkJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2hlY2tBcmd1bWVudHM6IGZhbHNlLFxuICAgICAgICAgICAgY2hlY2tBcnJvd0Z1bmN0aW9uQm9keTogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIC8vIGBBcnJheS5mcm9tQXN5bmNgIGlzIEVTMjAyNC4gU2VlIHRoZSBFUzIwMjIgZmxvb3Igbm90ZSBhYm92ZS5cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLWFycmF5LWZyb20tYXN5bmMnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogRXZlcnkgaGl0IGhlcmUgaXMgYSBwcm9taXNlIGRlbGliZXJhdGVseSBOT1QgYXdhaXRlZCwgYW5kIGBhd2FpdGAgd291bGQgY2hhbmdlIHdoYXQgdGhlIGNvZGUgZG9lcy5cbiAgICAgICAgICogYHJlc3VsdC5jYXRjaCh0aHJvd0RlbGF5ZWQpYCBpbiBgYXN5bmMtZXZlbnRzLnRzYCBpcyB0aGUgZmlyZS1hbmQtZm9yZ2V0IGVycm9yIHBhdGggdGhlIG1vZHVsZSBpc1xuICAgICAgICAgKiBidWlsdCBvbjsgdGhlIHJlc3QgaG9sZCBhbiB1bnJlc29sdmVkIHByb21pc2UgYW5kIGFzc2VydCB0aGUgY2FsbGJhY2sgaGFzIG5vdCBmaXJlZCB5ZXQsIHNvIGF3YWl0aW5nXG4gICAgICAgICAqIHdvdWxkIGhhbmcgdGhlIHRlc3Qgb3IgaW52ZXJ0IHdoYXQgaXQgcHJvdmVzLiBUaGUgcnVsZSBjYW5ub3QgdGVsbCBhIGZvcmdvdHRlbiBgYXdhaXRgIGZyb20gYW5cbiAgICAgICAgICogaW50ZW50aW9uYWwgb25lLCBhbmQgdGhpcyBjb2RlYmFzZSBzY2hlZHVsZXMgZmlyZS1hbmQtZm9yZ2V0IHdvcmsgYXMgYSBjb3JlIHBhdHRlcm4uXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9wcmVmZXItYXdhaXQnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogQWxsIHRocmVlIHJlcG9ydHMgcmVhZCBIVE1MIG91dCAoYGNvbnN0IGh0bWwgPSBlbC5pbm5lckhUTUxgKSwgbmV2ZXIgd3JpdGUgaXQsIGFuZCBmb3IgYSByZWFkXG4gICAgICAgICAqIGBnZXRIVE1MKClgIHJldHVybnMgdGhlIHNhbWUgc3RyaW5nLiBXaGF0IGl0IGFkZHMgaXMgc2hhZG93LXJvb3Qgc2VyaWFsaXphdGlvbiBvcHRpb25zIHRoYXQgbm90aGluZ1xuICAgICAgICAgKiBoZXJlIGFza3MgZm9yLCBpbiBleGNoYW5nZSBmb3IgYSBtdWNoIG5ld2VyIHBsYXRmb3JtIGZsb29yIHRoYW4gYGlubmVySFRNTGAgLS0gYSBiYWQgdHJhZGUgZm9yIGFcbiAgICAgICAgICogbGlicmFyeSB0aGF0IGhhcyB0byBydW4gb24gd2hhdGV2ZXIgQ2hyb21pdW0gdGhlIGluc3RhbGxlZCBPYnNpZGlhbiBzaGlwcy4gVGhlIHJ1bGUncyBvdGhlciBoYWxmLFxuICAgICAgICAgKiByZXdyaXRpbmcgd3JpdGVzIHRvIHRoZSBzYW5pdGl6aW5nIGBzZXRIVE1MKClgLCB3b3VsZCBiZSB3b3J0aCBoYXZpbmc7IGl0IGp1c3QgbmV2ZXIgZmlyZXMgaGVyZS5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL3ByZWZlci1kb20tbm9kZS1odG1sLW1ldGhvZHMnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogSXRlcmF0b3IgaGVscGVycyAoYEl0ZXJhdG9yI3NvbWVgIGFuZCBmcmllbmRzKSBhcmUgRVMyMDI1LCBzbyB0aGlzIGJlbG9uZ3Mgd2l0aCBgbm8tYXJyYXktcmV2ZXJzZWAgYW5kXG4gICAgICAgICAqIGBuby1hcnJheS1zb3J0YCBhYm92ZTogdGhlIHNhbWUgRVMyMDIyIGZsb29yIHJ1bGVzIGl0IG91dCwgYW5kIHRoZSBzYW1lIG5vdGUgYXBwbGllcyAtLSByZXZpc2l0IHRoZW1cbiAgICAgICAgICogdG9nZXRoZXIgaWYgdGhhdCBmbG9vciBtb3Zlcy5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL3ByZWZlci1pdGVyYXRvci1oZWxwZXJzJzogJ29mZicsXG4gICAgICAgIC8vIGBJdGVyYXRvciN0b0FycmF5YCBpcyBFUzIwMjUuIFNlZSB0aGUgRVMyMDIyIGZsb29yIG5vdGUgYWJvdmUuXG4gICAgICAgICd1bmljb3JuL3ByZWZlci1pdGVyYXRvci10by1hcnJheSc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBSZXBsYWNlZCBieSBgdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9wcmVmZXItbG9naWNhbC1vcGVyYXRvci1vdmVyLXRlcm5hcnlgLCB3aGljaCByZXBvcnRzIHRoZSBzYW1lIGFuZFxuICAgICAgICAgKiBhbHNvIGZpeGVzIGEgYm9vbGVhbiBsaXRlcmFsIGJyYW5jaCBpbiBUeXBlU2NyaXB0LiBVbmljb3JuIHdpdGhob2xkcyB0aGF0IGZpeCB0aGVyZSwgd2hpbGVcbiAgICAgICAgICogYHVuaWNvcm4vcHJlZmVyLXRlcm5hcnlgIGtlZXBzIHByb2R1Y2luZyB0aGUgc2hhcGUsIHNvIGBsaW50OmZpeGAgbGVmdCBhbiBlcnJvciBpdCBoYWQganVzdCBjcmVhdGVkLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLWxvZ2ljYWwtb3BlcmF0b3Itb3Zlci10ZXJuYXJ5JzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBzdWdnZXN0ZWQgcmVwbGFjZW1lbnQgaXMgYE1hdGgudHJ1bmMoTnVtYmVyKHgpKWAsIHdoaWNoIGlzIGxvbmdlciB0aGFuIGBwYXJzZUludCh4LCAxMClgIGFuZCBub1xuICAgICAgICAgKiBjbGVhcmVyLCBhbmQgaXQgaXMgbm90IHRoZSBzYW1lIGZ1bmN0aW9uOiBgcGFyc2VJbnRgIHN0b3BzIGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgdGhhdCBjYW5ub3QgYmUgcGFydFxuICAgICAgICAgKiBvZiB0aGUgbnVtYmVyLCBzbyBgJzEyYWJjJ2AgcGFyc2VzIHRvIDEyIHdoZXJlIGBOdW1iZXJgIHlpZWxkcyBgTmFOYC4gVHdvIG9mIHRoZSByZXBvcnRzIHJlYWQgdXNlclxuICAgICAgICAgKiBpbnB1dCB0aHJvdWdoIHRoYXQgZGlmZmVyZW5jZSAtLSB0aGUgcGFnZS1qdW1wIGJveCBpbiB0aGUgYERhdGF2aWV3YCBoZWxwZXIsIGFuZFxuICAgICAgICAgKiBgTnVtYmVyQ29tcG9uZW50LnZhbHVlRnJvbVN0cmluZ2AsIHdob3NlIGxlbmllbnQgcGFyc2UgaXMgcGFydCBvZiBhIHB1Ymxpc2hlZCBjb21wb25lbnQncyBiZWhhdmlvci5cbiAgICAgICAgICogVGhlIHJlc3QgcGFyc2UgbWFjaGluZS1nZW5lcmF0ZWQgc3RyaW5ncywgd2hlcmUgdGhlIHR3byBhZ3JlZSBidXQgdGhlIHNob3J0ZXIgc3BlbGxpbmcgc3RpbGwgd2lucy5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL3ByZWZlci1udW1iZXItY29lcmNpb24nOiAnb2ZmJyxcbiAgICAgICAgLy8gYFByb21pc2Uud2l0aFJlc29sdmVyc2AgaXMgRVMyMDI0LiBTZWUgdGhlIEVTMjAyMiBmbG9vciBub3RlIGFib3ZlLlxuICAgICAgICAndW5pY29ybi9wcmVmZXItcHJvbWlzZS13aXRoLXJlc29sdmVycyc6ICdvZmYnLFxuICAgICAgICAvLyBgU2V0I3VuaW9uYCBhbmQgZnJpZW5kcyBhcmUgRVMyMDI1LiBTZWUgdGhlIEVTMjAyMiBmbG9vciBub3RlIGFib3ZlLlxuICAgICAgICAndW5pY29ybi9wcmVmZXItc2V0LW1ldGhvZHMnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIHJ1bGUgcmFua3Mgb3BlcmFuZHMgYnkgc3ludGFjdGljIHNoYXBlLCBub3QgY29zdCwgc28gZXZlcnkgcmVwb3J0IGhlcmUgc3dhcHMgb25lIHByb3BlcnR5IHJlYWRcbiAgICAgICAgICogYWhlYWQgb2YgYW5vdGhlciBhbmQgYnV5cyBub3RoaW5nLiBJdHMgb3duIG1lc3NhZ2UgY29uY2VkZXMgaXQgY2Fubm90IGNoZWNrIHRoZSBwYXJ0IHRoYXQgbWF0dGVycyAtLVxuICAgICAgICAgKiBcImFmdGVyIHZlcmlmeWluZyBzaG9ydC1jaXJjdWl0IGJlaGF2aW9yXCIgLS0gYW5kIG9uZSByZXBvcnQgc2l0cyBkaXJlY3RseSB1bmRlciBhIGNvbW1lbnQgcmVjb3JkaW5nXG4gICAgICAgICAqIHRoYXQgdGhlIG9wZXJhbmRzIGNoYW5nZSBpbnNpZGUgYSBgcmVuYW1lYCBldmVudCBoYW5kbGVyLCB3aGljaCBpcyB3aGVyZSBvcmRlciBzdG9wcyBiZWluZyBmcmVlLlxuICAgICAgICAgKiBUaGUgY3VycmVudCBvcmRlcnMgYWxzbyBjYXJyeSBpbnRlbnQ6IGEgbnVsbCBndWFyZCBiZWZvcmUgdGhlIHVzZSBpdCBndWFyZHMsIGFuZCB0aGUgY29uZGl0aW9uIGJlaW5nXG4gICAgICAgICAqIHJlcG9ydGVkIGJlZm9yZSB0aGUgc3RhdGUgaXQgY29udHJhZGljdHMuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9wcmVmZXItc2ltcGxlLWNvbmRpdGlvbi1maXJzdCc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBgVVJMLmNhblBhcnNlYCByZXF1aXJlcyBOb2RlIDE4LjE3LCB3ZWxsIGFib3ZlIHRoZSBOb2RlIDE2LjE2LjAgZmxvb3IgdGhhdCBzaGlwcGVkIHNvdXJjZSB0YXJnZXRzXG4gICAgICAgICAqIChzZWUgdGhlIE9ic2lkaWFuIHBsdWdpbiBsYXllcidzIGBtaW5pbXVtTm9kZVZlcnNpb25gKS4gVGhlIHJ1bGUgY2FuIHRoZXJlZm9yZSBuZXZlciBiZSBzYXRpc2ZpZWQgdGhlcmUsIHNvIGl0IGlzIG9mZiBhdCB0aGVcbiAgICAgICAgICogY29uZmlnIGxldmVsIHJhdGhlciB0aGFuIGFubm90YXRlZCBhdCBlYWNoIGNhbGwgc2l0ZS5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL3ByZWZlci11cmwtY2FuLXBhcnNlJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIEV2ZXJ5IGFycmF5IHJlcG9ydGVkIGhlcmUgaG9sZHMgc3RyaW5ncywgd2hlcmUgdGhlIGRlZmF1bHQgc29ydCBpcyBhbHJlYWR5IHdlbGwgZGVmaW5lZCBhbmQgY29ycmVjdC5cbiAgICAgICAgICogQWRkaW5nIHRoZSBjb21wYXJhdG9yIHRoZSBydWxlIGFza3MgZm9yIHdvdWxkIG1lYW4gY2hvb3NpbmcgYmV0d2VlbiBjb2RlLXVuaXQgYW5kIGxvY2FsZSBvcmRlcmluZyxcbiAgICAgICAgICogc28gZm9sbG93aW5nIGl0IHdvdWxkIENIQU5HRSB0aGUgc29ydCByYXRoZXIgdGhhbiBkb2N1bWVudCBpdC4gVGhlIHJ1bGUgZWFybnMgaXRzIHBsYWNlIG9uIG51bWVyaWNcbiAgICAgICAgICogYXJyYXlzOyBpdCBkb2VzIG5vdCBoYXZlIGFueSBoZXJlLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vcmVxdWlyZS1hcnJheS1zb3J0LWNvbXBhcmUnOiAnb2ZmJyxcbiAgICAgICAgLy8gVGhlIGNvZGViYXNlIGFscmVhZHkgc3BlbGxzIGVuY29kaW5ncyB0aGUgd2F5IHRoZSBFbmNvZGluZyBTdGFuZGFyZCBkb2VzIChgdXRmLThgKSwgd2hpY2ggaXMgYWxzbyB3aGF0IGBUZXh0RGVjb2RlcmAgcmVwb3J0cy4gS2VlcCB0aGUgcnVsZSBlbmZvcmNpbmcgY29uc2lzdGVuY3ksIGp1c3QgaW4gdGhlIGRpcmVjdGlvbiBhbHJlYWR5IGluIHVzZS5cbiAgICAgICAgJ3VuaWNvcm4vdGV4dC1lbmNvZGluZy1pZGVudGlmaWVyLWNhc2UnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB3aXRoRGFzaDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQnVpbGQvbGludC92ZXJzaW9uIHNjcmlwdHMgYXJlIENMSSBlbnRyeSBwb2ludHMsIHdoZXJlIGV4aXRpbmcgd2l0aCBhIHN0YXR1cyBjb2RlIGlzIHRoZSBpbnRlcmZhY2UuXG4gICAgICBmaWxlczogY29udGV4dC5zY3JpcHRGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICd1bmljb3JuL25vLXByb2Nlc3MtZXhpdCc6ICdvZmYnXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAvKlxuICAgICAgICogQSBtb2R1bGUtbGV2ZWwgZml4dHVyZSBhc3NpZ25lZCBmcm9tIGBiZWZvcmVFYWNoYCBpcyB0aGUgc3RhbmRhcmQgdGVzdCBzaGFwZTpcbiAgICAgICAqXG4gICAgICAgKiAgIGxldCBhcHA6IEFwcDtcbiAgICAgICAqICAgYmVmb3JlRWFjaCgoKSA9PiB7IGFwcCA9IEFwcC5jcmVhdGVDb25maWd1cmVkX18oKTsgfSk7XG4gICAgICAgKlxuICAgICAgICogVGhlIHJ1bGUgaXMgcmlnaHQgYWJvdXQgcHJvZHVjdGlvbiBjb2RlIC0tIG1vZHVsZSBzdGF0ZSByZWFzc2lnbmVkIGZyb20gaW5zaWRlIGEgZnVuY3Rpb24gaXMgd29ydGhcbiAgICAgICAqIGZsYWdnaW5nLCBhbmQgdGhlIGZpeCBpcyB0byBob2xkIGl0IGluIGEgYGNvbnN0YCBvYmplY3QgaW5zdGVhZC4gSW4gdGVzdHMgdGhhdCB3b3VsZCByZXBsYWNlIGV2ZXJ5XG4gICAgICAgKiBgYXBwYCB3aXRoIGBTVEFURS5hcHBgIGFuZCBtYWtlIGVhY2ggZmlsZSByZWFkIHdvcnNlIGZvciBubyBnYWluLCBzaW5jZSB0aGUgZml4dHVyZSBpcyByZXNldCBwZXIgdGVzdFxuICAgICAgICogYnkgZGVzaWduLiBTY29wZWQgb2ZmIGhlcmUgcmF0aGVyIHRoYW4gZGlzYWJsZWQgb3V0cmlnaHQsIHNvIHByb2R1Y3Rpb24gY29kZSBrZWVwcyB0aGUgY2hlY2suXG4gICAgICAgKi9cbiAgICAgIGZpbGVzOiBjb250ZXh0LnRlc3RGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgIC8qXG4gICAgICAgICAqIFR3byBzaGFwZXMgaGVyZSBjYW5ub3QgZm9sbG93IHRoZSBhZHZpY2UuIEEgaGVscGVyIGRlZmluZWQgaW5zaWRlIGFuIGBldmFsSW5PYnNpZGlhbmAgY2FsbGJhY2tcbiAgICAgICAgICogY2Fubm90IGJlIGhvaXN0ZWQgYXQgYWxsOiB0aGUgY2FsbGJhY2sgaXMgc2VyaWFsaXplZCB3aXRoIGB0b1N0cmluZygpYCBhbmQgcnVucyBpbnNpZGUgT2JzaWRpYW4sIHNvXG4gICAgICAgICAqIGFueXRoaW5nIGxlZnQgYmVoaW5kIGluIHRoZSBtb2R1bGUgc2NvcGUgaXMgc2ltcGx5IG5vdCB0aGVyZS4gQW5kIGEgcGVyLXN1aXRlIGZhY3RvcnlcbiAgICAgICAgICogKGBjcmVhdGVDb21wb25lbnRgLCBgY3JlYXRlTW9ja1BsdWdpbmApIGlzIGRlbGliZXJhdGVseSBsb2NhbCwga2VlcGluZyBlYWNoIHN1aXRlJ3MgZml4dHVyZSBuZXh0IHRvXG4gICAgICAgICAqIHRoZSBhc3NlcnRpb25zIHRoYXQgcmVhZCBpdC4gUHJvZHVjdGlvbiBjb2RlIGtlZXBzIHRoZSBjaGVjay5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL2NvbnNpc3RlbnQtZnVuY3Rpb24tc2NvcGluZyc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBBIHRlc3QgYmluZGluZyBpcyBuYW1lZCBhZnRlciB0aGUgdGhpbmcgaXQgY2FwdHVyZXMsIG5vdCBhZnRlciB3aGF0IGl0IGRvZXM6IGBjcmVhdGVFbGVtZW50U3B5YFxuICAgICAgICAgKiBob2xkcyB0aGUgc3B5IG9uIGBjcmVhdGVFbGVtZW50YCwgYW5kIGBjcmVhdGVQcm9ncmFtT3B0aW9uc2AgaG9sZHMgdGhlIG9wdGlvbnMgYGNyZWF0ZVByb2dyYW1gIHdhc1xuICAgICAgICAgKiBjYWxsZWQgd2l0aC4gVGhlIHZlcmIgYmVsb25ncyB0byB0aGUgbmFtZSBiZWluZyByZWZlcmVuY2VkLCBzbyB0aGUgcnVsZSByZWFkcyBpdCBhcyBhIGZ1bmN0aW9uIG5hbWVcbiAgICAgICAgICogdGhhdCBpcyBub3QgYSBmdW5jdGlvbi4gTGVmdCBvbiBmb3IgcHJvZHVjdGlvbiBjb2RlLCB3aGVyZSB0aGUgY29tcGxhaW50IGlzIHRoZSByaWdodCBvbmUuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9uby1ub24tZnVuY3Rpb24tdmVyYi1wcmVmaXgnOiAnb2ZmJyxcbiAgICAgICAgJ3VuaWNvcm4vbm8tdG9wLWxldmVsLWFzc2lnbm1lbnQtaW4tZnVuY3Rpb24nOiAnb2ZmJ1xuICAgICAgfVxuICAgIH1cbiAgXSk7XG59XG5cbi8qIGVzbGludC1lbmFibGUgbm8tbWFnaWMtbnVtYmVycyAtLSBXZSBkaXNhYmxlZCBtYWdpYyBudW1iZXJzIGJlY2F1c2UgdGhleSBhcmUgdXNlZCBhbGwgb3ZlciB0aGUgY29uZmlncy4gKi9cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnQkEscUJBQTRCO0FBQzVCLDRCQUFrQztBQUNsQyxnQkFBbUI7QUFDbkIsa0JBQXFCO0FBRXJCLDJCQUFzQjtBQUN0QiwrQ0FBK0M7QUFDL0Msb0NBQThEO0FBRTlELDZCQUF1QjtBQUN2Qix5Q0FBZ0Q7QUFFaEQsbUNBQW9CO0FBQ3BCLG9CQUdPO0FBQ1AscUJBQTJCO0FBRTNCLCtCQUFxQjtBQUVyQix3QkFBMEI7QUFDMUIsa0JBQThCO0FBQzlCLHlDQUE4QztBQUM5Qyw2QkFHTztBQUNQLDBCQUE2QztBQXFEdEMsTUFBTSxvQkFBb0I7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUlmLGtCQUE0QixDQUFDO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLN0IsY0FBd0IsQ0FBQztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS3pCLGNBQXdCLENBQUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTXpCLGdCQUEwQixDQUFDO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLM0IsWUFBc0IsQ0FBQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9oQyxXQUFxQjtBQUMxQixXQUFPLENBQUMsR0FBRyxLQUFLLFdBQVcsR0FBRyxLQUFLLGFBQWEsR0FBRyxLQUFLLGlCQUFpQixHQUFHLEtBQUssV0FBVztBQUFBLEVBQzlGO0FBQ0Y7QUFRTyxTQUFTLG1DQUF3RDtBQUN0RSxRQUFNLFVBQVUsSUFBSSxvQkFBb0I7QUFDeEMsVUFBUSxjQUFjLEtBQUssNEJBQVUsR0FBRztBQUN4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QUFBO0FBQUEsUUFROUMsZ0NBQWdDO0FBQUEsVUFDOUI7QUFBQSxVQUNBO0FBQUEsWUFDRSxnQkFBZ0I7QUFBQSxZQUNoQix3QkFBd0I7QUFBQSxVQUMxQjtBQUFBLFFBQ0Y7QUFBQTtBQUFBLFFBRUEsbUNBQW1DO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQVFuQyx3QkFBd0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBUXhCLHdDQUF3QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQU14QyxtQ0FBbUM7QUFBQTtBQUFBLFFBRW5DLG9DQUFvQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQU1wQyxnREFBZ0Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFTaEQsa0NBQWtDO0FBQUE7QUFBQSxRQUVsQyx5Q0FBeUM7QUFBQTtBQUFBLFFBRXpDLDhCQUE4QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQVM5Qix5Q0FBeUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFNekMsZ0NBQWdDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFPaEMsc0NBQXNDO0FBQUE7QUFBQSxRQUV0Qyx5Q0FBeUM7QUFBQSxVQUN2QztBQUFBLFVBQ0E7QUFBQSxZQUNFLFVBQVU7QUFBQSxVQUNaO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsSUFDQTtBQUFBO0FBQUEsTUFFRSxPQUFPLFFBQVE7QUFBQSxNQUNmLE9BQU87QUFBQSxRQUNMLDJCQUEyQjtBQUFBLE1BQzdCO0FBQUEsSUFDRjtBQUFBLElBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFZRSxPQUFPLFFBQVE7QUFBQSxNQUNmLE9BQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBUUwsdUNBQXVDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFPdkMsdUNBQXVDO0FBQUEsUUFDdkMsK0NBQStDO0FBQUEsTUFDakQ7QUFBQSxJQUNGO0FBQUEsRUFDRixDQUFDO0FBQ0g7IiwibmFtZXMiOlsiZXNsaW50IiwiY29tbWVudHNDb25maWdzIiwiZXNsaW50UGx1Z2luSW1wb3J0WEZsYXRDb25maWdzIiwibm9kZVBsdWdpbiIsInBlcmZlY3Rpb25pc3RDb25maWdzIiwic3R5bGlzdGljIiwidHNlc2xpbnQiLCJ1bmljb3JuIl19
|
|
@@ -27,6 +27,10 @@ __export(eslint_no_restricted_syntax_exports, {
|
|
|
27
27
|
});
|
|
28
28
|
module.exports = __toCommonJS(eslint_no_restricted_syntax_exports);
|
|
29
29
|
const noRestrictedSyntaxRuleEntries = [
|
|
30
|
+
{
|
|
31
|
+
message: "Destructure originalArguments (or originalArgs) into named parameters from the patched signature instead of indexing positionally.",
|
|
32
|
+
selector: 'Property[key.name="patchHandler"] MemberExpression[computed=true]:matches([property.value=/^[0-9]+$/], [property.raw=/^[0-9]/]):matches([object.type="Identifier"][object.name=/^original(Arguments|Args)$/], [object.type="MemberExpression"][object.property.name=/^original(Arguments|Args)$/], [object.type="MemberExpression"][object.property.value=/^original(Arguments|Args)$/])'
|
|
33
|
+
},
|
|
30
34
|
{
|
|
31
35
|
message: "Do not use definite assignment assertions (!). Initialize the field or make it optional.",
|
|
32
36
|
selector: "PropertyDefinition[definite=true]"
|
|
@@ -72,4 +76,4 @@ const noRestrictedSyntaxRuleEntries = [
|
|
|
72
76
|
0 && (module.exports = {
|
|
73
77
|
noRestrictedSyntaxRuleEntries
|
|
74
78
|
});
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LW5vLXJlc3RyaWN0ZWQtc3ludGF4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogYG5vLXJlc3RyaWN0ZWQtc3ludGF4YCBydWxlIGVudHJpZXMgZm9yIHRoZSBzaGFyZWQgRVNMaW50IGNvbmZpZy5cbiAqXG4gKiBFeHBvcnRlZCBhcyBhIHN0YW5kYWxvbmUgY29uc3RhbnQgc28gZWFjaCBzZWxlY3RvciBjYW4gYmUgdW5pdC10ZXN0ZWRcbiAqIGluZGVwZW5kZW50bHkgb2YgdGhlIGxhcmdlciBkZWNsYXJhdGl2ZSBjb25maWcuXG4gKi9cblxuLyoqXG4gKiBBIHNpbmdsZSBgbm8tcmVzdHJpY3RlZC1zeW50YXhgIGVudHJ5IHBhaXJpbmcgYW4gRVNMaW50IEFTVCBzZWxlY3RvciB3aXRoIGFcbiAqIGh1bWFuLXJlYWRhYmxlIG1lc3NhZ2UgZXhwbGFpbmluZyB3aHkgdGhlIHBhdHRlcm4gaXMgYmFubmVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vUmVzdHJpY3RlZFN5bnRheFJ1bGVFbnRyeSB7XG4gIC8qKlxuICAgKiBIdW1hbi1yZWFkYWJsZSBtZXNzYWdlIHNob3duIHdoZW4gdGhlIHNlbGVjdG9yIG1hdGNoZXMuXG4gICAqL1xuICByZWFkb25seSBtZXNzYWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVTTGludCBBU1Qgc2VsZWN0b3IgaWRlbnRpZnlpbmcgdGhlIGJhbm5lZCBwYXR0ZXJuLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VsZWN0b3I6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXN0cmljdGVkLXN5bnRheCBlbnRyaWVzIGVuZm9yY2VkIGJ5IHRoZSBzaGFyZWQgRVNMaW50IGNvbmZpZy5cbiAqL1xuZXhwb3J0IGNvbnN0IG5vUmVzdHJpY3RlZFN5bnRheFJ1bGVFbnRyaWVzOiByZWFkb25seSBOb1Jlc3RyaWN0ZWRTeW50YXhSdWxlRW50cnlbXSA9IFtcbiAge1xuICAgIG1lc3NhZ2U6ICdEZXN0cnVjdHVyZSBvcmlnaW5hbEFyZ3VtZW50cyAob3Igb3JpZ2luYWxBcmdzKSBpbnRvIG5hbWVkIHBhcmFtZXRlcnMgZnJvbSB0aGUgcGF0Y2hlZCBzaWduYXR1cmUgaW5zdGVhZCBvZiBpbmRleGluZyBwb3NpdGlvbmFsbHkuJyxcbiAgICBzZWxlY3RvcjogJ1Byb3BlcnR5W2tleS5uYW1lPVwicGF0Y2hIYW5kbGVyXCJdIE1lbWJlckV4cHJlc3Npb25bY29tcHV0ZWQ9dHJ1ZV06bWF0Y2hlcyhbcHJvcGVydHkudmFsdWU9L15bMC05XSskL10sIFtwcm9wZXJ0eS5yYXc9L15bMC05XS9dKTptYXRjaGVzKFtvYmplY3QudHlwZT1cIklkZW50aWZpZXJcIl1bb2JqZWN0Lm5hbWU9L15vcmlnaW5hbChBcmd1bWVudHN8QXJncykkL10sIFtvYmplY3QudHlwZT1cIk1lbWJlckV4cHJlc3Npb25cIl1bb2JqZWN0LnByb3BlcnR5Lm5hbWU9L15vcmlnaW5hbChBcmd1bWVudHN8QXJncykkL10sIFtvYmplY3QudHlwZT1cIk1lbWJlckV4cHJlc3Npb25cIl1bb2JqZWN0LnByb3BlcnR5LnZhbHVlPS9eb3JpZ2luYWwoQXJndW1lbnRzfEFyZ3MpJC9dKSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGRlZmluaXRlIGFzc2lnbm1lbnQgYXNzZXJ0aW9ucyAoISkuIEluaXRpYWxpemUgdGhlIGZpZWxkIG9yIG1ha2UgaXQgb3B0aW9uYWwuJyxcbiAgICBzZWxlY3RvcjogJ1Byb3BlcnR5RGVmaW5pdGlvbltkZWZpbml0ZT10cnVlXSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGFub255bW91cyBpbmxpbmUgb2JqZWN0IHR5cGVzLiBEZWZpbmUgYSBuYW1lZCBpbnRlcmZhY2Ugb3IgYHR5cGVgIGFsaWFzIGluc3RlYWQuJyxcbiAgICBzZWxlY3RvcjogJ1RTVHlwZUxpdGVyYWw6bm90KFRTVHlwZUFsaWFzRGVjbGFyYXRpb24gPiBUU1R5cGVMaXRlcmFsKSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGFub255bW91cyBpbmxpbmUgbWFwcGVkIHR5cGVzLiBEZWZpbmUgYSBuYW1lZCBgdHlwZWAgYWxpYXMgaW5zdGVhZC4nLFxuICAgIHNlbGVjdG9yOiAnVFNNYXBwZWRUeXBlOm5vdChUU1R5cGVBbGlhc0RlY2xhcmF0aW9uID4gVFNNYXBwZWRUeXBlKSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGRvdWJsZSB0eXBlIGFzc2VydGlvbnMgKGFzIFggYXMgWSkuJyxcbiAgICBzZWxlY3RvcjogJ1RTQXNFeHByZXNzaW9uID4gVFNBc0V4cHJlc3Npb24nXG4gIH0sXG4gIHtcbiAgICBtZXNzYWdlOiAnRG8gbm90IHVzZSBgYXMgbmV2ZXJgLiBJdCBzaWxlbnRseSBzYXRpc2ZpZXMgdHlwZSBjb25zdHJhaW50cyBieSBjbGFpbWluZyBcInRoaXMgdmFsdWUgaXMgb2YgZXZlcnkgdHlwZVwiIFx1MjAxNCBhbG1vc3QgYWx3YXlzIG1hc2tzIGEgcmVhbCB0eXBlIG1pc21hdGNoLiBGaXggdGhlIHVuZGVybHlpbmcgdHlwZXMgaW5zdGVhZC4nLFxuICAgIHNlbGVjdG9yOiAnVFNBc0V4cHJlc3Npb24gPiBUU05ldmVyS2V5d29yZCdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGA8bmV2ZXI+YCB0eXBlIGFzc2VydGlvbnMuIFNhbWUgcmVhc29uaW5nIGFzIGBhcyBuZXZlcmAuJyxcbiAgICBzZWxlY3RvcjogJ1RTVHlwZUFzc2VydGlvbiA+IFRTTmV2ZXJLZXl3b3JkJ1xuICB9LFxuICB7XG4gICAgbWVzc2FnZTogJ0RvIG5vdCB1c2UgXyBwcmVmaXggb24gbWV0aG9kcyBvciBmdW5jdGlvbnMuIFRoZSBfIHByZWZpeCBpcyBmb3IgdW51c2VkIHBhcmFtZXRlcnMgb25seS4nLFxuICAgIHNlbGVjdG9yOiAnTWV0aG9kRGVmaW5pdGlvbltrZXkubmFtZT0vXl8vXTpub3QoW292ZXJyaWRlPXRydWVdKSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIF8gcHJlZml4IG9uIG1ldGhvZHMgb3IgZnVuY3Rpb25zLiBUaGUgXyBwcmVmaXggaXMgZm9yIHVudXNlZCBwYXJhbWV0ZXJzIG9ubHkuJyxcbiAgICBzZWxlY3RvcjogJ0Z1bmN0aW9uRGVjbGFyYXRpb25baWQubmFtZT0vXl8vXSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgcmVuYW1lIGltcG9ydHMgd2l0aCBcIk1vY2tcIiBpbiB0aGUgYWxpYXMuIE1vY2sgY2xhc3NlcyBhcmUgdGhlIGNhbm9uaWNhbCB0eXBlcyBcdTIwMTQgdXNlIHRoZSBvcmlnaW5hbCBuYW1lLicsXG4gICAgc2VsZWN0b3I6ICdJbXBvcnRTcGVjaWZpZXJbbG9jYWwubmFtZT0vTW9jay9dOm5vdChbaW1wb3J0ZWQubmFtZT0vTW9jay9dKSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGBkZWNsYXJlYCBvbiBjbGFzcyBwcm9wZXJ0aWVzLiBJbml0aWFsaXplIHRoZSBwcm9wZXJ0eSBvciB1c2UgYSByZWd1bGFyIHR5cGUgYW5ub3RhdGlvbi4nLFxuICAgIHNlbGVjdG9yOiAnUHJvcGVydHlEZWZpbml0aW9uW2RlY2xhcmU9dHJ1ZV0nXG4gIH1cbl07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE0Qk8sTUFBTSxnQ0FBd0U7QUFBQSxFQUNuRjtBQUFBLElBQ0UsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLEVBQ1o7QUFBQSxFQUNBO0FBQUEsSUFDRSxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsRUFDWjtBQUFBLEVBQ0E7QUFBQSxJQUNFLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxFQUNaO0FBQUEsRUFDQTtBQUFBLElBQ0UsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLEVBQ1o7QUFBQSxFQUNBO0FBQUEsSUFDRSxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsRUFDWjtBQUFBLEVBQ0E7QUFBQSxJQUNFLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxFQUNaO0FBQUEsRUFDQTtBQUFBLElBQ0UsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLEVBQ1o7QUFBQSxFQUNBO0FBQUEsSUFDRSxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsRUFDWjtBQUFBLEVBQ0E7QUFBQSxJQUNFLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxFQUNaO0FBQUEsRUFDQTtBQUFBLElBQ0UsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLEVBQ1o7QUFBQSxFQUNBO0FBQUEsSUFDRSxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsRUFDWjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|