@senior-gestao-pessoas/payroll-core 9.4.0-f9d3c09b-0079-4f7c-94cf-dd79338e7089 → 9.5.0-d4960af2-4da8-48bf-aac1-4d553cb625ef
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 +1192 -778
- package/bundles/senior-gestao-pessoas-payroll-core.umd.js.map +1 -1
- package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js +16 -1
- package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js.map +1 -1
- package/components/historical-pix-account/historical-pix-account-base.d.ts +27 -0
- package/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.d.ts +8 -40
- package/components/historical-pix-account/historical-pix-account.component.d.ts +38 -8
- package/components/historical-pix-account/historical-pix-account.service.d.ts +1 -0
- package/components/historical-pix-account-list/historical-pix-account-list.component.d.ts +10 -1
- package/components/shared/index.d.ts +1 -0
- package/components/shared/shared-state.service.d.ts +14 -0
- package/components/utils/format-utils/format-utils.service.d.ts +30 -3
- package/esm2015/components/historical-pix-account/historical-pix-account-base.js +173 -0
- package/esm2015/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.js +29 -187
- package/esm2015/components/historical-pix-account/historical-pix-account.component.js +223 -20
- package/esm2015/components/historical-pix-account/historical-pix-account.module.js +5 -1
- package/esm2015/components/historical-pix-account/historical-pix-account.service.js +8 -1
- package/esm2015/components/historical-pix-account-list/historical-pix-account-list.component.js +42 -4
- package/esm2015/components/shared/index.js +2 -0
- package/esm2015/components/shared/shared-state.service.js +36 -0
- package/esm2015/components/utils/format-utils/format-utils.service.js +88 -5
- package/esm2015/public_api.js +2 -1
- package/esm2015/senior-gestao-pessoas-payroll-core.js +3 -2
- package/esm5/components/historical-pix-account/historical-pix-account-base.js +186 -0
- package/esm5/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.js +53 -201
- package/esm5/components/historical-pix-account/historical-pix-account.component.js +265 -49
- package/esm5/components/historical-pix-account/historical-pix-account.module.js +5 -1
- package/esm5/components/historical-pix-account/historical-pix-account.service.js +8 -1
- package/esm5/components/historical-pix-account-list/historical-pix-account-list.component.js +47 -4
- package/esm5/components/shared/index.js +2 -0
- package/esm5/components/shared/shared-state.service.js +37 -0
- package/esm5/components/utils/format-utils/format-utils.service.js +88 -5
- package/esm5/public_api.js +2 -1
- package/esm5/senior-gestao-pessoas-payroll-core.js +3 -2
- package/fesm2015/senior-gestao-pessoas-payroll-core.js +851 -478
- package/fesm2015/senior-gestao-pessoas-payroll-core.js.map +1 -1
- package/fesm5/senior-gestao-pessoas-payroll-core.js +1188 -775
- package/fesm5/senior-gestao-pessoas-payroll-core.js.map +1 -1
- package/package.json +2 -32
- package/public_api.d.ts +1 -0
- package/senior-gestao-pessoas-payroll-core.d.ts +2 -1
- package/senior-gestao-pessoas-payroll-core.metadata.json +1 -1
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import * as tslib_1 from "tslib";
|
|
2
|
+
import { FormGroup, Validators, } from "@angular/forms";
|
|
3
|
+
import { GenericValidator } from "../utils/generic-validators";
|
|
4
|
+
import { FormatUtilsService } from "../utils/format-utils/format-utils.service";
|
|
5
|
+
var HistoricakPixAccountBase = /** @class */ (function () {
|
|
6
|
+
function HistoricakPixAccountBase(formBuilder) {
|
|
7
|
+
this._paramsForm = new FormGroup({});
|
|
8
|
+
this._defaultCpfNumber = null;
|
|
9
|
+
this.initialValidatorOfPercentage = [Validators.required, Validators.min(0.01)];
|
|
10
|
+
this.pixAccountList = [];
|
|
11
|
+
this.maxValuePercentage = 100.0;
|
|
12
|
+
this.isShowPixKeyFieldValidatorMessage = false;
|
|
13
|
+
this.formBuilder = formBuilder;
|
|
14
|
+
this.createFormGroupBase();
|
|
15
|
+
}
|
|
16
|
+
HistoricakPixAccountBase.prototype.phoneMask = function (event) {
|
|
17
|
+
FormatUtilsService.formatTelephoneInputEvent(event);
|
|
18
|
+
};
|
|
19
|
+
HistoricakPixAccountBase.prototype.cpfMask = function (event) {
|
|
20
|
+
FormatUtilsService.formatCpfInputEvent(event);
|
|
21
|
+
};
|
|
22
|
+
HistoricakPixAccountBase.prototype.cnpjMask = function (event) {
|
|
23
|
+
FormatUtilsService.formatCnpjInputEvent(event);
|
|
24
|
+
};
|
|
25
|
+
HistoricakPixAccountBase.prototype.onChangePixKeyType = function (item, form) {
|
|
26
|
+
if (!item || !item.key)
|
|
27
|
+
return;
|
|
28
|
+
this.pixKeyType = item.key;
|
|
29
|
+
var targetForm = (typeof form !== 'undefined' && form !== null)
|
|
30
|
+
? form
|
|
31
|
+
: this.pixAccountFormGroup;
|
|
32
|
+
this.isShowPixKeyFieldValidatorMessage = true;
|
|
33
|
+
var pixKeyControl = targetForm.get("pixKey");
|
|
34
|
+
if (pixKeyControl) {
|
|
35
|
+
pixKeyControl.reset();
|
|
36
|
+
}
|
|
37
|
+
this.setPixKeyValidators(true, targetForm);
|
|
38
|
+
if (item.key === "CPF") {
|
|
39
|
+
this.setDefaultCpfPixKey(targetForm);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
HistoricakPixAccountBase.prototype.onClearPixKeyType = function (form) {
|
|
43
|
+
var targetForm = (typeof form !== 'undefined' && form !== null)
|
|
44
|
+
? form
|
|
45
|
+
: this.pixAccountFormGroup;
|
|
46
|
+
this.isShowPixKeyFieldValidatorMessage = false;
|
|
47
|
+
if (targetForm.get("pixKey")) {
|
|
48
|
+
targetForm.get("pixKey").reset();
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
HistoricakPixAccountBase.prototype.setDefaultCpfPixKey = function (form) {
|
|
52
|
+
var targetForm = (typeof form !== 'undefined' && form !== null)
|
|
53
|
+
? form
|
|
54
|
+
: this.pixAccountFormGroup;
|
|
55
|
+
if (this._defaultCpfNumber) {
|
|
56
|
+
if (targetForm.get("pixKey")) {
|
|
57
|
+
targetForm.get("pixKey").setValue(this._defaultCpfNumber);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
var sheetDocument = this._paramsForm.get("sheetDocument");
|
|
62
|
+
if (sheetDocument && sheetDocument.get("cpfNumber")) {
|
|
63
|
+
var cpf = sheetDocument.get("cpfNumber").value;
|
|
64
|
+
if (cpf && targetForm.get("pixKey")) {
|
|
65
|
+
targetForm.get("pixKey").setValue(cpf);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
HistoricakPixAccountBase.prototype.createFormGroupBase = function () {
|
|
71
|
+
this.pixAccountFormGroup = this.formBuilder.group({
|
|
72
|
+
id: this.formBuilder.control(null),
|
|
73
|
+
index: this.formBuilder.control(null),
|
|
74
|
+
employee: this.formBuilder.control({ value: { tableId: null }, disabled: true }),
|
|
75
|
+
dateChange: this.formBuilder.control(null),
|
|
76
|
+
pixKeyType: this.formBuilder.control(null, Validators.required),
|
|
77
|
+
pixKey: this.formBuilder.control(null),
|
|
78
|
+
percentage: this.formBuilder.control(null, Validators.compose(tslib_1.__spread(this.initialValidatorOfPercentage, [
|
|
79
|
+
Validators.max(this.maxValuePercentage),
|
|
80
|
+
]))),
|
|
81
|
+
externalId: this.formBuilder.control(null),
|
|
82
|
+
customFields: this.formBuilder.control(null),
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
HistoricakPixAccountBase.prototype.setValidatorsAccordingList = function (pixAccountList, index, isEditMode, form) {
|
|
86
|
+
if (index === void 0) { index = null; }
|
|
87
|
+
if (isEditMode === void 0) { isEditMode = true; }
|
|
88
|
+
var targetForm = (typeof form !== 'undefined' && form !== null)
|
|
89
|
+
? form
|
|
90
|
+
: this.pixAccountFormGroup;
|
|
91
|
+
this.pixAccountList = (pixAccountList && pixAccountList.length > 0)
|
|
92
|
+
? [].concat(pixAccountList)
|
|
93
|
+
: [];
|
|
94
|
+
var percentageIncluded = [];
|
|
95
|
+
for (var i = 0; i < this.pixAccountList.length; i++) {
|
|
96
|
+
var field = this.pixAccountList[i];
|
|
97
|
+
if (field && field.percentage && i !== index) {
|
|
98
|
+
percentageIncluded.push(field.percentage);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
this.beforeSetPixKeyTypeValidator(targetForm);
|
|
102
|
+
this.setPixKeyValidators(isEditMode, targetForm);
|
|
103
|
+
this.validatePercentageValid(percentageIncluded, targetForm);
|
|
104
|
+
};
|
|
105
|
+
HistoricakPixAccountBase.prototype.beforeSetPixKeyTypeValidator = function (form) {
|
|
106
|
+
var control = form.get("pixKeyType");
|
|
107
|
+
if (this.pixAccountList && this.pixAccountList.length) {
|
|
108
|
+
control.setValidators(Validators.compose([
|
|
109
|
+
Validators.required,
|
|
110
|
+
this.validateDuplicatePixKeyTypeBankAccount(this.pixAccountList),
|
|
111
|
+
]));
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
control.setValidators(Validators.required);
|
|
115
|
+
}
|
|
116
|
+
control.updateValueAndValidity();
|
|
117
|
+
};
|
|
118
|
+
HistoricakPixAccountBase.prototype.setPixKeyValidators = function (isEditMode, form) {
|
|
119
|
+
var pixKey = form.get("pixKey");
|
|
120
|
+
switch (this.pixKeyType) {
|
|
121
|
+
case "TELEPHONE":
|
|
122
|
+
pixKey.setValidators(Validators.compose([Validators.required, GenericValidator.isValidPhoneNumber]));
|
|
123
|
+
break;
|
|
124
|
+
case "EMAIL":
|
|
125
|
+
pixKey.setValidators(Validators.compose([Validators.required, GenericValidator.isValidEmail]));
|
|
126
|
+
break;
|
|
127
|
+
case "CPF":
|
|
128
|
+
pixKey.setValidators(Validators.compose([Validators.required, GenericValidator.isValidCpf]));
|
|
129
|
+
break;
|
|
130
|
+
case "CNPJ":
|
|
131
|
+
pixKey.setValidators(Validators.compose([Validators.required, GenericValidator.isValidCnpj]));
|
|
132
|
+
break;
|
|
133
|
+
case "RANDOM_KEY":
|
|
134
|
+
pixKey.setValidators(Validators.required);
|
|
135
|
+
break;
|
|
136
|
+
default:
|
|
137
|
+
pixKey.clearValidators();
|
|
138
|
+
}
|
|
139
|
+
if (isEditMode) {
|
|
140
|
+
pixKey.enable();
|
|
141
|
+
}
|
|
142
|
+
pixKey.updateValueAndValidity();
|
|
143
|
+
};
|
|
144
|
+
HistoricakPixAccountBase.prototype.validatePercentageValid = function (listValue, form) {
|
|
145
|
+
var percentage = form.get("percentage");
|
|
146
|
+
this.maxValuePercentage = listValue.reduce(function (acc, val) { return acc - val; }, 100.0);
|
|
147
|
+
percentage.setValidators(Validators.compose(tslib_1.__spread(this.initialValidatorOfPercentage, [
|
|
148
|
+
Validators.max(this.maxValuePercentage),
|
|
149
|
+
])));
|
|
150
|
+
percentage.updateValueAndValidity();
|
|
151
|
+
};
|
|
152
|
+
HistoricakPixAccountBase.prototype.validateDuplicatePixKeyTypeBankAccount = function (listCompare) {
|
|
153
|
+
return function (control) {
|
|
154
|
+
var value = control.value;
|
|
155
|
+
var isDuplicate = listCompare.some(function (field) {
|
|
156
|
+
return value &&
|
|
157
|
+
field.pixKeyType.key === "BANK_ACCOUNT" &&
|
|
158
|
+
value.key === "BANK_ACCOUNT";
|
|
159
|
+
});
|
|
160
|
+
return isDuplicate ? { pixKeyTypeBankAccountDuplicate: true } : null;
|
|
161
|
+
};
|
|
162
|
+
};
|
|
163
|
+
Object.defineProperty(HistoricakPixAccountBase.prototype, "paramsForm", {
|
|
164
|
+
get: function () {
|
|
165
|
+
return this._paramsForm;
|
|
166
|
+
},
|
|
167
|
+
set: function (value) {
|
|
168
|
+
this._paramsForm = value;
|
|
169
|
+
},
|
|
170
|
+
enumerable: true,
|
|
171
|
+
configurable: true
|
|
172
|
+
});
|
|
173
|
+
Object.defineProperty(HistoricakPixAccountBase.prototype, "defaultCpfNumber", {
|
|
174
|
+
get: function () {
|
|
175
|
+
return this._defaultCpfNumber;
|
|
176
|
+
},
|
|
177
|
+
set: function (value) {
|
|
178
|
+
this._defaultCpfNumber = value;
|
|
179
|
+
},
|
|
180
|
+
enumerable: true,
|
|
181
|
+
configurable: true
|
|
182
|
+
});
|
|
183
|
+
return HistoricakPixAccountBase;
|
|
184
|
+
}());
|
|
185
|
+
export { HistoricakPixAccountBase };
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yaWNhbC1waXgtYWNjb3VudC1iYXNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvci1nZXN0YW8tcGVzc29hcy9wYXlyb2xsLWNvcmUvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2hpc3RvcmljYWwtcGl4LWFjY291bnQvaGlzdG9yaWNhbC1waXgtYWNjb3VudC1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBR0gsU0FBUyxFQUVULFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRWhGO0lBWUUsa0NBQVksV0FBd0I7UUFWMUIsZ0JBQVcsR0FBYyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzQyxzQkFBaUIsR0FBVyxJQUFJLENBQUM7UUFFcEMsaUNBQTRCLEdBQWtCLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDMUYsbUJBQWMsR0FBYSxFQUFFLENBQUM7UUFDOUIsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRzNCLHNDQUFpQyxHQUFHLEtBQUssQ0FBQztRQUcvQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sNENBQVMsR0FBaEIsVUFBaUIsS0FBVTtRQUN2QixrQkFBa0IsQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU0sMENBQU8sR0FBZCxVQUFlLEtBQVU7UUFDckIsa0JBQWtCLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVNLDJDQUFRLEdBQWYsVUFBZ0IsS0FBVTtRQUN0Qixr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QUMzQixDQUFDOzs7T0FKQTtJQU1ELHNCQUFXLHNEQUFnQjthQUEzQjtZQUNFLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQ2hDLENBQUM7YUFFRCxVQUE0QixLQUFhO1lBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDakMsQ0FBQzs7O09BSkE7SUFLSCwrQkFBQztBQUFELENBQUMsQUEzTkQsSUEyTkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFic3RyYWN0Q29udHJvbCxcbiAgICBGb3JtQnVpbGRlcixcbiAgICBGb3JtR3JvdXAsXG4gICAgVmFsaWRhdG9yRm4sXG4gICAgVmFsaWRhdG9ycyxcbiAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbiAgaW1wb3J0IHsgR2VuZXJpY1ZhbGlkYXRvciB9IGZyb20gXCIuLi91dGlscy9nZW5lcmljLXZhbGlkYXRvcnNcIjtcbiAgaW1wb3J0IHsgRm9ybWF0VXRpbHNTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL2Zvcm1hdC11dGlscy9mb3JtYXQtdXRpbHMuc2VydmljZVwiO1xuXG4gIGV4cG9ydCBhYnN0cmFjdCBjbGFzcyBIaXN0b3JpY2FrUGl4QWNjb3VudEJhc2Uge1xuICAgIHByb3RlY3RlZCBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXI7XG4gICAgcHJvdGVjdGVkIF9wYXJhbXNGb3JtOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICBwcm90ZWN0ZWQgX2RlZmF1bHRDcGZOdW1iZXI6IHN0cmluZyA9IG51bGw7XG5cbiAgICBwdWJsaWMgaW5pdGlhbFZhbGlkYXRvck9mUGVyY2VudGFnZTogVmFsaWRhdG9yRm5bXSA9IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbigwLjAxKV07XG4gICAgcHVibGljIHBpeEFjY291bnRMaXN0OiBvYmplY3RbXSA9IFtdO1xuICAgIHB1YmxpYyBtYXhWYWx1ZVBlcmNlbnRhZ2UgPSAxMDAuMDtcbiAgICBwdWJsaWMgcGl4S2V5VHlwZTogc3RyaW5nO1xuICAgIHB1YmxpYyBwaXhBY2NvdW50Rm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gICAgcHVibGljIGlzU2hvd1BpeEtleUZpZWxkVmFsaWRhdG9yTWVzc2FnZSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XG4gICAgICB0aGlzLmZvcm1CdWlsZGVyID0gZm9ybUJ1aWxkZXI7XG4gICAgICB0aGlzLmNyZWF0ZUZvcm1Hcm91cEJhc2UoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcGhvbmVNYXNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgRm9ybWF0VXRpbHNTZXJ2aWNlLmZvcm1hdFRlbGVwaG9uZUlucHV0RXZlbnQoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcGZNYXNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgRm9ybWF0VXRpbHNTZXJ2aWNlLmZvcm1hdENwZklucHV0RXZlbnQoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbnBqTWFzayhldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIEZvcm1hdFV0aWxzU2VydmljZS5mb3JtYXRDbnBqSW5wdXRFdmVudChldmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2hhbmdlUGl4S2V5VHlwZShpdGVtOiBhbnksIGZvcm0/OiBGb3JtR3JvdXApOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpdGVtIHx8ICFpdGVtLmtleSkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMucGl4S2V5VHlwZSA9IGl0ZW0ua2V5O1xuXG4gICAgICAgIGNvbnN0IHRhcmdldEZvcm0gPSAodHlwZW9mIGZvcm0gIT09ICd1bmRlZmluZWQnICYmIGZvcm0gIT09IG51bGwpXG4gICAgICAgICAgPyBmb3JtXG4gICAgICAgICAgOiB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXA7XG5cbiAgICAgICAgdGhpcy5pc1Nob3dQaXhLZXlGaWVsZFZhbGlkYXRvck1lc3NhZ2UgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IHBpeEtleUNvbnRyb2wgPSB0YXJnZXRGb3JtLmdldChcInBpeEtleVwiKTtcbiAgICAgICAgaWYgKHBpeEtleUNvbnRyb2wpIHtcbiAgICAgICAgICAgIHBpeEtleUNvbnRyb2wucmVzZXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0UGl4S2V5VmFsaWRhdG9ycyh0cnVlLCB0YXJnZXRGb3JtKTtcblxuICAgICAgICBpZiAoaXRlbS5rZXkgPT09IFwiQ1BGXCIpIHtcbiAgICAgICAgICB0aGlzLnNldERlZmF1bHRDcGZQaXhLZXkodGFyZ2V0Rm9ybSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGVhclBpeEtleVR5cGUoZm9ybT86IEZvcm1Hcm91cCk6IHZvaWQge1xuICAgICAgICB2YXIgdGFyZ2V0Rm9ybSA9ICh0eXBlb2YgZm9ybSAhPT0gJ3VuZGVmaW5lZCcgJiYgZm9ybSAhPT0gbnVsbClcbiAgICAgICAgICA/IGZvcm1cbiAgICAgICAgICA6IHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cDtcblxuICAgICAgICB0aGlzLmlzU2hvd1BpeEtleUZpZWxkVmFsaWRhdG9yTWVzc2FnZSA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0YXJnZXRGb3JtLmdldChcInBpeEtleVwiKSkge1xuICAgICAgICAgIHRhcmdldEZvcm0uZ2V0KFwicGl4S2V5XCIpLnJlc2V0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcHVibGljIHNldERlZmF1bHRDcGZQaXhLZXkoZm9ybT86IEZvcm1Hcm91cCk6IHZvaWQge1xuICAgICAgICB2YXIgdGFyZ2V0Rm9ybSA9ICh0eXBlb2YgZm9ybSAhPT0gJ3VuZGVmaW5lZCcgJiYgZm9ybSAhPT0gbnVsbClcbiAgICAgICAgICA/IGZvcm1cbiAgICAgICAgICA6IHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cDtcblxuICAgICAgICBpZiAodGhpcy5fZGVmYXVsdENwZk51bWJlcikge1xuICAgICAgICAgIGlmICh0YXJnZXRGb3JtLmdldChcInBpeEtleVwiKSkge1xuICAgICAgICAgICAgdGFyZ2V0Rm9ybS5nZXQoXCJwaXhLZXlcIikuc2V0VmFsdWUodGhpcy5fZGVmYXVsdENwZk51bWJlcik7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBzaGVldERvY3VtZW50ID0gdGhpcy5fcGFyYW1zRm9ybS5nZXQoXCJzaGVldERvY3VtZW50XCIpO1xuICAgICAgICAgIGlmIChzaGVldERvY3VtZW50ICYmIHNoZWV0RG9jdW1lbnQuZ2V0KFwiY3BmTnVtYmVyXCIpKSB7XG4gICAgICAgICAgICB2YXIgY3BmID0gc2hlZXREb2N1bWVudC5nZXQoXCJjcGZOdW1iZXJcIikudmFsdWU7XG4gICAgICAgICAgICBpZiAoY3BmICYmIHRhcmdldEZvcm0uZ2V0KFwicGl4S2V5XCIpKSB7XG4gICAgICAgICAgICAgIHRhcmdldEZvcm0uZ2V0KFwicGl4S2V5XCIpLnNldFZhbHVlKGNwZik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUZvcm1Hcm91cEJhc2UoKTogdm9pZCB7XG4gICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgaWQ6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKSxcbiAgICAgICAgaW5kZXg6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKSxcbiAgICAgICAgZW1wbG95ZWU6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbCh7IHZhbHVlOiB7IHRhYmxlSWQ6IG51bGwgfSwgZGlzYWJsZWQ6IHRydWUgfSksXG4gICAgICAgIGRhdGVDaGFuZ2U6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKSxcbiAgICAgICAgcGl4S2V5VHlwZTogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBwaXhLZXk6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKSxcbiAgICAgICAgcGVyY2VudGFnZTogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgIC4uLnRoaXMuaW5pdGlhbFZhbGlkYXRvck9mUGVyY2VudGFnZSxcbiAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KHRoaXMubWF4VmFsdWVQZXJjZW50YWdlKSxcbiAgICAgICAgICBdKVxuICAgICAgICApLFxuICAgICAgICBleHRlcm5hbElkOiB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCksXG4gICAgICAgIGN1c3RvbUZpZWxkczogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwpLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldFZhbGlkYXRvcnNBY2NvcmRpbmdMaXN0KFxuICAgICAgICBwaXhBY2NvdW50TGlzdDogb2JqZWN0W10sXG4gICAgICAgIGluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbCxcbiAgICAgICAgaXNFZGl0TW9kZTogYm9vbGVhbiA9IHRydWUsXG4gICAgICAgIGZvcm0/OiBGb3JtR3JvdXBcbiAgICAgICk6IHZvaWQge1xuICAgICAgICB2YXIgdGFyZ2V0Rm9ybSA9ICh0eXBlb2YgZm9ybSAhPT0gJ3VuZGVmaW5lZCcgJiYgZm9ybSAhPT0gbnVsbClcbiAgICAgICAgICA/IGZvcm1cbiAgICAgICAgICA6IHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cDtcblxuICAgICAgICB0aGlzLnBpeEFjY291bnRMaXN0ID0gKHBpeEFjY291bnRMaXN0ICYmIHBpeEFjY291bnRMaXN0Lmxlbmd0aCA+IDApXG4gICAgICAgICAgPyBbXS5jb25jYXQocGl4QWNjb3VudExpc3QpXG4gICAgICAgICAgOiBbXTtcblxuICAgICAgICB2YXIgcGVyY2VudGFnZUluY2x1ZGVkOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5waXhBY2NvdW50TGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBmaWVsZDogYW55ID0gdGhpcy5waXhBY2NvdW50TGlzdFtpXTtcbiAgICAgICAgICBpZiAoZmllbGQgJiYgZmllbGQucGVyY2VudGFnZSAmJiBpICE9PSBpbmRleCkge1xuICAgICAgICAgICAgcGVyY2VudGFnZUluY2x1ZGVkLnB1c2goZmllbGQucGVyY2VudGFnZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5iZWZvcmVTZXRQaXhLZXlUeXBlVmFsaWRhdG9yKHRhcmdldEZvcm0pO1xuICAgICAgICB0aGlzLnNldFBpeEtleVZhbGlkYXRvcnMoaXNFZGl0TW9kZSwgdGFyZ2V0Rm9ybSk7XG4gICAgICAgIHRoaXMudmFsaWRhdGVQZXJjZW50YWdlVmFsaWQocGVyY2VudGFnZUluY2x1ZGVkLCB0YXJnZXRGb3JtKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYmVmb3JlU2V0UGl4S2V5VHlwZVZhbGlkYXRvcihmb3JtOiBGb3JtR3JvdXApOiB2b2lkIHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtLmdldChcInBpeEtleVR5cGVcIik7XG5cbiAgICAgIGlmICh0aGlzLnBpeEFjY291bnRMaXN0ICYmIHRoaXMucGl4QWNjb3VudExpc3QubGVuZ3RoKSB7XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVEdXBsaWNhdGVQaXhLZXlUeXBlQmFua0FjY291bnQodGhpcy5waXhBY2NvdW50TGlzdCksXG4gICAgICAgICAgXSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgIH1cbiAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRQaXhLZXlWYWxpZGF0b3JzKGlzRWRpdE1vZGU6IGJvb2xlYW4sIGZvcm06IEZvcm1Hcm91cCk6IHZvaWQge1xuICAgICAgY29uc3QgcGl4S2V5ID0gZm9ybS5nZXQoXCJwaXhLZXlcIik7XG4gICAgICBzd2l0Y2ggKHRoaXMucGl4S2V5VHlwZSkge1xuICAgICAgICBjYXNlIFwiVEVMRVBIT05FXCI6XG4gICAgICAgICAgcGl4S2V5LnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBHZW5lcmljVmFsaWRhdG9yLmlzVmFsaWRQaG9uZU51bWJlcl0pKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkVNQUlMXCI6XG4gICAgICAgICAgcGl4S2V5LnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBHZW5lcmljVmFsaWRhdG9yLmlzVmFsaWRFbWFpbF0pKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkNQRlwiOlxuICAgICAgICAgIHBpeEtleS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgR2VuZXJpY1ZhbGlkYXRvci5pc1ZhbGlkQ3BmXSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiQ05QSlwiOlxuICAgICAgICAgIHBpeEtleS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgR2VuZXJpY1ZhbGlkYXRvci5pc1ZhbGlkQ25wal0pKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIlJBTkRPTV9LRVlcIjpcbiAgICAgICAgICBwaXhLZXkuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBwaXhLZXkuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0VkaXRNb2RlKSB7XG4gICAgICAgIHBpeEtleS5lbmFibGUoKTtcbiAgICAgIH1cblxuICAgICAgcGl4S2V5LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdmFsaWRhdGVQZXJjZW50YWdlVmFsaWQobGlzdFZhbHVlOiBudW1iZXJbXSwgZm9ybTogRm9ybUdyb3VwKTogdm9pZCB7XG4gICAgICBjb25zdCBwZXJjZW50YWdlID0gZm9ybS5nZXQoXCJwZXJjZW50YWdlXCIpO1xuICAgICAgdGhpcy5tYXhWYWx1ZVBlcmNlbnRhZ2UgPSBsaXN0VmFsdWUucmVkdWNlKChhY2MsIHZhbCkgPT4gYWNjIC0gdmFsLCAxMDAuMCk7XG5cbiAgICAgIHBlcmNlbnRhZ2Uuc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAuLi50aGlzLmluaXRpYWxWYWxpZGF0b3JPZlBlcmNlbnRhZ2UsXG4gICAgICAgICAgVmFsaWRhdG9ycy5tYXgodGhpcy5tYXhWYWx1ZVBlcmNlbnRhZ2UpLFxuICAgICAgICBdKVxuICAgICAgKTtcblxuICAgICAgcGVyY2VudGFnZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZUR1cGxpY2F0ZVBpeEtleVR5cGVCYW5rQWNjb3VudChsaXN0Q29tcGFyZTogb2JqZWN0W10pIHtcbiAgICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IG51bGwgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgICAgIGNvbnN0IGlzRHVwbGljYXRlID0gbGlzdENvbXBhcmUuc29tZShcbiAgICAgICAgICAoZmllbGQ6IGFueSkgPT5cbiAgICAgICAgICAgIHZhbHVlICYmXG4gICAgICAgICAgICBmaWVsZC5waXhLZXlUeXBlLmtleSA9PT0gXCJCQU5LX0FDQ09VTlRcIiAmJlxuICAgICAgICAgICAgdmFsdWUua2V5ID09PSBcIkJBTktfQUNDT1VOVFwiXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBpc0R1cGxpY2F0ZSA/IHsgcGl4S2V5VHlwZUJhbmtBY2NvdW50RHVwbGljYXRlOiB0cnVlIH0gOiBudWxsO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBhcmFtc0Zvcm0oKTogRm9ybUdyb3VwIHtcbiAgICAgIHJldHVybiB0aGlzLl9wYXJhbXNGb3JtO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgcGFyYW1zRm9ybSh2YWx1ZTogRm9ybUdyb3VwKSB7XG4gICAgICB0aGlzLl9wYXJhbXNGb3JtID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZWZhdWx0Q3BmTnVtYmVyKCk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdENwZk51bWJlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGRlZmF1bHRDcGZOdW1iZXIodmFsdWU6IHN0cmluZykge1xuICAgICAgdGhpcy5fZGVmYXVsdENwZk51bWJlciA9IHZhbHVlO1xuICAgIH1cbiAgfVxuIl19
|