@senior-gestao-pessoas/payroll-core 9.2.0 → 9.3.0-06156ffc-852c-4f04-8482-5c4f9317ecff

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 (34) hide show
  1. package/bundles/senior-gestao-pessoas-payroll-core.umd.js +419 -25
  2. package/bundles/senior-gestao-pessoas-payroll-core.umd.js.map +1 -1
  3. package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js +1 -1
  4. package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js.map +1 -1
  5. package/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.d.ts +3 -1
  6. package/components/historical-pix-account/historical-pix-account.component.d.ts +8 -1
  7. package/components/historical-pix-account-list/historical-pix-account-list.component.d.ts +51 -0
  8. package/components/historical-pix-account-list/historical-pix-account-list.module.d.ts +2 -0
  9. package/components/historical-pix-account-list/historical-pix-account-list.service.d.ts +9 -0
  10. package/components/historical-pix-account-list/index.d.ts +3 -0
  11. package/esm2015/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.js +39 -18
  12. package/esm2015/components/historical-pix-account/historical-pix-account.component.js +46 -9
  13. package/esm2015/components/historical-pix-account-list/historical-pix-account-list.component.js +252 -0
  14. package/esm2015/components/historical-pix-account-list/historical-pix-account-list.module.js +39 -0
  15. package/esm2015/components/historical-pix-account-list/historical-pix-account-list.service.js +35 -0
  16. package/esm2015/components/historical-pix-account-list/index.js +4 -0
  17. package/esm2015/public_api.js +2 -1
  18. package/esm5/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.js +40 -18
  19. package/esm5/components/historical-pix-account/historical-pix-account.component.js +58 -9
  20. package/esm5/components/historical-pix-account-list/historical-pix-account-list.component.js +276 -0
  21. package/esm5/components/historical-pix-account-list/historical-pix-account-list.module.js +42 -0
  22. package/esm5/components/historical-pix-account-list/historical-pix-account-list.service.js +37 -0
  23. package/esm5/components/historical-pix-account-list/index.js +4 -0
  24. package/esm5/public_api.js +2 -1
  25. package/fesm2015/senior-gestao-pessoas-payroll-core.js +375 -26
  26. package/fesm2015/senior-gestao-pessoas-payroll-core.js.map +1 -1
  27. package/fesm5/senior-gestao-pessoas-payroll-core.js +417 -26
  28. package/fesm5/senior-gestao-pessoas-payroll-core.js.map +1 -1
  29. package/locale/en-US.json +8 -1
  30. package/locale/es-ES.json +8 -1
  31. package/locale/pt-BR.json +8 -1
  32. package/package.json +1 -1
  33. package/public_api.d.ts +1 -0
  34. package/senior-gestao-pessoas-payroll-core.metadata.json +1 -1
@@ -7,16 +7,19 @@ import { compareValues, isValid, mountCustomToSave } from "../utils/helpers";
7
7
  import { DirectionEnumeration } from "../../core/enums";
8
8
  import { Subject } from "rxjs";
9
9
  import { FormatUtilsService } from "../utils/format-utils/format-utils.service";
