projen 0.104.2 → 0.104.4
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 +124 -104
- package/lib/ai-instructions.js +2 -2
- package/lib/awscdk/auto-discover.js +6 -6
- 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 +1 -1
- 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 +3 -3
- package/lib/awscdk/cdk-tasks.js +1 -1
- package/lib/awscdk/integration-test.js +1 -1
- package/lib/awscdk/internal.d.ts +1 -0
- package/lib/awscdk/lambda-extension.js +1 -1
- package/lib/awscdk/lambda-function.js +2 -2
- package/lib/awscdk/private/feature-flags-v2.const.d.ts +2 -1
- package/lib/awscdk/private/feature-flags-v2.const.js +4 -3
- 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-build.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/cdktn/cdktn-app-ts.js +1 -1
- package/lib/cdktn/cdktn-config.js +1 -1
- package/lib/cdktn/cdktn-construct.js +1 -1
- package/lib/cdktn/cdktn-deps.js +1 -1
- package/lib/cdktn/cdktn-tasks.js +1 -1
- package/lib/circleci/circleci.js +1 -1
- package/lib/component.js +2 -2
- 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/actions.const.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/dependency-review.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 +1 -1
- package/lib/github/pull-request-lint.js +1 -1
- package/lib/github/pull-request-source.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 +1 -1
- package/lib/github/workflow-jobs.js +1 -1
- package/lib/github/workflow-steps.js +1 -1
- 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.js +1 -1
- package/lib/javascript/bundler.js +24 -2
- 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-config-file.js +1 -1
- package/lib/javascript/node-native-test-runner.js +2 -2
- package/lib/javascript/node-package.js +1 -1
- package/lib/javascript/node-project.js +1 -1
- package/lib/javascript/npm-config.js +1 -1
- package/lib/javascript/pnpm-workspace-config.js +2 -2
- package/lib/javascript/pnpm-workspace.js +1 -1
- package/lib/javascript/prettier.js +1 -1
- package/lib/javascript/projenrc.js +1 -1
- package/lib/javascript/typescript-config.d.ts +8 -0
- package/lib/javascript/typescript-config.js +3 -3
- 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/polaris/coverity-go.js +1 -1
- package/lib/polaris/coverity-java.js +1 -1
- package/lib/polaris/coverity-javascript.js +1 -1
- package/lib/polaris/coverity.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 +1 -1
- package/lib/projenrc.js +1 -1
- package/lib/properties-file.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/pyproject-toml-file.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/uv-config.js +1 -1
- package/lib/python/uv.js +1 -1
- package/lib/python/venv.js +1 -1
- package/lib/readme.js +1 -1
- package/lib/release/publisher.js +1 -1
- package/lib/release/release-trigger.js +1 -1
- package/lib/release/release.js +1 -1
- package/lib/renovatebot.js +1 -1
- package/lib/run-task.cjs +2 -2
- package/lib/sample-file.js +2 -2
- package/lib/script-runner.js +1 -1
- package/lib/sonarqube/javascript.js +1 -1
- package/lib/sonarqube/rust.js +1 -1
- package/lib/sonarqube/sonarqube.js +1 -1
- package/lib/sonarqube/typescript.js +1 -1
- package/lib/source-code.js +1 -1
- package/lib/task-shell.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 +1 -1
- package/lib/typescript/typescript-runner.js +1 -1
- package/lib/typescript/typescript-typedoc.js +1 -1
- package/lib/typescript/typescript.js +5 -5
- 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 +3 -3
- package/lib/web/tailwind.js +1 -1
- package/lib/xmlfile.js +1 -1
- package/lib/yaml.js +1 -1
- package/package.json +2 -2
|
@@ -170,7 +170,7 @@ var TypeScriptJsxMode;
|
|
|
170
170
|
* Extending from more than one base config file requires TypeScript 5.0+.
|
|
171
171
|
*/
|
|
172
172
|
class TypescriptConfigExtends {
|
|
173
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.TypescriptConfigExtends", version: "0.104.
|
|
173
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.TypescriptConfigExtends", version: "0.104.4" };
|
|
174
174
|
/**
|
|
175
175
|
* Factory for creation from array of file paths.
|
|
176
176
|
*
|
|
@@ -204,7 +204,7 @@ class TypescriptConfigExtends {
|
|
|
204
204
|
}
|
|
205
205
|
exports.TypescriptConfigExtends = TypescriptConfigExtends;
|
|
206
206
|
class TypescriptConfig extends component_1.Component {
|
|
207
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.TypescriptConfig", version: "0.104.
|
|
207
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.TypescriptConfig", version: "0.104.4" };
|
|
208
208
|
_extends;
|
|
209
209
|
compilerOptions;
|
|
210
210
|
includeSet;
|
|
@@ -371,4 +371,4 @@ class TypescriptConfig extends component_1.Component {
|
|
|
371
371
|
}
|
|
372
372
|
}
|
|
373
373
|
exports.TypescriptConfig = TypescriptConfig;
|
|
374
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamF2YXNjcmlwdC90eXBlc2NyaXB0LWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTZCO0FBQzdCLCtDQUFpQztBQUNqQyx3QkFBZ0M7QUFDaEMsNENBQXlDO0FBQ3pDLGtDQUFtQztBQUVuQyxrQ0FBaUQ7QUF1Q2pEOzs7O0dBSUc7QUFDSCxJQUFZLDBCQTZDWDtBQTdDRCxXQUFZLDBCQUEwQjtJQUNwQzs7OztPQUlHO0lBQ0gsaURBQW1CLENBQUE7SUFFbkI7Ozs7T0FJRztJQUNILDJDQUFhLENBQUE7SUFFYjs7Ozs7OztPQU9HO0lBQ0gsK0NBQWlCLENBQUE7SUFFakI7Ozs7T0FJRztJQUNILCtDQUFpQixDQUFBO0lBRWpCOzs7O09BSUc7SUFDSCxvREFBc0IsQ0FBQTtJQUV0Qjs7OztPQUlHO0lBQ0gsaURBQW1CLENBQUE7QUFDckIsQ0FBQyxFQTdDVywwQkFBMEIsMENBQTFCLDBCQUEwQixRQTZDckM7QUFFRDs7OztHQUlHO0FBQ0gsSUFBWSx5QkFxQlg7QUFyQkQsV0FBWSx5QkFBeUI7SUFDbkM7Ozs7T0FJRztJQUNILDBDQUFhLENBQUE7SUFFYjs7OztPQUlHO0lBQ0gsOENBQWlCLENBQUE7SUFFakI7Ozs7T0FJRztJQUNILDRDQUFlLENBQUE7QUFDakIsQ0FBQyxFQXJCVyx5QkFBeUIseUNBQXpCLHlCQUF5QixRQXFCcEM7QUFFRDs7OztHQUlHO0FBQ0gsSUFBWSxnQ0FnQlg7QUFoQkQsV0FBWSxnQ0FBZ0M7SUFDMUM7O09BRUc7SUFDSCxxREFBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILHlEQUFxQixDQUFBO0lBRXJCOzs7T0FHRztJQUNILG1EQUFlLENBQUE7QUFDakIsQ0FBQyxFQWhCVyxnQ0FBZ0MsZ0RBQWhDLGdDQUFnQyxRQWdCM0M7QUFF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LENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQzs7QUFwTUgsNENBcU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gXCJzZW12ZXJcIjtcbmltcG9ydCB7IE5vZGVQcm9qZWN0IH0gZnJvbSBcIi5cIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7IEpzb25GaWxlIH0gZnJvbSBcIi4uL2pzb25cIjtcbmltcG9ydCB0eXBlIHsgUHJvamVjdCB9IGZyb20gXCIuLi9wcm9qZWN0XCI7XG5pbXBvcnQgeyBub3JtYWxpemVQZXJzaXN0ZWRQYXRoIH0gZnJvbSBcIi4uL3V0aWxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBUeXBlc2NyaXB0Q29uZmlnT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBAZGVmYXVsdCBcInRzY29uZmlnLmpzb25cIlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJhc2UgYHRzY29uZmlnLmpzb25gIGNvbmZpZ3VyYXRpb24ocykgdG8gaW5oZXJpdCBmcm9tLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBNdXN0IHByb3ZpZGUgZWl0aGVyIGBleHRlbmRzYCBvciBgY29tcGlsZXJPcHRpb25zYCAob3IgYm90aCkuXG4gICAqL1xuICByZWFkb25seSBleHRlbmRzPzogVHlwZXNjcmlwdENvbmZpZ0V4dGVuZHM7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIGxpc3Qgb2YgZ2xvYiBwYXR0ZXJucyB0aGF0IG1hdGNoIFR5cGVTY3JpcHQgZmlsZXMgdG8gYmUgaW5jbHVkZWQgaW4gY29tcGlsYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYWxsIC50cyBmaWxlcyByZWN1cnNpdmVseVxuICAgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXJzIHJlc3VsdHMgZnJvbSB0aGUgXCJpbmNsdWRlXCIgb3B0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vZGVfbW9kdWxlcyBpcyBleGNsdWRlZCBieSBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBleGNsdWRlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIENvbXBpbGVyIG9wdGlvbnMgdG8gdXNlLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBNdXN0IHByb3ZpZGUgZWl0aGVyIGBleHRlbmRzYCBvciBgY29tcGlsZXJPcHRpb25zYCAob3IgYm90aCkuXG4gICAqL1xuICByZWFkb25seSBjb21waWxlck9wdGlvbnM/OiBUeXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgaG93IG1vZHVsZXMgZ2V0IHJlc29sdmVkLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svbW9kdWxlLXJlc29sdXRpb24uaHRtbFxuICovXG5leHBvcnQgZW51bSBUeXBlU2NyaXB0TW9kdWxlUmVzb2x1dGlvbiB7XG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0J3MgZm9ybWVyIGRlZmF1bHQgcmVzb2x1dGlvbiBzdHJhdGVneS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9tb2R1bGUtcmVzb2x1dGlvbi5odG1sI2NsYXNzaWNcbiAgICovXG4gIENMQVNTSUMgPSBcImNsYXNzaWNcIixcblxuICAvKipcbiAgICogUmVzb2x1dGlvbiBzdHJhdGVneSB3aGljaCBhdHRlbXB0cyB0byBtaW1pYyB0aGUgTm9kZS5qcyBtb2R1bGUgcmVzb2x1dGlvbiBzdHJhdGVneSBhdCBydW50aW1lLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL21vZHVsZS1yZXNvbHV0aW9uLmh0bWwjbm9kZVxuICAgKi9cbiAgTk9ERSA9IFwibm9kZVwiLFxuXG4gIC8qKlxuICAgKiBgLS1tb2R1bGVSZXNvbHV0aW9uIG5vZGVgIHdhcyByZW5hbWVkIHRvIGBub2RlMTBgXG4gICAqIChrZWVwaW5nIGBub2RlYCBhcyBhbiBhbGlhcyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkgaW4gVHlwZVNjcmlwdCA1LjAuXG4gICAqIEl0IHJlZmxlY3RzIHRoZSBDb21tb25KUyBtb2R1bGUgcmVzb2x1dGlvbiBhbGdvcml0aG0gYXMgaXQgZXhpc3RlZCBpbiBOb2RlLmpzIHZlcnNpb25zXG4gICAqIGVhcmxpZXIgdGhhbiB2MTIuIEl0IHNob3VsZCBubyBsb25nZXIgYmUgdXNlZC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9tb2R1bGVzL3JlZmVyZW5jZS5odG1sI25vZGUxMC1mb3JtZXJseS1rbm93bi1hcy1ub2RlXG4gICAqL1xuICBOT0RFMTAgPSBcIm5vZGUxMFwiLFxuXG4gIC8qKlxuICAgKiBOb2RlLmpz4oCZIEVDTUFTY3JpcHQgTW9kdWxlIFN1cHBvcnQgZnJvbSBUeXBlU2NyaXB0IDQuNyBvbndhcmRzXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI21vZHVsZVJlc29sdXRpb25cbiAgICovXG4gIE5PREUxNiA9IFwibm9kZTE2XCIsXG5cbiAgLyoqXG4gICAqIE5vZGUuanPigJkgRUNNQVNjcmlwdCBNb2R1bGUgU3VwcG9ydCBmcm9tIFR5cGVTY3JpcHQgNC43IG9ud2FyZHNcbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjbW9kdWxlUmVzb2x1dGlvblxuICAgKi9cbiAgTk9ERV9ORVhUID0gXCJub2RlbmV4dFwiLFxuXG4gIC8qKlxuICAgKiBSZXNvbHV0aW9uIHN0cmF0ZWd5IHdoaWNoIGF0dGVtcHRzIHRvIG1pbWljIHJlc29sdXRpb24gcGF0dGVybnMgb2YgbW9kZXJuIGJ1bmRsZXJzOyBmcm9tIFR5cGVTY3JpcHQgNS4wIG9ud2FyZHMuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI21vZHVsZVJlc29sdXRpb25cbiAgICovXG4gIEJVTkRMRVIgPSBcImJ1bmRsZXJcIixcbn1cblxuLyoqXG4gKiBUaGlzIHNldHRpbmcgY29udHJvbHMgaG93IFR5cGVTY3JpcHQgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgZmlsZSBpcyBhIHNjcmlwdCBvciBhIG1vZHVsZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL21vZHVsZXMvdGhlb3J5Lmh0bWwjc2NyaXB0cy1hbmQtbW9kdWxlcy1pbi1qYXZhc2NyaXB0XG4gKi9cbmV4cG9ydCBlbnVtIFR5cGVTY3JpcHRNb2R1bGVEZXRlY3Rpb24ge1xuICAvKipcbiAgICogVHlwZVNjcmlwdCB3aWxsIG5vdCBvbmx5IGxvb2sgZm9yIGltcG9ydCBhbmQgZXhwb3J0IHN0YXRlbWVudHMsIGJ1dCBpdCB3aWxsIGFsc28gY2hlY2sgd2hldGhlciB0aGUgXCJ0eXBlXCIgZmllbGQgaW4gYSBwYWNrYWdlLmpzb24gaXMgc2V0IHRvIFwibW9kdWxlXCIgd2hlbiBydW5uaW5nIHdpdGggbW9kdWxlOiBub2RlbmV4dCBvciBub2RlMTYsIGFuZCBjaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50IGZpbGUgaXMgYSBKU1ggZmlsZSB3aGVuIHJ1bm5pbmcgdW5kZXIganN4OiByZWFjdC1qc3guXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnLyNtb2R1bGVEZXRlY3Rpb25cbiAgICovXG4gIEFVVE8gPSBcImF1dG9cIixcblxuICAvKipcbiAgICogVGhlIHNhbWUgYmVoYXZpb3IgYXMgNC42IGFuZCBwcmlvciwgdXNpbmdzIGltcG9ydCBhbmQgZXhwb3J0IHN0YXRlbWVudHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBmaWxlIGlzIGEgbW9kdWxlLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZy8jbW9kdWxlRGV0ZWN0aW9uXG4gICAqL1xuICBMRUdBQ1kgPSBcImxlZ2FjeVwiLFxuXG4gIC8qKlxuICAgKiBFbnN1cmVzIHRoYXQgZXZlcnkgbm9uLWRlY2xhcmF0aW9uIGZpbGUgaXMgdHJlYXRlZCBhcyBhIG1vZHVsZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcvI21vZHVsZURldGVjdGlvblxuICAgKi9cbiAgRk9SQ0UgPSBcImZvcmNlXCIsXG59XG5cbi8qKlxuICogVGhpcyBmbGFnIGNvbnRyb2xzIGhvdyBgaW1wb3J0YCB3b3JrcywgdGhlcmUgYXJlIDMgZGlmZmVyZW50IG9wdGlvbnMuXG4gKlxuICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjaW1wb3J0c05vdFVzZWRBc1ZhbHVlc1xuICovXG5leHBvcnQgZW51bSBUeXBlU2NyaXB0SW1wb3J0c05vdFVzZWRBc1ZhbHVlcyB7XG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBiZWhhdmlvciBvZiBkcm9wcGluZyBgaW1wb3J0YCBzdGF0ZW1lbnRzIHdoaWNoIG9ubHkgcmVmZXJlbmNlIHR5cGVzLlxuICAgKi9cbiAgUkVNT1ZFID0gXCJyZW1vdmVcIixcblxuICAvKipcbiAgICogUHJlc2VydmVzIGFsbCBgaW1wb3J0YCBzdGF0ZW1lbnRzIHdob3NlIHZhbHVlcyBvciB0eXBlcyBhcmUgbmV2ZXIgdXNlZC4gVGhpcyBjYW4gY2F1c2UgaW1wb3J0cy9zaWRlLWVmZmVjdHMgdG8gYmUgcHJlc2VydmVkLlxuICAgKi9cbiAgUFJFU0VSVkUgPSBcInByZXNlcnZlXCIsXG5cbiAgLyoqXG4gICAqIFRoaXMgcHJlc2VydmVzIGFsbCBpbXBvcnRzICh0aGUgc2FtZSBhcyB0aGUgcHJlc2VydmUgb3B0aW9uKSwgYnV0IHdpbGwgZXJyb3Igd2hlbiBhIHZhbHVlIGltcG9ydCBpcyBvbmx5IHVzZWQgYXMgYSB0eXBlLlxuICAgKiBUaGlzIG1pZ2h0IGJlIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBlbnN1cmUgbm8gdmFsdWVzIGFyZSBiZWluZyBhY2NpZGVudGFsbHkgaW1wb3J0ZWQsIGJ1dCBzdGlsbCBtYWtlIHNpZGUtZWZmZWN0IGltcG9ydHMgZXhwbGljaXQuXG4gICAqL1xuICBFUlJPUiA9IFwiZXJyb3JcIixcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIGhvdyBKU1ggc2hvdWxkIGdldCB0cmFuc2Zvcm1lZCBpbnRvIHZhbGlkIEphdmFTY3JpcHQuXG4gKlxuICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9qc3guaHRtbFxuICovXG5leHBvcnQgZW51bSBUeXBlU2NyaXB0SnN4TW9kZSB7XG4gIC8qKlxuICAgKiBLZWVwcyB0aGUgSlNYIGFzIHBhcnQgb2YgdGhlIG91dHB1dCB0byBiZSBmdXJ0aGVyIGNvbnN1bWVkIGJ5IGFub3RoZXIgdHJhbnNmb3JtIHN0ZXAgKGUuZy4gQmFiZWwpLlxuICAgKi9cbiAgUFJFU0VSVkUgPSBcInByZXNlcnZlXCIsXG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIEpTWCBzeW50YXggaW50byBSZWFjdC5jcmVhdGVFbGVtZW50LCBkb2VzIG5vdCBuZWVkIHRvIGdvIHRocm91Z2ggYSBKU1ggdHJhbnNmb3JtYXRpb24gYmVmb3JlIHVzZSwgYW5kIHRoZSBvdXRwdXQgd2lsbCBoYXZlIGEgLmpzIGZpbGUgZXh0ZW5zaW9uLlxuICAgKi9cbiAgUkVBQ1QgPSBcInJlYWN0XCIsXG5cbiAgLyoqXG4gICAqIEtlZXBzIGFsbCBKU1ggbGlrZSAncHJlc2VydmUnIG1vZGUsIGJ1dCBvdXRwdXQgd2lsbCBoYXZlIGEgLmpzIGV4dGVuc2lvbi5cbiAgICovXG4gIFJFQUNUX05BVElWRSA9IFwicmVhY3QtbmF0aXZlXCIsXG5cbiAgLyoqXG4gICAqIFBhc3NlcyBga2V5YCBzZXBhcmF0ZWx5IGZyb20gcHJvcHMgYW5kIGFsd2F5cyBwYXNzZXMgYGNoaWxkcmVuYCBhcyBwcm9wcyAoc2luY2UgUmVhY3QgMTcpLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL3JlbGVhc2Utbm90ZXMvdHlwZXNjcmlwdC00LTEuaHRtbCNyZWFjdC0xNy1qc3gtZmFjdG9yaWVzXG4gICAqL1xuICBSRUFDVF9KU1ggPSBcInJlYWN0LWpzeFwiLFxuXG4gIC8qKlxuICAgKiBTYW1lIGFzIGBSRUFDVF9KU1hgIHdpdGggYWRkaXRpb25hbCBkZWJ1ZyBkYXRhLlxuICAgKi9cbiAgUkVBQ1RfSlNYREVWID0gXCJyZWFjdC1qc3hkZXZcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFsbG93IEphdmFTY3JpcHQgZmlsZXMgdG8gYmUgY29tcGlsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhbGxvd0pzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWxsb3dzIFR5cGVTY3JpcHQgZmlsZXMgdG8gaW1wb3J0IGVhY2ggb3RoZXIgd2l0aCBUeXBlU2NyaXB0LXNwZWNpZmljIGV4dGVuc2lvbnMgKGAudHNgLCBgLm10c2AsIGAudHN4YCkuXG4gICAqIFJlcXVpcmVzIGBub0VtaXRgIG9yIGBlbWl0RGVjbGFyYXRpb25Pbmx5YC5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBhbGxvd0ltcG9ydGluZ1RzRXh0ZW5zaW9ucz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFN1cHByZXNzIGFyYml0cmFyeSBleHRlbnNpb24gaW1wb3J0IGVycm9ycyB3aXRoIHRoZSBhc3N1bXB0aW9uIHRoYXQgYSBidW5kbGVyIHdpbGwgYmUgaGFuZGxpbmcgaXQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2FsbG93QXJiaXRyYXJ5RXh0ZW5zaW9uc1xuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93QXJiaXRyYXJ5RXh0ZW5zaW9ucz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNpbGVuY2UgZGVwcmVjYXRpb24gd2FybmluZ3MgZm9yIG9wdGlvbnMgc2NoZWR1bGVkIGZvciByZW1vdmFsIGluIGEgZnV0dXJlXG4gICAqIFR5cGVTY3JpcHQgcmVsZWFzZSAoZm9yIGV4YW1wbGUgYG1vZHVsZVJlc29sdXRpb246IFwibm9kZTEwXCJgLCB3aGljaCBiZWNhbWVcbiAgICogYW4gZXJyb3IgaW4gVHlwZVNjcmlwdCA2LjApLlxuICAgKlxuICAgKiBTZXQgdG8gdGhlIFR5cGVTY3JpcHQgdmVyc2lvbiB0aGF0IGludHJvZHVjZWQgdGhlIGRlcHJlY2F0aW9uLCBlLmcuIGBcIjYuMFwiYC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcvI2lnbm9yZURlcHJlY2F0aW9uc1xuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZURlcHJlY2F0aW9ucz86IHN0cmluZztcbiAgLyoqXG4gICAqIEVuc3VyZXMgdGhhdCB5b3VyIGZpbGVzIGFyZSBwYXJzZWQgaW4gdGhlIEVDTUFTY3JpcHQgc3RyaWN0IG1vZGUsIGFuZCBlbWl0IOKAnHVzZSBzdHJpY3TigJ1cbiAgICogZm9yIGVhY2ggc291cmNlIGZpbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGFsd2F5c1N0cmljdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9mZmVycyBhIHdheSB0byBjb25maWd1cmUgdGhlIHJvb3QgZGlyZWN0b3J5IGZvciB3aGVyZSBkZWNsYXJhdGlvbiBmaWxlcyBhcmUgZW1pdHRlZC5cbiAgICpcbiAgICovXG4gIHJlYWRvbmx5IGRlY2xhcmF0aW9uRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUbyBiZSBzcGVjaWZpZWQgYWxvbmcgd2l0aCB0aGUgYWJvdmVcbiAgICpcbiAgICovXG4gIHJlYWRvbmx5IGRlY2xhcmF0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgc291cmNlIG1hcCBmb3IgLmQudHMgZmlsZXMgd2hpY2ggbWFwIGJhY2sgdG8gdGhlIG9yaWdpbmFsIC50cyBzb3VyY2UgZmlsZS5cbiAgICogVGhpcyB3aWxsIGFsbG93IGVkaXRvcnMgc3VjaCBhcyBWUyBDb2RlIHRvIGdvIHRvIHRoZSBvcmlnaW5hbCAudHMgZmlsZSB3aGVuIHVzaW5nIGZlYXR1cmVzIGxpa2UgR28gdG8gRGVmaW5pdGlvbi5cbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2RlY2xhcmF0aW9uTWFwfVxuICAgKi9cbiAgcmVhZG9ubHkgZGVjbGFyYXRpb25NYXA/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEb3dubGV2ZWxpbmcgaXMgVHlwZVNjcmlwdOKAmXMgdGVybSBmb3IgdHJhbnNwaWxpbmcgdG8gYW4gb2xkZXIgdmVyc2lvbiBvZiBKYXZhU2NyaXB0LlxuICAgKiBUaGlzIGZsYWcgaXMgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIGEgbW9yZSBhY2N1cmF0ZSBpbXBsZW1lbnRhdGlvbiBvZiBob3cgbW9kZXJuIEphdmFTY3JpcHQgaXRlcmF0ZXMgdGhyb3VnaCBuZXcgY29uY2VwdHMgaW4gb2xkZXIgSmF2YVNjcmlwdCBydW50aW1lcy5cbiAgICpcbiAgICogRUNNQVNjcmlwdCA2IGFkZGVkIHNldmVyYWwgbmV3IGl0ZXJhdGlvbiBwcmltaXRpdmVzOiB0aGUgZm9yIC8gb2YgbG9vcCAoZm9yIChlbCBvZiBhcnIpKSwgQXJyYXkgc3ByZWFkIChbYSwgLi4uYl0pLCBhcmd1bWVudCBzcHJlYWQgKGZuKC4uLmFyZ3MpKSwgYW5kIFN5bWJvbC5pdGVyYXRvci5cbiAgICogZG93bmxldmVsSXRlcmF0aW9uIGFsbG93cyBmb3IgdGhlc2UgaXRlcmF0aW9uIHByaW1pdGl2ZXMgdG8gYmUgdXNlZCBtb3JlIGFjY3VyYXRlbHkgaW4gRVM1IGVudmlyb25tZW50cyBpZiBhIFN5bWJvbC5pdGVyYXRvciBpbXBsZW1lbnRhdGlvbiBpcyBwcmVzZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgZG93bmxldmVsSXRlcmF0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTGlzdCBvZiBhZGRpdGlvbmFsIGNvbmRpdGlvbnMgdGhhdCBzaG91bGQgc3VjY2VlZCB3aGVuIFR5cGVTY3JpcHQgcmVzb2x2ZXMgZnJvbSBhbiBgZXhwb3J0c2Agb3IgYGltcG9ydHNgIGZpZWxkIG9mIGEgYHBhY2thZ2UuanNvbmAuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2N1c3RvbUNvbmRpdGlvbnNcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBjdXN0b21Db25kaXRpb25zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEVtaXQgX19pbXBvcnRTdGFyIGFuZCBfX2ltcG9ydERlZmF1bHQgaGVscGVycyBmb3IgcnVudGltZSBiYWJlbFxuICAgKiBlY29zeXN0ZW0gY29tcGF0aWJpbGl0eSBhbmQgZW5hYmxlIC0tYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0cyBmb3JcbiAgICogdHlwZXN5c3RlbSBjb21wYXRpYmlsaXR5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZXNNb2R1bGVJbnRlcm9wPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5hYmxlcyBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgZGVjb3JhdG9ycywgd2hpY2ggaXMgaW4gc3RhZ2UgMiBvZiB0aGUgVEMzOSBzdGFuZGFyZGl6YXRpb24gcHJvY2Vzcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhwZXJpbWVudGFsRGVjb3JhdG9ycz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIGRlY29yYXRvcnMsIHdoaWNoIGlzIGluIHN0YWdlIDIgb2YgdGhlIFRDMzkgc3RhbmRhcmRpemF0aW9uIHByb2Nlc3MuXG4gICAqIERlY29yYXRvcnMgYXJlIGEgbGFuZ3VhZ2UgZmVhdHVyZSB3aGljaCBoYXNu4oCZdCB5ZXQgYmVlbiBmdWxseSByYXRpZmllZCBpbnRvIHRoZSBKYXZhU2NyaXB0IHNwZWNpZmljYXRpb24uXG4gICAqIFRoaXMgbWVhbnMgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gdmVyc2lvbiBpbiBUeXBlU2NyaXB0IG1heSBkaWZmZXIgZnJvbSB0aGUgaW1wbGVtZW50YXRpb24gaW4gSmF2YVNjcmlwdCB3aGVuIGl0IGl0IGRlY2lkZWQgYnkgVEMzOS5cbiAgICogWW91IGNhbiBmaW5kIG91dCBtb3JlIGFib3V0IGRlY29yYXRvciBzdXBwb3J0IGluIFR5cGVTY3JpcHQgaW4gdGhlIGhhbmRib29rLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL2RlY29yYXRvcnMuaHRtbFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGVtaXREZWNvcmF0b3JNZXRhZGF0YT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERpc2FsbG93IGluY29uc2lzdGVudGx5LWNhc2VkIHJlZmVyZW5jZXMgdG8gdGhlIHNhbWUgZmlsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlQ29uc2lzdGVudENhc2luZ0luRmlsZU5hbWVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2ltcGxpZmllcyBUeXBlU2NyaXB0J3MgaGFuZGxpbmcgb2YgaW1wb3J0L2V4cG9ydCBgdHlwZWAgbW9kaWZpZXJzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyN2ZXJiYXRpbU1vZHVsZVN5bnRheFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHZlcmJhdGltTW9kdWxlU3ludGF4PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhpcyBmbGFnIHdvcmtzIGJlY2F1c2UgeW91IGNhbiB1c2UgYGltcG9ydCB0eXBlYCB0byBleHBsaWNpdGx5IGNyZWF0ZSBhbiBgaW1wb3J0YCBzdGF0ZW1lbnQgd2hpY2ggc2hvdWxkIG5ldmVyIGJlIGVtaXR0ZWQgaW50byBKYXZhU2NyaXB0LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBGb3IgVHlwZVNjcmlwdCA1LjArIHVzZSBgdmVyYmF0aW1Nb2R1bGVTeW50YXhgIGluc3RlYWQuXG4gICAqIFBvc2VkIGZvciBkZXByZWNhdGlvbiB1cG9uIFR5cGVTY3JpcHQgNS41LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNpbXBvcnRzTm90VXNlZEFzVmFsdWVzXG4gICAqIEBkZWZhdWx0IFwicmVtb3ZlXCJcbiAgICovXG4gIHJlYWRvbmx5IGltcG9ydHNOb3RVc2VkQXNWYWx1ZXM/OiBUeXBlU2NyaXB0SW1wb3J0c05vdFVzZWRBc1ZhbHVlcztcblxuICAvKipcbiAgICogV2hlbiBzZXQsIGluc3RlYWQgb2Ygd3JpdGluZyBvdXQgYSAuanMubWFwIGZpbGUgdG8gcHJvdmlkZSBzb3VyY2UgbWFwcyxcbiAgICogVHlwZVNjcmlwdCB3aWxsIGVtYmVkIHRoZSBzb3VyY2UgbWFwIGNvbnRlbnQgaW4gdGhlIC5qcyBmaWxlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5saW5lU291cmNlTWFwPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQsIFR5cGVTY3JpcHQgd2lsbCBpbmNsdWRlIHRoZSBvcmlnaW5hbCBjb250ZW50IG9mIHRoZSAudHMgZmlsZSBhcyBhbiBlbWJlZGRlZFxuICAgKiBzdHJpbmcgaW4gdGhlIHNvdXJjZSBtYXAuIFRoaXMgaXMgb2Z0ZW4gdXNlZnVsIGluIHRoZSBzYW1lIGNhc2VzIGFzIGlubGluZVNvdXJjZU1hcC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5saW5lU291cmNlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgdGhlIGdlbmVyYXRpb24gb2Ygc291cmNlbWFwIGZpbGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZU1hcD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGxvY2F0aW9uIHdoZXJlIGEgZGVidWdnZXIgc2hvdWxkIGxvY2F0ZSBUeXBlU2NyaXB0IGZpbGVzXG4gICAqIGluc3RlYWQgb2YgcmVsYXRpdmUgc291cmNlIGxvY2F0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VSb290Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tzIHRvIGVuc3VyZSB0aGF0IHNlcGFyYXRlIGNvbXBpbGF0aW9uIChzdWNoIGFzXG4gICAqIHdpdGggdHJhbnNwaWxlTW9kdWxlIG9yIEBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLXR5cGVzY3JpcHQpIHdvdWxkIGJlIHNhZmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpc29sYXRlZE1vZHVsZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTdXBwb3J0IEpTWCBpbiAudHN4IGZpbGVzOiBcInJlYWN0XCIsIFwicHJlc2VydmVcIiwgXCJyZWFjdC1uYXRpdmVcIiBldGMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkganN4PzogVHlwZVNjcmlwdEpzeE1vZGU7XG5cbiAgLyoqXG4gICAqIERlY2xhcmVzIHRoZSBtb2R1bGUgc3BlY2lmaWVyIHRvIGJlIHVzZWQgZm9yIGltcG9ydGluZyB0aGUganN4IGFuZCBqc3hzIGZhY3RvcnkgZnVuY3Rpb25zIHdoZW4gdXNpbmcganN4LlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGpzeEltcG9ydFNvdXJjZT86IHN0cmluZztcblxuICAvKipcbiAgICogUmVmZXJlbmNlIGZvciB0eXBlIGRlZmluaXRpb25zIC8gbGlicmFyaWVzIHRvIHVzZSAoZWcuIEVTMjAxNiwgRVM1LCBFUzIwMTgpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBbIFwiZXMyMDE4XCIgXVxuICAgKi9cbiAgcmVhZG9ubHkgbGliPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoaXMgc2V0dGluZyBjb250cm9scyBob3cgVHlwZVNjcmlwdCBkZXRlcm1pbmVzIHdoZXRoZXIgYSBmaWxlIGlzIGEgW3NjcmlwdCBvciBhIG1vZHVsZV0oaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svbW9kdWxlcy90aGVvcnkuaHRtbCNzY3JpcHRzLWFuZC1tb2R1bGVzLWluLWphdmFzY3JpcHQpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcImF1dG9cIlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlRGV0ZWN0aW9uPzogVHlwZVNjcmlwdE1vZHVsZURldGVjdGlvbjtcblxuICAvKipcbiAgICogU2V0cyB0aGUgbW9kdWxlIHN5c3RlbSBmb3IgdGhlIHByb2dyYW0uXG4gICAqIFNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9tb2R1bGVzLmh0bWwjYW1iaWVudC1tb2R1bGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIkNvbW1vbkpTXCJcbiAgICovXG4gIHJlYWRvbmx5IG1vZHVsZT86IHN0cmluZztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lIGhvdyBtb2R1bGVzIGdldCByZXNvbHZlZC4gRWl0aGVyIFwiTm9kZVwiIGZvciBOb2RlLmpzL2lvLmpzIHN0eWxlIHJlc29sdXRpb24sIG9yIFwiQ2xhc3NpY1wiLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIm5vZGVcIlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlUmVzb2x1dGlvbj86IFR5cGVTY3JpcHRNb2R1bGVSZXNvbHV0aW9uO1xuXG4gIC8qKlxuICAgKiBEbyBub3QgZW1pdCBvdXRwdXRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9FbWl0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT25seSBlbWl0IC5kLnRzIGZpbGVzOyBkbyBub3QgZW1pdCAuanMgZmlsZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbWl0RGVjbGFyYXRpb25Pbmx5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRG8gbm90IGVtaXQgY29tcGlsZXIgb3V0cHV0IGZpbGVzIGxpa2UgSmF2YVNjcmlwdCBzb3VyY2UgY29kZSwgc291cmNlLW1hcHMgb3JcbiAgICogZGVjbGFyYXRpb25zIGlmIGFueSBlcnJvcnMgd2VyZSByZXBvcnRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9FbWl0T25FcnJvcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlcG9ydCBlcnJvcnMgZm9yIGZhbGx0aHJvdWdoIGNhc2VzIGluIHN3aXRjaCBzdGF0ZW1lbnRzLiBFbnN1cmVzIHRoYXQgYW55IG5vbi1lbXB0eVxuICAgKiBjYXNlIGluc2lkZSBhIHN3aXRjaCBzdGF0ZW1lbnQgaW5jbHVkZXMgZWl0aGVyIGJyZWFrIG9yIHJldHVybi4gVGhpcyBtZWFucyB5b3Ugd29u4oCZdFxuICAgKiBhY2NpZGVudGFsbHkgc2hpcCBhIGNhc2UgZmFsbHRocm91Z2ggYnVnLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBub0ZhbGx0aHJvdWdoQ2FzZXNJblN3aXRjaD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluIHNvbWUgY2FzZXMgd2hlcmUgbm8gdHlwZSBhbm5vdGF0aW9ucyBhcmUgcHJlc2VudCwgVHlwZVNjcmlwdCB3aWxsIGZhbGwgYmFjayB0byBhXG4gICAqIHR5cGUgb2YgYW55IGZvciBhIHZhcmlhYmxlIHdoZW4gaXQgY2Fubm90IGluZmVyIHRoZSB0eXBlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBub0ltcGxpY2l0QW55PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVXNpbmcgYG5vSW1wbGljaXRPdmVycmlkZWAsIHlvdSBjYW4gZW5zdXJlIHRoYXQgc3ViLWNsYXNzZXMgbmV2ZXIgZ28gb3V0IG9mIHN5bmMgYXNcbiAgICogdGhleSBhcmUgcmVxdWlyZWQgdG8gZXhwbGljaXRseSBkZWNsYXJlIHRoYXQgdGhleSBhcmUgb3ZlcnJpZGluZyBhIG1lbWJlciB1c2luZyB0aGVcbiAgICogYG92ZXJyaWRlYCBrZXl3b3JkLiBUaGlzIGFsc28gaW1wcm92ZXMgcmVhZGFiaWxpdHkgb2YgdGhlIHByb2dyYW1tZXIncyBpbnRlbnQuXG4gICAqXG4gICAqIEF2YWlsYWJsZSB3aXRoIFR5cGVTY3JpcHQgNC4zIGFuZCBuZXdlci5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IG5vSW1wbGljaXRPdmVycmlkZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgVHlwZVNjcmlwdCB3aWxsIGNoZWNrIGFsbCBjb2RlIHBhdGhzIGluIGEgZnVuY3Rpb24gdG8gZW5zdXJlIHRoZXlcbiAgICogcmV0dXJuIGEgdmFsdWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG5vSW1wbGljaXRSZXR1cm5zPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFJhaXNlIGVycm9yIG9uIOKAmHRoaXPigJkgZXhwcmVzc2lvbnMgd2l0aCBhbiBpbXBsaWVkIOKAmGFueeKAmSB0eXBlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBub0ltcGxpY2l0VGhpcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJhaXNlIGVycm9yIG9uIHVzZSBvZiB0aGUgZG90IHN5bnRheCB0byBhY2Nlc3MgZmllbGRzIHdoaWNoIGFyZSBub3QgZGVmaW5lZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9Qcm9wZXJ0eUFjY2Vzc0Zyb21JbmRleFNpZ25hdHVyZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJhaXNlIGVycm9yIHdoZW4gYWNjZXNzaW5nIGluZGV4ZXMgb24gb2JqZWN0cyB3aXRoIHVua25vd24ga2V5cyBkZWZpbmVkIGluIGluZGV4IHNpZ25hdHVyZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG5vVW5jaGVja2VkSW5kZXhlZEFjY2Vzcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlcG9ydCBlcnJvcnMgb24gdW51c2VkIGxvY2FsIHZhcmlhYmxlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9VbnVzZWRMb2NhbHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXBvcnQgZXJyb3JzIG9uIHVudXNlZCBwYXJhbWV0ZXJzIGluIGZ1bmN0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9VbnVzZWRQYXJhbWV0ZXJzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWxsb3dzIGltcG9ydGluZyBtb2R1bGVzIHdpdGggYSDigJguanNvbuKAmSBleHRlbnNpb24sIHdoaWNoIGlzIGEgY29tbW9uIHByYWN0aWNlXG4gICAqIGluIG5vZGUgcHJvamVjdHMuIFRoaXMgaW5jbHVkZXMgZ2VuZXJhdGluZyBhIHR5cGUgZm9yIHRoZSBpbXBvcnQgYmFzZWQgb24gdGhlIHN0YXRpYyBKU09OIHNoYXBlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSByZXNvbHZlSnNvbk1vZHVsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNraXAgdHlwZSBjaGVja2luZyBvZiBhbGwgZGVjbGFyYXRpb24gZmlsZXMgKCouZC50cykuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBza2lwTGliQ2hlY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RyaWN0IGZsYWcgZW5hYmxlcyBhIHdpZGUgcmFuZ2Ugb2YgdHlwZSBjaGVja2luZyBiZWhhdmlvciB0aGF0IHJlc3VsdHMgaW4gc3Ryb25nZXIgZ3VhcmFudGVlc1xuICAgKiBvZiBwcm9ncmFtIGNvcnJlY3RuZXNzLiBUdXJuaW5nIHRoaXMgb24gaXMgZXF1aXZhbGVudCB0byBlbmFibGluZyBhbGwgb2YgdGhlIHN0cmljdCBtb2RlIGZhbWlseVxuICAgKiBvcHRpb25zLCB3aGljaCBhcmUgb3V0bGluZWQgYmVsb3cuIFlvdSBjYW4gdGhlbiB0dXJuIG9mZiBpbmRpdmlkdWFsIHN0cmljdCBtb2RlIGZhbWlseSBjaGVja3MgYXNcbiAgICogbmVlZGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzdHJpY3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHN0cmljdE51bGxDaGVja3MgaXMgZmFsc2UsIG51bGwgYW5kIHVuZGVmaW5lZCBhcmUgZWZmZWN0aXZlbHkgaWdub3JlZCBieSB0aGUgbGFuZ3VhZ2UuXG4gICAqIFRoaXMgY2FuIGxlYWQgdG8gdW5leHBlY3RlZCBlcnJvcnMgYXQgcnVudGltZS5cbiAgICogV2hlbiBzdHJpY3ROdWxsQ2hlY2tzIGlzIHRydWUsIG51bGwgYW5kIHVuZGVmaW5lZCBoYXZlIHRoZWlyIG93biBkaXN0aW5jdCB0eXBlcyBhbmQgeW914oCZbGxcbiAgICogZ2V0IGEgdHlwZSBlcnJvciBpZiB5b3UgdHJ5IHRvIHVzZSB0aGVtIHdoZXJlIGEgY29uY3JldGUgdmFsdWUgaXMgZXhwZWN0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHN0cmljdE51bGxDaGVja3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byB0cnVlLCBUeXBlU2NyaXB0IHdpbGwgcmFpc2UgYW4gZXJyb3Igd2hlbiBhIGNsYXNzIHByb3BlcnR5IHdhcyBkZWNsYXJlZCBidXRcbiAgICogbm90IHNldCBpbiB0aGUgY29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHN0cmljdFByb3BlcnR5SW5pdGlhbGl6YXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEbyBub3QgZW1pdCBkZWNsYXJhdGlvbnMgZm9yIGNvZGUgdGhhdCBoYXMgYW4gYEBpbnRlcm5hbGAgYW5ub3RhdGlvbiBpbiBpdOKAmXMgSlNEb2MgY29tbWVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RyaXBJbnRlcm5hbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEZvcmNlcyBUeXBlU2NyaXB0IHRvIGNvbnN1bHQgdGhlIGBleHBvcnRzYCBmaWVsZCBvZiBgcGFja2FnZS5qc29uYCBmaWxlcyBpZiBpdCBldmVyIHJlYWRzIGZyb20gYSBwYWNrYWdlIGluIGBub2RlX21vZHVsZXNgLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSByZXNvbHZlUGFja2FnZUpzb25FeHBvcnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRm9yY2VzIFR5cGVTY3JpcHQgdG8gY29uc3VsdCB0aGUgYGltcG9ydHNgIGZpZWxkIG9mIGBwYWNrYWdlLmpzb25gIHdoZW4gcGVyZm9ybWluZyBhIGxvb2t1cCB0aGF0IGJlZ2lucyB3aXRoIGAjYCBmcm9tIGEgZmlsZSB0aGF0IGhhcyBhIGBwYWNrYWdlLmpzb25gIGFzIGFuIGFuY2VzdG9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlc29sdmVQYWNrYWdlSnNvbkltcG9ydHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBNb2Rlcm4gYnJvd3NlcnMgc3VwcG9ydCBhbGwgRVM2IGZlYXR1cmVzLCBzbyBFUzYgaXMgYSBnb29kIGNob2ljZS4gWW91IG1pZ2h0IGNob29zZSB0byBzZXRcbiAgICogYSBsb3dlciB0YXJnZXQgaWYgeW91ciBjb2RlIGlzIGRlcGxveWVkIHRvIG9sZGVyIGVudmlyb25tZW50cywgb3IgYSBoaWdoZXIgdGFyZ2V0IGlmIHlvdXJcbiAgICogY29kZSBpcyBndWFyYW50ZWVkIHRvIHJ1biBpbiBuZXdlciBlbnZpcm9ubWVudHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiRVMyMDE4XCJcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldD86IHN0cmluZztcblxuICAvKipcbiAgICogT3V0cHV0IGRpcmVjdG9yeSBmb3IgdGhlIGNvbXBpbGVkIGZpbGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0RGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIGlucHV0IGZpbGVzLlxuICAgKlxuICAgKiBPbmx5IHVzZSB0byBjb250cm9sIHRoZSBvdXRwdXQgZGlyZWN0b3J5IHN0cnVjdHVyZSB3aXRoIGBvdXREaXJgLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9vdERpcj86IHN0cmluZztcblxuICAvKipcbiAgICogQWxsb3cgZGVmYXVsdCBpbXBvcnRzIGZyb20gbW9kdWxlcyB3aXRoIG5vIGRlZmF1bHQgZXhwb3J0LiBUaGlzIGRvZXMgbm90IGFmZmVjdCBjb2RlIGVtaXQsIGp1c3QgdHlwZWNoZWNraW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGF0IG9wdGlvbmFsIHByb3BlcnR5IHR5cGVzIHNob3VsZCBiZSBpbnRlcnByZXRlZCBleGFjdGx5IGFzIHdyaXR0ZW4sIG1lYW5pbmcgdGhhdCBgfCB1bmRlZmluZWRgIGlzIG5vdCBhZGRlZCB0byB0aGUgdHlwZVxuICAgKiBBdmFpbGFibGUgd2l0aCBUeXBlU2NyaXB0IDQuNCBhbmQgbmV3ZXIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBleGFjdE9wdGlvbmFsUHJvcGVydHlUeXBlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENoYW5nZSB0aGUgdHlwZSBvZiB0aGUgdmFyaWFibGUgaW4gYSBjYXRjaCBjbGF1c2UgZnJvbSBhbnkgdG8gdW5rbm93blxuICAgKiBBdmFpbGFibGUgd2l0aCBUeXBlU2NyaXB0IDQuNCBhbmQgbmV3ZXIuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHVzZVVua25vd25JbkNhdGNoVmFyaWFibGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTGV0cyB5b3Ugc2V0IGEgYmFzZSBkaXJlY3RvcnkgdG8gcmVzb2x2ZSBub24tYWJzb2x1dGUgbW9kdWxlIG5hbWVzLlxuICAgKlxuICAgKiBZb3UgY2FuIGRlZmluZSBhIHJvb3QgZm9sZGVyIHdoZXJlIHlvdSBjYW4gZG8gYWJzb2x1dGUgZmlsZSByZXNvbHV0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgYmFzZVVybD86IHN0cmluZztcblxuICAvKipcbiAgICogQSBzZXJpZXMgb2YgZW50cmllcyB3aGljaCByZS1tYXAgaW1wb3J0cyB0byBsb29rdXAgbG9jYXRpb25zIHJlbGF0aXZlIHRvIHRoZSBiYXNlVXJsLCB0aGVyZSBpcyBhIGxhcmdlciBjb3ZlcmFnZSBvZiBwYXRocyBpbiB0aGUgaGFuZGJvb2suXG4gICAqXG4gICAqIHBhdGhzIGxldHMgeW91IGRlY2xhcmUgaG93IFR5cGVTY3JpcHQgc2hvdWxkIHJlc29sdmUgYW4gaW1wb3J0IGluIHlvdXIgcmVxdWlyZS9pbXBvcnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH07XG5cbiAgLyoqXG4gICAqIElmIHR5cGVSb290cyBpcyBzcGVjaWZpZWQsIG9ubHkgcGFja2FnZXMgdW5kZXIgdHlwZVJvb3RzIHdpbGwgYmUgaW5jbHVkZWRcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcvI3R5cGVSb290c1xuICAgKi9cbiAgcmVhZG9ubHkgdHlwZVJvb3RzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIElmIHR5cGVzIGlzIHNwZWNpZmllZCwgb25seSBwYWNrYWdlcyBsaXN0ZWQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZ2xvYmFsIHNjb3BlXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI3R5cGVzXG4gICAqL1xuICByZWFkb25seSB0eXBlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUZWxscyBUeXBlU2NyaXB0IHRvIHNhdmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2plY3QgZ3JhcGggZnJvbSB0aGUgbGFzdCBjb21waWxhdGlvbiB0byBmaWxlcyBzdG9yZWQgb24gZGlzay5cbiAgICogVGhpcyBjcmVhdGVzIGEgc2VyaWVzIG9mIC50c2J1aWxkaW5mbyBmaWxlcyBpbiB0aGUgc2FtZSBmb2xkZXIgYXMgeW91ciBjb21waWxhdGlvbiBvdXRwdXQuXG4gICAqIFRoZXkgYXJlIG5vdCB1c2VkIGJ5IHlvdXIgSmF2YVNjcmlwdCBhdCBydW50aW1lIGFuZCBjYW4gYmUgc2FmZWx5IGRlbGV0ZWQuXG4gICAqIFlvdSBjYW4gcmVhZCBtb3JlIGFib3V0IHRoZSBmbGFnIGluIHRoZSAzLjQgcmVsZWFzZSBub3Rlcy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9yZWxlYXNlLW5vdGVzL3R5cGVzY3JpcHQtMy00Lmh0bWwjZmFzdGVyLXN1YnNlcXVlbnQtYnVpbGRzLXdpdGgtdGhlLS0taW5jcmVtZW50YWwtZmxhZ1xuICAgKlxuICAgKiBUbyBjb250cm9sIHdoaWNoIGZvbGRlcnMgeW91IHdhbnQgdG8gdGhlIGZpbGVzIHRvIGJlIGJ1aWx0IHRvLCB1c2UgdGhlIGNvbmZpZyBvcHRpb24gdHNCdWlsZEluZm9GaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5jcmVtZW50YWw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGlzIHNldHRpbmcgbGV0cyB5b3Ugc3BlY2lmeSBhIGZpbGUgZm9yIHN0b3JpbmcgaW5jcmVtZW50YWwgY29tcGlsYXRpb24gaW5mb3JtYXRpb24gYXMgYSBwYXJ0IG9mIGNvbXBvc2l0ZSBwcm9qZWN0cyB3aGljaCBlbmFibGVzIGZhc3RlciBidWlsZGluZyBvZiBsYXJnZXIgVHlwZVNjcmlwdCBjb2RlYmFzZXMuXG4gICAqIFlvdSBjYW4gcmVhZCBtb3JlIGFib3V0IGNvbXBvc2l0ZSBwcm9qZWN0cyBpbiB0aGUgaGFuZGJvb2suXG4gICAqL1xuICByZWFkb25seSB0c0J1aWxkSW5mb0ZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFsbG93IFVudXNlZCBMYWJlbHNcbiAgICpcbiAgICogV2hlbjpcbiAgICpcbiAgICogLSBgdW5kZWZpbmVkYCAoZGVmYXVsdCkgcHJvdmlkZSBzdWdnZXN0aW9ucyBhcyB3YXJuaW5ncyB0byBlZGl0b3JzXG4gICAqIC0gYHRydWVgIHVudXNlZCBsYWJlbHMgYXJlIGlnbm9yZWRcbiAgICogLSBgZmFsc2VgIHJhaXNlcyBjb21waWxlciBlcnJvcnMgYWJvdXQgdW51c2VkIGxhYmVsc1xuICAgKlxuICAgKiBMYWJlbHMgYXJlIHZlcnkgcmFyZSBpbiBKYXZhU2NyaXB0IGFuZCB0eXBpY2FsbHkgaW5kaWNhdGUgYW4gYXR0ZW1wdCB0byB3cml0ZSBhbiBvYmplY3QgbGl0ZXJhbDpcbiAgICpcbiAgICogYGBgdHNcbiAgICogZnVuY3Rpb24gdmVyaWZ5QWdlKGFnZTogbnVtYmVyKSB7XG4gICAqICAgLy8gRm9yZ290ICdyZXR1cm4nIHN0YXRlbWVudFxuICAgKiAgIGlmIChhZ2UgPiAxOCkge1xuICAgKiAgICAgdmVyaWZpZWQ6IHRydWU7XG4gICAqIC8vICBeXl5eXl5eXiBVbnVzZWQgbGFiZWwuXG4gICAqICAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNhbGxvd1VudXNlZExhYmVsc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dVbnVzZWRMYWJlbHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbGxvdyBVbnJlYWNoYWJsZSBDb2RlXG4gICAqXG4gICAqIFdoZW46XG4gICAqXG4gICAqIC0gYHVuZGVmaW5lZGAgKGRlZmF1bHQpIHByb3ZpZGUgc3VnZ2VzdGlvbnMgYXMgd2FybmluZ3MgdG8gZWRpdG9yc1xuICAgKiAtIGB0cnVlYCB1bnJlYWNoYWJsZSBjb2RlIGlzIGlnbm9yZWRcbiAgICogLSBgZmFsc2VgIHJhaXNlcyBjb21waWxlciBlcnJvcnMgYWJvdXQgdW5yZWFjaGFibGUgY29kZVxuICAgKlxuICAgKiBUaGVzZSB3YXJuaW5ncyBhcmUgb25seSBhYm91dCBjb2RlIHdoaWNoIGlzIHByb3ZhYmx5IHVucmVhY2hhYmxlIGR1ZSB0byB0aGUgdXNlIG9mIEphdmFTY3JpcHQgc3ludGF4LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNhbGxvd1VucmVhY2hhYmxlQ29kZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dVbnJlYWNoYWJsZUNvZGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDaGVjayBKU1xuICAgKlxuICAgKiBXb3JrcyBpbiB0YW5kZW0gd2l0aCBbYWxsb3dKc10oaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2FsbG93SnMpLiBXaGVuIGNoZWNrSnMgaXMgZW5hYmxlZCB0aGVuXG4gICAqIGVycm9ycyBhcmUgcmVwb3J0ZWQgaW4gSmF2YVNjcmlwdCBmaWxlcy4gVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiBpbmNsdWRpbmcgLy8gQHRzLWNoZWNrIGF0IHRoZSB0b3Agb2YgYWxsXG4gICAqIEphdmFTY3JpcHQgZmlsZXMgd2hpY2ggYXJlIGluY2x1ZGVkIGluIHlvdXIgcHJvamVjdC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjY2hlY2tKc1xuICAgKi9cbiAgcmVhZG9ubHkgY2hlY2tKcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29udGFpbmVyIGZvciBgVHlwZXNjcmlwdENvbmZpZ2AgYHRzY29uZmlnLmpzb25gIGJhc2UgY29uZmlndXJhdGlvbihzKS5cbiAqIEV4dGVuZGluZyBmcm9tIG1vcmUgdGhhbiBvbmUgYmFzZSBjb25maWcgZmlsZSByZXF1aXJlcyBUeXBlU2NyaXB0IDUuMCsuXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlc2NyaXB0Q29uZmlnRXh0ZW5kcyB7XG4gIC8qKlxuICAgKiBGYWN0b3J5IGZvciBjcmVhdGlvbiBmcm9tIGFycmF5IG9mIGZpbGUgcGF0aHMuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFR5cGVTY3JpcHQgNS4wKyBpcyByZXF1aXJlZCB0byBzcGVjaWZ5IG1vcmUgdGhhbiBvbmUgdmFsdWUgaW4gYHBhdGhzYC5cbiAgICpcbiAgICogQHBhcmFtIHBhdGhzIEFic29sdXRlIG9yIHJlbGF0aXZlIHBhdGhzIHRvIGJhc2UgYHRzY29uZmlnLmpzb25gIGZpbGVzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tUGF0aHMocGF0aHM6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIG5ldyBUeXBlc2NyaXB0Q29uZmlnRXh0ZW5kcyhwYXRocyk7XG4gIH1cblxuICAvKipcbiAgICogRmFjdG9yeSBmb3IgY3JlYXRpb24gZnJvbSBhcnJheSBvZiBvdGhlciBgVHlwZXNjcmlwdENvbmZpZ2AgaW5zdGFuY2VzLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUeXBlU2NyaXB0IDUuMCsgaXMgcmVxdWlyZWQgdG8gc3BlY2lmeSBtb3JlIHRoYW4gb24gdmFsdWUgaW4gYGNvbmZpZ3NgLlxuICAgKlxuICAgKiBAcGFyYW0gY29uZmlncyBCYXNlIGBUeXBlc2NyaXB0Q29uZmlnYCBpbnN0YW5jZXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21UeXBlc2NyaXB0Q29uZmlncyhjb25maWdzOiBUeXBlc2NyaXB0Q29uZmlnW10pIHtcbiAgICBjb25zdCBwYXRocyA9IGNvbmZpZ3MubWFwKChjb25maWcpID0+IGNvbmZpZy5maWxlLmFic29sdXRlUGF0aCk7XG4gICAgcmV0dXJuIFR5cGVzY3JpcHRDb25maWdFeHRlbmRzLmZyb21QYXRocyhwYXRocyk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGJhc2VzOiBzdHJpbmdbXTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKGJhc2VzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuYmFzZXMgPSBiYXNlcztcbiAgfVxuXG4gIHB1YmxpYyB0b0pTT04oKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmJhc2VzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUeXBlc2NyaXB0Q29uZmlnIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBfZXh0ZW5kczogVHlwZXNjcmlwdENvbmZpZ0V4dGVuZHM7XG4gIHB1YmxpYyByZWFkb25seSBjb21waWxlck9wdGlvbnM/OiBUeXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zO1xuICBwcml2YXRlIHJlYWRvbmx5IGluY2x1ZGVTZXQ6IFNldDxzdHJpbmc+O1xuICBwcml2YXRlIHJlYWRvbmx5IGV4Y2x1ZGVTZXQ6IFNldDxzdHJpbmc+O1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZU5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGZpbGU6IEpzb25GaWxlO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IFR5cGVzY3JpcHRDb25maWdPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG4gICAgY29uc3QgZmlsZU5hbWUgPSBvcHRpb25zLmZpbGVOYW1lID8/IFwidHNjb25maWcuanNvblwiO1xuXG4gICAgaWYgKCFvcHRpb25zLmV4dGVuZHMgJiYgIW9wdGlvbnMuY29tcGlsZXJPcHRpb25zKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiVHlwZXNjcmlwdENvbmZpZzogTXVzdCBwcm92aWRlIGVpdGhlciBgZXh0ZW5kc2Agb3IgYGNvbXBpbGVyT3B0aW9uc2AgKG9yIGJvdGgpLlwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9leHRlbmRzID0gb3B0aW9ucy5leHRlbmRzID8/IFR5cGVzY3JpcHRDb25maWdFeHRlbmRzLmZyb21QYXRocyhbXSk7XG4gICAgdGhpcy5pbmNsdWRlU2V0ID0gb3B0aW9ucy5pbmNsdWRlXG4gICAgICA/IG5ldyBTZXQob3B0aW9ucy5pbmNsdWRlKVxuICAgICAgOiBuZXcgU2V0KFtcIioqLyoudHNcIl0pO1xuICAgIHRoaXMuZXhjbHVkZVNldCA9IG9wdGlvbnMuZXhjbHVkZVxuICAgICAgPyBuZXcgU2V0KG9wdGlvbnMuZXhjbHVkZSlcbiAgICAgIDogbmV3IFNldChbXCJub2RlX21vZHVsZXNcIl0pO1xuICAgIHRoaXMuZmlsZU5hbWUgPSBmaWxlTmFtZTtcblxuICAgIHRoaXMuY29tcGlsZXJPcHRpb25zID0gb3B0aW9ucy5jb21waWxlck9wdGlvbnM7XG5cbiAgICB0aGlzLmZpbGUgPSBuZXcgSnNvbkZpbGUocHJvamVjdCwgZmlsZU5hbWUsIHtcbiAgICAgIGFsbG93Q29tbWVudHM6IHRydWUsXG4gICAgICBvYmo6IHtcbiAgICAgICAgZXh0ZW5kczogKCkgPT4gdGhpcy5yZW5kZXJFeHRlbmRzKCksXG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczogdGhpcy5jb21waWxlck9wdGlvbnMsXG4gICAgICAgIGluY2x1ZGU6ICgpID0+IHRoaXMuaW5jbHVkZSxcbiAgICAgICAgZXhjbHVkZTogKCkgPT4gdGhpcy5leGNsdWRlLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9qZWN0IGluc3RhbmNlb2YgTm9kZVByb2plY3QpIHtcbiAgICAgIHByb2plY3QubnBtaWdub3JlPy5leGNsdWRlKGAvJHtmaWxlTmFtZX1gKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluY2x1ZGUoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5pbmNsdWRlU2V0XTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZXhjbHVkZSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmV4Y2x1ZGVTZXRdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciBhcHByb3ByaWF0ZSB2YWx1ZSBmb3IgYGV4dGVuZHNgIGZpZWxkLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJFeHRlbmRzKCk6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5leHRlbmRzLmxlbmd0aCA8PSAxKSB7XG4gICAgICAvLyByZW5kZXIgc3RyaW5nIHZhbHVlIHdoZW4gb25seSBvbmUgZXh0ZW5zaW9uIChUUzw1LjApO1xuICAgICAgLy8gb21pdCBpZiBubyBleHRlbnNpb25zLlxuICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5kc1swXTtcbiAgICB9XG4gICAgLy8gcmVuZGVyIG1hbnkgZXh0ZW5zaW9ucyBhcyBhcnJheSAoVFM+PTUuMClcbiAgICByZXR1cm4gdGhpcy5leHRlbmRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdmFsaWQgVHlwZVNjcmlwdCBleHRlbmRzIHBhdGhzIHJlbGF0aXZlIHRvIHRoaXMgY29uZmlnLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGlzIHdpbGwgb25seSByZXNvbHZlIHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gdGhpcyBjb25maWcgdG8gYW5vdGhlciBnaXZlblxuICAgKiBhbiBhYnNvbHV0ZSBwYXRoIGFzIGlucHV0LiBBbnkgbm9uLWFic29sdXRlIHBhdGggb3Igb3RoZXIgc3RyaW5nIHdpbGwgYmUgcmV0dXJuZWQgYXMgaXMuXG4gICAqIFRoaXMgaXMgdG8gcHJlc2VydmUgbWFudWFsbHkgc3BlY2lmaWVkIHJlbGF0aXZlIHBhdGhzIGFzIHdlbGwgYXMgbnBtIGltcG9ydCBwYXRocy5cbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZ1BhdGggUGF0aCB0byByZXNvbHZlIGFnYWluc3QuXG4gICAqL1xuICBwdWJsaWMgcmVzb2x2ZUV4dGVuZHNQYXRoKGNvbmZpZ1BhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gaWYgbm90IGFic29sdXRlIGFzc3VtZSB1c2VyLWRlZmluZWQgcGF0aCAob3IgbnBtIHBhY2thZ2UpLlxuICAgIGlmICghcGF0aC5pc0Fic29sdXRlKGNvbmZpZ1BhdGgpKSByZXR1cm4gY29uZmlnUGF0aDtcbiAgICBjb25zdCByZWxhdGl2ZUNvbmZpZyA9IHBhdGgucmVsYXRpdmUoXG4gICAgICBwYXRoLmRpcm5hbWUodGhpcy5maWxlLmFic29sdXRlUGF0aCksXG4gICAgICBjb25maWdQYXRoLFxuICAgICk7XG4gICAgLy8gZW5zdXJlIGltbWVkaWF0ZSBzaWJsaW5nIGZpbGVzIGFyZSBwcmVmaXhlZCB3aXRoICcuLydcbiAgICAvLyB0eXBlc2NyaXB0IGZpZ3VyZXMgdGhpcyBvdXQsIGJ1dCBzb21lIHRvb2xzIHNlZW1pbmdseSBicmVhayB3aXRob3V0IGl0IChpLmUsIGVzbGludCkuXG4gICAgY29uc3QgeyBkaXIsIC4uLnBhdGhQYXJ0cyB9ID0gcGF0aC5wYXJzZShyZWxhdGl2ZUNvbmZpZyk7XG4gICAgY29uc3QgY29uZmlnRGlyID0gZGlyXG4gICAgICA/IHBhdGguZm9ybWF0KHsgZGlyOiBkaXIuc3RhcnRzV2l0aChcIi4uXCIpID8gXCJcIiA6IFwiLlwiLCBiYXNlOiBkaXIgfSlcbiAgICAgIDogXCIuXCI7XG5cbiAgICBjb25zdCBleHRlbmRzUGF0aCA9IHBhdGguZm9ybWF0KHsgLi4ucGF0aFBhcnRzLCBkaXI6IGNvbmZpZ0RpciB9KTtcblxuICAgIHJldHVybiBub3JtYWxpemVQZXJzaXN0ZWRQYXRoKGV4dGVuZHNQYXRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB1c2FnZSBvZiBgZXh0ZW5kc2AgYWdhaW5zdCBjdXJyZW50IFR5cGVTY3JpcHQgdmVyc2lvbi5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVFeHRlbmRzKCkge1xuICAgIGNvbnN0IHByb2plY3QgPSB0aGlzLnByb2plY3Q7XG4gICAgY29uc3QgaGFzT25lT3JOb25lRXh0ZW5kcyA9IHRoaXMuZXh0ZW5kcy5sZW5ndGggPD0gMTtcbiAgICBjb25zdCBpc05vZGVQcm9qZWN0ID0gcHJvamVjdCBpbnN0YW5jZW9mIE5vZGVQcm9qZWN0O1xuICAgIGlmIChoYXNPbmVPck5vbmVFeHRlbmRzIHx8ICFpc05vZGVQcm9qZWN0KSB7XG4gICAgICAvLyBhbHdheXMgYWNjZXB0IG5vIGV4dGVuZHMgb3Igc2luZ3VsYXIgZXh0ZW5kcy5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdHNWZXJzaW9uID0gc2VtdmVyLmNvZXJjZShcbiAgICAgIHByb2plY3QucGFja2FnZS50cnlSZXNvbHZlRGVwZW5kZW5jeVZlcnNpb24oXCJ0eXBlc2NyaXB0XCIpLFxuICAgICAgeyBsb29zZTogdHJ1ZSB9LFxuICAgICk7XG4gICAgaWYgKHRzVmVyc2lvbiAmJiB0c1ZlcnNpb24ubWFqb3IgPCA1KSB7XG4gICAgICB0aGlzLnByb2plY3QubG9nZ2VyLndhcm4oXG4gICAgICAgIFwiVHlwZVNjcmlwdCA8IDUuMC4wIGNhbiBvbmx5IGV4dGVuZCBmcm9tIGEgc2luZ2xlIGJhc2UgY29uZmlnLlwiLFxuICAgICAgICBgVHlwZVNjcmlwdCBWZXJzaW9uOiAke3RzVmVyc2lvbi5mb3JtYXQoKX1gLFxuICAgICAgICBgRmlsZTogJHt0aGlzLmZpbGUuYWJzb2x1dGVQYXRofWAsXG4gICAgICAgIGBFeHRlbmRzOiAke3RoaXMuZXh0ZW5kc31gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXJyYXkgb2YgYmFzZSBgdHNjb25maWcuanNvbmAgcGF0aHMuXG4gICAqIEFueSBhYnNvbHV0ZSBwYXRocyBhcmUgcmVzb2x2ZWQgcmVsYXRpdmUgdG8gdGhpcyBpbnN0YW5jZSxcbiAgICogd2hpbGUgYW55IHJlbGF0aXZlIHBhdGhzIGFyZSB1c2VkIGFzIGlzLlxuICAgKi9cbiAgcHVibGljIGdldCBleHRlbmRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fZXh0ZW5kc1xuICAgICAgLnRvSlNPTigpXG4gICAgICAubWFwKCh2YWx1ZSkgPT4gdGhpcy5yZXNvbHZlRXh0ZW5kc1BhdGgodmFsdWUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRlbmQgZnJvbSBiYXNlIGBUeXBlc2NyaXB0Q29uZmlnYCBpbnN0YW5jZS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVHlwZVNjcmlwdCA1LjArIGlzIHJlcXVpcmVkIHRvIGV4dGVuZCBmcm9tIG1vcmUgdGhhbiBvbmUgYmFzZSBgVHlwZXNjcmlwdENvbmZpZ2AuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBCYXNlIGBUeXBlc2NyaXB0Q29uZmlnYCBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBhZGRFeHRlbmRzKHZhbHVlOiBUeXBlc2NyaXB0Q29uZmlnKSB7XG4gICAgdGhpcy5fZXh0ZW5kcyA9IFR5cGVzY3JpcHRDb25maWdFeHRlbmRzLmZyb21QYXRocyhbXG4gICAgICAuLi50aGlzLl9leHRlbmRzLnRvSlNPTigpLFxuICAgICAgdmFsdWUuZmlsZS5hYnNvbHV0ZVBhdGgsXG4gICAgXSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGluY2x1ZGUgcGF0dGVybiB0byB0aGUgYGluY2x1ZGVgIGFycmF5IG9mIHRoZSBUU0NvbmZpZy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjaW5jbHVkZVxuICAgKlxuICAgKiBAcGFyYW0gcGF0dGVybiBUaGUgcGF0dGVybiB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWRkSW5jbHVkZShwYXR0ZXJuOiBzdHJpbmcpIHtcbiAgICB0aGlzLmluY2x1ZGUucHVzaChwYXR0ZXJuKTtcbiAgICB0aGlzLmluY2x1ZGVTZXQuYWRkKHBhdHRlcm4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBleGNsdWRlIHBhdHRlcm4gdG8gdGhlIGBleGNsdWRlYCBhcnJheSBvZiB0aGUgVFNDb25maWcuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2V4Y2x1ZGVcbiAgICpcbiAgICogQHBhcmFtIHBhdHRlcm4gVGhlIHBhdHRlcm4gdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFkZEV4Y2x1ZGUocGF0dGVybjogc3RyaW5nKSB7XG4gICAgdGhpcy5leGNsdWRlLnB1c2gocGF0dGVybik7XG4gICAgdGhpcy5leGNsdWRlU2V0LmFkZChwYXR0ZXJuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW4gaW5jbHVkZSBwYXR0ZXJuIGZyb20gdGhlIGBpbmNsdWRlYCBhcnJheSBvZiB0aGUgVFNDb25maWcuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2luY2x1ZGVcbiAgICpcbiAgICogQHBhcmFtIHBhdHRlcm4gVGhlIHBhdHRlcm4gdG8gcmVtb3ZlLlxuICAgKi9cbiAgcHVibGljIHJlbW92ZUluY2x1ZGUocGF0dGVybjogc3RyaW5nKSB7XG4gICAgdGhpcy5pbmNsdWRlU2V0LmRlbGV0ZShwYXR0ZXJuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW4gZXhjbHVkZSBwYXR0ZXJuIGZyb20gdGhlIGBleGNsdWRlYCBhcnJheSBvZiB0aGUgVFNDb25maWcuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2V4Y2x1ZGVcbiAgICpcbiAgICogQHBhcmFtIHBhdHRlcm4gVGhlIHBhdHRlcm4gdG8gcmVtb3ZlLlxuICAgKi9cbiAgcHVibGljIHJlbW92ZUV4Y2x1ZGUocGF0dGVybjogc3RyaW5nKSB7XG4gICAgdGhpcy5leGNsdWRlU2V0LmRlbGV0ZShwYXR0ZXJuKTtcbiAgfVxuXG4gIHByZVN5bnRoZXNpemUoKSB7XG4gICAgc3VwZXIucHJlU3ludGhlc2l6ZSgpO1xuICAgIHRoaXMudmFsaWRhdGVFeHRlbmRzKCk7XG4gIH1cbn1cbiJdfQ==
|
|
374
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamF2YXNjcmlwdC90eXBlc2NyaXB0LWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTZCO0FBQzdCLCtDQUFpQztBQUNqQyx3QkFBZ0M7QUFDaEMsNENBQXlDO0FBQ3pDLGtDQUFtQztBQUVuQyxrQ0FBaUQ7QUF1Q2pEOzs7O0dBSUc7QUFDSCxJQUFZLDBCQTZDWDtBQTdDRCxXQUFZLDBCQUEwQjtJQUNwQzs7OztPQUlHO0lBQ0gsaURBQW1CLENBQUE7SUFFbkI7Ozs7T0FJRztJQUNILDJDQUFhLENBQUE7SUFFYjs7Ozs7OztPQU9HO0lBQ0gsK0NBQWlCLENBQUE7SUFFakI7Ozs7T0FJRztJQUNILCtDQUFpQixDQUFBO0lBRWpCOzs7O09BSUc7SUFDSCxvREFBc0IsQ0FBQTtJQUV0Qjs7OztPQUlHO0lBQ0gsaURBQW1CLENBQUE7QUFDckIsQ0FBQyxFQTdDVywwQkFBMEIsMENBQTFCLDBCQUEwQixRQTZDckM7QUFFRDs7OztHQUlHO0FBQ0gsSUFBWSx5QkFxQlg7QUFyQkQsV0FBWSx5QkFBeUI7SUFDbkM7Ozs7T0FJRztJQUNILDBDQUFhLENBQUE7SUFFYjs7OztPQUlHO0lBQ0gsOENBQWlCLENBQUE7SUFFakI7Ozs7T0FJRztJQUNILDRDQUFlLENBQUE7QUFDakIsQ0FBQyxFQXJCVyx5QkFBeUIseUNBQXpCLHlCQUF5QixRQXFCcEM7QUFFRDs7OztHQUlHO0FBQ0gsSUFBWSxnQ0FnQlg7QUFoQkQsV0FBWSxnQ0FBZ0M7SUFDMUM7O09BRUc7SUFDSCxxREFBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILHlEQUFxQixDQUFBO0lBRXJCOzs7T0FHRztJQUNILG1EQUFlLENBQUE7QUFDakIsQ0FBQyxFQWhCVyxnQ0FBZ0MsZ0RBQWhDLGdDQUFnQyxRQWdCM0M7QUFF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SSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7O0FBcE1ILDRDQXFNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCAqIGFzIHNlbXZlciBmcm9tIFwic2VtdmVyXCI7XG5pbXBvcnQgeyBOb2RlUHJvamVjdCB9IGZyb20gXCIuXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQgeyBKc29uRmlsZSB9IGZyb20gXCIuLi9qc29uXCI7XG5pbXBvcnQgdHlwZSB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplUGVyc2lzdGVkUGF0aCB9IGZyb20gXCIuLi91dGlsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZXNjcmlwdENvbmZpZ09wdGlvbnMge1xuICAvKipcbiAgICogQGRlZmF1bHQgXCJ0c2NvbmZpZy5qc29uXCJcbiAgICovXG4gIHJlYWRvbmx5IGZpbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCYXNlIGB0c2NvbmZpZy5qc29uYCBjb25maWd1cmF0aW9uKHMpIHRvIGluaGVyaXQgZnJvbS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogTXVzdCBwcm92aWRlIGVpdGhlciBgZXh0ZW5kc2Agb3IgYGNvbXBpbGVyT3B0aW9uc2AgKG9yIGJvdGgpLlxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZW5kcz86IFR5cGVzY3JpcHRDb25maWdFeHRlbmRzO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBsaXN0IG9mIGdsb2IgcGF0dGVybnMgdGhhdCBtYXRjaCBUeXBlU2NyaXB0IGZpbGVzIHRvIGJlIGluY2x1ZGVkIGluIGNvbXBpbGF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFsbCAudHMgZmlsZXMgcmVjdXJzaXZlbHlcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRmlsdGVycyByZXN1bHRzIGZyb20gdGhlIFwiaW5jbHVkZVwiIG9wdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub2RlX21vZHVsZXMgaXMgZXhjbHVkZWQgYnkgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgZXhjbHVkZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDb21waWxlciBvcHRpb25zIHRvIHVzZS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogTXVzdCBwcm92aWRlIGVpdGhlciBgZXh0ZW5kc2Agb3IgYGNvbXBpbGVyT3B0aW9uc2AgKG9yIGJvdGgpLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGlsZXJPcHRpb25zPzogVHlwZVNjcmlwdENvbXBpbGVyT3B0aW9ucztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIGhvdyBtb2R1bGVzIGdldCByZXNvbHZlZC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL21vZHVsZS1yZXNvbHV0aW9uLmh0bWxcbiAqL1xuZXhwb3J0IGVudW0gVHlwZVNjcmlwdE1vZHVsZVJlc29sdXRpb24ge1xuICAvKipcbiAgICogVHlwZVNjcmlwdCdzIGZvcm1lciBkZWZhdWx0IHJlc29sdXRpb24gc3RyYXRlZ3kuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svbW9kdWxlLXJlc29sdXRpb24uaHRtbCNjbGFzc2ljXG4gICAqL1xuICBDTEFTU0lDID0gXCJjbGFzc2ljXCIsXG5cbiAgLyoqXG4gICAqIFJlc29sdXRpb24gc3RyYXRlZ3kgd2hpY2ggYXR0ZW1wdHMgdG8gbWltaWMgdGhlIE5vZGUuanMgbW9kdWxlIHJlc29sdXRpb24gc3RyYXRlZ3kgYXQgcnVudGltZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9tb2R1bGUtcmVzb2x1dGlvbi5odG1sI25vZGVcbiAgICovXG4gIE5PREUgPSBcIm5vZGVcIixcblxuICAvKipcbiAgICogYC0tbW9kdWxlUmVzb2x1dGlvbiBub2RlYCB3YXMgcmVuYW1lZCB0byBgbm9kZTEwYFxuICAgKiAoa2VlcGluZyBgbm9kZWAgYXMgYW4gYWxpYXMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpIGluIFR5cGVTY3JpcHQgNS4wLlxuICAgKiBJdCByZWZsZWN0cyB0aGUgQ29tbW9uSlMgbW9kdWxlIHJlc29sdXRpb24gYWxnb3JpdGhtIGFzIGl0IGV4aXN0ZWQgaW4gTm9kZS5qcyB2ZXJzaW9uc1xuICAgKiBlYXJsaWVyIHRoYW4gdjEyLiBJdCBzaG91bGQgbm8gbG9uZ2VyIGJlIHVzZWQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svbW9kdWxlcy9yZWZlcmVuY2UuaHRtbCNub2RlMTAtZm9ybWVybHkta25vd24tYXMtbm9kZVxuICAgKi9cbiAgTk9ERTEwID0gXCJub2RlMTBcIixcblxuICAvKipcbiAgICogTm9kZS5qc+KAmSBFQ01BU2NyaXB0IE1vZHVsZSBTdXBwb3J0IGZyb20gVHlwZVNjcmlwdCA0Ljcgb253YXJkc1xuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNtb2R1bGVSZXNvbHV0aW9uXG4gICAqL1xuICBOT0RFMTYgPSBcIm5vZGUxNlwiLFxuXG4gIC8qKlxuICAgKiBOb2RlLmpz4oCZIEVDTUFTY3JpcHQgTW9kdWxlIFN1cHBvcnQgZnJvbSBUeXBlU2NyaXB0IDQuNyBvbndhcmRzXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI21vZHVsZVJlc29sdXRpb25cbiAgICovXG4gIE5PREVfTkVYVCA9IFwibm9kZW5leHRcIixcblxuICAvKipcbiAgICogUmVzb2x1dGlvbiBzdHJhdGVneSB3aGljaCBhdHRlbXB0cyB0byBtaW1pYyByZXNvbHV0aW9uIHBhdHRlcm5zIG9mIG1vZGVybiBidW5kbGVyczsgZnJvbSBUeXBlU2NyaXB0IDUuMCBvbndhcmRzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNtb2R1bGVSZXNvbHV0aW9uXG4gICAqL1xuICBCVU5ETEVSID0gXCJidW5kbGVyXCIsXG59XG5cbi8qKlxuICogVGhpcyBzZXR0aW5nIGNvbnRyb2xzIGhvdyBUeXBlU2NyaXB0IGRldGVybWluZXMgd2hldGhlciBhIGZpbGUgaXMgYSBzY3JpcHQgb3IgYSBtb2R1bGUuXG4gKlxuICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9tb2R1bGVzL3RoZW9yeS5odG1sI3NjcmlwdHMtYW5kLW1vZHVsZXMtaW4tamF2YXNjcmlwdFxuICovXG5leHBvcnQgZW51bSBUeXBlU2NyaXB0TW9kdWxlRGV0ZWN0aW9uIHtcbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgd2lsbCBub3Qgb25seSBsb29rIGZvciBpbXBvcnQgYW5kIGV4cG9ydCBzdGF0ZW1lbnRzLCBidXQgaXQgd2lsbCBhbHNvIGNoZWNrIHdoZXRoZXIgdGhlIFwidHlwZVwiIGZpZWxkIGluIGEgcGFja2FnZS5qc29uIGlzIHNldCB0byBcIm1vZHVsZVwiIHdoZW4gcnVubmluZyB3aXRoIG1vZHVsZTogbm9kZW5leHQgb3Igbm9kZTE2LCBhbmQgY2hlY2sgd2hldGhlciB0aGUgY3VycmVudCBmaWxlIGlzIGEgSlNYIGZpbGUgd2hlbiBydW5uaW5nIHVuZGVyIGpzeDogcmVhY3QtanN4LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZy8jbW9kdWxlRGV0ZWN0aW9uXG4gICAqL1xuICBBVVRPID0gXCJhdXRvXCIsXG5cbiAgLyoqXG4gICAqIFRoZSBzYW1lIGJlaGF2aW9yIGFzIDQuNiBhbmQgcHJpb3IsIHVzaW5ncyBpbXBvcnQgYW5kIGV4cG9ydCBzdGF0ZW1lbnRzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgZmlsZSBpcyBhIG1vZHVsZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcvI21vZHVsZURldGVjdGlvblxuICAgKi9cbiAgTEVHQUNZID0gXCJsZWdhY3lcIixcblxuICAvKipcbiAgICogRW5zdXJlcyB0aGF0IGV2ZXJ5IG5vbi1kZWNsYXJhdGlvbiBmaWxlIGlzIHRyZWF0ZWQgYXMgYSBtb2R1bGUuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnLyNtb2R1bGVEZXRlY3Rpb25cbiAgICovXG4gIEZPUkNFID0gXCJmb3JjZVwiLFxufVxuXG4vKipcbiAqIFRoaXMgZmxhZyBjb250cm9scyBob3cgYGltcG9ydGAgd29ya3MsIHRoZXJlIGFyZSAzIGRpZmZlcmVudCBvcHRpb25zLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2ltcG9ydHNOb3RVc2VkQXNWYWx1ZXNcbiAqL1xuZXhwb3J0IGVudW0gVHlwZVNjcmlwdEltcG9ydHNOb3RVc2VkQXNWYWx1ZXMge1xuICAvKipcbiAgICogVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgZHJvcHBpbmcgYGltcG9ydGAgc3RhdGVtZW50cyB3aGljaCBvbmx5IHJlZmVyZW5jZSB0eXBlcy5cbiAgICovXG4gIFJFTU9WRSA9IFwicmVtb3ZlXCIsXG5cbiAgLyoqXG4gICAqIFByZXNlcnZlcyBhbGwgYGltcG9ydGAgc3RhdGVtZW50cyB3aG9zZSB2YWx1ZXMgb3IgdHlwZXMgYXJlIG5ldmVyIHVzZWQuIFRoaXMgY2FuIGNhdXNlIGltcG9ydHMvc2lkZS1lZmZlY3RzIHRvIGJlIHByZXNlcnZlZC5cbiAgICovXG4gIFBSRVNFUlZFID0gXCJwcmVzZXJ2ZVwiLFxuXG4gIC8qKlxuICAgKiBUaGlzIHByZXNlcnZlcyBhbGwgaW1wb3J0cyAodGhlIHNhbWUgYXMgdGhlIHByZXNlcnZlIG9wdGlvbiksIGJ1dCB3aWxsIGVycm9yIHdoZW4gYSB2YWx1ZSBpbXBvcnQgaXMgb25seSB1c2VkIGFzIGEgdHlwZS5cbiAgICogVGhpcyBtaWdodCBiZSB1c2VmdWwgaWYgeW91IHdhbnQgdG8gZW5zdXJlIG5vIHZhbHVlcyBhcmUgYmVpbmcgYWNjaWRlbnRhbGx5IGltcG9ydGVkLCBidXQgc3RpbGwgbWFrZSBzaWRlLWVmZmVjdCBpbXBvcnRzIGV4cGxpY2l0LlxuICAgKi9cbiAgRVJST1IgPSBcImVycm9yXCIsXG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBob3cgSlNYIHNob3VsZCBnZXQgdHJhbnNmb3JtZWQgaW50byB2YWxpZCBKYXZhU2NyaXB0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svanN4Lmh0bWxcbiAqL1xuZXhwb3J0IGVudW0gVHlwZVNjcmlwdEpzeE1vZGUge1xuICAvKipcbiAgICogS2VlcHMgdGhlIEpTWCBhcyBwYXJ0IG9mIHRoZSBvdXRwdXQgdG8gYmUgZnVydGhlciBjb25zdW1lZCBieSBhbm90aGVyIHRyYW5zZm9ybSBzdGVwIChlLmcuIEJhYmVsKS5cbiAgICovXG4gIFBSRVNFUlZFID0gXCJwcmVzZXJ2ZVwiLFxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBKU1ggc3ludGF4IGludG8gUmVhY3QuY3JlYXRlRWxlbWVudCwgZG9lcyBub3QgbmVlZCB0byBnbyB0aHJvdWdoIGEgSlNYIHRyYW5zZm9ybWF0aW9uIGJlZm9yZSB1c2UsIGFuZCB0aGUgb3V0cHV0IHdpbGwgaGF2ZSBhIC5qcyBmaWxlIGV4dGVuc2lvbi5cbiAgICovXG4gIFJFQUNUID0gXCJyZWFjdFwiLFxuXG4gIC8qKlxuICAgKiBLZWVwcyBhbGwgSlNYIGxpa2UgJ3ByZXNlcnZlJyBtb2RlLCBidXQgb3V0cHV0IHdpbGwgaGF2ZSBhIC5qcyBleHRlbnNpb24uXG4gICAqL1xuICBSRUFDVF9OQVRJVkUgPSBcInJlYWN0LW5hdGl2ZVwiLFxuXG4gIC8qKlxuICAgKiBQYXNzZXMgYGtleWAgc2VwYXJhdGVseSBmcm9tIHByb3BzIGFuZCBhbHdheXMgcGFzc2VzIGBjaGlsZHJlbmAgYXMgcHJvcHMgKHNpbmNlIFJlYWN0IDE3KS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9yZWxlYXNlLW5vdGVzL3R5cGVzY3JpcHQtNC0xLmh0bWwjcmVhY3QtMTctanN4LWZhY3Rvcmllc1xuICAgKi9cbiAgUkVBQ1RfSlNYID0gXCJyZWFjdC1qc3hcIixcblxuICAvKipcbiAgICogU2FtZSBhcyBgUkVBQ1RfSlNYYCB3aXRoIGFkZGl0aW9uYWwgZGVidWcgZGF0YS5cbiAgICovXG4gIFJFQUNUX0pTWERFViA9IFwicmVhY3QtanN4ZGV2XCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZVNjcmlwdENvbXBpbGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbGxvdyBKYXZhU2NyaXB0IGZpbGVzIHRvIGJlIGNvbXBpbGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dKcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFsbG93cyBUeXBlU2NyaXB0IGZpbGVzIHRvIGltcG9ydCBlYWNoIG90aGVyIHdpdGggVHlwZVNjcmlwdC1zcGVjaWZpYyBleHRlbnNpb25zIChgLnRzYCwgYC5tdHNgLCBgLnRzeGApLlxuICAgKiBSZXF1aXJlcyBgbm9FbWl0YCBvciBgZW1pdERlY2xhcmF0aW9uT25seWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dJbXBvcnRpbmdUc0V4dGVuc2lvbnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTdXBwcmVzcyBhcmJpdHJhcnkgZXh0ZW5zaW9uIGltcG9ydCBlcnJvcnMgd2l0aCB0aGUgYXNzdW1wdGlvbiB0aGF0IGEgYnVuZGxlciB3aWxsIGJlIGhhbmRsaW5nIGl0LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNhbGxvd0FyYml0cmFyeUV4dGVuc2lvbnNcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBhbGxvd0FyYml0cmFyeUV4dGVuc2lvbnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaWxlbmNlIGRlcHJlY2F0aW9uIHdhcm5pbmdzIGZvciBvcHRpb25zIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBhIGZ1dHVyZVxuICAgKiBUeXBlU2NyaXB0IHJlbGVhc2UgKGZvciBleGFtcGxlIGBtb2R1bGVSZXNvbHV0aW9uOiBcIm5vZGUxMFwiYCwgd2hpY2ggYmVjYW1lXG4gICAqIGFuIGVycm9yIGluIFR5cGVTY3JpcHQgNi4wKS5cbiAgICpcbiAgICogU2V0IHRvIHRoZSBUeXBlU2NyaXB0IHZlcnNpb24gdGhhdCBpbnRyb2R1Y2VkIHRoZSBkZXByZWNhdGlvbiwgZS5nLiBgXCI2LjBcImAuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnLyNpZ25vcmVEZXByZWNhdGlvbnNcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVEZXByZWNhdGlvbnM/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBFbnN1cmVzIHRoYXQgeW91ciBmaWxlcyBhcmUgcGFyc2VkIGluIHRoZSBFQ01BU2NyaXB0IHN0cmljdCBtb2RlLCBhbmQgZW1pdCDigJx1c2Ugc3RyaWN04oCdXG4gICAqIGZvciBlYWNoIHNvdXJjZSBmaWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhbHdheXNTdHJpY3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPZmZlcnMgYSB3YXkgdG8gY29uZmlndXJlIHRoZSByb290IGRpcmVjdG9yeSBmb3Igd2hlcmUgZGVjbGFyYXRpb24gZmlsZXMgYXJlIGVtaXR0ZWQuXG4gICAqXG4gICAqL1xuICByZWFkb25seSBkZWNsYXJhdGlvbkRpcj86IHN0cmluZztcblxuICAvKipcbiAgICogVG8gYmUgc3BlY2lmaWVkIGFsb25nIHdpdGggdGhlIGFib3ZlXG4gICAqXG4gICAqL1xuICByZWFkb25seSBkZWNsYXJhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIHNvdXJjZSBtYXAgZm9yIC5kLnRzIGZpbGVzIHdoaWNoIG1hcCBiYWNrIHRvIHRoZSBvcmlnaW5hbCAudHMgc291cmNlIGZpbGUuXG4gICAqIFRoaXMgd2lsbCBhbGxvdyBlZGl0b3JzIHN1Y2ggYXMgVlMgQ29kZSB0byBnbyB0byB0aGUgb3JpZ2luYWwgLnRzIGZpbGUgd2hlbiB1c2luZyBmZWF0dXJlcyBsaWtlIEdvIHRvIERlZmluaXRpb24uXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNkZWNsYXJhdGlvbk1hcH1cbiAgICovXG4gIHJlYWRvbmx5IGRlY2xhcmF0aW9uTWFwPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRG93bmxldmVsaW5nIGlzIFR5cGVTY3JpcHTigJlzIHRlcm0gZm9yIHRyYW5zcGlsaW5nIHRvIGFuIG9sZGVyIHZlcnNpb24gb2YgSmF2YVNjcmlwdC5cbiAgICogVGhpcyBmbGFnIGlzIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBhIG1vcmUgYWNjdXJhdGUgaW1wbGVtZW50YXRpb24gb2YgaG93IG1vZGVybiBKYXZhU2NyaXB0IGl0ZXJhdGVzIHRocm91Z2ggbmV3IGNvbmNlcHRzIGluIG9sZGVyIEphdmFTY3JpcHQgcnVudGltZXMuXG4gICAqXG4gICAqIEVDTUFTY3JpcHQgNiBhZGRlZCBzZXZlcmFsIG5ldyBpdGVyYXRpb24gcHJpbWl0aXZlczogdGhlIGZvciAvIG9mIGxvb3AgKGZvciAoZWwgb2YgYXJyKSksIEFycmF5IHNwcmVhZCAoW2EsIC4uLmJdKSwgYXJndW1lbnQgc3ByZWFkIChmbiguLi5hcmdzKSksIGFuZCBTeW1ib2wuaXRlcmF0b3IuXG4gICAqIGRvd25sZXZlbEl0ZXJhdGlvbiBhbGxvd3MgZm9yIHRoZXNlIGl0ZXJhdGlvbiBwcmltaXRpdmVzIHRvIGJlIHVzZWQgbW9yZSBhY2N1cmF0ZWx5IGluIEVTNSBlbnZpcm9ubWVudHMgaWYgYSBTeW1ib2wuaXRlcmF0b3IgaW1wbGVtZW50YXRpb24gaXMgcHJlc2VudC5cbiAgICovXG4gIHJlYWRvbmx5IGRvd25sZXZlbEl0ZXJhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgYWRkaXRpb25hbCBjb25kaXRpb25zIHRoYXQgc2hvdWxkIHN1Y2NlZWQgd2hlbiBUeXBlU2NyaXB0IHJlc29sdmVzIGZyb20gYW4gYGV4cG9ydHNgIG9yIGBpbXBvcnRzYCBmaWVsZCBvZiBhIGBwYWNrYWdlLmpzb25gLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNjdXN0b21Db25kaXRpb25zXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tQ29uZGl0aW9ucz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBFbWl0IF9faW1wb3J0U3RhciBhbmQgX19pbXBvcnREZWZhdWx0IGhlbHBlcnMgZm9yIHJ1bnRpbWUgYmFiZWxcbiAgICogZWNvc3lzdGVtIGNvbXBhdGliaWxpdHkgYW5kIGVuYWJsZSAtLWFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHMgZm9yXG4gICAqIHR5cGVzeXN0ZW0gY29tcGF0aWJpbGl0eS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVzTW9kdWxlSW50ZXJvcD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIGRlY29yYXRvcnMsIHdoaWNoIGlzIGluIHN0YWdlIDIgb2YgdGhlIFRDMzkgc3RhbmRhcmRpemF0aW9uIHByb2Nlc3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGV4cGVyaW1lbnRhbERlY29yYXRvcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBkZWNvcmF0b3JzLCB3aGljaCBpcyBpbiBzdGFnZSAyIG9mIHRoZSBUQzM5IHN0YW5kYXJkaXphdGlvbiBwcm9jZXNzLlxuICAgKiBEZWNvcmF0b3JzIGFyZSBhIGxhbmd1YWdlIGZlYXR1cmUgd2hpY2ggaGFzbuKAmXQgeWV0IGJlZW4gZnVsbHkgcmF0aWZpZWQgaW50byB0aGUgSmF2YVNjcmlwdCBzcGVjaWZpY2F0aW9uLlxuICAgKiBUaGlzIG1lYW5zIHRoYXQgdGhlIGltcGxlbWVudGF0aW9uIHZlcnNpb24gaW4gVHlwZVNjcmlwdCBtYXkgZGlmZmVyIGZyb20gdGhlIGltcGxlbWVudGF0aW9uIGluIEphdmFTY3JpcHQgd2hlbiBpdCBpdCBkZWNpZGVkIGJ5IFRDMzkuXG4gICAqIFlvdSBjYW4gZmluZCBvdXQgbW9yZSBhYm91dCBkZWNvcmF0b3Igc3VwcG9ydCBpbiBUeXBlU2NyaXB0IGluIHRoZSBoYW5kYm9vay5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9kZWNvcmF0b3JzLmh0bWxcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBlbWl0RGVjb3JhdG9yTWV0YWRhdGE/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXBvcnQgZXJyb3JzIGZvciBtb3N0IFR5cGVTY3JpcHQtc3BlY2lmaWMgc3ludGF4IHRoYXQgaGFzIHJ1bnRpbWUgYmVoYXZpb3IuXG4gICAqIFJlcXVpcmVzIFR5cGVTY3JpcHQgNS44IG9yIGxhdGVyLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZy9lcmFzYWJsZVN5bnRheE9ubHkuaHRtbFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGVyYXNhYmxlU3ludGF4T25seT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERpc2FsbG93IGluY29uc2lzdGVudGx5LWNhc2VkIHJlZmVyZW5jZXMgdG8gdGhlIHNhbWUgZmlsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlQ29uc2lzdGVudENhc2luZ0luRmlsZU5hbWVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2ltcGxpZmllcyBUeXBlU2NyaXB0J3MgaGFuZGxpbmcgb2YgaW1wb3J0L2V4cG9ydCBgdHlwZWAgbW9kaWZpZXJzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyN2ZXJiYXRpbU1vZHVsZVN5bnRheFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHZlcmJhdGltTW9kdWxlU3ludGF4PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhpcyBmbGFnIHdvcmtzIGJlY2F1c2UgeW91IGNhbiB1c2UgYGltcG9ydCB0eXBlYCB0byBleHBsaWNpdGx5IGNyZWF0ZSBhbiBgaW1wb3J0YCBzdGF0ZW1lbnQgd2hpY2ggc2hvdWxkIG5ldmVyIGJlIGVtaXR0ZWQgaW50byBKYXZhU2NyaXB0LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBGb3IgVHlwZVNjcmlwdCA1LjArIHVzZSBgdmVyYmF0aW1Nb2R1bGVTeW50YXhgIGluc3RlYWQuXG4gICAqIFBvc2VkIGZvciBkZXByZWNhdGlvbiB1cG9uIFR5cGVTY3JpcHQgNS41LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNpbXBvcnRzTm90VXNlZEFzVmFsdWVzXG4gICAqIEBkZWZhdWx0IFwicmVtb3ZlXCJcbiAgICovXG4gIHJlYWRvbmx5IGltcG9ydHNOb3RVc2VkQXNWYWx1ZXM/OiBUeXBlU2NyaXB0SW1wb3J0c05vdFVzZWRBc1ZhbHVlcztcblxuICAvKipcbiAgICogV2hlbiBzZXQsIGluc3RlYWQgb2Ygd3JpdGluZyBvdXQgYSAuanMubWFwIGZpbGUgdG8gcHJvdmlkZSBzb3VyY2UgbWFwcyxcbiAgICogVHlwZVNjcmlwdCB3aWxsIGVtYmVkIHRoZSBzb3VyY2UgbWFwIGNvbnRlbnQgaW4gdGhlIC5qcyBmaWxlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5saW5lU291cmNlTWFwPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQsIFR5cGVTY3JpcHQgd2lsbCBpbmNsdWRlIHRoZSBvcmlnaW5hbCBjb250ZW50IG9mIHRoZSAudHMgZmlsZSBhcyBhbiBlbWJlZGRlZFxuICAgKiBzdHJpbmcgaW4gdGhlIHNvdXJjZSBtYXAuIFRoaXMgaXMgb2Z0ZW4gdXNlZnVsIGluIHRoZSBzYW1lIGNhc2VzIGFzIGlubGluZVNvdXJjZU1hcC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5saW5lU291cmNlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgdGhlIGdlbmVyYXRpb24gb2Ygc291cmNlbWFwIGZpbGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZU1hcD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGxvY2F0aW9uIHdoZXJlIGEgZGVidWdnZXIgc2hvdWxkIGxvY2F0ZSBUeXBlU2NyaXB0IGZpbGVzXG4gICAqIGluc3RlYWQgb2YgcmVsYXRpdmUgc291cmNlIGxvY2F0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VSb290Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tzIHRvIGVuc3VyZSB0aGF0IHNlcGFyYXRlIGNvbXBpbGF0aW9uIChzdWNoIGFzXG4gICAqIHdpdGggdHJhbnNwaWxlTW9kdWxlIG9yIEBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLXR5cGVzY3JpcHQpIHdvdWxkIGJlIHNhZmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpc29sYXRlZE1vZHVsZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTdXBwb3J0IEpTWCBpbiAudHN4IGZpbGVzOiBcInJlYWN0XCIsIFwicHJlc2VydmVcIiwgXCJyZWFjdC1uYXRpdmVcIiBldGMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkganN4PzogVHlwZVNjcmlwdEpzeE1vZGU7XG5cbiAgLyoqXG4gICAqIERlY2xhcmVzIHRoZSBtb2R1bGUgc3BlY2lmaWVyIHRvIGJlIHVzZWQgZm9yIGltcG9ydGluZyB0aGUganN4IGFuZCBqc3hzIGZhY3RvcnkgZnVuY3Rpb25zIHdoZW4gdXNpbmcganN4LlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGpzeEltcG9ydFNvdXJjZT86IHN0cmluZztcblxuICAvKipcbiAgICogUmVmZXJlbmNlIGZvciB0eXBlIGRlZmluaXRpb25zIC8gbGlicmFyaWVzIHRvIHVzZSAoZWcuIEVTMjAxNiwgRVM1LCBFUzIwMTgpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBbIFwiZXMyMDE4XCIgXVxuICAgKi9cbiAgcmVhZG9ubHkgbGliPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoaXMgc2V0dGluZyBjb250cm9scyBob3cgVHlwZVNjcmlwdCBkZXRlcm1pbmVzIHdoZXRoZXIgYSBmaWxlIGlzIGEgW3NjcmlwdCBvciBhIG1vZHVsZV0oaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svbW9kdWxlcy90aGVvcnkuaHRtbCNzY3JpcHRzLWFuZC1tb2R1bGVzLWluLWphdmFzY3JpcHQpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcImF1dG9cIlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlRGV0ZWN0aW9uPzogVHlwZVNjcmlwdE1vZHVsZURldGVjdGlvbjtcblxuICAvKipcbiAgICogU2V0cyB0aGUgbW9kdWxlIHN5c3RlbSBmb3IgdGhlIHByb2dyYW0uXG4gICAqIFNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9tb2R1bGVzLmh0bWwjYW1iaWVudC1tb2R1bGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIkNvbW1vbkpTXCJcbiAgICovXG4gIHJlYWRvbmx5IG1vZHVsZT86IHN0cmluZztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lIGhvdyBtb2R1bGVzIGdldCByZXNvbHZlZC4gRWl0aGVyIFwiTm9kZVwiIGZvciBOb2RlLmpzL2lvLmpzIHN0eWxlIHJlc29sdXRpb24sIG9yIFwiQ2xhc3NpY1wiLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIm5vZGVcIlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlUmVzb2x1dGlvbj86IFR5cGVTY3JpcHRNb2R1bGVSZXNvbHV0aW9uO1xuXG4gIC8qKlxuICAgKiBEbyBub3QgZW1pdCBvdXRwdXRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9FbWl0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT25seSBlbWl0IC5kLnRzIGZpbGVzOyBkbyBub3QgZW1pdCAuanMgZmlsZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbWl0RGVjbGFyYXRpb25Pbmx5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRG8gbm90IGVtaXQgY29tcGlsZXIgb3V0cHV0IGZpbGVzIGxpa2UgSmF2YVNjcmlwdCBzb3VyY2UgY29kZSwgc291cmNlLW1hcHMgb3JcbiAgICogZGVjbGFyYXRpb25zIGlmIGFueSBlcnJvcnMgd2VyZSByZXBvcnRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9FbWl0T25FcnJvcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlcG9ydCBlcnJvcnMgZm9yIGZhbGx0aHJvdWdoIGNhc2VzIGluIHN3aXRjaCBzdGF0ZW1lbnRzLiBFbnN1cmVzIHRoYXQgYW55IG5vbi1lbXB0eVxuICAgKiBjYXNlIGluc2lkZSBhIHN3aXRjaCBzdGF0ZW1lbnQgaW5jbHVkZXMgZWl0aGVyIGJyZWFrIG9yIHJldHVybi4gVGhpcyBtZWFucyB5b3Ugd29u4oCZdFxuICAgKiBhY2NpZGVudGFsbHkgc2hpcCBhIGNhc2UgZmFsbHRocm91Z2ggYnVnLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBub0ZhbGx0aHJvdWdoQ2FzZXNJblN3aXRjaD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluIHNvbWUgY2FzZXMgd2hlcmUgbm8gdHlwZSBhbm5vdGF0aW9ucyBhcmUgcHJlc2VudCwgVHlwZVNjcmlwdCB3aWxsIGZhbGwgYmFjayB0byBhXG4gICAqIHR5cGUgb2YgYW55IGZvciBhIHZhcmlhYmxlIHdoZW4gaXQgY2Fubm90IGluZmVyIHRoZSB0eXBlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBub0ltcGxpY2l0QW55PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVXNpbmcgYG5vSW1wbGljaXRPdmVycmlkZWAsIHlvdSBjYW4gZW5zdXJlIHRoYXQgc3ViLWNsYXNzZXMgbmV2ZXIgZ28gb3V0IG9mIHN5bmMgYXNcbiAgICogdGhleSBhcmUgcmVxdWlyZWQgdG8gZXhwbGljaXRseSBkZWNsYXJlIHRoYXQgdGhleSBhcmUgb3ZlcnJpZGluZyBhIG1lbWJlciB1c2luZyB0aGVcbiAgICogYG92ZXJyaWRlYCBrZXl3b3JkLiBUaGlzIGFsc28gaW1wcm92ZXMgcmVhZGFiaWxpdHkgb2YgdGhlIHByb2dyYW1tZXIncyBpbnRlbnQuXG4gICAqXG4gICAqIEF2YWlsYWJsZSB3aXRoIFR5cGVTY3JpcHQgNC4zIGFuZCBuZXdlci5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IG5vSW1wbGljaXRPdmVycmlkZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgVHlwZVNjcmlwdCB3aWxsIGNoZWNrIGFsbCBjb2RlIHBhdGhzIGluIGEgZnVuY3Rpb24gdG8gZW5zdXJlIHRoZXlcbiAgICogcmV0dXJuIGEgdmFsdWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG5vSW1wbGljaXRSZXR1cm5zPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFJhaXNlIGVycm9yIG9uIOKAmHRoaXPigJkgZXhwcmVzc2lvbnMgd2l0aCBhbiBpbXBsaWVkIOKAmGFueeKAmSB0eXBlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBub0ltcGxpY2l0VGhpcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJhaXNlIGVycm9yIG9uIHVzZSBvZiB0aGUgZG90IHN5bnRheCB0byBhY2Nlc3MgZmllbGRzIHdoaWNoIGFyZSBub3QgZGVmaW5lZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9Qcm9wZXJ0eUFjY2Vzc0Zyb21JbmRleFNpZ25hdHVyZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJhaXNlIGVycm9yIHdoZW4gYWNjZXNzaW5nIGluZGV4ZXMgb24gb2JqZWN0cyB3aXRoIHVua25vd24ga2V5cyBkZWZpbmVkIGluIGluZGV4IHNpZ25hdHVyZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG5vVW5jaGVja2VkSW5kZXhlZEFjY2Vzcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlcG9ydCBlcnJvcnMgb24gdW51c2VkIGxvY2FsIHZhcmlhYmxlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9VbnVzZWRMb2NhbHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXBvcnQgZXJyb3JzIG9uIHVudXNlZCBwYXJhbWV0ZXJzIGluIGZ1bmN0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9VbnVzZWRQYXJhbWV0ZXJzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWxsb3dzIGltcG9ydGluZyBtb2R1bGVzIHdpdGggYSDigJguanNvbuKAmSBleHRlbnNpb24sIHdoaWNoIGlzIGEgY29tbW9uIHByYWN0aWNlXG4gICAqIGluIG5vZGUgcHJvamVjdHMuIFRoaXMgaW5jbHVkZXMgZ2VuZXJhdGluZyBhIHR5cGUgZm9yIHRoZSBpbXBvcnQgYmFzZWQgb24gdGhlIHN0YXRpYyBKU09OIHNoYXBlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSByZXNvbHZlSnNvbk1vZHVsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNraXAgdHlwZSBjaGVja2luZyBvZiBhbGwgZGVjbGFyYXRpb24gZmlsZXMgKCouZC50cykuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBza2lwTGliQ2hlY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RyaWN0IGZsYWcgZW5hYmxlcyBhIHdpZGUgcmFuZ2Ugb2YgdHlwZSBjaGVja2luZyBiZWhhdmlvciB0aGF0IHJlc3VsdHMgaW4gc3Ryb25nZXIgZ3VhcmFudGVlc1xuICAgKiBvZiBwcm9ncmFtIGNvcnJlY3RuZXNzLiBUdXJuaW5nIHRoaXMgb24gaXMgZXF1aXZhbGVudCB0byBlbmFibGluZyBhbGwgb2YgdGhlIHN0cmljdCBtb2RlIGZhbWlseVxuICAgKiBvcHRpb25zLCB3aGljaCBhcmUgb3V0bGluZWQgYmVsb3cuIFlvdSBjYW4gdGhlbiB0dXJuIG9mZiBpbmRpdmlkdWFsIHN0cmljdCBtb2RlIGZhbWlseSBjaGVja3MgYXNcbiAgICogbmVlZGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzdHJpY3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHN0cmljdE51bGxDaGVja3MgaXMgZmFsc2UsIG51bGwgYW5kIHVuZGVmaW5lZCBhcmUgZWZmZWN0aXZlbHkgaWdub3JlZCBieSB0aGUgbGFuZ3VhZ2UuXG4gICAqIFRoaXMgY2FuIGxlYWQgdG8gdW5leHBlY3RlZCBlcnJvcnMgYXQgcnVudGltZS5cbiAgICogV2hlbiBzdHJpY3ROdWxsQ2hlY2tzIGlzIHRydWUsIG51bGwgYW5kIHVuZGVmaW5lZCBoYXZlIHRoZWlyIG93biBkaXN0aW5jdCB0eXBlcyBhbmQgeW914oCZbGxcbiAgICogZ2V0IGEgdHlwZSBlcnJvciBpZiB5b3UgdHJ5IHRvIHVzZSB0aGVtIHdoZXJlIGEgY29uY3JldGUgdmFsdWUgaXMgZXhwZWN0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHN0cmljdE51bGxDaGVja3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byB0cnVlLCBUeXBlU2NyaXB0IHdpbGwgcmFpc2UgYW4gZXJyb3Igd2hlbiBhIGNsYXNzIHByb3BlcnR5IHdhcyBkZWNsYXJlZCBidXRcbiAgICogbm90IHNldCBpbiB0aGUgY29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHN0cmljdFByb3BlcnR5SW5pdGlhbGl6YXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEbyBub3QgZW1pdCBkZWNsYXJhdGlvbnMgZm9yIGNvZGUgdGhhdCBoYXMgYW4gYEBpbnRlcm5hbGAgYW5ub3RhdGlvbiBpbiBpdOKAmXMgSlNEb2MgY29tbWVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RyaXBJbnRlcm5hbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEZvcmNlcyBUeXBlU2NyaXB0IHRvIGNvbnN1bHQgdGhlIGBleHBvcnRzYCBmaWVsZCBvZiBgcGFja2FnZS5qc29uYCBmaWxlcyBpZiBpdCBldmVyIHJlYWRzIGZyb20gYSBwYWNrYWdlIGluIGBub2RlX21vZHVsZXNgLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSByZXNvbHZlUGFja2FnZUpzb25FeHBvcnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRm9yY2VzIFR5cGVTY3JpcHQgdG8gY29uc3VsdCB0aGUgYGltcG9ydHNgIGZpZWxkIG9mIGBwYWNrYWdlLmpzb25gIHdoZW4gcGVyZm9ybWluZyBhIGxvb2t1cCB0aGF0IGJlZ2lucyB3aXRoIGAjYCBmcm9tIGEgZmlsZSB0aGF0IGhhcyBhIGBwYWNrYWdlLmpzb25gIGFzIGFuIGFuY2VzdG9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlc29sdmVQYWNrYWdlSnNvbkltcG9ydHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBNb2Rlcm4gYnJvd3NlcnMgc3VwcG9ydCBhbGwgRVM2IGZlYXR1cmVzLCBzbyBFUzYgaXMgYSBnb29kIGNob2ljZS4gWW91IG1pZ2h0IGNob29zZSB0byBzZXRcbiAgICogYSBsb3dlciB0YXJnZXQgaWYgeW91ciBjb2RlIGlzIGRlcGxveWVkIHRvIG9sZGVyIGVudmlyb25tZW50cywgb3IgYSBoaWdoZXIgdGFyZ2V0IGlmIHlvdXJcbiAgICogY29kZSBpcyBndWFyYW50ZWVkIHRvIHJ1biBpbiBuZXdlciBlbnZpcm9ubWVudHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiRVMyMDE4XCJcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldD86IHN0cmluZztcblxuICAvKipcbiAgICogT3V0cHV0IGRpcmVjdG9yeSBmb3IgdGhlIGNvbXBpbGVkIGZpbGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0RGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIGlucHV0IGZpbGVzLlxuICAgKlxuICAgKiBPbmx5IHVzZSB0byBjb250cm9sIHRoZSBvdXRwdXQgZGlyZWN0b3J5IHN0cnVjdHVyZSB3aXRoIGBvdXREaXJgLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9vdERpcj86IHN0cmluZztcblxuICAvKipcbiAgICogQWxsb3cgZGVmYXVsdCBpbXBvcnRzIGZyb20gbW9kdWxlcyB3aXRoIG5vIGRlZmF1bHQgZXhwb3J0LiBUaGlzIGRvZXMgbm90IGFmZmVjdCBjb2RlIGVtaXQsIGp1c3QgdHlwZWNoZWNraW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGF0IG9wdGlvbmFsIHByb3BlcnR5IHR5cGVzIHNob3VsZCBiZSBpbnRlcnByZXRlZCBleGFjdGx5IGFzIHdyaXR0ZW4sIG1lYW5pbmcgdGhhdCBgfCB1bmRlZmluZWRgIGlzIG5vdCBhZGRlZCB0byB0aGUgdHlwZVxuICAgKiBBdmFpbGFibGUgd2l0aCBUeXBlU2NyaXB0IDQuNCBhbmQgbmV3ZXIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBleGFjdE9wdGlvbmFsUHJvcGVydHlUeXBlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENoYW5nZSB0aGUgdHlwZSBvZiB0aGUgdmFyaWFibGUgaW4gYSBjYXRjaCBjbGF1c2UgZnJvbSBhbnkgdG8gdW5rbm93blxuICAgKiBBdmFpbGFibGUgd2l0aCBUeXBlU2NyaXB0IDQuNCBhbmQgbmV3ZXIuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHVzZVVua25vd25JbkNhdGNoVmFyaWFibGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTGV0cyB5b3Ugc2V0IGEgYmFzZSBkaXJlY3RvcnkgdG8gcmVzb2x2ZSBub24tYWJzb2x1dGUgbW9kdWxlIG5hbWVzLlxuICAgKlxuICAgKiBZb3UgY2FuIGRlZmluZSBhIHJvb3QgZm9sZGVyIHdoZXJlIHlvdSBjYW4gZG8gYWJzb2x1dGUgZmlsZSByZXNvbHV0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgYmFzZVVybD86IHN0cmluZztcblxuICAvKipcbiAgICogQSBzZXJpZXMgb2YgZW50cmllcyB3aGljaCByZS1tYXAgaW1wb3J0cyB0byBsb29rdXAgbG9jYXRpb25zIHJlbGF0aXZlIHRvIHRoZSBiYXNlVXJsLCB0aGVyZSBpcyBhIGxhcmdlciBjb3ZlcmFnZSBvZiBwYXRocyBpbiB0aGUgaGFuZGJvb2suXG4gICAqXG4gICAqIHBhdGhzIGxldHMgeW91IGRlY2xhcmUgaG93IFR5cGVTY3JpcHQgc2hvdWxkIHJlc29sdmUgYW4gaW1wb3J0IGluIHlvdXIgcmVxdWlyZS9pbXBvcnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH07XG5cbiAgLyoqXG4gICAqIElmIHR5cGVSb290cyBpcyBzcGVjaWZpZWQsIG9ubHkgcGFja2FnZXMgdW5kZXIgdHlwZVJvb3RzIHdpbGwgYmUgaW5jbHVkZWRcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcvI3R5cGVSb290c1xuICAgKi9cbiAgcmVhZG9ubHkgdHlwZVJvb3RzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIElmIHR5cGVzIGlzIHNwZWNpZmllZCwgb25seSBwYWNrYWdlcyBsaXN0ZWQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZ2xvYmFsIHNjb3BlXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI3R5cGVzXG4gICAqL1xuICByZWFkb25seSB0eXBlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUZWxscyBUeXBlU2NyaXB0IHRvIHNhdmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2plY3QgZ3JhcGggZnJvbSB0aGUgbGFzdCBjb21waWxhdGlvbiB0byBmaWxlcyBzdG9yZWQgb24gZGlzay5cbiAgICogVGhpcyBjcmVhdGVzIGEgc2VyaWVzIG9mIC50c2J1aWxkaW5mbyBmaWxlcyBpbiB0aGUgc2FtZSBmb2xkZXIgYXMgeW91ciBjb21waWxhdGlvbiBvdXRwdXQuXG4gICAqIFRoZXkgYXJlIG5vdCB1c2VkIGJ5IHlvdXIgSmF2YVNjcmlwdCBhdCBydW50aW1lIGFuZCBjYW4gYmUgc2FmZWx5IGRlbGV0ZWQuXG4gICAqIFlvdSBjYW4gcmVhZCBtb3JlIGFib3V0IHRoZSBmbGFnIGluIHRoZSAzLjQgcmVsZWFzZSBub3Rlcy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9yZWxlYXNlLW5vdGVzL3R5cGVzY3JpcHQtMy00Lmh0bWwjZmFzdGVyLXN1YnNlcXVlbnQtYnVpbGRzLXdpdGgtdGhlLS0taW5jcmVtZW50YWwtZmxhZ1xuICAgKlxuICAgKiBUbyBjb250cm9sIHdoaWNoIGZvbGRlcnMgeW91IHdhbnQgdG8gdGhlIGZpbGVzIHRvIGJlIGJ1aWx0IHRvLCB1c2UgdGhlIGNvbmZpZyBvcHRpb24gdHNCdWlsZEluZm9GaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5jcmVtZW50YWw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGlzIHNldHRpbmcgbGV0cyB5b3Ugc3BlY2lmeSBhIGZpbGUgZm9yIHN0b3JpbmcgaW5jcmVtZW50YWwgY29tcGlsYXRpb24gaW5mb3JtYXRpb24gYXMgYSBwYXJ0IG9mIGNvbXBvc2l0ZSBwcm9qZWN0cyB3aGljaCBlbmFibGVzIGZhc3RlciBidWlsZGluZyBvZiBsYXJnZXIgVHlwZVNjcmlwdCBjb2RlYmFzZXMuXG4gICAqIFlvdSBjYW4gcmVhZCBtb3JlIGFib3V0IGNvbXBvc2l0ZSBwcm9qZWN0cyBpbiB0aGUgaGFuZGJvb2suXG4gICAqL1xuICByZWFkb25seSB0c0J1aWxkSW5mb0ZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFsbG93IFVudXNlZCBMYWJlbHNcbiAgICpcbiAgICogV2hlbjpcbiAgICpcbiAgICogLSBgdW5kZWZpbmVkYCAoZGVmYXVsdCkgcHJvdmlkZSBzdWdnZXN0aW9ucyBhcyB3YXJuaW5ncyB0byBlZGl0b3JzXG4gICAqIC0gYHRydWVgIHVudXNlZCBsYWJlbHMgYXJlIGlnbm9yZWRcbiAgICogLSBgZmFsc2VgIHJhaXNlcyBjb21waWxlciBlcnJvcnMgYWJvdXQgdW51c2VkIGxhYmVsc1xuICAgKlxuICAgKiBMYWJlbHMgYXJlIHZlcnkgcmFyZSBpbiBKYXZhU2NyaXB0IGFuZCB0eXBpY2FsbHkgaW5kaWNhdGUgYW4gYXR0ZW1wdCB0byB3cml0ZSBhbiBvYmplY3QgbGl0ZXJhbDpcbiAgICpcbiAgICogYGBgdHNcbiAgICogZnVuY3Rpb24gdmVyaWZ5QWdlKGFnZTogbnVtYmVyKSB7XG4gICAqICAgLy8gRm9yZ290ICdyZXR1cm4nIHN0YXRlbWVudFxuICAgKiAgIGlmIChhZ2UgPiAxOCkge1xuICAgKiAgICAgdmVyaWZpZWQ6IHRydWU7XG4gICAqIC8vICBeXl5eXl5eXiBVbnVzZWQgbGFiZWwuXG4gICAqICAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNhbGxvd1VudXNlZExhYmVsc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dVbnVzZWRMYWJlbHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbGxvdyBVbnJlYWNoYWJsZSBDb2RlXG4gICAqXG4gICAqIFdoZW46XG4gICAqXG4gICAqIC0gYHVuZGVmaW5lZGAgKGRlZmF1bHQpIHByb3ZpZGUgc3VnZ2VzdGlvbnMgYXMgd2FybmluZ3MgdG8gZWRpdG9yc1xuICAgKiAtIGB0cnVlYCB1bnJlYWNoYWJsZSBjb2RlIGlzIGlnbm9yZWRcbiAgICogLSBgZmFsc2VgIHJhaXNlcyBjb21waWxlciBlcnJvcnMgYWJvdXQgdW5yZWFjaGFibGUgY29kZVxuICAgKlxuICAgKiBUaGVzZSB3YXJuaW5ncyBhcmUgb25seSBhYm91dCBjb2RlIHdoaWNoIGlzIHByb3ZhYmx5IHVucmVhY2hhYmxlIGR1ZSB0byB0aGUgdXNlIG9mIEphdmFTY3JpcHQgc3ludGF4LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNhbGxvd1VucmVhY2hhYmxlQ29kZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dVbnJlYWNoYWJsZUNvZGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDaGVjayBKU1xuICAgKlxuICAgKiBXb3JrcyBpbiB0YW5kZW0gd2l0aCBbYWxsb3dKc10oaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2FsbG93SnMpLiBXaGVuIGNoZWNrSnMgaXMgZW5hYmxlZCB0aGVuXG4gICAqIGVycm9ycyBhcmUgcmVwb3J0ZWQgaW4gSmF2YVNjcmlwdCBmaWxlcy4gVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiBpbmNsdWRpbmcgLy8gQHRzLWNoZWNrIGF0IHRoZSB0b3Agb2YgYWxsXG4gICAqIEphdmFTY3JpcHQgZmlsZXMgd2hpY2ggYXJlIGluY2x1ZGVkIGluIHlvdXIgcHJvamVjdC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjY2hlY2tKc1xuICAgKi9cbiAgcmVhZG9ubHkgY2hlY2tKcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29udGFpbmVyIGZvciBgVHlwZXNjcmlwdENvbmZpZ2AgYHRzY29uZmlnLmpzb25gIGJhc2UgY29uZmlndXJhdGlvbihzKS5cbiAqIEV4dGVuZGluZyBmcm9tIG1vcmUgdGhhbiBvbmUgYmFzZSBjb25maWcgZmlsZSByZXF1aXJlcyBUeXBlU2NyaXB0IDUuMCsuXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlc2NyaXB0Q29uZmlnRXh0ZW5kcyB7XG4gIC8qKlxuICAgKiBGYWN0b3J5IGZvciBjcmVhdGlvbiBmcm9tIGFycmF5IG9mIGZpbGUgcGF0aHMuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFR5cGVTY3JpcHQgNS4wKyBpcyByZXF1aXJlZCB0byBzcGVjaWZ5IG1vcmUgdGhhbiBvbmUgdmFsdWUgaW4gYHBhdGhzYC5cbiAgICpcbiAgICogQHBhcmFtIHBhdGhzIEFic29sdXRlIG9yIHJlbGF0aXZlIHBhdGhzIHRvIGJhc2UgYHRzY29uZmlnLmpzb25gIGZpbGVzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tUGF0aHMocGF0aHM6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIG5ldyBUeXBlc2NyaXB0Q29uZmlnRXh0ZW5kcyhwYXRocyk7XG4gIH1cblxuICAvKipcbiAgICogRmFjdG9yeSBmb3IgY3JlYXRpb24gZnJvbSBhcnJheSBvZiBvdGhlciBgVHlwZXNjcmlwdENvbmZpZ2AgaW5zdGFuY2VzLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUeXBlU2NyaXB0IDUuMCsgaXMgcmVxdWlyZWQgdG8gc3BlY2lmeSBtb3JlIHRoYW4gb24gdmFsdWUgaW4gYGNvbmZpZ3NgLlxuICAgKlxuICAgKiBAcGFyYW0gY29uZmlncyBCYXNlIGBUeXBlc2NyaXB0Q29uZmlnYCBpbnN0YW5jZXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21UeXBlc2NyaXB0Q29uZmlncyhjb25maWdzOiBUeXBlc2NyaXB0Q29uZmlnW10pIHtcbiAgICBjb25zdCBwYXRocyA9IGNvbmZpZ3MubWFwKChjb25maWcpID0+IGNvbmZpZy5maWxlLmFic29sdXRlUGF0aCk7XG4gICAgcmV0dXJuIFR5cGVzY3JpcHRDb25maWdFeHRlbmRzLmZyb21QYXRocyhwYXRocyk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGJhc2VzOiBzdHJpbmdbXTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKGJhc2VzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuYmFzZXMgPSBiYXNlcztcbiAgfVxuXG4gIHB1YmxpYyB0b0pTT04oKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmJhc2VzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUeXBlc2NyaXB0Q29uZmlnIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBfZXh0ZW5kczogVHlwZXNjcmlwdENvbmZpZ0V4dGVuZHM7XG4gIHB1YmxpYyByZWFkb25seSBjb21waWxlck9wdGlvbnM/OiBUeXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zO1xuICBwcml2YXRlIHJlYWRvbmx5IGluY2x1ZGVTZXQ6IFNldDxzdHJpbmc+O1xuICBwcml2YXRlIHJlYWRvbmx5IGV4Y2x1ZGVTZXQ6IFNldDxzdHJpbmc+O1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZU5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGZpbGU6IEpzb25GaWxlO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IFR5cGVzY3JpcHRDb25maWdPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG4gICAgY29uc3QgZmlsZU5hbWUgPSBvcHRpb25zLmZpbGVOYW1lID8/IFwidHNjb25maWcuanNvblwiO1xuXG4gICAgaWYgKCFvcHRpb25zLmV4dGVuZHMgJiYgIW9wdGlvbnMuY29tcGlsZXJPcHRpb25zKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiVHlwZXNjcmlwdENvbmZpZzogTXVzdCBwcm92aWRlIGVpdGhlciBgZXh0ZW5kc2Agb3IgYGNvbXBpbGVyT3B0aW9uc2AgKG9yIGJvdGgpLlwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9leHRlbmRzID0gb3B0aW9ucy5leHRlbmRzID8/IFR5cGVzY3JpcHRDb25maWdFeHRlbmRzLmZyb21QYXRocyhbXSk7XG4gICAgdGhpcy5pbmNsdWRlU2V0ID0gb3B0aW9ucy5pbmNsdWRlXG4gICAgICA/IG5ldyBTZXQob3B0aW9ucy5pbmNsdWRlKVxuICAgICAgOiBuZXcgU2V0KFtcIioqLyoudHNcIl0pO1xuICAgIHRoaXMuZXhjbHVkZVNldCA9IG9wdGlvbnMuZXhjbHVkZVxuICAgICAgPyBuZXcgU2V0KG9wdGlvbnMuZXhjbHVkZSlcbiAgICAgIDogbmV3IFNldChbXCJub2RlX21vZHVsZXNcIl0pO1xuICAgIHRoaXMuZmlsZU5hbWUgPSBmaWxlTmFtZTtcblxuICAgIHRoaXMuY29tcGlsZXJPcHRpb25zID0gb3B0aW9ucy5jb21waWxlck9wdGlvbnM7XG5cbiAgICB0aGlzLmZpbGUgPSBuZXcgSnNvbkZpbGUocHJvamVjdCwgZmlsZU5hbWUsIHtcbiAgICAgIGFsbG93Q29tbWVudHM6IHRydWUsXG4gICAgICBvYmo6IHtcbiAgICAgICAgZXh0ZW5kczogKCkgPT4gdGhpcy5yZW5kZXJFeHRlbmRzKCksXG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczogdGhpcy5jb21waWxlck9wdGlvbnMsXG4gICAgICAgIGluY2x1ZGU6ICgpID0+IHRoaXMuaW5jbHVkZSxcbiAgICAgICAgZXhjbHVkZTogKCkgPT4gdGhpcy5leGNsdWRlLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9qZWN0IGluc3RhbmNlb2YgTm9kZVByb2plY3QpIHtcbiAgICAgIHByb2plY3QubnBtaWdub3JlPy5leGNsdWRlKGAvJHtmaWxlTmFtZX1gKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluY2x1ZGUoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5pbmNsdWRlU2V0XTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZXhjbHVkZSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmV4Y2x1ZGVTZXRdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciBhcHByb3ByaWF0ZSB2YWx1ZSBmb3IgYGV4dGVuZHNgIGZpZWxkLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJFeHRlbmRzKCk6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5leHRlbmRzLmxlbmd0aCA8PSAxKSB7XG4gICAgICAvLyByZW5kZXIgc3RyaW5nIHZhbHVlIHdoZW4gb25seSBvbmUgZXh0ZW5zaW9uIChUUzw1LjApO1xuICAgICAgLy8gb21pdCBpZiBubyBleHRlbnNpb25zLlxuICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5kc1swXTtcbiAgICB9XG4gICAgLy8gcmVuZGVyIG1hbnkgZXh0ZW5zaW9ucyBhcyBhcnJheSAoVFM+PTUuMClcbiAgICByZXR1cm4gdGhpcy5leHRlbmRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdmFsaWQgVHlwZVNjcmlwdCBleHRlbmRzIHBhdGhzIHJlbGF0aXZlIHRvIHRoaXMgY29uZmlnLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGlzIHdpbGwgb25seSByZXNvbHZlIHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gdGhpcyBjb25maWcgdG8gYW5vdGhlciBnaXZlblxuICAgKiBhbiBhYnNvbHV0ZSBwYXRoIGFzIGlucHV0LiBBbnkgbm9uLWFic29sdXRlIHBhdGggb3Igb3RoZXIgc3RyaW5nIHdpbGwgYmUgcmV0dXJuZWQgYXMgaXMuXG4gICAqIFRoaXMgaXMgdG8gcHJlc2VydmUgbWFudWFsbHkgc3BlY2lmaWVkIHJlbGF0aXZlIHBhdGhzIGFzIHdlbGwgYXMgbnBtIGltcG9ydCBwYXRocy5cbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZ1BhdGggUGF0aCB0byByZXNvbHZlIGFnYWluc3QuXG4gICAqL1xuICBwdWJsaWMgcmVzb2x2ZUV4dGVuZHNQYXRoKGNvbmZpZ1BhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gaWYgbm90IGFic29sdXRlIGFzc3VtZSB1c2VyLWRlZmluZWQgcGF0aCAob3IgbnBtIHBhY2thZ2UpLlxuICAgIGlmICghcGF0aC5pc0Fic29sdXRlKGNvbmZpZ1BhdGgpKSByZXR1cm4gY29uZmlnUGF0aDtcbiAgICBjb25zdCByZWxhdGl2ZUNvbmZpZyA9IHBhdGgucmVsYXRpdmUoXG4gICAgICBwYXRoLmRpcm5hbWUodGhpcy5maWxlLmFic29sdXRlUGF0aCksXG4gICAgICBjb25maWdQYXRoLFxuICAgICk7XG4gICAgLy8gZW5zdXJlIGltbWVkaWF0ZSBzaWJsaW5nIGZpbGVzIGFyZSBwcmVmaXhlZCB3aXRoICcuLydcbiAgICAvLyB0eXBlc2NyaXB0IGZpZ3VyZXMgdGhpcyBvdXQsIGJ1dCBzb21lIHRvb2xzIHNlZW1pbmdseSBicmVhayB3aXRob3V0IGl0IChpLmUsIGVzbGludCkuXG4gICAgY29uc3QgeyBkaXIsIC4uLnBhdGhQYXJ0cyB9ID0gcGF0aC5wYXJzZShyZWxhdGl2ZUNvbmZpZyk7XG4gICAgY29uc3QgY29uZmlnRGlyID0gZGlyXG4gICAgICA/IHBhdGguZm9ybWF0KHsgZGlyOiBkaXIuc3RhcnRzV2l0aChcIi4uXCIpID8gXCJcIiA6IFwiLlwiLCBiYXNlOiBkaXIgfSlcbiAgICAgIDogXCIuXCI7XG5cbiAgICBjb25zdCBleHRlbmRzUGF0aCA9IHBhdGguZm9ybWF0KHsgLi4ucGF0aFBhcnRzLCBkaXI6IGNvbmZpZ0RpciB9KTtcblxuICAgIHJldHVybiBub3JtYWxpemVQZXJzaXN0ZWRQYXRoKGV4dGVuZHNQYXRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB1c2FnZSBvZiBgZXh0ZW5kc2AgYWdhaW5zdCBjdXJyZW50IFR5cGVTY3JpcHQgdmVyc2lvbi5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVFeHRlbmRzKCkge1xuICAgIGNvbnN0IHByb2plY3QgPSB0aGlzLnByb2plY3Q7XG4gICAgY29uc3QgaGFzT25lT3JOb25lRXh0ZW5kcyA9IHRoaXMuZXh0ZW5kcy5sZW5ndGggPD0gMTtcbiAgICBjb25zdCBpc05vZGVQcm9qZWN0ID0gcHJvamVjdCBpbnN0YW5jZW9mIE5vZGVQcm9qZWN0O1xuICAgIGlmIChoYXNPbmVPck5vbmVFeHRlbmRzIHx8ICFpc05vZGVQcm9qZWN0KSB7XG4gICAgICAvLyBhbHdheXMgYWNjZXB0IG5vIGV4dGVuZHMgb3Igc2luZ3VsYXIgZXh0ZW5kcy5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdHNWZXJzaW9uID0gc2VtdmVyLmNvZXJjZShcbiAgICAgIHByb2plY3QucGFja2FnZS50cnlSZXNvbHZlRGVwZW5kZW5jeVZlcnNpb24oXCJ0eXBlc2NyaXB0XCIpLFxuICAgICAgeyBsb29zZTogdHJ1ZSB9LFxuICAgICk7XG4gICAgaWYgKHRzVmVyc2lvbiAmJiB0c1ZlcnNpb24ubWFqb3IgPCA1KSB7XG4gICAgICB0aGlzLnByb2plY3QubG9nZ2VyLndhcm4oXG4gICAgICAgIFwiVHlwZVNjcmlwdCA8IDUuMC4wIGNhbiBvbmx5IGV4dGVuZCBmcm9tIGEgc2luZ2xlIGJhc2UgY29uZmlnLlwiLFxuICAgICAgICBgVHlwZVNjcmlwdCBWZXJzaW9uOiAke3RzVmVyc2lvbi5mb3JtYXQoKX1gLFxuICAgICAgICBgRmlsZTogJHt0aGlzLmZpbGUuYWJzb2x1dGVQYXRofWAsXG4gICAgICAgIGBFeHRlbmRzOiAke3RoaXMuZXh0ZW5kc31gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXJyYXkgb2YgYmFzZSBgdHNjb25maWcuanNvbmAgcGF0aHMuXG4gICAqIEFueSBhYnNvbHV0ZSBwYXRocyBhcmUgcmVzb2x2ZWQgcmVsYXRpdmUgdG8gdGhpcyBpbnN0YW5jZSxcbiAgICogd2hpbGUgYW55IHJlbGF0aXZlIHBhdGhzIGFyZSB1c2VkIGFzIGlzLlxuICAgKi9cbiAgcHVibGljIGdldCBleHRlbmRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fZXh0ZW5kc1xuICAgICAgLnRvSlNPTigpXG4gICAgICAubWFwKCh2YWx1ZSkgPT4gdGhpcy5yZXNvbHZlRXh0ZW5kc1BhdGgodmFsdWUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRlbmQgZnJvbSBiYXNlIGBUeXBlc2NyaXB0Q29uZmlnYCBpbnN0YW5jZS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVHlwZVNjcmlwdCA1LjArIGlzIHJlcXVpcmVkIHRvIGV4dGVuZCBmcm9tIG1vcmUgdGhhbiBvbmUgYmFzZSBgVHlwZXNjcmlwdENvbmZpZ2AuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBCYXNlIGBUeXBlc2NyaXB0Q29uZmlnYCBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBhZGRFeHRlbmRzKHZhbHVlOiBUeXBlc2NyaXB0Q29uZmlnKSB7XG4gICAgdGhpcy5fZXh0ZW5kcyA9IFR5cGVzY3JpcHRDb25maWdFeHRlbmRzLmZyb21QYXRocyhbXG4gICAgICAuLi50aGlzLl9leHRlbmRzLnRvSlNPTigpLFxuICAgICAgdmFsdWUuZmlsZS5hYnNvbHV0ZVBhdGgsXG4gICAgXSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGluY2x1ZGUgcGF0dGVybiB0byB0aGUgYGluY2x1ZGVgIGFycmF5IG9mIHRoZSBUU0NvbmZpZy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjaW5jbHVkZVxuICAgKlxuICAgKiBAcGFyYW0gcGF0dGVybiBUaGUgcGF0dGVybiB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWRkSW5jbHVkZShwYXR0ZXJuOiBzdHJpbmcpIHtcbiAgICB0aGlzLmluY2x1ZGUucHVzaChwYXR0ZXJuKTtcbiAgICB0aGlzLmluY2x1ZGVTZXQuYWRkKHBhdHRlcm4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBleGNsdWRlIHBhdHRlcm4gdG8gdGhlIGBleGNsdWRlYCBhcnJheSBvZiB0aGUgVFNDb25maWcuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2V4Y2x1ZGVcbiAgICpcbiAgICogQHBhcmFtIHBhdHRlcm4gVGhlIHBhdHRlcm4gdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFkZEV4Y2x1ZGUocGF0dGVybjogc3RyaW5nKSB7XG4gICAgdGhpcy5leGNsdWRlLnB1c2gocGF0dGVybik7XG4gICAgdGhpcy5leGNsdWRlU2V0LmFkZChwYXR0ZXJuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW4gaW5jbHVkZSBwYXR0ZXJuIGZyb20gdGhlIGBpbmNsdWRlYCBhcnJheSBvZiB0aGUgVFNDb25maWcuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2luY2x1ZGVcbiAgICpcbiAgICogQHBhcmFtIHBhdHRlcm4gVGhlIHBhdHRlcm4gdG8gcmVtb3ZlLlxuICAgKi9cbiAgcHVibGljIHJlbW92ZUluY2x1ZGUocGF0dGVybjogc3RyaW5nKSB7XG4gICAgdGhpcy5pbmNsdWRlU2V0LmRlbGV0ZShwYXR0ZXJuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW4gZXhjbHVkZSBwYXR0ZXJuIGZyb20gdGhlIGBleGNsdWRlYCBhcnJheSBvZiB0aGUgVFNDb25maWcuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2V4Y2x1ZGVcbiAgICpcbiAgICogQHBhcmFtIHBhdHRlcm4gVGhlIHBhdHRlcm4gdG8gcmVtb3ZlLlxuICAgKi9cbiAgcHVibGljIHJlbW92ZUV4Y2x1ZGUocGF0dGVybjogc3RyaW5nKSB7XG4gICAgdGhpcy5leGNsdWRlU2V0LmRlbGV0ZShwYXR0ZXJuKTtcbiAgfVxuXG4gIHByZVN5bnRoZXNpemUoKSB7XG4gICAgc3VwZXIucHJlU3ludGhlc2l6ZSgpO1xuICAgIHRoaXMudmFsaWRhdGVFeHRlbmRzKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -19,7 +19,7 @@ const PATCH_CREATED_OUTPUT = "patch_created";
|
|
|
19
19
|
* Upgrade node project dependencies.
|
|
20
20
|
*/
|
|
21
21
|
class UpgradeDependencies extends component_1.Component {
|
|
22
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.UpgradeDependencies", version: "0.104.
|
|
22
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.UpgradeDependencies", version: "0.104.4" };
|
|
23
23
|
/**
|
|
24
24
|
* The workflows that execute the upgrades. One workflow per branch.
|
|
25
25
|
*/
|
|
@@ -407,7 +407,7 @@ exports.UpgradeDependencies = UpgradeDependencies;
|
|
|
407
407
|
*/
|
|
408
408
|
class UpgradeDependenciesSchedule {
|
|
409
409
|
cron;
|
|
410
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.UpgradeDependenciesSchedule", version: "0.104.
|
|
410
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.UpgradeDependenciesSchedule", version: "0.104.4" };
|
|
411
411
|
/**
|
|
412
412
|
* Disables automatic upgrades.
|
|
413
413
|
*/
|
package/lib/javascript/yarnrc.js
CHANGED
|
@@ -113,7 +113,7 @@ var YarnTaskPoolMode;
|
|
|
113
113
|
YarnTaskPoolMode["WORKERS"] = "workers";
|
|
114
114
|
})(YarnTaskPoolMode || (exports.YarnTaskPoolMode = YarnTaskPoolMode = {}));
|
|
115
115
|
class Yarnrc extends component_1.Component {
|
|
116
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Yarnrc", version: "0.104.
|
|
116
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Yarnrc", version: "0.104.4" };
|
|
117
117
|
constructor(project, options = {}) {
|
|
118
118
|
super(project);
|
|
119
119
|
this.updateGitAttributes();
|
package/lib/json-patch.js
CHANGED
|
@@ -34,7 +34,7 @@ const TEST_FAILURE_BEHAVIOR_SYMBOL = Symbol.for("testFailureBehavior");
|
|
|
34
34
|
*/
|
|
35
35
|
class JsonPatch {
|
|
36
36
|
operation;
|
|
37
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.JsonPatch", version: "0.104.
|
|
37
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.JsonPatch", version: "0.104.4" };
|
|
38
38
|
/**
|
|
39
39
|
* Applies a set of JSON-Patch (RFC-6902) operations to `document` and returns the result.
|
|
40
40
|
* @param document The document to patch
|
package/lib/json.js
CHANGED
|
@@ -7,7 +7,7 @@ const object_file_1 = require("./object-file");
|
|
|
7
7
|
* Represents a JSON file.
|
|
8
8
|
*/
|
|
9
9
|
class JsonFile extends object_file_1.ObjectFile {
|
|
10
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.JsonFile", version: "0.104.
|
|
10
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.JsonFile", version: "0.104.4" };
|
|
11
11
|
newline;
|
|
12
12
|
allowComments = true;
|
|
13
13
|
/**
|
package/lib/license.js
CHANGED
|
@@ -38,7 +38,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
38
38
|
const fs = __importStar(require("fs"));
|
|
39
39
|
const file_1 = require("./file");
|
|
40
40
|
class License extends file_1.FileBase {
|
|
41
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.License", version: "0.104.
|
|
41
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.License", version: "0.104.4" };
|
|
42
42
|
text;
|
|
43
43
|
constructor(project, options) {
|
|
44
44
|
super(project, "LICENSE", {
|
package/lib/logger.js
CHANGED
|
@@ -15,7 +15,7 @@ const constructs_1 = require("./util/constructs");
|
|
|
15
15
|
* Project-level logging utilities.
|
|
16
16
|
*/
|
|
17
17
|
class Logger extends component_1.Component {
|
|
18
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Logger", version: "0.104.
|
|
18
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Logger", version: "0.104.4" };
|
|
19
19
|
level;
|
|
20
20
|
usePrefix;
|
|
21
21
|
constructor(scope, options = {}) {
|
package/lib/makefile.js
CHANGED
|
@@ -7,7 +7,7 @@ const file_1 = require("./file");
|
|
|
7
7
|
* Minimal Makefile.
|
|
8
8
|
*/
|
|
9
9
|
class Makefile extends file_1.FileBase {
|
|
10
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Makefile", version: "0.104.
|
|
10
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Makefile", version: "0.104.4" };
|
|
11
11
|
/**
|
|
12
12
|
* List of rule definitions.
|
|
13
13
|
*/
|
package/lib/object-file.js
CHANGED
|
@@ -9,7 +9,7 @@ const util_1 = require("./util");
|
|
|
9
9
|
* Represents an Object file.
|
|
10
10
|
*/
|
|
11
11
|
class ObjectFile extends file_1.FileBase {
|
|
12
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ObjectFile", version: "0.104.
|
|
12
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ObjectFile", version: "0.104.4" };
|
|
13
13
|
/**
|
|
14
14
|
* The output object. This object can be mutated until the project is
|
|
15
15
|
* synthesized.
|
|
@@ -25,7 +25,7 @@ const util_1 = require("../util");
|
|
|
25
25
|
* });
|
|
26
26
|
*/
|
|
27
27
|
class PolarisGoCoverity extends coverity_1.PolarisCoverity {
|
|
28
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.polaris.PolarisGoCoverity", version: "0.104.
|
|
28
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.polaris.PolarisGoCoverity", version: "0.104.4" };
|
|
29
29
|
constructor(project, options) {
|
|
30
30
|
super(project, (0, util_1.deepMerge)([
|
|
31
31
|
{
|
|
@@ -26,7 +26,7 @@ const util_1 = require("../util");
|
|
|
26
26
|
* });
|
|
27
27
|
*/
|
|
28
28
|
class PolarisJavaCoverity extends coverity_1.PolarisCoverity {
|
|
29
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.polaris.PolarisJavaCoverity", version: "0.104.
|
|
29
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.polaris.PolarisJavaCoverity", version: "0.104.4" };
|
|
30
30
|
constructor(project, options) {
|
|
31
31
|
super(project, (0, util_1.deepMerge)([
|
|
32
32
|
{
|
|
@@ -25,7 +25,7 @@ const util_1 = require("../util");
|
|
|
25
25
|
* });
|
|
26
26
|
*/
|
|
27
27
|
class PolarisJavascriptCoverity extends coverity_1.PolarisCoverity {
|
|
28
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.polaris.PolarisJavascriptCoverity", version: "0.104.
|
|
28
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.polaris.PolarisJavascriptCoverity", version: "0.104.4" };
|
|
29
29
|
constructor(project, options) {
|
|
30
30
|
super(project, (0, util_1.deepMerge)([
|
|
31
31
|
{
|
package/lib/polaris/coverity.js
CHANGED
|
@@ -13,7 +13,7 @@ const coverity_config_1 = require("./coverity-config");
|
|
|
13
13
|
* @see https://docs.blackduck.com/r/cov_polaris/latest/coverity-on-polaris/configuration-file-schema.html
|
|
14
14
|
*/
|
|
15
15
|
class PolarisCoverity extends component_1.Component {
|
|
16
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.polaris.PolarisCoverity", version: "0.104.
|
|
16
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.polaris.PolarisCoverity", version: "0.104.4" };
|
|
17
17
|
/**
|
|
18
18
|
* The YAML file for the Coverity on Polaris configuration.
|
|
19
19
|
*/
|
package/lib/project-build.js
CHANGED
|
@@ -15,7 +15,7 @@ const component_1 = require("./component");
|
|
|
15
15
|
* 6. package
|
|
16
16
|
*/
|
|
17
17
|
class ProjectBuild extends component_1.Component {
|
|
18
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjectBuild", version: "0.104.
|
|
18
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjectBuild", version: "0.104.4" };
|
|
19
19
|
/**
|
|
20
20
|
* The task responsible for a full release build.
|
|
21
21
|
*/
|
package/lib/project-tree.js
CHANGED
|
@@ -17,7 +17,7 @@ const json_1 = require("./json");
|
|
|
17
17
|
* @stability experimental
|
|
18
18
|
*/
|
|
19
19
|
class ProjectTree extends component_1.Component {
|
|
20
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjectTree", version: "0.104.
|
|
20
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjectTree", version: "0.104.4" };
|
|
21
21
|
file;
|
|
22
22
|
constructor(project) {
|
|
23
23
|
super(project, new.target.name);
|
package/lib/project.js
CHANGED
|
@@ -65,7 +65,7 @@ const DEFAULT_OUTDIR = ".";
|
|
|
65
65
|
* Base project
|
|
66
66
|
*/
|
|
67
67
|
class Project extends constructs_1.Construct {
|
|
68
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Project", version: "0.104.
|
|
68
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Project", version: "0.104.4" };
|
|
69
69
|
/**
|
|
70
70
|
* The name of the default task (the task executed when `projen` is run without arguments). Normally
|
|
71
71
|
* this task should synthesize the project files.
|
package/lib/projects.js
CHANGED
|
@@ -44,7 +44,7 @@ const option_hints_1 = require("./option-hints");
|
|
|
44
44
|
* Programmatic API for projen.
|
|
45
45
|
*/
|
|
46
46
|
class Projects {
|
|
47
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Projects", version: "0.104.
|
|
47
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Projects", version: "0.104.4" };
|
|
48
48
|
/**
|
|
49
49
|
* Creates a new project with defaults.
|
|
50
50
|
*
|
package/lib/projenrc-json.js
CHANGED
|
@@ -9,7 +9,7 @@ const projenrc_1 = require("./projenrc");
|
|
|
9
9
|
* Sets up a project to use JSON for projenrc.
|
|
10
10
|
*/
|
|
11
11
|
class ProjenrcJson extends projenrc_1.ProjenrcFile {
|
|
12
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjenrcJson", version: "0.104.
|
|
12
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjenrcJson", version: "0.104.4" };
|
|
13
13
|
filePath;
|
|
14
14
|
constructor(project, options = {}) {
|
|
15
15
|
super(project);
|
package/lib/projenrc.js
CHANGED
|
@@ -7,7 +7,7 @@ const component_1 = require("./component");
|
|
|
7
7
|
* A component representing the projen runtime configuration
|
|
8
8
|
*/
|
|
9
9
|
class ProjenrcFile extends component_1.Component {
|
|
10
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjenrcFile", version: "0.104.
|
|
10
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjenrcFile", version: "0.104.4" };
|
|
11
11
|
/**
|
|
12
12
|
* Returns the `Projenrc` instance associated with a project or `undefined` if
|
|
13
13
|
* there is no Projenrc.
|
package/lib/properties-file.js
CHANGED
|
@@ -35,7 +35,7 @@ const util_1 = require("./util");
|
|
|
35
35
|
* // sonar.sources=src
|
|
36
36
|
*/
|
|
37
37
|
class PropertiesFile extends object_file_1.ObjectFile {
|
|
38
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.PropertiesFile", version: "0.104.
|
|
38
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.PropertiesFile", version: "0.104.4" };
|
|
39
39
|
comment;
|
|
40
40
|
constructor(scope, filePath, options) {
|
|
41
41
|
super(scope, filePath, options);
|
package/lib/python/pip.js
CHANGED
|
@@ -9,7 +9,7 @@ const dependencies_1 = require("../dependencies");
|
|
|
9
9
|
* Manages dependencies using a requirements.txt file and the pip CLI tool.
|
|
10
10
|
*/
|
|
11
11
|
class Pip extends component_1.Component {
|
|
12
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Pip", version: "0.104.
|
|
12
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Pip", version: "0.104.4" };
|
|
13
13
|
installCiTask;
|
|
14
14
|
constructor(project, _options = {}) {
|
|
15
15
|
super(project);
|
package/lib/python/poetry.js
CHANGED
|
@@ -47,7 +47,7 @@ const exec_1 = require("../util/exec");
|
|
|
47
47
|
* poetry CLI tool.
|
|
48
48
|
*/
|
|
49
49
|
class Poetry extends component_1.Component {
|
|
50
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Poetry", version: "0.104.
|
|
50
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Poetry", version: "0.104.4" };
|
|
51
51
|
/**
|
|
52
52
|
* Task for updating the lockfile and installing project dependencies.
|
|
53
53
|
*/
|
|
@@ -253,7 +253,7 @@ exports.Poetry = Poetry;
|
|
|
253
253
|
* @see https://python-poetry.org/docs/pyproject/
|
|
254
254
|
*/
|
|
255
255
|
class PoetryPyproject extends component_1.Component {
|
|
256
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PoetryPyproject", version: "0.104.
|
|
256
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PoetryPyproject", version: "0.104.4" };
|
|
257
257
|
file;
|
|
258
258
|
constructor(scope, options) {
|
|
259
259
|
super(scope);
|
package/lib/python/projenrc.js
CHANGED
|
@@ -17,7 +17,7 @@ const projenrc_1 = require("../projenrc");
|
|
|
17
17
|
* `synth` task which will run `.projenrc.py`.
|
|
18
18
|
*/
|
|
19
19
|
class Projenrc extends projenrc_1.ProjenrcFile {
|
|
20
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Projenrc", version: "0.104.
|
|
20
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Projenrc", version: "0.104.4" };
|
|
21
21
|
/**
|
|
22
22
|
* The name of the projenrc file.
|
|
23
23
|
*/
|
|
@@ -10,7 +10,7 @@ const pyproject_toml_1 = require("./pyproject-toml");
|
|
|
10
10
|
* @see https://packaging.python.org/en/latest/guides/writing-pyproject-toml/
|
|
11
11
|
*/
|
|
12
12
|
class PyprojectTomlFile extends toml_1.TomlFile {
|
|
13
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PyprojectTomlFile", version: "0.104.
|
|
13
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PyprojectTomlFile", version: "0.104.4" };
|
|
14
14
|
constructor(scope, config) {
|
|
15
15
|
super(scope, "pyproject.toml", {
|
|
16
16
|
omitEmpty: false,
|
|
@@ -7,7 +7,7 @@ const __1 = require("..");
|
|
|
7
7
|
* Python test code sample.
|
|
8
8
|
*/
|
|
9
9
|
class PytestSample extends __1.Component {
|
|
10
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PytestSample", version: "0.104.
|
|
10
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PytestSample", version: "0.104.4" };
|
|
11
11
|
constructor(project, options) {
|
|
12
12
|
super(project);
|
|
13
13
|
new __1.SampleDir(project, options.testdir, {
|
package/lib/python/pytest.js
CHANGED
|
@@ -5,7 +5,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
5
5
|
const component_1 = require("../component");
|
|
6
6
|
const dependencies_1 = require("../dependencies");
|
|
7
7
|
class Pytest extends component_1.Component {
|
|
8
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Pytest", version: "0.104.
|
|
8
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Pytest", version: "0.104.4" };
|
|
9
9
|
testMatch;
|
|
10
10
|
constructor(project, options = {}) {
|
|
11
11
|
super(project);
|
|
@@ -23,7 +23,7 @@ const PYTHON_PROJECT_NAME_REGEX = /^[A-Za-z0-9-_\.]+$/;
|
|
|
23
23
|
* @pjid python
|
|
24
24
|
*/
|
|
25
25
|
class PythonProject extends github_1.GitHubProject {
|
|
26
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PythonProject", version: "0.104.
|
|
26
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PythonProject", version: "0.104.4" };
|
|
27
27
|
/**
|
|
28
28
|
* Python module name (the project name, with any hyphens or periods replaced
|
|
29
29
|
* with underscores).
|
|
@@ -8,7 +8,7 @@ const sample_file_1 = require("../sample-file");
|
|
|
8
8
|
* Python code sample.
|
|
9
9
|
*/
|
|
10
10
|
class PythonSample extends component_1.Component {
|
|
11
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PythonSample", version: "0.104.
|
|
11
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PythonSample", version: "0.104.4" };
|
|
12
12
|
constructor(project, options) {
|
|
13
13
|
super(project);
|
|
14
14
|
new sample_file_1.SampleDir(project, options.dir, {
|
|
@@ -11,7 +11,7 @@ const semver_1 = require("../util/semver");
|
|
|
11
11
|
* @see https://pip.pypa.io/en/stable/reference/pip_install/#requirements-file-format
|
|
12
12
|
*/
|
|
13
13
|
class RequirementsFile extends file_1.FileBase {
|
|
14
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.RequirementsFile", version: "0.104.
|
|
14
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.RequirementsFile", version: "0.104.4" };
|
|
15
15
|
packages = new Array();
|
|
16
16
|
packageProvider;
|
|
17
17
|
constructor(project, filePath, options) {
|
package/lib/python/setuppy.js
CHANGED
|
@@ -7,7 +7,7 @@ const file_1 = require("../file");
|
|
|
7
7
|
* Python packaging script where package metadata can be placed.
|
|
8
8
|
*/
|
|
9
9
|
class SetupPy extends file_1.FileBase {
|
|
10
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.SetupPy", version: "0.104.
|
|
10
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.SetupPy", version: "0.104.4" };
|
|
11
11
|
setupConfig;
|
|
12
12
|
constructor(project, options) {
|
|
13
13
|
super(project, "setup.py");
|
package/lib/python/setuptools.js
CHANGED
|
@@ -9,7 +9,7 @@ const dependencies_1 = require("../dependencies");
|
|
|
9
9
|
* Manages packaging through setuptools with a setup.py script.
|
|
10
10
|
*/
|
|
11
11
|
class Setuptools extends component_1.Component {
|
|
12
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Setuptools", version: "0.104.
|
|
12
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Setuptools", version: "0.104.4" };
|
|
13
13
|
publishTask;
|
|
14
14
|
/**
|
|
15
15
|
* A task that uploads the package to the Test PyPI repository.
|
package/lib/python/uv-config.js
CHANGED
|
@@ -220,7 +220,7 @@ function toJson_StaticMetadata(obj) {
|
|
|
220
220
|
*/
|
|
221
221
|
class ExcludeNewerOverride {
|
|
222
222
|
value;
|
|
223
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.uvConfig.ExcludeNewerOverride", version: "0.104.
|
|
223
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.uvConfig.ExcludeNewerOverride", version: "0.104.4" };
|
|
224
224
|
static fromBoolean(value) {
|
|
225
225
|
return new ExcludeNewerOverride(value);
|
|
226
226
|
}
|
package/lib/python/uv.js
CHANGED
|
@@ -11,7 +11,7 @@ const exec_1 = require("../util/exec");
|
|
|
11
11
|
* Manage project dependencies, virtual environments, and packaging through uv.
|
|
12
12
|
*/
|
|
13
13
|
class Uv extends component_1.Component {
|
|
14
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Uv", version: "0.104.
|
|
14
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Uv", version: "0.104.4" };
|
|
15
15
|
/**
|
|
16
16
|
* The `pyproject.toml` file
|
|
17
17
|
*/
|
package/lib/python/venv.js
CHANGED
|
@@ -43,7 +43,7 @@ const exec_1 = require("../util/exec");
|
|
|
43
43
|
* Manages a virtual environment through the Python venv module.
|
|
44
44
|
*/
|
|
45
45
|
class Venv extends component_1.Component {
|
|
46
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Venv", version: "0.104.
|
|
46
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Venv", version: "0.104.4" };
|
|
47
47
|
/**
|
|
48
48
|
* Name of directory to store the environment in
|
|
49
49
|
*/
|
package/lib/readme.js
CHANGED
|
@@ -10,7 +10,7 @@ const sample_file_1 = require("./sample-file");
|
|
|
10
10
|
* @param text - The initial contents of the README.md file. Defaults to '# replace this'
|
|
11
11
|
*/
|
|
12
12
|
class SampleReadme extends sample_file_1.SampleFile {
|
|
13
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.SampleReadme", version: "0.104.
|
|
13
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.SampleReadme", version: "0.104.4" };
|
|
14
14
|
constructor(project, props) {
|
|
15
15
|
super(project, props?.filename ?? "README.md", {
|
|
16
16
|
contents: props?.contents ?? "# replace this",
|