@senior-gestao-empresarial/erpx-components 4.0.1 → 4.0.2-develop-21d58680

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.
Files changed (75) hide show
  1. package/bundles/senior-gestao-empresarial-erpx-components.umd.js +792 -660
  2. package/bundles/senior-gestao-empresarial-erpx-components.umd.js.map +1 -1
  3. package/bundles/senior-gestao-empresarial-erpx-components.umd.min.js +2 -2
  4. package/bundles/senior-gestao-empresarial-erpx-components.umd.min.js.map +1 -1
  5. package/components/tributos/erp-tributos.component.d.ts +12 -8
  6. package/components/tributos/erp-tributos.types.d.ts +5 -1
  7. package/components/tributos/index.d.ts +1 -0
  8. package/components/tributos/rules/calculation/registries/calculation-rules-registries/outgoing-invoice-calculation-rules.registry.d.ts +3 -1
  9. package/components/tributos/rules/calculation/rules/assessment-period-calculation-rule.d.ts +5 -0
  10. package/components/tributos/rules/status/registries/purchase-order-status-rules.registry.d.ts +8 -0
  11. package/components/tributos/rules/status/registries/sale-order-status-rules.registry.d.ts +8 -0
  12. package/components/tributos/rules/status/registries/status-rules.registry.d.ts +5 -1
  13. package/components/tributos/rules/types/schemas/outgoing-invoice.schema.d.ts +2 -0
  14. package/components/tributos/rules/validation/registries/outgoing-invoice-validation-rules.registry.d.ts +3 -1
  15. package/components/tributos/rules/validation/rules/required/assessment-period-required-validation-rule.d.ts +5 -0
  16. package/components/tributos/tax-reform-utilities.d.ts +1 -1
  17. package/components/tributos/types/debit-invoice-type.d.ts +1 -1
  18. package/components/tributos/types/tax.d.ts +8 -0
  19. package/esm2015/components/tributos/erp-tributos.component.js +134 -40
  20. package/esm2015/components/tributos/erp-tributos.types.js +5 -1
  21. package/esm2015/components/tributos/index.js +1 -1
  22. package/esm2015/components/tributos/mappings/enum-tip-imp-cst-mapping.js +3 -1
  23. package/esm2015/components/tributos/rules/calculation/registries/calculation-rules-registries/outgoing-invoice-calculation-rules.registry.js +44 -4
  24. package/esm2015/components/tributos/rules/calculation/rules/assessment-period-calculation-rule.js +55 -0
  25. package/esm2015/components/tributos/rules/calculation/rules/tax-amount-calculation-rule.js +17 -1
  26. package/esm2015/components/tributos/rules/calculation/rules/tax-classification-calculation-rule.js +35 -1
  27. package/esm2015/components/tributos/rules/calculation/rules/tax-situation-calculation-rule.js +37 -1
  28. package/esm2015/components/tributos/rules/status/registries/outgoing-invoice-status-rules.registry.js +13 -1
  29. package/esm2015/components/tributos/rules/status/registries/purchase-order-status-rules.registry.js +18 -0
  30. package/esm2015/components/tributos/rules/status/registries/sale-order-status-rules.registry.js +18 -0
  31. package/esm2015/components/tributos/rules/status/registries/status-rules.registry.js +16 -4
  32. package/esm2015/components/tributos/rules/status/rules/tax-classification-status-rule.js +3 -1
  33. package/esm2015/components/tributos/rules/types/schemas/outgoing-invoice.schema.js +13 -1
  34. package/esm2015/components/tributos/rules/validation/registries/outgoing-invoice-validation-rules.registry.js +44 -4
  35. package/esm2015/components/tributos/rules/validation/registries/sale-order-validation-rules.registry.js +8 -560
  36. package/esm2015/components/tributos/rules/validation/rules/required/assessment-period-required-validation-rule.js +78 -0
  37. package/esm2015/components/tributos/rules/validation/rules/required/tax-amount-required-validation-rule.js +51 -2
  38. package/esm2015/components/tributos/rules/validation/rules/required/tax-classification-required-validation-rule.js +48 -2
  39. package/esm2015/components/tributos/rules/validation/rules/required/tax-situation-required-validation-rule.js +48 -2
  40. package/esm2015/components/tributos/tax-reform-utilities.js +6 -2
  41. package/esm2015/components/tributos/types/debit-invoice-type.js +1 -1
  42. package/esm2015/components/tributos/types/tax.js +2 -0
  43. package/esm2015/senior-gestao-empresarial-erpx-components.js +37 -33
  44. package/esm5/components/tributos/erp-tributos.component.js +149 -47
  45. package/esm5/components/tributos/erp-tributos.types.js +5 -1
  46. package/esm5/components/tributos/index.js +1 -1
  47. package/esm5/components/tributos/mappings/enum-tip-imp-cst-mapping.js +3 -1
  48. package/esm5/components/tributos/rules/calculation/registries/calculation-rules-registries/outgoing-invoice-calculation-rules.registry.js +44 -4
  49. package/esm5/components/tributos/rules/calculation/rules/assessment-period-calculation-rule.js +77 -0
  50. package/esm5/components/tributos/rules/calculation/rules/tax-amount-calculation-rule.js +24 -1
  51. package/esm5/components/tributos/rules/calculation/rules/tax-classification-calculation-rule.js +59 -1
  52. package/esm5/components/tributos/rules/calculation/rules/tax-situation-calculation-rule.js +61 -1
  53. package/esm5/components/tributos/rules/status/registries/outgoing-invoice-status-rules.registry.js +13 -1
  54. package/esm5/components/tributos/rules/status/registries/purchase-order-status-rules.registry.js +19 -0
  55. package/esm5/components/tributos/rules/status/registries/sale-order-status-rules.registry.js +19 -0
  56. package/esm5/components/tributos/rules/status/registries/status-rules.registry.js +16 -4
  57. package/esm5/components/tributos/rules/status/rules/tax-classification-status-rule.js +3 -1
  58. package/esm5/components/tributos/rules/types/schemas/outgoing-invoice.schema.js +13 -1
  59. package/esm5/components/tributos/rules/validation/registries/outgoing-invoice-validation-rules.registry.js +44 -4
  60. package/esm5/components/tributos/rules/validation/registries/sale-order-validation-rules.registry.js +10 -562
  61. package/esm5/components/tributos/rules/validation/rules/required/assessment-period-required-validation-rule.js +86 -0
  62. package/esm5/components/tributos/rules/validation/rules/required/tax-amount-required-validation-rule.js +55 -2
  63. package/esm5/components/tributos/rules/validation/rules/required/tax-classification-required-validation-rule.js +52 -2
  64. package/esm5/components/tributos/rules/validation/rules/required/tax-situation-required-validation-rule.js +52 -2
  65. package/esm5/components/tributos/tax-reform-utilities.js +6 -2
  66. package/esm5/components/tributos/types/debit-invoice-type.js +1 -1
  67. package/esm5/components/tributos/types/tax.js +2 -0
  68. package/esm5/senior-gestao-empresarial-erpx-components.js +37 -33
  69. package/fesm2015/senior-gestao-empresarial-erpx-components.js +654 -633
  70. package/fesm2015/senior-gestao-empresarial-erpx-components.js.map +1 -1
  71. package/fesm5/senior-gestao-empresarial-erpx-components.js +754 -626
  72. package/fesm5/senior-gestao-empresarial-erpx-components.js.map +1 -1
  73. package/package.json +1 -1
  74. package/senior-gestao-empresarial-erpx-components.d.ts +36 -32
  75. package/senior-gestao-empresarial-erpx-components.metadata.json +1 -1
