@infordata-web/portal-common-component-lib
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.0.14.
120 lines • 20.1 kB
JavaScript
import { Validators, } from "@angular/forms";
import { of } from "rxjs";
import { map, catchError } from "rxjs/operators";
// @Injectable()
// @dynamic
export class ValidationService {
constructor(checkCFService) {
this.checkCFService = checkCFService;
}
static ValidateMail(control) {
if (ValidationService.formatoEmail.test(control.value)) {
return null;
}
return { invalidMail: true };
}
static ValidateDate(control) {
if (new Date().getTime() < control.value) {
return { invalidDate: true };
}
return null;
}
static ValidateName(control) {
if (ValidationService.formatoName.test(control.value)) {
return null;
}
return { invalidName: true };
}
static ValidatePassword(control) {
if (ValidationService.passwordPattern.test(control.value)) {
return null;
}
return { invalidPassword: true };
}
static ValidateIban(control) {
if (ValidationService.iban.test(control.value)) {
return null;
}
return { invalidIban: true };
}
static ValidateCodiceFiscale(control) {
if (ValidationService.codiceFiscale.test(control.value)) {
return null;
}
return { codiceFiscaleInvalido: true };
}
static ValidatePartitaIva(control) {
if (ValidationService.partitaIva.test(control.value)) {
return null;
}
return { invalidPartitaIva: true };
}
static pattern(pattern, error) {
return (c) => Validators.pattern(pattern)(c) ? { [error]: true } : null;
}
static trigger(dependentControl, predicate = (_) => _) {
const originalValidator = dependentControl.validator;
return (dependentValidators) => {
return (control) => {
if (predicate(control.value)) {
for (const validator of dependentValidators) {
const newError = validator(dependentControl);
if (newError) {
dependentControl.setErrors(newError);
break;
}
}
dependentControl.setValidators(dependentValidators);
}
else {
dependentControl.setValidators(originalValidator);
dependentControl.setErrors(null);
}
return null;
};
};
}
static NotEquals(value, message) {
return (control) => {
return value != control.value
? null
: {
[message]: true,
};
};
}
userValidator(tipoPersona) {
return (control) => {
return this.checkCFService
.validaCodiceFiscale$(control.value, tipoPersona)
.pipe(map((outcome) => (!outcome.valid ? { invalidCF: true } : null)), catchError((error) => {
return of({ validationServiceFailed: true });
}));
};
}
}
ValidationService.capPattern = "[0-9][0-9][0-9][0-9][0-9]";
ValidationService.passwordPattern = /^(?:(?=.*\d)(?=.*[A-Z]).{8,})/;
ValidationService.zeroCentoPattern = "^([0-9]|[1-9][0-9]|100)$";
// tslint:disable-next-line:max-line-length
ValidationService.formatoData = /^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/;
ValidationService.importoPattern = "^[0-9]+(,[0-9]{1,2}){0,1}$";
// tslint:disable-next-line:max-line-length
ValidationService.formatoEmail = /^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$/;
// tslint:disable-next-line:max-line-length
ValidationService.iban = /^(?:(?:IT|SM)\d{2}[A-Z]\d{22}|CY\d{2}[A-Z]\d{23}|NL\d{2}[A-Z]{4}\d{10}|LV\d{2}[A-Z]{4}\d{13}|(?:BG|BH|GB|IE)\d{2}[A-Z]{4}\d{14}|GI\d{2}[A-Z]{4}\d{15}|RO\d{2}[A-Z]{4}\d{16}|KW\d{2}[A-Z]{4}\d{22}|MT\d{2}[A-Z]{4}\d{23}|NO\d{13}|(?:DK|FI|GL|FO)\d{16}|MK\d{17}|(?:AT|EE|KZ|LU|XK)\d{18}|(?:BA|HR|LI|CH|CR)\d{19}|(?:GE|DE|LT|ME|RS)\d{20}|IL\d{21}|(?:AD|CZ|ES|MD|SA)\d{22}|PT\d{23}|(?:BE|IS)\d{24}|(?:FR|MR|MC)\d{25}|(?:AL|DO|LB|PL)\d{26}|(?:AZ|HU)\d{27}|(?:GR|MU)\d{28})$/;
// /^[A-Za-z]{6}[0-9]{2}[A-Za-z]{1}[0-9]{2}[A-Za-z]{1}[0-9]{3}[A-Za-z]{1}$/
ValidationService.codiceFiscale = /([a-z]{6}|[A-Z]{6})(l|m|n|p|q|r|s|t|u|v|L|M|N|P|Q|R|S|T|U|V|\d{1})(l|m|n|p|q|r|s|t|u|v|L|M|N|P|Q|R|S|T|U|V|\d{1})(a|b|c|d|e|h|l|m|p|r|s|t|A|B|C|D|E|H|L|M|P|R|S|T)((((l|m|n|p|q|r|s|t|u|v|L|M|N|P|Q|R|S|T|U|V|0|1|2|3|4|5|6)(l|m|n|p|q|r|s|t|u|v|L|M|N|P|Q|R|S|T|U|V|\d{1}))|71|70|TM|Tm|tM|tm|TL|tl|Tl|tL))([a-z]{1}|[A-Z]{1})(L|M|N|P|Q|R|S|T|U|V|\d{1})(l|m|n|p|q|r|s|t|u|v|L|M|N|P|Q|R|S|T|U|V|\d{1})(l|m|n|p|q|r|s|t|u|v|L|M|N|P|Q|R|S|T|U|V|\d{1})([a-z]{1}|[A-Z]{1})/;
ValidationService.partitaIva = /^[0-9]{11}$/;
ValidationService.partitaIvaMaxLen2 = /^[0-9]{2,11}$/;
ValidationService.codiceFiscalePiva = "^[A-Za-z]{6}[0-9]{2}[A-Za-z]{1}[0-9]{2}[A-Za-z]{1}[0-9]{3}[A-Za-z]{1}$|^[0-9]{11}$";
ValidationService._codiceFiscalePiva = /^[A-Za-z]{6}[0-9]{2}[A-Za-z]{1}[0-9]{2}[A-Za-z]{1}[0-9]{3}[A-Za-z]{1}$|^[0-9]{11}$/;
ValidationService.anno = /^[1-2][0-9]{3}$/;
ValidationService.nSentenza = /^[0-9]*\/[1-2][0-9]{3}$/;
ValidationService.numberPattern = /^[0-9]*$/;
ValidationService.phoneNumberPattern = /^\+{0,1}[0-9]*$/;
ValidationService.moneyPattern = /^([0-9]+)|((([1-9][0-9]*)|([0-9]))([,])[0-9]{2})$/;
ValidationService.moneyCommaSeparated = /^\d+,\d{2}$/;
ValidationService.numbers = /^\d+/;
ValidationService.formatoName = /^[a-zA-Zàèìòùé ']+$/;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkQ6L1Byb2dldHRpL0RBRy9zb3JnZW50aS9naXRsYWItdGVybmkvY29tbW9uLWNvbXBvbmVudC1saWIvcHJvamVjdHMvcG9ydGFsLWNvbW1vbi1jb21wb25lbnQtbGliL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9kZXBvc2l0aS9zZXJ2aWNlcy92YWxpZGF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlOLFVBQVUsR0FFVixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBcUIsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakQsZ0JBQWdCO0FBQ2hCLFdBQVc7QUFDWCxNQUFNLE9BQU8saUJBQWlCO0lBOEI3QixZQUFvQixjQUFvQztRQUFwQyxtQkFBYyxHQUFkLGNBQWMsQ0FBc0I7SUFBSSxDQUFDO0lBRTdELE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBd0I7UUFDM0MsSUFBSSxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2RCxPQUFPLElBQUksQ0FBQztTQUNaO1FBQ0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUF3QjtRQUMzQyxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRTtZQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDO1NBQzdCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUF3QjtRQUMzQyxJQUFJLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJ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LEdBQUcsaUJBQWlCLENBQUM7QUFDekIsMkJBQVMsR0FBRyx5QkFBeUIsQ0FBQztBQUN0QywrQkFBYSxHQUFHLFVBQVUsQ0FBQztBQUMzQixvQ0FBa0IsR0FBRyxpQkFBaUIsQ0FBQztBQUN2Qyw4QkFBWSxHQUFHLG1EQUFtRCxDQUFDO0FBQ25FLHFDQUFtQixHQUFHLGFBQWEsQ0FBQztBQUNwQyx5QkFBTyxHQUFHLE1BQU0sQ0FBQztBQUNqQiw2QkFBVyxHQUFXLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuXHRBYnN0cmFjdENvbnRyb2wsXHJcblx0QXN5bmNWYWxpZGF0b3JGbixcclxuXHRWYWxpZGF0aW9uRXJyb3JzLFxyXG5cdFZhbGlkYXRvcnMsXHJcblx0VmFsaWRhdG9yRm4sXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGVtcHR5LCBvZiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IG1hcCwgY2F0Y2hFcnJvciB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBDb2RpY2VGaXNjYWxlU2VydmljZSB9IGZyb20gXCIuL2NvZGljZS1maXNjYWxlL2NvZGljZS1maXNjYWxlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbi8vIEBJbmplY3RhYmxlKClcclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25TZXJ2aWNlIHtcclxuXHRzdGF0aWMgY2FwUGF0dGVybiA9IFwiWzAtOV1bMC05XVswLTldWzAtOV1bMC05XVwiO1xyXG5cdHN0YXRpYyBwYXNzd29yZFBhdHRlcm46IFJlZ0V4cCA9IC9eKD86KD89LipcXGQpKD89LipbQS1aXSkuezgsfSkvO1xyXG5cdHN0YXRpYyB6ZXJvQ2VudG9QYXR0ZXJuID0gXCJeKFswLTldfFsxLTldWzAtOV18MTAwKSRcIjtcclxuXHQvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXHJcblx0c3RhdGljIGZvcm1hdG9EYXRhOiBSZWdFeHAgPSAvXig/Oig/OjMxKFxcL3wtfFxcLikoPzowP1sxMzU3OF18MVswMl0pKVxcMXwoPzooPzoyOXwzMCkoXFwvfC18XFwuKSg/OjA/WzEsMy05XXwxWzAtMl0pXFwyKSkoPzooPzoxWzYtOV18WzItOV1cXGQpP1xcZHsyfSkkfF4oPzoyOShcXC98LXxcXC4pMD8yXFwzKD86KD86KD86MVs2LTldfFsyLTldXFxkKT8oPzowWzQ4XXxbMjQ2OF1bMDQ4XXxbMTM1NzldWzI2XSl8KD86KD86MTZ8WzI0NjhdWzA0OF18WzM1NzldWzI2XSkwMCkpKSkkfF4oPzowP1sxLTldfDFcXGR8MlswLThdKShcXC98LXxcXC4pKD86KD86MD9bMS05XSl8KD86MVswLTJdKSlcXDQoPzooPzoxWzYtOV18WzItOV1cXGQpP1xcZHsyfSkkLztcclxuXHRzdGF0aWMgaW1wb3J0b1BhdHRlcm4gPSBcIl5bMC05XSsoLFswLTldezEsMn0pezAsMX0kXCI7XHJcblx0Ly8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxyXG5cdHN0YXRpYyBmb3JtYXRvRW1haWw6IFJlZ0V4cCA9IC9eKFthLXpBLVowLTlfXFwtXFwuXSspQChbYS16QS1aMC05X1xcLVxcLl0rKVxcLihbYS16QS1aXXsyLDV9KSQvO1xyXG5cdC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcclxuXHRzdGF0aWMgaWJhbiA9IC9eKD86KD86SVR8U00pXFxkezJ9W0EtWl1cXGR7MjJ9fENZXFxkezJ9W0EtWl1cXGR7MjN9fE5MXFxkezJ9W0EtWl17NH1cXGR7MTB9fExWXFxkezJ9W0EtWl17NH1cXGR7MTN9fCg/OkJHfEJIfEdCfElFKVxcZHsyfVtBLVpdezR9XFxkezE0fXxHSVxcZHsyfVtBLVpdezR9XFxkezE1fXxST1xcZHsyfVtBLVpdezR9XFxkezE2fXxLV1xcZHsyfVtBLVpdezR9XFxkezIyfXxNVFxcZHsyfVtBLVpdezR9XFxkezIzfXxOT1xcZHsxM318KD86REt8Rkl8R0x8Rk8pXFxkezE2fXxNS1xcZHsxN318KD86QVR8RUV8S1p8TFV8WEspXFxkezE4fXwoPzpCQXxIUnxMSXxDSHxDUilcXGR7MTl9fCg/OkdFfERFfExUfE1FfFJTKVxcZHsyMH18SUxcXGR7MjF9fCg/OkFEfENafEVTfE1EfFNBKVxcZHsyMn18UFRcXGR7MjN9fCg/OkJFfElTKVxcZHsyNH18KD86RlJ8TVJ8TUMpXFxkezI1fXwoPzpBTHxET3xMQnxQTClcXGR7MjZ9fCg/OkFafEhVKVxcZHsyN318KD86R1J8TVUpXFxkezI4fSkkLztcclxuXHJcblx0Ly8gL15bQS1aYS16XXs2fVswLTldezJ9W0EtWmEtel17MX1bMC05XXsyfVtBLVphLXpdezF9WzAtOV17M31bQS1aYS16XXsxfSQvXHJcblx0c3RhdGljIGNvZGljZUZpc2NhbGUgPSAvKFthLXpdezZ9fFtBLVpdezZ9KShsfG18bnxwfHF8cnxzfHR8dXx2fEx8TXxOfFB8UXxSfFN8VHxVfFZ8XFxkezF9KShsfG18bnxwfHF8cnxzfHR8dXx2fEx8TXxOfFB8UXxSfFN8VHxVfFZ8XFxkezF9KShhfGJ8Y3xkfGV8aHxsfG18cHxyfHN8dHxBfEJ8Q3xEfEV8SHxMfE18UHxSfFN8VCkoKCgobHxtfG58cHxxfHJ8c3x0fHV8dnxMfE18TnxQfFF8UnxTfFR8VXxWfDB8MXwyfDN8NHw1fDYpKGx8bXxufHB8cXxyfHN8dHx1fHZ8THxNfE58UHxRfFJ8U3xUfFV8VnxcXGR7MX0pKXw3MXw3MHxUTXxUbXx0TXx0bXxUTHx0bHxUbHx0TCkpKFthLXpdezF9fFtBLVpdezF9KShMfE18TnxQfFF8UnxTfFR8VXxWfFxcZHsxfSkobHxtfG58cHxxfHJ8c3x0fHV8dnxMfE18TnxQfFF8UnxTfFR8VXxWfFxcZHsxfSkobHxtfG58cHxxfHJ8c3x0fHV8dnxMfE18TnxQfFF8UnxTfFR8VXxWfFxcZHsxfSkoW2Etel17MX18W0EtWl17MX0pLztcclxuXHQgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuXHRzdGF0aWMgcGFydGl0YUl2YSA9IC9eWzAtOV17MTF9JC87XHJcblx0c3RhdGljIHBhcnRpdGFJdmFNYXhMZW4yID0gL15bMC05XXsyLDExfSQvO1xyXG5cdHN0YXRpYyBjb2RpY2VGaXNjYWxlUGl2YSA9XHJcblx0XHRcIl5bQS1aYS16XXs2fVswLTldezJ9W0EtWmEtel17MX1bMC05XXsyfVtBLVphLXpdezF9WzAtOV17M31bQS1aYS16XXsxfSR8XlswLTldezExfSRcIjtcclxuXHRzdGF0aWMgX2NvZGljZUZpc2NhbGVQaXZhID0gL15bQS1aYS16XXs2fVswLTldezJ9W0EtWmEtel17MX1bMC05XXsyfVtBLVphLXpdezF9WzAtOV17M31bQS1aYS16XXsxfSR8XlswLTldezExfSQvO1xyXG5cdHN0YXRpYyBhbm5vID0gL15bMS0yXVswLTldezN9JC87XHJcblx0c3RhdGljIG5TZW50ZW56YSA9IC9eWzAtOV0qXFwvWzEtMl1bMC05XXszfSQvO1xyXG5cdHN0YXRpYyBudW1iZXJQYXR0ZXJuID0gL15bMC05XSokLztcclxuXHRzdGF0aWMgcGhvbmVOdW1iZXJQYXR0ZXJuID0gL15cXCt7MCwxfVswLTldKiQvO1xyXG5cdHN0YXRpYyBtb25leVBhdHRlcm4gPSAvXihbMC05XSspfCgoKFsxLTldWzAtOV0qKXwoWzAtOV0pKShbLF0pWzAtOV17Mn0pJC87XHJcblx0c3RhdGljIG1vbmV5Q29tbWFTZXBhcmF0ZWQgPSAvXlxcZCssXFxkezJ9JC87XHJcblx0c3RhdGljIG51bWJlcnMgPSAvXlxcZCsvO1xyXG5cdHN0YXRpYyBmb3JtYXRvTmFtZTogUmVnRXhwID0gL15bYS16QS1aw6DDqMOsw7LDucOpICddKyQvO1xyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGNoZWNrQ0ZTZXJ2aWNlOiBDb2RpY2VGaXNjYWxlU2VydmljZSkgeyB9XHJcblxyXG5cdHN0YXRpYyBWYWxpZGF0ZU1haWwoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XHJcblx0XHRpZiAoVmFsaWRhdGlvblNlcnZpY2UuZm9ybWF0b0VtYWlsLnRlc3QoY29udHJvbC52YWx1ZSkpIHtcclxuXHRcdFx0cmV0dXJuIG51bGw7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4geyBpbnZhbGlkTWFpbDogdHJ1ZSB9O1xyXG5cdH1cclxuXHJcblx0c3RhdGljIFZhbGlkYXRlRGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcclxuXHRcdGlmIChuZXcgRGF0ZSgpLmdldFRpbWUoKSA8IGNvbnRyb2wudmFsdWUpIHtcclxuXHRcdFx0cmV0dXJuIHsgaW52YWxpZERhdGU6IHRydWUgfTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBudWxsO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIFZhbGlkYXRlTmFtZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcclxuXHRcdGlmIChWYWxpZGF0aW9uU2VydmljZS5mb3JtYXRvTmFtZS50ZXN0KGNvbnRyb2wudmFsdWUpKSB7XHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHsgaW52YWxpZE5hbWU6IHRydWUgfTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBWYWxpZGF0ZVBhc3N3b3JkKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xyXG5cdFx0aWYgKFZhbGlkYXRpb25TZXJ2aWNlLnBhc3N3b3JkUGF0dGVybi50ZXN0KGNvbnRyb2wudmFsdWUpKSB7XHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHsgaW52YWxpZFBhc3N3b3JkOiB0cnVlIH07XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgVmFsaWRhdGVJYmFuKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xyXG5cdFx0aWYgKFZhbGlkYXRpb25TZXJ2aWNlLmliYW4udGVzdChjb250cm9sLnZhbHVlKSkge1xyXG5cdFx0XHRyZXR1cm4gbnVsbDtcclxuXHRcdH1cclxuXHRcdHJldHVybiB7IGludmFsaWRJYmFuOiB0cnVlIH07XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgVmFsaWRhdGVDb2RpY2VGaXNjYWxlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xyXG5cdFx0aWYgKFZhbGlkYXRpb25TZXJ2aWNlLmNvZGljZUZpc2NhbGUudGVzdChjb250cm9sLnZhbHVlKSkge1xyXG5cdFx0XHRyZXR1cm4gbnVsbDtcclxuXHRcdH1cclxuXHRcdHJldHVybiB7IGNvZGljZUZpc2NhbGVJbnZhbGlkbzogdHJ1ZSB9O1xyXG5cdH1cclxuXHJcblx0c3RhdGljIFZhbGlkYXRlUGFydGl0YUl2YShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcclxuXHRcdGlmIChWYWxpZGF0aW9uU2VydmljZS5wYXJ0aXRhSXZhLnRlc3QoY29udHJvbC52YWx1ZSkpIHtcclxuXHRcdFx0cmV0dXJuIG51bGw7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4geyBpbnZhbGlkUGFydGl0YUl2YTogdHJ1ZSB9O1xyXG5cdH1cclxuXHJcblx0c3RhdGljIHBhdHRlcm4oXHJcblx0XHRwYXR0ZXJuOiBSZWdFeHAsXHJcblx0XHRlcnJvcjogc3RyaW5nXHJcblx0KTogKGM6IEFic3RyYWN0Q29udHJvbCkgPT4gVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG5cdFx0cmV0dXJuIChjOiBBYnN0cmFjdENvbnRyb2wpID0+XHJcblx0XHRcdFZhbGlkYXRvcnMucGF0dGVybihwYXR0ZXJuKShjKSA/IHsgW2Vycm9yXTogdHJ1ZSB9IDogbnVsbDtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyB0cmlnZ2VyKFxyXG5cdFx0ZGVwZW5kZW50Q29udHJvbDogQWJzdHJhY3RDb250cm9sLFxyXG5cdFx0cHJlZGljYXRlOiAodmFsdWU6IGFueSkgPT4gYm9vbGVhbiA9IChfKSA9PiBfXHJcblx0KTogKFxyXG5cdFx0XHRkZXBlbmRlbnRWYWxpZGF0b3JzOiBBcnJheTwoYzogQWJzdHJhY3RDb250cm9sKSA9PiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD5cclxuXHRcdCkgPT4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4gVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG5cdFx0Y29uc3Qgb3JpZ2luYWxWYWxpZGF0b3IgPSBkZXBlbmRlbnRDb250cm9sLnZhbGlkYXRvcjtcclxuXHRcdHJldHVybiAoZGVwZW5kZW50VmFsaWRhdG9ycykgPT4ge1xyXG5cdFx0XHRyZXR1cm4gKGNvbnRyb2wpID0+IHtcclxuXHRcdFx0XHRpZiAocHJlZGljYXRlKGNvbnRyb2wudmFsdWUpKSB7XHJcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHZhbGlkYXRvciBvZiBkZXBlbmRlbnRWYWxpZGF0b3JzKSB7XHJcblx0XHRcdFx0XHRcdGNvbnN0IG5ld0Vycm9yID0gdmFsaWRhdG9yKGRlcGVuZGVudENvbnRyb2wpO1xyXG5cdFx0XHRcdFx0XHRpZiAobmV3RXJyb3IpIHtcclxuXHRcdFx0XHRcdFx0XHRkZXBlbmRlbnRDb250cm9sLnNldEVycm9ycyhuZXdFcnJvcik7XHJcblx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGRlcGVuZGVudENvbnRyb2wuc2V0VmFsaWRhdG9ycyhkZXBlbmRlbnRWYWxpZGF0b3JzKTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0ZGVwZW5kZW50Q29udHJvbC5zZXRWYWxpZGF0b3JzKG9yaWdpbmFsVmFsaWRhdG9yKTtcclxuXHRcdFx0XHRcdGRlcGVuZGVudENvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gbnVsbDtcclxuXHRcdFx0fTtcclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgTm90RXF1YWxzKHZhbHVlOiBhbnksIG1lc3NhZ2U6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuXHRcdHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcblx0XHRcdHJldHVybiB2YWx1ZSAhPSBjb250cm9sLnZhbHVlXHJcblx0XHRcdFx0PyBudWxsXHJcblx0XHRcdFx0OiB7XHJcblx0XHRcdFx0XHRbbWVzc2FnZV06IHRydWUsXHJcblx0XHRcdFx0fTtcclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHR1c2VyVmFsaWRhdG9yKHRpcG9QZXJzb25hOiBzdHJpbmcpOiBBc3luY1ZhbGlkYXRvckZuIHtcclxuXHRcdHJldHVybiAoXHJcblx0XHRcdGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbFxyXG5cdFx0KTogT2JzZXJ2YWJsZTx7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgbnVsbD4gPT4ge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5jaGVja0NGU2VydmljZVxyXG5cdFx0XHRcdC52YWxpZGFDb2RpY2VGaXNjYWxlJChjb250cm9sLnZhbHVlLCB0aXBvUGVyc29uYSlcclxuXHRcdFx0XHQucGlwZShcclxuXHRcdFx0XHRcdG1hcCgob3V0Y29tZSkgPT4gKCFvdXRjb21lLnZhbGlkID8geyBpbnZhbGlkQ0Y6IHRydWUgfSA6IG51bGwpKSxcclxuXHRcdFx0XHRcdGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHRcdHJldHVybiBvZih7IHZhbGlkYXRpb25TZXJ2aWNlRmFpbGVkOiB0cnVlIH0pO1xyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHQpO1xyXG5cdFx0fTtcclxuXHR9XHJcbn1cclxuIl19