@seniorsistemas/yms-integration 1.32.0 → 1.33.0-c2e82ccb-741e-4184-8c6e-a7197ff2bc08

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 (46) hide show
  1. package/bundles/seniorsistemas-yms-integration.umd.js +320 -103
  2. package/bundles/seniorsistemas-yms-integration.umd.js.map +1 -1
  3. package/bundles/seniorsistemas-yms-integration.umd.min.js +1 -1
  4. package/bundles/seniorsistemas-yms-integration.umd.min.js.map +1 -1
  5. package/esm2015/seniorsistemas-yms-integration.js +44 -43
  6. package/esm2015/src/wms/components/document-grid/document-grid.component.js +84 -19
  7. package/esm2015/src/wms/components/document-grid/document-grid.module.js +8 -3
  8. package/esm2015/src/wms/components/document-grid/insert-key/insert-key.component.js +100 -8
  9. package/esm2015/src/wms/components/document-grid/insert-key/insert-key.module.js +4 -2
  10. package/esm2015/src/wms/components/document-grid/register-document/register-document.component.js +21 -7
  11. package/esm2015/src/wms/components/document-grid/register-document/register-document.module.js +4 -3
  12. package/esm2015/src/wms/components/document-list/document-list.component.js +49 -28
  13. package/esm2015/src/wms/entities/document/document-dto.js +1 -1
  14. package/esm2015/src/wms/entities/document/document.js +2 -1
  15. package/esm2015/src/wms/entities/external-tenant/external-tenant-dto.js +1 -0
  16. package/esm2015/src/wms/entities/external-tenant/external-tenant.service.js +18 -0
  17. package/esm2015/src/wms/entities/invoice-condition/invoice-condition.js +9 -0
  18. package/esm5/seniorsistemas-yms-integration.js +44 -43
  19. package/esm5/src/wms/components/document-grid/document-grid.component.js +81 -18
  20. package/esm5/src/wms/components/document-grid/document-grid.module.js +8 -3
  21. package/esm5/src/wms/components/document-grid/insert-key/insert-key.component.js +103 -8
  22. package/esm5/src/wms/components/document-grid/insert-key/insert-key.module.js +4 -2
  23. package/esm5/src/wms/components/document-grid/register-document/register-document.component.js +21 -7
  24. package/esm5/src/wms/components/document-grid/register-document/register-document.module.js +4 -3
  25. package/esm5/src/wms/components/document-list/document-list.component.js +52 -30
  26. package/esm5/src/wms/entities/document/document-dto.js +1 -1
  27. package/esm5/src/wms/entities/document/document.js +2 -1
  28. package/esm5/src/wms/entities/external-tenant/external-tenant-dto.js +1 -0
  29. package/esm5/src/wms/entities/external-tenant/external-tenant.service.js +21 -0
  30. package/esm5/src/wms/entities/invoice-condition/invoice-condition.js +9 -0
  31. package/fesm2015/seniorsistemas-yms-integration.js +271 -60
  32. package/fesm2015/seniorsistemas-yms-integration.js.map +1 -1
  33. package/fesm5/seniorsistemas-yms-integration.js +277 -61
  34. package/fesm5/seniorsistemas-yms-integration.js.map +1 -1
  35. package/package.json +1 -1
  36. package/seniorsistemas-yms-integration.d.ts +43 -42
  37. package/seniorsistemas-yms-integration.metadata.json +1 -1
  38. package/src/wms/components/document-grid/document-grid.component.d.ts +22 -8
  39. package/src/wms/components/document-grid/insert-key/insert-key.component.d.ts +17 -1
  40. package/src/wms/components/document-grid/register-document/register-document.component.d.ts +9 -3
  41. package/src/wms/components/document-list/document-list.component.d.ts +10 -5
  42. package/src/wms/entities/document/document-dto.d.ts +1 -0
  43. package/src/wms/entities/document/document.d.ts +2 -0
  44. package/src/wms/entities/external-tenant/external-tenant-dto.d.ts +7 -0
  45. package/src/wms/entities/external-tenant/external-tenant.service.d.ts +9 -0
  46. package/src/wms/entities/invoice-condition/invoice-condition.d.ts +7 -0
@@ -10,6 +10,7 @@ import { AgendaService } from '../../entities/agenda/agenda.service';
10
10
  import { DocumentService } from '../../entities/document/document.service';
11
11
  import { WmsSystem } from '../../entities/wms-system/wms-system';
12
12
  import { IntegrationService } from './../../entities/integration/integration.service';
13
+ import { InvoiceCondition } from "../../../../src/wms/entities/invoice-condition/invoice-condition";
13
14
  var DocumentGridComponent = /** @class */ (function () {
14
15
  function DocumentGridComponent(translate, documentService, confirmationService, integrationService, agendaService, utils) {
15
16
  this.translate = translate;
@@ -21,22 +22,37 @@ var DocumentGridComponent = /** @class */ (function () {
21
22
  this.viewDocument = new EventEmitter();
22
23
  this.gridData = [];
23
24
  this.enableButtonIsClienteExterno = true;
25
+ this.summary = "yms.int.wms_saved_document_message_title";
24
26
  this.ngUnsubscribe = new Subject();
27
+ this.invoiceConditions = [
28
+ { label: this.translate.instant("yms.int.wms_grid_document_invoice_no_way"), value: null },
29
+ { label: this.translate.instant("yms.int.wms_grid_document_invoice_condition_authorized"), value: InvoiceCondition.AUTHORIZED },
30
+ { label: this.translate.instant("yms.int.wms_grid_document_invoice_condition_manual_authorized"), value: InvoiceCondition.MANUAL_AUTHORIZED },
31
+ { label: this.translate.instant("yms.int.wms_grid_document_invoice_condition_partial_authorized"), value: InvoiceCondition.PARTIAL_AUTHORIZED },
32
+ { label: this.translate.instant("yms.int.wms_grid_document_invoice_condition_devolution"), value: InvoiceCondition.DEVOLUTION },
33
+ { label: this.translate.instant("yms.int.wms_grid_document_invoice_condition_rejected"), value: InvoiceCondition.REJECTED },
34
+ ];
25
35
  this.selection = [];
26
36
  }
37
+ DocumentGridComponent.prototype.getFilteredInvoiceConditions = function (invoiceConditions) {
38
+ if (invoiceConditions === InvoiceCondition.AUTHORIZED) {
39
+ return this.invoiceConditions.filter(function (cond) { return cond.value === InvoiceCondition.AUTHORIZED; });
40
+ }
41
+ else {
42
+ return this.invoiceConditions.filter(function (cond) { return cond.value !== InvoiceCondition.AUTHORIZED; });
43
+ }
44
+ };
27
45
  DocumentGridComponent.prototype.ngOnInit = function () {
28
46
  this.verifyClienteExterno();
29
47
  this.getProcessTypeByScheduling();
30
48
  this.listDocuments(false);
31
49
  };
32
- DocumentGridComponent.prototype.ngAfterContentChecked = function () {
33
- this.gridColumns = this.getGridColumns();
34
- };
35
50
  DocumentGridComponent.prototype.verifyClienteExterno = function () {
36
51
  var _this = this;
37
52
  this.agendaService.isClienteExterno()
38
53
  .subscribe(function (result) {
39
54
  _this.isClienteExterno = result.isClienteExterno;
55
+ _this.gridColumns = _this.getGridColumns();
40
56
  _this.cantEditStatus();
41
57
  });
42
58
  };
@@ -58,7 +74,7 @@ var DocumentGridComponent = /** @class */ (function () {
58
74
  }
59
75
  this.gridData.push(document);
60
76
  this.disabled = false;
61
- this.utils.message("success", "yms.int.wms_saved_document_message_title", "yms.int.wms_success_message_description");
77
+ this.utils.message("success", this.summary, "yms.int.wms_success_message_description");
62
78
  this.visibleDocumentRegister = false;
63
79
  this.visibleInvoiceKey = false;
64
80
  };
@@ -138,12 +154,18 @@ var DocumentGridComponent = /** @class */ (function () {
138
154
  }
139
155
  data.key = _this.updateKeyByWms(data);
140
156
  _this.documentService.insert(data).subscribe(function () {
141
- _this.utils.message("success", "yms.int.wms_saved_document_message_title", "saved_message_content");
157
+ _this.sucessMessage();
142
158
  });
143
159
  _this.disabled = true;
144
- _this.listDocuments(false);
160
+ }
161
+ else {
162
+ _this.documentService.update(data.id, data).subscribe(function () {
163
+ _this.sucessMessage();
164
+ _this.disabled = true;
165
+ });
145
166
  }
146
167
  });
168
+ this.listDocuments(false);
147
169
  }
148
170
  };
149
171
  DocumentGridComponent.prototype.updateKeyByWms = function (data) {
@@ -184,10 +206,14 @@ var DocumentGridComponent = /** @class */ (function () {
184
206
  }
185
207
  });
186
208
  };
