@riddance/env
Version:
Too much code slows you down, creates risks, increases maintainability burdens, confuses AI. So let's commit less of it.
436 lines • 56.4 kB
JavaScript
import js from '@eslint/js';
import node from 'eslint-plugin-n';
import arrow from 'eslint-plugin-prefer-arrow-functions';
import promise from 'eslint-plugin-promise';
import unicorn from 'eslint-plugin-unicorn';
import { defineConfig } from 'eslint/config';
import globals from 'globals';
import ts from 'typescript-eslint';
export function configuration(dir) {
return defineConfig([
{
ignores: [
'**/eslint.config.mjs',
'**/*.js',
'**/*.d.ts',
'node_modules/**',
'test/data/**',
'example/test/data/**',
],
},
{
languageOptions: {
sourceType: 'module',
ecmaVersion: 2024,
globals: globals.node,
parserOptions: {
projectService: true,
tsconfigRootDir: dir,
},
},
},
js.configs.recommended,
{
rules: {
'no-console': 'error',
'no-debugger': 'error',
'no-promise-executor-return': 'error',
'no-self-compare': 'error',
'no-template-curly-in-string': 'error',
'no-unmodified-loop-condition': 'error',
'no-unreachable-loop': 'error',
'no-unused-private-class-members': 'error',
'require-atomic-updates': 'error',
'guard-for-in': 'error',
'no-eval': 'error',
'no-new-wrappers': 'error',
'object-shorthand': 'error',
'one-var': ['error', 'never'],
radix: 'error',
'valid-typeof': 'off',
camelcase: 'error',
'consistent-this': ['error', 'self'],
curly: 'error',
'default-case-last': 'error',
eqeqeq: 'error',
'no-alert': 'error',
'no-object-constructor': 'error',
'no-array-constructor': 'error',
'new-cap': 'error',
'no-bitwise': 'error',
'no-delete-var': 'error',
'no-implicit-coercion': [
'error',
{
allow: ['!!'],
},
],
'no-return-assign': 'error',
'no-sequences': 'error',
'no-shadow': 'error',
'no-undef-init': 'error',
'no-unneeded-ternary': 'error',
'no-unused-expressions': 'error',
'no-useless-call': 'error',
'no-useless-catch': 'error',
'no-useless-computed-key': 'error',
'no-useless-constructor': 'error',
'no-useless-escape': 'error',
'no-useless-backreference': 'error',
'no-useless-rename': 'error',
'no-useless-return': 'error',
'no-var': 'error',
'no-void': 'error',
'prefer-arrow-callback': 'error',
'prefer-const': 'error',
'prefer-destructuring': 'error',
'prefer-numeric-literals': 'error',
'prefer-object-has-own': 'error',
'prefer-object-spread': 'error',
'prefer-promise-reject-errors': ['error', { allowThrowingUnknown: true }],
'prefer-regex-literals': 'error',
'prefer-rest-params': 'error',
'prefer-spread': 'error',
'preserve-caught-error': 'error',
'require-await': 'error',
'require-unicode-regexp': 'error',
yoda: 'error',
'no-restricted-imports': [
'error',
{
paths: [
{
name: 'assert',
message: 'Please use node:assert/strict instead.',
},
{
name: 'assert/strict',
message: 'Please use node:assert/strict instead.',
},
{
name: 'node:assert',
message: 'Please use node:assert/strict instead.',
},
{
name: 'async_hooks',
message: 'Please use node:async_hooks instead.',
},
{
name: 'buffer',
message: 'Please use node:buffer instead.',
},
{
name: 'child_process',
message: 'Please use node:child_process instead.',
},
{
name: 'cluster',
message: 'Please use node:cluster instead.',
},
{
name: 'console',
message: 'Please use node:console instead.',
},
{
name: 'constants',
message: 'Please use constants property exposed by the relevant module instead.',
},
{
name: 'node:constants',
message: 'Please use constants property exposed by the relevant module instead.',
},
{
name: 'crypto',
message: 'Please use node:crypto instead.',
},
{
name: 'dgram',
message: 'Please use node:dgram instead.',
},
{
name: 'diagnostics_channel',
message: 'Please use node:diagnostics_channel instead.',
},
{
name: 'dns',
message: 'Please use node:dns/promise instead.',
},
{
name: 'dns/promises',
message: 'Please use node:dns/promises instead.',
},
{
name: 'node:dns',
message: 'Please use node:dns/promises instead.',
},
{
name: 'domains',
message: 'Module is pending deprecation.',
},
{
name: 'node:domains',
message: 'Module is pending deprecation.',
},
{
name: 'events',
message: 'Please use node:events instead.',
},
{
name: 'fs',
message: 'Please use node:fs/promises instead.',
},
{
name: 'node:fs',
message: 'Please use node:fs/promises instead.',
},
{
name: 'fs/promises',
message: 'Please use node:fs/promises instead.',
},
{
name: 'os',
message: 'Please use node:os instead.',
},
{
name: 'http',
message: 'Please use node:http instead.',
},
{
name: 'http2',
message: 'Please use node:https instead.',
},
{
name: 'https',
message: 'Please use node:http2 instead.',
},
{
name: 'path',
message: 'Please use node:path instead.',
},
{
name: 'process',
message: 'Please use node:process instead.',
},
{
name: 'readline',
message: 'Please use node:readline/promises instead.',
},
{
name: 'readline/promises',
message: 'Please use node:readline/promises instead.',
},
{
name: 'node:readline',
message: 'Please use node:readline/promises instead.',
},
{
name: 'stream',
message: 'Please use node:stream/promises instead.',
},
{
name: 'stream/promises',
message: 'Please use node:stream/promises instead.',
},
{
name: 'node:stream',
message: 'Please use node:stream/promises instead.',
},
{
name: 'node:stream/web',
message: 'This module is experimental.',
},
{
name: 'timers',
message: 'Please use node:timers/promises instead.',
},
{
name: 'timers/promises',
message: 'Please use node:timers/promises instead.',
},
{
name: 'node:timers',
message: 'Please use node:timers/promises instead.',
},
{
name: 'querystring',
message: 'Please use URLSearchParams API instead.',
},
{
name: 'url',
message: 'Please use node:url instead.',
},
{
name: 'util',
message: 'Please use node:util instead.',
},
{
name: 'wasi',
message: 'This module is experimental.',
},
{
name: 'node:wasi',
message: 'This module is experimental.',
},
{
name: 'zlib',
message: 'Please use node:zlib instead.',
},
],
},
],
},
},
promise.configs['flat/recommended'],
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
arrow.configs.all,
{
rules: {
'prefer-arrow-functions/prefer-arrow-functions': [
'error',
{ allowNamedFunctions: true, singleReturnOnly: true },
],
},
},
...ts.configs.strictTypeChecked,
...ts.configs.stylisticTypeChecked,
{
rules: {
'@typescript-eslint/restrict-template-expressions': [
'error',
{
allowAny: false,
allowBoolean: false,
allowNullish: false,
allowNumber: true,
allowRegExp: false,
allowNever: false,
},
],
'@typescript-eslint/prefer-readonly': 'error',
'@typescript-eslint/no-restricted-types': [
'error',
{
types: {
Object: {
message: 'Avoid using the `Object` type. Did you mean `object`?',
},
Function: {
message: 'Avoid using the `Function` type. Prefer a specific function type, like `() => void`.',
},
Boolean: {
message: 'Avoid using the `Boolean` type. Did you mean `boolean`?',
},
Number: {
message: 'Avoid using the `Number` type. Did you mean `number`?',
},
String: {
message: 'Avoid using the `String` type. Did you mean `string`?',
},
Symbol: {
message: 'Avoid using the `Symbol` type. Did you mean `symbol`?',
},
},
},
],
'@typescript-eslint/no-invalid-void-type': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/strict-void-return': 'error',
'@typescript-eslint/no-dynamic-delete': 'off',
'@typescript-eslint/consistent-indexed-object-style': ['error', 'index-signature'],
'@typescript-eslint/consistent-type-definitions': ['error', 'type'],
'@typescript-eslint/prefer-nullish-coalescing': 'error',
'@typescript-eslint/no-unsafe-member-access': [
'error',
{ allowOptionalChaining: true },
],
},
},
node.configs['flat/recommended-module'],
{
rules: {
'n/no-process-exit': 'off',
'n/hashbang': 'off',
'n/no-missing-import': 'off',
'n/no-unpublished-import': 'off',
'n/no-deprecated-api': ['error'],
'n/prefer-global/buffer': 'error',
'n/prefer-global/console': 'error',
'n/prefer-global/crypto': 'error',
'n/prefer-global/process': 'error',
'n/prefer-global/timers': 'error',
'n/prefer-global/text-decoder': 'error',
'n/prefer-global/text-encoder': 'error',
'n/prefer-global/url-search-params': 'error',
'n/prefer-global/url': 'error',
'n/prefer-promises/dns': 'error',
'n/prefer-promises/fs': 'error',
'n/no-unsupported-features/es-builtins': 'off',
'n/no-unsupported-features/es-syntax': 'off',
'n/no-unsupported-features/node-builtins': 'off',
'n/file-extension-in-import': 'off',
'n/no-extraneous-import': 'off',
},
},
unicorn.configs.all,
{
rules: {
'unicorn/no-array-callback-reference': 'off',
'unicorn/catch-error-name': 'off',
'unicorn/consistent-destructuring': 'off',
'unicorn/explicit-length-check': ['error', { 'non-zero': 'not-equal' }],
'unicorn/import-style': 'off',
'unicorn/no-array-for-each': 'off',
'unicorn/no-array-reduce': 'off',
'unicorn/no-array-reverse': 'off',
'unicorn/no-array-sort': 'off',
'unicorn/no-await-expression-member': 'off',
'unicorn/no-keyword-prefix': 'off',
'unicorn/no-lonely-if': 'off',
'unicorn/no-useless-undefined': 'off',
'unicorn/number-literal-case': 'off',
'unicorn/prefer-string-raw': 'off',
'unicorn/prefer-ternary': 'off',
'unicorn/prevent-abbreviations': 'off',
'unicorn/switch-case-braces': ['error', 'avoid'],
'unicorn/text-encoding-identifier-case': ['error', { withDash: true }],
'unicorn/no-unreadable-array-destructuring': 'off',
'unicorn/prefer-import-meta-properties': 'error',
},
},
{
files: ['test/**/*.ts', 'example/test/**/*.ts'],
languageOptions: {
globals: globals.mocha,
},
rules: {
'no-debugger': 'off',
'@typescript-eslint/no-unsafe-return': 'off',
'@typescript-eslint/no-unsafe-call': 'off',
'@typescript-eslint/restrict-template-expressions': 'off',
'@typescript-eslint/restrict-plus-operands': 'off',
'@typescript-eslint/no-unsafe-assignment': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-unsafe-argument': 'off',
'@typescript-eslint/no-unsafe-member-access': 'off',
'@typescript-eslint/strict-void-return': 'off',
},
},
{
files: ['bin/**/*.ts'],
rules: {
'no-console': 'off',
'no-process-exit': 'off',
'@typescript-eslint/restrict-template-expressions': [
'error',
{
allowBoolean: true,
allowNumber: true,
},
],
'n/no-unpublished-bin': 'error',
'unicorn/no-process-exit': 'off',
},
},
]);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNsaW50LWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImVzbGludC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzNCLE9BQU8sSUFBSSxNQUFNLGlCQUFpQixDQUFBO0FBQ2xDLE9BQU8sS0FBSyxNQUFNLHNDQUFzQyxDQUFBO0FBQ3hELE9BQU8sT0FBTyxNQUFNLHVCQUF1QixDQUFBO0FBQzNDLE9BQU8sT0FBTyxNQUFNLHVCQUF1QixDQUFBO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDNUMsT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFBO0FBQzdCLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWxDLE1BQU0sVUFBVSxhQUFhLENBQUMsR0FBVztJQUNyQyxPQUFPLFlBQVksQ0FBQztRQUNoQjtZQUNJLE9BQU8sRUFBRTtnQkFDTCxzQkFBc0I7Z0JBQ3RCLFNBQVM7Z0JBQ1QsV0FBVztnQkFDWCxpQkFBaUI7Z0JBQ2pCLGNBQWM7Z0JBQ2Qsc0JBQXNCO2FBQ3pCO1NBQ0o7UUFDRDtZQUNJLGVBQWUsRUFBRTtnQkFDYixVQUFVLEVBQUUsUUFBUTtnQkFDcEIsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSTtnQkFDckIsYUFBYSxFQUFFO29CQUNYLGNBQWMsRUFBRSxJQUFJO29CQUNwQixlQUFlLEVBQUUsR0FBRztpQkFDdkI7YUFDSjtTQUNKO1FBQ0QsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXO1FBQ3RCO1lBQ0ksS0FBSyxFQUFFO2dCQUNILFlBQVksRUFBRSxPQUFPO2dCQUNyQixhQUFhLEVBQUUsT0FBTztnQkFDdEIsNEJBQTRCLEVBQUUsT0FBTztnQkFDckMsaUJBQWlCLEVBQUUsT0FBTztnQkFDMUIsNkJBQTZCLEVBQUUsT0FBTztnQkFDdEMsOEJBQThCLEVBQUUsT0FBTztnQkFD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RSxLQUFLO2dCQUNsRCx1Q0FBdUMsRUFBRSxPQUFPO2FBQ25EO1NBQ0o7UUFDRDtZQUNJLEtBQUssRUFBRSxDQUFDLGNBQWMsRUFBRSxzQkFBc0IsQ0FBQztZQUMvQyxlQUFlLEVBQUU7Z0JBQ2IsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLO2FBQ3pCO1lBQ0QsS0FBSyxFQUFFO2dCQUNILGFBQWEsRUFBRSxLQUFLO2dCQUNwQixxQ0FBcUMsRUFBRSxLQUFLO2dCQUM1QyxtQ0FBbUMsRUFBRSxLQUFLO2dCQUMxQyxrREFBa0QsRUFBRSxLQUFLO2dCQUN6RCwyQ0FBMkMsRUFBRSxLQUFLO2dCQUNsRCx5Q0FBeUMsRUFBRSxLQUFLO2dCQUNoRCxvQ0FBb0MsRUFBRSxLQUFLO2dCQUMzQyx1Q0FBdUMsRUFBRSxLQUFLO2dCQUM5Qyw0Q0FBNEMsRUFBRSxLQUFLO2dCQUNuRCx1Q0FBdUMsRUFBRSxLQUFLO2FBQ2pEO1NBQ0o7UUFDRDtZQUNJLEtBQUssRUFBRSxDQUFDLGFBQWEsQ0FBQztZQUN0QixLQUFLLEVBQUU7Z0JBQ0gsWUFBWSxFQUFFLEtBQUs7Z0JBQ25CLGlCQUFpQixFQUFFLEtBQUs7Z0JBQ3hCLGtEQUFrRCxFQUFFO29CQUNoRCxPQUFPO29CQUNQO3dCQUNJLFlBQVksRUFBRSxJQUFJO3dCQUNsQixXQUFXLEVBQUUsSUFBSTtxQkFDcEI7aUJBQ0o7Z0JBQ0Qsc0JBQXNCLEVBQUUsT0FBTztnQkFDL0IseUJBQXlCLEVBQUUsS0FBSzthQUNuQztTQUNKO0tBQ0osQ0FBQyxDQUFBO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBqcyBmcm9tICdAZXNsaW50L2pzJ1xuaW1wb3J0IG5vZGUgZnJvbSAnZXNsaW50LXBsdWdpbi1uJ1xuaW1wb3J0IGFycm93IGZyb20gJ2VzbGludC1wbHVnaW4tcHJlZmVyLWFycm93LWZ1bmN0aW9ucydcbmltcG9ydCBwcm9taXNlIGZyb20gJ2VzbGludC1wbHVnaW4tcHJvbWlzZSdcbmltcG9ydCB1bmljb3JuIGZyb20gJ2VzbGludC1wbHVnaW4tdW5pY29ybidcbmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gJ2VzbGludC9jb25maWcnXG5pbXBvcnQgZ2xvYmFscyBmcm9tICdnbG9iYWxzJ1xuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQtZXNsaW50J1xuXG5leHBvcnQgZnVuY3Rpb24gY29uZmlndXJhdGlvbihkaXI6IHN0cmluZykge1xuICAgIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgICAgICB7XG4gICAgICAgICAgICBpZ25vcmVzOiBbXG4gICAgICAgICAgICAgICAgJyoqL2VzbGludC5jb25maWcubWpzJyxcbiAgICAgICAgICAgICAgICAnKiovKi5qcycsXG4gICAgICAgICAgICAgICAgJyoqLyouZC50cycsXG4gICAgICAgICAgICAgICAgJ25vZGVfbW9kdWxlcy8qKicsXG4gICAgICAgICAgICAgICAgJ3Rlc3QvZGF0YS8qKicsXG4gICAgICAgICAgICAgICAgJ2V4YW1wbGUvdGVzdC9kYXRhLyoqJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhbmd1YWdlT3B0aW9uczoge1xuICAgICAgICAgICAgICAgIHNvdXJjZVR5cGU6ICdtb2R1bGUnLFxuICAgICAgICAgICAgICAgIGVjbWFWZXJzaW9uOiAyMDI0LFxuICAgICAgICAgICAgICAgIGdsb2JhbHM6IGdsb2JhbHMubm9kZSxcbiAgICAgICAgICAgICAgICBwYXJzZXJPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RTZXJ2aWNlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB0c2NvbmZpZ1Jvb3REaXI6IGRpcixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAganMuY29uZmlncy5yZWNvbW1lbmRlZCxcbiAgICAgICAge1xuICAgICAgICAgICAgcnVsZXM6IHtcbiAgICAgICAgICAgICAgICAnbm8tY29uc29sZSc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ25vLWRlYnVnZ2VyJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAnbm8tcHJvbWlzZS1leGVjdXRvci1yZXR1cm4nOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICduby1zZWxmLWNvbXBhcmUnOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICduby10ZW1wbGF0ZS1jdXJseS1pbi1zdHJpbmcnOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICduby11bm1vZGlmaWVkLWxvb3AtY29uZGl0aW9uJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAnbm8tdW5yZWFjaGFibGUtbG9vcCc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ25vLXVudXNlZC1wcml2YXRlLWNsYXNzLW1lbWJlcnMnOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICdyZXF1aXJlLWF0b21pYy11cGRhdGVzJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAnZ3VhcmQtZm9yLWluJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAnbm8tZXZhbCc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ25vLW5ldy13cmFwcGVycyc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ29iamVjdC1zaG9ydGhhbmQnOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICdvbmUtdmFyJzogWydlcnJvcicsICduZXZlciddLFxuICAgICAgICAgICAgICAgIHJhZGl4OiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICd2YWxpZC10eXBlb2YnOiAnb2ZmJyxcbiAgICAgICAgICAgICAgICBjYW1lbGNhc2U6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ2NvbnNpc3RlbnQtdGhpcyc6IFsnZXJyb3InLCAnc2VsZiddLFxuICAgICAgICAgICAgICAgIGN1cmx5OiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICdkZWZhdWx0LWNhc2UtbGFzdCc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgZXFlcWVxOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICduby1hbGVydCc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ25vLW9iamVjdC1jb25zdHJ1Y3Rvcic6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ25vLWFycmF5LWNvbnN0cnVjdG9yJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAnbmV3LWNhcCc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ25vLWJpdHdpc2UnOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICduby1kZWxldGUtdmFyJzogJ2Vycm9yJyxcblxuICAgICAgICAgICAgICAgICduby1pbXBsaWNpdC1jb2VyY2lvbic6IFtcbiAgICAgICAgICAgICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3c6IFsnISEnXSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuXG4gICAgICAgICAgICAgICAgJ25vLXJldHVybi1hc3NpZ24nOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICduby1zZXF1ZW5jZXMnOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICduby1zaGFkb3cnOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICduby11bmRlZi1pbml0JzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAnbm8tdW5uZWVkZWQtdGVybmFyeSc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ25vLXVudXNlZC1leHByZXNzaW9ucyc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ25vLXVzZWxlc3MtY2FsbCc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ25vLXVzZWxlc3MtY2F0Y2gnOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICduby11c2VsZXNzLWNvbXB1dGVkLWtleSc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ25vLXVzZWxlc3MtY29uc3RydWN0b3InOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICduby11c2VsZXNzLWVzY2FwZSc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ25vLXVzZWxlc3MtYmFja3JlZmVyZW5jZSc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ25vLXVzZWxlc3MtcmVuYW1lJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAnbm8tdXNlbGVzcy1yZXR1cm4nOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICduby12YXInOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICduby12b2lkJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAncHJlZmVyLWFycm93LWNhbGxiYWNrJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAncHJlZmVyLWNvbnN0JzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAncHJlZmVyLWRlc3RydWN0dXJpbmcnOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICdwcmVmZXItbnVtZXJpYy1saXRlcmFscyc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ3ByZWZlci1vYmplY3QtaGFzLW93bic6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ3ByZWZlci1vYmplY3Qtc3ByZWFkJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAncHJlZmVyLXByb21pc2UtcmVqZWN0LWVycm9ycyc6IFsnZXJyb3InLCB7IGFsbG93VGhyb3dpbmdVbmtub3duOiB0cnVlIH1dLFxuICAgICAgICAgICAgICAgICdwcmVmZXItcmVnZXgtbGl0ZXJhbHMnOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICdwcmVmZXItcmVzdC1wYXJhbXMnOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICdwcmVmZXItc3ByZWFkJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAncHJlc2VydmUtY2F1Z2h0LWVycm9yJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAncmVxdWlyZS1hd2FpdCc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ3JlcXVpcmUtdW5pY29kZS1yZWdleHAnOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIHlvZGE6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ25vLXJlc3RyaWN0ZWQtaW1wb3J0cyc6IFtcbiAgICAgICAgICAgICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhc3NlcnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnUGxlYXNlIHVzZSBub2RlOmFzc2VydC9zdHJpY3QgaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYXNzZXJ0L3N0cmljdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6YXNzZXJ0L3N0cmljdCBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdub2RlOmFzc2VydCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6YXNzZXJ0L3N0cmljdCBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhc3luY19ob29rcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6YXN5bmNfaG9va3MgaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYnVmZmVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2Ugbm9kZTpidWZmZXIgaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY2hpbGRfcHJvY2VzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6Y2hpbGRfcHJvY2VzcyBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjbHVzdGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2Ugbm9kZTpjbHVzdGVyIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NvbnNvbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnUGxlYXNlIHVzZSBub2RlOmNvbnNvbGUgaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY29uc3RhbnRzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQbGVhc2UgdXNlIGNvbnN0YW50cyBwcm9wZXJ0eSBleHBvc2VkIGJ5IHRoZSByZWxldmFudCBtb2R1bGUgaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbm9kZTpjb25zdGFudHMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BsZWFzZSB1c2UgY29uc3RhbnRzIHByb3BlcnR5IGV4cG9zZWQgYnkgdGhlIHJlbGV2YW50IG1vZHVsZSBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjcnlwdG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnUGxlYXNlIHVzZSBub2RlOmNyeXB0byBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkZ3JhbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6ZGdyYW0gaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZGlhZ25vc3RpY3NfY2hhbm5lbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6ZGlhZ25vc3RpY3NfY2hhbm5lbCBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnUGxlYXNlIHVzZSBub2RlOmRucy9wcm9taXNlIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Rucy9wcm9taXNlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6ZG5zL3Byb21pc2VzIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ25vZGU6ZG5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2Ugbm9kZTpkbnMvcHJvbWlzZXMgaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZG9tYWlucycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdNb2R1bGUgaXMgcGVuZGluZyBkZXByZWNhdGlvbi4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbm9kZTpkb21haW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ01vZHVsZSBpcyBwZW5kaW5nIGRlcHJlY2F0aW9uLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdldmVudHMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnUGxlYXNlIHVzZSBub2RlOmV2ZW50cyBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdmcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6ZnMvcHJvbWlzZXMgaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbm9kZTpmcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6ZnMvcHJvbWlzZXMgaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZnMvcHJvbWlzZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnUGxlYXNlIHVzZSBub2RlOmZzL3Byb21pc2VzIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ29zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2Ugbm9kZTpvcyBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdodHRwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2Ugbm9kZTpodHRwIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2h0dHAyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2Ugbm9kZTpodHRwcyBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdodHRwcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6aHR0cDIgaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGF0aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6cGF0aCBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwcm9jZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2Ugbm9kZTpwcm9jZXNzIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3JlYWRsaW5lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2Ugbm9kZTpyZWFkbGluZS9wcm9taXNlcyBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdyZWFkbGluZS9wcm9taXNlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6cmVhZGxpbmUvcHJvbWlzZXMgaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbm9kZTpyZWFkbGluZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6cmVhZGxpbmUvcHJvbWlzZXMgaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnc3RyZWFtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2Ugbm9kZTpzdHJlYW0vcHJvbWlzZXMgaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnc3RyZWFtL3Byb21pc2VzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2Ugbm9kZTpzdHJlYW0vcHJvbWlzZXMgaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbm9kZTpzdHJlYW0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnUGxlYXNlIHVzZSBub2RlOnN0cmVhbS9wcm9taXNlcyBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdub2RlOnN0cmVhbS93ZWInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnVGhpcyBtb2R1bGUgaXMgZXhwZXJpbWVudGFsLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd0aW1lcnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnUGxlYXNlIHVzZSBub2RlOnRpbWVycy9wcm9taXNlcyBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd0aW1lcnMvcHJvbWlzZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnUGxlYXNlIHVzZSBub2RlOnRpbWVycy9wcm9taXNlcyBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdub2RlOnRpbWVycycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6dGltZXJzL3Byb21pc2VzIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3F1ZXJ5c3RyaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2UgVVJMU2VhcmNoUGFyYW1zIEFQSSBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd1cmwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnUGxlYXNlIHVzZSBub2RlOnVybCBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd1dGlsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2Ugbm9kZTp1dGlsIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3dhc2knLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnVGhpcyBtb2R1bGUgaXMgZXhwZXJpbWVudGFsLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdub2RlOndhc2knLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnVGhpcyBtb2R1bGUgaXMgZXhwZXJpbWVudGFsLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd6bGliJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2Ugbm9kZTp6bGliIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcHJvbWlzZS5jb25maWdzWydmbGF0L3JlY29tbWVuZGVkJ10sXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICAgIGFycm93LmNvbmZpZ3MuYWxsISxcbiAgICAgICAge1xuICAgICAgICAgICAgcnVsZXM6IHtcbiAgICAgICAgICAgICAgICAncHJlZmVyLWFycm93LWZ1bmN0aW9ucy9wcmVmZXItYXJyb3ctZnVuY3Rpb25zJzogW1xuICAgICAgICAgICAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICB7IGFsbG93TmFtZWRGdW5jdGlvbnM6IHRydWUsIHNpbmdsZVJldHVybk9ubHk6IHRydWUgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgLi4udHMuY29uZmlncy5zdHJpY3RUeXBlQ2hlY2tlZCxcbiAgICAgICAgLi4udHMuY29uZmlncy5zdHlsaXN0aWNUeXBlQ2hlY2tlZCxcbiAgICAgICAge1xuICAgICAgICAgICAgcnVsZXM6IHtcbiAgICAgICAgICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zJzogW1xuICAgICAgICAgICAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbGxvd0FueTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBhbGxvd0Jvb2xlYW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dOdWxsaXNoOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93TnVtYmVyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dSZWdFeHA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dOZXZlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1yZWFkb25seSc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9uby1yZXN0cmljdGVkLXR5cGVzJzogW1xuICAgICAgICAgICAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnQXZvaWQgdXNpbmcgdGhlIGBPYmplY3RgIHR5cGUuIERpZCB5b3UgbWVhbiBgb2JqZWN0YD8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBdm9pZCB1c2luZyB0aGUgYEZ1bmN0aW9uYCB0eXBlLiBQcmVmZXIgYSBzcGVjaWZpYyBmdW5jdGlvbiB0eXBlLCBsaWtlIGAoKSA9PiB2b2lkYC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQm9vbGVhbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnQXZvaWQgdXNpbmcgdGhlIGBCb29sZWFuYCB0eXBlLiBEaWQgeW91IG1lYW4gYGJvb2xlYW5gPycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ0F2b2lkIHVzaW5nIHRoZSBgTnVtYmVyYCB0eXBlLiBEaWQgeW91IG1lYW4gYG51bWJlcmA/JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnQXZvaWQgdXNpbmcgdGhlIGBTdHJpbmdgIHR5cGUuIERpZCB5b3UgbWVhbiBgc3RyaW5nYD8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ltYm9sOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdBdm9pZCB1c2luZyB0aGUgYFN5bWJvbGAgdHl