UNPKG

@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
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