@senior-gestao-pessoas/payroll-core 9.5.0-fbdcba79-4ef6-4255-9628-f5e2e790112a → 9.5.0-feature-hcmgdp-11492-21838e72
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/senior-gestao-pessoas-payroll-core.umd.js +465 -916
- package/bundles/senior-gestao-pessoas-payroll-core.umd.js.map +1 -1
- package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js +1 -16
- package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js.map +1 -1
- package/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.d.ts +43 -10
- package/components/historical-pix-account/historical-pix-account.component.d.ts +10 -40
- package/components/historical-pix-account/historical-pix-account.service.d.ts +0 -1
- package/components/historical-pix-account-list/historical-pix-account-list.component.d.ts +2 -9
- package/components/utils/format-utils/format-utils.service.d.ts +3 -30
- package/esm2015/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.js +202 -34
- package/esm2015/components/historical-pix-account/historical-pix-account.component.js +29 -262
- package/esm2015/components/historical-pix-account/historical-pix-account.module.js +1 -5
- package/esm2015/components/historical-pix-account/historical-pix-account.service.js +1 -8
- package/esm2015/components/historical-pix-account-list/historical-pix-account-list.component.js +6 -44
- package/esm2015/components/utils/format-utils/format-utils.service.js +5 -88
- package/esm2015/public_api.js +1 -2
- package/esm2015/senior-gestao-pessoas-payroll-core.js +2 -3
- package/esm5/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.js +217 -58
- package/esm5/components/historical-pix-account/historical-pix-account.component.js +58 -304
- package/esm5/components/historical-pix-account/historical-pix-account.module.js +1 -5
- package/esm5/components/historical-pix-account/historical-pix-account.service.js +1 -8
- package/esm5/components/historical-pix-account-list/historical-pix-account-list.component.js +6 -49
- package/esm5/components/utils/format-utils/format-utils.service.js +5 -88
- package/esm5/public_api.js +1 -2
- package/esm5/senior-gestao-pessoas-payroll-core.js +2 -3
- package/fesm2015/senior-gestao-pessoas-payroll-core.js +500 -911
- package/fesm2015/senior-gestao-pessoas-payroll-core.js.map +1 -1
- package/fesm5/senior-gestao-pessoas-payroll-core.js +462 -912
- package/fesm5/senior-gestao-pessoas-payroll-core.js.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +0 -1
- package/senior-gestao-pessoas-payroll-core.d.ts +1 -2
- package/senior-gestao-pessoas-payroll-core.metadata.json +1 -1
- package/components/historical-pix-account/historical-pix-account-base.d.ts +0 -27
- package/components/shared/index.d.ts +0 -1
- package/components/shared/shared-state.service.d.ts +0 -24
- package/esm2015/components/historical-pix-account/historical-pix-account-base.js +0 -173
- package/esm2015/components/shared/index.js +0 -2
- package/esm2015/components/shared/shared-state.service.js +0 -54
- package/esm5/components/historical-pix-account/historical-pix-account-base.js +0 -186
- package/esm5/components/shared/index.js +0 -2
- package/esm5/components/shared/shared-state.service.js +0 -55
|
@@ -1,76 +1,60 @@
|
|
|
1
1
|
import * as tslib_1 from "tslib";
|
|
2
2
|
import { Component, OnInit, ViewChild, Input, ChangeDetectorRef, AfterViewInit, OnDestroy, EventEmitter, Output, OnChanges, SimpleChanges, } from "@angular/core";
|
|
3
|
-
import { FormGroup, FormBuilder
|
|
3
|
+
import { FormGroup, FormBuilder } from "@angular/forms";
|
|
4
4
|
import { TranslateService } from "@ngx-translate/core";
|
|
5
5
|
import { CustomFieldsComponent } from "@seniorsistemas/angular-components";
|
|
6
6
|
import { compareValues, isValid, mountCustomToSave } from "../utils/helpers";
|
|
7
7
|
import { DirectionEnumeration } from "../../core/enums";
|
|
8
8
|
import { Subject } from "rxjs";
|
|
9
|
+
import { MessageService } from "primeng/api";
|
|
9
10
|
import { FormatUtilsService } from "../utils/format-utils/format-utils.service";
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
_this.isEditModeActive = new EventEmitter();
|
|
33
|
-
_this.isDeleteModeActive = new EventEmitter();
|
|
34
|
-
_this.isValidChangeForm = new EventEmitter();
|
|
35
|
-
_this.reloadOnlyOnEdit = new EventEmitter();
|
|
36
|
-
_this.listFromApp = [];
|
|
37
|
-
_this.visibleChange = new EventEmitter();
|
|
38
|
-
_this.ngUnsubscribe = new Subject();
|
|
39
|
-
_this.orderBy = {
|
|
11
|
+
var HistoricalPixAccountComponent = /** @class */ (function () {
|
|
12
|
+
function HistoricalPixAccountComponent(translateService, cd, formBuilder, messageService) {
|
|
13
|
+
var _this = this;
|
|
14
|
+
this.translateService = translateService;
|
|
15
|
+
this.cd = cd;
|
|
16
|
+
this.formBuilder = formBuilder;
|
|
17
|
+
this.messageService = messageService;
|
|
18
|
+
this.recordByRow = 1;
|
|
19
|
+
this.showDateChange = false;
|
|
20
|
+
this.isEditMode = false;
|
|
21
|
+
this.isViewMode = false;
|
|
22
|
+
this.withSideBar = true;
|
|
23
|
+
this.defaultCpfNumber = null;
|
|
24
|
+
this.listDataReciever = [];
|
|
25
|
+
this.showButtonEdit = false;
|
|
26
|
+
this.isViewModeActive = new EventEmitter();
|
|
27
|
+
this.isEditModeActive = new EventEmitter();
|
|
28
|
+
this.isDeleteModeActive = new EventEmitter();
|
|
29
|
+
this.listFromApp = [];
|
|
30
|
+
this.visibleChange = new EventEmitter();
|
|
31
|
+
this.ngUnsubscribe = new Subject();
|
|
32
|
+
this.orderBy = {
|
|
40
33
|
field: "dateChange",
|
|
41
34
|
direction: DirectionEnumeration.DESC,
|
|
42
35
|
};
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
_this.hasRecordsPix = true;
|
|
52
|
-
_this.hideFields = _this.sharedStateService.hideField$;
|
|
53
|
-
_this.suggestions = [];
|
|
54
|
-
_this.formGroupByRow = {};
|
|
55
|
-
_this.cols = [
|
|
36
|
+
this.pixAccountItemInput = {};
|
|
37
|
+
this.totalRecords = 0;
|
|
38
|
+
this.actionLabel = this.translateService.instant("hcm.payroll.entries_query_actions_total_title");
|
|
39
|
+
this.loading = true;
|
|
40
|
+
this.listData = [];
|
|
41
|
+
this.listDataNoPage = [];
|
|
42
|
+
this.permitsEditBankAccount = false;
|
|
43
|
+
this.cols = [
|
|
56
44
|
{
|
|
57
|
-
label:
|
|
45
|
+
label: this.translateService.instant("hcm.payroll.employees_addition_pix_key_type"),
|
|
58
46
|
field: "pixKeyType",
|
|
59
47
|
},
|
|
60
48
|
{
|
|
61
|
-
label:
|
|
49
|
+
label: this.translateService.instant("hcm.payroll.employees_addition_pix_key"),
|
|
62
50
|
field: "pixKey",
|
|
63
51
|
},
|
|
64
52
|
{
|
|
65
|
-
label:
|
|
53
|
+
label: this.translateService.instant("hcm.payroll.historical_pix_account_label_percentage"),
|
|
66
54
|
field: "percentage",
|
|
67
55
|
},
|
|
68
|
-
{
|
|
69
|
-
label: _this.translateService.instant("hcm.payroll.movimentation_generic_action"),
|
|
70
|
-
field: "actions",
|
|
71
|
-
}
|
|
72
56
|
];
|
|
73
|
-
|
|
57
|
+
this.actions = function (rowData, key) {
|
|
74
58
|
if (rowData === void 0) { rowData = {}; }
|
|
75
59
|
return [
|
|
76
60
|
{
|
|
@@ -88,7 +72,7 @@ var HistoricalPixAccountComponent = /** @class */ (function (_super) {
|
|
|
88
72
|
},
|
|
89
73
|
},
|
|
90
74
|
{
|
|
91
|
-
visible: !!(!_this.isEditMode && _this.withSideBar),
|
|
75
|
+
visible: !!((!_this.isEditMode && _this.withSideBar) || _this.showButtonEdit),
|
|
92
76
|
label: _this.translateService.instant("hcm.payroll.edit"),
|
|
93
77
|
command: function () {
|
|
94
78
|
if (_this.isAllowToEditHistorical) {
|
|
@@ -107,7 +91,7 @@ var HistoricalPixAccountComponent = /** @class */ (function (_super) {
|
|
|
107
91
|
},
|
|
108
92
|
},
|
|
109
93
|
{
|
|
110
|
-
visible: !_this.isEditMode
|
|
94
|
+
visible: !_this.isEditMode,
|
|
111
95
|
label: _this.translateService.instant("hcm.payroll.delete"),
|
|
112
96
|
command: function () {
|
|
113
97
|
if (_this.isAllowToDeleteHistorical) {
|
|
@@ -125,51 +109,17 @@ var HistoricalPixAccountComponent = /** @class */ (function (_super) {
|
|
|
125
109
|
},
|
|
126
110
|
];
|
|
127
111
|
};
|
|
128
|
-
|
|
129
|
-
return _this;
|
|
112
|
+
this.createFormGroup();
|
|
130
113
|
}
|
|
131
114
|
HistoricalPixAccountComponent.prototype.ngOnInit = function () {
|
|
132
|
-
var _this = this;
|
|
133
|
-
this.showFields = this.showField;
|
|
134
115
|
this.formGroup.setControl(this.fieldFormGroup, this.historicalPixAccountList);
|
|
135
|
-
this.sharedStateService.showButton$.subscribe(function (value) {
|
|
136
|
-
_this.showButtonView = value;
|
|
137
|
-
});
|
|
138
|
-
this.sharedStateService.showEditMode$.subscribe(function (value) {
|
|
139
|
-
_this.showEditMode = value;
|
|
140
|
-
_this.isEditModeForSave = value;
|
|
141
|
-
});
|
|
142
|
-
this.sharedStateService.shouldReloadWindowOnlyEditMode$.subscribe(function (value) {
|
|
143
|
-
_this.reloadOnlyOnEdit.emit(value);
|
|
144
|
-
});
|
|
145
|
-
this.sharedStateService.hideBtnAddForViewMode$.subscribe(function (value) {
|
|
146
|
-
_this.hideBtnAddForViewMode = value;
|
|
147
|
-
});
|
|
148
|
-
this.sharedStateService.activeValidatorsOnEditModalOpen$
|
|
149
|
-
.subscribe(function () {
|
|
150
|
-
Object.values(_this.formGroupByRow).forEach(function (fg) {
|
|
151
|
-
Object.values(fg.controls).forEach(function (control) {
|
|
152
|
-
control.markAsTouched();
|
|
153
|
-
control.updateValueAndValidity();
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
_this.emitFormValidity();
|
|
157
|
-
});
|
|
158
116
|
};
|
|
159
117
|
HistoricalPixAccountComponent.prototype.ngOnChanges = function (changes) {
|
|
160
118
|
if (changes['listDataReciever'] && changes['listDataReciever'].currentValue) {
|
|
161
119
|
this.listFromApp = changes['listDataReciever'].currentValue;
|
|
162
120
|
}
|
|
163
|
-
if (changes['
|
|
164
|
-
this.
|
|
165
|
-
}
|
|
166
|
-
if (changes['addExistentHistoricData'] && changes['addExistentHistoricData'].currentValue) {
|
|
167
|
-
var newData = changes['addExistentHistoricData'].currentValue;
|
|
168
|
-
this.rebuildFormGroupMap(newData);
|
|
169
|
-
}
|
|
170
|
-
if (changes['isEditMode']) {
|
|
171
|
-
this.isEditMode = changes['isEditMode'].currentValue;
|
|
172
|
-
this.cd.detectChanges();
|
|
121
|
+
if (changes['showButtonEdit'] && changes['showButtonEdit'].currentValue) {
|
|
122
|
+
this.permitsEditBankAccount = changes['showButtonEdit'].currentValue;
|
|
173
123
|
}
|
|
174
124
|
};
|
|
175
125
|
HistoricalPixAccountComponent.prototype.createFormGroup = function () {
|
|
@@ -184,98 +134,6 @@ var HistoricalPixAccountComponent = /** @class */ (function (_super) {
|
|
|
184
134
|
HistoricalPixAccountComponent.prototype.ngAfterViewInit = function () {
|
|
185
135
|
this.cd.detectChanges();
|
|
186
136
|
};
|
|
187
|
-
HistoricalPixAccountComponent.prototype.emitFormValidity = function () {
|
|
188
|
-
var allValid = Object.values(this.formGroupByRow).every(function (fg) {
|
|
189
|
-
fg.updateValueAndValidity();
|
|
190
|
-
return fg.valid;
|
|
191
|
-
});
|
|
192
|
-
this.isValidChangeForm.emit(allValid);
|
|
193
|
-
};
|
|
194
|
-
HistoricalPixAccountComponent.prototype.filterPixKeyType = function (event) {
|
|
195
|
-
var _this = this;
|
|
196
|
-
var query = event.query;
|
|
197
|
-
this.service.enumQuery().subscribe(function (response) {
|
|
198
|
-
var pixKeyTypeEnum = response.results.find(function (result) { return result.enumName === 'PixKeyType'; });
|
|
199
|
-
if (pixKeyTypeEnum) {
|
|
200
|
-
_this.suggestions = pixKeyTypeEnum.items.filter(function (item) {
|
|
201
|
-
return item.value.toLowerCase().includes(query.toLowerCase());
|
|
202
|
-
});
|
|
203
|
-
}
|
|
204
|
-
else {
|
|
205
|
-
_this.suggestions = [];
|
|
206
|
-
}
|
|
207
|
-
});
|
|
208
|
-
};
|
|
209
|
-
HistoricalPixAccountComponent.prototype.createPixRowFormGroup = function () {
|
|
210
|
-
return this.formBuilder.group({
|
|
211
|
-
pixKeyType: [null, Validators.required],
|
|
212
|
-
pixKey: [null],
|
|
213
|
-
percentage: [0, Validators.compose(tslib_1.__spread(this.initialValidatorOfPercentage, [
|
|
214
|
-
Validators.max(this.maxValuePercentage),
|
|
215
|
-
]))]
|
|
216
|
-
});
|
|
217
|
-
};
|
|
218
|
-
HistoricalPixAccountComponent.prototype.onPixKeyInput = function (event, index) {
|
|
219
|
-
var inputValue = event.target.value;
|
|
220
|
-
var inputRawValue = inputValue.replace(/\D/g, '');
|
|
221
|
-
var form = this.formGroupByRow[index];
|
|
222
|
-
var pixKeyControl = form.get('pixKey');
|
|
223
|
-
if (pixKeyControl) {
|
|
224
|
-
pixKeyControl.setValue(inputRawValue, { emitEvent: false });
|
|
225
|
-
pixKeyControl.markAsDirty();
|
|
226
|
-
pixKeyControl.updateValueAndValidity();
|
|
227
|
-
}
|
|
228
|
-
this.setPixKeyValidators(true, form);
|
|
229
|
-
this.emitFormValidity();
|
|
230
|
-
};
|
|
231
|
-
HistoricalPixAccountComponent.prototype.onBlurPixCpfAndCnpj = function (index) {
|
|
232
|
-
var form = this.formGroupByRow[index];
|
|
233
|
-
var pixKeyControl = form.get('pixKey');
|
|
234
|
-
var pixKeyTypeControl = form.get('pixKeyType');
|
|
235
|
-
if (!pixKeyControl || !pixKeyTypeControl)
|
|
236
|
-
return;
|
|
237
|
-
var currentValue = pixKeyControl.value;
|
|
238
|
-
var pixKeyType = pixKeyTypeControl.value.key;
|
|
239
|
-
var rawValue = (currentValue || '').replace(/\D/g, '');
|
|
240
|
-
pixKeyControl.setValue(rawValue, { emitEvent: false });
|
|
241
|
-
if (pixKeyControl.valid) {
|
|
242
|
-
form.patchValue({
|
|
243
|
-
pixKeyFormatted: FormatUtilsService.getFormattedSubscriptionNumber(rawValue, pixKeyType)
|
|
244
|
-
});
|
|
245
|
-
}
|
|
246
|
-
this.emitFormValidity();
|
|
247
|
-
};
|
|
248
|
-
HistoricalPixAccountComponent.prototype.getFormattedPixKey = function (type, value) {
|
|
249
|
-
return FormatUtilsService.getFormattedSubscriptionNumber(value, type);
|
|
250
|
-
};
|
|
251
|
-
HistoricalPixAccountComponent.prototype.syncPixDataToParentForm = function () {
|
|
252
|
-
if (!this.isEditModeForSave)
|
|
253
|
-
return;
|
|
254
|
-
var values = Object.values(this.formGroupByRow).map(function (fg) {
|
|
255
|
-
var value = fg.getRawValue();
|
|
256
|
-
var pixKeyType = value.pixKeyType.key;
|
|
257
|
-
if (pixKeyType === 'CPF' || pixKeyType === 'CNPJ') {
|
|
258
|
-
value.pixKey = (value.pixKey || '').replace(/[.\-\/]/g, '');
|
|
259
|
-
}
|
|
260
|
-
else if (pixKeyType === 'TELEPHONE') {
|
|
261
|
-
value.pixKey = (value.pixKey || '').replace(/[()\s\-]/g, '');
|
|
262
|
-
}
|
|
263
|
-
return value;
|
|
264
|
-
});
|
|
265
|
-
this.formGroup
|
|
266
|
-
.get(this.fieldFormGroup)
|
|
267
|
-
.get('historicalPixAccountList')
|
|
268
|
-
.setValue(values);
|
|
269
|
-
this.emitFormValidity();
|
|
270
|
-
};
|
|
271
|
-
HistoricalPixAccountComponent.prototype.syncResetPixFormToParent = function () {
|
|
272
|
-
this.formGroupByRow = {};
|
|
273
|
-
this.historicalPixAccountList.reset();
|
|
274
|
-
this.historicalPixAccountList.get('historicalPixAccountList').setValue([]);
|
|
275
|
-
if (this.addExistentHistoricData.length) {
|
|
276
|
-
this.rebuildFormGroupMap(this.addExistentHistoricData);
|
|
277
|
-
}
|
|
278
|
-
};
|
|
279
137
|
HistoricalPixAccountComponent.prototype.onLazyLoad = function (event) {
|
|
280
138
|
var _this = this;
|
|
281
139
|
var first = event && event.first ? event.first : 0;
|
|
@@ -303,7 +161,6 @@ var HistoricalPixAccountComponent = /** @class */ (function (_super) {
|
|
|
303
161
|
this.refreshCssInIE11();
|
|
304
162
|
}
|
|
305
163
|
this.loading = false;
|
|
306
|
-
this.cd.detectChanges();
|
|
307
164
|
};
|
|
308
165
|
/**
|
|
309
166
|
* Um Bug de CSS que acontece nas linhas da tabela, que resolve só atualizando qualquer parte do CSS da pagina.
|
|
@@ -321,68 +178,12 @@ var HistoricalPixAccountComponent = /** @class */ (function (_super) {
|
|
|
321
178
|
this.pixAccountItemInput = {};
|
|
322
179
|
this.visible = true;
|
|
323
180
|
};
|
|
324
|
-
HistoricalPixAccountComponent.prototype.
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
};
|
|
330
|
-
var index = this.addExistentHistoricData.length;
|
|
331
|
-
this.addExistentHistoricData = tslib_1.__spread(this.addExistentHistoricData, [
|
|
332
|
-
newItem
|
|
333
|
-
]);
|
|
334
|
-
this.formGroupByRow[index] = this.createPixRowFormGroup();
|
|
335
|
-
this.setValidatorsAccordingList(this.addExistentHistoricData, index, true);
|
|
336
|
-
this.emitFormValidity();
|
|
337
|
-
};
|
|
338
|
-
HistoricalPixAccountComponent.prototype.deletePix = function (index) {
|
|
339
|
-
if (this.dataListPix.editingCell) {
|
|
340
|
-
this.dataListPix.editingCell = null;
|
|
341
|
-
}
|
|
342
|
-
this.addExistentHistoricData = this.addExistentHistoricData.filter(function (_, i) { return i !== index; });
|
|
343
|
-
this.rebuildFormGroupMap(this.addExistentHistoricData);
|
|
344
|
-
this.emitFormValidity();
|
|
345
|
-
};
|
|
346
|
-
HistoricalPixAccountComponent.prototype.rebuildFormGroupMap = function (data) {
|
|
347
|
-
var _this = this;
|
|
348
|
-
this.formGroupByRow = {};
|
|
349
|
-
data.forEach(function (item, index) {
|
|
350
|
-
var form = _this.createPixRowFormGroup();
|
|
351
|
-
var pixKeyType = item.pixKeyType.key;
|
|
352
|
-
var pixKeyRaw = item.pixKey;
|
|
353
|
-
if (pixKeyType === 'CPF' || pixKeyType === 'CNPJ') {
|
|
354
|
-
item.pixKey = FormatUtilsService.getFormattedSubscriptionNumber(pixKeyRaw, pixKeyType);
|
|
355
|
-
}
|
|
356
|
-
if (pixKeyType === 'TELEPHONE') {
|
|
357
|
-
item.pixKey = FormatUtilsService.getFormattedTelephoneNumber(pixKeyRaw);
|
|
358
|
-
}
|
|
359
|
-
form.patchValue(item);
|
|
360
|
-
_this.formGroupByRow[index] = form;
|
|
361
|
-
_this.pixKeyType = pixKeyType;
|
|
362
|
-
_this.setPixKeyValidators(true, form);
|
|
363
|
-
_this.setValidatorsAccordingList(data, index, _this.isEditMode);
|
|
364
|
-
var listValues = data
|
|
365
|
-
.filter(function (_, i) { return i !== index; })
|
|
366
|
-
.map(function (row) { return row.percentage ? parseFloat(row.percentage) : 0; });
|
|
367
|
-
_this.validatePercentageValid(listValues, form);
|
|
368
|
-
});
|
|
369
|
-
this.emitFormValidity();
|
|
370
|
-
};
|
|
371
|
-
HistoricalPixAccountComponent.prototype.onPixKeyTypeChange = function (item, index) {
|
|
372
|
-
var _this = this;
|
|
373
|
-
var form = this.formGroupByRow[index];
|
|
374
|
-
this.onChangePixKeyType(item, form);
|
|
375
|
-
this.addExistentHistoricData[index].pixKey = '';
|
|
376
|
-
setTimeout(function () {
|
|
377
|
-
if (_this.dataListPix.editingCell) {
|
|
378
|
-
_this.dataListPix.editingCell = null;
|
|
379
|
-
}
|
|
181
|
+
HistoricalPixAccountComponent.prototype.isNotAllowMessage = function () {
|
|
182
|
+
this.messageService.add({
|
|
183
|
+
severity: "error",
|
|
184
|
+
summary: this.translateService.instant("hcm.payroll.error"),
|
|
185
|
+
detail: this.translateService.instant("hcm.payroll.permission_error_not_allowed"),
|
|
380
186
|
});
|
|
381
|
-
this.cd.detectChanges();
|
|
382
|
-
};
|
|
383
|
-
HistoricalPixAccountComponent.prototype.onPixKeyTypeClear = function (index) {
|
|
384
|
-
var form = this.formGroupByRow[index];
|
|
385
|
-
this.onClearPixKeyType(form);
|
|
386
187
|
};
|
|
387
188
|
HistoricalPixAccountComponent.prototype.deleteAnnuityItem = function (index) {
|
|
388
189
|
var newlist = tslib_1.__spread(this.getHistoricalPixAccountList());
|
|
@@ -444,23 +245,6 @@ var HistoricalPixAccountComponent = /** @class */ (function (_super) {
|
|
|
444
245
|
this.msgTotalLimitByPercentage = null;
|
|
445
246
|
}
|
|
446
247
|
};
|
|
447
|
-
HistoricalPixAccountComponent.prototype.onSyncValue = function (field, index) {
|
|
448
|
-
if (this.formGroupByRow &&
|
|
449
|
-
this.formGroupByRow[index] &&
|
|
450
|
-
this.formGroupByRow[index].get(field)) {
|
|
451
|
-
var control = this.formGroupByRow[index].get(field);
|
|
452
|
-
var value = control.value;
|
|
453
|
-
this.addExistentHistoricData[index][field] = value;
|
|
454
|
-
control.markAsDirty();
|
|
455
|
-
control.markAsTouched();
|
|
456
|
-
control.updateValueAndValidity();
|
|
457
|
-
var currentList = this.addExistentHistoricData.map(function (item, i) {
|
|
458
|
-
return i === index ? 0 : item.percentage;
|
|
459
|
-
});
|
|
460
|
-
this.validatePercentageValid(currentList, this.formGroupByRow[index]);
|
|
461
|
-
this.emitFormValidity();
|
|
462
|
-
}
|
|
463
|
-
};
|
|
464
248
|
Object.defineProperty(HistoricalPixAccountComponent.prototype, "scopedActions", {
|
|
465
249
|
get: function () {
|
|
466
250
|
return this.actions.bind(this);
|
|
@@ -527,20 +311,9 @@ var HistoricalPixAccountComponent = /** @class */ (function (_super) {
|
|
|
527
311
|
set: function (value) {
|
|
528
312
|
this._visible = value;
|
|
529
313
|
this.visibleChange.emit(this.visible);
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
});
|
|
534
|
-
Object.defineProperty(HistoricalPixAccountComponent.prototype, "paramsForm", {
|
|
535
|
-
set: function (value) {
|
|
536
|
-
this._paramsForm = value;
|
|
537
|
-
},
|
|
538
|
-
enumerable: true,
|
|
539
|
-
configurable: true
|
|
540
|
-
});
|
|
541
|
-
Object.defineProperty(HistoricalPixAccountComponent.prototype, "defaultCpfNumber", {
|
|
542
|
-
set: function (value) {
|
|
543
|
-
this._defaultCpfNumber = value;
|
|
314
|
+
if (!value) {
|
|
315
|
+
this.pixAccountItemInput = {};
|
|
316
|
+
}
|
|
544
317
|
},
|
|
545
318
|
enumerable: true,
|
|
546
319
|
configurable: true
|
|
@@ -592,15 +365,11 @@ var HistoricalPixAccountComponent = /** @class */ (function (_super) {
|
|
|
592
365
|
{ type: TranslateService },
|
|
593
366
|
{ type: ChangeDetectorRef },
|
|
594
367
|
{ type: FormBuilder },
|
|
595
|
-
{ type:
|
|
596
|
-
{ type: HistoricalPixAccountService }
|
|
368
|
+
{ type: MessageService }
|
|
597
369
|
]; };
|
|
598
370
|
tslib_1.__decorate([
|
|
599
371
|
ViewChild(CustomFieldsComponent, { static: false })
|
|
600
372
|
], HistoricalPixAccountComponent.prototype, "customFields", void 0);
|
|
601
|
-
tslib_1.__decorate([
|
|
602
|
-
ViewChild('dataListPix', { static: false })
|
|
603
|
-
], HistoricalPixAccountComponent.prototype, "dataListPix", void 0);
|
|
604
373
|
tslib_1.__decorate([
|
|
605
374
|
Input()
|
|
606
375
|
], HistoricalPixAccountComponent.prototype, "formGroup", void 0);
|
|
@@ -642,22 +411,19 @@ var HistoricalPixAccountComponent = /** @class */ (function (_super) {
|
|
|
642
411
|
], HistoricalPixAccountComponent.prototype, "withSideBar", void 0);
|
|
643
412
|
tslib_1.__decorate([
|
|
644
413
|
Input()
|
|
645
|
-
], HistoricalPixAccountComponent.prototype, "
|
|
414
|
+
], HistoricalPixAccountComponent.prototype, "paramsForm", void 0);
|
|
646
415
|
tslib_1.__decorate([
|
|
647
416
|
Input()
|
|
648
|
-
], HistoricalPixAccountComponent.prototype, "
|
|
417
|
+
], HistoricalPixAccountComponent.prototype, "defaultCpfNumber", void 0);
|
|
649
418
|
tslib_1.__decorate([
|
|
650
419
|
Input()
|
|
651
|
-
], HistoricalPixAccountComponent.prototype, "
|
|
652
|
-
tslib_1.__decorate([
|
|
653
|
-
Input()
|
|
654
|
-
], HistoricalPixAccountComponent.prototype, "getListPixAccount", void 0);
|
|
420
|
+
], HistoricalPixAccountComponent.prototype, "permission", void 0);
|
|
655
421
|
tslib_1.__decorate([
|
|
656
422
|
Input()
|
|
657
|
-
], HistoricalPixAccountComponent.prototype, "
|
|
423
|
+
], HistoricalPixAccountComponent.prototype, "listDataReciever", void 0);
|
|
658
424
|
tslib_1.__decorate([
|
|
659
425
|
Input()
|
|
660
|
-
], HistoricalPixAccountComponent.prototype, "
|
|
426
|
+
], HistoricalPixAccountComponent.prototype, "showButtonEdit", void 0);
|
|
661
427
|
tslib_1.__decorate([
|
|
662
428
|
Output()
|
|
663
429
|
], HistoricalPixAccountComponent.prototype, "isViewModeActive", void 0);
|
|
@@ -667,12 +433,6 @@ var HistoricalPixAccountComponent = /** @class */ (function (_super) {
|
|
|
667
433
|
tslib_1.__decorate([
|
|
668
434
|
Output()
|
|
669
435
|
], HistoricalPixAccountComponent.prototype, "isDeleteModeActive", void 0);
|
|
670
|
-
tslib_1.__decorate([
|
|
671
|
-
Output()
|
|
672
|
-
], HistoricalPixAccountComponent.prototype, "isValidChangeForm", void 0);
|
|
673
|
-
tslib_1.__decorate([
|
|
674
|
-
Output()
|
|
675
|
-
], HistoricalPixAccountComponent.prototype, "reloadOnlyOnEdit", void 0);
|
|
676
436
|
tslib_1.__decorate([
|
|
677
437
|
Input()
|
|
678
438
|
], HistoricalPixAccountComponent.prototype, "dateChange", null);
|
|
@@ -685,21 +445,15 @@ var HistoricalPixAccountComponent = /** @class */ (function (_super) {
|
|
|
685
445
|
tslib_1.__decorate([
|
|
686
446
|
Input()
|
|
687
447
|
], HistoricalPixAccountComponent.prototype, "visible", null);
|
|
688
|
-
tslib_1.__decorate([
|
|
689
|
-
Input()
|
|
690
|
-
], HistoricalPixAccountComponent.prototype, "paramsForm", null);
|
|
691
|
-
tslib_1.__decorate([
|
|
692
|
-
Input()
|
|
693
|
-
], HistoricalPixAccountComponent.prototype, "defaultCpfNumber", null);
|
|
694
448
|
HistoricalPixAccountComponent = tslib_1.__decorate([
|
|
695
449
|
Component({
|
|
696
450
|
// tslint:disable-next-line:component-selector
|
|
697
451
|
selector: "c-historical-pix-account",
|
|
698
|
-
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 [showField]=\"showFields\"\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<div class=\"ui-g-1\" *ngIf=\"withSideBar && !isEditMode && !hideBtnAddForViewMode\">\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 *ngIf=\"showFields || !showEditMode || !(hideFields | async)\" 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 *ngIf=\"showButtonView\" [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 *ngIf=\"showButtonView\" 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 && showButtonView\">\n <s-button id=\"table-admission-btn-actions-{{key}}\"\n *ngIf=\"!isViewMode && 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=\"!isViewMode && 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\n<!-- Template exlusivo para edi\u00E7\u00E3o de pix via modal-->\n<div *ngIf=\"!withSideBar && showEditMode && (hideFields | async)\" class=\"ui-g-12\">\n <!-- Bot\u00E3o Adicionar -->\n <div class=\"ui-g\">\n <div class=\"ui-g-12\">\n <s-button\n id=\"btn-save\"\n label=\"{{ 'hcm.payroll.historical_pix_account_add' | translate}}\"\n priority=\"primary\"\n (onClick)=\"addPix()\">\n </s-button>\n </div>\n </div>\n\n <!-- Tabela -->\n <p-table #dataListPix sortField=\"percentage\"\n [columns]=\"cols\"\n [value]=\"addExistentHistoricData\"\n [pageLinks]=\"3\"\n [paginator]=\"true\"\n [responsive]=\"true\"\n [rows]=\"10\"\n [resetPageOnSort]=\"false\"\n [tableStyle]=\"{'margin-top': '2rem'}\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngFor=\"let col of cols\">\n {{ col.label }}\n </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-item let-rowIndex=\"rowIndex\">\n <ng-container *ngIf=\"formGroupByRow[rowIndex]\" [formGroup]=\"formGroupByRow[rowIndex]\">\n <tr>\n <!-- Tipo de Chave -->\n <td class=\"ui-md-6 ui-sm-12 required\"\n [pEditableColumn]=\"item.pixKeyType\" pEditableColumnField=\"pixKeyType\">\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <div style=\"width: 100%; position: relative;\">\n <p-autoComplete\n [suggestions]=\"suggestions\"\n (completeMethod)=\"filterPixKeyType($event)\"\n formControlName=\"pixKeyType\"\n [dropdown]=\"true\"\n (onSelect)=\"onPixKeyTypeChange($event, rowIndex)\"\n (onClear)=\"onPixKeyTypeClear(rowIndex)\"\n (ngModelChange)=\"onSyncValue('pixKeyType', rowIndex)\"\n field=\"value\"\n placeholder=\"{{'hcm.payroll.select' | translate}}\"\n appendTo=\"body\"\n [panelStyle]=\"{ maxWidth: '300px', width: '100%' }\"\n [inputStyle]=\"{ width: '100%' }\"\n ></p-autoComplete>\n\n <s-control-errors [control]=\"formGroupByRow[rowIndex]?.get('pixKeyType')\"\n [errorMessages]=\"{\n required: 'hcm.payroll.required' | translate,\n pixKeyTypeBankAccountDuplicate: 'hcm.payroll.historical_pix_key_type_bank_account_duplicate' | translate\n }\">\n </s-control-errors>\n </div>\n </ng-template>\n <ng-template pTemplate=\"output\">\n {{ item.pixKeyType?.value }}\n </ng-template>\n </p-cellEditor>\n </td>\n\n <!-- Chave Pix -->\n <td class=\"ui-md-6 ui-sm-12 required\"\n [pEditableColumn]=\"item.pixKey\" pEditableColumnField=\"pixKey\"\n [ngClass]=\"{'required': item.pixKeyType.key !== 'BANK_ACCOUNT',\n 'disabled': item.pixKeyType && item.pixKeyType.key === 'BANK_ACCOUNT'\n }\">\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <ng-container [ngSwitch]=\"item.pixKeyType.key\">\n <input *ngSwitchCase=\"'TELEPHONE'\"\n only-number\n pInputText\n type=\"text\"\n formControlName=\"pixKey\"\n (keyup)=\"phoneMask($event)\"\n (ngModelChange)=\"onSyncValue('pixKey', rowIndex)\"\n maxlength=\"15\"\n placeholder=\"(__) ____-____\" />\n\n <input *ngSwitchCase=\"'CPF'\"\n type=\"text\"\n pInputText\n formControlName=\"pixKey\"\n maxlength=\"14\"\n placeholder=\"___.___.___-__\"\n (input)=\"onPixKeyInput($event, rowIndex)\"\n (blur)=\"onBlurPixCpfAndCnpj(rowIndex)\"\n (keyup)=\"cpfMask($event)\"\n (ngModelChange)=\"onSyncValue('pixKey', rowIndex)\" />\n\n <input *ngSwitchCase=\"'CNPJ'\"\n type=\"text\"\n pInputText\n formControlName=\"pixKey\"\n maxlength=\"18\"\n placeholder=\"___.___.___/____-__\"\n (input)=\"onPixKeyInput($event, rowIndex)\"\n (blur)=\"onBlurPixCpfAndCnpj(rowIndex)\"\n (keyup)=\"cnpjMask($event)\"\n (ngModelChange)=\"onSyncValue('pixKey', rowIndex)\" />\n\n <input *ngSwitchCase=\"'EMAIL'\"\n pInputText\n type=\"email\"\n formControlName=\"pixKey\"\n (ngModelChange)=\"onSyncValue('pixKey', rowIndex)\"\n placeholder=\"{{ 'hcm.payroll.employees_addition_email' | translate }}\" />\n\n <input *ngSwitchCase=\"'BANK_ACCOUNT'\"\n pInputText\n formControlName=\"pixKey\"\n (ngModelChange)=\"onSyncValue('pixKey', rowIndex)\"\n [disabled]=\"true\" />\n\n <input *ngSwitchDefault\n pInputText\n type=\"text\"\n formControlName=\"pixKey\"\n (ngModelChange)=\"onSyncValue('pixKey', rowIndex)\"\n maxlength=\"100\" />\n </ng-container>\n\n <s-control-errors *ngIf=\"isShowPixKeyFieldValidatorMessage\"\n [control]=\"formGroupByRow[rowIndex]?.get('pixKey')\"\n [errorMessages]=\"{\n required: 'hcm.payroll.required' | translate,\n invalidPhoneNumber: 'hcm.payroll.employees_addition_invalid_phone_number' | translate: { value: formGroupByRow[rowIndex]?.get('pixKey').value },\n invalidEmail: 'hcm.payroll.employees_addition_email_invalid' | translate,\n cpfNotValid: 'hcm.payroll.employees_addition_cpf_error' | translate,\n cnpjNotValid: 'hcm.payroll.employees_addition_cnpj_error' | translate\n }\">\n </s-control-errors>\n </ng-template>\n <ng-template pTemplate=\"output\">\n {{ getFormattedPixKey(item.pixKeyType?.key, item.pixKey) }}\n </ng-template>\n </p-cellEditor>\n </td>\n\n <!-- Percentual -->\n <td class=\"ui-md-6 ui-sm-12 required\"\n [pEditableColumn]=\"item.percentage\" pEditableColumnField=\"percentage\">\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <input\n pInputText type=\"number\"\n formControlName=\"percentage\"\n (ngModelChange)=\"onSyncValue('percentage', rowIndex)\"\n >\n <s-control-errors\n [control]=\"formGroupByRow[rowIndex]?.get('percentage')\"\n [errorMessages]=\"{\n required: 'hcm.payroll.required' | translate,\n maxlength: 'hcm.payroll.error_max_length' | translate: { value: '6' },\n max: 'hcm.payroll.error_max_value_number' | translate: { value: maxValuePercentage },\n min: 'hcm.payroll.error_min_value_number' | translate: { value: '0,01' }\n }\">\n </s-control-errors>\n </ng-template>\n <ng-template pTemplate=\"output\">\n {{ item.percentage?.toFixed(2).replace('.', ',') }}%\n </ng-template>\n </p-cellEditor>\n </td>\n\n <!-- Bot\u00E3o de excluir -->\n <td>\n <s-button\n id=\"btn-delete\"\n label=\"{{ 'hcm.payroll.delete' | translate }}\"\n priority=\"default\"\n (onClick)=\"deletePix(rowIndex)\">\n </s-button>\n </td>\n </tr>\n </ng-container>\n </ng-template>\n </p-table>\n</div>\n",
|
|
452
|
+
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 && !isViewMode\">\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 [permitsEditBankAccountForm]=\"permitsEditBankAccount\"\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 *ngIf=\"!isViewMode\" [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 *ngIf=\"!isViewMode\" 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 && !isViewMode\">\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",
|
|
699
453
|
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}"]
|
|
700
454
|
})
|
|
701
455
|
], HistoricalPixAccountComponent);
|
|
702
456
|
return HistoricalPixAccountComponent;
|
|
703
|
-
}(
|
|
457
|
+
}());
|
|
704
458
|
export { HistoricalPixAccountComponent };
|
|
705
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yaWNhbC1waXgtYWNjb3VudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1wZXNzb2FzL3BheXJvbGwtY29yZS8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvaGlzdG9yaWNhbC1waXgtYWNjb3VudC9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxNQUFNLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxpQkFBaUIsRUFDakIsYUFBYSxFQUNiLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFNBQVMsRUFDVCxhQUFhLEdBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBdUIsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFRL0U7SUFBbUQseURBQXdCO0lBeUp2RSx1Q0FDWSxnQkFBa0MsRUFDbEMsRUFB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O0lBR0Q7UUFEQyxLQUFLLEVBQUU7Z0VBR1A7SUFHRDtRQURDLEtBQUssRUFBRTttRUFHUDtJQUdEO1FBREMsS0FBSyxFQUFFO3lFQUdQO0lBbG5CUSw2QkFBNkI7UUFOekMsU0FBUyxDQUFDO1lBQ1AsOENBQThDO1lBQzlDLFFBQVEsRUFBRSwwQkFBMEI7WUFDcEMseXFqQkFBc0Q7O1NBRXpELENBQUM7T0FDVyw2QkFBNkIsQ0FtcUJ6QztJQUFELG9DQUFDO0NBQUEsQUFucUJELENBQW1ELHdCQUF3QixHQW1xQjFFO1NBbnFCWSw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgVmlld0NoaWxkLFxuICAgIElucHV0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgT25EZXN0cm95LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBPdXRwdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IEN1c3RvbUZpZWxkc0NvbXBvbmVudCwgTnVtYmVyTG9jYWxlT3B0aW9ucyB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzXCI7XG5pbXBvcnQgeyBjb21wYXJlVmFsdWVzLCBpc1ZhbGlkLCBtb3VudEN1c3RvbVRvU2F2ZSB9IGZyb20gXCIuLi91dGlscy9oZWxwZXJzXCI7XG5pbXBvcnQgeyBEaXJlY3Rpb25FbnVtZXJhdGlvbiB9IGZyb20gXCIuLi8uLi9jb3JlL2VudW1zXCI7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IEZvcm1hdFV0aWxzU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9mb3JtYXQtdXRpbHMvZm9ybWF0LXV0aWxzLnNlcnZpY2VcIjtcbmltcG9ydCB7IFNoYXJlZFN0YXRlU2VydmljZSB9IGZyb20gXCIuLi9zaGFyZWQvc2hhcmVkLXN0YXRlLnNlcnZpY2VcIjtcbmltcG9ydCB7IEhpc3RvcmljYWtQaXhBY2NvdW50QmFzZSB9IGZyb20gXCIuL2hpc3RvcmljYWwtcGl4LWFjY291bnQtYmFzZVwiO1xuaW1wb3J0IHsgSGlzdG9yaWNhbFBpeEFjY291bnRTZXJ2aWNlIH0gZnJvbSBcIi4vaGlzdG9yaWNhbC1waXgtYWNjb3VudC5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogXCJjLWhpc3RvcmljYWwtcGl4LWFjY291bnRcIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2hpc3RvcmljYWwtcGl4LWFjY291bnQuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vaGlzdG9yaWNhbC1waXgtYWNjb3VudC5jb21wb25lbnQuc2Nzc1wiXSxcbn0pXG5leHBvcnQgY2xhc3MgSGlzdG9yaWNhbFBpeEFjY291bnRDb21wb25lbnQgZXh0ZW5kcyBIaXN0b3JpY2FrUGl4QWNjb3VudEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgICBAVmlld0NoaWxkKEN1c3RvbUZpZWxkc0NvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcHVibGljIGN1c3RvbUZpZWxkczogQ3VzdG9tRmllbGRzQ29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ2RhdGFMaXN0UGl4JywgeyBzdGF0aWM6IGZhbHNlIH0pIGRhdGFMaXN0UGl4OiBhbnk7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZmllbGRGb3JtR3JvdXA6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBfZGF0ZUNoYW5nZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIF9kaXNwbGF5RGF0ZUNoYW5nZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlY29yZEJ5Um93OiBudW1iZXIgPSAxO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dEYXRlQ2hhbmdlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbXNnVG9vbHRpcEFkZDogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlzRWRpdE1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpc1ZpZXdNb2RlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY3VycmVuY3k6IE51bWJlckxvY2FsZU9wdGlvbnM7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY3VzdG9tRW50aXR5OiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY3VzdG9tU2VydmljZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHdpdGhTaWRlQmFyOiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwZXJtaXNzaW9uOiBvYmplY3Q7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbGlzdERhdGFSZWNpZXZlcjogYW55W10gPSBbXTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhZGRFeGlzdGVudEhpc3RvcmljRGF0YTogYW55W10gPSBbXTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXRMaXN0UGl4QWNjb3VudDogb2JqZWN0W10gPSBbXTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpc0VkaXRNb2RlRm9yU2F2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dGaWVsZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGlzVmlld01vZGVBY3RpdmU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBpc0VkaXRNb2RlQWN0aXZlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgaXNEZWxldGVNb2RlQWN0aXZlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgaXNWYWxpZENoYW5nZUZvcm06IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVsb2FkT25seU9uRWRpdDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG5cbiAgICBwcml2YXRlIGxpc3RGcm9tQXBwOiBhbnlbXSA9IFtdO1xuICAgIHByaXZhdGUgdmlzaWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHJpdmF0ZSBoaXN0b3JpY2FsUGl4QWNjb3VudExpc3Q6IEZvcm1Hcm91cDtcbiAgICBwcml2YXRlIG9yZGVyQnk6IHsgZmllbGQ6IHN0cmluZzsgZGlyZWN0aW9uOiBEaXJlY3Rpb25FbnVtZXJhdGlvbiB9ID0ge1xuICAgICAgICBmaWVsZDogXCJkYXRlQ2hhbmdlXCIsXG4gICAgICAgIGRpcmVjdGlvbjogRGlyZWN0aW9uRW51bWVyYXRpb24uREVTQyxcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBfdmlzaWJsZTogYm9vbGVhbjtcbiAgICBwdWJsaWMgcGl4QWNjb3VudEl0ZW1JbnB1dDogb2JqZWN0ID0ge307XG4gICAgcHVibGljIHRvdGFsUmVjb3JkczogbnVtYmVyID0gMDtcbiAgICBwdWJsaWMgYWN0aW9uTGFiZWw6IHN0cmluZyA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZW50cmllc19xdWVyeV9hY3Rpb25zX3RvdGFsX3RpdGxlXCIpO1xuICAgIHB1YmxpYyBsb2FkaW5nID0gdHJ1ZTtcbiAgICBwdWJsaWMgcGFyYW1ldGVyczogYW55O1xuICAgIHB1YmxpYyBtc2dUb3RhbExpbWl0QnlQZXJjZW50YWdlOiBzdHJpbmc7XG4gICAgcHVibGljIGxpc3REYXRhOiBvYmplY3RbXSA9IFtdO1xuICAgIHB1YmxpYyBsaXN0RGF0YU5vUGFnZTogb2JqZWN0W10gPSBbXTtcbiAgICBwdWJsaWMgc2hvd0J1dHRvblZpZXcgPSB0cnVlO1xuICAgIHB1YmxpYyBzaG93RWRpdE1vZGUgPSBmYWxzZTtcbiAgICBwdWJsaWMgaGFzUmVjb3Jkc1BpeCA9IHRydWU7XG4gICAgcHVibGljIGhpZGVGaWVsZHMgPSB0aGlzLnNoYXJlZFN0YXRlU2VydmljZS5oaWRlRmllbGQkO1xuICAgIHB1YmxpYyBzdWdnZXN0aW9uczogYW55W10gPSBbXTtcbiAgICBwdWJsaWMgZm9ybUdyb3VwQnlSb3c6IHsgW2luZGV4OiBudW1iZXJdOiBGb3JtR3JvdXAgfSA9IHt9O1xuICAgIHB1YmxpYyBzaG93RmllbGRzOiBib29sZWFuO1xuICAgIHB1YmxpYyBoaWRlQnRuQWRkRm9yVmlld01vZGU6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgY29scyA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX2FkZGl0aW9uX3BpeF9rZXlfdHlwZVwiKSxcbiAgICAgICAgICAgIGZpZWxkOiBcInBpeEtleVR5cGVcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX2FkZGl0aW9uX3BpeF9rZXlcIiksXG4gICAgICAgICAgICBmaWVsZDogXCJwaXhLZXlcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuaGlzdG9yaWNhbF9waXhfYWNjb3VudF9sYWJlbF9wZXJjZW50YWdlXCIpLFxuICAgICAgICAgICAgZmllbGQ6IFwicGVyY2VudGFnZVwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5tb3ZpbWVudGF0aW9uX2dlbmVyaWNfYWN0aW9uXCIpLFxuICAgICAgICAgICAgZmllbGQ6IFwiYWN0aW9uc1wiLFxuICAgICAgICB9XG4gICAgXTtcblxuICAgIGFjdGlvbnMgPSAocm93RGF0YTogYW55ID0ge30sIGtleTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5pc0VkaXRNb2RlLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLmVtcGxveWVlc19pbWFnZV9jcm9wcGVyX3ZpZXdcIiksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0FsbG93VG9WaWV3SGlzdG9yaWNhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93RGF0YVtcImluZGV4XCJdID0ga2V5O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50SXRlbUlucHV0ID0geyBjdXJyZW50SXRlbTogcm93RGF0YSwgbGlzdERhdGE6IHRoaXMubGlzdERhdGFOb1BhZ2UsIGlzRWRpdE1vZGU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1ZpZXdNb2RlQWN0aXZlLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiAhISghdGhpcy5pc0VkaXRNb2RlICYmIHRoaXMud2l0aFNpZGVCYXIpLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLmVkaXRcIiksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0FsbG93VG9FZGl0SGlzdG9yaWNhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93RGF0YVtcImluZGV4XCJdID0ga2V5O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50SXRlbUlucHV0ID0geyBjdXJyZW50SXRlbTogcm93RGF0YSwgbGlzdERhdGE6IHRoaXMubGlzdERhdGFOb1BhZ2UsIGlzRWRpdE1vZGU6IHRydWUgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRWRpdE1vZGVBY3RpdmUuZW1pdCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxpc3RGcm9tQXBwLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93RGF0YVtcImluZGV4XCJdID0ga2V5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGl4QWNjb3VudEl0ZW1JbnB1dCA9IHsgY3VycmVudEl0ZW06IHJvd0RhdGEsIGxpc3REYXRhOiB0aGlzLmxpc3REYXRhTm9QYWdlLCBpc0VkaXRNb2RlOiB0cnVlIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZpc2libGU6ICF0aGlzLmlzRWRpdE1vZGUgfHwgdGhpcy5zaG93RWRpdE1vZGUsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZGVsZXRlXCIpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNBbGxvd1RvRGVsZXRlSGlzdG9yaWNhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlQW5udWl0eUl0ZW0oa2V5KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNEZWxldGVNb2RlQWN0aXZlLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5saXN0RnJvbUFwcC5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWxldGVBbm51aXR5SXRlbShrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgcHJpdmF0ZSBzaGFyZWRTdGF0ZVNlcnZpY2U6IFNoYXJlZFN0YXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzZXJ2aWNlOiBIaXN0b3JpY2FsUGl4QWNjb3VudFNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGZvcm1CdWlsZGVyKTtcbiAgICAgICAgdGhpcy5jcmVhdGVGb3JtR3JvdXAoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5zaG93RmllbGRzID0gdGhpcy5zaG93RmllbGQ7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLnNldENvbnRyb2wodGhpcy5maWVsZEZvcm1Hcm91cCwgdGhpcy5oaXN0b3JpY2FsUGl4QWNjb3VudExpc3QpO1xuICAgICAgICB0aGlzLnNoYXJlZFN0YXRlU2VydmljZS5zaG93QnV0dG9uJC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNob3dCdXR0b25WaWV3ID0gdmFsdWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2hhcmVkU3RhdGVTZXJ2aWNlLnNob3dFZGl0TW9kZSQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaG93RWRpdE1vZGUgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuaXNFZGl0TW9kZUZvclNhdmUgPSB2YWx1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zaGFyZWRTdGF0ZVNlcnZpY2Uuc2hvdWxkUmVsb2FkV2luZG93T25seUVkaXRNb2RlJC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlbG9hZE9ubHlPbkVkaXQuZW1pdCh2YWx1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2hhcmVkU3RhdGVTZXJ2aWNlLmhpZGVCdG5BZGRGb3JWaWV3TW9kZSQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5oaWRlQnRuQWRkRm9yVmlld01vZGUgPSB2YWx1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zaGFyZWRTdGF0ZVNlcnZpY2UuYWN0aXZlVmFsaWRhdG9yc09uRWRpdE1vZGFsT3BlbiRcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIE9iamVjdC52YWx1ZXModGhpcy5mb3JtR3JvdXBCeVJvdykuZm9yRWFjaChmZyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC52YWx1ZXMoZmcuY29udHJvbHMpLmZvckVhY2goY29udHJvbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRGb3JtVmFsaWRpdHkoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlc1snbGlzdERhdGFSZWNpZXZlciddICYmIGNoYW5nZXNbJ2xpc3REYXRhUmVjaWV2ZXInXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubGlzdEZyb21BcHAgPSBjaGFuZ2VzWydsaXN0RGF0YVJlY2lldmVyJ10uY3VycmVudFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzWydhZGRFeGlzdGVudEhpc3RvcmljRGF0YSddICYmIGNoYW5nZXNbJ2FkZEV4aXN0ZW50SGlzdG9yaWNEYXRhJ10uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmdldEhpc3RvcmljYWxQaXhBY2NvdW50TGlzdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXNbJ2FkZEV4aXN0ZW50SGlzdG9yaWNEYXRhJ10gJiYgY2hhbmdlc1snYWRkRXhpc3RlbnRIaXN0b3JpY0RhdGEnXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0RhdGEgPSBjaGFuZ2VzWydhZGRFeGlzdGVudEhpc3RvcmljRGF0YSddLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMucmVidWlsZEZvcm1Hcm91cE1hcChuZXdEYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzWydpc0VkaXRNb2RlJ10pIHtcbiAgICAgICAgICAgIHRoaXMuaXNFZGl0TW9kZSA9IGNoYW5nZXNbJ2lzRWRpdE1vZGUnXS5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRm9ybUdyb3VwKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhpc3RvcmljYWxQaXhBY2NvdW50TGlzdCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0OiB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW1pdEZvcm1WYWxpZGl0eSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWxsVmFsaWQgPSBPYmplY3QudmFsdWVzKHRoaXMuZm9ybUdyb3VwQnlSb3cpLmV2ZXJ5KGZnID0+IHtcbiAgICAgICAgICAgIGZnLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICAgIHJldHVybiBmZy52YWxpZDtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaXNWYWxpZENoYW5nZUZvcm0uZW1pdChhbGxWYWxpZCk7XG4gICAgfVxuXG4gICAgZmlsdGVyUGl4S2V5VHlwZShldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gZXZlbnQucXVlcnk7XG4gICAgICAgIHRoaXMuc2VydmljZS5lbnVtUXVlcnkoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGl4S2V5VHlwZUVudW0gPSByZXNwb25zZS5yZXN1bHRzLmZpbmQoKHJlc3VsdDogYW55KSA9PiByZXN1bHQuZW51bU5hbWUgPT09ICdQaXhLZXlUeXBlJyk7XG4gICAgICAgICAgaWYgKHBpeEtleVR5cGVFbnVtKSB7XG4gICAgICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zID0gcGl4S2V5VHlwZUVudW0uaXRlbXMuZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgIGl0ZW0udmFsdWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdWdnZXN0aW9ucyA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3JlYXRlUGl4Um93Rm9ybUdyb3VwKCk6IEZvcm1Hcm91cCB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICBwaXhLZXlUeXBlOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgcGl4S2V5OiBbbnVsbF0sXG4gICAgICAgICAgcGVyY2VudGFnZTogWzAsIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAuLi50aGlzLmluaXRpYWxWYWxpZGF0b3JPZlBlcmNlbnRhZ2UsXG4gICAgICAgICAgICBWYWxpZGF0b3JzLm1heCh0aGlzLm1heFZhbHVlUGVyY2VudGFnZSksXG4gICAgICAgICAgXSldXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uUGl4S2V5SW5wdXQoZXZlbnQ6IGFueSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dFZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgICBjb25zdCBpbnB1dFJhd1ZhbHVlID0gaW5wdXRWYWx1ZS5yZXBsYWNlKC9cXEQvZywgJycpO1xuXG4gICAgICAgIGNvbnN0IGZvcm0gPSB0aGlzLmZvcm1Hcm91cEJ5Um93W2luZGV4XTtcbiAgICAgICAgY29uc3QgcGl4S2V5Q29udHJvbCA9IGZvcm0uZ2V0KCdwaXhLZXknKTtcblxuICAgICAgICBpZihwaXhLZXlDb250cm9sKSB7XG4gICAgICAgICAgICBwaXhLZXlDb250cm9sLnNldFZhbHVlKGlucHV0UmF3VmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIHBpeEtleUNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICAgICAgICAgIHBpeEtleUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0UGl4S2V5VmFsaWRhdG9ycyh0cnVlLCBmb3JtKTtcbiAgICAgICAgdGhpcy5lbWl0Rm9ybVZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgb25CbHVyUGl4Q3BmQW5kQ25waihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvcm0gPSB0aGlzLmZvcm1Hcm91cEJ5Um93W2luZGV4XTtcbiAgICAgICAgY29uc3QgcGl4S2V5Q29udHJvbCA9IGZvcm0uZ2V0KCdwaXhLZXknKTtcbiAgICAgICAgY29uc3QgcGl4S2V5VHlwZUNvbnRyb2wgPSBmb3JtLmdldCgncGl4S2V5VHlwZScpO1xuXG4gICAgICAgIGlmICghcGl4S2V5Q29udHJvbCB8fCAhcGl4S2V5VHlwZUNvbnRyb2wpIHJldHVybjtcblxuICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSBwaXhLZXlDb250cm9sLnZhbHVlO1xuICAgICAgICBjb25zdCBwaXhLZXlUeXBlID0gcGl4S2V5VHlwZUNvbnRyb2wudmFsdWUua2V5O1xuICAgICAgICBjb25zdCByYXdWYWx1ZSA9IChjdXJyZW50VmFsdWUgfHwgJycpLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG5cbiAgICAgICAgcGl4S2V5Q29udHJvbC5zZXRWYWx1ZShyYXdWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuXG4gICAgICAgIGlmIChwaXhLZXlDb250cm9sLnZhbGlkKSB7XG4gICAgICAgICAgZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICAgIHBpeEtleUZvcm1hdHRlZDogRm9ybWF0VXRpbHNTZXJ2aWNlLmdldEZvcm1hdHRlZFN1YnNjcmlwdGlvbk51bWJlcihyYXdWYWx1ZSwgcGl4S2V5VHlwZSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVtaXRGb3JtVmFsaWRpdHkoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0dGVkUGl4S2V5KHR5cGU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBGb3JtYXRVdGlsc1NlcnZpY2UuZ2V0Rm9ybWF0dGVkU3Vic2NyaXB0aW9uTnVtYmVyKHZhbHVlLCB0eXBlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3luY1BpeERhdGFUb1BhcmVudEZvcm0oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0VkaXRNb2RlRm9yU2F2ZSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IE9iamVjdC52YWx1ZXModGhpcy5mb3JtR3JvdXBCeVJvdykubWFwKGZnID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGZnLmdldFJhd1ZhbHVlKCk7XG4gICAgICAgICAgY29uc3QgcGl4S2V5VHlwZSA9IHZhbHVlLnBpeEtleVR5cGUua2V5O1xuXG4gICAgICAgICAgaWYgKHBpeEtleVR5cGUgPT09ICdDUEYnIHx8IHBpeEtleVR5cGUgPT09ICdDTlBKJykge1xuICAgICAgICAgICAgdmFsdWUucGl4S2V5ID0gKHZhbHVlLnBpeEtleSB8fCAnJykucmVwbGFjZSgvWy5cXC1cXC9dL2csICcnKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHBpeEtleVR5cGUgPT09ICdURUxFUEhPTkUnKSB7XG4gICAgICAgICAgICB2YWx1ZS5waXhLZXkgPSAodmFsdWUucGl4S2V5IHx8ICcnKS5yZXBsYWNlKC9bKClcXHNcXC1dL2csICcnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZm9ybUdyb3VwXG4gICAgICAgICAgLmdldCh0aGlzLmZpZWxkRm9ybUdyb3VwKVxuICAgICAgICAgIC5nZXQoJ2hpc3RvcmljYWxQaXhBY2NvdW50TGlzdCcpXG4gICAgICAgICAgLnNldFZhbHVlKHZhbHVlcyk7XG5cbiAgICAgICAgICB0aGlzLmVtaXRGb3JtVmFsaWRpdHkoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3luY1Jlc2V0UGl4Rm9ybVRvUGFyZW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cEJ5Um93ID0ge307XG4gICAgICAgIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0LnJlc2V0KCk7XG4gICAgICAgIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0LmdldCgnaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0Jykuc2V0VmFsdWUoW10pO1xuXG4gICAgICAgIGlmICh0aGlzLmFkZEV4aXN0ZW50SGlzdG9yaWNEYXRhLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMucmVidWlsZEZvcm1Hcm91cE1hcCh0aGlzLmFkZEV4aXN0ZW50SGlzdG9yaWNEYXRhKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkxhenlMb2FkKGV2ZW50PzogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpcnN0ID0gZXZlbnQgJiYgZXZlbnQuZmlyc3QgPyBldmVudC5maXJzdCA6IDA7XG4gICAgICAgIGNvbnN0IHJvd3MgPSBldmVudCAmJiBldmVudC5yb3dzID8gZXZlbnQucm93cyA6IHRoaXMucmVjb3JkQnlSb3c7XG4gICAgICAgIGNvbnN0IGFyckxpc3QgPSB0aGlzLmdldEhpc3RvcmljYWxQaXhBY2NvdW50TGlzdCgpO1xuICAgICAgICB0aGlzLmxpc3REYXRhID0gW107XG4gICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gbnVsbDtcblxuICAgICAgICBpZiAoZXZlbnQgJiYgZXZlbnQubXVsdGlTb3J0TWV0YSAmJiBldmVudC5tdWx0aVNvcnRNZXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgZXZlbnQubXVsdGlTb3J0TWV0YS5tYXAoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9yZGVyQnkuZmllbGQgPSB2YWx1ZS5maWVsZDtcbiAgICAgICAgICAgICAgICB0aGlzLm9yZGVyQnkuZGlyZWN0aW9uID0gdmFsdWUub3JkZXIgPT09IDEgPyBEaXJlY3Rpb25FbnVtZXJhdGlvbi5BU0MgOiBEaXJlY3Rpb25FbnVtZXJhdGlvbi5ERVNDO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXJyTGlzdCAmJiBhcnJMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSBhcnJMaXN0Lmxlbmd0aDtcbiAgICAgICAgICAgIHRoaXMubGlzdERhdGEgPSBhcnJMaXN0O1xuICAgICAgICAgICAgdGhpcy5saXN0RGF0YU5vUGFnZSA9IFsuLi5hcnJMaXN0XTtcbiAgICAgICAgICAgIHRoaXMubGlzdERhdGEuc29ydChjb21wYXJlVmFsdWVzKHRoaXMub3JkZXJCeS5maWVsZCwgdGhpcy5vcmRlckJ5LmRpcmVjdGlvbikpO1xuICAgICAgICAgICAgdGhpcy5saXN0RGF0YSA9IHRoaXMubGlzdERhdGEuc2xpY2UoZmlyc3QsIChmaXJzdCArIHJvd3MpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGlzdERhdGFOb1BhZ2UgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzRWRpdE1vZGUgfHwgYXJyTGlzdCAmJiBhcnJMaXN0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoQ3NzSW5JRTExKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbSBCdWcgZGUgQ1NTIHF1ZSBhY29udGVjZSBuYXMgbGluaGFzIGRhIHRhYmVsYSwgcXVlIHJlc29sdmUgc8OzIGF0dWFsaXphbmRvIHF1YWxxdWVyIHBhcnRlIGRvIENTUyBkYSBwYWdpbmEuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWZyZXNoQ3NzSW5JRTExKCkge1xuICAgICAgICBpZiAoL21zaWVcXHN8dHJpZGVudFxcL3xlZGdlXFwvL2kudGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCkpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByb3cgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwicm93MFwiKTtcbiAgICAgICAgICAgICAgICBpZiAocm93ICYmIHJvd1swXSlcbiAgICAgICAgICAgICAgICAgICAgcm93WzBdLmNsYXNzTmFtZSA9ICdyZWZyZXNoJztcbiAgICAgICAgICAgIH0sIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFkZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5waXhBY2NvdW50SXRlbUlucHV0ID0ge307XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgfVxuXG4gICAgYWRkUGl4KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdJdGVtID0ge1xuICAgICAgICAgIHBpeEtleVR5cGU6IHt9LFxuICAgICAgICAgIHBpeEtleTogJycsXG4gICAgICAgICAgcGVyY2VudGFnZTogMFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hZGRFeGlzdGVudEhpc3RvcmljRGF0YS5sZW5ndGg7XG5cbiAgICAgICAgdGhpcy5hZGRFeGlzdGVudEhpc3RvcmljRGF0YSA9IFtcbiAgICAgICAgICAuLi50aGlzLmFkZEV4aXN0ZW50SGlzdG9yaWNEYXRhLFxuICAgICAgICAgIG5ld0l0ZW1cbiAgICAgICAgXTtcblxuICAgICAgICB0aGlzLmZvcm1Hcm91cEJ5Um93W2luZGV4XSA9IHRoaXMuY3JlYXRlUGl4Um93Rm9ybUdyb3VwKCk7XG5cbiAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzQWNjb3JkaW5nTGlzdCh0aGlzLmFkZEV4aXN0ZW50SGlzdG9yaWNEYXRhLCBpbmRleCwgdHJ1ZSk7XG5cbiAgICAgICAgdGhpcy5lbWl0Rm9ybVZhbGlkaXR5KCk7XG4gICAgfVxuXG5cbiAgICBkZWxldGVQaXgoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kYXRhTGlzdFBpeC5lZGl0aW5nQ2VsbCkge1xuICAgICAgICAgICAgdGhpcy5kYXRhTGlzdFBpeC5lZGl0aW5nQ2VsbCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGRFeGlzdGVudEhpc3RvcmljRGF0YSA9IHRoaXMuYWRkRXhpc3RlbnRIaXN0b3JpY0RhdGEuZmlsdGVyKChfLCBpKSA9PiBpICE9PSBpbmRleCk7XG4gICAgICAgIHRoaXMucmVidWlsZEZvcm1Hcm91cE1hcCh0aGlzLmFkZEV4aXN0ZW50SGlzdG9yaWNEYXRhKTtcbiAgICAgICAgdGhpcy5lbWl0Rm9ybVZhbGlkaXR5KCk7XG4gICAgICB9XG5cblxuICAgIHByaXZhdGUgcmVidWlsZEZvcm1Hcm91cE1hcChkYXRhOiBhbnlbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cEJ5Um93ID0ge307XG5cbiAgICAgICAgZGF0YS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9ybSA9IHRoaXMuY3JlYXRlUGl4Um93Rm9ybUdyb3VwKCk7XG4gICAgICAgICAgICBjb25zdCBwaXhLZXlUeXBlID0gaXRlbS5waXhLZXlUeXBlLmtleTtcbiAgICAgICAgICAgIGNvbnN0IHBpeEtleVJhdyA9IGl0ZW0ucGl4S2V5O1xuXG4gICAgICAgICAgICBpZiAocGl4S2V5VHlwZSA9PT0gJ0NQRicgfHwgcGl4S2V5VHlwZSA9PT0gJ0NOUEonKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5waXhLZXkgPSBGb3JtYXRVdGlsc1NlcnZpY2UuZ2V0Rm9ybWF0dGVkU3Vic2NyaXB0aW9uTnVtYmVyKHBpeEtleVJhdywgcGl4S2V5VHlwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGl4S2V5VHlwZSA9PT0gJ1RFTEVQSE9ORScpIHtcbiAgICAgICAgICAgICAgICBpdGVtLnBpeEtleSA9IEZvcm1hdFV0aWxzU2VydmljZS5nZXRGb3JtYXR0ZWRUZWxlcGhvbmVOdW1iZXIocGl4S2V5UmF3KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9ybS5wYXRjaFZhbHVlKGl0ZW0pO1xuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXBCeVJvd1tpbmRleF0gPSBmb3JtO1xuXG4gICAgICAgICAgICB0aGlzLnBpeEtleVR5cGUgPSBwaXhLZXlUeXBlO1xuICAgICAgICAgICAgdGhpcy5zZXRQaXhLZXlWYWxpZGF0b3JzKHRydWUsIGZvcm0pO1xuXG4gICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnNBY2NvcmRpbmdMaXN0KGRhdGEsIGluZGV4LCB0aGlzLmlzRWRpdE1vZGUpO1xuXG4gICAgICAgICAgICBjb25zdCBsaXN0VmFsdWVzID0gZGF0YVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KVxuICAgICAgICAgICAgICAgIC5tYXAocm93ID0+IHJvdy5wZXJjZW50YWdlID8gcGFyc2VGbG9hdChyb3cucGVyY2VudGFnZSkgOiAwKTtcblxuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVBlcmNlbnRhZ2VWYWxpZChsaXN0VmFsdWVzLCBmb3JtKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5lbWl0Rm9ybVZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgb25QaXhLZXlUeXBlQ2hhbmdlKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBmb3JtID0gdGhpcy5mb3JtR3JvdXBCeVJvd1tpbmRleF07XG4gICAgICAgIHRoaXMub25DaGFuZ2VQaXhLZXlUeXBlKGl0ZW0sIGZvcm0pO1xuXG4gICAgICAgIHRoaXMuYWRkRXhpc3RlbnRIaXN0b3JpY0RhdGFbaW5kZXhdLnBpeEtleSA9ICcnO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YUxpc3RQaXguZWRpdGluZ0NlbGwpIHtcbiAgICAgICAgICAgICAgdGhpcy5kYXRhTGlzdFBpeC5lZGl0aW5nQ2VsbCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIG9uUGl4S2V5VHlwZUNsZWFyKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZm9ybSA9IHRoaXMuZm9ybUdyb3VwQnlSb3dbaW5kZXhdO1xuICAgICAgICB0aGlzLm9uQ2xlYXJQaXhLZXlUeXBlKGZvcm0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVsZXRlQW5udWl0eUl0ZW0oaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBsZXQgbmV3bGlzdCA9IFsuLi50aGlzLmdldEhpc3RvcmljYWxQaXhBY2NvdW50TGlzdCgpXTtcbiAgICAgICAgbmV3bGlzdC5zb3J0KGNvbXBhcmVWYWx1ZXModGhpcy5vcmRlckJ5LmZpZWxkLCB0aGlzLm9yZGVyQnkuZGlyZWN0aW9uKSk7XG4gICAgICAgIGRlbGV0ZSBuZXdsaXN0W2luZGV4XTtcbiAgICAgICAgbmV3bGlzdCA9IG5ld2xpc3QuZmlsdGVyKHZhbCA9PiB2YWwpO1xuICAgICAgICB0aGlzLmhpc3RvcmljYWxQaXhBY2NvdW50TGlzdC5nZXQoXCJoaXN0b3JpY2FsUGl4QWNjb3VudExpc3RcIikuc2V0VmFsdWUobmV3bGlzdCk7XG4gICAgICAgIHRoaXMudmVyaWZ5VG90YWxQZXJjZW50YWdlKCk7XG4gICAgICAgIHRoaXMub25MYXp5TG9hZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIaXN0b3JpY2FsUGl4QWNjb3VudExpc3QoKTogb2JqZWN0W10ge1xuICAgICAgICBpZiAodGhpcy5oaXN0b3JpY2FsUGl4QWNjb3VudExpc3QuZ2V0KFwiaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0XCIpICYmXG4gICAgICAgICAgICB0aGlzLmhpc3RvcmljYWxQaXhBY2NvdW50TGlzdC5nZXQoXCJoaXN0b3JpY2FsUGl4QWNjb3VudExpc3RcIikudmFsdWUgJiZcbiAgICAgICAgICAgIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0LmdldChcImhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFwiKS52YWx1ZS5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oaXN0b3JpY2FsUGl4QWNjb3VudExpc3QuZ2V0KFwiaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0XCIpICYmIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0LmdldChcImhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFwiKS52YWx1ZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRJdGVtSW5MaXN0KCRldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gJGV2ZW50ICYmICRldmVudC5pbmRleCA+PSAwID8gJGV2ZW50LmluZGV4IDogbnVsbDtcbiAgICAgICAgY29uc3QgbmV3RGF0YUxpc3QgPSB0aGlzLmdldEhpc3RvcmljYWxQaXhBY2NvdW50TGlzdCgpID8gdGhpcy5nZXRIaXN0b3JpY2FsUGl4QWNjb3VudExpc3QoKSA6IFtdO1xuXG4gICAgICAgIGlmIChpbmRleCAhPSBudWxsKSB7XG4gICAgICAgICAgICBuZXdEYXRhTGlzdFtpbmRleF0gPSAkZXZlbnQ7XG4gICAgICAgICAgICBkZWxldGUgJGV2ZW50LmluZGV4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzVmFsaWQoJGV2ZW50W1wiY3VzdG9tRmllbGRzXCJdKSAmJiBPYmplY3Qua2V5cygkZXZlbnRbXCJjdXN0b21GaWVsZHNcIl0pLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1c3RvbVZhbHVlID0gbW91bnRDdXN0b21Ub1NhdmUoJGV2ZW50W1wiY3VzdG9tRmllbGRzXCJdKTtcbiAgICAgICAgICAgICAgICAkZXZlbnRbXCJjdXN0b21GaWVsZHNcIl0gPSBbLi4uY3VzdG9tVmFsdWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJGV2ZW50W1wiZGF0ZUNoYW5nZVwiXSA9IHRoaXMuZGF0ZUNoYW5nZTtcbiAgICAgICAgICAgIG5ld0RhdGFMaXN0LnB1c2goJGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0LmdldChcImhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFwiKS5zZXRWYWx1ZShuZXdEYXRhTGlzdCk7XG4gICAgICAgIHRoaXMudmVyaWZ5VG90YWxQZXJjZW50YWdlKCk7XG4gICAgICAgIHRoaXMub25MYXp5TG9hZCh7IGZpcnN0OiB0aGlzLmdldE51bWJlclBhZ2VCeUluZGV4KGluZGV4LCBuZXdEYXRhTGlzdCkgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXROdW1iZXJQYWdlQnlJbmRleChpbmRleDogbnVtYmVyLCBsaXN0OiBvYmplY3RbXSk6IG51bWJlciB7XG4gICAgICAgIGlmIChpbmRleCkge1xuICAgICAgICAgICAgY29uc3QgdG90YWwgPSBsaXN0Lmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IHN1YiA9IHRoaXMucmVjb3JkQnlSb3cgLSAxO1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguY2VpbCh0b3RhbCAvIHRoaXMucmVjb3JkQnlSb3cpICogdGhpcy5yZWNvcmRCeVJvdyAtIHN1YiAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2ZXJpZnlUb3RhbFBlcmNlbnRhZ2UoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLmdldEhpc3RvcmljYWxQaXhBY2NvdW50TGlzdCgpID8gdGhpcy5nZXRIaXN0b3JpY2FsUGl4QWNjb3VudExpc3QoKSA6IFtdO1xuICAgICAgICBjb25zdCBhcnJheVBlcmNlbnRhZ2U6IGFueSA9IFtdO1xuXG4gICAgICAgIGlmICghbGlzdC5sZW5ndGgpIHJldHVybiB0aGlzLm1zZ1RvdGFsTGltaXRCeVBlcmNlbnRhZ2UgPSBudWxsO1xuXG4gICAgICAgIGxpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGFycmF5UGVyY2VudGFnZS5wdXNoKGl0ZW0gJiYgaXRlbVtcInBlcmNlbnRhZ2VcIl0pKTtcblxuICAgICAgICBjb25zdCBzdW1QZXJjZW50YWdlID0gYXJyYXlQZXJjZW50YWdlLnJlZHVjZSgodG90YWw6IG51bWJlciwgcGVyY2VudGFnZTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdG90YWwgKyBwZXJjZW50YWdlO1xuICAgICAgICB9LCAwKTtcblxuICAgICAgICBpZiAoc3VtUGVyY2VudGFnZSA9PT0gMTAwKSB7XG4gICAgICAgICAgICB0aGlzLm1zZ1RvdGFsTGltaXRCeVBlcmNlbnRhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLmhpc3RvcmljYWxfcGl4X2FjY291bnRfbXNnX2xpbWl0X3RvdGFsX2J5X3BlcmNlbnRhZ2VcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1zZ1RvdGFsTGltaXRCeVBlcmNlbnRhZ2UgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBwdWJsaWMgb25TeW5jVmFsdWUoZmllbGQ6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5mb3JtR3JvdXBCeVJvdyAmJlxuICAgICAgICAgIHRoaXMuZm9ybUdyb3VwQnlSb3dbaW5kZXhdICYmXG4gICAgICAgICAgdGhpcy5mb3JtR3JvdXBCeVJvd1tpbmRleF0uZ2V0KGZpZWxkKVxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtR3JvdXBCeVJvd1tpbmRleF0uZ2V0KGZpZWxkKTtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgICB0aGlzLmFkZEV4aXN0ZW50SGlzdG9yaWNEYXRhW2luZGV4XVtmaWVsZF0gPSB2YWx1ZTtcblxuICAgICAgICAgIGNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICAgICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcblxuICAgICAgICAgIGNvbnN0IGN1cnJlbnRMaXN0ID0gdGhpcy5hZGRFeGlzdGVudEhpc3RvcmljRGF0YS5tYXAoKGl0ZW0sIGkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBpID09PSBpbmRleCA/IDAgOiBpdGVtLnBlcmNlbnRhZ2U7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLnZhbGlkYXRlUGVyY2VudGFnZVZhbGlkKGN1cnJlbnRMaXN0LCB0aGlzLmZvcm1Hcm91cEJ5Um93W2luZGV4XSk7XG5cbiAgICAgICAgICB0aGlzLmVtaXRGb3JtVmFsaWRpdHkoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc2NvcGVkQWN0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9ucy5iaW5kKHRoaXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVjb3Jkc01lc3NhZ2UoKSB7XG4gICAgICAgIHJldHVybiBgJHsgdGhpcy50b3RhbFJlY29yZHMgfHwgMCB9ICR7IHRoaXMudG90YWxSZWNvcmRzID09PSAxID8gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5hZG1pc3Npb25fcmVnaXN0ZXJcIikgOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLmFkbWlzc2lvbl9yZWdpc3RlcnNcIikgfWA7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBnZXRUb29sdGlwQW5kRGlzYWJsZUJ1dHRvbkFkZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZUNoYW5nZSA/IG51bGwgOiB0aGlzLm1zZ1Rvb2x0aXBBZGQ7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGRhdGVDaGFuZ2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVDaGFuZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBkYXRlQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZGF0ZUNoYW5nZSA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5fZGF0ZUNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5saXN0RGF0YS5maWx0ZXIoKHJvdzogYW55KSA9PiByb3dbXCJkYXRlQ2hhbmdlXCJdID0gdGhpcy5fZGF0ZUNoYW5nZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgZGlzcGxheURhdGVDaGFuZ2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlEYXRlQ2hhbmdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgZGlzcGxheURhdGVDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9kaXNwbGF5RGF0ZUNoYW5nZSA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5fZGlzcGxheURhdGVDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMubGlzdERhdGEuZmlsdGVyKChyb3c6IGFueSkgPT4gcm93W1wiZGlzcGxheURhdGVDaGFuZ2VcIl0gPSB0aGlzLl9kaXNwbGF5RGF0ZUNoYW5nZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgYWRkTGlzdERhdGEobGlzdDogb2JqZWN0W10pIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5oaXN0b3JpY2FsUGl4QWNjb3VudExpc3QuZ2V0KFwiaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0XCIpLnBhdGNoVmFsdWUobGlzdCk7XG4gICAgICAgIHRoaXMudmVyaWZ5VG90YWxQZXJjZW50YWdlKCk7XG4gICAgICAgIHRoaXMub25MYXp5TG9hZCgpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgcGFyYW1zRm9ybSh2YWx1ZTogRm9ybUdyb3VwKSB7XG4gICAgICB0aGlzLl9wYXJhbXNGb3JtID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGRlZmF1bHRDcGZOdW1iZXIodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9kZWZhdWx0Q3BmTnVtYmVyID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCB2aXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Zpc2libGUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodGhpcy52aXNpYmxlKTtcbiAgICB9XG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0dGVkVGVsZXBob25lTnVtYmVyKHRlbGVwaG9uZU51bWJlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIEZvcm1hdFV0aWxzU2VydmljZS5nZXRGb3JtYXR0ZWRUZWxlcGhvbmVOdW1iZXIodGVsZXBob25lTnVtYmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0dGVkQ3BmKGNwZjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIEZvcm1hdFV0aWxzU2VydmljZS5nZXRGb3JtYXR0ZWRDcGYoY3BmKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0dGVkQ25waihjbnBqOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gRm9ybWF0VXRpbHNTZXJ2aWNlLmdldEZvcm1hdHRlZENucGooY25waik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZvcm1hdHRlZFBlcmNlbnRhZ2UodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBGb3JtYXRVdGlsc1NlcnZpY2UuZ2V0Rm9ybWF0dGVkUGVyY2VudGFnZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXNBbGxvd1RvQWRkSGlzdG9yaWNhbCgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMucGVybWlzc2lvbltcImluY2x1aXJcIl1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBpc0FsbG93VG9EZWxldGVIaXN0b3JpY2FsKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9uW1wiZXhjbHVpclwiXVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGlzQWxsb3dUb0VkaXRIaXN0b3JpY2FsKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9uW1wiZWRpdGFyXCJdXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXNBbGxvd1RvVmlld0hpc3RvcmljYWwoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25bXCJ2aXN1YWxpemFyXCJdXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
|
|
459
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yaWNhbC1waXgtYWNjb3VudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1wZXNzb2FzL3BheXJvbGwtY29yZS8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvaGlzdG9yaWNhbC1waXgtYWNjb3VudC9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxNQUFNLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxpQkFBaUIsRUFDakIsYUFBYSxFQUNiLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFNBQVMsRUFDVCxhQUFhLEdBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUF1QixNQUFNLG9DQUFvQyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBUWhGO0lBb0lJLHVDQUNZLGdCQUFrQyxFQUNsQyxFQUFxQixFQUNyQixXQUF3QixFQUN4QixjQUE4QjtRQUoxQyxpQkFPQztRQU5XLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsZ0JBQVcsR0FBWCxXQUFX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NkVBQzBCO0lBRWxDO1FBREMsS0FBSyxFQUFFO3NFQUN1QjtJQUUvQjtRQURDLEtBQUssRUFBRTt5RUFDK0I7SUFFdkM7UUFEQyxLQUFLLEVBQUU7d0VBQ3FCO0lBRTdCO1FBREMsS0FBSyxFQUFFO3FFQUMyQjtJQUVuQztRQURDLEtBQUssRUFBRTtxRUFDMkI7SUFFbkM7UUFEQyxLQUFLLEVBQUU7bUVBQzZCO0lBRXJDO1FBREMsS0FBSyxFQUFFO3VFQUNvQjtJQUU1QjtRQURDLEtBQUssRUFBRTt3RUFDcUI7SUFFN0I7UUFEQyxLQUFLLEVBQUU7c0VBQzJCO0lBRW5DO1FBREMsS0FBSyxFQUFFO3FFQUNxQjtJQUU3QjtRQURDLEtBQUssRUFBRTsyRUFDK0I7SUFFdkM7UUFEQyxLQUFLLEVBQUU7cUVBQ2tCO0lBRTFCO1FBREMsS0FBSyxFQUFFOzJFQUM0QjtJQUVwQztRQURDLEtBQUssRUFBRTt5RUFDK0I7SUFHdkM7UUFEQyxNQUFNLEVBQUU7MkVBQ2dFO0lBRXpFO1FBREMsTUFBTSxFQUFFOzJFQUNnRTtJQUV6RTtRQURDLE1BQU0sRUFBRTs2RUFDa0U7SUEwUTNFO1FBREMsS0FBSyxFQUFFO21FQUdQO0lBVUQ7UUFEQyxLQUFLLEVBQUU7MEVBR1A7SUFVRDtRQURDLEtBQUssRUFBRTtvRUFNUDtJQUdEO1FBREMsS0FBSyxFQUFFO2dFQUdQO0lBelZRLDZCQUE2QjtRQU56QyxTQUFTLENBQUM7WUFDUCw4Q0FBOEM7WUFDOUMsUUFBUSxFQUFFLDBCQUEwQjtZQUNwQyxpMVFBQXNEOztTQUV6RCxDQUFDO09BQ1csNkJBQTZCLENBOFl6QztJQUFELG9DQUFDO0NBQUEsQUE5WUQsSUE4WUM7U0E5WVksNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBJbnB1dCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgT3V0cHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQnVpbGRlciB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBDdXN0b21GaWVsZHNDb21wb25lbnQsIE51bWJlckxvY2FsZU9wdGlvbnMgfSBmcm9tIFwiQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgY29tcGFyZVZhbHVlcywgaXNWYWxpZCwgbW91bnRDdXN0b21Ub1NhdmUgfSBmcm9tIFwiLi4vdXRpbHMvaGVscGVyc1wiO1xuaW1wb3J0IHsgRGlyZWN0aW9uRW51bWVyYXRpb24gfSBmcm9tIFwiLi4vLi4vY29yZS9lbnVtc1wiO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gXCJwcmltZW5nL2FwaVwiO1xuaW1wb3J0IHsgRm9ybWF0VXRpbHNTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL2Zvcm1hdC11dGlscy9mb3JtYXQtdXRpbHMuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6IFwiYy1oaXN0b3JpY2FsLXBpeC1hY2NvdW50XCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuL2hpc3RvcmljYWwtcGl4LWFjY291bnQuY29tcG9uZW50LnNjc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIEhpc3RvcmljYWxQaXhBY2NvdW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gICAgQFZpZXdDaGlsZChDdXN0b21GaWVsZHNDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHB1YmxpYyBjdXN0b21GaWVsZHM6IEN1c3RvbUZpZWxkc0NvbXBvbmVudDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWVsZEZvcm1Hcm91cDogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIF9kYXRlQ2hhbmdlOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgX2Rpc3BsYXlEYXRlQ2hhbmdlOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVjb3JkQnlSb3c6IG51bWJlciA9IDE7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0RhdGVDaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtc2dUb29sdGlwQWRkOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXNFZGl0TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlzVmlld01vZGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjdXJyZW5jeTogTnVtYmVyTG9jYWxlT3B0aW9ucztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjdXN0b21FbnRpdHk6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjdXN0b21TZXJ2aWNlOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgd2l0aFNpZGVCYXI6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBhcmFtc0Zvcm06IEZvcm1Hcm91cDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkZWZhdWx0Q3BmTnVtYmVyOiBzdHJpbmcgPSBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBlcm1pc3Npb246IG9iamVjdDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsaXN0RGF0YVJlY2lldmVyOiBhbnlbXSA9IFtdO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dCdXR0b25FZGl0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgaXNWaWV3TW9kZUFjdGl2ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGlzRWRpdE1vZGVBY3RpdmU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBpc0RlbGV0ZU1vZGVBY3RpdmU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgcHJpdmF0ZSBsaXN0RnJvbUFwcDogYW55W10gPSBbXTtcbiAgICBwcml2YXRlIHZpc2libGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuICAgIHByaXZhdGUgaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0OiBGb3JtR3JvdXA7XG4gICAgcHJpdmF0ZSBvcmRlckJ5OiB7IGZpZWxkOiBzdHJpbmc7IGRpcmVjdGlvbjogRGlyZWN0aW9uRW51bWVyYXRpb24gfSA9IHtcbiAgICAgICAgZmllbGQ6IFwiZGF0ZUNoYW5nZVwiLFxuICAgICAgICBkaXJlY3Rpb246IERpcmVjdGlvbkVudW1lcmF0aW9uLkRFU0MsXG4gICAgfTtcblxuICAgIHByaXZhdGUgX3Zpc2libGU6IGJvb2xlYW47XG4gICAgcHVibGljIHBpeEFjY291bnRJdGVtSW5wdXQ6IG9iamVjdCA9IHt9O1xuICAgIHB1YmxpYyB0b3RhbFJlY29yZHM6IG51bWJlciA9IDA7XG4gICAgcHVibGljIGFjdGlvbkxhYmVsOiBzdHJpbmcgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLmVudHJpZXNfcXVlcnlfYWN0aW9uc190b3RhbF90aXRsZVwiKTtcbiAgICBwdWJsaWMgbG9hZGluZyA9IHRydWU7XG4gICAgcHVibGljIHBhcmFtZXRlcnM6IGFueTtcbiAgICBwdWJsaWMgbXNnVG90YWxMaW1pdEJ5UGVyY2VudGFnZTogc3RyaW5nO1xuICAgIHB1YmxpYyBsaXN0RGF0YTogb2JqZWN0W10gPSBbXTtcbiAgICBwdWJsaWMgbGlzdERhdGFOb1BhZ2U6IG9iamVjdFtdID0gW107XG4gICAgcHVibGljIHBlcm1pdHNFZGl0QmFua0FjY291bnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgY29scyA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX2FkZGl0aW9uX3BpeF9rZXlfdHlwZVwiKSxcbiAgICAgICAgICAgIGZpZWxkOiBcInBpeEtleVR5cGVcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX2FkZGl0aW9uX3BpeF9rZXlcIiksXG4gICAgICAgICAgICBmaWVsZDogXCJwaXhLZXlcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuaGlzdG9yaWNhbF9waXhfYWNjb3VudF9sYWJlbF9wZXJjZW50YWdlXCIpLFxuICAgICAgICAgICAgZmllbGQ6IFwicGVyY2VudGFnZVwiLFxuICAgICAgICB9LFxuICAgIF07XG4gICAgYWN0aW9ucyA9IChyb3dEYXRhOiBhbnkgPSB7fSwga2V5OiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLmlzRWRpdE1vZGUsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX2ltYWdlX2Nyb3BwZXJfdmlld1wiKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQWxsb3dUb1ZpZXdIaXN0b3JpY2FsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3dEYXRhW1wiaW5kZXhcIl0gPSBrZXk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBpeEFjY291bnRJdGVtSW5wdXQgPSB7IGN1cnJlbnRJdGVtOiByb3dEYXRhLCBsaXN0RGF0YTogdGhpcy5saXN0RGF0YU5vUGFnZSwgaXNFZGl0TW9kZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzVmlld01vZGVBY3RpdmUuZW1pdCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZpc2libGU6ICEhKCghdGhpcy5pc0VkaXRNb2RlICYmIHRoaXMud2l0aFNpZGVCYXIpIHx8IHRoaXMuc2hvd0J1dHRvbkVkaXQpLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLmVkaXRcIiksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0FsbG93VG9FZGl0SGlzdG9yaWNhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93RGF0YVtcImluZGV4XCJdID0ga2V5O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50SXRlbUlucHV0ID0geyBjdXJyZW50SXRlbTogcm93RGF0YSwgbGlzdERhdGE6IHRoaXMubGlzdERhdGFOb1BhZ2UsIGlzRWRpdE1vZGU6IHRydWUgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRWRpdE1vZGVBY3RpdmUuZW1pdCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxpc3RGcm9tQXBwLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93RGF0YVtcImluZGV4XCJdID0ga2V5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGl4QWNjb3VudEl0ZW1JbnB1dCA9IHsgY3VycmVudEl0ZW06IHJvd0RhdGEsIGxpc3REYXRhOiB0aGlzLmxpc3REYXRhTm9QYWdlLCBpc0VkaXRNb2RlOiB0cnVlIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZpc2libGU6ICF0aGlzLmlzRWRpdE1vZGUsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZGVsZXRlXCIpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNBbGxvd1RvRGVsZXRlSGlzdG9yaWNhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlQW5udWl0eUl0ZW0oa2V5KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNEZWxldGVNb2RlQWN0aXZlLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5saXN0RnJvbUFwcC5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWxldGVBbm51aXR5SXRlbShrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgICAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgdGhpcy5jcmVhdGVGb3JtR3JvdXAoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuc2V0Q29udHJvbCh0aGlzLmZpZWxkRm9ybUdyb3VwLCB0aGlzLmhpc3RvcmljYWxQaXhBY2NvdW50TGlzdCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlc1snbGlzdERhdGFSZWNpZXZlciddICYmIGNoYW5nZXNbJ2xpc3REYXRhUmVjaWV2ZXInXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubGlzdEZyb21BcHAgPSBjaGFuZ2VzWydsaXN0RGF0YVJlY2lldmVyJ10uY3VycmVudFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzWydzaG93QnV0dG9uRWRpdCddICYmIGNoYW5nZXNbJ3Nob3dCdXR0b25FZGl0J10uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnBlcm1pdHNFZGl0QmFua0FjY291bnQgPSBjaGFuZ2VzWydzaG93QnV0dG9uRWRpdCddLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRm9ybUdyb3VwKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhpc3RvcmljYWxQaXhBY2NvdW50TGlzdCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0OiB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkxhenlMb2FkKGV2ZW50PzogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpcnN0ID0gZXZlbnQgJiYgZXZlbnQuZmlyc3QgPyBldmVudC5maXJzdCA6IDA7XG4gICAgICAgIGNvbnN0IHJvd3MgPSBldmVudCAmJiBldmVudC5yb3dzID8gZXZlbnQucm93cyA6IHRoaXMucmVjb3JkQnlSb3c7XG4gICAgICAgIGNvbnN0IGFyckxpc3QgPSB0aGlzLmdldEhpc3RvcmljYWxQaXhBY2NvdW50TGlzdCgpO1xuICAgICAgICB0aGlzLmxpc3REYXRhID0gW107XG4gICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gbnVsbDtcblxuICAgICAgICBpZiAoZXZlbnQgJiYgZXZlbnQubXVsdGlTb3J0TWV0YSAmJiBldmVudC5tdWx0aVNvcnRNZXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgZXZlbnQubXVsdGlTb3J0TWV0YS5tYXAoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9yZGVyQnkuZmllbGQgPSB2YWx1ZS5maWVsZDtcbiAgICAgICAgICAgICAgICB0aGlzLm9yZGVyQnkuZGlyZWN0aW9uID0gdmFsdWUub3JkZXIgPT09IDEgPyBEaXJlY3Rpb25FbnVtZXJhdGlvbi5BU0MgOiBEaXJlY3Rpb25FbnVtZXJhdGlvbi5ERVNDO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXJyTGlzdCAmJiBhcnJMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSBhcnJMaXN0Lmxlbmd0aDtcbiAgICAgICAgICAgIHRoaXMubGlzdERhdGEgPSBhcnJMaXN0O1xuICAgICAgICAgICAgdGhpcy5saXN0RGF0YU5vUGFnZSA9IFsuLi5hcnJMaXN0XTtcbiAgICAgICAgICAgIHRoaXMubGlzdERhdGEuc29ydChjb21wYXJlVmFsdWVzKHRoaXMub3JkZXJCeS5maWVsZCwgdGhpcy5vcmRlckJ5LmRpcmVjdGlvbikpO1xuICAgICAgICAgICAgdGhpcy5saXN0RGF0YSA9IHRoaXMubGlzdERhdGEuc2xpY2UoZmlyc3QsIChmaXJzdCArIHJvd3MpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGlzdERhdGFOb1BhZ2UgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzRWRpdE1vZGUgfHwgYXJyTGlzdCAmJiBhcnJMaXN0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoQ3NzSW5JRTExKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcblxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVtIEJ1ZyBkZSBDU1MgcXVlIGFjb250ZWNlIG5hcyBsaW5oYXMgZGEgdGFiZWxhLCBxdWUgcmVzb2x2ZSBzw7MgYXR1YWxpemFuZG8gcXVhbHF1ZXIgcGFydGUgZG8gQ1NTIGRhIHBhZ2luYS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlZnJlc2hDc3NJbklFMTEoKSB7XG4gICAgICAgIGlmICgvbXNpZVxcc3x0cmlkZW50XFwvfGVkZ2VcXC8vaS50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KSkge1xuICAgICAgICAgICAgc2V0VGltZW91dCggKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvdyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJyb3cwXCIpO1xuICAgICAgICAgICAgICAgIGlmIChyb3cgJiYgcm93WzBdKVxuICAgICAgICAgICAgICAgICAgICByb3dbMF0uY2xhc3NOYW1lID0gJ3JlZnJlc2gnO1xuICAgICAgICAgICAgfSwgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBpeEFjY291bnRJdGVtSW5wdXQgPSB7fTtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTm90QWxsb3dNZXNzYWdlKCkge1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICBzZXZlcml0eTogXCJlcnJvclwiLFxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5lcnJvclwiKSxcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5wZXJtaXNzaW9uX2Vycm9yX25vdF9hbGxvd2VkXCIpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlbGV0ZUFubnVpdHlJdGVtKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgbGV0IG5ld2xpc3QgPSBbLi4udGhpcy5nZXRIaXN0b3JpY2FsUGl4QWNjb3VudExpc3QoKV07XG4gICAgICAgIG5ld2xpc3Quc29ydChjb21wYXJlVmFsdWVzKHRoaXMub3JkZXJCeS5maWVsZCwgdGhpcy5vcmRlckJ5LmRpcmVjdGlvbikpO1xuICAgICAgICBkZWxldGUgbmV3bGlzdFtpbmRleF07XG4gICAgICAgIG5ld2xpc3QgPSBuZXdsaXN0LmZpbHRlcih2YWwgPT4gdmFsKTtcbiAgICAgICAgdGhpcy5oaXN0b3JpY2FsUGl4QWNjb3VudExpc3QuZ2V0KFwiaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0XCIpLnNldFZhbHVlKG5ld2xpc3QpO1xuICAgICAgICB0aGlzLnZlcmlmeVRvdGFsUGVyY2VudGFnZSgpO1xuICAgICAgICB0aGlzLm9uTGF6eUxvYWQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SGlzdG9yaWNhbFBpeEFjY291bnRMaXN0KCk6IG9iamVjdFtdIHtcbiAgICAgICAgaWYgKHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0LmdldChcImhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFwiKSAmJlxuICAgICAgICAgICAgdGhpcy5oaXN0b3JpY2FsUGl4QWNjb3VudExpc3QuZ2V0KFwiaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0XCIpLnZhbHVlICYmXG4gICAgICAgICAgICB0aGlzLmhpc3RvcmljYWxQaXhBY2NvdW50TGlzdC5nZXQoXCJoaXN0b3JpY2FsUGl4QWNjb3VudExpc3RcIikudmFsdWUubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0LmdldChcImhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFwiKSAmJiB0aGlzLmhpc3RvcmljYWxQaXhBY2NvdW50TGlzdC5nZXQoXCJoaXN0b3JpY2FsUGl4QWNjb3VudExpc3RcIikudmFsdWU7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkSXRlbUluTGlzdCgkZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmRleCA9ICRldmVudCAmJiAkZXZlbnQuaW5kZXggPj0gMCA/ICRldmVudC5pbmRleCA6IG51bGw7XG4gICAgICAgIGNvbnN0IG5ld0RhdGFMaXN0ID0gdGhpcy5nZXRIaXN0b3JpY2FsUGl4QWNjb3VudExpc3QoKSA/IHRoaXMuZ2V0SGlzdG9yaWNhbFBpeEFjY291bnRMaXN0KCkgOiBbXTtcblxuICAgICAgICBpZiAoaW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgbmV3RGF0YUxpc3RbaW5kZXhdID0gJGV2ZW50O1xuICAgICAgICAgICAgZGVsZXRlICRldmVudC5pbmRleDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpc1ZhbGlkKCRldmVudFtcImN1c3RvbUZpZWxkc1wiXSkgJiYgT2JqZWN0LmtleXMoJGV2ZW50W1wiY3VzdG9tRmllbGRzXCJdKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXN0b21WYWx1ZSA9IG1vdW50Q3VzdG9tVG9TYXZlKCRldmVudFtcImN1c3RvbUZpZWxkc1wiXSk7XG4gICAgICAgICAgICAgICAgJGV2ZW50W1wiY3VzdG9tRmllbGRzXCJdID0gWy4uLmN1c3RvbVZhbHVlXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICRldmVudFtcImRhdGVDaGFuZ2VcIl0gPSB0aGlzLmRhdGVDaGFuZ2U7XG4gICAgICAgICAgICBuZXdEYXRhTGlzdC5wdXNoKCRldmVudCk7XG4gICAgICAgIH1cblxuXG5cbiAgICAgICAgdGhpcy5oaXN0b3JpY2FsUGl4QWNjb3VudExpc3QuZ2V0KFwiaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0XCIpLnNldFZhbHVlKG5ld0RhdGFMaXN0KTtcbiAgICAgICAgdGhpcy52ZXJpZnlUb3RhbFBlcmNlbnRhZ2UoKTtcbiAgICAgICAgdGhpcy5vbkxhenlMb2FkKHsgZmlyc3Q6IHRoaXMuZ2V0TnVtYmVyUGFnZUJ5SW5kZXgoaW5kZXgsIG5ld0RhdGFMaXN0KSB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE51bWJlclBhZ2VCeUluZGV4KGluZGV4OiBudW1iZXIsIGxpc3Q6IG9iamVjdFtdKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKGluZGV4KSB7XG4gICAgICAgICAgICBjb25zdCB0b3RhbCA9IGxpc3QubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3Qgc3ViID0gdGhpcy5yZWNvcmRCeVJvdyAtIDE7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5jZWlsKHRvdGFsIC8gdGhpcy5yZWNvcmRCeVJvdykgKiB0aGlzLnJlY29yZEJ5Um93IC0gc3ViIC0gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZlcmlmeVRvdGFsUGVyY2VudGFnZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGlzdCA9IHRoaXMuZ2V0SGlzdG9yaWNhbFBpeEFjY291bnRMaXN0KCkgPyB0aGlzLmdldEhpc3RvcmljYWxQaXhBY2NvdW50TGlzdCgpIDogW107XG4gICAgICAgIGNvbnN0IGFycmF5UGVyY2VudGFnZTogYW55ID0gW107XG5cbiAgICAgICAgaWYgKCFsaXN0Lmxlbmd0aCkgcmV0dXJuIHRoaXMubXNnVG90YWxMaW1pdEJ5UGVyY2VudGFnZSA9IG51bGw7XG5cbiAgICAgICAgbGlzdC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gYXJyYXlQZXJjZW50YWdlLnB1c2goaXRlbSAmJiBpdGVtW1wicGVyY2VudGFnZVwiXSkpO1xuXG4gICAgICAgIGNvbnN0IHN1bVBlcmNlbnRhZ2UgPSBhcnJheVBlcmNlbnRhZ2UucmVkdWNlKCh0b3RhbDogbnVtYmVyLCBwZXJjZW50YWdlOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0b3RhbCArIHBlcmNlbnRhZ2U7XG4gICAgICAgIH0sIDApO1xuXG4gICAgICAgIGlmIChzdW1QZXJjZW50YWdlID09PSAxMDApIHtcbiAgICAgICAgICAgIHRoaXMubXNnVG90YWxMaW1pdEJ5UGVyY2VudGFnZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuaGlzdG9yaWNhbF9waXhfYWNjb3VudF9tc2dfbGltaXRfdG90YWxfYnlfcGVyY2VudGFnZVwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubXNnVG90YWxMaW1pdEJ5UGVyY2VudGFnZSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc2NvcGVkQWN0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9ucy5iaW5kKHRoaXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVjb3Jkc01lc3NhZ2UoKSB7XG4gICAgICAgIHJldHVybiBgJHsgdGhpcy50b3RhbFJlY29yZHMgfHwgMCB9ICR7IHRoaXMudG90YWxSZWNvcmRzID09PSAxID8gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5hZG1pc3Npb25fcmVnaXN0ZXJcIikgOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLmFkbWlzc2lvbl9yZWdpc3RlcnNcIikgfWA7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBnZXRUb29sdGlwQW5kRGlzYWJsZUJ1dHRvbkFkZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZUNoYW5nZSA/IG51bGwgOiB0aGlzLm1zZ1Rvb2x0aXBBZGQ7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGRhdGVDaGFuZ2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVDaGFuZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBkYXRlQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZGF0ZUNoYW5nZSA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5fZGF0ZUNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5saXN0RGF0YS5maWx0ZXIoKHJvdzogYW55KSA9PiByb3dbXCJkYXRlQ2hhbmdlXCJdID0gdGhpcy5fZGF0ZUNoYW5nZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgZGlzcGxheURhdGVDaGFuZ2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlEYXRlQ2hhbmdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgZGlzcGxheURhdGVDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9kaXNwbGF5RGF0ZUNoYW5nZSA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5fZGlzcGxheURhdGVDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMubGlzdERhdGEuZmlsdGVyKChyb3c6IGFueSkgPT4gcm93W1wiZGlzcGxheURhdGVDaGFuZ2VcIl0gPSB0aGlzLl9kaXNwbGF5RGF0ZUNoYW5nZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgYWRkTGlzdERhdGEobGlzdDogb2JqZWN0W10pIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5oaXN0b3JpY2FsUGl4QWNjb3VudExpc3QuZ2V0KFwiaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0XCIpLnBhdGNoVmFsdWUobGlzdCk7XG4gICAgICAgIHRoaXMudmVyaWZ5VG90YWxQZXJjZW50YWdlKCk7XG4gICAgICAgIHRoaXMub25MYXp5TG9hZCgpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IHZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fdmlzaWJsZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdCh0aGlzLnZpc2libGUpO1xuXG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucGl4QWNjb3VudEl0ZW1JbnB1dCA9IHt9O1xuICAgICAgICB9XG4gICAgfVxuICAgIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZvcm1hdHRlZFRlbGVwaG9uZU51bWJlcih0ZWxlcGhvbmVOdW1iZXI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBGb3JtYXRVdGlsc1NlcnZpY2UuZ2V0Rm9ybWF0dGVkVGVsZXBob25lTnVtYmVyKHRlbGVwaG9uZU51bWJlcik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZvcm1hdHRlZENwZihjcGY6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBGb3JtYXRVdGlsc1NlcnZpY2UuZ2V0Rm9ybWF0dGVkQ3BmKGNwZik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZvcm1hdHRlZENucGooY25wajogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIEZvcm1hdFV0aWxzU2VydmljZS5nZXRGb3JtYXR0ZWRDbnBqKGNucGopO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGb3JtYXR0ZWRQZXJjZW50YWdlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gRm9ybWF0VXRpbHNTZXJ2aWNlLmdldEZvcm1hdHRlZFBlcmNlbnRhZ2UodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGlzQWxsb3dUb0FkZEhpc3RvcmljYWwoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25bXCJpbmNsdWlyXCJdXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXNBbGxvd1RvRGVsZXRlSGlzdG9yaWNhbCgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMucGVybWlzc2lvbltcImV4Y2x1aXJcIl1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBpc0FsbG93VG9FZGl0SGlzdG9yaWNhbCgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMucGVybWlzc2lvbltcImVkaXRhclwiXVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGlzQWxsb3dUb1ZpZXdIaXN0b3JpY2FsKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9uW1widmlzdWFsaXphclwiXVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|