10
+ import { ConfirmationService, MessageService } from "primeng/api";
10
11
  let HistoricalPixAccountComponent = class HistoricalPixAccountComponent {
11
- constructor(translateService, cd, formBuilder) {
12
+ constructor(translateService, cd, formBuilder, messageService) {
12
13
  this.translateService = translateService;
13
14
  this.cd = cd;
14
15
  this.formBuilder = formBuilder;
16
+ this.messageService = messageService;
15
17
  this.recordByRow = 1;
16
18
  this.showDateChange = false;
17
19
  this.isEditMode = false;
18
20
  this.isViewMode = false;
19
21
  this.withSideBar = true;
22
+ this.defaultCpfNumber = null;
20
23
  this.visibleChange = new EventEmitter();
21
24
  this.ngUnsubscribe = new Subject();
22
25
  this.orderBy = {
@@ -58,17 +61,35 @@ let HistoricalPixAccountComponent = class HistoricalPixAccountComponent {
58
61
  visible: !!(!this.isEditMode && this.withSideBar),
59
62
  label: this.translateService.instant("hcm.payroll.edit"),
60
63
  command: () => {
61
- rowData["index"] = key;
62
- this.pixAccountItemInput = { currentItem: rowData, listData: this.listDataNoPage, isEditMode: true };
63
- this.visible = true;
64
+ if (this.isAllowToEditHistorical && rowData) {
65
+ rowData["index"] = key;
66
+ this.pixAccountItemInput = { currentItem: rowData, listData: this.listDataNoPage, isEditMode: true };
67
+ this.visible = true;
68
+ }
69
+ else {
70
+ this.messageService.add({
71
+ severity: "error",
72
+ summary: this.translateService.instant("hcm.payroll.error"),
73
+ detail: this.translateService.instant("hcm.payroll.permission_error_not_allowed"),
74
+ });
75
+ }
64
76
  },
65
77
  },
66
78
  {
67
79
  visible: !this.isEditMode,
68
80
  label: this.translateService.instant("hcm.payroll.delete"),
69
81
  command: () => {
70
- this.loading = true;
71
- this.deleteAnnuityItem(key);
82
+ if (this.isAllowToDeleteHistorical && rowData) {
83
+ this.loading = true;
84
+ this.deleteAnnuityItem(key);
85
+ }
86
+ else {
87
+ this.messageService.add({
88
+ severity: "error",
89
+ summary: this.translateService.instant("hcm.payroll.error"),
90
+ detail: this.translateService.instant("hcm.payroll.permission_error_not_allowed"),
91
+ });
92
+ }
72
93
  },
73
94
  },
74
95
  ];
@@ -248,11 +269,21 @@ let HistoricalPixAccountComponent = class HistoricalPixAccountComponent {
248
269
  getFormattedPercentage(value) {
249
270
  return FormatUtilsService.getFormattedPercentage(value);
250
271
  }
272
+ get isAllowToDeleteHistorical() {
273
+ return (this.permission["Excluir"]);
274
+ }
275
+ get isAllowToEditHistorical() {
276
+ return (this.permission["Editar"]);
277
+ }
278
+ get isAllowToViewHistorical() {
279
+ return (this.permission["Visualizar"]);
280
+ }
251
281
  };
252
282
  HistoricalPixAccountComponent.ctorParameters = () => [
253
283
  { type: TranslateService },
254
284
  { type: ChangeDetectorRef },
255
- { type: FormBuilder }
285
+ { type: FormBuilder },
286
+ { type: MessageService }
256
287
  ];
257
288
  tslib_1.__decorate([
258
289
  ViewChild(CustomFieldsComponent, { static: false })
@@ -299,6 +330,12 @@ tslib_1.__decorate([
299
330
  tslib_1.__decorate([
300
331
  Input()
301
332
  ], HistoricalPixAccountComponent.prototype, "paramsForm", void 0);
333
+ tslib_1.__decorate([
334
+ Input()
335
+ ], HistoricalPixAccountComponent.prototype, "defaultCpfNumber", void 0);
336
+ tslib_1.__decorate([
337
+ Input()
338
+ ], HistoricalPixAccountComponent.prototype, "permission", void 0);
302
339
  tslib_1.__decorate([
303
340
  Input()
304
341
  ], HistoricalPixAccountComponent.prototype, "dateChange", null);
@@ -315,9 +352,9 @@ HistoricalPixAccountComponent = tslib_1.__decorate([
315
352
  Component({
316
353
  // tslint:disable-next-line:component-selector
317
354
  selector: "c-historical-pix-account",
318
- template: "<s-sidebar *ngIf=\"withSideBar\" [visible]=\"visible\" (visibleChange)=\"close()\"\n header=\"{{'hcm.payroll.historical_pix_account_title_form'|translate}}\">\n<pix-account [(visible)]=\"visible\"\n [isEditAndViewValue]=\"pixAccountItemInput\"\n [currency]=\"currency\"\n [customEntity]=\"customEntity\"\n [customService]=\"customService\"\n [getListPixAccount]=\"listDataNoPage\"\n [paramsForm]=\"paramsForm\"\n (pixAccountItemToList)=\"addItemInList($event)\"></pix-account>\n</s-sidebar>\n\n<div *ngIf=\"!withSideBar\">\n <pix-account [(visible)]=\"visible\"\n [isEditAndViewValue]=\"pixAccountItemInput\"\n [currency]=\"currency\"\n [customEntity]=\"customEntity\"\n [customService]=\"customService\"\n [getListPixAccount]=\"listDataNoPage\"\n [withSideBar]=\"false\"\n [isViewMode]=\"isViewMode\"\n [paramsForm]=\"paramsForm\"\n (pixAccountItemToList)=\"addItemInList($event)\"></pix-account>\n</div>\n\n<div class=\"ui-g-1\" *ngIf=\"withSideBar && !isEditMode\">\n <div class=\"form-group \">\n <s-button id=\"ta-addPayAnnuity\"\n [disabled]=\"getTooltipAndDisableButtonAdd || msgTotalLimitByPercentage\"\n (onClick)=\"add()\"\n [pTooltip]=\"getTooltipAndDisableButtonAdd || msgTotalLimitByPercentage\"\n tooltipPosition=\"top\"\n label=\"{{'hcm.payroll.historical_pix_account_add'|translate}}\"></s-button>\n </div>\n</div>\n<div class=\"ui-g-12\">\n <p-table\n id=\"table-annuity\"\n [value]=\"listData\"\n [columns]=\"cols\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [lazy]=\"true\"\n [scrollable]=\"true\"\n [paginator]=\"true\"\n [totalRecords]=\"totalRecords\"\n [sortMode]=\"'multiple'\"\n *sLoadingState=\"loading\"\n [rows]=\"recordByRow\"\n dataKey=\"id\">\n <ng-template pTemplate=\"colgroup\" let-coumns>\n <colgroup>\n <col [ngClass]=\"'col-default-m'\">\n <col [ngClass]=\"'col-default-m'\">\n <col [ngClass]=\"'col-default-s'\">\n <col [ngClass]=\"'col-action'\">\n </colgroup>\n </ng-template>\n <ng-template pTemplate=\"header\" let-columns>\n <!-- Cabe\u00E7alhos quando da table \u00E9 permitido ordenar as colunas -->\n <tr>\n <!-- Cabe\u00E7alhos das colunas da tabela -->\n <th\n [pSortableColumn]=\"'pixKeyType'\"\n [pTooltip]=\"'hcm.payroll.employees_addition_pix_key_type' | translate\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n >\n <div class=\"senior-header\" id=\"table-0\">\n <span\n id=\"table-annuity-s-0\">{{ 'hcm.payroll.employees_addition_pix_key_type' | translate }}</span>\n <p-sortIcon class=\"p-sorticon-status\"\n [field]=\"'hcm.payroll.employees_addition_pix_key_type' | translate\"></p-sortIcon>\n </div>\n </th>\n\n <th\n [pSortableColumn]=\"'pixKey'\"\n [pTooltip]=\"'hcm.payroll.employees_addition_pix_key' | translate\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n >\n <div class=\"senior-header\">\n <span>{{ 'hcm.payroll.employees_addition_pix_key' | translate }}</span>\n <p-sortIcon class=\"p-sorticon-status\"\n [field]=\"'hcm.payroll.employees_addition_pix_key' | translate\"></p-sortIcon>\n </div>\n </th>\n\n <th\n [pSortableColumn]=\"'percentage'\"\n [pTooltip]=\"'hcm.payroll.historical_pix_account_label_percentage' | translate\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n >\n <div class=\"senior-header\">\n <span>{{ 'hcm.payroll.historical_pix_account_label_percentage' | translate }}</span>\n <p-sortIcon class=\"p-sorticon-status\"\n [field]=\"'hcm.payroll.historical_pix_account_label_percentage' | translate\"></p-sortIcon>\n </div>\n </th>\n <!-- Cabe\u00E7alho da coluna de a\u00E7\u00F5es -->\n <th id=\"col-actions\"></th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-rowData let-key=\"rowIndex\">\n\n <tr [ngClass]=\"'row'+key\" [pSelectableRow]=\"rowData\">\n <td [pTooltip]=\"rowData?.pixKeyType.value\" tooltipPosition=\"top\"\n showDelay=\"500\">\n <span>{{ rowData?.pixKeyType.value }}</span>\n </td>\n\n <ng-container [ngSwitch]=\"rowData?.pixKeyType.key\">\n <td *ngSwitchCase=\"'TELEPHONE'\"\n [pTooltip]=\"getFormattedTelephoneNumber(rowData?.pixKey)\" tooltipPosition=\"top\"\n showDelay=\"500\">\n <span>{{ getFormattedTelephoneNumber(rowData?.pixKey) }}</span>\n </td>\n <td *ngSwitchCase=\"'CPF'\"\n [pTooltip]=\"getFormattedCpf(rowData?.pixKey)\" tooltipPosition=\"top\"\n showDelay=\"500\">\n <span>{{ getFormattedCpf(rowData?.pixKey) }}</span>\n </td>\n <td *ngSwitchCase=\"'CNPJ'\"\n [pTooltip]=\"getFormattedCnpj(rowData?.pixKey)\" tooltipPosition=\"top\"\n showDelay=\"500\">\n <span>{{ getFormattedCnpj(rowData?.pixKey) }}</span>\n </td>\n <td *ngSwitchDefault\n [pTooltip]=\"rowData?.pixKey\" tooltipPosition=\"top\"\n showDelay=\"500\">\n <span>{{ rowData?.pixKey }}</span>\n </td>\n </ng-container>\n <td [pTooltip]=\"getFormattedPercentage(rowData?.percentage)\" tooltipPosition=\"top\"\n showDelay=\"500\">\n <span>{{ getFormattedPercentage(rowData?.percentage) }}</span>\n </td>\n <td id=\"col-actions-{{key}}\" class=\"col-actions \"\n *ngIf=\"actions && actions(rowData, key)?.length\">\n <s-button id=\"table-admission-btn-actions-{{key}}\"\n *ngIf=\"actions(rowData, key).length > 1\" [label]=\"actionLabel\"\n priority=\"default\" [model]=\"scopedActions(rowData, key)\"\n [disabled]=\"false\" [auxiliary]=\"true\"></s-button>\n\n <s-button id=\"table-admission-btn-action-{{key}}\"\n *ngIf=\"actions(rowData, key).length <= 1\"\n [label]=\"scopedActions(rowData, key)[0].label\"\n priority=\"default\"\n (click)=\"scopedActions(rowData, key)[0].command()\"\n [disabled]=\"false\" [auxiliary]=\"true\"></s-button>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\" let-columns>\n <tr>\n <td [attr.colspan]=\"columns.length +2\">\n {{'hcm.payroll.admission_empty_message'|translate}}\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"paginatorright\">\n <span *ngIf=\"totalRecords\">{{recordsMessage}}</span>\n </ng-template>\n </p-table>\n</div>\n",
355
+ template: "<s-sidebar *ngIf=\"withSideBar\" [visible]=\"visible\" (visibleChange)=\"close()\"\n header=\"{{'hcm.payroll.historical_pix_account_title_form'|translate}}\">\n<pix-account [(visible)]=\"visible\"\n [isEditAndViewValue]=\"pixAccountItemInput\"\n [currency]=\"currency\"\n [customEntity]=\"customEntity\"\n [customService]=\"customService\"\n [getListPixAccount]=\"listDataNoPage\"\n [paramsForm]=\"paramsForm\"\n (pixAccountItemToList)=\"addItemInList($event)\"\n [defaultCpfNumber]=\"defaultCpfNumber\"></pix-account>\n</s-sidebar>\n\n<div *ngIf=\"!withSideBar\">\n <pix-account [(visible)]=\"visible\"\n [isEditAndViewValue]=\"pixAccountItemInput\"\n [currency]=\"currency\"\n [customEntity]=\"customEntity\"\n [customService]=\"customService\"\n [getListPixAccount]=\"listDataNoPage\"\n [withSideBar]=\"false\"\n [isViewMode]=\"isViewMode\"\n [paramsForm]=\"paramsForm\"\n (pixAccountItemToList)=\"addItemInList($event)\"\n [defaultCpfNumber]=\"defaultCpfNumber\"></pix-account>\n</div>\n\n<div class=\"ui-g-1\" *ngIf=\"withSideBar && !isEditMode\">\n <div class=\"form-group \">\n <s-button id=\"ta-addPayAnnuity\"\n [disabled]=\"getTooltipAndDisableButtonAdd || msgTotalLimitByPercentage\"\n (onClick)=\"add()\"\n [pTooltip]=\"getTooltipAndDisableButtonAdd || msgTotalLimitByPercentage\"\n tooltipPosition=\"top\"\n label=\"{{'hcm.payroll.historical_pix_account_add'|translate}}\"></s-button>\n </div>\n</div>\n<div class=\"ui-g-12\">\n <p-table\n id=\"table-annuity\"\n [value]=\"listData\"\n [columns]=\"cols\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [lazy]=\"true\"\n [scrollable]=\"true\"\n [paginator]=\"true\"\n [totalRecords]=\"totalRecords\"\n [sortMode]=\"'multiple'\"\n *sLoadingState=\"loading\"\n [rows]=\"recordByRow\"\n dataKey=\"id\">\n <ng-template pTemplate=\"colgroup\" let-coumns>\n <colgroup>\n <col [ngClass]=\"'col-default-m'\">\n <col [ngClass]=\"'col-default-m'\">\n <col [ngClass]=\"'col-default-s'\">\n <col [ngClass]=\"'col-action'\">\n </colgroup>\n </ng-template>\n <ng-template pTemplate=\"header\" let-columns>\n <!-- Cabe\u00E7alhos quando da table \u00E9 permitido ordenar as colunas -->\n <tr>\n <!-- Cabe\u00E7alhos das colunas da tabela -->\n <th\n [pSortableColumn]=\"'pixKeyType'\"\n [pTooltip]=\"'hcm.payroll.employees_addition_pix_key_type' | translate\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n >\n <div class=\"senior-header\" id=\"table-0\">\n <span\n id=\"table-annuity-s-0\">{{ 'hcm.payroll.employees_addition_pix_key_type' | translate }}</span>\n <p-sortIcon class=\"p-sorticon-status\"\n [field]=\"'hcm.payroll.employees_addition_pix_key_type' | translate\"></p-sortIcon>\n </div>\n </th>\n\n <th\n [pSortableColumn]=\"'pixKey'\"\n [pTooltip]=\"'hcm.payroll.employees_addition_pix_key' | translate\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n >\n <div class=\"senior-header\">\n <span>{{ 'hcm.payroll.employees_addition_pix_key' | translate }}</span>\n <p-sortIcon class=\"p-sorticon-status\"\n [field]=\"'hcm.payroll.employees_addition_pix_key' | translate\"></p-sortIcon>\n </div>\n </th>\n\n <th\n [pSortableColumn]=\"'percentage'\"\n [pTooltip]=\"'hcm.payroll.historical_pix_account_label_percentage' | translate\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n >\n <div class=\"senior-header\">\n <span>{{ 'hcm.payroll.historical_pix_account_label_percentage' | translate }}</span>\n <p-sortIcon class=\"p-sorticon-status\"\n [field]=\"'hcm.payroll.historical_pix_account_label_percentage' | translate\"></p-sortIcon>\n </div>\n </th>\n <!-- Cabe\u00E7alho da coluna de a\u00E7\u00F5es -->\n <th id=\"col-actions\"></th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-rowData let-key=\"rowIndex\">\n\n <tr [ngClass]=\"'row'+key\" [pSelectableRow]=\"rowData\">\n <td [pTooltip]=\"rowData?.pixKeyType.value\" tooltipPosition=\"top\"\n showDelay=\"500\">\n <span>{{ rowData?.pixKeyType.value }}</span>\n </td>\n\n <ng-container [ngSwitch]=\"rowData?.pixKeyType.key\">\n <td *ngSwitchCase=\"'TELEPHONE'\"\n [pTooltip]=\"getFormattedTelephoneNumber(rowData?.pixKey)\" tooltipPosition=\"top\"\n showDelay=\"500\">\n <span>{{ getFormattedTelephoneNumber(rowData?.pixKey) }}</span>\n </td>\n <td *ngSwitchCase=\"'CPF'\"\n [pTooltip]=\"getFormattedCpf(rowData?.pixKey)\" tooltipPosition=\"top\"\n showDelay=\"500\">\n <span>{{ getFormattedCpf(rowData?.pixKey) }}</span>\n </td>\n <td *ngSwitchCase=\"'CNPJ'\"\n [pTooltip]=\"getFormattedCnpj(rowData?.pixKey)\" tooltipPosition=\"top\"\n showDelay=\"500\">\n <span>{{ getFormattedCnpj(rowData?.pixKey) }}</span>\n </td>\n <td *ngSwitchDefault\n [pTooltip]=\"rowData?.pixKey\" tooltipPosition=\"top\"\n showDelay=\"500\">\n <span>{{ rowData?.pixKey }}</span>\n </td>\n </ng-container>\n <td [pTooltip]=\"getFormattedPercentage(rowData?.percentage)\" tooltipPosition=\"top\"\n showDelay=\"500\">\n <span>{{ getFormattedPercentage(rowData?.percentage) }}</span>\n </td>\n <td id=\"col-actions-{{key}}\" class=\"col-actions \"\n *ngIf=\"actions && actions(rowData, key)?.length\">\n <s-button id=\"table-admission-btn-actions-{{key}}\"\n *ngIf=\"actions(rowData, key).length > 1\" [label]=\"actionLabel\"\n priority=\"default\" [model]=\"scopedActions(rowData, key)\"\n [disabled]=\"false\" [auxiliary]=\"true\"></s-button>\n\n <s-button id=\"table-admission-btn-action-{{key}}\"\n *ngIf=\"actions(rowData, key).length <= 1\"\n [label]=\"scopedActions(rowData, key)[0].label\"\n priority=\"default\"\n (click)=\"scopedActions(rowData, key)[0].command()\"\n [disabled]=\"false\" [auxiliary]=\"true\"></s-button>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\" let-columns>\n <tr>\n <td [attr.colspan]=\"columns.length +2\">\n {{'hcm.payroll.admission_empty_message'|translate}}\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"paginatorright\">\n <span *ngIf=\"totalRecords\">{{recordsMessage}}</span>\n </ng-template>\n </p-table>\n</div>\n",
319
356
  styles: [".refresh{width:100%!important}#table-annuity .col-default-s{width:10%}#table-annuity .col-default-m{width:12%}#table-annuity .col-default-l{width:16%}#table-annuity .col-action{width:10%}#table-annuity .icon-warning{text-align:center!important;color:#ff6d00c7!important}@media screen and (max-width:612px){#table-annuity .col-default-1,#table-annuity .col-default-2{width:16%}#table-annuity .col-default-3{width:26%}#table-annuity .col-icon{width:10%}#table-annuity .col-action{width:27%}}#main{display:-webkit-box;display:flex;height:100%;width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}#main form{height:100%}#main .footer{border-top:1px solid #ccc;padding-top:15px;margin-top:15px;flex-shrink:0;margin-bottom:-18px}#main .footer-s-border{padding-left:7px;flex-shrink:0;margin-bottom:-18px}"]
320
357
  })
321
358
  ], HistoricalPixAccountComponent);
322
359
  export { HistoricalPixAccountComponent };
323
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yaWNhbC1waXgtYWNjb3VudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1wZXNzb2FzL3BheXJvbGwtY29yZS8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvaGlzdG9yaWNhbC1waXgtYWNjb3VudC9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxNQUFNLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxpQkFBaUIsRUFDakIsYUFBYSxFQUNiLFNBQVMsRUFBRSxZQUFZLEdBQzFCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUF1QixNQUFNLG9DQUFvQyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQVNoRixJQUFhLDZCQUE2QixHQUExQyxNQUFhLDZCQUE2QjtJQThGdEMsWUFDWSxnQkFBa0MsRUFDbEMsRUFBcUIsRUFDckIsV0FBd0I7UUFGeEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQXJGN0IsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFFeEIsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFJ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UUFDcEMsMGtRQUFzRDs7S0FFekQsQ0FBQztHQUNXLDZCQUE2QixDQTBUekM7U0ExVFksNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBJbnB1dCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIE9uRGVzdHJveSwgRXZlbnRFbWl0dGVyLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQnVpbGRlciB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBDdXN0b21GaWVsZHNDb21wb25lbnQsIE51bWJlckxvY2FsZU9wdGlvbnMgfSBmcm9tIFwiQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgY29tcGFyZVZhbHVlcywgaXNWYWxpZCwgbW91bnRDdXN0b21Ub1NhdmUgfSBmcm9tIFwiLi4vdXRpbHMvaGVscGVyc1wiO1xuaW1wb3J0IHsgRGlyZWN0aW9uRW51bWVyYXRpb24gfSBmcm9tIFwiLi4vLi4vY29yZS9lbnVtc1wiO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBGb3JtYXRVdGlsc1NlcnZpY2UgfSBmcm9tIFwiLi4vdXRpbHMvZm9ybWF0LXV0aWxzL2Zvcm1hdC11dGlscy5zZXJ2aWNlXCI7XG5cblxuQENvbXBvbmVudCh7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiBcImMtaGlzdG9yaWNhbC1waXgtYWNjb3VudFwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vaGlzdG9yaWNhbC1waXgtYWNjb3VudC5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LmNvbXBvbmVudC5zY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBIaXN0b3JpY2FsUGl4QWNjb3VudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkKEN1c3RvbUZpZWxkc0NvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcHVibGljIGN1c3RvbUZpZWxkczogQ3VzdG9tRmllbGRzQ29tcG9uZW50O1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZpZWxkRm9ybUdyb3VwOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgX2RhdGVDaGFuZ2U6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBfZGlzcGxheURhdGVDaGFuZ2U6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByZWNvcmRCeVJvdzogbnVtYmVyID0gMTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93RGF0ZUNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1zZ1Rvb2x0aXBBZGQ6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpc0VkaXRNb2RlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXNWaWV3TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGN1cnJlbmN5OiBOdW1iZXJMb2NhbGVPcHRpb25zO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGN1c3RvbUVudGl0eTogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGN1c3RvbVNlcnZpY2U6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB3aXRoU2lkZUJhcjogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcGFyYW1zRm9ybTogRm9ybUdyb3VwO1xuXG4gICAgcHJpdmF0ZSB2aXNpYmxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcml2YXRlIGhpc3RvcmljYWxQaXhBY2NvdW50TGlzdDogRm9ybUdyb3VwO1xuICAgIHByaXZhdGUgb3JkZXJCeTogeyBmaWVsZDogc3RyaW5nOyBkaXJlY3Rpb246IERpcmVjdGlvbkVudW1lcmF0aW9uIH0gPSB7XG4gICAgICAgIGZpZWxkOiBcImRhdGVDaGFuZ2VcIixcbiAgICAgICAgZGlyZWN0aW9uOiBEaXJlY3Rpb25FbnVtZXJhdGlvbi5ERVNDLFxuICAgIH07XG5cbiAgICBwcml2YXRlIF92aXNpYmxlOiBib29sZWFuO1xuICAgIHB1YmxpYyBwaXhBY2NvdW50SXRlbUlucHV0OiBvYmplY3QgPSB7fTtcbiAgICBwdWJsaWMgdG90YWxSZWNvcmRzOiBudW1iZXIgPSAwO1xuICAgIHB1YmxpYyBhY3Rpb25MYWJlbDogc3RyaW5nID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5lbnRyaWVzX3F1ZXJ5X2FjdGlvbnNfdG90YWxfdGl0bGVcIik7XG4gICAgcHVibGljIGxvYWRpbmcgPSB0cnVlO1xuICAgIHB1YmxpYyBwYXJhbWV0ZXJzOiBhbnk7XG4gICAgcHVibGljIG1zZ1RvdGFsTGltaXRCeVBlcmNlbnRhZ2U6IHN0cmluZztcbiAgICBwdWJsaWMgbGlzdERhdGE6IG9iamVjdFtdID0gW107XG4gICAgcHVibGljIGxpc3REYXRhTm9QYWdlOiBvYmplY3RbXSA9IFtdO1xuICAgIHB1YmxpYyBjb2xzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5lbXBsb3llZXNfYWRkaXRpb25fcGl4X2tleV90eXBlXCIpLFxuICAgICAgICAgICAgZmllbGQ6IFwicGl4S2V5VHlwZVwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5lbXBsb3llZXNfYWRkaXRpb25fcGl4X2tleVwiKSxcbiAgICAgICAgICAgIGZpZWxkOiBcInBpeEtleVwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5oaXN0b3JpY2FsX3BpeF9hY2NvdW50X2xhYmVsX3BlcmNlbnRhZ2VcIiksXG4gICAgICAgICAgICBmaWVsZDogXCJwZXJjZW50YWdlXCIsXG4gICAgICAgIH0sXG4gICAgXTtcbiAgICBhY3Rpb25zID0gKHJvd0RhdGE6IGFueSA9IHt9LCBrZXk6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMuaXNFZGl0TW9kZSxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5lbXBsb3llZXNfaW1hZ2VfY3JvcHBlcl92aWV3XCIpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcm93RGF0YVtcImluZGV4XCJdID0ga2V5O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBpeEFjY291bnRJdGVtSW5wdXQgPSB7IGN1cnJlbnRJdGVtOiByb3dEYXRhLCBsaXN0RGF0YTogdGhpcy5saXN0RGF0YU5vUGFnZSwgaXNFZGl0TW9kZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiAhISghdGhpcy5pc0VkaXRNb2RlICYmIHRoaXMud2l0aFNpZGVCYXIpLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLmVkaXRcIiksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByb3dEYXRhW1wiaW5kZXhcIl0gPSBrZXk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGl4QWNjb3VudEl0ZW1JbnB1dCA9IHsgY3VycmVudEl0ZW06IHJvd0RhdGEsIGxpc3REYXRhOiB0aGlzLmxpc3REYXRhTm9QYWdlLCBpc0VkaXRNb2RlOiB0cnVlIH07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmlzaWJsZTogIXRoaXMuaXNFZGl0TW9kZSxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5kZWxldGVcIiksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZUFubnVpdHlJdGVtKGtleSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgICkge1xuICAgICAgICB0aGlzLmNyZWF0ZUZvcm1Hcm91cCgpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5zZXRDb250cm9sKHRoaXMuZmllbGRGb3JtR3JvdXAsIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUZvcm1Hcm91cCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oaXN0b3JpY2FsUGl4QWNjb3VudExpc3QgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgIGhpc3RvcmljYWxQaXhBY2NvdW50TGlzdDogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25MYXp5TG9hZChldmVudD86IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaXJzdCA9IGV2ZW50ICYmIGV2ZW50LmZpcnN0ID8gZXZlbnQuZmlyc3QgOiAwO1xuICAgICAgICBjb25zdCByb3dzID0gZXZlbnQgJiYgZXZlbnQucm93cyA/IGV2ZW50LnJvd3MgOiB0aGlzLnJlY29yZEJ5Um93O1xuICAgICAgICBjb25zdCBhcnJMaXN0ID0gdGhpcy5nZXRIaXN0b3JpY2FsUGl4QWNjb3VudExpc3QoKTtcbiAgICAgICAgdGhpcy5saXN0RGF0YSA9IFtdO1xuICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IG51bGw7XG5cbiAgICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50Lm11bHRpU29ydE1ldGEgJiYgZXZlbnQubXVsdGlTb3J0TWV0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGV2ZW50Lm11bHRpU29ydE1ldGEubWFwKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmRlckJ5LmZpZWxkID0gdmFsdWUuZmllbGQ7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmRlckJ5LmRpcmVjdGlvbiA9IHZhbHVlLm9yZGVyID09PSAxID8gRGlyZWN0aW9uRW51bWVyYXRpb24uQVNDIDogRGlyZWN0aW9uRW51bWVyYXRpb24uREVTQztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFyckxpc3QgJiYgYXJyTGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gYXJyTGlzdC5sZW5ndGg7XG4gICAgICAgICAgICB0aGlzLmxpc3REYXRhID0gYXJyTGlzdDtcbiAgICAgICAgICAgIHRoaXMubGlzdERhdGFOb1BhZ2UgPSBbLi4uYXJyTGlzdF07XG4gICAgICAgICAgICB0aGlzLmxpc3REYXRhLnNvcnQoY29tcGFyZVZhbHVlcyh0aGlzLm9yZGVyQnkuZmllbGQsIHRoaXMub3JkZXJCeS5kaXJlY3Rpb24pKTtcbiAgICAgICAgICAgIHRoaXMubGlzdERhdGEgPSB0aGlzLmxpc3REYXRhLnNsaWNlKGZpcnN0LCAoZmlyc3QgKyByb3dzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxpc3REYXRhTm9QYWdlID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0VkaXRNb2RlIHx8IGFyckxpc3QgJiYgYXJyTGlzdC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaENzc0luSUUxMSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbSBCdWcgZGUgQ1NTIHF1ZSBhY29udGVjZSBuYXMgbGluaGFzIGRhIHRhYmVsYSwgcXVlIHJlc29sdmUgc8OzIGF0dWFsaXphbmRvIHF1YWxxdWVyIHBhcnRlIGRvIENTUyBkYSBwYWdpbmEuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWZyZXNoQ3NzSW5JRTExKCkge1xuICAgICAgICBpZiAoL21zaWVcXHN8dHJpZGVudFxcL3xlZGdlXFwvL2kudGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCkpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByb3cgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwicm93MFwiKTtcbiAgICAgICAgICAgICAgICBpZiAocm93ICYmIHJvd1swXSlcbiAgICAgICAgICAgICAgICAgICAgcm93WzBdLmNsYXNzTmFtZSA9ICdyZWZyZXNoJztcbiAgICAgICAgICAgIH0sIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFkZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5waXhBY2NvdW50SXRlbUlucHV0ID0ge307XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWxldGVBbm51aXR5SXRlbShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGxldCBuZXdsaXN0ID0gWy4uLnRoaXMuZ2V0SGlzdG9yaWNhbFBpeEFjY291bnRMaXN0KCldO1xuICAgICAgICBuZXdsaXN0LnNvcnQoY29tcGFyZVZhbHVlcyh0aGlzLm9yZGVyQnkuZmllbGQsIHRoaXMub3JkZXJCeS5kaXJlY3Rpb24pKTtcbiAgICAgICAgZGVsZXRlIG5ld2xpc3RbaW5kZXhdO1xuICAgICAgICBuZXdsaXN0ID0gbmV3bGlzdC5maWx0ZXIodmFsID0+IHZhbCk7XG4gICAgICAgIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0LmdldChcImhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFwiKS5zZXRWYWx1ZShuZXdsaXN0KTtcbiAgICAgICAgdGhpcy52ZXJpZnlUb3RhbFBlcmNlbnRhZ2UoKTtcbiAgICAgICAgdGhpcy5vbkxhenlMb2FkKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhpc3RvcmljYWxQaXhBY2NvdW50TGlzdCgpOiBvYmplY3RbXSB7XG4gICAgICAgIGlmICh0aGlzLmhpc3RvcmljYWxQaXhBY2NvdW50TGlzdC5nZXQoXCJoaXN0b3JpY2FsUGl4QWNjb3VudExpc3RcIikgJiZcbiAgICAgICAgICAgIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0LmdldChcImhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFwiKS52YWx1ZSAmJlxuICAgICAgICAgICAgdGhpcy5oaXN0b3JpY2FsUGl4QWNjb3VudExpc3QuZ2V0KFwiaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0XCIpLnZhbHVlLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhpc3RvcmljYWxQaXhBY2NvdW50TGlzdC5nZXQoXCJoaXN0b3JpY2FsUGl4QWNjb3VudExpc3RcIikgJiYgdGhpcy5oaXN0b3JpY2FsUGl4QWNjb3VudExpc3QuZ2V0KFwiaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0XCIpLnZhbHVlO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEl0ZW1Jbkxpc3QoJGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSAkZXZlbnQgJiYgJGV2ZW50LmluZGV4ID49IDAgPyAkZXZlbnQuaW5kZXggOiBudWxsO1xuICAgICAgICBjb25zdCBuZXdEYXRhTGlzdCA9IHRoaXMuZ2V0SGlzdG9yaWNhbFBpeEFjY291bnRMaXN0KCkgPyB0aGlzLmdldEhpc3RvcmljYWxQaXhBY2NvdW50TGlzdCgpIDogW107XG5cbiAgICAgICAgaWYgKGluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICAgIG5ld0RhdGFMaXN0W2luZGV4XSA9ICRldmVudDtcbiAgICAgICAgICAgIGRlbGV0ZSAkZXZlbnQuaW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaXNWYWxpZCgkZXZlbnRbXCJjdXN0b21GaWVsZHNcIl0pICYmIE9iamVjdC5rZXlzKCRldmVudFtcImN1c3RvbUZpZWxkc1wiXSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VzdG9tVmFsdWUgPSBtb3VudEN1c3RvbVRvU2F2ZSgkZXZlbnRbXCJjdXN0b21GaWVsZHNcIl0pO1xuICAgICAgICAgICAgICAgICRldmVudFtcImN1c3RvbUZpZWxkc1wiXSA9IFsuLi5jdXN0b21WYWx1ZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkZXZlbnRbXCJkYXRlQ2hhbmdlXCJdID0gdGhpcy5kYXRlQ2hhbmdlO1xuICAgICAgICAgICAgbmV3RGF0YUxpc3QucHVzaCgkZXZlbnQpO1xuICAgICAgICB9XG5cblxuXG4gICAgICAgIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0LmdldChcImhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFwiKS5zZXRWYWx1ZShuZXdEYXRhTGlzdCk7XG4gICAgICAgIHRoaXMudmVyaWZ5VG90YWxQZXJjZW50YWdlKCk7XG4gICAgICAgIHRoaXMub25MYXp5TG9hZCh7IGZpcnN0OiB0aGlzLmdldE51bWJlclBhZ2VCeUluZGV4KGluZGV4LCBuZXdEYXRhTGlzdCkgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXROdW1iZXJQYWdlQnlJbmRleChpbmRleDogbnVtYmVyLCBsaXN0OiBvYmplY3RbXSk6IG51bWJlciB7XG4gICAgICAgIGlmIChpbmRleCkge1xuICAgICAgICAgICAgY29uc3QgdG90YWwgPSBsaXN0Lmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IHN1YiA9IHRoaXMucmVjb3JkQnlSb3cgLSAxO1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguY2VpbCh0b3RhbCAvIHRoaXMucmVjb3JkQnlSb3cpICogdGhpcy5yZWNvcmRCeVJvdyAtIHN1YiAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2ZXJpZnlUb3RhbFBlcmNlbnRhZ2UoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLmdldEhpc3RvcmljYWxQaXhBY2NvdW50TGlzdCgpID8gdGhpcy5nZXRIaXN0b3JpY2FsUGl4QWNjb3VudExpc3QoKSA6IFtdO1xuICAgICAgICBjb25zdCBhcnJheVBlcmNlbnRhZ2U6IGFueSA9IFtdO1xuXG4gICAgICAgIGlmICghbGlzdC5sZW5ndGgpIHJldHVybiB0aGlzLm1zZ1RvdGFsTGltaXRCeVBlcmNlbnRhZ2UgPSBudWxsO1xuXG4gICAgICAgIGxpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGFycmF5UGVyY2VudGFnZS5wdXNoKGl0ZW0gJiYgaXRlbVtcInBlcmNlbnRhZ2VcIl0pKTtcblxuICAgICAgICBjb25zdCBzdW1QZXJjZW50YWdlID0gYXJyYXlQZXJjZW50YWdlLnJlZHVjZSgodG90YWw6IG51bWJlciwgcGVyY2VudGFnZTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdG90YWwgKyBwZXJjZW50YWdlO1xuICAgICAgICB9LCAwKTtcblxuICAgICAgICBpZiAoc3VtUGVyY2VudGFnZSA9PT0gMTAwKSB7XG4gICAgICAgICAgICB0aGlzLm1zZ1RvdGFsTGltaXRCeVBlcmNlbnRhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLmhpc3RvcmljYWxfcGl4X2FjY291bnRfbXNnX2xpbWl0X3RvdGFsX2J5X3BlcmNlbnRhZ2VcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1zZ1RvdGFsTGltaXRCeVBlcmNlbnRhZ2UgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNjb3BlZEFjdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGlvbnMuYmluZCh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJlY29yZHNNZXNzYWdlKCkge1xuICAgICAgICByZXR1cm4gYCR7IHRoaXMudG90YWxSZWNvcmRzIHx8IDAgfSAkeyB0aGlzLnRvdGFsUmVjb3JkcyA9PT0gMSA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuYWRtaXNzaW9uX3JlZ2lzdGVyXCIpIDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5hZG1pc3Npb25fcmVnaXN0ZXJzXCIpIH1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZ2V0VG9vbHRpcEFuZERpc2FibGVCdXR0b25BZGQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVDaGFuZ2UgPyBudWxsIDogdGhpcy5tc2dUb29sdGlwQWRkO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBkYXRlQ2hhbmdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlQ2hhbmdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgZGF0ZUNoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2RhdGVDaGFuZ2UgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGVDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMubGlzdERhdGEuZmlsdGVyKChyb3c6IGFueSkgPT4gcm93W1wiZGF0ZUNoYW5nZVwiXSA9IHRoaXMuX2RhdGVDaGFuZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGRpc3BsYXlEYXRlQ2hhbmdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwbGF5RGF0ZUNoYW5nZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGRpc3BsYXlEYXRlQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZGlzcGxheURhdGVDaGFuZ2UgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuX2Rpc3BsYXlEYXRlQ2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3REYXRhLmZpbHRlcigocm93OiBhbnkpID0+IHJvd1tcImRpc3BsYXlEYXRlQ2hhbmdlXCJdID0gdGhpcy5fZGlzcGxheURhdGVDaGFuZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGFkZExpc3REYXRhKGxpc3Q6IG9iamVjdFtdKSB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0LmdldChcImhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFwiKS5wYXRjaFZhbHVlKGxpc3QpO1xuICAgICAgICB0aGlzLnZlcmlmeVRvdGFsUGVyY2VudGFnZSgpO1xuICAgICAgICB0aGlzLm9uTGF6eUxvYWQoKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCB2aXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Zpc2libGUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodGhpcy52aXNpYmxlKTtcbiAgICB9XG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0dGVkVGVsZXBob25lTnVtYmVyKHRlbGVwaG9uZU51bWJlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIEZvcm1hdFV0aWxzU2VydmljZS5nZXRGb3JtYXR0ZWRUZWxlcGhvbmVOdW1iZXIodGVsZXBob25lTnVtYmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0dGVkQ3BmKGNwZjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIEZvcm1hdFV0aWxzU2VydmljZS5nZXRGb3JtYXR0ZWRDcGYoY3BmKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0dGVkQ25waihjbnBqOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gRm9ybWF0VXRpbHNTZXJ2aWNlLmdldEZvcm1hdHRlZENucGooY25waik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZvcm1hdHRlZFBlcmNlbnRhZ2UodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBGb3JtYXRVdGlsc1NlcnZpY2UuZ2V0Rm9ybWF0dGVkUGVyY2VudGFnZSh2YWx1ZSk7XG4gICAgfVxufVxuIl19
360
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yaWNhbC1waXgtYWNjb3VudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1wZXNzb2FzL3BheXJvbGwtY29yZS8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvaGlzdG9yaWNhbC1waXgtYWNjb3VudC9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxNQUFNLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxpQkFBaUIsRUFDakIsYUFBYSxFQUNiLFNBQVMsRUFBRSxZQUFZLEdBQzFCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUF1QixNQUFNLG9DQUFvQyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBU2xFLElBQWEsNkJBQTZCLEdBQTFDLE1BQWEsNkJBQTZCO0lBbUh0QyxZQUNZLGdCQUFrQyxFQUNsQyxFQUFxQixFQUNyQixXQUF3QixFQUN4QixjQUE4QjtRQUg5QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLGdCQUFXLEdBQVgsV0FB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QkFBNkI7SUFOekMsU0FBUyxDQUFDO1FBQ1AsOENBQThDO1FBQzlDLFFBQVEsRUFBRSwwQkFBMEI7UUFDcEMsNHJRQUFzRDs7S0FFekQsQ0FBQztHQUNXLDZCQUE2QixDQWtXekM7U0FsV1ksNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBJbnB1dCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIE9uRGVzdHJveSwgRXZlbnRFbWl0dGVyLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQnVpbGRlciB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBDdXN0b21GaWVsZHNDb21wb25lbnQsIE51bWJlckxvY2FsZU9wdGlvbnMgfSBmcm9tIFwiQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgY29tcGFyZVZhbHVlcywgaXNWYWxpZCwgbW91bnRDdXN0b21Ub1NhdmUgfSBmcm9tIFwiLi4vdXRpbHMvaGVscGVyc1wiO1xuaW1wb3J0IHsgRGlyZWN0aW9uRW51bWVyYXRpb24gfSBmcm9tIFwiLi4vLi4vY29yZS9lbnVtc1wiO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBGb3JtYXRVdGlsc1NlcnZpY2UgfSBmcm9tIFwiLi4vdXRpbHMvZm9ybWF0LXV0aWxzL2Zvcm1hdC11dGlscy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBNZXNzYWdlU2VydmljZSB9IGZyb20gXCJwcmltZW5nL2FwaVwiO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogXCJjLWhpc3RvcmljYWwtcGl4LWFjY291bnRcIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2hpc3RvcmljYWwtcGl4LWFjY291bnQuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vaGlzdG9yaWNhbC1waXgtYWNjb3VudC5jb21wb25lbnQuc2Nzc1wiXSxcbn0pXG5leHBvcnQgY2xhc3MgSGlzdG9yaWNhbFBpeEFjY291bnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQFZpZXdDaGlsZChDdXN0b21GaWVsZHNDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHB1YmxpYyBjdXN0b21GaWVsZHM6IEN1c3RvbUZpZWxkc0NvbXBvbmVudDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWVsZEZvcm1Hcm91cDogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIF9kYXRlQ2hhbmdlOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgX2Rpc3BsYXlEYXRlQ2hhbmdlOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVjb3JkQnlSb3c6IG51bWJlciA9IDE7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0RhdGVDaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtc2dUb29sdGlwQWRkOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXNFZGl0TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlzVmlld01vZGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjdXJyZW5jeTogTnVtYmVyTG9jYWxlT3B0aW9ucztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjdXN0b21FbnRpdHk6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjdXN0b21TZXJ2aWNlOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgd2l0aFNpZGVCYXI6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBhcmFtc0Zvcm06IEZvcm1Hcm91cDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkZWZhdWx0Q3BmTnVtYmVyOiBzdHJpbmcgPSBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBlcm1pc3Npb246IG9iamVjdDtcblxuICAgIHByaXZhdGUgdmlzaWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHJpdmF0ZSBoaXN0b3JpY2FsUGl4QWNjb3VudExpc3Q6IEZvcm1Hcm91cDtcbiAgICBwcml2YXRlIG9yZGVyQnk6IHsgZmllbGQ6IHN0cmluZzsgZGlyZWN0aW9uOiBEaXJlY3Rpb25FbnVtZXJhdGlvbiB9ID0ge1xuICAgICAgICBmaWVsZDogXCJkYXRlQ2hhbmdlXCIsXG4gICAgICAgIGRpcmVjdGlvbjogRGlyZWN0aW9uRW51bWVyYXRpb24uREVTQyxcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBfdmlzaWJsZTogYm9vbGVhbjtcbiAgICBwdWJsaWMgcGl4QWNjb3VudEl0ZW1JbnB1dDogb2JqZWN0ID0ge307XG4gICAgcHVibGljIHRvdGFsUmVjb3JkczogbnVtYmVyID0gMDtcbiAgICBwdWJsaWMgYWN0aW9uTGFiZWw6IHN0cmluZyA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZW50cmllc19xdWVyeV9hY3Rpb25zX3RvdGFsX3RpdGxlXCIpO1xuICAgIHB1YmxpYyBsb2FkaW5nID0gdHJ1ZTtcbiAgICBwdWJsaWMgcGFyYW1ldGVyczogYW55O1xuICAgIHB1YmxpYyBtc2dUb3RhbExpbWl0QnlQZXJjZW50YWdlOiBzdHJpbmc7XG4gICAgcHVibGljIGxpc3REYXRhOiBvYmplY3RbXSA9IFtdO1xuICAgIHB1YmxpYyBsaXN0RGF0YU5vUGFnZTogb2JqZWN0W10gPSBbXTtcbiAgICBwdWJsaWMgY29scyA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX2FkZGl0aW9uX3BpeF9rZXlfdHlwZVwiKSxcbiAgICAgICAgICAgIGZpZWxkOiBcInBpeEtleVR5cGVcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX2FkZGl0aW9uX3BpeF9rZXlcIiksXG4gICAgICAgICAgICBmaWVsZDogXCJwaXhLZXlcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuaGlzdG9yaWNhbF9waXhfYWNjb3VudF9sYWJlbF9wZXJjZW50YWdlXCIpLFxuICAgICAgICAgICAgZmllbGQ6IFwicGVyY2VudGFnZVwiLFxuICAgICAgICB9LFxuICAgIF07XG4gICAgYWN0aW9ucyA9IChyb3dEYXRhOiBhbnkgPSB7fSwga2V5OiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLmlzRWRpdE1vZGUsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX2ltYWdlX2Nyb3BwZXJfdmlld1wiKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJvd0RhdGFbXCJpbmRleFwiXSA9IGtleTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50SXRlbUlucHV0ID0geyBjdXJyZW50SXRlbTogcm93RGF0YSwgbGlzdERhdGE6IHRoaXMubGlzdERhdGFOb1BhZ2UsIGlzRWRpdE1vZGU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmlzaWJsZTogISEoIXRoaXMuaXNFZGl0TW9kZSAmJiB0aGlzLndpdGhTaWRlQmFyKSxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5lZGl0XCIpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNBbGxvd1RvRWRpdEhpc3RvcmljYWwgJiYgcm93RGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93RGF0YVtcImluZGV4XCJdID0ga2V5O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50SXRlbUlucHV0ID0geyBjdXJyZW50SXRlbTogcm93RGF0YSwgbGlzdERhdGE6IHRoaXMubGlzdERhdGFOb1BhZ2UsIGlzRWRpdE1vZGU6IHRydWUgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk6IFwiZXJyb3JcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLmVycm9yXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5wZXJtaXNzaW9uX2Vycm9yX25vdF9hbGxvd2VkXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZpc2libGU6ICF0aGlzLmlzRWRpdE1vZGUsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZGVsZXRlXCIpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNBbGxvd1RvRGVsZXRlSGlzdG9yaWNhbCAmJiByb3dEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWxldGVBbm51aXR5SXRlbShrZXkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldmVyaXR5OiBcImVycm9yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyeTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5lcnJvclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwucGVybWlzc2lvbl9lcnJvcl9ub3RfYWxsb3dlZFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgICAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmNyZWF0ZUZvcm1Hcm91cCgpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5zZXRDb250cm9sKHRoaXMuZmllbGRGb3JtR3JvdXAsIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUZvcm1Hcm91cCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oaXN0b3JpY2FsUGl4QWNjb3VudExpc3QgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgIGhpc3RvcmljYWxQaXhBY2NvdW50TGlzdDogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25MYXp5TG9hZChldmVudD86IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaXJzdCA9IGV2ZW50ICYmIGV2ZW50LmZpcnN0ID8gZXZlbnQuZmlyc3QgOiAwO1xuICAgICAgICBjb25zdCByb3dzID0gZXZlbnQgJiYgZXZlbnQucm93cyA/IGV2ZW50LnJvd3MgOiB0aGlzLnJlY29yZEJ5Um93O1xuICAgICAgICBjb25zdCBhcnJMaXN0ID0gdGhpcy5nZXRIaXN0b3JpY2FsUGl4QWNjb3VudExpc3QoKTtcbiAgICAgICAgdGhpcy5saXN0RGF0YSA9IFtdO1xuICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IG51bGw7XG5cbiAgICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50Lm11bHRpU29ydE1ldGEgJiYgZXZlbnQubXVsdGlTb3J0TWV0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGV2ZW50Lm11bHRpU29ydE1ldGEubWFwKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmRlckJ5LmZpZWxkID0gdmFsdWUuZmllbGQ7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmRlckJ5LmRpcmVjdGlvbiA9IHZhbHVlLm9yZGVyID09PSAxID8gRGlyZWN0aW9uRW51bWVyYXRpb24uQVNDIDogRGlyZWN0aW9uRW51bWVyYXRpb24uREVTQztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFyckxpc3QgJiYgYXJyTGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gYXJyTGlzdC5sZW5ndGg7XG4gICAgICAgICAgICB0aGlzLmxpc3REYXRhID0gYXJyTGlzdDtcbiAgICAgICAgICAgIHRoaXMubGlzdERhdGFOb1BhZ2UgPSBbLi4uYXJyTGlzdF07XG4gICAgICAgICAgICB0aGlzLmxpc3REYXRhLnNvcnQoY29tcGFyZVZhbHVlcyh0aGlzLm9yZGVyQnkuZmllbGQsIHRoaXMub3JkZXJCeS5kaXJlY3Rpb24pKTtcbiAgICAgICAgICAgIHRoaXMubGlzdERhdGEgPSB0aGlzLmxpc3REYXRhLnNsaWNlKGZpcnN0LCAoZmlyc3QgKyByb3dzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxpc3REYXRhTm9QYWdlID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0VkaXRNb2RlIHx8IGFyckxpc3QgJiYgYXJyTGlzdC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaENzc0luSUUxMSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbSBCdWcgZGUgQ1NTIHF1ZSBhY29udGVjZSBuYXMgbGluaGFzIGRhIHRhYmVsYSwgcXVlIHJlc29sdmUgc8OzIGF0dWFsaXphbmRvIHF1YWxxdWVyIHBhcnRlIGRvIENTUyBkYSBwYWdpbmEuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWZyZXNoQ3NzSW5JRTExKCkge1xuICAgICAgICBpZiAoL21zaWVcXHN8dHJpZGVudFxcL3xlZGdlXFwvL2kudGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCkpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByb3cgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwicm93MFwiKTtcbiAgICAgICAgICAgICAgICBpZiAocm93ICYmIHJvd1swXSlcbiAgICAgICAgICAgICAgICAgICAgcm93WzBdLmNsYXNzTmFtZSA9ICdyZWZyZXNoJztcbiAgICAgICAgICAgIH0sIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFkZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5waXhBY2NvdW50SXRlbUlucHV0ID0ge307XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWxldGVBbm51aXR5SXRlbShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGxldCBuZXdsaXN0ID0gWy4uLnRoaXMuZ2V0SGlzdG9yaWNhbFBpeEFjY291bnRMaXN0KCldO1xuICAgICAgICBuZXdsaXN0LnNvcnQoY29tcGFyZVZhbHVlcyh0aGlzLm9yZGVyQnkuZmllbGQsIHRoaXMub3JkZXJCeS5kaXJlY3Rpb24pKTtcbiAgICAgICAgZGVsZXRlIG5ld2xpc3RbaW5kZXhdO1xuICAgICAgICBuZXdsaXN0ID0gbmV3bGlzdC5maWx0ZXIodmFsID0+IHZhbCk7XG4gICAgICAgIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0LmdldChcImhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFwiKS5zZXRWYWx1ZShuZXdsaXN0KTtcbiAgICAgICAgdGhpcy52ZXJpZnlUb3RhbFBlcmNlbnRhZ2UoKTtcbiAgICAgICAgdGhpcy5vbkxhenlMb2FkKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhpc3RvcmljYWxQaXhBY2NvdW50TGlzdCgpOiBvYmplY3RbXSB7XG4gICAgICAgIGlmICh0aGlzLmhpc3RvcmljYWxQaXhBY2NvdW50TGlzdC5nZXQoXCJoaXN0b3JpY2FsUGl4QWNjb3VudExpc3RcIikgJiZcbiAgICAgICAgICAgIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0LmdldChcImhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFwiKS52YWx1ZSAmJlxuICAgICAgICAgICAgdGhpcy5oaXN0b3JpY2FsUGl4QWNjb3VudExpc3QuZ2V0KFwiaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0XCIpLnZhbHVlLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhpc3RvcmljYWxQaXhBY2NvdW50TGlzdC5nZXQoXCJoaXN0b3JpY2FsUGl4QWNjb3VudExpc3RcIikgJiYgdGhpcy5oaXN0b3JpY2FsUGl4QWNjb3VudExpc3QuZ2V0KFwiaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0XCIpLnZhbHVlO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEl0ZW1Jbkxpc3QoJGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSAkZXZlbnQgJiYgJGV2ZW50LmluZGV4ID49IDAgPyAkZXZlbnQuaW5kZXggOiBudWxsO1xuICAgICAgICBjb25zdCBuZXdEYXRhTGlzdCA9IHRoaXMuZ2V0SGlzdG9yaWNhbFBpeEFjY291bnRMaXN0KCkgPyB0aGlzLmdldEhpc3RvcmljYWxQaXhBY2NvdW50TGlzdCgpIDogW107XG5cbiAgICAgICAgaWYgKGluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICAgIG5ld0RhdGFMaXN0W2luZGV4XSA9ICRldmVudDtcbiAgICAgICAgICAgIGRlbGV0ZSAkZXZlbnQuaW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaXNWYWxpZCgkZXZlbnRbXCJjdXN0b21GaWVsZHNcIl0pICYmIE9iamVjdC5rZXlzKCRldmVudFtcImN1c3RvbUZpZWxkc1wiXSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VzdG9tVmFsdWUgPSBtb3VudEN1c3RvbVRvU2F2ZSgkZXZlbnRbXCJjdXN0b21GaWVsZHNcIl0pO1xuICAgICAgICAgICAgICAgICRldmVudFtcImN1c3RvbUZpZWxkc1wiXSA9IFsuLi5jdXN0b21WYWx1ZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkZXZlbnRbXCJkYXRlQ2hhbmdlXCJdID0gdGhpcy5kYXRlQ2hhbmdlO1xuICAgICAgICAgICAgbmV3RGF0YUxpc3QucHVzaCgkZXZlbnQpO1xuICAgICAgICB9XG5cblxuXG4gICAgICAgIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0LmdldChcImhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFwiKS5zZXRWYWx1ZShuZXdEYXRhTGlzdCk7XG4gICAgICAgIHRoaXMudmVyaWZ5VG90YWxQZXJjZW50YWdlKCk7XG4gICAgICAgIHRoaXMub25MYXp5TG9hZCh7IGZpcnN0OiB0aGlzLmdldE51bWJlclBhZ2VCeUluZGV4KGluZGV4LCBuZXdEYXRhTGlzdCkgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXROdW1iZXJQYWdlQnlJbmRleChpbmRleDogbnVtYmVyLCBsaXN0OiBvYmplY3RbXSk6IG51bWJlciB7XG4gICAgICAgIGlmIChpbmRleCkge1xuICAgICAgICAgICAgY29uc3QgdG90YWwgPSBsaXN0Lmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IHN1YiA9IHRoaXMucmVjb3JkQnlSb3cgLSAxO1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguY2VpbCh0b3RhbCAvIHRoaXMucmVjb3JkQnlSb3cpICogdGhpcy5yZWNvcmRCeVJvdyAtIHN1YiAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2ZXJpZnlUb3RhbFBlcmNlbnRhZ2UoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLmdldEhpc3RvcmljYWxQaXhBY2NvdW50TGlzdCgpID8gdGhpcy5nZXRIaXN0b3JpY2FsUGl4QWNjb3VudExpc3QoKSA6IFtdO1xuICAgICAgICBjb25zdCBhcnJheVBlcmNlbnRhZ2U6IGFueSA9IFtdO1xuXG4gICAgICAgIGlmICghbGlzdC5sZW5ndGgpIHJldHVybiB0aGlzLm1zZ1RvdGFsTGltaXRCeVBlcmNlbnRhZ2UgPSBudWxsO1xuXG4gICAgICAgIGxpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGFycmF5UGVyY2VudGFnZS5wdXNoKGl0ZW0gJiYgaXRlbVtcInBlcmNlbnRhZ2VcIl0pKTtcblxuICAgICAgICBjb25zdCBzdW1QZXJjZW50YWdlID0gYXJyYXlQZXJjZW50YWdlLnJlZHVjZSgodG90YWw6IG51bWJlciwgcGVyY2VudGFnZTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdG90YWwgKyBwZXJjZW50YWdlO1xuICAgICAgICB9LCAwKTtcblxuICAgICAgICBpZiAoc3VtUGVyY2VudGFnZSA9PT0gMTAwKSB7XG4gICAgICAgICAgICB0aGlzLm1zZ1RvdGFsTGltaXRCeVBlcmNlbnRhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLmhpc3RvcmljYWxfcGl4X2FjY291bnRfbXNnX2xpbWl0X3RvdGFsX2J5X3BlcmNlbnRhZ2VcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1zZ1RvdGFsTGltaXRCeVBlcmNlbnRhZ2UgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNjb3BlZEFjdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGlvbnMuYmluZCh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJlY29yZHNNZXNzYWdlKCkge1xuICAgICAgICByZXR1cm4gYCR7IHRoaXMudG90YWxSZWNvcmRzIHx8IDAgfSAkeyB0aGlzLnRvdGFsUmVjb3JkcyA9PT0gMSA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuYWRtaXNzaW9uX3JlZ2lzdGVyXCIpIDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5hZG1pc3Npb25fcmVnaXN0ZXJzXCIpIH1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZ2V0VG9vbHRpcEFuZERpc2FibGVCdXR0b25BZGQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVDaGFuZ2UgPyBudWxsIDogdGhpcy5tc2dUb29sdGlwQWRkO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBkYXRlQ2hhbmdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlQ2hhbmdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgZGF0ZUNoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2RhdGVDaGFuZ2UgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGVDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMubGlzdERhdGEuZmlsdGVyKChyb3c6IGFueSkgPT4gcm93W1wiZGF0ZUNoYW5nZVwiXSA9IHRoaXMuX2RhdGVDaGFuZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGRpc3BsYXlEYXRlQ2hhbmdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwbGF5RGF0ZUNoYW5nZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGRpc3BsYXlEYXRlQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZGlzcGxheURhdGVDaGFuZ2UgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuX2Rpc3BsYXlEYXRlQ2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3REYXRhLmZpbHRlcigocm93OiBhbnkpID0+IHJvd1tcImRpc3BsYXlEYXRlQ2hhbmdlXCJdID0gdGhpcy5fZGlzcGxheURhdGVDaGFuZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGFkZExpc3REYXRhKGxpc3Q6IG9iamVjdFtdKSB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0LmdldChcImhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFwiKS5wYXRjaFZhbHVlKGxpc3QpO1xuICAgICAgICB0aGlzLnZlcmlmeVRvdGFsUGVyY2VudGFnZSgpO1xuICAgICAgICB0aGlzLm9uTGF6eUxvYWQoKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCB2aXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Zpc2libGUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodGhpcy52aXNpYmxlKTtcbiAgICB9XG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0dGVkVGVsZXBob25lTnVtYmVyKHRlbGVwaG9uZU51bWJlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIEZvcm1hdFV0aWxzU2VydmljZS5nZXRGb3JtYXR0ZWRUZWxlcGhvbmVOdW1iZXIodGVsZXBob25lTnVtYmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0dGVkQ3BmKGNwZjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIEZvcm1hdFV0aWxzU2VydmljZS5nZXRGb3JtYXR0ZWRDcGYoY3BmKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0dGVkQ25waihjbnBqOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gRm9ybWF0VXRpbHNTZXJ2aWNlLmdldEZvcm1hdHRlZENucGooY25waik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZvcm1hdHRlZFBlcmNlbnRhZ2UodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBGb3JtYXRVdGlsc1NlcnZpY2UuZ2V0Rm9ybWF0dGVkUGVyY2VudGFnZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXNBbGxvd1RvRGVsZXRlSGlzdG9yaWNhbCgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMucGVybWlzc2lvbltcIkV4Y2x1aXJcIl1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBpc0FsbG93VG9FZGl0SGlzdG9yaWNhbCgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMucGVybWlzc2lvbltcIkVkaXRhclwiXVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGlzQWxsb3dUb1ZpZXdIaXN0b3JpY2FsKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9uW1wiVmlzdWFsaXphclwiXVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,252 @@
1
+ import * as tslib_1 from "tslib";
2
+ import { Component, OnInit, ViewChild, ChangeDetectorRef, AfterViewInit, OnDestroy, Input, Output, EventEmitter, } from "@angular/core";
3
+ import { ActivatedRoute, Router } from "@angular/router";
4
+ import { TranslateService } from "@ngx-translate/core";
5
+ import { CustomFieldsComponent } from "@seniorsistemas/angular-components";
6
+ import * as moment_ from "moment";
7
+ import { ConfirmationService, MessageService } from "primeng/api";
8
+ import { ServiceType } from '../../core/enums/serviceType';
9
+ import { Subject } from "rxjs";
10
+ import { takeUntil } from "rxjs/operators";
11
+ import { HistoricalPixAccountListService } from "./historical-pix-account-list.service";
12
+ import { FormatUtilsService } from "../utils/format-utils/format-utils.service";
13
+ const moment = moment_;
14
+ let HistoricalPixAccountListComponent = class HistoricalPixAccountListComponent {
15
+ constructor(confirmationService, translateService, activatedRoute, cd, router, messageService, historicalPixAccountListService) {
16
+ this.confirmationService = confirmationService;
17
+ this.translateService = translateService;
18
+ this.activatedRoute = activatedRoute;
19
+ this.cd = cd;
20
+ this.router = router;
21
+ this.messageService = messageService;
22
+ this.historicalPixAccountListService = historicalPixAccountListService;
23
+ this.endPoint = "hcm/payroll/queries/historicalEmployeePixQuery";
24
+ this.keyPayload = "historicalEmployeePix";
25
+ this.withSidebar = true;
26
+ this.enableView = new EventEmitter();
27
+ this.ngUnsubscribe = new Subject();
28
+ this.loading = true;
29
+ this.columns = [
30
+ {
31
+ label: this.translateService.instant("hcm.payroll.historical_pix_account_label_date_change"),
32
+ field: "dateChange",
33
+ },
34
+ {
35
+ label: this.translateService.instant("hcm.payroll.historical_pix_account_label_pix_key_type"),
36
+ field: "pixKeyType.value",
37
+ },
38
+ {
39
+ label: this.translateService.instant("hcm.payroll.historical_pix_account_label_pix_key"),
40
+ field: "pixKey",
41
+ },
42
+ {
43
+ label: this.translateService.instant("hcm.payroll.historical_pix_account_label_percentage"),
44
+ field: "percentage",
45
+ },
46
+ {
47
+ label: this.translateService.instant("hcm.payroll.employees_movimentation_historical_pix_account_label_qtd_account"),
48
+ field: "numberOfPixAccount",
49
+ },
50
+ ];
51
+ }
52
+ ngOnInit() {
53
+ this.initParameters = { employeeId: this.employeeId, dependentId: this.dependentId };
54
+ }
55
+ ngOnDestroy() {
56
+ this.ngUnsubscribe.next();
57
+ this.ngUnsubscribe.complete();
58
+ }
59
+ ngAfterViewInit() {
60
+ this.cd.detectChanges();
61
+ }
62
+ onLazyLoad(payload) {
63
+ payload.forEach((value) => {
64
+ value.dateChange = moment(value.dateChange).format(this.dateFormat);
65
+ value.pixKey = this.formatPixKeyByType(value.pixKeyType, value.pixKey);
66
+ value.percentage = FormatUtilsService.getFormattedPercentage(value.percentage);
67
+ });
68
+ this.onGridLoad(payload);
69
+ this.loading = false;
70
+ }
71
+ formatPixKeyByType(pixKeyType, pixKey) {
72
+ const keyType = pixKeyType ? pixKeyType.key.toUpperCase() : "";
73
+ if (keyType === "TELEPHONE") {
74
+ return FormatUtilsService.getFormattedTelephoneNumber(pixKey);
75
+ }
76
+ else if (keyType === "CPF") {
77
+ return FormatUtilsService.getFormattedCpf(pixKey);
78
+ }
79
+ else if (keyType === "CNPJ") {
80
+ return FormatUtilsService.getFormattedCnpj(pixKey);
81
+ }
82
+ else {
83
+ return pixKey;
84
+ }
85
+ }
86
+ getMenuActions(rowData) {
87
+ return [
88
+ {
89
+ label: this.translateService.instant("hcm.payroll.employees_image_cropper_view"),
90
+ command: () => {
91
+ console.log(this.isAllowToViewHistorical);
92
+ if (this.isAllowToViewHistorical && rowData) {
93
+ const dateChange = rowData && rowData.dateChange && moment(rowData.dateChange, this.dateFormat).format("YYYY-MM-DD");
94
+ if (this.withSidebar) {
95
+ this.router.navigate([`historical-pix-account/${dateChange}`], {
96
+ relativeTo: this.activatedRoute,
97
+ });
98
+ }
99
+ else {
100
+ this.enableView.emit(dateChange);
101
+ }
102
+ }
103
+ else {
104
+ this.messageService.add({
105
+ severity: "error",
106
+ summary: this.translateService.instant("hcm.payroll.error"),
107
+ detail: this.translateService.instant("hcm.payroll.permission_error_not_allowed"),
108
+ });
109
+ }
110
+ },
111
+ },
112
+ {
113
+ label: this.translateService.instant("hcm.payroll.delete"),
114
+ command: () => {
115
+ if (this.isAllowToDeleteHistorical && rowData) {
116
+ this.delete(rowData.id, rowData.dateChange);
117
+ }
118
+ else {
119
+ this.messageService.add({
120
+ severity: "error",
121
+ summary: this.translateService.instant("hcm.payroll.error"),
122
+ detail: this.translateService.instant("hcm.payroll.permission_error_not_allowed"),
123
+ });
124
+ }
125
+ },
126
+ },
127
+ ];
128
+ }
129
+ delete(id, dateChange) {
130
+ if (id === this.lastRecord.id) {
131
+ const dateChangeToDto = moment(dateChange, this.dateFormat).format("YYYY-MM-DD");
132
+ this.confirmationService.confirm({
133
+ message: `${this.translateService.instant("hcm.payroll.employees_movimentation_historical_pix_account_question_confirm_delete")}?`,
134
+ accept: () => {
135
+ this.loading = true;
136
+ const service = this.withSidebar ? ServiceType.PAYROLL : ServiceType.DEPENDENT;
137
+ this.historicalPixAccountListService
138
+ .remove(this.employeeId, dateChangeToDto, service, this.dependentId)
139
+ .pipe(takeUntil(this.ngUnsubscribe))
140
+ .subscribe(() => {
141
+ this.messageService.add({
142
+ severity: "success",
143
+ summary: this.translateService.instant("hcm.payroll.success"),
144
+ detail: this.translateService.instant("hcm.payroll.employees_movimentation_historical_pix_account_remove"),
145
+ });
146
+ this.parameters = (this.parameters && Object.assign({}, this.parameters)) || {};
147
+ }, () => {
148
+ this.messageService.add({
149
+ severity: "error",
150
+ summary: this.translateService.instant("hcm.payroll.error"),
151
+ detail: this.translateService.instant("hcm.payroll.employees_movimentation_historical_pix_account_error_remove"),
152
+ });
153
+ this.loading = false;
154
+ });
155
+ },
156
+ });
157
+ }
158
+ else {
159
+ this.messageService.add({
160
+ severity: "error",
161
+ summary: this.translateService.instant("hcm.payroll.error"),
162
+ detail: this.translateService.instant("hcm.payroll.not_allowed_delete_last"),
163
+ });
164
+ }
165
+ }
166
+ add() {
167
+ if (this.isAllowToAddHistorical) {
168
+ this.router.navigate(["historical-pix-account-new"], {
169
+ relativeTo: this.activatedRoute,
170
+ });
171
+ }
172
+ else {
173
+ this.messageService.add({
174
+ severity: "error",
175
+ summary: this.translateService.instant("hcm.payroll.error"),
176
+ detail: this.translateService.instant("hcm.payroll.permission_error_not_allowed"),
177
+ });
178
+ }
179
+ }
180
+ onGridLoad(payload) {
181
+ if (payload && payload.length) {
182
+ this.lastRecord = payload[0];
183
+ }
184
+ }
185
+ get isAllowToAddHistorical() {
186
+ return (this.permission["Incluir"]);
187
+ }
188
+ get isAllowToDeleteHistorical() {
189
+ return (this.permission["Excluir"]);
190
+ }
191
+ get isAllowToViewHistorical() {
192
+ return (this.permission["Visualizar"]);
193
+ }
194
+ get scopedActions() {
195
+ return this.getMenuActions.bind(this);
196
+ }
197
+ set reloadList(condition) {
198
+ if (condition) {
199
+ this.loading = true;
200
+ this.parameters = (this.parameters && Object.assign({}, this.parameters)) || {};
201
+ }
202
+ }
203
+ };
204
+ HistoricalPixAccountListComponent.ctorParameters = () => [
205
+ { type: ConfirmationService },
206
+ { type: TranslateService },
207
+ { type: ActivatedRoute },
208
+ { type: ChangeDetectorRef },
209
+ { type: Router },
210
+ { type: MessageService },
211
+ { type: HistoricalPixAccountListService }
212
+ ];
213
+ tslib_1.__decorate([
214
+ ViewChild(CustomFieldsComponent, { static: false })
215
+ ], HistoricalPixAccountListComponent.prototype, "customFields", void 0);
216
+ tslib_1.__decorate([
217
+ Input()
218
+ ], HistoricalPixAccountListComponent.prototype, "permission", void 0);
219
+ tslib_1.__decorate([
220
+ Input()
221
+ ], HistoricalPixAccountListComponent.prototype, "employeeId", void 0);
222
+ tslib_1.__decorate([
223
+ Input()
224
+ ], HistoricalPixAccountListComponent.prototype, "dependentId", void 0);
225
+ tslib_1.__decorate([
226
+ Input()
227
+ ], HistoricalPixAccountListComponent.prototype, "dateFormat", void 0);
228
+ tslib_1.__decorate([
229
+ Input()
230
+ ], HistoricalPixAccountListComponent.prototype, "endPoint", void 0);
231
+ tslib_1.__decorate([
232
+ Input()
233
+ ], HistoricalPixAccountListComponent.prototype, "keyPayload", void 0);
234
+ tslib_1.__decorate([
235
+ Input()
236
+ ], HistoricalPixAccountListComponent.prototype, "withSidebar", void 0);
237
+ tslib_1.__decorate([
238
+ Output()
239
+ ], HistoricalPixAccountListComponent.prototype, "enableView", void 0);
240
+ tslib_1.__decorate([
241
+ Input()
242
+ ], HistoricalPixAccountListComponent.prototype, "reloadList", null);
243
+ HistoricalPixAccountListComponent = tslib_1.__decorate([
244
+ Component({
245
+ // tslint:disable-next-line:component-selector
246
+ selector: "c-historical-pix-account-list",
247
+ template: "<div class=\"ui-g\">\n <div class=\"ui-g-12\">\n <c-data-list-rest\n id=\"ta-historical-pix-account-list\"\n [columns]=\"columns\"\n actionLabel=\"{{ 'hcm.payroll.movimentation_generic_action' | translate }}\"\n emptyMessage=\"{{ 'hcm.payroll.admission_empty_message' | translate }}\"\n [endpoint]=\"endPoint\"\n singularMessageRecords=\"{{\n 'hcm.payroll.admission_register' | translate\n }}\"\n [actions]=\"scopedActions\"\n pluralMessageRecords=\"{{\n 'hcm.payroll.admission_registers' | translate\n }}\"\n [keyPayload]=\"keyPayload\"\n [lazy]=\"true\"\n (lazyLoad)=\"onLazyLoad($event)\"\n [(loading)]=\"loading\"\n [initParameters]=\"initParameters\"\n [parameters]=\"parameters\"\n [isSortable]=\"false\"\n ></c-data-list-rest>\n </div>\n</div>\n\n",
248
+ styles: [""]
249
+ })
250
+ ], HistoricalPixAccountListComponent);
251
+ export { HistoricalPixAccountListComponent };
252
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yaWNhbC1waXgtYWNjb3VudC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLXBlc3NvYXMvcGF5cm9sbC1jb3JlLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LWxpc3QvaGlzdG9yaWNhbC1waXgtYWNjb3VudC1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDM0UsT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7QUFDbEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFaEYsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDO0FBUXZCLElBQWEsaUNBQWlDLEdBQTlDLE1BQWEsaUNBQWlDO0lBOEQxQyxZQUNZLG1CQUF3QyxFQUN4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UUFBUSxFQUFFLCtCQUErQjtRQUN6QywyL0JBQTJEOztLQUU5RCxDQUFDO0dBQ1csaUNBQWlDLENBMlA3QztTQTNQWSxpQ0FBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgVmlld0NoaWxkLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgT25EZXN0cm95LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBDdXN0b21GaWVsZHNDb21wb25lbnQgfSBmcm9tIFwiQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50c1wiO1xuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tIFwibW9tZW50XCI7XG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBNZXNzYWdlU2VydmljZSB9IGZyb20gXCJwcmltZW5nL2FwaVwiO1xuaW1wb3J0IHsgU2VydmljZVR5cGUgfSBmcm9tICcuLi8uLi9jb3JlL2VudW1zL3NlcnZpY2VUeXBlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBIaXN0b3JpY2FsUGl4QWNjb3VudExpc3RTZXJ2aWNlIH0gZnJvbSBcIi4vaGlzdG9yaWNhbC1waXgtYWNjb3VudC1saXN0LnNlcnZpY2VcIjtcbmltcG9ydCB7IEZvcm1hdFV0aWxzU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9mb3JtYXQtdXRpbHMvZm9ybWF0LXV0aWxzLnNlcnZpY2VcIjtcblxuY29uc3QgbW9tZW50ID0gbW9tZW50XztcblxuQENvbXBvbmVudCh7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiBcImMtaGlzdG9yaWNhbC1waXgtYWNjb3VudC1saXN0XCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LWxpc3QuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vaGlzdG9yaWNhbC1waXgtYWNjb3VudC1saXN0LmNvbXBvbmVudC5zY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBIaXN0b3JpY2FsUGl4QWNjb3VudExpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQFZpZXdDaGlsZChDdXN0b21GaWVsZHNDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHB1YmxpYyBjdXN0b21GaWVsZHM6IEN1c3RvbUZpZWxkc0NvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBlcm1pc3Npb246IG9iamVjdDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlbXBsb3llZUlkOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGVwZW5kZW50SWQ6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkYXRlRm9ybWF0OiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZW5kUG9pbnQ6IHN0cmluZyA9IFwiaGNtL3BheXJvbGwvcXVlcmllcy9oaXN0b3JpY2FsRW1wbG95ZWVQaXhRdWVyeVwiO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGtleVBheWxvYWQ6IHN0cmluZyA9IFwiaGlzdG9yaWNhbEVtcGxveWVlUGl4XCI7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgd2l0aFNpZGViYXI6IGJvb2xlYW4gPSB0cnVlO1xuXG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZW5hYmxlVmlldzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIHByaXZhdGUgbGFzdFJlY29yZDogYW55O1xuICAgIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHVibGljIGluaXRQYXJhbWV0ZXJzOiBhbnk7XG4gICAgcHVibGljIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHB1YmxpYyBwYXJhbWV0ZXJzOiBhbnk7XG5cbiAgICBwdWJsaWMgY29sdW1ucyA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgIFwiaGNtLnBheXJvbGwuaGlzdG9yaWNhbF9waXhfYWNjb3VudF9sYWJlbF9kYXRlX2NoYW5nZVwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZpZWxkOiBcImRhdGVDaGFuZ2VcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgIFwiaGNtLnBheXJvbGwuaGlzdG9yaWNhbF9waXhfYWNjb3VudF9sYWJlbF9waXhfa2V5X3R5cGVcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBmaWVsZDogXCJwaXhLZXlUeXBlLnZhbHVlXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICAgICBcImhjbS5wYXlyb2xsLmhpc3RvcmljYWxfcGl4X2FjY291bnRfbGFiZWxfcGl4X2tleVwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZpZWxkOiBcInBpeEtleVwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgXCJoY20ucGF5cm9sbC5oaXN0b3JpY2FsX3BpeF9hY2NvdW50X2xhYmVsX3BlcmNlbnRhZ2VcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBmaWVsZDogXCJwZXJjZW50YWdlXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICAgICBcImhjbS5wYXlyb2xsLmVtcGxveWVlc19tb3ZpbWVudGF0aW9uX2hpc3RvcmljYWxfcGl4X2FjY291bnRfbGFiZWxfcXRkX2FjY291bnRcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBmaWVsZDogXCJudW1iZXJPZlBpeEFjY291bnRcIixcbiAgICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFNlcnZpY2U6IEhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFNlcnZpY2UsXG4gICAgKSB7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuaW5pdFBhcmFtZXRlcnMgPSB7IGVtcGxveWVlSWQ6IHRoaXMuZW1wbG95ZWVJZCwgZGVwZW5kZW50SWQ6IHRoaXMuZGVwZW5kZW50SWQgfTtcbiAgICB9XG5cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkxhenlMb2FkKHBheWxvYWQ6IGFueSkge1xuICAgICAgICBwYXlsb2FkLmZvckVhY2goKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHZhbHVlLmRhdGVDaGFuZ2UgPSBtb21lbnQodmFsdWUuZGF0ZUNoYW5nZSkuZm9ybWF0KHRoaXMuZGF0ZUZvcm1hdCk7XG5cbiAgICAgICAgICAgIHZhbHVlLnBpeEtleSA9IHRoaXMuZm9ybWF0UGl4S2V5QnlUeXBlKHZhbHVlLnBpeEtleVR5cGUsIHZhbHVlLnBpeEtleSk7XG4gICAgICAgICAgICB2YWx1ZS5wZXJjZW50YWdlID0gRm9ybWF0VXRpbHNTZXJ2aWNlLmdldEZvcm1hdHRlZFBlcmNlbnRhZ2UodmFsdWUucGVyY2VudGFnZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMub25HcmlkTG9hZChwYXlsb2FkKTtcblxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvcm1hdFBpeEtleUJ5VHlwZShwaXhLZXlUeXBlOiBhbnksIHBpeEtleTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGtleVR5cGUgPSBwaXhLZXlUeXBlID8gcGl4S2V5VHlwZS5rZXkudG9VcHBlckNhc2UoKSA6IFwiXCI7XG5cbiAgICAgICAgaWYgKGtleVR5cGUgPT09IFwiVEVMRVBIT05FXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBGb3JtYXRVdGlsc1NlcnZpY2UuZ2V0Rm9ybWF0dGVkVGVsZXBob25lTnVtYmVyKHBpeEtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoa2V5VHlwZSA9PT0gXCJDUEZcIikge1xuICAgICAgICAgICAgcmV0dXJuIEZvcm1hdFV0aWxzU2VydmljZS5nZXRGb3JtYXR0ZWRDcGYocGl4S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChrZXlUeXBlID09PSBcIkNOUEpcIikge1xuICAgICAgICAgICAgcmV0dXJuIEZvcm1hdFV0aWxzU2VydmljZS5nZXRGb3JtYXR0ZWRDbnBqKHBpeEtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcGl4S2V5O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1lbnVBY3Rpb25zKHJvd0RhdGE6IGFueSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLmVtcGxveWVlc19pbWFnZV9jcm9wcGVyX3ZpZXdcIiksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmlzQWxsb3dUb1ZpZXdIaXN0b3JpY2FsKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0FsbG93VG9WaWV3SGlzdG9yaWNhbCAmJiByb3dEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRlQ2hhbmdlID0gcm93RGF0YSAmJiByb3dEYXRhLmRhdGVDaGFuZ2UgJiYgbW9tZW50KHJvd0RhdGEuZGF0ZUNoYW5nZSwgdGhpcy5kYXRlRm9ybWF0KS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMud2l0aFNpZGViYXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYGhpc3RvcmljYWwtcGl4LWFjY291bnQvJHsgZGF0ZUNoYW5nZSB9YF0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5hY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbmFibGVWaWV3LmVtaXQoZGF0ZUNoYW5nZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk6IFwiZXJyb3JcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLmVycm9yXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5wZXJtaXNzaW9uX2Vycm9yX25vdF9hbGxvd2VkXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5kZWxldGVcIiksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0FsbG93VG9EZWxldGVIaXN0b3JpY2FsICYmIHJvd0RhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlKHJvd0RhdGEuaWQsIHJvd0RhdGEuZGF0ZUNoYW5nZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk6IFwiZXJyb3JcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLmVycm9yXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5wZXJtaXNzaW9uX2Vycm9yX25vdF9hbGxvd2VkXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlKGlkOiBhbnksIGRhdGVDaGFuZ2U6IHN0cmluZykge1xuICAgICAgICBpZiAoaWQgPT09IHRoaXMubGFzdFJlY29yZC5pZCkge1xuICAgICAgICAgICAgY29uc3QgZGF0ZUNoYW5nZVRvRHRvID0gbW9tZW50KGRhdGVDaGFuZ2UsIHRoaXMuZGF0ZUZvcm1hdCkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcbiAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBgJHsgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgIFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX21vdmltZW50YXRpb25faGlzdG9yaWNhbF9waXhfYWNjb3VudF9xdWVzdGlvbl9jb25maXJtX2RlbGV0ZVwiLFxuICAgICAgICAgICAgICAgICkgfT9gLFxuICAgICAgICAgICAgICAgIGFjY2VwdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXJ2aWNlID0gdGhpcy53aXRoU2lkZWJhciA/ICBTZXJ2aWNlVHlwZS5QQVlST0xMIDogU2VydmljZVR5cGUuREVQRU5ERU5UO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmUodGhpcy5lbXBsb3llZUlkLCBkYXRlQ2hhbmdlVG9EdG8sIHNlcnZpY2UsIHRoaXMuZGVwZW5kZW50SWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXZlcml0eTogXCJzdWNjZXNzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLnN1Y2Nlc3NcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX21vdmltZW50YXRpb25faGlzdG9yaWNhbF9waXhfYWNjb3VudF9yZW1vdmVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtZXRlcnMgPSAodGhpcy5wYXJhbWV0ZXJzICYmIHsgLi4udGhpcy5wYXJhbWV0ZXJzIH0pIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXZlcml0eTogXCJlcnJvclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyeTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5lcnJvclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5lbXBsb3llZXNfbW92aW1lbnRhdGlvbl9oaXN0b3JpY2FsX3BpeF9hY2NvdW50X2Vycm9yX3JlbW92ZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogXCJlcnJvclwiLFxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZXJyb3JcIiksXG4gICAgICAgICAgICAgICAgZGV0YWlsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLm5vdF9hbGxvd2VkX2RlbGV0ZV9sYXN0XCIpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkKCkge1xuICAgICAgICBpZiAodGhpcy5pc0FsbG93VG9BZGRIaXN0b3JpY2FsKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJoaXN0b3JpY2FsLXBpeC1hY2NvdW50LW5ld1wiXSwge1xuICAgICAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogXCJlcnJvclwiLFxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZXJyb3JcIiksXG4gICAgICAgICAgICAgICAgZGV0YWlsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLnBlcm1pc3Npb25fZXJyb3Jfbm90X2FsbG93ZWRcIiksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25HcmlkTG9hZChwYXlsb2FkOiBhbnkpIHtcbiAgICAgICAgaWYgKHBheWxvYWQgJiYgcGF5bG9hZC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubGFzdFJlY29yZCA9IHBheWxvYWRbMF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBpc0FsbG93VG9BZGRIaXN0b3JpY2FsKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9uW1wiSW5jbHVpclwiXVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGlzQWxsb3dUb0RlbGV0ZUhpc3RvcmljYWwoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25bXCJFeGNsdWlyXCJdXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXNBbGxvd1RvVmlld0hpc3RvcmljYWwoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25bXCJWaXN1YWxpemFyXCJdXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzY29wZWRBY3Rpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRNZW51QWN0aW9ucy5iaW5kKHRoaXMpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCByZWxvYWRMaXN0KGNvbmRpdGlvbjogYm9vbGVhbikge1xuICAgICAgICBpZiAoY29uZGl0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzID0gKHRoaXMucGFyYW1ldGVycyAmJiB7IC4uLnRoaXMucGFyYW1ldGVycyB9KSB8fCB7fTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19