209
+ DocumentGridComponent.prototype.notSavedDocuments = function () {
210
+ return this.gridData.some(function (document) { return !document.id; });
211
+ };
187
212
  DocumentGridComponent.prototype.listDocuments = function (isDelete) {
188
213
  var _this = this;
189
214
  this.documentService.list({
190
- filterQuery: "schedulingId eq '" + this.agenda.id + "'"
215
+ filterQuery: "schedulingId eq '" + this.agenda.id + "'",
216
+ size: 100
191
217
  })
192
218
  .subscribe(function (contents) {
193
219
  var _a;
@@ -206,20 +232,46 @@ var DocumentGridComponent = /** @class */ (function () {
206
232
  });
207
233
  };
208
234
  DocumentGridComponent.prototype.getGridColumns = function () {
209
- if (this.isWmsSeniorConnect()) {
210
- return tslib_1.__spread([
211
- { field: "key", header: this.translate.instant("yms.int.wms_purchaseOrder") }
212
- ], this.getColumnPartner());
213
- }
214
- if (this.isWmsWIS()) {
215
- return this.getColumnInvoiceAndlogistcUnit();
235
+ var result;
236
+ switch (this.wmsSystem) {
237
+ case WmsSystem.SENIOR_CONNECT:
238
+ result = this.wmsSeniorConnectIntegration();
239
+ break;
240
+ case WmsSystem.WIS:
241
+ result = this.wmsWisIntegration();
242
+ break;
243
+ case WmsSystem.SENIOR:
244
+ result = this.wmsSiltIntegration();
245
+ break;
246
+ default:
247
+ result = [];
216
248
  }
217
- return tslib_1.__spread([
249
+ return result;
250
+ };
251
+ DocumentGridComponent.prototype.wmsSeniorConnectIntegration = function () {
252
+ var columns = tslib_1.__spread([
253
+ { field: "key", header: this.translate.instant("yms.int.wms_purchaseOrder") }
254
+ ], this.getColumnPartner());
255
+ this.addInvoiceSituationIfNotClienteExterno(columns);
256
+ return columns;
257
+ };
258
+ DocumentGridComponent.prototype.wmsWisIntegration = function () {
259
+ var columns = tslib_1.__spread(this.getColumnInvoiceAndlogistcUnit());
260
+ this.addInvoiceSituationIfNotClienteExterno(columns);
261
+ return columns;
262
+ };
263
+ DocumentGridComponent.prototype.wmsSiltIntegration = function () {
264
+ var columns = tslib_1.__spread([
218
265
  { field: "invoiceKey", header: this.translate.instant("yms.int.wms_register_document_invoice_key") }
219
266
  ], this.getColumnInvoiceAndlogistcUnit(), [
220
267
  { field: "ownerName", header: this.translate.instant("yms.int.wms_register_document_owner_name") },
221
268
  { field: "ownerDocument", header: this.translate.instant("yms.int.wms_register_document_owner_document") },
222
269
  ]);
270
+ this.addInvoiceSituationIfNotClienteExterno(columns);
271
+ return columns;
272
+ };
273
+ DocumentGridComponent.prototype.getColumninvoiceCondition = function () {
274
+ return { field: "invoiceCondition", header: this.translate.instant("yms.int.wms_grid_document_invoice_condition") };
223
275
  };
224
276
  DocumentGridComponent.prototype.getColumnInvoiceAndlogistcUnit = function () {
225
277
  return tslib_1.__spread([
@@ -236,12 +288,23 @@ var DocumentGridComponent = /** @class */ (function () {
236
288
  { field: "partnerDocument", header: this.translate.instant("yms.int.wms_register_document_partner_document") },
237
289
  ];
238
290
  };
291
+ DocumentGridComponent.prototype.addInvoiceSituationIfNotClienteExterno = function (columns) {
292
+ if (!this.isClienteExterno) {
293
+ columns.push(this.getColumninvoiceCondition());
294
+ }
295
+ };
239
296
  DocumentGridComponent.prototype.isWmsSeniorConnect = function () {
240
297
  return this.wmsSystem === WmsSystem.SENIOR_CONNECT;
241
298
  };
242
299
  DocumentGridComponent.prototype.isWmsWIS = function () {
243
300
  return this.wmsSystem === WmsSystem.WIS;
244
301
  };
302
+ DocumentGridComponent.prototype.isWmsSilt = function () {
303
+ return this.wmsSystem === WmsSystem.SENIOR;
304
+ };
305
+ DocumentGridComponent.prototype.sucessMessage = function () {
306
+ return this.utils.message("success", this.summary, "saved_message_content");
307
+ };
245
308
  tslib_1.__decorate([
246
309
  Input(),
247
310
  tslib_1.__metadata("design:type", Object)
@@ -289,8 +352,8 @@ var DocumentGridComponent = /** @class */ (function () {
289
352
  DocumentGridComponent = tslib_1.__decorate([
290
353
  Component({
291
354
  selector: 'document-grid',
292
- template: "<div *ngIf=\"this.processType === 'RECEBIMENTO_WMS'; else processNotConfigured\">\n <p-panel>\n <p-header>\n <div class=\"buttons\">\n <div>\n <s-button\n label=\"{{'yms.int.wms_add_document' | translate}}\"\n priority=\"primary\"\n [model]=\"getActions()\"\n [auxiliary]=\"false\"\n [disabled]=\"!enableButtonIsClienteExterno\">\n </s-button>\n <s-button\n label=\"{{'yms.wms_view_button' | translate}}\"\n priority=\"secondary\"\n [auxiliary]=\"false\"\n [disabled]=\"!selection || selection.length !== 1\"\n (onClick)=\"view()\">\n </s-button>\n <s-button\n label=\"{{'yms.wms_delete_button' | translate}}\"\n priority=\"secondary\"\n [disabled]=\"!selection || !selection.length || !enableButtonIsClienteExterno\"\n (click)=\"onDelete()\">\n </s-button>\n </div>\n <s-button\n id=\"refresh-button\"\n priority=\"default\"\n iconClass=\"fa fa-refresh\"\n (onClick)=\"listDocuments(false)\"\n >\n </s-button>\n </div>\n </p-header>\n <div class=\"ui-g\">\n <div class=\"ui-g-12\" *ngIf=\"gridData && gridData.length; else emptyList\">\n <p-table #documentTable [value]=\"gridData\"\n [columns]=\"gridColumns\" dataKey=\"key\" [lazy]=\"true\" [scrollable]=\"true\" [resizableColumns]=\"true\"\n sortMode=\"multiple\" [paginator]=\"true\" [totalRecords]=\"documentTotalRecords\" rows=\"10\"\n [rowsPerPageOptions]=\"[10, 20, 50, 100]\" [(selection)]=\"selection\"\n [loading]=\"loading\">\n <ng-template pTemplate=\"colgroup\" let-columns>\n <colgroup>\n <col *ngFor=\"let col of columns\" [style.width]=\"col.width\"/>\n </colgroup>\n </ng-template>\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th id=\"checkbox\" class=\"table-checkbox\">\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\n </th>\n <th id=\"col\" *ngFor=\"let col of columns\" [pSortableColumn]=\"col.field\" pResizableColumn>\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ col.header }}</span>\n <p-sortIcon [field]=\"col.field\"></p-sortIcon>\n </div>\n </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-rowData let-columns let-expanded=\"expanded\">\n <tr [pSelectableRow]=\"rowData\">\n <td class=\"table-checkbox\">\n <p-tableCheckbox [value]=\"rowData\"></p-tableCheckbox>\n </td>\n <td *ngFor=\"let column of getGridColumns()\" (click)=\"selection = [rowData]\">\n <span>{{ rowData[ column.field ] }}</span>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"paginatorright\">\n <span [translate]=\"'total_records'\" [translateParams]=\"{ value: documentTotalRecords }\"></span>\n </ng-template>\n </p-table> \n </div>\n </div>\n <register-document\n [wmsSystem]=\"wmsSystem\"\n [edit]=\"edit\"\n [viewDocument]=\"selection\"\n (document)=\"onChangeDocument($event)\"\n [(visible)]=\"visibleDocumentRegister\"\n [agenda]=\"agenda\">\n </register-document> \n <insert-key [wmsSystem]=\"wmsSystem\" \n (document)=\"onChangeDocument($event)\" [(visible)]=\"visibleInvoiceKey\"></insert-key>\n </p-panel>\n</div>\n <div class=\"button-save\">\n <s-button \n priority=\"primary\" [label]=\"'save' | translate\"\n [disabled]=\"disabled || !this.gridData || !enableButtonIsClienteExterno\"\n (click)=\"save()\">\n </s-button>\n </div>\n <register-document\n [wmsSystem]=\"wmsSystem\"\n [edit]=\"edit\"\n [viewDocument]=\"selection\"\n (document)=\"onChangeDocument($event)\"\n [(visible)]=\"visibleDocumentRegister\"\n [agenda]=\"agenda\">\n </register-document> \n <insert-key [wmsSystem]=\"wmsSystem\" \n (document)=\"onChangeDocument($event)\" [(visible)]=\"visibleInvoiceKey\"></insert-key>\n\n<ng-template #emptyList>\n <div class=\"center\">\n <s-empty-state\n iconClass=\"fa fa-exclamation-triangle\" [title]=\"'detail_empty_state_title' | translate\"\n [description]=\"'detail_empty_state_description' | translate\">\n </s-empty-state>\n </div>\n</ng-template>\n\n<ng-template #processNotConfigured>\n <div class=\"center\">\n <s-empty-state\n iconClass=\"fa fa-exclamation-triangle\"\n [title]=\"'yms.int.wms_there_no_process_type_configured_for_this_type_scheduling' | translate\"\n >\n </s-empty-state>\n </div>\n</ng-template>",
293
- styles: [".buttons{display:flex;justify-content:space-between}.center{flex-direction:column;text-align:center}.ui-g{display:block}.button-save{margin:5px 0}#refresh-button{color:#fff}.table-checkbox{width:50px}"]
355
+ template: "<div *ngIf=\"this.processType === 'RECEBIMENTO_WMS'; else processNotConfigured\">\n <p-panel>\n <p-header>\n <div class=\"buttons\">\n <div>\n <s-button\n label=\"{{'yms.int.wms_add_document' | translate}}\"\n priority=\"primary\"\n [model]=\"getActions()\"\n [auxiliary]=\"false\"\n [disabled]=\"!enableButtonIsClienteExterno\">\n </s-button>\n <s-button\n label=\"{{'yms.wms_view_button' | translate}}\"\n priority=\"secondary\"\n [auxiliary]=\"false\"\n [disabled]=\"!selection || selection.length !== 1\"\n (onClick)=\"view()\">\n </s-button>\n <s-button\n label=\"{{'yms.wms_delete_button' | translate}}\"\n priority=\"secondary\"\n [disabled]=\"!selection || !selection.length || !enableButtonIsClienteExterno\"\n (click)=\"onDelete()\">\n </s-button>\n </div>\n <s-button\n id=\"refresh-button\"\n priority=\"default\"\n iconClass=\"fa fa-refresh\"\n (onClick)=\"listDocuments(false)\"\n [disabled]=\"notSavedDocuments()\"\n >\n </s-button>\n </div>\n </p-header>\n <div class=\"ui-g\">\n <div class=\"ui-g-12\" *ngIf=\"gridData && gridData.length; else emptyList\">\n <p-table #documentTable [value]=\"gridData\"\n [columns]=\"gridColumns\" dataKey=\"key\" [scrollable]=\"true\" [resizableColumns]=\"true\"\n [paginator]=\"true\" [totalRecords]=\"documentTotalRecords\" rows=\"10\"\n [rowsPerPageOptions]=\"[10, 20, 50, 100]\" [(selection)]=\"selection\"\n [loading]=\"loading\">\n <ng-template pTemplate=\"colgroup\" let-columns>\n <colgroup>\n <col *ngFor=\"let col of columns\" [style.width]=\"col.width\"/>\n </colgroup>\n </ng-template>\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th id=\"checkbox\" class=\"table-checkbox\">\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\n </th>\n <th id=\"col\" *ngFor=\"let col of columns\" pResizableColumn>\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ col.header }}</span>\n </div>\n </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-rowData let-columns let-expanded=\"expanded\">\n <tr [pSelectableRow]=\"rowData\">\n <td class=\"table-checkbox\">\n <p-tableCheckbox [value]=\"rowData\"></p-tableCheckbox>\n </td>\n <td *ngIf=\"isWmsSeniorConnect()\" (click)=\"selection = [rowData]\">\n <span>{{rowData[\"key\"]}}</span>\n </td>\n <td *ngIf=\"isWmsSilt()\" (click)=\"selection = [rowData]\">\n <span>{{rowData[\"invoiceKey\"]}}</span>\n </td>\n <td *ngIf=\"isWmsWIS() || isWmsSilt()\" (click)=\"selection = [rowData]\">\n <span>{{rowData[\"invoiceNumber\"]}}</span>\n </td>\n <td *ngIf=\"isWmsWIS() || isWmsSilt()\" (click)=\"selection = [rowData]\">\n <span>{{rowData[\"invoiceSerialNumber\"]}}</span>\n </td>\n <td *ngIf=\"isWmsWIS() || isWmsSeniorConnect() || isWmsSilt()\" (click)=\"selection = [rowData]\">\n <span>{{rowData[\"partnerName\"]}}</span>\n </td>\n <td *ngIf=\"isWmsWIS() || isWmsSeniorConnect() || isWmsSilt()\" (click)=\"selection = [rowData]\">\n <span>{{rowData[\"partnerDocument\"]}}</span>\n </td>\n <td *ngIf=\"isWmsWIS() || isWmsSilt()\" (click)=\"selection = [rowData]\">\n <span>{{rowData[\"logistcUnitName\"]}}</span>\n </td>\n <td *ngIf=\"isWmsWIS() || isWmsSilt()\" (click)=\"selection = [rowData]\">\n <span>{{rowData[\"logistcUnitDocument\"]}}</span>\n </td>\n <td *ngIf=\"isWmsSilt()\" (click)=\"selection = [rowData]\">\n <span>{{rowData[\"ownerName\"]}}</span>\n </td>\n <td *ngIf=\"isWmsSilt()\" (click)=\"selection = [rowData]\">\n <span>{{rowData[\"ownerDocument\"]}}</span>\n </td>\n <td *ngIf=\"!isClienteExterno\" (click)=\"selection = [rowData]\">\n <p-dropdown\n inputId=\"invoiceCondition\"\n name=\"invoiceCondition\"\n [autoWidth]=\"false\"\n [options]=\"getFilteredInvoiceConditions(rowData?.invoiceCondition)\"\n appendTo=\"body\"\n [(ngModel)]=\"rowData.invoiceCondition\"\n (onChange)=\"disabled = false\">\n </p-dropdown>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"paginatorright\">\n <span [translate]=\"'yms.main.total_records'\" \n [translateParams]=\"{ value: documentTotalRecords }\">\n </span>\n </ng-template>\n </p-table> \n </div>\n </div>\n <register-document\n [wmsSystem]=\"wmsSystem\"\n [edit]=\"edit\"\n [viewDocument]=\"selection\"\n (document)=\"onChangeDocument($event)\"\n [(visible)]=\"visibleDocumentRegister\"\n [agenda]=\"agenda\"\n [isClienteExterno]=\"isClienteExterno\">\n </register-document> \n <insert-key\n [wmsSystem]=\"wmsSystem\" \n (document)=\"onChangeDocument($event)\"\n [(visible)]=\"visibleInvoiceKey\">\n </insert-key>\n </p-panel>\n</div>\n <div class=\"button-save\">\n <s-button \n priority=\"primary\" [label]=\"'save' | translate\"\n [disabled]=\"disabled || !this.gridData || !enableButtonIsClienteExterno\"\n (click)=\"save()\">\n </s-button>\n </div>\n\n<ng-template #emptyList>\n <div class=\"center\">\n <s-empty-state\n iconClass=\"fa fa-exclamation-triangle\" [title]=\"'detail_empty_state_title' | translate\"\n [description]=\"'detail_empty_state_description' | translate\">\n </s-empty-state>\n </div>\n</ng-template>\n\n<ng-template #processNotConfigured>\n <div class=\"center\">\n <s-empty-state\n iconClass=\"fa fa-exclamation-triangle\"\n [title]=\"'yms.int.wms_there_no_process_type_configured_for_this_type_scheduling' | translate\">\n </s-empty-state>\n </div>\n</ng-template>",
356
+ styles: [".buttons{display:flex;justify-content:space-between}.center{flex-direction:column;text-align:center}.ui-g{display:block}.button-save{margin:5px 0}#refresh-button{color:#fff}.table-checkbox{width:50px}.invoice-condition .p-dropdown{position:relative;z-index:1000}"]
294
357
  }),
295
358
  tslib_1.__metadata("design:paramtypes", [TranslateService,
296
359
  DocumentService,
@@ -302,4 +365,4 @@ var DocumentGridComponent = /** @class */ (function () {
302
365
  return DocumentGridComponent;
303
366
  }());
304
367
  export { DocumentGridComponent };
305
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMveW1zLWludGVncmF0aW9uLyIsInNvdXJjZXMiOlsic3JjL3dtcy9jb21wb25lbnRzL2RvY3VtZW50LWdyaWQvZG9jdW1lbnQtZ3JpZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBdUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFZLE1BQU0sYUFBYSxDQUFDO0FBQzVELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFvQixNQUFNLHNDQUFzQyxDQUFDO0FBRXZGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDakUsT0FBTyxFQUFvQyxrQkFBa0IsRUFBZSxNQUFNLGtEQUFrRCxDQUFDO0FBT3JJO0lBeUNJLCtCQUNxQixTQUEyQixFQUMzQixlQUFnQyxFQUNoQyxtQkFBd0MsRUFDeEMsa0JBQXNDLEVBQ3RDLGFBQTRCLEVBQzVCLEtBQTBCO1FBTDFCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyx3QkFBbUIs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OzBDQUNMLFdBQVc7aUVBQU07SUFHeEM7UUFEQyxTQUFTLENBQUMsb0JBQW9CLENBQUM7MENBQ0wsV0FBVztxRUFBTTtJQUc1QztRQURDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQzswQ0FDTCxXQUFXO3FFQUFNO0lBRzVDO1FBREMsU0FBUyxDQUFDLGtCQUFrQixDQUFDOzBDQUNMLFdBQVc7bUVBQU07SUFHMUM7UUFEQyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7MENBQ0wsV0FBVztpRUFBTTtJQXZDL0IscUJBQXFCO1FBTGpDLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxlQUFlO1lBQ3pCLDJxTEFBNkM7O1NBRWhELENBQUM7aURBMkNrQyxnQkFBZ0I7WUFDVixlQUFlO1lBQ1gsbUJBQW1CO1lBQ3BCLGtCQUFrQjtZQUN2QixhQUFhO1lBQ3JCLG1CQUFtQjtPQS9DdEMscUJBQXFCLENBdVNqQztJQUFELDRCQUFDO0NBQUEsQUF2U0QsSUF1U0M7U0F2U1kscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lbnVJdGVtIH0gZnJvbSBcInByaW1lbmcvYXBpXCI7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gXCJwcmltZW5nL3RhYmxlXCI7XG5pbXBvcnQgeyBTdWJqZWN0LCBlbXB0eSwgZm9ya0pvaW4gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFV0aWxzTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvdXRpbHMtbWVzc2FnZVwiO1xuaW1wb3J0IHsgQWdlbmRhU2VydmljZSwgSXNDbGllbnRlRXh0ZXJubyB9IGZyb20gJy4uLy4uL2VudGl0aWVzL2FnZW5kYS9hZ2VuZGEuc2VydmljZSc7XG5pbXBvcnQgeyBEb2N1bWVudCB9IGZyb20gXCIuLi8uLi9lbnRpdGllcy9kb2N1bWVudC9kb2N1bWVudFwiO1xuaW1wb3J0IHsgRG9jdW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZW50aXRpZXMvZG9jdW1lbnQvZG9jdW1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBXbXNTeXN0ZW0gfSBmcm9tICcuLi8uLi9lbnRpdGllcy93bXMtc3lzdGVtL3dtcy1zeXN0ZW0nO1xuaW1wb3J0IHsgR2V0UHJvY2Vzc1R5cGVCeVNjaGVkdWxpbmdPdXRwdXQsIEludGVncmF0aW9uU2VydmljZSwgUHJvY2Vzc1R5cGUgfSBmcm9tICcuLy4uLy4uL2VudGl0aWVzL2ludGVncmF0aW9uL2ludGVncmF0aW9uLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RvY3VtZW50LWdyaWQnLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vZG9jdW1lbnQtZ3JpZC5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi9kb2N1bWVudC1ncmlkLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIERvY3VtZW50R3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XG5cbiAgICBASW5wdXQoKSBhZ2VuZGE7XG4gICAgQElucHV0KCkgd21zU3lzdGVtOiBXbXNTeXN0ZW07XG4gICAgQE91dHB1dCgpIHZpc2libGVJbnZvaWNlS2V5OiBib29sZWFuO1xuICAgIEBPdXRwdXQoKSB2aXNpYmxlRG9jdW1lbnRSZWdpc3RlcjogYm9vbGVhbjtcblxuICAgIEBPdXRwdXQoKSB2aWV3RG9jdW1lbnQ6IEV2ZW50RW1pdHRlcjxEb2N1bWVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwdWJsaWMgZG9jdW1lbnRUb3RhbFJlY29yZHM6IG51bWJlcjtcbiAgICBwdWJsaWMgZ3JpZENvbHVtbnM6IGFueTtcbiAgICBwdWJsaWMgZ3JpZERhdGE6IERvY3VtZW50W10gPSBbXTtcbiAgICBwdWJsaWMgc2VsZWN0aW9uOiBEb2N1bWVudFtdO1xuICAgIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbjtcbiAgICBwdWJsaWMgbG9hZGluZzogYm9vbGVhbjtcbiAgICBwdWJsaWMgZG9jdW1lbnQ6IERvY3VtZW50O1xuICAgIHB1YmxpYyBlZGl0OiBib29sZWFuO1xuICAgIHB1YmxpYyBwcm9jZXNzVHlwZTogUHJvY2Vzc1R5cGU7XG4gICAgcHJpdmF0ZSBpc0NsaWVudGVFeHRlcm5vOiBib29sZWFuO1xuICAgIHB1YmxpYyBlbmFibGVCdXR0b25Jc0NsaWVudGVFeHRlcm5vID0gdHJ1ZTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBAVmlld0NoaWxkKFwiZG9jdW1lbnRUYWJsZVwiKVxuICAgIHB1YmxpYyB0YWJsZTogVGFibGU7XG5cbiAgICBAVmlld0NoaWxkKFwiY3VzdG9tVGVtcGxhdGVcIilcbiAgICBwdWJsaWMgY3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAVmlld0NoaWxkKFwiY3VzdG9tRmlsdGVyRmllbGRzXCIpXG4gICAgcHVibGljIGN1c3RvbUZpbHRlckZpZWxkczogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoXCJjdXN0b21HcmlkQ29sZ3JvdXBcIilcbiAgICBwdWJsaWMgY3VzdG9tR3JpZENvbGdyb3VwOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZChcImN1c3RvbUdyaWRIZWFkZXJcIilcbiAgICBwdWJsaWMgY3VzdG9tR3JpZEhlYWRlcjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoXCJjdXN0b21HcmlkQm9keVwiKVxuICAgIHB1YmxpYyBjdXN0b21HcmlkQm9keTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGludGVncmF0aW9uU2VydmljZTogSW50ZWdyYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFnZW5kYVNlcnZpY2U6IEFnZW5kYVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdXRpbHM6IFV0aWxzTWVzc2FnZVNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uID0gW107XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmVyaWZ5Q2xpZW50ZUV4dGVybm8oKTtcbiAgICAgICAgdGhpcy5nZXRQcm9jZXNzVHlwZUJ5U2NoZWR1bGluZygpO1xuICAgICAgICB0aGlzLmxpc3REb2N1bWVudHMoZmFsc2UpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ncmlkQ29sdW1ucyA9IHRoaXMuZ2V0R3JpZENvbHVtbnMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZlcmlmeUNsaWVudGVFeHRlcm5vKCkge1xuICAgICAgICB0aGlzLmFnZW5kYVNlcnZpY2UuaXNDbGllbnRlRXh0ZXJubygpXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogSXNDbGllbnRlRXh0ZXJubykgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0NsaWVudGVFeHRlcm5vID0gcmVzdWx0LmlzQ2xpZW50ZUV4dGVybm87XG4gICAgICAgICAgICB0aGlzLmNhbnRFZGl0U3RhdHVzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UHJvY2Vzc1R5cGVCeVNjaGVkdWxpbmcoKSB7XG4gICAgICAgIHRoaXMuaW50ZWdyYXRpb25TZXJ2aWNlLmdldFByb2Nlc3NUeXBlQnlTY2hlZHVsaW5nKHRoaXMuYWdlbmRhLnRpcG9BZ2VuZGFtZW50by5pZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogR2V0UHJvY2Vzc1R5cGVCeVNjaGVkdWxpbmdPdXRwdXQpID0+IHRoaXMucHJvY2Vzc1R5cGUgPSByZXN1bHQucHJvY2Vzc1R5cGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNoYW5nZURvY3VtZW50KGRvY3VtZW50OiBEb2N1bWVudCkge1xuICAgICAgICBpZiAoIXRoaXMuaGFzRmlsbGVkVmFsdWVzKGRvY3VtZW50KSl7XG4gICAgICAgICAgICB0aGlzLnV0aWxzLm1lc3NhZ2UoXCJlcnJvclwiLFwieW1zLmludC53bXNfc2F2ZV9lcnJvcl9yZWdpc3Rlcl9kb2N1bWVudF9tZXNzYWdlX3RpdGxlXCIsXCJ5bXMuaW50Lndtc19zYXZlX2Vycm9yX3JlZ2lzdGVyX2RvY3VtZW50X21lc3NhZ2VfZGVzY3JpcHRpb25cIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFzc2lnbktleXMoZG9jdW1lbnQpO1xuXG4gICAgICAgIGNvbnN0IGR1cGxpY2F0ZURvY3VtZW50ID0gdGhpcy5ncmlkRGF0YS5maW5kKGdyaWREYXRhID0+IGdyaWREYXRhLmtleSA9PT0gZG9jdW1lbnQua2V5KTtcbiAgICAgICAgaWYgKGR1cGxpY2F0ZURvY3VtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnV0aWxzLm1lc3NhZ2UoXCJlcnJvclwiLFwieW1zLmludC53bXNfZXJyb3JfcmVnaXN0ZXJfZG9jdW1lbnRfbWVzc2FnZV90aXRsZVwiLFwieW1zLmludC53bXNfZXJyb3JfcmVnaXN0ZXJfZG9jdW1lbnRfbWVzc2FnZV9kZXNjcmlwdGlvblwiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZ3JpZERhdGEucHVzaChkb2N1bWVudCk7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy51dGlscy5tZXNzYWdlKFwic3VjY2Vzc1wiLCBcInltcy5pbnQud21zX3NhdmVkX2RvY3VtZW50X21lc3NhZ2VfdGl0bGVcIiwgXCJ5bXMuaW50Lndtc19zdWNjZXNzX21lc3NhZ2VfZGVzY3JpcHRpb25cIik7XG4gICAgICAgIHRoaXMudmlzaWJsZURvY3VtZW50UmVnaXN0ZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy52aXNpYmxlSW52b2ljZUtleSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXNzaWduS2V5cyhkb2N1bWVudDogRG9jdW1lbnQpIHtcbiAgICAgICAgaWYgKGRvY3VtZW50LmlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFnZW5kYS5pZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuc2NoZWR1bGluZ0lkID0gdGhpcy5hZ2VuZGEuaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZG9jdW1lbnQua2V5ID09PSB1bmRlZmluZWQgfHwgZG9jdW1lbnQua2V5ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQua2V5ID0gZG9jdW1lbnQuaW52b2ljZUtleTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1dtc1dJUygpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmtleSA9IGAke2RvY3VtZW50Lmludm9pY2VOdW1iZXJ9OiR7ZG9jdW1lbnQuaW52b2ljZVNlcmlhbE51bWJlcn06JHtkb2N1bWVudC5wYXJ0bmVyRG9jdW1lbnR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc0ZpbGxlZFZhbHVlcyhkb2N1bWVudDogRG9jdW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZm9ybVZhbHVlcyA9IE9iamVjdC52YWx1ZXMoZG9jdW1lbnQpO1xuICAgICAgICByZXR1cm4gZm9ybVZhbHVlcy5zb21lKHZhbHVlID0+IHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSAnJyk7XG4gICAgfVxuXG5cbiAgICBwcml2YXRlIGNhbnRFZGl0U3RhdHVzKCkge1xuICAgICAgICBjb25zdCBjYW50RWRpdFN0YXR1cyA9IFtcbiAgICAgICAgICAgICdDQU5DRUxBRE8nLFxuICAgICAgICAgICAgJ0VNX0VYRUNVQ0FPJyxcbiAgICAgICAgICAgICdDT05DTFVJRE8nLFxuICAgICAgICAgICAgJ0FHVUFSREFORE9fUE9SX1ZBTElEQUNBTydcbiAgICAgICAgXS5pbmNsdWRlcyh0aGlzLmFnZW5kYS5zdGF0dXMudG9TdHJpbmcoKSk7XG5cbiAgICAgICAgaWYoY2FudEVkaXRTdGF0dXMpIHtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlQnV0dG9uSXNDbGllbnRlRXh0ZXJubyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFjdGlvbnMoKTogTWVudUl0ZW1bXSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMuY2hlY2tXbXNTeXN0ZW1JbnZhbGlkKCksXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJ5bXMuaW50Lndtc19zZWFyY2hcIiksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVJbnZvaWNlS2V5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGljb246IFwiZmEgZmEtc2VhcmNoXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMuY2hlY2tXbXNTeXN0ZW1JbnZhbGlkKCksXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJ5bXMuaW50Lndtc19hZGRfZG9jdW1lbnRfcmVnaXN0ZXJcIiksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVEb2N1bWVudFJlZ2lzdGVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGljb246IFwiZmFzIGZhLXBlbi1zcXVhcmVcIlxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHB1YmxpYyBjaGVja1dtc1N5c3RlbUludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLndtc1N5c3RlbSAmJiB0aGlzLndtc1N5c3RlbSA9PT0gV21zU3lzdGVtLk5PTkUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UHJvcChvYmo6IGFueSwgcGF0aDogYW55KSB7XG4gICAgICAgIHJldHVybiBwYXRoLnNwbGl0KFwiLlwiKS5yZWR1Y2UoKHJlc3VsdDogYW55LCBwcm9wOiBhbnkpID0+IChyZXN1bHRbcHJvcF0gPT09IHVuZGVmaW5lZCA/IFwiXCIgOiByZXN1bHRbcHJvcF0pLCBvYmopO1xuICAgIH1cblxuICAgIHB1YmxpYyB2aWV3KCkge1xuICAgICAgICB0aGlzLnZpZXdEb2N1bWVudC5lbWl0KHRoaXMuc2VsZWN0aW9uWzBdKTtcbiAgICAgICAgdGhpcy52aXNpYmxlRG9jdW1lbnRSZWdpc3RlciA9IHRydWU7XG4gICAgICAgIHRoaXMuZWRpdCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzYXZlKCkge1xuICAgICAgICBpZih0aGlzLmdyaWREYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZERhdGEuZm9yRWFjaChkYXRhID0+IHtcbiAgICAgICAgICAgICAgICBpZighZGF0YS5pZCkge1xuICAgICAgICAgICAgICAgICAgICBpZighZGF0YS5zY2hlZHVsaW5nSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuc2NoZWR1bGluZ0lkID0gdGhpcy5hZ2VuZGEuaWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZGF0YS5rZXkgPSB0aGlzLnVwZGF0ZUtleUJ5V21zKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50U2VydmljZS5pbnNlcnQoZGF0YSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXRpbHMubWVzc2FnZShcInN1Y2Nlc3NcIiwgXCJ5bXMuaW50Lndtc19zYXZlZF9kb2N1bWVudF9tZXNzYWdlX3RpdGxlXCIsIFwic2F2ZWRfbWVzc2FnZV9jb250ZW50XCIpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdERvY3VtZW50cyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUtleUJ5V21zKGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICghZGF0YS5rZXkpIHtcbiAgICAgICAgICAgIGRhdGEua2V5ID0gZGF0YS5pbnZvaWNlS2V5O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLndtc1N5c3RlbSA9PT0gV21zU3lzdGVtLldJUykge1xuICAgICAgICAgICAgZGF0YS5rZXkgPSBgJHtkYXRhLmludm9pY2VOdW1iZXJ9OiR7ZGF0YS5pbnZvaWNlU2VyaWFsTnVtYmVyfToke2RhdGEucGFydG5lckRvY3VtZW50fWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGEua2V5O1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkRlbGV0ZSgpIHtcbiAgICAgICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xuICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImRlbGV0ZV9jb25maXJtYXRpb25fbWVzc2FnZVwiKSxcbiAgICAgICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImRlbGV0ZV9jb25maXJtYXRpb25fdGl0bGVcIiksXG4gICAgICAgICAgICBhY2NlcHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZURvY3VtZW50SWZJZFVuZGZpbmVkKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb24ubGVuZ3RoIDwgMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHkoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ya0pvaW4odGhpcy5zZWxlY3Rpb24ubWFwKGRvY3VtZW50ID0+IHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmRlbGV0ZShkb2N1bWVudC5pZCkpKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnV0aWxzLm1lc3NhZ2UoXCJzdWNjZXNzXCIsIFwiZGVsZXRlZF9tZXNzYWdlX3RpdGxlXCIsIFwiZGVsZXRlZF9tZXNzYWdlX2NvbnRlbnRcIik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdERvY3VtZW50cyh0cnVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVEb2N1bWVudElmSWRVbmRmaW5lZCgpIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uZm9yRWFjaCgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoIXZhbHVlLmlkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXhHcmlkRGF0YSA9IHRoaXMuZ3JpZERhdGEuZmluZEluZGV4KGRvY3VtZW50ID0+IGRvY3VtZW50LmtleSA9PT0gdmFsdWUua2V5KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZERhdGEuc3BsaWNlKGluZGV4R3JpZERhdGEsIDEpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBsaXN0RG9jdW1lbnRzKGlzRGVsZXRlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmxpc3Qoe1xuICAgICAgICAgICAgZmlsdGVyUXVlcnk6IGBzY2hlZHVsaW5nSWQgZXEgJyR7dGhpcy5hZ2VuZGEuaWR9J2BcbiAgICAgICAgfSlcbiAgICAgICAgLnN1YnNjcmliZSgoY29udGVudHM6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5ncmlkRGF0YSA9IGlzRGVsZXRlID8gdGhpcy5ncmlkRGF0YS5maWx0ZXIoaXRlbSA9PiAhaXRlbS5pZCkgOiBbXTtcblxuICAgICAgICAgICAgaWYoY29udGVudHMudG90YWxFbGVtZW50cyA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWREYXRhLnB1c2goLi4uY29udGVudHMuY29udGVudHMpO1xuICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRUb3RhbFJlY29yZHMgPSBjb250ZW50cy50b3RhbEVsZW1lbnRzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50VG90YWxSZWNvcmRzID0gdGhpcy5ncmlkRGF0YS5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBoYXNFbGVtZW50V2l0aG91dElkID0gdGhpcy5ncmlkRGF0YS5zb21lKGl0ZW0gPT4gIWl0ZW0uaWQpO1xuXG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gIWhhc0VsZW1lbnRXaXRob3V0SWQ7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uID0gW107XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRHcmlkQ29sdW1ucygpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNXbXNTZW5pb3JDb25uZWN0KCkpIHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgeyBmaWVsZDogXCJrZXlcIiwgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwieW1zLmludC53bXNfcHVyY2hhc2VPcmRlclwiKSB9LFxuICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0Q29sdW1uUGFydG5lcigpXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNXbXNXSVMoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29sdW1uSW52b2ljZUFuZGxvZ2lzdGNVbml0KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBmaWVsZDogXCJpbnZvaWNlS2V5XCIsIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcInltcy5pbnQud21zX3JlZ2lzdGVyX2RvY3VtZW50X2ludm9pY2Vfa2V5XCIpIH0sXG4gICAgICAgICAgICAuLi50aGlzLmdldENvbHVtbkludm9pY2VBbmRsb2dpc3RjVW5pdCgpLFxuICAgICAgICAgICAgeyBmaWVsZDogXCJvd25lck5hbWVcIiwgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwieW1zLmludC53bXNfcmVnaXN0ZXJfZG9jdW1lbnRfb3duZXJfbmFtZVwiKSB9LFxuICAgICAgICAgICAgeyBmaWVsZDogXCJvd25lckRvY3VtZW50XCIsIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcInltcy5pbnQud21zX3JlZ2lzdGVyX2RvY3VtZW50X293bmVyX2RvY3VtZW50XCIpIH0sXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb2x1bW5JbnZvaWNlQW5kbG9naXN0Y1VuaXQoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IGZpZWxkOiBcImludm9pY2VOdW1iZXJcIiwgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwieW1zLmludC53bXNfcmVnaXN0ZXJfZG9jdW1lbnRfaW52b2ljZV9udW1iZXJcIikgfSxcbiAgICAgICAgICAgIHsgZmllbGQ6IFwiaW52b2ljZVNlcmlhbE51bWJlclwiLCBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJ5bXMuaW50Lndtc19yZWdpc3Rlcl9kb2N1bWVudF9pbnZvaWNlX3NlcmlhbF9udW1iZXJcIikgfSxcbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0Q29sdW1uUGFydG5lcigpLFxuICAgICAgICAgICAgeyBmaWVsZDogXCJsb2dpc3RjVW5pdE5hbWVcIiwgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwieW1zLmludC53bXNfcmVnaXN0ZXJfZG9jdW1lbnRfbG9naXN0Y191bml0X25hbWVcIikgfSxcbiAgICAgICAgICAgIHsgZmllbGQ6IFwibG9naXN0Y1VuaXREb2N1bWVudFwiLCBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJ5bXMuaW50Lndtc19yZWdpc3Rlcl9kb2N1bWVudF9sb2dpc3RjX3VuaXRfZG9jdW1lbnRcIikgfSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbHVtblBhcnRuZXIoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IGZpZWxkOiBcInBhcnRuZXJOYW1lXCIsIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcInltcy5pbnQud21zX3JlZ2lzdGVyX2RvY3VtZW50X3BhcnRuZXJfbmFtZVwiKSB9LFxuICAgICAgICAgICAgeyBmaWVsZDogXCJwYXJ0bmVyRG9jdW1lbnRcIiwgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwieW1zLmludC53bXNfcmVnaXN0ZXJfZG9jdW1lbnRfcGFydG5lcl9kb2N1bWVudFwiKSB9LFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1dtc1NlbmlvckNvbm5lY3QoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLndtc1N5c3RlbSA9PT0gV21zU3lzdGVtLlNFTklPUl9DT05ORUNUO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1dtc1dJUygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud21zU3lzdGVtID09PSBXbXNTeXN0ZW0uV0lTO1xuICAgIH1cbn1cbiJdfQ==
368
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMveW1zLWludGVncmF0aW9uLyIsInNvdXJjZXMiOlsic3JjL3dtcy9jb21wb25lbnRzL2RvY3VtZW50LWdyaWQvZG9jdW1lbnQtZ3JpZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQVksTUFBTSxhQUFhLENBQUM7QUFDNUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQW9CLE1BQU0sc0NBQXNDLENBQUM7QUFFdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRSxPQUFPLEVBQW9DLGtCQUFrQixFQUFlLE1BQU0sa0RBQWtELENBQUM7QUFDckksT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFPcEc7SUEyREksK0JBQ3FCLFNBQTJCLEVBQzNCLGVBQWdDLEVBQ2hDLG1CQUF3QyxFQUN4QyxrQkFBc0MsRUFDdEMsYUFBNEIsRUFDNUIsS0FBMEI7UUFMMUIsY0FBUyxHQUFULFNBQVMsQ0FB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QWtCO1lBQ3ZCLGFBQWE7WUFDckIsbUJBQW1CO09BakV0QyxxQkFBcUIsQ0ErV2pDO0lBQUQsNEJBQUM7Q0FBQSxBQS9XRCxJQStXQztTQS9XWSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVudUl0ZW0gfSBmcm9tIFwicHJpbWVuZy9hcGlcIjtcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSBcInByaW1lbmcvdGFibGVcIjtcbmltcG9ydCB7IFN1YmplY3QsIGVtcHR5LCBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVXRpbHNNZXNzYWdlU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi91dGlscy91dGlscy1tZXNzYWdlXCI7XG5pbXBvcnQgeyBBZ2VuZGFTZXJ2aWNlLCBJc0NsaWVudGVFeHRlcm5vIH0gZnJvbSAnLi4vLi4vZW50aXRpZXMvYWdlbmRhL2FnZW5kYS5zZXJ2aWNlJztcbmltcG9ydCB7IERvY3VtZW50IH0gZnJvbSBcIi4uLy4uL2VudGl0aWVzL2RvY3VtZW50L2RvY3VtZW50XCI7XG5pbXBvcnQgeyBEb2N1bWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9lbnRpdGllcy9kb2N1bWVudC9kb2N1bWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFdtc1N5c3RlbSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL3dtcy1zeXN0ZW0vd21zLXN5c3RlbSc7XG5pbXBvcnQgeyBHZXRQcm9jZXNzVHlwZUJ5U2NoZWR1bGluZ091dHB1dCwgSW50ZWdyYXRpb25TZXJ2aWNlLCBQcm9jZXNzVHlwZSB9IGZyb20gJy4vLi4vLi4vZW50aXRpZXMvaW50ZWdyYXRpb24vaW50ZWdyYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBJbnZvaWNlQ29uZGl0aW9uIH0gZnJvbSBcIi4uLy4uLy4uLy4uL3NyYy93bXMvZW50aXRpZXMvaW52b2ljZS1jb25kaXRpb24vaW52b2ljZS1jb25kaXRpb25cIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkb2N1bWVudC1ncmlkJyxcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2RvY3VtZW50LWdyaWQuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vZG9jdW1lbnQtZ3JpZC5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBEb2N1bWVudEdyaWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgQElucHV0KCkgYWdlbmRhO1xuICAgIEBJbnB1dCgpIHdtc1N5c3RlbTogV21zU3lzdGVtO1xuICAgIEBPdXRwdXQoKSB2aXNpYmxlSW52b2ljZUtleTogYm9vbGVhbjtcbiAgICBAT3V0cHV0KCkgdmlzaWJsZURvY3VtZW50UmVnaXN0ZXI6IGJvb2xlYW47XG5cbiAgICBAT3V0cHV0KCkgdmlld0RvY3VtZW50OiBFdmVudEVtaXR0ZXI8RG9jdW1lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHVibGljIGRvY3VtZW50VG90YWxSZWNvcmRzOiBudW1iZXI7XG4gICAgcHVibGljIGdyaWRDb2x1bW5zOiBhbnk7XG4gICAgcHVibGljIGdyaWREYXRhOiBEb2N1bWVudFtdID0gW107XG4gICAgcHVibGljIHNlbGVjdGlvbjogRG9jdW1lbnRbXTtcbiAgICBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgcHVibGljIGxvYWRpbmc6IGJvb2xlYW47XG4gICAgcHVibGljIGRvY3VtZW50OiBEb2N1bWVudDtcbiAgICBwdWJsaWMgZWRpdDogYm9vbGVhbjtcbiAgICBwdWJsaWMgcHJvY2Vzc1R5cGU6IFByb2Nlc3NUeXBlO1xuICAgIHB1YmxpYyBpc0NsaWVudGVFeHRlcm5vOiBib29sZWFuO1xuICAgIHB1YmxpYyBlbmFibGVCdXR0b25Jc0NsaWVudGVFeHRlcm5vID0gdHJ1ZTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3VtbWFyeSA9IFwieW1zLmludC53bXNfc2F2ZWRfZG9jdW1lbnRfbWVzc2FnZV90aXRsZVwiO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBAVmlld0NoaWxkKFwiZG9jdW1lbnRUYWJsZVwiKVxuICAgIHB1YmxpYyB0YWJsZTogVGFibGU7XG5cbiAgICBAVmlld0NoaWxkKFwiY3VzdG9tVGVtcGxhdGVcIilcbiAgICBwdWJsaWMgY3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAVmlld0NoaWxkKFwiY3VzdG9tRmlsdGVyRmllbGRzXCIpXG4gICAgcHVibGljIGN1c3RvbUZpbHRlckZpZWxkczogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoXCJjdXN0b21HcmlkQ29sZ3JvdXBcIilcbiAgICBwdWJsaWMgY3VzdG9tR3JpZENvbGdyb3VwOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZChcImN1c3RvbUdyaWRIZWFkZXJcIilcbiAgICBwdWJsaWMgY3VzdG9tR3JpZEhlYWRlcjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoXCJjdXN0b21HcmlkQm9keVwiKVxuICAgIHB1YmxpYyBjdXN0b21HcmlkQm9keTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHB1YmxpYyBpbnZvaWNlQ29uZGl0aW9uczogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogSW52b2ljZUNvbmRpdGlvbiB9W10gPSBbXG4gICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJ5bXMuaW50Lndtc19ncmlkX2RvY3VtZW50X2ludm9pY2Vfbm9fd2F5XCIpLCB2YWx1ZTogbnVsbCB9LFxuICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwieW1zLmludC53bXNfZ3JpZF9kb2N1bWVudF9pbnZvaWNlX2NvbmRpdGlvbl9hdXRob3JpemVkXCIpLCB2YWx1ZTogSW52b2ljZUNvbmRpdGlvbi5BVVRIT1JJWkVEIH0sXG4gICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJ5bXMuaW50Lndtc19ncmlkX2RvY3VtZW50X2ludm9pY2VfY29uZGl0aW9uX21hbnVhbF9hdXRob3JpemVkXCIpLCB2YWx1ZTogSW52b2ljZUNvbmRpdGlvbi5NQU5VQUxfQVVUSE9SSVpFRCB9LFxuICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwieW1zLmludC53bXNfZ3JpZF9kb2N1bWVudF9pbnZvaWNlX2NvbmRpdGlvbl9wYXJ0aWFsX2F1dGhvcml6ZWRcIiksIHZhbHVlOiBJbnZvaWNlQ29uZGl0aW9uLlBBUlRJQUxfQVVUSE9SSVpFRCB9LFxuICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwieW1zLmludC53bXNfZ3JpZF9kb2N1bWVudF9pbnZvaWNlX2NvbmRpdGlvbl9kZXZvbHV0aW9uXCIpLCB2YWx1ZTogSW52b2ljZUNvbmRpdGlvbi5ERVZPTFVUSU9OIH0sXG4gICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJ5bXMuaW50Lndtc19ncmlkX2RvY3VtZW50X2ludm9pY2VfY29uZGl0aW9uX3JlamVjdGVkXCIpLCB2YWx1ZTogSW52b2ljZUNvbmRpdGlvbi5SRUpFQ1RFRCB9LFxuICAgIF07XG5cbiAgICBnZXRGaWx0ZXJlZEludm9pY2VDb25kaXRpb25zKGludm9pY2VDb25kaXRpb25zOiBhbnkpOiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBJbnZvaWNlQ29uZGl0aW9uIHwgbnVsbCB9W10ge1xuICAgICAgICBpZiAoaW52b2ljZUNvbmRpdGlvbnMgPT09IEludm9pY2VDb25kaXRpb24uQVVUSE9SSVpFRCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW52b2ljZUNvbmRpdGlvbnMuZmlsdGVyKGNvbmQgPT4gY29uZC52YWx1ZSA9PT0gSW52b2ljZUNvbmRpdGlvbi5BVVRIT1JJWkVEKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmludm9pY2VDb25kaXRpb25zLmZpbHRlcihjb25kID0+IGNvbmQudmFsdWUgIT09IEludm9pY2VDb25kaXRpb24uQVVUSE9SSVpFRCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbnRlZ3JhdGlvblNlcnZpY2U6IEludGVncmF0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhZ2VuZGFTZXJ2aWNlOiBBZ2VuZGFTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHV0aWxzOiBVdGlsc01lc3NhZ2VTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IFtdO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZlcmlmeUNsaWVudGVFeHRlcm5vKCk7XG4gICAgICAgIHRoaXMuZ2V0UHJvY2Vzc1R5cGVCeVNjaGVkdWxpbmcoKTtcbiAgICAgICAgdGhpcy5saXN0RG9jdW1lbnRzKGZhbHNlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZlcmlmeUNsaWVudGVFeHRlcm5vKCkge1xuICAgICAgICB0aGlzLmFnZW5kYVNlcnZpY2UuaXNDbGllbnRlRXh0ZXJubygpXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogSXNDbGllbnRlRXh0ZXJubykgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0NsaWVudGVFeHRlcm5vID0gcmVzdWx0LmlzQ2xpZW50ZUV4dGVybm87XG4gICAgICAgICAgICB0aGlzLmdyaWRDb2x1bW5zID0gdGhpcy5nZXRHcmlkQ29sdW1ucygpO1xuICAgICAgICAgICAgdGhpcy5jYW50RWRpdFN0YXR1cygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFByb2Nlc3NUeXBlQnlTY2hlZHVsaW5nKCkge1xuICAgICAgICB0aGlzLmludGVncmF0aW9uU2VydmljZS5nZXRQcm9jZXNzVHlwZUJ5U2NoZWR1bGluZyh0aGlzLmFnZW5kYS50aXBvQWdlbmRhbWVudG8uaWQpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IEdldFByb2Nlc3NUeXBlQnlTY2hlZHVsaW5nT3V0cHV0KSA9PiB0aGlzLnByb2Nlc3NUeXBlID0gcmVzdWx0LnByb2Nlc3NUeXBlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DaGFuZ2VEb2N1bWVudChkb2N1bWVudDogRG9jdW1lbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc0ZpbGxlZFZhbHVlcyhkb2N1bWVudCkpe1xuICAgICAgICAgICAgdGhpcy51dGlscy5tZXNzYWdlKFwiZXJyb3JcIixcInltcy5pbnQud21zX3NhdmVfZXJyb3JfcmVnaXN0ZXJfZG9jdW1lbnRfbWVzc2FnZV90aXRsZVwiLFwieW1zLmludC53bXNfc2F2ZV9lcnJvcl9yZWdpc3Rlcl9kb2N1bWVudF9tZXNzYWdlX2Rlc2NyaXB0aW9uXCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hc3NpZ25LZXlzKGRvY3VtZW50KTtcbiAgICAgICAgY29uc3QgZHVwbGljYXRlRG9jdW1lbnQgPSB0aGlzLmdyaWREYXRhLmZpbmQoZ3JpZERhdGEgPT4gZ3JpZERhdGEua2V5ID09PSBkb2N1bWVudC5rZXkpO1xuICAgICAgICBpZiAoZHVwbGljYXRlRG9jdW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMudXRpbHMubWVzc2FnZShcImVycm9yXCIsXCJ5bXMuaW50Lndtc19lcnJvcl9yZWdpc3Rlcl9kb2N1bWVudF9tZXNzYWdlX3RpdGxlXCIsXCJ5bXMuaW50Lndtc19lcnJvcl9yZWdpc3Rlcl9kb2N1bWVudF9tZXNzYWdlX2Rlc2NyaXB0aW9uXCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ncmlkRGF0YS5wdXNoKGRvY3VtZW50KTtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnV0aWxzLm1lc3NhZ2UoXCJzdWNjZXNzXCIsIHRoaXMuc3VtbWFyeSwgXCJ5bXMuaW50Lndtc19zdWNjZXNzX21lc3NhZ2VfZGVzY3JpcHRpb25cIik7XG4gICAgICAgIHRoaXMudmlzaWJsZURvY3VtZW50UmVnaXN0ZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy52aXNpYmxlSW52b2ljZUtleSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXNzaWduS2V5cyhkb2N1bWVudDogRG9jdW1lbnQpIHtcbiAgICAgICAgaWYgKGRvY3VtZW50LmlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFnZW5kYS5pZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuc2NoZWR1bGluZ0lkID0gdGhpcy5hZ2VuZGEuaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZG9jdW1lbnQua2V5ID09PSB1bmRlZmluZWQgfHwgZG9jdW1lbnQua2V5ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQua2V5ID0gZG9jdW1lbnQuaW52b2ljZUtleTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1dtc1dJUygpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmtleSA9IGAke2RvY3VtZW50Lmludm9pY2VOdW1iZXJ9OiR7ZG9jdW1lbnQuaW52b2ljZVNlcmlhbE51bWJlcn06JHtkb2N1bWVudC5wYXJ0bmVyRG9jdW1lbnR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc0ZpbGxlZFZhbHVlcyhkb2N1bWVudDogRG9jdW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZm9ybVZhbHVlcyA9IE9iamVjdC52YWx1ZXMoZG9jdW1lbnQpO1xuICAgICAgICByZXR1cm4gZm9ybVZhbHVlcy5zb21lKHZhbHVlID0+IHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSAnJyk7XG4gICAgfVxuXG5cbiAgICBwcml2YXRlIGNhbnRFZGl0U3RhdHVzKCkge1xuICAgICAgICBjb25zdCBjYW50RWRpdFN0YXR1cyA9IFtcbiAgICAgICAgICAgICdDQU5DRUxBRE8nLFxuICAgICAgICAgICAgJ0VNX0VYRUNVQ0FPJyxcbiAgICAgICAgICAgICdDT05DTFVJRE8nLFxuICAgICAgICAgICAgJ0FHVUFSREFORE9fUE9SX1ZBTElEQUNBTydcbiAgICAgICAgXS5pbmNsdWRlcyh0aGlzLmFnZW5kYS5zdGF0dXMudG9TdHJpbmcoKSk7XG5cbiAgICAgICAgaWYoY2FudEVkaXRTdGF0dXMpIHtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlQnV0dG9uSXNDbGllbnRlRXh0ZXJubyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFjdGlvbnMoKTogTWVudUl0ZW1bXSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMuY2hlY2tXbXNTeXN0ZW1JbnZhbGlkKCksXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJ5bXMuaW50Lndtc19zZWFyY2hcIiksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVJbnZvaWNlS2V5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGljb246IFwiZmEgZmEtc2VhcmNoXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMuY2hlY2tXbXNTeXN0ZW1JbnZhbGlkKCksXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJ5bXMuaW50Lndtc19hZGRfZG9jdW1lbnRfcmVnaXN0ZXJcIiksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVEb2N1bWVudFJlZ2lzdGVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGljb246IFwiZmFzIGZhLXBlbi1zcXVhcmVcIlxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHB1YmxpYyBjaGVja1dtc1N5c3RlbUludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLndtc1N5c3RlbSAmJiB0aGlzLndtc1N5c3RlbSA9PT0gV21zU3lzdGVtLk5PTkUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UHJvcChvYmo6IGFueSwgcGF0aDogYW55KSB7XG4gICAgICAgIHJldHVybiBwYXRoLnNwbGl0KFwiLlwiKS5yZWR1Y2UoKHJlc3VsdDogYW55LCBwcm9wOiBhbnkpID0+IChyZXN1bHRbcHJvcF0gPT09IHVuZGVmaW5lZCA/IFwiXCIgOiByZXN1bHRbcHJvcF0pLCBvYmopO1xuICAgIH1cblxuICAgIHB1YmxpYyB2aWV3KCkge1xuICAgICAgICB0aGlzLnZpZXdEb2N1bWVudC5lbWl0KHRoaXMuc2VsZWN0aW9uWzBdKTtcbiAgICAgICAgdGhpcy52aXNpYmxlRG9jdW1lbnRSZWdpc3RlciA9IHRydWU7XG4gICAgICAgIHRoaXMuZWRpdCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzYXZlKCkge1xuICAgICAgICBpZih0aGlzLmdyaWREYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZERhdGEuZm9yRWFjaChkYXRhID0+IHtcbiAgICAgICAgICAgICAgICBpZighZGF0YS5pZCkge1xuICAgICAgICAgICAgICAgICAgICBpZighZGF0YS5zY2hlZHVsaW5nSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuc2NoZWR1bGluZ0lkID0gdGhpcy5hZ2VuZGEuaWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZGF0YS5rZXkgPSB0aGlzLnVwZGF0ZUtleUJ5V21zKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50U2VydmljZS5pbnNlcnQoZGF0YSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3VjZXNzTWVzc2FnZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50U2VydmljZS51cGRhdGUoZGF0YS5pZCwgZGF0YSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3VjZXNzTWVzc2FnZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmxpc3REb2N1bWVudHMoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVLZXlCeVdtcyhkYXRhOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWRhdGEua2V5KSB7XG4gICAgICAgICAgICBkYXRhLmtleSA9IGRhdGEuaW52b2ljZUtleTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy53bXNTeXN0ZW0gPT09IFdtc1N5c3RlbS5XSVMpIHtcbiAgICAgICAgICAgIGRhdGEua2V5ID0gYCR7ZGF0YS5pbnZvaWNlTnVtYmVyfToke2RhdGEuaW52b2ljZVNlcmlhbE51bWJlcn06JHtkYXRhLnBhcnRuZXJEb2N1bWVudH1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRhLmtleTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25EZWxldGUoKSB7XG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJkZWxldGVfY29uZmlybWF0aW9uX21lc3NhZ2VcIiksXG4gICAgICAgICAgICBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJkZWxldGVfY29uZmlybWF0aW9uX3RpdGxlXCIpLFxuICAgICAgICAgICAgYWNjZXB0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVEb2N1bWVudElmSWRVbmRmaW5lZCgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uLmxlbmd0aCA8IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcmtKb2luKHRoaXMuc2VsZWN0aW9uLm1hcChkb2N1bWVudCA9PiB0aGlzLmRvY3VtZW50U2VydmljZS5kZWxldGUoZG9jdW1lbnQuaWQpKSlcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51dGlscy5tZXNzYWdlKFwic3VjY2Vzc1wiLCBcImRlbGV0ZWRfbWVzc2FnZV90aXRsZVwiLCBcImRlbGV0ZWRfbWVzc2FnZV9jb250ZW50XCIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxpc3REb2N1bWVudHModHJ1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlRG9jdW1lbnRJZklkVW5kZmluZWQoKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLmZvckVhY2goKHZhbHVlLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF2YWx1ZS5pZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4R3JpZERhdGEgPSB0aGlzLmdyaWREYXRhLmZpbmRJbmRleChkb2N1bWVudCA9PiBkb2N1bWVudC5rZXkgPT09IHZhbHVlLmtleSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmdyaWREYXRhLnNwbGljZShpbmRleEdyaWREYXRhLCAxKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbm90U2F2ZWREb2N1bWVudHMoKSA6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkRGF0YS5zb21lKGRvY3VtZW50ID0+ICFkb2N1bWVudC5pZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGxpc3REb2N1bWVudHMoaXNEZWxldGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UubGlzdCh7XG4gICAgICAgICAgICBmaWx0ZXJRdWVyeTogYHNjaGVkdWxpbmdJZCBlcSAnJHt0aGlzLmFnZW5kYS5pZH0nYCxcbiAgICAgICAgICAgIHNpemU6IDEwMFxuICAgICAgICB9KVxuICAgICAgICAuc3Vic2NyaWJlKChjb250ZW50czogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdyaWREYXRhID0gaXNEZWxldGUgPyB0aGlzLmdyaWREYXRhLmZpbHRlcihpdGVtID0+ICFpdGVtLmlkKSA6IFtdO1xuXG4gICAgICAgICAgICBpZihjb250ZW50cy50b3RhbEVsZW1lbnRzID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZERhdGEucHVzaCguLi5jb250ZW50cy5jb250ZW50cyk7XG4gICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudFRvdGFsUmVjb3JkcyA9IGNvbnRlbnRzLnRvdGFsRWxlbWVudHM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRUb3RhbFJlY29yZHMgPSB0aGlzLmdyaWREYXRhLmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGhhc0VsZW1lbnRXaXRob3V0SWQgPSB0aGlzLmdyaWREYXRhLnNvbWUoaXRlbSA9PiAhaXRlbS5pZCk7XG5cbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWQgPSAhaGFzRWxlbWVudFdpdGhvdXRJZDtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBbXTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRHcmlkQ29sdW1ucygpIHtcbiAgICAgICAgbGV0IHJlc3VsdDtcblxuICAgICAgICBzd2l0Y2ggKHRoaXMud21zU3lzdGVtKSB7XG4gICAgICAgICAgICBjYXNlIFdtc1N5c3RlbS5TRU5JT1JfQ09OTkVDVDpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLndtc1NlbmlvckNvbm5lY3RJbnRlZ3JhdGlvbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBXbXNTeXN0ZW0uV0lTOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMud21zV2lzSW50ZWdyYXRpb24oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgV21zU3lzdGVtLlNFTklPUjpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLndtc1NpbHRJbnRlZ3JhdGlvbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB3bXNTZW5pb3JDb25uZWN0SW50ZWdyYXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSBbXG4gICAgICAgICAgICB7IGZpZWxkOiBcImtleVwiLCBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJ5bXMuaW50Lndtc19wdXJjaGFzZU9yZGVyXCIpIH0sXG4gICAgICAgICAgICAuLi50aGlzLmdldENvbHVtblBhcnRuZXIoKSxcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5hZGRJbnZvaWNlU2l0dWF0aW9uSWZOb3RDbGllbnRlRXh0ZXJubyhjb2x1bW5zKTtcbiAgICAgICAgcmV0dXJuIGNvbHVtbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB3bXNXaXNJbnRlZ3JhdGlvbigpIHtcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IFtcbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0Q29sdW1uSW52b2ljZUFuZGxvZ2lzdGNVbml0KCksXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuYWRkSW52b2ljZVNpdHVhdGlvbklmTm90Q2xpZW50ZUV4dGVybm8oY29sdW1ucyk7XG4gICAgICAgIHJldHVybiBjb2x1bW5zO1xuICAgIH1cblxuICAgIHByaXZhdGUgd21zU2lsdEludGVncmF0aW9uKCkge1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gW1xuICAgICAgICAgICAgeyBmaWVsZDogXCJpbnZvaWNlS2V5XCIsIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcInltcy5pbnQud21zX3JlZ2lzdGVyX2RvY3VtZW50X2ludm9pY2Vfa2V5XCIpIH0sXG4gICAgICAgICAgICAuLi50aGlzLmdldENvbHVtbkludm9pY2VBbmRsb2dpc3RjVW5pdCgpLFxuICAgICAgICAgICAgeyBmaWVsZDogXCJvd25lck5hbWVcIiwgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwieW1zLmludC53bXNfcmVnaXN0ZXJfZG9jdW1lbnRfb3duZXJfbmFtZVwiKSB9LFxuICAgICAgICAgICAgeyBmaWVsZDogXCJvd25lckRvY3VtZW50XCIsIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcInltcy5pbnQud21zX3JlZ2lzdGVyX2RvY3VtZW50X293bmVyX2RvY3VtZW50XCIpIH0sXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuYWRkSW52b2ljZVNpdHVhdGlvbklmTm90Q2xpZW50ZUV4dGVybm8oY29sdW1ucyk7XG4gICAgICAgIHJldHVybiBjb2x1bW5zO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29sdW1uaW52b2ljZUNvbmRpdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHsgZmllbGQ6IFwiaW52b2ljZUNvbmRpdGlvblwiLCBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJ5bXMuaW50Lndtc19ncmlkX2RvY3VtZW50X2ludm9pY2VfY29uZGl0aW9uXCIpIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb2x1bW5JbnZvaWNlQW5kbG9naXN0Y1VuaXQoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IGZpZWxkOiBcImludm9pY2VOdW1iZXJcIiwgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwieW1zLmludC53bXNfcmVnaXN0ZXJfZG9jdW1lbnRfaW52b2ljZV9udW1iZXJcIikgfSxcbiAgICAgICAgICAgIHsgZmllbGQ6IFwiaW52b2ljZVNlcmlhbE51bWJlclwiLCBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJ5bXMuaW50Lndtc19yZWdpc3Rlcl9kb2N1bWVudF9pbnZvaWNlX3NlcmlhbF9udW1iZXJcIikgfSxcbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0Q29sdW1uUGFydG5lcigpLFxuICAgICAgICAgICAgeyBmaWVsZDogXCJsb2dpc3RjVW5pdE5hbWVcIiwgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwieW1zLmludC53bXNfcmVnaXN0ZXJfZG9jdW1lbnRfbG9naXN0Y191bml0X25hbWVcIikgfSxcbiAgICAgICAgICAgIHsgZmllbGQ6IFwibG9naXN0Y1VuaXREb2N1bWVudFwiLCBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJ5bXMuaW50Lndtc19yZWdpc3Rlcl9kb2N1bWVudF9sb2dpc3RjX3VuaXRfZG9jdW1lbnRcIikgfSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbHVtblBhcnRuZXIoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IGZpZWxkOiBcInBhcnRuZXJOYW1lXCIsIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcInltcy5pbnQud21zX3JlZ2lzdGVyX2RvY3VtZW50X3BhcnRuZXJfbmFtZVwiKSB9LFxuICAgICAgICAgICAgeyBmaWVsZDogXCJwYXJ0bmVyRG9jdW1lbnRcIiwgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwieW1zLmludC53bXNfcmVnaXN0ZXJfZG9jdW1lbnRfcGFydG5lcl9kb2N1bWVudFwiKSB9LFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkSW52b2ljZVNpdHVhdGlvbklmTm90Q2xpZW50ZUV4dGVybm8oY29sdW1uczogYW55W10pIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQ2xpZW50ZUV4dGVybm8pIHtcbiAgICAgICAgICAgIGNvbHVtbnMucHVzaCh0aGlzLmdldENvbHVtbmludm9pY2VDb25kaXRpb24oKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaXNXbXNTZW5pb3JDb25uZWN0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy53bXNTeXN0ZW0gPT09IFdtc1N5c3RlbS5TRU5JT1JfQ09OTkVDVDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNXbXNXSVMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLndtc1N5c3RlbSA9PT0gV21zU3lzdGVtLldJUztcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNXbXNTaWx0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy53bXNTeXN0ZW0gPT09IFdtc1N5c3RlbS5TRU5JT1I7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdWNlc3NNZXNzYWdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy51dGlscy5tZXNzYWdlKFwic3VjY2Vzc1wiLCB0aGlzLnN1bW1hcnksIFwic2F2ZWRfbWVzc2FnZV9jb250ZW50XCIpO1xuICAgIH1cbn1cbiJdfQ==
@@ -4,12 +4,14 @@ import { NgModule } from "@angular/core";
4
4
  import { CommonModule } from "@angular/common";
5
5
  import { TranslateModule } from "@ngx-translate/core";
6
6
  import { ButtonModule, EmptyStateModule } from "@seniorsistemas/angular-components";
7
- import { PanelModule } from 'primeng/primeng';
7
+ import { DropdownModule, PanelModule } from 'primeng/primeng';
8
8
  import { TableModule } from "primeng/table";
9
9
  import { RegisterDocumentModule } from './register-document/register-document.module';
10
10
  import { InsertKeyModule } from './insert-key/insert-key.module';
11
11
  import { ButtonModule as PrimeButtonModule } from "primeng/button";
12
12
  import { ComponentsModule as LogisticaComponentsModule } from "@seniorsistemas/yms-components";
13
+ import { FormsModule } from '@angular/forms';
14
+ import { ExternalTenantService } from "../../entities/external-tenant/external-tenant.service";
13
15
  var DocumentGridModule = /** @class */ (function () {
14
16
  function DocumentGridModule() {
15
17
  }
@@ -18,6 +20,7 @@ var DocumentGridModule = /** @class */ (function () {
18
20
  declarations: [DocumentGridComponent],
19
21
  entryComponents: [DocumentGridComponent],
20
22
  exports: [DocumentGridComponent],
23
+ providers: [ExternalTenantService],
21
24
  imports: [
22
25
  CommonModule,
23
26
  TranslateModule,
@@ -28,11 +31,13 @@ var DocumentGridModule = /** @class */ (function () {
28
31
  InsertKeyModule,
29
32
  PrimeButtonModule,
30
33
  LogisticaComponentsModule,
31
- EmptyStateModule
34
+ EmptyStateModule,
35
+ DropdownModule,
36
+ FormsModule
32
37
  ],
33
38
  })
34
39
  ], DocumentGridModule);
35
40
  return DocumentGridModule;
36
41
  }());
37
42
  export { DocumentGridModule };
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtZ3JpZC5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMveW1zLWludGVncmF0aW9uLyIsInNvdXJjZXMiOlsic3JjL3dtcy9jb21wb25lbnRzL2RvY3VtZW50LWdyaWQvZG9jdW1lbnQtZ3JpZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLElBQUksaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLElBQUkseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQW1CL0Y7SUFBQTtJQUNBLENBQUM7SUFEWSxrQkFBa0I7UUFqQjlCLFFBQVEsQ0FBQztZQUNOLFlBQVksRUFBRSxDQUFDLHFCQUFxQixDQUFDO1lBQ3JDLGVBQWUsRUFBRSxDQUFDLHFCQUFxQixDQUFDO1lBQ3hDLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO1lBQ2hDLE9BQU8sRUFBRTtnQkFDUCxZQUFZO2dCQUNaLGVBQWU7Z0JBQ2YsWUFBWTtnQkFDWixXQUFXO2dCQUNYLFdBQVc7Z0JBQ1gsc0JBQXNCO2dCQUN0QixlQUFlO2dCQUNmLGlCQUFpQjtnQkFDakIseUJBQXlCO2dCQUN6QixnQkFBZ0I7YUFDakI7U0FDSixDQUFDO09BQ1csa0JBQWtCLENBQzlCO0lBQUQseUJBQUM7Q0FBQSxBQURELElBQ0M7U0FEWSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEb2N1bWVudEdyaWRDb21wb25lbnQgfSBmcm9tICcuL2RvY3VtZW50LWdyaWQuY29tcG9uZW50JztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUsIEVtcHR5U3RhdGVNb2R1bGUgfSBmcm9tIFwiQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgUGFuZWxNb2R1bGUgfSBmcm9tICdwcmltZW5nL3ByaW1lbmcnO1xuaW1wb3J0IHsgVGFibGVNb2R1bGUgfSBmcm9tIFwicHJpbWVuZy90YWJsZVwiO1xuaW1wb3J0IHsgUmVnaXN0ZXJEb2N1bWVudE1vZHVsZSB9IGZyb20gJy4vcmVnaXN0ZXItZG9jdW1lbnQvcmVnaXN0ZXItZG9jdW1lbnQubW9kdWxlJztcbmltcG9ydCB7IEluc2VydEtleU1vZHVsZSB9IGZyb20gJy4vaW5zZXJ0LWtleS9pbnNlcnQta2V5Lm1vZHVsZSc7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgYXMgUHJpbWVCdXR0b25Nb2R1bGUgfSBmcm9tIFwicHJpbWVuZy9idXR0b25cIjtcbmltcG9ydCB7IENvbXBvbmVudHNNb2R1bGUgYXMgTG9naXN0aWNhQ29tcG9uZW50c01vZHVsZSB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMveW1zLWNvbXBvbmVudHNcIjtcblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtEb2N1bWVudEdyaWRDb21wb25lbnRdLFxuICAgIGVudHJ5Q29tcG9uZW50czogW0RvY3VtZW50R3JpZENvbXBvbmVudF0sXG4gICAgZXhwb3J0czogW0RvY3VtZW50R3JpZENvbXBvbmVudF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgICAgQnV0dG9uTW9kdWxlLFxuICAgICAgUGFuZWxNb2R1bGUsXG4gICAgICBUYWJsZU1vZHVsZSxcbiAgICAgIFJlZ2lzdGVyRG9jdW1lbnRNb2R1bGUsXG4gICAgICBJbnNlcnRLZXlNb2R1bGUsXG4gICAgICBQcmltZUJ1dHRvbk1vZHVsZSxcbiAgICAgIExvZ2lzdGljYUNvbXBvbmVudHNNb2R1bGUsXG4gICAgICBFbXB0eVN0YXRlTW9kdWxlXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRHcmlkTW9kdWxlIHtcbn1cbiJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtZ3JpZC5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMveW1zLWludGVncmF0aW9uLyIsInNvdXJjZXMiOlsic3JjL3dtcy9jb21wb25lbnRzL2RvY3VtZW50LWdyaWQvZG9jdW1lbnQtZ3JpZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxJQUFJLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixJQUFJLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBcUIvRjtJQUFBO0lBQ0EsQ0FBQztJQURZLGtCQUFrQjtRQXBCOUIsUUFBUSxDQUFDO1lBQ04sWUFBWSxFQUFFLENBQUMscUJBQXFCLENBQUM7WUFDckMsZUFBZSxFQUFFLENBQUMscUJBQXFCLENBQUM7WUFDeEMsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUM7WUFDaEMsU0FBUyxFQUFFLENBQUMscUJBQXFCLENBQUM7WUFDbEMsT0FBTyxFQUFFO2dCQUNQLFlBQVk7Z0JBQ1osZUFBZTtnQkFDZixZQUFZO2dCQUNaLFdBQVc7Z0JBQ1gsV0FBVztnQkFDWCxzQkFBc0I7Z0JBQ3RCLGVBQWU7Z0JBQ2YsaUJBQWlCO2dCQUNqQix5QkFBeUI7Z0JBQ3pCLGdCQUFnQjtnQkFDaEIsY0FBYztnQkFDZCxXQUFXO2FBQ1o7U0FDSixDQUFDO09BQ1csa0JBQWtCLENBQzlCO0lBQUQseUJBQUM7Q0FBQSxBQURELElBQ0M7U0FEWSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEb2N1bWVudEdyaWRDb21wb25lbnQgfSBmcm9tICcuL2RvY3VtZW50LWdyaWQuY29tcG9uZW50JztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUsIEVtcHR5U3RhdGVNb2R1bGUgfSBmcm9tIFwiQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgRHJvcGRvd25Nb2R1bGUsIFBhbmVsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9wcmltZW5nJztcbmltcG9ydCB7IFRhYmxlTW9kdWxlIH0gZnJvbSBcInByaW1lbmcvdGFibGVcIjtcbmltcG9ydCB7IFJlZ2lzdGVyRG9jdW1lbnRNb2R1bGUgfSBmcm9tICcuL3JlZ2lzdGVyLWRvY3VtZW50L3JlZ2lzdGVyLWRvY3VtZW50Lm1vZHVsZSc7XG5pbXBvcnQgeyBJbnNlcnRLZXlNb2R1bGUgfSBmcm9tICcuL2luc2VydC1rZXkvaW5zZXJ0LWtleS5tb2R1bGUnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIGFzIFByaW1lQnV0dG9uTW9kdWxlIH0gZnJvbSBcInByaW1lbmcvYnV0dG9uXCI7XG5pbXBvcnQgeyBDb21wb25lbnRzTW9kdWxlIGFzIExvZ2lzdGljYUNvbXBvbmVudHNNb2R1bGUgfSBmcm9tIFwiQHNlbmlvcnNpc3RlbWFzL3ltcy1jb21wb25lbnRzXCI7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEV4dGVybmFsVGVuYW50U2VydmljZSB9IGZyb20gXCIuLi8uLi9lbnRpdGllcy9leHRlcm5hbC10ZW5hbnQvZXh0ZXJuYWwtdGVuYW50LnNlcnZpY2VcIjtcbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbRG9jdW1lbnRHcmlkQ29tcG9uZW50XSxcbiAgICBlbnRyeUNvbXBvbmVudHM6IFtEb2N1bWVudEdyaWRDb21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtEb2N1bWVudEdyaWRDb21wb25lbnRdLFxuICAgIHByb3ZpZGVyczogW0V4dGVybmFsVGVuYW50U2VydmljZV0sXG4gICAgaW1wb3J0czogW1xuICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgICAgQnV0dG9uTW9kdWxlLFxuICAgICAgUGFuZWxNb2R1bGUsXG4gICAgICBUYWJsZU1vZHVsZSxcbiAgICAgIFJlZ2lzdGVyRG9jdW1lbnRNb2R1bGUsXG4gICAgICBJbnNlcnRLZXlNb2R1bGUsXG4gICAgICBQcmltZUJ1dHRvbk1vZHVsZSxcbiAgICAgIExvZ2lzdGljYUNvbXBvbmVudHNNb2R1bGUsXG4gICAgICBFbXB0eVN0YXRlTW9kdWxlLFxuICAgICAgRHJvcGRvd25Nb2R1bGUsXG4gICAgICBGb3Jtc01vZHVsZVxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIERvY3VtZW50R3JpZE1vZHVsZSB7XG59XG4iXX0=