@fenge/eslint-config 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @fenge/eslint-config
2
2
 
3
+ ## 0.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 55cf874: chore: upgrade typescript-eslint to v8
8
+
9
+ ### Patch Changes
10
+
11
+ - 1848169: chore: upgrade deps
12
+ - 9f04b44: refactor(eslint-config): replace `eslint-plugin-deprecation` with `@typescript-eslint/no-deprecated`
13
+
3
14
  ## 0.2.1
4
15
 
5
16
  ### Patch Changes
@@ -419,7 +419,7 @@ export declare function javascript(): readonly [{
419
419
  readonly "@typescript-eslint": {
420
420
  configs: Record<string, import("@typescript-eslint/utils/ts-eslint").ClassicConfig.Config>;
421
421
  meta: import("@typescript-eslint/utils/ts-eslint").FlatConfig.PluginMeta;
422
- rules: import("@typescript-eslint/eslint-plugin/use-at-your-own-risk/rules").TypeScriptESLintRules;
422
+ rules: typeof import("@typescript-eslint/eslint-plugin/use-at-your-own-risk/rules");
423
423
  };
424
424
  };
425
425
  readonly rules: {
@@ -446,6 +446,7 @@ export declare function javascript(): readonly [{
446
446
  }];
447
447
  readonly "no-invalid-this": "error";
448
448
  readonly "no-multi-assign": "error";
449
+ readonly "no-object-constructor": "error";
449
450
  readonly "no-param-reassign": "error";
450
451
  readonly "no-plusplus": "error";
451
452
  readonly "no-setter-return": "error";
@@ -659,7 +660,6 @@ export declare function javascript(): readonly [{
659
660
  readonly 'no-multi-str': "error";
660
661
  readonly 'no-new': "error";
661
662
  readonly 'no-new-func': "error";
662
- readonly 'no-new-object': "error";
663
663
  readonly 'no-new-symbol': "error";
664
664
  readonly 'no-new-wrappers': "error";
665
665
  readonly 'no-obj-calls': "error";
@@ -1 +1 @@
1
- {"version":3,"file":"javascript.d.ts","sourceRoot":"","sources":["../../src/config/javascript.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"javascript.d.ts","sourceRoot":"","sources":["../../src/config/javascript.ts"],"names":[],"mappings":"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"}
@@ -147,7 +147,7 @@ export function javascript() {
147
147
  // 'no-multiple-empty-lines': ['error', { max: 1, maxBOF: 0, maxEOF: 0 }],
148
148
  'no-new': 'error',
149
149
  'no-new-func': 'error',
150
- 'no-new-object': 'error',
150
+ // 'no-new-object': 'error',
151
151
  'no-new-symbol': 'error',
152
152
  'no-new-wrappers': 'error',
153
153
  'no-obj-calls': 'error',
@@ -318,6 +318,7 @@ export function javascript() {
318
318
  ], // forbid code like `const num = +str`;
319
319
  "no-invalid-this": "error",
320
320
  "no-multi-assign": "error",
321
+ "no-object-constructor": "error",
321
322
  "no-param-reassign": "error",
322
323
  "no-plusplus": "error",
323
324
  "no-setter-return": "error",
@@ -472,4 +473,4 @@ export function javascript() {
472
473
  },
473
474
  ];
474
475
  }
475
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvamF2YXNjcmlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssV0FBVyxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sUUFBUSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hELE9BQU8sYUFBYSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBQzNDLE9BQU8sS0FBSyxTQUFTLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxRQUFRLE1BQU0sa0JBQWtCLENBQUM7QUFDeEMsT0FBTyxZQUFZLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxPQUFPLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxhQUFhLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxXQUFXLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxnQkFBZ0IsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLHNCQUFzQixNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sYUFBYSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sYUFBYSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUU5QixNQUFNLFVBQVUsVUFBVTtJQUN4QiwwRkFBMEY7SUFDMUYsa0JBQWtCO0lBQ2xCLE1BQU0sbUJBQW1CLEdBQUc7UUFDMUIsUUFBUSxFQUFFLE9BQU87UUFDakIsa0JBQWtCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDO1FBRTNDLGdCQUFnQixFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNsRiwrQ0FBK0M7UUFDL0MsdUJBQXVCLEVBQUUsQ0FBQyxPQUFPLEVBQUU7Z0JBQ2pDLGFB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QUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZmVuZ2VQbHVnaW4gZnJvbSBcIkBmZW5nZS9lc2xpbnQtcGx1Z2luXCI7XG5pbXBvcnQgdHNQbHVnaW4gZnJvbSBcIkB0eXBlc2NyaXB0LWVzbGludC9lc2xpbnQtcGx1Z2luXCI7XG5pbXBvcnQgY29uZnVzaW5nS2V5cyBmcm9tIFwiY29uZnVzaW5nLWJyb3dzZXItZ2xvYmFsc1wiO1xuaW1wb3J0IGVzeFBsdWdpbiBmcm9tIFwiZXNsaW50LXBsdWdpbi1lcy14XCI7XG5pbXBvcnQgKiBhcyBlc21QbHVnaW4gZnJvbSBcImVzbGludC1wbHVnaW4tZXNtXCI7XG5pbXBvcnQgZnBQbHVnaW4gZnJvbSBcImVzbGludC1wbHVnaW4tZnBcIjtcbmltcG9ydCBpbXBvcnRQbHVnaW4gZnJvbSBcImVzbGludC1wbHVnaW4taW1wb3J0XCI7XG5pbXBvcnQgblBsdWdpbiBmcm9tIFwiZXNsaW50LXBsdWdpbi1uXCI7XG5pbXBvcnQgcHJvbWlzZVBsdWdpbiBmcm9tIFwiZXNsaW50LXBsdWdpbi1wcm9taXNlXCI7XG5pbXBvcnQgcmVhY3RQbHVnaW4gZnJvbSBcImVzbGludC1wbHVnaW4tcmVhY3RcIjtcbmltcG9ydCByZWFjdEhvb2tzUGx1Z2luIGZyb20gXCJlc2xpbnQtcGx1Z2luLXJlYWN0LWhvb2tzXCI7XG5pbXBvcnQgc2ltcGxlSW1wb3J0U29ydFBsdWdpbiBmcm9tIFwiZXNsaW50LXBsdWdpbi1zaW1wbGUtaW1wb3J0LXNvcnRcIjtcbmltcG9ydCBzb25hcmpzUGx1Z2luIGZyb20gXCJlc2xpbnQtcGx1Z2luLXNvbmFyanNcIjtcbmltcG9ydCB1bmljb3JuUGx1Z2luIGZyb20gXCJlc2xpbnQtcGx1Z2luLXVuaWNvcm5cIjtcbmltcG9ydCBnbG9iYWxzIGZyb20gXCJnbG9iYWxzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBqYXZhc2NyaXB0KCkge1xuICAvLyBjb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vc3RhbmRhcmQvZXNsaW50LWNvbmZpZy1zdGFuZGFyZC9ibG9iL21hc3Rlci9zcmMvaW5kZXgudHNcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIGNvbnN0IHN0YW5kYXJkQ29uZmlnUnVsZXMgPSB7XG4gICAgJ25vLXZhcic6ICdlcnJvcicsXG4gICAgJ29iamVjdC1zaG9ydGhhbmQnOiBbJ2Vycm9yJywgJ3Byb3BlcnRpZXMnXSxcblxuICAgICdhY2Nlc3Nvci1wYWlycyc6IFsnZXJyb3InLCB7IHNldFdpdGhvdXRHZXQ6IHRydWUsIGVuZm9yY2VGb3JDbGFzc01lbWJlcnM6IHRydWUgfV0sXG4gICAgLy8gJ2FycmF5LWJyYWNrZXQtc3BhY2luZyc6IFsnZXJyb3InLCAnbmV2ZXInXSxcbiAgICAnYXJyYXktY2FsbGJhY2stcmV0dXJuJzogWydlcnJvcicsIHtcbiAgICAgIGFsbG93SW1wbGljaXQ6IGZhbHNlLFxuICAgICAgY2hlY2tGb3JFYWNoOiBmYWxzZVxuICAgIH1dLFxuICAgIC8vICdhcnJvdy1zcGFjaW5nJzogWydlcnJvcicsIHsgYmVmb3JlOiB0cnVlLCBhZnRlcjogdHJ1ZSB9XSxcbiAgICAvLyAnYmxvY2stc3BhY2luZyc6IFsnZXJyb3InLCAnYWx3YXlzJ10sXG4gICAgLy8gJ2JyYWNlLXN0eWxlJzogWydlcnJvcicsICcxdGJzJywgeyBhbGxvd1NpbmdsZUxpbmU6IHRydWUgfV0sXG4gICAgY2FtZWxjYXNlOiBbJ2Vycm9yJywge1xuICAgICAgYWxsb3c6IFsnXlVOU0FGRV8nXSxcbiAgICAgIHByb3BlcnRpZXM6ICduZXZlcicsXG4gICAgICBpZ25vcmVHbG9iYWxzOiB0cnVlXG4gICAgfV0sXG4gICAgLy8gJ2NvbW1hLWRhbmdsZSc6IFsnZXJyb3InLCB7XG4gICAgLy8gICBhcnJheXM6ICduZXZlcicsXG4gICAgLy8gICBvYmplY3RzOiAnbmV2ZXInLFxuICAgIC8vICAgaW1wb3J0czogJ25ldmVyJyxcbiAgICAvLyAgIGV4cG9ydHM6ICduZXZlcicsXG4gICAgLy8gICBmdW5jdGlvbnM6ICduZXZlcidcbiAgICAvLyB9XSxcbiAgICAvLyAnY29tbWEtc3BhY2luZyc6IFsnZXJyb3InLCB7IGJlZm9yZTogZmFsc2UsIGFmdGVyOiB0cnVlIH1dLFxuICAgIC8vICdjb21tYS1zdHlsZSc6IFsnZXJyb3InLCAnbGFzdCddLFxuICAgIC8vICdjb21wdXRlZC1wcm9wZXJ0eS1zcGFjaW5nJzogWydlcnJvcicsICduZXZlcicsIHsgZW5mb3JjZUZvckNsYXNzTWVtYmVyczogdHJ1ZSB9XSxcbiAgICAnY29uc3RydWN0b3Itc3VwZXInOiAnZXJyb3InLFxuICAgIC8vIGN1cmx5OiBbJ2Vycm9yJywgJ211bHRpLWxpbmUnXSxcbiAgICAnZGVmYXVsdC1jYXNlLWxhc3QnOiAnZXJyb3InLFxuICAgIC8vICdkb3QtbG9jYXRpb24nOiBbJ2Vycm9yJywgJ3Byb3BlcnR5J10sXG4gICAgLy8gJ2RvdC1ub3RhdGlvbic6IFsnZXJyb3InLCB7IGFsbG93S2V5d29yZHM6IHRydWUgfV0sIC8vIFRPRE86IFRoaXMgc2hvdWxkIGJlIGVuYWJsZWQuIERpc2FibGUgaXQgYXMgaXQgY29uZmxpY3RzIHdpdGggdHMgd2hlbiBlbmFibGluZyB0cy1jaGVja1xuICAgIC8vICdlb2wtbGFzdCc6ICdlcnJvcicsXG4gICAgZXFlcWVxOiBbJ2Vycm9yJywgJ2Fsd2F5cycsIHsgbnVsbDogJ2lnbm9yZScgfV0sXG4gICAgLy8gJ2Z1bmMtY2FsbC1zcGFjaW5nJzogWydlcnJvcicsICduZXZlciddLFxuICAgIC8vICdnZW5lcmF0b3Itc3Rhci1zcGFjaW5nJzogWydlcnJvcicsIHsgYmVmb3JlOiB0cnVlLCBhZnRlcjogdHJ1ZSB9XSxcbiAgICAvLyBpbmRlbnQ6IFsnZXJyb3InLCAyLCB7XG4gICAgLy8gICBTd2l0Y2hDYXNlOiAxLFxuICAgIC8vICAgVmFyaWFibGVEZWNsYXJhdG9yOiAxLFxuICAgIC8vICAgb3V0ZXJJSUZFQm9keTogMSxcbiAgICAvLyAgIE1lbWJlckV4cHJlc3Npb246IDEsXG4gICAgLy8gICBGdW5jdGlvbkRlY2xhcmF0aW9uOiB7IHBhcmFtZXRlcnM6IDEsIGJvZHk6IDEgfSxcbiAgICAvLyAgIEZ1bmN0aW9uRXhwcmVzc2lvbjogeyBwYXJhbWV0ZXJzOiAxLCBib2R5OiAxIH0sXG4gICAgLy8gICBDYWxsRXhwcmVzc2lvbjogeyBhcmd1bWVudHM6IDEgfSxcbiAgICAvLyAgIEFycmF5RXhwcmVzc2lvbjogMSxcbiAgICAvLyAgIE9iamVjdEV4cHJlc3Npb246IDEsXG4gICAgLy8gICBJbXBvcnREZWNsYXJhdGlvbjogMSxcbiAgICAvLyAgIGZsYXRUZXJuYXJ5RXhwcmVzc2lvbnM6IGZhbHNlLFxuICAgIC8vICAgaWdub3JlQ29tbWVudHM6IGZhbHNlLFxuICAgIC8vICAgaWdub3JlZE5vZGVzOiBbXG4gICAgLy8gICAgICdUZW1wbGF0ZUxpdGVyYWwgKicsXG4gICAgLy8gICAgICdKU1hFbGVtZW50JyxcbiAgICAvLyAgICAgJ0pTWEVsZW1lbnQgPiAqJyxcbiAgICAvLyAgICAgJ0pTWEF0dHJpYnV0ZScsXG4gICAgLy8gICAgICdKU1hJZGVudGlmaWVyJyxcbiAgICAvLyAgICAgJ0pTWE5hbWVzcGFjZWROYW1lJyxcbiAgICAvLyAgICAgJ0pTWE1lbWJlckV4cHJlc3Npb24nLFxuICAgIC8vICAgICAnSlNYU3ByZWFkQXR0cmlidXRlJyxcbiAgICAvLyAgICAgJ0pTWEV4cHJlc3Npb25Db250YWluZXInLFxuICAgIC8vICAgICAnSlNYT3BlbmluZ0VsZW1lbnQnLFxuICAgIC8vICAgICAnSlNYQ2xvc2luZ0VsZW1lbnQnLFxuICAgIC8vICAgICAnSlNYRnJhZ21lbnQnLFxuICAgIC8vICAgICAnSlNYT3BlbmluZ0ZyYWdtZW50JyxcbiAgICAvLyAgICAgJ0pTWENsb3NpbmdGcmFnbWVudCcsXG4gICAgLy8gICAgICdKU1hUZXh0JyxcbiAgICAvLyAgICAgJ0pTWEVtcHR5RXhwcmVzc2lvbicsXG4gICAgLy8gICAgICdKU1hTcHJlYWRDaGlsZCdcbiAgICAvLyAgIF0sXG4gICAgLy8gICBvZmZzZXRUZXJuYXJ5RXhwcmVzc2lvbnM6IHRydWVcbiAgICAvLyB9XSxcbiAgICAvLyAna2V5LXNwYWNpbmcnOiBbJ2Vycm9yJywgeyBiZWZvcmVDb2xvbjogZmFsc2UsIGFmdGVyQ29sb246IHRydWUgfV0sXG4gICAgLy8gJ2tleXdvcmQtc3BhY2luZyc6IFsnZXJyb3InLCB7IGJlZm9yZTogdHJ1ZSwgYWZ0ZXI6IHRydWUgfV0sXG4gICAgLy8gJ2xpbmVzLWJldHdlZW4tY2xhc3MtbWVtYmVycyc6IFsnZXJyb3InLCAnYWx3YXlzJywgeyBleGNlcHRBZnRlclNpbmdsZUxpbmU6IHRydWUgfV0sXG4gICAgLy8gJ211bHRpbGluZS10ZXJuYXJ5JzogWydlcnJvcicsICdhbHdheXMtbXVsdGlsaW5lJ10sXG4gICAgJ25ldy1jYXAnOiBbJ2Vycm9yJywgeyBuZXdJc0NhcDogdHJ1ZSwgY2FwSXNOZXc6IGZhbHNlLCBwcm9wZXJ0aWVzOiB0cnVlIH1dLFxuICAgIC8vICduZXctcGFyZW5zJzogJ2Vycm9yJyxcbiAgICAnbm8tYXJyYXktY29uc3RydWN0b3InOiAnZXJyb3InLFxuICAgICduby1hc3luYy1wcm9taXNlLWV4ZWN1dG9yJzogJ2Vycm9yJyxcbiAgICAnbm8tY2FsbGVyJzogJ2Vycm9yJyxcbiAgICAnbm8tY2FzZS1kZWNsYXJhdGlvbnMnOiAnZXJyb3InLFxuICAgICduby1jbGFzcy1hc3NpZ24nOiAnZXJyb3InLFxuICAgICduby1jb21wYXJlLW5lZy16ZXJvJzogJ2Vycm9yJyxcbiAgICAnbm8tY29uZC1hc3NpZ24nOiAnZXJyb3InLFxuICAgICduby1jb25zdC1hc3NpZ24nOiAnZXJyb3InLFxuICAgICduby1jb25zdGFudC1jb25kaXRpb24nOiBbJ2Vycm9yJywgeyBjaGVja0xvb3BzOiBmYWxzZSB9XSxcbiAgICAnbm8tY29udHJvbC1yZWdleCc6ICdlcnJvcicsXG4gICAgJ25vLWRlYnVnZ2VyJzogJ2Vycm9yJyxcbiAgICAnbm8tZGVsZXRlLXZhcic6ICdlcnJvcicsXG4gICAgJ25vLWR1cGUtYXJncyc6ICdlcnJvcicsXG4gICAgJ25vLWR1cGUtY2xhc3MtbWVtYmVycyc6ICdlcnJvcicsXG4gICAgJ25vLWR1cGUta2V5cyc6ICdlcnJvcicsXG4gICAgJ25vLWR1cGxpY2F0ZS1jYXNlJzogJ2Vycm9yJyxcbiAgICAnbm8tdXNlbGVzcy1iYWNrcmVmZXJlbmNlJzogJ2Vycm9yJyxcbiAgICAnbm8tZW1wdHknOiBbJ2Vycm9yJywgeyBhbGxvd0VtcHR5Q2F0Y2g6IHRydWUgfV0sXG4gICAgJ25vLWVtcHR5LWNoYXJhY3Rlci1jbGFzcyc6ICdlcnJvcicsXG4gICAgJ25vLWVtcHR5LXBhdHRlcm4nOiAnZXJyb3InLFxuICAgICduby1ldmFsJzogJ2Vycm9yJyxcbiAgICAnbm8tZXgtYXNzaWduJzogJ2Vycm9yJyxcbiAgICAnbm8tZXh0ZW5kLW5hdGl2ZSc6ICdlcnJvcicsXG4gICAgJ25vLWV4dHJhLWJpbmQnOiAnZXJyb3InLFxuICAgICduby1leHRyYS1ib29sZWFuLWNhc3QnOiAnZXJyb3InLFxuICAgIC8vICduby1leHRyYS1wYXJlbnMnOiBbJ2Vycm9yJywgJ2Z1bmN0aW9ucyddLFxuICAgICduby1mYWxsdGhyb3VnaCc6ICdlcnJvcicsXG4gICAgLy8gJ25vLWZsb2F0aW5nLWRlY2ltYWwnOiAnZXJyb3InLFxuICAgICduby1mdW5jLWFzc2lnbic6ICdlcnJvcicsXG4gICAgJ25vLWdsb2JhbC1hc3NpZ24nOiAnZXJyb3InLFxuICAgICduby1pbXBsaWVkLWV2YWwnOiAnZXJyb3InLFxuICAgICduby1pbXBvcnQtYXNzaWduJzogJ2Vycm9yJyxcbiAgICAnbm8taW52YWxpZC1yZWdleHAnOiAnZXJyb3InLFxuICAgICduby1pcnJlZ3VsYXItd2hpdGVzcGFjZSc6ICdlcnJvcicsXG4gICAgJ25vLWl0ZXJhdG9yJzogJ2Vycm9yJyxcbiAgICAnbm8tbGFiZWxzJzogWydlcnJvcicsIHsgYWxsb3dMb29wOiBmYWxzZSwgYWxsb3dTd2l0Y2g6IGZhbHNlIH1dLFxuICAgICduby1sb25lLWJsb2Nrcyc6ICdlcnJvcicsXG4gICAgJ25vLWxvc3Mtb2YtcHJlY2lzaW9uJzogJ2Vycm9yJyxcbiAgICAnbm8tbWlzbGVhZGluZy1jaGFyYWN0ZXItY2xhc3MnOiAnZXJyb3InLFxuICAgICduby1wcm90b3R5cGUtYnVpbHRpbnMnOiAnZXJyb3InLFxuICAgICduby11c2VsZXNzLWNhdGNoJzogJ2Vycm9yJyxcbiAgICAvLyAnbm8tbWl4ZWQtb3BlcmF0b3JzJzogWydlcnJvcicsIHtcbiAgICAvLyAgIGdyb3VwczogW1xuICAgIC8vICAgICBbJz09JywgJyE9JywgJz09PScsICchPT0nLCAnPicsICc+PScsICc8JywgJzw9J10sXG4gICAgLy8gICAgIFsnJiYnLCAnfHwnXSxcbiAgICAvLyAgICAgWydpbicsICdpbnN0YW5jZW9mJ11cbiAgICAvLyAgIF0sXG4gICAgLy8gICBhbGxvd1NhbWVQcmVjZWRlbmNlOiB0cnVlXG4gICAgLy8gfV0sXG4gICAgLy8gJ25vLW1peGVkLXNwYWNlcy1hbmQtdGFicyc6ICdlcnJvcicsXG4gICAgLy8gJ25vLW11bHRpLXNwYWNlcyc6ICdlcnJvcicsXG4gICAgJ25vLW11bHRpLXN0cic6ICdlcnJvcicsXG4gICAgLy8gJ25vLW11bHRpcGxlLWVtcHR5LWxpbmVzJzogWydlcnJvcicsIHsgbWF4OiAxLCBtYXhCT0Y6IDAsIG1heEVPRjogMCB9XSxcbiAgICAnbm8tbmV3JzogJ2Vycm9yJyxcbiAgICAnbm8tbmV3LWZ1bmMnOiAnZXJyb3InLFxuICAgICduby1uZXctb2JqZWN0JzogJ2Vycm9yJyxcbiAgICAnbm8tbmV3LXN5bWJvbCc6ICdlcnJvcicsXG4gICAgJ25vLW5ldy13cmFwcGVycyc6ICdlcnJvcicsXG4gICAgJ25vLW9iai1jYWxscyc6ICdlcnJvcicsXG4gICAgJ25vLW9jdGFsJzogJ2Vycm9yJyxcbiAgICAnbm8tb2N0YWwtZXNjYXBlJzogJ2Vycm9yJyxcbiAgICAnbm8tcHJvdG8nOiAnZXJyb3InLFxuICAgICduby1yZWRlY2xhcmUnOiBbJ2Vycm9yJywgeyBidWlsdGluR2xvYmFsczogZmFsc2UgfV0sXG4gICAgJ25vLXJlZ2V4LXNwYWNlcyc6ICdlcnJvcicsXG4gICAgJ25vLXJldHVybi1hc3NpZ24nOiBbJ2Vycm9yJywgJ2V4Y2VwdC1wYXJlbnMnXSxcbiAgICAnbm8tc2VsZi1hc3NpZ24nOiBbJ2Vycm9yJywgeyBwcm9wczogdHJ1ZSB9XSxcbiAgICAnbm8tc2VsZi1jb21wYXJlJzogJ2Vycm9yJyxcbiAgICAnbm8tc2VxdWVuY2VzJzogJ2Vycm9yJyxcbiAgICAnbm8tc2hhZG93LXJlc3RyaWN0ZWQtbmFtZXMnOiAnZXJyb3InLFxuICAgICduby1zcGFyc2UtYXJyYXlzJzogJ2Vycm9yJyxcbiAgICAvLyAnbm8tdGFicyc6ICdlcnJvcicsXG4gICAgJ25vLXRlbXBsYXRlLWN1cmx5LWluLXN0cmluZyc6ICdlcnJvcicsXG4gICAgJ25vLXRoaXMtYmVmb3JlLXN1cGVyJzogJ2Vycm9yJyxcbiAgICAnbm8tdGhyb3ctbGl0ZXJhbCc6ICdlcnJvcicsXG4gICAgLy8gJ25vLXRyYWlsaW5nLXNwYWNlcyc6ICdlcnJvcicsXG4gICAgJ25vLXVuZGVmJzogJ2Vycm9yJyxcbiAgICAvLyAnbm8tdW5kZWYtaW5pdCc6ICdlcnJvcicsIC8vIEl0IGNvbmZsaWN0IHdpdGggYGluaXQtZGVjbGFyYXRpb25zYFxuICAgIC8vICduby11bmV4cGVjdGVkLW11bHRpbGluZSc6ICdlcnJvcicsXG4gICAgJ25vLXVubW9kaWZpZWQtbG9vcC1jb25kaXRpb24nOiAnZXJyb3InLFxuICAgICduby11bm5lZWRlZC10ZXJuYXJ5JzogWydlcnJvcicsIHsgZGVmYXVsdEFzc2lnbm1lbnQ6IGZhbHNlIH1dLFxuICAgICduby11bnJlYWNoYWJsZSc6ICdlcnJvcicsXG4gICAgJ25vLXVucmVhY2hhYmxlLWxvb3AnOiAnZXJyb3InLFxuICAgICduby11bnNhZmUtZmluYWxseSc6ICdlcnJvcicsXG4gICAgJ25vLXVuc2FmZS1uZWdhdGlvbic6ICdlcnJvcicsXG4gICAgJ25vLXVudXNlZC1leHByZXNzaW9ucyc6IFsnZXJyb3InLCB7XG4gICAgICBhbGxvd1Nob3J0Q2lyY3VpdDogdHJ1ZSxcbiAgICAgIGFsbG93VGVybmFyeTogdHJ1ZSxcbiAgICAgIGFsbG93VGFnZ2VkVGVtcGxhdGVzOiB0cnVlXG4gICAgfV0sXG4gICAgJ25vLXVudXNlZC12YXJzJzogWydlcnJvcicsIHtcbiAgICAgIGFyZ3M6ICdub25lJyxcbiAgICAgIGNhdWdodEVycm9yczogJ25vbmUnLFxuICAgICAgaWdub3JlUmVzdFNpYmxpbmdzOiB0cnVlLFxuICAgICAgdmFyczogJ2FsbCdcbiAgICB9XSxcbiAgICAnbm8tdXNlLWJlZm9yZS1kZWZpbmUnOiBbJ2Vycm9yJywgeyBmdW5jdGlvbnM6IGZhbHNlLCBjbGFzc2VzOiBmYWxzZSwgdmFyaWFibGVzOiBmYWxzZSB9XSxcbiAgICAnbm8tdXNlbGVzcy1jYWxsJzogJ2Vycm9yJyxcbiAgICAnbm8tdXNlbGVzcy1jb21wdXRlZC1rZXknOiAnZXJyb3InLFxuICAgICduby11c2VsZXNzLWNvbnN0cnVjdG9yJzogJ2Vycm9yJyxcbiAgICAnbm8tdXNlbGVzcy1lc2NhcGUnOiAnZXJyb3InLFxuICAgICduby11c2VsZXNzLXJlbmFtZSc6ICdlcnJvcicsXG4gICAgJ25vLXVzZWxlc3MtcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAnbm8tdm9pZCc6ICdlcnJvcicsXG4gICAgLy8gJ25vLXdoaXRlc3BhY2UtYmVmb3JlLXByb3BlcnR5JzogJ2Vycm9yJyxcbiAgICAnbm8td2l0aCc6ICdlcnJvcicsXG4gICAgLy8gJ29iamVjdC1jdXJseS1uZXdsaW5lJzogWydlcnJvcicsIHsgbXVsdGlsaW5lOiB0cnVlLCBjb25zaXN0ZW50OiB0cnVlIH1dLFxuICAgIC8vICdvYmplY3QtY3VybHktc3BhY2luZyc6IFsnZXJyb3InLCAnYWx3YXlzJ10sXG4gICAgLy8gJ29iamVjdC1wcm9wZXJ0eS1uZXdsaW5lJzogWydlcnJvcicsIHsgYWxsb3dNdWx0aXBsZVByb3BlcnRpZXNQZXJMaW5lOiB0cnVlIH1dLFxuICAgICdvbmUtdmFyJzogWydlcnJvcicsIHsgaW5pdGlhbGl6ZWQ6ICduZXZlcicgfV0sXG4gICAgLy8gJ29wZXJhdG9yLWxpbmVicmVhayc6IFsnZXJyb3InLCAnYWZ0ZXInLCB7IG92ZXJyaWRlczogeyAnPyc6ICdiZWZvcmUnLCAnOic6ICdiZWZvcmUnLCAnfD4nOiAnYmVmb3JlJyB9IH1dLFxuICAgIC8vICdwYWRkZWQtYmxvY2tzJzogWydlcnJvcicsIHsgYmxvY2tzOiAnbmV2ZXInLCBzd2l0Y2hlczogJ25ldmVyJywgY2xhc3NlczogJ25ldmVyJyB9XSxcbiAgICAncHJlZmVyLWNvbnN0JzogWydlcnJvcicsIHsgZGVzdHJ1Y3R1cmluZzogJ2FsbCcgfV0sXG4gICAgJ3ByZWZlci1wcm9taXNlLXJlamVjdC1lcnJvcnMnOiAnZXJyb3InLFxuICAgICdwcmVmZXItcmVnZXgtbGl0ZXJhbHMnOiBbJ2Vycm9yJywgeyBkaXNhbGxvd1JlZHVuZGFudFdyYXBwaW5nOiB0cnVlIH1dLFxuICAgIC8vICdxdW90ZS1wcm9wcyc6IFsnZXJyb3InLCAnYXMtbmVlZGVkJ10sXG4gICAgLy8gcXVvdGVzOiBbJ2Vycm9yJywgJ3NpbmdsZScsIHsgYXZvaWRFc2NhcGU6IHRydWUsIGFsbG93VGVtcGxhdGVMaXRlcmFsczogZmFsc2UgfV0sXG4gICAgLy8gJ3Jlc3Qtc3ByZWFkLXNwYWNpbmcnOiBbJ2Vycm9yJywgJ25ldmVyJ10sXG4gICAgLy8gc2VtaTogWydlcnJvcicsICduZXZlciddLFxuICAgIC8vICdzZW1pLXNwYWNpbmcnOiBbJ2Vycm9yJywgeyBiZWZvcmU6IGZhbHNlLCBhZnRlcjogdHJ1ZSB9XSxcbiAgICAvLyAnc3BhY2UtYmVmb3JlLWJsb2Nrcyc6IFsnZXJyb3InLCAnYWx3YXlzJ10sXG4gICAgLy8gJ3NwYWNlLWJlZm9yZS1mdW5jdGlvbi1wYXJlbic6IFsnZXJyb3InLCAnYWx3YXlzJ10sXG4gICAgLy8gJ3NwYWNlLWluLXBhcmVucyc6IFsnZXJyb3InLCAnbmV2ZXInXSxcbiAgICAvLyAnc3BhY2UtaW5maXgtb3BzJzogJ2Vycm9yJyxcbiAgICAvLyAnc3BhY2UtdW5hcnktb3BzJzogWydlcnJvcicsIHsgd29yZHM6IHRydWUsIG5vbndvcmRzOiBmYWxzZSB9XSxcbiAgICAvLyAnc3BhY2VkLWNvbW1lbnQnOiBbJ2Vycm9yJywgJ2Fsd2F5cycsIHtcbiAgICAvLyAgIGxpbmU6IHsgbWFya2VyczogWycqcGFja2FnZScsICchJywgJy8nLCAnLCcsICc9J10gfSxcbiAgICAvLyAgIGJsb2NrOiB7IGJhbGFuY2VkOiB0cnVlLCBtYXJrZXJzOiBbJypwYWNrYWdlJywgJyEnLCAnLCcsICc6JywgJzo6JywgJ2Zsb3ctaW5jbHVkZSddLCBleGNlcHRpb25zOiBbJyonXSB9XG4gICAgLy8gfV0sXG4gICAgJ3N5bWJvbC1kZXNjcmlwdGlvbic6ICdlcnJvcicsXG4gICAgLy8gJ3RlbXBsYXRlLWN1cmx5LXNwYWNpbmcnOiBbJ2Vycm9yJywgJ25ldmVyJ10sXG4gICAgLy8gJ3RlbXBsYXRlLXRhZy1zcGFjaW5nJzogWydlcnJvcicsICduZXZlciddLFxuICAgICd1bmljb2RlLWJvbSc6IFsnZXJyb3InLCAnbmV2ZXInXSxcbiAgICAndXNlLWlzbmFuJzogWydlcnJvcicsIHtcbiAgICAgIGVuZm9yY2VGb3JTd2l0Y2hDYXNlOiB0cnVlLFxuICAgICAgZW5mb3JjZUZvckluZGV4T2Y6IHRydWVcbiAgICB9XSxcbiAgICAndmFsaWQtdHlwZW9mJzogWydlcnJvcicsIHsgcmVxdWlyZVN0cmluZ0xpdGVyYWxzOiB0cnVlIH1dLFxuICAgIC8vICd3cmFwLWlpZmUnOiBbJ2Vycm9yJywgJ2FueScsIHsgZnVuY3Rpb25Qcm90b3R5cGVNZXRob2RzOiB0cnVlIH1dLFxuICAgIC8vICd5aWVsZC1zdGFyLXNwYWNpbmcnOiBbJ2Vycm9yJywgJ2JvdGgnXSxcbiAgICB5b2RhOiBbJ2Vycm9yJywgJ25ldmVyJ10sXG5cbiAgICAnaW1wb3J0L2V4cG9ydCc6ICdlcnJvcicsXG4gICAgJ2ltcG9ydC9maXJzdCc6ICdlcnJvcicsXG4gICAgJ2ltcG9ydC9uby1hYnNvbHV0ZS1wYXRoJzogWydlcnJvcicsIHsgZXNtb2R1bGU6IHRydWUsIGNvbW1vbmpzOiB0cnVlLCBhbWQ6IGZhbHNlIH1dLFxuICAgICdpbXBvcnQvbm8tZHVwbGljYXRlcyc6ICdlcnJvcicsXG4gICAgJ2ltcG9ydC9uby1uYW1lZC1kZWZhdWx0JzogJ2Vycm9yJyxcbiAgICAnaW1wb3J0L25vLXdlYnBhY2stbG9hZGVyLXN5bnRheCc6ICdlcnJvcicsXG5cbiAgICAnbi9oYW5kbGUtY2FsbGJhY2stZXJyJzogWydlcnJvcicsICdeKGVycnxlcnJvcikkJ10sXG4gICAgJ24vbm8tY2FsbGJhY2stbGl0ZXJhbCc6ICdlcnJvcicsXG4gICAgJ24vbm8tZGVwcmVjYXRlZC1hcGknOiAnZXJyb3InLFxuICAgICduL25vLWV4cG9ydHMtYXNzaWduJzogJ2Vycm9yJyxcbiAgICAnbi9uby1uZXctcmVxdWlyZSc6ICdlcnJvcicsXG4gICAgJ24vbm8tcGF0aC1jb25jYXQnOiAnZXJyb3InLFxuICAgICduL3Byb2Nlc3MtZXhpdC1hcy10aHJvdyc6ICdlcnJvcicsXG5cbiAgICAncHJvbWlzZS9wYXJhbS1uYW1lcyc6ICdlcnJvcidcbiAgfSBhcyBjb25zdDtcblxuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIG5hbWU6IFwiZmVuZ2UvamF2YXNjcmlwdFwiLFxuICAgICAgZmlsZXM6IFtcIioqLyoue2pzLGNqcyxtanMsanN4fVwiXSxcbiAgICAgIC8vIGh0dHBzOi8vZXNsaW50Lm9yZy9kb2NzL2xhdGVzdC91c2UvY29uZmlndXJlL2xhbmd1YWdlLW9wdGlvbnNcbiAgICAgIGxhbmd1YWdlT3B0aW9uczoge1xuICAgICAgICBlY21hVmVyc2lvbjogXCJsYXRlc3RcIixcbiAgICAgICAgc291cmNlVHlwZTogXCJtb2R1bGVcIixcbiAgICAgICAgcGFyc2VyT3B0aW9uczoge1xuICAgICAgICAgIC8vIFRPRE8gYGVjbWFWZXJzaW9uYCBhbmQgYHNvdXJjZVR5cGVgIGFyZSBubyBzdGFuZGFyZCBoZXJlLiBpbXBvcnQvbm8tZGVmYXVsdC1leHBvcnQgcmVxdWlyZWQgdGhpc1xuICAgICAgICAgIGVjbWFWZXJzaW9uOiBcImxhdGVzdFwiLFxuICAgICAgICAgIHNvdXJjZVR5cGU6IFwibW9kdWxlXCIsXG4gICAgICAgICAgZWNtYUZlYXR1cmVzOiB7XG4gICAgICAgICAgICBqc3g6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZ2xvYmFsczoge1xuICAgICAgICAgIC4uLk9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGdsb2JhbHMuYnJvd3NlcilcbiAgICAgICAgICAgICAgLmZpbHRlcigoW2tdKSA9PiAhY29uZnVzaW5nS2V5cy5pbmNsdWRlcyhrKSlcbiAgICAgICAgICAgICAgLmZpbHRlcigoW2tdKSA9PiAhW1wic2VsZlwiLCBcImdsb2JhbFwiXS5pbmNsdWRlcyhrKSksIC8vIHByZWZlciBgZ2xvYmFsVGhpc2BcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGxpbnRlck9wdGlvbnM6IHtcbiAgICAgICAgLy8gbm9JbmxpbmVDb25maWc6IHRydWUsIC8vIHRvbyBzdHJpY3RcbiAgICAgICAgcmVwb3J0VW51c2VkRGlzYWJsZURpcmVjdGl2ZXM6IHRydWUsXG4gICAgICB9LFxuICAgICAgcGx1Z2luczoge1xuICAgICAgICBmcDogZnBQbHVnaW4sXG4gICAgICAgIG46IG5QbHVnaW4sXG4gICAgICAgIGltcG9ydDogaW1wb3J0UGx1Z2luLFxuICAgICAgICBwcm9taXNlOiBwcm9taXNlUGx1Z2luLFxuICAgICAgICByZWFjdDogcmVhY3RQbHVnaW4sXG4gICAgICAgIFwicmVhY3QtaG9va3NcIjogcmVhY3RIb29rc1BsdWdpbixcbiAgICAgICAgc29uYXJqczogc29uYXJqc1BsdWdpbixcbiAgICAgICAgdW5pY29ybjogdW5pY29yblBsdWdpbixcbiAgICAgICAgXCJlcy14XCI6IGVzeFBsdWdpbixcbiAgICAgICAgZXNtOiBlc21QbHVnaW4sXG4gICAgICAgIFwic2ltcGxlLWltcG9ydC1zb3J0XCI6IHNpbXBsZUltcG9ydFNvcnRQbHVnaW4sXG4gICAgICAgIFwiQGZlbmdlXCI6IGZlbmdlUGx1Z2luLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludFwiOiB0c1BsdWdpbixcbiAgICAgIH0sXG4gICAgICBydWxlczoge1xuICAgICAgICAvLyAxLiBzdGFuZGFyZCBjb25maWcgcnVsZXNcbiAgICAgICAgLi4uc3RhbmRhcmRDb25maWdSdWxlcyxcblxuICAgICAgICAvLyAyLiBjb2RlIHN0eWxlIGZvciBhIGJldHRlciByZWFkYWJpbGl0eVxuICAgICAgICBcImFycm93LWJvZHktc3R5bGVcIjogW1wiZXJyb3JcIiwgXCJhcy1uZWVkZWRcIl0sXG4gICAgICAgIFwiaW1wb3J0L25ld2xpbmUtYWZ0ZXItaW1wb3J0XCI6IFtcImVycm9yXCIsIHsgY291bnQ6IDEgfV0sXG4gICAgICAgIC8vIFNvcnQgaW1wb3J0cyBieSBwcmV0dGllci4gVHVybiBpbiBvZmYuXG4gICAgICAgIC8vIFwic2ltcGxlLWltcG9ydC1zb3J0L2ltcG9ydHNcIjogW1xuICAgICAgICAvLyAgIFwiZXJyb3JcIixcbiAgICAgICAgLy8gICB7IGdyb3VwczogW1tcIl5cXFxcdTAwMDBcIiwgXCJebm9kZTpcIiwgXCJeQD9cXFxcd1wiLCBcIl5cIiwgXCJeXFxcXC5cIl1dIH0sXG4gICAgICAgIC8vIF0sXG4gICAgICAgIFwic2ltcGxlLWltcG9ydC1zb3J0L2V4cG9ydHNcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vcHJlZmVyLW5vZGUtcHJvdG9jb2xcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vZXNjYXBlLWNhc2VcIjogXCJlcnJvclwiLCAvLyAnXFx1ZDgzNCcgLT4gJ1xcdUQ4MzQnXG4gICAgICAgIC8vIFwidW5pY29ybi9udW1iZXItbGl0ZXJhbC1jYXNlXCI6IFwiZXJyb3JcIiwgLy8gMFhGRiAtPiAweEZGIC8vIGNvbmZsaWN0IHdpdGggcHJldHRpZXJcblxuICAgICAgICAvLyAzLiBiYW4gc29tZSBzeW50YXhlcyB0byByZWR1Y2UgbWlzdGFrZXNcbiAgICAgICAgXCJkZWZhdWx0LXBhcmFtLWxhc3RcIjogXCJlcnJvclwiLFxuICAgICAgICBcImZ1bmMtbmFtZS1tYXRjaGluZ1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwiZ2V0dGVyLXJldHVyblwiOiBcImVycm9yXCIsXG4gICAgICAgIFwiaW5pdC1kZWNsYXJhdGlvbnNcIjogXCJlcnJvclwiLFxuICAgICAgICBcIm1heC1wYXJhbXNcIjogW1wiZXJyb3JcIiwgeyBtYXg6IDQgfV0sXG4gICAgICAgIFwibm8tZHVwbGljYXRlLWltcG9ydHNcIjogXCJlcnJvclwiLFxuICAgICAgICBcIm5vLWVtcHR5LXN0YXRpYy1ibG9ja1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwibm8tZW1wdHktZnVuY3Rpb25cIjogXCJlcnJvclwiLFxuICAgICAgICBcIm5vLWltcGxpY2l0LWNvZXJjaW9uXCI6IFtcbiAgICAgICAgICBcImVycm9yXCIsXG4gICAgICAgICAgeyBkaXNhbGxvd1RlbXBsYXRlU2hvcnRoYW5kOiB0cnVlLCBhbGxvdzogW1wiISFcIl0gfSxcbiAgICAgICAgXSwgLy8gZm9yYmlkIGNvZGUgbGlrZSBgY29uc3QgbnVtID0gK3N0cmA7XG4gICAgICAgIFwibm8taW52YWxpZC10aGlzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJuby1tdWx0aS1hc3NpZ25cIjogXCJlcnJvclwiLFxuICAgICAgICBcIm5vLXBhcmFtLXJlYXNzaWduXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJuby1wbHVzcGx1c1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwibm8tc2V0dGVyLXJldHVyblwiOiBcImVycm9yXCIsXG4gICAgICAgIFwibm8tc2hhZG93XCI6IFtcImVycm9yXCIsIHsgaWdub3JlT25Jbml0aWFsaXphdGlvbjogdHJ1ZSB9XSxcbiAgICAgICAgXCJuby11bnVzZWQtcHJpdmF0ZS1jbGFzcy1tZW1iZXJzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJwcmVmZXItYXJyb3ctY2FsbGJhY2tcIjogXCJlcnJvclwiLFxuICAgICAgICBcInByZWZlci1leHBvbmVudGlhdGlvbi1vcGVyYXRvclwiOiBcImVycm9yXCIsXG4gICAgICAgIFwicHJlZmVyLW9iamVjdC1oYXMtb3duXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJwcmVmZXItdGVtcGxhdGVcIjogXCJlcnJvclwiLFxuICAgICAgICAvLyBlc1xuICAgICAgICBcImVzLXgvbm8tYWNjZXNzb3ItcHJvcGVydGllc1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwiZXMteC9uby1hc3luYy1pdGVyYXRpb25cIjogXCJlcnJvclwiLFxuICAgICAgICBcImVzLXgvbm8tZ2VuZXJhdG9yc1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwiZXMteC9uby1sZWdhY3ktb2JqZWN0LXByb3RvdHlwZS1hY2Nlc3Nvci1tZXRob2RzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgLy8gZXNtXG4gICAgICAgIFwiZXNtL25lYXJlc3QtcmVsYXRpdmUtcGF0aFwiOiBcImVycm9yXCIsXG4gICAgICAgIFwiZXNtL25vLWRpcmVjdG9yeS1pbXBvcnRzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJlc20vbm8tZHluYW1pYy1pbXBvcnRzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJlc20vbm8tZ2l0LWlnbm9yZWQtaW1wb3J0c1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwiZXNtL25vLXBoYW50b20tZGVwLWltcG9ydHNcIjogXCJlcnJvclwiLFxuICAgICAgICBcImVzbS9uby1yZWxhdGl2ZS1wYXJlbnQtaW1wb3J0c1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwiZXNtL25vLXJlbmFtZS1leHBvcnRzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJlc20vbm8tcmVuYW1lLWltcG9ydHNcIjogXCJlcnJvclwiLFxuICAgICAgICBcImVzbS9uby1zaWRlLWVmZmVjdC1pbXBvcnRzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJlc20vbm8tdHMtZmlsZS1pbXBvcnRzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgLy8gZnBcbiAgICAgICAgXCJmcC9uby1hcmd1bWVudHNcIjogXCJlcnJvclwiLFxuICAgICAgICBcImZwL25vLWRlbGV0ZVwiOiBcImVycm9yXCIsXG4gICAgICAgIC8vIGltcG9ydFxuICAgICAgICBcImltcG9ydC9leHRlbnNpb25zXCI6IFtcImVycm9yXCIsIFwiYWx3YXlzXCIsIHsgaWdub3JlUGFja2FnZXM6IHRydWUgfV0sXG4gICAgICAgIFwiaW1wb3J0L25vLWNvbW1vbmpzXCI6IFtcbiAgICAgICAgICBcImVycm9yXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWxsb3dSZXF1aXJlOiBmYWxzZSxcbiAgICAgICAgICAgIGFsbG93Q29uZGl0aW9uYWxSZXF1aXJlOiBmYWxzZSxcbiAgICAgICAgICAgIGFsbG93UHJpbWl0aXZlTW9kdWxlczogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIDEuIFRoZSBFU00gc3BlY2lmaWNhdGlvbiBkaWRu4oCZdCBzYXkgYW55dGhpbmcgYWJvdXQgaW50ZXJvcGVyYWJpbGl0eSB3aXRoIENvbW1vbkpTLiBTZWU6IGh0dHBzOi8vYmxvZy5hbmRyZXdicmFuLmNoL2RlZmF1bHQtZXhwb3J0cy1pbi1jb21tb25qcy1saWJyYXJpZXMvXG4gICAgICAgICAqIDIuIFJlZXhwb3J0aW5nIGxpa2UgYGV4cG9ydCAqIGZyb20gJ2ZvbydgIHdpbGwgYmUgZGlmZmljdWx0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJpbXBvcnQvbm8tZGVmYXVsdC1leHBvcnRcIjogXCJlcnJvclwiLFxuICAgICAgICBcImltcG9ydC9uby1keW5hbWljLXJlcXVpcmVcIjogXCJlcnJvclwiLFxuICAgICAgICBcImltcG9ydC9uby1tdXRhYmxlLWV4cG9ydHNcIjogXCJlcnJvclwiLCAvLyBmb3JiaWQgY29kZSBsaWtlIGBleHBvcnQgbGV0IGNvdW50ID0gM2BcbiAgICAgICAgXCJpbXBvcnQvbm8tcmVsYXRpdmUtcGFja2FnZXNcIjogXCJlcnJvclwiLCAvLyBmb3JiaWQgdG8gaW1wb3J0IG1vZHVsZSBmcm9tIG90aGVyIG1vbm9yZXBvIHBhY2thZ2VzIGJ5IHJlbGF0aXZlIHBhdGhzXG4gICAgICAgIFwiaW1wb3J0L25vLXNlbGYtaW1wb3J0XCI6IFwiZXJyb3JcIixcbiAgICAgICAgLy8gblxuICAgICAgICBcIm4vcHJlZmVyLWdsb2JhbC9idWZmZXJcIjogW1wiZXJyb3JcIiwgXCJuZXZlclwiXSxcbiAgICAgICAgXCJuL3ByZWZlci1nbG9iYWwvY29uc29sZVwiOiBcImVycm9yXCIsXG4gICAgICAgIFwibi9wcmVmZXItZ2xvYmFsL3Byb2Nlc3NcIjogW1wiZXJyb3JcIiwgXCJuZXZlclwiXSxcbiAgICAgICAgXCJuL3ByZWZlci1nbG9iYWwvdGV4dC1kZWNvZGVyXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJuL3ByZWZlci1nbG9iYWwvdGV4dC1lbmNvZGVyXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJuL3ByZWZlci1nbG9iYWwvdXJsXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJuL3ByZWZlci1nbG9iYWwvdXJsLXNlYXJjaC1wYXJhbXNcIjogXCJlcnJvclwiLFxuICAgICAgICAvLyByZWFjdFxuICAgICAgICBcInJlYWN0L2pzeC1rZXlcIjogXCJlcnJvclwiLFxuICAgICAgICBcInJlYWN0L2pzeC1uby1kdXBsaWNhdGUtcHJvcHNcIjogXCJlcnJvclwiLFxuICAgICAgICBcInJlYWN0L2pzeC1uby11bmRlZlwiOiBcImVycm9yXCIsXG4gICAgICAgIC8vIHJlYWN0LWhvb2tzXG4gICAgICAgIFwicmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJyZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1wiOiBcImVycm9yXCIsXG4gICAgICAgIC8vIHNvbmFyanNcbiAgICAgICAgXCJzb25hcmpzL25vLWNvbGxhcHNpYmxlLWlmXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJzb25hcmpzL25vLWFsbC1kdXBsaWNhdGVkLWJyYW5jaGVzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJzb25hcmpzL25vLWlkZW50aWNhbC1jb25kaXRpb25zXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJzb25hcmpzL25vLWlkZW50aWNhbC1leHByZXNzaW9uc1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwic29uYXJqcy9uby1pZ25vcmVkLXJldHVyblwiOiBcImVycm9yXCIsXG4gICAgICAgIFwic29uYXJqcy9uby1pbnZlcnRlZC1ib29sZWFuLWNoZWNrXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJzb25hcmpzL25vLW5lc3RlZC1zd2l0Y2hcIjogXCJlcnJvclwiLFxuICAgICAgICBcInNvbmFyanMvbm8tdXNlbGVzcy1jYXRjaFwiOiBcImVycm9yXCIsXG4gICAgICAgIFwic29uYXJqcy9wcmVmZXItaW1tZWRpYXRlLXJldHVyblwiOiBcImVycm9yXCIsXG4gICAgICAgIC8vIHVuaWNvcm5cbiAgICAgICAgLy8gJ3VuaWNvcm4vbm8tbnVsbCc6ICdlcnJvcicsIC8vIG51bGwgY2FuIGJlIHVzZWZ1bCB3aGVuIGludGVyYWN0IHdpdGgganNvbi5cbiAgICAgICAgXCJ1bmljb3JuL2NvbnNpc3RlbnQtZGVzdHJ1Y3R1cmluZ1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwidW5pY29ybi9jb25zaXN0ZW50LWVtcHR5LWFycmF5LXNwcmVhZFwiOiBcImVycm9yXCIsXG4gICAgICAgIFwidW5pY29ybi9lcnJvci1tZXNzYWdlXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL2V4cGxpY2l0LWxlbmd0aC1jaGVja1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwidW5pY29ybi9maWxlbmFtZS1jYXNlXCI6IFtcbiAgICAgICAgICBcImVycm9yXCIsXG4gICAgICAgICAgeyBjYXNlczogeyBrZWJhYkNhc2U6IHRydWUsIHBhc2NhbENhc2U6IHRydWUgfSB9LFxuICAgICAgICBdLFxuICAgICAgICBcInVuaWNvcm4vaW1wb3J0LXN0eWxlXCI6IFtcbiAgICAgICAgICBcImVycm9yXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3R5bGVzOiB7XG4gICAgICAgICAgICAgIGNoaWxkX3Byb2Nlc3M6IHsgZGVmYXVsdDogdHJ1ZSB9LFxuICAgICAgICAgICAgICBmczogeyBkZWZhdWx0OiB0cnVlIH0sXG4gICAgICAgICAgICAgIFwiZnMvcHJvbWlzZXNcIjogeyBkZWZhdWx0OiB0cnVlIH0sXG4gICAgICAgICAgICAgIHByb2Nlc3M6IHsgZGVmYXVsdDogdHJ1ZSB9LFxuICAgICAgICAgICAgICBcInV0aWwvdHlwZXNcIjogeyBuYW1lZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiOiB7IGRlZmF1bHQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgXCJub2RlOmZzXCI6IHsgZGVmYXVsdDogdHJ1ZSB9LFxuICAgICAgICAgICAgICBcIm5vZGU6ZnMvcHJvbWlzZXNcIjogeyBkZWZhdWx0OiB0cnVlIH0sXG4gICAgICAgICAgICAgIFwibm9kZTpwcm9jZXNzXCI6IHsgZGVmYXVsdDogdHJ1ZSB9LFxuICAgICAgICAgICAgICBcIm5vZGU6dXRpbC90eXBlc1wiOiB7IG5hbWVkOiB0cnVlIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIFwidW5pY29ybi9uZXctZm9yLWJ1aWx0aW5zXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL25vLWFidXNpdmUtZXNsaW50LWRpc2FibGVcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vbm8tYXJyYXktY2FsbGJhY2stcmVmZXJlbmNlXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL25vLWFycmF5LW1ldGhvZC10aGlzLWFyZ3VtZW50XCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL25vLWZvci1sb29wXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL25vLWluc3RhbmNlb2YtYXJyYXlcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vbm8tbmV3LWFycmF5XCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL25vLW5ldy1idWZmZXJcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vbm8tdHlwZW9mLXVuZGVmaW5lZFwiOiBcImVycm9yXCIsXG4gICAgICAgIFwidW5pY29ybi9uby11bnJlYWRhYmxlLWlpZmVcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vbm8tdXNlbGVzcy1zcHJlYWRcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vcHJlZmVyLWFycmF5LWZsYXQtbWFwXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL3ByZWZlci1leHBvcnQtZnJvbVwiOiBcImVycm9yXCIsXG4gICAgICAgIFwidW5pY29ybi9wcmVmZXItZ2xvYmFsLXRoaXNcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vcHJlZmVyLWluY2x1ZGVzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL3ByZWZlci1tb2R1bGVcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vcHJlZmVyLW51bWJlci1wcm9wZXJ0aWVzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL3ByZWZlci1zdHJpbmctc2xpY2VcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vcHJlZmVyLXRlcm5hcnlcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vdGhyb3ctbmV3LWVycm9yXCI6IFwiZXJyb3JcIixcblxuICAgICAgICBcIkBmZW5nZS9jYWxsLWFyZ3VtZW50cy1sZW5ndGhcIjogXCJlcnJvclwiLFxuICAgICAgICBcIkBmZW5nZS9uby1pbnN0YW5jZW9mLWJ1aWx0aW5cIjogXCJlcnJvclwiLFxuICAgICAgICBcIkBmZW5nZS9uby1yZXN0cmljdGVkLWxvb3BzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAZmVuZ2Uvbm8tdW5uZWNlc3NhcnktdGVtcGxhdGUtc3RyaW5nXCI6IFwiZXJyb3JcIixcblxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFwiOiBbXG4gICAgICAgICAgXCJlcnJvclwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwidHMtZXhwZWN0LWVycm9yXCI6IHRydWUsXG4gICAgICAgICAgICBcInRzLWlnbm9yZVwiOiB0cnVlLFxuICAgICAgICAgICAgXCJ0cy1ub2NoZWNrXCI6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlbGVzcy1lbXB0eS1leHBvcnRcIjogXCJlcnJvclwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwiZmVuZ2UvamF2YXNjcmlwdC9jb25maWdcIixcbiAgICAgIGZpbGVzOiBbXCIqKi8qLmNvbmZpZy57anMsY2pzLG1qcyxqc3h9XCJdLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgXCJpbXBvcnQvbm8tZGVmYXVsdC1leHBvcnRcIjogXCJvZmZcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbW90ZW1lbi9taW5pbWF0Y2gtY2hlYXQtc2hlZXRcbiAgICAgIG5hbWU6IFwiZmVuZ2UvamF2YXNjcmlwdC90ZXN0XCIsXG4gICAgICBmaWxlczogW1xuICAgICAgICBcIioqL19fdGVzdHNfXy8qKi8qLntqcyxjanMsbWpzLGpzeH1cIixcbiAgICAgICAgXCIqKi8qLnt0ZXN0LHNwZWN9LntqcyxjanMsbWpzLGpzeH1cIixcbiAgICAgIF0sXG4gICAgICBydWxlczoge1xuICAgICAgICBcImVzbS9uby1waGFudG9tLWRlcC1pbXBvcnRzXCI6IFtcImVycm9yXCIsIHsgYWxsb3dEZXZEZXBlbmRlbmNpZXM6IHRydWUgfV0sXG4gICAgICB9LFxuICAgIH0sXG4gIF0gYXMgY29uc3Q7XG59XG4iXX0=
476
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvamF2YXNjcmlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssV0FBVyxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sUUFBUSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hELE9BQU8sYUFBYSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBQzNDLE9BQU8sS0FBSyxTQUFTLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxRQUFRLE1BQU0sa0JBQWtCLENBQUM7QUFDeEMsT0FBTyxZQUFZLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxPQUFPLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxhQUFhLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxXQUFXLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxnQkFBZ0IsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLHNCQUFzQixNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sYUFBYSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sYUFBYSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUU5QixNQUFNLFVBQVUsVUFBVTtJQUN4QiwwRkFBMEY7SUFDMUYsa0JBQWtCO0lBQ2xCLE1BQU0sbUJBQW1CLEdBQUc7UUFDMUIsUUFBUSxFQUFFLE9BQU87UUFDakIsa0JBQWtCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDO1FBRTNDLGdCQUFnQixFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNsRiwrQ0FBK0M7UUFDL0MsdUJBQXVCLEVBQUUsQ0FBQyxPQUFPLEVBQUU7Z0JBQ2pDLGFB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S0FDTyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZlbmdlUGx1Z2luIGZyb20gXCJAZmVuZ2UvZXNsaW50LXBsdWdpblwiO1xuaW1wb3J0IHRzUGx1Z2luIGZyb20gXCJAdHlwZXNjcmlwdC1lc2xpbnQvZXNsaW50LXBsdWdpblwiO1xuaW1wb3J0IGNvbmZ1c2luZ0tleXMgZnJvbSBcImNvbmZ1c2luZy1icm93c2VyLWdsb2JhbHNcIjtcbmltcG9ydCBlc3hQbHVnaW4gZnJvbSBcImVzbGludC1wbHVnaW4tZXMteFwiO1xuaW1wb3J0ICogYXMgZXNtUGx1Z2luIGZyb20gXCJlc2xpbnQtcGx1Z2luLWVzbVwiO1xuaW1wb3J0IGZwUGx1Z2luIGZyb20gXCJlc2xpbnQtcGx1Z2luLWZwXCI7XG5pbXBvcnQgaW1wb3J0UGx1Z2luIGZyb20gXCJlc2xpbnQtcGx1Z2luLWltcG9ydFwiO1xuaW1wb3J0IG5QbHVnaW4gZnJvbSBcImVzbGludC1wbHVnaW4tblwiO1xuaW1wb3J0IHByb21pc2VQbHVnaW4gZnJvbSBcImVzbGludC1wbHVnaW4tcHJvbWlzZVwiO1xuaW1wb3J0IHJlYWN0UGx1Z2luIGZyb20gXCJlc2xpbnQtcGx1Z2luLXJlYWN0XCI7XG5pbXBvcnQgcmVhY3RIb29rc1BsdWdpbiBmcm9tIFwiZXNsaW50LXBsdWdpbi1yZWFjdC1ob29rc1wiO1xuaW1wb3J0IHNpbXBsZUltcG9ydFNvcnRQbHVnaW4gZnJvbSBcImVzbGludC1wbHVnaW4tc2ltcGxlLWltcG9ydC1zb3J0XCI7XG5pbXBvcnQgc29uYXJqc1BsdWdpbiBmcm9tIFwiZXNsaW50LXBsdWdpbi1zb25hcmpzXCI7XG5pbXBvcnQgdW5pY29yblBsdWdpbiBmcm9tIFwiZXNsaW50LXBsdWdpbi11bmljb3JuXCI7XG5pbXBvcnQgZ2xvYmFscyBmcm9tIFwiZ2xvYmFsc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gamF2YXNjcmlwdCgpIHtcbiAgLy8gY29waWVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3N0YW5kYXJkL2VzbGludC1jb25maWctc3RhbmRhcmQvYmxvYi9tYXN0ZXIvc3JjL2luZGV4LnRzXG4gIC8vIHByZXR0aWVyLWlnbm9yZVxuICBjb25zdCBzdGFuZGFyZENvbmZpZ1J1bGVzID0ge1xuICAgICduby12YXInOiAnZXJyb3InLFxuICAgICdvYmplY3Qtc2hvcnRoYW5kJzogWydlcnJvcicsICdwcm9wZXJ0aWVzJ10sXG5cbiAgICAnYWNjZXNzb3ItcGFpcnMnOiBbJ2Vycm9yJywgeyBzZXRXaXRob3V0R2V0OiB0cnVlLCBlbmZvcmNlRm9yQ2xhc3NNZW1iZXJzOiB0cnVlIH1dLFxuICAgIC8vICdhcnJheS1icmFja2V0LXNwYWNpbmcnOiBbJ2Vycm9yJywgJ25ldmVyJ10sXG4gICAgJ2FycmF5LWNhbGxiYWNrLXJldHVybic6IFsnZXJyb3InLCB7XG4gICAgICBhbGxvd0ltcGxpY2l0OiBmYWxzZSxcbiAgICAgIGNoZWNrRm9yRWFjaDogZmFsc2VcbiAgICB9XSxcbiAgICAvLyAnYXJyb3ctc3BhY2luZyc6IFsnZXJyb3InLCB7IGJlZm9yZTogdHJ1ZSwgYWZ0ZXI6IHRydWUgfV0sXG4gICAgLy8gJ2Jsb2NrLXNwYWNpbmcnOiBbJ2Vycm9yJywgJ2Fsd2F5cyddLFxuICAgIC8vICdicmFjZS1zdHlsZSc6IFsnZXJyb3InLCAnMXRicycsIHsgYWxsb3dTaW5nbGVMaW5lOiB0cnVlIH1dLFxuICAgIGNhbWVsY2FzZTogWydlcnJvcicsIHtcbiAgICAgIGFsbG93OiBbJ15VTlNBRkVfJ10sXG4gICAgICBwcm9wZXJ0aWVzOiAnbmV2ZXInLFxuICAgICAgaWdub3JlR2xvYmFsczogdHJ1ZVxuICAgIH1dLFxuICAgIC8vICdjb21tYS1kYW5nbGUnOiBbJ2Vycm9yJywge1xuICAgIC8vICAgYXJyYXlzOiAnbmV2ZXInLFxuICAgIC8vICAgb2JqZWN0czogJ25ldmVyJyxcbiAgICAvLyAgIGltcG9ydHM6ICduZXZlcicsXG4gICAgLy8gICBleHBvcnRzOiAnbmV2ZXInLFxuICAgIC8vICAgZnVuY3Rpb25zOiAnbmV2ZXInXG4gICAgLy8gfV0sXG4gICAgLy8gJ2NvbW1hLXNwYWNpbmcnOiBbJ2Vycm9yJywgeyBiZWZvcmU6IGZhbHNlLCBhZnRlcjogdHJ1ZSB9XSxcbiAgICAvLyAnY29tbWEtc3R5bGUnOiBbJ2Vycm9yJywgJ2xhc3QnXSxcbiAgICAvLyAnY29tcHV0ZWQtcHJvcGVydHktc3BhY2luZyc6IFsnZXJyb3InLCAnbmV2ZXInLCB7IGVuZm9yY2VGb3JDbGFzc01lbWJlcnM6IHRydWUgfV0sXG4gICAgJ2NvbnN0cnVjdG9yLXN1cGVyJzogJ2Vycm9yJyxcbiAgICAvLyBjdXJseTogWydlcnJvcicsICdtdWx0aS1saW5lJ10sXG4gICAgJ2RlZmF1bHQtY2FzZS1sYXN0JzogJ2Vycm9yJyxcbiAgICAvLyAnZG90LWxvY2F0aW9uJzogWydlcnJvcicsICdwcm9wZXJ0eSddLFxuICAgIC8vICdkb3Qtbm90YXRpb24nOiBbJ2Vycm9yJywgeyBhbGxvd0tleXdvcmRzOiB0cnVlIH1dLCAvLyBUT0RPOiBUaGlzIHNob3VsZCBiZSBlbmFibGVkLiBEaXNhYmxlIGl0IGFzIGl0IGNvbmZsaWN0cyB3aXRoIHRzIHdoZW4gZW5hYmxpbmcgdHMtY2hlY2tcbiAgICAvLyAnZW9sLWxhc3QnOiAnZXJyb3InLFxuICAgIGVxZXFlcTogWydlcnJvcicsICdhbHdheXMnLCB7IG51bGw6ICdpZ25vcmUnIH1dLFxuICAgIC8vICdmdW5jLWNhbGwtc3BhY2luZyc6IFsnZXJyb3InLCAnbmV2ZXInXSxcbiAgICAvLyAnZ2VuZXJhdG9yLXN0YXItc3BhY2luZyc6IFsnZXJyb3InLCB7IGJlZm9yZTogdHJ1ZSwgYWZ0ZXI6IHRydWUgfV0sXG4gICAgLy8gaW5kZW50OiBbJ2Vycm9yJywgMiwge1xuICAgIC8vICAgU3dpdGNoQ2FzZTogMSxcbiAgICAvLyAgIFZhcmlhYmxlRGVjbGFyYXRvcjogMSxcbiAgICAvLyAgIG91dGVySUlGRUJvZHk6IDEsXG4gICAgLy8gICBNZW1iZXJFeHByZXNzaW9uOiAxLFxuICAgIC8vICAgRnVuY3Rpb25EZWNsYXJhdGlvbjogeyBwYXJhbWV0ZXJzOiAxLCBib2R5OiAxIH0sXG4gICAgLy8gICBGdW5jdGlvbkV4cHJlc3Npb246IHsgcGFyYW1ldGVyczogMSwgYm9keTogMSB9LFxuICAgIC8vICAgQ2FsbEV4cHJlc3Npb246IHsgYXJndW1lbnRzOiAxIH0sXG4gICAgLy8gICBBcnJheUV4cHJlc3Npb246IDEsXG4gICAgLy8gICBPYmplY3RFeHByZXNzaW9uOiAxLFxuICAgIC8vICAgSW1wb3J0RGVjbGFyYXRpb246IDEsXG4gICAgLy8gICBmbGF0VGVybmFyeUV4cHJlc3Npb25zOiBmYWxzZSxcbiAgICAvLyAgIGlnbm9yZUNvbW1lbnRzOiBmYWxzZSxcbiAgICAvLyAgIGlnbm9yZWROb2RlczogW1xuICAgIC8vICAgICAnVGVtcGxhdGVMaXRlcmFsIConLFxuICAgIC8vICAgICAnSlNYRWxlbWVudCcsXG4gICAgLy8gICAgICdKU1hFbGVtZW50ID4gKicsXG4gICAgLy8gICAgICdKU1hBdHRyaWJ1dGUnLFxuICAgIC8vICAgICAnSlNYSWRlbnRpZmllcicsXG4gICAgLy8gICAgICdKU1hOYW1lc3BhY2VkTmFtZScsXG4gICAgLy8gICAgICdKU1hNZW1iZXJFeHByZXNzaW9uJyxcbiAgICAvLyAgICAgJ0pTWFNwcmVhZEF0dHJpYnV0ZScsXG4gICAgLy8gICAgICdKU1hFeHByZXNzaW9uQ29udGFpbmVyJyxcbiAgICAvLyAgICAgJ0pTWE9wZW5pbmdFbGVtZW50JyxcbiAgICAvLyAgICAgJ0pTWENsb3NpbmdFbGVtZW50JyxcbiAgICAvLyAgICAgJ0pTWEZyYWdtZW50JyxcbiAgICAvLyAgICAgJ0pTWE9wZW5pbmdGcmFnbWVudCcsXG4gICAgLy8gICAgICdKU1hDbG9zaW5nRnJhZ21lbnQnLFxuICAgIC8vICAgICAnSlNYVGV4dCcsXG4gICAgLy8gICAgICdKU1hFbXB0eUV4cHJlc3Npb24nLFxuICAgIC8vICAgICAnSlNYU3ByZWFkQ2hpbGQnXG4gICAgLy8gICBdLFxuICAgIC8vICAgb2Zmc2V0VGVybmFyeUV4cHJlc3Npb25zOiB0cnVlXG4gICAgLy8gfV0sXG4gICAgLy8gJ2tleS1zcGFjaW5nJzogWydlcnJvcicsIHsgYmVmb3JlQ29sb246IGZhbHNlLCBhZnRlckNvbG9uOiB0cnVlIH1dLFxuICAgIC8vICdrZXl3b3JkLXNwYWNpbmcnOiBbJ2Vycm9yJywgeyBiZWZvcmU6IHRydWUsIGFmdGVyOiB0cnVlIH1dLFxuICAgIC8vICdsaW5lcy1iZXR3ZWVuLWNsYXNzLW1lbWJlcnMnOiBbJ2Vycm9yJywgJ2Fsd2F5cycsIHsgZXhjZXB0QWZ0ZXJTaW5nbGVMaW5lOiB0cnVlIH1dLFxuICAgIC8vICdtdWx0aWxpbmUtdGVybmFyeSc6IFsnZXJyb3InLCAnYWx3YXlzLW11bHRpbGluZSddLFxuICAgICduZXctY2FwJzogWydlcnJvcicsIHsgbmV3SXNDYXA6IHRydWUsIGNhcElzTmV3OiBmYWxzZSwgcHJvcGVydGllczogdHJ1ZSB9XSxcbiAgICAvLyAnbmV3LXBhcmVucyc6ICdlcnJvcicsXG4gICAgJ25vLWFycmF5LWNvbnN0cnVjdG9yJzogJ2Vycm9yJyxcbiAgICAnbm8tYXN5bmMtcHJvbWlzZS1leGVjdXRvcic6ICdlcnJvcicsXG4gICAgJ25vLWNhbGxlcic6ICdlcnJvcicsXG4gICAgJ25vLWNhc2UtZGVjbGFyYXRpb25zJzogJ2Vycm9yJyxcbiAgICAnbm8tY2xhc3MtYXNzaWduJzogJ2Vycm9yJyxcbiAgICAnbm8tY29tcGFyZS1uZWctemVybyc6ICdlcnJvcicsXG4gICAgJ25vLWNvbmQtYXNzaWduJzogJ2Vycm9yJyxcbiAgICAnbm8tY29uc3QtYXNzaWduJzogJ2Vycm9yJyxcbiAgICAnbm8tY29uc3RhbnQtY29uZGl0aW9uJzogWydlcnJvcicsIHsgY2hlY2tMb29wczogZmFsc2UgfV0sXG4gICAgJ25vLWNvbnRyb2wtcmVnZXgnOiAnZXJyb3InLFxuICAgICduby1kZWJ1Z2dlcic6ICdlcnJvcicsXG4gICAgJ25vLWRlbGV0ZS12YXInOiAnZXJyb3InLFxuICAgICduby1kdXBlLWFyZ3MnOiAnZXJyb3InLFxuICAgICduby1kdXBlLWNsYXNzLW1lbWJlcnMnOiAnZXJyb3InLFxuICAgICduby1kdXBlLWtleXMnOiAnZXJyb3InLFxuICAgICduby1kdXBsaWNhdGUtY2FzZSc6ICdlcnJvcicsXG4gICAgJ25vLXVzZWxlc3MtYmFja3JlZmVyZW5jZSc6ICdlcnJvcicsXG4gICAgJ25vLWVtcHR5JzogWydlcnJvcicsIHsgYWxsb3dFbXB0eUNhdGNoOiB0cnVlIH1dLFxuICAgICduby1lbXB0eS1jaGFyYWN0ZXItY2xhc3MnOiAnZXJyb3InLFxuICAgICduby1lbXB0eS1wYXR0ZXJuJzogJ2Vycm9yJyxcbiAgICAnbm8tZXZhbCc6ICdlcnJvcicsXG4gICAgJ25vLWV4LWFzc2lnbic6ICdlcnJvcicsXG4gICAgJ25vLWV4dGVuZC1uYXRpdmUnOiAnZXJyb3InLFxuICAgICduby1leHRyYS1iaW5kJzogJ2Vycm9yJyxcbiAgICAnbm8tZXh0cmEtYm9vbGVhbi1jYXN0JzogJ2Vycm9yJyxcbiAgICAvLyAnbm8tZXh0cmEtcGFyZW5zJzogWydlcnJvcicsICdmdW5jdGlvbnMnXSxcbiAgICAnbm8tZmFsbHRocm91Z2gnOiAnZXJyb3InLFxuICAgIC8vICduby1mbG9hdGluZy1kZWNpbWFsJzogJ2Vycm9yJyxcbiAgICAnbm8tZnVuYy1hc3NpZ24nOiAnZXJyb3InLFxuICAgICduby1nbG9iYWwtYXNzaWduJzogJ2Vycm9yJyxcbiAgICAnbm8taW1wbGllZC1ldmFsJzogJ2Vycm9yJyxcbiAgICAnbm8taW1wb3J0LWFzc2lnbic6ICdlcnJvcicsXG4gICAgJ25vLWludmFsaWQtcmVnZXhwJzogJ2Vycm9yJyxcbiAgICAnbm8taXJyZWd1bGFyLXdoaXRlc3BhY2UnOiAnZXJyb3InLFxuICAgICduby1pdGVyYXRvcic6ICdlcnJvcicsXG4gICAgJ25vLWxhYmVscyc6IFsnZXJyb3InLCB7IGFsbG93TG9vcDogZmFsc2UsIGFsbG93U3dpdGNoOiBmYWxzZSB9XSxcbiAgICAnbm8tbG9uZS1ibG9ja3MnOiAnZXJyb3InLFxuICAgICduby1sb3NzLW9mLXByZWNpc2lvbic6ICdlcnJvcicsXG4gICAgJ25vLW1pc2xlYWRpbmctY2hhcmFjdGVyLWNsYXNzJzogJ2Vycm9yJyxcbiAgICAnbm8tcHJvdG90eXBlLWJ1aWx0aW5zJzogJ2Vycm9yJyxcbiAgICAnbm8tdXNlbGVzcy1jYXRjaCc6ICdlcnJvcicsXG4gICAgLy8gJ25vLW1peGVkLW9wZXJhdG9ycyc6IFsnZXJyb3InLCB7XG4gICAgLy8gICBncm91cHM6IFtcbiAgICAvLyAgICAgWyc9PScsICchPScsICc9PT0nLCAnIT09JywgJz4nLCAnPj0nLCAnPCcsICc8PSddLFxuICAgIC8vICAgICBbJyYmJywgJ3x8J10sXG4gICAgLy8gICAgIFsnaW4nLCAnaW5zdGFuY2VvZiddXG4gICAgLy8gICBdLFxuICAgIC8vICAgYWxsb3dTYW1lUHJlY2VkZW5jZTogdHJ1ZVxuICAgIC8vIH1dLFxuICAgIC8vICduby1taXhlZC1zcGFjZXMtYW5kLXRhYnMnOiAnZXJyb3InLFxuICAgIC8vICduby1tdWx0aS1zcGFjZXMnOiAnZXJyb3InLFxuICAgICduby1tdWx0aS1zdHInOiAnZXJyb3InLFxuICAgIC8vICduby1tdWx0aXBsZS1lbXB0eS1saW5lcyc6IFsnZXJyb3InLCB7IG1heDogMSwgbWF4Qk9GOiAwLCBtYXhFT0Y6IDAgfV0sXG4gICAgJ25vLW5ldyc6ICdlcnJvcicsXG4gICAgJ25vLW5ldy1mdW5jJzogJ2Vycm9yJyxcbiAgICAvLyAnbm8tbmV3LW9iamVjdCc6ICdlcnJvcicsXG4gICAgJ25vLW5ldy1zeW1ib2wnOiAnZXJyb3InLFxuICAgICduby1uZXctd3JhcHBlcnMnOiAnZXJyb3InLFxuICAgICduby1vYmotY2FsbHMnOiAnZXJyb3InLFxuICAgICduby1vY3RhbCc6ICdlcnJvcicsXG4gICAgJ25vLW9jdGFsLWVzY2FwZSc6ICdlcnJvcicsXG4gICAgJ25vLXByb3RvJzogJ2Vycm9yJyxcbiAgICAnbm8tcmVkZWNsYXJlJzogWydlcnJvcicsIHsgYnVpbHRpbkdsb2JhbHM6IGZhbHNlIH1dLFxuICAgICduby1yZWdleC1zcGFjZXMnOiAnZXJyb3InLFxuICAgICduby1yZXR1cm4tYXNzaWduJzogWydlcnJvcicsICdleGNlcHQtcGFyZW5zJ10sXG4gICAgJ25vLXNlbGYtYXNzaWduJzogWydlcnJvcicsIHsgcHJvcHM6IHRydWUgfV0sXG4gICAgJ25vLXNlbGYtY29tcGFyZSc6ICdlcnJvcicsXG4gICAgJ25vLXNlcXVlbmNlcyc6ICdlcnJvcicsXG4gICAgJ25vLXNoYWRvdy1yZXN0cmljdGVkLW5hbWVzJzogJ2Vycm9yJyxcbiAgICAnbm8tc3BhcnNlLWFycmF5cyc6ICdlcnJvcicsXG4gICAgLy8gJ25vLXRhYnMnOiAnZXJyb3InLFxuICAgICduby10ZW1wbGF0ZS1jdXJseS1pbi1zdHJpbmcnOiAnZXJyb3InLFxuICAgICduby10aGlzLWJlZm9yZS1zdXBlcic6ICdlcnJvcicsXG4gICAgJ25vLXRocm93LWxpdGVyYWwnOiAnZXJyb3InLFxuICAgIC8vICduby10cmFpbGluZy1zcGFjZXMnOiAnZXJyb3InLFxuICAgICduby11bmRlZic6ICdlcnJvcicsXG4gICAgLy8gJ25vLXVuZGVmLWluaXQnOiAnZXJyb3InLCAvLyBJdCBjb25mbGljdCB3aXRoIGBpbml0LWRlY2xhcmF0aW9uc2BcbiAgICAvLyAnbm8tdW5leHBlY3RlZC1tdWx0aWxpbmUnOiAnZXJyb3InLFxuICAgICduby11bm1vZGlmaWVkLWxvb3AtY29uZGl0aW9uJzogJ2Vycm9yJyxcbiAgICAnbm8tdW5uZWVkZWQtdGVybmFyeSc6IFsnZXJyb3InLCB7IGRlZmF1bHRBc3NpZ25tZW50OiBmYWxzZSB9XSxcbiAgICAnbm8tdW5yZWFjaGFibGUnOiAnZXJyb3InLFxuICAgICduby11bnJlYWNoYWJsZS1sb29wJzogJ2Vycm9yJyxcbiAgICAnbm8tdW5zYWZlLWZpbmFsbHknOiAnZXJyb3InLFxuICAgICduby11bnNhZmUtbmVnYXRpb24nOiAnZXJyb3InLFxuICAgICduby11bnVzZWQtZXhwcmVzc2lvbnMnOiBbJ2Vycm9yJywge1xuICAgICAgYWxsb3dTaG9ydENpcmN1aXQ6IHRydWUsXG4gICAgICBhbGxvd1Rlcm5hcnk6IHRydWUsXG4gICAgICBhbGxvd1RhZ2dlZFRlbXBsYXRlczogdHJ1ZVxuICAgIH1dLFxuICAgICduby11bnVzZWQtdmFycyc6IFsnZXJyb3InLCB7XG4gICAgICBhcmdzOiAnbm9uZScsXG4gICAgICBjYXVnaHRFcnJvcnM6ICdub25lJyxcbiAgICAgIGlnbm9yZVJlc3RTaWJsaW5nczogdHJ1ZSxcbiAgICAgIHZhcnM6ICdhbGwnXG4gICAgfV0sXG4gICAgJ25vLXVzZS1iZWZvcmUtZGVmaW5lJzogWydlcnJvcicsIHsgZnVuY3Rpb25zOiBmYWxzZSwgY2xhc3NlczogZmFsc2UsIHZhcmlhYmxlczogZmFsc2UgfV0sXG4gICAgJ25vLXVzZWxlc3MtY2FsbCc6ICdlcnJvcicsXG4gICAgJ25vLXVzZWxlc3MtY29tcHV0ZWQta2V5JzogJ2Vycm9yJyxcbiAgICAnbm8tdXNlbGVzcy1jb25zdHJ1Y3Rvcic6ICdlcnJvcicsXG4gICAgJ25vLXVzZWxlc3MtZXNjYXBlJzogJ2Vycm9yJyxcbiAgICAnbm8tdXNlbGVzcy1yZW5hbWUnOiAnZXJyb3InLFxuICAgICduby11c2VsZXNzLXJldHVybic6ICdlcnJvcicsXG4gICAgJ25vLXZvaWQnOiAnZXJyb3InLFxuICAgIC8vICduby13aGl0ZXNwYWNlLWJlZm9yZS1wcm9wZXJ0eSc6ICdlcnJvcicsXG4gICAgJ25vLXdpdGgnOiAnZXJyb3InLFxuICAgIC8vICdvYmplY3QtY3VybHktbmV3bGluZSc6IFsnZXJyb3InLCB7IG11bHRpbGluZTogdHJ1ZSwgY29uc2lzdGVudDogdHJ1ZSB9XSxcbiAgICAvLyAnb2JqZWN0LWN1cmx5LXNwYWNpbmcnOiBbJ2Vycm9yJywgJ2Fsd2F5cyddLFxuICAgIC8vICdvYmplY3QtcHJvcGVydHktbmV3bGluZSc6IFsnZXJyb3InLCB7IGFsbG93TXVsdGlwbGVQcm9wZXJ0aWVzUGVyTGluZTogdHJ1ZSB9XSxcbiAgICAnb25lLXZhcic6IFsnZXJyb3InLCB7IGluaXRpYWxpemVkOiAnbmV2ZXInIH1dLFxuICAgIC8vICdvcGVyYXRvci1saW5lYnJlYWsnOiBbJ2Vycm9yJywgJ2FmdGVyJywgeyBvdmVycmlkZXM6IHsgJz8nOiAnYmVmb3JlJywgJzonOiAnYmVmb3JlJywgJ3w+JzogJ2JlZm9yZScgfSB9XSxcbiAgICAvLyAncGFkZGVkLWJsb2Nrcyc6IFsnZXJyb3InLCB7IGJsb2NrczogJ25ldmVyJywgc3dpdGNoZXM6ICduZXZlcicsIGNsYXNzZXM6ICduZXZlcicgfV0sXG4gICAgJ3ByZWZlci1jb25zdCc6IFsnZXJyb3InLCB7IGRlc3RydWN0dXJpbmc6ICdhbGwnIH1dLFxuICAgICdwcmVmZXItcHJvbWlzZS1yZWplY3QtZXJyb3JzJzogJ2Vycm9yJyxcbiAgICAncHJlZmVyLXJlZ2V4LWxpdGVyYWxzJzogWydlcnJvcicsIHsgZGlzYWxsb3dSZWR1bmRhbnRXcmFwcGluZzogdHJ1ZSB9XSxcbiAgICAvLyAncXVvdGUtcHJvcHMnOiBbJ2Vycm9yJywgJ2FzLW5lZWRlZCddLFxuICAgIC8vIHF1b3RlczogWydlcnJvcicsICdzaW5nbGUnLCB7IGF2b2lkRXNjYXBlOiB0cnVlLCBhbGxvd1RlbXBsYXRlTGl0ZXJhbHM6IGZhbHNlIH1dLFxuICAgIC8vICdyZXN0LXNwcmVhZC1zcGFjaW5nJzogWydlcnJvcicsICduZXZlciddLFxuICAgIC8vIHNlbWk6IFsnZXJyb3InLCAnbmV2ZXInXSxcbiAgICAvLyAnc2VtaS1zcGFjaW5nJzogWydlcnJvcicsIHsgYmVmb3JlOiBmYWxzZSwgYWZ0ZXI6IHRydWUgfV0sXG4gICAgLy8gJ3NwYWNlLWJlZm9yZS1ibG9ja3MnOiBbJ2Vycm9yJywgJ2Fsd2F5cyddLFxuICAgIC8vICdzcGFjZS1iZWZvcmUtZnVuY3Rpb24tcGFyZW4nOiBbJ2Vycm9yJywgJ2Fsd2F5cyddLFxuICAgIC8vICdzcGFjZS1pbi1wYXJlbnMnOiBbJ2Vycm9yJywgJ25ldmVyJ10sXG4gICAgLy8gJ3NwYWNlLWluZml4LW9wcyc6ICdlcnJvcicsXG4gICAgLy8gJ3NwYWNlLXVuYXJ5LW9wcyc6IFsnZXJyb3InLCB7IHdvcmRzOiB0cnVlLCBub253b3JkczogZmFsc2UgfV0sXG4gICAgLy8gJ3NwYWNlZC1jb21tZW50JzogWydlcnJvcicsICdhbHdheXMnLCB7XG4gICAgLy8gICBsaW5lOiB7IG1hcmtlcnM6IFsnKnBhY2thZ2UnLCAnIScsICcvJywgJywnLCAnPSddIH0sXG4gICAgLy8gICBibG9jazogeyBiYWxhbmNlZDogdHJ1ZSwgbWFya2VyczogWycqcGFja2FnZScsICchJywgJywnLCAnOicsICc6OicsICdmbG93LWluY2x1ZGUnXSwgZXhjZXB0aW9uczogWycqJ10gfVxuICAgIC8vIH1dLFxuICAgICdzeW1ib2wtZGVzY3JpcHRpb24nOiAnZXJyb3InLFxuICAgIC8vICd0ZW1wbGF0ZS1jdXJseS1zcGFjaW5nJzogWydlcnJvcicsICduZXZlciddLFxuICAgIC8vICd0ZW1wbGF0ZS10YWctc3BhY2luZyc6IFsnZXJyb3InLCAnbmV2ZXInXSxcbiAgICAndW5pY29kZS1ib20nOiBbJ2Vycm9yJywgJ25ldmVyJ10sXG4gICAgJ3VzZS1pc25hbic6IFsnZXJyb3InLCB7XG4gICAgICBlbmZvcmNlRm9yU3dpdGNoQ2FzZTogdHJ1ZSxcbiAgICAgIGVuZm9yY2VGb3JJbmRleE9mOiB0cnVlXG4gICAgfV0sXG4gICAgJ3ZhbGlkLXR5cGVvZic6IFsnZXJyb3InLCB7IHJlcXVpcmVTdHJpbmdMaXRlcmFsczogdHJ1ZSB9XSxcbiAgICAvLyAnd3JhcC1paWZlJzogWydlcnJvcicsICdhbnknLCB7IGZ1bmN0aW9uUHJvdG90eXBlTWV0aG9kczogdHJ1ZSB9XSxcbiAgICAvLyAneWllbGQtc3Rhci1zcGFjaW5nJzogWydlcnJvcicsICdib3RoJ10sXG4gICAgeW9kYTogWydlcnJvcicsICduZXZlciddLFxuXG4gICAgJ2ltcG9ydC9leHBvcnQnOiAnZXJyb3InLFxuICAgICdpbXBvcnQvZmlyc3QnOiAnZXJyb3InLFxuICAgICdpbXBvcnQvbm8tYWJzb2x1dGUtcGF0aCc6IFsnZXJyb3InLCB7IGVzbW9kdWxlOiB0cnVlLCBjb21tb25qczogdHJ1ZSwgYW1kOiBmYWxzZSB9XSxcbiAgICAnaW1wb3J0L25vLWR1cGxpY2F0ZXMnOiAnZXJyb3InLFxuICAgICdpbXBvcnQvbm8tbmFtZWQtZGVmYXVsdCc6ICdlcnJvcicsXG4gICAgJ2ltcG9ydC9uby13ZWJwYWNrLWxvYWRlci1zeW50YXgnOiAnZXJyb3InLFxuXG4gICAgJ24vaGFuZGxlLWNhbGxiYWNrLWVycic6IFsnZXJyb3InLCAnXihlcnJ8ZXJyb3IpJCddLFxuICAgICduL25vLWNhbGxiYWNrLWxpdGVyYWwnOiAnZXJyb3InLFxuICAgICduL25vLWRlcHJlY2F0ZWQtYXBpJzogJ2Vycm9yJyxcbiAgICAnbi9uby1leHBvcnRzLWFzc2lnbic6ICdlcnJvcicsXG4gICAgJ24vbm8tbmV3LXJlcXVpcmUnOiAnZXJyb3InLFxuICAgICduL25vLXBhdGgtY29uY2F0JzogJ2Vycm9yJyxcbiAgICAnbi9wcm9jZXNzLWV4aXQtYXMtdGhyb3cnOiAnZXJyb3InLFxuXG4gICAgJ3Byb21pc2UvcGFyYW0tbmFtZXMnOiAnZXJyb3InXG4gIH0gYXMgY29uc3Q7XG5cbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBuYW1lOiBcImZlbmdlL2phdmFzY3JpcHRcIixcbiAgICAgIGZpbGVzOiBbXCIqKi8qLntqcyxjanMsbWpzLGpzeH1cIl0sXG4gICAgICAvLyBodHRwczovL2VzbGludC5vcmcvZG9jcy9sYXRlc3QvdXNlL2NvbmZpZ3VyZS9sYW5ndWFnZS1vcHRpb25zXG4gICAgICBsYW5ndWFnZU9wdGlvbnM6IHtcbiAgICAgICAgZWNtYVZlcnNpb246IFwibGF0ZXN0XCIsXG4gICAgICAgIHNvdXJjZVR5cGU6IFwibW9kdWxlXCIsXG4gICAgICAgIHBhcnNlck9wdGlvbnM6IHtcbiAgICAgICAgICAvLyBUT0RPIGBlY21hVmVyc2lvbmAgYW5kIGBzb3VyY2VUeXBlYCBhcmUgbm8gc3RhbmRhcmQgaGVyZS4gaW1wb3J0L25vLWRlZmF1bHQtZXhwb3J0IHJlcXVpcmVkIHRoaXNcbiAgICAgICAgICBlY21hVmVyc2lvbjogXCJsYXRlc3RcIixcbiAgICAgICAgICBzb3VyY2VUeXBlOiBcIm1vZHVsZVwiLFxuICAgICAgICAgIGVjbWFGZWF0dXJlczoge1xuICAgICAgICAgICAganN4OiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGdsb2JhbHM6IHtcbiAgICAgICAgICAuLi5PYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhnbG9iYWxzLmJyb3dzZXIpXG4gICAgICAgICAgICAgIC5maWx0ZXIoKFtrXSkgPT4gIWNvbmZ1c2luZ0tleXMuaW5jbHVkZXMoaykpXG4gICAgICAgICAgICAgIC5maWx0ZXIoKFtrXSkgPT4gIVtcInNlbGZcIiwgXCJnbG9iYWxcIl0uaW5jbHVkZXMoaykpLCAvLyBwcmVmZXIgYGdsb2JhbFRoaXNgXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBsaW50ZXJPcHRpb25zOiB7XG4gICAgICAgIC8vIG5vSW5saW5lQ29uZmlnOiB0cnVlLCAvLyB0b28gc3RyaWN0XG4gICAgICAgIHJlcG9ydFVudXNlZERpc2FibGVEaXJlY3RpdmVzOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgZnA6IGZwUGx1Z2luLFxuICAgICAgICBuOiBuUGx1Z2luLFxuICAgICAgICBpbXBvcnQ6IGltcG9ydFBsdWdpbixcbiAgICAgICAgcHJvbWlzZTogcHJvbWlzZVBsdWdpbixcbiAgICAgICAgcmVhY3Q6IHJlYWN0UGx1Z2luLFxuICAgICAgICBcInJlYWN0LWhvb2tzXCI6IHJlYWN0SG9va3NQbHVnaW4sXG4gICAgICAgIHNvbmFyanM6IHNvbmFyanNQbHVnaW4sXG4gICAgICAgIHVuaWNvcm46IHVuaWNvcm5QbHVnaW4sXG4gICAgICAgIFwiZXMteFwiOiBlc3hQbHVnaW4sXG4gICAgICAgIGVzbTogZXNtUGx1Z2luLFxuICAgICAgICBcInNpbXBsZS1pbXBvcnQtc29ydFwiOiBzaW1wbGVJbXBvcnRTb3J0UGx1Z2luLFxuICAgICAgICBcIkBmZW5nZVwiOiBmZW5nZVBsdWdpbixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnRcIjogdHNQbHVnaW4sXG4gICAgICB9LFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgLy8gMS4gc3RhbmRhcmQgY29uZmlnIHJ1bGVzXG4gICAgICAgIC4uLnN0YW5kYXJkQ29uZmlnUnVsZXMsXG5cbiAgICAgICAgLy8gMi4gY29kZSBzdHlsZSBmb3IgYSBiZXR0ZXIgcmVhZGFiaWxpdHlcbiAgICAgICAgXCJhcnJvdy1ib2R5LXN0eWxlXCI6IFtcImVycm9yXCIsIFwiYXMtbmVlZGVkXCJdLFxuICAgICAgICBcImltcG9ydC9uZXdsaW5lLWFmdGVyLWltcG9ydFwiOiBbXCJlcnJvclwiLCB7IGNvdW50OiAxIH1dLFxuICAgICAgICAvLyBTb3J0IGltcG9ydHMgYnkgcHJldHRpZXIuIFR1cm4gaW4gb2ZmLlxuICAgICAgICAvLyBcInNpbXBsZS1pbXBvcnQtc29ydC9pbXBvcnRzXCI6IFtcbiAgICAgICAgLy8gICBcImVycm9yXCIsXG4gICAgICAgIC8vICAgeyBncm91cHM6IFtbXCJeXFxcXHUwMDAwXCIsIFwiXm5vZGU6XCIsIFwiXkA/XFxcXHdcIiwgXCJeXCIsIFwiXlxcXFwuXCJdXSB9LFxuICAgICAgICAvLyBdLFxuICAgICAgICBcInNpbXBsZS1pbXBvcnQtc29ydC9leHBvcnRzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL3ByZWZlci1ub2RlLXByb3RvY29sXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL2VzY2FwZS1jYXNlXCI6IFwiZXJyb3JcIiwgLy8gJ1xcdWQ4MzQnIC0+ICdcXHVEODM0J1xuICAgICAgICAvLyBcInVuaWNvcm4vbnVtYmVyLWxpdGVyYWwtY2FzZVwiOiBcImVycm9yXCIsIC8vIDBYRkYgLT4gMHhGRiAvLyBjb25mbGljdCB3aXRoIHByZXR0aWVyXG5cbiAgICAgICAgLy8gMy4gYmFuIHNvbWUgc3ludGF4ZXMgdG8gcmVkdWNlIG1pc3Rha2VzXG4gICAgICAgIFwiZGVmYXVsdC1wYXJhbS1sYXN0XCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJmdW5jLW5hbWUtbWF0Y2hpbmdcIjogXCJlcnJvclwiLFxuICAgICAgICBcImdldHRlci1yZXR1cm5cIjogXCJlcnJvclwiLFxuICAgICAgICBcImluaXQtZGVjbGFyYXRpb25zXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJtYXgtcGFyYW1zXCI6IFtcImVycm9yXCIsIHsgbWF4OiA0IH1dLFxuICAgICAgICBcIm5vLWR1cGxpY2F0ZS1pbXBvcnRzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJuby1lbXB0eS1zdGF0aWMtYmxvY2tcIjogXCJlcnJvclwiLFxuICAgICAgICBcIm5vLWVtcHR5LWZ1bmN0aW9uXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJuby1pbXBsaWNpdC1jb2VyY2lvblwiOiBbXG4gICAgICAgICAgXCJlcnJvclwiLFxuICAgICAgICAgIHsgZGlzYWxsb3dUZW1wbGF0ZVNob3J0aGFuZDogdHJ1ZSwgYWxsb3c6IFtcIiEhXCJdIH0sXG4gICAgICAgIF0sIC8vIGZvcmJpZCBjb2RlIGxpa2UgYGNvbnN0IG51bSA9ICtzdHJgO1xuICAgICAgICBcIm5vLWludmFsaWQtdGhpc1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwibm8tbXVsdGktYXNzaWduXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJuby1vYmplY3QtY29uc3RydWN0b3JcIjogXCJlcnJvclwiLFxuICAgICAgICBcIm5vLXBhcmFtLXJlYXNzaWduXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJuby1wbHVzcGx1c1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwibm8tc2V0dGVyLXJldHVyblwiOiBcImVycm9yXCIsXG4gICAgICAgIFwibm8tc2hhZG93XCI6IFtcImVycm9yXCIsIHsgaWdub3JlT25Jbml0aWFsaXphdGlvbjogdHJ1ZSB9XSxcbiAgICAgICAgXCJuby11bnVzZWQtcHJpdmF0ZS1jbGFzcy1tZW1iZXJzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJwcmVmZXItYXJyb3ctY2FsbGJhY2tcIjogXCJlcnJvclwiLFxuICAgICAgICBcInByZWZlci1leHBvbmVudGlhdGlvbi1vcGVyYXRvclwiOiBcImVycm9yXCIsXG4gICAgICAgIFwicHJlZmVyLW9iamVjdC1oYXMtb3duXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJwcmVmZXItdGVtcGxhdGVcIjogXCJlcnJvclwiLFxuICAgICAgICAvLyBlc1xuICAgICAgICBcImVzLXgvbm8tYWNjZXNzb3ItcHJvcGVydGllc1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwiZXMteC9uby1hc3luYy1pdGVyYXRpb25cIjogXCJlcnJvclwiLFxuICAgICAgICBcImVzLXgvbm8tZ2VuZXJhdG9yc1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwiZXMteC9uby1sZWdhY3ktb2JqZWN0LXByb3RvdHlwZS1hY2Nlc3Nvci1tZXRob2RzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgLy8gZXNtXG4gICAgICAgIFwiZXNtL25lYXJlc3QtcmVsYXRpdmUtcGF0aFwiOiBcImVycm9yXCIsXG4gICAgICAgIFwiZXNtL25vLWRpcmVjdG9yeS1pbXBvcnRzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJlc20vbm8tZHluYW1pYy1pbXBvcnRzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJlc20vbm8tZ2l0LWlnbm9yZWQtaW1wb3J0c1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwiZXNtL25vLXBoYW50b20tZGVwLWltcG9ydHNcIjogXCJlcnJvclwiLFxuICAgICAgICBcImVzbS9uby1yZWxhdGl2ZS1wYXJlbnQtaW1wb3J0c1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwiZXNtL25vLXJlbmFtZS1leHBvcnRzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJlc20vbm8tcmVuYW1lLWltcG9ydHNcIjogXCJlcnJvclwiLFxuICAgICAgICBcImVzbS9uby1zaWRlLWVmZmVjdC1pbXBvcnRzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJlc20vbm8tdHMtZmlsZS1pbXBvcnRzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgLy8gZnBcbiAgICAgICAgXCJmcC9uby1hcmd1bWVudHNcIjogXCJlcnJvclwiLFxuICAgICAgICBcImZwL25vLWRlbGV0ZVwiOiBcImVycm9yXCIsXG4gICAgICAgIC8vIGltcG9ydFxuICAgICAgICBcImltcG9ydC9leHRlbnNpb25zXCI6IFtcImVycm9yXCIsIFwiYWx3YXlzXCIsIHsgaWdub3JlUGFja2FnZXM6IHRydWUgfV0sXG4gICAgICAgIFwiaW1wb3J0L25vLWNvbW1vbmpzXCI6IFtcbiAgICAgICAgICBcImVycm9yXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWxsb3dSZXF1aXJlOiBmYWxzZSxcbiAgICAgICAgICAgIGFsbG93Q29uZGl0aW9uYWxSZXF1aXJlOiBmYWxzZSxcbiAgICAgICAgICAgIGFsbG93UHJpbWl0aXZlTW9kdWxlczogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIDEuIFRoZSBFU00gc3BlY2lmaWNhdGlvbiBkaWRu4oCZdCBzYXkgYW55dGhpbmcgYWJvdXQgaW50ZXJvcGVyYWJpbGl0eSB3aXRoIENvbW1vbkpTLiBTZWU6IGh0dHBzOi8vYmxvZy5hbmRyZXdicmFuLmNoL2RlZmF1bHQtZXhwb3J0cy1pbi1jb21tb25qcy1saWJyYXJpZXMvXG4gICAgICAgICAqIDIuIFJlZXhwb3J0aW5nIGxpa2UgYGV4cG9ydCAqIGZyb20gJ2ZvbydgIHdpbGwgYmUgZGlmZmljdWx0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJpbXBvcnQvbm8tZGVmYXVsdC1leHBvcnRcIjogXCJlcnJvclwiLFxuICAgICAgICBcImltcG9ydC9uby1keW5hbWljLXJlcXVpcmVcIjogXCJlcnJvclwiLFxuICAgICAgICBcImltcG9ydC9uby1tdXRhYmxlLWV4cG9ydHNcIjogXCJlcnJvclwiLCAvLyBmb3JiaWQgY29kZSBsaWtlIGBleHBvcnQgbGV0IGNvdW50ID0gM2BcbiAgICAgICAgXCJpbXBvcnQvbm8tcmVsYXRpdmUtcGFja2FnZXNcIjogXCJlcnJvclwiLCAvLyBmb3JiaWQgdG8gaW1wb3J0IG1vZHVsZSBmcm9tIG90aGVyIG1vbm9yZXBvIHBhY2thZ2VzIGJ5IHJlbGF0aXZlIHBhdGhzXG4gICAgICAgIFwiaW1wb3J0L25vLXNlbGYtaW1wb3J0XCI6IFwiZXJyb3JcIixcbiAgICAgICAgLy8gblxuICAgICAgICBcIm4vcHJlZmVyLWdsb2JhbC9idWZmZXJcIjogW1wiZXJyb3JcIiwgXCJuZXZlclwiXSxcbiAgICAgICAgXCJuL3ByZWZlci1nbG9iYWwvY29uc29sZVwiOiBcImVycm9yXCIsXG4gICAgICAgIFwibi9wcmVmZXItZ2xvYmFsL3Byb2Nlc3NcIjogW1wiZXJyb3JcIiwgXCJuZXZlclwiXSxcbiAgICAgICAgXCJuL3ByZWZlci1nbG9iYWwvdGV4dC1kZWNvZGVyXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJuL3ByZWZlci1nbG9iYWwvdGV4dC1lbmNvZGVyXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJuL3ByZWZlci1nbG9iYWwvdXJsXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJuL3ByZWZlci1nbG9iYWwvdXJsLXNlYXJjaC1wYXJhbXNcIjogXCJlcnJvclwiLFxuICAgICAgICAvLyByZWFjdFxuICAgICAgICBcInJlYWN0L2pzeC1rZXlcIjogXCJlcnJvclwiLFxuICAgICAgICBcInJlYWN0L2pzeC1uby1kdXBsaWNhdGUtcHJvcHNcIjogXCJlcnJvclwiLFxuICAgICAgICBcInJlYWN0L2pzeC1uby11bmRlZlwiOiBcImVycm9yXCIsXG4gICAgICAgIC8vIHJlYWN0LWhvb2tzXG4gICAgICAgIFwicmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJyZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1wiOiBcImVycm9yXCIsXG4gICAgICAgIC8vIHNvbmFyanNcbiAgICAgICAgXCJzb25hcmpzL25vLWNvbGxhcHNpYmxlLWlmXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJzb25hcmpzL25vLWFsbC1kdXBsaWNhdGVkLWJyYW5jaGVzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJzb25hcmpzL25vLWlkZW50aWNhbC1jb25kaXRpb25zXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJzb25hcmpzL25vLWlkZW50aWNhbC1leHByZXNzaW9uc1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwic29uYXJqcy9uby1pZ25vcmVkLXJldHVyblwiOiBcImVycm9yXCIsXG4gICAgICAgIFwic29uYXJqcy9uby1pbnZlcnRlZC1ib29sZWFuLWNoZWNrXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJzb25hcmpzL25vLW5lc3RlZC1zd2l0Y2hcIjogXCJlcnJvclwiLFxuICAgICAgICBcInNvbmFyanMvbm8tdXNlbGVzcy1jYXRjaFwiOiBcImVycm9yXCIsXG4gICAgICAgIFwic29uYXJqcy9wcmVmZXItaW1tZWRpYXRlLXJldHVyblwiOiBcImVycm9yXCIsXG4gICAgICAgIC8vIHVuaWNvcm5cbiAgICAgICAgLy8gJ3VuaWNvcm4vbm8tbnVsbCc6ICdlcnJvcicsIC8vIG51bGwgY2FuIGJlIHVzZWZ1bCB3aGVuIGludGVyYWN0IHdpdGgganNvbi5cbiAgICAgICAgXCJ1bmljb3JuL2NvbnNpc3RlbnQtZGVzdHJ1Y3R1cmluZ1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwidW5pY29ybi9jb25zaXN0ZW50LWVtcHR5LWFycmF5LXNwcmVhZFwiOiBcImVycm9yXCIsXG4gICAgICAgIFwidW5pY29ybi9lcnJvci1tZXNzYWdlXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL2V4cGxpY2l0LWxlbmd0aC1jaGVja1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwidW5pY29ybi9maWxlbmFtZS1jYXNlXCI6IFtcbiAgICAgICAgICBcImVycm9yXCIsXG4gICAgICAgICAgeyBjYXNlczogeyBrZWJhYkNhc2U6IHRydWUsIHBhc2NhbENhc2U6IHRydWUgfSB9LFxuICAgICAgICBdLFxuICAgICAgICBcInVuaWNvcm4vaW1wb3J0LXN0eWxlXCI6IFtcbiAgICAgICAgICBcImVycm9yXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3R5bGVzOiB7XG4gICAgICAgICAgICAgIGNoaWxkX3Byb2Nlc3M6IHsgZGVmYXVsdDogdHJ1ZSB9LFxuICAgICAgICAgICAgICBmczogeyBkZWZhdWx0OiB0cnVlIH0sXG4gICAgICAgICAgICAgIFwiZnMvcHJvbWlzZXNcIjogeyBkZWZhdWx0OiB0cnVlIH0sXG4gICAgICAgICAgICAgIHByb2Nlc3M6IHsgZGVmYXVsdDogdHJ1ZSB9LFxuICAgICAgICAgICAgICBcInV0aWwvdHlwZXNcIjogeyBuYW1lZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiOiB7IGRlZmF1bHQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgXCJub2RlOmZzXCI6IHsgZGVmYXVsdDogdHJ1ZSB9LFxuICAgICAgICAgICAgICBcIm5vZGU6ZnMvcHJvbWlzZXNcIjogeyBkZWZhdWx0OiB0cnVlIH0sXG4gICAgICAgICAgICAgIFwibm9kZTpwcm9jZXNzXCI6IHsgZGVmYXVsdDogdHJ1ZSB9LFxuICAgICAgICAgICAgICBcIm5vZGU6dXRpbC90eXBlc1wiOiB7IG5hbWVkOiB0cnVlIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIFwidW5pY29ybi9uZXctZm9yLWJ1aWx0aW5zXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL25vLWFidXNpdmUtZXNsaW50LWRpc2FibGVcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vbm8tYXJyYXktY2FsbGJhY2stcmVmZXJlbmNlXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL25vLWFycmF5LW1ldGhvZC10aGlzLWFyZ3VtZW50XCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL25vLWZvci1sb29wXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL25vLWluc3RhbmNlb2YtYXJyYXlcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vbm8tbmV3LWFycmF5XCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL25vLW5ldy1idWZmZXJcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vbm8tdHlwZW9mLXVuZGVmaW5lZFwiOiBcImVycm9yXCIsXG4gICAgICAgIFwidW5pY29ybi9uby11bnJlYWRhYmxlLWlpZmVcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vbm8tdXNlbGVzcy1zcHJlYWRcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vcHJlZmVyLWFycmF5LWZsYXQtbWFwXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL3ByZWZlci1leHBvcnQtZnJvbVwiOiBcImVycm9yXCIsXG4gICAgICAgIFwidW5pY29ybi9wcmVmZXItZ2xvYmFsLXRoaXNcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vcHJlZmVyLWluY2x1ZGVzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL3ByZWZlci1tb2R1bGVcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vcHJlZmVyLW51bWJlci1wcm9wZXJ0aWVzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL3ByZWZlci1zdHJpbmctc2xpY2VcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vcHJlZmVyLXRlcm5hcnlcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vdGhyb3ctbmV3LWVycm9yXCI6IFwiZXJyb3JcIixcblxuICAgICAgICBcIkBmZW5nZS9jYWxsLWFyZ3VtZW50cy1sZW5ndGhcIjogXCJlcnJvclwiLFxuICAgICAgICBcIkBmZW5nZS9uby1pbnN0YW5jZW9mLWJ1aWx0aW5cIjogXCJlcnJvclwiLFxuICAgICAgICBcIkBmZW5nZS9uby1yZXN0cmljdGVkLWxvb3BzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAZmVuZ2Uvbm8tdW5uZWNlc3NhcnktdGVtcGxhdGUtc3RyaW5nXCI6IFwiZXJyb3JcIixcblxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFwiOiBbXG4gICAgICAgICAgXCJlcnJvclwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwidHMtZXhwZWN0LWVycm9yXCI6IHRydWUsXG4gICAgICAgICAgICBcInRzLWlnbm9yZVwiOiB0cnVlLFxuICAgICAgICAgICAgXCJ0cy1ub2NoZWNrXCI6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlbGVzcy1lbXB0eS1leHBvcnRcIjogXCJlcnJvclwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwiZmVuZ2UvamF2YXNjcmlwdC9jb25maWdcIixcbiAgICAgIGZpbGVzOiBbXCIqKi8qLmNvbmZpZy57anMsY2pzLG1qcyxqc3h9XCJdLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgXCJpbXBvcnQvbm8tZGVmYXVsdC1leHBvcnRcIjogXCJvZmZcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbW90ZW1lbi9taW5pbWF0Y2gtY2hlYXQtc2hlZXRcbiAgICAgIG5hbWU6IFwiZmVuZ2UvamF2YXNjcmlwdC90ZXN0XCIsXG4gICAgICBmaWxlczogW1xuICAgICAgICBcIioqL19fdGVzdHNfXy8qKi8qLntqcyxjanMsbWpzLGpzeH1cIixcbiAgICAgICAgXCIqKi8qLnt0ZXN0LHNwZWN9LntqcyxjanMsbWpzLGpzeH1cIixcbiAgICAgIF0sXG4gICAgICBydWxlczoge1xuICAgICAgICBcImVzbS9uby1waGFudG9tLWRlcC1pbXBvcnRzXCI6IFtcImVycm9yXCIsIHsgYWxsb3dEZXZEZXBlbmRlbmNpZXM6IHRydWUgfV0sXG4gICAgICB9LFxuICAgIH0sXG4gIF0gYXMgY29uc3Q7XG59XG4iXX0=
@@ -1,6 +1,5 @@
1
1
  import * as fengeTsPlugin from "@fenge/eslint-plugin-ts";
2
2
  import tsParser from "@typescript-eslint/parser";
3
- import deprecationPlugin from "eslint-plugin-deprecation";
4
3
  export declare function typescript(project?: string): readonly [{
5
4
  readonly name: "fenge/typescript";
6
5
  readonly files: readonly ["**/*.{ts,cts,mts,tsx}"];
@@ -22,7 +21,6 @@ export declare function typescript(project?: string): readonly [{
22
21
  };
23
22
  };
24
23
  readonly plugins: {
25
- readonly deprecation: typeof deprecationPlugin;
26
24
  readonly "@fenge-ts": typeof fengeTsPlugin;
27
25
  readonly fp: unknown;
28
26
  readonly n: import("eslint").ESLint.Plugin & {
@@ -419,11 +417,10 @@ export declare function typescript(project?: string): readonly [{
419
417
  readonly "@typescript-eslint": {
420
418
  configs: Record<string, import("@typescript-eslint/utils/ts-eslint").ClassicConfig.Config>;
421
419
  meta: import("@typescript-eslint/utils/ts-eslint").FlatConfig.PluginMeta;
422
- rules: import("@typescript-eslint/eslint-plugin/use-at-your-own-risk/rules").TypeScriptESLintRules;
420
+ rules: typeof import("@typescript-eslint/eslint-plugin/use-at-your-own-risk/rules");
423
421
  };
424
422
  };
425
423
  readonly rules: {
426
- readonly "deprecation/deprecation": "error";
427
424
  readonly "@fenge-ts/exact-map-set-type": "error";
428
425
  readonly "@fenge-ts/no-const-enum": "error";
429
426
  readonly "@fenge-ts/no-declares-in-ts-file": "error";
@@ -432,7 +429,6 @@ export declare function typescript(project?: string): readonly [{
432
429
  readonly "@fenge-ts/no-untyped-empty-array": "error";
433
430
  readonly "@typescript-eslint/adjacent-overload-signatures": "error";
434
431
  readonly "@typescript-eslint/await-thenable": "error";
435
- readonly "@typescript-eslint/ban-types": "error";
436
432
  readonly "@typescript-eslint/consistent-generic-constructors": "error";
437
433
  readonly "@typescript-eslint/consistent-indexed-object-style": "error";
438
434
  readonly "@typescript-eslint/consistent-type-assertions": readonly ["error", {
@@ -470,6 +466,7 @@ export declare function typescript(project?: string): readonly [{
470
466
  readonly ignoredTypeNames: readonly [];
471
467
  }];
472
468
  readonly "@typescript-eslint/no-confusing-non-null-assertion": "error";
469
+ readonly "@typescript-eslint/no-deprecated": "error";
473
470
  readonly "@typescript-eslint/no-duplicate-enum-values": "error";
474
471
  readonly "@typescript-eslint/no-duplicate-type-constituents": "error";
475
472
  readonly "@typescript-eslint/no-empty-object-type": "error";
@@ -494,17 +491,26 @@ export declare function typescript(project?: string): readonly [{
494
491
  readonly "@typescript-eslint/no-unnecessary-type-assertion": "error";
495
492
  readonly "@typescript-eslint/no-unnecessary-type-constraint": "error";
496
493
  readonly "@typescript-eslint/no-unsafe-declaration-merging": "error";
497
- readonly "@typescript-eslint/only-throw-error": "error";
494
+ readonly "@typescript-eslint/no-unsafe-function-type": "error";
495
+ readonly "@typescript-eslint/no-wrapper-object-types": "error";
498
496
  readonly "@typescript-eslint/prefer-as-const": "error";
499
497
  readonly "@typescript-eslint/prefer-function-type": "error";
500
498
  readonly "@typescript-eslint/prefer-optional-chain": "error";
501
499
  readonly "@typescript-eslint/prefer-readonly": "error";
502
- readonly "@typescript-eslint/prefer-ts-expect-error": "error";
503
500
  readonly "@typescript-eslint/restrict-plus-operands": readonly ["error", {
504
501
  readonly allowBoolean: false;
505
502
  readonly allowNullish: false;
506
503
  readonly allowNumberAndString: false;
507
504
  readonly allowRegExp: false;
505
+ readonly skipCompoundAssignments: false;
506
+ }];
507
+ readonly "@typescript-eslint/restrict-template-expressions": readonly ["error", {
508
+ readonly allow: readonly [];
509
+ readonly allowBoolean: false;
510
+ readonly allowNever: false;
511
+ readonly allowNullish: false;
512
+ readonly allowNumber: false;
513
+ readonly allowRegExp: false;
508
514
  }];
509
515
  readonly "@typescript-eslint/return-await": readonly ["error", "always"];
510
516
  readonly "@typescript-eslint/switch-exhaustiveness-check": readonly ["error", {
@@ -533,18 +539,17 @@ export declare function typescript(project?: string): readonly [{
533
539
  readonly "@typescript-eslint/max-params": readonly ["error", {
534
540
  readonly max: 4;
535
541
  }];
536
- readonly "@typescript-eslint/no-empty-function": "error";
537
- readonly "@typescript-eslint/no-invalid-this": "error";
538
- readonly "@typescript-eslint/no-shadow": readonly ["error", {
539
- readonly ignoreOnInitialization: true;
540
- }];
541
542
  readonly "@typescript-eslint/no-array-constructor": "error";
542
543
  readonly "@typescript-eslint/no-dupe-class-members": "error";
544
+ readonly "@typescript-eslint/no-empty-function": "error";
543
545
  readonly "@typescript-eslint/no-implied-eval": "error";
546
+ readonly "@typescript-eslint/no-invalid-this": "error";
544
547
  readonly "@typescript-eslint/no-redeclare": readonly ["error", {
545
548
  readonly builtinGlobals: false;
546
549
  }];
547
- readonly "@typescript-eslint/no-throw-literal": "error";
550
+ readonly "@typescript-eslint/no-shadow": readonly ["error", {
551
+ readonly ignoreOnInitialization: true;
552
+ }];
548
553
  readonly "@typescript-eslint/no-unused-expressions": readonly ["error", {
549
554
  readonly allowShortCircuit: true;
550
555
  readonly allowTernary: true;
@@ -562,6 +567,7 @@ export declare function typescript(project?: string): readonly [{
562
567
  readonly variables: false;
563
568
  }];
564
569
  readonly "@typescript-eslint/no-useless-constructor": "error";
570
+ readonly "@typescript-eslint/only-throw-error": "error";
565
571
  readonly "@typescript-eslint/prefer-promise-reject-errors": "error";
566
572
  readonly "arrow-body-style": readonly ["error", "as-needed"];
567
573
  readonly "import/newline-after-import": readonly ["error", {
@@ -579,6 +585,7 @@ export declare function typescript(project?: string): readonly [{
579
585
  readonly allow: readonly ["!!"];
580
586
  }];
581
587
  readonly "no-multi-assign": "error";
588
+ readonly "no-object-constructor": "error";
582
589
  readonly "no-param-reassign": "error";
583
590
  readonly "no-plusplus": "error";
584
591
  readonly "no-setter-return": "error";
@@ -782,7 +789,6 @@ export declare function typescript(project?: string): readonly [{
782
789
  readonly 'no-multi-str': "error";
783
790
  readonly 'no-new': "error";
784
791
  readonly 'no-new-func': "error";
785
- readonly 'no-new-object': "error";
786
792
  readonly 'no-new-symbol': "error";
787
793
  readonly 'no-new-wrappers': "error";
788
794
  readonly 'no-obj-calls': "error";
@@ -1 +1 @@
1
- {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/config/typescript.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAC;AACzD,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,iBAAiB,MAAM,2BAA2B,CAAC;AAG1D,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CAchC,QAAQ;0CAEM,QACnB;gEAGA,QAAG;yDAEO,QAAQ;mDAEH,QACnB;uCAEI,QAAE;iDAEM,QACd;2CACiB,QAAQ;0CAEC,QACvB;oDAEc,QAAQ;4CAEJ,QAAQ;;;;;;;;;;;;;;;;;;;;;;wDAkBwB,QAAQ;yCACjC,QAAQ;iDAEX,QAAQ;4CACK,QAAQ;oDAExB,QAAQ;uDAGL,QAAQ;mDAEpB,QAAQ;4CAEW,QAAQ;4CACjB,QAAQ;6CACU,QAAQ;iDAEd,QAAQ;kDAGjC,QAAE;4CACJ,QAAG;qCAKL,QACH;2CAEyB,QACxB;kCACE,QAAO;wCACsB,QAC7B;iDAAwD,QAAQ;sCAA6C,QAAQ;sCAA6C,QAAQ;mDAEtK,QAAF;4DACc,QAAQ;iDACc,QACvC;+CAGiB,QACrB;;iCACyB,QAAQ;;;;;;;;;;;;;;;;4CAkB1B,QADO;8CAAqD,QAAQ;kDAAyD,QAAQ;sDAC3G,QAAQ;uCACR,QAAQ;mDACS,QAAQ;0CACtB,QAAQ;wCACxB,QAAQ;oDAEnB,QACJ;iDACsB,QAAQ;;;;;;;;;;;;;;;;;iDAexB,QAAL;yCACG,QACT;mDAEY,QAAQ;0CACgB,QAAQ;yCAEnC,QAAD;wCAEI,QAAQ;8CAGR,QAAQ;oDAEX,QACN;sDAEc,QAAQ;sDAGA,QAAQ;6CACa,QAC1C;sDAEqC,QAAQ;2CACL,QAC1C;oCACwB,QAAQ;kDAEU,QAAQ;wCACxB,QAAQ;iDACR,QAAQ;kDACb,QAAQ;mDACF,QAAQ;2CACjB,QAAQ;wCAEnB,QACV;wCAEQ,QACR;uCAA8C,QAAQ;uCACT,QAAQ;yCACnB,QAAQ;+DAElC,QAAD;iDACC,QAAI;yCACJ,QAAM;mCACN,QAAI;gDAAuD,QACnE;8CAAqD,QACrD;oCAA2C,QAAQ;wDAE3C,QAAG;4DACG,QAAQ;+CACZ,QAAD;0CAC8B,QAAQ;yDACpC,QAAQ;mDACX,QAAQ;2CAAkD,QAC9D;6CAAoD,QAAQ;iDACb,QAAQ;oDACP,QAAQ;qCACtB,QAAQ;6CACJ,QAAQ;gDACC,QAAO;+CACN,QAAQ;gDAEpD,QAAD;4CAAmD,QACtD;oCAA2C,QAC/C;6CAEqB,QAAQ;0CAEhB,QAAQ;+CAET,QAAH;oDAGG,QAAQ;4CACZ,QAAD;wDACC,QAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAtNiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0P/B"}
1
+ {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/config/typescript.ts"],"names":[],"mappings":"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"}
@@ -1,68 +1,48 @@
1
1
  import process from "node:process";
2
2
  import * as fengeTsPlugin from "@fenge/eslint-plugin-ts";
3
3
  import tsParser from "@typescript-eslint/parser";
4
- import deprecationPlugin from "eslint-plugin-deprecation"; // TODO: Remove this plugin and use `@typescript-eslint/no-deprecated` when eslint upgraded to 9.
5
4
  import { javascript } from "./javascript.js";
6
5
  export function typescript(project) {
7
6
  const jsConfig = javascript()[0];
8
7
  const getTsExtensionRules = () => {
8
+ // Key is js rule, value is ts rule
9
9
  // https://typescript-eslint.io/rules/?=extension
10
- const extensionRuleKeys = [
11
- "block-spacing",
12
- "brace-style",
13
- "class-methods-use-this",
14
- "comma-dangle",
15
- "comma-spacing",
16
- "consistent-return",
17
- "default-param-last",
18
- "dot-notation",
19
- "func-call-spacing",
20
- "indent",
21
- "init-declarations",
22
- "key-spacing",
23
- "keyword-spacing",
24
- "lines-around-comment",
25
- "lines-between-class-members",
26
- "max-params",
27
- "no-array-constructor",
28
- "no-dupe-class-members",
29
- "no-empty-function",
30
- "no-extra-parens",
31
- "no-extra-semi",
32
- "no-implied-eval",
33
- "no-invalid-this",
34
- "no-loop-func",
35
- // "no-loss-of-precision",
36
- "no-magic-numbers",
37
- "no-redeclare",
38
- "no-restricted-imports",
39
- "no-shadow",
40
- "no-throw-literal",
41
- "no-unused-expressions",
42
- "no-unused-vars",
43
- "no-use-before-define",
44
- "no-useless-constructor",
45
- "object-curly-spacing",
46
- "only-throw-error", // this rule based on 'eslint/no-throw-literal'
47
- "padding-line-between-statements",
48
- "prefer-destructuring",
49
- "prefer-promise-reject-errors",
50
- "quotes",
51
- "require-await",
52
- "return-await", // this rule based on 'eslint/no-return-await' instead of 'eslint/return-await'
53
- "semi",
54
- "space-before-blocks",
55
- "space-before-function-paren",
56
- "space-infix-ops",
57
- ];
58
- const extensionRuleKeySet = new Set(extensionRuleKeys);
59
- return Object.entries(jsConfig.rules)
60
- .filter(([key]) => extensionRuleKeySet.has(key))
61
- .reduce((prev, [jsRuleKey, jsRuleValue]) => ({
62
- ...prev,
63
- [jsRuleKey]: "off",
64
- [`@typescript-eslint/${jsRuleKey}`]: jsRuleValue,
65
- }), {});
10
+ const extensionRuleMap = {
11
+ "class-methods-use-this": "@typescript-eslint/class-methods-use-this",
12
+ "consistent-return": "@typescript-eslint/consistent-return",
13
+ "default-param-last": "@typescript-eslint/default-param-last",
14
+ "dot-notation": "@typescript-eslint/dot-notation",
15
+ "init-declarations": "@typescript-eslint/init-declarations",
16
+ "max-params": "@typescript-eslint/max-params",
17
+ "no-array-constructor": "@typescript-eslint/no-array-constructor",
18
+ "no-dupe-class-members": "@typescript-eslint/no-dupe-class-members",
19
+ "no-empty-function": "@typescript-eslint/no-empty-function",
20
+ "no-implied-eval": "@typescript-eslint/no-implied-eval",
21
+ "no-invalid-this": "@typescript-eslint/no-invalid-this",
22
+ "no-loop-func": "@typescript-eslint/no-loop-func",
23
+ // "no-loss-of-precision": "@typescript-eslint/no-loss-of-precision", // This rule has been deprecated
24
+ "no-magic-numbers": "@typescript-eslint/no-magic-numbers",
25
+ "no-redeclare": "@typescript-eslint/no-redeclare",
26
+ "no-restricted-imports": "@typescript-eslint/no-restricted-imports",
27
+ "no-shadow": "@typescript-eslint/no-shadow",
28
+ "no-unused-expressions": "@typescript-eslint/no-unused-expressions",
29
+ "no-unused-vars": "@typescript-eslint/no-unused-vars",
30
+ "no-use-before-define": "@typescript-eslint/no-use-before-define",
31
+ "no-useless-constructor": "@typescript-eslint/no-useless-constructor",
32
+ "no-throw-literal": "@typescript-eslint/only-throw-error",
33
+ "prefer-destructuring": "@typescript-eslint/prefer-destructuring",
34
+ "prefer-promise-reject-errors": "@typescript-eslint/prefer-promise-reject-errors",
35
+ "require-await": "@typescript-eslint/require-await",
36
+ "no-return-await": "@typescript-eslint/return-await", // no-return-await has been deprecated
37
+ };
38
+ const isInExtensionRuleMap = (key) => key in extensionRuleMap;
39
+ return Object.entries(jsConfig.rules).reduce((result, [jsRuleKey, jsRuleValue]) => isInExtensionRuleMap(jsRuleKey)
40
+ ? {
41
+ ...result,
42
+ [jsRuleKey]: "off",
43
+ [extensionRuleMap[jsRuleKey]]: jsRuleValue,
44
+ }
45
+ : result, {});
66
46
  };
67
47
  return [
68
48
  {
@@ -75,19 +55,19 @@ export function typescript(project) {
75
55
  parserOptions: {
76
56
  ...jsConfig.languageOptions.parserOptions,
77
57
  tsconfigRootDir: process.cwd(),
58
+ // Setting `projectService: true` or `project: true` is pretty slow when lint a monorepo with many tsconfig.json files in each sub-app.
59
+ // For a better performance, we are recommended using one tsconfig.json file in a project.
60
+ // Waiting for typescript-eslint to officially provide a better way to use `projectService`.
78
61
  project: project ?? "tsconfig.json",
79
62
  },
80
63
  },
81
64
  plugins: {
82
65
  ...jsConfig.plugins,
83
- deprecation: deprecationPlugin,
84
66
  "@fenge-ts": fengeTsPlugin,
85
67
  },
86
68
  rules: {
87
69
  ...jsConfig.rules,
88
70
  ...getTsExtensionRules(),
89
- // deprecation
90
- "deprecation/deprecation": "error",
91
71
  // fenge
92
72
  "@fenge-ts/exact-map-set-type": "error",
93
73
  "@fenge-ts/no-const-enum": "error",
@@ -99,7 +79,6 @@ export function typescript(project) {
99
79
  "@typescript-eslint/adjacent-overload-signatures": "error",
100
80
  // "@typescript-eslint/array-type": ["error", 'array-simple'], // The default option is 'array'. Not very sure if we need to change the option. So disabled it.
101
81
  "@typescript-eslint/await-thenable": "error",
102
- "@typescript-eslint/ban-types": "error",
103
82
  "@typescript-eslint/consistent-generic-constructors": "error",
104
83
  "@typescript-eslint/consistent-indexed-object-style": "error",
105
84
  "@typescript-eslint/consistent-type-assertions": [
@@ -151,6 +130,7 @@ export function typescript(project) {
151
130
  { ignoredTypeNames: [] },
152
131
  ],
153
132
  "@typescript-eslint/no-confusing-non-null-assertion": "error",
133
+ "@typescript-eslint/no-deprecated": "error",
154
134
  "@typescript-eslint/no-duplicate-enum-values": "error",
155
135
  "@typescript-eslint/no-duplicate-type-constituents": "error",
156
136
  "@typescript-eslint/no-empty-object-type": "error",
@@ -178,14 +158,12 @@ export function typescript(project) {
178
158
  "@typescript-eslint/no-unnecessary-type-assertion": "error",
179
159
  "@typescript-eslint/no-unnecessary-type-constraint": "error",
180
160
  "@typescript-eslint/no-unsafe-declaration-merging": "error",
181
- // '@typescript-eslint/no-unsafe-function-type': "error",
182
- // "@typescript-eslint/no-wrapper-object-types": "error",
183
- "@typescript-eslint/only-throw-error": "error",
161
+ "@typescript-eslint/no-unsafe-function-type": "error",
162
+ "@typescript-eslint/no-wrapper-object-types": "error",
184
163
  "@typescript-eslint/prefer-as-const": "error",
185
164
  "@typescript-eslint/prefer-function-type": "error",
186
165
  "@typescript-eslint/prefer-optional-chain": "error",
187
166
  "@typescript-eslint/prefer-readonly": "error",
188
- "@typescript-eslint/prefer-ts-expect-error": "error",
189
167
  "@typescript-eslint/restrict-plus-operands": [
190
168
  "error",
191
169
  {
@@ -194,9 +172,21 @@ export function typescript(project) {
194
172
  allowNullish: false,
195
173
  allowNumberAndString: false,
196
174
  allowRegExp: false,
175
+ skipCompoundAssignments: false,
176
+ },
177
+ ],
178
+ "@typescript-eslint/restrict-template-expressions": [
179
+ "error",
180
+ {
181
+ allow: [],
182
+ // allowAny: false,
183
+ allowBoolean: false,
184
+ allowNever: false,
185
+ allowNullish: false,
186
+ allowNumber: false,
187
+ allowRegExp: false,
197
188
  },
198
189
  ],
199
- // "@typescript-eslint/restrict-template-expressions": "error",
200
190
  "@typescript-eslint/return-await": ["error", "always"],
201
191
  "@typescript-eslint/switch-exhaustiveness-check": [
202
192
  "error",
@@ -235,4 +225,4 @@ export function typescript(project) {
235
225
  },
236
226
  ];
237
227
  }
238
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvdHlwZXNjcmlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDbkMsT0FBTyxLQUFLLGFBQWEsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLFFBQVEsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRCxPQUFPLGlCQUFpQixNQUFNLDJCQUEyQixDQUFDLENBQUMsaUdBQWlHO0FBQzVKLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxNQUFNLFVBQVUsVUFBVSxDQUFDLE9BQWdCO0lBQ3pDLE1BQU0sUUFBUSxHQUFHLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWpDLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxFQUFFO1FBQy9CLGlEQUFpRDtRQUNqRCxNQUFNLGlCQUFpQixHQUFHO1lBQ3hCLGVBQWU7WUFDZixhQUFhO1lBQ2Isd0JBQXdCO1lBQ3hCLGNBQWM7WUFDZCxlQUFlO1lBQ2YsbUJBQW1CO1lBQ25CLG9CQUFvQjtZQUNwQixjQUFjO1lBQ2QsbUJBQW1CO1lBQ25CLFFBQVE7WUFDUixtQkFBbUI7WUFDbkIsYUFBYTtZQUNiLGlCQUFpQjtZQUNqQixzQkFBc0I7WUFDdEIsNkJBQTZCO1lBQzdCLFlBQVk7WUFDWixzQkFBc0I7WUFDdEIsdUJBQXVCO1lBQ3ZCLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIsZUFBZTtZQUNmLGlCQUFpQjtZQUNqQixpQkFBaUI7WUFDakIsY0FBYztZQUNkLDBCQUEwQjtZQUMxQixrQkFBa0I7WUFDbEIsY0FBYztZQUNkLHVCQUF1QjtZQUN2QixXQUFXO1lBQ1gsa0JBQWtCO1lBQ2xCLHVCQUF1QjtZQUN2QixnQkFBZ0I7WUFDaEIsc0JBQXNCO1lBQ3RCLHdCQUF3QjtZQUN4QixzQkFBc0I7WUFDdEIsa0JBQWtCLEVBQUUs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QXVCO1lBQzdCLEtBQUssRUFBRTtnQkFDTCxvQ0FBb0M7Z0JBQ3BDLG1DQUFtQzthQUNwQztZQUNELEtBQUssRUFBRTtnQkFDTCx5Q0FBeUMsRUFBRSxLQUFLO2dCQUNoRCxtQ0FBbUMsRUFBRSxLQUFLO2dCQUMxQyw0QkFBNEIsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxDQUFDO2FBQ3hFO1NBQ0Y7S0FDTyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwcm9jZXNzIGZyb20gXCJub2RlOnByb2Nlc3NcIjtcbmltcG9ydCAqIGFzIGZlbmdlVHNQbHVnaW4gZnJvbSBcIkBmZW5nZS9lc2xpbnQtcGx1Z2luLXRzXCI7XG5pbXBvcnQgdHNQYXJzZXIgZnJvbSBcIkB0eXBlc2NyaXB0LWVzbGludC9wYXJzZXJcIjtcbmltcG9ydCBkZXByZWNhdGlvblBsdWdpbiBmcm9tIFwiZXNsaW50LXBsdWdpbi1kZXByZWNhdGlvblwiOyAvLyBUT0RPOiBSZW1vdmUgdGhpcyBwbHVnaW4gYW5kIHVzZSBgQHR5cGVzY3JpcHQtZXNsaW50L25vLWRlcHJlY2F0ZWRgIHdoZW4gZXNsaW50IHVwZ3JhZGVkIHRvIDkuXG5pbXBvcnQgeyBqYXZhc2NyaXB0IH0gZnJvbSBcIi4vamF2YXNjcmlwdC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gdHlwZXNjcmlwdChwcm9qZWN0Pzogc3RyaW5nKSB7XG4gIGNvbnN0IGpzQ29uZmlnID0gamF2YXNjcmlwdCgpWzBdO1xuXG4gIGNvbnN0IGdldFRzRXh0ZW5zaW9uUnVsZXMgPSAoKSA9PiB7XG4gICAgLy8gaHR0cHM6Ly90eXBlc2NyaXB0LWVzbGludC5pby9ydWxlcy8/PWV4dGVuc2lvblxuICAgIGNvbnN0IGV4dGVuc2lvblJ1bGVLZXlzID0gW1xuICAgICAgXCJibG9jay1zcGFjaW5nXCIsXG4gICAgICBcImJyYWNlLXN0eWxlXCIsXG4gICAgICBcImNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcIixcbiAgICAgIFwiY29tbWEtZGFuZ2xlXCIsXG4gICAgICBcImNvbW1hLXNwYWNpbmdcIixcbiAgICAgIFwiY29uc2lzdGVudC1yZXR1cm5cIixcbiAgICAgIFwiZGVmYXVsdC1wYXJhbS1sYXN0XCIsXG4gICAgICBcImRvdC1ub3RhdGlvblwiLFxuICAgICAgXCJmdW5jLWNhbGwtc3BhY2luZ1wiLFxuICAgICAgXCJpbmRlbnRcIixcbiAgICAgIFwiaW5pdC1kZWNsYXJhdGlvbnNcIixcbiAgICAgIFwia2V5LXNwYWNpbmdcIixcbiAgICAgIFwia2V5d29yZC1zcGFjaW5nXCIsXG4gICAgICBcImxpbmVzLWFyb3VuZC1jb21tZW50XCIsXG4gICAgICBcImxpbmVzLWJldHdlZW4tY2xhc3MtbWVtYmVyc1wiLFxuICAgICAgXCJtYXgtcGFyYW1zXCIsXG4gICAgICBcIm5vLWFycmF5LWNvbnN0cnVjdG9yXCIsXG4gICAgICBcIm5vLWR1cGUtY2xhc3MtbWVtYmVyc1wiLFxuICAgICAgXCJuby1lbXB0eS1mdW5jdGlvblwiLFxuICAgICAgXCJuby1leHRyYS1wYXJlbnNcIixcbiAgICAgIFwibm8tZXh0cmEtc2VtaVwiLFxuICAgICAgXCJuby1pbXBsaWVkLWV2YWxcIixcbiAgICAgIFwibm8taW52YWxpZC10aGlzXCIsXG4gICAgICBcIm5vLWxvb3AtZnVuY1wiLFxuICAgICAgLy8gXCJuby1sb3NzLW9mLXByZWNpc2lvblwiLFxuICAgICAgXCJuby1tYWdpYy1udW1iZXJzXCIsXG4gICAgICBcIm5vLXJlZGVjbGFyZVwiLFxuICAgICAgXCJuby1yZXN0cmljdGVkLWltcG9ydHNcIixcbiAgICAgIFwibm8tc2hhZG93XCIsXG4gICAgICBcIm5vLXRocm93LWxpdGVyYWxcIixcbiAgICAgIFwibm8tdW51c2VkLWV4cHJlc3Npb25zXCIsXG4gICAgICBcIm5vLXVudXNlZC12YXJzXCIsXG4gICAgICBcIm5vLXVzZS1iZWZvcmUtZGVmaW5lXCIsXG4gICAgICBcIm5vLXVzZWxlc3MtY29uc3RydWN0b3JcIixcbiAgICAgIFwib2JqZWN0LWN1cmx5LXNwYWNpbmdcIixcbiAgICAgIFwib25seS10aHJvdy1lcnJvclwiLCAvLyB0aGlzIHJ1bGUgYmFzZWQgb24gJ2VzbGludC9uby10aHJvdy1saXRlcmFsJ1xuICAgICAgXCJwYWRkaW5nLWxpbmUtYmV0d2Vlbi1zdGF0ZW1lbnRzXCIsXG4gICAgICBcInByZWZlci1kZXN0cnVjdHVyaW5nXCIsXG4gICAgICBcInByZWZlci1wcm9taXNlLXJlamVjdC1lcnJvcnNcIixcbiAgICAgIFwicXVvdGVzXCIsXG4gICAgICBcInJlcXVpcmUtYXdhaXRcIixcbiAgICAgIFwicmV0dXJuLWF3YWl0XCIsIC8vIHRoaXMgcnVsZSBiYXNlZCBvbiAnZXNsaW50L25vLXJldHVybi1hd2FpdCcgaW5zdGVhZCBvZiAnZXNsaW50L3JldHVybi1hd2FpdCdcbiAgICAgIFwic2VtaVwiLFxuICAgICAgXCJzcGFjZS1iZWZvcmUtYmxvY2tzXCIsXG4gICAgICBcInNwYWNlLWJlZm9yZS1mdW5jdGlvbi1wYXJlblwiLFxuICAgICAgXCJzcGFjZS1pbmZpeC1vcHNcIixcbiAgICBdIGFzIGNvbnN0O1xuICAgIHR5cGUgRXh0ZW5zaW9uUnVsZUtleSA9ICh0eXBlb2YgZXh0ZW5zaW9uUnVsZUtleXMpW251bWJlcl07XG4gICAgdHlwZSBKc0NvbmZpZ1J1bGVLZXkgPSBrZXlvZiB0eXBlb2YganNDb25maWcucnVsZXM7XG5cbiAgICB0eXBlIEpzRXh0ZW5zaW9uS2V5ID0gRXh0cmFjdDxFeHRlbnNpb25SdWxlS2V5LCBKc0NvbmZpZ1J1bGVLZXk+OyAvLyBFeHRyYWN0XG4gICAgdHlwZSBUc0V4dGVuc2lvbktleSA9IGBAdHlwZXNjcmlwdC1lc2xpbnQvJHtKc0V4dGVuc2lvbktleX1gO1xuXG4gICAgdHlwZSBHZXRKc0tleTxUIGV4dGVuZHMgVHNFeHRlbnNpb25LZXk+ID1cbiAgICAgIFQgZXh0ZW5kcyBgQHR5cGVzY3JpcHQtZXNsaW50LyR7aW5mZXIgS31gID8gSyA6IG5ldmVyO1xuICAgIHR5cGUgSnNSZXN1bHQgPSB7XG4gICAgICBbS2V5IGluIEpzRXh0ZW5zaW9uS2V5XTogXCJvZmZcIjtcbiAgICB9O1xuICAgIHR5cGUgVHNSZXN1bHQgPSB7XG4gICAgICBbS2V5IGluIFRzRXh0ZW5zaW9uS2V5XTogKHR5cGVvZiBqc0NvbmZpZy5ydWxlcylbR2V0SnNLZXk8S2V5Pl07XG4gICAgfTtcbiAgICB0eXBlIFJlc3VsdCA9IEpzUmVzdWx0ICYgVHNSZXN1bHQ7XG5cbiAgICBjb25zdCBleHRlbnNpb25SdWxlS2V5U2V0ID0gbmV3IFNldDxzdHJpbmc+KGV4dGVuc2lvblJ1bGVLZXlzKTtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoanNDb25maWcucnVsZXMpXG4gICAgICAuZmlsdGVyKChba2V5XSkgPT4gZXh0ZW5zaW9uUnVsZUtleVNldC5oYXMoa2V5KSlcbiAgICAgIC5yZWR1Y2UoXG4gICAgICAgIChwcmV2LCBbanNSdWxlS2V5LCBqc1J1bGVWYWx1ZV0pID0+ICh7XG4gICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICBbanNSdWxlS2V5XTogXCJvZmZcIixcbiAgICAgICAgICBbYEB0eXBlc2NyaXB0LWVzbGludC8ke2pzUnVsZUtleX1gXToganNSdWxlVmFsdWUsXG4gICAgICAgIH0pLFxuICAgICAgICB7fSBhcyBSZXN1bHQsXG4gICAgICApO1xuICB9O1xuXG4gIHJldHVybiBbXG4gICAge1xuICAgICAgLi4uanNDb25maWcsXG4gICAgICBuYW1lOiBcImZlbmdlL3R5cGVzY3JpcHRcIixcbiAgICAgIGZpbGVzOiBbXCIqKi8qLnt0cyxjdHMsbXRzLHRzeH1cIl0sXG4gICAgICBsYW5ndWFnZU9wdGlvbnM6IHtcbiAgICAgICAgLi4uanNDb25maWcubGFuZ3VhZ2VPcHRpb25zLFxuICAgICAgICBwYXJzZXI6IHRzUGFyc2VyLCAvLyBVbmZvcnR1bmF0ZWx5IHBhcnNlciBjYW5ub3QgYmUgYSBzdHJpbmcuIEVzbGludCBzaG91bGQgc3VwcG9ydCBpdC4gaHR0cHM6Ly9lc2xpbnQub3JnL2RvY3MvbGF0ZXN0L3VzZS9jb25maWd1cmUvY29uZmlndXJhdGlvbi1maWxlcy1uZXcjY29uZmlndXJpbmctYS1jdXN0b20tcGFyc2VyLWFuZC1pdHMtb3B0aW9uc1xuICAgICAgICBwYXJzZXJPcHRpb25zOiB7XG4gICAgICAgICAgLi4uanNDb25maWcubGFuZ3VhZ2VPcHRpb25zLnBhcnNlck9wdGlvbnMsXG4gICAgICAgICAgdHNjb25maWdSb290RGlyOiBwcm9jZXNzLmN3ZCgpLFxuICAgICAgICAgIHByb2plY3Q6IHByb2plY3QgPz8gXCJ0c2NvbmZpZy5qc29uXCIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcGx1Z2luczoge1xuICAgICAgICAuLi5qc0NvbmZpZy5wbHVnaW5zLFxuICAgICAgICBkZXByZWNhdGlvbjogZGVwcmVjYXRpb25QbHVnaW4sXG4gICAgICAgIFwiQGZlbmdlLXRzXCI6IGZlbmdlVHNQbHVnaW4sXG4gICAgICB9LFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgLi4uanNDb25maWcucnVsZXMsXG4gICAgICAgIC4uLmdldFRzRXh0ZW5zaW9uUnVsZXMoKSxcblxuICAgICAgICAvLyBkZXByZWNhdGlvblxuICAgICAgICBcImRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXCI6IFwiZXJyb3JcIixcbiAgICAgICAgLy8gZmVuZ2VcbiAgICAgICAgXCJAZmVuZ2UtdHMvZXhhY3QtbWFwLXNldC10eXBlXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAZmVuZ2UtdHMvbm8tY29uc3QtZW51bVwiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQGZlbmdlLXRzL25vLWRlY2xhcmVzLWluLXRzLWZpbGVcIjogXCJlcnJvclwiLFxuICAgICAgICBcIkBmZW5nZS10cy9uby1leHBvcnQtYXNzaWdubWVudFwiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQGZlbmdlLXRzL25vLXByb3BlcnR5LWRlY29yYXRvclwiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQGZlbmdlLXRzL25vLXVudHlwZWQtZW1wdHktYXJyYXlcIjogXCJlcnJvclwiLFxuICAgICAgICAvLyB0eXBlc2NyaXB0XG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L2FkamFjZW50LW92ZXJsb2FkLXNpZ25hdHVyZXNcIjogXCJlcnJvclwiLFxuICAgICAgICAvLyBcIkB0eXBlc2NyaXB0LWVzbGludC9hcnJheS10eXBlXCI6IFtcImVycm9yXCIsICdhcnJheS1zaW1wbGUnXSwgLy8gVGhlIGRlZmF1bHQgb3B0aW9uIGlzICdhcnJheScuIE5vdCB2ZXJ5IHN1cmUgaWYgd2UgbmVlZCB0byBjaGFuZ2UgdGhlIG9wdGlvbi4gU28gZGlzYWJsZWQgaXQuXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L2F3YWl0LXRoZW5hYmxlXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvY29uc2lzdGVudC1nZW5lcmljLWNvbnN0cnVjdG9yc1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L2NvbnNpc3RlbnQtaW5kZXhlZC1vYmplY3Qtc3R5bGVcIjogXCJlcnJvclwiLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9jb25zaXN0ZW50LXR5cGUtYXNzZXJ0aW9uc1wiOiBbXG4gICAgICAgICAgXCJlcnJvclwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFzc2VydGlvblN0eWxlOiBcImFzXCIsXG4gICAgICAgICAgICBvYmplY3RMaXRlcmFsVHlwZUFzc2VydGlvbnM6IFwiYWxsb3ctYXMtcGFyYW1ldGVyXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvY29uc2lzdGVudC10eXBlLWRlZmluaXRpb25zXCI6IFtcbiAgICAgICAgICBcImVycm9yXCIsXG4gICAgICAgICAgXCJpbnRlcmZhY2VcIixcbiAgICAgICAgXSwgLy8gVE9ETyBzaG91bGQgd2UgY2hhbmdlIHRvICd0eXBlJz9cbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvY29uc2lzdGVudC10eXBlLWV4cG9ydHNcIjogXCJlcnJvclwiLFxuICAgICAgICAvLyBcIkB0eXBlc2NyaXB0LWVzbGludC9jb25zaXN0ZW50LXR5cGUtaW1wb3J0c1wiOiBcImVycm9yLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9kb3Qtbm90YXRpb25cIjogW1wiZXJyb3JcIiwgeyBhbGxvd0tleXdvcmRzOiB0cnVlIH1dLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9tZXRob2Qtc2lnbmF0dXJlLXN0eWxlXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cIjogW1xuICAgICAgICAgIFwiZXJyb3JcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWxlY3RvcjogXCJmdW5jdGlvblwiLFxuICAgICAgICAgICAgZm9ybWF0OiBbXCJjYW1lbENhc2VcIiwgXCJQYXNjYWxDYXNlXCJdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2VsZWN0b3I6IFwidmFyaWFibGVcIixcbiAgICAgICAgICAgIHR5cGVzOiBbXCJmdW5jdGlvblwiXSxcbiAgICAgICAgICAgIGZvcm1hdDogW1wiY2FtZWxDYXNlXCIsIFwiUGFzY2FsQ2FzZVwiXSwgLy8gZGVjb3JhdG9ycyBuZWVkIFBhc2NhbENhc2VcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNlbGVjdG9yOiBcImNsYXNzXCIsXG4gICAgICAgICAgICBmb3JtYXQ6IFtcIlBhc2NhbENhc2VcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWxlY3RvcjogXCJpbnRlcmZhY2VcIixcbiAgICAgICAgICAgIGZvcm1hdDogW1wiUGFzY2FsQ2FzZVwiXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNlbGVjdG9yOiBcInR5cGVBbGlhc1wiLFxuICAgICAgICAgICAgZm9ybWF0OiBbXCJQYXNjYWxDYXNlXCJdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2VsZWN0b3I6IFwidHlwZVBhcmFtZXRlclwiLFxuICAgICAgICAgICAgZm9ybWF0OiBbXCJVUFBFUl9DQVNFXCIsIFwiUGFzY2FsQ2FzZVwiXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby1hcnJheS1kZWxldGVcIjogXCJlcnJvclwiLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby1iYXNlLXRvLXN0cmluZ1wiOiBbXG4gICAgICAgICAgXCJlcnJvclwiLFxuICAgICAgICAgIHsgaWdub3JlZFR5cGVOYW1lczogW10gfSxcbiAgICAgICAgXSxcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tY29uZnVzaW5nLW5vbi1udWxsLWFzc2VydGlvblwiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLWR1cGxpY2F0ZS1lbnVtLXZhbHVlc1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLWR1cGxpY2F0ZS10eXBlLWNvbnN0aXR1ZW50c1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LW9iamVjdC10eXBlXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXh0cmEtbm9uLW51bGwtYXNzZXJ0aW9uXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZmxvYXRpbmctcHJvbWlzZXNcIjogW1xuICAgICAgICAgIFwiZXJyb3JcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZ25vcmVWb2lkOiBmYWxzZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby1mb3ItaW4tYXJyYXlcIjogXCJlcnJvclwiLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby1pbXBvcnQtdHlwZS1zaWRlLWVmZmVjdHNcIjogXCJlcnJvclwiLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby1pbmZlcnJhYmxlLXR5cGVzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbWlzdXNlZC1uZXdcIjogXCJlcnJvclwiLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby1taXN1c2VkLXByb21pc2VzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbWl4ZWQtZW51bXNcIjogXCJlcnJvclwiLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby1uYW1lc3BhY2VcIjogXCJlcnJvclwiLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRlZC1vcHRpb25hbC1jaGFpblwiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblwiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcIjogXCJlcnJvclwiLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cIjogXCJlcnJvclwiLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1wYXJhbWV0ZXItcHJvcGVydHktYXNzaWdubWVudFwiOlxuICAgICAgICAgIFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktdGVtcGxhdGUtZXhwcmVzc2lvblwiOiBcImVycm9yXCIsIC8vIGpzIGFsc28gbmVlZCB0aGlzIHJ1bGVcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktdHlwZS1hc3NlcnRpb25cIjogXCJlcnJvclwiLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS10eXBlLWNvbnN0cmFpbnRcIjogXCJlcnJvclwiLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtZGVjbGFyYXRpb24tbWVyZ2luZ1wiOiBcImVycm9yXCIsXG4gICAgICAgIC8vICdAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWZ1bmN0aW9uLXR5cGUnOiBcImVycm9yXCIsXG4gICAgICAgIC8vIFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLXdyYXBwZXItb2JqZWN0LXR5cGVzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvb25seS10aHJvdy1lcnJvclwiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1hcy1jb25zdFwiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1mdW5jdGlvbi10eXBlXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvcHJlZmVyLW9wdGlvbmFsLWNoYWluXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvcHJlZmVyLXJlYWRvbmx5XCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvcHJlZmVyLXRzLWV4cGVjdC1lcnJvclwiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXBsdXMtb3BlcmFuZHNcIjogW1xuICAgICAgICAgIFwiZXJyb3JcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBhbGxvd0FueTogZmFsc2UsXG4gICAgICAgICAgICBhbGxvd0Jvb2xlYW46IGZhbHNlLFxuICAgICAgICAgICAgYWxsb3dOdWxsaXNoOiBmYWxzZSxcbiAgICAgICAgICAgIGFsbG93TnVtYmVyQW5kU3RyaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGFsbG93UmVnRXhwOiBmYWxzZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICAvLyBcIkB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L3JldHVybi1hd2FpdFwiOiBbXCJlcnJvclwiLCBcImFsd2F5c1wiXSxcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvc3dpdGNoLWV4aGF1c3RpdmVuZXNzLWNoZWNrXCI6IFtcbiAgICAgICAgICBcImVycm9yXCIsXG4gICAgICAgICAgeyByZXF1aXJlRGVmYXVsdEZvck5vblVuaW9uOiB0cnVlIH0sXG4gICAgICAgIF0sXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvdW5pZmllZC1zaWduYXR1cmVzXCI6IFwiZXJyb3JcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiBcImZlbmdlL3R5cGVzY3JpcHQvY29uZmlnXCIsXG4gICAgICBmaWxlczogW1wiKiovKi5jb25maWcue3RzLGN0cyxtdHMsdHN4fVwiXSxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgIFwiaW1wb3J0L25vLWRlZmF1bHQtZXhwb3J0XCI6IFwib2ZmXCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJmZW5nZS90eXBlc2NyaXB0L2RlY2xhcmF0aW9uXCIsXG4gICAgICBmaWxlczogW1wiKiovKi5kLnt0cyxjdHMsbXRzLHRzeH1cIl0sXG4gICAgICBydWxlczoge1xuICAgICAgICBcImltcG9ydC9uby1kZWZhdWx0LWV4cG9ydFwiOiBcIm9mZlwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3RlbWVuL21pbmltYXRjaC1jaGVhdC1zaGVldFxuICAgICAgbmFtZTogXCJmZW5nZS90eXBlc2NyaXB0L3Rlc3RcIixcbiAgICAgIGZpbGVzOiBbXG4gICAgICAgIFwiKiovX190ZXN0c19fLyoqLyoue3RzLGN0cyxtdHMsdHN4fVwiLFxuICAgICAgICBcIioqLyoue3Rlc3Qsc3BlY30ue3RzLGN0cyxtdHMsdHN4fVwiLFxuICAgICAgXSxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLWZsb2F0aW5nLXByb21pc2VzXCI6IFwib2ZmXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kXCI6IFwib2ZmXCIsXG4gICAgICAgIFwiZXNtL25vLXBoYW50b20tZGVwLWltcG9ydHNcIjogW1wiZXJyb3JcIiwgeyBhbGxvd0RldkRlcGVuZGVuY2llczogdHJ1ZSB9XSxcbiAgICAgIH0sXG4gICAgfSxcbiAgXSBhcyBjb25zdDtcbn1cbiJdfQ==
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvdHlwZXNjcmlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDbkMsT0FBTyxLQUFLLGFBQWEsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLFFBQVEsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0MsTUFBTSxVQUFVLFVBQVUsQ0FBQyxPQUFnQjtJQUN6QyxNQUFNLFFBQVEsR0FBRyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVqQyxNQUFNLG1CQUFtQixHQUFHLEdBQUcsRUFBRTtRQUMvQixtQ0FBbUM7UUFDbkMsaURBQWlEO1FBQ2pELE1BQU0sZ0JBQWdCLEdBQUc7WUFDdkIsd0JBQXdCLEVBQUUsMkNBQTJDO1lBQ3JFLG1CQUFtQixFQUFFLHNDQUFzQztZQUMzRCxvQkFBb0IsRUFBRSx1Q0FBdUM7WUFDN0QsY0FBYyxFQUFFLGlDQUFpQztZQUNqRCxtQkFBbUIsRUFBRSxzQ0FBc0M7WUFDM0QsWUFBWSxFQUFFLCtCQUErQjtZQUM3QyxzQkFBc0IsRUFBRSx5Q0FBeUM7WUFDakUsdUJBQXVCLEVBQUUsMENBQTBDO1lBQ25FLG1CQUFtQixFQUFFLHNDQUFzQztZQUMzRCxpQkFBaUIsRUFBRSxvQ0FBb0M7WUFDdkQsaUJBQWlCLEVBQUUsb0NBQW9DO1lBQ3ZELGNBQWMsRUFBRSxpQ0FBaUM7WUFDakQsc0dBQXNHO1lBQ3RHLGtCQUFrQixFQUFFLHFDQUFxQztZQUN6RCxjQUFjLEVBQUUsaUNBQWlDO1lBQ2pELHVCQUF1QixFQUFFLDBDQUEwQztZQUNuRSxXQUFXLEVBQUUsOEJBQThCO1lBQzNDLHVCQUF1QixFQUFFLDBDQUEwQztZQUNuRSxnQkFBZ0IsRUFBRSxtQ0FBbUM7WUFDckQsc0JBQXNCLEVBQUUs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MEJBQTBCLEVBQUUsS0FBSzthQUNsQztTQUNGO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsOEJBQThCO1lBQ3BDLEtBQUssRUFBRSxDQUFDLHlCQUF5QixDQUFDO1lBQ2xDLEtBQUssRUFBRTtnQkFDTCwwQkFBMEIsRUFBRSxLQUFLO2FBQ2xDO1NBQ0Y7UUFDRDtZQUNFLG1EQUFtRDtZQUNuRCxJQUFJLEVBQUUsdUJBQXVCO1lBQzdCLEtBQUssRUFBRTtnQkFDTCxvQ0FBb0M7Z0JBQ3BDLG1DQUFtQzthQUNwQztZQUNELEtBQUssRUFBRTtnQkFDTCx5Q0FBeUMsRUFBRSxLQUFLO2dCQUNoRCxtQ0FBbUMsRUFBRSxLQUFLO2dCQUMxQyw0QkFBNEIsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxDQUFDO2FBQ3hFO1NBQ0Y7S0FDTyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwcm9jZXNzIGZyb20gXCJub2RlOnByb2Nlc3NcIjtcbmltcG9ydCAqIGFzIGZlbmdlVHNQbHVnaW4gZnJvbSBcIkBmZW5nZS9lc2xpbnQtcGx1Z2luLXRzXCI7XG5pbXBvcnQgdHNQYXJzZXIgZnJvbSBcIkB0eXBlc2NyaXB0LWVzbGludC9wYXJzZXJcIjtcbmltcG9ydCB7IGphdmFzY3JpcHQgfSBmcm9tIFwiLi9qYXZhc2NyaXB0LmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlc2NyaXB0KHByb2plY3Q/OiBzdHJpbmcpIHtcbiAgY29uc3QganNDb25maWcgPSBqYXZhc2NyaXB0KClbMF07XG5cbiAgY29uc3QgZ2V0VHNFeHRlbnNpb25SdWxlcyA9ICgpID0+IHtcbiAgICAvLyBLZXkgaXMganMgcnVsZSwgdmFsdWUgaXMgdHMgcnVsZVxuICAgIC8vIGh0dHBzOi8vdHlwZXNjcmlwdC1lc2xpbnQuaW8vcnVsZXMvPz1leHRlbnNpb25cbiAgICBjb25zdCBleHRlbnNpb25SdWxlTWFwID0ge1xuICAgICAgXCJjbGFzcy1tZXRob2RzLXVzZS10aGlzXCI6IFwiQHR5cGVzY3JpcHQtZXNsaW50L2NsYXNzLW1ldGhvZHMtdXNlLXRoaXNcIixcbiAgICAgIFwiY29uc2lzdGVudC1yZXR1cm5cIjogXCJAdHlwZXNjcmlwdC1lc2xpbnQvY29uc2lzdGVudC1yZXR1cm5cIixcbiAgICAgIFwiZGVmYXVsdC1wYXJhbS1sYXN0XCI6IFwiQHR5cGVzY3JpcHQtZXNsaW50L2RlZmF1bHQtcGFyYW0tbGFzdFwiLFxuICAgICAgXCJkb3Qtbm90YXRpb25cIjogXCJAdHlwZXNjcmlwdC1lc2xpbnQvZG90LW5vdGF0aW9uXCIsXG4gICAgICBcImluaXQtZGVjbGFyYXRpb25zXCI6IFwiQHR5cGVzY3JpcHQtZXNsaW50L2luaXQtZGVjbGFyYXRpb25zXCIsXG4gICAgICBcIm1heC1wYXJhbXNcIjogXCJAdHlwZXNjcmlwdC1lc2xpbnQvbWF4LXBhcmFtc1wiLFxuICAgICAgXCJuby1hcnJheS1jb25zdHJ1Y3RvclwiOiBcIkB0eXBlc2NyaXB0LWVzbGludC9uby1hcnJheS1jb25zdHJ1Y3RvclwiLFxuICAgICAgXCJuby1kdXBlLWNsYXNzLW1lbWJlcnNcIjogXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHVwZS1jbGFzcy1tZW1iZXJzXCIsXG4gICAgICBcIm5vLWVtcHR5LWZ1bmN0aW9uXCI6IFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXCIsXG4gICAgICBcIm5vLWltcGxpZWQtZXZhbFwiOiBcIkB0eXBlc2NyaXB0LWVzbGludC9uby1pbXBsaWVkLWV2YWxcIixcbiAgICAgIFwibm8taW52YWxpZC10aGlzXCI6IFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLWludmFsaWQtdGhpc1wiLFxuICAgICAgXCJuby1sb29wLWZ1bmNcIjogXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbG9vcC1mdW5jXCIsXG4gICAgICAvLyBcIm5vLWxvc3Mtb2YtcHJlY2lzaW9uXCI6IFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLWxvc3Mtb2YtcHJlY2lzaW9uXCIsIC8vIFRoaXMgcnVsZSBoYXMgYmVlbiBkZXByZWNhdGVkXG4gICAgICBcIm5vLW1hZ2ljLW51bWJlcnNcIjogXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbWFnaWMtbnVtYmVyc1wiLFxuICAgICAgXCJuby1yZWRlY2xhcmVcIjogXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVkZWNsYXJlXCIsXG4gICAgICBcIm5vLXJlc3RyaWN0ZWQtaW1wb3J0c1wiOiBcIkB0eXBlc2NyaXB0LWVzbGludC9uby1yZXN0cmljdGVkLWltcG9ydHNcIixcbiAgICAgIFwibm8tc2hhZG93XCI6IFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLXNoYWRvd1wiLFxuICAgICAgXCJuby11bnVzZWQtZXhwcmVzc2lvbnNcIjogXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLWV4cHJlc3Npb25zXCIsXG4gICAgICBcIm5vLXVudXNlZC12YXJzXCI6IFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXCIsXG4gICAgICBcIm5vLXVzZS1iZWZvcmUtZGVmaW5lXCI6IFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lXCIsXG4gICAgICBcIm5vLXVzZWxlc3MtY29uc3RydWN0b3JcIjogXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlbGVzcy1jb25zdHJ1Y3RvclwiLFxuICAgICAgXCJuby10aHJvdy1saXRlcmFsXCI6IFwiQHR5cGVzY3JpcHQtZXNsaW50L29ubHktdGhyb3ctZXJyb3JcIixcbiAgICAgIFwicHJlZmVyLWRlc3RydWN0dXJpbmdcIjogXCJAdHlwZXNjcmlwdC1lc2xpbnQvcHJlZmVyLWRlc3RydWN0dXJpbmdcIixcbiAgICAgIFwicHJlZmVyLXByb21pc2UtcmVqZWN0LWVycm9yc1wiOlxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9wcmVmZXItcHJvbWlzZS1yZWplY3QtZXJyb3JzXCIsXG4gICAgICBcInJlcXVpcmUtYXdhaXRcIjogXCJAdHlwZXNjcmlwdC1lc2xpbnQvcmVxdWlyZS1hd2FpdFwiLFxuICAgICAgXCJuby1yZXR1cm4tYXdhaXRcIjogXCJAdHlwZXNjcmlwdC1lc2xpbnQvcmV0dXJuLWF3YWl0XCIsIC8vIG5vLXJldHVybi1hd2FpdCBoYXMgYmVlbiBkZXByZWNhdGVkXG4gICAgfSBhcyBjb25zdDtcblxuICAgIHR5cGUgSnMyVHNSdWxlTWFwID0gdHlwZW9mIGV4dGVuc2lvblJ1bGVNYXA7XG4gICAgdHlwZSBUczJKc1J1bGVNYXAgPSB7XG4gICAgICBbSyBpbiBrZXlvZiBKczJUc1J1bGVNYXAgYXMgSnMyVHNSdWxlTWFwW0tdXTogSzsgLy8gcmV2ZXJzZVxuICAgIH07XG5cbiAgICB0eXBlIEpzRXh0ZW5zaW9uS2V5ID0gRXh0cmFjdDxcbiAgICAgIGtleW9mIEpzMlRzUnVsZU1hcCxcbiAgICAgIGtleW9mIHR5cGVvZiBqc0NvbmZpZy5ydWxlc1xuICAgID47IC8vIEV4dHJhY3RcbiAgICB0eXBlIFRzRXh0ZW5zaW9uS2V5ID0gSnMyVHNSdWxlTWFwW0pzRXh0ZW5zaW9uS2V5XTtcblxuICAgIHR5cGUgSnNSZXN1bHQgPSBSZWNvcmQ8SnNFeHRlbnNpb25LZXksIFwib2ZmXCI+O1xuICAgIHR5cGUgVHNSZXN1bHQgPSB7XG4gICAgICBbS2V5IGluIFRzRXh0ZW5zaW9uS2V5XTogKHR5cGVvZiBqc0NvbmZpZy5ydWxlcylbVHMySnNSdWxlTWFwW0tleV1dO1xuICAgIH07XG4gICAgdHlwZSBSZXN1bHQgPSBKc1Jlc3VsdCAmIFRzUmVzdWx0O1xuXG4gICAgY29uc3QgaXNJbkV4dGVuc2lvblJ1bGVNYXAgPSAoXG4gICAgICBrZXk6IHN0cmluZyxcbiAgICApOiBrZXkgaXMga2V5b2YgdHlwZW9mIGV4dGVuc2lvblJ1bGVNYXAgPT4ga2V5IGluIGV4dGVuc2lvblJ1bGVNYXA7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGpzQ29uZmlnLnJ1bGVzKS5yZWR1Y2UoXG4gICAgICAocmVzdWx0LCBbanNSdWxlS2V5LCBqc1J1bGVWYWx1ZV0pID0+XG4gICAgICAgIGlzSW5FeHRlbnNpb25SdWxlTWFwKGpzUnVsZUtleSlcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgICBbanNSdWxlS2V5XTogXCJvZmZcIixcbiAgICAgICAgICAgICAgW2V4dGVuc2lvblJ1bGVNYXBbanNSdWxlS2V5XV06IGpzUnVsZVZhbHVlLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogcmVzdWx0LFxuICAgICAge30gYXMgUmVzdWx0LFxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICAuLi5qc0NvbmZpZyxcbiAgICAgIG5hbWU6IFwiZmVuZ2UvdHlwZXNjcmlwdFwiLFxuICAgICAgZmlsZXM6IFtcIioqLyoue3RzLGN0cyxtdHMsdHN4fVwiXSxcbiAgICAgIGxhbmd1YWdlT3B0aW9uczoge1xuICAgICAgICAuLi5qc0NvbmZpZy5sYW5ndWFnZU9wdGlvbnMsXG4gICAgICAgIHBhcnNlcjogdHNQYXJzZXIsIC8vIFVuZm9ydHVuYXRlbHkgcGFyc2VyIGNhbm5vdCBiZSBhIHN0cmluZy4gRXNsaW50IHNob3VsZCBzdXBwb3J0IGl0LiBodHRwczovL2VzbGludC5vcmcvZG9jcy9sYXRlc3QvdXNlL2NvbmZpZ3VyZS9jb25maWd1cmF0aW9uLWZpbGVzLW5ldyNjb25maWd1cmluZy1hLWN1c3RvbS1wYXJzZXItYW5kLWl0cy1vcHRpb25zXG4gICAgICAgIHBhcnNlck9wdGlvbnM6IHtcbiAgICAgICAgICAuLi5qc0NvbmZpZy5sYW5ndWFnZU9wdGlvbnMucGFyc2VyT3B0aW9ucyxcbiAgICAgICAgICB0c2NvbmZpZ1Jvb3REaXI6IHByb2Nlc3MuY3dkKCksXG4gICAgICAgICAgLy8gU2V0dGluZyBgcHJvamVjdFNlcnZpY2U6IHRydWVgIG9yIGBwcm9qZWN0OiB0cnVlYCBpcyBwcmV0dHkgc2xvdyB3aGVuIGxpbnQgYSBtb25vcmVwbyB3aXRoIG1hbnkgdHNjb25maWcuanNvbiBmaWxlcyBpbiBlYWNoIHN1Yi1hcHAuXG4gICAgICAgICAgLy8gRm9yIGEgYmV0dGVyIHBlcmZvcm1hbmNlLCB3ZSBhcmUgcmVjb21tZW5kZWQgdXNpbmcgb25lIHRzY29uZmlnLmpzb24gZmlsZSBpbiBhIHByb2plY3QuXG4gICAgICAgICAgLy8gV2FpdGluZyBmb3IgdHlwZXNjcmlwdC1lc2xpbnQgdG8gb2ZmaWNpYWxseSBwcm92aWRlIGEgYmV0dGVyIHdheSB0byB1c2UgYHByb2plY3RTZXJ2aWNlYC5cbiAgICAgICAgICBwcm9qZWN0OiBwcm9qZWN0ID8/IFwidHNjb25maWcuanNvblwiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgLi4uanNDb25maWcucGx1Z2lucyxcbiAgICAgICAgXCJAZmVuZ2UtdHNcIjogZmVuZ2VUc1BsdWdpbixcbiAgICAgIH0sXG4gICAgICBydWxlczoge1xuICAgICAgICAuLi5qc0NvbmZpZy5ydWxlcyxcbiAgICAgICAgLi4uZ2V0VHNFeHRlbnNpb25SdWxlcygpLFxuXG4gICAgICAgIC8vIGZlbmdlXG4gICAgICAgIFwiQGZlbmdlLXRzL2V4YWN0LW1hcC1zZXQtdHlwZVwiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQGZlbmdlLXRzL25vLWNvbnN0LWVudW1cIjogXCJlcnJvclwiLFxuICAgICAgICBcIkBmZW5nZS10cy9uby1kZWNsYXJlcy1pbi10cy1maWxlXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAZmVuZ2UtdHMvbm8tZXhwb3J0LWFzc2lnbm1lbnRcIjogXCJlcnJvclwiLFxuICAgICAgICBcIkBmZW5nZS10cy9uby1wcm9wZXJ0eS1kZWNvcmF0b3JcIjogXCJlcnJvclwiLFxuICAgICAgICBcIkBmZW5nZS10cy9uby11bnR5cGVkLWVtcHR5LWFycmF5XCI6IFwiZXJyb3JcIixcbiAgICAgICAgLy8gdHlwZXNjcmlwdFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9hZGphY2VudC1vdmVybG9hZC1zaWduYXR1cmVzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgLy8gXCJAdHlwZXNjcmlwdC1lc2xpbnQvYXJyYXktdHlwZVwiOiBbXCJlcnJvclwiLCAnYXJyYXktc2ltcGxlJ10sIC8vIFRoZSBkZWZhdWx0IG9wdGlvbiBpcyAnYXJyYXknLiBOb3QgdmVyeSBzdXJlIGlmIHdlIG5lZWQgdG8gY2hhbmdlIHRoZSBvcHRpb24uIFNvIGRpc2FibGVkIGl0LlxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9hd2FpdC10aGVuYWJsZVwiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L2NvbnNpc3RlbnQtZ2VuZXJpYy1jb25zdHJ1Y3RvcnNcIjogXCJlcnJvclwiLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9jb25zaXN0ZW50LWluZGV4ZWQtb2JqZWN0LXN0eWxlXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvY29uc2lzdGVudC10eXBlLWFzc2VydGlvbnNcIjogW1xuICAgICAgICAgIFwiZXJyb3JcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhc3NlcnRpb25TdHlsZTogXCJhc1wiLFxuICAgICAgICAgICAgb2JqZWN0TGl0ZXJhbFR5cGVBc3NlcnRpb25zOiBcImFsbG93LWFzLXBhcmFtZXRlclwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L2NvbnNpc3RlbnQtdHlwZS1kZWZpbml0aW9uc1wiOiBbXG4gICAgICAgICAgXCJlcnJvclwiLFxuICAgICAgICAgIFwiaW50ZXJmYWNlXCIsXG4gICAgICAgIF0sIC8vIFRPRE8gc2hvdWxkIHdlIGNoYW5nZSB0byAndHlwZSc/XG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L2NvbnNpc3RlbnQtdHlwZS1leHBvcnRzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgLy8gXCJAdHlwZXNjcmlwdC1lc2xpbnQvY29uc2lzdGVudC10eXBlLWltcG9ydHNcIjogXCJlcnJvcixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvZG90LW5vdGF0aW9uXCI6IFtcImVycm9yXCIsIHsgYWxsb3dLZXl3b3JkczogdHJ1ZSB9XSxcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvbWV0aG9kLXNpZ25hdHVyZS1zdHlsZVwiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXCI6IFtcbiAgICAgICAgICBcImVycm9yXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2VsZWN0b3I6IFwiZnVuY3Rpb25cIixcbiAgICAgICAgICAgIGZvcm1hdDogW1wiY2FtZWxDYXNlXCIsIFwiUGFzY2FsQ2FzZVwiXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNlbGVjdG9yOiBcInZhcmlhYmxlXCIsXG4gICAgICAgICAgICB0eXBlczogW1wiZnVuY3Rpb25cIl0sXG4gICAgICAgICAgICBmb3JtYXQ6IFtcImNhbWVsQ2FzZVwiLCBcIlBhc2NhbENhc2VcIl0sIC8vIGRlY29yYXRvcnMgbmVlZCBQYXNjYWxDYXNlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWxlY3RvcjogXCJjbGFzc1wiLFxuICAgICAgICAgICAgZm9ybWF0OiBbXCJQYXNjYWxDYXNlXCJdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2VsZWN0b3I6IFwiaW50ZXJmYWNlXCIsXG4gICAgICAgICAgICBmb3JtYXQ6IFtcIlBhc2NhbENhc2VcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWxlY3RvcjogXCJ0eXBlQWxpYXNcIixcbiAgICAgICAgICAgIGZvcm1hdDogW1wiUGFzY2FsQ2FzZVwiXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNlbGVjdG9yOiBcInR5cGVQYXJhbWV0ZXJcIixcbiAgICAgICAgICAgIGZvcm1hdDogW1wiVVBQRVJfQ0FTRVwiLCBcIlBhc2NhbENhc2VcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tYXJyYXktZGVsZXRlXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tYmFzZS10by1zdHJpbmdcIjogW1xuICAgICAgICAgIFwiZXJyb3JcIixcbiAgICAgICAgICB7IGlnbm9yZWRUeXBlTmFtZXM6IFtdIH0sXG4gICAgICAgIF0sXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLWNvbmZ1c2luZy1ub24tbnVsbC1hc3NlcnRpb25cIjogXCJlcnJvclwiLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby1kZXByZWNhdGVkXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHVwbGljYXRlLWVudW0tdmFsdWVzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHVwbGljYXRlLXR5cGUtY29uc3RpdHVlbnRzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcIjogXCJlcnJvclwiLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby1leHRyYS1ub24tbnVsbC1hc3NlcnRpb25cIjogXCJlcnJvclwiLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlc1wiOiBbXG4gICAgICAgICAgXCJlcnJvclwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlnbm9yZVZvaWQ6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLWZvci1pbi1hcnJheVwiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLWltcG9ydC10eXBlLXNpZGUtZWZmZWN0c1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLWluZmVycmFibGUtdHlwZXNcIjogXCJlcnJvclwiLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby1taXN1c2VkLW5ld1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLW1pc3VzZWQtcHJvbWlzZXNcIjogXCJlcnJvclwiLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby1taXhlZC1lbnVtc1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLW5hbWVzcGFjZVwiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGVkLW9wdGlvbmFsLWNoYWluXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvblwiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXBhcmFtZXRlci1wcm9wZXJ0eS1hc3NpZ25tZW50XCI6XG4gICAgICAgICAgXCJlcnJvclwiLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS10ZW1wbGF0ZS1leHByZXNzaW9uXCI6IFwiZXJyb3JcIiwgLy8ganMgYWxzbyBuZWVkIHRoaXMgcnVsZVxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS10eXBlLWFzc2VydGlvblwiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtY29uc3RyYWludFwiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1kZWNsYXJhdGlvbi1tZXJnaW5nXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWZ1bmN0aW9uLXR5cGVcIjogXCJlcnJvclwiLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby13cmFwcGVyLW9iamVjdC10eXBlc1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1hcy1jb25zdFwiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1mdW5jdGlvbi10eXBlXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvcHJlZmVyLW9wdGlvbmFsLWNoYWluXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvcHJlZmVyLXJlYWRvbmx5XCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtcGx1cy1vcGVyYW5kc1wiOiBbXG4gICAgICAgICAgXCJlcnJvclwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIGFsbG93QW55OiBmYWxzZSxcbiAgICAgICAgICAgIGFsbG93Qm9vbGVhbjogZmFsc2UsXG4gICAgICAgICAgICBhbGxvd051bGxpc2g6IGZhbHNlLFxuICAgICAgICAgICAgYWxsb3dOdW1iZXJBbmRTdHJpbmc6IGZhbHNlLFxuICAgICAgICAgICAgYWxsb3dSZWdFeHA6IGZhbHNlLFxuICAgICAgICAgICAgc2tpcENvbXBvdW5kQXNzaWdubWVudHM6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXCI6IFtcbiAgICAgICAgICBcImVycm9yXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWxsb3c6IFtdLFxuICAgICAgICAgICAgLy8gYWxsb3dBbnk6IGZhbHNlLFxuICAgICAgICAgICAgYWxsb3dCb29sZWFuOiBmYWxzZSxcbiAgICAgICAgICAgIGFsbG93TmV2ZXI6IGZhbHNlLFxuICAgICAgICAgICAgYWxsb3dOdWxsaXNoOiBmYWxzZSxcbiAgICAgICAgICAgIGFsbG93TnVtYmVyOiBmYWxzZSxcbiAgICAgICAgICAgIGFsbG93UmVnRXhwOiBmYWxzZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9yZXR1cm4tYXdhaXRcIjogW1wiZXJyb3JcIiwgXCJhbHdheXNcIl0sXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L3N3aXRjaC1leGhhdXN0aXZlbmVzcy1jaGVja1wiOiBbXG4gICAgICAgICAgXCJlcnJvclwiLFxuICAgICAgICAgIHsgcmVxdWlyZURlZmF1bHRGb3JOb25VbmlvbjogdHJ1ZSB9LFxuICAgICAgICBdLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZFwiOiBcImVycm9yXCIsXG4gICAgICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L3VuaWZpZWQtc2lnbmF0dXJlc1wiOiBcImVycm9yXCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJmZW5nZS90eXBlc2NyaXB0L2NvbmZpZ1wiLFxuICAgICAgZmlsZXM6IFtcIioqLyouY29uZmlnLnt0cyxjdHMsbXRzLHRzeH1cIl0sXG4gICAgICBydWxlczoge1xuICAgICAgICBcImltcG9ydC9uby1kZWZhdWx0LWV4cG9ydFwiOiBcIm9mZlwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwiZmVuZ2UvdHlwZXNjcmlwdC9kZWNsYXJhdGlvblwiLFxuICAgICAgZmlsZXM6IFtcIioqLyouZC57dHMsY3RzLG10cyx0c3h9XCJdLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgXCJpbXBvcnQvbm8tZGVmYXVsdC1leHBvcnRcIjogXCJvZmZcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbW90ZW1lbi9taW5pbWF0Y2gtY2hlYXQtc2hlZXRcbiAgICAgIG5hbWU6IFwiZmVuZ2UvdHlwZXNjcmlwdC90ZXN0XCIsXG4gICAgICBmaWxlczogW1xuICAgICAgICBcIioqL19fdGVzdHNfXy8qKi8qLnt0cyxjdHMsbXRzLHRzeH1cIixcbiAgICAgICAgXCIqKi8qLnt0ZXN0LHNwZWN9Lnt0cyxjdHMsbXRzLHRzeH1cIixcbiAgICAgIF0sXG4gICAgICBydWxlczoge1xuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlc1wiOiBcIm9mZlwiLFxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZFwiOiBcIm9mZlwiLFxuICAgICAgICBcImVzbS9uby1waGFudG9tLWRlcC1pbXBvcnRzXCI6IFtcImVycm9yXCIsIHsgYWxsb3dEZXZEZXBlbmRlbmNpZXM6IHRydWUgfV0sXG4gICAgICB9LFxuICAgIH0sXG4gIF0gYXMgY29uc3Q7XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fenge/eslint-config",
3
- "version": "0.2.1",
3
+ "version": "0.3.0",
4
4
  "description": "A super strict eslint config for linting js/ts/package.json.",
5
5
  "keywords": [
6
6
  "opinionated",
@@ -23,14 +23,13 @@
23
23
  "type": "module",
24
24
  "exports": "./dist/eslint.config.js",
25
25
  "dependencies": {
26
- "@typescript-eslint/eslint-plugin": "7.16.1",
27
- "@typescript-eslint/parser": "7.16.1",
26
+ "@typescript-eslint/eslint-plugin": "8.15.0",
27
+ "@typescript-eslint/parser": "8.15.0",
28
28
  "confusing-browser-globals": "1.0.11",
29
- "eslint-plugin-deprecation": "3.0.0",
30
- "eslint-plugin-es-x": "8.3.1",
29
+ "eslint-plugin-es-x": "8.4.1",
31
30
  "eslint-plugin-fp": "2.3.0",
32
31
  "eslint-plugin-import": "2.31.0",
33
- "eslint-plugin-n": "17.13.2",
32
+ "eslint-plugin-n": "17.14.0",
34
33
  "eslint-plugin-promise": "7.1.0",
35
34
  "eslint-plugin-react": "7.37.2",
36
35
  "eslint-plugin-react-hooks": "5.0.0",
@@ -47,7 +46,7 @@
47
46
  "devDependencies": {
48
47
  "@swc-node/register": "1.10.0",
49
48
  "@types/eslint-config-prettier": "6.11.3",
50
- "@types/node": "22.7.5",
49
+ "@types/node": "22.9.1",
51
50
  "eslint": "8.57.1",
52
51
  "eslint-config-prettier": "9.1.0",
53
52
  "prettier": "3.3.3"
@@ -149,7 +149,7 @@ export function javascript() {
149
149
  // 'no-multiple-empty-lines': ['error', { max: 1, maxBOF: 0, maxEOF: 0 }],
150
150
  'no-new': 'error',
151
151
  'no-new-func': 'error',
152
- 'no-new-object': 'error',
152
+ // 'no-new-object': 'error',
153
153
  'no-new-symbol': 'error',
154
154
  'no-new-wrappers': 'error',
155
155
  'no-obj-calls': 'error',
@@ -328,6 +328,7 @@ export function javascript() {
328
328
  ], // forbid code like `const num = +str`;
329
329
  "no-invalid-this": "error",
330
330
  "no-multi-assign": "error",
331
+ "no-object-constructor": "error",
331
332
  "no-param-reassign": "error",
332
333
  "no-plusplus": "error",
333
334
  "no-setter-return": "error",
@@ -5,56 +5,38 @@ import { typescript } from "./typescript.js";
5
5
  await describe("ts config", async () => {
6
6
  await it("ts main config rules values should be error", () => {
7
7
  Object.entries(typescript()[0].rules).forEach(([key, value]) => {
8
+ // Key is js rule, value is ts rule
8
9
  // https://typescript-eslint.io/rules/?=extension
9
- const extensionRuleKeys = [
10
- "block-spacing",
11
- "brace-style",
12
- "class-methods-use-this",
13
- "comma-dangle",
14
- "comma-spacing",
15
- "consistent-return",
16
- "default-param-last",
17
- "dot-notation",
18
- "func-call-spacing",
19
- "indent",
20
- "init-declarations",
21
- "key-spacing",
22
- "keyword-spacing",
23
- "lines-around-comment",
24
- "lines-between-class-members",
25
- "max-params",
26
- "no-array-constructor",
27
- "no-dupe-class-members",
28
- "no-empty-function",
29
- "no-extra-parens",
30
- "no-extra-semi",
31
- "no-implied-eval",
32
- "no-invalid-this",
33
- "no-loop-func",
34
- // "no-loss-of-precision",
35
- "no-magic-numbers",
36
- "no-redeclare",
37
- "no-restricted-imports",
38
- "no-shadow",
39
- "no-throw-literal",
40
- "no-unused-expressions",
41
- "no-unused-vars",
42
- "no-use-before-define",
43
- "no-useless-constructor",
44
- "object-curly-spacing",
45
- "only-throw-error", // this rule based on 'eslint/no-throw-literal'
46
- "padding-line-between-statements",
47
- "prefer-destructuring",
48
- "prefer-promise-reject-errors",
49
- "quotes",
50
- "require-await",
51
- "return-await", // this rule based on 'eslint/no-return-await' instead of 'eslint/return-await'
52
- "semi",
53
- "space-before-blocks",
54
- "space-before-function-paren",
55
- "space-infix-ops",
56
- ];
57
- if (extensionRuleKeys.includes(key)) {
10
+ const extensionRuleMap = {
11
+ "class-methods-use-this": "@typescript-eslint/class-methods-use-this",
12
+ "consistent-return": "@typescript-eslint/consistent-return",
13
+ "default-param-last": "@typescript-eslint/default-param-last",
14
+ "dot-notation": "@typescript-eslint/dot-notation",
15
+ "init-declarations": "@typescript-eslint/init-declarations",
16
+ "max-params": "@typescript-eslint/max-params",
17
+ "no-array-constructor": "@typescript-eslint/no-array-constructor",
18
+ "no-dupe-class-members": "@typescript-eslint/no-dupe-class-members",
19
+ "no-empty-function": "@typescript-eslint/no-empty-function",
20
+ "no-implied-eval": "@typescript-eslint/no-implied-eval",
21
+ "no-invalid-this": "@typescript-eslint/no-invalid-this",
22
+ "no-loop-func": "@typescript-eslint/no-loop-func",
23
+ // "no-loss-of-precision": "@typescript-eslint/no-loss-of-precision", // This rule has been deprecated
24
+ "no-magic-numbers": "@typescript-eslint/no-magic-numbers",
25
+ "no-redeclare": "@typescript-eslint/no-redeclare",
26
+ "no-restricted-imports": "@typescript-eslint/no-restricted-imports",
27
+ "no-shadow": "@typescript-eslint/no-shadow",
28
+ "no-unused-expressions": "@typescript-eslint/no-unused-expressions",
29
+ "no-unused-vars": "@typescript-eslint/no-unused-vars",
30
+ "no-use-before-define": "@typescript-eslint/no-use-before-define",
31
+ "no-useless-constructor": "@typescript-eslint/no-useless-constructor",
32
+ "no-throw-literal": "@typescript-eslint/only-throw-error",
33
+ "prefer-destructuring": "@typescript-eslint/prefer-destructuring",
34
+ "prefer-promise-reject-errors":
35
+ "@typescript-eslint/prefer-promise-reject-errors",
36
+ "require-await": "@typescript-eslint/require-await",
37
+ "no-return-await": "@typescript-eslint/return-await", // no-return-await has been deprecated
38
+ } as const;
39
+ if (key in extensionRuleMap) {
58
40
  assert.strictEqual(getValueString(value), "off");
59
41
  } else {
60
42
  assert.strictEqual(getValueString(value), "error");
@@ -1,89 +1,75 @@
1
1
  import process from "node:process";
2
2
  import * as fengeTsPlugin from "@fenge/eslint-plugin-ts";
3
3
  import tsParser from "@typescript-eslint/parser";
4
- import deprecationPlugin from "eslint-plugin-deprecation"; // TODO: Remove this plugin and use `@typescript-eslint/no-deprecated` when eslint upgraded to 9.
5
4
  import { javascript } from "./javascript.js";
6
5
 
7
6
  export function typescript(project?: string) {
8
7
  const jsConfig = javascript()[0];
9
8
 
10
9
  const getTsExtensionRules = () => {
10
+ // Key is js rule, value is ts rule
11
11
  // https://typescript-eslint.io/rules/?=extension
12
- const extensionRuleKeys = [
13
- "block-spacing",
14
- "brace-style",
15
- "class-methods-use-this",
16
- "comma-dangle",
17
- "comma-spacing",
18
- "consistent-return",
19
- "default-param-last",
20
- "dot-notation",
21
- "func-call-spacing",
22
- "indent",
23
- "init-declarations",
24
- "key-spacing",
25
- "keyword-spacing",
26
- "lines-around-comment",
27
- "lines-between-class-members",
28
- "max-params",
29
- "no-array-constructor",
30
- "no-dupe-class-members",
31
- "no-empty-function",
32
- "no-extra-parens",
33
- "no-extra-semi",
34
- "no-implied-eval",
35
- "no-invalid-this",
36
- "no-loop-func",
37
- // "no-loss-of-precision",
38
- "no-magic-numbers",
39
- "no-redeclare",
40
- "no-restricted-imports",
41
- "no-shadow",
42
- "no-throw-literal",
43
- "no-unused-expressions",
44
- "no-unused-vars",
45
- "no-use-before-define",
46
- "no-useless-constructor",
47
- "object-curly-spacing",
48
- "only-throw-error", // this rule based on 'eslint/no-throw-literal'
49
- "padding-line-between-statements",
50
- "prefer-destructuring",
51
- "prefer-promise-reject-errors",
52
- "quotes",
53
- "require-await",
54
- "return-await", // this rule based on 'eslint/no-return-await' instead of 'eslint/return-await'
55
- "semi",
56
- "space-before-blocks",
57
- "space-before-function-paren",
58
- "space-infix-ops",
59
- ] as const;
60
- type ExtensionRuleKey = (typeof extensionRuleKeys)[number];
61
- type JsConfigRuleKey = keyof typeof jsConfig.rules;
12
+ const extensionRuleMap = {
13
+ "class-methods-use-this": "@typescript-eslint/class-methods-use-this",
14
+ "consistent-return": "@typescript-eslint/consistent-return",
15
+ "default-param-last": "@typescript-eslint/default-param-last",
16
+ "dot-notation": "@typescript-eslint/dot-notation",
17
+ "init-declarations": "@typescript-eslint/init-declarations",
18
+ "max-params": "@typescript-eslint/max-params",
19
+ "no-array-constructor": "@typescript-eslint/no-array-constructor",
20
+ "no-dupe-class-members": "@typescript-eslint/no-dupe-class-members",
21
+ "no-empty-function": "@typescript-eslint/no-empty-function",
22
+ "no-implied-eval": "@typescript-eslint/no-implied-eval",
23
+ "no-invalid-this": "@typescript-eslint/no-invalid-this",
24
+ "no-loop-func": "@typescript-eslint/no-loop-func",
25
+ // "no-loss-of-precision": "@typescript-eslint/no-loss-of-precision", // This rule has been deprecated
26
+ "no-magic-numbers": "@typescript-eslint/no-magic-numbers",
27
+ "no-redeclare": "@typescript-eslint/no-redeclare",
28
+ "no-restricted-imports": "@typescript-eslint/no-restricted-imports",
29
+ "no-shadow": "@typescript-eslint/no-shadow",
30
+ "no-unused-expressions": "@typescript-eslint/no-unused-expressions",
31
+ "no-unused-vars": "@typescript-eslint/no-unused-vars",
32
+ "no-use-before-define": "@typescript-eslint/no-use-before-define",
33
+ "no-useless-constructor": "@typescript-eslint/no-useless-constructor",
34
+ "no-throw-literal": "@typescript-eslint/only-throw-error",
35
+ "prefer-destructuring": "@typescript-eslint/prefer-destructuring",
36
+ "prefer-promise-reject-errors":
37
+ "@typescript-eslint/prefer-promise-reject-errors",
38
+ "require-await": "@typescript-eslint/require-await",
39
+ "no-return-await": "@typescript-eslint/return-await", // no-return-await has been deprecated
40
+ } as const;
62
41
 
63
- type JsExtensionKey = Extract<ExtensionRuleKey, JsConfigRuleKey>; // Extract
64
- type TsExtensionKey = `@typescript-eslint/${JsExtensionKey}`;
65
-
66
- type GetJsKey<T extends TsExtensionKey> =
67
- T extends `@typescript-eslint/${infer K}` ? K : never;
68
- type JsResult = {
69
- [Key in JsExtensionKey]: "off";
42
+ type Js2TsRuleMap = typeof extensionRuleMap;
43
+ type Ts2JsRuleMap = {
44
+ [K in keyof Js2TsRuleMap as Js2TsRuleMap[K]]: K; // reverse
70
45
  };
46
+
47
+ type JsExtensionKey = Extract<
48
+ keyof Js2TsRuleMap,
49
+ keyof typeof jsConfig.rules
50
+ >; // Extract
51
+ type TsExtensionKey = Js2TsRuleMap[JsExtensionKey];
52
+
53
+ type JsResult = Record<JsExtensionKey, "off">;
71
54
  type TsResult = {
72
- [Key in TsExtensionKey]: (typeof jsConfig.rules)[GetJsKey<Key>];
55
+ [Key in TsExtensionKey]: (typeof jsConfig.rules)[Ts2JsRuleMap[Key]];
73
56
  };
74
57
  type Result = JsResult & TsResult;
75
58
 
76
- const extensionRuleKeySet = new Set<string>(extensionRuleKeys);
77
- return Object.entries(jsConfig.rules)
78
- .filter(([key]) => extensionRuleKeySet.has(key))
79
- .reduce(
80
- (prev, [jsRuleKey, jsRuleValue]) => ({
81
- ...prev,
82
- [jsRuleKey]: "off",
83
- [`@typescript-eslint/${jsRuleKey}`]: jsRuleValue,
84
- }),
85
- {} as Result,
86
- );
59
+ const isInExtensionRuleMap = (
60
+ key: string,
61
+ ): key is keyof typeof extensionRuleMap => key in extensionRuleMap;
62
+ return Object.entries(jsConfig.rules).reduce(
63
+ (result, [jsRuleKey, jsRuleValue]) =>
64
+ isInExtensionRuleMap(jsRuleKey)
65
+ ? {
66
+ ...result,
67
+ [jsRuleKey]: "off",
68
+ [extensionRuleMap[jsRuleKey]]: jsRuleValue,
69
+ }
70
+ : result,
71
+ {} as Result,
72
+ );
87
73
  };
88
74
 
89
75
  return [
@@ -97,20 +83,20 @@ export function typescript(project?: string) {
97
83
  parserOptions: {
98
84
  ...jsConfig.languageOptions.parserOptions,
99
85
  tsconfigRootDir: process.cwd(),
86
+ // Setting `projectService: true` or `project: true` is pretty slow when lint a monorepo with many tsconfig.json files in each sub-app.
87
+ // For a better performance, we are recommended using one tsconfig.json file in a project.
88
+ // Waiting for typescript-eslint to officially provide a better way to use `projectService`.
100
89
  project: project ?? "tsconfig.json",
101
90
  },
102
91
  },
103
92
  plugins: {
104
93
  ...jsConfig.plugins,
105
- deprecation: deprecationPlugin,
106
94
  "@fenge-ts": fengeTsPlugin,
107
95
  },
108
96
  rules: {
109
97
  ...jsConfig.rules,
110
98
  ...getTsExtensionRules(),
111
99
 
112
- // deprecation
113
- "deprecation/deprecation": "error",
114
100
  // fenge
115
101
  "@fenge-ts/exact-map-set-type": "error",
116
102
  "@fenge-ts/no-const-enum": "error",
@@ -122,7 +108,6 @@ export function typescript(project?: string) {
122
108
  "@typescript-eslint/adjacent-overload-signatures": "error",
123
109
  // "@typescript-eslint/array-type": ["error", 'array-simple'], // The default option is 'array'. Not very sure if we need to change the option. So disabled it.
124
110
  "@typescript-eslint/await-thenable": "error",
125
- "@typescript-eslint/ban-types": "error",
126
111
  "@typescript-eslint/consistent-generic-constructors": "error",
127
112
  "@typescript-eslint/consistent-indexed-object-style": "error",
128
113
  "@typescript-eslint/consistent-type-assertions": [
@@ -174,6 +159,7 @@ export function typescript(project?: string) {
174
159
  { ignoredTypeNames: [] },
175
160
  ],
176
161
  "@typescript-eslint/no-confusing-non-null-assertion": "error",
162
+ "@typescript-eslint/no-deprecated": "error",
177
163
  "@typescript-eslint/no-duplicate-enum-values": "error",
178
164
  "@typescript-eslint/no-duplicate-type-constituents": "error",
179
165
  "@typescript-eslint/no-empty-object-type": "error",
@@ -202,14 +188,12 @@ export function typescript(project?: string) {
202
188
  "@typescript-eslint/no-unnecessary-type-assertion": "error",
203
189
  "@typescript-eslint/no-unnecessary-type-constraint": "error",
204
190
  "@typescript-eslint/no-unsafe-declaration-merging": "error",
205
- // '@typescript-eslint/no-unsafe-function-type': "error",
206
- // "@typescript-eslint/no-wrapper-object-types": "error",
207
- "@typescript-eslint/only-throw-error": "error",
191
+ "@typescript-eslint/no-unsafe-function-type": "error",
192
+ "@typescript-eslint/no-wrapper-object-types": "error",
208
193
  "@typescript-eslint/prefer-as-const": "error",
209
194
  "@typescript-eslint/prefer-function-type": "error",
210
195
  "@typescript-eslint/prefer-optional-chain": "error",
211
196
  "@typescript-eslint/prefer-readonly": "error",
212
- "@typescript-eslint/prefer-ts-expect-error": "error",
213
197
  "@typescript-eslint/restrict-plus-operands": [
214
198
  "error",
215
199
  {
@@ -218,9 +202,21 @@ export function typescript(project?: string) {
218
202
  allowNullish: false,
219
203
  allowNumberAndString: false,
220
204
  allowRegExp: false,
205
+ skipCompoundAssignments: false,
206
+ },
207
+ ],
208
+ "@typescript-eslint/restrict-template-expressions": [
209
+ "error",
210
+ {
211
+ allow: [],
212
+ // allowAny: false,
213
+ allowBoolean: false,
214
+ allowNever: false,
215
+ allowNullish: false,
216
+ allowNumber: false,
217
+ allowRegExp: false,
221
218
  },
222
219
  ],
223
- // "@typescript-eslint/restrict-template-expressions": "error",
224
220
  "@typescript-eslint/return-await": ["error", "always"],
225
221
  "@typescript-eslint/switch-exhaustiveness-check": [
226
222
  "error",
@@ -45,16 +45,25 @@ await describe("no duplicated", async () => {
45
45
  .forEach((rule) => {
46
46
  if (
47
47
  [
48
- // "@typescript-eslint/consistent-type-assertions",
49
48
  "@typescript-eslint/no-floating-promises",
50
- // "@typescript-eslint/no-non-null-assertion",
51
49
  "@typescript-eslint/unbound-method",
52
50
  "import/no-default-export",
51
+ // extension rule
52
+ "@typescript-eslint/dot-notation",
53
+ "@typescript-eslint/return-await",
53
54
  ].includes(rule)
54
55
  ) {
55
- assert.strictEqual(count(configContent, rule), 2);
56
+ assert.strictEqual(
57
+ count(configContent, rule),
58
+ 2,
59
+ `The rule name is ${rule}`,
60
+ );
56
61
  } else {
57
- assert.strictEqual(count(configContent, rule) <= 1, true);
62
+ assert.strictEqual(
63
+ count(configContent, rule) <= 1,
64
+ true,
65
+ `Duplicated rule name is ${rule}`,
66
+ );
58
67
  }
59
68
  });
60
69
  });