@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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2dldHRpL0RBRy9zb3JnZW50aS9naXRsYWItc29mdHdhcmVmYWN0b3J5L2NvbW1vbi1jb21wb25lbnQtbGliL3Byb2plY3RzL3BvcnRhbC1jb21tb24tY29tcG9uZW50LWxpYi9zcmMvIiwic291cmNlcyI6WyJsaWIvZGVwb3NpdGkvc2VydmljZXMvdmFsaWRhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTixVQUFVLEdBRVYsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQXFCLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2pELGdCQUFnQjtBQUNoQixXQUFXO0FBQ1gsTUFBTSxPQUFPLGlCQUFpQjtJQThCN0IsWUFBb0IsY0FBb0M7UUFBcEMsbUJBQWMsR0FBZCxjQUFjLENBQXNCO0lBQUksQ0FBQztJQUU3RCxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQXdCO1FBQzNDLElBQUksaUJBQWlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdkQsT0FBTyxJQUFJLENBQUM7U0FDWjtRQUNELE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBd0I7UUFDM0MsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUM3QjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBd0I7UUFDM0MsSUFBSSxpQkFBaUIsQ0FBQyxXQUFX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QUMxRyxzQkFBSSxHQUFHLGlCQUFpQixDQUFDO0FBQ3pCLDJCQUFTLEdBQUcseUJBQXlCLENBQUM7QUFDdEMsK0JBQWEsR0FBRyxVQUFVLENBQUM7QUFDM0Isb0NBQWtCLEdBQUcsaUJBQWlCLENBQUM7QUFDdkMsOEJBQVksR0FBRyxtREFBbUQsQ0FBQztBQUNuRSxxQ0FBbUIsR0FBRyxhQUFhLENBQUM7QUFDcEMseUJBQU8sR0FBRyxNQUFNLENBQUM7QUFDakIsNkJBQVcsR0FBVyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcblx0QWJzdHJhY3RDb250cm9sLFxyXG5cdEFzeW5jVmFsaWRhdG9yRm4sXHJcblx0VmFsaWRhdGlvbkVycm9ycyxcclxuXHRWYWxpZGF0b3JzLFxyXG5cdFZhbGlkYXRvckZuLFxyXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBlbXB0eSwgb2YgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBtYXAsIGNhdGNoRXJyb3IgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgQ29kaWNlRmlzY2FsZVNlcnZpY2UgfSBmcm9tIFwiLi9jb2RpY2UtZmlzY2FsZS9jb2RpY2UtZmlzY2FsZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG4vLyBASW5qZWN0YWJsZSgpXHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uU2VydmljZSB7XHJcblx0c3RhdGljIGNhcFBhdHRlcm4gPSBcIlswLTldWzAtOV1bMC05XVswLTldWzAtOV1cIjtcclxuXHRzdGF0aWMgcGFzc3dvcmRQYXR0ZXJuOiBSZWdFeHAgPSAvXig/Oig/PS4qXFxkKSg/PS4qW0EtWl0pLns4LH0pLztcclxuXHRzdGF0aWMgemVyb0NlbnRvUGF0dGVybiA9IFwiXihbMC05XXxbMS05XVswLTldfDEwMCkkXCI7XHJcblx0Ly8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxyXG5cdHN0YXRpYyBmb3JtYXRvRGF0YTogUmVnRXhwID0gL14oPzooPzozMShcXC98LXxcXC4pKD86MD9bMTM1NzhdfDFbMDJdKSlcXDF8KD86KD86Mjl8MzApKFxcL3wtfFxcLikoPzowP1sxLDMtOV18MVswLTJdKVxcMikpKD86KD86MVs2LTldfFsyLTldXFxkKT9cXGR7Mn0pJHxeKD86MjkoXFwvfC18XFwuKTA/MlxcMyg/Oig/Oig/OjFbNi05XXxbMi05XVxcZCk/KD86MFs0OF18WzI0NjhdWzA0OF18WzEzNTc5XVsyNl0pfCg/Oig/OjE2fFsyNDY4XVswNDhdfFszNTc5XVsyNl0pMDApKSkpJHxeKD86MD9bMS05XXwxXFxkfDJbMC04XSkoXFwvfC18XFwuKSg/Oig/OjA/WzEtOV0pfCg/OjFbMC0yXSkpXFw0KD86KD86MVs2LTldfFsyLTldXFxkKT9cXGR7Mn0pJC87XHJcblx0c3RhdGljIGltcG9ydG9QYXR0ZXJuID0gXCJeWzAtOV0rKCxbMC05XXsxLDJ9KXswLDF9JFwiO1xyXG5cdC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcclxuXHRzdGF0aWMgZm9ybWF0b0VtYWlsOiBSZWdFeHAgPSAvXihbYS16QS1aMC05X1xcLVxcLl0rKUAoW2EtekEtWjAtOV9cXC1cXC5dKylcXC4oW2EtekEtWl17Miw1fSkkLztcclxuXHQvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXHJcblx0c3RhdGljIGliYW4gPSAvXig/Oig/OklUfFNNKVxcZHsyfVtBLVpdXFxkezIyfXxDWVxcZHsyfVtBLVpdXFxkezIzfXxOTFxcZHsyfVtBLVpdezR9XFxkezEwfXxMVlxcZHsyfVtBLVpdezR9XFxkezEzfXwoPzpCR3xCSHxHQnxJRSlcXGR7Mn1bQS1aXXs0fVxcZHsxNH18R0lcXGR7Mn1bQS1aXXs0fVxcZHsxNX18Uk9cXGR7Mn1bQS1aXXs0fVxcZHsxNn18S1dcXGR7Mn1bQS1aXXs0fVxcZHsyMn18TVRcXGR7Mn1bQS1aXXs0fVxcZHsyM318Tk9cXGR7MTN9fCg/OkRLfEZJfEdMfEZPKVxcZHsxNn18TUtcXGR7MTd9fCg/OkFUfEVFfEtafExVfFhLKVxcZHsxOH18KD86QkF8SFJ8TEl8Q0h8Q1IpXFxkezE5fXwoPzpHRXxERXxMVHxNRXxSUylcXGR7MjB9fElMXFxkezIxfXwoPzpBRHxDWnxFU3xNRHxTQSlcXGR7MjJ9fFBUXFxkezIzfXwoPzpCRXxJUylcXGR7MjR9fCg/OkZSfE1SfE1DKVxcZHsyNX18KD86QUx8RE98TEJ8UEwpXFxkezI2fXwoPzpBWnxIVSlcXGR7Mjd9fCg/OkdSfE1VKVxcZHsyOH0pJC87XHJcblxyXG5cdC8vIC9eW0EtWmEtel17Nn1bMC05XXsyfVtBLVphLXpdezF9WzAtOV17Mn1bQS1aYS16XXsxfVswLTldezN9W0EtWmEtel17MX0kL1xyXG5cdHN0YXRpYyBjb2RpY2VGaXNjYWxlID0gLyhbYS16XXs2fXxbQS1aXXs2fSkobHxtfG58cHxxfHJ8c3x0fHV8dnxMfE18TnxQfFF8UnxTfFR8VXxWfFxcZHsxfSkobHxtfG58cHxxfHJ8c3x0fHV8dnxMfE18TnxQfFF8UnxTfFR8VXxWfFxcZHsxfSkoYXxifGN8ZHxlfGh8bHxtfHB8cnxzfHR8QXxCfEN8RHxFfEh8THxNfFB8UnxTfFQpKCgoKGx8bXxufHB8cXxyfHN8dHx1fHZ8THxNfE58UHxRfFJ8U3xUfFV8VnwwfDF8MnwzfDR8NXw2KShsfG18bnxwfHF8cnxzfHR8dXx2fEx8TXxOfFB8UXxSfFN8VHxVfFZ8XFxkezF9KSl8NzF8NzB8VE18VG18dE18dG18VEx8dGx8VGx8dEwpKShbYS16XXsxfXxbQS1aXXsxfSkoTHxNfE58UHxRfFJ8U3xUfFV8VnxcXGR7MX0pKGx8bXxufHB8cXxyfHN8dHx1fHZ8THxNfE58UHxRfFJ8U3xUfFV8VnxcXGR7MX0pKGx8bXxufHB8cXxyfHN8dHx1fHZ8THxNfE58UHxRfFJ8U3xUfFV8VnxcXGR7MX0pKFthLXpdezF9fFtBLVpdezF9KS87XHJcblx0ICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcblx0c3RhdGljIHBhcnRpdGFJdmEgPSAvXlswLTldezExfSQvO1xyXG5cdHN0YXRpYyBwYXJ0aXRhSXZhTWF4TGVuMiA9IC9eWzAtOV17MiwxMX0kLztcclxuXHRzdGF0aWMgY29kaWNlRmlzY2FsZVBpdmEgPVxyXG5cdFx0XCJeW0EtWmEtel17Nn1bMC05XXsyfVtBLVphLXpdezF9WzAtOV17Mn1bQS1aYS16XXsxfVswLTldezN9W0EtWmEtel17MX0kfF5bMC05XXsxMX0kXCI7XHJcblx0c3RhdGljIF9jb2RpY2VGaXNjYWxlUGl2YSA9IC9eW0EtWmEtel17Nn1bMC05XXsyfVtBLVphLXpdezF9WzAtOV17Mn1bQS1aYS16XXsxfVswLTldezN9W0EtWmEtel17MX0kfF5bMC05XXsxMX0kLztcclxuXHRzdGF0aWMgYW5ubyA9IC9eWzEtMl1bMC05XXszfSQvO1xyXG5cdHN0YXRpYyBuU2VudGVuemEgPSAvXlswLTldKlxcL1sxLTJdWzAtOV17M30kLztcclxuXHRzdGF0aWMgbnVtYmVyUGF0dGVybiA9IC9eWzAtOV0qJC87XHJcblx0c3RhdGljIHBob25lTnVtYmVyUGF0dGVybiA9IC9eXFwrezAsMX1bMC05XSokLztcclxuXHRzdGF0aWMgbW9uZXlQYXR0ZXJuID0gL14oWzAtOV0rKXwoKChbMS05XVswLTldKil8KFswLTldKSkoWyxdKVswLTldezJ9KSQvO1xyXG5cdHN0YXRpYyBtb25leUNvbW1hU2VwYXJhdGVkID0gL15cXGQrLFxcZHsyfSQvO1xyXG5cdHN0YXRpYyBudW1iZXJzID0gL15cXGQrLztcclxuXHRzdGF0aWMgZm9ybWF0b05hbWU6IFJlZ0V4cCA9IC9eW2EtekEtWsOgw6jDrMOyw7nDqSAnXSskLztcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBjaGVja0NGU2VydmljZTogQ29kaWNlRmlzY2FsZVNlcnZpY2UpIHsgfVxyXG5cclxuXHRzdGF0aWMgVmFsaWRhdGVNYWlsKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xyXG5cdFx0aWYgKFZhbGlkYXRpb25TZXJ2aWNlLmZvcm1hdG9FbWFpbC50ZXN0KGNvbnRyb2wudmFsdWUpKSB7XHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHsgaW52YWxpZE1haWw6IHRydWUgfTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBWYWxpZGF0ZURhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XHJcblx0XHRpZiAobmV3IERhdGUoKS5nZXRUaW1lKCkgPCBjb250cm9sLnZhbHVlKSB7XHJcblx0XHRcdHJldHVybiB7IGludmFsaWREYXRlOiB0cnVlIH07XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbnVsbDtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBWYWxpZGF0ZU5hbWUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XHJcblx0XHRpZiAoVmFsaWRhdGlvblNlcnZpY2UuZm9ybWF0b05hbWUudGVzdChjb250cm9sLnZhbHVlKSkge1xyXG5cdFx0XHRyZXR1cm4gbnVsbDtcclxuXHRcdH1cclxuXHRcdHJldHVybiB7IGludmFsaWROYW1lOiB0cnVlIH07XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgVmFsaWRhdGVQYXNzd29yZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcclxuXHRcdGlmIChWYWxpZGF0aW9uU2VydmljZS5wYXNzd29yZFBhdHRlcm4udGVzdChjb250cm9sLnZhbHVlKSkge1xyXG5cdFx0XHRyZXR1cm4gbnVsbDtcclxuXHRcdH1cclxuXHRcdHJldHVybiB7IGludmFsaWRQYXNzd29yZDogdHJ1ZSB9O1xyXG5cdH1cclxuXHJcblx0c3RhdGljIFZhbGlkYXRlSWJhbihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcclxuXHRcdGlmIChWYWxpZGF0aW9uU2VydmljZS5pYmFuLnRlc3QoY29udHJvbC52YWx1ZSkpIHtcclxuXHRcdFx0cmV0dXJuIG51bGw7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4geyBpbnZhbGlkSWJhbjogdHJ1ZSB9O1xyXG5cdH1cclxuXHJcblx0c3RhdGljIFZhbGlkYXRlQ29kaWNlRmlzY2FsZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcclxuXHRcdGlmIChWYWxpZGF0aW9uU2VydmljZS5jb2RpY2VGaXNjYWxlLnRlc3QoY29udHJvbC52YWx1ZSkpIHtcclxuXHRcdFx0cmV0dXJuIG51bGw7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4geyBjb2RpY2VGaXNjYWxlSW52YWxpZG86IHRydWUgfTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBWYWxpZGF0ZVBhcnRpdGFJdmEoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XHJcblx0XHRpZiAoVmFsaWRhdGlvblNlcnZpY2UucGFydGl0YUl2YS50ZXN0KGNvbnRyb2wudmFsdWUpKSB7XHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHsgaW52YWxpZFBhcnRpdGFJdmE6IHRydWUgfTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBwYXR0ZXJuKFxyXG5cdFx0cGF0dGVybjogUmVnRXhwLFxyXG5cdFx0ZXJyb3I6IHN0cmluZ1xyXG5cdCk6IChjOiBBYnN0cmFjdENvbnRyb2wpID0+IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuXHRcdHJldHVybiAoYzogQWJzdHJhY3RDb250cm9sKSA9PlxyXG5cdFx0XHRWYWxpZGF0b3JzLnBhdHRlcm4ocGF0dGVybikoYykgPyB7IFtlcnJvcl06IHRydWUgfSA6IG51bGw7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgdHJpZ2dlcihcclxuXHRcdGRlcGVuZGVudENvbnRyb2w6IEFic3RyYWN0Q29udHJvbCxcclxuXHRcdHByZWRpY2F0ZTogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW4gPSAoXykgPT4gX1xyXG5cdCk6IChcclxuXHRcdFx0ZGVwZW5kZW50VmFsaWRhdG9yczogQXJyYXk8KGM6IEFic3RyYWN0Q29udHJvbCkgPT4gVmFsaWRhdGlvbkVycm9ycyB8IG51bGw+XHJcblx0XHQpID0+IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuXHRcdGNvbnN0IG9yaWdpbmFsVmFsaWRhdG9yID0gZGVwZW5kZW50Q29udHJvbC52YWxpZGF0b3I7XHJcblx0XHRyZXR1cm4gKGRlcGVuZGVudFZhbGlkYXRvcnMpID0+IHtcclxuXHRcdFx0cmV0dXJuIChjb250cm9sKSA9PiB7XHJcblx0XHRcdFx0aWYgKHByZWRpY2F0ZShjb250cm9sLnZhbHVlKSkge1xyXG5cdFx0XHRcdFx0Zm9yIChjb25zdCB2YWxpZGF0b3Igb2YgZGVwZW5kZW50VmFsaWRhdG9ycykge1xyXG5cdFx0XHRcdFx0XHRjb25zdCBuZXdFcnJvciA9IHZhbGlkYXRvcihkZXBlbmRlbnRDb250cm9sKTtcclxuXHRcdFx0XHRcdFx0aWYgKG5ld0Vycm9yKSB7XHJcblx0XHRcdFx0XHRcdFx0ZGVwZW5kZW50Q29udHJvbC5zZXRFcnJvcnMobmV3RXJyb3IpO1xyXG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRkZXBlbmRlbnRDb250cm9sLnNldFZhbGlkYXRvcnMoZGVwZW5kZW50VmFsaWRhdG9ycyk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGRlcGVuZGVudENvbnRyb2wuc2V0VmFsaWRhdG9ycyhvcmlnaW5hbFZhbGlkYXRvcik7XHJcblx0XHRcdFx0XHRkZXBlbmRlbnRDb250cm9sLnNldEVycm9ycyhudWxsKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmV0dXJuIG51bGw7XHJcblx0XHRcdH07XHJcblx0XHR9O1xyXG5cdH1cclxuXHJcblx0c3RhdGljIE5vdEVxdWFscyh2YWx1ZTogYW55LCBtZXNzYWdlOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XHJcblx0XHRyZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG5cdFx0XHRyZXR1cm4gdmFsdWUgIT0gY29udHJvbC52YWx1ZVxyXG5cdFx0XHRcdD8gbnVsbFxyXG5cdFx0XHRcdDoge1xyXG5cdFx0XHRcdFx0W21lc3NhZ2VdOiB0cnVlLFxyXG5cdFx0XHRcdH07XHJcblx0XHR9O1xyXG5cdH1cclxuXHJcblx0dXNlclZhbGlkYXRvcih0aXBvUGVyc29uYTogc3RyaW5nKTogQXN5bmNWYWxpZGF0b3JGbiB7XHJcblx0XHRyZXR1cm4gKFxyXG5cdFx0XHRjb250cm9sOiBBYnN0cmFjdENvbnRyb2xcclxuXHRcdCk6IE9ic2VydmFibGU8eyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IG51bGw+ID0+IHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuY2hlY2tDRlNlcnZpY2VcclxuXHRcdFx0XHQudmFsaWRhQ29kaWNlRmlzY2FsZSQoY29udHJvbC52YWx1ZSwgdGlwb1BlcnNvbmEpXHJcblx0XHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0XHRtYXAoKG91dGNvbWUpID0+ICghb3V0Y29tZS52YWxpZCA/IHsgaW52YWxpZENGOiB0cnVlIH0gOiBudWxsKSksXHJcblx0XHRcdFx0XHRjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gb2YoeyB2YWxpZGF0aW9uU2VydmljZUZhaWxlZDogdHJ1ZSB9KTtcclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0KTtcclxuXHRcdH07XHJcblx0fVxyXG59XHJcbiJdfQ==