projen 0.93.2 → 0.94.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/.jsii +2884 -10861
- package/lib/awscdk/auto-discover.js +5 -5
- package/lib/awscdk/awscdk-app-java.js +1 -1
- package/lib/awscdk/awscdk-app-py.js +1 -1
- package/lib/awscdk/awscdk-app-ts.js +1 -1
- package/lib/awscdk/awscdk-construct.js +2 -2
- package/lib/awscdk/awscdk-deps-java.js +1 -1
- package/lib/awscdk/awscdk-deps-js.js +1 -1
- package/lib/awscdk/awscdk-deps-py.js +1 -1
- package/lib/awscdk/awscdk-deps.js +1 -1
- package/lib/awscdk/cdk-config.js +1 -1
- package/lib/awscdk/cdk-tasks.js +1 -1
- package/lib/awscdk/integration-test.js +1 -1
- package/lib/awscdk/lambda-extension.js +1 -1
- package/lib/awscdk/lambda-function.js +2 -2
- package/lib/build/build-workflow.js +1 -1
- package/lib/cdk/auto-discover-base.js +2 -2
- package/lib/cdk/construct-lib.js +1 -1
- package/lib/cdk/integration-test-base.js +1 -1
- package/lib/cdk/jsii-docgen.js +1 -1
- package/lib/cdk/jsii-project.js +1 -1
- package/lib/cdk8s/auto-discover.js +2 -2
- package/lib/cdk8s/cdk8s-app-py.js +1 -1
- package/lib/cdk8s/cdk8s-app-ts.js +1 -1
- package/lib/cdk8s/cdk8s-construct.js +1 -1
- package/lib/cdk8s/cdk8s-deps-py.js +1 -1
- package/lib/cdk8s/cdk8s-deps.js +1 -1
- package/lib/cdk8s/integration-test.js +1 -1
- package/lib/cdktf/cdktf-construct.js +1 -1
- package/lib/circleci/circleci.js +1 -1
- package/lib/component.js +1 -1
- package/lib/dependencies.js +1 -1
- package/lib/dev-env.js +1 -1
- package/lib/docker-compose/docker-compose-service.js +1 -1
- package/lib/docker-compose/docker-compose.js +1 -1
- package/lib/file.js +1 -1
- package/lib/gitattributes.js +1 -1
- package/lib/github/actions-provider.js +1 -1
- package/lib/github/auto-approve.js +1 -1
- package/lib/github/auto-merge.js +1 -1
- package/lib/github/auto-queue.js +1 -1
- package/lib/github/dependabot.js +1 -1
- package/lib/github/github-credentials.js +1 -1
- package/lib/github/github-project.js +1 -1
- package/lib/github/github.js +1 -1
- package/lib/github/merge-queue.js +1 -1
- package/lib/github/mergify.js +1 -1
- package/lib/github/pr-template.js +1 -1
- package/lib/github/pull-request-backport.js +3 -2
- package/lib/github/pull-request-lint.js +1 -1
- package/lib/github/stale.js +1 -1
- package/lib/github/task-workflow-job.js +1 -1
- package/lib/github/task-workflow.js +1 -1
- package/lib/github/workflow-actions.js +3 -2
- package/lib/github/workflow-jobs.js +1 -1
- package/lib/github/workflow-steps.js +3 -2
- package/lib/github/workflows.js +1 -1
- package/lib/gitlab/configuration.js +1 -1
- package/lib/gitlab/gitlab-configuration.js +1 -1
- package/lib/gitlab/nested-configuration.js +1 -1
- package/lib/gitpod.js +1 -1
- package/lib/ignore-file.js +1 -1
- package/lib/ini.js +1 -1
- package/lib/java/java-project.js +1 -1
- package/lib/java/junit.js +1 -1
- package/lib/java/maven-compile.js +1 -1
- package/lib/java/maven-packaging.js +1 -1
- package/lib/java/maven-sample.js +1 -1
- package/lib/java/pom.js +2 -2
- package/lib/java/projenrc.js +1 -1
- package/lib/javascript/biome/biome-config.d.ts +1273 -2062
- package/lib/javascript/biome/biome-config.js +949 -7
- package/lib/javascript/biome/biome.d.ts +17 -17
- package/lib/javascript/biome/biome.js +57 -43
- package/lib/javascript/bundler.js +1 -1
- package/lib/javascript/eslint.js +1 -1
- package/lib/javascript/jest.js +4 -4
- package/lib/javascript/license-checker.js +1 -1
- package/lib/javascript/node-package.js +1 -1
- package/lib/javascript/node-project.js +3 -3
- package/lib/javascript/npm-config.js +1 -1
- package/lib/javascript/prettier.js +1 -1
- package/lib/javascript/projenrc.js +3 -3
- package/lib/javascript/typescript-config.js +2 -2
- package/lib/javascript/upgrade-dependencies.js +2 -2
- package/lib/javascript/yarnrc.js +1 -1
- package/lib/json-patch.js +1 -1
- package/lib/json.js +1 -1
- package/lib/license.js +1 -1
- package/lib/logger.js +1 -1
- package/lib/makefile.js +1 -1
- package/lib/object-file.js +1 -1
- package/lib/project-build.js +1 -1
- package/lib/project-tree.js +1 -1
- package/lib/project.js +1 -1
- package/lib/projects.js +1 -1
- package/lib/projenrc-json.js +2 -2
- package/lib/projenrc.js +1 -1
- package/lib/python/pip.js +1 -1
- package/lib/python/poetry.js +2 -2
- package/lib/python/projenrc.js +1 -1
- package/lib/python/pytest-sample.js +1 -1
- package/lib/python/pytest.js +1 -1
- package/lib/python/python-project.js +1 -1
- package/lib/python/python-sample.js +1 -1
- package/lib/python/requirements-file.js +1 -1
- package/lib/python/setuppy.js +1 -1
- package/lib/python/setuptools.js +1 -1
- package/lib/python/venv.js +1 -1
- package/lib/readme.js +1 -1
- package/lib/release/publisher.js +3 -2
- package/lib/release/release-trigger.js +1 -1
- package/lib/release/release.js +3 -2
- package/lib/renovatebot.js +1 -1
- package/lib/sample-file.js +2 -2
- package/lib/semver.js +1 -1
- package/lib/source-code.js +1 -1
- package/lib/task-runtime.js +1 -1
- package/lib/task.js +1 -1
- package/lib/tasks.js +1 -1
- package/lib/testing.js +1 -1
- package/lib/textfile.js +1 -1
- package/lib/toml.js +1 -1
- package/lib/typescript/projenrc-ts.js +1 -1
- package/lib/typescript/projenrc.js +4 -4
- package/lib/typescript/typescript-typedoc.js +1 -1
- package/lib/typescript/typescript.d.ts +1 -1
- package/lib/typescript/typescript.js +18 -13
- package/lib/version.js +2 -2
- package/lib/vscode/devcontainer.js +1 -1
- package/lib/vscode/extensions.js +1 -1
- package/lib/vscode/launch-config.js +1 -1
- package/lib/vscode/settings.js +1 -1
- package/lib/vscode/vscode.js +1 -1
- package/lib/web/next.js +3 -3
- package/lib/web/postcss.js +1 -1
- package/lib/web/react.js +4 -4
- package/lib/web/tailwind.js +1 -1
- package/lib/xmlfile.js +1 -1
- package/lib/yaml.js +1 -1
- package/package.json +3 -4
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/LICENSE +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/README.md +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/index.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/lib/action/append/constant.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/lib/action/append.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/lib/action/count.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/lib/action/help.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/lib/action/store/constant.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/lib/action/store/false.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/lib/action/store/true.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/lib/action/store.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/lib/action/subparsers.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/lib/action/version.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/lib/action.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/lib/action_container.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/lib/argparse.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/lib/argument/error.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/lib/argument/exclusive.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/lib/argument/group.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/lib/argument_parser.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/lib/const.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/lib/help/added_formatters.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/lib/help/formatter.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/lib/namespace.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/lib/utils.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/argparse → argparse}/package.json +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/LICENSE +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/README.md +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/bin/js-yaml.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/dist/js-yaml.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/dist/js-yaml.min.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/index.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/common.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/dumper.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/exception.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/loader.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/mark.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/schema/core.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/schema/default_full.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/schema/default_safe.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/schema/failsafe.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/schema/json.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/schema.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/type/binary.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/type/bool.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/type/float.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/type/int.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/type/js/function.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/type/js/regexp.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/type/js/undefined.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/type/map.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/type/merge.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/type/null.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/type/omap.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/type/pairs.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/type/seq.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/type/set.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/type/str.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/type/timestamp.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml/type.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/lib/js-yaml.js +0 -0
- /package/node_modules/{xmlbuilder2/node_modules/js-yaml → js-yaml}/package.json +0 -0
|
@@ -1,10 +1,952 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TrailingCommas2 = exports.TrailingCommas = exports.Semicolons = exports.QuoteProperties = exports.ArrowParentheses = exports.WhitespaceSensitivity = exports.SelfCloseVoidElements = exports.QuoteStyle = exports.VcsClientKind = exports.RuleDomainValue = exports.JsxRuntime = exports.LineEnding = exports.IndentStyle = exports.Expand = exports.AttributePosition = void 0;
|
|
4
|
+
exports.toJson_BiomeConfiguration = toJson_BiomeConfiguration;
|
|
5
|
+
exports.toJson_AssistConfiguration = toJson_AssistConfiguration;
|
|
6
|
+
exports.toJson_CssConfiguration = toJson_CssConfiguration;
|
|
7
|
+
exports.toJson_FilesConfiguration = toJson_FilesConfiguration;
|
|
8
|
+
exports.toJson_FormatterConfiguration = toJson_FormatterConfiguration;
|
|
9
|
+
exports.toJson_GraphqlConfiguration = toJson_GraphqlConfiguration;
|
|
10
|
+
exports.toJson_GritConfiguration = toJson_GritConfiguration;
|
|
11
|
+
exports.toJson_HtmlConfiguration = toJson_HtmlConfiguration;
|
|
12
|
+
exports.toJson_JsConfiguration = toJson_JsConfiguration;
|
|
13
|
+
exports.toJson_JsonConfiguration = toJson_JsonConfiguration;
|
|
14
|
+
exports.toJson_LinterConfiguration = toJson_LinterConfiguration;
|
|
15
|
+
exports.toJson_OverridePattern = toJson_OverridePattern;
|
|
16
|
+
exports.toJson_VcsConfiguration = toJson_VcsConfiguration;
|
|
17
|
+
exports.toJson_Actions = toJson_Actions;
|
|
18
|
+
exports.toJson_CssAssistConfiguration = toJson_CssAssistConfiguration;
|
|
19
|
+
exports.toJson_CssFormatterConfiguration = toJson_CssFormatterConfiguration;
|
|
20
|
+
exports.toJson_CssLinterConfiguration = toJson_CssLinterConfiguration;
|
|
21
|
+
exports.toJson_CssParserConfiguration = toJson_CssParserConfiguration;
|
|
22
|
+
exports.toJson_GraphqlAssistConfiguration = toJson_GraphqlAssistConfiguration;
|
|
23
|
+
exports.toJson_GraphqlFormatterConfiguration = toJson_GraphqlFormatterConfiguration;
|
|
24
|
+
exports.toJson_GraphqlLinterConfiguration = toJson_GraphqlLinterConfiguration;
|
|
25
|
+
exports.toJson_GritAssistConfiguration = toJson_GritAssistConfiguration;
|
|
26
|
+
exports.toJson_GritFormatterConfiguration = toJson_GritFormatterConfiguration;
|
|
27
|
+
exports.toJson_GritLinterConfiguration = toJson_GritLinterConfiguration;
|
|
28
|
+
exports.toJson_HtmlFormatterConfiguration = toJson_HtmlFormatterConfiguration;
|
|
29
|
+
exports.toJson_JsAssistConfiguration = toJson_JsAssistConfiguration;
|
|
30
|
+
exports.toJson_JsFormatterConfiguration = toJson_JsFormatterConfiguration;
|
|
31
|
+
exports.toJson_JsLinterConfiguration = toJson_JsLinterConfiguration;
|
|
32
|
+
exports.toJson_JsParserConfiguration = toJson_JsParserConfiguration;
|
|
33
|
+
exports.toJson_JsonAssistConfiguration = toJson_JsonAssistConfiguration;
|
|
34
|
+
exports.toJson_JsonFormatterConfiguration = toJson_JsonFormatterConfiguration;
|
|
35
|
+
exports.toJson_JsonLinterConfiguration = toJson_JsonLinterConfiguration;
|
|
36
|
+
exports.toJson_JsonParserConfiguration = toJson_JsonParserConfiguration;
|
|
37
|
+
exports.toJson_Rules = toJson_Rules;
|
|
38
|
+
exports.toJson_OverrideAssistConfiguration = toJson_OverrideAssistConfiguration;
|
|
39
|
+
exports.toJson_OverrideFilesConfiguration = toJson_OverrideFilesConfiguration;
|
|
40
|
+
exports.toJson_OverrideFormatterConfiguration = toJson_OverrideFormatterConfiguration;
|
|
41
|
+
exports.toJson_OverrideLinterConfiguration = toJson_OverrideLinterConfiguration;
|
|
42
|
+
exports.toJson_Source = toJson_Source;
|
|
4
43
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* and run json-schema-to-typescript to regenerate this file.
|
|
44
|
+
* Converts an object of type 'BiomeConfiguration' to JSON representation.
|
|
45
|
+
* @internal
|
|
8
46
|
*/
|
|
9
|
-
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlvbWUtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2phdmFzY3JpcHQvYmlvbWUvYmlvbWUtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxpQ0FBaUM7QUFDakMsb0JBQW9CO0FBQ3BCOzs7O0dBSUciLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUeXBlcyBmb3IgQmlvbWUgdmVyc2lvbjogMS45LjRcbi8qIGVzbGludC1kaXNhYmxlICovXG4vKipcbiAqIFRoaXMgZmlsZSB3YXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkganNvbi1zY2hlbWEtdG8tdHlwZXNjcmlwdC5cbiAqIERPIE5PVCBNT0RJRlkgSVQgQlkgSEFORC4gSW5zdGVhZCwgbW9kaWZ5IHRoZSBzb3VyY2UgSlNPTlNjaGVtYSBmaWxlLFxuICogYW5kIHJ1biBqc29uLXNjaGVtYS10by10eXBlc2NyaXB0IHRvIHJlZ2VuZXJhdGUgdGhpcyBmaWxlLlxuICovXG5cbmV4cG9ydCB0eXBlIElSdWxlQXNzaXN0Q29uZmlndXJhdGlvbiA9IFwib25cIiB8IFwib2ZmXCI7XG5leHBvcnQgdHlwZSBJU3RyaW5nU2V0ID0gc3RyaW5nW107XG5leHBvcnQgdHlwZSBJSW5kZW50U3R5bGUgPSBcInRhYlwiIHwgXCJzcGFjZVwiO1xuZXhwb3J0IHR5cGUgSUluZGVudFdpZHRoID0gbnVtYmVyO1xuZXhwb3J0IHR5cGUgSUxpbmVFbmRpbmcgPSBcImxmXCIgfCBcImNybGZcIiB8IFwiY3JcIjtcbi8qKlxuICogVmFsaWRhdGVkIHZhbHVlIGZvciB0aGUgYGxpbmVfd2lkdGhgIGZvcm1hdHRlciBvcHRpb25zXG4gKlxuICogVGhlIGFsbG93ZWQgcmFuZ2Ugb2YgdmFsdWVzIGlzIDEuLj0zMjBcbiAqL1xuZXhwb3J0IHR5cGUgSUxpbmVXaWR0aCA9IG51bWJlcjtcbmV4cG9ydCB0eXBlIElRdW90ZVN0eWxlID0gXCJkb3VibGVcIiB8IFwic2luZ2xlXCI7XG5leHBvcnQgdHlwZSBJQXR0cmlidXRlUG9zaXRpb24gPSBcImF1dG9cIiB8IFwibXVsdGlsaW5lXCI7XG5leHBvcnQgdHlwZSBJQnJhY2tldFNwYWNpbmcgPSBib29sZWFuO1xuZXhwb3J0IHR5cGUgSUFycm93UGFyZW50aGVzZXMgPSBcImFsd2F5c1wiIHwgXCJhc05lZWRlZFwiO1xuZXhwb3J0IHR5cGUgSVF1b3RlUHJvcGVydGllcyA9IFwiYXNOZWVkZWRcIiB8IFwicHJlc2VydmVcIjtcbmV4cG9ydCB0eXBlIElTZW1pY29sb25zID0gXCJhbHdheXNcIiB8IFwiYXNOZWVkZWRcIjtcbi8qKlxuICogUHJpbnQgdHJhaWxpbmcgY29tbWFzIHdoZXJldmVyIHBvc3NpYmxlIGluIG11bHRpLWxpbmUgY29tbWEtc2VwYXJhdGVkIHN5bnRhY3RpYyBzdHJ1Y3R1cmVzLlxuICovXG5leHBvcnQgdHlwZSBJVHJhaWxpbmdDb21tYXMgPSBcImFsbFwiIHwgXCJlczVcIiB8IFwibm9uZVwiO1xuLyoqXG4gKiBJbmRpY2F0ZXMgdGhlIHR5cGUgb2YgcnVudGltZSBvciB0cmFuc2Zvcm1hdGlvbiB1c2VkIGZvciBpbnRlcnByZXRpbmcgSlNYLlxuICovXG5leHBvcnQgdHlwZSBJSnN4UnVudGltZSA9IFwidHJhbnNwYXJlbnRcIiB8IFwicmVhY3RDbGFzc2ljXCI7XG5leHBvcnQgdHlwZSBJVHJhaWxpbmdDb21tYXMyID0gXCJub25lXCIgfCBcImFsbFwiO1xuZXhwb3J0IHR5cGUgSVJ1bGVGaXhDb25maWd1cmF0aW9uID0gSVJ1bGVQbGFpbkNvbmZpZ3VyYXRpb24gfCBJUnVsZVdpdGhGaXhOb09wdGlvbnM7XG5leHBvcnQgdHlwZSBJUnVsZVBsYWluQ29uZmlndXJhdGlvbiA9IFwid2FyblwiIHwgXCJlcnJvclwiIHwgXCJpbmZvXCIgfCBcIm9mZlwiO1xuLyoqXG4gKiBVc2VkIHRvIGlkZW50aWZ5IHRoZSBraW5kIG9mIGNvZGUgYWN0aW9uIGVtaXR0ZWQgYnkgYSBydWxlXG4gKi9cbmV4cG9ydCB0eXBlIElGaXhLaW5kID0gXCJub25lXCIgfCBcInNhZmVcIiB8IFwidW5zYWZlXCI7XG5leHBvcnQgdHlwZSBJQWxsb3dEb21haW5Db25maWd1cmF0aW9uID0gSVJ1bGVQbGFpbkNvbmZpZ3VyYXRpb24gfCBJUnVsZVdpdGhBbGxvd0RvbWFpbk9wdGlvbnM7XG5leHBvcnQgdHlwZSBJTm9MYWJlbFdpdGhvdXRDb250cm9sQ29uZmlndXJhdGlvbiA9IElSdWxlUGxhaW5Db25maWd1cmF0aW9uIHwgSVJ1bGVXaXRoTm9MYWJlbFdpdGhvdXRDb250cm9sT3B0aW9ucztcbmV4cG9ydCB0eXBlIElSdWxlQ29uZmlndXJhdGlvbiA9IElSdWxlUGxhaW5Db25maWd1cmF0aW9uIHwgSVJ1bGVXaXRoTm9PcHRpb25zO1xuZXhwb3J0IHR5cGUgSVZhbGlkQXJpYVJvbGVDb25maWd1cmF0aW9uID0gSVJ1bGVQbGFpbkNvbmZpZ3VyYXRpb24gfCBJUnVsZVdpdGhWYWxpZEFyaWFSb2xlT3B0aW9ucztcbmV4cG9ydCB0eXBlIElDb21wbGV4aXR5Q29uZmlndXJhdGlvbiA9IElSdWxlUGxhaW5Db25maWd1cmF0aW9uIHwgSVJ1bGVXaXRoQ29tcGxleGl0eU9wdGlvbnM7XG5leHBvcnQgdHlwZSBJVXNlRXhoYXVzdGl2ZURlcGVuZGVuY2llc0NvbmZpZ3VyYXRpb24gPVxuICB8IElSdWxlUGxhaW5Db25maWd1cmF0aW9uXG4gIHwgSVJ1bGVXaXRoVXNlRXhoYXVzdGl2ZURlcGVuZGVuY2llc09wdGlvbnM7XG5leHBvcnQgdHlwZSBJU3RhYmxlSG9va1Jlc3VsdCA9IGJvb2xlYW4gfCBudW1iZXJbXTtcbmV4cG9ydCB0eXBlIElEZXByZWNhdGVkSG9va3NDb25maWd1cmF0aW9uID0gSVJ1bGVQbGFpbkNvbmZpZ3VyYXRpb24gfCBJUnVsZVdpdGhEZXByZWNhdGVkSG9va3NPcHRpb25zO1xuZXhwb3J0IHR5cGUgSVVzZUltcG9ydEV4dGVuc2lvbnNDb25maWd1cmF0aW9uID0gSVJ1bGVQbGFpbkNvbmZpZ3VyYXRpb24gfCBJUnVsZVdpdGhVc2VJbXBvcnRFeHRlbnNpb25zT3B0aW9ucztcbmV4cG9ydCB0eXBlIElSZXN0cmljdGVkSW1wb3J0c0NvbmZpZ3VyYXRpb24gPSBJUnVsZVBsYWluQ29uZmlndXJhdGlvbiB8IElSdWxlV2l0aFJlc3RyaWN0ZWRJbXBvcnRzT3B0aW9ucztcbmV4cG9ydCB0eXBlIElOb1Jlc3RyaWN0ZWRUeXBlc0NvbmZpZ3VyYXRpb24gPSBJUnVsZVBsYWluQ29uZmlndXJhdGlvbiB8IElSdWxlV2l0aE5vUmVzdHJpY3RlZFR5cGVzT3B0aW9ucztcbmV4cG9ydCB0eXBlIElDdXN0b21SZXN0cmljdGVkVHlwZSA9IHN0cmluZyB8IElDdXN0b21SZXN0cmljdGVkVHlwZU9wdGlvbnM7XG5leHBvcnQgdHlwZSBJTm9TZWNyZXRzQ29uZmlndXJhdGlvbiA9IElSdWxlUGxhaW5Db25maWd1cmF0aW9uIHwgSVJ1bGVXaXRoTm9TZWNyZXRzT3B0aW9ucztcbmV4cG9ydCB0eXBlIElVc2VDb21wb25lbnRFeHBvcnRPbmx5TW9kdWxlc0NvbmZpZ3VyYXRpb24gPVxuICB8IElSdWxlUGxhaW5Db25maWd1cmF0aW9uXG4gIHwgSVJ1bGVXaXRoVXNlQ29tcG9uZW50RXhwb3J0T25seU1vZHVsZXNPcHRpb25zO1xuZXhwb3J0IHR5cGUgSUNvbnNpc3RlbnRNZW1iZXJBY2Nlc3NpYmlsaXR5Q29uZmlndXJhdGlvbiA9XG4gIHwgSVJ1bGVQbGFpbkNvbmZpZ3VyYXRpb25cbiAgfCBJUnVsZVdpdGhDb25zaXN0ZW50TWVtYmVyQWNjZXNzaWJpbGl0eU9wdGlvbnM7XG5leHBvcnQgdHlwZSBJQWNjZXNzaWJpbGl0eSA9IFwibm9QdWJsaWNcIiB8IFwiZXhwbGljaXRcIiB8IFwibm9uZVwiO1xuZXhwb3J0IHR5cGUgSVV0aWxpdHlDbGFzc1NvcnRpbmdDb25maWd1cmF0aW9uID0gSVJ1bGVQbGFpbkNvbmZpZ3VyYXRpb24gfCBJUnVsZVdpdGhVdGlsaXR5Q2xhc3NTb3J0aW5nT3B0aW9ucztcbmV4cG9ydCB0eXBlIElVc2VWYWxpZEF1dG9jb21wbGV0ZUNvbmZpZ3VyYXRpb24gPSBJUnVsZVBsYWluQ29uZmlndXJhdGlvbiB8IElSdWxlV2l0aFVzZVZhbGlkQXV0b2NvbXBsZXRlT3B0aW9ucztcbmV4cG9ydCB0eXBlIElSZXN0cmljdGVkR2xvYmFsc0NvbmZpZ3VyYXRpb24gPSBJUnVsZVBsYWluQ29uZmlndXJhdGlvbiB8IElSdWxlV2l0aFJlc3RyaWN0ZWRHbG9iYWxzT3B0aW9ucztcbmV4cG9ydCB0eXBlIElDb25zaXN0ZW50QXJyYXlUeXBlQ29uZmlndXJhdGlvbiA9IElSdWxlUGxhaW5Db25maWd1cmF0aW9uIHwgSVJ1bGVXaXRoQ29uc2lzdGVudEFycmF5VHlwZU9wdGlvbnM7XG5leHBvcnQgdHlwZSBJQ29uc2lzdGVudEFycmF5VHlwZSA9IFwic2hvcnRoYW5kXCIgfCBcImdlbmVyaWNcIjtcbmV4cG9ydCB0eXBlIElGaWxlbmFtaW5nQ29udmVudGlvbkNvbmZpZ3VyYXRpb24gPSBJUnVsZVBsYWluQ29uZmlndXJhdGlvbiB8IElSdWxlV2l0aEZpbGVuYW1pbmdDb252ZW50aW9uT3B0aW9ucztcbi8qKlxuICogU3VwcG9ydGVkIGNhc2VzIGZvciBmaWxlIG5hbWVzLlxuICovXG5leHBvcnQgdHlwZSBJRmlsZW5hbWVDYXNlID0gXCJjYW1lbENhc2VcIiB8IFwiZXhwb3J0XCIgfCBcImtlYmFiLWNhc2VcIiB8IFwiUGFzY2FsQ2FzZVwiIHwgXCJzbmFrZV9jYXNlXCI7XG5leHBvcnQgdHlwZSBJRmlsZW5hbWVDYXNlcyA9IElGaWxlbmFtZUNhc2VbXTtcbmV4cG9ydCB0eXBlIElOYW1pbmdDb252ZW50aW9uQ29uZmlndXJhdGlvbiA9IElSdWxlUGxhaW5Db25maWd1cmF0aW9uIHwgSVJ1bGVXaXRoTmFtaW5nQ29udmVudGlvbk9wdGlvbnM7XG4vKipcbiAqIFN1cHBvcnRlZCBjYXNlcy5cbiAqL1xuZXhwb3J0IHR5cGUgSUZvcm1hdCA9IFwiY2FtZWxDYXNlXCIgfCBcIkNPTlNUQU5UX0NBU0VcIiB8IFwiUGFzY2FsQ2FzZVwiIHwgXCJzbmFrZV9jYXNlXCI7XG5leHBvcnQgdHlwZSBJRm9ybWF0cyA9IElGb3JtYXRbXTtcbmV4cG9ydCB0eXBlIElSZWdleCA9IHN0cmluZztcbmV4cG9ydCB0eXBlIElLaW5kID1cbiAgfCAoXG4gICAgICB8IFwiY2xhc3NcIlxuICAgICAgfCBcImVudW1cIlxuICAgICAgfCBcImludGVyZmFjZVwiXG4gICAgICB8IFwiZW51bU1lbWJlclwiXG4gICAgICB8IFwiaW1wb3J0TmFtZXNwYWNlXCJcbiAgICAgIHwgXCJleHBvcnROYW1lc3BhY2VcIlxuICAgICAgfCBcInZhcmlhYmxlXCJcbiAgICAgIHwgXCJjb25zdFwiXG4gICAgICB8IFwibGV0XCJcbiAgICAgIHwgXCJ1c2luZ1wiXG4gICAgICB8IFwidmFyXCJcbiAgICAgIHwgXCJjYXRjaFBhcmFtZXRlclwiXG4gICAgICB8IFwiaW5kZXhQYXJhbWV0ZXJcIlxuICAgICAgfCBcImV4cG9ydEFsaWFzXCJcbiAgICAgIHwgXCJpbXBvcnRBbGlhc1wiXG4gICAgICB8IFwiY2xhc3NHZXR0ZXJcIlxuICAgICAgfCBcImNsYXNzU2V0dGVyXCJcbiAgICAgIHwgXCJjbGFzc01ldGhvZFwiXG4gICAgICB8IFwib2JqZWN0TGl0ZXJhbFByb3BlcnR5XCJcbiAgICAgIHwgXCJvYmplY3RMaXRlcmFsR2V0dGVyXCJcbiAgICAgIHwgXCJvYmplY3RMaXRlcmFsU2V0dGVyXCJcbiAgICAgIHwgXCJvYmplY3RMaXRlcmFsTWV0aG9kXCJcbiAgICAgIHwgXCJ0eXBlQWxpYXNcIlxuICAgIClcbiAgfCBcImFueVwiXG4gIHwgXCJ0eXBlTGlrZVwiXG4gIHwgXCJmdW5jdGlvblwiXG4gIHwgXCJuYW1lc3BhY2VMaWtlXCJcbiAgfCBcIm5hbWVzcGFjZVwiXG4gIHwgXCJmdW5jdGlvblBhcmFtZXRlclwiXG4gIHwgXCJ0eXBlUGFyYW1ldGVyXCJcbiAgfCBcImNsYXNzTWVtYmVyXCJcbiAgfCBcImNsYXNzUHJvcGVydHlcIlxuICB8IFwib2JqZWN0TGl0ZXJhbE1lbWJlclwiXG4gIHwgXCJ0eXBlTWVtYmVyXCJcbiAgfCBcInR5cGVHZXR0ZXJcIlxuICB8IFwidHlwZVByb3BlcnR5XCJcbiAgfCBcInR5cGVTZXR0ZXJcIlxuICB8IFwidHlwZU1ldGhvZFwiO1xuZXhwb3J0IHR5cGUgSVJlc3RyaWN0ZWRNb2RpZmllciA9IFwiYWJzdHJhY3RcIiB8IFwicHJpdmF0ZVwiIHwgXCJwcm90ZWN0ZWRcIiB8IFwicmVhZG9ubHlcIiB8IFwic3RhdGljXCI7XG5leHBvcnQgdHlwZSBJTW9kaWZpZXJzID0gSVJlc3RyaWN0ZWRNb2RpZmllcltdO1xuZXhwb3J0IHR5cGUgSVNjb3BlID0gXCJhbnlcIiB8IFwiZ2xvYmFsXCI7XG5leHBvcnQgdHlwZSBJTm9Db25zb2xlQ29uZmlndXJhdGlvbiA9IElSdWxlUGxhaW5Db25maWd1cmF0aW9uIHwgSVJ1bGVXaXRoTm9Db25zb2xlT3B0aW9ucztcbmV4cG9ydCB0eXBlIElOb0RvdWJsZUVxdWFsc0NvbmZpZ3VyYXRpb24gPSBJUnVsZVBsYWluQ29uZmlndXJhdGlvbiB8IElSdWxlV2l0aE5vRG91YmxlRXF1YWxzT3B0aW9ucztcbmV4cG9ydCB0eXBlIElPdmVycmlkZXMgPSBJT3ZlcnJpZGVQYXR0ZXJuW107XG5leHBvcnQgdHlwZSBJVmNzQ2xpZW50S2luZCA9IFwiZ2l0XCI7XG5cbi8qKlxuICogVGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyBjb250YWluZWQgaW5zaWRlIHRoZSBmaWxlIGBiaW9tZS5qc29uYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIEEgZmllbGQgZm9yIHRoZSBbSlNPTiBzY2hlbWFdKGh0dHBzOi8vanNvbi1zY2hlbWEub3JnLykgc3BlY2lmaWNhdGlvblxuICAgKi9cbiAgLy8kc2NoZW1hPzogc3RyaW5nO1xuICAvKipcbiAgICogU3BlY2lmaWMgY29uZmlndXJhdGlvbiBmb3IgYXNzaXN0c1xuICAgKi9cbiAgYXNzaXN0cz86IElBc3Npc3RzQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBDc3MgbGFuZ3VhZ2VcbiAgICovXG4gIGNzcz86IElDc3NDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogQSBsaXN0IG9mIHBhdGhzIHRvIG90aGVyIEpTT04gZmlsZXMsIHVzZWQgdG8gZXh0ZW5kcyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgZXh0ZW5kcz86IElTdHJpbmdTZXQ7XG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBvZiB0aGUgZmlsZXN5c3RlbVxuICAgKi9cbiAgZmlsZXM/OiBJRmlsZXNDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGZvcm1hdHRlclxuICAgKi9cbiAgZm9ybWF0dGVyPzogSUZvcm1hdHRlckNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBTcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvciB0aGUgR3JhcGhRTCBsYW5ndWFnZVxuICAgKi9cbiAgZ3JhcGhxbD86IElHcmFwaHFsQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBKYXZhU2NyaXB0IGxhbmd1YWdlXG4gICAqL1xuICBqYXZhc2NyaXB0PzogSUphdmFzY3JpcHRDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogU3BlY2lmaWMgY29uZmlndXJhdGlvbiBmb3IgdGhlIEpzb24gbGFuZ3VhZ2VcbiAgICovXG4gIGpzb24/OiBJSnNvbkNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGxpbnRlclxuICAgKi9cbiAgbGludGVyPzogSUxpbnRlckNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBvZiB0aGUgaW1wb3J0IHNvcnRpbmdcbiAgICovXG4gIG9yZ2FuaXplSW1wb3J0cz86IElPcmdhbml6ZUltcG9ydHM7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgZ3JhbnVsYXIgcGF0dGVybnMgdGhhdCBzaG91bGQgYmUgYXBwbGllZCBvbmx5IHRvIGEgc3ViIHNldCBvZiBmaWxlc1xuICAgKi9cbiAgb3ZlcnJpZGVzPzogSU92ZXJyaWRlcztcbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBWQ1MgaW50ZWdyYXRpb25cbiAgICovXG4gIHZjcz86IElWY3NDb25maWd1cmF0aW9uO1xufVxuZXhwb3J0IGludGVyZmFjZSBJQXNzaXN0c0NvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogV2hldGhlciBCaW9tZSBzaG91bGQgZmFpbCBpbiBDTEkgaWYgdGhlIGFzc2lzdHMgd2VyZSBub3QgYXBwbGllZCB0byB0aGUgY29kZS5cbiAgICovXG4gIGFjdGlvbnM/OiBJQWN0aW9ucztcbiAgLyoqXG4gICAqIFdoZXRoZXIgQmlvbWUgc2hvdWxkIGVuYWJsZSBhc3Npc3RzIHZpYSBMU1AuXG4gICAqL1xuICBlbmFibGVkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBVbml4IHNoZWxsIHN0eWxlIHBhdHRlcm5zLiBUaGUgZm9ybWF0dGVyIHdpbGwgaWdub3JlIGZpbGVzL2ZvbGRlcnMgdGhhdCB3aWxsIG1hdGNoIHRoZXNlIHBhdHRlcm5zLlxuICAgKi9cbiAgaWdub3JlPzogSVN0cmluZ1NldDtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBVbml4IHNoZWxsIHN0eWxlIHBhdHRlcm5zLiBUaGUgZm9ybWF0dGVyIHdpbGwgaW5jbHVkZSBmaWxlcy9mb2xkZXJzIHRoYXQgd2lsbCBtYXRjaCB0aGVzZSBwYXR0ZXJucy5cbiAgICovXG4gIGluY2x1ZGU/OiBJU3RyaW5nU2V0O1xufVxuZXhwb3J0IGludGVyZmFjZSBJQWN0aW9ucyB7XG4gIHNvdXJjZT86IElTb3VyY2U7XG59XG4vKipcbiAqIEEgbGlzdCBvZiBydWxlcyB0aGF0IGJlbG9uZyB0byB0aGlzIGdyb3VwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVNvdXJjZSB7XG4gIC8qKlxuICAgKiBFbmZvcmNlIHByb3BzIHNvcnRpbmcgaW4gSlNYIGVsZW1lbnRzLlxuICAgKi9cbiAgc29ydEpzeFByb3BzPzogSVJ1bGVBc3Npc3RDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogU29ydHMgdGhlIGtleXMgb2YgYSBKU09OIG9iamVjdCBpbiBuYXR1cmFsIG9yZGVyXG4gICAqL1xuICB1c2VTb3J0ZWRLZXlzPzogSVJ1bGVBc3Npc3RDb25maWd1cmF0aW9uO1xufVxuLyoqXG4gKiBPcHRpb25zIGFwcGxpZWQgdG8gQ1NTIGZpbGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNzc0NvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogQ1NTIGFzc2lzdHMgb3B0aW9uc1xuICAgKi9cbiAgYXNzaXN0cz86IElDc3NBc3Npc3RzO1xuICAvKipcbiAgICogQ1NTIGZvcm1hdHRlciBvcHRpb25zXG4gICAqL1xuICBmb3JtYXR0ZXI/OiBJQ3NzRm9ybWF0dGVyO1xuICAvKipcbiAgICogQ1NTIGxpbnRlciBvcHRpb25zXG4gICAqL1xuICBsaW50ZXI/OiBJQ3NzTGludGVyO1xuICAvKipcbiAgICogQ1NTIHBhcnNpbmcgb3B0aW9uc1xuICAgKi9cbiAgcGFyc2VyPzogSUNzc1BhcnNlcjtcbn1cbi8qKlxuICogT3B0aW9ucyB0aGF0IGNoYW5nZXMgaG93IHRoZSBDU1MgYXNzaXN0cyBiZWhhdmVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNzc0Fzc2lzdHMge1xuICAvKipcbiAgICogQ29udHJvbCB0aGUgYXNzaXN0cyBmb3IgQ1NTIGZpbGVzLlxuICAgKi9cbiAgZW5hYmxlZD86IGJvb2xlYW47XG59XG4vKipcbiAqIE9wdGlvbnMgdGhhdCBjaGFuZ2VzIGhvdyB0aGUgQ1NTIGZvcm1hdHRlciBiZWhhdmVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNzc0Zvcm1hdHRlciB7XG4gIC8qKlxuICAgKiBDb250cm9sIHRoZSBmb3JtYXR0ZXIgZm9yIENTUyAoYW5kIGl0cyBzdXBlciBsYW5ndWFnZXMpIGZpbGVzLlxuICAgKi9cbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgaW5kZW50IHN0eWxlIGFwcGxpZWQgdG8gQ1NTIChhbmQgaXRzIHN1cGVyIGxhbmd1YWdlcykgZmlsZXMuXG4gICAqL1xuICBpbmRlbnRTdHlsZT86IElJbmRlbnRTdHlsZTtcbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBpbmRlbnRhdGlvbiBhcHBsaWVkIHRvIENTUyAoYW5kIGl0cyBzdXBlciBsYW5ndWFnZXMpIGZpbGVzLiBEZWZhdWx0IHRvIDIuXG4gICAqL1xuICBpbmRlbnRXaWR0aD86IElJbmRlbnRXaWR0aDtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGxpbmUgZW5kaW5nIGFwcGxpZWQgdG8gQ1NTIChhbmQgaXRzIHN1cGVyIGxhbmd1YWdlcykgZmlsZXMuXG4gICAqL1xuICBsaW5lRW5kaW5nPzogSUxpbmVFbmRpbmc7XG4gIC8qKlxuICAgKiBXaGF0J3MgdGhlIG1heCB3aWR0aCBvZiBhIGxpbmUgYXBwbGllZCB0byBDU1MgKGFuZCBpdHMgc3VwZXIgbGFuZ3VhZ2VzKSBmaWxlcy4gRGVmYXVsdHMgdG8gODAuXG4gICAqL1xuICBsaW5lV2lkdGg/OiBJTGluZVdpZHRoO1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgcXVvdGVzIHVzZWQgaW4gQ1NTIGNvZGUuIERlZmF1bHRzIHRvIGRvdWJsZS5cbiAgICovXG4gIHF1b3RlU3R5bGU/OiBJUXVvdGVTdHlsZTtcbn1cbi8qKlxuICogT3B0aW9ucyB0aGF0IGNoYW5nZXMgaG93IHRoZSBDU1MgbGludGVyIGJlaGF2ZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ3NzTGludGVyIHtcbiAgLyoqXG4gICAqIENvbnRyb2wgdGhlIGxpbnRlciBmb3IgQ1NTIGZpbGVzLlxuICAgKi9cbiAgZW5hYmxlZD86IGJvb2xlYW47XG59XG4vKipcbiAqIE9wdGlvbnMgdGhhdCBjaGFuZ2VzIGhvdyB0aGUgQ1NTIHBhcnNlciBiZWhhdmVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNzc1BhcnNlciB7XG4gIC8qKlxuICAgKiBBbGxvdyBjb21tZW50cyB0byBhcHBlYXIgb24gaW5jb3JyZWN0IGxpbmVzIGluIGAuY3NzYCBmaWxlc1xuICAgKi9cbiAgYWxsb3dXcm9uZ0xpbmVDb21tZW50cz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBFbmFibGVzIHBhcnNpbmcgb2YgQ1NTIE1vZHVsZXMgc3BlY2lmaWMgZmVhdHVyZXMuXG4gICAqL1xuICBjc3NNb2R1bGVzPzogYm9vbGVhbjtcbn1cbi8qKlxuICogVGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGZpbGVzeXN0ZW1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRmlsZXNDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBVbml4IHNoZWxsIHN0eWxlIHBhdHRlcm5zLiBCaW9tZSB3aWxsIGlnbm9yZSBmaWxlcy9mb2xkZXJzIHRoYXQgd2lsbCBtYXRjaCB0aGVzZSBwYXR0ZXJucy5cbiAgICovXG4gIGlnbm9yZT86IElTdHJpbmdTZXQ7XG4gIC8qKlxuICAgKiBUZWxscyBCaW9tZSB0byBub3QgZW1pdCBkaWFnbm9zdGljcyB3aGVuIGhhbmRsaW5nIGZpbGVzIHRoYXQgZG9lc24ndCBrbm93XG4gICAqL1xuICBpZ25vcmVVbmtub3duPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBVbml4IHNoZWxsIHN0eWxlIHBhdHRlcm5zLiBCaW9tZSB3aWxsIGhhbmRsZSBvbmx5IHRob3NlIGZpbGVzL2ZvbGRlcnMgdGhhdCB3aWxsIG1hdGNoIHRoZXNlIHBhdHRlcm5zLlxuICAgKi9cbiAgaW5jbHVkZT86IElTdHJpbmdTZXQ7XG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBhbGxvd2VkIHNpemUgZm9yIHNvdXJjZSBjb2RlIGZpbGVzIGluIGJ5dGVzLiBGaWxlcyBhYm92ZSB0aGlzIGxpbWl0IHdpbGwgYmUgaWdub3JlZCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gRGVmYXVsdHMgdG8gMSBNaUJcbiAgICovXG4gIG1heFNpemU/OiBudW1iZXI7XG59XG4vKipcbiAqIEdlbmVyaWMgb3B0aW9ucyBhcHBsaWVkIHRvIGFsbCBmaWxlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtYXR0ZXJDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBhdHRyaWJ1dGUgcG9zaXRpb24gc3R5bGUgaW4gSFRNTGlzaCBsYW5ndWFnZXMuIEJ5IGRlZmF1bHQgYXV0by5cbiAgICovXG4gIGF0dHJpYnV0ZVBvc2l0aW9uPzogSUF0dHJpYnV0ZVBvc2l0aW9uO1xuICAvKipcbiAgICogV2hldGhlciB0byBpbnNlcnQgc3BhY2VzIGFyb3VuZCBicmFja2V0cyBpbiBvYmplY3QgbGl0ZXJhbHMuIERlZmF1bHRzIHRvIHRydWUuXG4gICAqL1xuICBicmFja2V0U3BhY2luZz86IElCcmFja2V0U3BhY2luZztcbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTdG9yZXMgd2hldGhlciBmb3JtYXR0aW5nIHNob3VsZCBiZSBhbGxvd2VkIHRvIHByb2NlZWQgaWYgYSBnaXZlbiBmaWxlIGhhcyBzeW50YXggZXJyb3JzXG4gICAqL1xuICBmb3JtYXRXaXRoRXJyb3JzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBVbml4IHNoZWxsIHN0eWxlIHBhdHRlcm5zLiBUaGUgZm9ybWF0dGVyIHdpbGwgaWdub3JlIGZpbGVzL2ZvbGRlcnMgdGhhdCB3aWxsIG1hdGNoIHRoZXNlIHBhdHRlcm5zLlxuICAgKi9cbiAgaWdub3JlPzogSVN0cmluZ1NldDtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBVbml4IHNoZWxsIHN0eWxlIHBhdHRlcm5zLiBUaGUgZm9ybWF0dGVyIHdpbGwgaW5jbHVkZSBmaWxlcy9mb2xkZXJzIHRoYXQgd2lsbCBtYXRjaCB0aGVzZSBwYXR0ZXJucy5cbiAgICovXG4gIGluY2x1ZGU/OiBJU3RyaW5nU2V0O1xuICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIGluZGVudGF0aW9uLCAyIGJ5IGRlZmF1bHQgKGRlcHJlY2F0ZWQsIHVzZSBgaW5kZW50LXdpZHRoYClcbiAgICovXG4gIGluZGVudFNpemU/OiBJSW5kZW50V2lkdGg7XG4gIC8qKlxuICAgKiBUaGUgaW5kZW50IHN0eWxlLlxuICAgKi9cbiAgaW5kZW50U3R5bGU/OiBJSW5kZW50U3R5bGU7XG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgaW5kZW50YXRpb24sIDIgYnkgZGVmYXVsdFxuICAgKi9cbiAgaW5kZW50V2lkdGg/OiBJSW5kZW50V2lkdGg7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBsaW5lIGVuZGluZy5cbiAgICovXG4gIGxpbmVFbmRpbmc/OiBJTGluZUVuZGluZztcbiAgLyoqXG4gICAqIFdoYXQncyB0aGUgbWF4IHdpZHRoIG9mIGEgbGluZS4gRGVmYXVsdHMgdG8gODAuXG4gICAqL1xuICBsaW5lV2lkdGg/OiBJTGluZVdpZHRoO1xuICAvKipcbiAgICogVXNlIGFueSBgLmVkaXRvcmNvbmZpZ2AgZmlsZXMgdG8gY29uZmlndXJlIHRoZSBmb3JtYXR0ZXIuIENvbmZpZ3VyYXRpb24gaW4gYGJpb21lLmpzb25gIHdpbGwgb3ZlcnJpZGUgYC5lZGl0b3Jjb25maWdgIGNvbmZpZ3VyYXRpb24uIERlZmF1bHQ6IGZhbHNlLlxuICAgKi9cbiAgdXNlRWRpdG9yY29uZmlnPzogYm9vbGVhbjtcbn1cbi8qKlxuICogT3B0aW9ucyBhcHBsaWVkIHRvIEdyYXBoUUwgZmlsZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJR3JhcGhxbENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogR3JhcGhRTCBmb3JtYXR0ZXIgb3B0aW9uc1xuICAgKi9cbiAgZm9ybWF0dGVyPzogSUdyYXBocWxGb3JtYXR0ZXI7XG4gIGxpbnRlcj86IElHcmFwaHFsTGludGVyO1xufVxuLyoqXG4gKiBPcHRpb25zIHRoYXQgY2hhbmdlcyBob3cgdGhlIEdyYXBoUUwgZm9ybWF0dGVyIGJlaGF2ZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJR3JhcGhxbEZvcm1hdHRlciB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluc2VydCBzcGFjZXMgYXJvdW5kIGJyYWNrZXRzIGluIG9iamVjdCBsaXRlcmFscy4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICovXG4gIGJyYWNrZXRTcGFjaW5nPzogSUJyYWNrZXRTcGFjaW5nO1xuICAvKipcbiAgICogQ29udHJvbCB0aGUgZm9ybWF0dGVyIGZvciBHcmFwaFFMIGZpbGVzLlxuICAgKi9cbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgaW5kZW50IHN0eWxlIGFwcGxpZWQgdG8gR3JhcGhRTCBmaWxlcy5cbiAgICovXG4gIGluZGVudFN0eWxlPzogSUluZGVudFN0eWxlO1xuICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIGluZGVudGF0aW9uIGFwcGxpZWQgdG8gR3JhcGhRTCBmaWxlcy4gRGVmYXVsdCB0byAyLlxuICAgKi9cbiAgaW5kZW50V2lkdGg/OiBJSW5kZW50V2lkdGg7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBsaW5lIGVuZGluZyBhcHBsaWVkIHRvIEdyYXBoUUwgZmlsZXMuXG4gICAqL1xuICBsaW5lRW5kaW5nPzogSUxpbmVFbmRpbmc7XG4gIC8qKlxuICAgKiBXaGF0J3MgdGhlIG1heCB3aWR0aCBvZiBhIGxpbmUgYXBwbGllZCB0byBHcmFwaFFMIGZpbGVzLiBEZWZhdWx0cyB0byA4MC5cbiAgICovXG4gIGxpbmVXaWR0aD86IElMaW5lV2lkdGg7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBxdW90ZXMgdXNlZCBpbiBHcmFwaFFMIGNvZGUuIERlZmF1bHRzIHRvIGRvdWJsZS5cbiAgICovXG4gIHF1b3RlU3R5bGU/OiBJUXVvdGVTdHlsZTtcbn1cbi8qKlxuICogT3B0aW9ucyB0aGF0IGNoYW5nZXMgaG93IHRoZSBHcmFwaFFMIGxpbnRlciBiZWhhdmVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUdyYXBocWxMaW50ZXIge1xuICAvKipcbiAgICogQ29udHJvbCB0aGUgZm9ybWF0dGVyIGZvciBHcmFwaFFMIGZpbGVzLlxuICAgKi9cbiAgZW5hYmxlZD86IGJvb2xlYW47XG59XG4vKipcbiAqIEEgc2V0IG9mIG9wdGlvbnMgYXBwbGllZCB0byB0aGUgSmF2YVNjcmlwdCBmaWxlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElKYXZhc2NyaXB0Q29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBBc3Npc3RzIG9wdGlvbnNcbiAgICovXG4gIGFzc2lzdHM/OiBJSmF2YXNjcmlwdEFzc2lzdHM7XG4gIC8qKlxuICAgKiBGb3JtYXR0aW5nIG9wdGlvbnNcbiAgICovXG4gIGZvcm1hdHRlcj86IElKYXZhc2NyaXB0Rm9ybWF0dGVyO1xuICAvKipcbiAgICogQSBsaXN0IG9mIGdsb2JhbCBiaW5kaW5ncyB0aGF0IHNob3VsZCBiZSBpZ25vcmVkIGJ5IHRoZSBhbmFseXplcnNcbiAgICpcbiAgICogSWYgZGVmaW5lZCBoZXJlLCB0aGV5IHNob3VsZCBub3QgZW1pdCBkaWFnbm9zdGljcy5cbiAgICovXG4gIGdsb2JhbHM/OiBJU3RyaW5nU2V0O1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSB0eXBlIG9mIHJ1bnRpbWUgb3IgdHJhbnNmb3JtYXRpb24gdXNlZCBmb3IgaW50ZXJwcmV0aW5nIEpTWC5cbiAgICovXG4gIGpzeFJ1bnRpbWU/OiBJSnN4UnVudGltZTtcbiAgLyoqXG4gICAqIExpbnRlciBvcHRpb25zXG4gICAqL1xuICBsaW50ZXI/OiBJSmF2YXNjcmlwdExpbnRlcjtcbiAgb3JnYW5pemVJbXBvcnRzPzogSUphdmFzY3JpcHRPcmdhbml6ZUltcG9ydHM7XG4gIC8qKlxuICAgKiBQYXJzaW5nIG9wdGlvbnNcbiAgICovXG4gIHBhcnNlcj86IElKYXZhc2NyaXB0UGFyc2VyO1xufVxuLyoqXG4gKiBMaW50ZXIgb3B0aW9ucyBzcGVjaWZpYyB0byB0aGUgSmF2YVNjcmlwdCBsaW50ZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJSmF2YXNjcmlwdEFzc2lzdHMge1xuICAvKipcbiAgICogQ29udHJvbCB0aGUgbGludGVyIGZvciBKYXZhU2NyaXB0IChhbmQgaXRzIHN1cGVyIGxhbmd1YWdlcykgZmlsZXMuXG4gICAqL1xuICBlbmFibGVkPzogYm9vbGVhbjtcbn1cbi8qKlxuICogRm9ybWF0dGluZyBvcHRpb25zIHNwZWNpZmljIHRvIHRoZSBKYXZhU2NyaXB0IGZpbGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUphdmFzY3JpcHRGb3JtYXR0ZXIge1xuICAvKipcbiAgICogV2hldGhlciB0byBhZGQgbm9uLW5lY2Vzc2FyeSBwYXJlbnRoZXNlcyB0byBhcnJvdyBmdW5jdGlvbnMuIERlZmF1bHRzIHRvIFwiYWx3YXlzXCIuXG4gICAqL1xuICBhcnJvd1BhcmVudGhlc2VzPzogSUFycm93UGFyZW50aGVzZXM7XG4gIC8qKlxuICAgKiBUaGUgYXR0cmlidXRlIHBvc2l0aW9uIHN0eWxlIGluIGpzeCBlbGVtZW50cy4gRGVmYXVsdHMgdG8gYXV0by5cbiAgICovXG4gIGF0dHJpYnV0ZVBvc2l0aW9uPzogSUF0dHJpYnV0ZVBvc2l0aW9uO1xuICAvKipcbiAgICogV2hldGhlciB0byBodWcgdGhlIGNsb3NpbmcgYnJhY2tldCBvZiBtdWx0aWxpbmUgSFRNTC9KU1ggdGFncyB0byB0aGUgZW5kIG9mIHRoZSBsYXN0IGxpbmUsIHJhdGhlciB0aGFuIGJlaW5nIGFsb25lIG9uIHRoZSBmb2xsb3dpbmcgbGluZS4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqL1xuICBicmFja2V0U2FtZUxpbmU/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciB0byBpbnNlcnQgc3BhY2VzIGFyb3VuZCBicmFja2V0cyBpbiBvYmplY3QgbGl0ZXJhbHMuIERlZmF1bHRzIHRvIHRydWUuXG4gICAqL1xuICBicmFja2V0U3BhY2luZz86IElCcmFja2V0U3BhY2luZztcbiAgLyoqXG4gICAqIENvbnRyb2wgdGhlIGZvcm1hdHRlciBmb3IgSmF2YVNjcmlwdCAoYW5kIGl0cyBzdXBlciBsYW5ndWFnZXMpIGZpbGVzLlxuICAgKi9cbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgaW5kZW50YXRpb24gYXBwbGllZCB0byBKYXZhU2NyaXB0IChhbmQgaXRzIHN1cGVyIGxhbmd1YWdlcykgZmlsZXMuIERlZmF1bHQgdG8gMi5cbiAgICovXG4gIGluZGVudFNpemU/OiBJSW5kZW50V2lkdGg7XG4gIC8qKlxuICAgKiBUaGUgaW5kZW50IHN0eWxlIGFwcGxpZWQgdG8gSmF2YVNjcmlwdCAoYW5kIGl0cyBzdXBlciBsYW5ndWFnZXMpIGZpbGVzLlxuICAgKi9cbiAgaW5kZW50U3R5bGU/OiBJSW5kZW50U3R5bGU7XG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgaW5kZW50YXRpb24gYXBwbGllZCB0byBKYXZhU2NyaXB0IChhbmQgaXRzIHN1cGVyIGxhbmd1YWdlcykgZmlsZXMuIERlZmF1bHQgdG8gMi5cbiAgICovXG4gIGluZGVudFdpZHRoPzogSUluZGVudFdpZHRoO1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgcXVvdGVzIHVzZWQgaW4gSlNYLiBEZWZhdWx0cyB0byBkb3VibGUuXG4gICAqL1xuICBqc3hRdW90ZVN0eWxlPzogSVF1b3RlU3R5bGU7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBsaW5lIGVuZGluZyBhcHBsaWVkIHRvIEphdmFTY3JpcHQgKGFuZCBpdHMgc3VwZXIgbGFuZ3VhZ2VzKSBmaWxlcy5cbiAgICovXG4gIGxpbmVFbmRpbmc/OiBJTGluZUVuZGluZztcbiAgLyoqXG4gICAqIFdoYXQncyB0aGUgbWF4IHdpZHRoIG9mIGEgbGluZSBhcHBsaWVkIHRvIEphdmFTY3JpcHQgKGFuZCBpdHMgc3VwZXIgbGFuZ3VhZ2VzKSBmaWxlcy4gRGVmYXVsdHMgdG8gODAuXG4gICAqL1xuICBsaW5lV2lkdGg/OiBJTGluZVdpZHRoO1xuICAvKipcbiAgICogV2hlbiBwcm9wZXJ0aWVzIGluIG9iamVjdHMgYXJlIHF1b3RlZC4gRGVmYXVsdHMgdG8gYXNOZWVkZWQuXG4gICAqL1xuICBxdW90ZVByb3BlcnRpZXM/OiBJUXVvdGVQcm9wZXJ0aWVzO1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgcXVvdGVzIHVzZWQgaW4gSmF2YVNjcmlwdCBjb2RlLiBEZWZhdWx0cyB0byBkb3VibGUuXG4gICAqL1xuICBxdW90ZVN0eWxlPzogSVF1b3RlU3R5bGU7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBmb3JtYXR0ZXIgcHJpbnRzIHNlbWljb2xvbnMgZm9yIGFsbCBzdGF0ZW1lbnRzIG9yIG9ubHkgaW4gZm9yIHN0YXRlbWVudHMgd2hlcmUgaXQgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugb2YgQVNJLlxuICAgKi9cbiAgc2VtaWNvbG9ucz86IElTZW1pY29sb25zO1xuICAvKipcbiAgICogUHJpbnQgdHJhaWxpbmcgY29tbWFzIHdoZXJldmVyIHBvc3NpYmxlIGluIG11bHRpLWxpbmUgY29tbWEtc2VwYXJhdGVkIHN5bnRhY3RpYyBzdHJ1Y3R1cmVzLiBEZWZhdWx0cyB0byBcImFsbFwiLlxuICAgKi9cbiAgdHJhaWxpbmdDb21tYT86IElUcmFpbGluZ0NvbW1hcztcbiAgLyoqXG4gICAqIFByaW50IHRyYWlsaW5nIGNvbW1hcyB3aGVyZXZlciBwb3NzaWJsZSBpbiBtdWx0aS1saW5lIGNvbW1hLXNlcGFyYXRlZCBzeW50YWN0aWMgc3RydWN0dXJlcy4gRGVmYXVsdHMgdG8gXCJhbGxcIi5cbiAgICovXG4gIHRyYWlsaW5nQ29tbWFzPzogSVRyYWlsaW5nQ29tbWFzO1xufVxuLyoqXG4gKiBMaW50ZXIgb3B0aW9ucyBzcGVjaWZpYyB0byB0aGUgSmF2YVNjcmlwdCBsaW50ZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJSmF2YXNjcmlwdExpbnRlciB7XG4gIC8qKlxuICAgKiBDb250cm9sIHRoZSBsaW50ZXIgZm9yIEphdmFTY3JpcHQgKGFuZCBpdHMgc3VwZXIgbGFuZ3VhZ2VzKSBmaWxlcy5cbiAgICovXG4gIGVuYWJsZWQ/OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBJSmF2YXNjcmlwdE9yZ2FuaXplSW1wb3J0cyB7fVxuLyoqXG4gKiBPcHRpb25zIHRoYXQgY2hhbmdlcyBob3cgdGhlIEphdmFTY3JpcHQgcGFyc2VyIGJlaGF2ZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJSmF2YXNjcmlwdFBhcnNlciB7XG4gIC8qKlxuICAgKiBJdCBlbmFibGVzIHRoZSBleHBlcmltZW50YWwgYW5kIHVuc2FmZSBwYXJzaW5nIG9mIHBhcmFtZXRlciBkZWNvcmF0b3JzXG4gICAqXG4gICAqIFRoZXNlIGRlY29yYXRvcnMgYmVsb25nIHRvIGFuIG9sZCBwcm9wb3NhbCwgYW5kIHRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlLlxuICAgKi9cbiAgdW5zYWZlUGFyYW1ldGVyRGVjb3JhdG9yc0VuYWJsZWQ/OiBib29sZWFuO1xufVxuLyoqXG4gKiBPcHRpb25zIGFwcGxpZWQgdG8gSlNPTiBmaWxlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElKc29uQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBBc3Npc3RzIG9wdGlvbnNcbiAgICovXG4gIGFzc2lzdHM/OiBJSnNvbkFzc2lzdHM7XG4gIC8qKlxuICAgKiBGb3JtYXR0aW5nIG9wdGlvbnNcbiAgICovXG4gIGZvcm1hdHRlcj86IElKc29uRm9ybWF0dGVyO1xuICAvKipcbiAgICogTGludGluZyBvcHRpb25zXG4gICAqL1xuICBsaW50ZXI/OiBJSnNvbkxpbnRlcjtcbiAgLyoqXG4gICAqIFBhcnNpbmcgb3B0aW9uc1xuICAgKi9cbiAgcGFyc2VyPzogSUpzb25QYXJzZXI7XG59XG4vKipcbiAqIExpbnRlciBvcHRpb25zIHNwZWNpZmljIHRvIHRoZSBKU09OIGxpbnRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIElKc29uQXNzaXN0cyB7XG4gIC8qKlxuICAgKiBDb250cm9sIHRoZSBsaW50ZXIgZm9yIEpTT04gKGFuZCBpdHMgc3VwZXIgbGFuZ3VhZ2VzKSBmaWxlcy5cbiAgICovXG4gIGVuYWJsZWQ/OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBJSnNvbkZvcm1hdHRlciB7XG4gIC8qKlxuICAgKiBDb250cm9sIHRoZSBmb3JtYXR0ZXIgZm9yIEpTT04gKGFuZCBpdHMgc3VwZXIgbGFuZ3VhZ2VzKSBmaWxlcy5cbiAgICovXG4gIGVuYWJsZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIGluZGVudGF0aW9uIGFwcGxpZWQgdG8gSlNPTiAoYW5kIGl0cyBzdXBlciBsYW5ndWFnZXMpIGZpbGVzLiBEZWZhdWx0IHRvIDIuXG4gICAqL1xuICBpbmRlbnRTaXplPzogSUluZGVudFdpZHRoO1xuICAvKipcbiAgICogVGhlIGluZGVudCBzdHlsZSBhcHBsaWVkIHRvIEpTT04gKGFuZCBpdHMgc3VwZXIgbGFuZ3VhZ2VzKSBmaWxlcy5cbiAgICovXG4gIGluZGVudFN0eWxlPzogSUluZGVudFN0eWxlO1xuICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIGluZGVudGF0aW9uIGFwcGxpZWQgdG8gSlNPTiAoYW5kIGl0cyBzdXBlciBsYW5ndWFnZXMpIGZpbGVzLiBEZWZhdWx0IHRvIDIuXG4gICAqL1xuICBpbmRlbnRXaWR0aD86IElJbmRlbnRXaWR0aDtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGxpbmUgZW5kaW5nIGFwcGxpZWQgdG8gSlNPTiAoYW5kIGl0cyBzdXBlciBsYW5ndWFnZXMpIGZpbGVzLlxuICAgKi9cbiAgbGluZUVuZGluZz86IElMaW5lRW5kaW5nO1xuICAvKipcbiAgICogV2hhdCdzIHRoZSBtYXggd2lkdGggb2YgYSBsaW5lIGFwcGxpZWQgdG8gSlNPTiAoYW5kIGl0cyBzdXBlciBsYW5ndWFnZXMpIGZpbGVzLiBEZWZhdWx0cyB0byA4MC5cbiAgICovXG4gIGxpbmVXaWR0aD86IElMaW5lV2lkdGg7XG4gIC8qKlxuICAgKiBQcmludCB0cmFpbGluZyBjb21tYXMgd2hlcmV2ZXIgcG9zc2libGUgaW4gbXVsdGktbGluZSBjb21tYS1zZXBhcmF0ZWQgc3ludGFjdGljIHN0cnVjdHVyZXMuIERlZmF1bHRzIHRvIFwibm9uZVwiLlxuICAgKi9cbiAgdHJhaWxpbmdDb21tYXM/OiBJVHJhaWxpbmdDb21tYXMyO1xufVxuLyoqXG4gKiBMaW50ZXIgb3B0aW9ucyBzcGVjaWZpYyB0byB0aGUgSlNPTiBsaW50ZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJSnNvbkxpbnRlciB7XG4gIC8qKlxuICAgKiBDb250cm9sIHRoZSBsaW50ZXIgZm9yIEpTT04gKGFuZCBpdHMgc3VwZXIgbGFuZ3VhZ2VzKSBmaWxlcy5cbiAgICovXG4gIGVuYWJsZWQ/OiBib29sZWFuO1xufVxuLyoqXG4gKiBPcHRpb25zIHRoYXQgY2hhbmdlcyBob3cgdGhlIEpTT04gcGFyc2VyIGJlaGF2ZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJSnNvblBhcnNlciB7XG4gIC8qKlxuICAgKiBBbGxvdyBwYXJzaW5nIGNvbW1lbnRzIGluIGAuanNvbmAgZmlsZXNcbiAgICovXG4gIGFsbG93Q29tbWVudHM/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3cgcGFyc2luZyB0cmFpbGluZyBjb21tYXMgaW4gYC5qc29uYCBmaWxlc1xuICAgKi9cbiAgYWxsb3dUcmFpbGluZ0NvbW1hcz86IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIElMaW50ZXJDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIGlmIGBmYWxzZWAsIGl0IGRpc2FibGVzIHRoZSBmZWF0dXJlIGFuZCB0aGUgbGludGVyIHdvbid0IGJlIGV4ZWN1dGVkLiBgdHJ1ZWAgYnkgZGVmYXVsdFxuICAgKi9cbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgVW5peCBzaGVsbCBzdHlsZSBwYXR0ZXJucy4gVGhlIGZvcm1hdHRlciB3aWxsIGlnbm9yZSBmaWxlcy9mb2xkZXJzIHRoYXQgd2lsbCBtYXRjaCB0aGVzZSBwYXR0ZXJucy5cbiAgICovXG4gIGlnbm9yZT86IElTdHJpbmdTZXQ7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgVW5peCBzaGVsbCBzdHlsZSBwYXR0ZXJucy4gVGhlIGZvcm1hdHRlciB3aWxsIGluY2x1ZGUgZmlsZXMvZm9sZGVycyB0aGF0IHdpbGwgbWF0Y2ggdGhlc2UgcGF0dGVybnMuXG4gICAqL1xuICBpbmNsdWRlPzogSVN0cmluZ1NldDtcbiAgLyoqXG4gICAqIExpc3Qgb2YgcnVsZXNcbiAgICovXG4gIHJ1bGVzPzogSVJ1bGVzO1xufVxuZXhwb3J0IGludGVyZmFjZSBJUnVsZXMge1xuICBhMTF5PzogSUExMXk7XG4gIC8qKlxuICAgKiBJdCBlbmFibGVzIEFMTCBydWxlcy4gVGhlIHJ1bGVzIHRoYXQgYmVsb25nIHRvIGBudXJzZXJ5YCB3b24ndCBiZSBlbmFibGVkLlxuICAgKi9cbiAgYWxsPzogYm9vbGVhbjtcbiAgY29tcGxleGl0eT86IElDb21wbGV4aXR5O1xuICBjb3JyZWN0bmVzcz86IElDb3JyZWN0bmVzcztcbiAgbnVyc2VyeT86IElOdXJzZXJ5O1xuICBwZXJmb3JtYW5jZT86IElQZXJmb3JtYW5jZTtcbiAgLyoqXG4gICAqIEl0IGVuYWJsZXMgdGhlIGxpbnQgcnVsZXMgcmVjb21tZW5kZWQgYnkgQmlvbWUuIGB0cnVlYCBieSBkZWZhdWx0LlxuICAgKi9cbiAgcmVjb21tZW5kZWQ/OiBib29sZWFuO1xuICBzZWN1cml0eT86IElTZWN1cml0eTtcbiAgc3R5bGU/OiBJU3R5bGU7XG4gIHN1c3BpY2lvdXM/OiBJU3VzcGljaW91cztcbn1cbi8qKlxuICogQSBsaXN0IG9mIHJ1bGVzIHRoYXQgYmVsb25nIHRvIHRoaXMgZ3JvdXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQTExeSB7XG4gIC8qKlxuICAgKiBJdCBlbmFibGVzIEFMTCBydWxlcyBmb3IgdGhpcyBncm91cC5cbiAgICovXG4gIGFsbD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBFbmZvcmNlIHRoYXQgdGhlIGFjY2Vzc0tleSBhdHRyaWJ1dGUgaXMgbm90IHVzZWQgb24gYW55IEhUTUwgZWxlbWVudC5cbiAgICovXG4gIG5vQWNjZXNzS2V5PzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRW5mb3JjZSB0aGF0IGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGlzIG5vdCBzZXQgb24gZm9jdXNhYmxlIGVsZW1lbnRzLlxuICAgKi9cbiAgbm9BcmlhSGlkZGVuT25Gb2N1c2FibGU/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBFbmZvcmNlIHRoYXQgZWxlbWVudHMgdGhhdCBkbyBub3Qgc3VwcG9ydCBBUklBIHJvbGVzLCBzdGF0ZXMsIGFuZCBwcm9wZXJ0aWVzIGRvIG5vdCBoYXZlIHRob3NlIGF0dHJpYnV0ZXMuXG4gICAqL1xuICBub0FyaWFVbnN1cHBvcnRlZEVsZW1lbnRzPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRW5mb3JjZSB0aGF0IGF1dG9Gb2N1cyBwcm9wIGlzIG5vdCB1c2VkIG9uIGVsZW1lbnRzLlxuICAgKi9cbiAgbm9BdXRvZm9jdXM/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyB0YXJnZXQ9XCJfYmxhbmtcIiBhdHRyaWJ1dGUgd2l0aG91dCByZWw9XCJub3JlZmVycmVyXCJcbiAgICovXG4gIG5vQmxhbmtUYXJnZXQ/OiBJQWxsb3dEb21haW5Db25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRW5mb3JjZXMgdGhhdCBubyBkaXN0cmFjdGluZyBlbGVtZW50cyBhcmUgdXNlZC5cbiAgICovXG4gIG5vRGlzdHJhY3RpbmdFbGVtZW50cz86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFRoZSBzY29wZSBwcm9wIHNob3VsZCBiZSB1c2VkIG9ubHkgb24gXFw8dGg+IGVsZW1lbnRzLlxuICAgKi9cbiAgbm9IZWFkZXJTY29wZT86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEVuZm9yY2UgdGhhdCBub24taW50ZXJhY3RpdmUgQVJJQSByb2xlcyBhcmUgbm90IGFzc2lnbmVkIHRvIGludGVyYWN0aXZlIEhUTUwgZWxlbWVudHMuXG4gICAqL1xuICBub0ludGVyYWN0aXZlRWxlbWVudFRvTm9uaW50ZXJhY3RpdmVSb2xlPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRW5mb3JjZSB0aGF0IGEgbGFiZWwgZWxlbWVudCBvciBjb21wb25lbnQgaGFzIGEgdGV4dCBsYWJlbCBhbmQgYW4gYXNzb2NpYXRlZCBpbnB1dC5cbiAgICovXG4gIG5vTGFiZWxXaXRob3V0Q29udHJvbD86IElOb0xhYmVsV2l0aG91dENvbnRyb2xDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRW5mb3JjZSB0aGF0IGludGVyYWN0aXZlIEFSSUEgcm9sZXMgYXJlIG5vdCBhc3NpZ25lZCB0byBub24taW50ZXJhY3RpdmUgSFRNTCBlbGVtZW50cy5cbiAgICovXG4gIG5vTm9uaW50ZXJhY3RpdmVFbGVtZW50VG9JbnRlcmFjdGl2ZVJvbGU/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBFbmZvcmNlIHRoYXQgdGFiSW5kZXggaXMgbm90IGFzc2lnbmVkIHRvIG5vbi1pbnRlcmFjdGl2ZSBIVE1MIGVsZW1lbnRzLlxuICAgKi9cbiAgbm9Ob25pbnRlcmFjdGl2ZVRhYmluZGV4PzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogUHJldmVudCB0aGUgdXNhZ2Ugb2YgcG9zaXRpdmUgaW50ZWdlcnMgb24gdGFiSW5kZXggcHJvcGVydHlcbiAgICovXG4gIG5vUG9zaXRpdmVUYWJpbmRleD86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEVuZm9yY2UgaW1nIGFsdCBwcm9wIGRvZXMgbm90IGNvbnRhaW4gdGhlIHdvcmQgXCJpbWFnZVwiLCBcInBpY3R1cmVcIiwgb3IgXCJwaG90b1wiLlxuICAgKi9cbiAgbm9SZWR1bmRhbnRBbHQ/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBFbmZvcmNlIGV4cGxpY2l0IHJvbGUgcHJvcGVydHkgaXMgbm90IHRoZSBzYW1lIGFzIGltcGxpY2l0L2RlZmF1bHQgcm9sZSBwcm9wZXJ0eSBvbiBhbiBlbGVtZW50LlxuICAgKi9cbiAgbm9SZWR1bmRhbnRSb2xlcz86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEVuZm9yY2VzIHRoZSB1c2FnZSBvZiB0aGUgdGl0bGUgZWxlbWVudCBmb3IgdGhlIHN2ZyBlbGVtZW50LlxuICAgKi9cbiAgbm9TdmdXaXRob3V0VGl0bGU/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBJdCBlbmFibGVzIHRoZSByZWNvbW1lbmRlZCBydWxlcyBmb3IgdGhpcyBncm91cFxuICAgKi9cbiAgcmVjb21tZW5kZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogRW5mb3JjZSB0aGF0IGFsbCBlbGVtZW50cyB0aGF0IHJlcXVpcmUgYWx0ZXJuYXRpdmUgdGV4dCBoYXZlIG1lYW5pbmdmdWwgaW5mb3JtYXRpb24gdG8gcmVsYXkgYmFjayB0byB0aGUgZW5kIHVzZXIuXG4gICAqL1xuICB1c2VBbHRUZXh0PzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRW5mb3JjZSB0aGF0IGFuY2hvcnMgaGF2ZSBjb250ZW50IGFuZCB0aGF0IHRoZSBjb250ZW50IGlzIGFjY2Vzc2libGUgdG8gc2NyZWVuIHJlYWRlcnMuXG4gICAqL1xuICB1c2VBbmNob3JDb250ZW50PzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRW5mb3JjZSB0aGF0IHRhYkluZGV4IGlzIGFzc2lnbmVkIHRvIG5vbi1pbnRlcmFjdGl2ZSBIVE1MIGVsZW1lbnRzIHdpdGggYXJpYS1hY3RpdmVkZXNjZW5kYW50LlxuICAgKi9cbiAgdXNlQXJpYUFjdGl2ZWRlc2NlbmRhbnRXaXRoVGFiaW5kZXg/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBFbmZvcmNlIHRoYXQgZWxlbWVudHMgd2l0aCBBUklBIHJvbGVzIG11c3QgaGF2ZSBhbGwgcmVxdWlyZWQgQVJJQSBhdHRyaWJ1dGVzIGZvciB0aGF0IHJvbGUuXG4gICAqL1xuICB1c2VBcmlhUHJvcHNGb3JSb2xlPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRW5mb3JjZXMgdGhlIHVzYWdlIG9mIHRoZSBhdHRyaWJ1dGUgdHlwZSBmb3IgdGhlIGVsZW1lbnQgYnV0dG9uXG4gICAqL1xuICB1c2VCdXR0b25UeXBlPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRWxlbWVudHMgd2l0aCBhbiBpbnRlcmFjdGl2ZSByb2xlIGFuZCBpbnRlcmFjdGlvbiBoYW5kbGVycyBtdXN0IGJlIGZvY3VzYWJsZS5cbiAgICovXG4gIHVzZUZvY3VzYWJsZUludGVyYWN0aXZlPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgYSBtaXNzaW5nIGdlbmVyaWMgZmFtaWx5IGtleXdvcmQgd2l0aGluIGZvbnQgZmFtaWxpZXMuXG4gICAqL1xuICB1c2VHZW5lcmljRm9udE5hbWVzPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRW5mb3JjZSB0aGF0IGhlYWRpbmcgZWxlbWVudHMgKGgxLCBoMiwgZXRjLikgaGF2ZSBjb250ZW50IGFuZCB0aGF0IHRoZSBjb250ZW50IGlzIGFjY2Vzc2libGUgdG8gc2NyZWVuIHJlYWRlcnMuIEFjY2Vzc2libGUgbWVhbnMgdGhhdCBpdCBpcyBub3QgaGlkZGVuIHVzaW5nIHRoZSBhcmlhLWhpZGRlbiBwcm9wLlxuICAgKi9cbiAgdXNlSGVhZGluZ0NvbnRlbnQ/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBFbmZvcmNlIHRoYXQgaHRtbCBlbGVtZW50IGhhcyBsYW5nIGF0dHJpYnV0ZS5cbiAgICovXG4gIHVzZUh0bWxMYW5nPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRW5mb3JjZXMgdGhlIHVzYWdlIG9mIHRoZSBhdHRyaWJ1dGUgdGl0bGUgZm9yIHRoZSBlbGVtZW50IGlmcmFtZS5cbiAgICovXG4gIHVzZUlmcmFtZVRpdGxlPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRW5mb3JjZSBvbkNsaWNrIGlzIGFjY29tcGFuaWVkIGJ5IGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nOiBvbktleVVwLCBvbktleURvd24sIG9uS2V5UHJlc3MuXG4gICAqL1xuICB1c2VLZXlXaXRoQ2xpY2tFdmVudHM/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBFbmZvcmNlIG9uTW91c2VPdmVyIC8gb25Nb3VzZU91dCBhcmUgYWNjb21wYW5pZWQgYnkgb25Gb2N1cyAvIG9uQmx1ci5cbiAgICovXG4gIHVzZUtleVdpdGhNb3VzZUV2ZW50cz86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEVuZm9yY2VzIHRoYXQgYXVkaW8gYW5kIHZpZGVvIGVsZW1lbnRzIG11c3QgaGF2ZSBhIHRyYWNrIGZvciBjYXB0aW9ucy5cbiAgICovXG4gIHVzZU1lZGlhQ2FwdGlvbj86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEl0IGRldGVjdHMgdGhlIHVzZSBvZiByb2xlIGF0dHJpYnV0ZXMgaW4gSlNYIGVsZW1lbnRzIGFuZCBzdWdnZXN0cyB1c2luZyBzZW1hbnRpYyBlbGVtZW50cyBpbnN0ZWFkLlxuICAgKi9cbiAgdXNlU2VtYW50aWNFbGVtZW50cz86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEVuZm9yY2UgdGhhdCBhbGwgYW5jaG9ycyBhcmUgdmFsaWQsIGFuZCB0aGV5IGFyZSBuYXZpZ2FibGUgZWxlbWVudHMuXG4gICAqL1xuICB1c2VWYWxpZEFuY2hvcj86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEVuc3VyZXMgdGhhdCBBUklBIHByb3BlcnRpZXMgYXJpYS0qIGFyZSBhbGwgdmFsaWQuXG4gICAqL1xuICB1c2VWYWxpZEFyaWFQcm9wcz86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEVsZW1lbnRzIHdpdGggQVJJQSByb2xlcyBtdXN0IHVzZSBhIHZhbGlkLCBub24tYWJzdHJhY3QgQVJJQSByb2xlLlxuICAgKi9cbiAgdXNlVmFsaWRBcmlhUm9sZT86IElWYWxpZEFyaWFSb2xlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEVuZm9yY2UgdGhhdCBBUklBIHN0YXRlIGFuZCBwcm9wZXJ0eSB2YWx1ZXMgYXJlIHZhbGlkLlxuICAgKi9cbiAgdXNlVmFsaWRBcmlhVmFsdWVzPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRW5zdXJlIHRoYXQgdGhlIGF0dHJpYnV0ZSBwYXNzZWQgdG8gdGhlIGxhbmcgYXR0cmlidXRlIGlzIGEgY29ycmVjdCBJU08gbGFuZ3VhZ2UgYW5kL29yIGNvdW50cnkuXG4gICAqL1xuICB1c2VWYWxpZExhbmc/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG59XG5leHBvcnQgaW50ZXJmYWNlIElSdWxlV2l0aEZpeE5vT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUga2luZCBvZiB0aGUgY29kZSBhY3Rpb25zIGVtaXR0ZWQgYnkgdGhlIHJ1bGVcbiAgICovXG4gIGZpeD86IElGaXhLaW5kO1xuICAvKipcbiAgICogVGhlIHNldmVyaXR5IG9mIHRoZSBlbWl0dGVkIGRpYWdub3N0aWNzIGJ5IHRoZSBydWxlXG4gICAqL1xuICBsZXZlbDogSVJ1bGVQbGFpbkNvbmZpZ3VyYXRpb247XG59XG5leHBvcnQgaW50ZXJmYWNlIElSdWxlV2l0aEFsbG93RG9tYWluT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUga2luZCBvZiB0aGUgY29kZSBhY3Rpb25zIGVtaXR0ZWQgYnkgdGhlIHJ1bGVcbiAgICovXG4gIGZpeD86IElGaXhLaW5kO1xuICAvKipcbiAgICogVGhlIHNldmVyaXR5IG9mIHRoZSBlbWl0dGVkIGRpYWdub3N0aWNzIGJ5IHRoZSBydWxlXG4gICAqL1xuICBsZXZlbDogSVJ1bGVQbGFpbkNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBSdWxlJ3Mgb3B0aW9uc1xuICAgKi9cbiAgb3B0aW9ucz86IElBbGxvd0RvbWFpbk9wdGlvbnM7XG59XG5leHBvcnQgaW50ZXJmYWNlIElBbGxvd0RvbWFpbk9wdGlvbnMge1xuICAvKipcbiAgICogTGlzdCBvZiBkb21haW5zIHRvIGFsbG93IGB0YXJnZXQ9XCJfYmxhbmtcImAgd2l0aG91dCBgcmVsPVwibm9yZWZlcnJlclwiYFxuICAgKi9cbiAgYWxsb3dEb21haW5zPzogc3RyaW5nW107XG59XG5leHBvcnQgaW50ZXJmYWNlIElSdWxlV2l0aE5vTGFiZWxXaXRob3V0Q29udHJvbE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHNldmVyaXR5IG9mIHRoZSBlbWl0dGVkIGRpYWdub3N0aWNzIGJ5IHRoZSBydWxlXG4gICAqL1xuICBsZXZlbDogSVJ1bGVQbGFpbkNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBSdWxlJ3Mgb3B0aW9uc1xuICAgKi9cbiAgb3B0aW9ucz86IElOb0xhYmVsV2l0aG91dENvbnRyb2xPcHRpb25zO1xufVxuZXhwb3J0IGludGVyZmFjZSBJTm9MYWJlbFdpdGhvdXRDb250cm9sT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBcnJheSBvZiBjb21wb25lbnQgbmFtZXMgdGhhdCBzaG91bGQgYmUgY29uc2lkZXJlZCB0aGUgc2FtZSBhcyBhbiBgaW5wdXRgIGVsZW1lbnQuXG4gICAqL1xuICBpbnB1dENvbXBvbmVudHM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIEFycmF5IG9mIGF0dHJpYnV0ZXMgdGhhdCBzaG91bGQgYmUgdHJlYXRlZCBhcyB0aGUgYGxhYmVsYCBhY2Nlc3NpYmxlIHRleHQgY29udGVudC5cbiAgICovXG4gIGxhYmVsQXR0cmlidXRlcz86IHN0cmluZ1tdO1xuICAvKipcbiAgICogQXJyYXkgb2YgY29tcG9uZW50IG5hbWVzIHRoYXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgdGhlIHNhbWUgYXMgYSBgbGFiZWxgIGVsZW1lbnQuXG4gICAqL1xuICBsYWJlbENvbXBvbmVudHM/OiBzdHJpbmdbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSVJ1bGVXaXRoTm9PcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBzZXZlcml0eSBvZiB0aGUgZW1pdHRlZCBkaWFnbm9zdGljcyBieSB0aGUgcnVsZVxuICAgKi9cbiAgbGV2ZWw6IElSdWxlUGxhaW5Db25maWd1cmF0aW9uO1xufVxuZXhwb3J0IGludGVyZmFjZSBJUnVsZVdpdGhWYWxpZEFyaWFSb2xlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUga2luZCBvZiB0aGUgY29kZSBhY3Rpb25zIGVtaXR0ZWQgYnkgdGhlIHJ1bGVcbiAgICovXG4gIGZpeD86IElGaXhLaW5kO1xuICAvKipcbiAgICogVGhlIHNldmVyaXR5IG9mIHRoZSBlbWl0dGVkIGRpYWdub3N0aWNzIGJ5IHRoZSBydWxlXG4gICAqL1xuICBsZXZlbDogSVJ1bGVQbGFpbkNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBSdWxlJ3Mgb3B0aW9uc1xuICAgKi9cbiAgb3B0aW9ucz86IElWYWxpZEFyaWFSb2xlT3B0aW9ucztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSVZhbGlkQXJpYVJvbGVPcHRpb25zIHtcbiAgYWxsb3dJbnZhbGlkUm9sZXM/OiBzdHJpbmdbXTtcbiAgaWdub3JlTm9uRG9tPzogYm9vbGVhbjtcbn1cbi8qKlxuICogQSBsaXN0IG9mIHJ1bGVzIHRoYXQgYmVsb25nIHRvIHRoaXMgZ3JvdXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ29tcGxleGl0eSB7XG4gIC8qKlxuICAgKiBJdCBlbmFibGVzIEFMTCBydWxlcyBmb3IgdGhpcyBncm91cC5cbiAgICovXG4gIGFsbD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEaXNhbGxvdyBwcmltaXRpdmUgdHlwZSBhbGlhc2VzIGFuZCBtaXNsZWFkaW5nIHR5cGVzLlxuICAgKi9cbiAgbm9CYW5uZWRUeXBlcz86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IGVtcHR5IHR5cGUgcGFyYW1ldGVycyBpbiB0eXBlIGFsaWFzZXMgYW5kIGludGVyZmFjZXMuXG4gICAqL1xuICBub0VtcHR5VHlwZVBhcmFtZXRlcnM/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyBmdW5jdGlvbnMgdGhhdCBleGNlZWQgYSBnaXZlbiBDb2duaXRpdmUgQ29tcGxleGl0eSBzY29yZS5cbiAgICovXG4gIG5vRXhjZXNzaXZlQ29nbml0aXZlQ29tcGxleGl0eT86IElDb21wbGV4aXR5Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFRoaXMgcnVsZSBlbmZvcmNlcyBhIG1heGltdW0gZGVwdGggdG8gbmVzdGVkIGRlc2NyaWJlKCkgaW4gdGVzdCBmaWxlcy5cbiAgICovXG4gIG5vRXhjZXNzaXZlTmVzdGVkVGVzdFN1aXRlcz86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHVubmVjZXNzYXJ5IGJvb2xlYW4gY2FzdHNcbiAgICovXG4gIG5vRXh0cmFCb29sZWFuQ2FzdD86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFByZWZlciBmb3IuLi5vZiBzdGF0ZW1lbnQgaW5zdGVhZCBvZiBBcnJheS5mb3JFYWNoLlxuICAgKi9cbiAgbm9Gb3JFYWNoPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdW5jbGVhciB1c2FnZSBvZiBjb25zZWN1dGl2ZSBzcGFjZSBjaGFyYWN0ZXJzIGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaXRlcmFsc1xuICAgKi9cbiAgbm9NdWx0aXBsZVNwYWNlc0luUmVndWxhckV4cHJlc3Npb25MaXRlcmFscz86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFRoaXMgcnVsZSByZXBvcnRzIHdoZW4gYSBjbGFzcyBoYXMgbm8gbm9uLXN0YXRpYyBtZW1iZXJzLCBzdWNoIGFzIGZvciBhIGNsYXNzIHVzZWQgZXhjbHVzaXZlbHkgYXMgYSBzdGF0aWMgbmFtZXNwYWNlLlxuICAgKi9cbiAgbm9TdGF0aWNPbmx5Q2xhc3M/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyB0aGlzIGFuZCBzdXBlciBpbiBzdGF0aWMgY29udGV4dHMuXG4gICAqL1xuICBub1RoaXNJblN0YXRpYz86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHVubmVjZXNzYXJ5IGNhdGNoIGNsYXVzZXMuXG4gICAqL1xuICBub1VzZWxlc3NDYXRjaD86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHVubmVjZXNzYXJ5IGNvbnN0cnVjdG9ycy5cbiAgICovXG4gIG5vVXNlbGVzc0NvbnN0cnVjdG9yPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgZW1wdHkgZXhwb3J0cyB0aGF0IGRvbid0IGNoYW5nZSBhbnl0aGluZyBpbiBhIG1vZHVsZSBmaWxlLlxuICAgKi9cbiAgbm9Vc2VsZXNzRW1wdHlFeHBvcnQ/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyB1bm5lY2Vzc2FyeSBmcmFnbWVudHNcbiAgICovXG4gIG5vVXNlbGVzc0ZyYWdtZW50cz86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHVubmVjZXNzYXJ5IGxhYmVscy5cbiAgICovXG4gIG5vVXNlbGVzc0xhYmVsPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdW5uZWNlc3NhcnkgbmVzdGVkIGJsb2NrIHN0YXRlbWVudHMuXG4gICAqL1xuICBub1VzZWxlc3NMb25lQmxvY2tTdGF0ZW1lbnRzPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgcmVuYW1pbmcgaW1wb3J0LCBleHBvcnQsIGFuZCBkZXN0cnVjdHVyZWQgYXNzaWdubWVudHMgdG8gdGhlIHNhbWUgbmFtZS5cbiAgICovXG4gIG5vVXNlbGVzc1JlbmFtZT86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHVubmVjZXNzYXJ5IGNvbmNhdGVuYXRpb24gb2Ygc3RyaW5nIG9yIHRlbXBsYXRlIGxpdGVyYWxzLlxuICAgKi9cbiAgbm9Vc2VsZXNzU3RyaW5nQ29uY2F0PzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdXNlbGVzcyBjYXNlIGluIHN3aXRjaCBzdGF0ZW1lbnRzLlxuICAgKi9cbiAgbm9Vc2VsZXNzU3dpdGNoQ2FzZT86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHRlcm5hcnkgb3BlcmF0b3JzIHdoZW4gc2ltcGxlciBhbHRlcm5hdGl2ZXMgZXhpc3QuXG4gICAqL1xuICBub1VzZWxlc3NUZXJuYXJ5PzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdXNlbGVzcyB0aGlzIGFsaWFzaW5nLlxuICAgKi9cbiAgbm9Vc2VsZXNzVGhpc0FsaWFzPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdXNpbmcgYW55IG9yIHVua25vd24gYXMgdHlwZSBjb25zdHJhaW50LlxuICAgKi9cbiAgbm9Vc2VsZXNzVHlwZUNvbnN0cmFpbnQ/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyBpbml0aWFsaXppbmcgdmFyaWFibGVzIHRvIHVuZGVmaW5lZC5cbiAgICovXG4gIG5vVXNlbGVzc1VuZGVmaW5lZEluaXRpYWxpemF0aW9uPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdGhlIHVzZSBvZiB2b2lkIG9wZXJhdG9ycywgd2hpY2ggaXMgbm90IGEgZmFtaWxpYXIgb3BlcmF0b3IuXG4gICAqL1xuICBub1ZvaWQ/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyB3aXRoIHN0YXRlbWVudHMgaW4gbm9uLXN0cmljdCBjb250ZXh0cy5cbiAgICovXG4gIG5vV2l0aD86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEl0IGVuYWJsZXMgdGhlIHJlY29tbWVuZGVkIHJ1bGVzIGZvciB0aGlzIGdyb3VwXG4gICAqL1xuICByZWNvbW1lbmRlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBVc2UgYXJyb3cgZnVuY3Rpb25zIG92ZXIgZnVuY3Rpb24gZXhwcmVzc2lvbnMuXG4gICAqL1xuICB1c2VBcnJvd0Z1bmN0aW9uPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogVXNlIERhdGUubm93KCkgdG8gZ2V0IHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNpbmNlIHRoZSBVbml4IEVwb2NoLlxuICAgKi9cbiAgdXNlRGF0ZU5vdz86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFByb21vdGVzIHRoZSB1c2Ugb2YgLmZsYXRNYXAoKSB3aGVuIG1hcCgpLmZsYXQoKSBhcmUgdXNlZCB0b2dldGhlci5cbiAgICovXG4gIHVzZUZsYXRNYXA/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBFbmZvcmNlIHRoZSB1c2FnZSBvZiBhIGxpdGVyYWwgYWNjZXNzIHRvIHByb3BlcnRpZXMgb3ZlciBjb21wdXRlZCBwcm9wZXJ0eSBhY2Nlc3MuXG4gICAqL1xuICB1c2VMaXRlcmFsS2V5cz86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEVuZm9yY2UgdXNpbmcgY29uY2lzZSBvcHRpb25hbCBjaGFpbiBpbnN0ZWFkIG9mIGNoYWluZWQgbG9naWNhbCBleHByZXNzaW9ucy5cbiAgICovXG4gIHVzZU9wdGlvbmFsQ2hhaW4/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBFbmZvcmNlIHRoZSB1c2Ugb2YgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaXRlcmFscyBpbnN0ZWFkIG9mIHRoZSBSZWdFeHAgY29uc3RydWN0b3IgaWYgcG9zc2libGUuXG4gICAqL1xuICB1c2VSZWdleExpdGVyYWxzPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgbnVtYmVyIGxpdGVyYWwgb2JqZWN0IG1lbWJlciBuYW1lcyB3aGljaCBhcmUgbm90IGJhc2UxMCBvciB1c2VzIHVuZGVyc2NvcmUgYXMgc2VwYXJhdG9yXG4gICAqL1xuICB1c2VTaW1wbGVOdW1iZXJLZXlzPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzY2FyZCByZWR1bmRhbnQgdGVybXMgZnJvbSBsb2dpY2FsIGV4cHJlc3Npb25zLlxuICAgKi9cbiAgdXNlU2ltcGxpZmllZExvZ2ljRXhwcmVzc2lvbj86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSVJ1bGVXaXRoQ29tcGxleGl0eU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHNldmVyaXR5IG9mIHRoZSBlbWl0dGVkIGRpYWdub3N0aWNzIGJ5IHRoZSBydWxlXG4gICAqL1xuICBsZXZlbDogSVJ1bGVQbGFpbkNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBSdWxlJ3Mgb3B0aW9uc1xuICAgKi9cbiAgb3B0aW9ucz86IElDb21wbGV4aXR5T3B0aW9ucztcbn1cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIHJ1bGUgYG5vRXhjZXNzaXZlQ29nbml0aXZlQ29tcGxleGl0eWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbXBsZXhpdHlPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGNvbXBsZXhpdHkgc2NvcmUgdGhhdCB3ZSBhbGxvdy4gQW55dGhpbmcgaGlnaGVyIGlzIGNvbnNpZGVyZWQgZXhjZXNzaXZlLlxuICAgKi9cbiAgbWF4QWxsb3dlZENvbXBsZXhpdHk/OiBudW1iZXI7XG59XG4vKipcbiAqIEEgbGlzdCBvZiBydWxlcyB0aGF0IGJlbG9uZyB0byB0aGlzIGdyb3VwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvcnJlY3RuZXNzIHtcbiAgLyoqXG4gICAqIEl0IGVuYWJsZXMgQUxMIHJ1bGVzIGZvciB0aGlzIGdyb3VwLlxuICAgKi9cbiAgYWxsPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFByZXZlbnQgcGFzc2luZyBvZiBjaGlsZHJlbiBhcyBwcm9wcy5cbiAgICovXG4gIG5vQ2hpbGRyZW5Qcm9wPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogUHJldmVudHMgZnJvbSBoYXZpbmcgY29uc3QgdmFyaWFibGVzIGJlaW5nIHJlLWFzc2lnbmVkLlxuICAgKi9cbiAgbm9Db25zdEFzc2lnbj86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IGNvbnN0YW50IGV4cHJlc3Npb25zIGluIGNvbmRpdGlvbnNcbiAgICovXG4gIG5vQ29uc3RhbnRDb25kaXRpb24/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyB0aGUgdXNlIG9mIE1hdGgubWluIGFuZCBNYXRoLm1heCB0byBjbGFtcCBhIHZhbHVlIHdoZXJlIHRoZSByZXN1bHQgaXRzZWxmIGlzIGNvbnN0YW50LlxuICAgKi9cbiAgbm9Db25zdGFudE1hdGhNaW5NYXhDbGFtcD86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHJldHVybmluZyBhIHZhbHVlIGZyb20gYSBjb25zdHJ1Y3Rvci5cbiAgICovXG4gIG5vQ29uc3RydWN0b3JSZXR1cm4/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyBlbXB0eSBjaGFyYWN0ZXIgY2xhc3NlcyBpbiByZWd1bGFyIGV4cHJlc3Npb24gbGl0ZXJhbHMuXG4gICAqL1xuICBub0VtcHR5Q2hhcmFjdGVyQ2xhc3NJblJlZ2V4PzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3dzIGVtcHR5IGRlc3RydWN0dXJpbmcgcGF0dGVybnMuXG4gICAqL1xuICBub0VtcHR5UGF0dGVybj86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHRvIHVzZSB1bm5lY2Vzc2FyeSBjYWxsYmFjayBvbiBmbGF0TWFwLlxuICAgKi9cbiAgbm9GbGF0TWFwSWRlbnRpdHk/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyBjYWxsaW5nIGdsb2JhbCBvYmplY3QgcHJvcGVydGllcyBhcyBmdW5jdGlvbnNcbiAgICovXG4gIG5vR2xvYmFsT2JqZWN0Q2FsbHM/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyBmdW5jdGlvbiBhbmQgdmFyIGRlY2xhcmF0aW9ucyB0aGF0IGFyZSBhY2Nlc3NpYmxlIG91dHNpZGUgdGhlaXIgYmxvY2suXG4gICAqL1xuICBub0lubmVyRGVjbGFyYXRpb25zPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRW5zdXJlIHRoYXQgYnVpbHRpbnMgYXJlIGNvcnJlY3RseSBpbnN0YW50aWF0ZWQuXG4gICAqL1xuICBub0ludmFsaWRCdWlsdGluSW5zdGFudGlhdGlvbj86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFByZXZlbnRzIHRoZSBpbmNvcnJlY3QgdXNlIG9mIHN1cGVyKCkgaW5zaWRlIGNsYXNzZXMuIEl0IGFsc28gY2hlY2tzIHdoZXRoZXIgYSBjYWxsIHN1cGVyKCkgaXMgbWlzc2luZyBmcm9tIGNsYXNzZXMgdGhhdCBleHRlbmRzIG90aGVyIGNvbnN0cnVjdG9ycy5cbiAgICovXG4gIG5vSW52YWxpZENvbnN0cnVjdG9yU3VwZXI/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyBub24tc3RhbmRhcmQgZGlyZWN0aW9uIHZhbHVlcyBmb3IgbGluZWFyIGdyYWRpZW50IGZ1bmN0aW9ucy5cbiAgICovXG4gIG5vSW52YWxpZERpcmVjdGlvbkluTGluZWFyR3JhZGllbnQ/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvd3MgaW52YWxpZCBuYW1lZCBncmlkIGFyZWFzIGluIENTUyBHcmlkIExheW91dHMuXG4gICAqL1xuICBub0ludmFsaWRHcmlkQXJlYXM/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyBuZXcgb3BlcmF0b3JzIHdpdGggZ2xvYmFsIG5vbi1jb25zdHJ1Y3RvciBmdW5jdGlvbnMuXG4gICAqL1xuICBub0ludmFsaWROZXdCdWlsdGluPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdGhlIHVzZSBvZiBAaW1wb3J0IGF0LXJ1bGVzIGluIGludmFsaWQgcG9zaXRpb25zLlxuICAgKi9cbiAgbm9JbnZhbGlkUG9zaXRpb25BdEltcG9ydFJ1bGU/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyB0aGUgdXNlIG9mIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb24gcGFyYW1ldGVycyBiZWZvcmUgdGhlaXIgZGVjbGFyYXRpb25cbiAgICovXG4gIG5vSW52YWxpZFVzZUJlZm9yZURlY2xhcmF0aW9uPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgbmV3IG9wZXJhdG9ycyB3aXRoIHRoZSBTeW1ib2wgb2JqZWN0LlxuICAgKi9cbiAgbm9OZXdTeW1ib2w/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBGb3JiaWQgdGhlIHVzZSBvZiBOb2RlLmpzIGJ1aWx0aW4gbW9kdWxlcy5cbiAgICovXG4gIG5vTm9kZWpzTW9kdWxlcz86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IFxcOCBhbmQgXFw5IGVzY2FwZSBzZXF1ZW5jZXMgaW4gc3RyaW5nIGxpdGVyYWxzLlxuICAgKi9cbiAgbm9Ob25vY3RhbERlY2ltYWxFc2NhcGU/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyBsaXRlcmFsIG51bWJlcnMgdGhhdCBsb3NlIHByZWNpc2lvblxuICAgKi9cbiAgbm9QcmVjaXNpb25Mb3NzPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogUHJldmVudCB0aGUgdXNhZ2Ugb2YgdGhlIHJldHVybiB2YWx1ZSBvZiBSZWFjdC5yZW5kZXIuXG4gICAqL1xuICBub1JlbmRlclJldHVyblZhbHVlPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgYXNzaWdubWVudHMgd2hlcmUgYm90aCBzaWRlcyBhcmUgZXhhY3RseSB0aGUgc2FtZS5cbiAgICovXG4gIG5vU2VsZkFzc2lnbj86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHJldHVybmluZyBhIHZhbHVlIGZyb20gYSBzZXR0ZXJcbiAgICovXG4gIG5vU2V0dGVyUmV0dXJuPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgY29tcGFyaXNvbiBvZiBleHByZXNzaW9ucyBtb2RpZnlpbmcgdGhlIHN0cmluZyBjYXNlIHdpdGggbm9uLWNvbXBsaWFudCB2YWx1ZS5cbiAgICovXG4gIG5vU3RyaW5nQ2FzZU1pc21hdGNoPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgbGV4aWNhbCBkZWNsYXJhdGlvbnMgaW4gc3dpdGNoIGNsYXVzZXMuXG4gICAqL1xuICBub1N3aXRjaERlY2xhcmF0aW9ucz86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHRoZSB1c2Ugb2YgZGVwZW5kZW5jaWVzIHRoYXQgYXJlbid0IHNwZWNpZmllZCBpbiB0aGUgcGFja2FnZS5qc29uLlxuICAgKi9cbiAgbm9VbmRlY2xhcmVkRGVwZW5kZW5jaWVzPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogUHJldmVudHMgdGhlIHVzYWdlIG9mIHZhcmlhYmxlcyB0aGF0IGhhdmVuJ3QgYmVlbiBkZWNsYXJlZCBpbnNpZGUgdGhlIGRvY3VtZW50LlxuICAgKi9cbiAgbm9VbmRlY2xhcmVkVmFyaWFibGVzPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdW5rbm93biBDU1MgdmFsdWUgZnVuY3Rpb25zLlxuICAgKi9cbiAgbm9Vbmtub3duRnVuY3Rpb24/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyB1bmtub3duIG1lZGlhIGZlYXR1cmUgbmFtZXMuXG4gICAqL1xuICBub1Vua25vd25NZWRpYUZlYXR1cmVOYW1lPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdW5rbm93biBwcm9wZXJ0aWVzLlxuICAgKi9cbiAgbm9Vbmtub3duUHJvcGVydHk/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyB1bmtub3duIENTUyB1bml0cy5cbiAgICovXG4gIG5vVW5rbm93blVuaXQ/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyB1bm1hdGNoYWJsZSBBbitCIHNlbGVjdG9ycy5cbiAgICovXG4gIG5vVW5tYXRjaGFibGVBbmJTZWxlY3Rvcj86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEF2b2lkIHVzaW5nIHVubmVjZXNzYXJ5IGNvbnRpbnVlLlxuICAgKi9cbiAgbm9Vbm5lY2Vzc2FyeUNvbnRpbnVlPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdW5yZWFjaGFibGUgY29kZVxuICAgKi9cbiAgbm9VbnJlYWNoYWJsZT86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEVuc3VyZXMgdGhlIHN1cGVyKCkgY29uc3RydWN0b3IgaXMgY2FsbGVkIGV4YWN0bHkgb25jZSBvbiBldmVyeSBjb2RlICBwYXRoIGluIGEgY2xhc3MgY29uc3RydWN0b3IgYmVmb3JlIHRoaXMgaXMgYWNjZXNzZWQgaWYgdGhlIGNsYXNzIGhhcyBhIHN1cGVyY2xhc3NcbiAgICovXG4gIG5vVW5yZWFjaGFibGVTdXBlcj86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IGNvbnRyb2wgZmxvdyBzdGF0ZW1lbnRzIGluIGZpbmFsbHkgYmxvY2tzLlxuICAgKi9cbiAgbm9VbnNhZmVGaW5hbGx5PzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdGhlIHVzZSBvZiBvcHRpb25hbCBjaGFpbmluZyBpbiBjb250ZXh0cyB3aGVyZSB0aGUgdW5kZWZpbmVkIHZhbHVlIGlzIG5vdCBhbGxvd2VkLlxuICAgKi9cbiAgbm9VbnNhZmVPcHRpb25hbENoYWluaW5nPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdW51c2VkIGZ1bmN0aW9uIHBhcmFtZXRlcnMuXG4gICAqL1xuICBub1VudXNlZEZ1bmN0aW9uUGFyYW1ldGVycz86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHVudXNlZCBpbXBvcnRzLlxuICAgKi9cbiAgbm9VbnVzZWRJbXBvcnRzPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdW51c2VkIGxhYmVscy5cbiAgICovXG4gIG5vVW51c2VkTGFiZWxzPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdW51c2VkIHByaXZhdGUgY2xhc3MgbWVtYmVyc1xuICAgKi9cbiAgbm9VbnVzZWRQcml2YXRlQ2xhc3NNZW1iZXJzPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdW51c2VkIHZhcmlhYmxlcy5cbiAgICovXG4gIG5vVW51c2VkVmFyaWFibGVzPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogVGhpcyBydWxlcyBwcmV2ZW50cyB2b2lkIGVsZW1lbnRzIChBS0Egc2VsZi1jbG9zaW5nIGVsZW1lbnRzKSBmcm9tIGhhdmluZyBjaGlsZHJlbi5cbiAgICovXG4gIG5vVm9pZEVsZW1lbnRzV2l0aENoaWxkcmVuPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgcmV0dXJuaW5nIGEgdmFsdWUgZnJvbSBhIGZ1bmN0aW9uIHdpdGggdGhlIHJldHVybiB0eXBlICd2b2lkJ1xuICAgKi9cbiAgbm9Wb2lkVHlwZVJldHVybj86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEl0IGVuYWJsZXMgdGhlIHJlY29tbWVuZGVkIHJ1bGVzIGZvciB0aGlzIGdyb3VwXG4gICAqL1xuICByZWNvbW1lbmRlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEaXNhbGxvdyBBcnJheSBjb25zdHJ1Y3RvcnMuXG4gICAqL1xuICB1c2VBcnJheUxpdGVyYWxzPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRW5mb3JjZSBhbGwgZGVwZW5kZW5jaWVzIGFyZSBjb3JyZWN0bHkgc3BlY2lmaWVkIGluIGEgUmVhY3QgaG9vay5cbiAgICovXG4gIHVzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXM/OiBJVXNlRXhoYXVzdGl2ZURlcGVuZGVuY2llc0NvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBFbmZvcmNlIHRoYXQgYWxsIFJlYWN0IGhvb2tzIGFyZSBiZWluZyBjYWxsZWQgZnJvbSB0aGUgVG9wIExldmVsIGNvbXBvbmVudCBmdW5jdGlvbnMuXG4gICAqL1xuICB1c2VIb29rQXRUb3BMZXZlbD86IElEZXByZWNhdGVkSG9va3NDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRW5mb3JjZSBmaWxlIGV4dGVuc2lvbnMgZm9yIHJlbGF0aXZlIGltcG9ydHMuXG4gICAqL1xuICB1c2VJbXBvcnRFeHRlbnNpb25zPzogSVVzZUltcG9ydEV4dGVuc2lvbnNDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogUmVxdWlyZSBjYWxscyB0byBpc05hTigpIHdoZW4gY2hlY2tpbmcgZm9yIE5hTi5cbiAgICovXG4gIHVzZUlzTmFuPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgbWlzc2luZyBrZXkgcHJvcHMgaW4gaXRlcmF0b3JzL2NvbGxlY3Rpb24gbGl0ZXJhbHMuXG4gICAqL1xuICB1c2VKc3hLZXlJbkl0ZXJhYmxlPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRW5mb3JjZSBcImZvclwiIGxvb3AgdXBkYXRlIGNsYXVzZSBtb3ZpbmcgdGhlIGNvdW50ZXIgaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbi5cbiAgICovXG4gIHVzZVZhbGlkRm9yRGlyZWN0aW9uPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogUmVxdWlyZSBnZW5lcmF0b3IgZnVuY3Rpb25zIHRvIGNvbnRhaW4geWllbGQuXG4gICAqL1xuICB1c2VZaWVsZD86IElSdWxlQ29uZmlndXJhdGlvbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSVJ1bGVXaXRoVXNlRXhoYXVzdGl2ZURlcGVuZGVuY2llc09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHNldmVyaXR5IG9mIHRoZSBlbWl0dGVkIGRpYWdub3N0aWNzIGJ5IHRoZSBydWxlXG4gICAqL1xuICBsZXZlbDogSVJ1bGVQbGFpbkNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBSdWxlJ3Mgb3B0aW9uc1xuICAgKi9cbiAgb3B0aW9ucz86IElVc2VFeGhhdXN0aXZlRGVwZW5kZW5jaWVzT3B0aW9ucztcbn1cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIHJ1bGUgYHVzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXNgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVVzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXNPcHRpb25zIHtcbiAgLyoqXG4gICAqIExpc3Qgb2YgaG9va3Mgb2Ygd2hpY2ggdGhlIGRlcGVuZGVuY2llcyBzaG91bGQgYmUgdmFsaWRhdGVkLlxuICAgKi9cbiAgaG9va3M/OiBJSG9va1tdO1xuICAvKipcbiAgICogV2hldGhlciB0byByZXBvcnQgYW4gZXJyb3Igd2hlbiBhIGhvb2sgaGFzIG5vIGRlcGVuZGVuY2llcyBhcnJheS5cbiAgICovXG4gIHJlcG9ydE1pc3NpbmdEZXBlbmRlbmNpZXNBcnJheT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlcG9ydCBhbiBlcnJvciB3aGVuIGEgZGVwZW5kZW5jeSBpcyBsaXN0ZWQgaW4gdGhlIGRlcGVuZGVuY2llcyBhcnJheSBidXQgaXNuJ3QgdXNlZC4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICovXG4gIHJlcG9ydFVubmVjZXNzYXJ5RGVwZW5kZW5jaWVzPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSUhvb2sge1xuICAvKipcbiAgICogVGhlIFwicG9zaXRpb25cIiBvZiB0aGUgY2xvc3VyZSBmdW5jdGlvbiwgc3RhcnRpbmcgZnJvbSB6ZXJvLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgZm9yIFJlYWN0J3MgYHVzZUVmZmVjdCgpYCBob29rLCB0aGUgY2xvc3VyZSBpbmRleCBpcyAwLlxuICAgKi9cbiAgY2xvc3VyZUluZGV4PzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIFwicG9zaXRpb25cIiBvZiB0aGUgYXJyYXkgb2YgZGVwZW5kZW5jaWVzLCBzdGFydGluZyBmcm9tIHplcm8uXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCBmb3IgUmVhY3QncyBgdXNlRWZmZWN0KClgIGhvb2ssIHRoZSBkZXBlbmRlbmNpZXMgaW5kZXggaXMgMS5cbiAgICovXG4gIGRlcGVuZGVuY2llc0luZGV4PzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGhvb2suXG4gICAqL1xuICBuYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hldGhlciB0aGUgcmVzdWx0IG9mIHRoZSBob29rIGlzIHN0YWJsZS5cbiAgICpcbiAgICogU2V0IHRvIGB0cnVlYCB0byBtYXJrIHRoZSBpZGVudGl0eSBvZiB0aGUgaG9vaydzIHJldHVybiB2YWx1ZSBhcyBzdGFibGUsIG9yIHVzZSBhIG51bWJlci9hbiBhcnJheSBvZiBudW1iZXJzIHRvIG1hcmsgdGhlIFwicG9zaXRpb25zXCIgaW4gdGhlIHJldHVybiBhcnJheSBhcyBzdGFibGUuXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCBmb3IgUmVhY3QncyBgdXNlUmVmKClgIGhvb2sgdGhlIHZhbHVlIHdvdWxkIGJlIGB0cnVlYCwgd2hpbGUgZm9yIGB1c2VTdGF0ZSgpYCBpdCB3b3VsZCBiZSBgWzFdYC5cbiAgICovXG4gIHN0YWJsZVJlc3VsdD86IElTdGFibGVIb29rUmVzdWx0O1xufVxuZXhwb3J0IGludGVyZmFjZSBJUnVsZVdpdGhEZXByZWNhdGVkSG9va3NPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBzZXZlcml0eSBvZiB0aGUgZW1pdHRlZCBkaWFnbm9zdGljcyBieSB0aGUgcnVsZVxuICAgKi9cbiAgbGV2ZWw6IElSdWxlUGxhaW5Db25maWd1cmF0aW9uO1xuICAvKipcbiAgICogUnVsZSdzIG9wdGlvbnNcbiAgICovXG4gIG9wdGlvbnM/OiBJRGVwcmVjYXRlZEhvb2tzT3B0aW9ucztcbn1cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGB1c2VIb29rQXRUb3BMZXZlbGAgcnVsZSBoYXZlIGJlZW4gZGVwcmVjYXRlZCwgc2luY2Ugd2Ugbm93IHVzZSB0aGUgUmVhY3QgaG9vayBuYW1pbmcgY29udmVudGlvbiB0byBkZXRlcm1pbmUgd2hldGhlciBhIGZ1bmN0aW9uIGlzIGEgaG9vay5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRGVwcmVjYXRlZEhvb2tzT3B0aW9ucyB7fVxuZXhwb3J0IGludGVyZmFjZSBJUnVsZVdpdGhVc2VJbXBvcnRFeHRlbnNpb25zT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUga2luZCBvZiB0aGUgY29kZSBhY3Rpb25zIGVtaXR0ZWQgYnkgdGhlIHJ1bGVcbiAgICovXG4gIGZpeD86IElGaXhLaW5kO1xuICAvKipcbiAgICogVGhlIHNldmVyaXR5IG9mIHRoZSBlbWl0dGVkIGRpYWdub3N0aWNzIGJ5IHRoZSBydWxlXG4gICAqL1xuICBsZXZlbDogSVJ1bGVQbGFpbkNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBSdWxlJ3Mgb3B0aW9uc1xuICAgKi9cbiAgb3B0aW9ucz86IElVc2VJbXBvcnRFeHRlbnNpb25zT3B0aW9ucztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSVVzZUltcG9ydEV4dGVuc2lvbnNPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgbWFwIG9mIGN1c3RvbSBpbXBvcnQgZXh0ZW5zaW9uIG1hcHBpbmdzLCB3aGVyZSB0aGUga2V5IGlzIHRoZSBpbnNwZWN0ZWQgZmlsZSBleHRlbnNpb24sIGFuZCB0aGUgdmFsdWUgaXMgYSBwYWlyIG9mIGBtb2R1bGVgIGV4dGVuc2lvbiBhbmQgYGNvbXBvbmVudGAgaW1wb3J0IGV4dGVuc2lvblxuICAgKi9cbiAgc3VnZ2VzdGVkRXh0ZW5zaW9ucz86IHtcbiAgICBbazogc3RyaW5nXTogSVN1Z2dlc3RlZEV4dGVuc2lvbk1hcHBpbmc7XG4gIH07XG59XG5leHBvcnQgaW50ZXJmYWNlIElTdWdnZXN0ZWRFeHRlbnNpb25NYXBwaW5nIHtcbiAgLyoqXG4gICAqIEV4dGVuc2lvbiB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciBjb21wb25lbnQgZmlsZSBpbXBvcnRzXG4gICAqL1xuICBjb21wb25lbnQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBFeHRlbnNpb24gdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgbW9kdWxlIGltcG9ydHNcbiAgICovXG4gIG1vZHVsZT86IHN0cmluZztcbn1cbi8qKlxuICogQSBsaXN0IG9mIHJ1bGVzIHRoYXQgYmVsb25nIHRvIHRoaXMgZ3JvdXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTnVyc2VyeSB7XG4gIC8qKlxuICAgKiBJdCBlbmFibGVzIEFMTCBydWxlcyBmb3IgdGhpcyBncm91cC5cbiAgICovXG4gIGFsbD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEaXNhbGxvdyB1c2Ugb2YgQ29tbW9uSnMgbW9kdWxlIHN5c3RlbSBpbiBmYXZvciBvZiBFU00gc3R5bGUgaW1wb3J0cy5cbiAgICovXG4gIG5vQ29tbW9uSnM/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyBhIGxvd2VyIHNwZWNpZmljaXR5IHNlbGVjdG9yIGZyb20gY29taW5nIGFmdGVyIGEgaGlnaGVyIHNwZWNpZmljaXR5IHNlbGVjdG9yLlxuICAgKi9cbiAgbm9EZXNjZW5kaW5nU3BlY2lmaWNpdHk/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyBkaXJlY3QgYXNzaWdubWVudHMgdG8gZG9jdW1lbnQuY29va2llLlxuICAgKi9cbiAgbm9Eb2N1bWVudENvb2tpZT86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFByZXZlbnRzIGltcG9ydGluZyBuZXh0L2RvY3VtZW50IG91dHNpZGUgb2YgcGFnZXMvX2RvY3VtZW50LmpzeCBpbiBOZXh0LmpzIHByb2plY3RzLlxuICAgKi9cbiAgbm9Eb2N1bWVudEltcG9ydEluUGFnZT86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IGR1cGxpY2F0ZSBjdXN0b20gcHJvcGVydGllcyB3aXRoaW4gZGVjbGFyYXRpb24gYmxvY2tzLlxuICAgKi9cbiAgbm9EdXBsaWNhdGVDdXN0b21Qcm9wZXJ0aWVzPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgZHVwbGljYXRlIGNvbmRpdGlvbnMgaW4gaWYtZWxzZS1pZiBjaGFpbnNcbiAgICovXG4gIG5vRHVwbGljYXRlRWxzZUlmPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgZHVwbGljYXRlIHByb3BlcnRpZXMgd2l0aGluIGRlY2xhcmF0aW9uIGJsb2Nrcy5cbiAgICovXG4gIG5vRHVwbGljYXRlUHJvcGVydGllcz86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIE5vIGR1cGxpY2F0ZWQgZmllbGRzIGluIEdyYXBoUUwgb3BlcmF0aW9ucy5cbiAgICovXG4gIG5vRHVwbGljYXRlZEZpZWxkcz86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IGFjY2Vzc2luZyBuYW1lc3BhY2UgaW1wb3J0cyBkeW5hbWljYWxseS5cbiAgICovXG4gIG5vRHluYW1pY05hbWVzcGFjZUltcG9ydEFjY2Vzcz86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IFR5cGVTY3JpcHQgZW51bS5cbiAgICovXG4gIG5vRW51bT86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IGV4cG9ydGluZyBhbiBpbXBvcnRlZCB2YXJpYWJsZS5cbiAgICovXG4gIG5vRXhwb3J0ZWRJbXBvcnRzPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogUHJldmVudCB1c2FnZSBvZiBcXDxoZWFkPiBlbGVtZW50IGluIGEgTmV4dC5qcyBwcm9qZWN0LlxuICAgKi9cbiAgbm9IZWFkRWxlbWVudD86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFByZXZlbnQgdXNpbmcgdGhlIG5leHQvaGVhZCBtb2R1bGUgaW4gcGFnZXMvX2RvY3VtZW50LmpzIG9uIE5leHQuanMgcHJvamVjdHMuXG4gICAqL1xuICBub0hlYWRJbXBvcnRJbkRvY3VtZW50PzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogUHJldmVudCB1c2FnZSBvZiBcXDxpbWc+IGVsZW1lbnQgaW4gYSBOZXh0LmpzIHByb2plY3QuXG4gICAqL1xuICBub0ltZ0VsZW1lbnQ/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvd3MgdGhlIHVzZSBvZiBpcnJlZ3VsYXIgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLlxuICAgKi9cbiAgbm9JcnJlZ3VsYXJXaGl0ZXNwYWNlPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgbWlzc2luZyB2YXIgZnVuY3Rpb24gZm9yIGNzcyB2YXJpYWJsZXMuXG4gICAqL1xuICBub01pc3NpbmdWYXJGdW5jdGlvbj86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IG5lc3RlZCB0ZXJuYXJ5IGV4cHJlc3Npb25zLlxuICAgKi9cbiAgbm9OZXN0ZWRUZXJuYXJ5PzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgb2N0YWwgZXNjYXBlIHNlcXVlbmNlcyBpbiBzdHJpbmcgbGl0ZXJhbHNcbiAgICovXG4gIG5vT2N0YWxFc2NhcGU/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyB0aGUgdXNlIG9mIHByb2Nlc3MuZW52LlxuICAgKi9cbiAgbm9Qcm9jZXNzRW52PzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgc3BlY2lmaWVkIG1vZHVsZXMgd2hlbiBsb2FkZWQgYnkgaW1wb3J0IG9yIHJlcXVpcmUuXG4gICAqL1xuICBub1Jlc3RyaWN0ZWRJbXBvcnRzPzogSVJlc3RyaWN0ZWRJbXBvcnRzQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHVzZXIgZGVmaW5lZCB0eXBlcy5cbiAgICovXG4gIG5vUmVzdHJpY3RlZFR5cGVzPzogSU5vUmVzdHJpY3RlZFR5cGVzQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHVzYWdlIG9mIHNlbnNpdGl2ZSBkYXRhIHN1Y2ggYXMgQVBJIGtleXMgYW5kIHRva2Vucy5cbiAgICovXG4gIG5vU2VjcmV0cz86IElOb1NlY3JldHNDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRW5mb3JjZSB0aGF0IHN0YXRpYywgdmlzaWJsZSBlbGVtZW50cyAoc3VjaCBhcyBcXDxkaXY+KSB0aGF0IGhhdmUgY2xpY2sgaGFuZGxlcnMgdXNlIHRoZSB2YWxpZCByb2xlIGF0dHJpYnV0ZS5cbiAgICovXG4gIG5vU3RhdGljRWxlbWVudEludGVyYWN0aW9ucz86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEVuZm9yY2UgdGhlIHVzZSBvZiBTdHJpbmcuc2xpY2UoKSBvdmVyIFN0cmluZy5zdWJzdHIoKSBhbmQgU3RyaW5nLnN1YnN0cmluZygpLlxuICAgKi9cbiAgbm9TdWJzdHI/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyB0ZW1wbGF0ZSBsaXRlcmFsIHBsYWNlaG9sZGVyIHN5bnRheCBpbiByZWd1bGFyIHN0cmluZ3MuXG4gICAqL1xuICBub1RlbXBsYXRlQ3VybHlJblN0cmluZz86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHVua25vd24gcHNldWRvLWNsYXNzIHNlbGVjdG9ycy5cbiAgICovXG4gIG5vVW5rbm93blBzZXVkb0NsYXNzPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdW5rbm93biBwc2V1ZG8tZWxlbWVudCBzZWxlY3RvcnMuXG4gICAqL1xuICBub1Vua25vd25Qc2V1ZG9FbGVtZW50PzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdW5rbm93biB0eXBlIHNlbGVjdG9ycy5cbiAgICovXG4gIG5vVW5rbm93blR5cGVTZWxlY3Rvcj86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHVubmVjZXNzYXJ5IGVzY2FwZSBzZXF1ZW5jZSBpbiByZWd1bGFyIGV4cHJlc3Npb24gbGl0ZXJhbHMuXG4gICAqL1xuICBub1VzZWxlc3NFc2NhcGVJblJlZ2V4PzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdW5uZWNlc3NhcnkgU3RyaW5nLnJhdyBmdW5jdGlvbiBpbiB0ZW1wbGF0ZSBzdHJpbmcgbGl0ZXJhbHMgd2l0aG91dCBhbnkgZXNjYXBlIHNlcXVlbmNlLlxuICAgKi9cbiAgbm9Vc2VsZXNzU3RyaW5nUmF3PzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdXNlIG9mIEB2YWx1ZSBydWxlIGluIGNzcyBtb2R1bGVzLlxuICAgKi9cbiAgbm9WYWx1ZUF0UnVsZT86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEl0IGVuYWJsZXMgdGhlIHJlY29tbWVuZGVkIHJ1bGVzIGZvciB0aGlzIGdyb3VwXG4gICAqL1xuICByZWNvbW1lbmRlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEaXNhbGxvdyB0aGUgdXNlIG9mIG92ZXJsb2FkIHNpZ25hdHVyZXMgdGhhdCBhcmUgbm90IG5leHQgdG8gZWFjaCBvdGhlci5cbiAgICovXG4gIHVzZUFkamFjZW50T3ZlcmxvYWRTaWduYXR1cmVzPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRW5mb3JjZSB0aGF0IEFSSUEgcHJvcGVydGllcyBhcmUgdmFsaWQgZm9yIHRoZSByb2xlcyB0aGF0IGFyZSBzdXBwb3J0ZWQgYnkgdGhlIGVsZW1lbnQuXG4gICAqL1xuICB1c2VBcmlhUHJvcHNTdXBwb3J0ZWRCeVJvbGU/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBVc2UgYXQoKSBpbnN0ZWFkIG9mIGludGVnZXIgaW5kZXggYWNjZXNzLlxuICAgKi9cbiAgdXNlQXRJbmRleD86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEVuZm9yY2UgdXNpbmcgc2luZ2xlIGlmIGluc3RlYWQgb2YgbmVzdGVkIGlmIGNsYXVzZXMuXG4gICAqL1xuICB1c2VDb2xsYXBzZWRJZj86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEVuZm9yY2UgZGVjbGFyaW5nIGNvbXBvbmVudHMgb25seSB3aXRoaW4gbW9kdWxlcyB0aGF0IGV4cG9ydCBSZWFjdCBDb21wb25lbnRzIGV4Y2x1c2l2ZWx5LlxuICAgKi9cbiAgdXNlQ29tcG9uZW50RXhwb3J0T25seU1vZHVsZXM/OiBJVXNlQ29tcG9uZW50RXhwb3J0T25seU1vZHVsZXNDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogVGhpcyBydWxlIGVuZm9yY2VzIGNvbnNpc3RlbnQgdXNlIG9mIGN1cmx5IGJyYWNlcyBpbnNpZGUgSlNYIGF0dHJpYnV0ZXMgYW5kIEpTWCBjaGlsZHJlbi5cbiAgICovXG4gIHVzZUNvbnNpc3RlbnRDdXJseUJyYWNlcz86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFJlcXVpcmUgY29uc2lzdGVudCBhY2Nlc3NpYmlsaXR5IG1vZGlmaWVycyBvbiBjbGFzcyBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzLlxuICAgKi9cbiAgdXNlQ29uc2lzdGVudE1lbWJlckFjY2Vzc2liaWxpdHk/OiBJQ29uc2lzdGVudE1lbWJlckFjY2Vzc2liaWxpdHlDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogUmVxdWlyZSBzcGVjaWZ5aW5nIHRoZSByZWFzb24gYXJndW1lbnQgd2hlbiB1c2luZyBAZGVwcmVjYXRlZCBkaXJlY3RpdmVcbiAgICovXG4gIHVzZURlcHJlY2F0ZWRSZWFzb24/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBSZXF1aXJlIGV4cGxpY2l0IHJldHVybiB0eXBlcyBvbiBmdW5jdGlvbnMgYW5kIGNsYXNzIG1ldGhvZHMuXG4gICAqL1xuICB1c2VFeHBsaWNpdFR5cGU/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBFbmZvcmNlcyB0aGUgdXNlIG9mIGEgcmVjb21tZW5kZWQgZGlzcGxheSBzdHJhdGVneSB3aXRoIEdvb2dsZSBGb250cy5cbiAgICovXG4gIHVzZUdvb2dsZUZvbnREaXNwbGF5PzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogUmVxdWlyZSBmb3ItaW4gbG9vcHMgdG8gaW5jbHVkZSBhbiBpZiBzdGF0ZW1lbnQuXG4gICAqL1xuICB1c2VHdWFyZEZvckluPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3dzIHBhY2thZ2UgcHJpdmF0ZSBpbXBvcnRzLlxuICAgKi9cbiAgdXNlSW1wb3J0UmVzdHJpY3Rpb25zPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRW5mb3JjZSB0aGUgc29ydGluZyBvZiBDU1MgdXRpbGl0eSBjbGFzc2VzLlxuICAgKi9cbiAgdXNlU29ydGVkQ2xhc3Nlcz86IElVdGlsaXR5Q2xhc3NTb3J0aW5nQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEVuZm9yY2UgdGhlIHVzZSBvZiB0aGUgZGlyZWN0aXZlIFwidXNlIHN0cmljdFwiIGluIHNjcmlwdCBmaWxlcy5cbiAgICovXG4gIHVzZVN0cmljdE1vZGU/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBFbmZvcmNlIHRoZSB1c2Ugb2YgU3RyaW5nLnRyaW1TdGFydCgpIGFuZCBTdHJpbmcudHJpbUVuZCgpIG92ZXIgU3RyaW5nLnRyaW1MZWZ0KCkgYW5kIFN0cmluZy50cmltUmlnaHQoKS5cbiAgICovXG4gIHVzZVRyaW1TdGFydEVuZD86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFVzZSB2YWxpZCB2YWx1ZXMgZm9yIHRoZSBhdXRvY29tcGxldGUgYXR0cmlidXRlIG9uIGlucHV0IGVsZW1lbnRzLlxuICAgKi9cbiAgdXNlVmFsaWRBdXRvY29tcGxldGU/OiBJVXNlVmFsaWRBdXRvY29tcGxldGVDb25maWd1cmF0aW9uO1xufVxuZXhwb3J0IGludGVyZmFjZSBJUnVsZVdpdGhSZXN0cmljdGVkSW1wb3J0c09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHNldmVyaXR5IG9mIHRoZSBlbWl0dGVkIGRpYWdub3N0aWNzIGJ5IHRoZSBydWxlXG4gICAqL1xuICBsZXZlbDogSVJ1bGVQbGFpbkNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBSdWxlJ3Mgb3B0aW9uc1xuICAgKi9cbiAgb3B0aW9ucz86IElSZXN0cmljdGVkSW1wb3J0c09wdGlvbnM7XG59XG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBydWxlIGBub1Jlc3RyaWN0ZWRJbXBvcnRzYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUmVzdHJpY3RlZEltcG9ydHNPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBuYW1lcyB0aGF0IHNob3VsZCB0cmlnZ2VyIHRoZSBydWxlXG4gICAqL1xuICBwYXRocz86IHtcbiAgICBbazogc3RyaW5nXTogc3RyaW5nO1xuICB9O1xufVxuZXhwb3J0IGludGVyZmFjZSBJUnVsZVdpdGhOb1Jlc3RyaWN0ZWRUeXBlc09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGtpbmQgb2YgdGhlIGNvZGUgYWN0aW9ucyBlbWl0dGVkIGJ5IHRoZSBydWxlXG4gICAqL1xuICBmaXg/OiBJRml4S2luZDtcbiAgLyoqXG4gICAqIFRoZSBzZXZlcml0eSBvZiB0aGUgZW1pdHRlZCBkaWFnbm9zdGljcyBieSB0aGUgcnVsZVxuICAgKi9cbiAgbGV2ZWw6IElSdWxlUGxhaW5Db25maWd1cmF0aW9uO1xuICAvKipcbiAgICogUnVsZSdzIG9wdGlvbnNcbiAgICovXG4gIG9wdGlvbnM/OiBJTm9SZXN0cmljdGVkVHlwZXNPcHRpb25zO1xufVxuZXhwb3J0IGludGVyZmFjZSBJTm9SZXN0cmljdGVkVHlwZXNPcHRpb25zIHtcbiAgdHlwZXM/OiB7XG4gICAgW2s6IHN0cmluZ106IElDdXN0b21SZXN0cmljdGVkVHlwZTtcbiAgfTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSUN1c3RvbVJlc3RyaWN0ZWRUeXBlT3B0aW9ucyB7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG4gIHVzZT86IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSVJ1bGVXaXRoTm9TZWNyZXRzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgc2V2ZXJpdHkgb2YgdGhlIGVtaXR0ZWQgZGlhZ25vc3RpY3MgYnkgdGhlIHJ1bGVcbiAgICovXG4gIGxldmVsOiBJUnVsZVBsYWluQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFJ1bGUncyBvcHRpb25zXG4gICAqL1xuICBvcHRpb25zPzogSU5vU2VjcmV0c09wdGlvbnM7XG59XG5leHBvcnQgaW50ZXJmYWNlIElOb1NlY3JldHNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNldCBlbnRyb3B5IHRocmVzaG9sZCAoZGVmYXVsdCBpcyA0MSkuXG4gICAqL1xuICBlbnRyb3B5VGhyZXNob2xkPzogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBJUnVsZVdpdGhVc2VDb21wb25lbnRFeHBvcnRPbmx5TW9kdWxlc09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHNldmVyaXR5IG9mIHRoZSBlbWl0dGVkIGRpYWdub3N0aWNzIGJ5IHRoZSBydWxlXG4gICAqL1xuICBsZXZlbDogSVJ1bGVQbGFpbkNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBSdWxlJ3Mgb3B0aW9uc1xuICAgKi9cbiAgb3B0aW9ucz86IElVc2VDb21wb25lbnRFeHBvcnRPbmx5TW9kdWxlc09wdGlvbnM7XG59XG5leHBvcnQgaW50ZXJmYWNlIElVc2VDb21wb25lbnRFeHBvcnRPbmx5TW9kdWxlc09wdGlvbnMge1xuICAvKipcbiAgICogQWxsb3dzIHRoZSBleHBvcnQgb2YgY29uc3RhbnRzLiBUaGlzIG9wdGlvbiBpcyBmb3IgZW52aXJvbm1lbnRzIHRoYXQgc3VwcG9ydCBpdCwgc3VjaCBhcyBbVml0ZV0oaHR0cHM6Ly92aXRlanMuZGV2LylcbiAgICovXG4gIGFsbG93Q29uc3RhbnRFeHBvcnQ/OiBib29sZWFuO1xuICAvKipcbiAgICogQSBsaXN0IG9mIG5hbWVzIHRoYXQgY2FuIGJlIGFkZGl0aW9uYWxseSBleHBvcnRlZCBmcm9tIHRoZSBtb2R1bGUgVGhpcyBvcHRpb24gaXMgZm9yIGV4cG9ydHMgdGhhdCBkbyBub3QgaGluZGVyIFtSZWFjdCBGYXN0IFJlZnJlc2hdKGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC90cmVlL21haW4vcGFja2FnZXMvcmVhY3QtcmVmcmVzaCksIHN1Y2ggYXMgW2BtZXRhYCBpbiBSZW1peF0oaHR0cHM6Ly9yZW1peC5ydW4vZG9jcy9lbi9tYWluL3JvdXRlL21ldGEpXG4gICAqL1xuICBhbGxvd0V4cG9ydE5hbWVzPzogc3RyaW5nW107XG59XG5leHBvcnQgaW50ZXJmYWNlIElSdWxlV2l0aENvbnNpc3RlbnRNZW1iZXJBY2Nlc3NpYmlsaXR5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgc2V2ZXJpdHkgb2YgdGhlIGVtaXR0ZWQgZGlhZ25vc3RpY3MgYnkgdGhlIHJ1bGVcbiAgICovXG4gIGxldmVsOiBJUnVsZVBsYWluQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFJ1bGUncyBvcHRpb25zXG4gICAqL1xuICBvcHRpb25zPzogSUNvbnNpc3RlbnRNZW1iZXJBY2Nlc3NpYmlsaXR5T3B0aW9ucztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnNpc3RlbnRNZW1iZXJBY2Nlc3NpYmlsaXR5T3B0aW9ucyB7XG4gIGFjY2Vzc2liaWxpdHk/OiBJQWNjZXNzaWJpbGl0eSAmIHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSVJ1bGVXaXRoVXRpbGl0eUNsYXNzU29ydGluZ09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGtpbmQgb2YgdGhlIGNvZGUgYWN0aW9ucyBlbWl0dGVkIGJ5IHRoZSBydWxlXG4gICAqL1xuICBmaXg/OiBJRml4S2luZDtcbiAgLyoqXG4gICAqIFRoZSBzZXZlcml0eSBvZiB0aGUgZW1pdHRlZCBkaWFnbm9zdGljcyBieSB0aGUgcnVsZVxuICAgKi9cbiAgbGV2ZWw6IElSdWxlUGxhaW5Db25maWd1cmF0aW9uO1xuICAvKipcbiAgICogUnVsZSdzIG9wdGlvbnNcbiAgICovXG4gIG9wdGlvbnM/OiBJVXRpbGl0eUNsYXNzU29ydGluZ09wdGlvbnM7XG59XG5leHBvcnQgaW50ZXJmYWNlIElVdGlsaXR5Q2xhc3NTb3J0aW5nT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGF0dHJpYnV0ZXMgdGhhdCB3aWxsIGJlIHNvcnRlZC5cbiAgICovXG4gIGF0dHJpYnV0ZXM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIE5hbWVzIG9mIHRoZSBmdW5jdGlvbnMgb3IgdGFnZ2VkIHRlbXBsYXRlcyB0aGF0IHdpbGwgYmUgc29ydGVkLlxuICAgKi9cbiAgZnVuY3Rpb25zPzogc3RyaW5nW107XG59XG5leHBvcnQgaW50ZXJmYWNlIElSdWxlV2l0aFVzZVZhbGlkQXV0b2NvbXBsZXRlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgc2V2ZXJpdHkgb2YgdGhlIGVtaXR0ZWQgZGlhZ25vc3RpY3MgYnkgdGhlIHJ1bGVcbiAgICovXG4gIGxldmVsOiBJUnVsZVBsYWluQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFJ1bGUncyBvcHRpb25zXG4gICAqL1xuICBvcHRpb25zPzogSVVzZVZhbGlkQXV0b2NvbXBsZXRlT3B0aW9ucztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSVVzZVZhbGlkQXV0b2NvbXBsZXRlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBgaW5wdXRgIGxpa2UgY3VzdG9tIGNvbXBvbmVudHMgdGhhdCBzaG91bGQgYmUgY2hlY2tlZC5cbiAgICovXG4gIGlucHV0Q29tcG9uZW50cz86IHN0cmluZ1tdO1xufVxuLyoqXG4gKiBBIGxpc3Qgb2YgcnVsZXMgdGhhdCBiZWxvbmcgdG8gdGhpcyBncm91cFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElQZXJmb3JtYW5jZSB7XG4gIC8qKlxuICAgKiBJdCBlbmFibGVzIEFMTCBydWxlcyBmb3IgdGhpcyBncm91cC5cbiAgICovXG4gIGFsbD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEaXNhbGxvdyB0aGUgdXNlIG9mIHNwcmVhZCAoLi4uKSBzeW50YXggb24gYWNjdW11bGF0b3JzLlxuICAgKi9cbiAgbm9BY2N1bXVsYXRpbmdTcHJlYWQ/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyB0aGUgdXNlIG9mIGJhcnJlbCBmaWxlLlxuICAgKi9cbiAgbm9CYXJyZWxGaWxlPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdGhlIHVzZSBvZiB0aGUgZGVsZXRlIG9wZXJhdG9yLlxuICAgKi9cbiAgbm9EZWxldGU/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBBdm9pZCByZS1leHBvcnQgYWxsLlxuICAgKi9cbiAgbm9SZUV4cG9ydEFsbD86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEl0IGVuYWJsZXMgdGhlIHJlY29tbWVuZGVkIHJ1bGVzIGZvciB0aGlzIGdyb3VwXG4gICAqL1xuICByZWNvbW1lbmRlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBSZXF1aXJlIHJlZ2V4IGxpdGVyYWxzIHRvIGJlIGRlY2xhcmVkIGF0IHRoZSB0b3AgbGV2ZWwuXG4gICAqL1xuICB1c2VUb3BMZXZlbFJlZ2V4PzogSVJ1bGVDb25maWd1cmF0aW9uO1xufVxuLyoqXG4gKiBBIGxpc3Qgb2YgcnVsZXMgdGhhdCBiZWxvbmcgdG8gdGhpcyBncm91cFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTZWN1cml0eSB7XG4gIC8qKlxuICAgKiBJdCBlbmFibGVzIEFMTCBydWxlcyBmb3IgdGhpcyBncm91cC5cbiAgICovXG4gIGFsbD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBQcmV2ZW50IHRoZSB1c2FnZSBvZiBkYW5nZXJvdXMgSlNYIHByb3BzXG4gICAqL1xuICBub0Rhbmdlcm91c2x5U2V0SW5uZXJIdG1sPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogUmVwb3J0IHdoZW4gYSBET00gZWxlbWVudCBvciBhIGNvbXBvbmVudCB1c2VzIGJvdGggY2hpbGRyZW4gYW5kIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIHByb3AuXG4gICAqL1xuICBub0Rhbmdlcm91c2x5U2V0SW5uZXJIdG1sV2l0aENoaWxkcmVuPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdGhlIHVzZSBvZiBnbG9iYWwgZXZhbCgpLlxuICAgKi9cbiAgbm9HbG9iYWxFdmFsPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogSXQgZW5hYmxlcyB0aGUgcmVjb21tZW5kZWQgcnVsZXMgZm9yIHRoaXMgZ3JvdXBcbiAgICovXG4gIHJlY29tbWVuZGVkPzogYm9vbGVhbjtcbn1cbi8qKlxuICogQSBsaXN0IG9mIHJ1bGVzIHRoYXQgYmVsb25nIHRvIHRoaXMgZ3JvdXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU3R5bGUge1xuICAvKipcbiAgICogSXQgZW5hYmxlcyBBTEwgcnVsZXMgZm9yIHRoaXMgZ3JvdXAuXG4gICAqL1xuICBhbGw/OiBib29sZWFuO1xuICAvKipcbiAgICogRGlzYWxsb3cgdGhlIHVzZSBvZiBhcmd1bWVudHMuXG4gICAqL1xuICBub0FyZ3VtZW50cz86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IGNvbW1hIG9wZXJhdG9yLlxuICAgKi9cbiAgbm9Db21tYU9wZXJhdG9yPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgZGVmYXVsdCBleHBvcnRzLlxuICAgKi9cbiAgbm9EZWZhdWx0RXhwb3J0PzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdXNpbmcgYSBjYWxsYmFjayBpbiBhc3luY2hyb25vdXMgdGVzdHMgYW5kIGhvb2tzLlxuICAgKi9cbiAgbm9Eb25lQ2FsbGJhY2s/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyBpbXBsaWNpdCB0cnVlIHZhbHVlcyBvbiBKU1ggYm9vbGVhbiBhdHRyaWJ1dGVzXG4gICAqL1xuICBub0ltcGxpY2l0Qm9vbGVhbj86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHR5cGUgYW5ub3RhdGlvbnMgZm9yIHZhcmlhYmxlcywgcGFyYW1ldGVycywgYW5kIGNsYXNzIHByb3BlcnRpZXMgaW5pdGlhbGl6ZWQgd2l0aCBhIGxpdGVyYWwgZXhwcmVzc2lvbi5cbiAgICovXG4gIG5vSW5mZXJyYWJsZVR5cGVzPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdGhlIHVzZSBvZiBUeXBlU2NyaXB0J3MgbmFtZXNwYWNlcy5cbiAgICovXG4gIG5vTmFtZXNwYWNlPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdGhlIHVzZSBvZiBuYW1lc3BhY2UgaW1wb3J0cy5cbiAgICovXG4gIG5vTmFtZXNwYWNlSW1wb3J0PzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgbmVnYXRpb24gaW4gdGhlIGNvbmRpdGlvbiBvZiBhbiBpZiBzdGF0ZW1lbnQgaWYgaXQgaGFzIGFuIGVsc2UgY2xhdXNlLlxuICAgKi9cbiAgbm9OZWdhdGlvbkVsc2U/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyBub24tbnVsbCBhc3NlcnRpb25zIHVzaW5nIHRoZSAhIHBvc3RmaXggb3BlcmF0b3IuXG4gICAqL1xuICBub05vbk51bGxBc3NlcnRpb24/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyByZWFzc2lnbmluZyBmdW5jdGlvbiBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgbm9QYXJhbWV0ZXJBc3NpZ24/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyB0aGUgdXNlIG9mIHBhcmFtZXRlciBwcm9wZXJ0aWVzIGluIGNsYXNzIGNvbnN0cnVjdG9ycy5cbiAgICovXG4gIG5vUGFyYW1ldGVyUHJvcGVydGllcz86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFRoaXMgcnVsZSBhbGxvd3MgeW91IHRvIHNwZWNpZnkgZ2xvYmFsIHZhcmlhYmxlIG5hbWVzIHRoYXQgeW91IGRvbuKAmXQgd2FudCB0byB1c2UgaW4geW91ciBhcHBsaWNhdGlvbi5cbiAgICovXG4gIG5vUmVzdHJpY3RlZEdsb2JhbHM/OiBJUmVzdHJpY3RlZEdsb2JhbHNDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdGhlIHVzZSBvZiBjb25zdGFudHMgd2hpY2ggaXRzIHZhbHVlIGlzIHRoZSB1cHBlci1jYXNlIHZlcnNpb24gb2YgaXRzIG5hbWUuXG4gICAqL1xuICBub1Nob3V0eUNvbnN0YW50cz86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHRlbXBsYXRlIGxpdGVyYWxzIGlmIGludGVycG9sYXRpb24gYW5kIHNwZWNpYWwtY2hhcmFjdGVyIGhhbmRsaW5nIGFyZSBub3QgbmVlZGVkXG4gICAqL1xuICBub1VudXNlZFRlbXBsYXRlTGl0ZXJhbD86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IGVsc2UgYmxvY2sgd2hlbiB0aGUgaWYgYmxvY2sgYnJlYWtzIGVhcmx5LlxuICAgKi9cbiAgbm9Vc2VsZXNzRWxzZT86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHRoZSB1c2Ugb2YgdmFyXG4gICAqL1xuICBub1Zhcj86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHRoZSB1c2Ugb2YgeW9kYSBleHByZXNzaW9ucy5cbiAgICovXG4gIG5vWW9kYUV4cHJlc3Npb24/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBJdCBlbmFibGVzIHRoZSByZWNvbW1lbmRlZCBydWxlcyBmb3IgdGhpcyBncm91cFxuICAgKi9cbiAgcmVjb21tZW5kZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogRW5mb3JjZSB0aGUgdXNlIG9mIGFzIGNvbnN0IG92ZXIgbGl0ZXJhbCB0eXBlIGFuZCB0eXBlIGFubm90YXRpb24uXG4gICAqL1xuICB1c2VBc0NvbnN0QXNzZXJ0aW9uPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogUmVxdWlyZXMgZm9sbG93aW5nIGN1cmx5IGJyYWNlIGNvbnZlbnRpb25zLlxuICAgKi9cbiAgdXNlQmxvY2tTdGF0ZW1lbnRzPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRW5mb3JjZSB1c2luZyBlbHNlIGlmIGluc3RlYWQgb2YgbmVzdGVkIGlmIGluIGVsc2UgY2xhdXNlcy5cbiAgICovXG4gIHVzZUNvbGxhcHNlZEVsc2VJZj86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFJlcXVpcmUgY29uc2lzdGVudGx5IHVzaW5nIGVpdGhlciBUXFxbXSBvciBBcnJheVxcPFQ+XG4gICAqL1xuICB1c2VDb25zaXN0ZW50QXJyYXlUeXBlPzogSUNvbnNpc3RlbnRBcnJheVR5cGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRW5mb3JjZSB0aGUgdXNlIG9mIG5ldyBmb3IgYWxsIGJ1aWx0aW5zLCBleGNlcHQgU3RyaW5nLCBOdW1iZXIgYW5kIEJvb2xlYW4uXG4gICAqL1xuICB1c2VDb25zaXN0ZW50QnVpbHRpbkluc3RhbnRpYXRpb24/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBSZXF1aXJlIGNvbnN0IGRlY2xhcmF0aW9ucyBmb3IgdmFyaWFibGVzIHRoYXQgYXJlIG9ubHkgYXNzaWduZWQgb25jZS5cbiAgICovXG4gIHVzZUNvbnN0PzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRW5mb3JjZSBkZWZhdWx0IGZ1bmN0aW9uIHBhcmFtZXRlcnMgYW5kIG9wdGlvbmFsIGZ1bmN0aW9uIHBhcmFtZXRlcnMgdG8gYmUgbGFzdC5cbiAgICovXG4gIHVzZURlZmF1bHRQYXJhbWV0ZXJMYXN0PzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogUmVxdWlyZSB0aGUgZGVmYXVsdCBjbGF1c2UgaW4gc3dpdGNoIHN0YXRlbWVudHMuXG4gICAqL1xuICB1c2VEZWZhdWx0U3dpdGNoQ2xhdXNlPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogUmVxdWlyZSB0aGF0IGVhY2ggZW51bSBtZW1iZXIgdmFsdWUgYmUgZXhwbGljaXRseSBpbml0aWFsaXplZC5cbiAgICovXG4gIHVzZUVudW1Jbml0aWFsaXplcnM/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBFbmZvcmNlIGV4cGxpY2l0bHkgY29tcGFyaW5nIHRoZSBsZW5ndGgsIHNpemUsIGJ5dGVMZW5ndGggb3IgYnl0ZU9mZnNldCBwcm9wZXJ0eSBvZiBhIHZhbHVlLlxuICAgKi9cbiAgdXNlRXhwbGljaXRMZW5ndGhDaGVjaz86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHRoZSB1c2Ugb2YgTWF0aC5wb3cgaW4gZmF2b3Igb2YgdGhlICoqIG9wZXJhdG9yLlxuICAgKi9cbiAgdXNlRXhwb25lbnRpYXRpb25PcGVyYXRvcj86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFByb21vdGVzIHRoZSB1c2Ugb2YgZXhwb3J0IHR5cGUgZm9yIHR5cGVzLlxuICAgKi9cbiAgdXNlRXhwb3J0VHlwZT86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEVuZm9yY2UgbmFtaW5nIGNvbnZlbnRpb25zIGZvciBKYXZhU2NyaXB0IGFuZCBUeXBlU2NyaXB0IGZpbGVuYW1lcy5cbiAgICovXG4gIHVzZUZpbGVuYW1pbmdDb252ZW50aW9uPzogSUZpbGVuYW1pbmdDb252ZW50aW9uQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFRoaXMgcnVsZSByZWNvbW1lbmRzIGEgZm9yLW9mIGxvb3Agd2hlbiBpbiBhIGZvciBsb29wLCB0aGUgaW5kZXggdXNlZCB0byBleHRyYWN0IGFuIGl0ZW0gZnJvbSB0aGUgaXRlcmF0ZWQgYXJyYXkuXG4gICAqL1xuICB1c2VGb3JPZj86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFRoaXMgcnVsZSBlbmZvcmNlcyB0aGUgdXNlIG9mIFxcPD4uLi5cXDwvPiBvdmVyIFxcPEZyYWdtZW50Pi4uLlxcPC9GcmFnbWVudD4uXG4gICAqL1xuICB1c2VGcmFnbWVudFN5bnRheD86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFByb21vdGVzIHRoZSB1c2Ugb2YgaW1wb3J0IHR5cGUgZm9yIHR5cGVzLlxuICAgKi9cbiAgdXNlSW1wb3J0VHlwZT86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFJlcXVpcmUgYWxsIGVudW0gbWVtYmVycyB0byBiZSBsaXRlcmFsIHZhbHVlcy5cbiAgICovXG4gIHVzZUxpdGVyYWxFbnVtTWVtYmVycz86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEVuZm9yY2UgbmFtaW5nIGNvbnZlbnRpb25zIGZvciBldmVyeXRoaW5nIGFjcm9zcyBhIGNvZGViYXNlLlxuICAgKi9cbiAgdXNlTmFtaW5nQ29udmVudGlvbj86IElOYW1pbmdDb252ZW50aW9uQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFByb21vdGVzIHRoZSB1c2FnZSBvZiBub2RlOmFzc2VydC9zdHJpY3Qgb3ZlciBub2RlOmFzc2VydC5cbiAgICovXG4gIHVzZU5vZGVBc3NlcnRTdHJpY3Q/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBFbmZvcmNlcyB1c2luZyB0aGUgbm9kZTogcHJvdG9jb2wgZm9yIE5vZGUuanMgYnVpbHRpbiBtb2R1bGVzLlxuICAgKi9cbiAgdXNlTm9kZWpzSW1wb3J0UHJvdG9jb2w/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBVc2UgdGhlIE51bWJlciBwcm9wZXJ0aWVzIGluc3RlYWQgb2YgZ2xvYmFsIG9uZXMuXG4gICAqL1xuICB1c2VOdW1iZXJOYW1lc3BhY2U/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyBwYXJzZUludCgpIGFuZCBOdW1iZXIucGFyc2VJbnQoKSBpbiBmYXZvciBvZiBiaW5hcnksIG9jdGFsLCBhbmQgaGV4YWRlY2ltYWwgbGl0ZXJhbHNcbiAgICovXG4gIHVzZU51bWVyaWNMaXRlcmFscz86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFByZXZlbnQgZXh0cmEgY2xvc2luZyB0YWdzIGZvciBjb21wb25lbnRzIHdpdGhvdXQgY2hpbGRyZW5cbiAgICovXG4gIHVzZVNlbGZDbG9zaW5nRWxlbWVudHM/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBXaGVuIGV4cHJlc3NpbmcgYXJyYXkgdHlwZXMsIHRoaXMgcnVsZSBwcm9tb3RlcyB0aGUgdXNhZ2Ugb2YgVFxcW10gc2hvcnRoYW5kIGluc3RlYWQgb2YgQXJyYXlcXDxUPi5cbiAgICovXG4gIHVzZVNob3J0aGFuZEFycmF5VHlwZT86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFJlcXVpcmUgYXNzaWdubWVudCBvcGVyYXRvciBzaG9ydGhhbmQgd2hlcmUgcG9zc2libGUuXG4gICAqL1xuICB1c2VTaG9ydGhhbmRBc3NpZ24/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBFbmZvcmNlIHVzaW5nIGZ1bmN0aW9uIHR5cGVzIGluc3RlYWQgb2Ygb2JqZWN0IHR5cGUgd2l0aCBjYWxsIHNpZ25hdHVyZXMuXG4gICAqL1xuICB1c2VTaG9ydGhhbmRGdW5jdGlvblR5cGU/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBFbmZvcmNlcyBzd2l0Y2ggY2xhdXNlcyBoYXZlIGEgc2luZ2xlIHN0YXRlbWVudCwgZW1pdHMgYSBxdWljayBmaXggd3JhcHBpbmcgdGhlIHN0YXRlbWVudHMgaW4gYSBibG9jay5cbiAgICovXG4gIHVzZVNpbmdsZUNhc2VTdGF0ZW1lbnQ/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyBtdWx0aXBsZSB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgaW4gdGhlIHNhbWUgdmFyaWFibGUgc3RhdGVtZW50XG4gICAqL1xuICB1c2VTaW5nbGVWYXJEZWNsYXJhdG9yPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogUHJlZmVyIHRlbXBsYXRlIGxpdGVyYWxzIG92ZXIgc3RyaW5nIGNvbmNhdGVuYXRpb24uXG4gICAqL1xuICB1c2VUZW1wbGF0ZT86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFJlcXVpcmUgbmV3IHdoZW4gdGhyb3dpbmcgYW4gZXJyb3IuXG4gICAqL1xuICB1c2VUaHJvd05ld0Vycm9yPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdGhyb3dpbmcgbm9uLUVycm9yIHZhbHVlcy5cbiAgICovXG4gIHVzZVRocm93T25seUVycm9yPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRW5mb3JjZSB0aGUgdXNlIG9mIHdoaWxlIGxvb3BzIGluc3RlYWQgb2YgZm9yIGxvb3BzIHdoZW4gdGhlIGluaXRpYWxpemVyIGFuZCB1cGRhdGUgZXhwcmVzc2lvbnMgYXJlIG5vdCBuZWVkZWQuXG4gICAqL1xuICB1c2VXaGlsZT86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSVJ1bGVXaXRoUmVzdHJpY3RlZEdsb2JhbHNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBzZXZlcml0eSBvZiB0aGUgZW1pdHRlZCBkaWFnbm9zdGljcyBieSB0aGUgcnVsZVxuICAgKi9cbiAgbGV2ZWw6IElSdWxlUGxhaW5Db25maWd1cmF0aW9uO1xuICAvKipcbiAgICogUnVsZSdzIG9wdGlvbnNcbiAgICovXG4gIG9wdGlvbnM/OiBJUmVzdHJpY3RlZEdsb2JhbHNPcHRpb25zO1xufVxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgcnVsZSBgbm9SZXN0cmljdGVkR2xvYmFsc2AuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVJlc3RyaWN0ZWRHbG9iYWxzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgbmFtZXMgdGhhdCBzaG91bGQgdHJpZ2dlciB0aGUgcnVsZVxuICAgKi9cbiAgZGVuaWVkR2xvYmFscz86IHN0cmluZ1tdO1xufVxuZXhwb3J0IGludGVyZmFjZSBJUnVsZVdpdGhDb25zaXN0ZW50QXJyYXlUeXBlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUga2luZCBvZiB0aGUgY29kZSBhY3Rpb25zIGVtaXR0ZWQgYnkgdGhlIHJ1bGVcbiAgICovXG4gIGZpeD86IElGaXhLaW5kO1xuICAvKipcbiAgICogVGhlIHNldmVyaXR5IG9mIHRoZSBlbWl0dGVkIGRpYWdub3N0aWNzIGJ5IHRoZSBydWxlXG4gICAqL1xuICBsZXZlbDogSVJ1bGVQbGFpbkNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBSdWxlJ3Mgb3B0aW9uc1xuICAgKi9cbiAgb3B0aW9ucz86IElDb25zaXN0ZW50QXJyYXlUeXBlT3B0aW9ucztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnNpc3RlbnRBcnJheVR5cGVPcHRpb25zIHtcbiAgc3ludGF4PzogSUNvbnNpc3RlbnRBcnJheVR5cGUgJiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIElSdWxlV2l0aEZpbGVuYW1pbmdDb252ZW50aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgc2V2ZXJpdHkgb2YgdGhlIGVtaXR0ZWQgZGlhZ25vc3RpY3MgYnkgdGhlIHJ1bGVcbiAgICovXG4gIGxldmVsOiBJUnVsZVBsYWluQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFJ1bGUncyBvcHRpb25zXG4gICAqL1xuICBvcHRpb25zPzogSUZpbGVuYW1pbmdDb252ZW50aW9uT3B0aW9ucztcbn1cbi8qKlxuICogUnVsZSdzIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUZpbGVuYW1pbmdDb252ZW50aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbGxvd2VkIGNhc2VzIGZvciBmaWxlIG5hbWVzLlxuICAgKi9cbiAgZmlsZW5hbWVDYXNlcz86IElGaWxlbmFtZUNhc2VzO1xuICAvKipcbiAgICogSWYgYGZhbHNlYCwgdGhlbiBub24tQVNDSUkgY2hhcmFjdGVycyBhcmUgYWxsb3dlZC5cbiAgICovXG4gIHJlcXVpcmVBc2NpaT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJZiBgZmFsc2VgLCB0aGVuIGNvbnNlY3V0aXZlIHVwcGVyY2FzZSBhcmUgYWxsb3dlZCBpbiBfY2FtZWxfIGFuZCBfcGFzY2FsXyBjYXNlcy4gVGhpcyBkb2VzIG5vdCBhZmZlY3Qgb3RoZXIgW0Nhc2VdLlxuICAgKi9cbiAgc3RyaWN0Q2FzZT86IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIElSdWxlV2l0aE5hbWluZ0NvbnZlbnRpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBraW5kIG9mIHRoZSBjb2RlIGFjdGlvbnMgZW1pdHRlZCBieSB0aGUgcnVsZVxuICAgKi9cbiAgZml4PzogSUZpeEtpbmQ7XG4gIC8qKlxuICAgKiBUaGUgc2V2ZXJpdHkgb2YgdGhlIGVtaXR0ZWQgZGlhZ25vc3RpY3MgYnkgdGhlIHJ1bGVcbiAgICovXG4gIGxldmVsOiBJUnVsZVBsYWluQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFJ1bGUncyBvcHRpb25zXG4gICAqL1xuICBvcHRpb25zPzogSU5hbWluZ0NvbnZlbnRpb25PcHRpb25zO1xufVxuLyoqXG4gKiBSdWxlJ3Mgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTmFtaW5nQ29udmVudGlvbk9wdGlvbnMge1xuICAvKipcbiAgICogQ3VzdG9tIGNvbnZlbnRpb25zLlxuICAgKi9cbiAgY29udmVudGlvbnM/OiBJQ29udmVudGlvbltdO1xuICAvKipcbiAgICogQWxsb3dlZCBjYXNlcyBmb3IgX1R5cGVTY3JpcHRfIGBlbnVtYCBtZW1iZXIgbmFtZXMuXG4gICAqL1xuICBlbnVtTWVtYmVyQ2FzZT86IElGb3JtYXQ7XG4gIC8qKlxuICAgKiBJZiBgZmFsc2VgLCB0aGVuIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGFyZSBhbGxvd2VkLlxuICAgKi9cbiAgcmVxdWlyZUFzY2lpPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIElmIGBmYWxzZWAsIHRoZW4gY29uc2VjdXRpdmUgdXBwZXJjYXNlIGFyZSBhbGxvd2VkIGluIF9jYW1lbF8gYW5kIF9wYXNjYWxfIGNhc2VzLiBUaGlzIGRvZXMgbm90IGFmZmVjdCBvdGhlciBbQ2FzZV0uXG4gICAqL1xuICBzdHJpY3RDYXNlPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnZlbnRpb24ge1xuICAvKipcbiAgICogU3RyaW5nIGNhc2VzIHRvIGVuZm9yY2VcbiAgICovXG4gIGZvcm1hdHM/OiBJRm9ybWF0cztcbiAgLyoqXG4gICAqIFJlZ3VsYXIgZXhwcmVzc2lvbiB0byBlbmZvcmNlXG4gICAqL1xuICBtYXRjaD86IElSZWdleDtcbiAgLyoqXG4gICAqIERlY2xhcmF0aW9ucyBjb25jZXJuZWQgYnkgdGhpcyBjb252ZW50aW9uXG4gICAqL1xuICBzZWxlY3Rvcj86IElTZWxlY3Rvcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSVNlbGVjdG9yIHtcbiAgLyoqXG4gICAqIERlY2xhcmF0aW9uIGtpbmRcbiAgICovXG4gIGtpbmQ/OiBJS2luZDtcbiAgLyoqXG4gICAqIE1vZGlmaWVycyB1c2VkIG9uIHRoZSBkZWNsYXJhdGlvblxuICAgKi9cbiAgbW9kaWZpZXJzPzogSU1vZGlmaWVycztcbiAgLyoqXG4gICAqIFNjb3BlIG9mIHRoZSBkZWNsYXJhdGlvblxuICAgKi9cbiAgc2NvcGU/OiBJU2NvcGU7XG59XG4vKipcbiAqIEEgbGlzdCBvZiBydWxlcyB0aGF0IGJlbG9uZyB0byB0aGlzIGdyb3VwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVN1c3BpY2lvdXMge1xuICAvKipcbiAgICogSXQgZW5hYmxlcyBBTEwgcnVsZXMgZm9yIHRoaXMgZ3JvdXAuXG4gICAqL1xuICBhbGw/OiBib29sZWFuO1xuICAvKipcbiAgICogVXNlIHN0YW5kYXJkIGNvbnN0YW50cyBpbnN0ZWFkIG9mIGFwcHJveGltYXRlZCBsaXRlcmFscy5cbiAgICovXG4gIG5vQXBwcm94aW1hdGl2ZU51bWVyaWNDb25zdGFudD86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2NvdXJhZ2UgdGhlIHVzYWdlIG9mIEFycmF5IGluZGV4IGluIGtleXMuXG4gICAqL1xuICBub0FycmF5SW5kZXhLZXk/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyBhc3NpZ25tZW50cyBpbiBleHByZXNzaW9ucy5cbiAgICovXG4gIG5vQXNzaWduSW5FeHByZXNzaW9ucz86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93cyB1c2luZyBhbiBhc3luYyBmdW5jdGlvbiBhcyBhIFByb21pc2UgZXhlY3V0b3IuXG4gICAqL1xuICBub0FzeW5jUHJvbWlzZUV4ZWN1dG9yPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgcmVhc3NpZ25pbmcgZXhjZXB0aW9ucyBpbiBjYXRjaCBjbGF1c2VzLlxuICAgKi9cbiAgbm9DYXRjaEFzc2lnbj86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHJlYXNzaWduaW5nIGNsYXNzIG1lbWJlcnMuXG4gICAqL1xuICBub0NsYXNzQXNzaWduPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogUHJldmVudCBjb21tZW50cyBmcm9tIGJlaW5nIGluc2VydGVkIGFzIHRleHQgbm9kZXNcbiAgICovXG4gIG5vQ29tbWVudFRleHQ/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyBjb21wYXJpbmcgYWdhaW5zdCAtMFxuICAgKi9cbiAgbm9Db21wYXJlTmVnWmVybz86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IGxhYmVsZWQgc3RhdGVtZW50cyB0aGF0IGFyZSBub3QgbG9vcHMuXG4gICAqL1xuICBub0NvbmZ1c2luZ0xhYmVscz86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHZvaWQgdHlwZSBvdXRzaWRlIG9mIGdlbmVyaWMgb3IgcmV0dXJuIHR5cGVzLlxuICAgKi9cbiAgbm9Db25mdXNpbmdWb2lkVHlwZT86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHRoZSB1c2Ugb2YgY29uc29sZS5cbiAgICovXG4gIG5vQ29uc29sZT86IElOb0NvbnNvbGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdGhlIHVzZSBvZiBjb25zb2xlLmxvZ1xuICAgKi9cbiAgbm9Db25zb2xlTG9nPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgVHlwZVNjcmlwdCBjb25zdCBlbnVtXG4gICAqL1xuICBub0NvbnN0RW51bT86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFByZXZlbnRzIGZyb20gaGF2aW5nIGNvbnRyb2wgY2hhcmFjdGVycyBhbmQgc29tZSBlc2NhcGUgc2VxdWVuY2VzIHRoYXQgbWF0Y2ggY29udHJvbCBjaGFyYWN0ZXJzIGluIHJlZ3VsYXIgZXhwcmVzc2lvbnMuXG4gICAqL1xuICBub0NvbnRyb2xDaGFyYWN0ZXJzSW5SZWdleD86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHRoZSB1c2Ugb2YgZGVidWdnZXJcbiAgICovXG4gIG5vRGVidWdnZXI/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBSZXF1aXJlIHRoZSB1c2Ugb2YgPT09IGFuZCAhPT0uXG4gICAqL1xuICBub0RvdWJsZUVxdWFscz86IElOb0RvdWJsZUVxdWFsc0NvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyBkdXBsaWNhdGUgQGltcG9ydCBydWxlcy5cbiAgICovXG4gIG5vRHVwbGljYXRlQXRJbXBvcnRSdWxlcz86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IGR1cGxpY2F0ZSBjYXNlIGxhYmVscy5cbiAgICovXG4gIG5vRHVwbGljYXRlQ2FzZT86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IGR1cGxpY2F0ZSBjbGFzcyBtZW1iZXJzLlxuICAgKi9cbiAgbm9EdXBsaWNhdGVDbGFzc01lbWJlcnM/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyBkdXBsaWNhdGUgbmFtZXMgd2l0aGluIGZvbnQgZmFtaWxpZXMuXG4gICAqL1xuICBub0R1cGxpY2F0ZUZvbnROYW1lcz86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFByZXZlbnRzIEpTWCBwcm9wZXJ0aWVzIHRvIGJlIGFzc2lnbmVkIG11bHRpcGxlIHRpbWVzLlxuICAgKi9cbiAgbm9EdXBsaWNhdGVKc3hQcm9wcz86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHR3byBrZXlzIHdpdGggdGhlIHNhbWUgbmFtZSBpbnNpZGUgb2JqZWN0cy5cbiAgICovXG4gIG5vRHVwbGljYXRlT2JqZWN0S2V5cz86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IGR1cGxpY2F0ZSBmdW5jdGlvbiBwYXJhbWV0ZXIgbmFtZS5cbiAgICovXG4gIG5vRHVwbGljYXRlUGFyYW1ldGVycz86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IGR1cGxpY2F0ZSBzZWxlY3RvcnMgd2l0aGluIGtleWZyYW1lIGJsb2Nrcy5cbiAgICovXG4gIG5vRHVwbGljYXRlU2VsZWN0b3JzS2V5ZnJhbWVCbG9jaz86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEEgZGVzY3JpYmUgYmxvY2sgc2hvdWxkIG5vdCBjb250YWluIGR1cGxpY2F0ZSBob29rcy5cbiAgICovXG4gIG5vRHVwbGljYXRlVGVzdEhvb2tzPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgQ1NTIGVtcHR5IGJsb2Nrcy5cbiAgICovXG4gIG5vRW1wdHlCbG9jaz86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IGVtcHR5IGJsb2NrIHN0YXRlbWVudHMgYW5kIHN0YXRpYyBibG9ja3MuXG4gICAqL1xuICBub0VtcHR5QmxvY2tTdGF0ZW1lbnRzPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdGhlIGRlY2xhcmF0aW9uIG9mIGVtcHR5IGludGVyZmFjZXMuXG4gICAqL1xuICBub0VtcHR5SW50ZXJmYWNlPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdmFyaWFibGVzIGZyb20gZXZvbHZpbmcgaW50byBhbnkgdHlwZSB0aHJvdWdoIHJlYXNzaWdubWVudHMuXG4gICAqL1xuICBub0V2b2x2aW5nVHlwZXM/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyB0aGUgYW55IHR5cGUgdXNhZ2UuXG4gICAqL1xuICBub0V4cGxpY2l0QW55PzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdXNpbmcgZXhwb3J0IG9yIG1vZHVsZS5leHBvcnRzIGluIGZpbGVzIGNvbnRhaW5pbmcgdGVzdHNcbiAgICovXG4gIG5vRXhwb3J0c0luVGVzdD86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFByZXZlbnRzIHRoZSB3cm9uZyB1c2FnZSBvZiB0aGUgbm9uLW51bGwgYXNzZXJ0aW9uIG9wZXJhdG9yICghKSBpbiBUeXBlU2NyaXB0IGZpbGVzLlxuICAgKi9cbiAgbm9FeHRyYU5vbk51bGxBc3NlcnRpb24/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyBmYWxsdGhyb3VnaCBvZiBzd2l0Y2ggY2xhdXNlcy5cbiAgICovXG4gIG5vRmFsbHRocm91Z2hTd2l0Y2hDbGF1c2U/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyBmb2N1c2VkIHRlc3RzLlxuICAgKi9cbiAgbm9Gb2N1c2VkVGVzdHM/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyByZWFzc2lnbmluZyBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuXG4gICAqL1xuICBub0Z1bmN0aW9uQXNzaWduPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgYXNzaWdubWVudHMgdG8gbmF0aXZlIG9iamVjdHMgYW5kIHJlYWQtb25seSBnbG9iYWwgdmFyaWFibGVzLlxuICAgKi9cbiAgbm9HbG9iYWxBc3NpZ24/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBVc2UgTnVtYmVyLmlzRmluaXRlIGluc3RlYWQgb2YgZ2xvYmFsIGlzRmluaXRlLlxuICAgKi9cbiAgbm9HbG9iYWxJc0Zpbml0ZT86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFVzZSBOdW1iZXIuaXNOYU4gaW5zdGVhZCBvZiBnbG9iYWwgaXNOYU4uXG4gICAqL1xuICBub0dsb2JhbElzTmFuPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdXNlIG9mIGltcGxpY2l0IGFueSB0eXBlIG9uIHZhcmlhYmxlIGRlY2xhcmF0aW9ucy5cbiAgICovXG4gIG5vSW1wbGljaXRBbnlMZXQ/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyBhc3NpZ25pbmcgdG8gaW1wb3J0ZWQgYmluZGluZ3NcbiAgICovXG4gIG5vSW1wb3J0QXNzaWduPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgaW52YWxpZCAhaW1wb3J0YW50IHdpdGhpbiBrZXlmcmFtZSBkZWNsYXJhdGlvbnNcbiAgICovXG4gIG5vSW1wb3J0YW50SW5LZXlmcmFtZT86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IGxhYmVscyB0aGF0IHNoYXJlIGEgbmFtZSB3aXRoIGEgdmFyaWFibGVcbiAgICovXG4gIG5vTGFiZWxWYXI/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBEaXNhbGxvdyBjaGFyYWN0ZXJzIG1hZGUgd2l0aCBtdWx0aXBsZSBjb2RlIHBvaW50cyBpbiBjaGFyYWN0ZXIgY2xhc3Mgc3ludGF4LlxuICAgKi9cbiAgbm9NaXNsZWFkaW5nQ2hhcmFjdGVyQ2xhc3M/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBFbmZvcmNlIHByb3BlciB1c2FnZSBvZiBuZXcgYW5kIGNvbnN0cnVjdG9yLlxuICAgKi9cbiAgbm9NaXNsZWFkaW5nSW5zdGFudGlhdG9yPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogQ2hlY2tzIHRoYXQgdGhlIGFzc2VydGlvbiBmdW5jdGlvbiwgZm9yIGV4YW1wbGUgZXhwZWN0LCBpcyBwbGFjZWQgaW5zaWRlIGFuIGl0KCkgZnVuY3Rpb24gY2FsbC5cbiAgICovXG4gIG5vTWlzcGxhY2VkQXNzZXJ0aW9uPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgc2hvcnRoYW5kIGFzc2lnbiB3aGVuIHZhcmlhYmxlIGFwcGVhcnMgb24gYm90aCBzaWRlcy5cbiAgICovXG4gIG5vTWlzcmVmYWN0b3JlZFNob3J0aGFuZEFzc2lnbj86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IGRpcmVjdCB1c2Ugb2YgT2JqZWN0LnByb3RvdHlwZSBidWlsdGlucy5cbiAgICovXG4gIG5vUHJvdG90eXBlQnVpbHRpbnM/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBQcmV2ZW50cyBSZWFjdC1zcGVjaWZpYyBKU1ggcHJvcGVydGllcyBmcm9tIGJlaW5nIHVzZWQuXG4gICAqL1xuICBub1JlYWN0U3BlY2lmaWNQcm9wcz86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHZhcmlhYmxlLCBmdW5jdGlvbiwgY2xhc3MsIGFuZCB0eXBlIHJlZGVjbGFyYXRpb25zIGluIHRoZSBzYW1lIHNjb3BlLlxuICAgKi9cbiAgbm9SZWRlY2xhcmU/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBQcmV2ZW50cyBmcm9tIGhhdmluZyByZWR1bmRhbnQgXCJ1c2Ugc3RyaWN0XCIuXG4gICAqL1xuICBub1JlZHVuZGFudFVzZVN0cmljdD86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IGNvbXBhcmlzb25zIHdoZXJlIGJvdGggc2lkZXMgYXJlIGV4YWN0bHkgdGhlIHNhbWUuXG4gICAqL1xuICBub1NlbGZDb21wYXJlPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgaWRlbnRpZmllcnMgZnJvbSBzaGFkb3dpbmcgcmVzdHJpY3RlZCBuYW1lcy5cbiAgICovXG4gIG5vU2hhZG93UmVzdHJpY3RlZE5hbWVzPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgc2hvcnRoYW5kIHByb3BlcnRpZXMgdGhhdCBvdmVycmlkZSByZWxhdGVkIGxvbmdoYW5kIHByb3BlcnRpZXMuXG4gICAqL1xuICBub1Nob3J0aGFuZFByb3BlcnR5T3ZlcnJpZGVzPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgZGlzYWJsZWQgdGVzdHMuXG4gICAqL1xuICBub1NraXBwZWRUZXN0cz86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHNwYXJzZSBhcnJheXNcbiAgICovXG4gIG5vU3BhcnNlQXJyYXk/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBJdCBkZXRlY3RzIHBvc3NpYmxlIFwid3JvbmdcIiBzZW1pY29sb25zIGluc2lkZSBKU1ggZWxlbWVudHMuXG4gICAqL1xuICBub1N1c3BpY2lvdXNTZW1pY29sb25JbkpzeD86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHRoZW4gcHJvcGVydHkuXG4gICAqL1xuICBub1RoZW5Qcm9wZXJ0eT86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIERpc2FsbG93IHVuc2FmZSBkZWNsYXJhdGlvbiBtZXJnaW5nIGJldHdlZW4gaW50ZXJmYWNlcyBhbmQgY2xhc3Nlcy5cbiAgICovXG4gIG5vVW5zYWZlRGVjbGFyYXRpb25NZXJnaW5nPzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRGlzYWxsb3cgdXNpbmcgdW5zYWZlIG5lZ2F0aW9uLlxuICAgKi9cbiAgbm9VbnNhZmVOZWdhdGlvbj86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEl0IGVuYWJsZXMgdGhlIHJlY29tbWVuZGVkIHJ1bGVzIGZvciB0aGlzIGdyb3VwXG4gICAqL1xuICByZWNvbW1lbmRlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBFbnN1cmUgYXN5bmMgZnVuY3Rpb25zIHV0aWxpemUgYXdhaXQuXG4gICAqL1xuICB1c2VBd2FpdD86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEVuZm9yY2UgZGVmYXVsdCBjbGF1c2VzIGluIHN3aXRjaCBzdGF0ZW1lbnRzIHRvIGJlIGxhc3RcbiAgICovXG4gIHVzZURlZmF1bHRTd2l0Y2hDbGF1c2VMYXN0PzogSVJ1bGVDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogRW5mb3JjZSBwYXNzaW5nIGEgbWVzc2FnZSB2YWx1ZSB3aGVuIGNyZWF0aW5nIGEgYnVpbHQtaW4gZXJyb3IuXG4gICAqL1xuICB1c2VFcnJvck1lc3NhZ2U/OiBJUnVsZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBFbmZvcmNlIGdldCBtZXRob2RzIHRvIGFsd2F5cyByZXR1cm4gYSB2YWx1ZS5cbiAgICovXG4gIHVzZUdldHRlclJldHVybj86IElSdWxlQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFVzZSBBcnJheS5pc0FycmF5KCkgaW5zdGVhZCBvZiBpbnN0YW5jZW9mIEFycmF5LlxuICAgKi9cbiAgdXNlSXNBcnJheT86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFJlcXVpcmUgdXNpbmcgdGhlIG5hbWVzcGFjZSBrZXl3b3JkIG92ZXIgdGhlIG1vZHVsZSBrZXl3b3JkIHRvIGRlY2xhcmUgVHlwZVNjcmlwdCBuYW1lc3BhY2VzLlxuICAgKi9cbiAgdXNlTmFtZXNwYWNlS2V5d29yZD86IElSdWxlRml4Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEVuZm9yY2UgdXNpbmcgdGhlIGRpZ2l0cyBhcmd1bWVudCB3aXRoIE51bWJlciN0b0ZpeGVkKCkuXG4gICAqL1xuICB1c2VOdW1iZXJUb0ZpeGVkRGlnaXRzQXJndW1lbnQ/OiBJUnVsZUZpeENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBUaGlzIHJ1bGUgdmVyaWZpZXMgdGhlIHJlc3VsdCBvZiB0eXBlb2YgJGV4cHIgdW5hcnkgZXhwcmVzc2lvbnMgaXMgYmVpbmcgY29tcGFyZWQgdG8gdmFsaWQgdmFsdWVzLCBlaXRoZXIgc3RyaW5nIGxpdGVyYWxzIGNvbnRhaW5pbmcgdmFsaWQgdHlwZSBuYW1lcyBvciBvdGhlciB0eXBlb2YgZXhwcmVzc2lvbnNcbiAgICovXG4gIHVzZVZhbGlkVHlwZW9mPzogSVJ1bGVGaXhDb25maWd1cmF0aW9uO1xufVxuZXhwb3J0IGludGVyZmFjZSBJUnVsZVdpdGhOb0NvbnNvbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBraW5kIG9mIHRoZSBjb2RlIGFjdGlvbnMgZW1pdHRlZCBieSB0aGUgcnVsZVxuICAgKi9cbiAgZml4PzogSUZpeEtpbmQ7XG4gIC8qKlxuICAgKiBUaGUgc2V2ZXJpdHkgb2YgdGhlIGVtaXR0ZWQgZGlhZ25vc3RpY3MgYnkgdGhlIHJ1bGVcbiAgICovXG4gIGxldmVsOiBJUnVsZVBsYWluQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFJ1bGUncyBvcHRpb25zXG4gICAqL1xuICBvcHRpb25zPzogSU5vQ29uc29sZU9wdGlvbnM7XG59XG5leHBvcnQgaW50ZXJmYWNlIElOb0NvbnNvbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFsbG93ZWQgY2FsbHMgb24gdGhlIGNvbnNvbGUgb2JqZWN0LlxuICAgKi9cbiAgYWxsb3c6IHN0cmluZ1tdO1xufVxuZXhwb3J0IGludGVyZmFjZSBJUnVsZVdpdGhOb0RvdWJsZUVxdWFsc09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGtpbmQgb2YgdGhlIGNvZGUgYWN0aW9ucyBlbWl0dGVkIGJ5IHRoZSBydWxlXG4gICAqL1xuICBmaXg/OiBJRml4S2luZDtcbiAgLyoqXG4gICAqIFRoZSBzZXZlcml0eSBvZiB0aGUgZW1pdHRlZCBkaWFnbm9zdGljcyBieSB0aGUgcnVsZVxuICAgKi9cbiAgbGV2ZWw6IElSdWxlUGxhaW5Db25maWd1cmF0aW9uO1xuICAvKipcbiAgICogUnVsZSdzIG9wdGlvbnNcbiAgICovXG4gIG9wdGlvbnM/OiBJTm9Eb3VibGVFcXVhbHNPcHRpb25zO1xufVxuLyoqXG4gKiBSdWxlJ3Mgb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElOb0RvdWJsZUVxdWFsc09wdGlvbnMge1xuICAvKipcbiAgICogSWYgYHRydWVgLCBhbiBleGNlcHRpb24gaXMgbWFkZSB3aGVuIGNvbXBhcmluZyB3aXRoIGBudWxsYCwgYXMgaXQncyBvZnRlbiByZWxpZWQgb24gdG8gY2hlY2sgYm90aCBmb3IgYG51bGxgIG9yIGB1bmRlZmluZWRgLlxuICAgKlxuICAgKiBJZiBgZmFsc2VgLCBubyBzdWNoIGV4Y2VwdGlvbiB3aWxsIGJlIG1hZGUuXG4gICAqL1xuICBpZ25vcmVOdWxsPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSU9yZ2FuaXplSW1wb3J0cyB7XG4gIC8qKlxuICAgKiBFbmFibGVzIHRoZSBvcmdhbml6YXRpb24gb2YgaW1wb3J0c1xuICAgKi9cbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgVW5peCBzaGVsbCBzdHlsZSBwYXR0ZXJucy4gVGhlIGZvcm1hdHRlciB3aWxsIGlnbm9yZSBmaWxlcy9mb2xkZXJzIHRoYXQgd2lsbCBtYXRjaCB0aGVzZSBwYXR0ZXJucy5cbiAgICovXG4gIGlnbm9yZT86IElTdHJpbmdTZXQ7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgVW5peCBzaGVsbCBzdHlsZSBwYXR0ZXJucy4gVGhlIGZvcm1hdHRlciB3aWxsIGluY2x1ZGUgZmlsZXMvZm9sZGVycyB0aGF0IHdpbGwgbWF0Y2ggdGhlc2UgcGF0dGVybnMuXG4gICAqL1xuICBpbmNsdWRlPzogSVN0cmluZ1NldDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSU92ZXJyaWRlUGF0dGVybiB7XG4gIC8qKlxuICAgKiBTcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvciB0aGUgQ3NzIGxhbmd1YWdlXG4gICAqL1xuICBjc3M/OiBJQ3NzQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBKc29uIGxhbmd1YWdlXG4gICAqL1xuICBmb3JtYXR0ZXI/OiBJT3ZlcnJpZGVGb3JtYXR0ZXJDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogU3BlY2lmaWMgY29uZmlndXJhdGlvbiBmb3IgdGhlIEdyYXBocWwgbGFuZ3VhZ2VcbiAgICovXG4gIGdyYXBocWw/OiBJR3JhcGhxbENvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgVW5peCBzaGVsbCBzdHlsZSBwYXR0ZXJucy4gVGhlIGZvcm1hdHRlciB3aWxsIGlnbm9yZSBmaWxlcy9mb2xkZXJzIHRoYXQgd2lsbCBtYXRjaCB0aGVzZSBwYXR0ZXJucy5cbiAgICovXG4gIGlnbm9yZT86IElTdHJpbmdTZXQ7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgVW5peCBzaGVsbCBzdHlsZSBwYXR0ZXJucy4gVGhlIGZvcm1hdHRlciB3aWxsIGluY2x1ZGUgZmlsZXMvZm9sZGVycyB0aGF0IHdpbGwgbWF0Y2ggdGhlc2UgcGF0dGVybnMuXG4gICAqL1xuICBpbmNsdWRlPzogSVN0cmluZ1NldDtcbiAgLyoqXG4gICAqIFNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBKYXZhU2NyaXB0IGxhbmd1YWdlXG4gICAqL1xuICBqYXZhc2NyaXB0PzogSUphdmFzY3JpcHRDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogU3BlY2lmaWMgY29uZmlndXJhdGlvbiBmb3IgdGhlIEpzb24gbGFuZ3VhZ2VcbiAgICovXG4gIGpzb24/OiBJSnNvbkNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBTcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvciB0aGUgSnNvbiBsYW5ndWFnZVxuICAgKi9cbiAgbGludGVyPzogSU92ZXJyaWRlTGludGVyQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIFNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBKc29uIGxhbmd1YWdlXG4gICAqL1xuICBvcmdhbml6ZUltcG9ydHM/OiBJT3ZlcnJpZGVPcmdhbml6ZUltcG9ydHNDb25maWd1cmF0aW9uO1xufVxuZXhwb3J0IGludGVyZmFjZSBJT3ZlcnJpZGVGb3JtYXR0ZXJDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBhdHRyaWJ1dGUgcG9zaXRpb24gc3R5bGUuXG4gICAqL1xuICBhdHRyaWJ1dGVQb3NpdGlvbj86IElBdHRyaWJ1dGVQb3NpdGlvbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5zZXJ0IHNwYWNlcyBhcm91bmQgYnJhY2tldHMgaW4gb2JqZWN0IGxpdGVyYWxzLiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKi9cbiAgYnJhY2tldFNwYWNpbmc/OiBJQnJhY2tldFNwYWNpbmc7XG4gIGVuYWJsZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogU3RvcmVzIHdoZXRoZXIgZm9ybWF0dGluZyBzaG91bGQgYmUgYWxsb3dlZCB0byBwcm9jZWVkIGlmIGEgZ2l2ZW4gZmlsZSBoYXMgc3ludGF4IGVycm9yc1xuICAgKi9cbiAgZm9ybWF0V2l0aEVycm9ycz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgaW5kZW50YXRpb24sIDIgYnkgZGVmYXVsdCAoZGVwcmVjYXRlZCwgdXNlIGBpbmRlbnQtd2lkdGhgKVxuICAgKi9cbiAgaW5kZW50U2l6ZT86IElJbmRlbnRXaWR0aDtcbiAgLyoqXG4gICAqIFRoZSBpbmRlbnQgc3R5bGUuXG4gICAqL1xuICBpbmRlbnRTdHlsZT86IElJbmRlbnRTdHlsZTtcbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBpbmRlbnRhdGlvbiwgMiBieSBkZWZhdWx0XG4gICAqL1xuICBpbmRlbnRXaWR0aD86IElJbmRlbnRXaWR0aDtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGxpbmUgZW5kaW5nLlxuICAgKi9cbiAgbGluZUVuZGluZz86IElMaW5lRW5kaW5nO1xuICAvKipcbiAgICogV2hhdCdzIHRoZSBtYXggd2lkdGggb2YgYSBsaW5lLiBEZWZhdWx0cyB0byA4MC5cbiAgICovXG4gIGxpbmVXaWR0aD86IElMaW5lV2lkdGg7XG59XG5leHBvcnQgaW50ZXJmYWNlIElPdmVycmlkZUxpbnRlckNvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogaWYgYGZhbHNlYCwgaXQgZGlzYWJsZXMgdGhlIGZlYXR1cmUgYW5kIHRoZSBsaW50ZXIgd29uJ3QgYmUgZXhlY3V0ZWQuIGB0cnVlYCBieSBkZWZhdWx0XG4gICAqL1xuICBlbmFibGVkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIExpc3Qgb2YgcnVsZXNcbiAgICovXG4gIHJ1bGVzPzogSVJ1bGVzO1xufVxuZXhwb3J0IGludGVyZmFjZSBJT3ZlcnJpZGVPcmdhbml6ZUltcG9ydHNDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIGlmIGBmYWxzZWAsIGl0IGRpc2FibGVzIHRoZSBmZWF0dXJlIGFuZCB0aGUgbGludGVyIHdvbid0IGJlIGV4ZWN1dGVkLiBgdHJ1ZWAgYnkgZGVmYXVsdFxuICAgKi9cbiAgZW5hYmxlZD86IGJvb2xlYW47XG59XG4vKipcbiAqIFNldCBvZiBwcm9wZXJ0aWVzIHRvIGludGVncmF0ZSBCaW9tZSB3aXRoIGEgVkNTIHNvZnR3YXJlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElWY3NDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBraW5kIG9mIGNsaWVudC5cbiAgICovXG4gIGNsaWVudEtpbmQ/OiBJVmNzQ2xpZW50S2luZDtcbiAgLyoqXG4gICAqIFRoZSBtYWluIGJyYW5jaCBvZiB0aGUgcHJvamVjdFxuICAgKi9cbiAgZGVmYXVsdEJyYW5jaD86IHN0cmluZztcbiAgLyoqXG4gICAqIFdoZXRoZXIgQmlvbWUgc2hvdWxkIGludGVncmF0ZSBpdHNlbGYgd2l0aCB0aGUgVkNTIGNsaWVudFxuICAgKi9cbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgZm9sZGVyIHdoZXJlIEJpb21lIHNob3VsZCBjaGVjayBmb3IgVkNTIGZpbGVzLiBCeSBkZWZhdWx0LCBCaW9tZSB3aWxsIHVzZSB0aGUgc2FtZSBmb2xkZXIgd2hlcmUgYGJpb21lLmpzb25gIHdhcyBmb3VuZC5cbiAgICpcbiAgICogSWYgQmlvbWUgY2FuJ3QgZmluZCB0aGUgY29uZmlndXJhdGlvbiwgaXQgd2lsbCBhdHRlbXB0IHRvIHVzZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4gSWYgbm8gY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBjYW4ndCBiZSBmb3VuZCwgQmlvbWUgd29uJ3QgdXNlIHRoZSBWQ1MgaW50ZWdyYXRpb24sIGFuZCBhIGRpYWdub3N0aWMgd2lsbCBiZSBlbWl0dGVkXG4gICAqL1xuICByb290Pzogc3RyaW5nO1xuICAvKipcbiAgICogV2hldGhlciBCaW9tZSBzaG91bGQgdXNlIHRoZSBWQ1MgaWdub3JlIGZpbGUuIFdoZW4gW3RydWVdLCBCaW9tZSB3aWxsIGlnbm9yZSB0aGUgZmlsZXMgc3BlY2lmaWVkIGluIHRoZSBpZ25vcmUgZmlsZS5cbiAgICovXG4gIHVzZUlnbm9yZUZpbGU/OiBib29sZWFuO1xufVxuIl19
|
|
47
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
48
|
+
function toJson_BiomeConfiguration(obj) {
|
|
49
|
+
if (obj === undefined) {
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
const result = {
|
|
53
|
+
'$schema': obj.schema,
|
|
54
|
+
'assist': toJson_AssistConfiguration(obj.assist),
|
|
55
|
+
'css': toJson_CssConfiguration(obj.css),
|
|
56
|
+
'extends': obj.extends?.map(y => y),
|
|
57
|
+
'files': toJson_FilesConfiguration(obj.files),
|
|
58
|
+
'formatter': toJson_FormatterConfiguration(obj.formatter),
|
|
59
|
+
'graphql': toJson_GraphqlConfiguration(obj.graphql),
|
|
60
|
+
'grit': toJson_GritConfiguration(obj.grit),
|
|
61
|
+
'html': toJson_HtmlConfiguration(obj.html),
|
|
62
|
+
'javascript': toJson_JsConfiguration(obj.javascript),
|
|
63
|
+
'json': toJson_JsonConfiguration(obj.json),
|
|
64
|
+
'linter': toJson_LinterConfiguration(obj.linter),
|
|
65
|
+
'overrides': obj.overrides?.map(y => toJson_OverridePattern(y)),
|
|
66
|
+
'plugins': obj.plugins?.map(y => y),
|
|
67
|
+
'root': obj.root,
|
|
68
|
+
'vcs': toJson_VcsConfiguration(obj.vcs),
|
|
69
|
+
};
|
|
70
|
+
// filter undefined values
|
|
71
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Converts an object of type 'AssistConfiguration' to JSON representation.
|
|
75
|
+
* @internal
|
|
76
|
+
*/
|
|
77
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
78
|
+
function toJson_AssistConfiguration(obj) {
|
|
79
|
+
if (obj === undefined) {
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
const result = {
|
|
83
|
+
'actions': toJson_Actions(obj.actions),
|
|
84
|
+
'enabled': obj.enabled,
|
|
85
|
+
'includes': obj.includes?.map(y => y),
|
|
86
|
+
};
|
|
87
|
+
// filter undefined values
|
|
88
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Converts an object of type 'CssConfiguration' to JSON representation.
|
|
92
|
+
* @internal
|
|
93
|
+
*/
|
|
94
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
95
|
+
function toJson_CssConfiguration(obj) {
|
|
96
|
+
if (obj === undefined) {
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
const result = {
|
|
100
|
+
'assist': toJson_CssAssistConfiguration(obj.assist),
|
|
101
|
+
'formatter': toJson_CssFormatterConfiguration(obj.formatter),
|
|
102
|
+
'globals': obj.globals?.map(y => y),
|
|
103
|
+
'linter': toJson_CssLinterConfiguration(obj.linter),
|
|
104
|
+
'parser': toJson_CssParserConfiguration(obj.parser),
|
|
105
|
+
};
|
|
106
|
+
// filter undefined values
|
|
107
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Converts an object of type 'FilesConfiguration' to JSON representation.
|
|
111
|
+
* @internal
|
|
112
|
+
*/
|
|
113
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
114
|
+
function toJson_FilesConfiguration(obj) {
|
|
115
|
+
if (obj === undefined) {
|
|
116
|
+
return undefined;
|
|
117
|
+
}
|
|
118
|
+
const result = {
|
|
119
|
+
'experimentalScannerIgnores': obj.experimentalScannerIgnores?.map(y => y),
|
|
120
|
+
'ignoreUnknown': obj.ignoreUnknown,
|
|
121
|
+
'includes': obj.includes?.map(y => y),
|
|
122
|
+
'maxSize': obj.maxSize,
|
|
123
|
+
};
|
|
124
|
+
// filter undefined values
|
|
125
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Converts an object of type 'FormatterConfiguration' to JSON representation.
|
|
129
|
+
* @internal
|
|
130
|
+
*/
|
|
131
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
132
|
+
function toJson_FormatterConfiguration(obj) {
|
|
133
|
+
if (obj === undefined) {
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
136
|
+
const result = {
|
|
137
|
+
'attributePosition': obj.attributePosition,
|
|
138
|
+
'bracketSameLine': obj.bracketSameLine,
|
|
139
|
+
'bracketSpacing': obj.bracketSpacing,
|
|
140
|
+
'enabled': obj.enabled,
|
|
141
|
+
'expand': obj.expand,
|
|
142
|
+
'formatWithErrors': obj.formatWithErrors,
|
|
143
|
+
'includes': obj.includes?.map(y => y),
|
|
144
|
+
'indentStyle': obj.indentStyle,
|
|
145
|
+
'indentWidth': obj.indentWidth,
|
|
146
|
+
'lineEnding': obj.lineEnding,
|
|
147
|
+
'lineWidth': obj.lineWidth,
|
|
148
|
+
'useEditorconfig': obj.useEditorconfig,
|
|
149
|
+
};
|
|
150
|
+
// filter undefined values
|
|
151
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Converts an object of type 'GraphqlConfiguration' to JSON representation.
|
|
155
|
+
* @internal
|
|
156
|
+
*/
|
|
157
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
158
|
+
function toJson_GraphqlConfiguration(obj) {
|
|
159
|
+
if (obj === undefined) {
|
|
160
|
+
return undefined;
|
|
161
|
+
}
|
|
162
|
+
const result = {
|
|
163
|
+
'assist': toJson_GraphqlAssistConfiguration(obj.assist),
|
|
164
|
+
'formatter': toJson_GraphqlFormatterConfiguration(obj.formatter),
|
|
165
|
+
'linter': toJson_GraphqlLinterConfiguration(obj.linter),
|
|
166
|
+
};
|
|
167
|
+
// filter undefined values
|
|
168
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Converts an object of type 'GritConfiguration' to JSON representation.
|
|
172
|
+
* @internal
|
|
173
|
+
*/
|
|
174
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
175
|
+
function toJson_GritConfiguration(obj) {
|
|
176
|
+
if (obj === undefined) {
|
|
177
|
+
return undefined;
|
|
178
|
+
}
|
|
179
|
+
const result = {
|
|
180
|
+
'assist': toJson_GritAssistConfiguration(obj.assist),
|
|
181
|
+
'formatter': toJson_GritFormatterConfiguration(obj.formatter),
|
|
182
|
+
'linter': toJson_GritLinterConfiguration(obj.linter),
|
|
183
|
+
};
|
|
184
|
+
// filter undefined values
|
|
185
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Converts an object of type 'HtmlConfiguration' to JSON representation.
|
|
189
|
+
* @internal
|
|
190
|
+
*/
|
|
191
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
192
|
+
function toJson_HtmlConfiguration(obj) {
|
|
193
|
+
if (obj === undefined) {
|
|
194
|
+
return undefined;
|
|
195
|
+
}
|
|
196
|
+
const result = {
|
|
197
|
+
'formatter': toJson_HtmlFormatterConfiguration(obj.formatter),
|
|
198
|
+
'parser': obj.parser,
|
|
199
|
+
};
|
|
200
|
+
// filter undefined values
|
|
201
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Converts an object of type 'JsConfiguration' to JSON representation.
|
|
205
|
+
* @internal
|
|
206
|
+
*/
|
|
207
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
208
|
+
function toJson_JsConfiguration(obj) {
|
|
209
|
+
if (obj === undefined) {
|
|
210
|
+
return undefined;
|
|
211
|
+
}
|
|
212
|
+
const result = {
|
|
213
|
+
'assist': toJson_JsAssistConfiguration(obj.assist),
|
|
214
|
+
'formatter': toJson_JsFormatterConfiguration(obj.formatter),
|
|
215
|
+
'globals': obj.globals?.map(y => y),
|
|
216
|
+
'jsxRuntime': obj.jsxRuntime,
|
|
217
|
+
'linter': toJson_JsLinterConfiguration(obj.linter),
|
|
218
|
+
'parser': toJson_JsParserConfiguration(obj.parser),
|
|
219
|
+
};
|
|
220
|
+
// filter undefined values
|
|
221
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Converts an object of type 'JsonConfiguration' to JSON representation.
|
|
225
|
+
* @internal
|
|
226
|
+
*/
|
|
227
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
228
|
+
function toJson_JsonConfiguration(obj) {
|
|
229
|
+
if (obj === undefined) {
|
|
230
|
+
return undefined;
|
|
231
|
+
}
|
|
232
|
+
const result = {
|
|
233
|
+
'assist': toJson_JsonAssistConfiguration(obj.assist),
|
|
234
|
+
'formatter': toJson_JsonFormatterConfiguration(obj.formatter),
|
|
235
|
+
'linter': toJson_JsonLinterConfiguration(obj.linter),
|
|
236
|
+
'parser': toJson_JsonParserConfiguration(obj.parser),
|
|
237
|
+
};
|
|
238
|
+
// filter undefined values
|
|
239
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Converts an object of type 'LinterConfiguration' to JSON representation.
|
|
243
|
+
* @internal
|
|
244
|
+
*/
|
|
245
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
246
|
+
function toJson_LinterConfiguration(obj) {
|
|
247
|
+
if (obj === undefined) {
|
|
248
|
+
return undefined;
|
|
249
|
+
}
|
|
250
|
+
const result = {
|
|
251
|
+
'domains': ((obj.domains) === undefined) ? undefined : (Object.entries(obj.domains).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})),
|
|
252
|
+
'enabled': obj.enabled,
|
|
253
|
+
'includes': obj.includes?.map(y => y),
|
|
254
|
+
'rules': toJson_Rules(obj.rules),
|
|
255
|
+
};
|
|
256
|
+
// filter undefined values
|
|
257
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Converts an object of type 'OverridePattern' to JSON representation.
|
|
261
|
+
* @internal
|
|
262
|
+
*/
|
|
263
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
264
|
+
function toJson_OverridePattern(obj) {
|
|
265
|
+
if (obj === undefined) {
|
|
266
|
+
return undefined;
|
|
267
|
+
}
|
|
268
|
+
const result = {
|
|
269
|
+
'assist': toJson_OverrideAssistConfiguration(obj.assist),
|
|
270
|
+
'css': toJson_CssConfiguration(obj.css),
|
|
271
|
+
'files': toJson_OverrideFilesConfiguration(obj.files),
|
|
272
|
+
'formatter': toJson_OverrideFormatterConfiguration(obj.formatter),
|
|
273
|
+
'graphql': toJson_GraphqlConfiguration(obj.graphql),
|
|
274
|
+
'grit': toJson_GritConfiguration(obj.grit),
|
|
275
|
+
'html': toJson_HtmlConfiguration(obj.html),
|
|
276
|
+
'includes': obj.includes?.map(y => y),
|
|
277
|
+
'javascript': toJson_JsConfiguration(obj.javascript),
|
|
278
|
+
'json': toJson_JsonConfiguration(obj.json),
|
|
279
|
+
'linter': toJson_OverrideLinterConfiguration(obj.linter),
|
|
280
|
+
'plugins': obj.plugins?.map(y => y),
|
|
281
|
+
};
|
|
282
|
+
// filter undefined values
|
|
283
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Converts an object of type 'VcsConfiguration' to JSON representation.
|
|
287
|
+
* @internal
|
|
288
|
+
*/
|
|
289
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
290
|
+
function toJson_VcsConfiguration(obj) {
|
|
291
|
+
if (obj === undefined) {
|
|
292
|
+
return undefined;
|
|
293
|
+
}
|
|
294
|
+
const result = {
|
|
295
|
+
'clientKind': obj.clientKind,
|
|
296
|
+
'defaultBranch': obj.defaultBranch,
|
|
297
|
+
'enabled': obj.enabled,
|
|
298
|
+
'root': obj.root,
|
|
299
|
+
'useIgnoreFile': obj.useIgnoreFile,
|
|
300
|
+
};
|
|
301
|
+
// filter undefined values
|
|
302
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Converts an object of type 'Actions' to JSON representation.
|
|
306
|
+
* @internal
|
|
307
|
+
*/
|
|
308
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
309
|
+
function toJson_Actions(obj) {
|
|
310
|
+
if (obj === undefined) {
|
|
311
|
+
return undefined;
|
|
312
|
+
}
|
|
313
|
+
const result = {
|
|
314
|
+
'recommended': obj.recommended,
|
|
315
|
+
'source': toJson_Source(obj.source),
|
|
316
|
+
};
|
|
317
|
+
// filter undefined values
|
|
318
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Converts an object of type 'CssAssistConfiguration' to JSON representation.
|
|
322
|
+
* @internal
|
|
323
|
+
*/
|
|
324
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
325
|
+
function toJson_CssAssistConfiguration(obj) {
|
|
326
|
+
if (obj === undefined) {
|
|
327
|
+
return undefined;
|
|
328
|
+
}
|
|
329
|
+
const result = {
|
|
330
|
+
'enabled': obj.enabled,
|
|
331
|
+
};
|
|
332
|
+
// filter undefined values
|
|
333
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Converts an object of type 'CssFormatterConfiguration' to JSON representation.
|
|
337
|
+
* @internal
|
|
338
|
+
*/
|
|
339
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
340
|
+
function toJson_CssFormatterConfiguration(obj) {
|
|
341
|
+
if (obj === undefined) {
|
|
342
|
+
return undefined;
|
|
343
|
+
}
|
|
344
|
+
const result = {
|
|
345
|
+
'enabled': obj.enabled,
|
|
346
|
+
'indentStyle': obj.indentStyle,
|
|
347
|
+
'indentWidth': obj.indentWidth,
|
|
348
|
+
'lineEnding': obj.lineEnding,
|
|
349
|
+
'lineWidth': obj.lineWidth,
|
|
350
|
+
'quoteStyle': obj.quoteStyle,
|
|
351
|
+
};
|
|
352
|
+
// filter undefined values
|
|
353
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Converts an object of type 'CssLinterConfiguration' to JSON representation.
|
|
357
|
+
* @internal
|
|
358
|
+
*/
|
|
359
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
360
|
+
function toJson_CssLinterConfiguration(obj) {
|
|
361
|
+
if (obj === undefined) {
|
|
362
|
+
return undefined;
|
|
363
|
+
}
|
|
364
|
+
const result = {
|
|
365
|
+
'enabled': obj.enabled,
|
|
366
|
+
};
|
|
367
|
+
// filter undefined values
|
|
368
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Converts an object of type 'CssParserConfiguration' to JSON representation.
|
|
372
|
+
* @internal
|
|
373
|
+
*/
|
|
374
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
375
|
+
function toJson_CssParserConfiguration(obj) {
|
|
376
|
+
if (obj === undefined) {
|
|
377
|
+
return undefined;
|
|
378
|
+
}
|
|
379
|
+
const result = {
|
|
380
|
+
'allowWrongLineComments': obj.allowWrongLineComments,
|
|
381
|
+
'cssModules': obj.cssModules,
|
|
382
|
+
};
|
|
383
|
+
// filter undefined values
|
|
384
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
385
|
+
}
|
|
386
|
+
/* eslint-enable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
387
|
+
/**
|
|
388
|
+
* @schema AttributePosition
|
|
389
|
+
*/
|
|
390
|
+
var AttributePosition;
|
|
391
|
+
(function (AttributePosition) {
|
|
392
|
+
/** auto */
|
|
393
|
+
AttributePosition["AUTO"] = "auto";
|
|
394
|
+
/** multiline */
|
|
395
|
+
AttributePosition["MULTILINE"] = "multiline";
|
|
396
|
+
})(AttributePosition || (exports.AttributePosition = AttributePosition = {}));
|
|
397
|
+
/**
|
|
398
|
+
* @schema Expand
|
|
399
|
+
*/
|
|
400
|
+
var Expand;
|
|
401
|
+
(function (Expand) {
|
|
402
|
+
/** auto */
|
|
403
|
+
Expand["AUTO"] = "auto";
|
|
404
|
+
/** always */
|
|
405
|
+
Expand["ALWAYS"] = "always";
|
|
406
|
+
/** never */
|
|
407
|
+
Expand["NEVER"] = "never";
|
|
408
|
+
})(Expand || (exports.Expand = Expand = {}));
|
|
409
|
+
/**
|
|
410
|
+
* @schema IndentStyle
|
|
411
|
+
*/
|
|
412
|
+
var IndentStyle;
|
|
413
|
+
(function (IndentStyle) {
|
|
414
|
+
/** tab */
|
|
415
|
+
IndentStyle["TAB"] = "tab";
|
|
416
|
+
/** space */
|
|
417
|
+
IndentStyle["SPACE"] = "space";
|
|
418
|
+
})(IndentStyle || (exports.IndentStyle = IndentStyle = {}));
|
|
419
|
+
/**
|
|
420
|
+
* @schema LineEnding
|
|
421
|
+
*/
|
|
422
|
+
var LineEnding;
|
|
423
|
+
(function (LineEnding) {
|
|
424
|
+
/** lf */
|
|
425
|
+
LineEnding["LF"] = "lf";
|
|
426
|
+
/** crlf */
|
|
427
|
+
LineEnding["CRLF"] = "crlf";
|
|
428
|
+
/** cr */
|
|
429
|
+
LineEnding["CR"] = "cr";
|
|
430
|
+
})(LineEnding || (exports.LineEnding = LineEnding = {}));
|
|
431
|
+
/**
|
|
432
|
+
* Converts an object of type 'GraphqlAssistConfiguration' to JSON representation.
|
|
433
|
+
* @internal
|
|
434
|
+
*/
|
|
435
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
436
|
+
function toJson_GraphqlAssistConfiguration(obj) {
|
|
437
|
+
if (obj === undefined) {
|
|
438
|
+
return undefined;
|
|
439
|
+
}
|
|
440
|
+
const result = {
|
|
441
|
+
'enabled': obj.enabled,
|
|
442
|
+
};
|
|
443
|
+
// filter undefined values
|
|
444
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* Converts an object of type 'GraphqlFormatterConfiguration' to JSON representation.
|
|
448
|
+
* @internal
|
|
449
|
+
*/
|
|
450
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
451
|
+
function toJson_GraphqlFormatterConfiguration(obj) {
|
|
452
|
+
if (obj === undefined) {
|
|
453
|
+
return undefined;
|
|
454
|
+
}
|
|
455
|
+
const result = {
|
|
456
|
+
'bracketSpacing': obj.bracketSpacing,
|
|
457
|
+
'enabled': obj.enabled,
|
|
458
|
+
'indentStyle': obj.indentStyle,
|
|
459
|
+
'indentWidth': obj.indentWidth,
|
|
460
|
+
'lineEnding': obj.lineEnding,
|
|
461
|
+
'lineWidth': obj.lineWidth,
|
|
462
|
+
'quoteStyle': obj.quoteStyle,
|
|
463
|
+
};
|
|
464
|
+
// filter undefined values
|
|
465
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* Converts an object of type 'GraphqlLinterConfiguration' to JSON representation.
|
|
469
|
+
* @internal
|
|
470
|
+
*/
|
|
471
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
472
|
+
function toJson_GraphqlLinterConfiguration(obj) {
|
|
473
|
+
if (obj === undefined) {
|
|
474
|
+
return undefined;
|
|
475
|
+
}
|
|
476
|
+
const result = {
|
|
477
|
+
'enabled': obj.enabled,
|
|
478
|
+
};
|
|
479
|
+
// filter undefined values
|
|
480
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* Converts an object of type 'GritAssistConfiguration' to JSON representation.
|
|
484
|
+
* @internal
|
|
485
|
+
*/
|
|
486
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
487
|
+
function toJson_GritAssistConfiguration(obj) {
|
|
488
|
+
if (obj === undefined) {
|
|
489
|
+
return undefined;
|
|
490
|
+
}
|
|
491
|
+
const result = {
|
|
492
|
+
'enabled': obj.enabled,
|
|
493
|
+
};
|
|
494
|
+
// filter undefined values
|
|
495
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
496
|
+
}
|
|
497
|
+
/**
|
|
498
|
+
* Converts an object of type 'GritFormatterConfiguration' to JSON representation.
|
|
499
|
+
* @internal
|
|
500
|
+
*/
|
|
501
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
502
|
+
function toJson_GritFormatterConfiguration(obj) {
|
|
503
|
+
if (obj === undefined) {
|
|
504
|
+
return undefined;
|
|
505
|
+
}
|
|
506
|
+
const result = {
|
|
507
|
+
'enabled': obj.enabled,
|
|
508
|
+
'indentStyle': obj.indentStyle,
|
|
509
|
+
'indentWidth': obj.indentWidth,
|
|
510
|
+
'lineEnding': obj.lineEnding,
|
|
511
|
+
'lineWidth': obj.lineWidth,
|
|
512
|
+
};
|
|
513
|
+
// filter undefined values
|
|
514
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
515
|
+
}
|
|
516
|
+
/**
|
|
517
|
+
* Converts an object of type 'GritLinterConfiguration' to JSON representation.
|
|
518
|
+
* @internal
|
|
519
|
+
*/
|
|
520
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
521
|
+
function toJson_GritLinterConfiguration(obj) {
|
|
522
|
+
if (obj === undefined) {
|
|
523
|
+
return undefined;
|
|
524
|
+
}
|
|
525
|
+
const result = {
|
|
526
|
+
'enabled': obj.enabled,
|
|
527
|
+
};
|
|
528
|
+
// filter undefined values
|
|
529
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* Converts an object of type 'HtmlFormatterConfiguration' to JSON representation.
|
|
533
|
+
* @internal
|
|
534
|
+
*/
|
|
535
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
536
|
+
function toJson_HtmlFormatterConfiguration(obj) {
|
|
537
|
+
if (obj === undefined) {
|
|
538
|
+
return undefined;
|
|
539
|
+
}
|
|
540
|
+
const result = {
|
|
541
|
+
'attributePosition': obj.attributePosition,
|
|
542
|
+
'bracketSameLine': obj.bracketSameLine,
|
|
543
|
+
'enabled': obj.enabled,
|
|
544
|
+
'indentScriptAndStyle': obj.indentScriptAndStyle,
|
|
545
|
+
'indentStyle': obj.indentStyle,
|
|
546
|
+
'indentWidth': obj.indentWidth,
|
|
547
|
+
'lineEnding': obj.lineEnding,
|
|
548
|
+
'lineWidth': obj.lineWidth,
|
|
549
|
+
'selfCloseVoidElements': obj.selfCloseVoidElements,
|
|
550
|
+
'whitespaceSensitivity': obj.whitespaceSensitivity,
|
|
551
|
+
};
|
|
552
|
+
// filter undefined values
|
|
553
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
554
|
+
}
|
|
555
|
+
/**
|
|
556
|
+
* Converts an object of type 'JsAssistConfiguration' to JSON representation.
|
|
557
|
+
* @internal
|
|
558
|
+
*/
|
|
559
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
560
|
+
function toJson_JsAssistConfiguration(obj) {
|
|
561
|
+
if (obj === undefined) {
|
|
562
|
+
return undefined;
|
|
563
|
+
}
|
|
564
|
+
const result = {
|
|
565
|
+
'enabled': obj.enabled,
|
|
566
|
+
};
|
|
567
|
+
// filter undefined values
|
|
568
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
569
|
+
}
|
|
570
|
+
/**
|
|
571
|
+
* Converts an object of type 'JsFormatterConfiguration' to JSON representation.
|
|
572
|
+
* @internal
|
|
573
|
+
*/
|
|
574
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
575
|
+
function toJson_JsFormatterConfiguration(obj) {
|
|
576
|
+
if (obj === undefined) {
|
|
577
|
+
return undefined;
|
|
578
|
+
}
|
|
579
|
+
const result = {
|
|
580
|
+
'arrowParentheses': obj.arrowParentheses,
|
|
581
|
+
'attributePosition': obj.attributePosition,
|
|
582
|
+
'bracketSameLine': obj.bracketSameLine,
|
|
583
|
+
'bracketSpacing': obj.bracketSpacing,
|
|
584
|
+
'enabled': obj.enabled,
|
|
585
|
+
'expand': obj.expand,
|
|
586
|
+
'indentStyle': obj.indentStyle,
|
|
587
|
+
'indentWidth': obj.indentWidth,
|
|
588
|
+
'jsxQuoteStyle': obj.jsxQuoteStyle,
|
|
589
|
+
'lineEnding': obj.lineEnding,
|
|
590
|
+
'lineWidth': obj.lineWidth,
|
|
591
|
+
'quoteProperties': obj.quoteProperties,
|
|
592
|
+
'quoteStyle': obj.quoteStyle,
|
|
593
|
+
'semicolons': obj.semicolons,
|
|
594
|
+
'trailingCommas': obj.trailingCommas,
|
|
595
|
+
};
|
|
596
|
+
// filter undefined values
|
|
597
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
598
|
+
}
|
|
599
|
+
/* eslint-enable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
600
|
+
/**
|
|
601
|
+
* Indicates the type of runtime or transformation used for interpreting JSX.
|
|
602
|
+
*
|
|
603
|
+
* @schema JsxRuntime
|
|
604
|
+
*/
|
|
605
|
+
var JsxRuntime;
|
|
606
|
+
(function (JsxRuntime) {
|
|
607
|
+
/** transparent */
|
|
608
|
+
JsxRuntime["TRANSPARENT"] = "transparent";
|
|
609
|
+
/** reactClassic */
|
|
610
|
+
JsxRuntime["REACT_CLASSIC"] = "reactClassic";
|
|
611
|
+
})(JsxRuntime || (exports.JsxRuntime = JsxRuntime = {}));
|
|
612
|
+
/**
|
|
613
|
+
* Converts an object of type 'JsLinterConfiguration' to JSON representation.
|
|
614
|
+
* @internal
|
|
615
|
+
*/
|
|
616
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
617
|
+
function toJson_JsLinterConfiguration(obj) {
|
|
618
|
+
if (obj === undefined) {
|
|
619
|
+
return undefined;
|
|
620
|
+
}
|
|
621
|
+
const result = {
|
|
622
|
+
'enabled': obj.enabled,
|
|
623
|
+
};
|
|
624
|
+
// filter undefined values
|
|
625
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
626
|
+
}
|
|
627
|
+
/**
|
|
628
|
+
* Converts an object of type 'JsParserConfiguration' to JSON representation.
|
|
629
|
+
* @internal
|
|
630
|
+
*/
|
|
631
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
632
|
+
function toJson_JsParserConfiguration(obj) {
|
|
633
|
+
if (obj === undefined) {
|
|
634
|
+
return undefined;
|
|
635
|
+
}
|
|
636
|
+
const result = {
|
|
637
|
+
'gritMetavariables': obj.gritMetavariables,
|
|
638
|
+
'jsxEverywhere': obj.jsxEverywhere,
|
|
639
|
+
'unsafeParameterDecoratorsEnabled': obj.unsafeParameterDecoratorsEnabled,
|
|
640
|
+
};
|
|
641
|
+
// filter undefined values
|
|
642
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
643
|
+
}
|
|
644
|
+
/**
|
|
645
|
+
* Converts an object of type 'JsonAssistConfiguration' to JSON representation.
|
|
646
|
+
* @internal
|
|
647
|
+
*/
|
|
648
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
649
|
+
function toJson_JsonAssistConfiguration(obj) {
|
|
650
|
+
if (obj === undefined) {
|
|
651
|
+
return undefined;
|
|
652
|
+
}
|
|
653
|
+
const result = {
|
|
654
|
+
'enabled': obj.enabled,
|
|
655
|
+
};
|
|
656
|
+
// filter undefined values
|
|
657
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
658
|
+
}
|
|
659
|
+
/**
|
|
660
|
+
* Converts an object of type 'JsonFormatterConfiguration' to JSON representation.
|
|
661
|
+
* @internal
|
|
662
|
+
*/
|
|
663
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
664
|
+
function toJson_JsonFormatterConfiguration(obj) {
|
|
665
|
+
if (obj === undefined) {
|
|
666
|
+
return undefined;
|
|
667
|
+
}
|
|
668
|
+
const result = {
|
|
669
|
+
'bracketSpacing': obj.bracketSpacing,
|
|
670
|
+
'enabled': obj.enabled,
|
|
671
|
+
'expand': obj.expand,
|
|
672
|
+
'indentStyle': obj.indentStyle,
|
|
673
|
+
'indentWidth': obj.indentWidth,
|
|
674
|
+
'lineEnding': obj.lineEnding,
|
|
675
|
+
'lineWidth': obj.lineWidth,
|
|
676
|
+
'trailingCommas': obj.trailingCommas,
|
|
677
|
+
};
|
|
678
|
+
// filter undefined values
|
|
679
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
680
|
+
}
|
|
681
|
+
/**
|
|
682
|
+
* Converts an object of type 'JsonLinterConfiguration' to JSON representation.
|
|
683
|
+
* @internal
|
|
684
|
+
*/
|
|
685
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
686
|
+
function toJson_JsonLinterConfiguration(obj) {
|
|
687
|
+
if (obj === undefined) {
|
|
688
|
+
return undefined;
|
|
689
|
+
}
|
|
690
|
+
const result = {
|
|
691
|
+
'enabled': obj.enabled,
|
|
692
|
+
};
|
|
693
|
+
// filter undefined values
|
|
694
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
695
|
+
}
|
|
696
|
+
/**
|
|
697
|
+
* Converts an object of type 'JsonParserConfiguration' to JSON representation.
|
|
698
|
+
* @internal
|
|
699
|
+
*/
|
|
700
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
701
|
+
function toJson_JsonParserConfiguration(obj) {
|
|
702
|
+
if (obj === undefined) {
|
|
703
|
+
return undefined;
|
|
704
|
+
}
|
|
705
|
+
const result = {
|
|
706
|
+
'allowComments': obj.allowComments,
|
|
707
|
+
'allowTrailingCommas': obj.allowTrailingCommas,
|
|
708
|
+
};
|
|
709
|
+
// filter undefined values
|
|
710
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
711
|
+
}
|
|
712
|
+
/* eslint-enable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
713
|
+
/**
|
|
714
|
+
* @schema RuleDomainValue
|
|
715
|
+
*/
|
|
716
|
+
var RuleDomainValue;
|
|
717
|
+
(function (RuleDomainValue) {
|
|
718
|
+
/** all */
|
|
719
|
+
RuleDomainValue["ALL"] = "all";
|
|
720
|
+
/** none */
|
|
721
|
+
RuleDomainValue["NONE"] = "none";
|
|
722
|
+
/** recommended */
|
|
723
|
+
RuleDomainValue["RECOMMENDED"] = "recommended";
|
|
724
|
+
})(RuleDomainValue || (exports.RuleDomainValue = RuleDomainValue = {}));
|
|
725
|
+
/**
|
|
726
|
+
* Converts an object of type 'Rules' to JSON representation.
|
|
727
|
+
* @internal
|
|
728
|
+
*/
|
|
729
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
730
|
+
function toJson_Rules(obj) {
|
|
731
|
+
if (obj === undefined) {
|
|
732
|
+
return undefined;
|
|
733
|
+
}
|
|
734
|
+
const result = {
|
|
735
|
+
'a11y': obj.a11Y,
|
|
736
|
+
'complexity': obj.complexity,
|
|
737
|
+
'correctness': obj.correctness,
|
|
738
|
+
'nursery': obj.nursery,
|
|
739
|
+
'performance': obj.performance,
|
|
740
|
+
'recommended': obj.recommended,
|
|
741
|
+
'security': obj.security,
|
|
742
|
+
'style': obj.style,
|
|
743
|
+
'suspicious': obj.suspicious,
|
|
744
|
+
};
|
|
745
|
+
// filter undefined values
|
|
746
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
747
|
+
}
|
|
748
|
+
/**
|
|
749
|
+
* Converts an object of type 'OverrideAssistConfiguration' to JSON representation.
|
|
750
|
+
* @internal
|
|
751
|
+
*/
|
|
752
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
753
|
+
function toJson_OverrideAssistConfiguration(obj) {
|
|
754
|
+
if (obj === undefined) {
|
|
755
|
+
return undefined;
|
|
756
|
+
}
|
|
757
|
+
const result = {
|
|
758
|
+
'actions': toJson_Actions(obj.actions),
|
|
759
|
+
'enabled': obj.enabled,
|
|
760
|
+
};
|
|
761
|
+
// filter undefined values
|
|
762
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
763
|
+
}
|
|
764
|
+
/**
|
|
765
|
+
* Converts an object of type 'OverrideFilesConfiguration' to JSON representation.
|
|
766
|
+
* @internal
|
|
767
|
+
*/
|
|
768
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
769
|
+
function toJson_OverrideFilesConfiguration(obj) {
|
|
770
|
+
if (obj === undefined) {
|
|
771
|
+
return undefined;
|
|
772
|
+
}
|
|
773
|
+
const result = {
|
|
774
|
+
'maxSize': obj.maxSize,
|
|
775
|
+
};
|
|
776
|
+
// filter undefined values
|
|
777
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
778
|
+
}
|
|
779
|
+
/**
|
|
780
|
+
* Converts an object of type 'OverrideFormatterConfiguration' to JSON representation.
|
|
781
|
+
* @internal
|
|
782
|
+
*/
|
|
783
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
784
|
+
function toJson_OverrideFormatterConfiguration(obj) {
|
|
785
|
+
if (obj === undefined) {
|
|
786
|
+
return undefined;
|
|
787
|
+
}
|
|
788
|
+
const result = {
|
|
789
|
+
'attributePosition': obj.attributePosition,
|
|
790
|
+
'bracketSameLine': obj.bracketSameLine,
|
|
791
|
+
'bracketSpacing': obj.bracketSpacing,
|
|
792
|
+
'enabled': obj.enabled,
|
|
793
|
+
'expand': obj.expand,
|
|
794
|
+
'formatWithErrors': obj.formatWithErrors,
|
|
795
|
+
'indentSize': obj.indentSize,
|
|
796
|
+
'indentStyle': obj.indentStyle,
|
|
797
|
+
'indentWidth': obj.indentWidth,
|
|
798
|
+
'lineEnding': obj.lineEnding,
|
|
799
|
+
'lineWidth': obj.lineWidth,
|
|
800
|
+
};
|
|
801
|
+
// filter undefined values
|
|
802
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
803
|
+
}
|
|
804
|
+
/**
|
|
805
|
+
* Converts an object of type 'OverrideLinterConfiguration' to JSON representation.
|
|
806
|
+
* @internal
|
|
807
|
+
*/
|
|
808
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
809
|
+
function toJson_OverrideLinterConfiguration(obj) {
|
|
810
|
+
if (obj === undefined) {
|
|
811
|
+
return undefined;
|
|
812
|
+
}
|
|
813
|
+
const result = {
|
|
814
|
+
'domains': ((obj.domains) === undefined) ? undefined : (Object.entries(obj.domains).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})),
|
|
815
|
+
'enabled': obj.enabled,
|
|
816
|
+
'rules': toJson_Rules(obj.rules),
|
|
817
|
+
};
|
|
818
|
+
// filter undefined values
|
|
819
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
820
|
+
}
|
|
821
|
+
/* eslint-enable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
822
|
+
/**
|
|
823
|
+
* Integration with the git client as VCS
|
|
824
|
+
*
|
|
825
|
+
* @schema VcsClientKind
|
|
826
|
+
*/
|
|
827
|
+
var VcsClientKind;
|
|
828
|
+
(function (VcsClientKind) {
|
|
829
|
+
/** git */
|
|
830
|
+
VcsClientKind["GIT"] = "git";
|
|
831
|
+
})(VcsClientKind || (exports.VcsClientKind = VcsClientKind = {}));
|
|
832
|
+
/**
|
|
833
|
+
* Converts an object of type 'Source' to JSON representation.
|
|
834
|
+
* @internal
|
|
835
|
+
*/
|
|
836
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
837
|
+
function toJson_Source(obj) {
|
|
838
|
+
if (obj === undefined) {
|
|
839
|
+
return undefined;
|
|
840
|
+
}
|
|
841
|
+
const result = {
|
|
842
|
+
'organizeImports': obj.organizeImports,
|
|
843
|
+
'recommended': obj.recommended,
|
|
844
|
+
'useSortedAttributes': obj.useSortedAttributes,
|
|
845
|
+
'useSortedKeys': obj.useSortedKeys,
|
|
846
|
+
'useSortedProperties': obj.useSortedProperties,
|
|
847
|
+
};
|
|
848
|
+
// filter undefined values
|
|
849
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
850
|
+
}
|
|
851
|
+
/* eslint-enable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
852
|
+
/**
|
|
853
|
+
* @schema QuoteStyle
|
|
854
|
+
*/
|
|
855
|
+
var QuoteStyle;
|
|
856
|
+
(function (QuoteStyle) {
|
|
857
|
+
/** double */
|
|
858
|
+
QuoteStyle["DOUBLE"] = "double";
|
|
859
|
+
/** single */
|
|
860
|
+
QuoteStyle["SINGLE"] = "single";
|
|
861
|
+
})(QuoteStyle || (exports.QuoteStyle = QuoteStyle = {}));
|
|
862
|
+
/**
|
|
863
|
+
* Controls whether void-elements should be self closed
|
|
864
|
+
*
|
|
865
|
+
* @schema SelfCloseVoidElements
|
|
866
|
+
*/
|
|
867
|
+
var SelfCloseVoidElements;
|
|
868
|
+
(function (SelfCloseVoidElements) {
|
|
869
|
+
/** never */
|
|
870
|
+
SelfCloseVoidElements["NEVER"] = "never";
|
|
871
|
+
/** always */
|
|
872
|
+
SelfCloseVoidElements["ALWAYS"] = "always";
|
|
873
|
+
})(SelfCloseVoidElements || (exports.SelfCloseVoidElements = SelfCloseVoidElements = {}));
|
|
874
|
+
/**
|
|
875
|
+
* Whitespace sensitivity for HTML formatting.
|
|
876
|
+
*
|
|
877
|
+
* The following two cases won't produce the same output:
|
|
878
|
+
*
|
|
879
|
+
* | | html | output | | -------------- | :------------: | :----------: | | with spaces | `1<b> 2 </b>3` | 1<b> 2 </b>3 | | without spaces | `1<b>2</b>3` | 1<b>2</b>3 |
|
|
880
|
+
*
|
|
881
|
+
* This happens because whitespace is significant in inline elements.
|
|
882
|
+
*
|
|
883
|
+
* As a consequence of this, the formatter must format blocks that look like this (assume a small line width, <20): ```html <span>really long content</span> ``` as this, where the content hugs the tags: ```html <span >really long content</span > ```
|
|
884
|
+
*
|
|
885
|
+
* Note that this is only necessary for inline elements. Block elements do not have this restriction.
|
|
886
|
+
*
|
|
887
|
+
* @schema WhitespaceSensitivity
|
|
888
|
+
*/
|
|
889
|
+
var WhitespaceSensitivity;
|
|
890
|
+
(function (WhitespaceSensitivity) {
|
|
891
|
+
/** css */
|
|
892
|
+
WhitespaceSensitivity["CSS"] = "css";
|
|
893
|
+
/** strict */
|
|
894
|
+
WhitespaceSensitivity["STRICT"] = "strict";
|
|
895
|
+
/** ignore */
|
|
896
|
+
WhitespaceSensitivity["IGNORE"] = "ignore";
|
|
897
|
+
})(WhitespaceSensitivity || (exports.WhitespaceSensitivity = WhitespaceSensitivity = {}));
|
|
898
|
+
/**
|
|
899
|
+
* @schema ArrowParentheses
|
|
900
|
+
*/
|
|
901
|
+
var ArrowParentheses;
|
|
902
|
+
(function (ArrowParentheses) {
|
|
903
|
+
/** always */
|
|
904
|
+
ArrowParentheses["ALWAYS"] = "always";
|
|
905
|
+
/** asNeeded */
|
|
906
|
+
ArrowParentheses["AS_NEEDED"] = "asNeeded";
|
|
907
|
+
})(ArrowParentheses || (exports.ArrowParentheses = ArrowParentheses = {}));
|
|
908
|
+
/**
|
|
909
|
+
* @schema QuoteProperties
|
|
910
|
+
*/
|
|
911
|
+
var QuoteProperties;
|
|
912
|
+
(function (QuoteProperties) {
|
|
913
|
+
/** asNeeded */
|
|
914
|
+
QuoteProperties["AS_NEEDED"] = "asNeeded";
|
|
915
|
+
/** preserve */
|
|
916
|
+
QuoteProperties["PRESERVE"] = "preserve";
|
|
917
|
+
})(QuoteProperties || (exports.QuoteProperties = QuoteProperties = {}));
|
|
918
|
+
/**
|
|
919
|
+
* @schema Semicolons
|
|
920
|
+
*/
|
|
921
|
+
var Semicolons;
|
|
922
|
+
(function (Semicolons) {
|
|
923
|
+
/** always */
|
|
924
|
+
Semicolons["ALWAYS"] = "always";
|
|
925
|
+
/** asNeeded */
|
|
926
|
+
Semicolons["AS_NEEDED"] = "asNeeded";
|
|
927
|
+
})(Semicolons || (exports.Semicolons = Semicolons = {}));
|
|
928
|
+
/**
|
|
929
|
+
* Print trailing commas wherever possible in multi-line comma-separated syntactic structures.
|
|
930
|
+
*
|
|
931
|
+
* @schema TrailingCommas
|
|
932
|
+
*/
|
|
933
|
+
var TrailingCommas;
|
|
934
|
+
(function (TrailingCommas) {
|
|
935
|
+
/** all */
|
|
936
|
+
TrailingCommas["ALL"] = "all";
|
|
937
|
+
/** es5 */
|
|
938
|
+
TrailingCommas["ES5"] = "es5";
|
|
939
|
+
/** none */
|
|
940
|
+
TrailingCommas["NONE"] = "none";
|
|
941
|
+
})(TrailingCommas || (exports.TrailingCommas = TrailingCommas = {}));
|
|
942
|
+
/**
|
|
943
|
+
* @schema TrailingCommas2
|
|
944
|
+
*/
|
|
945
|
+
var TrailingCommas2;
|
|
946
|
+
(function (TrailingCommas2) {
|
|
947
|
+
/** none */
|
|
948
|
+
TrailingCommas2["NONE"] = "none";
|
|
949
|
+
/** all */
|
|
950
|
+
TrailingCommas2["ALL"] = "all";
|
|
951
|
+
})(TrailingCommas2 || (exports.TrailingCommas2 = TrailingCommas2 = {}));
|
|
952
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlvbWUtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2phdmFzY3JpcHQvYmlvbWUvYmlvbWUtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTZIQSw4REFzQkM7QUFrQ0QsZ0VBU0M7QUFrREQsMERBV0M7QUE0REQsOERBVUM7QUF1R0Qsc0VBa0JDO0FBa0NELGtFQVNDO0FBb0NELDREQVNDO0FBNkJELDREQVFDO0FBMkRELHdEQVlDO0FBMkNELDREQVVDO0FBeUNELGdFQVVDO0FBaUdELHdEQWtCQztBQW9ERCwwREFXQztBQXlCRCx3Q0FRQztBQXNCRCxzRUFPQztBQTRERCw0RUFZQztBQXNCRCxzRUFPQztBQTZCRCxzRUFRQztBQWtFRCw4RUFPQztBQW9FRCxvRkFhQztBQXNCRCw4RUFPQztBQW9CRCx3RUFPQztBQWtERCw4RUFXQztBQW9CRCx3RUFPQztBQTRGRCw4RUFnQkM7QUFzQkQsb0VBT0M7QUFtSUQsMEVBcUJDO0FBa0NELG9FQU9DO0FBMENELG9FQVNDO0FBc0JELHdFQU9DO0FBMEVELDhFQWNDO0FBc0JELHdFQU9DO0FBNkJELHdFQVFDO0FBd0VELG9DQWVDO0FBMkJELGdGQVFDO0FBb0JELDhFQU9DO0FBMkZELHNGQWlCQztBQWtDRCxnRkFTQztBQTRERCxzQ0FXQztBQXpyRUQ7OztHQUdHO0FBQ0gscUZBQXFGO0FBQ3JGLFNBQWdCLHlCQUF5QixDQUFDLEdBQW1DO0lBQzNFLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQUMsT0FBTyxTQUFTLENBQUM7SUFBQyxDQUFDO0lBQzVDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsU0FBUyxFQUFFLEdBQUcsQ0FBQyxNQUFNO1FBQ3JCLFFBQVEsRUFBRSwwQkFBMEIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO1FBQ2hELEtBQUssRUFBRSx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO1FBQ3ZDLFNBQVMsRUFBRSxH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NkJBQVcsQ0FBQTtJQUNYLFdBQVc7SUFDWCwrQkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQVBXLGNBQWMsOEJBQWQsY0FBYyxRQU96QjtBQUVEOztHQUVHO0FBQ0gsSUFBWSxlQUtYO0FBTEQsV0FBWSxlQUFlO0lBQ3pCLFdBQVc7SUFDWCxnQ0FBYSxDQUFBO0lBQ2IsVUFBVTtJQUNWLDhCQUFXLENBQUE7QUFDYixDQUFDLEVBTFcsZUFBZSwrQkFBZixlQUFlLFFBSzFCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy50cyBhbmQgcnVuIFwibm9kZSAuL3Byb2plbi5qc1wiLlxuLyoqXG4gKiBUaGUgY29uZmlndXJhdGlvbiB0aGF0IGlzIGNvbnRhaW5lZCBpbnNpZGUgdGhlIGZpbGUgYGJpb21lLmpzb25gXG4gKlxuICogQHNjaGVtYSBCaW9tZUNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaW9tZUNvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogQSBmaWVsZCBmb3IgdGhlIFtKU09OIHNjaGVtYV0oaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvKSBzcGVjaWZpY2F0aW9uXG4gICAqXG4gICAqIEBzY2hlbWEgQmlvbWVDb25maWd1cmF0aW9uIyRzY2hlbWFcbiAgICovXG4gIHJlYWRvbmx5IHNjaGVtYT86IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWMgY29uZmlndXJhdGlvbiBmb3IgYXNzaXN0c1xuICAgKlxuICAgKiBAc2NoZW1hIEJpb21lQ29uZmlndXJhdGlvbiNhc3Npc3RcbiAgICovXG4gIHJlYWRvbmx5IGFzc2lzdD86IEFzc2lzdENvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBDc3MgbGFuZ3VhZ2VcbiAgICpcbiAgICogQHNjaGVtYSBCaW9tZUNvbmZpZ3VyYXRpb24jY3NzXG4gICAqL1xuICByZWFkb25seSBjc3M/OiBDc3NDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgcGF0aHMgdG8gb3RoZXIgSlNPTiBmaWxlcywgdXNlZCB0byBleHRlbmRzIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgQmlvbWVDb25maWd1cmF0aW9uI2V4dGVuZHNcbiAgICovXG4gIHJlYWRvbmx5IGV4dGVuZHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGZpbGVzeXN0ZW1cbiAgICpcbiAgICogQHNjaGVtYSBCaW9tZUNvbmZpZ3VyYXRpb24jZmlsZXNcbiAgICovXG4gIHJlYWRvbmx5IGZpbGVzPzogRmlsZXNDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBvZiB0aGUgZm9ybWF0dGVyXG4gICAqXG4gICAqIEBzY2hlbWEgQmlvbWVDb25maWd1cmF0aW9uI2Zvcm1hdHRlclxuICAgKi9cbiAgcmVhZG9ubHkgZm9ybWF0dGVyPzogRm9ybWF0dGVyQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogU3BlY2lmaWMgY29uZmlndXJhdGlvbiBmb3IgdGhlIEdyYXBoUUwgbGFuZ3VhZ2VcbiAgICpcbiAgICogQHNjaGVtYSBCaW9tZUNvbmZpZ3VyYXRpb24jZ3JhcGhxbFxuICAgKi9cbiAgcmVhZG9ubHkgZ3JhcGhxbD86IEdyYXBocWxDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvciB0aGUgR3JhcGhRTCBsYW5ndWFnZVxuICAgKlxuICAgKiBAc2NoZW1hIEJpb21lQ29uZmlndXJhdGlvbiNncml0XG4gICAqL1xuICByZWFkb25seSBncml0PzogR3JpdENvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBIVE1MIGxhbmd1YWdlXG4gICAqXG4gICAqIEBzY2hlbWEgQmlvbWVDb25maWd1cmF0aW9uI2h0bWxcbiAgICovXG4gIHJlYWRvbmx5IGh0bWw/OiBIdG1sQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogU3BlY2lmaWMgY29uZmlndXJhdGlvbiBmb3IgdGhlIEphdmFTY3JpcHQgbGFuZ3VhZ2VcbiAgICpcbiAgICogQHNjaGVtYSBCaW9tZUNvbmZpZ3VyYXRpb24jamF2YXNjcmlwdFxuICAgKi9cbiAgcmVhZG9ubHkgamF2YXNjcmlwdD86IEpzQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogU3BlY2lmaWMgY29uZmlndXJhdGlvbiBmb3IgdGhlIEpzb24gbGFuZ3VhZ2VcbiAgICpcbiAgICogQHNjaGVtYSBCaW9tZUNvbmZpZ3VyYXRpb24janNvblxuICAgKi9cbiAgcmVhZG9ubHkganNvbj86IEpzb25Db25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGxpbnRlclxuICAgKlxuICAgKiBAc2NoZW1hIEJpb21lQ29uZmlndXJhdGlvbiNsaW50ZXJcbiAgICovXG4gIHJlYWRvbmx5IGxpbnRlcj86IExpbnRlckNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBncmFudWxhciBwYXR0ZXJucyB0aGF0IHNob3VsZCBiZSBhcHBsaWVkIG9ubHkgdG8gYSBzdWIgc2V0IG9mIGZpbGVzXG4gICAqXG4gICAqIEBzY2hlbWEgQmlvbWVDb25maWd1cmF0aW9uI292ZXJyaWRlc1xuICAgKi9cbiAgcmVhZG9ubHkgb3ZlcnJpZGVzPzogT3ZlcnJpZGVQYXR0ZXJuW107XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgcGx1Z2lucyB0byBsb2FkLlxuICAgKlxuICAgKiBAc2NoZW1hIEJpb21lQ29uZmlndXJhdGlvbiNwbHVnaW5zXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlIGlzIGF0IHRoZSByb290IG9mIGEgQmlvbWUgcHJvamVjdC4gQnkgZGVmYXVsdCwgdGhpcyBpcyBgdHJ1ZWAuXG4gICAqXG4gICAqIEBzY2hlbWEgQmlvbWVDb25maWd1cmF0aW9uI3Jvb3RcbiAgICovXG4gIHJlYWRvbmx5IHJvb3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBvZiB0aGUgVkNTIGludGVncmF0aW9uXG4gICAqXG4gICAqIEBzY2hlbWEgQmlvbWVDb25maWd1cmF0aW9uI3Zjc1xuICAgKi9cbiAgcmVhZG9ubHkgdmNzPzogVmNzQ29uZmlndXJhdGlvbjtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQmlvbWVDb25maWd1cmF0aW9uJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fQmlvbWVDb25maWd1cmF0aW9uKG9iajogQmlvbWVDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnJHNjaGVtYSc6IG9iai5zY2hlbWEsXG4gICAgJ2Fzc2lzdCc6IHRvSnNvbl9Bc3Npc3RDb25maWd1cmF0aW9uKG9iai5hc3Npc3QpLFxuICAgICdjc3MnOiB0b0pzb25fQ3NzQ29uZmlndXJhdGlvbihvYmouY3NzKSxcbiAgICAnZXh0ZW5kcyc6IG9iai5leHRlbmRzPy5tYXAoeSA9PiB5KSxcbiAgICAnZmlsZXMnOiB0b0pzb25fRmlsZXNDb25maWd1cmF0aW9uKG9iai5maWxlcyksXG4gICAgJ2Zvcm1hdHRlcic6IHRvSnNvbl9Gb3JtYXR0ZXJDb25maWd1cmF0aW9uKG9iai5mb3JtYXR0ZXIpLFxuICAgICdncmFwaHFsJzogdG9Kc29uX0dyYXBocWxDb25maWd1cmF0aW9uKG9iai5ncmFwaHFsKSxcbiAgICAnZ3JpdCc6IHRvSnNvbl9Hcml0Q29uZmlndXJhdGlvbihvYmouZ3JpdCksXG4gICAgJ2h0bWwnOiB0b0pzb25fSHRtbENvbmZpZ3VyYXRpb24ob2JqLmh0bWwpLFxuICAgICdqYXZhc2NyaXB0JzogdG9Kc29uX0pzQ29uZmlndXJhdGlvbihvYmouamF2YXNjcmlwdCksXG4gICAgJ2pzb24nOiB0b0pzb25fSnNvbkNvbmZpZ3VyYXRpb24ob2JqLmpzb24pLFxuICAgICdsaW50ZXInOiB0b0pzb25fTGludGVyQ29uZmlndXJhdGlvbihvYmoubGludGVyKSxcbiAgICAnb3ZlcnJpZGVzJzogb2JqLm92ZXJyaWRlcz8ubWFwKHkgPT4gdG9Kc29uX092ZXJyaWRlUGF0dGVybih5KSksXG4gICAgJ3BsdWdpbnMnOiBvYmoucGx1Z2lucz8ubWFwKHkgPT4geSksXG4gICAgJ3Jvb3QnOiBvYmoucm9vdCxcbiAgICAndmNzJzogdG9Kc29uX1Zjc0NvbmZpZ3VyYXRpb24ob2JqLnZjcyksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEFzc2lzdENvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3Npc3RDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgQmlvbWUgc2hvdWxkIGZhaWwgaW4gQ0xJIGlmIHRoZSBhc3Npc3Qgd2VyZSBub3QgYXBwbGllZCB0byB0aGUgY29kZS5cbiAgICpcbiAgICogQHNjaGVtYSBBc3Npc3RDb25maWd1cmF0aW9uI2FjdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGFjdGlvbnM/OiBBY3Rpb25zO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIEJpb21lIHNob3VsZCBlbmFibGUgYXNzaXN0IHZpYSBMU1AgYW5kIENMSS5cbiAgICpcbiAgICogQHNjaGVtYSBBc3Npc3RDb25maWd1cmF0aW9uI2VuYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgZ2xvYiBwYXR0ZXJucy4gQmlvbWUgd2lsbCBpbmNsdWRlIGZpbGVzL2ZvbGRlcnMgdGhhdCB3aWxsIG1hdGNoIHRoZXNlIHBhdHRlcm5zLlxuICAgKlxuICAgKiBAc2NoZW1hIEFzc2lzdENvbmZpZ3VyYXRpb24jaW5jbHVkZXNcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0Fzc2lzdENvbmZpZ3VyYXRpb24nIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9Bc3Npc3RDb25maWd1cmF0aW9uKG9iajogQXNzaXN0Q29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2FjdGlvbnMnOiB0b0pzb25fQWN0aW9ucyhvYmouYWN0aW9ucyksXG4gICAgJ2VuYWJsZWQnOiBvYmouZW5hYmxlZCxcbiAgICAnaW5jbHVkZXMnOiBvYmouaW5jbHVkZXM/Lm1hcCh5ID0+IHkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogT3B0aW9ucyBhcHBsaWVkIHRvIENTUyBmaWxlc1xuICpcbiAqIEBzY2hlbWEgQ3NzQ29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIENzc0NvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogQ1NTIGFzc2lzdCBvcHRpb25zXG4gICAqXG4gICAqIEBzY2hlbWEgQ3NzQ29uZmlndXJhdGlvbiNhc3Npc3RcbiAgICovXG4gIHJlYWRvbmx5IGFzc2lzdD86IENzc0Fzc2lzdENvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIENTUyBmb3JtYXR0ZXIgb3B0aW9uc1xuICAgKlxuICAgKiBAc2NoZW1hIENzc0NvbmZpZ3VyYXRpb24jZm9ybWF0dGVyXG4gICAqL1xuICByZWFkb25seSBmb3JtYXR0ZXI/OiBDc3NGb3JtYXR0ZXJDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBDU1MgZ2xvYmFsc1xuICAgKlxuICAgKiBAc2NoZW1hIENzc0NvbmZpZ3VyYXRpb24jZ2xvYmFsc1xuICAgKi9cbiAgcmVhZG9ubHkgZ2xvYmFscz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDU1MgbGludGVyIG9wdGlvbnNcbiAgICpcbiAgICogQHNjaGVtYSBDc3NDb25maWd1cmF0aW9uI2xpbnRlclxuICAgKi9cbiAgcmVhZG9ubHkgbGludGVyPzogQ3NzTGludGVyQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogQ1NTIHBhcnNpbmcgb3B0aW9uc1xuICAgKlxuICAgKiBAc2NoZW1hIENzc0NvbmZpZ3VyYXRpb24jcGFyc2VyXG4gICAqL1xuICByZWFkb25seSBwYXJzZXI/OiBDc3NQYXJzZXJDb25maWd1cmF0aW9uO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdDc3NDb25maWd1cmF0aW9uJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fQ3NzQ29uZmlndXJhdGlvbihvYmo6IENzc0NvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdhc3Npc3QnOiB0b0pzb25fQ3NzQXNzaXN0Q29uZmlndXJhdGlvbihvYmouYXNzaXN0KSxcbiAgICAnZm9ybWF0dGVyJzogdG9Kc29uX0Nzc0Zvcm1hdHRlckNvbmZpZ3VyYXRpb24ob2JqLmZvcm1hdHRlciksXG4gICAgJ2dsb2JhbHMnOiBvYmouZ2xvYmFscz8ubWFwKHkgPT4geSksXG4gICAgJ2xpbnRlcic6IHRvSnNvbl9Dc3NMaW50ZXJDb25maWd1cmF0aW9uKG9iai5saW50ZXIpLFxuICAgICdwYXJzZXInOiB0b0pzb25fQ3NzUGFyc2VyQ29uZmlndXJhdGlvbihvYmoucGFyc2VyKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBmaWxlc3lzdGVtXG4gKlxuICogQHNjaGVtYSBGaWxlc0NvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWxlc0NvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogU2V0IG9mIGZpbGUgYW5kIGZvbGRlciBuYW1lcyB0aGF0IHNob3VsZCBiZSB1bmNvbmRpdGlvbmFsbHkgaWdub3JlZCBieSBCaW9tZSdzIHNjYW5uZXIuXG4gICAqXG4gICAqIEJpb21lIG1haW50YWlucyBhbiBpbnRlcm5hbCBsaXN0IG9mIGRlZmF1bHQgaWdub3JlIGVudHJpZXMsIHdoaWNoIGlzIGJhc2VkIG9uIHVzZXIgZmVlZGJhY2sgYW5kIHdoaWNoIG1heSBjaGFuZ2UgaW4gYW55IHJlbGVhc2UuIFRoaXMgc2V0dGluZyBhbGxvd3Mgb3ZlcnJpZGluZyB0aGlzIGludGVybmFsIGxpc3QgY29tcGxldGVseS5cbiAgICpcbiAgICogVGhpcyBpcyBjb25zaWRlcmVkIGFuIGFkdmFuY2VkIGZlYXR1cmUgdGhhdCB1c2VycyBfc2hvdWxkXyBub3QgbmVlZCB0byB0d2VhayB0aGVtc2VsdmVzLCBidXQgdGhleSBjYW4gYXMgYSBsYXN0IHJlc29ydC4gVGhpcyBzZXR0aW5nIGNhbiBvbmx5IGJlIGNvbmZpZ3VyZWQgaW4gcm9vdCBjb25maWd1cmF0aW9ucywgYW5kIGlzIGlnbm9yZWQgaW4gbmVzdGVkIGNvbmZpZ3MuXG4gICAqXG4gICAqIEVudHJpZXMgbXVzdCBiZSBmaWxlIG9yIGZvbGRlciAqbmFtZXMqLiBTcGVjaWZpYyBwYXRocyBhbmQgZ2xvYnMgYXJlIG5vdCBzdXBwb3J0ZWQuXG4gICAqXG4gICAqIEV4YW1wbGVzIHdoZXJlIHRoaXMgbWF5IGJlIHVzZWZ1bDpcbiAgICpcbiAgICogYGBganNvbmMgeyBcImZpbGVzXCI6IHsgXCJleHBlcmltZW50YWxTY2FubmVySWdub3Jlc1wiOiBbIC8vIFlvdSBhbG1vc3QgY2VydGFpbmx5IGRvbid0IHdhbnQgdG8gc2NhbiB5b3VyIGAuZ2l0YCAvLyBmb2xkZXIsIHdoaWNoIGlzIHdoeSBpdCdzIGFscmVhZHkgaWdub3JlZCBieSBkZWZhdWx0OiBcIi5naXRcIixcbiAgICpcbiAgICogLy8gQnV0IHRoZSBzY2FubmVyIGRvZXMgc2NhbiBgbm9kZV9tb2R1bGVzYCBieSBkZWZhdWx0LiBJZiAvLyB5b3UgKnJlYWxseSogZG9uJ3Qgd2FudCB0aGlzLCB5b3UgY2FuIGlnbm9yZSBpdCBsaWtlIC8vIHRoaXM6IFwibm9kZV9tb2R1bGVzXCIsXG4gICAqXG4gICAqIC8vIEJ1dCBpdCdzIHByb2JhYmx5IGJldHRlciB0byBpZ25vcmUgYSBzcGVjaWZpYyBkZXBlbmRlbmN5LiAvLyBGb3IgaW5zdGFuY2UsIG9uZSB0aGF0IGhhcHBlbnMgdG8gYmUgcGFydGljdWxhcmx5IHNsb3cgdG8gLy8gc2NhbjogXCJSZWRpc0NvbW1hbmRlci5kLnRzXCIsIF0sIH0gfSBgYGBcbiAgICpcbiAgICogUGxlYXNlIGJlIGF3YXJlIHRoYXQgcnVsZXMgcmVseWluZyBvbiB0aGUgbW9kdWxlIGdyYXBoIG9yIHR5cGUgaW5mZXJlbmNlIGluZm9ybWF0aW9uIG1heSBiZSBuZWdhdGl2ZWx5IGFmZmVjdGVkIGlmIGRlcGVuZGVuY2llcyBvZiB5b3VyIHByb2plY3QgYXJlbid0IChmdWxseSkgc2Nhbm5lZC5cbiAgICpcbiAgICogQHNjaGVtYSBGaWxlc0NvbmZpZ3VyYXRpb24jZXhwZXJpbWVudGFsU2Nhbm5lcklnbm9yZXNcbiAgICovXG4gIHJlYWRvbmx5IGV4cGVyaW1lbnRhbFNjYW5uZXJJZ25vcmVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRlbGxzIEJpb21lIHRvIG5vdCBlbWl0IGRpYWdub3N0aWNzIHdoZW4gaGFuZGxpbmcgZmlsZXMgdGhhdCBkb2Vzbid0IGtub3dcbiAgICpcbiAgICogQHNjaGVtYSBGaWxlc0NvbmZpZ3VyYXRpb24jaWdub3JlVW5rbm93blxuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlVW5rbm93bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBnbG9iIHBhdHRlcm5zLiBCaW9tZSB3aWxsIGhhbmRsZSBvbmx5IHRob3NlIGZpbGVzL2ZvbGRlcnMgdGhhdCB3aWxsIG1hdGNoIHRoZXNlIHBhdHRlcm5zLlxuICAgKlxuICAgKiBAc2NoZW1hIEZpbGVzQ29uZmlndXJhdGlvbiNpbmNsdWRlc1xuICAgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gYWxsb3dlZCBzaXplIGZvciBzb3VyY2UgY29kZSBmaWxlcyBpbiBieXRlcy4gRmlsZXMgYWJvdmUgdGhpcyBsaW1pdCB3aWxsIGJlIGlnbm9yZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIERlZmF1bHRzIHRvIDEgTWlCXG4gICAqXG4gICAqIEBkZWZhdWx0IDEgTWlCXG4gICAqIEBzY2hlbWEgRmlsZXNDb25maWd1cmF0aW9uI21heFNpemVcbiAgICovXG4gIHJlYWRvbmx5IG1heFNpemU/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0ZpbGVzQ29uZmlndXJhdGlvbicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0ZpbGVzQ29uZmlndXJhdGlvbihvYmo6IEZpbGVzQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2V4cGVyaW1lbnRhbFNjYW5uZXJJZ25vcmVzJzogb2JqLmV4cGVyaW1lbnRhbFNjYW5uZXJJZ25vcmVzPy5tYXAoeSA9PiB5KSxcbiAgICAnaWdub3JlVW5rbm93bic6IG9iai5pZ25vcmVVbmtub3duLFxuICAgICdpbmNsdWRlcyc6IG9iai5pbmNsdWRlcz8ubWFwKHkgPT4geSksXG4gICAgJ21heFNpemUnOiBvYmoubWF4U2l6ZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEdlbmVyaWMgb3B0aW9ucyBhcHBsaWVkIHRvIGFsbCBmaWxlc1xuICpcbiAqIEBzY2hlbWEgRm9ybWF0dGVyQ29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdHRlckNvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVGhlIGF0dHJpYnV0ZSBwb3NpdGlvbiBzdHlsZSBpbiBIVE1MLWlzaCBsYW5ndWFnZXMuIERlZmF1bHRzIHRvIGF1dG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGF1dG8uXG4gICAqIEBzY2hlbWEgRm9ybWF0dGVyQ29uZmlndXJhdGlvbiNhdHRyaWJ1dGVQb3NpdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgYXR0cmlidXRlUG9zaXRpb24/OiBBdHRyaWJ1dGVQb3NpdGlvbjtcblxuICAvKipcbiAgICogUHV0IHRoZSBgPmAgb2YgYSBtdWx0aS1saW5lIEhUTUwgb3IgSlNYIGVsZW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgbGFzdCBsaW5lIGluc3RlYWQgb2YgYmVpbmcgYWxvbmUgb24gdGhlIG5leHQgbGluZSAoZG9lcyBub3QgYXBwbHkgdG8gc2VsZiBjbG9zaW5nIGVsZW1lbnRzKS5cbiAgICpcbiAgICogQHNjaGVtYSBGb3JtYXR0ZXJDb25maWd1cmF0aW9uI2JyYWNrZXRTYW1lTGluZVxuICAgKi9cbiAgcmVhZG9ubHkgYnJhY2tldFNhbWVMaW5lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbnNlcnQgc3BhY2VzIGFyb3VuZCBicmFja2V0cyBpbiBvYmplY3QgbGl0ZXJhbHMuIERlZmF1bHRzIHRvIHRydWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWUuXG4gICAqIEBzY2hlbWEgRm9ybWF0dGVyQ29uZmlndXJhdGlvbiNicmFja2V0U3BhY2luZ1xuICAgKi9cbiAgcmVhZG9ubHkgYnJhY2tldFNwYWNpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZvcm1hdHRlckNvbmZpZ3VyYXRpb24jZW5hYmxlZFxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZXhwYW5kIGFycmF5cyBhbmQgb2JqZWN0cyBvbiBtdWx0aXBsZSBsaW5lcy4gV2hlbiBzZXQgdG8gYGF1dG9gLCBvYmplY3QgbGl0ZXJhbHMgYXJlIGZvcm1hdHRlZCBvbiBtdWx0aXBsZSBsaW5lcyBpZiB0aGUgZmlyc3QgcHJvcGVydHkgaGFzIGEgbmV3bGluZSwgYW5kIGFycmF5IGxpdGVyYWxzIGFyZSBmb3JtYXR0ZWQgb24gYSBzaW5nbGUgbGluZSBpZiBpdCBmaXRzIGluIHRoZSBsaW5lLiBXaGVuIHNldCB0byBgYWx3YXlzYCwgdGhlc2UgbGl0ZXJhbHMgYXJlIGZvcm1hdHRlZCBvbiBtdWx0aXBsZSBsaW5lcywgcmVnYXJkbGVzcyBvZiBsZW5ndGggb2YgdGhlIGxpc3QuIFdoZW4gc2V0IHRvIGBuZXZlcmAsIHRoZXNlIGxpdGVyYWxzIGFyZSBmb3JtYXR0ZWQgb24gYSBzaW5nbGUgbGluZSBpZiBpdCBmaXRzIGluIHRoZSBsaW5lLiBXaGVuIGZvcm1hdHRpbmcgYHBhY2thZ2UuanNvbmAsIEJpb21lIHdpbGwgdXNlIGBhbHdheXNgIHVubGVzcyBjb25maWd1cmVkIG90aGVyd2lzZS4gRGVmYXVsdHMgdG8gXCJhdXRvXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGF1dG9cIi5cbiAgICogQHNjaGVtYSBGb3JtYXR0ZXJDb25maWd1cmF0aW9uI2V4cGFuZFxuICAgKi9cbiAgcmVhZG9ubHkgZXhwYW5kPzogRXhwYW5kO1xuXG4gIC8qKlxuICAgKiBTdG9yZXMgd2hldGhlciBmb3JtYXR0aW5nIHNob3VsZCBiZSBhbGxvd2VkIHRvIHByb2NlZWQgaWYgYSBnaXZlbiBmaWxlIGhhcyBzeW50YXggZXJyb3JzXG4gICAqXG4gICAqIEBzY2hlbWEgRm9ybWF0dGVyQ29uZmlndXJhdGlvbiNmb3JtYXRXaXRoRXJyb3JzXG4gICAqL1xuICByZWFkb25seSBmb3JtYXRXaXRoRXJyb3JzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGdsb2IgcGF0dGVybnMuIFRoZSBmb3JtYXR0ZXIgd2lsbCBpbmNsdWRlIGZpbGVzL2ZvbGRlcnMgdGhhdCB3aWxsIG1hdGNoIHRoZXNlIHBhdHRlcm5zLlxuICAgKlxuICAgKiBAc2NoZW1hIEZvcm1hdHRlckNvbmZpZ3VyYXRpb24jaW5jbHVkZXNcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBpbmRlbnQgc3R5bGUuXG4gICAqXG4gICAqIEBzY2hlbWEgRm9ybWF0dGVyQ29uZmlndXJhdGlvbiNpbmRlbnRTdHlsZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5kZW50U3R5bGU/OiBJbmRlbnRTdHlsZTtcblxuICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIGluZGVudGF0aW9uLCAyIGJ5IGRlZmF1bHRcbiAgICpcbiAgICogQHNjaGVtYSBGb3JtYXR0ZXJDb25maWd1cmF0aW9uI2luZGVudFdpZHRoXG4gICAqL1xuICByZWFkb25seSBpbmRlbnRXaWR0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgbGluZSBlbmRpbmcuXG4gICAqXG4gICAqIEBzY2hlbWEgRm9ybWF0dGVyQ29uZmlndXJhdGlvbiNsaW5lRW5kaW5nXG4gICAqL1xuICByZWFkb25seSBsaW5lRW5kaW5nPzogTGluZUVuZGluZztcblxuICAvKipcbiAgICogV2hhdCdzIHRoZSBtYXggd2lkdGggb2YgYSBsaW5lLiBEZWZhdWx0cyB0byA4MC5cbiAgICpcbiAgICogQGRlZmF1bHQgODAuXG4gICAqIEBzY2hlbWEgRm9ybWF0dGVyQ29uZmlndXJhdGlvbiNsaW5lV2lkdGhcbiAgICovXG4gIHJlYWRvbmx5IGxpbmVXaWR0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogVXNlIGFueSBgLmVkaXRvcmNvbmZpZ2AgZmlsZXMgdG8gY29uZmlndXJlIHRoZSBmb3JtYXR0ZXIuIENvbmZpZ3VyYXRpb24gaW4gYGJpb21lLmpzb25gIHdpbGwgb3ZlcnJpZGUgYC5lZGl0b3Jjb25maWdgIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIERlZmF1bHQ6IGB0cnVlYC5cbiAgICpcbiAgICogQHNjaGVtYSBGb3JtYXR0ZXJDb25maWd1cmF0aW9uI3VzZUVkaXRvcmNvbmZpZ1xuICAgKi9cbiAgcmVhZG9ubHkgdXNlRWRpdG9yY29uZmlnPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRm9ybWF0dGVyQ29uZmlndXJhdGlvbicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0Zvcm1hdHRlckNvbmZpZ3VyYXRpb24ob2JqOiBGb3JtYXR0ZXJDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYXR0cmlidXRlUG9zaXRpb24nOiBvYmouYXR0cmlidXRlUG9zaXRpb24sXG4gICAgJ2JyYWNrZXRTYW1lTGluZSc6IG9iai5icmFja2V0U2FtZUxpbmUsXG4gICAgJ2JyYWNrZXRTcGFjaW5nJzogb2JqLmJyYWNrZXRTcGFjaW5nLFxuICAgICdlbmFibGVkJzogb2JqLmVuYWJsZWQsXG4gICAgJ2V4cGFuZCc6IG9iai5leHBhbmQsXG4gICAgJ2Zvcm1hdFdpdGhFcnJvcnMnOiBvYmouZm9ybWF0V2l0aEVycm9ycyxcbiAgICAnaW5jbHVkZXMnOiBvYmouaW5jbHVkZXM/Lm1hcCh5ID0+IHkpLFxuICAgICdpbmRlbnRTdHlsZSc6IG9iai5pbmRlbnRTdHlsZSxcbiAgICAnaW5kZW50V2lkdGgnOiBvYmouaW5kZW50V2lkdGgsXG4gICAgJ2xpbmVFbmRpbmcnOiBvYmoubGluZUVuZGluZyxcbiAgICAnbGluZVdpZHRoJzogb2JqLmxpbmVXaWR0aCxcbiAgICAndXNlRWRpdG9yY29uZmlnJzogb2JqLnVzZUVkaXRvcmNvbmZpZyxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIE9wdGlvbnMgYXBwbGllZCB0byBHcmFwaFFMIGZpbGVzXG4gKlxuICogQHNjaGVtYSBHcmFwaHFsQ29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBocWxDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIEFzc2lzdCBvcHRpb25zXG4gICAqXG4gICAqIEBzY2hlbWEgR3JhcGhxbENvbmZpZ3VyYXRpb24jYXNzaXN0XG4gICAqL1xuICByZWFkb25seSBhc3Npc3Q/OiBHcmFwaHFsQXNzaXN0Q29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogR3JhcGhRTCBmb3JtYXR0ZXIgb3B0aW9uc1xuICAgKlxuICAgKiBAc2NoZW1hIEdyYXBocWxDb25maWd1cmF0aW9uI2Zvcm1hdHRlclxuICAgKi9cbiAgcmVhZG9ubHkgZm9ybWF0dGVyPzogR3JhcGhxbEZvcm1hdHRlckNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgR3JhcGhxbENvbmZpZ3VyYXRpb24jbGludGVyXG4gICAqL1xuICByZWFkb25seSBsaW50ZXI/OiBHcmFwaHFsTGludGVyQ29uZmlndXJhdGlvbjtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnR3JhcGhxbENvbmZpZ3VyYXRpb24nIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9HcmFwaHFsQ29uZmlndXJhdGlvbihvYmo6IEdyYXBocWxDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYXNzaXN0JzogdG9Kc29uX0dyYXBocWxBc3Npc3RDb25maWd1cmF0aW9uKG9iai5hc3Npc3QpLFxuICAgICdmb3JtYXR0ZXInOiB0b0pzb25fR3JhcGhxbEZvcm1hdHRlckNvbmZpZ3VyYXRpb24ob2JqLmZvcm1hdHRlciksXG4gICAgJ2xpbnRlcic6IHRvSnNvbl9HcmFwaHFsTGludGVyQ29uZmlndXJhdGlvbihvYmoubGludGVyKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIE9wdGlvbnMgYXBwbGllZCB0byBHcml0UUwgZmlsZXNcbiAqXG4gKiBAc2NoZW1hIEdyaXRDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JpdENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogQXNzaXN0IG9wdGlvbnNcbiAgICpcbiAgICogQHNjaGVtYSBHcml0Q29uZmlndXJhdGlvbiNhc3Npc3RcbiAgICovXG4gIHJlYWRvbmx5IGFzc2lzdD86IEdyaXRBc3Npc3RDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBGb3JtYXR0aW5nIG9wdGlvbnNcbiAgICpcbiAgICogQHNjaGVtYSBHcml0Q29uZmlndXJhdGlvbiNmb3JtYXR0ZXJcbiAgICovXG4gIHJlYWRvbmx5IGZvcm1hdHRlcj86IEdyaXRGb3JtYXR0ZXJDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBGb3JtYXR0aW5nIG9wdGlvbnNcbiAgICpcbiAgICogQHNjaGVtYSBHcml0Q29uZmlndXJhdGlvbiNsaW50ZXJcbiAgICovXG4gIHJlYWRvbmx5IGxpbnRlcj86IEdyaXRMaW50ZXJDb25maWd1cmF0aW9uO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdHcml0Q29uZmlndXJhdGlvbicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0dyaXRDb25maWd1cmF0aW9uKG9iajogR3JpdENvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdhc3Npc3QnOiB0b0pzb25fR3JpdEFzc2lzdENvbmZpZ3VyYXRpb24ob2JqLmFzc2lzdCksXG4gICAgJ2Zvcm1hdHRlcic6IHRvSnNvbl9Hcml0Rm9ybWF0dGVyQ29uZmlndXJhdGlvbihvYmouZm9ybWF0dGVyKSxcbiAgICAnbGludGVyJzogdG9Kc29uX0dyaXRMaW50ZXJDb25maWd1cmF0aW9uKG9iai5saW50ZXIpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogT3B0aW9ucyBhcHBsaWVkIHRvIEhUTUwgZmlsZXNcbiAqXG4gKiBAc2NoZW1hIEh0bWxDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHRtbENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogSFRNTCBmb3JtYXR0ZXIgb3B0aW9uc1xuICAgKlxuICAgKiBAc2NoZW1hIEh0bWxDb25maWd1cmF0aW9uI2Zvcm1hdHRlclxuICAgKi9cbiAgcmVhZG9ubHkgZm9ybWF0dGVyPzogSHRtbEZvcm1hdHRlckNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIEhUTUwgcGFyc2luZyBvcHRpb25zXG4gICAqXG4gICAqIEBzY2hlbWEgSHRtbENvbmZpZ3VyYXRpb24jcGFyc2VyXG4gICAqL1xuICByZWFkb25seSBwYXJzZXI/OiBhbnk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0h0bWxDb25maWd1cmF0aW9uJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fSHRtbENvbmZpZ3VyYXRpb24ob2JqOiBIdG1sQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2Zvcm1hdHRlcic6IHRvSnNvbl9IdG1sRm9ybWF0dGVyQ29uZmlndXJhdGlvbihvYmouZm9ybWF0dGVyKSxcbiAgICAncGFyc2VyJzogb2JqLnBhcnNlcixcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEEgc2V0IG9mIG9wdGlvbnMgYXBwbGllZCB0byB0aGUgSmF2YVNjcmlwdCBmaWxlc1xuICpcbiAqIEBzY2hlbWEgSnNDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSnNDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIEFzc2lzdCBvcHRpb25zXG4gICAqXG4gICAqIEBzY2hlbWEgSnNDb25maWd1cmF0aW9uI2Fzc2lzdFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzaXN0PzogSnNBc3Npc3RDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBGb3JtYXR0aW5nIG9wdGlvbnNcbiAgICpcbiAgICogQHNjaGVtYSBKc0NvbmZpZ3VyYXRpb24jZm9ybWF0dGVyXG4gICAqL1xuICByZWFkb25seSBmb3JtYXR0ZXI/OiBKc0Zvcm1hdHRlckNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBnbG9iYWwgYmluZGluZ3MgdGhhdCBzaG91bGQgYmUgaWdub3JlZCBieSB0aGUgYW5hbHl6ZXJzXG4gICAqXG4gICAqIElmIGRlZmluZWQgaGVyZSwgdGhleSBzaG91bGQgbm90IGVtaXQgZGlhZ25vc3RpY3MuXG4gICAqXG4gICAqIEBzY2hlbWEgSnNDb25maWd1cmF0aW9uI2dsb2JhbHNcbiAgICovXG4gIHJlYWRvbmx5IGdsb2JhbHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSB0eXBlIG9mIHJ1bnRpbWUgb3IgdHJhbnNmb3JtYXRpb24gdXNlZCBmb3IgaW50ZXJwcmV0aW5nIEpTWC5cbiAgICpcbiAgICogQHNjaGVtYSBKc0NvbmZpZ3VyYXRpb24janN4UnVudGltZVxuICAgKi9cbiAgcmVhZG9ubHkganN4UnVudGltZT86IEpzeFJ1bnRpbWU7XG5cbiAgLyoqXG4gICAqIExpbnRlciBvcHRpb25zXG4gICAqXG4gICAqIEBzY2hlbWEgSnNDb25maWd1cmF0aW9uI2xpbnRlclxuICAgKi9cbiAgcmVhZG9ubHkgbGludGVyPzogSnNMaW50ZXJDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBQYXJzaW5nIG9wdGlvbnNcbiAgICpcbiAgICogQHNjaGVtYSBKc0NvbmZpZ3VyYXRpb24jcGFyc2VyXG4gICAqL1xuICByZWFkb25seSBwYXJzZXI/OiBKc1BhcnNlckNvbmZpZ3VyYXRpb247XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0pzQ29uZmlndXJhdGlvbicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0pzQ29uZmlndXJhdGlvbihvYmo6IEpzQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2Fzc2lzdCc6IHRvSnNvbl9Kc0Fzc2lzdENvbmZpZ3VyYXRpb24ob2JqLmFzc2lzdCksXG4gICAgJ2Zvcm1hdHRlcic6IHRvSnNvbl9Kc0Zvcm1hdHRlckNvbmZpZ3VyYXRpb24ob2JqLmZvcm1hdHRlciksXG4gICAgJ2dsb2JhbHMnOiBvYmouZ2xvYmFscz8ubWFwKHkgPT4geSksXG4gICAgJ2pzeFJ1bnRpbWUnOiBvYmouanN4UnVudGltZSxcbiAgICAnbGludGVyJzogdG9Kc29uX0pzTGludGVyQ29uZmlndXJhdGlvbihvYmoubGludGVyKSxcbiAgICAncGFyc2VyJzogdG9Kc29uX0pzUGFyc2VyQ29uZmlndXJhdGlvbihvYmoucGFyc2VyKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIE9wdGlvbnMgYXBwbGllZCB0byBKU09OIGZpbGVzXG4gKlxuICogQHNjaGVtYSBKc29uQ29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpzb25Db25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIEFzc2lzdCBvcHRpb25zXG4gICAqXG4gICAqIEBzY2hlbWEgSnNvbkNvbmZpZ3VyYXRpb24jYXNzaXN0XG4gICAqL1xuICByZWFkb25seSBhc3Npc3Q/OiBKc29uQXNzaXN0Q29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogRm9ybWF0dGluZyBvcHRpb25zXG4gICAqXG4gICAqIEBzY2hlbWEgSnNvbkNvbmZpZ3VyYXRpb24jZm9ybWF0dGVyXG4gICAqL1xuICByZWFkb25seSBmb3JtYXR0ZXI/OiBKc29uRm9ybWF0dGVyQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogTGludGluZyBvcHRpb25zXG4gICAqXG4gICAqIEBzY2hlbWEgSnNvbkNvbmZpZ3VyYXRpb24jbGludGVyXG4gICAqL1xuICByZWFkb25seSBsaW50ZXI/OiBKc29uTGludGVyQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogUGFyc2luZyBvcHRpb25zXG4gICAqXG4gICAqIEBzY2hlbWEgSnNvbkNvbmZpZ3VyYXRpb24jcGFyc2VyXG4gICAqL1xuICByZWFkb25seSBwYXJzZXI/OiBKc29uUGFyc2VyQ29uZmlndXJhdGlvbjtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnSnNvbkNvbmZpZ3VyYXRpb24nIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9Kc29uQ29uZmlndXJhdGlvbihvYmo6IEpzb25Db25maWd1cmF0aW9uIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYXNzaXN0JzogdG9Kc29uX0pzb25Bc3Npc3RDb25maWd1cmF0aW9uKG9iai5hc3Npc3QpLFxuICAgICdmb3JtYXR0ZXInOiB0b0pzb25fSnNvbkZvcm1hdHRlckNvbmZpZ3VyYXRpb24ob2JqLmZvcm1hdHRlciksXG4gICAgJ2xpbnRlcic6IHRvSnNvbl9Kc29uTGludGVyQ29uZmlndXJhdGlvbihvYmoubGludGVyKSxcbiAgICAncGFyc2VyJzogdG9Kc29uX0pzb25QYXJzZXJDb25maWd1cmF0aW9uKG9iai5wYXJzZXIpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBMaW50ZXJDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGludGVyQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBBbiBvYmplY3Qgd2hlcmUgdGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZG9tYWlucywgYW5kIHRoZSB2YWx1ZXMgYXJlIGBhbGxgLCBgcmVjb21tZW5kZWRgLCBvciBgbm9uZWAuXG4gICAqXG4gICAqIEBzY2hlbWEgTGludGVyQ29uZmlndXJhdGlvbiNkb21haW5zXG4gICAqL1xuICByZWFkb25seSBkb21haW5zPzogeyBba2V5OiBzdHJpbmddOiBSdWxlRG9tYWluVmFsdWUgfTtcblxuICAvKipcbiAgICogaWYgYGZhbHNlYCwgaXQgZGlzYWJsZXMgdGhlIGZlYXR1cmUgYW5kIHRoZSBsaW50ZXIgd29uJ3QgYmUgZXhlY3V0ZWQuIGB0cnVlYCBieSBkZWZhdWx0XG4gICAqXG4gICAqIEBzY2hlbWEgTGludGVyQ29uZmlndXJhdGlvbiNlbmFibGVkXG4gICAqL1xuICByZWFkb25seSBlbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGdsb2IgcGF0dGVybnMuIFRoZSBhbmFseXplciB3aWxsIGhhbmRsZSBvbmx5IHRob3NlIGZpbGVzL2ZvbGRlcnMgdGhhdCB3aWxsIG1hdGNoIHRoZXNlIHBhdHRlcm5zLlxuICAgKlxuICAgKiBAc2NoZW1hIExpbnRlckNvbmZpZ3VyYXRpb24jaW5jbHVkZXNcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgcnVsZXNcbiAgICpcbiAgICogQHNjaGVtYSBMaW50ZXJDb25maWd1cmF0aW9uI3J1bGVzXG4gICAqL1xuICByZWFkb25seSBydWxlcz86IFJ1bGVzO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdMaW50ZXJDb25maWd1cmF0aW9uJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fTGludGVyQ29uZmlndXJhdGlvbihvYmo6IExpbnRlckNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdkb21haW5zJzogKChvYmouZG9tYWlucykgPT09IHVuZGVmaW5lZCkgPyB1bmRlZmluZWQgOiAoT2JqZWN0LmVudHJpZXMob2JqLmRvbWFpbnMpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSkpLFxuICAgICdlbmFibGVkJzogb2JqLmVuYWJsZWQsXG4gICAgJ2luY2x1ZGVzJzogb2JqLmluY2x1ZGVzPy5tYXAoeSA9PiB5KSxcbiAgICAncnVsZXMnOiB0b0pzb25fUnVsZXMob2JqLnJ1bGVzKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgT3ZlcnJpZGVQYXR0ZXJuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcnJpZGVQYXR0ZXJuIHtcbiAgLyoqXG4gICAqIFNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBKc29uIGxhbmd1YWdlXG4gICAqXG4gICAqIEBzY2hlbWEgT3ZlcnJpZGVQYXR0ZXJuI2Fzc2lzdFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzaXN0PzogT3ZlcnJpZGVBc3Npc3RDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvciB0aGUgQ1NTIGxhbmd1YWdlXG4gICAqXG4gICAqIEBzY2hlbWEgT3ZlcnJpZGVQYXR0ZXJuI2Nzc1xuICAgKi9cbiAgcmVhZG9ubHkgY3NzPzogQ3NzQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogU3BlY2lmaWMgY29uZmlndXJhdGlvbiBmb3IgdGhlIGZpbGVzeXN0ZW1cbiAgICpcbiAgICogQHNjaGVtYSBPdmVycmlkZVBhdHRlcm4jZmlsZXNcbiAgICovXG4gIHJlYWRvbmx5IGZpbGVzPzogT3ZlcnJpZGVGaWxlc0NvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBKc29uIGxhbmd1YWdlXG4gICAqXG4gICAqIEBzY2hlbWEgT3ZlcnJpZGVQYXR0ZXJuI2Zvcm1hdHRlclxuICAgKi9cbiAgcmVhZG9ubHkgZm9ybWF0dGVyPzogT3ZlcnJpZGVGb3JtYXR0ZXJDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvciB0aGUgR3JhcGhxbCBsYW5ndWFnZVxuICAgKlxuICAgKiBAc2NoZW1hIE92ZXJyaWRlUGF0dGVybiNncmFwaHFsXG4gICAqL1xuICByZWFkb25seSBncmFwaHFsPzogR3JhcGhxbENvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBHcml0UUwgbGFuZ3VhZ2VcbiAgICpcbiAgICogQHNjaGVtYSBPdmVycmlkZVBhdHRlcm4jZ3JpdFxuICAgKi9cbiAgcmVhZG9ubHkgZ3JpdD86IEdyaXRDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvciB0aGUgR3JpdFFMIGxhbmd1YWdlXG4gICAqXG4gICAqIEBzY2hlbWEgT3ZlcnJpZGVQYXR0ZXJuI2h0bWxcbiAgICovXG4gIHJlYWRvbmx5IGh0bWw/OiBIdG1sQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGdsb2IgcGF0dGVybnMuIEJpb21lIHdpbGwgaW5jbHVkZSBmaWxlcy9mb2xkZXJzIHRoYXQgd2lsbCBtYXRjaCB0aGVzZSBwYXR0ZXJucy5cbiAgICpcbiAgICogQHNjaGVtYSBPdmVycmlkZVBhdHRlcm4jaW5jbHVkZXNcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBKYXZhU2NyaXB0IGxhbmd1YWdlXG4gICAqXG4gICAqIEBzY2hlbWEgT3ZlcnJpZGVQYXR0ZXJuI2phdmFzY3JpcHRcbiAgICovXG4gIHJlYWRvbmx5IGphdmFzY3JpcHQ/OiBKc0NvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBKc29uIGxhbmd1YWdlXG4gICAqXG4gICAqIEBzY2hlbWEgT3ZlcnJpZGVQYXR0ZXJuI2pzb25cbiAgICovXG4gIHJlYWRvbmx5IGpzb24/OiBKc29uQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogU3BlY2lmaWMgY29uZmlndXJhdGlvbiBmb3IgdGhlIEpzb24gbGFuZ3VhZ2VcbiAgICpcbiAgICogQHNjaGVtYSBPdmVycmlkZVBhdHRlcm4jbGludGVyXG4gICAqL1xuICByZWFkb25seSBsaW50ZXI/OiBPdmVycmlkZUxpbnRlckNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIGFkZGl0aW9uYWwgcGx1Z2luc1xuICAgKlxuICAgKiBAc2NoZW1hIE92ZXJyaWRlUGF0dGVybiNwbHVnaW5zXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5zPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ092ZXJyaWRlUGF0dGVybicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX092ZXJyaWRlUGF0dGVybihvYmo6IE92ZXJyaWRlUGF0dGVybiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2Fzc2lzdCc6IHRvSnNvbl9PdmVycmlkZUFzc2lzdENvbmZpZ3VyYXRpb24ob2JqLmFzc2lzdCksXG4gICAgJ2Nzcyc6IHRvSnNvbl9Dc3NDb25maWd1cmF0aW9uKG9iai5jc3MpLFxuICAgICdmaWxlcyc6IHRvSnNvbl9PdmVycmlkZUZpbGVzQ29uZmlndXJhdGlvbihvYmouZmlsZXMpLFxuICAgICdmb3JtYXR0ZXInOiB0b0pzb25fT3ZlcnJpZGVGb3JtYXR0ZXJDb25maWd1cmF0aW9uKG9iai5mb3JtYXR0ZXIpLFxuICAgICdncmFwaHFsJzogdG9Kc29uX0dyYXBocWxDb25maWd1cmF0aW9uKG9iai5ncmFwaHFsKSxcbiAgICAnZ3JpdCc6IHRvSnNvbl9Hcml0Q29uZmlndXJhdGlvbihvYmouZ3JpdCksXG4gICAgJ2h0bWwnOiB0b0pzb25fSHRtbENvbmZpZ3VyYXRpb24ob2JqLmh0bWwpLFxuICAgICdpbmNsdWRlcyc6IG9iai5pbmNsdWRlcz8ubWFwKHkgPT4geSksXG4gICAgJ2phdmFzY3JpcHQnOiB0b0pzb25fSnNDb25maWd1cmF0aW9uKG9iai5qYXZhc2NyaXB0KSxcbiAgICAnanNvbic6IHRvSnNvbl9Kc29uQ29uZmlndXJhdGlvbihvYmouanNvbiksXG4gICAgJ2xpbnRlcic6IHRvSnNvbl9PdmVycmlkZUxpbnRlckNvbmZpZ3VyYXRpb24ob2JqLmxpbnRlciksXG4gICAgJ3BsdWdpbnMnOiBvYmoucGx1Z2lucz8ubWFwKHkgPT4geSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBTZXQgb2YgcHJvcGVydGllcyB0byBpbnRlZ3JhdGUgQmlvbWUgd2l0aCBhIFZDUyBzb2Z0d2FyZS5cbiAqXG4gKiBAc2NoZW1hIFZjc0NvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWY3NDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBraW5kIG9mIGNsaWVudC5cbiAgICpcbiAgICogQHNjaGVtYSBWY3NDb25maWd1cmF0aW9uI2NsaWVudEtpbmRcbiAgICovXG4gIHJlYWRvbmx5IGNsaWVudEtpbmQ/OiBWY3NDbGllbnRLaW5kO1xuXG4gIC8qKlxuICAgKiBUaGUgbWFpbiBicmFuY2ggb2YgdGhlIHByb2plY3RcbiAgICpcbiAgICogQHNjaGVtYSBWY3NDb25maWd1cmF0aW9uI2RlZmF1bHRCcmFuY2hcbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRCcmFuY2g/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgQmlvbWUgc2hvdWxkIGludGVncmF0ZSBpdHNlbGYgd2l0aCB0aGUgVkNTIGNsaWVudFxuICAgKlxuICAgKiBAc2NoZW1hIFZjc0NvbmZpZ3VyYXRpb24jZW5hYmxlZFxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkZXIgd2hlcmUgQmlvbWUgc2hvdWxkIGNoZWNrIGZvciBWQ1MgZmlsZXMuIEJ5IGRlZmF1bHQsIEJpb21lIHdpbGwgdXNlIHRoZSBzYW1lIGZvbGRlciB3aGVyZSBgYmlvbWUuanNvbmAgd2FzIGZvdW5kLlxuICAgKlxuICAgKiBJZiBCaW9tZSBjYW4ndCBmaW5kIHRoZSBjb25maWd1cmF0aW9uLCBpdCB3aWxsIGF0dGVtcHQgdG8gdXNlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LiBJZiBubyBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGNhbid0IGJlIGZvdW5kLCBCaW9tZSB3b24ndCB1c2UgdGhlIFZDUyBpbnRlZ3JhdGlvbiwgYW5kIGEgZGlhZ25vc3RpYyB3aWxsIGJlIGVtaXR0ZWRcbiAgICpcbiAgICogQHNjaGVtYSBWY3NDb25maWd1cmF0aW9uI3Jvb3RcbiAgICovXG4gIHJlYWRvbmx5IHJvb3Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgQmlvbWUgc2hvdWxkIHVzZSB0aGUgVkNTIGlnbm9yZSBmaWxlLiBXaGVuIFt0cnVlXSwgQmlvbWUgd2lsbCBpZ25vcmUgdGhlIGZpbGVzIHNwZWNpZmllZCBpbiB0aGUgaWdub3JlIGZpbGUuXG4gICAqXG4gICAqIEBzY2hlbWEgVmNzQ29uZmlndXJhdGlvbiN1c2VJZ25vcmVGaWxlXG4gICAqL1xuICByZWFkb25seSB1c2VJZ25vcmVGaWxlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVmNzQ29uZmlndXJhdGlvbicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1Zjc0NvbmZpZ3VyYXRpb24ob2JqOiBWY3NDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnY2xpZW50S2luZCc6IG9iai5jbGllbnRLaW5kLFxuICAgICdkZWZhdWx0QnJhbmNoJzogb2JqLmRlZmF1bHRCcmFuY2gsXG4gICAgJ2VuYWJsZWQnOiBvYmouZW5hYmxlZCxcbiAgICAncm9vdCc6IG9iai5yb290LFxuICAgICd1c2VJZ25vcmVGaWxlJzogb2JqLnVzZUlnbm9yZUZpbGUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEFjdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25zIHtcbiAgLyoqXG4gICAqIEl0IGVuYWJsZXMgdGhlIGFzc2lzdCBhY3Rpb25zIHJlY29tbWVuZGVkIGJ5IEJpb21lLiBgdHJ1ZWAgYnkgZGVmYXVsdC5cbiAgICpcbiAgICogQHNjaGVtYSBBY3Rpb25zI3JlY29tbWVuZGVkXG4gICAqL1xuICByZWFkb25seSByZWNvbW1lbmRlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgQWN0aW9ucyNzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZT86IFNvdXJjZTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQWN0aW9ucycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0FjdGlvbnMob2JqOiBBY3Rpb25zIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncmVjb21tZW5kZWQnOiBvYmoucmVjb21tZW5kZWQsXG4gICAgJ3NvdXJjZSc6IHRvSnNvbl9Tb3VyY2Uob2JqLnNvdXJjZSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBPcHRpb25zIHRoYXQgY2hhbmdlcyBob3cgdGhlIENTUyBhc3Npc3QgYmVoYXZlc1xuICpcbiAqIEBzY2hlbWEgQ3NzQXNzaXN0Q29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIENzc0Fzc2lzdENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogQ29udHJvbCB0aGUgYXNzaXN0IGZvciBDU1MgZmlsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgQ3NzQXNzaXN0Q29uZmlndXJhdGlvbiNlbmFibGVkXG4gICAqL1xuICByZWFkb25seSBlbmFibGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQ3NzQXNzaXN0Q29uZmlndXJhdGlvbicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0Nzc0Fzc2lzdENvbmZpZ3VyYXRpb24ob2JqOiBDc3NBc3Npc3RDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnZW5hYmxlZCc6IG9iai5lbmFibGVkLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogT3B0aW9ucyB0aGF0IGNoYW5nZXMgaG93IHRoZSBDU1MgZm9ybWF0dGVyIGJlaGF2ZXNcbiAqXG4gKiBAc2NoZW1hIENzc0Zvcm1hdHRlckNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDc3NGb3JtYXR0ZXJDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIENvbnRyb2wgdGhlIGZvcm1hdHRlciBmb3IgQ1NTIChhbmQgaXRzIHN1cGVyIGxhbmd1YWdlcykgZmlsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgQ3NzRm9ybWF0dGVyQ29uZmlndXJhdGlvbiNlbmFibGVkXG4gICAqL1xuICByZWFkb25seSBlbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGluZGVudCBzdHlsZSBhcHBsaWVkIHRvIENTUyAoYW5kIGl0cyBzdXBlciBsYW5ndWFnZXMpIGZpbGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIENzc0Zvcm1hdHRlckNvbmZpZ3VyYXRpb24jaW5kZW50U3R5bGVcbiAgICovXG4gIHJlYWRvbmx5IGluZGVudFN0eWxlPzogSW5kZW50U3R5bGU7XG5cbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBpbmRlbnRhdGlvbiBhcHBsaWVkIHRvIENTUyAoYW5kIGl0cyBzdXBlciBsYW5ndWFnZXMpIGZpbGVzLiBEZWZhdWx0IHRvIDIuXG4gICAqXG4gICAqIEBkZWZhdWx0IDIuXG4gICAqIEBzY2hlbWEgQ3NzRm9ybWF0dGVyQ29uZmlndXJhdGlvbiNpbmRlbnRXaWR0aFxuICAgKi9cbiAgcmVhZG9ubHkgaW5kZW50V2lkdGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGxpbmUgZW5kaW5nIGFwcGxpZWQgdG8gQ1NTIChhbmQgaXRzIHN1cGVyIGxhbmd1YWdlcykgZmlsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgQ3NzRm9ybWF0dGVyQ29uZmlndXJhdGlvbiNsaW5lRW5kaW5nXG4gICAqL1xuICByZWFkb25seSBsaW5lRW5kaW5nPzogTGluZUVuZGluZztcblxuICAvKipcbiAgICogV2hhdCdzIHRoZSBtYXggd2lkdGggb2YgYSBsaW5lIGFwcGxpZWQgdG8gQ1NTIChhbmQgaXRzIHN1cGVyIGxhbmd1YWdlcykgZmlsZXMuIERlZmF1bHRzIHRvIDgwLlxuICAgKlxuICAgKiBAZGVmYXVsdCA4MC5cbiAgICogQHNjaGVtYSBDc3NGb3JtYXR0ZXJDb25maWd1cmF0aW9uI2xpbmVXaWR0aFxuICAgKi9cbiAgcmVhZG9ubHkgbGluZVdpZHRoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBxdW90ZXMgdXNlZCBpbiBDU1MgY29kZS4gRGVmYXVsdHMgdG8gZG91YmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBkb3VibGUuXG4gICAqIEBzY2hlbWEgQ3NzRm9ybWF0dGVyQ29uZmlndXJhdGlvbiNxdW90ZVN0eWxlXG4gICAqL1xuICByZWFkb25seSBxdW90ZVN0eWxlPzogUXVvdGVTdHlsZTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQ3NzRm9ybWF0dGVyQ29uZmlndXJhdGlvbicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0Nzc0Zvcm1hdHRlckNvbmZpZ3VyYXRpb24ob2JqOiBDc3NGb3JtYXR0ZXJDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnZW5hYmxlZCc6IG9iai5lbmFibGVkLFxuICAgICdpbmRlbnRTdHlsZSc6IG9iai5pbmRlbnRTdHlsZSxcbiAgICAnaW5kZW50V2lkdGgnOiBvYmouaW5kZW50V2lkdGgsXG4gICAgJ2xpbmVFbmRpbmcnOiBvYmoubGluZUVuZGluZyxcbiAgICAnbGluZVdpZHRoJzogb2JqLmxpbmVXaWR0aCxcbiAgICAncXVvdGVTdHlsZSc6IG9iai5xdW90ZVN0eWxlLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogT3B0aW9ucyB0aGF0IGNoYW5nZXMgaG93IHRoZSBDU1MgbGludGVyIGJlaGF2ZXNcbiAqXG4gKiBAc2NoZW1hIENzc0xpbnRlckNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDc3NMaW50ZXJDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIENvbnRyb2wgdGhlIGxpbnRlciBmb3IgQ1NTIGZpbGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIENzc0xpbnRlckNvbmZpZ3VyYXRpb24jZW5hYmxlZFxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0Nzc0xpbnRlckNvbmZpZ3VyYXRpb24nIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9Dc3NMaW50ZXJDb25maWd1cmF0aW9uKG9iajogQ3NzTGludGVyQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2VuYWJsZWQnOiBvYmouZW5hYmxlZCxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIE9wdGlvbnMgdGhhdCBjaGFuZ2VzIGhvdyB0aGUgQ1NTIHBhcnNlciBiZWhhdmVzXG4gKlxuICogQHNjaGVtYSBDc3NQYXJzZXJDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3NzUGFyc2VyQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBBbGxvdyBjb21tZW50cyB0byBhcHBlYXIgb24gaW5jb3JyZWN0IGxpbmVzIGluIGAuY3NzYCBmaWxlc1xuICAgKlxuICAgKiBAc2NoZW1hIENzc1BhcnNlckNvbmZpZ3VyYXRpb24jYWxsb3dXcm9uZ0xpbmVDb21tZW50c1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dXcm9uZ0xpbmVDb21tZW50cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgcGFyc2luZyBvZiBDU1MgTW9kdWxlcyBzcGVjaWZpYyBmZWF0dXJlcy5cbiAgICpcbiAgICogQHNjaGVtYSBDc3NQYXJzZXJDb25maWd1cmF0aW9uI2Nzc01vZHVsZXNcbiAgICovXG4gIHJlYWRvbmx5IGNzc01vZHVsZXM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdDc3NQYXJzZXJDb25maWd1cmF0aW9uJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fQ3NzUGFyc2VyQ29uZmlndXJhdGlvbihvYmo6IENzc1BhcnNlckNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdhbGxvd1dyb25nTGluZUNvbW1lbnRzJzogb2JqLmFsbG93V3JvbmdMaW5lQ29tbWVudHMsXG4gICAgJ2Nzc01vZHVsZXMnOiBvYmouY3NzTW9kdWxlcyxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgQXR0cmlidXRlUG9zaXRpb25cbiAqL1xuZXhwb3J0IGVudW0gQXR0cmlidXRlUG9zaXRpb24ge1xuICAvKiogYXV0byAqL1xuICBBVVRPID0gXCJhdXRvXCIsXG4gIC8qKiBtdWx0aWxpbmUgKi9cbiAgTVVMVElMSU5FID0gXCJtdWx0aWxpbmVcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIEV4cGFuZFxuICovXG5leHBvcnQgZW51bSBFeHBhbmQge1xuICAvKiogYXV0byAqL1xuICBBVVRPID0gXCJhdXRvXCIsXG4gIC8qKiBhbHdheXMgKi9cbiAgQUxXQVlTID0gXCJhbHdheXNcIixcbiAgLyoqIG5ldmVyICovXG4gIE5FVkVSID0gXCJuZXZlclwiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgSW5kZW50U3R5bGVcbiAqL1xuZXhwb3J0IGVudW0gSW5kZW50U3R5bGUge1xuICAvKiogdGFiICovXG4gIFRBQiA9IFwidGFiXCIsXG4gIC8qKiBzcGFjZSAqL1xuICBTUEFDRSA9IFwic3BhY2VcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIExpbmVFbmRpbmdcbiAqL1xuZXhwb3J0IGVudW0gTGluZUVuZGluZyB7XG4gIC8qKiBsZiAqL1xuICBMRiA9IFwibGZcIixcbiAgLyoqIGNybGYgKi9cbiAgQ1JMRiA9IFwiY3JsZlwiLFxuICAvKiogY3IgKi9cbiAgQ1IgPSBcImNyXCIsXG59XG5cbi8qKlxuICogT3B0aW9ucyB0aGF0IGNoYW5nZXMgaG93IHRoZSBHcmFwaFFMIGxpbnRlciBiZWhhdmVzXG4gKlxuICogQHNjaGVtYSBHcmFwaHFsQXNzaXN0Q29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBocWxBc3Npc3RDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIENvbnRyb2wgdGhlIGZvcm1hdHRlciBmb3IgR3JhcGhRTCBmaWxlcy5cbiAgICpcbiAgICogQHNjaGVtYSBHcmFwaHFsQXNzaXN0Q29uZmlndXJhdGlvbiNlbmFibGVkXG4gICAqL1xuICByZWFkb25seSBlbmFibGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnR3JhcGhxbEFzc2lzdENvbmZpZ3VyYXRpb24nIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9HcmFwaHFsQXNzaXN0Q29uZmlndXJhdGlvbihvYmo6IEdyYXBocWxBc3Npc3RDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnZW5hYmxlZCc6IG9iai5lbmFibGVkLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogT3B0aW9ucyB0aGF0IGNoYW5nZXMgaG93IHRoZSBHcmFwaFFMIGZvcm1hdHRlciBiZWhhdmVzXG4gKlxuICogQHNjaGVtYSBHcmFwaHFsRm9ybWF0dGVyQ29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBocWxGb3JtYXR0ZXJDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5zZXJ0IHNwYWNlcyBhcm91bmQgYnJhY2tldHMgaW4gb2JqZWN0IGxpdGVyYWxzLiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlLlxuICAgKiBAc2NoZW1hIEdyYXBocWxGb3JtYXR0ZXJDb25maWd1cmF0aW9uI2JyYWNrZXRTcGFjaW5nXG4gICAqL1xuICByZWFkb25seSBicmFja2V0U3BhY2luZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbnRyb2wgdGhlIGZvcm1hdHRlciBmb3IgR3JhcGhRTCBmaWxlcy5cbiAgICpcbiAgICogQHNjaGVtYSBHcmFwaHFsRm9ybWF0dGVyQ29uZmlndXJhdGlvbiNlbmFibGVkXG4gICAqL1xuICByZWFkb25seSBlbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGluZGVudCBzdHlsZSBhcHBsaWVkIHRvIEdyYXBoUUwgZmlsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgR3JhcGhxbEZvcm1hdHRlckNvbmZpZ3VyYXRpb24jaW5kZW50U3R5bGVcbiAgICovXG4gIHJlYWRvbmx5IGluZGVudFN0eWxlPzogSW5kZW50U3R5bGU7XG5cbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBpbmRlbnRhdGlvbiBhcHBsaWVkIHRvIEdyYXBoUUwgZmlsZXMuIERlZmF1bHQgdG8gMi5cbiAgICpcbiAgICogQGRlZmF1bHQgMi5cbiAgICogQHNjaGVtYSBHcmFwaHFsRm9ybWF0dGVyQ29uZmlndXJhdGlvbiNpbmRlbnRXaWR0aFxuICAgKi9cbiAgcmVhZG9ubHkgaW5kZW50V2lkdGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGxpbmUgZW5kaW5nIGFwcGxpZWQgdG8gR3JhcGhRTCBmaWxlcy5cbiAgICpcbiAgICogQHNjaGVtYSBHcmFwaHFsRm9ybWF0dGVyQ29uZmlndXJhdGlvbiNsaW5lRW5kaW5nXG4gICAqL1xuICByZWFkb25seSBsaW5lRW5kaW5nPzogTGluZUVuZGluZztcblxuICAvKipcbiAgICogV2hhdCdzIHRoZSBtYXggd2lkdGggb2YgYSBsaW5lIGFwcGxpZWQgdG8gR3JhcGhRTCBmaWxlcy4gRGVmYXVsdHMgdG8gODAuXG4gICAqXG4gICAqIEBkZWZhdWx0IDgwLlxuICAgKiBAc2NoZW1hIEdyYXBocWxGb3JtYXR0ZXJDb25maWd1cmF0aW9uI2xpbmVXaWR0aFxuICAgKi9cbiAgcmVhZG9ubHkgbGluZVdpZHRoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBxdW90ZXMgdXNlZCBpbiBHcmFwaFFMIGNvZGUuIERlZmF1bHRzIHRvIGRvdWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZG91YmxlLlxuICAgKiBAc2NoZW1hIEdyYXBocWxGb3JtYXR0ZXJDb25maWd1cmF0aW9uI3F1b3RlU3R5bGVcbiAgICovXG4gIHJlYWRvbmx5IHF1b3RlU3R5bGU/OiBRdW90ZVN0eWxlO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdHcmFwaHFsRm9ybWF0dGVyQ29uZmlndXJhdGlvbicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0dyYXBocWxGb3JtYXR0ZXJDb25maWd1cmF0aW9uKG9iajogR3JhcGhxbEZvcm1hdHRlckNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdicmFja2V0U3BhY2luZyc6IG9iai5icmFja2V0U3BhY2luZyxcbiAgICAnZW5hYmxlZCc6IG9iai5lbmFibGVkLFxuICAgICdpbmRlbnRTdHlsZSc6IG9iai5pbmRlbnRTdHlsZSxcbiAgICAnaW5kZW50V2lkdGgnOiBvYmouaW5kZW50V2lkdGgsXG4gICAgJ2xpbmVFbmRpbmcnOiBvYmoubGluZUVuZGluZyxcbiAgICAnbGluZVdpZHRoJzogb2JqLmxpbmVXaWR0aCxcbiAgICAncXVvdGVTdHlsZSc6IG9iai5xdW90ZVN0eWxlLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogT3B0aW9ucyB0aGF0IGNoYW5nZSBob3cgdGhlIEdyYXBoUUwgbGludGVyIGJlaGF2ZXMuXG4gKlxuICogQHNjaGVtYSBHcmFwaHFsTGludGVyQ29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBocWxMaW50ZXJDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIENvbnRyb2wgdGhlIGZvcm1hdHRlciBmb3IgR3JhcGhRTCBmaWxlcy5cbiAgICpcbiAgICogQHNjaGVtYSBHcmFwaHFsTGludGVyQ29uZmlndXJhdGlvbiNlbmFibGVkXG4gICAqL1xuICByZWFkb25seSBlbmFibGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnR3JhcGhxbExpbnRlckNvbmZpZ3VyYXRpb24nIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9HcmFwaHFsTGludGVyQ29uZmlndXJhdGlvbihvYmo6IEdyYXBocWxMaW50ZXJDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnZW5hYmxlZCc6IG9iai5lbmFibGVkLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBHcml0QXNzaXN0Q29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyaXRBc3Npc3RDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIENvbnRyb2wgdGhlIGFzc2lzdCBmdW5jdGlvbmFsaXR5IGZvciBHcml0IGZpbGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIEdyaXRBc3Npc3RDb25maWd1cmF0aW9uI2VuYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdHcml0QXNzaXN0Q29uZmlndXJhdGlvbicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0dyaXRBc3Npc3RDb25maWd1cmF0aW9uKG9iajogR3JpdEFzc2lzdENvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdlbmFibGVkJzogb2JqLmVuYWJsZWQsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEdyaXRGb3JtYXR0ZXJDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JpdEZvcm1hdHRlckNvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogQ29udHJvbCB0aGUgZm9ybWF0dGVyIGZvciBHcml0IGZpbGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIEdyaXRGb3JtYXR0ZXJDb25maWd1cmF0aW9uI2VuYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5kZW50IHN0eWxlIGFwcGxpZWQgdG8gR3JpdCBmaWxlcy5cbiAgICpcbiAgICogQHNjaGVtYSBHcml0Rm9ybWF0dGVyQ29uZmlndXJhdGlvbiNpbmRlbnRTdHlsZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5kZW50U3R5bGU/OiBJbmRlbnRTdHlsZTtcblxuICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIGluZGVudGF0aW9uIGFwcGxpZWQgdG8gR3JpdCBmaWxlcy4gRGVmYXVsdCB0byAyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAyLlxuICAgKiBAc2NoZW1hIEdyaXRGb3JtYXR0ZXJDb25maWd1cmF0aW9uI2luZGVudFdpZHRoXG4gICAqL1xuICByZWFkb25seSBpbmRlbnRXaWR0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgbGluZSBlbmRpbmcgYXBwbGllZCB0byBHcml0IGZpbGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIEdyaXRGb3JtYXR0ZXJDb25maWd1cmF0aW9uI2xpbmVFbmRpbmdcbiAgICovXG4gIHJlYWRvbmx5IGxpbmVFbmRpbmc/OiBMaW5lRW5kaW5nO1xuXG4gIC8qKlxuICAgKiBXaGF0J3MgdGhlIG1heCB3aWR0aCBvZiBhIGxpbmUgYXBwbGllZCB0byBHcml0IGZpbGVzLiBEZWZhdWx0cyB0byA4MC5cbiAgICpcbiAgICogQGRlZmF1bHQgODAuXG4gICAqIEBzY2hlbWEgR3JpdEZvcm1hdHRlckNvbmZpZ3VyYXRpb24jbGluZVdpZHRoXG4gICAqL1xuICByZWFkb25seSBsaW5lV2lkdGg/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0dyaXRGb3JtYXR0ZXJDb25maWd1cmF0aW9uJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fR3JpdEZvcm1hdHRlckNvbmZpZ3VyYXRpb24ob2JqOiBHcml0Rm9ybWF0dGVyQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2VuYWJsZWQnOiBvYmouZW5hYmxlZCxcbiAgICAnaW5kZW50U3R5bGUnOiBvYmouaW5kZW50U3R5bGUsXG4gICAgJ2luZGVudFdpZHRoJzogb2JqLmluZGVudFdpZHRoLFxuICAgICdsaW5lRW5kaW5nJzogb2JqLmxpbmVFbmRpbmcsXG4gICAgJ2xpbmVXaWR0aCc6IG9iai5saW5lV2lkdGgsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEdyaXRMaW50ZXJDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JpdExpbnRlckNvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogQ29udHJvbCB0aGUgbGludGVyIGZvciBHcml0IGZpbGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIEdyaXRMaW50ZXJDb25maWd1cmF0aW9uI2VuYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdHcml0TGludGVyQ29uZmlndXJhdGlvbicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0dyaXRMaW50ZXJDb25maWd1cmF0aW9uKG9iajogR3JpdExpbnRlckNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdlbmFibGVkJzogb2JqLmVuYWJsZWQsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBPcHRpb25zIHRoYXQgY2hhbmdlcyBob3cgdGhlIEhUTUwgZm9ybWF0dGVyIGJlaGF2ZXNcbiAqXG4gKiBAc2NoZW1hIEh0bWxGb3JtYXR0ZXJDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHRtbEZvcm1hdHRlckNvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVGhlIGF0dHJpYnV0ZSBwb3NpdGlvbiBzdHlsZSBpbiBIVE1MIGVsZW1lbnRzLiBEZWZhdWx0cyB0byBhdXRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBhdXRvLlxuICAgKiBAc2NoZW1hIEh0bWxGb3JtYXR0ZXJDb25maWd1cmF0aW9uI2F0dHJpYnV0ZVBvc2l0aW9uXG4gICAqL1xuICByZWFkb25seSBhdHRyaWJ1dGVQb3NpdGlvbj86IEF0dHJpYnV0ZVBvc2l0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGh1ZyB0aGUgY2xvc2luZyBicmFja2V0IG9mIG11bHRpbGluZSBIVE1MIHRhZ3MgdG8gdGhlIGVuZCBvZiB0aGUgbGFzdCBsaW5lLCByYXRoZXIgdGhhbiBiZWluZyBhbG9uZSBvbiB0aGUgZm9sbG93aW5nIGxpbmUuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZS5cbiAgICogQHNjaGVtYSBIdG1sRm9ybWF0dGVyQ29uZmlndXJhdGlvbiNicmFja2V0U2FtZUxpbmVcbiAgICovXG4gIHJlYWRvbmx5IGJyYWNrZXRTYW1lTGluZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbnRyb2wgdGhlIGZvcm1hdHRlciBmb3IgSFRNTCAoYW5kIGl0cyBzdXBlciBsYW5ndWFnZXMpIGZpbGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIEh0bWxGb3JtYXR0ZXJDb25maWd1cmF0aW9uI2VuYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluZGVudCB0aGUgYDxzY3JpcHQ+YCBhbmQgYDxzdHlsZT5gIHRhZ3MgZm9yIEhUTUwgKGFuZCBpdHMgc3VwZXIgbGFuZ3VhZ2VzKS4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlLlxuICAgKiBAc2NoZW1hIEh0bWxGb3JtYXR0ZXJDb25maWd1cmF0aW9uI2luZGVudFNjcmlwdEFuZFN0eWxlXG4gICAqL1xuICByZWFkb25seSBpbmRlbnRTY3JpcHRBbmRTdHlsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBpbmRlbnQgc3R5bGUgYXBwbGllZCB0byBIVE1MIChhbmQgaXRzIHN1cGVyIGxhbmd1YWdlcykgZmlsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgSHRtbEZvcm1hdHRlckNvbmZpZ3VyYXRpb24jaW5kZW50U3R5bGVcbiAgICovXG4gIHJlYWRvbmx5IGluZGVudFN0eWxlPzogSW5kZW50U3R5bGU7XG5cbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBpbmRlbnRhdGlvbiBhcHBsaWVkIHRvIEhUTUwgKGFuZCBpdHMgc3VwZXIgbGFuZ3VhZ2VzKSBmaWxlcy4gRGVmYXVsdCB0byAyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAyLlxuICAgKiBAc2NoZW1hIEh0bWxGb3JtYXR0ZXJDb25maWd1cmF0aW9uI2luZGVudFdpZHRoXG4gICAqL1xuICByZWFkb25seSBpbmRlbnRXaWR0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgbGluZSBlbmRpbmcgYXBwbGllZCB0byBIVE1MIChhbmQgaXRzIHN1cGVyIGxhbmd1YWdlcykgZmlsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgSHRtbEZvcm1hdHRlckNvbmZpZ3VyYXRpb24jbGluZUVuZGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgbGluZUVuZGluZz86IExpbmVFbmRpbmc7XG5cbiAgLyoqXG4gICAqIFdoYXQncyB0aGUgbWF4IHdpZHRoIG9mIGEgbGluZSBhcHBsaWVkIHRvIEhUTUwgKGFuZCBpdHMgc3VwZXIgbGFuZ3VhZ2VzKSBmaWxlcy4gRGVmYXVsdHMgdG8gODAuXG4gICAqXG4gICAqIEBkZWZhdWx0IDgwLlxuICAgKiBAc2NoZW1hIEh0bWxGb3JtYXR0ZXJDb25maWd1cmF0aW9uI2xpbmVXaWR0aFxuICAgKi9cbiAgcmVhZG9ubHkgbGluZVdpZHRoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHZvaWQgZWxlbWVudHMgc2hvdWxkIGJlIHNlbGYtY2xvc2VkLiBEZWZhdWx0cyB0byBuZXZlci5cbiAgICpcbiAgICogQGRlZmF1bHQgbmV2ZXIuXG4gICAqIEBzY2hlbWEgSHRtbEZvcm1hdHRlckNvbmZpZ3VyYXRpb24jc2VsZkNsb3NlVm9pZEVsZW1lbnRzXG4gICAqL1xuICByZWFkb25seSBzZWxmQ2xvc2VWb2lkRWxlbWVudHM/OiBTZWxmQ2xvc2VWb2lkRWxlbWVudHM7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWNjb3VudCBmb3Igd2hpdGVzcGFjZSBzZW5zaXRpdml0eSB3aGVuIGZvcm1hdHRpbmcgSFRNTCAoYW5kIGl0cyBzdXBlciBsYW5ndWFnZXMpLiBEZWZhdWx0cyB0byBcImNzc1wiLlxuICAgKlxuICAgKiBAZGVmYXVsdCBjc3NcIi5cbiAgICogQHNjaGVtYSBIdG1sRm9ybWF0dGVyQ29uZmlndXJhdGlvbiN3aGl0ZXNwYWNlU2Vuc2l0aXZpdHlcbiAgICovXG4gIHJlYWRvbmx5IHdoaXRlc3BhY2VTZW5zaXRpdml0eT86IFdoaXRlc3BhY2VTZW5zaXRpdml0eTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnSHRtbEZvcm1hdHRlckNvbmZpZ3VyYXRpb24nIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9IdG1sRm9ybWF0dGVyQ29uZmlndXJhdGlvbihvYmo6IEh0bWxGb3JtYXR0ZXJDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYXR0cmlidXRlUG9zaXRpb24nOiBvYmouYXR0cmlidXRlUG9zaXRpb24sXG4gICAgJ2JyYWNrZXRTYW1lTGluZSc6IG9iai5icmFja2V0U2FtZUxpbmUsXG4gICAgJ2VuYWJsZWQnOiBvYmouZW5hYmxlZCxcbiAgICAnaW5kZW50U2NyaXB0QW5kU3R5bGUnOiBvYmouaW5kZW50U2NyaXB0QW5kU3R5bGUsXG4gICAgJ2luZGVudFN0eWxlJzogb2JqLmluZGVudFN0eWxlLFxuICAgICdpbmRlbnRXaWR0aCc6IG9iai5pbmRlbnRXaWR0aCxcbiAgICAnbGluZUVuZGluZyc6IG9iai5saW5lRW5kaW5nLFxuICAgICdsaW5lV2lkdGgnOiBvYmoubGluZVdpZHRoLFxuICAgICdzZWxmQ2xvc2VWb2lkRWxlbWVudHMnOiBvYmouc2VsZkNsb3NlVm9pZEVsZW1lbnRzLFxuICAgICd3aGl0ZXNwYWNlU2Vuc2l0aXZpdHknOiBvYmoud2hpdGVzcGFjZVNlbnNpdGl2aXR5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogQXNzaXN0IG9wdGlvbnMgc3BlY2lmaWMgdG8gdGhlIEphdmFTY3JpcHQgYXNzaXN0XG4gKlxuICogQHNjaGVtYSBKc0Fzc2lzdENvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKc0Fzc2lzdENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogQ29udHJvbCB0aGUgYXNzaXN0IGZvciBKYXZhU2NyaXB0IChhbmQgaXRzIHN1cGVyIGxhbmd1YWdlcykgZmlsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgSnNBc3Npc3RDb25maWd1cmF0aW9uI2VuYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdKc0Fzc2lzdENvbmZpZ3VyYXRpb24nIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9Kc0Fzc2lzdENvbmZpZ3VyYXRpb24ob2JqOiBKc0Fzc2lzdENvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdlbmFibGVkJzogb2JqLmVuYWJsZWQsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBGb3JtYXR0aW5nIG9wdGlvbnMgc3BlY2lmaWMgdG8gdGhlIEphdmFTY3JpcHQgZmlsZXNcbiAqXG4gKiBAc2NoZW1hIEpzRm9ybWF0dGVyQ29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpzRm9ybWF0dGVyQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFkZCBub24tbmVjZXNzYXJ5IHBhcmVudGhlc2VzIHRvIGFycm93IGZ1bmN0aW9ucy4gRGVmYXVsdHMgdG8gXCJhbHdheXNcIi5cbiAgICpcbiAgICogQGRlZmF1bHQgYWx3YXlzXCIuXG4gICAqIEBzY2hlbWEgSnNGb3JtYXR0ZXJDb25maWd1cmF0aW9uI2Fycm93UGFyZW50aGVzZXNcbiAgICovXG4gIHJlYWRvbmx5IGFycm93UGFyZW50aGVzZXM/OiBBcnJvd1BhcmVudGhlc2VzO1xuXG4gIC8qKlxuICAgKiBUaGUgYXR0cmlidXRlIHBvc2l0aW9uIHN0eWxlIGluIEpTWCBlbGVtZW50cy4gRGVmYXVsdHMgdG8gYXV0by5cbiAgICpcbiAgICogQGRlZmF1bHQgYXV0by5cbiAgICogQHNjaGVtYSBKc0Zvcm1hdHRlckNvbmZpZ3VyYXRpb24jYXR0cmlidXRlUG9zaXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGF0dHJpYnV0ZVBvc2l0aW9uPzogQXR0cmlidXRlUG9zaXRpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaHVnIHRoZSBjbG9zaW5nIGJyYWNrZXQgb2YgbXVsdGlsaW5lIEhUTUwvSlNYIHRhZ3MgdG8gdGhlIGVuZCBvZiB0aGUgbGFzdCBsaW5lLCByYXRoZXIgdGhhbiBiZWluZyBhbG9uZSBvbiB0aGUgZm9sbG93aW5nIGxpbmUuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZS5cbiAgICogQHNjaGVtYSBKc0Zvcm1hdHRlckNvbmZpZ3VyYXRpb24jYnJhY2tldFNhbWVMaW5lXG4gICAqL1xuICByZWFkb25seSBicmFja2V0U2FtZUxpbmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluc2VydCBzcGFjZXMgYXJvdW5kIGJyYWNrZXRzIGluIG9iamVjdCBsaXRlcmFscy4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZS5cbiAgICogQHNjaGVtYSBKc0Zvcm1hdHRlckNvbmZpZ3VyYXRpb24jYnJhY2tldFNwYWNpbmdcbiAgICovXG4gIHJlYWRvbmx5IGJyYWNrZXRTcGFjaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29udHJvbCB0aGUgZm9ybWF0dGVyIGZvciBKYXZhU2NyaXB0IChhbmQgaXRzIHN1cGVyIGxhbmd1YWdlcykgZmlsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgSnNGb3JtYXR0ZXJDb25maWd1cmF0aW9uI2VuYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGV4cGFuZCBhcnJheXMgYW5kIG9iamVjdHMgb24gbXVsdGlwbGUgbGluZXMuIFdoZW4gc2V0IHRvIGBhdXRvYCwgb2JqZWN0IGxpdGVyYWxzIGFyZSBmb3JtYXR0ZWQgb24gbXVsdGlwbGUgbGluZXMgaWYgdGhlIGZpcnN0IHByb3BlcnR5IGhhcyBhIG5ld2xpbmUsIGFuZCBhcnJheSBsaXRlcmFscyBhcmUgZm9ybWF0dGVkIG9uIGEgc2luZ2xlIGxpbmUgaWYgaXQgZml0cyBpbiB0aGUgbGluZS4gV2hlbiBzZXQgdG8gYGFsd2F5c2AsIHRoZXNlIGxpdGVyYWxzIGFyZSBmb3JtYXR0ZWQgb24gbXVsdGlwbGUgbGluZXMsIHJlZ2FyZGxlc3Mgb2YgbGVuZ3RoIG9mIHRoZSBsaXN0LiBXaGVuIHNldCB0byBgbmV2ZXJgLCB0aGVzZSBsaXRlcmFscyBhcmUgZm9ybWF0dGVkIG9uIGEgc2luZ2xlIGxpbmUgaWYgaXQgZml0cyBpbiB0aGUgbGluZS4gV2hlbiBmb3JtYXR0aW5nIGBwYWNrYWdlLmpzb25gLCBCaW9tZSB3aWxsIHVzZSBgYWx3YXlzYCB1bmxlc3MgY29uZmlndXJlZCBvdGhlcndpc2UuIERlZmF1bHRzIHRvIFwiYXV0b1wiLlxuICAgKlxuICAgKiBAZGVmYXVsdCBhdXRvXCIuXG4gICAqIEBzY2hlbWEgSnNGb3JtYXR0ZXJDb25maWd1cmF0aW9uI2V4cGFuZFxuICAgKi9cbiAgcmVhZG9ubHkgZXhwYW5kPzogRXhwYW5kO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5kZW50IHN0eWxlIGFwcGxpZWQgdG8gSmF2YVNjcmlwdCAoYW5kIGl0cyBzdXBlciBsYW5ndWFnZXMpIGZpbGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIEpzRm9ybWF0dGVyQ29uZmlndXJhdGlvbiNpbmRlbnRTdHlsZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5kZW50U3R5bGU/OiBJbmRlbnRTdHlsZTtcblxuICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIGluZGVudGF0aW9uIGFwcGxpZWQgdG8gSmF2YVNjcmlwdCAoYW5kIGl0cyBzdXBlciBsYW5ndWFnZXMpIGZpbGVzLiBEZWZhdWx0IHRvIDIuXG4gICAqXG4gICAqIEBkZWZhdWx0IDIuXG4gICAqIEBzY2hlbWEgSnNGb3JtYXR0ZXJDb25maWd1cmF0aW9uI2luZGVudFdpZHRoXG4gICAqL1xuICByZWFkb25seSBpbmRlbnRXaWR0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgcXVvdGVzIHVzZWQgaW4gSlNYLiBEZWZhdWx0cyB0byBkb3VibGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGRvdWJsZS5cbiAgICogQHNjaGVtYSBKc0Zvcm1hdHRlckNvbmZpZ3VyYXRpb24janN4UXVvdGVTdHlsZVxuICAgKi9cbiAgcmVhZG9ubHkganN4UXVvdGVTdHlsZT86IFF1b3RlU3R5bGU7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGxpbmUgZW5kaW5nIGFwcGxpZWQgdG8gSmF2YVNjcmlwdCAoYW5kIGl0cyBzdXBlciBsYW5ndWFnZXMpIGZpbGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIEpzRm9ybWF0dGVyQ29uZmlndXJhdGlvbiNsaW5lRW5kaW5nXG4gICAqL1xuICByZWFkb25seSBsaW5lRW5kaW5nPzogTGluZUVuZGluZztcblxuICAvKipcbiAgICogV2hhdCdzIHRoZSBtYXggd2lkdGggb2YgYSBsaW5lIGFwcGxpZWQgdG8gSmF2YVNjcmlwdCAoYW5kIGl0cyBzdXBlciBsYW5ndWFnZXMpIGZpbGVzLiBEZWZhdWx0cyB0byA4MC5cbiAgICpcbiAgICogQGRlZmF1bHQgODAuXG4gICAqIEBzY2hlbWEgSnNGb3JtYXR0ZXJDb25maWd1cmF0aW9uI2xpbmVXaWR0aFxuICAgKi9cbiAgcmVhZG9ubHkgbGluZVdpZHRoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGVuIHByb3BlcnRpZXMgaW4gb2JqZWN0cyBhcmUgcXVvdGVkLiBEZWZhdWx0cyB0byBhc05lZWRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYXNOZWVkZWQuXG4gICAqIEBzY2hlbWEgSnNGb3JtYXR0ZXJDb25maWd1cmF0aW9uI3F1b3RlUHJvcGVydGllc1xuICAgKi9cbiAgcmVhZG9ubHkgcXVvdGVQcm9wZXJ0aWVzPzogUXVvdGVQcm9wZXJ0aWVzO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBxdW90ZXMgdXNlZCBpbiBKYXZhU2NyaXB0IGNvZGUuIERlZmF1bHRzIHRvIGRvdWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZG91YmxlLlxuICAgKiBAc2NoZW1hIEpzRm9ybWF0dGVyQ29uZmlndXJhdGlvbiNxdW90ZVN0eWxlXG4gICAqL1xuICByZWFkb25seSBxdW90ZVN0eWxlPzogUXVvdGVTdHlsZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZm9ybWF0dGVyIHByaW50cyBzZW1pY29sb25zIGZvciBhbGwgc3RhdGVtZW50cyBvciBvbmx5IGluIGZvciBzdGF0ZW1lbnRzIHdoZXJlIGl0IGlzIG5lY2Vzc2FyeSBiZWNhdXNlIG9mIEFTSS5cbiAgICpcbiAgICogQHNjaGVtYSBKc0Zvcm1hdHRlckNvbmZpZ3VyYXRpb24jc2VtaWNvbG9uc1xuICAgKi9cbiAgcmVhZG9ubHkgc2VtaWNvbG9ucz86IFNlbWljb2xvbnM7XG5cbiAgLyoqXG4gICAqIFByaW50IHRyYWlsaW5nIGNvbW1hcyB3aGVyZXZlciBwb3NzaWJsZSBpbiBtdWx0aS1saW5lIGNvbW1hLXNlcGFyYXRlZCBzeW50YWN0aWMgc3RydWN0dXJlcy4gRGVmYXVsdHMgdG8gXCJhbGxcIi5cbiAgICpcbiAgICogQGRlZmF1bHQgYWxsXCIuXG4gICAqIEBzY2hlbWEgSnNGb3JtYXR0ZXJDb25maWd1cmF0aW9uI3RyYWlsaW5nQ29tbWFzXG4gICAqL1xuICByZWFkb25seSB0cmFpbGluZ0NvbW1hcz86IFRyYWlsaW5nQ29tbWFzO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdKc0Zvcm1hdHRlckNvbmZpZ3VyYXRpb24nIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9Kc0Zvcm1hdHRlckNvbmZpZ3VyYXRpb24ob2JqOiBKc0Zvcm1hdHRlckNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdhcnJvd1BhcmVudGhlc2VzJzogb2JqLmFycm93UGFyZW50aGVzZXMsXG4gICAgJ2F0dHJpYnV0ZVBvc2l0aW9uJzogb2JqLmF0dHJpYnV0ZVBvc2l0aW9uLFxuICAgICdicmFja2V0U2FtZUxpbmUnOiBvYmouYnJhY2tldFNhbWVMaW5lLFxuICAgICdicmFja2V0U3BhY2luZyc6IG9iai5icmFja2V0U3BhY2luZyxcbiAgICAnZW5hYmxlZCc6IG9iai5lbmFibGVkLFxuICAgICdleHBhbmQnOiBvYmouZXhwYW5kLFxuICAgICdpbmRlbnRTdHlsZSc6IG9iai5pbmRlbnRTdHlsZSxcbiAgICAnaW5kZW50V2lkdGgnOiBvYmouaW5kZW50V2lkdGgsXG4gICAgJ2pzeFF1b3RlU3R5bGUnOiBvYmouanN4UXVvdGVTdHlsZSxcbiAgICAnbGluZUVuZGluZyc6IG9iai5saW5lRW5kaW5nLFxuICAgICdsaW5lV2lkdGgnOiBvYmoubGluZVdpZHRoLFxuICAgICdxdW90ZVByb3BlcnRpZXMnOiBvYmoucXVvdGVQcm9wZXJ0aWVzLFxuICAgICdxdW90ZVN0eWxlJzogb2JqLnF1b3RlU3R5bGUsXG4gICAgJ3NlbWljb2xvbnMnOiBvYmouc2VtaWNvbG9ucyxcbiAgICAndHJhaWxpbmdDb21tYXMnOiBvYmoudHJhaWxpbmdDb21tYXMsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBJbmRpY2F0ZXMgdGhlIHR5cGUgb2YgcnVudGltZSBvciB0cmFuc2Zvcm1hdGlvbiB1c2VkIGZvciBpbnRlcnByZXRpbmcgSlNYLlxuICpcbiAqIEBzY2hlbWEgSnN4UnVudGltZVxuICovXG5leHBvcnQgZW51bSBKc3hSdW50aW1lIHtcbiAgLyoqIHRyYW5zcGFyZW50ICovXG4gIFRSQU5TUEFSRU5UID0gXCJ0cmFuc3BhcmVudFwiLFxuICAvKiogcmVhY3RDbGFzc2ljICovXG4gIFJFQUNUX0NMQVNTSUMgPSBcInJlYWN0Q2xhc3NpY1wiLFxufVxuXG4vKipcbiAqIExpbnRlciBvcHRpb25zIHNwZWNpZmljIHRvIHRoZSBKYXZhU2NyaXB0IGxpbnRlclxuICpcbiAqIEBzY2hlbWEgSnNMaW50ZXJDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSnNMaW50ZXJDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIENvbnRyb2wgdGhlIGxpbnRlciBmb3IgSmF2YVNjcmlwdCAoYW5kIGl0cyBzdXBlciBsYW5ndWFnZXMpIGZpbGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIEpzTGludGVyQ29uZmlndXJhdGlvbiNlbmFibGVkXG4gICAqL1xuICByZWFkb25seSBlbmFibGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnSnNMaW50ZXJDb25maWd1cmF0aW9uJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fSnNMaW50ZXJDb25maWd1cmF0aW9uKG9iajogSnNMaW50ZXJDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnZW5hYmxlZCc6IG9iai5lbmFibGVkLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogT3B0aW9ucyB0aGF0IGNoYW5nZXMgaG93IHRoZSBKYXZhU2NyaXB0IHBhcnNlciBiZWhhdmVzXG4gKlxuICogQHNjaGVtYSBKc1BhcnNlckNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKc1BhcnNlckNvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogRW5hYmxlcyBwYXJzaW5nIG9mIEdyaXQgbWV0YXZhcmlhYmxlcy4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VgLlxuICAgKiBAc2NoZW1hIEpzUGFyc2VyQ29uZmlndXJhdGlvbiNncml0TWV0YXZhcmlhYmxlc1xuICAgKi9cbiAgcmVhZG9ubHkgZ3JpdE1ldGF2YXJpYWJsZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIGZpbGVzIGxpa2UgYC5qc2AvYC5tanNgL2AuY2pzYCBtYXkgY29udGFpbiBKU1ggc3ludGF4LlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVgLlxuICAgKiBAc2NoZW1hIEpzUGFyc2VyQ29uZmlndXJhdGlvbiNqc3hFdmVyeXdoZXJlXG4gICAqL1xuICByZWFkb25seSBqc3hFdmVyeXdoZXJlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSXQgZW5hYmxlcyB0aGUgZXhwZXJpbWVudGFsIGFuZCB1bnNhZmUgcGFyc2luZyBvZiBwYXJhbWV0ZXIgZGVjb3JhdG9yc1xuICAgKlxuICAgKiBUaGVzZSBkZWNvcmF0b3JzIGJlbG9uZyB0byBhbiBvbGQgcHJvcG9zYWwsIGFuZCB0aGV5IGFyZSBzdWJqZWN0IHRvIGNoYW5nZS5cbiAgICpcbiAgICogQHNjaGVtYSBKc1BhcnNlckNvbmZpZ3VyYXRpb24jdW5zYWZlUGFyYW1ldGVyRGVjb3JhdG9yc0VuYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IHVuc2FmZVBhcmFtZXRlckRlY29yYXRvcnNFbmFibGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnSnNQYXJzZXJDb25maWd1cmF0aW9uJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fSnNQYXJzZXJDb25maWd1cmF0aW9uKG9iajogSnNQYXJzZXJDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnZ3JpdE1ldGF2YXJpYWJsZXMnOiBvYmouZ3JpdE1ldGF2YXJpYWJsZXMsXG4gICAgJ2pzeEV2ZXJ5d2hlcmUnOiBvYmouanN4RXZlcnl3aGVyZSxcbiAgICAndW5zYWZlUGFyYW1ldGVyRGVjb3JhdG9yc0VuYWJsZWQnOiBvYmoudW5zYWZlUGFyYW1ldGVyRGVjb3JhdG9yc0VuYWJsZWQsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBMaW50ZXIgb3B0aW9ucyBzcGVjaWZpYyB0byB0aGUgSlNPTiBsaW50ZXJcbiAqXG4gKiBAc2NoZW1hIEpzb25Bc3Npc3RDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbkFzc2lzdENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogQ29udHJvbCB0aGUgYXNzaXN0IGZvciBKU09OIChhbmQgaXRzIHN1cGVyIGxhbmd1YWdlcykgZmlsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgSnNvbkFzc2lzdENvbmZpZ3VyYXRpb24jZW5hYmxlZFxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0pzb25Bc3Npc3RDb25maWd1cmF0aW9uJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fSnNvbkFzc2lzdENvbmZpZ3VyYXRpb24ob2JqOiBKc29uQXNzaXN0Q29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2VuYWJsZWQnOiBvYmouZW5hYmxlZCxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgSnNvbkZvcm1hdHRlckNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKc29uRm9ybWF0dGVyQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluc2VydCBzcGFjZXMgYXJvdW5kIGJyYWNrZXRzIGluIG9iamVjdCBsaXRlcmFscy4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZS5cbiAgICogQHNjaGVtYSBKc29uRm9ybWF0dGVyQ29uZmlndXJhdGlvbiNicmFja2V0U3BhY2luZ1xuICAgKi9cbiAgcmVhZG9ubHkgYnJhY2tldFNwYWNpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb250cm9sIHRoZSBmb3JtYXR0ZXIgZm9yIEpTT04gKGFuZCBpdHMgc3VwZXIgbGFuZ3VhZ2VzKSBmaWxlcy5cbiAgICpcbiAgICogQHNjaGVtYSBKc29uRm9ybWF0dGVyQ29uZmlndXJhdGlvbiNlbmFibGVkXG4gICAqL1xuICByZWFkb25seSBlbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBleHBhbmQgYXJyYXlzIGFuZCBvYmplY3RzIG9uIG11bHRpcGxlIGxpbmVzLiBXaGVuIHNldCB0byBgYXV0b2AsIG9iamVjdCBsaXRlcmFscyBhcmUgZm9ybWF0dGVkIG9uIG11bHRpcGxlIGxpbmVzIGlmIHRoZSBmaXJzdCBwcm9wZXJ0eSBoYXMgYSBuZXdsaW5lLCBhbmQgYXJyYXkgbGl0ZXJhbHMgYXJlIGZvcm1hdHRlZCBvbiBhIHNpbmdsZSBsaW5lIGlmIGl0IGZpdHMgaW4gdGhlIGxpbmUuIFdoZW4gc2V0IHRvIGBhbHdheXNgLCB0aGVzZSBsaXRlcmFscyBhcmUgZm9ybWF0dGVkIG9uIG11bHRpcGxlIGxpbmVzLCByZWdhcmRsZXNzIG9mIGxlbmd0aCBvZiB0aGUgbGlzdC4gV2hlbiBzZXQgdG8gYG5ldmVyYCwgdGhlc2UgbGl0ZXJhbHMgYXJlIGZvcm1hdHRlZCBvbiBhIHNpbmdsZSBsaW5lIGlmIGl0IGZpdHMgaW4gdGhlIGxpbmUuIFdoZW4gZm9ybWF0dGluZyBgcGFja2FnZS5qc29uYCwgQmlvbWUgd2lsbCB1c2UgYGFsd2F5c2AgdW5sZXNzIGNvbmZpZ3VyZWQgb3RoZXJ3aXNlLiBEZWZhdWx0cyB0byBcImF1dG9cIi5cbiAgICpcbiAgICogQGRlZmF1bHQgYXV0b1wiLlxuICAgKiBAc2NoZW1hIEpzb25Gb3JtYXR0ZXJDb25maWd1cmF0aW9uI2V4cGFuZFxuICAgKi9cbiAgcmVhZG9ubHkgZXhwYW5kPzogRXhwYW5kO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5kZW50IHN0eWxlIGFwcGxpZWQgdG8gSlNPTiAoYW5kIGl0cyBzdXBlciBsYW5ndWFnZXMpIGZpbGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIEpzb25Gb3JtYXR0ZXJDb25maWd1cmF0aW9uI2luZGVudFN0eWxlXG4gICAqL1xuICByZWFkb25seSBpbmRlbnRTdHlsZT86IEluZGVudFN0eWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgaW5kZW50YXRpb24gYXBwbGllZCB0byBKU09OIChhbmQgaXRzIHN1cGVyIGxhbmd1YWdlcykgZmlsZXMuIERlZmF1bHQgdG8gMi5cbiAgICpcbiAgICogQGRlZmF1bHQgMi5cbiAgICogQHNjaGVtYSBKc29uRm9ybWF0dGVyQ29uZmlndXJhdGlvbiNpbmRlbnRXaWR0aFxuICAgKi9cbiAgcmVhZG9ubHkgaW5kZW50V2lkdGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGxpbmUgZW5kaW5nIGFwcGxpZWQgdG8gSlNPTiAoYW5kIGl0cyBzdXBlciBsYW5ndWFnZXMpIGZpbGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIEpzb25Gb3JtYXR0ZXJDb25maWd1cmF0aW9uI2xpbmVFbmRpbmdcbiAgICovXG4gIHJlYWRvbmx5IGxpbmVFbmRpbmc/OiBMaW5lRW5kaW5nO1xuXG4gIC8qKlxuICAgKiBXaGF0J3MgdGhlIG1heCB3aWR0aCBvZiBhIGxpbmUgYXBwbGllZCB0byBKU09OIChhbmQgaXRzIHN1cGVyIGxhbmd1YWdlcykgZmlsZXMuIERlZmF1bHRzIHRvIDgwLlxuICAgKlxuICAgKiBAZGVmYXVsdCA4MC5cbiAgICogQHNjaGVtYSBKc29uRm9ybWF0dGVyQ29uZmlndXJhdGlvbiNsaW5lV2lkdGhcbiAgICovXG4gIHJlYWRvbmx5IGxpbmVXaWR0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogUHJpbnQgdHJhaWxpbmcgY29tbWFzIHdoZXJldmVyIHBvc3NpYmxlIGluIG11bHRpLWxpbmUgY29tbWEtc2VwYXJhdGVkIHN5bnRhY3RpYyBzdHJ1Y3R1cmVzLiBEZWZhdWx0cyB0byBcIm5vbmVcIi5cbiAgICpcbiAgICogQGRlZmF1bHQgbm9uZVwiLlxuICAgKiBAc2NoZW1hIEpzb25Gb3JtYXR0ZXJDb25maWd1cmF0aW9uI3RyYWlsaW5nQ29tbWFzXG4gICAqL1xuICByZWFkb25seSB0cmFpbGluZ0NvbW1hcz86IFRyYWlsaW5nQ29tbWFzMjtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnSnNvbkZvcm1hdHRlckNvbmZpZ3VyYXRpb24nIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9Kc29uRm9ybWF0dGVyQ29uZmlndXJhdGlvbihvYmo6IEpzb25Gb3JtYXR0ZXJDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYnJhY2tldFNwYWNpbmcnOiBvYmouYnJhY2tldFNwYWNpbmcsXG4gICAgJ2VuYWJsZWQnOiBvYmouZW5hYmxlZCxcbiAgICAnZXhwYW5kJzogb2JqLmV4cGFuZCxcbiAgICAnaW5kZW50U3R5bGUnOiBvYmouaW5kZW50U3R5bGUsXG4gICAgJ2luZGVudFdpZHRoJzogb2JqLmluZGVudFdpZHRoLFxuICAgICdsaW5lRW5kaW5nJzogb2JqLmxpbmVFbmRpbmcsXG4gICAgJ2xpbmVXaWR0aCc6IG9iai5saW5lV2lkdGgsXG4gICAgJ3RyYWlsaW5nQ29tbWFzJzogb2JqLnRyYWlsaW5nQ29tbWFzLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogTGludGVyIG9wdGlvbnMgc3BlY2lmaWMgdG8gdGhlIEpTT04gbGludGVyXG4gKlxuICogQHNjaGVtYSBKc29uTGludGVyQ29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpzb25MaW50ZXJDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIENvbnRyb2wgdGhlIGxpbnRlciBmb3IgSlNPTiAoYW5kIGl0cyBzdXBlciBsYW5ndWFnZXMpIGZpbGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIEpzb25MaW50ZXJDb25maWd1cmF0aW9uI2VuYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdKc29uTGludGVyQ29uZmlndXJhdGlvbicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0pzb25MaW50ZXJDb25maWd1cmF0aW9uKG9iajogSnNvbkxpbnRlckNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdlbmFibGVkJzogb2JqLmVuYWJsZWQsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBPcHRpb25zIHRoYXQgY2hhbmdlcyBob3cgdGhlIEpTT04gcGFyc2VyIGJlaGF2ZXNcbiAqXG4gKiBAc2NoZW1hIEpzb25QYXJzZXJDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSnNvblBhcnNlckNvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogQWxsb3cgcGFyc2luZyBjb21tZW50cyBpbiBgLmpzb25gIGZpbGVzXG4gICAqXG4gICAqIEBzY2hlbWEgSnNvblBhcnNlckNvbmZpZ3VyYXRpb24jYWxsb3dDb21tZW50c1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dDb21tZW50cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFsbG93IHBhcnNpbmcgdHJhaWxpbmcgY29tbWFzIGluIGAuanNvbmAgZmlsZXNcbiAgICpcbiAgICogQHNjaGVtYSBKc29uUGFyc2VyQ29uZmlndXJhdGlvbiNhbGxvd1RyYWlsaW5nQ29tbWFzXG4gICAqL1xuICByZWFkb25seSBhbGxvd1RyYWlsaW5nQ29tbWFzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnSnNvblBhcnNlckNvbmZpZ3VyYXRpb24nIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9Kc29uUGFyc2VyQ29uZmlndXJhdGlvbihvYmo6IEpzb25QYXJzZXJDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYWxsb3dDb21tZW50cyc6IG9iai5hbGxvd0NvbW1lbnRzLFxuICAgICdhbGxvd1RyYWlsaW5nQ29tbWFzJzogb2JqLmFsbG93VHJhaWxpbmdDb21tYXMsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIFJ1bGVEb21haW5WYWx1ZVxuICovXG5leHBvcnQgZW51bSBSdWxlRG9tYWluVmFsdWUge1xuICAvKiogYWxsICovXG4gIEFMTCA9IFwiYWxsXCIsXG4gIC8qKiBub25lICovXG4gIE5PTkUgPSBcIm5vbmVcIixcbiAgLyoqIHJlY29tbWVuZGVkICovXG4gIFJFQ09NTUVOREVEID0gXCJyZWNvbW1lbmRlZFwiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgUnVsZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdWxlcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFJ1bGVzI2ExMXlcbiAgICovXG4gIHJlYWRvbmx5IGExMVk/OiBhbnk7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgUnVsZXMjY29tcGxleGl0eVxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGxleGl0eT86IGFueTtcblxuICAvKipcbiAgICogQHNjaGVtYSBSdWxlcyNjb3JyZWN0bmVzc1xuICAgKi9cbiAgcmVhZG9ubHkgY29ycmVjdG5lc3M/OiBhbnk7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgUnVsZXMjbnVyc2VyeVxuICAgKi9cbiAgcmVhZG9ubHkgbnVyc2VyeT86IGFueTtcblxuICAvKipcbiAgICogQHNjaGVtYSBSdWxlcyNwZXJmb3JtYW5jZVxuICAgKi9cbiAgcmVhZG9ubHkgcGVyZm9ybWFuY2U/OiBhbnk7XG5cbiAgLyoqXG4gICAqIEl0IGVuYWJsZXMgdGhlIGxpbnQgcnVsZXMgcmVjb21tZW5kZWQgYnkgQmlvbWUuIGB0cnVlYCBieSBkZWZhdWx0LlxuICAgKlxuICAgKiBAc2NoZW1hIFJ1bGVzI3JlY29tbWVuZGVkXG4gICAqL1xuICByZWFkb25seSByZWNvbW1lbmRlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgUnVsZXMjc2VjdXJpdHlcbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5PzogYW55O1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFJ1bGVzI3N0eWxlXG4gICAqL1xuICByZWFkb25seSBzdHlsZT86IGFueTtcblxuICAvKipcbiAgICogQHNjaGVtYSBSdWxlcyNzdXNwaWNpb3VzXG4gICAqL1xuICByZWFkb25seSBzdXNwaWNpb3VzPzogYW55O1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdSdWxlcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1J1bGVzKG9iajogUnVsZXMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdhMTF5Jzogb2JqLmExMVksXG4gICAgJ2NvbXBsZXhpdHknOiBvYmouY29tcGxleGl0eSxcbiAgICAnY29ycmVjdG5lc3MnOiBvYmouY29ycmVjdG5lc3MsXG4gICAgJ251cnNlcnknOiBvYmoubnVyc2VyeSxcbiAgICAncGVyZm9ybWFuY2UnOiBvYmoucGVyZm9ybWFuY2UsXG4gICAgJ3JlY29tbWVuZGVkJzogb2JqLnJlY29tbWVuZGVkLFxuICAgICdzZWN1cml0eSc6IG9iai5zZWN1cml0eSxcbiAgICAnc3R5bGUnOiBvYmouc3R5bGUsXG4gICAgJ3N1c3BpY2lvdXMnOiBvYmouc3VzcGljaW91cyxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgT3ZlcnJpZGVBc3Npc3RDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcnJpZGVBc3Npc3RDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIExpc3Qgb2YgYWN0aW9uc1xuICAgKlxuICAgKiBAc2NoZW1hIE92ZXJyaWRlQXNzaXN0Q29uZmlndXJhdGlvbiNhY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBhY3Rpb25zPzogQWN0aW9ucztcblxuICAvKipcbiAgICogaWYgYGZhbHNlYCwgaXQgZGlzYWJsZXMgdGhlIGZlYXR1cmUgYW5kIHRoZSBhc3Npc3Qgd29uJ3QgYmUgZXhlY3V0ZWQuIGB0cnVlYCBieSBkZWZhdWx0XG4gICAqXG4gICAqIEBzY2hlbWEgT3ZlcnJpZGVBc3Npc3RDb25maWd1cmF0aW9uI2VuYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdPdmVycmlkZUFzc2lzdENvbmZpZ3VyYXRpb24nIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9PdmVycmlkZUFzc2lzdENvbmZpZ3VyYXRpb24ob2JqOiBPdmVycmlkZUFzc2lzdENvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdhY3Rpb25zJzogdG9Kc29uX0FjdGlvbnMob2JqLmFjdGlvbnMpLFxuICAgICdlbmFibGVkJzogb2JqLmVuYWJsZWQsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIE92ZXJyaWRlRmlsZXNDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcnJpZGVGaWxlc0NvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogRmlsZSBzaXplIGxpbWl0IGluIGJ5dGVzXG4gICAqXG4gICAqIEBzY2hlbWEgT3ZlcnJpZGVGaWxlc0NvbmZpZ3VyYXRpb24jbWF4U2l6ZVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4U2l6ZT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnT3ZlcnJpZGVGaWxlc0NvbmZpZ3VyYXRpb24nIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9PdmVycmlkZUZpbGVzQ29uZmlndXJhdGlvbihvYmo6IE92ZXJyaWRlRmlsZXNDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbWF4U2l6ZSc6IG9iai5tYXhTaXplLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBPdmVycmlkZUZvcm1hdHRlckNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPdmVycmlkZUZvcm1hdHRlckNvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVGhlIGF0dHJpYnV0ZSBwb3NpdGlvbiBzdHlsZS5cbiAgICpcbiAgICogQHNjaGVtYSBPdmVycmlkZUZvcm1hdHRlckNvbmZpZ3VyYXRpb24jYXR0cmlidXRlUG9zaXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGF0dHJpYnV0ZVBvc2l0aW9uPzogQXR0cmlidXRlUG9zaXRpb247XG5cbiAgLyoqXG4gICAqIFB1dCB0aGUgYD5gIG9mIGEgbXVsdGktbGluZSBIVE1MIG9yIEpTWCBlbGVtZW50IGF0IHRoZSBlbmQgb2YgdGhlIGxhc3QgbGluZSBpbnN0ZWFkIG9mIGJlaW5nIGFsb25lIG9uIHRoZSBuZXh0IGxpbmUgKGRvZXMgbm90IGFwcGx5IHRvIHNlbGYgY2xvc2luZyBlbGVtZW50cykuXG4gICAqXG4gICAqIEBzY2hlbWEgT3ZlcnJpZGVGb3JtYXR0ZXJDb25maWd1cmF0aW9uI2JyYWNrZXRTYW1lTGluZVxuICAgKi9cbiAgcmVhZG9ubHkgYnJhY2tldFNhbWVMaW5lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbnNlcnQgc3BhY2VzIGFyb3VuZCBicmFja2V0cyBpbiBvYmplY3QgbGl0ZXJhbHMuIERlZmF1bHRzIHRvIHRydWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWUuXG4gICAqIEBzY2hlbWEgT3ZlcnJpZGVGb3JtYXR0ZXJDb25maWd1cmF0aW9uI2JyYWNrZXRTcGFjaW5nXG4gICAqL1xuICByZWFkb25seSBicmFja2V0U3BhY2luZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgT3ZlcnJpZGVGb3JtYXR0ZXJDb25maWd1cmF0aW9uI2VuYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGV4cGFuZCBhcnJheXMgYW5kIG9iamVjdHMgb24gbXVsdGlwbGUgbGluZXMuIFdoZW4gc2V0IHRvIGBhdXRvYCwgb2JqZWN0IGxpdGVyYWxzIGFyZSBmb3JtYXR0ZWQgb24gbXVsdGlwbGUgbGluZXMgaWYgdGhlIGZpcnN0IHByb3BlcnR5IGhhcyBhIG5ld2xpbmUsIGFuZCBhcnJheSBsaXRlcmFscyBhcmUgZm9ybWF0dGVkIG9uIGEgc2luZ2xlIGxpbmUgaWYgaXQgZml0cyBpbiB0aGUgbGluZS4gV2hlbiBzZXQgdG8gYGFsd2F5c2AsIHRoZXNlIGxpdGVyYWxzIGFyZSBmb3JtYXR0ZWQgb24gbXVsdGlwbGUgbGluZXMsIHJlZ2FyZGxlc3Mgb2YgbGVuZ3RoIG9mIHRoZSBsaXN0LiBXaGVuIHNldCB0byBgbmV2ZXJgLCB0aGVzZSBsaXRlcmFscyBhcmUgZm9ybWF0dGVkIG9uIGEgc2luZ2xlIGxpbmUgaWYgaXQgZml0cyBpbiB0aGUgbGluZS4gV2hlbiBmb3JtYXR0aW5nIGBwYWNrYWdlLmpzb25gLCBCaW9tZSB3aWxsIHVzZSBgYWx3YXlzYCB1bmxlc3MgY29uZmlndXJlZCBvdGhlcndpc2UuIERlZmF1bHRzIHRvIFwiYXV0b1wiLlxuICAgKlxuICAgKiBAZGVmYXVsdCBhdXRvXCIuXG4gICAqIEBzY2hlbWEgT3ZlcnJpZGVGb3JtYXR0ZXJDb25maWd1cmF0aW9uI2V4cGFuZFxuICAgKi9cbiAgcmVhZG9ubHkgZXhwYW5kPzogRXhwYW5kO1xuXG4gIC8qKlxuICAgKiBTdG9yZXMgd2hldGhlciBmb3JtYXR0aW5nIHNob3VsZCBiZSBhbGxvd2VkIHRvIHByb2NlZWQgaWYgYSBnaXZlbiBmaWxlIGhhcyBzeW50YXggZXJyb3JzXG4gICAqXG4gICAqIEBzY2hlbWEgT3ZlcnJpZGVGb3JtYXR0ZXJDb25maWd1cmF0aW9uI2Zvcm1hdFdpdGhFcnJvcnNcbiAgICovXG4gIHJlYWRvbmx5IGZvcm1hdFdpdGhFcnJvcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgaW5kZW50YXRpb24sIDIgYnkgZGVmYXVsdCAoZGVwcmVjYXRlZCwgdXNlIGBpbmRlbnQtd2lkdGhgKVxuICAgKlxuICAgKiBAc2NoZW1hIE92ZXJyaWRlRm9ybWF0dGVyQ29uZmlndXJhdGlvbiNpbmRlbnRTaXplXG4gICAqL1xuICByZWFkb25seSBpbmRlbnRTaXplPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5kZW50IHN0eWxlLlxuICAgKlxuICAgKiBAc2NoZW1hIE92ZXJyaWRlRm9ybWF0dGVyQ29uZmlndXJhdGlvbiNpbmRlbnRTdHlsZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5kZW50U3R5bGU/OiBJbmRlbnRTdHlsZTtcblxuICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIGluZGVudGF0aW9uLCAyIGJ5IGRlZmF1bHRcbiAgICpcbiAgICogQHNjaGVtYSBPdmVycmlkZUZvcm1hdHRlckNvbmZpZ3VyYXRpb24jaW5kZW50V2lkdGhcbiAgICovXG4gIHJlYWRvbmx5IGluZGVudFdpZHRoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBsaW5lIGVuZGluZy5cbiAgICpcbiAgICogQHNjaGVtYSBPdmVycmlkZUZvcm1hdHRlckNvbmZpZ3VyYXRpb24jbGluZUVuZGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgbGluZUVuZGluZz86IExpbmVFbmRpbmc7XG5cbiAgLyoqXG4gICAqIFdoYXQncyB0aGUgbWF4IHdpZHRoIG9mIGEgbGluZS4gRGVmYXVsdHMgdG8gODAuXG4gICAqXG4gICAqIEBkZWZhdWx0IDgwLlxuICAgKiBAc2NoZW1hIE92ZXJyaWRlRm9ybWF0dGVyQ29uZmlndXJhdGlvbiNsaW5lV2lkdGhcbiAgICovXG4gIHJlYWRvbmx5IGxpbmVXaWR0aD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnT3ZlcnJpZGVGb3JtYXR0ZXJDb25maWd1cmF0aW9uJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fT3ZlcnJpZGVGb3JtYXR0ZXJDb25maWd1cmF0aW9uKG9iajogT3ZlcnJpZGVGb3JtYXR0ZXJDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYXR0cmlidXRlUG9zaXRpb24nOiBvYmouYXR0cmlidXRlUG9zaXRpb24sXG4gICAgJ2JyYWNrZXRTYW1lTGluZSc6IG9iai5icmFja2V0U2FtZUxpbmUsXG4gICAgJ2JyYWNrZXRTcGFjaW5nJzogb2JqLmJyYWNrZXRTcGFjaW5nLFxuICAgICdlbmFibGVkJzogb2JqLmVuYWJsZWQsXG4gICAgJ2V4cGFuZCc6IG9iai5leHBhbmQsXG4gICAgJ2Zvcm1hdFdpdGhFcnJvcnMnOiBvYmouZm9ybWF0V2l0aEVycm9ycyxcbiAgICAnaW5kZW50U2l6ZSc6IG9iai5pbmRlbnRTaXplLFxuICAgICdpbmRlbnRTdHlsZSc6IG9iai5pbmRlbnRTdHlsZSxcbiAgICAnaW5kZW50V2lkdGgnOiBvYmouaW5kZW50V2lkdGgsXG4gICAgJ2xpbmVFbmRpbmcnOiBvYmoubGluZUVuZGluZyxcbiAgICAnbGluZVdpZHRoJzogb2JqLmxpbmVXaWR0aCxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgT3ZlcnJpZGVMaW50ZXJDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcnJpZGVMaW50ZXJDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIExpc3Qgb2YgcnVsZXNcbiAgICpcbiAgICogQHNjaGVtYSBPdmVycmlkZUxpbnRlckNvbmZpZ3VyYXRpb24jZG9tYWluc1xuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWlucz86IHsgW2tleTogc3RyaW5nXTogUnVsZURvbWFpblZhbHVlIH07XG5cbiAgLyoqXG4gICAqIGlmIGBmYWxzZWAsIGl0IGRpc2FibGVzIHRoZSBmZWF0dXJlIGFuZCB0aGUgbGludGVyIHdvbid0IGJlIGV4ZWN1dGVkLiBgdHJ1ZWAgYnkgZGVmYXVsdFxuICAgKlxuICAgKiBAc2NoZW1hIE92ZXJyaWRlTGludGVyQ29uZmlndXJhdGlvbiNlbmFibGVkXG4gICAqL1xuICByZWFkb25seSBlbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTGlzdCBvZiBydWxlc1xuICAgKlxuICAgKiBAc2NoZW1hIE92ZXJyaWRlTGludGVyQ29uZmlndXJhdGlvbiNydWxlc1xuICAgKi9cbiAgcmVhZG9ubHkgcnVsZXM/OiBSdWxlcztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnT3ZlcnJpZGVMaW50ZXJDb25maWd1cmF0aW9uJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fT3ZlcnJpZGVMaW50ZXJDb25maWd1cmF0aW9uKG9iajogT3ZlcnJpZGVMaW50ZXJDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnZG9tYWlucyc6ICgob2JqLmRvbWFpbnMpID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKG9iai5kb21haW5zKS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pKSxcbiAgICAnZW5hYmxlZCc6IG9iai5lbmFibGVkLFxuICAgICdydWxlcyc6IHRvSnNvbl9SdWxlcyhvYmoucnVsZXMpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogSW50ZWdyYXRpb24gd2l0aCB0aGUgZ2l0IGNsaWVudCBhcyBWQ1NcbiAqXG4gKiBAc2NoZW1hIFZjc0NsaWVudEtpbmRcbiAqL1xuZXhwb3J0IGVudW0gVmNzQ2xpZW50S2luZCB7XG4gIC8qKiBnaXQgKi9cbiAgR0lUID0gXCJnaXRcIixcbn1cblxuLyoqXG4gKiBBIGxpc3Qgb2YgcnVsZXMgdGhhdCBiZWxvbmcgdG8gdGhpcyBncm91cFxuICpcbiAqIEBzY2hlbWEgU291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlIHtcbiAgLyoqXG4gICAqIFByb3ZpZGVzIGEgY29kZSBhY3Rpb24gdG8gc29ydCB0aGUgaW1wb3J0cyBhbmQgZXhwb3J0cyBpbiB0aGUgZmlsZSB1c2luZyBhIGJ1aWx0LWluIG9yIGN1c3RvbSBvcmRlci5cbiAgICpcbiAgICogQHNjaGVtYSBTb3VyY2Ujb3JnYW5pemVJbXBvcnRzXG4gICAqL1xuICByZWFkb25seSBvcmdhbml6ZUltcG9ydHM/OiBhbnk7XG5cbiAgLyoqXG4gICAqIEl0IGVuYWJsZXMgdGhlIHJlY29tbWVuZGVkIHJ1bGVzIGZvciB0aGlzIGdyb3VwXG4gICAqXG4gICAqIEBzY2hlbWEgU291cmNlI3JlY29tbWVuZGVkXG4gICAqL1xuICByZWFkb25seSByZWNvbW1lbmRlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuZm9yY2UgYXR0cmlidXRlIHNvcnRpbmcgaW4gSlNYIGVsZW1lbnRzLlxuICAgKlxuICAgKiBAc2NoZW1hIFNvdXJjZSN1c2VTb3J0ZWRBdHRyaWJ1dGVzXG4gICAqL1xuICByZWFkb25seSB1c2VTb3J0ZWRBdHRyaWJ1dGVzPzogYW55O1xuXG4gIC8qKlxuICAgKiBTb3J0cyB0aGUga2V5cyBvZiBhIEpTT04gb2JqZWN0IGluIG5hdHVyYWwgb3JkZXJcbiAgICpcbiAgICogQHNjaGVtYSBTb3VyY2UjdXNlU29ydGVkS2V5c1xuICAgKi9cbiAgcmVhZG9ubHkgdXNlU29ydGVkS2V5cz86IGFueTtcblxuICAvKipcbiAgICogRW5mb3JjZSBvcmRlcmluZyBvZiBDU1MgcHJvcGVydGllcyBhbmQgbmVzdGVkIHJ1bGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFNvdXJjZSN1c2VTb3J0ZWRQcm9wZXJ0aWVzXG4gICAqL1xuICByZWFkb25seSB1c2VTb3J0ZWRQcm9wZXJ0aWVzPzogYW55O1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdTb3VyY2UnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9Tb3VyY2Uob2JqOiBTb3VyY2UgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdvcmdhbml6ZUltcG9ydHMnOiBvYmoub3JnYW5pemVJbXBvcnRzLFxuICAgICdyZWNvbW1lbmRlZCc6IG9iai5yZWNvbW1lbmRlZCxcbiAgICAndXNlU29ydGVkQXR0cmlidXRlcyc6IG9iai51c2VTb3J0ZWRBdHRyaWJ1dGVzLFxuICAgICd1c2VTb3J0ZWRLZXlzJzogb2JqLnVzZVNvcnRlZEtleXMsXG4gICAgJ3VzZVNvcnRlZFByb3BlcnRpZXMnOiBvYmoudXNlU29ydGVkUHJvcGVydGllcyxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgUXVvdGVTdHlsZVxuICovXG5leHBvcnQgZW51bSBRdW90ZVN0eWxlIHtcbiAgLyoqIGRvdWJsZSAqL1xuICBET1VCTEUgPSBcImRvdWJsZVwiLFxuICAvKiogc2luZ2xlICovXG4gIFNJTkdMRSA9IFwic2luZ2xlXCIsXG59XG5cbi8qKlxuICogQ29udHJvbHMgd2hldGhlciB2b2lkLWVsZW1lbnRzIHNob3VsZCBiZSBzZWxmIGNsb3NlZFxuICpcbiAqIEBzY2hlbWEgU2VsZkNsb3NlVm9pZEVsZW1lbnRzXG4gKi9cbmV4cG9ydCBlbnVtIFNlbGZDbG9zZVZvaWRFbGVtZW50cyB7XG4gIC8qKiBuZXZlciAqL1xuICBORVZFUiA9IFwibmV2ZXJcIixcbiAgLyoqIGFsd2F5cyAqL1xuICBBTFdBWVMgPSBcImFsd2F5c1wiLFxufVxuXG4vKipcbiAqIFdoaXRlc3BhY2Ugc2Vuc2l0aXZpdHkgZm9yIEhUTUwgZm9ybWF0dGluZy5cbiAqXG4gKiBUaGUgZm9sbG93aW5nIHR3byBjYXNlcyB3b24ndCBwcm9kdWNlIHRoZSBzYW1lIG91dHB1dDpcbiAqXG4gKiB8ICAgICAgICAgICAgICAgIHwgICAgICBodG1sICAgICAgfCAgICBvdXRwdXQgICAgfCB8IC0tLS0tLS0tLS0tLS0tIHwgOi0tLS0tLS0tLS0tLTogfCA6LS0tLS0tLS0tLTogfCB8IHdpdGggc3BhY2VzICAgIHwgYDE8Yj4gMiA8L2I+M2AgfCAxPGI+IDIgPC9iPjMgfCB8IHdpdGhvdXQgc3BhY2VzIHwgIGAxPGI+MjwvYj4zYCAgfCAgMTxiPjI8L2I+MyAgfFxuICpcbiAqIFRoaXMgaGFwcGVucyBiZWNhdXNlIHdoaXRlc3BhY2UgaXMgc2lnbmlmaWNhbnQgaW4gaW5saW5lIGVsZW1lbnRzLlxuICpcbiAqIEFzIGEgY29uc2VxdWVuY2Ugb2YgdGhpcywgdGhlIGZvcm1hdHRlciBtdXN0IGZvcm1hdCBibG9ja3MgdGhhdCBsb29rIGxpa2UgdGhpcyAoYXNzdW1lIGEgc21hbGwgbGluZSB3aWR0aCwgPDIwKTogYGBgaHRtbCA8c3Bhbj5yZWFsbHkgbG9uZyBjb250ZW50PC9zcGFuPiBgYGAgYXMgdGhpcywgd2hlcmUgdGhlIGNvbnRlbnQgaHVncyB0aGUgdGFnczogYGBgaHRtbCA8c3BhbiA+cmVhbGx5IGxvbmcgY29udGVudDwvc3BhbiA+IGBgYFxuICpcbiAqIE5vdGUgdGhhdCB0aGlzIGlzIG9ubHkgbmVjZXNzYXJ5IGZvciBpbmxpbmUgZWxlbWVudHMuIEJsb2NrIGVsZW1lbnRzIGRvIG5vdCBoYXZlIHRoaXMgcmVzdHJpY3Rpb24uXG4gKlxuICogQHNjaGVtYSBXaGl0ZXNwYWNlU2Vuc2l0aXZpdHlcbiAqL1xuZXhwb3J0IGVudW0gV2hpdGVzcGFjZVNlbnNpdGl2aXR5IHtcbiAgLyoqIGNzcyAqL1xuICBDU1MgPSBcImNzc1wiLFxuICAvKiogc3RyaWN0ICovXG4gIFNUUklDVCA9IFwic3RyaWN0XCIsXG4gIC8qKiBpZ25vcmUgKi9cbiAgSUdOT1JFID0gXCJpZ25vcmVcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIEFycm93UGFyZW50aGVzZXNcbiAqL1xuZXhwb3J0IGVudW0gQXJyb3dQYXJlbnRoZXNlcyB7XG4gIC8qKiBhbHdheXMgKi9cbiAgQUxXQVlTID0gXCJhbHdheXNcIixcbiAgLyoqIGFzTmVlZGVkICovXG4gIEFTX05FRURFRCA9IFwiYXNOZWVkZWRcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIFF1b3RlUHJvcGVydGllc1xuICovXG5leHBvcnQgZW51bSBRdW90ZVByb3BlcnRpZXMge1xuICAvKiogYXNOZWVkZWQgKi9cbiAgQVNfTkVFREVEID0gXCJhc05lZWRlZFwiLFxuICAvKiogcHJlc2VydmUgKi9cbiAgUFJFU0VSVkUgPSBcInByZXNlcnZlXCIsXG59XG5cbi8qKlxuICogQHNjaGVtYSBTZW1pY29sb25zXG4gKi9cbmV4cG9ydCBlbnVtIFNlbWljb2xvbnMge1xuICAvKiogYWx3YXlzICovXG4gIEFMV0FZUyA9IFwiYWx3YXlzXCIsXG4gIC8qKiBhc05lZWRlZCAqL1xuICBBU19ORUVERUQgPSBcImFzTmVlZGVkXCIsXG59XG5cbi8qKlxuICogUHJpbnQgdHJhaWxpbmcgY29tbWFzIHdoZXJldmVyIHBvc3NpYmxlIGluIG11bHRpLWxpbmUgY29tbWEtc2VwYXJhdGVkIHN5bnRhY3RpYyBzdHJ1Y3R1cmVzLlxuICpcbiAqIEBzY2hlbWEgVHJhaWxpbmdDb21tYXNcbiAqL1xuZXhwb3J0IGVudW0gVHJhaWxpbmdDb21tYXMge1xuICAvKiogYWxsICovXG4gIEFMTCA9IFwiYWxsXCIsXG4gIC8qKiBlczUgKi9cbiAgRVM1ID0gXCJlczVcIixcbiAgLyoqIG5vbmUgKi9cbiAgTk9ORSA9IFwibm9uZVwiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgVHJhaWxpbmdDb21tYXMyXG4gKi9cbmV4cG9ydCBlbnVtIFRyYWlsaW5nQ29tbWFzMiB7XG4gIC8qKiBub25lICovXG4gIE5PTkUgPSBcIm5vbmVcIixcbiAgLyoqIGFsbCAqL1xuICBBTEwgPSBcImFsbFwiLFxufVxuIl19
|