UNPKG

@infordata-web/portal-common-component-lib

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.0.14.

201 lines 60 kB
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { FormControl, FormGroup, Validators } from '@angular/forms';
import { Subscription } from 'rxjs';
import { getErrorMessage } from '../../utils/validators-messages.utils';
import { ibanValidator } from "ngx-iban";
export class BonificoExtraSepaComponent {
    constructor() {
        this.viewSessoPF = false;
        this.validateExtraSepaPersonaFisicaEmitter = new EventEmitter();
        this.resetEstremiPersonaFisicaExtraSepaFormEmitter = new EventEmitter();
        this.bonificoExtraSepaReady = new EventEmitter();
        this.personaFisicaEmitter = new EventEmitter();
        this.ibanValidators = [Validators.required, this.extraSepaCountriesValidator(), ibanValidator(), this.noSpacesValidator()];
        this.codiceContoValidators = [Validators.required, this.ValidateNotIban, Validators.maxLength(44)];
        this.subscription = new Subscription();
        this.getErrorMessage = getErrorMessage;
        this.sepaCountries = [{ "name": "Austria", "code": "AT", "iban": "AT493200056563289974" }, { "name": "Belgium", "code": "BE", "iban": "BE65561689528896" }, { "name": "Bulgaria", "code": "BG", "iban": "BG92TTBB94006559266188" }, { "name": "Cyprus", "code": "CY", "iban": "CY52665561416772369457864437" }, { "name": "Croatia", "code": "HR", "iban": "HR5523400098663266246" }, { "name": "Denmark", "code": "DK", "iban": "DK2550515918328528" }, { "name": "Estonia", "code": "EE", "iban": "EE591286653867491786" }, { "name": "Finland", "code": "FI", "iban": "FI8479486911788598" }, { "name": "France", "code": "FR", "iban": "FR8514508000707239488738J21" }, { "name": "Germany", "code": "DE", "iban": "DE14500105174185484177" }, { "name": "Greece", "code": "GR", "iban": "GR9201494491588141549531799" }, { "name": "Ireland", "code": "IE", "iban": "IE29AIBK93115212345678" }, { "name": "Italy", "code": "IT", "iban": "IT77R0300203280648419668253" }, { "name": "Latvia", "code": "LV", "iban": "LV80BANK0000435195001" }, { "name": "Lithuania", "code": "LT", "iban": "LT275168179993645428" }, { "name": "Luxembourg", "code": "LU", "iban": "LU350106814331716425" }, { "name": "Malta", "code": "MT", "iban": "MT54WLCI12377529685589454747835" }, { "name": "Netherlands", "code": "NL", "iban": "NL13INGB6755037397" }, { "name": "Poland", "code": "PL", "iban": "PL06109024023962236263666664" }, { "name": "Portugal", "code": "PT", "iban": "PT26003506516995234369482" }, { "name": "Czech Republic", "code": "CZ", "iban": "CZ1350515343291243261222" }, { "name": "Romania", "code": "RO", "iban": "RO64RZBR2335521926768262" }, { "name": "Slovakia", "code": "SK", "iban": "SK6053419589142643828262" }, { "name": "Slovenia", "code": "SI", "iban": "SI97975426678332786" }, { "name": "Spain", "code": "ES", "iban": "ES7231904977492569944158" }, { "name": "Sweden", "code": "SE", "iban": "SE4949996195749755572136" }, { "name": "Hungary", "code": "HU", "iban": "HU42117730161111101800000000" }, { "name": "Norway", "code": "NO", "iban": "NO9386011117947" }, { "name": "Liechtenstein", "code": "LI", "iban": "LI7008800683146527484" }, { "name": "Iceland", "code": "IS", "iban": "IS140159260076545510730339" }, { "name": "Switzerland", "code": "CH", "iban": "CH4789144623328263139" }, { "name": "United Kingdom", "code": "GB", "iban": "GB09BARC20040416289669" }, { "name": "Monaco", "code": "MC", "iban": "MC2112739000407179846124F08" }, { "name": "Andorra", "code": "AD", "iban": "AD5127638574262995775744" }, { "name": "San Marino", "code": "SM", "iban": "SM86U0322509800000000270100" }, { "name": "Holy See (Vatican City State)", "code": "VA", "iban": "VA59001123000012345678" }];
        // this.initExtraSepaForm();
    }
    ngOnInit() {
        this.initExtraSepaForm();
        this.subscription.add(this.extraSepaForm.controls['codiceContoPresent'].valueChanges.subscribe((codiceContoPresent) => {
            if (codiceContoPresent) {
                this.extraSepaForm.controls['iban'].setValidators([]);
                this.extraSepaForm.controls['iban'].patchValue(null);
                this.extraSepaForm.controls['iban'].updateValueAndValidity();
                this.extraSepaForm.controls['codiceConto'].setValidators(this.codiceContoValidators);
                this.extraSepaForm.controls['codiceConto'].updateValueAndValidity();
            }
            else {
                this.extraSepaForm.controls['codiceConto'].setValidators([]);
                this.extraSepaForm.controls['codiceConto'].patchValue(null);
                this.extraSepaForm.controls['codiceConto'].updateValueAndValidity();
                this.extraSepaForm.controls['iban'].setValidators(this.ibanValidators);
                this.extraSepaForm.controls['iban'].updateValueAndValidity();
            }
        }));
        this.subscription.add(this.extraSepaForm.controls['swiftBicPresent'].valueChanges.subscribe((swiftBicPresent) => {
            if (swiftBicPresent) {
                this.extraSepaForm.controls['swift'].setValidators([Validators.required, Validators.maxLength(11), Validators.minLength(8)]);
                this.extraSepaForm.controls['swift'].updateValueAndValidity();
                this.extraSepaForm.controls['nazione'].setValidators([]);
                this.extraSepaForm.controls['nazione'].patchValue(null);
                this.extraSepaForm.controls['nazione'].updateValueAndValidity();
                this.extraSepaForm.controls['citta'].setValidators([]);
                this.extraSepaForm.controls['citta'].patchValue(null);
                this.extraSepaForm.controls['citta'].updateValueAndValidity();
                this.extraSepaForm.controls['banca'].setValidators([]);
                this.extraSepaForm.controls['banca'].patchValue(null);
                this.extraSepaForm.controls['banca'].updateValueAndValidity();
                this.extraSepaForm.controls['indirizzo'].setValidators([]);
                this.extraSepaForm.controls['indirizzo'].patchValue(null);
                this.extraSepaForm.controls['indirizzo'].updateValueAndValidity();
                this.extraSepaForm.controls['zipCode'].setValidators([]);
                this.extraSepaForm.controls['zipCode'].patchValue(null);
                this.extraSepaForm.controls['zipCode'].updateValueAndValidity();
                this.extraSepaForm.controls['civico'].setValidators([]);
                this.extraSepaForm.controls['civico'].updateValueAndValidity();
                this.extraSepaForm.controls['civico'].patchValue(null);
            }
            else {
                this.extraSepaForm.controls['swift'].setValidators([]);
                this.extraSepaForm.controls['swift'].patchValue(null);
                this.extraSepaForm.controls['swift'].updateValueAndValidity();
                this.extraSepaForm.controls['nazione'].setValidators([Validators.required]);
                this.extraSepaForm.controls['nazione'].updateValueAndValidity();
                this.extraSepaForm.controls['citta'].setValidators([Validators.required]);
                this.extraSepaForm.controls['citta'].updateValueAndValidity();
                this.extraSepaForm.controls['banca'].setValidators([Validators.required]);
                this.extraSepaForm.controls['banca'].updateValueAndValidity();
                this.extraSepaForm.controls['indirizzo'].setValidators([Validators.required]);
                this.extraSepaForm.controls['indirizzo'].updateValueAndValidity();
                this.extraSepaForm.controls['zipCode'].setValidators([Validators.required]);
                this.extraSepaForm.controls['zipCode'].updateValueAndValidity();
                this.extraSepaForm.controls['civico'].setValidators([Validators.required]);
                this.extraSepaForm.controls['civico'].updateValueAndValidity();
            }
        }));
        this.extraSepaForm.valueChanges.subscribe(() => {
            // if (this.extraSepaForm.valid) {
            const bonificoExtraSepa = {
                swift: this.extraSepaForm.get('swift').value,
                codiceContoPresent: this.extraSepaForm.get('codiceContoPresent').value,
                codiceConto: this.extraSepaForm.get('codiceConto').value,
                iban: this.extraSepaForm.get('iban').value,
                delegato: this.extraSepaForm.get('existsDelegatoRiscossione').value,
                delegatoRiscossione: this.extraSepaForm.get('existsDelegatoRiscossione').value ? this.delegato : null,
                banca: this.extraSepaForm.get('banca').value,
                filiale: this.extraSepaForm.get('citta').value,
                indirizzo: this.extraSepaForm.get('indirizzo').value,
                swiftBicPresent: this.extraSepaForm.get('swiftBicPresent').value,
                nazione: this.extraSepaForm.get('nazione').value,
                zipCode: this.extraSepaForm.get('zipCode').value,
                codiceProvincia: 'EE',
                civico: this.extraSepaForm.get('civico').value,
            };
            const isFormValid = this.extraSepaForm.valid;
            const isFormDelegatoValid = this.extraSepaForm.get('existsDelegatoRiscossione').value === true ? this.isDelegatoValid : true;
            const isValid = isFormValid && isFormDelegatoValid;
            this.bonificoExtraSepaReady.emit({ bonifico: bonificoExtraSepa, isValid });
            //}
        });
    }
    initExtraSepaForm() {
        var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
        this.extraSepaForm = new FormGroup({
            existsDelegatoRiscossione: new FormControl(this.bonificoExtraSepa != null ? this.bonificoExtraSepa.delegato : false, [Validators.required]),
            swift: new FormControl((_a = this.bonificoExtraSepa) === null || _a === void 0 ? void 0 : _a.swift, [Validators.required, Validators.maxLength(11), Validators.minLength(8)]),
            banca: new FormControl((_b = this.bonificoExtraSepa) === null || _b === void 0 ? void 0 : _b.banca, [Validators.required]),
            indirizzo: new FormControl((_c = this.bonificoExtraSepa) === null || _c === void 0 ? void 0 : _c.indirizzo, [Validators.required]),
            codiceContoPresent: new FormControl(this.bonificoExtraSepa != null ? this.bonificoExtraSepa.codiceContoPresent : false, [Validators.required]),
            codiceConto: new FormControl((_d = this.bonificoExtraSepa) === null || _d === void 0 ? void 0 : _d.codiceConto, this.codiceContoValidators),
            iban: new FormControl((_e = this.bonificoExtraSepa) === null || _e === void 0 ? void 0 : _e.iban, this.ibanValidators),
            swiftBicPresent: new FormControl(((_f = this.bonificoExtraSepa) === null || _f === void 0 ? void 0 : _f.swift) ? true : false, [Validators.required]),
            nazione: new FormControl((_g = this.bonificoExtraSepa) === null || _g === void 0 ? void 0 : _g.nazione, [Validators.required]),
            citta: new FormControl((_h = this.bonificoExtraSepa) === null || _h === void 0 ? void 0 : _h.filiale, [Validators.required]),
            zipCode: new FormControl((_j = this.bonificoExtraSepa) === null || _j === void 0 ? void 0 : _j.zipCode, [Validators.required]),
            civico: new FormControl((_k = this.bonificoExtraSepa) === null || _k === void 0 ? void 0 : _k.civico, [Validators.required]),
        });
    }
    ngOnDestroy() {
        this.subscription.unsubscribe();
    }
    onValidateExtraSepaPersonaFisica() {
        this.validateExtraSepaPersonaFisicaEmitter.emit();
    }
    onExistsDelegatoRiscossioneChange(tipo) {
        if (!tipo.value) {
            this.isDelegatoValid = true;
            this.resetEstremiPersonaFisicaExtraSepaFormEmitter.emit();
        }
    }
    byCode(n1, n2) {
        return (n1 === null || n1 === void 0 ? void 0 : n1.codiceCatastale) == (n2 === null || n2 === void 0 ? void 0 : n2.codiceCatastale);
    }
    ValidateNotIban(control) {
        if (!control.value) {
            return null;
        }
        const ibanRegex = /^(?:(?: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})$/;
        if (ibanRegex.test(control.value.toString().trim())) {
            return { codiceContoSchouldNotBeIban: true };
        }
        return null;
    }
    extraSepaCountriesValidator() {
        return (form) => {
            const iban = form.value;
            if (!iban || (iban === null || iban === void 0 ? void 0 : iban.length) < 2) {
                return null;
            }
            const countryCode = iban.substring(0, 2);
            if (this.sepaCountries.some((element) => element.code === countryCode)) {
                return { ibanSepa: true };
            }
            return null;
        };
    }
    onDelegatoRiscossioneReady(event) {
        this.delegato = event.persona;
        this.isDelegatoValid = event.isValid;
        this.personaFisicaEmitter.emit({ persona: event.persona, isValid: event.isValid });
    }
    convertToUppercase(value) {
        if (this.extraSepaForm.controls['codiceContoPresent'].value) {
            this.extraSepaForm.get('codiceConto').setValue(value.toUpperCase());
        }
        else {
            this.extraSepaForm.get('iban').setValue(value.toUpperCase());
        }
    }
    noSpacesValidator() {
        return (control) => {
            const hasSpaces = /\s/.test(control.value);
            return hasSpaces ? { spacesIban: true } : null;
        };
    }
}
BonificoExtraSepaComponent.decorators = [
    { type: Component, args: [{
                selector: 'lib-bonifico-extra-sepa',
                template: "<ng-container [formGroup]=\"extraSepaForm\" [ngxsForm]=\"extraSepaFormPath\">\r\n\t<div class=\"row\">\r\n\t\t<div class=\"col-md-8\">\r\n\t\t\t<label id=\"existsDelegatoRiscossioneLabel\">{{ \"exists-delegato-riscossione\" | traduzione }}</label>\r\n\t\t\t<mat-radio-group class=\"radio-group\"\r\n\t\t\t\t\t\t\t aria-labelledby=\"existsDelegatoRiscossioneLabel\"\r\n\t\t\t\t\t\t\t formControlName=\"existsDelegatoRiscossione\"\r\n\t\t\t\t\t\t\t (change)=\"onExistsDelegatoRiscossioneChange($event)\">\r\n\t\t\t\t<mat-radio-button class=\"radio-button pl-2\" [value]=\"true\">\r\n\t\t\t\t\t{{ \"si\" | traduzione }}\r\n\t\t\t\t</mat-radio-button>\r\n\r\n\t\t\t\t<mat-radio-button class=\"radio-button pl-2\" [value]=\"false\">\r\n\t\t\t\t\t{{ \"no\" | traduzione }}\r\n\t\t\t\t</mat-radio-button>\r\n\t\t\t</mat-radio-group>\r\n\t\t\t<br /><br />\r\n\t\t\t<mat-hint *infoTip=\"'exists-delegato-riscossione'\"></mat-hint>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div *ngIf=\"extraSepaForm.controls['existsDelegatoRiscossione'].value\" class=\"row mt-3\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<div class=\"row mt-4\">\r\n\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t<lib-estremi-persona-fisica [ngxsFormPath]=\"estremiPFExtraSepaFormPath\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[province]=\"province\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[nazioni]=\"nazioni\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[isPersonaFisicaValid]=\"isPersonaFisicaExtraSepaValid\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[personaFisica]=\"bonificoExtraSepa?.delegatoRiscossione\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[viewSessoPF]=\"viewSessoPF\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(validatePersonaFisicaEmitter)=\"onValidateExtraSepaPersonaFisica()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(personaFisicaEmitter)=\"onDelegatoRiscossioneReady($event)\">\r\n\t\t\t\t\t</lib-estremi-persona-fisica>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<lib-dati-residenza [validateAndGetResidenza]=\"validateAndGetResidenza\"></lib-dati-residenza>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div class=\"row mt-4\">\r\n\t\t<div class=\"col-md-8\">\r\n\t\t\t<label id=\"existsBicSwiftLabel\">{{ \"exists-bic-swift\" | traduzione }}</label>\r\n\t\t\t<mat-radio-group class=\"radio-group\"\r\n\t\t\t\t\t\t\t aria-labelledby=\"existsBicSwiftLabel\"\r\n\t\t\t\t\t\t\t formControlName=\"swiftBicPresent\">\r\n\t\t\t\t<mat-radio-button class=\"radio-button pl-2\" [value]=\"true\">\r\n\t\t\t\t\t{{ \"si\" | traduzione }}\r\n\t\t\t\t</mat-radio-button>\r\n\r\n\t\t\t\t<mat-radio-button class=\"radio-button pl-2\" [value]=\"false\">\r\n\t\t\t\t\t{{ \"no\" | traduzione }}\r\n\t\t\t\t</mat-radio-button>\r\n\t\t\t</mat-radio-group>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div *ngIf=\"extraSepaForm.controls['swiftBicPresent'].value; else noswiftBic\" class=\"row\">\r\n\t\t<div class=\"col-md-8\">\r\n\t\t\t<mat-form-field>\r\n\t\t\t\t<input matInput placeholder=\"{{ 'required' | traduzione }}{{ 'swift' | traduzione }}\" formControlName=\"swift\" />\r\n\t\t\t\t<!-- <mat-error *ngIf=\"extraSepaForm.controls['swift'].invalid\">\r\n\t\t\t\t\t{{ getErrorMessage(extraSepaForm.controls['swift']) | traduzione }}\r\n\t\t\t\t</mat-error> -->\r\n\t\t\t\t<mat-error *ngIf=\"extraSepaForm.controls['swift']?.hasError('required')\">\r\n\t\t\t\t\t{{'validation-required'| traduzione}}\r\n\t\t\t\t</mat-error>\r\n\t\t\t\t<mat-error *ngIf=\"extraSepaForm.controls['swift']?.hasError('minlength')\">\r\n\t\t\t\t\t{{'validation-swift-min' | traduzione}}\r\n\t\t\t\t</mat-error>\r\n\t\t\t\t<mat-error *ngIf=\"extraSepaForm.controls['swift']?.hasError('maxlength')\">\r\n\t\t\t\t\t{{'validation-swift-max' | traduzione}}\r\n\t\t\t\t</mat-error>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<ng-template #noswiftBic>\r\n\t\t<div class=\"row my-4 mt-4\">\r\n\t\t\t<div class=\"col-md-4\">\r\n\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t<mat-label>{{ 'required' | traduzione }}{{ 'nazione' | traduzione }}</mat-label>\r\n\t\t\t\t\t<mat-select [placeholder]=\"'seleziona' | traduzione\" formControlName=\"nazione\" [compareWith]=\"byCode\">\r\n\t\t\t\t\t\t<mat-option *ngFor=\"let nazione of nazioni\" [value]=\"nazione\">\r\n\t\t\t\t\t\t\t{{ nazione.denominazione }}\r\n\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t<mat-error *ngIf=\"extraSepaForm.controls['nazione'].invalid\">\r\n\t\t\t\t\t\t{{ 'obbligatorio' | traduzione }}\r\n\t\t\t\t\t</mat-error>\r\n\t\t\t\t</mat-form-field>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"col-md-4\">\r\n\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t<input matInput [maxlength]=\"70\" formControlName=\"banca\" placeholder=\"{{ 'required' | traduzione }}{{ 'banca' | traduzione }}\" />\r\n\t\t\t\t\t<mat-error *ngIf=\"extraSepaForm.controls['banca'].invalid\">\r\n\t\t\t\t\t\t{{ getErrorMessage(extraSepaForm.controls['banca']) | traduzione }}\r\n\t\t\t\t\t</mat-error>\r\n\t\t\t\t</mat-form-field>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"col-md-4\">\r\n\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t<input matInput [maxlength]=\"35\" placeholder=\"{{ 'required' | traduzione }}{{ 'citta' | traduzione }}\" formControlName=\"citta\" />\r\n\t\t\t\t\t<mat-error *ngIf=\"extraSepaForm.controls['citta'].invalid\">\r\n\t\t\t\t\t\t{{ getErrorMessage(extraSepaForm.controls['citta']) | traduzione }}\r\n\t\t\t\t\t</mat-error>\r\n\t\t\t\t</mat-form-field>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"row mt-4\">\r\n\t\t\t<div class=\"col-md-4\">\r\n\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t<input matInput [maxlength]=\"70\" formControlName=\"indirizzo\" placeholder=\"{{ 'required' | traduzione }}{{ 'indirizzo' | traduzione }}\" />\r\n\t\t\t\t\t<mat-error *ngIf=\"extraSepaForm.controls['indirizzo'].invalid\">\r\n\t\t\t\t\t\t{{ getErrorMessage(extraSepaForm.controls['indirizzo']) | traduzione }}\r\n\t\t\t\t\t</mat-error>\r\n\t\t\t\t</mat-form-field>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"col-md-4\">\r\n\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t<input matInput [maxlength]=\"16\" placeholder=\"{{ 'required' | traduzione }}{{ 'civico' | traduzione }}\" formControlName=\"civico\" />\r\n\t\t\t\t\t<mat-error *ngIf=\"extraSepaForm.controls['civico'].invalid\">\r\n\t\t\t\t\t\t{{ getErrorMessage(extraSepaForm.controls['civico']) | traduzione }}\r\n\t\t\t\t\t</mat-error>\r\n\t\t\t\t</mat-form-field>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"col-md-4\">\r\n\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t<input matInput [maxlength]=\"16\" placeholder=\"{{ 'required' | traduzione }}{{ 'cap-estero' | traduzione }}\" formControlName=\"zipCode\" />\r\n\t\t\t\t\t<mat-error *ngIf=\"extraSepaForm.controls['zipCode'].invalid\">\r\n\t\t\t\t\t\t{{ getErrorMessage(extraSepaForm.controls['zipCode']) | traduzione }}\r\n\t\t\t\t\t</mat-error>\r\n\t\t\t\t</mat-form-field>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"row mt-4\">\r\n\t\t<div class=\"col-md-8\">\r\n\t\t\t<mat-radio-group class=\"radio-group\" aria-labelledby=\"codiceContoPresentLabel\" formControlName=\"codiceContoPresent\">\r\n\t\t\t\t<mat-radio-button class=\"radio-button pl-2\" [value]=\"true\">\r\n\t\t\t\t\t{{ \"codice-conto\" | traduzione }}\r\n\t\t\t\t</mat-radio-button>\r\n\r\n\t\t\t\t<mat-radio-button class=\"radio-button pl-2\" [value]=\"false\">\r\n\t\t\t\t\t{{ \"codice-iban\" | traduzione }}\r\n\t\t\t\t</mat-radio-button>\r\n\t\t\t</mat-radio-group>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div class=\"row mt-4\">\r\n\t\t<div class=\"col-md-8\" *ngIf=\"extraSepaForm.controls['codiceContoPresent'].value; else iban\">\r\n\t\t\t<mat-form-field>\r\n\t\t\t\t<input matInput placeholder=\"{{ 'required' | traduzione }}{{ 'codice-conto' | traduzione }}\"\r\n\t\t\t\t\tformControlName=\"codiceConto\"\r\n\t\t\t\t\t(input)=\"convertToUppercase($event.target.value)\" />\r\n\t\t\t\t<mat-error *ngIf=\"extraSepaForm.controls['codiceConto'].invalid\">\r\n\t\t\t\t\t{{ getErrorMessage(extraSepaForm.controls['codiceConto']) | traduzione }}\r\n\t\t\t\t</mat-error>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\r\n\t\t<ng-template #iban>\r\n\t\t\t<div class=\"col-md-8\">\r\n\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t<input matInput placeholder=\"{{ 'required' | traduzione }}{{ 'codice-iban' | traduzione }}\"\r\n\t\t\t\t\t\tformControlName=\"iban\"\r\n\t\t\t\t\t\t(input)=\"convertToUppercase($event.target.value)\" />\r\n\t\t\t\t\t<mat-error *ngIf=\"extraSepaForm.controls['iban'].invalid\">\r\n\t\t\t\t\t\t{{ getErrorMessage(extraSepaForm.controls['iban']) | traduzione }}\r\n\t\t\t\t\t</mat-error>\r\n\t\t\t\t</mat-form-field>\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</div>\r\n</ng-container>\r\n",
                styles: [""]
            },] }
];
BonificoExtraSepaComponent.ctorParameters = () => [];
BonificoExtraSepaComponent.propDecorators = {
    bonificoExtraSepa: [{ type: Input }],
    isPersonaFisicaExtraSepaValid: [{ type: Input }],
    nazioni: [{ type: Input }],
    province: [{ type: Input }],
    extraSepaFormPath: [{ type: Input }],
    estremiPFExtraSepaFormPath: [{ type: Input }],
    viewSessoPF: [{ type: Input }],
    validateAndGetResidenza: [{ type: Input }],
    validateExtraSepaPersonaFisicaEmitter: [{ type: Output }],
    resetEstremiPersonaFisicaExtraSepaFormEmitter: [{ type: Output }],
    bonificoExtraSepaReady: [{ type: Output }],
    personaFisicaEmitter: [{ type: Output }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9uaWZpY28tZXh0cmEtc2VwYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiRDovUHJvZ2V0dGkvREFHL3NvcmdlbnRpL2dpdGxhYi10ZXJuaS9jb21tb24tY29tcG9uZW50LWxpYi9wcm9qZWN0cy9wb3J0YWwtY29tbW9uLWNvbXBvbmVudC1saWIvc3JjLyIsInNvdXJjZXMiOlsibGliL21vZGFsaXRhLXBhZ2FtZW50by9jb21wb25lbnRzL2JvbmlmaWNvLWV4dHJhLXNlcGEvYm9uaWZpY28tZXh0cmEtc2VwYS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQWtCLFdBQVcsRUFBRSxTQUFTLEVBQWUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEcsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVsQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDdEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQVF2QyxNQUFNLE9BQU8sMEJBQTBCO0lBc0R0QztRQWpDQSxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQU03QiwwQ0FBcUMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBR2pFLGtEQUE2QyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFHekUsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQTBELENBQUM7UUFHcEcseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQXlELENBQUM7UUFJakcsbUJBQWMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLDJCQUEyQixFQUFFLEVBQUUsYUFBYSxFQUFFLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztRQUV0SCwwQkFBcUIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFdEYsaUJBQVksR0FBaUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV4RCxvQkFBZSxHQUFHLGVBQWUsQ0FBQztRQUVsQyxrQkFBYSxHQUFHLENBQUMsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLHNCQUFzQixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLGtCQUFrQixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsVUFBVSxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLHdCQUF3QixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsUUFBUSxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLDhCQUE4QixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLHVCQUF1QixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLG9CQUFvQixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLHNCQUFzQixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLG9CQUFvQixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsUUFBUSxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLDZCQUE2QixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLHdCQUF3QixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsUUFBUSxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLDZCQUE2QixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLHdCQUF3QixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsT0FBTyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLDZCQUE2QixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsUUFBUSxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLHVCQUF1QixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsV0FBVyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLHNCQUFzQixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsWUFBWSxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLHNCQUFzQixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsT0FBTyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLGlDQUFpQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsYUFBYSxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLG9CQUFvQixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsUUFBUSxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLDhCQUE4QixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsVUFBVSxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLDJCQUEyQixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsMEJBQTBCLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxTQUFTLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsMEJBQTBCLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxVQUFVLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsMEJBQTBCLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxVQUFVLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMscUJBQXFCLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxPQUFPLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsMEJBQTBCLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxRQUFRLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsMEJBQTBCLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxTQUFTLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsOEJBQThCLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxRQUFRLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsaUJBQWlCLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxlQUFlLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsdUJBQXVCLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxTQUFTLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsNEJBQTRCLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxhQUFhLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsdUJBQXVCLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyx3QkFBd0IsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLFFBQVEsRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyw2QkFBNkIsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLFNBQVMsRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQywwQkFBMEIsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLFlBQVksRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyw2QkFBNkIsRUFBQyxFQUFDLEVBQUMs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TTs0REFHTixNQUFNO3FDQUdOLE1BQU07bUNBR04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7RGF0aVBlcnNvbmFGaXNpY2FNb2RlbCwgTG9jYWxpdGFNb2RlbCwgTmF6aW9uZU1vZGVsLCBWZXJpZmljYVBmUmVzcG9uc2VEVE99IGZyb20gJy4uLy4uL21vZGVscy9lc3RyZW1pLXBlcnNvbmEtZmlzaWNhLm1vZGVsJztcclxuaW1wb3J0IHtnZXRFcnJvck1lc3NhZ2V9IGZyb20gJy4uLy4uL3V0aWxzL3ZhbGlkYXRvcnMtbWVzc2FnZXMudXRpbHMnO1xyXG5pbXBvcnQge2liYW5WYWxpZGF0b3J9IGZyb20gXCJuZ3gtaWJhblwiO1xyXG5pbXBvcnQge0JvbmlmaWNvRXh0cmFTZXBhTW9kZWx9IGZyb20gJy4uLy4uL21vZGVscy9ib25pZmljby1leHRyYS1zZXBhLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnbGliLWJvbmlmaWNvLWV4dHJhLXNlcGEnLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9ib25pZmljby1leHRyYS1zZXBhLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9ib25pZmljby1leHRyYS1zZXBhLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCb25pZmljb0V4dHJhU2VwYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0Ym9uaWZpY29FeHRyYVNlcGE6IEJvbmlmaWNvRXh0cmFTZXBhTW9kZWw7XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0aXNQZXJzb25hRmlzaWNhRXh0cmFTZXBhVmFsaWQ6IGJvb2xlYW47XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0bmF6aW9uaTogTmF6aW9uZU1vZGVsW107XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0cHJvdmluY2U6IExvY2FsaXRhTW9kZWxbXTtcclxuXHJcblx0QElucHV0KClcclxuXHRleHRyYVNlcGFGb3JtUGF0aDogc3RyaW5nO1xyXG5cclxuXHRASW5wdXQoKVxyXG5cdGVzdHJlbWlQRkV4dHJhU2VwYUZvcm1QYXRoOiBzdHJpbmc7XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0dmlld1Nlc3NvUEY6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0QElucHV0KClcclxuXHR2YWxpZGF0ZUFuZEdldFJlc2lkZW56YTogVmVyaWZpY2FQZlJlc3BvbnNlRFRPO1xyXG5cclxuXHRAT3V0cHV0KClcclxuXHR2YWxpZGF0ZUV4dHJhU2VwYVBlcnNvbmFGaXNpY2FFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuXHRAT3V0cHV0KClcclxuXHRyZXNldEVzdHJlbWlQZXJzb25hRmlzaWNhRXh0cmFTZXBhRm9ybUVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG5cdEBPdXRwdXQoKVxyXG5cdGJvbmlmaWNvRXh0cmFTZXBhUmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPHsgYm9uaWZpY286IEJvbmlmaWNvRXh0cmFTZXBhTW9kZWwsIGlzVmFsaWQ6IGJvb2xlYW4gfT4oKTtcclxuXHJcblx0QE91dHB1dCgpXHJcblx0cGVyc29uYUZpc2ljYUVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcGVyc29uYTogRGF0aVBlcnNvbmFGaXNpY2FNb2RlbCwgaXNWYWxpZDogYm9vbGVhbiB9PigpO1xyXG5cclxuXHRleHRyYVNlcGFGb3JtOiBGb3JtR3JvdXA7XHJcblxyXG5cdGliYW5WYWxpZGF0b3JzID0gW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMuZXh0cmFTZXBhQ291bnRyaWVzVmFsaWRhdG9yKCksXHRpYmFuVmFsaWRhdG9yKCksIHRoaXMubm9TcGFjZXNWYWxpZGF0b3IoKV07XHJcblxyXG5cdGNvZGljZUNvbnRvVmFsaWRhdG9ycyA9IFtWYWxpZGF0b3JzLnJlcXVpcmVkLFx0dGhpcy5WYWxpZGF0ZU5vdEliYW4sIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDQ0KV07XHJcblxyXG5cdHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcblxyXG5cdGdldEVycm9yTWVzc2FnZSA9IGdldEVycm9yTWVzc2FnZTtcclxuXHJcblx0c2VwYUNvdW50cmllcyA9IFt7XCJuYW1lXCI6XCJBdXN0cmlhXCIsXCJjb2RlXCI6XCJBVFwiLFwiaWJhblwiOlwiQVQ0OTMyMDAwNTY1NjMyODk5NzRcIn0se1wibmFtZVwiOlwiQmVsZ2l1bVwiLFwiY29kZVwiOlwiQkVcIixcImliYW5cIjpcIkJFNjU1NjE2ODk1Mjg4OTZcIn0se1wibmFtZVwiOlwiQnVsZ2FyaWFcIixcImNvZGVcIjpcIkJHXCIsXCJpYmFuXCI6XCJCRzkyVFRCQjk0MDA2NTU5MjY2MTg4XCJ9LHtcIm5hbWVcIjpcIkN5cHJ1c1wiLFwiY29kZVwiOlwiQ1lcIixcImliYW5cIjpcIkNZNTI2NjU1NjE0MTY3NzIzNjk0NTc4NjQ0MzdcIn0se1wibmFtZVwiOlwiQ3JvYXRpYVwiLFwiY29kZVwiOlwiSFJcIixcImliYW5cIjpcIkhSNTUyMzQwMDA5ODY2MzI2NjI0NlwifSx7XCJuYW1lXCI6XCJEZW5tYXJrXCIsXCJjb2RlXCI6XCJES1wiLFwiaWJhblwiOlwiREsyNTUwNTE1OTE4MzI4NTI4XCJ9LHtcIm5hbWVcIjpcIkVzdG9uaWFcIixcImNvZGVcIjpcIkVFXCIsXCJpYmFuXCI6XCJFRTU5MTI4NjY1Mzg2NzQ5MTc4NlwifSx7XCJuYW1lXCI6XCJGaW5sYW5kXCIsXCJjb2RlXCI6XCJGSVwiLFwiaWJhblwiOlwiRkk4NDc5NDg2OTExNzg4NTk4XCJ9LHtcIm5hbWVcIjpcIkZyYW5jZVwiLFwiY29kZVwiOlwiRlJcIixcImliYW5cIjpcIkZSODUxNDUwODAwMDcwNzIzOTQ4ODczOEoyMVwifSx7XCJuYW1lXCI6XCJHZXJtYW55XCIsXCJjb2RlXCI6XCJERVwiLFwiaWJhblwiOlwiREUxNDUwMDEwNTE3NDE4NTQ4NDE3N1wifSx7XCJuYW1lXCI6XCJHcmVlY2VcIixcImNvZGVcIjpcIkdSXCIsXCJpYmFuXCI6XCJHUjkyMDE0OTQ0OTE1ODgxNDE1NDk1MzE3OTlcIn0se1wibmFtZVwiOlwiSXJlbGFuZFwiLFwiY29kZVwiOlwiSUVcIixcImliYW5cIjpcIklFMjlBSUJLOTMxMTUyMTIzNDU2NzhcIn0se1wibmFtZVwiOlwiSXRhbHlcIixcImNvZGVcIjpcIklUXCIsXCJpYmFuXCI6XCJJVDc3UjAzMDAyMDMyODA2NDg0MTk2NjgyNTNcIn0se1wibmFtZVwiOlwiTGF0dmlhXCIsXCJjb2RlXCI6XCJMVlwiLFwiaWJhblwiOlwiTFY4MEJBTkswMDAwNDM1MTk1MDAxXCJ9LHtcIm5hbWVcIjpcIkxpdGh1YW5pYVwiLFwiY29kZVwiOlwiTFRcIixcImliYW5cIjpcIkxUMjc1MTY4MTc5OTkzNjQ1NDI4XCJ9LHtcIm5hbWVcIjpcIkx1eGVtYm91cmdcIixcImNvZGVcIjpcIkxVXCIsXCJpYmFuXCI6XCJMVTM1MDEwNjgxNDMzMTcxNjQyNVwifSx7XCJuYW1lXCI6XCJNYWx0YVwiLFwiY29kZVwiOlwiTVRcIixcImliYW5cIjpcIk1UNTRXTENJMTIzNzc1Mjk2ODU1ODk0NTQ3NDc4MzVcIn0se1wibmFtZVwiOlwiTmV0aGVybGFuZHNcIixcImNvZGVcIjpcIk5MXCIsXCJpYmFuXCI6XCJOTDEzSU5HQjY3NTUwMzczOTdcIn0se1wibmFtZVwiOlwiUG9sYW5kXCIsXCJjb2RlXCI6XCJQTFwiLFwiaWJhblwiOlwiUEwwNjEwOTAyNDAyMzk2MjIzNjI2MzY2NjY2NFwifSx7XCJuYW1lXCI6XCJQb3J0dWdhbFwiLFwiY29kZVwiOlwiUFRcIixcImliYW5cIjpcIlBUMjYwMDM1MDY1MTY5OTUyMzQzNjk0ODJcIn0se1wibmFtZVwiOlwiQ3plY2ggUmVwdWJsaWNcIixcImNvZGVcIjpcIkNaXCIsXCJpYmFuXCI6XCJDWjEzNTA1MTUzNDMyOTEyNDMyNjEyMjJcIn0se1wibmFtZVwiOlwiUm9tYW5pYVwiLFwiY29kZVwiOlwiUk9cIixcImliYW5cIjpcIlJPNjRSWkJSMjMzNTUyMTkyNjc2ODI2MlwifSx7XCJuYW1lXCI6XCJTbG92YWtpYVwiLFwiY29kZVwiOlwiU0tcIixcImliYW5cIjpcIlNLNjA1MzQxOTU4OTE0MjY0MzgyODI2MlwifSx7XCJuYW1lXCI6XCJTbG92ZW5pYVwiLFwiY29kZVwiOlwiU0lcIixcImliYW5cIjpcIlNJOTc5NzU0MjY2NzgzMzI3ODZcIn0se1wibmFtZVwiOlwiU3BhaW5cIixcImNvZGVcIjpcIkVTXCIsXCJpYmFuXCI6XCJFUzcyMzE5MDQ5Nzc0OTI1Njk5NDQxNThcIn0se1wibmFtZVwiOlwiU3dlZGVuXCIsXCJjb2RlXCI6XCJTRVwiLFwiaWJhblwiOlwiU0U0OTQ5OTk2MTk1NzQ5NzU1NTcyMTM2XCJ9LHtcIm5hbWVcIjpcIkh1bmdhcnlcIixcImNvZGVcIjpcIkhVXCIsXCJpYmFuXCI6XCJIVTQyMTE3NzMwMTYxMTExMTAxODAwMDAwMDAwXCJ9LHtcIm5hbWVcIjpcIk5vcndheVwiLFwiY29kZVwiOlwiTk9cIixcImliYW5cIjpcIk5POTM4NjAxMTExNzk0N1wifSx7XCJuYW1lXCI6XCJMaWVjaHRlbnN0ZWluXCIsXCJjb2RlXCI6XCJMSVwiLFwiaWJhblwiOlwiTEk3MDA4ODAwNjgzMTQ2NTI3NDg0XCJ9LHtcIm5hbWVcIjpcIkljZWxhbmRcIixcImNvZGVcIjpcIklTXCIsXCJpYmFuXCI6XCJJUzE0MDE1OTI2MDA3NjU0NTUxMDczMDMzOVwifSx7XCJuYW1lXCI6XCJTd2l0emVybGFuZFwiLFwiY29kZVwiOlwiQ0hcIixcImliYW5cIjpcIkNINDc4OTE0NDYyMzMyODI2MzEzOVwifSx7XCJuYW1lXCI6XCJVbml0ZWQgS2luZ2RvbVwiLFwiY29kZVwiOlwiR0JcIixcImliYW5cIjpcIkdCMDlCQVJDMjAwNDA0MTYyODk2NjlcIn0se1wibmFtZVwiOlwiTW9uYWNvXCIsXCJjb2RlXCI6XCJNQ1wiLFwiaWJhblwiOlwiTUMyMTEyNzM5MDAwNDA3MTc5ODQ2MTI0RjA4XCJ9LHtcIm5hbWVcIjpcIkFuZG9ycmFcIixcImNvZGVcIjpcIkFEXCIsXCJpYmFuXCI6XCJBRDUxMjc2Mzg1NzQyNjI5OTU3NzU3NDRcIn0se1wibmFtZVwiOlwiU2FuIE1hcmlub1wiLFwiY29kZVwiOlwiU01cIixcImliYW5cIjpcIlNNODZVMDMyMjUwOTgwMDAwMDAwMDI3MDEwMFwifSx7XCJuYW1lXCI6XCJIb2x5IFNlZSAoVmF0aWNhbiBDaXR5IFN0YXRlKVwiLFwiY29kZVwiOlwiVkFcIixcImliYW5cIjpcIlZBNTkwMDExMjMwMDAwMTIzNDU2NzhcIn1dO1xyXG5cclxuXHRkZWxlZ2F0bzogRGF0aVBlcnNvbmFGaXNpY2FNb2RlbDtcclxuXHJcblx0aXNEZWxlZ2F0b1ZhbGlkOiBib29sZWFuO1xyXG5cclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdC8vIHRoaXMuaW5pdEV4dHJhU2VwYUZvcm0oKTtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5pbml0RXh0cmFTZXBhRm9ybSgpO1xyXG5cdFx0dGhpcy5zdWJzY3JpcHRpb24uYWRkKFxyXG5cdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ2NvZGljZUNvbnRvUHJlc2VudCddLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoXHJcblx0XHRcdFx0KGNvZGljZUNvbnRvUHJlc2VudCkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKGNvZGljZUNvbnRvUHJlc2VudCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ2liYW4nXS5zZXRWYWxpZGF0b3JzKFtdKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWydpYmFuJ10ucGF0Y2hWYWx1ZShudWxsKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWydpYmFuJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ2NvZGljZUNvbnRvJ10uc2V0VmFsaWRhdG9ycyh0aGlzLmNvZGljZUNvbnRvVmFsaWRhdG9ycyk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snY29kaWNlQ29udG8nXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ2NvZGljZUNvbnRvJ10uc2V0VmFsaWRhdG9ycyhbXSk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snY29kaWNlQ29udG8nXS5wYXRjaFZhbHVlKG51bGwpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ2NvZGljZUNvbnRvJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ2liYW4nXS5zZXRWYWxpZGF0b3JzKHRoaXMuaWJhblZhbGlkYXRvcnMpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ2liYW4nXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQpXHJcblx0XHQpO1xyXG5cclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcclxuXHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWydzd2lmdEJpY1ByZXNlbnQnXS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdChzd2lmdEJpY1ByZXNlbnQpID0+IHtcclxuXHRcdFx0XHRcdGlmIChzd2lmdEJpY1ByZXNlbnQpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWydzd2lmdCddLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsXHRWYWxpZGF0b3JzLm1heExlbmd0aCgxMSksXHRWYWxpZGF0b3JzLm1pbkxlbmd0aCg4KV0pO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ3N3aWZ0J10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ25hemlvbmUnXS5zZXRWYWxpZGF0b3JzKFtdKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWyduYXppb25lJ10ucGF0Y2hWYWx1ZShudWxsKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWyduYXppb25lJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ2NpdHRhJ10uc2V0VmFsaWRhdG9ycyhbXSk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snY2l0dGEnXS5wYXRjaFZhbHVlKG51bGwpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ2NpdHRhJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ2JhbmNhJ10uc2V0VmFsaWRhdG9ycyhbXSk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snYmFuY2EnXS5wYXRjaFZhbHVlKG51bGwpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ2JhbmNhJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ2luZGlyaXp6byddLnNldFZhbGlkYXRvcnMoW10pO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ2luZGlyaXp6byddLnBhdGNoVmFsdWUobnVsbCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snaW5kaXJpenpvJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ3ppcENvZGUnXS5zZXRWYWxpZGF0b3JzKFtdKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWyd6aXBDb2RlJ10ucGF0Y2hWYWx1ZShudWxsKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWyd6aXBDb2RlJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ2NpdmljbyddLnNldFZhbGlkYXRvcnMoW10pO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ2NpdmljbyddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWydjaXZpY28nXS5wYXRjaFZhbHVlKG51bGwpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWydzd2lmdCddLnNldFZhbGlkYXRvcnMoW10pO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ3N3aWZ0J10ucGF0Y2hWYWx1ZShudWxsKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWydzd2lmdCddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWyduYXppb25lJ10uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ25hemlvbmUnXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snY2l0dGEnXS5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snY2l0dGEnXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snYmFuY2EnXS5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snYmFuY2EnXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snaW5kaXJpenpvJ10uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ2luZGlyaXp6byddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWyd6aXBDb2RlJ10uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ3ppcENvZGUnXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snY2l2aWNvJ10uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ2NpdmljbyddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdClcclxuXHRcdCk7XHJcblxyXG5cdFx0dGhpcy5leHRyYVNlcGFGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAvLyBpZiAodGhpcy5leHRyYVNlcGFGb3JtLnZhbGlkKSB7XHJcbiAgICAgICAgY29uc3QgYm9uaWZpY29FeHRyYVNlcGE6IEJvbmlmaWNvRXh0cmFTZXBhTW9kZWwgPSB7XHJcblx0XHRcdFx0XHRzd2lmdDogdGhpcy5leHRyYVNlcGFGb3JtLmdldCgnc3dpZnQnKS52YWx1ZSxcclxuXHRcdFx0XHRcdGNvZGljZUNvbnRvUHJlc2VudDogdGhpcy5leHRyYVNlcGFGb3JtLmdldCgnY29kaWNlQ29udG9QcmVzZW50JykudmFsdWUsXHJcblx0XHRcdFx0XHRjb2RpY2VDb250bzogdGhpcy5leHRyYVNlcGFGb3JtLmdldCgnY29kaWNlQ29udG8nKS52YWx1ZSxcclxuXHRcdFx0XHRcdGliYW46IHRoaXMuZXh0cmFTZXBhRm9ybS5nZXQoJ2liYW4nKS52YWx1ZSxcclxuXHRcdFx0XHRcdGRlbGVnYXRvOiB0aGlzLmV4dHJhU2VwYUZvcm0uZ2V0KCdleGlzdHNEZWxlZ2F0b1Jpc2Nvc3Npb25lJykudmFsdWUsXHJcblx0XHRcdFx0XHRkZWxlZ2F0b1Jpc2Nvc3Npb25lOiB0aGlzLmV4dHJhU2VwYUZvcm0uZ2V0KCdleGlzdHNEZWxlZ2F0b1Jpc2Nvc3Npb25lJykudmFsdWUgPyB0aGlzLmRlbGVnYXRvIDogbnVsbCxcclxuXHRcdFx0XHRcdGJhbmNhOiB0aGlzLmV4dHJhU2VwYUZvcm0uZ2V0KCdiYW5jYScpLnZhbHVlLFxyXG5cdFx0XHRcdFx0ZmlsaWFsZTogdGhpcy5leHRyYVNlcGFGb3JtLmdldCgnY2l0dGEnKS52YWx1ZSxcclxuXHRcdFx0XHRcdGluZGlyaXp6bzogdGhpcy5leHRyYVNlcGFGb3JtLmdldCgnaW5kaXJpenpvJykudmFsdWUsXHJcblx0XHRcdFx0XHRzd2lmdEJpY1ByZXNlbnQ6IHRoaXMuZXh0cmFTZXBhRm9ybS5nZXQoJ3N3aWZ0QmljUHJlc2VudCcpLnZhbHVlLFxyXG5cdFx0XHRcdFx0bmF6aW9uZTogdGhpcy5leHRyYVNlcGFGb3JtLmdldCgnbmF6aW9uZScpLnZhbHVlLFxyXG5cdFx0XHRcdFx0emlwQ29kZTogdGhpcy5leHRyYVNlcGFGb3JtLmdldCgnemlwQ29kZScpLnZhbHVlLFxyXG5cdFx0XHRcdFx0Y29kaWNlUHJvdmluY2lhOiAnRUUnLFxyXG5cdFx0XHRcdFx0Y2l2aWNvOiB0aGlzLmV4dHJhU2VwYUZvcm0uZ2V0KCdjaXZpY28nKS52YWx1ZSxcclxuXHRcdFx0XHR9O1xyXG5cclxuXHRcdFx0XHRjb25zdCBpc0Zvcm1WYWxpZCA9IHRoaXMuZXh0cmFTZXBhRm9ybS52YWxpZDtcclxuXHRcdFx0XHRjb25zdCBpc0Zvcm1EZWxlZ2F0b1ZhbGlkID0gdGhpcy5leHRyYVNlcGFGb3JtLmdldCgnZXhpc3RzRGVsZWdhdG9SaXNjb3NzaW9uZScpLnZhbHVlID09PSB0cnVlID8gdGhpcy5pc0RlbGVnYXRvVmFsaWQgOiB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGlzVmFsaWQgPSBpc0Zvcm1WYWxpZCAmJiBpc0Zvcm1EZWxlZ2F0b1ZhbGlkO1xyXG5cclxuICAgICAgICB0aGlzLmJvbmlmaWNvRXh0cmFTZXBhUmVhZHkuZW1pdCh7IGJvbmlmaWNvOiBib25pZmljb0V4dHJhU2VwYSwgaXNWYWxpZCB9KTtcclxuICAgICAgIC8vfVxyXG4gICAgfSk7XHJcblx0fVxyXG5cclxuXHRpbml0RXh0cmFTZXBhRm9ybSgpOiB2b2lkIHtcclxuXHRcdHRoaXMuZXh0cmFTZXBhRm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xyXG5cdFx0XHRleGlzdHNEZWxlZ2F0b1Jpc2Nvc3Npb25lOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5ib25pZmljb0V4dHJhU2VwYSAhPSBudWxsID8gdGhpcy5ib25pZmljb0V4dHJhU2VwYS5kZWxlZ2F0byA6IGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG5cdFx0XHRzd2lmdDogbmV3IEZvcm1Db250cm9sKHRoaXMuYm9uaWZpY29FeHRyYVNlcGE/LnN3aWZ0LCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxcdFZhbGlkYXRvcnMubWF4TGVuZ3RoKDExKSxcdFZhbGlkYXRvcnMubWluTGVuZ3RoKDgpXSksXHJcblx0XHRcdGJhbmNhOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5ib25pZmljb0V4dHJhU2VwYT8uYmFuY2EsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcblx0XHRcdGluZGlyaXp6bzogbmV3IEZvcm1Db250cm9sKHRoaXMuYm9uaWZpY29FeHRyYVNlcGE/LmluZGlyaXp6bywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuXHRcdFx0Y29kaWNlQ29udG9QcmVzZW50OiBuZXcgRm9ybUNvbnRyb2wodGhpcy5ib25pZmljb0V4dHJhU2VwYSAhPSBudWxsID8gdGhpcy5ib25pZmljb0V4dHJhU2VwYS5jb2RpY2VDb250b1ByZXNlbnQgOiBmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuXHRcdFx0Y29kaWNlQ29udG86IG5ldyBGb3JtQ29udHJvbCh0aGlzLmJvbmlmaWNvRXh0cmFTZXBhPy5jb2RpY2VDb250bywgdGhpcy5jb2RpY2VDb250b1ZhbGlkYXRvcnMpLFxyXG5cdFx0XHRpYmFuOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5ib25pZmljb0V4dHJhU2VwYT8uaWJhbiwgdGhpcy5pYmFuVmFsaWRhdG9ycyksXHJcblx0XHRcdHN3aWZ0QmljUHJlc2VudDogbmV3IEZvcm1Db250cm9sKHRoaXMuYm9uaWZpY29FeHRyYVNlcGE/LnN3aWZ0ID8gdHJ1ZSA6IGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG5cdFx0XHRuYXppb25lOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5ib25pZmljb0V4dHJhU2VwYT8ubmF6aW9uZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuXHRcdFx0Y2l0dGE6IG5ldyBGb3JtQ29udHJvbCh0aGlzLmJvbmlmaWNvRXh0cmFTZXBhPy5maWxpYWxlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG5cdFx0XHR6aXBDb2RlOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5ib25pZmljb0V4dHJhU2VwYT8uemlwQ29kZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuXHRcdFx0Y2l2aWNvOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5ib25pZmljb0V4dHJhU2VwYT8uY2l2aWNvLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0fVxyXG5cclxuXHRvblZhbGlkYXRlRXh0cmFTZXBhUGVyc29uYUZpc2ljYSgpOiB2b2lkIHtcclxuXHRcdHRoaXMudmFsaWRhdGVFeHRyYVNlcGFQZXJzb25hRmlzaWNhRW1pdHRlci5lbWl0KCk7XHJcblx0fVxyXG5cclxuXHRvbkV4aXN0c0RlbGVnYXRvUmlzY29zc2lvbmVDaGFuZ2UodGlwbyk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aXBvLnZhbHVlKSB7XHJcblx0XHRcdHRoaXMuaXNEZWxlZ2F0b1ZhbGlkID0gdHJ1ZTtcclxuXHRcdFx0dGhpcy5yZXNldEVzdHJlbWlQZXJzb25hRmlzaWNhRXh0cmFTZXBhRm9ybUVtaXR0ZXIuZW1pdCgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0YnlDb2RlKG4xOiBOYXppb25lTW9kZWwsIG4yOiBOYXppb25lTW9kZWwpIHtcclxuXHRcdHJldHVybiBuMT8uY29kaWNlQ2F0YXN0YWxlID09IG4yPy5jb2RpY2VDYXRhc3RhbGU7XHJcblx0fVxyXG5cclxuXHRWYWxpZGF0ZU5vdEliYW4oY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XHJcblx0XHRpZiAoIWNvbnRyb2wudmFsdWUpIHtcclxuXHRcdCAgcmV0dXJuIG51bGw7XHJcblx0XHR9XHJcblx0XHRjb25zdCBpYmFuUmVnZXggOiBSZWdFeHAgPSAvXig/Oig/OklUfFNNKVxcZHsyfVtBLVpdXFxkezIyfXxDWVxcZHsyfVtBLVpdXFxkezIzfXxOTFxcZHsyfVtBLVpdezR9XFxkezEwfXxMVlxcZHsyfVtBLVpdezR9XFxkezEzfXwoPzpCR3xCSHxHQnxJRSlcXGR7Mn1bQS1aXXs0fVxcZHsxNH18R0lcXGR7Mn1bQS1aXXs0fVxcZHsxNX18Uk9cXGR7Mn1bQS1aXXs0fVxcZHsxNn18S1dcXGR7Mn1bQS1aXXs0fVxcZHsyMn18TVRcXGR7Mn1bQS1aXXs0fVxcZHsyM318Tk9cXGR7MTN9fCg/OkRLfEZJfEdMfEZPKVxcZHsxNn18TUtcXGR7MTd9fCg/OkFUfEVFfEtafExVfFhLKVxcZHsxOH18KD86QkF8SFJ8TEl8Q0h8Q1IpXFxkezE5fXwoPzpHRXxERXxMVHxNRXxSUylcXGR7MjB9fElMXFxkezIxfXwoPzpBRHxDWnxFU3xNRHxTQSlcXGR7MjJ9fFBUXFxkezIzfXwoPzpCRXxJUylcXGR7MjR9fCg/OkZSfE1SfE1DKVxcZHsyNX18KD86QUx8RE98TEJ8UEwpXFxkezI2fXwoPzpBWnxIVSlcXGR7Mjd9fCg/OkdSfE1VKVxcZHsyOH0pJC87XHJcblxyXG5cdFx0aWYgKGliYW5SZWdleC50ZXN0KGNvbnRyb2wudmFsdWUudG9TdHJpbmcoKS50cmltKCkpKSB7XHJcblx0XHQgIHJldHVybiB7IGNvZGljZUNvbnRvU2Nob3VsZE5vdEJlSWJhbjogdHJ1ZSB9O1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBudWxsO1xyXG5cdH1cclxuXHJcblx0ZXh0cmFTZXBhQ291bnRyaWVzVmFsaWRhdG9yKCk6IFZhbGlkYXRvckZuIHtcclxuXHRcdHJldHVybiAoZm9ybTogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcblx0XHRcdGNvbnN0IGliYW4gPSBmb3JtLnZhbHVlO1xyXG5cdFx0XHRpZiAoIWliYW4gfHwgaWJhbj8ubGVuZ3RoIDwgMikge1xyXG5cdFx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRjb25zdCBjb3VudHJ5Q29kZTogc3RyaW5nID0gaWJhbi5zdWJzdHJpbmcoMCwgMik7XHJcblx0XHRcdGlmICh0aGlzLnNlcGFDb3VudHJpZXMuc29tZSgoZWxlbWVudCkgPT4gZWxlbWVudC5jb2RlID09PSBjb3VudHJ5Q29kZSkpIHtcclxuXHRcdFx0XHRyZXR1cm4geyBpYmFuU2VwYTogdHJ1ZSB9O1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRyZXR1cm4gbnVsbDtcclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHRvbkRlbGVnYXRvUmlzY29zc2lvbmVSZWFkeShldmVudDogeyBwZXJzb25hOiBEYXRpUGVyc29uYUZpc2ljYU1vZGVsLCBpc1ZhbGlkOiBib29sZWFuIH0pe1xyXG5cdFx0dGhpcy5kZWxlZ2F0byA9IGV2ZW50LnBlcnNvbmE7XHJcblx0XHR0aGlzLmlzRGVsZWdhdG9WYWxpZCA9IGV2ZW50LmlzVmFsaWQ7XHJcblx0XHR0aGlzLnBlcnNvbmFGaXNpY2FFbWl0dGVyLmVtaXQoeyBwZXJzb25hOiBldmVudC5wZXJzb25hLCBpc1ZhbGlkOiBldmVudC5pc1ZhbGlkIH0pO1xyXG5cdH1cclxuXHJcblx0Y29udmVydFRvVXBwZXJjYXNlKHZhbHVlOiBzdHJpbmcpIHtcclxuXHRcdGlmKHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snY29kaWNlQ29udG9QcmVzZW50J10udmFsdWUpe1xyXG5cdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uZ2V0KCdjb2RpY2VDb250bycpLnNldFZhbHVlKHZhbHVlLnRvVXBwZXJDYXNlKCkpO1xyXG5cdFx0fWVsc2V7XHJcblx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5nZXQoJ2liYW4nKS5zZXRWYWx1ZSh2YWx1ZS50b1VwcGVyQ2FzZSgpKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5vU3BhY2VzVmFsaWRhdG9yKCk6IFZhbGlkYXRvckZuIHtcclxuXHRcdHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IG51bGwgPT4ge1xyXG5cdFx0XHRjb25zdCBoYXNTcGFjZXMgPSAvXFxzLy50ZXN0KGNvbnRyb2wudmFsdWUpO1xyXG5cdFx0XHRyZXR1cm4gaGFzU3BhY2VzID8geyBzcGFjZXNJYmFuOiB0cnVlIH0gOiBudWxsO1xyXG5cdFx0fTtcclxuXHR9XHJcblxyXG59XHJcblxyXG5cclxuIl19