@@ -3,7 +3,7 @@ import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy
3
3
  import { AbstractControl, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
4
4
  import { TranslateService } from '@ngx-translate/core';
5
5
  import { BeneficioFiscalLookup, ClassificacaoTributariaLookup, CplTriNotaSaidaNaturezaReceitaPisCofinsLookup, E027EqiLookup, E027StrLookup, EnumLogicalOperator, LookupValidationUtils } from '@senior-gestao-empresarial/angular-components';
6
- import { BadgeColors, ButtonAnimation, ButtonPriority, ButtonSize, FieldType, FormField, isNullOrUndefined } from '@seniorsistemas/angular-components';
6
+ import { BadgeColors, ButtonAnimation, ButtonPriority, ButtonSize, CalendarLocaleOptions, FieldType, FormField, isNullOrUndefined, LocaleService, LookupField } from '@seniorsistemas/angular-components';
7
7
  import { GTagService } from '@seniorsistemas/platform-utils';
8
8
  import BigNumber from 'bignumber.js';
9
9
  import { MenuItem, MessageService } from 'primeng/api';
@@ -17,7 +17,7 @@ import { mapEnumTipoTributoToEnumTipImpCst } from './mappings/enum-tip-imp-cst-m
17
17
  import { RulesService } from './rules/rules.service';
18
18
  import { isTaxFromTaxReform } from './tax-reform-utilities';
19
19
  var ErpTributosComponent = /** @class */ (function () {
20
- function ErpTributosComponent(messageService, formBuilder, changeDetector, translate, e027StrLookup, beneficioFiscalLookup, e027eqiLookup, naturezaReceitaLookup, classificacaoTributariaLookup, lookupUtils, erpTributosService, gtag, rulesService) {
20
+ function ErpTributosComponent(messageService, formBuilder, changeDetector, translate, e027StrLookup, beneficioFiscalLookup, e027eqiLookup, naturezaReceitaLookup, classificacaoTributariaLookup, lookupUtils, erpTributosService, gtag, rulesService, localeService) {
21
21
  this.messageService = messageService;
22
22
  this.formBuilder = formBuilder;
23
23
  this.changeDetector = changeDetector;
@@ -31,6 +31,7 @@ var ErpTributosComponent = /** @class */ (function () {
31
31
  this.erpTributosService = erpTributosService;
32
32
  this.gtag = gtag;
33
33
  this.rulesService = rulesService;
34
+ this.localeService = localeService;
34
35
  this.camposBloqueados = false;
35
36
  this.currencyLocaleOptions = {
36
37
  currencySymbol: '',
@@ -62,6 +63,7 @@ var ErpTributosComponent = /** @class */ (function () {
62
63
  this.menuItemIBSCreditoPresumido = false;
63
64
  this.menuItemIS = false;
64
65
  this.menuItemCBS_IBS_ESTORNO_CREDITO = false;
66
+ this.menuItemCBS_IBS_Ajuste = false;
65
67
  this.menuItemIcmsCreditoPresumido = false;
66
68
  this.requiredItemCideTecnologia = false;
67
69
  this.requiredItemPisRecuperar = false;
@@ -95,7 +97,7 @@ var ErpTributosComponent = /** @class */ (function () {
95
97
  this.requiredItemIcmsDesonerado = false;
96
98
  this.requiredItemDiferencialAlicota = false;
97
99
  this.requiredItemPisFaturemento = false;
98
- this.requiredItemCofinsFaturemento = false;
100
+ this.requiredItemCofins = false;
99
101
  this.requiredItemFcpUfDestino = false;
100
102
  this.requiredItemIcmsUfDestino = false;
101
103
  this.requiredSituacaoTributaria = false;
@@ -112,7 +114,7 @@ var ErpTributosComponent = /** @class */ (function () {
112
114
  this.requiredIcmsStSolidario = false;
113
115
  this.requiredIcmsStRetidoAnt = false;
114
116
  this.requiredFcpStReditoAnt = false;
115
- this.ngUnsubscribe = new Subject();
117
+ this.unsubscribe$ = new Subject();
116
118
  }
117
119
  Object.defineProperty(ErpTributosComponent.prototype, "tributos", {
118
120
  get: function () {
@@ -125,14 +127,6 @@ var ErpTributosComponent = /** @class */ (function () {
125
127
  configurable: true
126
128
  });
127
129
  ErpTributosComponent.prototype.ngOnInit = function () {
128
- this.menuItemPis = false;
129
- this.menuItemCofins = false;
130
- this.menuItemIpi = false;
131
- this.menuItemIss = false;
132
- this.menuItemImportacoes = false;
133
- this.menuItemRetencoes = false;
134
- this.menuItemIcms = false;
135
- this.menuItemCideTecnologia = false;
136
130
  this.dominio = this.dominio ? this.dominio : 'erpx_cpl_imp';
137
131
  this.servico = this.servico ? this.servico : 'cadastros';
138
132
  this.prefixLabel = this.dominio + "." + this.servico;
@@ -172,8 +166,8 @@ var ErpTributosComponent = /** @class */ (function () {
172
166
  }
173
167
  };
174
168
  ErpTributosComponent.prototype.ngOnDestroy = function () {
175
- this.ngUnsubscribe.next();
176
- this.ngUnsubscribe.complete();
169
+ this.unsubscribe$.next();
170
+ this.unsubscribe$.complete();
177
171
  this.lookupUtils.resetStoredKeys();
178
172
  };
179
173
  ErpTributosComponent.prototype.memoriaCalculo = function (imposto) {
@@ -383,7 +377,7 @@ var ErpTributosComponent = /** @class */ (function () {
383
377
  this.requiredItemIcmsDesonerado = false;
384
378
  this.requiredItemDiferencialAlicota = false;
385
379
  this.requiredItemPisFaturemento = false;
386
- this.requiredItemCofinsFaturemento = false;
380
+ this.requiredItemCofins = false;
387
381
  this.requiredItemIcmsUfDestino = false;
388
382
  this.requiredItemFcpUfDestino = false;
389
383
  this.requiredSituacaoTributaria = false;
@@ -425,6 +419,10 @@ var ErpTributosComponent = /** @class */ (function () {
425
419
  case EnumTipoTributo.IBS_ESTORNO_CREDITO:
426
420
  _this.montaCBSIBSEstornoCredito();
427
421
  break;
422
+ case EnumTipoTributo.CBS_AJUSTE:
423
+ case EnumTipoTributo.IBS_AJUSTE:
424
+ _this.montaCBS_IBS_Ajuste();
425
+ break;
428
426
  case EnumTipoTributo.PIS_RECUPERAR:
429
427
  case EnumTipoTributo.PIS_DEVOLVIDO:
430
428
  case EnumTipoTributo.PIS:
@@ -530,10 +528,10 @@ var ErpTributosComponent = /** @class */ (function () {
530
528
  return grupo.item.map(function (item) {
531
529
  _this.tributosValue.map(function (it) {
532
530
  if (item.name === it.tipoImposto) {
531
+ item.formGroup.patchValue(it, { emitEvent: false });
533
532
  if (!isTaxFromTaxReform(it.tipoImposto)) {
534
533
  _this.setValidators(it.tipoImposto);
535
534
  }
536
- item.formGroup.patchValue(it, { emitEvent: false });
537
535
  }
538
536
  });
539
537
  });
@@ -581,24 +579,20 @@ var ErpTributosComponent = /** @class */ (function () {
581
579
  grupo.item
582
580
  .filter(function (it) { return it.name == tributo; })
583
581
  .map(function (it) {
584
- var hasValue = false;
585
- Object.keys(it.formGroup.value).forEach(function (item) {
586
- if (item !== 'impostoManual' &&
587
- item !== EnumCampoTributo.TipoCalculoImposto) {
588
- if (it.formGroup.get(item).touched &&
589
- it.formGroup.value[item] != undefined &&
590
- it.formGroup.value[item] !== '') {
591
- hasValue = true;
592
- return;
593
- }
594
- }
582
+ var hasValue = Object.keys(it.formGroup.value)
583
+ .filter(function (key) {
584
+ return key !== 'impostoManual' &&
585
+ key !== EnumCampoTributo.TipoCalculoImposto;
586
+ })
587
+ .some(function (key) {
588
+ return it.formGroup.get(key).value !== null &&
589
+ it.formGroup.get(key).value !== undefined;
595
590
  });
596
591
  if (hasValue)
597
592
  Object.keys(it.formGroup.value).forEach(function (item) {
598
593
  if (item == 'percentualReducao' ||
599
594
  item == 'percentualDiferimento' ||
600
- item ==
601
- 'percentualMargemValorAdicionado' ||
595
+ item == 'percentualMargemValorAdicionado' ||
602
596
  item === 'percentualSuspensaoParcial') {
603
597
  it.formGroup.controls[item].setValidators(Validators.compose([
604
598
  Validators.required,
@@ -619,6 +613,15 @@ var ErpTributosComponent = /** @class */ (function () {
619
613
  });
620
614
  _this.setRequired(tributo, true);
621
615
  }
616
+ else if (item === 'situacaoTributaria') {
617
+ it.formGroup.controls[item].setValidators(Validators.compose([
618
+ Validators.required
619
+ ]));
620
+ it.formGroup.controls[item].updateValueAndValidity({
621
+ emitEvent: false
622
+ });
623
+ _this.setRequired(tributo, true);
624
+ }
622
625
  else if (item === 'observacao') {
623
626
  it.formGroup.controls[item].setValidators(Validators.compose([
624
627
  Validators.maxLength(120)
@@ -696,8 +699,7 @@ var ErpTributosComponent = /** @class */ (function () {
696
699
  Object.keys(it.formGroup.value).forEach(function (item) {
697
700
  if (item == 'percentualReducao' ||
698
701
  item == 'percentualDiferimento' ||
699
- item ==
700
- 'percentualMargemValorAdicionado' ||
702
+ item == 'percentualMargemValorAdicionado' ||
701
703
  item === 'percentualSuspensaoParcial') {
702
704
  it.formGroup.controls[item].setValidators(Validators.compose([
703
705
  Validators.max(1000)
@@ -1007,6 +1009,32 @@ var ErpTributosComponent = /** @class */ (function () {
1007
1009
  visible: this.context.document === 'Outgoing Invoice' &&
1008
1010
  this.context.invoice.type === 'Debit' &&
1009
1011
  this.context.invoice.debitInvoiceType === 'Inventory Loss'
1012
+ }, {
1013
+ label: this.translate.instant('erpx.tributos.actions_cbs_ibs_ajuste_label'),
1014
+ disabled: this.menuItemCBS_IBS_Ajuste,
1015
+ command: function () {
1016
+ (_this.montaCBS_IBS_Ajuste().forEach(function (value) {
1017
+ _this.novoImpostoManual(value);
1018
+ }),
1019
+ (_this.indexAccordion = [0]));
1020
+ _this.rulesService.apply({
1021
+ groups: _this.grupos,
1022
+ group: _this.grupos.find(function (group) {
1023
+ return group.grupoTributo ===
1024
+ EnumGrupoTributo.CBS_IBS_AJUSTE;
1025
+ }),
1026
+ context: _this.context
1027
+ });
1028
+ _this.changeDetector.detectChanges();
1029
+ },
1030
+ visible: this.context.document === 'Outgoing Invoice' &&
1031
+ this.context.invoice.type === 'Debit' &&
1032
+ (this.context.invoice.debitInvoiceType ===
1033
+ 'Credit Cancellation Exempt Outputs' ||
1034
+ this.context.invoice.debitInvoiceType ===
1035
+ 'Debits Unprocessed Invoices Assessment' ||
1036
+ this.context.invoice.debitInvoiceType ===
1037
+ 'Disqualification from Simples Nacional')
1010
1038
  }, {
1011
1039
  id: 'retencaoFunrural',
1012
1040
  label: this.translate.instant('erpx.tributos.actions_retencao_funrural_label'),
@@ -2511,6 +2539,47 @@ var ErpTributosComponent = /** @class */ (function () {
2511
2539
  });
2512
2540
  return item;
2513
2541
  };
2542
+ ErpTributosComponent.prototype.montaCBS_IBS_Ajuste = function () {
2543
+ if (this.menuItemCBS_IBS_Ajuste)
2544
+ return;
2545
+ this.menuItemCBS_IBS_Ajuste = true;
2546
+ var item = [
2547
+ __assign({ name: EnumTipoTributo.CBS_AJUSTE, label: 'erpx.tributos.enum_tipo_tributo_cbs_ajuste' }, this.montaCampos([
2548
+ {
2549
+ campo: EnumCampoTributo.SituacaoTributaria
2550
+ },
2551
+ {
2552
+ campo: EnumCampoTributo.ClassificacaoTributaria
2553
+ },
2554
+ {
2555
+ campo: EnumCampoTributo.PeriodoApuracao
2556
+ },
2557
+ {
2558
+ campo: EnumCampoTributo.Valor
2559
+ }
2560
+ ], EnumTipoTributo.CBS_AJUSTE)),
2561
+ __assign({ name: EnumTipoTributo.IBS_AJUSTE, label: 'erpx.tributos.enum_tipo_tributo_ibs_ajuste' }, this.montaCampos([
2562
+ {
2563
+ campo: EnumCampoTributo.SituacaoTributaria
2564
+ },
2565
+ {
2566
+ campo: EnumCampoTributo.ClassificacaoTributaria
2567
+ },
2568
+ {
2569
+ campo: EnumCampoTributo.PeriodoApuracao
2570
+ },
2571
+ {
2572
+ campo: EnumCampoTributo.Valor
2573
+ }
2574
+ ], EnumTipoTributo.IBS_AJUSTE))
2575
+ ];
2576
+ this.grupos.unshift({
2577
+ grupo: "" + ('erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.CBS_IBS_AJUSTE + '_label'),
2578
+ grupoTributo: EnumGrupoTributo.CBS_IBS_AJUSTE,
2579
+ item: item
2580
+ });
2581
+ return item;
2582
+ };
2514
2583
  ErpTributosComponent.prototype.montaPis = function () {
2515
2584
  if (this.menuItemPis == false) {
2516
2585
  this.menuItemPis = true;
@@ -2948,7 +3017,7 @@ var ErpTributosComponent = /** @class */ (function () {
2948
3017
  case EnumTipoTributo.PIS:
2949
3018
  return this.requiredItemPisFaturemento;
2950
3019
  case EnumTipoTributo.COFINS:
2951
- return this.requiredItemCofinsFaturemento;
3020
+ return this.requiredItemCofins;
2952
3021
  case EnumTipoTributo.ICMS_UF_DESTINO:
2953
3022
  return this.requiredItemIcmsUfDestino;
2954
3023
  case EnumTipoTributo.FCP_UF_DESTINO:
@@ -3116,7 +3185,7 @@ var ErpTributosComponent = /** @class */ (function () {
3116
3185
  break;
3117
3186
  }
3118
3187
  case EnumTipoTributo.COFINS: {
3119
- this.requiredItemCofinsFaturemento = value;
3188
+ this.requiredItemCofins = value;
3120
3189
  break;
3121
3190
  }
3122
3191
  case EnumTipoTributo.FCP_UF_DESTINO: {
@@ -3348,13 +3417,13 @@ var ErpTributosComponent = /** @class */ (function () {
3348
3417
  var formField = [];
3349
3418
  var formGroup = {};
3350
3419
  campos.map(function (it) {
3351
- var _a, _b;
3352
- var _c, _d;
3420
+ var _a, _b, _c;
3421
+ var _d, _e;
3353
3422
  if (it.campo == EnumCampoTributo.BaseCalculo) {
3354
3423
  formGroup = __assign(__assign({}, formGroup), { baseCalculo: [
3355
3424
  {
3356
3425
  value: null,
3357
- disabled: (_c = it.disabled) !== null && _c !== void 0 ? _c : false
3426
+ disabled: (_d = it.disabled) !== null && _d !== void 0 ? _d : false
3358
3427
  },
3359
3428
  Validators.compose([Validators.max(9999999999999.99)])
3360
3429
  ] });
@@ -3388,7 +3457,7 @@ var ErpTributosComponent = /** @class */ (function () {
3388
3457
  formGroup = __assign(__assign({}, formGroup), { aliquota: [
3389
3458
  {
3390
3459
  value: null,
3391
- disabled: (_d = it.disabled) !== null && _d !== void 0 ? _d : false
3460
+ disabled: (_e = it.disabled) !== null && _e !== void 0 ? _e : false
3392
3461
  },
3393
3462
  Validators.compose([Validators.max(999.9999)])
3394
3463
  ] });
@@ -3418,6 +3487,28 @@ var ErpTributosComponent = /** @class */ (function () {
3418
3487
  }
3419
3488
  }));
3420
3489
  }
3490
+ else if (it.campo === EnumCampoTributo.PeriodoApuracao) {
3491
+ formGroup = __assign(__assign({}, formGroup), (_a = {}, _a[EnumCampoTributo.PeriodoApuracao] = [
3492
+ {
3493
+ value: null,
3494
+ disabled: false
3495
+ },
3496
+ Validators.compose([])
3497
+ ], _a));
3498
+ formField.push(new FormField({
3499
+ type: FieldType.Date,
3500
+ name: EnumCampoTributo.PeriodoApuracao,
3501
+ label: _this.translate.instant('erpx.tributos.fields_periodo_apuracao_label'),
3502
+ view: 'month',
3503
+ appendTo: 'body',
3504
+ calendarLocaleOptions: new CalendarLocaleOptions(__assign(__assign({}, _this.localeService.getLocaleOptions().calendar), { dateFormat: 'mm/yy' })),
3505
+ onBlur: function () { return _this.updateTwoWayDataBinding(); },
3506
+ required: function () {
3507
+ return _this.isFieldRequired(EnumCampoTributo.PeriodoApuracao, tributo);
3508
+ },
3509
+ size: { sm: 12, md: 4, lg: 4, xl: 3 }
3510
+ }));
3511
+ }
3421
3512
  else if (it.campo === EnumCampoTributo.ReducaoAliquotaGovernamental) {
3422
3513
  formGroup = __assign(__assign({}, formGroup), { reducaoAliquotaGovernamental: [
3423
3514
  {
@@ -3753,7 +3844,9 @@ var ErpTributosComponent = /** @class */ (function () {
3753
3844
  tributo === EnumTipoTributo.IBS_ESTADUAL ||
3754
3845
  tributo === EnumTipoTributo.IBS_MUNICIPAL ||
3755
3846
  tributo === EnumTipoTributo.CBS_ESTORNO_CREDITO ||
3756
- tributo === EnumTipoTributo.IBS_ESTORNO_CREDITO)
3847
+ tributo === EnumTipoTributo.IBS_ESTORNO_CREDITO ||
3848
+ tributo === EnumTipoTributo.CBS_AJUSTE ||
3849
+ tributo === EnumTipoTributo.IBS_AJUSTE)
3757
3850
  defaultFilter = __spread(defaultFilter, [
3758
3851
  {
3759
3852
  field: 'classificacaoTributaria.indGEstornoCred',
@@ -3763,6 +3856,14 @@ var ErpTributosComponent = /** @class */ (function () {
3763
3856
  ? EnumLogicalOperator.Eq
3764
3857
  : EnumLogicalOperator.Ne,
3765
3858
  values: ['EXIGE']
3859
+ },
3860
+ {
3861
+ field: 'classificacaoTributaria.indGAjusteCompet',
3862
+ operator: tributo === EnumTipoTributo.CBS_AJUSTE ||
3863
+ tributo === EnumTipoTributo.IBS_AJUSTE
3864
+ ? EnumLogicalOperator.Eq
3865
+ : EnumLogicalOperator.Ne,
3866
+ values: ['EXIGE']
3766
3867
  }
3767
3868
  ]);
3768
3869
  formField.push(new FormField(__assign(__assign({}, _this.e027StrLookup.mountOptions({
@@ -4197,7 +4298,7 @@ var ErpTributosComponent = /** @class */ (function () {
4197
4298
  showClear: true,
4198
4299
  multiple: false,
4199
4300
  label: _this.translate.instant('erpx.tributos.fields_modalidade_bc_label'),
4200
- size: { sm: 12, md: 6, lg: 6, xl: 3 },
4301
+ size: { sm: 12, md: 4, lg: 4, xl: 3 },
4201
4302
  onChange: function (event) {
4202
4303
  if (!event)
4203
4304
  return;
@@ -4225,7 +4326,7 @@ var ErpTributosComponent = /** @class */ (function () {
4225
4326
  })), { onBlur: function () {
4226
4327
  _this.updateTwoWayDataBinding();
4227
4328
  _this.setValidators(tributo);
4228
- }, id: tributo + 'NaturezaReceita', label: _this.translate.instant('erpx.tributos.fields_natureza_receita_label'), size: { sm: 12, md: 6, lg: 6, xl: 3 }, required: function () { return false; } })));
4329
+ }, id: tributo + 'NaturezaReceita', label: _this.translate.instant('erpx.tributos.fields_natureza_receita_label'), size: { sm: 12, md: 4, lg: 4, xl: 3 }, required: function () { return false; } })));
4229
4330
  }
4230
4331
  else if (it.campo === EnumCampoTributo.Observacao) {
4231
4332
  formGroup = __assign(__assign({}, formGroup), { observacao: [
@@ -4499,7 +4600,7 @@ var ErpTributosComponent = /** @class */ (function () {
4499
4600
  showClear: true,
4500
4601
  multiple: false,
4501
4602
  label: _this.translate.instant('erpx.tributos.fields_regime_tributario_pis_cofins_label'),
4502
- size: { sm: 12, md: 6, lg: 6, xl: 3 },
4603
+ size: { sm: 12, md: 4, lg: 4, xl: 3 },
4503
4604
  onChange: function (event) {
4504
4605
  if (!event)
4505
4606
  return;
@@ -4634,13 +4735,13 @@ var ErpTributosComponent = /** @class */ (function () {
4634
4735
  }, id: tributo + 'ClassificacaoTributaria', name: 'classificacaoTributaria', formGroup: 'classificacaoTributaria', infoSign: _this.translate.instant('erpx_cpl_imp.impostos.classificacao_tributaria_desoneracao_info_sign'), label: _this.translate.instant('erpx_cpl_imp.impostos.classificacao_tributaria_desoneracao'), required: function () { return false; }, multiple: false, size: { sm: 12, md: 4, lg: 4, xl: 3 } })));
4635
4736
  }
4636
4737
  else if (it.campo === EnumCampoTributo.AplicarValorLiquidoDocumento) {
4637
- formGroup = __assign(__assign({}, formGroup), (_a = {}, _a[EnumCampoTributo.AplicarValorLiquidoDocumento] = [
4738
+ formGroup = __assign(__assign({}, formGroup), (_b = {}, _b[EnumCampoTributo.AplicarValorLiquidoDocumento] = [
4638
4739
  {
4639
4740
  value: EnumAplicarValorLiquidoDocumento.NENHUM,
4640
4741
  disabled: true
4641
4742
  },
4642
4743
  Validators.compose([])
4643
- ], _a));
4744
+ ], _b));
4644
4745
  formField.push(new FormField({
4645
4746
  name: EnumCampoTributo.AplicarValorLiquidoDocumento,
4646
4747
  label: _this.translate.instant('erpx.tributos.aplicar_valor_liquido_documento'),
@@ -4669,13 +4770,13 @@ var ErpTributosComponent = /** @class */ (function () {
4669
4770
  }));
4670
4771
  }
4671
4772
  else if (it.campo === EnumCampoTributo.EscriturarAliquotaISS) {
4672
- formGroup = __assign(__assign({}, formGroup), (_b = {}, _b[EnumCampoTributo.EscriturarAliquotaISS] = [
4773
+ formGroup = __assign(__assign({}, formGroup), (_c = {}, _c[EnumCampoTributo.EscriturarAliquotaISS] = [
4673
4774
  {
4674
4775
  value: EnumEscriturarAliquotaISS.SIM,
4675
4776
  disabled: false
4676
4777
  },
4677
4778
  Validators.compose([])
4678
- ], _b));
4779
+ ], _c));
4679
4780
  formField.push(new FormField({
4680
4781
  name: EnumCampoTributo.EscriturarAliquotaISS,
4681
4782
  label: _this.translate.instant('erpx.tributos.escriturar_aliquota_iss'),
@@ -4924,7 +5025,8 @@ var ErpTributosComponent = /** @class */ (function () {
4924
5025
  { type: LookupValidationUtils },
4925
5026
  { type: ErpTributosService },
4926
5027
  { type: GTagService },
4927
- { type: RulesService }
5028
+ { type: RulesService },
5029
+ { type: LocaleService }
4928
5030
  ]; };
4929
5031
  __decorate([
4930
5032
  Input()
@@ -4966,4 +5068,4 @@ var ErpTributosComponent = /** @class */ (function () {
4966
5068
  return ErpTributosComponent;
4967
5069
  }());
4968
5070
  export { ErpTributosComponent };
4969
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLWVtcHJlc2FyaWFsL2VycHgtY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdHJpYnV0b3MvZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sYUFBYSxFQUNoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsZUFBZSxFQUNmLFdBQVcsRUFDWCxXQUFXLEVBQ1gsU0FBUyxFQUNULFVBQVUsRUFDYixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFDSCxxQkFBcUIsRUFDckIsNkJBQTZCLEVBQzdCLDZDQUE2QyxFQUM3QyxhQUFhLEVBQ2IsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDeEIsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RCxPQUFPLEVBQ0gsV0FBVyxFQUNYLGVBQWUsRUFDZixjQUFjLEVBQ2QsVUFBVSxFQUNWLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBRXBCLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQztBQUNyQyxPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFD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T0M7U0FuNE9ZLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElkZW50aWZpZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdENvbnRyb2wsXG4gICAgRm9ybUJ1aWxkZXIsXG4gICAgRm9ybUNvbnRyb2wsXG4gICAgRm9ybUdyb3VwLFxuICAgIFZhbGlkYXRvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBCZW5lZmljaW9GaXNjYWxMb29rdXAsXG4gICAgQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFMb29rdXAsXG4gICAgQ3BsVHJpTm90YVNhaWRhTmF0dXJlemFSZWNlaXRhUGlzQ29maW5zTG9va3VwLFxuICAgIEUwMjdFcWlMb29rdXAsXG4gICAgRTAyN1N0ckxvb2t1cCxcbiAgICBFbnVtTG9naWNhbE9wZXJhdG9yLFxuICAgIExvb2t1cFZhbGlkYXRpb25VdGlsc1xufSBmcm9tICdAc2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9hbmd1bGFyLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgICBCYWRnZUNvbG9ycyxcbiAgICBCdXR0b25BbmltYXRpb24sXG4gICAgQnV0dG9uUHJpb3JpdHksXG4gICAgQnV0dG9uU2l6ZSxcbiAgICBGaWVsZFR5cGUsXG4gICAgRm9ybUZpZWxkLFxuICAgIGlzTnVsbE9yVW5kZWZpbmVkLFxuICAgIExvb2t1cEZpZWxkXG59IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgR1RhZ1NlcnZpY2UgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvcGxhdGZvcm0tdXRpbHMnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgTWVudUl0ZW0sIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBzY2FuLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFbnVtU2l0dWFjYW9DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYSB9IGZyb20gJy4uLy4uL2NvcmUvZW51bXMvZW51bS1jbGFzc2lmaWNhY2FvLXRyaWJ1dGFyaWEnO1xuaW1wb3J0IHsgRW51bVRpcG9DYWxjdWxvSW1wb3N0byB9IGZyb20gJy4uLy4uL2NvcmUvZW51bXMvZW51bS10aXBvLWNhbGN1bG8taW1wb3N0byc7XG5pbXBvcnQgeyBFcnBUcmlidXRvc1NlcnZpY2UgfSBmcm9tICcuL2VycC10cmlidXRvcy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgQ2FtcG9UcmlidXRvLFxuICAgIEVudW1BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLFxuICAgIEVudW1DYW1wb1RyaWJ1dG8sXG4gICAgRW51bUVzY3JpdHVyYXJBbGlxdW90YUlTUyxcbiAgICBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLFxuICAgIEVudW1HcnVwb1RyaWJ1dG8sXG4gICAgRW51bU1vZEJjLFxuICAgIEVudW1Nb3REZXMsXG4gICAgRW51bU9yaU1lcixcbiAgICBFbnVtUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucyxcbiAgICBFbnVtU2l0dWFjYW8sXG4gICAgZW51bVRpcENyZWRSZWN1cCxcbiAgICBFbnVtVGlwSW1wQ3N0LFxuICAgIEVudW1UaXBPcGUsXG4gICAgRW51bVRpcG9UcmlidXRvLFxuICAgIEl0ZW0sXG4gICAgU3VnZXN0YW8sXG4gICAgVGF4Q2FsY3VsYXRpb25NZW1vcnlcbn0gZnJvbSAnLi9lcnAtdHJpYnV0b3MudHlwZXMnO1xuaW1wb3J0IHsgbWFwRW51bVRpcG9UcmlidXRvVG9FbnVtVGlwSW1wQ3N0IH0gZnJvbSAnLi9tYXBwaW5ncy9lbnVtLXRpcC1pbXAtY3N0LW1hcHBpbmcnO1xuaW1wb3J0IHsgUnVsZXNTZXJ2aWNlIH0gZnJvbSAnLi9ydWxlcy9ydWxlcy5zZXJ2aWNlJztcbmltcG9ydCB7IGlzVGF4RnJvbVRheFJlZm9ybSB9IGZyb20gJy4vdGF4LXJlZm9ybS11dGlsaXRpZXMnO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gJy4vdHlwZXMvY29udGV4dCc7XG5pbXBvcnQgeyBHcm91cCB9IGZyb20gJy4vdHlwZXMvZ3JvdXAnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VycC10cmlidXRvcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VycC10cmlidXRvcy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRXJwVHJpYnV0b3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKVxuICAgIGNvbnRleHQ6IENvbnRleHQ7XG4gICAgQElucHV0KCkgc3VnZXN0b2VzOiBTdWdlc3Rhb1tdO1xuICAgIEBJbnB1dCgpIGNhbXBvc0Jsb3F1ZWFkb3MgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCB0cmlidXRvcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJpYnV0b3NWYWx1ZTtcbiAgICB9XG4gICAgc2V0IHRyaWJ1dG9zKHZhbCkge1xuICAgICAgICB0aGlzLnRyaWJ1dG9zVmFsdWUgPSB2YWw7XG4gICAgfVxuICAgIEBJbnB1dCgpIGRvbWluaW8/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgc2Vydmljbz86IHN0cmluZztcbiAgICBASW5wdXQoKSBjdXJyZW5jeUxvY2FsZU9wdGlvbnM/OiBhbnkgPSB7XG4gICAgICAgIGN1cnJlbmN5U3ltYm9sOiAnJyxcbiAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogJywnLFxuICAgICAgICB0aG91c2FuZHNTZXBhcmF0b3I6ICcuJ1xuICAgIH07XG4gICAgQElucHV0KCkgaWRzVGF4ZXNNZW1vcmlhQ2FsY3Vsbz86IFRheENhbGN1bGF0aW9uTWVtb3J5W107XG4gICAgQElucHV0KCkgcGVybWlzc2lvbk1lbW9yaWFDYWxjdWxvPzogYm9vbGVhbjtcblxuICAgIEBPdXRwdXQoKSB0cmlidXRvc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgcmVhZG9ubHkgQmFkZ2VDb2xvcnMgPSBCYWRnZUNvbG9ycztcbiAgICByZWFkb25seSBCdXR0b25Qcmlvcml0eSA9IEJ1dHRvblByaW9yaXR5O1xuICAgIHJlYWRvbmx5IEJ1dHRvblNpemUgPSBCdXR0b25TaXplO1xuICAgIHJlYWRvbmx5IEJ1dHRvbkFuaW1hdGlvbiA9IEJ1dHRvbkFuaW1hdGlvbjtcblxuICAgIHB1YmxpYyBncnVwb3M6IEdyb3VwW10gPSBbXTtcbiAgICBwdWJsaWMgdHJpYnV0b3NWYWx1ZTogYW55W10gPSBbXTtcbiAgICBwdWJsaWMgcmVsb2FkID0gdHJ1ZTtcbiAgICBwdWJsaWMgaW5kZXhBY2NvcmRpb246IG51bWJlcltdID0gW107XG4gICAgcHVibGljIHByZWZpeExhYmVsOiBzdHJpbmc7XG5cbiAgICBpc0xvYWRpbmcgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgbWVudUl0ZW1QaXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ29maW5zID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlwaSA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1Jc3MgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtSW1wb3J0YWNvZXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtUmV0ZW5jb2VzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbVJldGVuY29lc0Z1bnJ1cmFsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUljbXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ2lkZVRlY25vbG9naWEgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ0JTID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlCU0VzdGFkdWFsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlCU011bmljaXBhbCA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1JQlNDcmVkaXRvUHJlc3VtaWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlTID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUNCU19JQlNfRVNUT1JOT19DUkVESVRPID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUljbXNDcmVkaXRvUHJlc3VtaWRvID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUNpZGVUZWNub2xvZ2lhID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXIgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbVBpc0Rldm9sdmlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFyID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Db2ZpbnNEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlwaSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXBpQ3JlZGl0YWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JcGlEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlwaVByZXN1bWlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXBpT3V0cmFzRGVzcGVzYXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlzcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXNzUmV0aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JbXBvc3RvSW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtUGlzUmVjdXBlcmFySW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFySW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtUGlzUmV0aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Db2ZpbnNSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUNzbGxSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlycmZSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUluc3NSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUluc3NQYXRyb25hbCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtc1N0ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1GY3BTdCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtc0NvYnJhZG9BbnRlcmlvcm1lbnRlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1GY3BDb2JyYWRvQW50ZXJpb3JtZW50ZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtc0VmZXRpdmFtZW50ZUNyZWRpdGFkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtRmNwID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JY21zRGlmZXJpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUljbXNEZXNvbmVyYWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1EaWZlcmVuY2lhbEFsaWNvdGEgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbVBpc0ZhdHVyZW1lbnRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Db2ZpbnNGYXR1cmVtZW50byA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtRmNwVWZEZXN0aW5vID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JY21zVWZEZXN0aW5vID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZFNpdHVhY2FvVHJpYnV0YXJpYSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJY21zRnV0dXJvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEljbXNTaW1wbGVzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEljbXNDcmVkaXRvUHJlc3VtaWRvID0gdHJ1ZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkRGlmYWxEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSUNNU19VRl9EZXN0aW5vX0Rldm9sdmlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRGQ1BfVUZfRGVzdGlub19EZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbVBpc0ZhdHVyYW1lbnRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEltcG9zdG9OYW9SZWN1cGVyYWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZGJhc2VDYWxjdWxvQ3JlZGl0byA9IHRydWU7XG4gICAgcHJpdmF0ZSByZXF1aXJlZFBlcmNlbnR1YWxSZWR1Y2FvID0gdHJ1ZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSWNtc1N0U29saWRhcmlvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEljbXNTdFJldGlkb0FudCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRGY3BTdFJlZGl0b0FudCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcGVyY2VudGFnZUxvY2FsZU9wdGlvbnM/OiBhbnk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGUwMjdTdHJMb29rdXA6IEUwMjdTdHJMb29rdXAsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYmVuZWZpY2lvRmlzY2FsTG9va3VwOiBCZW5lZmljaW9GaXNjYWxMb29rdXAsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZTAyN2VxaUxvb2t1cDogRTAyN0VxaUxvb2t1cCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBuYXR1cmV6YVJlY2VpdGFMb29rdXA6IENwbFRyaU5vdGFTYWlkYU5hdHVyZXphUmVjZWl0YVBpc0NvZmluc0xvb2t1cCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYUxvb2t1cDogQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFMb29rdXAsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9va3VwVXRpbHM6IExvb2t1cFZhbGlkYXRpb25VdGlscyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlcnBUcmlidXRvc1NlcnZpY2U6IEVycFRyaWJ1dG9zU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBndGFnOiBHVGFnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBydWxlc1NlcnZpY2U6IFJ1bGVzU2VydmljZVxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLm1lbnVJdGVtUGlzID0gZmFsc2U7XG4gICAgICAgIHRoaXMubWVudUl0ZW1Db2ZpbnMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tZW51SXRlbUlwaSA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1lbnVJdGVtSXNzID0gZmFsc2U7XG4gICAgICAgIHRoaXMubWVudUl0ZW1JbXBvcnRhY29lcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzID0gZmFsc2U7XG4gICAgICAgIHRoaXMubWVudUl0ZW1JY21zID0gZmFsc2U7XG4gICAgICAgIHRoaXMubWVudUl0ZW1DaWRlVGVjbm9sb2dpYSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuZG9taW5pbyA9IHRoaXMuZG9taW5pbyA/IHRoaXMuZG9taW5pbyA6ICdlcnB4X2NwbF9pbXAnO1xuICAgICAgICB0aGlzLnNlcnZpY28gPSB0aGlzLnNlcnZpY28gPyB0aGlzLnNlcnZpY28gOiAnY2FkYXN0cm9zJztcblxuICAgICAgICB0aGlzLnByZWZpeExhYmVsID0gYCR7dGhpcy5kb21pbmlvfS4ke3RoaXMuc2Vydmljb31gO1xuICAgICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMpLmxlbmd0aCA9PSAwKVxuICAgICAgICAgICAgdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgY3VycmVuY3lTeW1ib2w6ICcnLFxuICAgICAgICAgICAgICAgIGRlY2ltYWxTZXBhcmF0b3I6ICcsJyxcbiAgICAgICAgICAgICAgICB0aG91c2FuZHNTZXBhcmF0b3I6ICcuJ1xuICAgICAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zID0ge1xuICAgICAgICAgICAgY3VycmVuY3lTeW1ib2w6ICclJyxcbiAgICAgICAgICAgIGRlY2ltYWxTZXBhcmF0b3I6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICB0aG91c2FuZHNTZXBhcmF0b3I6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLnRob3VzYW5kc1NlcGFyYXRvclxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgY29uc3QgdmFyaWF2ZWlzQWx0ZXJhZGFzID0gT2JqZWN0LmtleXMoY2hhbmdlcyk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICF2YXJpYXZlaXNBbHRlcmFkYXMuaW5jbHVkZXMoJ3N1Z2VzdG9lcycpIHx8XG4gICAgICAgICAgICB2YXJpYXZlaXNBbHRlcmFkYXMubGVuZ3RoID4gMVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJWYXJpYWJsZXMoKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLnRyaWJ1dG9zVmFsdWUgPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgdGhpcy50cmlidXRvc1ZhbHVlLmxlbmd0aCA9PSAwXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdydXBvcyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMudHJpYnV0b3NWYWx1ZSA9IFtdO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJlbG9hZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3J1cG9zID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUcmlidXRvcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VHJpYnV0b3MoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWxvYWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5jYW1wb3NCbG9xdWVhZG9zID09IHRydWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlYWRPbmx5VHJpYnV0b3MoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5sb29rdXBVdGlscy5yZXNldFN0b3JlZEtleXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWVtb3JpYUNhbGN1bG8oaW1wb3N0bzogYW55KSB7XG4gICAgICAgIGxldCB0cmlidXRvID0gdGhpcy5pZHNUYXhlc01lbW9yaWFDYWxjdWxvLmZpbmQoKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQudGlwb1RyaWJ1dG8gPT0gaW1wb3N0by5uYW1lO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hYnJpcldpbmRvd1VybE1lbW9yaWFDYWxjdWxvKHRyaWJ1dG8pO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFrZVVybFdpbmRvdyhwYXJhbXM6IElkZW50aWZpZXJzLCB0cmlidXRvPzogYW55KSB7XG4gICAgICAgIHRoaXMuZXJwVHJpYnV0b3NTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0RnJvbnRlbmQocGFyYW1zKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKGAke3Jlc3BvbnNlLmZyb250ZW5kc1swXS5lbWJlZGRlZFVSTH1gLCAnX2JsYW5rJyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmd0YWcuc2VuZEJ1dHRvbkNsaWNrKCdCb3TDo28gYWNlc3NhciBwYXJhbWV0cml6YcOnw6NvJywge1xuICAgICAgICAgICAgaW1wb3N0b3M6IHRyaWJ1dG8udGlwb1RyaWJ1dG9cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRpc2FibGVkQnV0dG9uKGl0ZW06IEl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGl0ZW0uZm9ybUdyb3VwLmdldCgnaW1wb3N0b01hbnVhbCcpLnZhbHVlIHx8XG4gICAgICAgICAgICBpdGVtLmZvcm1Hcm91cC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pLnZhbHVlID09PVxuICAgICAgICAgICAgICAgIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uTUFOVUFMIHx8XG4gICAgICAgICAgICBpdGVtLmZvcm1Hcm91cC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pLnZhbHVlID09PVxuICAgICAgICAgICAgICAgIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uSEVSREFETyB8fFxuICAgICAgICAgICAgdGhpcy5pZHNUYXhlc01lbW9yaWFDYWxjdWxvID09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgIXRoaXMuaWRzVGF4ZXNNZW1vcmlhQ2FsY3Vsby5maW5kKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC50aXBvVHJpYnV0byA9PSBpdGVtLm5hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5pZFBhcmFtZXRybyAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGlkZUJ1dHRvbihpbXBvc3RvOiBhbnkpIHtcbiAgICAgICAgc3dpdGNoIChpbXBvc3RvKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFicmlyV2luZG93VXJsTWVtb3JpYUNhbGN1bG8odHJpYnV0bzogYW55KSB7XG4gICAgICAgIGlmICghdHJpYnV0bz8uaWRQZXJmaWxUcmlidXRhcmlvICYmICF0cmlidXRvPy5pZFBhcmFtZXRybykge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnJvcl9tZW1vcmlhX2NhbGN1bG9fbWVzc2FnZV90aXRsZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2Vycm9yX21lbW9yaWFfY2FsY3Vsb19tZXNzYWdlX2NvbnRlbnQnXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgaWRlbnRpZmllcnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGRvbWFpbk5hbWU6ICdlcnB4X2NwbF9pbXAnLFxuICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlTmFtZTogJ2ltcG9zdG9zJyxcbiAgICAgICAgICAgICAgICAgICAgYXBwTmFtZTogJ2VycHgtY3BsLWltcC1pbXBvc3RvcycsXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlOiBgJHt0aGlzLnZhbGlkYVRlbGEodHJpYnV0byl9YFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLm1ha2VVcmxXaW5kb3cocGFyYW1zLCB0cmlidXRvKTtcbiAgICB9XG5cbiAgICB2YWxpZGFUZWxhKHRheGVzOiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTdFRheGVzKHRheGVzLnRpcG9UcmlidXRvKSkge1xuICAgICAgICAgICAgaWYgKHRheGVzLmlkUGFyYW1ldHJvRXN0YWRvKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBpY21zc3QvJHt0YXhlcy5pZFBhcmFtZXRyb1N0fS9pY21zc3QtcGFyYW1ldHJvcy8ke3RheGVzLmlkUGFyYW1ldHJvRXN0YWRvfT9wZXJmaWxUcmlidXRhcmlvSWQ9JHt0YXhlcy5pZFBlcmZpbFRyaWJ1dGFyaW99JnBhcmFtZXRyb0ltcG9zdG9zSWQ9JHt0YXhlcy5pZFBhcmFtZXRyb31gO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYGljbXNzdC8ke3RheGVzLmlkUGFyYW1ldHJvfS9pY21zc3QtcGFyYW1ldHJvcy8ke3RheGVzLmlkUGFyYW1ldHJvU3R9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYHBlcmZpbC10cmlidXRhcmlvLyR7dGF4ZXMuaWRQZXJmaWxUcmlidXRhcmlvfS9wYXJhbWV0cml6YWNhby1pbXBvc3Rvcy8ke3RoaXMuZ2V0VHJpYnV0b1BhaSh0YXhlcy50aXBvVHJpYnV0byl9LyR7XG4gICAgICAgICAgICB0YXhlcy5pZFBhcmFtZXRyb1xuICAgICAgICB9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzU3RUYXhlcyh0YXhlczogYW55KSB7XG4gICAgICAgIHN3aXRjaCAodGF4ZXMpIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1Q6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUcmlidXRvUGFpKHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0bykge1xuICAgICAgICBzd2l0Y2ggKHRyaWJ1dG8pIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTOlxuICAgICAgICAgICAgICAgIHJldHVybiAncGlzJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TOlxuICAgICAgICAgICAgICAgIHJldHVybiAnY29maW5zJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSTpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9PVVRSQVNfREVTUEVTQVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpcGknO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2lzcyc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU86XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpaSc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNTTEw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUlJGOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TUzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9JTlNTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfU0VOQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9UT1RBTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3JldGVuY29lcyc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1A6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19FRkVUSVZPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRElGQUw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTF9ERVZPTFZJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9TVDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUT19QUkVTVU1JRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpY21zJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2NpZGUnO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0RJRkVSSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX1RSSUJVVEFDQU9fUkVHVUxBUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19HT1ZFUk5BTUVOVEFMOlxuICAgICAgICAgICAgICAgIHJldHVybiAnY2JzJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9ESUZFUklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9UUklCVVRBQ0FPX1JFR1VMQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfR09WRVJOQU1FTlRBTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2licy1lc3RhZHVhbCc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9ESUZFUklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfVFJJQlVUQUNBT19SRUdVTEFSOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9HT1ZFUk5BTUVOVEFMOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaWJzLW11bmljaXBhbCc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2lzJztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyVmFyaWFibGVzKCkge1xuICAgICAgICBpZiAodGhpcy5yZWxvYWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbLTFdO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNCUyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUlCU0VzdGFkdWFsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSUJTTXVuaWNpcGFsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSVMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1QaXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1Db2ZpbnMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JcGkgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1Jc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JbXBvcnRhY29lcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbVJldGVuY29lcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUljbXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1DaWRlVGVjbm9sb2dpYSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbVJldGVuY29lc0Z1bnJ1cmFsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSWNtc0NyZWRpdG9QcmVzdW1pZG8gPSBmYWxzZTtcblxuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1DaWRlVGVjbm9sb2dpYSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzRGV2b2x2aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaUNyZWRpdGFkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGlEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpUHJlc3VtaWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaU91dHJhc0Rlc3Blc2FzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlzcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Jc3NSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSW1wb3N0b0ltcG9ydGFjYW8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzUmVjdXBlcmFySW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZWN1cGVyYXJJbXBvcnRhY2FvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc1JldGlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ3NsbFJldGlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcnJmUmV0aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUluc3NSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSW5zc1BhdHJvbmFsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNTdCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1GY3BTdCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zQ29icmFkb0FudGVyaW9ybWVudGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwQ29icmFkb0FudGVyaW9ybWVudGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRWZldGl2YW1lbnRlQ3JlZGl0YWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRGlmZXJpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc0Rlc29uZXJhZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRGlmZXJlbmNpYWxBbGljb3RhID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyZW1lbnRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc0ZhdHVyZW1lbnRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNVZkRlc3Rpbm8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwVWZEZXN0aW5vID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkU2l0dWFjYW9UcmlidXRhcmlhID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc0Z1dHVybyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTaW1wbGVzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyYW1lbnRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc1N0U29saWRhcmlvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc1N0UmV0aWRvQW50ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkRmNwU3RSZWRpdG9BbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlVHJpYnV0b3MoKSB7XG4gICAgICAgIHRoaXMudHJpYnV0b3NWYWx1ZS5tYXAoKGl0KSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGl0LnRpcG9JbXBvc3RvKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19ESUZFUklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfQ1JFRElUT19QUkVTVU1JRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX1RSSUJVVEFDQU9fUkVHVUxBUjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUNCUygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUw6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX0RJRkVSSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9UUklCVVRBQ0FPX1JFR1VMQVI6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJQlNFc3RhZHVhbCgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfRElGRVJJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9UUklCVVRBQ0FPX1JFR1VMQVI6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJQlNNdW5pY2lwYWwoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSUJTQ3JlZGl0b1ByZXN1bWlkbygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUlTKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19FU1RPUk5PX0NSRURJVE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVE9STk9fQ1JFRElUTzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUNCU0lCU0VzdG9ybm9DcmVkaXRvKClcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUjpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJUzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YVBpcygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVI6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhQ29maW5zKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSTpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfT1VUUkFTX0RFU1BFU0FTOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSXBpKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTUzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSXNzKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSX0lNUE9SVEFDQU86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSW1wb3J0YWNvZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNTTEw6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVJSRjpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUw6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFSZXRlbmNvZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNUzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVEFETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1A6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRUZFVElWTzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTDpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTF9ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSWNtcygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSWNtc0NyZWRpdG9QcmVzdW1pZG8oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhQ2lkZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9JTlNTOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1JBVDpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9TRU5BUjpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9UT1RBTDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YVJldGVuY29lc0Z1bnJ1cmFsKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRPbmx5VHJpYnV0b3MoKTogdm9pZCB7XG4gICAgICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgdGhpcy5ncnVwb3MpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBncm91cC5pdGVtKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXAuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFRyaWJ1dG9zKCkge1xuICAgICAgICBpZiAodGhpcy5ncnVwb3M/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLm1hcCgoZ3J1cG8pID0+XG4gICAgICAgICAgICAgICAgZ3J1cG8uaXRlbS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmlidXRvc1ZhbHVlLm1hcCgoaXQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLm5hbWUgPT09IGl0LnRpcG9JbXBvc3RvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0oaXQudGlwb0ltcG9zdG8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyhpdC50aXBvSW1wb3N0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXAucGF0Y2hWYWx1ZShpdCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBncm91cCBvZiB0aGlzLmdydXBvcykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBncm91cC5pdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVZhbHVlQ2hhbmdlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5ydWxlc1NlcnZpY2UuYXBwbHkoe1xuICAgICAgICAgICAgICAgICAgICBncm91cHM6IHRoaXMuZ3J1cG9zLFxuICAgICAgICAgICAgICAgICAgICBncm91cCxcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFZhbGlkYXRvcnModHJpYnV0bzogRW51bVRpcG9UcmlidXRvKSB7XG4gICAgICAgIGlmICh0aGlzLmdydXBvcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ncnVwb3MubWFwKChncnVwbykgPT4ge1xuICAgICAgICAgICAgICAgIGdydXBvLml0ZW1cbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoaXQpID0+IGl0Lm5hbWUgPT0gdHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoaXQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoYXNWYWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoaXQuZm9ybUdyb3VwLnZhbHVlKS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtICE9PSAnaW1wb3N0b01hbnVhbCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSAhPT0gRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmdldChpdGVtKS50b3VjaGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAudmFsdWVbaXRlbV0gIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAudmFsdWVbaXRlbV0gIT09ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzVmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhpdC5mb3JtR3JvdXAudmFsdWUpLmZvckVhY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09ICdwZXJjZW50dWFsUmVkdWNhbycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09ICdwZXJjZW50dWFsRGlmZXJpbWVudG8nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSA9PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09PSAncGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXgoMTAwMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAndmFsb3InKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ29ic2VydmFjYW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTIwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdjb2RpZ29BcnJlY2FkYWNhbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCg1KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdiZW5lZmljaW9GaXNjYWwnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdpbmRpY2F0aXZvQXF1aXNpY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW10pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdjb2RpZ29UcmlidXRhY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPT09ICdJbXBvc3RvTmFvUmVjdXBlcmFkbydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2Jhc2VDYWxjdWxvQ3JlZGl0bycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtICE9PSAnaW1wb3N0b01hbnVhbCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtICE9PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0byAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gIT09ICduYXR1cmV6YVJlY2VpdGEnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSAhPT0gJ3ZhbG9yRGVkdWNhbycgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtICE9PSAncmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucycgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtICE9PSAncmVkdWNhb0FsaXF1b3RhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGl0LmZvcm1Hcm91cC52YWx1ZSkuZm9yRWFjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPT0gJ3BlcmNlbnR1YWxSZWR1Y2FvJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPT0gJ3BlcmNlbnR1YWxEaWZlcmltZW50bycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPT09ICdwZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KDEwMDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ3ZhbG9yJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKHZhbGlkYXRvcnMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnb2JzZXJ2YWNhbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgxMjApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2NvZGlnb0FycmVjYWRhY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2JlbmVmaWNpb0Zpc2NhbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFtdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnaW5kaWNhdGl2b0FxdWlzaWNhbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFtdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09PSAnSW1wb3N0b05hb1JlY3VwZXJhZG8nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVBbGxGb3JtRmllbGRzKGZvcm1Hcm91cDogRm9ybUdyb3VwKTogdm9pZCB7XG4gICAgICAgIE9iamVjdC5rZXlzKGZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KGZpZWxkKTtcbiAgICAgICAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpXG4gICAgICAgICAgICAgICAgY29udHJvbC5tYXJrQXNEaXJ0eSh7IG9ubHlTZWxmOiB0cnVlIH0pO1xuICAgICAgICAgICAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cClcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlQWxsRm9ybUZpZWxkcyhjb250cm9sKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhlY3V0YSBhIHZhbGlkYcOnw6NvIGRlIHRvZG9zIG9zIGNhbXBvcyBkb3MgZm9ybXVsw6FyaW9zIGRlbnRybyBkb3MgZ3J1cG9zLlxuICAgICAqXG4gICAgICogKipBdGVuw6fDo286KiogRXN0ZSBtw6l0b2RvICoqbsOjbyoqIGRldmUgc2VyIHV0aWxpemFkbyBubyB0ZW1wbGF0ZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBzZSB0b2RvcyBvcyBmb3JtdWzDoXJpb3MgZm9yZW0gdsOhbGlkb3MgZSBuZW5odW0gdmFsb3IgZGUgaW1wb3N0byBmb3IgbmVnYXRpdm87IGNhc28gY29udHLDoXJpbywgcmV0b3JuYSBgZmFsc2VgLlxuICAgICAqL1xuICAgIHZhbGlkYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZmluZEdyb3VwV2l0aE5lZ2F0aXZlVGF4VmFsdWUoKTtcblxuICAgICAgICBpZiAoZ3JvdXApIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBzdGlja3k6IHRydWUsXG4gICAgICAgICAgICAgICAgc3VtbWFyeTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lcnJvcicpLFxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZXJyb3JfdGF4X3dpdGhfbmVnYXRpdmVfdGF4X3ZhbHVlJyxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGF4OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18ke2dyb3VwLmdydXBvVHJpYnV0by50b0xvd2VyQ2FzZSgpfWBcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5ncnVwb3MuZXZlcnkoKGdyb3VwKSA9PlxuICAgICAgICAgICAgZ3JvdXAuaXRlbVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLmZvcm1Hcm91cC5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICAuZXZlcnkoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUFsbEZvcm1GaWVsZHMoaXRlbS5mb3JtR3JvdXApO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmZvcm1Hcm91cC52YWxpZDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZlcmlmaWNhIHNlIGFsZ3VtIGZvcm11bMOhcmlvIGVzdMOhIGludsOhbGlkby5cbiAgICAgKlxuICAgICAqIERldmUgc2VyIHV0aWxpemFkbyBzb21lbnRlIG5vIHRlbXBsYXRlIHBhcmEgY29udHJvbGUgZGUgYm90w7VlcyBvdSBleGliacOnw6NvIGRlIG1lbnNhZ2Vucy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBzZSBhbGd1bSBgZm9ybUdyb3VwYCBlc3RpdmVyIGludsOhbGlkbyBvdSBzZSBhbGd1bSB2YWxvciBkZSBpbXBvc3RvIGZvciBuZWdhdGl2by5cbiAgICAgKi9cbiAgICBpc0ludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhIXRoaXMuZmluZEdyb3VwV2l0aE5lZ2F0aXZlVGF4VmFsdWUoKSB8fFxuICAgICAgICAgICAgdGhpcy5ncnVwb3Muc29tZSgoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgZ3JvdXAuaXRlbS5zb21lKChpdGVtKSA9PiBpdGVtLmZvcm1Hcm91cC5pbnZhbGlkKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZEdyb3VwV2l0aE5lZ2F0aXZlVGF4VmFsdWUoKTogR3JvdXAgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5ncnVwb3NcbiAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09IEVudW1HcnVwb1RyaWJ1dG8uQ0JTIHx8XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT0gRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUwgfHxcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PSBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUwgfHxcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0RJRkVSSURPXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuZmluZCgoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgZ3JvdXAuaXRlbS5zb21lKChpdGVtKSA9PlxuICAgICAgICAgICAgICAgICAgICBuZXcgQmlnTnVtYmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXAuZ2V0KCd2YWxvcicpLnZhbHVlID8/IDBcbiAgICAgICAgICAgICAgICAgICAgKS5pc0xlc3NUaGFuKDApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhcnJJdGVuczogYW55ID0gW107XG4gICAgICAgIGlmICh0aGlzLmdydXBvcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ncnVwb3MubWFwKChncnVwbykgPT4ge1xuICAgICAgICAgICAgICAgIGdydXBvLml0ZW0ubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVBbGxGb3JtRmllbGRzKGl0ZW0uZm9ybUdyb3VwKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudHJpYnV0b3NWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXVNYXRoID0gdGhpcy50cmlidXRvc1ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyaWJ1dG8pID0+IHRyaWJ1dG8udGlwb0ltcG9zdG8gPT0gaXRlbS5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHRyaWJ1dG8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRyaWJ1dG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGV1TWF0aCAmJiBkZXVNYXRoLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyckl0ZW5zLnB1c2goZGV1TWF0aFswXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyckl0ZW5zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXBvSW1wb3N0bzogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJJdGVucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXBvSW1wb3N0bzogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0uZm9ybUdyb3VwLmdldFJhd1ZhbHVlKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVsb2FkID0gZmFsc2U7XG4gICAgICAgIHRoaXMudHJpYnV0b3NDaGFuZ2UuZW1pdChhcnJJdGVucyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBub3ZvSW1wb3N0b01hbnVhbChpdGVtOiBJdGVtLCBzaW5nbGVDaGFuZ2U/OiBib29sZWFuKSB7XG4gICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKGl0ZW0ubmFtZSBhcyBFbnVtVGlwb1RyaWJ1dG8pKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1GaWVsZCBvZiBpdGVtLmZvcm1GaWVsZCkge1xuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5vbkJsdXI/LmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXNpbmdsZUNoYW5nZSkge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdydXBvcy5maW5kKChncm91cCkgPT5cbiAgICAgICAgICAgICAgICBncm91cC5pdGVtLmluY2x1ZGVzKGl0ZW0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVWYWx1ZUNoYW5nZXMoe1xuICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgZ3JvdXBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFjdGlvbnMoKTogTWVudUl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IG1lbnU6IE1lbnVJdGVtW10gPSBbXTtcblxuICAgICAgICBtZW51LnB1c2goXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfY2JzX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1DQlMsXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUNCUygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncnVwb3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT0gRW51bUdydXBvVHJpYnV0by5DQlNcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pYnNfZXN0YWR1YWxfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUlCU0VzdGFkdWFsLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJQlNFc3RhZHVhbCgpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncnVwb3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pYnNfbXVuaWNpcGFsX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JQlNNdW5pY2lwYWwsXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUlCU011bmljaXBhbCgpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncnVwb3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaWJzX2NyZWRpdG9fcHJlc3VtaWRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JQlNDcmVkaXRvUHJlc3VtaWRvLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJQlNDcmVkaXRvUHJlc3VtaWRvKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ydWxlc1NlcnZpY2UuYXBwbHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOiB0aGlzLmdydXBvcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwOiB0aGlzLmdydXBvcy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChncm91cCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtR3J1cG9UcmlidXRvLklCU19DUkVESVRPX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaXNfbGFiZWwnKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUlTLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJUygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncnVwb3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT0gRW51bUdydXBvVHJpYnV0by5JU1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2Nic19pYnNfZXN0b3Jub19jcmVkaXRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1DQlNfSUJTX0VTVE9STk9fQ1JFRElUTyxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhQ0JTSUJTRXN0b3Jub0NyZWRpdG8oKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzU2VydmljZS5hcHBseSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cHM6IHRoaXMuZ3J1cG9zLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IHRoaXMuZ3J1cG9zLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1HcnVwb1RyaWJ1dG8uQ0JTX0lCU19FU1RPUk5PX0NSRURJVE9cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLmRlYml0SW52b2ljZVR5cGUgPT09ICdJbnZlbnRvcnkgTG9zcydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6ICdyZXRlbmNhb0Z1bnJ1cmFsJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19yZXRlbmNhb19mdW5ydXJhbF9sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzRnVucnVyYWwsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YVJldGVuY29lc0Z1bnJ1cmFsKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogJ3BpcycsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfcGlzX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1QaXMsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YVBpcygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6ICdjb2ZpbnMnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2NvZmluc19sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtQ29maW5zLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMucG9kZU1vc3RyYXJJbXBvc3RvcygpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFDb2ZpbnMoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAnaXBpJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pcGlfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUlwaSxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSXBpKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogJ2ljbXMnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2ljbXNfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUljbXMsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUljbXMoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMuY29udGV4dC5kb2N1bWVudCAhPT0gJ1NhbGUgT3JkZXInKSB7XG4gICAgICAgICAgICBtZW51LnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiAnaW1wb3J0YWNvZXMnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2ltcG9ydGFjb2VzX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JbXBvcnRhY29lcyxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSW1wb3J0YWNvZXMoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnIHx8XG4gICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS5pdGVtLnR5cGUgPT09ICdTZXJ2aWNlJykgfHxcbiAgICAgICAgICAgICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcicgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQub3JkZXIuaXRlbS50eXBlID09PSAnU2VydmljZScpIHx8XG4gICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcicgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQub3JkZXIuaXRlbS50eXBlID09PSAnU2VydmljZScpXG4gICAgICAgICkge1xuICAgICAgICAgICAgbWVudS5wdXNoKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdpc3MnLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaXNzX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUlzcyxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSXNzKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAncmV0ZW5jb2VzJyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX3JldGVuY29lc19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1SZXRlbmNvZXMsXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMucG9kZU1vc3RyYXJJbXBvc3RvcygpLFxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YVJldGVuY29lcygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UuaXRlbS50eXBlID09PSAnU2VydmljZSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBtZW51LnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiAnY2lkZScsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfY2lkZV9sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtQ2lkZVRlY25vbG9naWEsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUNpZGUoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnIHx8XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdDb250cm9sbGVyc2hpcCBJbmNvbWluZyBJbnZvaWNlJyB8fFxuICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSAhPT0gJ0RlYml0JylcbiAgICAgICAgKVxuICAgICAgICAgICAgbWVudS5wdXNoKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pY21zX2NyZWRpdG9fcHJlc3VtaWRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JY21zQ3JlZGl0b1ByZXN1bWlkbyxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSWNtc0NyZWRpdG9QcmVzdW1pZG8oKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbWVudTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBvZGVNb3N0cmFySW1wb3N0b3MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhKFxuICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0NyZWRpdCcpIHx8XG4gICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJY21zQ3JlZGl0b1ByZXN1bWlkbygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JY21zQ3JlZGl0b1ByZXN1bWlkbykgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubWVudUl0ZW1JY21zQ3JlZGl0b1ByZXN1bWlkbyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2NyZWRpdG9fcHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJlbmVmaWNpb0Zpc2NhbCB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPLFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhQ2lkZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1DaWRlVGVjbm9sb2dpYSA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNpZGVUZWNub2xvZ2lhID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuICAgICAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NpZGVfdGVjbm9sb2dpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUEsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY2lkZV90ZWNub2xvZ2lhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQSArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQSxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUljbXMoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtSWNtcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUljbXMgPSB0cnVlO1xuXG4gICAgICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9yaWdlbSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfY3JlZGl0YWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3NpbXBsZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGlmZXJpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsRGlmZXJpbWVudG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5ESUZBTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZGlmYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRElGQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEBJQ01TX1NUICovXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiBESUZBTCBERVZPTFZJRE8gKi9cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc191Zl9kZXN0aW5vX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhSW50ZXJuYURlc3Rpbm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF91Zl9kZXN0aW5vX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfY3JlZGl0YWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3NpbXBsZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGlmZXJpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsRGlmZXJpbWVudG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5ESUZBTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZGlmYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRElGQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEBJQ01TX1NUICovXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgIT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9yaWdlbSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3NpbXBsZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGlmZXJpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsRGlmZXJpbWVudG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5ESUZBTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZGlmYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRElGQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfdWZfZGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF91Zl9kZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEBJQ01TX1NUICovXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRUZFVElWTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19lZmV0aXZvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRUZFVElWT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Z1dHVybycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVST1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zaW1wbGVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kZXNvbmVyYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTW90aXZvRGVzb25lcmFjYW9JY21zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2RpZmVyaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbERpZmVyaW1lbnRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3VmX2Rlc3Rpbm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFJbnRlcm5hIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3BfdWZfZGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBASUNNU19TVCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3NvbGlkYXJpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X2Z1dHVybycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVST1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9TVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvclJlY29saGlkb1BlbG9TdWJzdGl0dXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT3JpZ2VtIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9ic2VydmFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kZXNvbmVyYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTW90aXZvRGVzb25lcmFjYW9JY21zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfdWZfZGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF91Zl9kZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9zb2xpZGFyaW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9yaWdlbSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5PYnNlcnZhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc2ltcGxlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGVzb25lcmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk1vdGl2b0Rlc29uZXJhY2FvSWNtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRElGQUwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2RpZmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkRJRkFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uSW1wb3N0b05hb1JlY3VwZXJhZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9zb2xpZGFyaW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3VmX2Rlc3Rpbm9fZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFJbnRlcm5hRGVzdGlub1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3VmX2Rlc3Rpbm9fZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JQ01TICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YVJldGVuY29lcygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1SZXRlbmNvZXMgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1SZXRlbmNvZXMgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DU0xMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jc2xsX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNTTExcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUlJGLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcnJmX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklSUkZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19wYXRyb25hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DU0xMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jc2xsX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DU0xMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXJyZl9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVJSRlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3BhdHJvbmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSAhPT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ1NMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY3NsbF9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DU0xMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXJyZl9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUlJGXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSU5TU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNTTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NzbGxfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNTTExcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUlJGLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcnJmX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUlJGXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSU5TU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DU0xMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jc2xsX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DU0xMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXJyZl9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVJSRlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ1NMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY3NsbF9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ1NMTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklSUkYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lycmZfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklSUkZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19wYXRyb25hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLlJFVEVOQ09FUyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLlJFVEVOQ09FUyxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YVJldGVuY29lc0Z1bnJ1cmFsKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbVJldGVuY29lc0Z1bnJ1cmFsID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzRnVucnVyYWwgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9JTlNTLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZnVucnVyYWxfaW5zcycsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5JbmRpY2F0aXZvQXF1aXNpY2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX0lOU1NcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFULFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZnVucnVyYWxfcmF0JyxcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkluZGljYXRpdm9BcXVpc2ljYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1NFTkFSLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZnVucnVyYWxfc2VuYXInLFxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uSW5kaWNhdGl2b0FxdWlzaWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9TRU5BUlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9UT1RBTCxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Z1bnJ1cmFsX3RvdGFsJyxcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1RPVEFMXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLkZVTlJVUkFMICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uRlVOUlVSQUwsXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGZ1bnJ1cmFsVG90YWwgPSBpdGVtLmZpbmQoXG4gICAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0ubmFtZSA9PT0gJ0ZVTlJVUkFMX1RPVEFMJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGZ1bnJ1cmFsVG90YWwuZm9ybUdyb3VwLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJbXBvcnRhY29lcygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JbXBvcnRhY29lcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUltcG9ydGFjb2VzID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuY29udGV4dC5kb2N1bWVudCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbXBvc3RvX2ltcG9ydGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU9cbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0NvbnRyb2xsZXJzaGlwIEluY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW1wb3N0b19pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JlY3VwZXJhcl9pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JlY3VwZXJhcl9pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ltcG9zdG9faW1wb3J0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSX0lNUE9SVEFDQU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZWN1cGVyYXJfaW1wb3J0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSX0lNUE9SVEFDQU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZWN1cGVyYXJfaW1wb3J0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklNUE9SVEFDT0VTICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uSU1QT1JUQUNPRVMsXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJc3MoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtSXNzID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSXNzID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLmNvbnRleHQuZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlICdPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlICdQdXJjaGFzZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgY2FzZSAnU2FsZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pc3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Fc2NyaXR1cmFyQWxpcXVvdGFJU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklTU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lzc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdDb250cm9sbGVyc2hpcCBJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JU1MgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JU1MsXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFDQlMoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtQ0JTKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUNCUyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgY29uc3QgY2FtcG9zID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvLFxuICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLkNCU1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSxcbiAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5DQlNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JCcnV0byxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWwgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUVmZXRpdmEsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5pc0ludm9pY2VEb2N1bWVudCgpKSB7XG4gICAgICAgICAgICBjYW1wb3MucHVzaChcbiAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50byxcbiAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uQ0JTXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNhbXBvc19DQlNfQ1JFRElUT19QUkVTVU1JRE8gPSBbXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKHRoaXMuaXNJbnZvaWNlRG9jdW1lbnQoKSkge1xuICAgICAgICAgICAgY2FtcG9zX0NCU19DUkVESVRPX1BSRVNVTUlETy5wdXNoKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFDcmVkaXRvUHJlc3VtaWRvXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG9cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2FtcG9zX0NCU19UUklCVVRBQ0FPX1JFR1VMQVIgPSBbXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKHRoaXMuaXNJbnZvaWNlRG9jdW1lbnQoKSkge1xuICAgICAgICAgICAgY2FtcG9zX0NCU19UUklCVVRBQ0FPX1JFR1VMQVIucHVzaChcbiAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlMsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NicycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhjYW1wb3MsIEVudW1UaXBvVHJpYnV0by5DQlMpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Nic19kaWZlcmlkbycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0RJRkVSSURPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0NSRURJVE9fUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jYnNfY3JlZGl0b19wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIGNhbXBvc19DQlNfQ1JFRElUT19QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DQlNfQ1JFRElUT19QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfVFJJQlVUQUNBT19SRUdVTEFSLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jYnNfdHJpYnV0YWNhb19yZWd1bGFyJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBjYW1wb3NfQ0JTX1RSSUJVVEFDQU9fUkVHVUxBUixcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNCU19UUklCVVRBQ0FPX1JFR1VMQVJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfR09WRVJOQU1FTlRBTCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY2JzX2dvdmVybmFtZW50YWwnLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNCU19HT1ZFUk5BTUVOVEFMXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5DQlMgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLkNCUyxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUlCU0VzdGFkdWFsKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUlCU0VzdGFkdWFsKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUlCU0VzdGFkdWFsID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2VzdGFkdWFsJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yQnJ1dG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFFZmV0aXZhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklCU19FU1RBRFVBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JCcnV0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUVmZXRpdmEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19lc3RhZHVhbF9kaWZlcmlkbycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX0RJRkVSSURPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX1RSSUJVVEFDQU9fUkVHVUxBUixcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2VzdGFkdWFsX3RyaWJ1dGFjYW9fcmVndWxhcicsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcicgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9UUklCVVRBQ0FPX1JFR1VMQVJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfR09WRVJOQU1FTlRBTCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2VzdGFkdWFsX2dvdmVybmFtZW50YWwnLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9HT1ZFUk5BTUVOVEFMXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUwgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLklCU19FU1RBRFVBTCxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUlCU011bmljaXBhbCgpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JQlNNdW5pY2lwYWwpIHJldHVybjtcblxuICAgICAgICB0aGlzLm1lbnVJdGVtSUJTTXVuaWNpcGFsID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUwsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19tdW5pY2lwYWwnLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX01VTklDSVBBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckJydXRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWR1Y2FvQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWR1Y2FvQWxpcXVvdGFHb3Zlcm5hbWVudGFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhRWZldGl2YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX01VTklDSVBBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yQnJ1dG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFFZmV0aXZhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0RJRkVSSURPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pYnNfbXVuaWNpcGFsX2RpZmVyaWRvJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0RJRkVSSURPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9UUklCVVRBQ0FPX1JFR1VMQVIsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19tdW5pY2lwYWxfdHJpYnV0YWNhb19yZWd1bGFyJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9UUklCVVRBQ0FPX1JFR1VMQVJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0dPVkVSTkFNRU5UQUwsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19tdW5pY2lwYWxfZ292ZXJuYW1lbnRhbCcsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9HT1ZFUk5BTUVOVEFMXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMLFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhSUJTQ3JlZGl0b1ByZXN1bWlkbygpOiBJdGVtW10ge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUlCU0NyZWRpdG9QcmVzdW1pZG8pIHJldHVybjtcblxuICAgICAgICB0aGlzLm1lbnVJdGVtSUJTQ3JlZGl0b1ByZXN1bWlkbyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgY29uc3QgY2FtcG9zOiBDYW1wb1RyaWJ1dG9bXSA9IFtcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5pc0ludm9pY2VEb2N1bWVudCgpKSB7XG4gICAgICAgICAgICBjYW1wb3MucHVzaChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhQ3JlZGl0b1ByZXN1bWlkb1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG9cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE8sXG4gICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2NyZWRpdG9fcHJlc3VtaWRvJyxcbiAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoY2FtcG9zLCBFbnVtVGlwb1RyaWJ1dG8uSUJTX0NSRURJVE9fUFJFU1VNSURPKVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uSUJTX0NSRURJVE9fUFJFU1VNSURPICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE8sXG4gICAgICAgICAgICBpdGVtXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJUygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JUykgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubWVudUl0ZW1JUyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgY29uc3QgY2FtcG9zOiBDYW1wb1RyaWJ1dG9bXSA9IFtcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5pc0ludm9pY2VEb2N1bWVudCgpKSB7XG4gICAgICAgICAgICBjYW1wb3MucHVzaChcbiAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8sXG4gICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklTXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVMsXG4gICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXMnLFxuICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhjYW1wb3MsIEVudW1UaXBvVHJpYnV0by5JUylcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklTICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JUyxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUNCU0lCU0VzdG9ybm9DcmVkaXRvKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUNCU19JQlNfRVNUT1JOT19DUkVESVRPKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUNCU19JQlNfRVNUT1JOT19DUkVESVRPID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNCU19FU1RPUk5PX0NSRURJVE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Nic19lc3Rvcm5vX2NyZWRpdG8nLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNCU19FU1RPUk5PX0NSRURJVE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUT1JOT19DUkVESVRPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pYnNfZXN0b3Jub19jcmVkaXRvJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUT1JOT19DUkVESVRPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5DQlNfSUJTX0VTVE9STk9fQ1JFRElUTyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uQ0JTX0lCU19FU1RPUk5PX0NSRURJVE8sXG4gICAgICAgICAgICBpdGVtXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFQaXMoKTogYW55W10ge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbVBpcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbVBpcyA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcbiAgICAgICAgICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZWN1cGVyYXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uYmFzZUNhbGN1bG9DcmVkaXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmVjdXBlcmFyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUlxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgIT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk5hdHVyZXphUmVjZWl0YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19mYXR1cmFtZW50bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTmF0dXJlemFSZWNlaXRhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JlY3VwZXJhcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5iYXNlQ2FsY3Vsb0NyZWRpdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLlBJUyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLlBJUyxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUNvZmlucygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1Db2ZpbnMgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1Db2ZpbnMgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG4gICAgICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmVjdXBlcmFyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLmJhc2VDYWxjdWxvQ3JlZGl0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JlY3VwZXJhcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlICE9PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5OYXR1cmV6YVJlY2VpdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlMsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgT3V0Z29pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk5hdHVyZXphUmVjZWl0YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLmJhc2VDYWxjdWxvQ3JlZGl0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uQ09GSU5TICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uQ09GSU5TLFxuICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhSXBpKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUlwaSA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUlwaSA9IHRydWU7XG5cbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUEksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JPdXRyYXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkVucXVhZHJhbWVudG9JcGkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX0NSRURJVEFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX2NyZWRpdGFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX09VVFJBU19ERVNQRVNBUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX291dHJhc19kZXNwZXNhcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfT1VUUkFTX0RFU1BFU0FTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX3ByZXN1bWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9jcmVkaXRhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX0NSRURJVEFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdQcm9kdWN0IFJldHVybic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfcHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgIT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJc2VudGFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5FbnF1YWRyYW1lbnRvSXBpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUEksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JPdXRyYXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uRW5xdWFkcmFtZW50b0lwaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT2JzZXJ2YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfcHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUEksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JPdXRyYXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5JbXBvc3RvTmFvUmVjdXBlcmFkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uRW5xdWFkcmFtZW50b0lwaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT2JzZXJ2YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfcHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uSVBJICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uSVBJLFxuICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bzogRW51bVRpcG9UcmlidXRvKSB7XG4gICAgICAgIHN3aXRjaCAodHJpYnV0bykge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNpZGVUZWNub2xvZ2lhO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXI7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc0Rldm9sdmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFyO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNEZXZvbHZpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUEk6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXBpO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0NSRURJVEFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JcGlDcmVkaXRhZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlwaURldm9sdmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9PVVRSQVNfREVTUEVTQVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXBpT3V0cmFzRGVzcGVzYXM7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlwaVByZXN1bWlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Jc3M7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlzc1JldGlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JbXBvc3RvSW1wb3J0YWNhbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXJJbXBvcnRhY2FvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhckltcG9ydGFjYW87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc1JldGlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ1NMTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Dc2xsUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVJSRjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JcnJmUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUGF0cm9uYWw7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNTdDtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9TVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1GY3BTdDtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ09CUkFET19BTlRFUklPUk1FTlRFX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNDb2JyYWRvQW50ZXJpb3JtZW50ZTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtRmNwQ29icmFkb0FudGVyaW9ybWVudGU7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXM7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVEFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JY21zRWZldGl2YW1lbnRlQ3JlZGl0YWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUZjcDtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSWNtc0RpZmVyaWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNEZXNvbmVyYWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRElGQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtRGlmZXJlbmNpYWxBbGljb3RhO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyZW1lbnRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc0ZhdHVyZW1lbnRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5POlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNVZkRlc3Rpbm87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1GY3BVZkRlc3Rpbm87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkU2l0dWFjYW9UcmlidXRhcmlhO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJY21zRnV0dXJvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc1NpbXBsZXM7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc0NyZWRpdG9QcmVzdW1pZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTF9ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWREaWZhbERldm9sdmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJQ01TX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkRkNQX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX0ZBVFVSQU1FTlRPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyYW1lbnRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19OQU9fUkVDVVBFUkFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEltcG9zdG9OYW9SZWN1cGVyYWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQkFTRV9DQUxDVUxPX0NSRURJVE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRiYXNlQ2FsY3Vsb0NyZWRpdG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QRVJDRU5UVUFMX1JFRFVDQU86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRQZXJjZW50dWFsUmVkdWNhbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc1N0U29saWRhcmlvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc1N0UmV0aWRvQW50O1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRGY3BTdFJlZGl0b0FudDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFJlcXVpcmVkKHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0bywgdmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgc3dpdGNoICh0cmlidXRvKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUE6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNpZGVUZWNub2xvZ2lhID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXIgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0Rldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUjoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFyID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNEZXZvbHZpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSToge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGlDcmVkaXRhZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaURldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX09VVFJBU19ERVNQRVNBUzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpT3V0cmFzRGVzcGVzYXMgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaVByZXN1bWlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Jc3MgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlzc1JldGlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbXBvc3RvSW1wb3J0YWNhbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXJJbXBvcnRhY2FvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhckltcG9ydGFjYW8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc1JldGlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DU0xMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Dc2xsUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUlJGOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcnJmUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUGF0cm9uYWwgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1Q6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNTdCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1GY3BTdCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNDb2JyYWRvQW50ZXJpb3JtZW50ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwQ29icmFkb0FudGVyaW9ybWVudGUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXMgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRWZldGl2YW1lbnRlQ3JlZGl0YWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1A6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc0RpZmVyaWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNEZXNvbmVyYWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRGlmZXJlbmNpYWxBbGljb3RhID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyZW1lbnRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc0ZhdHVyZW1lbnRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwVWZEZXN0aW5vID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNVZkRlc3Rpbm8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1Q6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkU2l0dWFjYW9UcmlidXRhcmlhID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVSTzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJY21zRnV0dXJvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc1NpbXBsZXMgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTdFNvbGlkYXJpbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTdFJldGlkb0FudCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkRmNwU3RSZWRpdG9BbnQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkRJRkFMX0RFVk9MVklETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWREaWZhbERldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJQ01TX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkRkNQX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfRkFUVVJBTUVOVE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyYW1lbnRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXF1aXJlZFNpdHVhY2FvVHJpYnV0YXJpYSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW1wb3N0b0NhbGN1bGFkbyhpbXBvc3RvOiBFbnVtVGlwb1RyaWJ1dG8pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLkRJRkFMICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTyAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uRElGQUxfREVWT0xWSURPICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk8gJiZcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLklDTVNfQ09CUkFET19BTlRFUklPUk1FTlRFX1NUICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5GQ1BfQ09CUkFET19BTlRFUklPUk1FTlRFX1NUICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfVE9UQUxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJvdW5kSW1wb3N0byhudW1iZXI6IGFueSwgZGVjaW1hbHM6IGFueSkge1xuICAgICAgICBjb25zdCB4ID0gTWF0aC5wb3coMTAsIE51bWJlcihkZWNpbWFscykgKyAxKTtcbiAgICAgICAgcmV0dXJuIChOdW1iZXIobnVtYmVyKSArIDEgLyB4KS50b0ZpeGVkKGRlY2ltYWxzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZE1lc3NhZ2VFcnJvckJhc2VEaWZlcmVudGUoXG4gICAgICAgIGltcG9zdG9zOiBzdHJpbmdbXSxcbiAgICAgICAgZ3J1cG86IGFueSxcbiAgICAgICAgc3VtbWFyeU1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgZGV0YWlsTWVzc2FnZTogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGltcG9zdG9GaWx0cmFkbyA9IGltcG9zdG9zLmZpbHRlcihcbiAgICAgICAgICAgIChpbXBvc3RvKSA9PlxuICAgICAgICAgICAgICAgICFbXG4gICAgICAgICAgICAgICAgICAgICdDQlNfRElGRVJJRE8nLFxuICAgICAgICAgICAgICAgICAgICAnSUJTX0VTVEFEVUFMX0RJRkVSSURPJyxcbiAgICAgICAgICAgICAgICAgICAgJ0lCU19NVU5JQ0lQQUxfRElGRVJJRE8nXG4gICAgICAgICAgICAgICAgXS5pbmNsdWRlcyhpbXBvc3RvKVxuICAgICAgICApO1xuXG4gICAgICAgIGxldCBjb250cm9sZUltcG9zdG8gPSB0aGlzLmNhbGN1bGFySW1wb3N0b3NUb3RhbChcbiAgICAgICAgICAgIGltcG9zdG9GaWx0cmFkbyxcbiAgICAgICAgICAgIGdydXBvXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGNvbnRyb2xlSW1wb3N0by5iYXNlRGlmZXJlbnRlKSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHN1bW1hcnlNZXNzYWdlKSxcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoZGV0YWlsTWVzc2FnZSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRyb2xlSW1wb3N0bztcbiAgICB9XG5cbiAgICAvLyBOw6NvIHV0aWxpemFyIGVzdGUgbcOpdG9kbyBwYXJhIGPDoWxjdWxvcyBkZSBpbXBvc3RvcyBkYSBSZWZvcm1hIFRyaWJ1dMOhcmlhLlxuICAgIHByaXZhdGUgY2FsY3VsYXJWYWxvcih0cmlidXRvOiBFbnVtVGlwb1RyaWJ1dG8pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZ3J1cG9zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmdydXBvcy5tYXAoKGdydXBvKSA9PiB7XG4gICAgICAgICAgICAgICAgZ3J1cG8uaXRlbVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChpdDogSXRlbSkgPT4gaXQubmFtZSA9PSB0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICAubWFwKChpdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGhhc1ZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhpdC5mb3JtR3JvdXAudmFsdWUpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXQuZm9ybUdyb3VwLnZhbHVlW2l0ZW1dICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNWYWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc1ZhbHVlICYmIHRoaXMuaW1wb3N0b0NhbGN1bGFkbyh0cmlidXRvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmJhc2VDYWxjdWxvICE9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmFsaXF1b3RhICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PSBFbnVtVGlwb1RyaWJ1dG8uSUNNUyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdC5mb3JtR3JvdXAuY29udHJvbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNpdHVhY2FvVHJpYnV0YXJpYSA9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2l0dWFjYW9UcmlidXRhcmlhLnZhbHVlID09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmJhc2VDYWxjdWxvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxpcXVvdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMuYWxpcXVvdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpcXVvdGEgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMudmFsb3IucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91bmRJbXBvc3RvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYXNlICogYWxpcXVvdGEpIC8gMTAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PSBFbnVtVGlwb1RyaWJ1dG8uSUNNUyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5zaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLmNvZFN0ciAhPSAnNTEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmJhc2VDYWxjdWxvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxpcXVvdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMuYWxpcXVvdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpcXVvdGEgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMudmFsb3IucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91bmRJbXBvc3RvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYXNlICogYWxpcXVvdGEpIC8gMTAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX0lOU1MgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1NFTkFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmdldCgnYmFzZUNhbGN1bG8nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlID8/IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxpcXVvdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuZ2V0KCdhbGlxdW90YScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWUgPz8gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy52YWxvci5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKGJhc2UgKiBhbGlxdW90YSkgLyAxMDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmJhc2VDYWxjdWxvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxpcXVvdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMuYWxpcXVvdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpcXVvdGEgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy52YWxvci5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3VuZEltcG9zdG8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJhc2UgKiBhbGlxdW90YSkgLyAxMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy52YWxvci5yZXNldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc051bGxPclVuZGVmaW5lZChiYXNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOdWxsT3JVbmRlZmluZWQoYWxpcXVvdGEpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaXNOdWxsT3JVbmRlZmluZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb2RpZ29UcmlidXRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmNvZGlnb1RyaWJ1dGFjYW8ucmVzZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9JTlNTIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfU0VOQVJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW1wb3N0b3MgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZVTlJVUkFMX0lOU1MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGVU5SVVJBTF9SQVQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGVU5SVVJBTF9TRU5BUidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xlRnVucnVyYWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkTWVzc2FnZUVycm9yQmFzZURpZmVyZW50ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3N0b3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lcnJvcl9iYXNlX2Z1bnJ1cmFsX2RpZmVyZW50ZV9zdW1tYXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZXJyb3JfYmFzZV9mdW5ydXJhbF9kaWZlcmVudGVfZGV0YWlsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZ1bnJ1cmFsVG90YWwgPSBncnVwby5pdGVtLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0ubmFtZSA9PT0gJ0ZVTlJVUkFMX1RPVEFMJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVucnVyYWxUb3RhbC5mb3JtR3JvdXAuc2V0VmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlQ2FsY3VsbzogY29udHJvbGVGdW5ydXJhbC5iYXNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxvcjogY29udHJvbGVGdW5ydXJhbC52YWxvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3N0b01hbnVhbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0VudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvXTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uTUFOVUFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXJJbXBvc3Rvc1RvdGFsKGltcG9zdG9zOiBhbnksIGdydXBvKSB7XG4gICAgICAgIGxldCB2YWxvcmVzID0ge1xuICAgICAgICAgICAgYmFzZTogMCxcbiAgICAgICAgICAgIHZhbG9yOiAwLFxuICAgICAgICAgICAgYmFzZURpZmVyZW50ZTogZmFsc2VcbiAgICAgICAgfTtcblxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgaW1wb3N0b3MubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBjb25zdCBpbXBvc3RvID0gZ3J1cG8uaXRlbS5maW5kKFxuICAgICAgICAgICAgICAgIChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IGltcG9zdG9zW2luZGV4XVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChpbXBvc3RvPy5mb3JtR3JvdXAudmFsdWUuYmFzZUNhbGN1bG8pKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB2YWxvcmVzLmJhc2UgPiAwICYmXG4gICAgICAgICAgICAgICAgICAgIHZhbG9yZXMuYmFzZSAhPSBpbXBvc3RvLmZvcm1Hcm91cC52YWx1ZS5iYXNlQ2FsY3Vsb1xuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB2YWxvcmVzLmJhc2VEaWZlcmVudGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhbG9yZXMuYmFzZSA9XG4gICAgICAgICAgICAgICAgICAgIGltcG9zdG8uZm9ybUdyb3VwLnZhbHVlLmJhc2VDYWxjdWxvID4gdmFsb3Jlcy5iYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGltcG9zdG8uZm9ybUdyb3VwLnZhbHVlLmJhc2VDYWxjdWxvXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHZhbG9yZXMuYmFzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChpbXBvc3RvPy5mb3JtR3JvdXAudmFsdWUudmFsb3IpKSB7XG4gICAgICAgICAgICAgICAgdmFsb3Jlcy52YWxvciA9IE51bWJlcihcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3VuZEltcG9zdG8oXG4gICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIodmFsb3Jlcy52YWxvcikgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlcihpbXBvc3RvLmZvcm1Hcm91cC52YWx1ZS52YWxvciksXG4gICAgICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbG9yZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUNhbXBvcyhjYW1wb3M6IENhbXBvVHJpYnV0b1tdLCB0cmlidXRvOiBFbnVtVGlwb1RyaWJ1dG8pIHtcbiAgICAgICAgY29uc3QgcmV0b3JubzogYW55ID0ge307XG4gICAgICAgIGNvbnN0IGZvcm1GaWVsZDogRm9ybUZpZWxkW10gPSBbXTtcbiAgICAgICAgbGV0IGZvcm1Hcm91cDogYW55ID0ge307XG5cbiAgICAgICAgY2FtcG9zLm1hcCgoaXQpID0+IHtcbiAgICAgICAgICAgIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGJhc2VDYWxjdWxvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGl0LmRpc2FibGVkID8/IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQmFzZUNhbGN1bG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Jhc2VDYWxjdWxvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19iYXNlX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKHRyaWJ1dG8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXJWYWxvcih0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZCgnYmFzZUNhbGN1bG8nLCB0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGl0LmRpc2FibGVkID8/IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTkuOTk5OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0FsaXF1b3RhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhbGlxdW90YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5nZXRMYWJlbEFsaXF1b3RhKHRyaWJ1dG8pLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKHRyaWJ1dG8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXJWYWxvcih0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZCgnYWxpcXVvdGEnLCB0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5SZWR1Y2FvQWxpcXVvdGFHb3Zlcm5hbWVudGFsXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgcmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbDogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnUmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVkdWNhb19hbGlxdW90YV9nb3Zlcm5hbWVudGFsX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogMTAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICByZWR1Y2FvQWxpcXVvdGE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDEwMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1JlZHVjYW9BbGlxdW90YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVkdWNhb0FsaXF1b3RhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZWR1Y2FvX2FsaXF1b3RhX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogMTAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhRWZldGl2YSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBhbGlxdW90YUVmZXRpdmE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaXQuZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQWxpcXVvdGFFZmV0aXZhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhbGlxdW90YUVmZXRpdmEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2FsaXF1b3RhX2VmZXRpdmFfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFJbnRlcm5hKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhSW50ZXJuYTogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTkuOTk5OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0FsaXF1b3RhSW50ZXJuYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYWxpcXVvdGFJbnRlcm5hJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19hbGlxdW90YV9pbnRlcm5hX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmFEZXN0aW5vKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhSW50ZXJuYURlc3Rpbm86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5Ljk5OTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdBbGlxdW90YUludGVybmFEZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhbGlxdW90YUludGVybmFEZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19hbGlxdW90YV9pbnRlcm5hX2Rlc3Rpbm9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHZhbG9yOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGl0LmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnVmFsb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZCgndmFsb3InLCB0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yQnJ1dG8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3JCcnV0b0ltcG9zdG86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaXQuZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdWYWxvckJydXRvSW1wb3N0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndmFsb3JCcnV0b0ltcG9zdG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3ZhbG9yX2JydXRvX2ltcG9zdG9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3JJc2VudGFzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdWYWxvcklzZW50YXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9ySXNlbnRhcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfdmFsb3JfaXNlbnRhc19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICB2YWxvck91dHJhczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnVmFsb3JPdXRyYXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9yT3V0cmFzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9vdXRyYXNfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHNpdHVhY2FvVHJpYnV0YXJpYTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgbGV0IHNlYXJjaEdyaWRGaWVsZHMhOiBGb3JtRmllbGRbXTtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEdyaWRGaWVsZHMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NvZFN0cicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLlN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZGVzU3RyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuU3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd0aXBJbXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bS50aXBfaW1wX3Bpc19jb2ZpbnMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBJbXBDc3QuUElTX0NPRklOU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtLnRpcF9pbXBfaXBpJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtVGlwSW1wQ3N0LklQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtLnRpcF9pbXBfaWNtcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVRpcEltcENzdC5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW0udGlwX2ltcF9pc3MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBJbXBDc3QuSVNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd0aXBPcGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bS50aXBfb3BlX3Zfc2FpZGEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBPcGUuVlNBSURBXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW0udGlwX29wZV92X2VudHJhZGEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBPcGUuVkVOVFJBREFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bS50aXBfb3BlX3ZfYW1ib3MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBPcGUuVkFNQk9TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IGRlZmF1bHRGaWx0ZXIgPSBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnZXhjbHVpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnZmFsc2UnXVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3RpcEltcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogW21hcEVudW1UaXBvVHJpYnV0b1RvRW51bVRpcEltcENzdCh0cmlidXRvKV1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICd0aXBPcGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFtFbnVtVGlwT3BlLlZBTUJPUywgRW51bVRpcE9wZS5WU0FJREFdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogW0VudW1UaXBPcGUuVkFNQk9TLCBFbnVtVGlwT3BlLlZFTlRSQURBXVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3NpdHVhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbJ1ZBVElWTyddXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uQ0JTIHx8XG4gICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUwgfHxcbiAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUwgfHxcbiAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkNCU19FU1RPUk5PX0NSRURJVE8gfHxcbiAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLklCU19FU1RPUk5PX0NSRURJVE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXIgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5kZWZhdWx0RmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEuaW5kR0VzdG9ybm9DcmVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DQlNfRVNUT1JOT19DUkVESVRPIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUT1JOT19DUkVESVRPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogRW51bUxvZ2ljYWxPcGVyYXRvci5OZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnRVhJR0UnXVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5lMDI3U3RyTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5kb21pbmlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hHcmlkRmllbGRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0odHJpYnV0bykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdTaXR1YWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfc2l0dWFjYW9fdHJpYnV0YXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5jbGFzc2lmaWNhY2FvVHJpYnV0YXJpYUxvb2t1cC5tb3VudE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg6ICdlcnB4X2NwbF9pbXAuaW1wb3N0b3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5kb21pbmlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXI6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdzaXR1YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydBVElWTyddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5RmllbGRzOiBbJ2UwMjdzdHIuaWQnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlEZXBlbmRlbmN5OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdlMDI3c3RyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0b3Juby5mb3JtR3JvdXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l0dWFjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKHRyaWJ1dG8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2NsYXNzaWZpY2FjYW9fdHJpYnV0YXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5FbnF1YWRyYW1lbnRvSXBpKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGVucXVhZHJhbWVudG9JcGk6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5lMDI3ZXFpTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5kb21pbmlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdlMDI3ZXFpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6ICdlbnF1YWRyYW1lbnRvSXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnc2l0dWFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnVkFUSVZPJ11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdleGNsdWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydmYWxzZSddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0VucXVhZHJhbWVudG9JcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2VucXVhZHJhbWVudG9faXBpX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNiwgbGc6IDYsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBwZXJjZW50dWFsUmVkdWNhbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCgxMDApXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdQZXJjZW50dWFsUmVkdWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGVyY2VudHVhbFJlZHVjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3BlcmNlbnR1YWxfcmVkdWNhb19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAxMDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgcGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCgxMDAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcGVyY2VudHVhbF9tdmFfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogMTAwMCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLk1vdGl2b0Rlc29uZXJhY2FvSWNtcykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBkZXNvbmVyYWNhb0ljbXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnTW90aXZvRGVzb25lcmFjYW9JY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkZXNvbmVyYWNhb0ljbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2Rlc29uZXJhY2FvX2ljbXNfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8wJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlYxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlY0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfNSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl82J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WNlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlY3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfOCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl85J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WOVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzEwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WMTBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8xMSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjExXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMTInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlYxMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzE2J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WMTZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl85MCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjkwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19kZXNvbmVyYWNhb19pY21zX3BsYWNlaG9sZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZlbnQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5PcmlnZW0pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2VtOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ09yaWdlbScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnb3JpZ2VtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX29yaV9tZXJfdl8wJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU9yaU1lci5WMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtT3JpTWVyLlYxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfMidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1PcmlNZXIuVjJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX29yaV9tZXJfdl8zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU9yaU1lci5WM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtT3JpTWVyLlY0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfNSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1PcmlNZXIuVjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX29yaV9tZXJfdl82J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU9yaU1lci5WNlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtT3JpTWVyLlY3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfOCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1PcmlNZXIuVjhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX29yaWdlbV9pY21zX3BsYWNlaG9sZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19vcmlnZW1faWNtc19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDYsIGxnOiA2LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFldmVudCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxEaWZlcmltZW50bykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBhbGlxdW90YTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnUGVyY2VudHVhbERpZmVyaW1lbnRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhbGlxdW90YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcGVyY2VudHVhbF9kaWZlcmltZW50b19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhclZhbG9yKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogMTAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHBlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWw6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnUGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcGVyY2VudHVhbF9zdXBvcnRhZG9fY29uc3VtaWRvcl9maW5hbF9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAxMDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5WYWxvclJlY29saGlkb1BlbG9TdWJzdGl0dXRvXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3JSZWNvbGhpZG9JY21zU3Q6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1ZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9yUmVjb2xoaWRvSWNtc1N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9yZWNvbGhpZG9fcGVsb19zdWJzdGl0dXRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHZhbG9ySWNtc1N0UmV0aWRvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnVmFsb3JJY21zU3RSZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9ySWNtc1N0UmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9pY21zX3N0X3JldGlkb19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDEzLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5Nb2RhbGlkYWRlQkMpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgbW9kYWxpZGFkZUJDOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ01vZGFsaWRhZGVCYycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbW9kYWxpZGFkZUJDJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vZGFsaWRhZGVfYmNfdl8wJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vZEJjLlYwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb2RhbGlkYWRlX2JjX3ZfMSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb2RCYy5WMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW9kYWxpZGFkZV9iY192XzInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW9kQmMuVjJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vZGFsaWRhZGVfYmNfdl8zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vZEJjLlYzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tb2RhbGlkYWRlX2JjX3BsYWNlaG9sZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tb2RhbGlkYWRlX2JjX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNiwgbGc6IDYsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV2ZW50KSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLk5hdHVyZXphUmVjZWl0YSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBuYXR1cmV6YVJlY2VpdGE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5uYXR1cmV6YVJlY2VpdGFMb29rdXAubW91bnRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluOiB0aGlzLmRvbWluaW8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZTogdGhpcy5zZXJ2aWNvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogJ25hdHVyZXphUmVjZWl0YScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwU29ydDogW3sgZmllbGQ6ICdjb2RpZ28nLCBvcmRlcjogMSB9XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hTb3J0OiBbeyBmaWVsZDogJ2NvZGlnbycsIG9yZGVyOiAxIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnTmF0dXJlemFSZWNlaXRhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19uYXR1cmV6YV9yZWNlaXRhX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNiwgbGc6IDYsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5PYnNlcnZhY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmFjYW86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDEyMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ09ic2VydmFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ29ic2VydmFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX29ic2VydmFjYW9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLlN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X2xlbmd0aF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3JEZWR1Y2FvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAndmFsb3JEZWR1Y2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd2YWxvckRlZHVjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3ZhbG9yX2RlZHVjYW9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5JbmRpY2F0aXZvQXF1aXNpY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGluZGljYXRpdm9BcXVpc2ljYW86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0luZGljYXRpdm9BcXVpc2ljYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2luZGljYXRpdm9BcXVpc2ljYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2luZGljYXRpdm9fYXF1aXNpY2FvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192MSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhby5WMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2Z1bnJ1cmFsX2luZGljYXRpdm9fYXF1aXNpY2FvX3YyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLlYzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZnVucnVyYWxfaW5kaWNhdGl2b19hcXVpc2ljYW9fdjMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192NCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhby5WNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2Z1bnJ1cmFsX2luZGljYXRpdm9fYXF1aXNpY2FvX3Y1J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLlY2LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZnVucnVyYWxfaW5kaWNhdGl2b19hcXVpc2ljYW9fdjYnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192NydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGNvZGlnb0FycmVjYWRhY2FvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDYpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdDb2RpZ29BcnJlY2FkYWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY29kaWdvQXJyZWNhZGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2NvZGlnb19hcnJlY2FkYWNhb19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuU3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfbGVuZ3RoX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgY29kaWdvVHJpYnV0YWNhbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heExlbmd0aCg1KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQ29kaWdvVHJpYnV0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY29kaWdvVHJpYnV0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfY29kaWdvX3RyaWJ1dGFjYW9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLlN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X2xlbmd0aF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkltcG9zdG9OYW9SZWN1cGVyYWRvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIEltcG9zdG9OYW9SZWN1cGVyYWRvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdJbXBvc3RvTmFvUmVjdXBlcmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnSW1wb3N0b05hb1JlY3VwZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2ltcG9zdG9fbmFvX3JlY3VwZXJhZG8nXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLmJhc2VDYWxjdWxvQ3JlZGl0bykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBiYXNlQ2FsY3Vsb0NyZWRpdG86IFt7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9XVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnYmFzZUNhbGN1bG9DcmVkaXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdiYXNlQ2FsY3Vsb0NyZWRpdG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl80J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WNFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl81J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl82J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WNlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl83J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WN1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl84J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WOFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl85J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WOVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjEwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzExJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xMydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjEzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzE0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xNidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjE2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzE3J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxOFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYmFzZV9jYWxjdWxvX2NyZWRpdG9fcGxhY2Vob2xkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2Jhc2VfY2FsY3Vsb19jcmVkaXRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNiwgbGc6IDYsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV2ZW50KSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgcmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdyZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdyZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3JlZ190cmlidXRfcGlzX2NvZmluc19jdW11bGF0aXZvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMuQ1VNVUxBVElWT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fcmVnX3RyaWJ1dF9waXNfY29maW5zX25hb19jdW11bGF0aXZvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMuTkFPX0NVTVVMQVRJVk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlZ2ltZV90cmlidXRhcmlvX3Bpc19jb2ZpbnNfcGxhY2Vob2xkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlZ2ltZV90cmlidXRhcmlvX3Bpc19jb2ZpbnNfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA2LCBsZzogNiwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZlbnQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWxcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBwZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDEwMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ3BlcmNlbnR1YWxTdXNwZW5zYW9QYXJjaWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcGVyY2VudHVhbF9zdXNwZW5zYW9fcGFyY2lhbF9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAxMDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkJlbmVmaWNpb0Zpc2NhbCkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBiZW5lZmljaW9GaXNjYWw6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmJlbmVmaWNpb0Zpc2NhbExvb2t1cC5tb3VudE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW46IHRoaXMuZG9taW5pbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOiB0aGlzLnNlcnZpY28sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiAnYmVuZWZpY2lvRmlzY2FsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnZXhjbHVpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnZmFsc2UnXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2JlbmVmaWNpb19maXNjYWxfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkNzdERlc29uZXJhY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHNpdHVhY2FvVHJpYnV0YXJpYTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5lMDI3U3RyTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4OiAnZXJweF9jcGxfaW1wLmltcG9zdG9zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAndGlwT3BlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcE9wZS5WRU5UUkFEQSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwT3BlLlZTQUlEQSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwT3BlLlZBTUJPU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3NpdHVhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbRW51bVNpdHVhY2FvLlZBVElWT11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdleGNsdWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydmYWxzZSddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAndGlwSW1wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbRW51bVRpcEltcENzdC5DQlNfSUJTXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6ICdzaXR1YWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2lnbjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweF9jcGxfaW1wLmltcG9zdG9zLmNzdF9kZXNvbmVyYWNhb19pbmZvX3NpZ24nXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHhfY3BsX2ltcC5pbXBvc3Rvcy5zaXR1YWNhb190cmlidXRhcmlhX2Rlc29uZXJhY2FvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYURlc29uZXJhY2FvXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFMb29rdXAubW91bnRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg6ICdlcnB4X2NwbF9pbXAuaW1wb3N0b3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXI6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdzaXR1YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1TaXR1YWNhb0NsYXNzaWZpY2FjYW9UcmlidXRhcmlhLkFUSVZPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2t1cFNvcnQ6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdjb2RpZ28nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoU29ydDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2NvZGlnbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlEZXBlbmRlbmN5OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdlMDI3c3RyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0b3Juby5mb3JtR3JvdXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l0dWFjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaWduOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4X2NwbF9pbXAuaW1wb3N0b3MuY2xhc3NpZmljYWNhb190cmlidXRhcmlhX2Rlc29uZXJhY2FvX2luZm9fc2lnbidcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweF9jcGxfaW1wLmltcG9zdG9zLmNsYXNzaWZpY2FjYW9fdHJpYnV0YXJpYV9kZXNvbmVyYWNhbydcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50b1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIFtFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG9dOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLk5FTkhVTSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hcGxpY2FyX3ZhbG9yX2xpcXVpZG9fZG9jdW1lbnRvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0ZpZWxkUmVxdWlyZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkNCU19DUkVESVRPX1BSRVNVTUlETyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9hcGxpY2FyX3ZhbG9yX2xpcXVpZG9fZG9jdW1lbnRvX3N1YnRyYWlyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8uU1VCVFJBSVJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fYXBsaWNhcl92YWxvcl9saXF1aWRvX2RvY3VtZW50b19zb21hcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLlNPTUFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9hcGxpY2FyX3ZhbG9yX2xpcXVpZG9fZG9jdW1lbnRvX25lbmh1bSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLk5FTkhVTVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uRXNjcml0dXJhckFsaXF1b3RhSVNTKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIFtFbnVtQ2FtcG9UcmlidXRvLkVzY3JpdHVyYXJBbGlxdW90YUlTU106IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUVzY3JpdHVyYXJBbGlxdW90YUlTUy5TSU0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1DYW1wb1RyaWJ1dG8uRXNjcml0dXJhckFsaXF1b3RhSVNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZXNjcml0dXJhcl9hbGlxdW90YV9pc3MnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZXNjcml0dXJhcl9hbGlxdW90YV9pc3Nfc2ltJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUVzY3JpdHVyYXJBbGlxdW90YUlTUy5TSU1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2VzY3JpdHVyYXJfYWxpcXVvdGFfaXNzX25hbydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Fc2NyaXR1cmFyQWxpcXVvdGFJU1MuTkFPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09XG4gICAgICAgICAgICAgICAgRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYUNyZWRpdG9QcmVzdW1pZG9cbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmNsYXNzaWZpY2FjYW9UcmlidXRhcmlhTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeDogJ2VycHhfY3BsX2ltcC5pbXBvc3RvcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnc2l0dWFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnQVRJVk8nXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2NyZWRpdG9QcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsndHJ1ZSddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnZTAyN3N0cicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5JcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogW251bGxdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2NsYXNzaWZpY2FjYW9fdHJpYnV0YXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0ZpZWxkUmVxdWlyZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuc3VnZXN0b2VzKSB7XG4gICAgICAgICAgICB0aGlzLnN1Z2VzdG9lc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHN1Z2VzdGFvKSA9PiBzdWdlc3Rhby50aXBvVHJpYnV0byA9PT0gdHJpYnV0bylcbiAgICAgICAgICAgICAgICAuZm9yRWFjaCgoc3VnZXN0YW8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoc3VnZXN0YW8pXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChhdHJpYnV0b3MpID0+IGF0cmlidXRvc1swXSAhPT0gJ3RpcG9UcmlidXRvJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKChhdHJpYnV0b3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBbYXRyaWJ1dG9zWzBdXVswXS52YWx1ZSA9IGF0cmlidXRvc1sxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0b3Juby5mb3JtRmllbGQgPSBmb3JtRmllbGQ7XG4gICAgICAgIHJldG9ybm8uZm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICBpbXBvc3RvTWFudWFsOiBbXG4gICAgICAgICAgICAgICAgeyB2YWx1ZTogZmFsc2UsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9dOiBbXG4gICAgICAgICAgICAgICAgeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgXVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmV0b3JubztcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVWYWx1ZUNoYW5nZXMoeyBpdGVtIH06IHsgaXRlbTogSXRlbTsgZ3JvdXA6IEdyb3VwIH0pIHtcbiAgICAgICAgaXRlbS5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgoaXRlbS5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKSksXG4gICAgICAgICAgICAgICAgLy8gV2UgYXJlIHVzaW5nIGRlYm91bmNlVGltZSBoZXJlIGJlY2F1c2Ugb3VyIExvb2t1cCBDb21wb25lbnQgaXMgZW1pdHRpbmcgdHdvIGV2ZW50cyB1bmZvcnR1bmF0ZWx5LlxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MCksXG4gICAgICAgICAgICAgICAgc2NhbihcbiAgICAgICAgICAgICAgICAgICAgKGFjYykgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nVmFsdWU6IGFjYy5zdGFydGluZ1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlOiBpdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydGluZ1ZhbHVlOiBpdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlOiBpdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh7IHN0YXJ0aW5nVmFsdWUsIGN1cnJlbnRWYWx1ZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFzdGFydGluZ1ZhbHVlLmltcG9zdG9NYW51YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoc3RhcnRpbmdWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ICE9PSAnaW1wb3N0b01hbnVhbCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSAhPT0gRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmV2ZXJ5KChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0eXBlIH0gPSBpdGVtLmZvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSBrZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gRmllbGRUeXBlLkxvb2t1cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhS2V5IH0gPSBpdGVtLmZvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0ga2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIExvb2t1cEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nVmFsdWU/LltrZXldPy5bZGF0YUtleV0gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlPy5ba2V5XT8uW2RhdGFLZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXJ0aW5nVmFsdWVba2V5XSA9PT0gY3VycmVudFZhbHVlW2tleV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ2ltcG9zdG9NYW51YWwnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWx1ZShmYWxzZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdpbXBvc3RvTWFudWFsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0VmFsdWUodHJ1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBzdGFydGluZ1ZhbHVlW0VudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvXSAhPT1cbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5NQU5VQUxcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoc3RhcnRpbmdWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ICE9PSAnaW1wb3N0b01hbnVhbCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSAhPT0gRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmV2ZXJ5KChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0eXBlIH0gPSBpdGVtLmZvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSBrZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gRmllbGRUeXBlLkxvb2t1cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhS2V5IH0gPSBpdGVtLmZvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0ga2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIExvb2t1cEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nVmFsdWU/LltrZXldPy5bZGF0YUtleV0gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlPy5ba2V5XT8uW2RhdGFLZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXJ0aW5nVmFsdWVba2V5XSA9PT0gY3VycmVudFZhbHVlW2tleV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydGluZ1ZhbHVlW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWx1ZShFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLk1BTlVBTCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExhYmVsQWxpcXVvdGEodHJpYnV0bzogRW51bVRpcG9UcmlidXRvKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRyaWJ1dG8gPT0gRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOTyB8fFxuICAgICAgICAgICAgdHJpYnV0byA9PSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklET1xuICAgICAgICApXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYWxpcXVvdGFfaW50ZXJlc3RhZHVhbF9sYWJlbCdcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdHJpYnV0by50b1N0cmluZygpLmVuZHNXaXRoKCdfRElGRVJJRE8nKSAmJlxuICAgICAgICAgICAgdHJpYnV0byAhPT0gRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE9cbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYWxpcXVvdGFfZGlmZXJpZG9fbGFiZWwnXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX2FsaXF1b3RhX2xhYmVsJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRyYW5zbGF0ZUJ1dHRvbih2YWx1ZTogYW55KSB7XG4gICAgICAgIGxldCB0cmFuc2xhdGUgPSAnLmJ1dHRvbl9tZW1vcmlhX2NhbGN1bG9fZW1wdHlfbGFiZWwnO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmlkc1RheGVzTWVtb3JpYUNhbGN1bG8uZmluZCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC50aXBvVHJpYnV0byA9PSB2YWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmlkUGFyYW1ldHJvICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRyYW5zbGF0ZSA9ICcuYnV0dG9uX21lbW9yaWFfY2FsY3Vsb19sYWJlbCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wcmVmaXhMYWJlbCArIHRyYW5zbGF0ZTtcbiAgICB9XG5cbiAgICBpc0dyb3VwSW52YWxpZChncm91cDoge1xuICAgICAgICBncnVwbzogc3RyaW5nO1xuICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgICBmb3JtRmllbGQ6IEZvcm1GaWVsZFtdO1xuICAgICAgICAgICAgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gICAgICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICB9W107XG4gICAgfSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZ3JvdXA/Lml0ZW0/LnNvbWUoKGl0ZW0pID0+IGl0ZW0/LmZvcm1Hcm91cD8uaW52YWxpZCk7XG4gICAgfVxuXG4gICAgaXNCYWRnZVZpc2libGUoaXRlbTogSXRlbSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgaXNUYXhGcm9tVGF4UmVmb3JtKGl0ZW0ubmFtZSBhcyBFbnVtVGlwb1RyaWJ1dG8pICYmXG4gICAgICAgICAgICAhIWl0ZW0uZm9ybUdyb3VwLmdldChFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0bykudmFsdWVcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRCYWRnZUNvbG9yKGl0ZW06IEl0ZW0pOiBCYWRnZUNvbG9ycyB7XG4gICAgICAgIHN3aXRjaCAoaXRlbS5mb3JtR3JvdXAuZ2V0KEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvKS52YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLkNBTENVTEFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gQmFkZ2VDb2xvcnMuR3JlZW47XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uSEVSREFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gQmFkZ2VDb2xvcnMuQmx1ZTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5NQU5VQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEJhZGdlQ29sb3JzLlllbGxvdztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEJhZGdlQ29sb3JzLlllbGxvdztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEJhZGdlVGV4dChpdGVtOiBJdGVtKTogc3RyaW5nIHtcbiAgICAgICAgc3dpdGNoIChpdGVtLmZvcm1Hcm91cC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pLnZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uQ0FMQ1VMQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19jYWxjdWxvX2F1dG9tYXRpY28nXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5IRVJEQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19jYWxjdWxvX2dlcmFkb192aWFfcHJvY2Vzc28nXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5NQU5VQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2NhbGN1bG9fbWFudWFsJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19jYWxjdWxvX21hbnVhbCdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRCYWRnZUluZm9TaWduKGl0ZW06IEl0ZW0pOiB7IHRleHQ6IHN0cmluZyB9IHtcbiAgICAgICAgaWYgKGl0ZW0uZm9ybUdyb3VwLmdldCgnaW1wb3N0b01hbnVhbCcpLnZhbHVlKVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19pbmZvX3NpZ25fdGV4dF9tYW51YWwnXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfTtcblxuICAgICAgICBzd2l0Y2ggKGl0ZW0uZm9ybUdyb3VwLmdldChFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0bykudmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5DQUxDVUxBRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2luZm9fc2lnbl90ZXh0X2NhbGN1bGFkbydcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uSEVSREFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYmFkZ2VfdGlwb19jYWxjdWxvX2ltcG9zdG9faW5mb19zaWduX3RleHRfaGVyZGFkbydcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uTUFOVUFMOlxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19pbmZvX3NpZ25fdGV4dF9tYW51YWwnXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2luZm9fc2lnbl90ZXh0X21hbnVhbCdcbiAgICAgICAgICAgIClcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSW52b2ljZURvY3VtZW50KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZScgfHxcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZpZWxkUmVxdWlyZWQoZmllbGQ6IHN0cmluZywgdGF4VHlwZTogRW51bVRpcG9UcmlidXRvKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmdydXBvc1xuICAgICAgICAgICAgLmZpbmQoKGdyb3VwKSA9PiBncm91cC5pdGVtLmZpbmQoKGl0ZW0pID0+IGl0ZW0ubmFtZSA9PT0gdGF4VHlwZSkpXG4gICAgICAgICAgICAuaXRlbS5maW5kKChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IHRheFR5cGUpO1xuXG4gICAgICAgIHJldHVybiBpdGVtLmZvcm1Hcm91cC5nZXQoZmllbGQpLnZhbGlkYXRvcj8uKHt9IGFzIEFic3RyYWN0Q29udHJvbClcbiAgICAgICAgICAgID8ucmVxdWlyZWQ7XG4gICAgfVxufVxuIl19
5071
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLWVtcHJlc2FyaWFsL2VycHgtY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdHJpYnV0b3MvZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sYUFBYSxFQUNoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsZUFBZSxFQUNmLFdBQVcsRUFDWCxXQUFXLEVBQ1gsU0FBUyxFQUNULFVBQVUsRUFDYixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFDSCxxQkFBcUIsRUFDckIsNkJBQTZCLEVBQzdCLDZDQUE2QyxFQUM3QyxhQUFhLEVBQ2IsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDeEIsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RCxPQUFPLEVBQ0gsV0FBVyxFQUNYLGVBQWUsRUFDZixjQUFjLEVBQ2QsVUFBVSxFQUNWLHFCQUFxQixFQUNyQixTQUFTLEVBQ1QsU0FBUyxFQUNULGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsV0FBVyxFQUNkLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQztBQUNyQyxPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFB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RUFBRTsyREFBdUI7SUFDdEI7UUFBUixLQUFLLEVBQUU7a0VBQTBCO0lBRWxDO1FBREMsS0FBSyxFQUFFO3dEQUdQO0lBSVE7UUFBUixLQUFLLEVBQUU7eURBQWtCO0lBQ2pCO1FBQVIsS0FBSyxFQUFFO3lEQUFrQjtJQUNqQjtRQUFSLEtBQUssRUFBRTt1RUFJTjtJQUNPO1FBQVIsS0FBSyxFQUFFO3dFQUFpRDtJQUNoRDtRQUFSLEtBQUssRUFBRTswRUFBb0M7SUFFbEM7UUFBVCxNQUFNLEVBQUU7Z0VBQTRDO0lBdEI1QyxvQkFBb0I7UUFMaEMsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLGNBQWM7WUFDeEIsb21IQUE0Qzs7U0FFL0MsQ0FBQztPQUNXLG9CQUFvQixDQTgrT2hDO0lBQUQsMkJBQUM7Q0FBQSxBQTkrT0QsSUE4K09DO1NBOStPWSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJZGVudGlmaWVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RDb250cm9sLFxuICAgIEZvcm1CdWlsZGVyLFxuICAgIEZvcm1Db250cm9sLFxuICAgIEZvcm1Hcm91cCxcbiAgICBWYWxpZGF0b3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gICAgQmVuZWZpY2lvRmlzY2FsTG9va3VwLFxuICAgIENsYXNzaWZpY2FjYW9UcmlidXRhcmlhTG9va3VwLFxuICAgIENwbFRyaU5vdGFTYWlkYU5hdHVyZXphUmVjZWl0YVBpc0NvZmluc0xvb2t1cCxcbiAgICBFMDI3RXFpTG9va3VwLFxuICAgIEUwMjdTdHJMb29rdXAsXG4gICAgRW51bUxvZ2ljYWxPcGVyYXRvcixcbiAgICBMb29rdXBWYWxpZGF0aW9uVXRpbHNcbn0gZnJvbSAnQHNlbmlvci1nZXN0YW8tZW1wcmVzYXJpYWwvYW5ndWxhci1jb21wb25lbnRzJztcbmltcG9ydCB7XG4gICAgQmFkZ2VDb2xvcnMsXG4gICAgQnV0dG9uQW5pbWF0aW9uLFxuICAgIEJ1dHRvblByaW9yaXR5LFxuICAgIEJ1dHRvblNpemUsXG4gICAgQ2FsZW5kYXJMb2NhbGVPcHRpb25zLFxuICAgIEZpZWxkVHlwZSxcbiAgICBGb3JtRmllbGQsXG4gICAgaXNOdWxsT3JVbmRlZmluZWQsXG4gICAgTG9jYWxlU2VydmljZSxcbiAgICBMb29rdXBGaWVsZFxufSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzJztcbmltcG9ydCB7IEdUYWdTZXJ2aWNlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL3BsYXRmb3JtLXV0aWxzJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IE1lbnVJdGVtLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgc2Nhbiwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRW51bVNpdHVhY2FvQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEgfSBmcm9tICcuLi8uLi9jb3JlL2VudW1zL2VudW0tY2xhc3NpZmljYWNhby10cmlidXRhcmlhJztcbmltcG9ydCB7IEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8gfSBmcm9tICcuLi8uLi9jb3JlL2VudW1zL2VudW0tdGlwby1jYWxjdWxvLWltcG9zdG8nO1xuaW1wb3J0IHsgRXJwVHJpYnV0b3NTZXJ2aWNlIH0gZnJvbSAnLi9lcnAtdHJpYnV0b3Muc2VydmljZSc7XG5pbXBvcnQge1xuICAgIENhbXBvVHJpYnV0byxcbiAgICBFbnVtQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50byxcbiAgICBFbnVtQ2FtcG9UcmlidXRvLFxuICAgIEVudW1Fc2NyaXR1cmFyQWxpcXVvdGFJU1MsXG4gICAgRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhbyxcbiAgICBFbnVtR3J1cG9UcmlidXRvLFxuICAgIEVudW1Nb2RCYyxcbiAgICBFbnVtTW90RGVzLFxuICAgIEVudW1PcmlNZXIsXG4gICAgRW51bVJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMsXG4gICAgRW51bVNpdHVhY2FvLFxuICAgIGVudW1UaXBDcmVkUmVjdXAsXG4gICAgRW51bVRpcEltcENzdCxcbiAgICBFbnVtVGlwT3BlLFxuICAgIEVudW1UaXBvVHJpYnV0byxcbiAgICBJdGVtLFxuICAgIFN1Z2VzdGFvLFxuICAgIFRheENhbGN1bGF0aW9uTWVtb3J5XG59IGZyb20gJy4vZXJwLXRyaWJ1dG9zLnR5cGVzJztcbmltcG9ydCB7IG1hcEVudW1UaXBvVHJpYnV0b1RvRW51bVRpcEltcENzdCB9IGZyb20gJy4vbWFwcGluZ3MvZW51bS10aXAtaW1wLWNzdC1tYXBwaW5nJztcbmltcG9ydCB7IFJ1bGVzU2VydmljZSB9IGZyb20gJy4vcnVsZXMvcnVsZXMuc2VydmljZSc7XG5pbXBvcnQgeyBpc1RheEZyb21UYXhSZWZvcm0gfSBmcm9tICcuL3RheC1yZWZvcm0tdXRpbGl0aWVzJztcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICcuL3R5cGVzL2NvbnRleHQnO1xuaW1wb3J0IHsgR3JvdXAgfSBmcm9tICcuL3R5cGVzL2dyb3VwJztcbmltcG9ydCB7IFRheCB9IGZyb20gJy4vdHlwZXMvdGF4JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlcnAtdHJpYnV0b3MnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lcnAtdHJpYnV0b3MuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2VycC10cmlidXRvcy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEVycFRyaWJ1dG9zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KClcbiAgICBjb250ZXh0OiBDb250ZXh0O1xuICAgIEBJbnB1dCgpIHN1Z2VzdG9lczogU3VnZXN0YW9bXTtcbiAgICBASW5wdXQoKSBjYW1wb3NCbG9xdWVhZG9zID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgdHJpYnV0b3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyaWJ1dG9zVmFsdWU7XG4gICAgfVxuICAgIHNldCB0cmlidXRvcyh2YWwpIHtcbiAgICAgICAgdGhpcy50cmlidXRvc1ZhbHVlID0gdmFsO1xuICAgIH1cbiAgICBASW5wdXQoKSBkb21pbmlvPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHNlcnZpY28/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgY3VycmVuY3lMb2NhbGVPcHRpb25zPzogYW55ID0ge1xuICAgICAgICBjdXJyZW5jeVN5bWJvbDogJycsXG4gICAgICAgIGRlY2ltYWxTZXBhcmF0b3I6ICcsJyxcbiAgICAgICAgdGhvdXNhbmRzU2VwYXJhdG9yOiAnLidcbiAgICB9O1xuICAgIEBJbnB1dCgpIGlkc1RheGVzTWVtb3JpYUNhbGN1bG8/OiBUYXhDYWxjdWxhdGlvbk1lbW9yeVtdO1xuICAgIEBJbnB1dCgpIHBlcm1pc3Npb25NZW1vcmlhQ2FsY3Vsbz86IGJvb2xlYW47XG5cbiAgICBAT3V0cHV0KCkgdHJpYnV0b3NDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRheFtdPigpO1xuXG4gICAgcmVhZG9ubHkgQmFkZ2VDb2xvcnMgPSBCYWRnZUNvbG9ycztcbiAgICByZWFkb25seSBCdXR0b25Qcmlvcml0eSA9IEJ1dHRvblByaW9yaXR5O1xuICAgIHJlYWRvbmx5IEJ1dHRvblNpemUgPSBCdXR0b25TaXplO1xuICAgIHJlYWRvbmx5IEJ1dHRvbkFuaW1hdGlvbiA9IEJ1dHRvbkFuaW1hdGlvbjtcblxuICAgIHB1YmxpYyBncnVwb3M6IEdyb3VwW10gPSBbXTtcbiAgICBwdWJsaWMgdHJpYnV0b3NWYWx1ZTogVGF4W10gPSBbXTtcbiAgICBwdWJsaWMgcmVsb2FkID0gdHJ1ZTtcbiAgICBwdWJsaWMgaW5kZXhBY2NvcmRpb246IG51bWJlcltdID0gW107XG4gICAgcHVibGljIHByZWZpeExhYmVsOiBzdHJpbmc7XG5cbiAgICBpc0xvYWRpbmcgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgbWVudUl0ZW1QaXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ29maW5zID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlwaSA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1Jc3MgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtSW1wb3J0YWNvZXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtUmV0ZW5jb2VzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbVJldGVuY29lc0Z1bnJ1cmFsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUljbXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ2lkZVRlY25vbG9naWEgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ0JTID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlCU0VzdGFkdWFsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlCU011bmljaXBhbCA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1JQlNDcmVkaXRvUHJlc3VtaWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlTID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUNCU19JQlNfRVNUT1JOT19DUkVESVRPID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUNCU19JQlNfQWp1c3RlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUljbXNDcmVkaXRvUHJlc3VtaWRvID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUNpZGVUZWNub2xvZ2lhID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXIgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbVBpc0Rldm9sdmlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFyID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Db2ZpbnNEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlwaSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXBpQ3JlZGl0YWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JcGlEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlwaVByZXN1bWlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXBpT3V0cmFzRGVzcGVzYXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlzcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXNzUmV0aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JbXBvc3RvSW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtUGlzUmVjdXBlcmFySW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFySW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtUGlzUmV0aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Db2ZpbnNSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUNzbGxSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlycmZSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUluc3NSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUluc3NQYXRyb25hbCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtc1N0ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1GY3BTdCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtc0NvYnJhZG9BbnRlcmlvcm1lbnRlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1GY3BDb2JyYWRvQW50ZXJpb3JtZW50ZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtc0VmZXRpdmFtZW50ZUNyZWRpdGFkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtRmNwID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JY21zRGlmZXJpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUljbXNEZXNvbmVyYWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1EaWZlcmVuY2lhbEFsaWNvdGEgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbVBpc0ZhdHVyZW1lbnRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Db2ZpbnMgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUZjcFVmRGVzdGlubyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtc1VmRGVzdGlubyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRTaXR1YWNhb1RyaWJ1dGFyaWEgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSWNtc0Z1dHVybyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJY21zU2ltcGxlcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJY21zQ3JlZGl0b1ByZXN1bWlkbyA9IHRydWU7XG4gICAgcHJpdmF0ZSByZXF1aXJlZERpZmFsRGV2b2x2aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZElDTVNfVUZfRGVzdGlub19EZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkRkNQX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1QaXNGYXR1cmFtZW50byA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJbXBvc3RvTmFvUmVjdXBlcmFkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRiYXNlQ2FsY3Vsb0NyZWRpdG8gPSB0cnVlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRQZXJjZW50dWFsUmVkdWNhbyA9IHRydWU7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEljbXNTdFNvbGlkYXJpbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJY21zU3RSZXRpZG9BbnQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkRmNwU3RSZWRpdG9BbnQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zPzogYW55O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGUwMjdTdHJMb29rdXA6IEUwMjdTdHJMb29rdXAsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYmVuZWZpY2lvRmlzY2FsTG9va3VwOiBCZW5lZmljaW9GaXNjYWxMb29rdXAsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZTAyN2VxaUxvb2t1cDogRTAyN0VxaUxvb2t1cCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBuYXR1cmV6YVJlY2VpdGFMb29rdXA6IENwbFRyaU5vdGFTYWlkYU5hdHVyZXphUmVjZWl0YVBpc0NvZmluc0xvb2t1cCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYUxvb2t1cDogQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFMb29rdXAsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9va3VwVXRpbHM6IExvb2t1cFZhbGlkYXRpb25VdGlscyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlcnBUcmlidXRvc1NlcnZpY2U6IEVycFRyaWJ1dG9zU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBndGFnOiBHVGFnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBydWxlc1NlcnZpY2U6IFJ1bGVzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2NhbGVTZXJ2aWNlOiBMb2NhbGVTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZG9taW5pbyA9IHRoaXMuZG9taW5pbyA/IHRoaXMuZG9taW5pbyA6ICdlcnB4X2NwbF9pbXAnO1xuICAgICAgICB0aGlzLnNlcnZpY28gPSB0aGlzLnNlcnZpY28gPyB0aGlzLnNlcnZpY28gOiAnY2FkYXN0cm9zJztcblxuICAgICAgICB0aGlzLnByZWZpeExhYmVsID0gYCR7dGhpcy5kb21pbmlvfS4ke3RoaXMuc2Vydmljb31gO1xuXG4gICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucykubGVuZ3RoID09IDApXG4gICAgICAgICAgICB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICBjdXJyZW5jeVN5bWJvbDogJycsXG4gICAgICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogJywnLFxuICAgICAgICAgICAgICAgIHRob3VzYW5kc1NlcGFyYXRvcjogJy4nXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICBjdXJyZW5jeVN5bWJvbDogJyUnLFxuICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgIHRob3VzYW5kc1NlcGFyYXRvcjogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMudGhvdXNhbmRzU2VwYXJhdG9yXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YXJpYXZlaXNBbHRlcmFkYXMgPSBPYmplY3Qua2V5cyhjaGFuZ2VzKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXZhcmlhdmVpc0FsdGVyYWRhcy5pbmNsdWRlcygnc3VnZXN0b2VzJykgfHxcbiAgICAgICAgICAgIHZhcmlhdmVpc0FsdGVyYWRhcy5sZW5ndGggPiAxXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5jbGVhclZhcmlhYmxlcygpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMudHJpYnV0b3NWYWx1ZSA9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICB0aGlzLnRyaWJ1dG9zVmFsdWUubGVuZ3RoID09IDBcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3J1cG9zID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy50cmlidXRvc1ZhbHVlID0gW107XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVsb2FkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncnVwb3MgPSBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRyaWJ1dG9zKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRUcmlidXRvcygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNhbXBvc0Jsb3F1ZWFkb3MgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVhZE9ubHlUcmlidXRvcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5sb29rdXBVdGlscy5yZXNldFN0b3JlZEtleXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWVtb3JpYUNhbGN1bG8oaW1wb3N0bzogYW55KSB7XG4gICAgICAgIGxldCB0cmlidXRvID0gdGhpcy5pZHNUYXhlc01lbW9yaWFDYWxjdWxvLmZpbmQoKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQudGlwb1RyaWJ1dG8gPT0gaW1wb3N0by5uYW1lO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hYnJpcldpbmRvd1VybE1lbW9yaWFDYWxjdWxvKHRyaWJ1dG8pO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFrZVVybFdpbmRvdyhwYXJhbXM6IElkZW50aWZpZXJzLCB0cmlidXRvPzogYW55KSB7XG4gICAgICAgIHRoaXMuZXJwVHJpYnV0b3NTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0RnJvbnRlbmQocGFyYW1zKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKGAke3Jlc3BvbnNlLmZyb250ZW5kc1swXS5lbWJlZGRlZFVSTH1gLCAnX2JsYW5rJyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmd0YWcuc2VuZEJ1dHRvbkNsaWNrKCdCb3TDo28gYWNlc3NhciBwYXJhbWV0cml6YcOnw6NvJywge1xuICAgICAgICAgICAgaW1wb3N0b3M6IHRyaWJ1dG8udGlwb1RyaWJ1dG9cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRpc2FibGVkQnV0dG9uKGl0ZW06IEl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGl0ZW0uZm9ybUdyb3VwLmdldCgnaW1wb3N0b01hbnVhbCcpLnZhbHVlIHx8XG4gICAgICAgICAgICBpdGVtLmZvcm1Hcm91cC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pLnZhbHVlID09PVxuICAgICAgICAgICAgICAgIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uTUFOVUFMIHx8XG4gICAgICAgICAgICBpdGVtLmZvcm1Hcm91cC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pLnZhbHVlID09PVxuICAgICAgICAgICAgICAgIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uSEVSREFETyB8fFxuICAgICAgICAgICAgdGhpcy5pZHNUYXhlc01lbW9yaWFDYWxjdWxvID09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgIXRoaXMuaWRzVGF4ZXNNZW1vcmlhQ2FsY3Vsby5maW5kKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC50aXBvVHJpYnV0byA9PSBpdGVtLm5hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5pZFBhcmFtZXRybyAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGlkZUJ1dHRvbihpbXBvc3RvOiBhbnkpIHtcbiAgICAgICAgc3dpdGNoIChpbXBvc3RvKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFicmlyV2luZG93VXJsTWVtb3JpYUNhbGN1bG8odHJpYnV0bzogYW55KSB7XG4gICAgICAgIGlmICghdHJpYnV0bz8uaWRQZXJmaWxUcmlidXRhcmlvICYmICF0cmlidXRvPy5pZFBhcmFtZXRybykge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnJvcl9tZW1vcmlhX2NhbGN1bG9fbWVzc2FnZV90aXRsZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2Vycm9yX21lbW9yaWFfY2FsY3Vsb19tZXNzYWdlX2NvbnRlbnQnXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgaWRlbnRpZmllcnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGRvbWFpbk5hbWU6ICdlcnB4X2NwbF9pbXAnLFxuICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlTmFtZTogJ2ltcG9zdG9zJyxcbiAgICAgICAgICAgICAgICAgICAgYXBwTmFtZTogJ2VycHgtY3BsLWltcC1pbXBvc3RvcycsXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlOiBgJHt0aGlzLnZhbGlkYVRlbGEodHJpYnV0byl9YFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLm1ha2VVcmxXaW5kb3cocGFyYW1zLCB0cmlidXRvKTtcbiAgICB9XG5cbiAgICB2YWxpZGFUZWxhKHRheGVzOiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTdFRheGVzKHRheGVzLnRpcG9UcmlidXRvKSkge1xuICAgICAgICAgICAgaWYgKHRheGVzLmlkUGFyYW1ldHJvRXN0YWRvKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBpY21zc3QvJHt0YXhlcy5pZFBhcmFtZXRyb1N0fS9pY21zc3QtcGFyYW1ldHJvcy8ke3RheGVzLmlkUGFyYW1ldHJvRXN0YWRvfT9wZXJmaWxUcmlidXRhcmlvSWQ9JHt0YXhlcy5pZFBlcmZpbFRyaWJ1dGFyaW99JnBhcmFtZXRyb0ltcG9zdG9zSWQ9JHt0YXhlcy5pZFBhcmFtZXRyb31gO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYGljbXNzdC8ke3RheGVzLmlkUGFyYW1ldHJvfS9pY21zc3QtcGFyYW1ldHJvcy8ke3RheGVzLmlkUGFyYW1ldHJvU3R9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYHBlcmZpbC10cmlidXRhcmlvLyR7dGF4ZXMuaWRQZXJmaWxUcmlidXRhcmlvfS9wYXJhbWV0cml6YWNhby1pbXBvc3Rvcy8ke3RoaXMuZ2V0VHJpYnV0b1BhaSh0YXhlcy50aXBvVHJpYnV0byl9LyR7XG4gICAgICAgICAgICB0YXhlcy5pZFBhcmFtZXRyb1xuICAgICAgICB9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzU3RUYXhlcyh0YXhlczogYW55KSB7XG4gICAgICAgIHN3aXRjaCAodGF4ZXMpIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1Q6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUcmlidXRvUGFpKHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0bykge1xuICAgICAgICBzd2l0Y2ggKHRyaWJ1dG8pIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTOlxuICAgICAgICAgICAgICAgIHJldHVybiAncGlzJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TOlxuICAgICAgICAgICAgICAgIHJldHVybiAnY29maW5zJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSTpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9PVVRSQVNfREVTUEVTQVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpcGknO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2lzcyc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU86XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpaSc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNTTEw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUlJGOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TUzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9JTlNTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfU0VOQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9UT1RBTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3JldGVuY29lcyc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1A6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19FRkVUSVZPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRElGQUw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTF9ERVZPTFZJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9TVDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUT19QUkVTVU1JRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpY21zJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2NpZGUnO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0RJRkVSSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX1RSSUJVVEFDQU9fUkVHVUxBUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19HT1ZFUk5BTUVOVEFMOlxuICAgICAgICAgICAgICAgIHJldHVybiAnY2JzJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9ESUZFUklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9UUklCVVRBQ0FPX1JFR1VMQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfR09WRVJOQU1FTlRBTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2licy1lc3RhZHVhbCc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9ESUZFUklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfVFJJQlVUQUNBT19SRUdVTEFSOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9HT1ZFUk5BTUVOVEFMOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaWJzLW11bmljaXBhbCc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2lzJztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyVmFyaWFibGVzKCkge1xuICAgICAgICBpZiAodGhpcy5yZWxvYWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbLTFdO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNCUyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUlCU0VzdGFkdWFsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSUJTTXVuaWNpcGFsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSVMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1QaXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1Db2ZpbnMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JcGkgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1Jc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JbXBvcnRhY29lcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbVJldGVuY29lcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUljbXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1DaWRlVGVjbm9sb2dpYSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbVJldGVuY29lc0Z1bnJ1cmFsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSWNtc0NyZWRpdG9QcmVzdW1pZG8gPSBmYWxzZTtcblxuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1DaWRlVGVjbm9sb2dpYSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzRGV2b2x2aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaUNyZWRpdGFkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGlEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpUHJlc3VtaWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaU91dHJhc0Rlc3Blc2FzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlzcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Jc3NSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSW1wb3N0b0ltcG9ydGFjYW8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzUmVjdXBlcmFySW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZWN1cGVyYXJJbXBvcnRhY2FvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc1JldGlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ3NsbFJldGlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcnJmUmV0aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUluc3NSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSW5zc1BhdHJvbmFsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNTdCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1GY3BTdCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zQ29icmFkb0FudGVyaW9ybWVudGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwQ29icmFkb0FudGVyaW9ybWVudGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRWZldGl2YW1lbnRlQ3JlZGl0YWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRGlmZXJpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc0Rlc29uZXJhZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRGlmZXJlbmNpYWxBbGljb3RhID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyZW1lbnRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmlucyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zVWZEZXN0aW5vID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcFVmRGVzdGlubyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZFNpdHVhY2FvVHJpYnV0YXJpYSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNGdXR1cm8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJY21zU2ltcGxlcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNGYXR1cmFtZW50byA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTdFNvbGlkYXJpbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTdFJldGlkb0FudCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEZjcFN0UmVkaXRvQW50ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVRyaWJ1dG9zKCkge1xuICAgICAgICB0aGlzLnRyaWJ1dG9zVmFsdWUubWFwKChpdCkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChpdC50aXBvSW1wb3N0bykge1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCUzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfRElGRVJJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19UUklCVVRBQ0FPX1JFR1VMQVI6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDQlMoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9ESUZFUklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfVFJJQlVUQUNBT19SRUdVTEFSOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSUJTRXN0YWR1YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTDpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0RJRkVSSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfVFJJQlVUQUNBT19SRUdVTEFSOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSUJTTXVuaWNpcGFsKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19DUkVESVRPX1BSRVNVTUlETzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUlCU0NyZWRpdG9QcmVzdW1pZG8oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVM6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJUygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfRVNUT1JOT19DUkVESVRPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RPUk5PX0NSRURJVE86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDQlNJQlNFc3Rvcm5vQ3JlZGl0bygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfQUpVU1RFOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19BSlVTVEU6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDQlNfSUJTX0FqdXN0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhUGlzKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUjpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlM6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDb2ZpbnMoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9PVVRSQVNfREVTUEVTQVM6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJcGkoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJc3MoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBTzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJbXBvcnRhY29lcygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ1NMTDpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUlJGOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklOU1M6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YVJldGVuY29lcygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUDpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQ6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19FRkVUSVZPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkRJRkFMOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkRJRkFMX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVM6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJY21zKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUT19QUkVTVU1JRE86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJY21zQ3JlZGl0b1ByZXN1bWlkbygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUE6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX0lOU1M6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1NFTkFSOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1RPVEFMOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhUmV0ZW5jb2VzRnVucnVyYWwoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZE9ubHlUcmlidXRvcygpOiB2b2lkIHtcbiAgICAgICAgZm9yIChjb25zdCBncm91cCBvZiB0aGlzLmdydXBvcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGdyb3VwLml0ZW0pIHtcbiAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VHJpYnV0b3MoKSB7XG4gICAgICAgIGlmICh0aGlzLmdydXBvcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ncnVwb3MubWFwKChncnVwbykgPT5cbiAgICAgICAgICAgICAgICBncnVwby5pdGVtLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWJ1dG9zVmFsdWUubWFwKChpdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0ubmFtZSA9PT0gaXQudGlwb0ltcG9zdG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cC5wYXRjaFZhbHVlKGl0LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybShpdC50aXBvSW1wb3N0bykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKGl0LnRpcG9JbXBvc3RvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIHRoaXMuZ3J1cG9zKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGdyb3VwLml0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplVmFsdWVDaGFuZ2VzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzU2VydmljZS5hcHBseSh7XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VmFsaWRhdG9ycyh0cmlidXRvOiBFbnVtVGlwb1RyaWJ1dG8pIHtcbiAgICAgICAgaWYgKHRoaXMuZ3J1cG9zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmdydXBvcy5tYXAoKGdydXBvKSA9PiB7XG4gICAgICAgICAgICAgICAgZ3J1cG8uaXRlbVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChpdCkgPT4gaXQubmFtZSA9PSB0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICAubWFwKChpdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzVmFsdWUgPSBPYmplY3Qua2V5cyhpdC5mb3JtR3JvdXAudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSAhPT0gJ2ltcG9zdG9NYW51YWwnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkgIT09IEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmdldChrZXkpLnZhbHVlICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuZ2V0KGtleSkudmFsdWUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhpdC5mb3JtR3JvdXAudmFsdWUpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSA9PSAncGVyY2VudHVhbFJlZHVjYW8nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09ICdwZXJjZW50dWFsRGlmZXJpbWVudG8nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09ICdwZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSA9PT0gJ3BlcmNlbnR1YWxTdXNwZW5zYW9QYXJjaWFsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KDEwMDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ3ZhbG9yJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnc2l0dWFjYW9UcmlidXRhcmlhJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ29ic2VydmFjYW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgxMjApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2NvZGlnb0FycmVjYWRhY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnYmVuZWZpY2lvRmlzY2FsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdpbmRpY2F0aXZvQXF1aXNpY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdjb2RpZ29UcmlidXRhY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdJbXBvc3RvTmFvUmVjdXBlcmFkbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2Jhc2VDYWxjdWxvQ3JlZGl0bycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSAhPT0gJ2ltcG9zdG9NYW51YWwnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtICE9PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtICE9PSAnbmF0dXJlemFSZWNlaXRhJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSAhPT0gJ3ZhbG9yRGVkdWNhbycgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gIT09ICdyZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSAhPT0gJ3JlZHVjYW9BbGlxdW90YSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhpdC5mb3JtR3JvdXAudmFsdWUpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSA9PSAncGVyY2VudHVhbFJlZHVjYW8nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09ICdwZXJjZW50dWFsRGlmZXJpbWVudG8nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09ICdwZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSA9PT0gJ3BlcmNlbnR1YWxTdXNwZW5zYW9QYXJjaWFsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KDEwMDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ3ZhbG9yJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKHZhbGlkYXRvcnMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ29ic2VydmFjYW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgxMjApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2NvZGlnb0FycmVjYWRhY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnYmVuZWZpY2lvRmlzY2FsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdpbmRpY2F0aXZvQXF1aXNpY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdJbXBvc3RvTmFvUmVjdXBlcmFkbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVBbGxGb3JtRmllbGRzKGZvcm1Hcm91cDogRm9ybUdyb3VwKTogdm9pZCB7XG4gICAgICAgIE9iamVjdC5rZXlzKGZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KGZpZWxkKTtcbiAgICAgICAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpXG4gICAgICAgICAgICAgICAgY29udHJvbC5tYXJrQXNEaXJ0eSh7IG9ubHlTZWxmOiB0cnVlIH0pO1xuICAgICAgICAgICAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cClcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlQWxsRm9ybUZpZWxkcyhjb250cm9sKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhlY3V0YSBhIHZhbGlkYcOnw6NvIGRlIHRvZG9zIG9zIGNhbXBvcyBkb3MgZm9ybXVsw6FyaW9zIGRlbnRybyBkb3MgZ3J1cG9zLlxuICAgICAqXG4gICAgICogKipBdGVuw6fDo286KiogRXN0ZSBtw6l0b2RvICoqbsOjbyoqIGRldmUgc2VyIHV0aWxpemFkbyBubyB0ZW1wbGF0ZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBzZSB0b2RvcyBvcyBmb3JtdWzDoXJpb3MgZm9yZW0gdsOhbGlkb3MgZSBuZW5odW0gdmFsb3IgZGUgaW1wb3N0byBmb3IgbmVnYXRpdm87IGNhc28gY29udHLDoXJpbywgcmV0b3JuYSBgZmFsc2VgLlxuICAgICAqL1xuICAgIHZhbGlkYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZmluZEdyb3VwV2l0aE5lZ2F0aXZlVGF4VmFsdWUoKTtcblxuICAgICAgICBpZiAoZ3JvdXApIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBzdGlja3k6IHRydWUsXG4gICAgICAgICAgICAgICAgc3VtbWFyeTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lcnJvcicpLFxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZXJyb3JfdGF4X3dpdGhfbmVnYXRpdmVfdGF4X3ZhbHVlJyxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGF4OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18ke2dyb3VwLmdydXBvVHJpYnV0by50b0xvd2VyQ2FzZSgpfWBcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5ncnVwb3MuZXZlcnkoKGdyb3VwKSA9PlxuICAgICAgICAgICAgZ3JvdXAuaXRlbVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLmZvcm1Hcm91cC5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICAuZXZlcnkoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUFsbEZvcm1GaWVsZHMoaXRlbS5mb3JtR3JvdXApO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmZvcm1Hcm91cC52YWxpZDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZlcmlmaWNhIHNlIGFsZ3VtIGZvcm11bMOhcmlvIGVzdMOhIGludsOhbGlkby5cbiAgICAgKlxuICAgICAqIERldmUgc2VyIHV0aWxpemFkbyBzb21lbnRlIG5vIHRlbXBsYXRlIHBhcmEgY29udHJvbGUgZGUgYm90w7VlcyBvdSBleGliacOnw6NvIGRlIG1lbnNhZ2Vucy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBzZSBhbGd1bSBgZm9ybUdyb3VwYCBlc3RpdmVyIGludsOhbGlkbyBvdSBzZSBhbGd1bSB2YWxvciBkZSBpbXBvc3RvIGZvciBuZWdhdGl2by5cbiAgICAgKi9cbiAgICBpc0ludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhIXRoaXMuZmluZEdyb3VwV2l0aE5lZ2F0aXZlVGF4VmFsdWUoKSB8fFxuICAgICAgICAgICAgdGhpcy5ncnVwb3Muc29tZSgoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgZ3JvdXAuaXRlbS5zb21lKChpdGVtKSA9PiBpdGVtLmZvcm1Hcm91cC5pbnZhbGlkKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZEdyb3VwV2l0aE5lZ2F0aXZlVGF4VmFsdWUoKTogR3JvdXAgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5ncnVwb3NcbiAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09IEVudW1HcnVwb1RyaWJ1dG8uQ0JTIHx8XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT0gRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUwgfHxcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PSBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUwgfHxcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0RJRkVSSURPXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuZmluZCgoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgZ3JvdXAuaXRlbS5zb21lKChpdGVtKSA9PlxuICAgICAgICAgICAgICAgICAgICBuZXcgQmlnTnVtYmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXAuZ2V0KCd2YWxvcicpLnZhbHVlID8/IDBcbiAgICAgICAgICAgICAgICAgICAgKS5pc0xlc3NUaGFuKDApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhcnJJdGVuczogYW55ID0gW107XG4gICAgICAgIGlmICh0aGlzLmdydXBvcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ncnVwb3MubWFwKChncnVwbykgPT4ge1xuICAgICAgICAgICAgICAgIGdydXBvLml0ZW0ubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVBbGxGb3JtRmllbGRzKGl0ZW0uZm9ybUdyb3VwKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudHJpYnV0b3NWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXVNYXRoID0gdGhpcy50cmlidXRvc1ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyaWJ1dG8pID0+IHRyaWJ1dG8udGlwb0ltcG9zdG8gPT0gaXRlbS5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHRyaWJ1dG8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRyaWJ1dG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGV1TWF0aCAmJiBkZXVNYXRoLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyckl0ZW5zLnB1c2goZGV1TWF0aFswXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyckl0ZW5zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXBvSW1wb3N0bzogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJJdGVucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXBvSW1wb3N0bzogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0uZm9ybUdyb3VwLmdldFJhd1ZhbHVlKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVsb2FkID0gZmFsc2U7XG4gICAgICAgIHRoaXMudHJpYnV0b3NDaGFuZ2UuZW1pdChhcnJJdGVucyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBub3ZvSW1wb3N0b01hbnVhbChpdGVtOiBJdGVtLCBzaW5nbGVDaGFuZ2U/OiBib29sZWFuKSB7XG4gICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKGl0ZW0ubmFtZSBhcyBFbnVtVGlwb1RyaWJ1dG8pKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1GaWVsZCBvZiBpdGVtLmZvcm1GaWVsZCkge1xuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5vbkJsdXI/LmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXNpbmdsZUNoYW5nZSkge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdydXBvcy5maW5kKChncm91cCkgPT5cbiAgICAgICAgICAgICAgICBncm91cC5pdGVtLmluY2x1ZGVzKGl0ZW0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVWYWx1ZUNoYW5nZXMoe1xuICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgZ3JvdXBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFjdGlvbnMoKTogTWVudUl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IG1lbnU6IE1lbnVJdGVtW10gPSBbXTtcblxuICAgICAgICBtZW51LnB1c2goXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfY2JzX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1DQlMsXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUNCUygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncnVwb3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT0gRW51bUdydXBvVHJpYnV0by5DQlNcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pYnNfZXN0YWR1YWxfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUlCU0VzdGFkdWFsLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJQlNFc3RhZHVhbCgpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncnVwb3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pYnNfbXVuaWNpcGFsX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JQlNNdW5pY2lwYWwsXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUlCU011bmljaXBhbCgpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncnVwb3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaWJzX2NyZWRpdG9fcHJlc3VtaWRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JQlNDcmVkaXRvUHJlc3VtaWRvLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJQlNDcmVkaXRvUHJlc3VtaWRvKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ydWxlc1NlcnZpY2UuYXBwbHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOiB0aGlzLmdydXBvcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwOiB0aGlzLmdydXBvcy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChncm91cCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtR3J1cG9UcmlidXRvLklCU19DUkVESVRPX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaXNfbGFiZWwnKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUlTLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJUygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncnVwb3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT0gRW51bUdydXBvVHJpYnV0by5JU1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2Nic19pYnNfZXN0b3Jub19jcmVkaXRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1DQlNfSUJTX0VTVE9STk9fQ1JFRElUTyxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhQ0JTSUJTRXN0b3Jub0NyZWRpdG8oKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzU2VydmljZS5hcHBseSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cHM6IHRoaXMuZ3J1cG9zLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IHRoaXMuZ3J1cG9zLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1HcnVwb1RyaWJ1dG8uQ0JTX0lCU19FU1RPUk5PX0NSRURJVE9cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLmRlYml0SW52b2ljZVR5cGUgPT09ICdJbnZlbnRvcnkgTG9zcydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfY2JzX2lic19hanVzdGVfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUNCU19JQlNfQWp1c3RlLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFDQlNfSUJTX0FqdXN0ZSgpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncnVwb3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUdydXBvVHJpYnV0by5DQlNfSUJTX0FKVVNURVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHZpc2libGU6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCcgJiZcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuY29udGV4dC5pbnZvaWNlLmRlYml0SW52b2ljZVR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAnQ3JlZGl0IENhbmNlbGxhdGlvbiBFeGVtcHQgT3V0cHV0cycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLmRlYml0SW52b2ljZVR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlYml0cyBVbnByb2Nlc3NlZCBJbnZvaWNlcyBBc3Nlc3NtZW50JyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UuZGViaXRJbnZvaWNlVHlwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRGlzcXVhbGlmaWNhdGlvbiBmcm9tIFNpbXBsZXMgTmFjaW9uYWwnKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogJ3JldGVuY2FvRnVucnVyYWwnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX3JldGVuY2FvX2Z1bnJ1cmFsX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1SZXRlbmNvZXNGdW5ydXJhbCxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhUmV0ZW5jb2VzRnVucnVyYWwoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAncGlzJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19waXNfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbVBpcyxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhUGlzKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogJ2NvZmlucycsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfY29maW5zX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1Db2ZpbnMsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUNvZmlucygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6ICdpcGknLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2lwaV9sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtSXBpLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMucG9kZU1vc3RyYXJJbXBvc3RvcygpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJcGkoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAnaWNtcycsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaWNtc19sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtSWNtcyxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSWNtcygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBpZiAodGhpcy5jb250ZXh0LmRvY3VtZW50ICE9PSAnU2FsZSBPcmRlcicpIHtcbiAgICAgICAgICAgIG1lbnUucHVzaCh7XG4gICAgICAgICAgICAgICAgaWQ6ICdpbXBvcnRhY29lcycsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaW1wb3J0YWNvZXNfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUltcG9ydGFjb2VzLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMucG9kZU1vc3RyYXJJbXBvc3RvcygpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJbXBvcnRhY29lcygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZScgfHxcbiAgICAgICAgICAgICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLml0ZW0udHlwZSA9PT0gJ1NlcnZpY2UnKSB8fFxuICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5vcmRlci5pdGVtLnR5cGUgPT09ICdTZXJ2aWNlJykgfHxcbiAgICAgICAgICAgICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5vcmRlci5pdGVtLnR5cGUgPT09ICdTZXJ2aWNlJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBtZW51LnB1c2goXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogJ2lzcycsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pc3NfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtSXNzLFxuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJc3MoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdyZXRlbmNvZXMnLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfcmV0ZW5jb2VzX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbVJldGVuY29lcyxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhUmV0ZW5jb2VzKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS5pdGVtLnR5cGUgPT09ICdTZXJ2aWNlJ1xuICAgICAgICApIHtcbiAgICAgICAgICAgIG1lbnUucHVzaCh7XG4gICAgICAgICAgICAgICAgaWQ6ICdjaWRlJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19jaWRlX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1DaWRlVGVjbm9sb2dpYSxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhQ2lkZSgpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZScgfHxcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0NvbnRyb2xsZXJzaGlwIEluY29taW5nIEludm9pY2UnIHx8XG4gICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlICE9PSAnRGViaXQnKVxuICAgICAgICApXG4gICAgICAgICAgICBtZW51LnB1c2goe1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2ljbXNfY3JlZGl0b19wcmVzdW1pZG9fbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUljbXNDcmVkaXRvUHJlc3VtaWRvLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMucG9kZU1vc3RyYXJJbXBvc3RvcygpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJY21zQ3JlZGl0b1ByZXN1bWlkbygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBtZW51O1xuICAgIH1cblxuICAgIHByaXZhdGUgcG9kZU1vc3RyYXJJbXBvc3RvcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEoXG4gICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnQ3JlZGl0JykgfHxcbiAgICAgICAgICAgICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCcpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUljbXNDcmVkaXRvUHJlc3VtaWRvKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUljbXNDcmVkaXRvUHJlc3VtaWRvKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUljbXNDcmVkaXRvUHJlc3VtaWRvID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUT19QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfY3JlZGl0b19wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmVuZWZpY2lvRmlzY2FsIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUT19QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG5cbiAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklDTVNfQ1JFRElUT19QUkVTVU1JRE8gKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLklDTVNfQ1JFRElUT19QUkVTVU1JRE8sXG4gICAgICAgICAgICBpdGVtXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFDaWRlKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUNpZGVUZWNub2xvZ2lhID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtQ2lkZVRlY25vbG9naWEgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG4gICAgICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUEsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY2lkZV90ZWNub2xvZ2lhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jaWRlX3RlY25vbG9naWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBLFxuICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhSWNtcygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JY21zID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSWNtcyA9IHRydWU7XG5cbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT3JpZ2VtIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVEFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19jcmVkaXRhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVSTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19mdXR1cm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc2ltcGxlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGVzb25lcmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk1vdGl2b0Rlc29uZXJhY2FvSWNtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kaWZlcmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxEaWZlcmltZW50b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkRJRkFMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19kaWZhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5ESUZBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiogQElDTVNfU1QgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9zb2xpZGFyaW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9mdXR1cm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JSZWNvbGhpZG9QZWxvU3Vic3RpdHV0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckljbXNTdFJldGlkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5UXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIERJRkFMIERFVk9MVklETyAqL1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3VmX2Rlc3Rpbm9fZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFJbnRlcm5hRGVzdGlub1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3VmX2Rlc3Rpbm9fZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVEFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19jcmVkaXRhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVSTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19mdXR1cm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc2ltcGxlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGVzb25lcmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk1vdGl2b0Rlc29uZXJhY2FvSWNtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kaWZlcmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxEaWZlcmltZW50b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkRJRkFMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19kaWZhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5ESUZBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiogQElDTVNfU1QgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9zb2xpZGFyaW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9mdXR1cm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JSZWNvbGhpZG9QZWxvU3Vic3RpdHV0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckljbXNTdFJldGlkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5UXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSAhPT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT3JpZ2VtIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVSTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19mdXR1cm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc2ltcGxlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGVzb25lcmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk1vdGl2b0Rlc29uZXJhY2FvSWNtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kaWZlcmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxEaWZlcmltZW50b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkRJRkFMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19kaWZhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5ESUZBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc191Zl9kZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhSW50ZXJuYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3VmX2Rlc3Rpbm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiogQElDTVNfU1QgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9zb2xpZGFyaW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9mdXR1cm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JSZWNvbGhpZG9QZWxvU3Vic3RpdHV0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckljbXNTdFJldGlkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5UXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19FRkVUSVZPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2VmZXRpdm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19FRkVUSVZPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3NpbXBsZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGlmZXJpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsRGlmZXJpbWVudG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfdWZfZGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF91Zl9kZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEBJQ01TX1NUICovXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JPdXRyYXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJc2VudGFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5PcmlnZW0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT2JzZXJ2YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc191Zl9kZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhSW50ZXJuYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3VmX2Rlc3Rpbm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3NvbGlkYXJpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9TVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT3JpZ2VtIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9ic2VydmFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zaW1wbGVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kZXNvbmVyYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTW90aXZvRGVzb25lcmFjYW9JY21zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5ESUZBTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZGlmYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRElGQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5JbXBvc3RvTmFvUmVjdXBlcmFkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3NvbGlkYXJpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9TVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfdWZfZGVzdGlub19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmFEZXN0aW5vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3BfdWZfZGVzdGlub19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklDTVMgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JQ01TLFxuICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhUmV0ZW5jb2VzKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbVJldGVuY29lcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbVJldGVuY29lcyA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNTTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NzbGxfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ1NMTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklSUkYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lycmZfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVJSRlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3BhdHJvbmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNTTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NzbGxfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNTTExcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUlJGLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcnJmX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUlJGXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSU5TU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcGF0cm9uYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlICE9PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DU0xMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jc2xsX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNTTExcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUlJGLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcnJmX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklSUkZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ1NMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY3NsbF9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ1NMTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklSUkYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lycmZfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklSUkZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNTTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NzbGxfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNTTExcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUlJGLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcnJmX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUlJGXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSU5TU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DU0xMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jc2xsX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DU0xMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXJyZl9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVJSRlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3BhdHJvbmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uUkVURU5DT0VTICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uUkVURU5DT0VTLFxuICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhUmV0ZW5jb2VzRnVucnVyYWwoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzRnVucnVyYWwgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1SZXRlbmNvZXNGdW5ydXJhbCA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX0lOU1MsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mdW5ydXJhbF9pbnNzJyxcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkluZGljYXRpdm9BcXVpc2ljYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfSU5TU1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9SQVQsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mdW5ydXJhbF9yYXQnLFxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uSW5kaWNhdGl2b0FxdWlzaWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9SQVRcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfU0VOQVIsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mdW5ydXJhbF9zZW5hcicsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5JbmRpY2F0aXZvQXF1aXNpY2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1NFTkFSXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1RPVEFMLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZnVucnVyYWxfdG90YWwnLFxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfVE9UQUxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uRlVOUlVSQUwgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5GVU5SVVJBTCxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgZnVucnVyYWxUb3RhbCA9IGl0ZW0uZmluZChcbiAgICAgICAgICAgICAgICAoaXRlbSkgPT4gaXRlbS5uYW1lID09PSAnRlVOUlVSQUxfVE9UQUwnXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgZnVucnVyYWxUb3RhbC5mb3JtR3JvdXAuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUltcG9ydGFjb2VzKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUltcG9ydGFjb2VzID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSW1wb3J0YWNvZXMgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5jb250ZXh0LmRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnQ29udHJvbGxlcnNoaXAgT3V0Z29pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ltcG9zdG9faW1wb3J0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBT1xuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnQ29udHJvbGxlcnNoaXAgSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbXBvc3RvX2ltcG9ydGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmVjdXBlcmFyX2ltcG9ydGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmVjdXBlcmFyX2ltcG9ydGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW1wb3N0b19pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JlY3VwZXJhcl9pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JlY3VwZXJhcl9pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uSU1QT1JUQUNPRVMgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JTVBPUlRBQ09FUyxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUlzcygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1Jc3MgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1Jc3MgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuY29udGV4dC5kb2N1bWVudCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ0luY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ091dGdvaW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICBjYXNlICdTYWxlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkVzY3JpdHVyYXJBbGlxdW90YUlTU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklTUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yRGVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yRGVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ0NvbnRyb2xsZXJzaGlwIEluY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklTUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yRGVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yRGVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklTUyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLklTUyxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUNCUygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1DQlMpIHJldHVybjtcblxuICAgICAgICB0aGlzLm1lbnVJdGVtQ0JTID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICBjb25zdCBjYW1wb3MgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8sXG4gICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uQ0JTXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhLFxuICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLkNCU1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckJydXRvLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWR1Y2FvQWxpcXVvdGEgfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbCB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhRWZldGl2YSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICBdO1xuXG4gICAgICAgIGlmICh0aGlzLmlzSW52b2ljZURvY3VtZW50KCkpIHtcbiAgICAgICAgICAgIGNhbXBvcy5wdXNoKFxuICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLFxuICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5DQlNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2FtcG9zX0NCU19DUkVESVRPX1BSRVNVTUlETyA9IFtcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5pc0ludm9pY2VEb2N1bWVudCgpKSB7XG4gICAgICAgICAgICBjYW1wb3NfQ0JTX0NSRURJVE9fUFJFU1VNSURPLnB1c2goXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYUNyZWRpdG9QcmVzdW1pZG9cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50b1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjYW1wb3NfQ0JTX1RSSUJVVEFDQU9fUkVHVUxBUiA9IFtcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5pc0ludm9pY2VEb2N1bWVudCgpKSB7XG4gICAgICAgICAgICBjYW1wb3NfQ0JTX1RSSUJVVEFDQU9fUkVHVUxBUi5wdXNoKFxuICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNCUyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY2JzJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKGNhbXBvcywgRW51bVRpcG9UcmlidXRvLkNCUylcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNCU19ESUZFUklETyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY2JzX2RpZmVyaWRvJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DQlNfRElGRVJJRE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfQ1JFRElUT19QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Nic19jcmVkaXRvX3ByZXN1bWlkbycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgY2FtcG9zX0NCU19DUkVESVRPX1BSRVNVTUlETyxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNCU19DUkVESVRPX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNCU19UUklCVVRBQ0FPX1JFR1VMQVIsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Nic190cmlidXRhY2FvX3JlZ3VsYXInLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIGNhbXBvc19DQlNfVFJJQlVUQUNBT19SRUdVTEFSLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ0JTX1RSSUJVVEFDQU9fUkVHVUxBUlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNCU19HT1ZFUk5BTUVOVEFMLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jYnNfZ292ZXJuYW1lbnRhbCcsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0dPVkVSTkFNRU5UQUxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLkNCUyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uQ0JTLFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhSUJTRXN0YWR1YWwoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtSUJTRXN0YWR1YWwpIHJldHVybjtcblxuICAgICAgICB0aGlzLm1lbnVJdGVtSUJTRXN0YWR1YWwgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pYnNfZXN0YWR1YWwnLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklCU19FU1RBRFVBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JCcnV0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUVmZXRpdmEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklCU19FU1RBRFVBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckJydXRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWR1Y2FvQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWR1Y2FvQWxpcXVvdGFHb3Zlcm5hbWVudGFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhRWZldGl2YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9ESUZFUklETyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2VzdGFkdWFsX2RpZmVyaWRvJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfRElGRVJJRE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfVFJJQlVUQUNBT19SRUdVTEFSLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pYnNfZXN0YWR1YWxfdHJpYnV0YWNhb19yZWd1bGFyJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX1RSSUJVVEFDQU9fUkVHVUxBUlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9HT1ZFUk5BTUVOVEFMLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pYnNfZXN0YWR1YWxfZ292ZXJuYW1lbnRhbCcsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX0dPVkVSTkFNRU5UQUxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklCU19FU1RBRFVBTCArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMLFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhSUJTTXVuaWNpcGFsKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUlCU011bmljaXBhbCkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubWVudUl0ZW1JQlNNdW5pY2lwYWwgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX211bmljaXBhbCcsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcicgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX01VTklDSVBBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yQnJ1dG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFFZmV0aXZhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JCcnV0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUVmZXRpdmEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX01VTklDSVBBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19tdW5pY2lwYWxfZGlmZXJpZG8nLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfRElGRVJJRE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX1RSSUJVVEFDQU9fUkVHVUxBUixcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX211bmljaXBhbF90cmlidXRhY2FvX3JlZ3VsYXInLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX1RSSUJVVEFDQU9fUkVHVUxBUlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfR09WRVJOQU1FTlRBTCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX211bmljaXBhbF9nb3Zlcm5hbWVudGFsJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0dPVkVSTkFNRU5UQUxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUwgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUwsXG4gICAgICAgICAgICBpdGVtXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJQlNDcmVkaXRvUHJlc3VtaWRvKCk6IEl0ZW1bXSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtSUJTQ3JlZGl0b1ByZXN1bWlkbykgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubWVudUl0ZW1JQlNDcmVkaXRvUHJlc3VtaWRvID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICBjb25zdCBjYW1wb3M6IENhbXBvVHJpYnV0b1tdID0gW1xuICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICBdO1xuXG4gICAgICAgIGlmICh0aGlzLmlzSW52b2ljZURvY3VtZW50KCkpIHtcbiAgICAgICAgICAgIGNhbXBvcy5wdXNoKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFDcmVkaXRvUHJlc3VtaWRvXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50b1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19DUkVESVRPX1BSRVNVTUlETyxcbiAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pYnNfY3JlZGl0b19wcmVzdW1pZG8nLFxuICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhjYW1wb3MsIEVudW1UaXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE8pXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE8gKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLklCU19DUkVESVRPX1BSRVNVTUlETyxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUlTKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUlTKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUlTID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICBjb25zdCBjYW1wb3M6IENhbXBvVHJpYnV0b1tdID0gW1xuICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICBdO1xuXG4gICAgICAgIGlmICh0aGlzLmlzSW52b2ljZURvY3VtZW50KCkpIHtcbiAgICAgICAgICAgIGNhbXBvcy5wdXNoKFxuICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50byxcbiAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSVNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUyxcbiAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcycsXG4gICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKGNhbXBvcywgRW51bVRpcG9UcmlidXRvLklTKVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uSVMgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLklTLFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhQ0JTSUJTRXN0b3Jub0NyZWRpdG8oKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtQ0JTX0lCU19FU1RPUk5PX0NSRURJVE8pIHJldHVybjtcblxuICAgICAgICB0aGlzLm1lbnVJdGVtQ0JTX0lCU19FU1RPUk5PX0NSRURJVE8gPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0VTVE9STk9fQ1JFRElUTyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY2JzX2VzdG9ybm9fY3JlZGl0bycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0VTVE9STk9fQ1JFRElUT1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19FU1RPUk5PX0NSRURJVE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19lc3Rvcm5vX2NyZWRpdG8nLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19FU1RPUk5PX0NSRURJVE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG5cbiAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLkNCU19JQlNfRVNUT1JOT19DUkVESVRPICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5DQlNfSUJTX0VTVE9STk9fQ1JFRElUTyxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUNCU19JQlNfQWp1c3RlKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUNCU19JQlNfQWp1c3RlKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUNCU19JQlNfQWp1c3RlID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNCU19BSlVTVEUsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Nic19hanVzdGUnLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyaW9kb0FwdXJhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DQlNfQUpVU1RFXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUJTX0FKVVNURSxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2FqdXN0ZScsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJpb2RvQXB1cmFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19BSlVTVEVcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG5cbiAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLkNCU19JQlNfQUpVU1RFICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5DQlNfSUJTX0FKVVNURSxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YVBpcygpOiBhbnlbXSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtUGlzID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtUGlzID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuICAgICAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JlY3VwZXJhcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5iYXNlQ2FsY3Vsb0NyZWRpdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZWN1cGVyYXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSAhPT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3BpcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTmF0dXJlemFSZWNlaXRhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3BpcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU1xuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX2ZhdHVyYW1lbnRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5OYXR1cmV6YVJlY2VpdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmVjdXBlcmFyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLmJhc2VDYWxjdWxvQ3JlZGl0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uUElTICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uUElTLFxuICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhQ29maW5zKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUNvZmlucyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNvZmlucyA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcbiAgICAgICAgICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZWN1cGVyYXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uYmFzZUNhbGN1bG9DcmVkaXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmVjdXBlcmFyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUlxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgIT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk5hdHVyZXphUmVjZWl0YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmlucycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTmF0dXJlemFSZWNlaXRhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uYmFzZUNhbGN1bG9DcmVkaXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5DT0ZJTlMgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5DT0ZJTlMsXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJcGkoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtSXBpID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSXBpID0gdHJ1ZTtcblxuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uRW5xdWFkcmFtZW50b0lwaSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfY3JlZGl0YWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfT1VUUkFTX0RFU1BFU0FTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfb3V0cmFzX2Rlc3Blc2FzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9PVVRSQVNfREVTUEVTQVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfcHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX0NSRURJVEFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX2NyZWRpdGFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX3ByZXN1bWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ1Byb2R1Y3QgUmV0dXJuJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSAhPT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUEksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JPdXRyYXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkVucXVhZHJhbWVudG9JcGkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3sgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5FbnF1YWRyYW1lbnRvSXBpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5PYnNlcnZhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2xsZXJzaGlwIEluY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkltcG9zdG9OYW9SZWN1cGVyYWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5FbnF1YWRyYW1lbnRvSXBpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5PYnNlcnZhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JUEkgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JUEksXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvOiBFbnVtVGlwb1RyaWJ1dG8pIHtcbiAgICAgICAgc3dpdGNoICh0cmlidXRvKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUE6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtQ2lkZVRlY25vbG9naWE7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc1JlY3VwZXJhcjtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtUGlzRGV2b2x2aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZWN1cGVyYXI7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc0Rldm9sdmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JcGk7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlwaUNyZWRpdGFkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXBpRGV2b2x2aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX09VVFJBU19ERVNQRVNBUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JcGlPdXRyYXNEZXNwZXNhcztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXBpUHJlc3VtaWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlzcztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXNzUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUltcG9zdG9JbXBvcnRhY2FvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc1JlY3VwZXJhckltcG9ydGFjYW87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFySW1wb3J0YWNhbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtUGlzUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZXRpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DU0xMOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNzbGxSZXRpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUlJGOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlycmZSZXRpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUluc3NSZXRpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUluc3NQYXRyb25hbDtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSWNtc1N0O1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUZjcFN0O1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSWNtc0NvYnJhZG9BbnRlcmlvcm1lbnRlO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1GY3BDb2JyYWRvQW50ZXJpb3JtZW50ZTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSWNtcztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNFZmV0aXZhbWVudGVDcmVkaXRhZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1A6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtRmNwO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JY21zRGlmZXJpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSWNtc0Rlc29uZXJhZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1EaWZlcmVuY2lhbEFsaWNvdGE7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtUGlzRmF0dXJlbWVudG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5POlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNVZkRlc3Rpbm87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1GY3BVZkRlc3Rpbm87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkU2l0dWFjYW9UcmlidXRhcmlhO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJY21zRnV0dXJvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc1NpbXBsZXM7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc0NyZWRpdG9QcmVzdW1pZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTF9ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWREaWZhbERldm9sdmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJQ01TX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkRkNQX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX0ZBVFVSQU1FTlRPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyYW1lbnRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19OQU9fUkVDVVBFUkFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEltcG9zdG9OYW9SZWN1cGVyYWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQkFTRV9DQUxDVUxPX0NSRURJVE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRiYXNlQ2FsY3Vsb0NyZWRpdG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QRVJDRU5UVUFMX1JFRFVDQU86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRQZXJjZW50dWFsUmVkdWNhbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc1N0U29saWRhcmlvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc1N0UmV0aWRvQW50O1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRGY3BTdFJlZGl0b0FudDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFJlcXVpcmVkKHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0bywgdmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgc3dpdGNoICh0cmlidXRvKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUE6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNpZGVUZWNub2xvZ2lhID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXIgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0Rldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUjoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFyID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNEZXZvbHZpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSToge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGlDcmVkaXRhZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaURldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX09VVFJBU19ERVNQRVNBUzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpT3V0cmFzRGVzcGVzYXMgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaVByZXN1bWlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Jc3MgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlzc1JldGlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbXBvc3RvSW1wb3J0YWNhbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXJJbXBvcnRhY2FvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhckltcG9ydGFjYW8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc1JldGlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DU0xMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Dc2xsUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUlJGOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcnJmUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUGF0cm9uYWwgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1Q6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNTdCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1GY3BTdCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNDb2JyYWRvQW50ZXJpb3JtZW50ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwQ29icmFkb0FudGVyaW9ybWVudGUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXMgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRWZldGl2YW1lbnRlQ3JlZGl0YWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1A6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc0RpZmVyaWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNEZXNvbmVyYWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRGlmZXJlbmNpYWxBbGljb3RhID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyZW1lbnRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmlucyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcFVmRGVzdGlubyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5POiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zVWZEZXN0aW5vID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZFNpdHVhY2FvVHJpYnV0YXJpYSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc0Z1dHVybyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTaW1wbGVzID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJY21zU3RTb2xpZGFyaW8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJY21zU3RSZXRpZG9BbnQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5UOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEZjcFN0UmVkaXRvQW50ID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTF9ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkRGlmYWxEZXZvbHZpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSUNNU19VRl9EZXN0aW5vX0Rldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEZDUF9VRl9EZXN0aW5vX0Rldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX0ZBVFVSQU1FTlRPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNGYXR1cmFtZW50byA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVxdWlyZWRTaXR1YWNhb1RyaWJ1dGFyaWEgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGltcG9zdG9DYWxjdWxhZG8oaW1wb3N0bzogRW51bVRpcG9UcmlidXRvKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5ESUZBTCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8gJiZcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLkZDUF9TVCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8gJiZcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLkRJRkFMX0RFVk9MVklETyAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETyAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uRkNQX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQgJiZcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1RPVEFMXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByb3VuZEltcG9zdG8obnVtYmVyOiBhbnksIGRlY2ltYWxzOiBhbnkpIHtcbiAgICAgICAgY29uc3QgeCA9IE1hdGgucG93KDEwLCBOdW1iZXIoZGVjaW1hbHMpICsgMSk7XG4gICAgICAgIHJldHVybiAoTnVtYmVyKG51bWJlcikgKyAxIC8geCkudG9GaXhlZChkZWNpbWFscyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRNZXNzYWdlRXJyb3JCYXNlRGlmZXJlbnRlKFxuICAgICAgICBpbXBvc3Rvczogc3RyaW5nW10sXG4gICAgICAgIGdydXBvOiBhbnksXG4gICAgICAgIHN1bW1hcnlNZXNzYWdlOiBzdHJpbmcsXG4gICAgICAgIGRldGFpbE1lc3NhZ2U6IHN0cmluZ1xuICAgICkge1xuICAgICAgICBjb25zdCBpbXBvc3RvRmlsdHJhZG8gPSBpbXBvc3Rvcy5maWx0ZXIoXG4gICAgICAgICAgICAoaW1wb3N0bykgPT5cbiAgICAgICAgICAgICAgICAhW1xuICAgICAgICAgICAgICAgICAgICAnQ0JTX0RJRkVSSURPJyxcbiAgICAgICAgICAgICAgICAgICAgJ0lCU19FU1RBRFVBTF9ESUZFUklETycsXG4gICAgICAgICAgICAgICAgICAgICdJQlNfTVVOSUNJUEFMX0RJRkVSSURPJ1xuICAgICAgICAgICAgICAgIF0uaW5jbHVkZXMoaW1wb3N0bylcbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgY29udHJvbGVJbXBvc3RvID0gdGhpcy5jYWxjdWxhckltcG9zdG9zVG90YWwoXG4gICAgICAgICAgICBpbXBvc3RvRmlsdHJhZG8sXG4gICAgICAgICAgICBncnVwb1xuICAgICAgICApO1xuXG4gICAgICAgIGlmIChjb250cm9sZUltcG9zdG8uYmFzZURpZmVyZW50ZSkge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnd2FybicsXG4gICAgICAgICAgICAgICAgc3VtbWFyeTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChzdW1tYXJ5TWVzc2FnZSksXG4gICAgICAgICAgICAgICAgZGV0YWlsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGRldGFpbE1lc3NhZ2UpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250cm9sZUltcG9zdG87XG4gICAgfVxuXG4gICAgLy8gTsOjbyB1dGlsaXphciBlc3RlIG3DqXRvZG8gcGFyYSBjw6FsY3Vsb3MgZGUgaW1wb3N0b3MgZGEgUmVmb3JtYSBUcmlidXTDoXJpYS5cbiAgICBwcml2YXRlIGNhbGN1bGFyVmFsb3IodHJpYnV0bzogRW51bVRpcG9UcmlidXRvKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmdydXBvcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ncnVwb3MubWFwKChncnVwbykgPT4ge1xuICAgICAgICAgICAgICAgIGdydXBvLml0ZW1cbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoaXQ6IEl0ZW0pID0+IGl0Lm5hbWUgPT0gdHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoaXQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoYXNWYWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoaXQuZm9ybUdyb3VwLnZhbHVlKS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0LmZvcm1Hcm91cC52YWx1ZVtpdGVtXSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzVmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNWYWx1ZSAmJiB0aGlzLmltcG9zdG9DYWxjdWxhZG8odHJpYnV0bykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5iYXNlQ2FsY3VsbyAhPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5hbGlxdW90YSAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT0gRW51bVRpcG9UcmlidXRvLklDTVMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXQuZm9ybUdyb3VwLmNvbnRyb2xzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zaXR1YWNhb1RyaWJ1dGFyaWEgPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNpdHVhY2FvVHJpYnV0YXJpYS52YWx1ZSA9PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5iYXNlQ2FsY3Vsb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsaXF1b3RhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmFsaXF1b3RhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLnZhbG9yLnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdW5kSW1wb3N0byhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFzZSAqIGFsaXF1b3RhKSAvIDEwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT0gRW51bVRpcG9UcmlidXRvLklDTVMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMuc2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5jb2RTdHIgIT0gJzUxJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5iYXNlQ2FsY3Vsb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsaXF1b3RhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmFsaXF1b3RhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLnZhbG9yLnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdW5kSW1wb3N0byhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFzZSAqIGFsaXF1b3RhKSAvIDEwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9JTlNTIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1JBVCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9TRU5BUlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5nZXQoJ2Jhc2VDYWxjdWxvJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZSA/PyBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsaXF1b3RhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmdldCgnYWxpcXVvdGEnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlID8/IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMudmFsb3IucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcihiYXNlICogYWxpcXVvdGEpIC8gMTAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5iYXNlQ2FsY3Vsb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsaXF1b3RhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmFsaXF1b3RhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMudmFsb3IucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91bmRJbXBvc3RvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYXNlICogYWxpcXVvdGEpIC8gMTAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMudmFsb3IucmVzZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOdWxsT3JVbmRlZmluZWQoYmFzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTnVsbE9yVW5kZWZpbmVkKGFsaXF1b3RhKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzTnVsbE9yVW5kZWZpbmVkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY29kaWdvVHJpYnV0YWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5jb2RpZ29UcmlidXRhY2FvLnJlc2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfSU5TUyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1JBVCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1NFTkFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGltcG9zdG9zID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGVU5SVVJBTF9JTlNTJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRlVOUlVSQUxfUkFUJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRlVOUlVSQUxfU0VOQVInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sZUZ1bnJ1cmFsID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZE1lc3NhZ2VFcnJvckJhc2VEaWZlcmVudGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9zdG9zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZXJyb3JfYmFzZV9mdW5ydXJhbF9kaWZlcmVudGVfc3VtbWFyeScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVycm9yX2Jhc2VfZnVucnVyYWxfZGlmZXJlbnRlX2RldGFpbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmdW5ydXJhbFRvdGFsID0gZ3J1cG8uaXRlbS5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtKSA9PiBpdGVtLm5hbWUgPT09ICdGVU5SVVJBTF9UT1RBTCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bnJ1cmFsVG90YWwuZm9ybUdyb3VwLnNldFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUNhbGN1bG86IGNvbnRyb2xlRnVucnVyYWwuYmFzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsb3I6IGNvbnRyb2xlRnVucnVyYWwudmFsb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9zdG9NYW51YWw6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0b106XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLk1BTlVBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGFySW1wb3N0b3NUb3RhbChpbXBvc3RvczogYW55LCBncnVwbykge1xuICAgICAgICBsZXQgdmFsb3JlcyA9IHtcbiAgICAgICAgICAgIGJhc2U6IDAsXG4gICAgICAgICAgICB2YWxvcjogMCxcbiAgICAgICAgICAgIGJhc2VEaWZlcmVudGU6IGZhbHNlXG4gICAgICAgIH07XG5cbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGltcG9zdG9zLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgY29uc3QgaW1wb3N0byA9IGdydXBvLml0ZW0uZmluZChcbiAgICAgICAgICAgICAgICAoaXRlbSkgPT4gaXRlbS5uYW1lID09PSBpbXBvc3Rvc1tpbmRleF1cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoaW1wb3N0bz8uZm9ybUdyb3VwLnZhbHVlLmJhc2VDYWxjdWxvKSkge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgdmFsb3Jlcy5iYXNlID4gMCAmJlxuICAgICAgICAgICAgICAgICAgICB2YWxvcmVzLmJhc2UgIT0gaW1wb3N0by5mb3JtR3JvdXAudmFsdWUuYmFzZUNhbGN1bG9cbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsb3Jlcy5iYXNlRGlmZXJlbnRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YWxvcmVzLmJhc2UgPVxuICAgICAgICAgICAgICAgICAgICBpbXBvc3RvLmZvcm1Hcm91cC52YWx1ZS5iYXNlQ2FsY3VsbyA+IHZhbG9yZXMuYmFzZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBpbXBvc3RvLmZvcm1Hcm91cC52YWx1ZS5iYXNlQ2FsY3Vsb1xuICAgICAgICAgICAgICAgICAgICAgICAgOiB2YWxvcmVzLmJhc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoaW1wb3N0bz8uZm9ybUdyb3VwLnZhbHVlLnZhbG9yKSkge1xuICAgICAgICAgICAgICAgIHZhbG9yZXMudmFsb3IgPSBOdW1iZXIoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91bmRJbXBvc3RvKFxuICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyKHZhbG9yZXMudmFsb3IpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIoaW1wb3N0by5mb3JtR3JvdXAudmFsdWUudmFsb3IpLFxuICAgICAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWxvcmVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFDYW1wb3MoY2FtcG9zOiBDYW1wb1RyaWJ1dG9bXSwgdHJpYnV0bzogRW51bVRpcG9UcmlidXRvKSB7XG4gICAgICAgIGNvbnN0IHJldG9ybm86IGFueSA9IHt9O1xuICAgICAgICBjb25zdCBmb3JtRmllbGQ6IEZvcm1GaWVsZFtdID0gW107XG4gICAgICAgIGxldCBmb3JtR3JvdXA6IGFueSA9IHt9O1xuXG4gICAgICAgIGNhbXBvcy5tYXAoKGl0KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3Vsbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBiYXNlQ2FsY3VsbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBpdC5kaXNhYmxlZCA/PyBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0Jhc2VDYWxjdWxvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdiYXNlQ2FsY3VsbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYmFzZV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGN1bGFyVmFsb3IodHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0odHJpYnV0bykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0byk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0ZpZWxkUmVxdWlyZWQoJ2Jhc2VDYWxjdWxvJywgdHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBhbGlxdW90YTogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBpdC5kaXNhYmxlZCA/PyBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5Ljk5OTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdBbGlxdW90YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYWxpcXVvdGEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuZ2V0TGFiZWxBbGlxdW90YSh0cmlidXRvKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGN1bGFyVmFsb3IodHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0odHJpYnV0bykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0byk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0ZpZWxkUmVxdWlyZWQoJ2FsaXF1b3RhJywgdHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uUGVyaW9kb0FwdXJhY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIFtFbnVtQ2FtcG9UcmlidXRvLlBlcmlvZG9BcHVyYWNhb106IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmlvZG9BcHVyYWNhbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19wZXJpb2RvX2FwdXJhY2FvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXc6ICdtb250aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUbzogJ2JvZHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXJMb2NhbGVPcHRpb25zOiBuZXcgQ2FsZW5kYXJMb2NhbGVPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmxvY2FsZVNlcnZpY2UuZ2V0TG9jYWxlT3B0aW9ucygpLmNhbGVuZGFyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQ6ICdtbS95eSdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRmllbGRSZXF1aXJlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUNhbXBvVHJpYnV0by5QZXJpb2RvQXB1cmFjYW8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWxcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICByZWR1Y2FvQWxpcXVvdGFHb3Zlcm5hbWVudGFsOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCgxMDApXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdSZWR1Y2FvQWxpcXVvdGFHb3Zlcm5hbWVudGFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdyZWR1Y2FvQWxpcXVvdGFHb3Zlcm5hbWVudGFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZWR1Y2FvX2FsaXF1b3RhX2dvdmVybmFtZW50YWxfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAxMDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHJlZHVjYW9BbGlxdW90YTogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnUmVkdWNhb0FsaXF1b3RhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdyZWR1Y2FvQWxpcXVvdGEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlZHVjYW9fYWxpcXVvdGFfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAxMDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFFZmV0aXZhKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhRWZldGl2YTogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBpdC5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdBbGlxdW90YUVmZXRpdmEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2FsaXF1b3RhRWZldGl2YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYWxpcXVvdGFfZWZldGl2YV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmEpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgYWxpcXVvdGFJbnRlcm5hOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OS45OTk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQWxpcXVvdGFJbnRlcm5hJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhbGlxdW90YUludGVybmEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2FsaXF1b3RhX2ludGVybmFfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhSW50ZXJuYURlc3Rpbm8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgYWxpcXVvdGFJbnRlcm5hRGVzdGlubzogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTkuOTk5OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0FsaXF1b3RhSW50ZXJuYURlc3Rpbm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2FsaXF1b3RhSW50ZXJuYURlc3Rpbm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2FsaXF1b3RhX2ludGVybmFfZGVzdGlub19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3I6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaXQuZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdWYWxvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndmFsb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3ZhbG9yX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKHRyaWJ1dG8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKHRyaWJ1dG8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNGaWVsZFJlcXVpcmVkKCd2YWxvcicsIHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JCcnV0bykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICB2YWxvckJydXRvSW1wb3N0bzogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBpdC5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1ZhbG9yQnJ1dG9JbXBvc3RvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd2YWxvckJydXRvSW1wb3N0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfdmFsb3JfYnJ1dG9faW1wb3N0b19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICB2YWxvcklzZW50YXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1ZhbG9ySXNlbnRhcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndmFsb3JJc2VudGFzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9pc2VudGFzX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHZhbG9yT3V0cmFzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdWYWxvck91dHJhcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndmFsb3JPdXRyYXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3ZhbG9yX291dHJhc19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgc2l0dWFjYW9UcmlidXRhcmlhOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBsZXQgc2VhcmNoR3JpZEZpZWxkcyE6IEZvcm1GaWVsZFtdO1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnQ29udHJvbGxlcnNoaXAgT3V0Z29pbmcgSW52b2ljZSdcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoR3JpZEZpZWxkcyA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY29kU3RyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuU3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkZXNTdHInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5TdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3RpcEltcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtLnRpcF9pbXBfcGlzX2NvZmlucydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVRpcEltcENzdC5QSVNfQ09GSU5TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW0udGlwX2ltcF9pcGknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBJbXBDc3QuSVBJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW0udGlwX2ltcF9pY21zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtVGlwSW1wQ3N0LklDTVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bS50aXBfaW1wX2lzcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVRpcEltcENzdC5JU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3RpcE9wZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtLnRpcF9vcGVfdl9zYWlkYSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVRpcE9wZS5WU0FJREFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bS50aXBfb3BlX3ZfZW50cmFkYSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVRpcE9wZS5WRU5UUkFEQVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtLnRpcF9vcGVfdl9hbWJvcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVRpcE9wZS5WQU1CT1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgZGVmYXVsdEZpbHRlciA9IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdleGNsdWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydmYWxzZSddXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAndGlwSW1wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbbWFwRW51bVRpcG9UcmlidXRvVG9FbnVtVGlwSW1wQ3N0KHRyaWJ1dG8pXVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3RpcE9wZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gW0VudW1UaXBPcGUuVkFNQk9TLCBFbnVtVGlwT3BlLlZTQUlEQV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbRW51bVRpcE9wZS5WQU1CT1MsIEVudW1UaXBPcGUuVkVOVFJBREFdXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnc2l0dWFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnVkFUSVZPJ11cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5DQlMgfHxcbiAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTCB8fFxuICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTCB8fFxuICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0VTVE9STk9fQ1JFRElUTyB8fFxuICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVE9STk9fQ1JFRElUTyB8fFxuICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0FKVVNURSB8fFxuICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0FKVVNURVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlciA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmRlZmF1bHRGaWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYS5pbmRHRXN0b3Jub0NyZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNCU19FU1RPUk5PX0NSRURJVE8gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLklCU19FU1RPUk5PX0NSRURJVE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gRW51bUxvZ2ljYWxPcGVyYXRvci5FcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBFbnVtTG9naWNhbE9wZXJhdG9yLk5lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydFWElHRSddXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEuaW5kR0FqdXN0ZUNvbXBldCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5DQlNfQUpVU1RFIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfQUpVU1RFXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogRW51bUxvZ2ljYWxPcGVyYXRvci5OZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnRVhJR0UnXVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5lMDI3U3RyTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5kb21pbmlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hHcmlkRmllbGRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0odHJpYnV0bykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdTaXR1YWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfc2l0dWFjYW9fdHJpYnV0YXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5jbGFzc2lmaWNhY2FvVHJpYnV0YXJpYUxvb2t1cC5tb3VudE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg6ICdlcnB4X2NwbF9pbXAuaW1wb3N0b3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5kb21pbmlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXI6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdzaXR1YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydBVElWTyddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5RmllbGRzOiBbJ2UwMjdzdHIuaWQnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlEZXBlbmRlbmN5OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdlMDI3c3RyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0b3Juby5mb3JtR3JvdXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l0dWFjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKHRyaWJ1dG8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2NsYXNzaWZpY2FjYW9fdHJpYnV0YXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5FbnF1YWRyYW1lbnRvSXBpKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGVucXVhZHJhbWVudG9JcGk6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5lMDI3ZXFpTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5kb21pbmlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdlMDI3ZXFpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6ICdlbnF1YWRyYW1lbnRvSXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnc2l0dWFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnVkFUSVZPJ11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdleGNsdWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydmYWxzZSddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0VucXVhZHJhbWVudG9JcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2VucXVhZHJhbWVudG9faXBpX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNiwgbGc6IDYsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBwZXJjZW50dWFsUmVkdWNhbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCgxMDApXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdQZXJjZW50dWFsUmVkdWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGVyY2VudHVhbFJlZHVjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3BlcmNlbnR1YWxfcmVkdWNhb19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAxMDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgcGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCgxMDAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcGVyY2VudHVhbF9tdmFfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogMTAwMCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLk1vdGl2b0Rlc29uZXJhY2FvSWNtcykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBkZXNvbmVyYWNhb0ljbXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnTW90aXZvRGVzb25lcmFjYW9JY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkZXNvbmVyYWNhb0ljbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2Rlc29uZXJhY2FvX2ljbXNfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8wJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlYxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlY0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfNSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl82J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WNlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlY3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfOCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl85J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WOVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzEwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WMTBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8xMSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjExXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMTInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlYxMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzE2J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WMTZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl85MCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjkwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19kZXNvbmVyYWNhb19pY21zX3BsYWNlaG9sZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZlbnQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5PcmlnZW0pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2VtOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ09yaWdlbScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnb3JpZ2VtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX29yaV9tZXJfdl8wJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU9yaU1lci5WMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtT3JpTWVyLlYxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfMidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1PcmlNZXIuVjJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX29yaV9tZXJfdl8zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU9yaU1lci5WM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtT3JpTWVyLlY0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfNSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1PcmlNZXIuVjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX29yaV9tZXJfdl82J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU9yaU1lci5WNlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtT3JpTWVyLlY3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfOCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1PcmlNZXIuVjhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX29yaWdlbV9pY21zX3BsYWNlaG9sZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19vcmlnZW1faWNtc19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDYsIGxnOiA2LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFldmVudCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxEaWZlcmltZW50bykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBhbGlxdW90YTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnUGVyY2VudHVhbERpZmVyaW1lbnRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhbGlxdW90YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcGVyY2VudHVhbF9kaWZlcmltZW50b19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhclZhbG9yKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogMTAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHBlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWw6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnUGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcGVyY2VudHVhbF9zdXBvcnRhZG9fY29uc3VtaWRvcl9maW5hbF9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAxMDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5WYWxvclJlY29saGlkb1BlbG9TdWJzdGl0dXRvXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3JSZWNvbGhpZG9JY21zU3Q6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1ZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9yUmVjb2xoaWRvSWNtc1N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9yZWNvbGhpZG9fcGVsb19zdWJzdGl0dXRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHZhbG9ySWNtc1N0UmV0aWRvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnVmFsb3JJY21zU3RSZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9ySWNtc1N0UmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9pY21zX3N0X3JldGlkb19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDEzLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5Nb2RhbGlkYWRlQkMpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgbW9kYWxpZGFkZUJDOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ01vZGFsaWRhZGVCYycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbW9kYWxpZGFkZUJDJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vZGFsaWRhZGVfYmNfdl8wJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vZEJjLlYwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb2RhbGlkYWRlX2JjX3ZfMSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb2RCYy5WMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW9kYWxpZGFkZV9iY192XzInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW9kQmMuVjJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vZGFsaWRhZGVfYmNfdl8zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vZEJjLlYzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tb2RhbGlkYWRlX2JjX3BsYWNlaG9sZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tb2RhbGlkYWRlX2JjX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV2ZW50KSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLk5hdHVyZXphUmVjZWl0YSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBuYXR1cmV6YVJlY2VpdGE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5uYXR1cmV6YVJlY2VpdGFMb29rdXAubW91bnRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluOiB0aGlzLmRvbWluaW8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZTogdGhpcy5zZXJ2aWNvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogJ25hdHVyZXphUmVjZWl0YScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwU29ydDogW3sgZmllbGQ6ICdjb2RpZ28nLCBvcmRlcjogMSB9XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hTb3J0OiBbeyBmaWVsZDogJ2NvZGlnbycsIG9yZGVyOiAxIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnTmF0dXJlemFSZWNlaXRhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19uYXR1cmV6YV9yZWNlaXRhX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5PYnNlcnZhY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmFjYW86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDEyMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ09ic2VydmFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ29ic2VydmFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX29ic2VydmFjYW9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLlN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X2xlbmd0aF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3JEZWR1Y2FvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAndmFsb3JEZWR1Y2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd2YWxvckRlZHVjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3ZhbG9yX2RlZHVjYW9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5JbmRpY2F0aXZvQXF1aXNpY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGluZGljYXRpdm9BcXVpc2ljYW86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0luZGljYXRpdm9BcXVpc2ljYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2luZGljYXRpdm9BcXVpc2ljYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2luZGljYXRpdm9fYXF1aXNpY2FvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192MSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhby5WMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2Z1bnJ1cmFsX2luZGljYXRpdm9fYXF1aXNpY2FvX3YyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLlYzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZnVucnVyYWxfaW5kaWNhdGl2b19hcXVpc2ljYW9fdjMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192NCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhby5WNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2Z1bnJ1cmFsX2luZGljYXRpdm9fYXF1aXNpY2FvX3Y1J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLlY2LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZnVucnVyYWxfaW5kaWNhdGl2b19hcXVpc2ljYW9fdjYnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192NydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGNvZGlnb0FycmVjYWRhY2FvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDYpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdDb2RpZ29BcnJlY2FkYWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY29kaWdvQXJyZWNhZGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2NvZGlnb19hcnJlY2FkYWNhb19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuU3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfbGVuZ3RoX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgY29kaWdvVHJpYnV0YWNhbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heExlbmd0aCg1KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQ29kaWdvVHJpYnV0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY29kaWdvVHJpYnV0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfY29kaWdvX3RyaWJ1dGFjYW9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLlN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X2xlbmd0aF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkltcG9zdG9OYW9SZWN1cGVyYWRvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIEltcG9zdG9OYW9SZWN1cGVyYWRvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdJbXBvc3RvTmFvUmVjdXBlcmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnSW1wb3N0b05hb1JlY3VwZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2ltcG9zdG9fbmFvX3JlY3VwZXJhZG8nXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLmJhc2VDYWxjdWxvQ3JlZGl0bykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBiYXNlQ2FsY3Vsb0NyZWRpdG86IFt7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9XVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnYmFzZUNhbGN1bG9DcmVkaXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdiYXNlQ2FsY3Vsb0NyZWRpdG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl80J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WNFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl81J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl82J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WNlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl83J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WN1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl84J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WOFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl85J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WOVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjEwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzExJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xMydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjEzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzE0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xNidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjE2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzE3J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxOFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYmFzZV9jYWxjdWxvX2NyZWRpdG9fcGxhY2Vob2xkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2Jhc2VfY2FsY3Vsb19jcmVkaXRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNiwgbGc6IDYsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV2ZW50KSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgcmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdyZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdyZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3JlZ190cmlidXRfcGlzX2NvZmluc19jdW11bGF0aXZvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMuQ1VNVUxBVElWT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fcmVnX3RyaWJ1dF9waXNfY29maW5zX25hb19jdW11bGF0aXZvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMuTkFPX0NVTVVMQVRJVk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlZ2ltZV90cmlidXRhcmlvX3Bpc19jb2ZpbnNfcGxhY2Vob2xkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlZ2ltZV90cmlidXRhcmlvX3Bpc19jb2ZpbnNfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZlbnQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWxcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBwZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDEwMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ3BlcmNlbnR1YWxTdXNwZW5zYW9QYXJjaWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcGVyY2VudHVhbF9zdXNwZW5zYW9fcGFyY2lhbF9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAxMDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkJlbmVmaWNpb0Zpc2NhbCkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBiZW5lZmljaW9GaXNjYWw6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmJlbmVmaWNpb0Zpc2NhbExvb2t1cC5tb3VudE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW46IHRoaXMuZG9taW5pbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOiB0aGlzLnNlcnZpY28sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiAnYmVuZWZpY2lvRmlzY2FsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnZXhjbHVpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnZmFsc2UnXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2JlbmVmaWNpb19maXNjYWxfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkNzdERlc29uZXJhY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHNpdHVhY2FvVHJpYnV0YXJpYTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5lMDI3U3RyTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4OiAnZXJweF9jcGxfaW1wLmltcG9zdG9zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAndGlwT3BlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcE9wZS5WRU5UUkFEQSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwT3BlLlZTQUlEQSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwT3BlLlZBTUJPU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3NpdHVhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbRW51bVNpdHVhY2FvLlZBVElWT11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdleGNsdWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydmYWxzZSddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAndGlwSW1wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbRW51bVRpcEltcENzdC5DQlNfSUJTXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6ICdzaXR1YWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2lnbjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweF9jcGxfaW1wLmltcG9zdG9zLmNzdF9kZXNvbmVyYWNhb19pbmZvX3NpZ24nXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHhfY3BsX2ltcC5pbXBvc3Rvcy5zaXR1YWNhb190cmlidXRhcmlhX2Rlc29uZXJhY2FvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYURlc29uZXJhY2FvXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFMb29rdXAubW91bnRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg6ICdlcnB4X2NwbF9pbXAuaW1wb3N0b3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXI6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdzaXR1YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1TaXR1YWNhb0NsYXNzaWZpY2FjYW9UcmlidXRhcmlhLkFUSVZPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2t1cFNvcnQ6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdjb2RpZ28nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoU29ydDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2NvZGlnbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlEZXBlbmRlbmN5OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdlMDI3c3RyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0b3Juby5mb3JtR3JvdXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l0dWFjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaWduOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4X2NwbF9pbXAuaW1wb3N0b3MuY2xhc3NpZmljYWNhb190cmlidXRhcmlhX2Rlc29uZXJhY2FvX2luZm9fc2lnbidcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweF9jcGxfaW1wLmltcG9zdG9zLmNsYXNzaWZpY2FjYW9fdHJpYnV0YXJpYV9kZXNvbmVyYWNhbydcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50b1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIFtFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG9dOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLk5FTkhVTSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hcGxpY2FyX3ZhbG9yX2xpcXVpZG9fZG9jdW1lbnRvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0ZpZWxkUmVxdWlyZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkNCU19DUkVESVRPX1BSRVNVTUlETyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9hcGxpY2FyX3ZhbG9yX2xpcXVpZG9fZG9jdW1lbnRvX3N1YnRyYWlyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8uU1VCVFJBSVJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fYXBsaWNhcl92YWxvcl9saXF1aWRvX2RvY3VtZW50b19zb21hcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLlNPTUFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9hcGxpY2FyX3ZhbG9yX2xpcXVpZG9fZG9jdW1lbnRvX25lbmh1bSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLk5FTkhVTVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uRXNjcml0dXJhckFsaXF1b3RhSVNTKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIFtFbnVtQ2FtcG9UcmlidXRvLkVzY3JpdHVyYXJBbGlxdW90YUlTU106IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUVzY3JpdHVyYXJBbGlxdW90YUlTUy5TSU0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1DYW1wb1RyaWJ1dG8uRXNjcml0dXJhckFsaXF1b3RhSVNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZXNjcml0dXJhcl9hbGlxdW90YV9pc3MnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZXNjcml0dXJhcl9hbGlxdW90YV9pc3Nfc2ltJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUVzY3JpdHVyYXJBbGlxdW90YUlTUy5TSU1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2VzY3JpdHVyYXJfYWxpcXVvdGFfaXNzX25hbydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Fc2NyaXR1cmFyQWxpcXVvdGFJU1MuTkFPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09XG4gICAgICAgICAgICAgICAgRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYUNyZWRpdG9QcmVzdW1pZG9cbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmNsYXNzaWZpY2FjYW9UcmlidXRhcmlhTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeDogJ2VycHhfY3BsX2ltcC5pbXBvc3RvcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnc2l0dWFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnQVRJVk8nXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2NyZWRpdG9QcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsndHJ1ZSddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnZTAyN3N0cicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5JcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogW251bGxdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2NsYXNzaWZpY2FjYW9fdHJpYnV0YXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0ZpZWxkUmVxdWlyZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuc3VnZXN0b2VzKSB7XG4gICAgICAgICAgICB0aGlzLnN1Z2VzdG9lc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHN1Z2VzdGFvKSA9PiBzdWdlc3Rhby50aXBvVHJpYnV0byA9PT0gdHJpYnV0bylcbiAgICAgICAgICAgICAgICAuZm9yRWFjaCgoc3VnZXN0YW8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoc3VnZXN0YW8pXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChhdHJpYnV0b3MpID0+IGF0cmlidXRvc1swXSAhPT0gJ3RpcG9UcmlidXRvJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKChhdHJpYnV0b3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBbYXRyaWJ1dG9zWzBdXVswXS52YWx1ZSA9IGF0cmlidXRvc1sxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0b3Juby5mb3JtRmllbGQgPSBmb3JtRmllbGQ7XG4gICAgICAgIHJldG9ybm8uZm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICBpbXBvc3RvTWFudWFsOiBbXG4gICAgICAgICAgICAgICAgeyB2YWx1ZTogZmFsc2UsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9dOiBbXG4gICAgICAgICAgICAgICAgeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgXVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmV0b3JubztcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVWYWx1ZUNoYW5nZXMoeyBpdGVtIH06IHsgaXRlbTogSXRlbTsgZ3JvdXA6IEdyb3VwIH0pIHtcbiAgICAgICAgaXRlbS5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgoaXRlbS5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKSksXG4gICAgICAgICAgICAgICAgLy8gV2UgYXJlIHVzaW5nIGRlYm91bmNlVGltZSBoZXJlIGJlY2F1c2Ugb3VyIExvb2t1cCBDb21wb25lbnQgaXMgZW1pdHRpbmcgdHdvIGV2ZW50cyB1bmZvcnR1bmF0ZWx5LlxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MCksXG4gICAgICAgICAgICAgICAgc2NhbihcbiAgICAgICAgICAgICAgICAgICAgKGFjYykgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nVmFsdWU6IGFjYy5zdGFydGluZ1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlOiBpdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydGluZ1ZhbHVlOiBpdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlOiBpdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh7IHN0YXJ0aW5nVmFsdWUsIGN1cnJlbnRWYWx1ZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFzdGFydGluZ1ZhbHVlLmltcG9zdG9NYW51YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoc3RhcnRpbmdWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ICE9PSAnaW1wb3N0b01hbnVhbCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSAhPT0gRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmV2ZXJ5KChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0eXBlIH0gPSBpdGVtLmZvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSBrZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gRmllbGRUeXBlLkxvb2t1cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhS2V5IH0gPSBpdGVtLmZvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0ga2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIExvb2t1cEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nVmFsdWU/LltrZXldPy5bZGF0YUtleV0gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlPy5ba2V5XT8uW2RhdGFLZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXJ0aW5nVmFsdWVba2V5XSA9PT0gY3VycmVudFZhbHVlW2tleV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ2ltcG9zdG9NYW51YWwnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWx1ZShmYWxzZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdpbXBvc3RvTWFudWFsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0VmFsdWUodHJ1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBzdGFydGluZ1ZhbHVlW0VudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvXSAhPT1cbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5NQU5VQUxcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoc3RhcnRpbmdWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ICE9PSAnaW1wb3N0b01hbnVhbCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSAhPT0gRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmV2ZXJ5KChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0eXBlIH0gPSBpdGVtLmZvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSBrZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gRmllbGRUeXBlLkxvb2t1cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhS2V5IH0gPSBpdGVtLmZvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0ga2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIExvb2t1cEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nVmFsdWU/LltrZXldPy5bZGF0YUtleV0gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlPy5ba2V5XT8uW2RhdGFLZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXJ0aW5nVmFsdWVba2V5XSA9PT0gY3VycmVudFZhbHVlW2tleV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydGluZ1ZhbHVlW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWx1ZShFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLk1BTlVBTCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExhYmVsQWxpcXVvdGEodHJpYnV0bzogRW51bVRpcG9UcmlidXRvKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRyaWJ1dG8gPT0gRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOTyB8fFxuICAgICAgICAgICAgdHJpYnV0byA9PSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklET1xuICAgICAgICApXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYWxpcXVvdGFfaW50ZXJlc3RhZHVhbF9sYWJlbCdcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdHJpYnV0by50b1N0cmluZygpLmVuZHNXaXRoKCdfRElGRVJJRE8nKSAmJlxuICAgICAgICAgICAgdHJpYnV0byAhPT0gRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE9cbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYWxpcXVvdGFfZGlmZXJpZG9fbGFiZWwnXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX2FsaXF1b3RhX2xhYmVsJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRyYW5zbGF0ZUJ1dHRvbih2YWx1ZTogYW55KSB7XG4gICAgICAgIGxldCB0cmFuc2xhdGUgPSAnLmJ1dHRvbl9tZW1vcmlhX2NhbGN1bG9fZW1wdHlfbGFiZWwnO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmlkc1RheGVzTWVtb3JpYUNhbGN1bG8uZmluZCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC50aXBvVHJpYnV0byA9PSB2YWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmlkUGFyYW1ldHJvICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRyYW5zbGF0ZSA9ICcuYnV0dG9uX21lbW9yaWFfY2FsY3Vsb19sYWJlbCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wcmVmaXhMYWJlbCArIHRyYW5zbGF0ZTtcbiAgICB9XG5cbiAgICBpc0dyb3VwSW52YWxpZChncm91cDoge1xuICAgICAgICBncnVwbzogc3RyaW5nO1xuICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgICBmb3JtRmllbGQ6IEZvcm1GaWVsZFtdO1xuICAgICAgICAgICAgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gICAgICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICB9W107XG4gICAgfSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZ3JvdXA/Lml0ZW0/LnNvbWUoKGl0ZW0pID0+IGl0ZW0/LmZvcm1Hcm91cD8uaW52YWxpZCk7XG4gICAgfVxuXG4gICAgaXNCYWRnZVZpc2libGUoaXRlbTogSXRlbSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgaXNUYXhGcm9tVGF4UmVmb3JtKGl0ZW0ubmFtZSBhcyBFbnVtVGlwb1RyaWJ1dG8pICYmXG4gICAgICAgICAgICAhIWl0ZW0uZm9ybUdyb3VwLmdldChFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0bykudmFsdWVcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRCYWRnZUNvbG9yKGl0ZW06IEl0ZW0pOiBCYWRnZUNvbG9ycyB7XG4gICAgICAgIHN3aXRjaCAoaXRlbS5mb3JtR3JvdXAuZ2V0KEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvKS52YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLkNBTENVTEFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gQmFkZ2VDb2xvcnMuR3JlZW47XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uSEVSREFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gQmFkZ2VDb2xvcnMuQmx1ZTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5NQU5VQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEJhZGdlQ29sb3JzLlllbGxvdztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEJhZGdlQ29sb3JzLlllbGxvdztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEJhZGdlVGV4dChpdGVtOiBJdGVtKTogc3RyaW5nIHtcbiAgICAgICAgc3dpdGNoIChpdGVtLmZvcm1Hcm91cC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pLnZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uQ0FMQ1VMQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19jYWxjdWxvX2F1dG9tYXRpY28nXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5IRVJEQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19jYWxjdWxvX2dlcmFkb192aWFfcHJvY2Vzc28nXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5NQU5VQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2NhbGN1bG9fbWFudWFsJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19jYWxjdWxvX21hbnVhbCdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRCYWRnZUluZm9TaWduKGl0ZW06IEl0ZW0pOiB7IHRleHQ6IHN0cmluZyB9IHtcbiAgICAgICAgaWYgKGl0ZW0uZm9ybUdyb3VwLmdldCgnaW1wb3N0b01hbnVhbCcpLnZhbHVlKVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19pbmZvX3NpZ25fdGV4dF9tYW51YWwnXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfTtcblxuICAgICAgICBzd2l0Y2ggKGl0ZW0uZm9ybUdyb3VwLmdldChFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0bykudmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5DQUxDVUxBRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2luZm9fc2lnbl90ZXh0X2NhbGN1bGFkbydcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uSEVSREFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYmFkZ2VfdGlwb19jYWxjdWxvX2ltcG9zdG9faW5mb19zaWduX3RleHRfaGVyZGFkbydcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uTUFOVUFMOlxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19pbmZvX3NpZ25fdGV4dF9tYW51YWwnXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2luZm9fc2lnbl90ZXh0X21hbnVhbCdcbiAgICAgICAgICAgIClcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSW52b2ljZURvY3VtZW50KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZScgfHxcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZpZWxkUmVxdWlyZWQoZmllbGQ6IHN0cmluZywgdGF4VHlwZTogRW51bVRpcG9UcmlidXRvKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmdydXBvc1xuICAgICAgICAgICAgLmZpbmQoKGdyb3VwKSA9PiBncm91cC5pdGVtLmZpbmQoKGl0ZW0pID0+IGl0ZW0ubmFtZSA9PT0gdGF4VHlwZSkpXG4gICAgICAgICAgICAuaXRlbS5maW5kKChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IHRheFR5cGUpO1xuXG4gICAgICAgIHJldHVybiBpdGVtLmZvcm1Hcm91cC5nZXQoZmllbGQpLnZhbGlkYXRvcj8uKHt9IGFzIEFic3RyYWN0Q29udHJvbClcbiAgICAgICAgICAgID8ucmVxdWlyZWQ7XG4gICAgfVxufVxuIl19