UNPKG

@riddance/env

Version:

407 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 globals from 'globals'; import ts from 'typescript-eslint'; export function configuration(dir) { return [ { ignores: ['**/eslint.config.mjs', '**/*.js', '**/*.d.ts', 'node_modules/**'], }, ...ts.config({ languageOptions: { sourceType: 'module', ecmaVersion: 2023, 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', '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'], { plugins: { 'prefer-arrow': arrow, }, rules: { 'prefer-arrow/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/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', }, }, 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/process': '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-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': 'off', 'unicorn/no-unreadable-array-destructuring': 'off', }, }, { 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', }, }, { 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNsaW50LWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImVzbGludC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzNCLE9BQU8sSUFBSSxNQUFNLGlCQUFpQixDQUFBO0FBQ2xDLE9BQU8sS0FBSyxNQUFNLHNDQUFzQyxDQUFBO0FBQ3hELE9BQU8sT0FBTyxNQUFNLHVCQUF1QixDQUFBO0FBQzNDLE9BQU8sT0FBTyxNQUFNLHVCQUF1QixDQUFBO0FBQzNDLE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQTtBQUM3QixPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUVsQyxNQUFNLFVBQVUsYUFBYSxDQUFDLEdBQVc7SUFDckMsT0FBTztRQUNIO1lBQ0ksT0FBTyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQztTQUMvRTtRQUNELEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FDUjtZQUNJLGVBQWUsRUFBRTtnQkFDYixVQUFVLEVBQUUsUUFBUTtnQkFDcEIsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSTtnQkFDckIsYUFBYSxFQUFFO29CQUNYLGNBQWMsRUFBRSxJQUFJO29CQUNwQixlQUFlLEVBQUUsR0FBRztpQkFDdkI7YUFDSjtTQUNKLEVBQ0QsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQ3RCO1lBQ0ksS0FBSyxFQUFFO2dCQUNILFlBQVksRUFBRSxPQUFPO2dCQUNyQixhQUFhLEVBQUUsT0FBTztnQkFDdEIsNEJBQTRCLEVBQUUsT0FBTztnQkFDckMsaUJBQWlCLEVBQUUsT0FBTztnQkFDMUIsNkJBQTZCLEVBQUUsT0FBTztnQkFDdEMsOEJBQThCLEVBQUUsT0FBTztnQkFDdkMscUJBQXFCLEVBQUUsT0FBTztnQkFDOUIsaUNBQWlDLEVBQUUsT0FBTztnQkFDMUMsd0JBQXdC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dUMsRUFBRSxLQUFLO2dCQUM5Qyw0Q0FBNEMsRUFBRSxLQUFLO2FBQ3REO1NBQ0osRUFDRDtZQUNJLEtBQUssRUFBRSxDQUFDLGFBQWEsQ0FBQztZQUN0QixLQUFLLEVBQUU7Z0JBQ0gsWUFBWSxFQUFFLEtBQUs7Z0JBQ25CLGlCQUFpQixFQUFFLEtBQUs7Z0JBQ3hCLGtEQUFrRCxFQUFFO29CQUNoRCxPQUFPO29CQUNQO3dCQUNJLFlBQVksRUFBRSxJQUFJO3dCQUNsQixXQUFXLEVBQUUsSUFBSTtxQkFDcEI7aUJBQ0o7Z0JBQ0Qsc0JBQXNCLEVBQUUsT0FBTztnQkFDL0IseUJBQXlCLEVBQUUsS0FBSzthQUNuQztTQUNKLENBQ0o7S0FDSixDQUFBO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBqcyBmcm9tICdAZXNsaW50L2pzJ1xuaW1wb3J0IG5vZGUgZnJvbSAnZXNsaW50LXBsdWdpbi1uJ1xuaW1wb3J0IGFycm93IGZyb20gJ2VzbGludC1wbHVnaW4tcHJlZmVyLWFycm93LWZ1bmN0aW9ucydcbmltcG9ydCBwcm9taXNlIGZyb20gJ2VzbGludC1wbHVnaW4tcHJvbWlzZSdcbmltcG9ydCB1bmljb3JuIGZyb20gJ2VzbGludC1wbHVnaW4tdW5pY29ybidcbmltcG9ydCBnbG9iYWxzIGZyb20gJ2dsb2JhbHMnXG5pbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdC1lc2xpbnQnXG5cbmV4cG9ydCBmdW5jdGlvbiBjb25maWd1cmF0aW9uKGRpcjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgICAgaWdub3JlczogWycqKi9lc2xpbnQuY29uZmlnLm1qcycsICcqKi8qLmpzJywgJyoqLyouZC50cycsICdub2RlX21vZHVsZXMvKionXSxcbiAgICAgICAgfSxcbiAgICAgICAgLi4udHMuY29uZmlnKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhbmd1YWdlT3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICBzb3VyY2VUeXBlOiAnbW9kdWxlJyxcbiAgICAgICAgICAgICAgICAgICAgZWNtYVZlcnNpb246IDIwMjMsXG4gICAgICAgICAgICAgICAgICAgIGdsb2JhbHM6IGdsb2JhbHMubm9kZSxcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VyT3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdFNlcnZpY2U6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0c2NvbmZpZ1Jvb3REaXI6IGRpcixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGpzLmNvbmZpZ3MucmVjb21tZW5kZWQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcnVsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgJ25vLWNvbnNvbGUnOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAnbm8tZGVidWdnZXInOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAnbm8tcHJvbWlzZS1leGVjdXRvci1yZXR1cm4nOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAnbm8tc2VsZi1jb21wYXJlJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgJ25vLXRlbXBsYXRlLWN1cmx5LWluLXN0cmluZyc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICduby11bm1vZGlmaWVkLWxvb3AtY29uZGl0aW9uJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgJ25vLXVucmVhY2hhYmxlLWxvb3AnOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAnbm8tdW51c2VkLXByaXZhdGUtY2xhc3MtbWVtYmVycyc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICdyZXF1aXJlLWF0b21pYy11cGRhdGVzJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgJ2d1YXJkLWZvci1pbic6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICduby1ldmFsJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgJ25vLW5ldy13cmFwcGVycyc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICdvYmplY3Qtc2hvcnRoYW5kJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgJ29uZS12YXInOiBbJ2Vycm9yJywgJ25ldmVyJ10sXG4gICAgICAgICAgICAgICAgICAgIHJhZGl4OiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAndmFsaWQtdHlwZW9mJzogJ29mZicsXG4gICAgICAgICAgICAgICAgICAgIGNhbWVsY2FzZTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgJ2NvbnNpc3RlbnQtdGhpcyc6IFsnZXJyb3InLCAnc2VsZiddLFxuICAgICAgICAgICAgICAgICAgICBjdXJseTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHQtY2FzZS1sYXN0JzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgZXFlcWVxOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAnbm8tYWxlcnQnOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAnbm8tb2JqZWN0LWNvbnN0cnVjdG9yJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgJ25vLWFycmF5LWNvbnN0cnVjdG9yJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgJ25ldy1jYXAnOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAnbm8tYml0d2lzZSc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICduby1kZWxldGUtdmFyJzogJ2Vycm9yJyxcblxuICAgICAgICAgICAgICAgICAgICAnbm8taW1wbGljaXQtY29lcmNpb24nOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93OiBbJyEhJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuXG4gICAgICAgICAgICAgICAgICAgICduby1yZXR1cm4tYXNzaWduJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgJ25vLXNlcXVlbmNlcyc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICduby1zaGFkb3cnOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAnbm8tdW5kZWYtaW5pdCc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICduby11bm5lZWRlZC10ZXJuYXJ5JzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgJ25vLXVudXNlZC1leHByZXNzaW9ucyc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICduby11c2VsZXNzLWNhbGwnOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAnbm8tdXNlbGVzcy1jYXRjaCc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICduby11c2VsZXNzLWNvbXB1dGVkLWtleSc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICduby11c2VsZXNzLWNvbnN0cnVjdG9yJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgJ25vLXVzZWxlc3MtZXNjYXBlJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgJ25vLXVzZWxlc3MtYmFja3JlZmVyZW5jZSc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICduby11c2VsZXNzLXJlbmFtZSc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICduby11c2VsZXNzLXJldHVybic6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICduby12YXInOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAnbm8tdm9pZCc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICdwcmVmZXItYXJyb3ctY2FsbGJhY2snOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAncHJlZmVyLWNvbnN0JzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgJ3ByZWZlci1kZXN0cnVjdHVyaW5nJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgJ3ByZWZlci1udW1lcmljLWxpdGVyYWxzJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgJ3ByZWZlci1vYmplY3QtaGFzLW93bic6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICdwcmVmZXItb2JqZWN0LXNwcmVhZCc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICdwcmVmZXItcHJvbWlzZS1yZWplY3QtZXJyb3JzJzogWydlcnJvcicsIHsgYWxsb3dUaHJvd2luZ1Vua25vd246IHRydWUgfV0sXG4gICAgICAgICAgICAgICAgICAgICdwcmVmZXItcmVnZXgtbGl0ZXJhbHMnOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAncHJlZmVyLXJlc3QtcGFyYW1zJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgJ3ByZWZlci1zcHJlYWQnOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAncmVxdWlyZS1hd2FpdCc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICdyZXF1aXJlLXVuaWNvZGUtcmVnZXhwJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgeW9kYTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgJ25vLXJlc3RyaWN0ZWQtaW1wb3J0cyc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Fzc2VydCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnUGxlYXNlIHVzZSBub2RlOmFzc2VydC9zdHJpY3QgaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYXNzZXJ0L3N0cmljdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnUGxlYXNlIHVzZSBub2RlOmFzc2VydC9zdHJpY3QgaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbm9kZTphc3NlcnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2Ugbm9kZTphc3NlcnQvc3RyaWN0IGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2FzeW5jX2hvb2tzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6YXN5bmNfaG9va3MgaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYnVmZmVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6YnVmZmVyIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NoaWxkX3Byb2Nlc3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2Ugbm9kZTpjaGlsZF9wcm9jZXNzIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NsdXN0ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2Ugbm9kZTpjbHVzdGVyIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NvbnNvbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2Ugbm9kZTpjb25zb2xlIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NvbnN0YW50cycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQbGVhc2UgdXNlIGNvbnN0YW50cyBwcm9wZXJ0eSBleHBvc2VkIGJ5IHRoZSByZWxldmFudCBtb2R1bGUgaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbm9kZTpjb25zdGFudHMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUGxlYXNlIHVzZSBjb25zdGFudHMgcHJvcGVydHkgZXhwb3NlZCBieSB0aGUgcmVsZXZhbnQgbW9kdWxlIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NyeXB0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnUGxlYXNlIHVzZSBub2RlOmNyeXB0byBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkZ3JhbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnUGxlYXNlIHVzZSBub2RlOmRncmFtIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2RpYWdub3N0aWNzX2NoYW5uZWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2Ugbm9kZTpkaWFnbm9zdGljc19jaGFubmVsIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2RucycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnUGxlYXNlIHVzZSBub2RlOmRucy9wcm9taXNlIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Rucy9wcm9taXNlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnUGxlYXNlIHVzZSBub2RlOmRucy9wcm9taXNlcyBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdub2RlOmRucycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnUGxlYXNlIHVzZSBub2RlOmRucy9wcm9taXNlcyBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkb21haW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdNb2R1bGUgaXMgcGVuZGluZyBkZXByZWNhdGlvbi4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbm9kZTpkb21haW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdNb2R1bGUgaXMgcGVuZGluZyBkZXByZWNhdGlvbi4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZXZlbnRzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6ZXZlbnRzIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2ZzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6ZnMvcHJvbWlzZXMgaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbm9kZTpmcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnUGxlYXNlIHVzZSBub2RlOmZzL3Byb21pc2VzIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2ZzL3Byb21pc2VzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6ZnMvcHJvbWlzZXMgaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnb3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2Ugbm9kZTpvcyBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdodHRwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6aHR0cCBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdodHRwMicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnUGxlYXNlIHVzZSBub2RlOmh0dHBzIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2h0dHBzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6aHR0cDIgaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGF0aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnUGxlYXNlIHVzZSBub2RlOnBhdGggaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncHJvY2VzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnUGxlYXNlIHVzZSBub2RlOnByb2Nlc3MgaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVhZGxpbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2Ugbm9kZTpyZWFkbGluZS9wcm9taXNlcyBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdyZWFkbGluZS9wcm9taXNlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnUGxlYXNlIHVzZSBub2RlOnJlYWRsaW5lL3Byb21pc2VzIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ25vZGU6cmVhZGxpbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2Ugbm9kZTpyZWFkbGluZS9wcm9taXNlcyBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdzdHJlYW0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2Ugbm9kZTpzdHJlYW0vcHJvbWlzZXMgaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnc3RyZWFtL3Byb21pc2VzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6c3RyZWFtL3Byb21pc2VzIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ25vZGU6c3RyZWFtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6c3RyZWFtL3Byb21pc2VzIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ25vZGU6c3RyZWFtL3dlYicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnVGhpcyBtb2R1bGUgaXMgZXhwZXJpbWVudGFsLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd0aW1lcnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2Ugbm9kZTp0aW1lcnMvcHJvbWlzZXMgaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndGltZXJzL3Byb21pc2VzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6dGltZXJzL3Byb21pc2VzIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ25vZGU6dGltZXJzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6dGltZXJzL3Byb21pc2VzIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3F1ZXJ5c3RyaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIFVSTFNlYXJjaFBhcmFtcyBBUEkgaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndXJsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgdXNlIG5vZGU6dXJsIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3V0aWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2Ugbm9kZTp1dGlsIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3dhc2knLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1RoaXMgbW9kdWxlIGlzIGV4cGVyaW1lbnRhbC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbm9kZTp3YXNpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdUaGlzIG1vZHVsZSBpcyBleHBlcmltZW50YWwuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3psaWInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSB1c2Ugbm9kZTp6bGliIGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByb21pc2UuY29uZmlnc1snZmxhdC9yZWNvbW1lbmRlZCddLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgJ3ByZWZlci1hcnJvdyc6IGFycm93LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcnVsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgJ3ByZWZlci1hcnJvdy9wcmVmZXItYXJyb3ctZnVuY3Rpb25zJzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgYWxsb3dOYW1lZEZ1bmN0aW9uczogdHJ1ZSwgc2luZ2xlUmV0dXJuT25seTogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLi4udHMuY29uZmlncy5zdHJpY3RUeXBlQ2hlY2tlZCxcbiAgICAgICAgICAgIC4uLnRzLmNvbmZpZ3Muc3R5bGlzdGljVHlwZUNoZWNrZWQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcnVsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9ucyc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dBbnk6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93Qm9vbGVhbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dOdWxsaXNoOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd051bWJlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd1JlZ0V4cDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dOZXZlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1yZWFkb25seSc6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVzdHJpY3RlZC10eXBlcyc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBdm9pZCB1c2luZyB0aGUgYE9iamVjdGAgdHlwZS4gRGlkIHlvdSBtZWFuIGBvYmplY3RgPycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBdm9pZCB1c2luZyB0aGUgYEZ1bmN0aW9uYCB0eXBlLiBQcmVmZXIgYSBzcGVjaWZpYyBmdW5jdGlvbiB0eXBlLCBsaWtlIGAoKSA9PiB2b2lkYC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb29sZWFuOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBdm9pZCB1c2luZyB0aGUgYEJvb2xlYW5gIHR5cGUuIERpZCB5b3UgbWVhbiBgYm9vbGVhbmA/JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBdm9pZCB1c2luZyB0aGUgYE51bWJlcmAgdHlwZS4gRGlkIHlvdSBtZWFuIGBudW1iZXJgPycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQXZvaWQgdXNpbmcgdGhlIGBTdHJpbmdgIHR5cGUuIERpZCB5b3UgbWVhbiBgc3RyaW5nYD8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgIC