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.

195 lines 59.1 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.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());
        }
    }
}
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9uaWZpY28tZXh0cmEtc2VwYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiRDovUHJvZ2V0dGkvREFHL3NvcmdlbnRpL2dpdGxhYi10ZXJuaS9jb21tb24tY29tcG9uZW50LWxpYi9wcm9qZWN0cy9wb3J0YWwtY29tbW9uLWNvbXBvbmVudC1saWIvc3JjLyIsInNvdXJjZXMiOlsibGliL21vZGFsaXRhLXBhZ2FtZW50by9jb21wb25lbnRzL2JvbmlmaWNvLWV4dHJhLXNlcGEvYm9uaWZpY28tZXh0cmEtc2VwYS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQWtCLFdBQVcsRUFBRSxTQUFTLEVBQWUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEcsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVsQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDdEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQVF2QyxNQUFNLE9BQU8sMEJBQTBCO0lBc0R0QztRQWpDQSxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQU03QiwwQ0FBcUMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBR2pFLGtEQUE2QyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFHekUsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQTBELENBQUM7UUFHcEcseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQXlELENBQUM7UUFJakcsbUJBQWMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLDJCQUEyQixFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUU1RiwwQkFBcUIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFdEYsaUJBQVksR0FBaUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV4RCxvQkFBZSxHQUFHLGVBQWUsQ0FBQztRQUVsQyxrQkFBYSxHQUFHLENBQUMsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLHNCQUFzQixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLGtCQUFrQixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsVUFBVSxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLHdCQUF3QixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsUUFBUSxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLDhCQUE4QixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLHVCQUF1QixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLG9CQUFvQixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLHNCQUFzQixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLG9CQUFvQixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsUUFBUSxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLDZCQUE2QixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLHdCQUF3QixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsUUFBUSxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLDZCQUE2QixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLHdCQUF3QixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsT0FBTyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLDZCQUE2QixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsUUFBUSxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLHVCQUF1QixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsV0FBVyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLHNCQUFzQixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsWUFBWSxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLHNCQUFzQixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsT0FBTyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLGlDQUFpQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsYUFBYSxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLG9CQUFvQixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsUUFBUSxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLDhCQUE4QixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsVUFBVSxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLDJCQUEyQixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsMEJBQTBCLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxTQUFTLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsMEJBQTBCLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxVQUFVLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsMEJBQTBCLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxVQUFVLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMscUJBQXFCLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxPQUFPLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsMEJBQTBCLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxRQUFRLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsMEJBQTBCLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxTQUFTLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsOEJBQThCLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxRQUFRLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsaUJBQWlCLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxlQUFlLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsdUJBQXVCLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxTQUFTLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsNEJBQTRCLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxhQUFhLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsdUJBQXVCLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyx3QkFBd0IsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLFFBQVEsRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyw2QkFBNkIsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLFNBQVMsRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQywwQkFBMEIsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLFlBQVksRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyw2QkFBNkIsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLCtCQUErQixFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLHdCQUF3QixFQUFDLENBQUMsQ0FBQztRQU81ekUsNEJBQTRCO0lBQzdCLENBQUM7SUFFRCxRQUFRO1FBQ1AsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FDdkUsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFO1lBQ3RCLElBQUksa0JBQWtCLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNyRCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2dCQUM3RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7Z0JBQ3JGLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUM7YUFDcEU7aUJBQU07Z0JBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzVELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUM7Z0JBQ3BFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ3ZFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUM7YUFDN0Q7UUFDRixDQUFDLENBQ0QsQ0FDRCxDQUFDO1FBRUYsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FDcEUsQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUNuQixJQUFJLGVBQWUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM3SCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2dCQUM5RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUM7Z0JBQzlELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2dCQUM5RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzNELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDMUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztnQkFDbEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUM7Z0JBQ2hFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3ZEO2lCQUFNO2dCQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2dCQUM5RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDNUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQzFFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUM7Z0JBQzlELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUMxRSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2dCQUM5RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDOUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztnQkFDbEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQzVFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUM7Z0JBQ2hFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUMzRSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2FBQy9EO1FBQ0YsQ0FBQyxDQUNELENBQ0QsQ0FBQztRQUVGLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDM0Msa0NBQWtDO1lBQ2hDLE1BQU0saUJBQWlCLEdBQTJCO2dCQUNyRCxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSztnQkFDNUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxLQUFLO2dCQUN0RSxXQUFXLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSztnQkFDeEQsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUs7Z0JBQzFDLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLEtBQUs7Z0JBQ25FLG1CQUFtQixFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUNyRyxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSztnQkFDNUMsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUs7Z0JBQzlDLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLO2dCQUNwRCxlQUFlLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxLQUFLO2dCQUNoRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSztnQkFDaEQsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUs7Z0JBQ2hELGVBQWUsRUFBRSxJQUFJO2dCQUNyQixNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSzthQUM5QyxDQUFDO1lBRUYsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7WUFDN0MsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUN6SCxNQUFNLE9BQU8sR0FBRyxXQUFXLElBQUksbUJBQW1CLENBQUM7WUFFbkQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQzVFLEdBQUc7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCxpQkFBaUI7O1FBQ2hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDbEMseUJBQXlCLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNJLEtBQUssRUFBRSxJQUFJLFdBQVcsT0FBQyxJQUFJLENBQUMsaUJBQWlCLDBDQUFFLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0gsS0FBSyxFQUFFLElBQUksV0FBVyxPQUFDLElBQUksQ0FBQyxpQkFBaUIsMENBQUUsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVFLFNBQVMsRUFBRSxJQUFJLFdBQVcsT0FBQyxJQUFJLENBQUMsaUJBQWlCLDBDQUFFLFNBQVMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwRixrQkFBa0IsRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5SSxXQUFXLEVBQUUsSUFBSSxXQUFXLE9BQUMsSUFBSSxDQUFDLGlCQUFpQiwwQ0FBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1lBQzdGLElBQUksRUFBRSxJQUFJLFdBQVcsT0FBQyxJQUFJLENBQUMsaUJBQWlCLDBDQUFFLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQ3hFLGVBQWUsRUFBRSxJQUFJLFdBQVcsQ0FBQyxPQUFBLElBQUksQ0FBQyxpQkFBaUIsMENBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyRyxPQUFPLEVBQUUsSUFBSSxXQUFXLE9BQUMsSUFBSSxDQUFDLGlCQUFpQiwwQ0FBRSxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEYsS0FBSyxFQUFFLElBQUksV0FBVyxPQUFDLElBQUksQ0FBQyxpQkFBaUIsMENBQUUsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlFLE9BQU8sRUFBRSxJQUFJLFdBQVcsT0FBQyxJQUFJLENBQUMsaUJBQWlCLDBDQUFFLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoRixNQUFNLEVBQUUsSUFBSSxXQUFXLE9BQUMsSUFBSSxDQUFDLGlCQUFpQiwwQ0FBRSxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDOUUsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxnQ0FBZ0M7UUFDL0IsSUFBSSxDQUFDLHFDQUFxQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRCxpQ0FBaUMsQ0FBQyxJQUFJO1FBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQzVCLElBQUksQ0FBQyw2Q0FBNkMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUMxRDtJQUNGLENBQUM7SUFFRCxNQUFNLENBQUMsRUFBZ0IsRUFBRSxFQUFnQjtRQUN4QyxPQUFPLENBQUEsRUFBRSxhQUFGLEVBQUUsdUJBQUYsRUFBRSxDQUFFLGVBQWUsTUFBSSxFQUFFLGFBQUYsRUFBRSx1QkFBRixFQUFFLENBQUUsZUFBZSxDQUFBLENBQUM7SUFDbkQsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUF3QjtRQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtZQUNsQixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsTUFBTSxTQUFTLEdBQVksa2RBQWtkLENBQUM7UUFFOWUsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRTtZQUNuRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDOUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFRCwyQkFBMkI7UUFDMUIsT0FBTyxDQUFDLElBQXFCLEVBQUUsRUFBRTtZQUNoQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsTUFBTSxJQUFHLENBQUMsRUFBRTtnQkFDOUIsT0FBTyxJQUFJLENBQUM7YUFDWjtZQUVELE1BQU0sV0FBVyxHQUFXLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2pELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLEVBQUU7Z0JBQ3ZFLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDMUI7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNiLENBQUMsQ0FBQztJQUNILENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxLQUE0RDtRQUN0RixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDOUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQWE7UUFDL0IsSUFBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEtBQUssRUFBQztZQUMxRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7U0FDcEU7YUFBSTtZQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztTQUM3RDtJQUNGLENBQUM7OztZQTNPRCxTQUFTLFNBQUM7Z0JBQ1YsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsMDNRQUFtRDs7YUFFbkQ7Ozs7Z0NBR0MsS0FBSzs0Q0FHTCxLQUFLO3NCQUdMLEtBQUs7dUJBR0wsS0FBSztnQ0FHTCxLQUFLO3lDQUdMLEtBQUs7MEJBR0wsS0FBSztzQ0FHTCxLQUFLO29EQUdMLE1BQU07NERBR04sTUFBTTtxQ0FHTixNQUFNO21DQUdOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0RhdGlQZXJzb25hRmlzaWNhTW9kZWwsIExvY2FsaXRhTW9kZWwsIE5hemlvbmVNb2RlbCwgVmVyaWZpY2FQZlJlc3BvbnNlRFRPfSBmcm9tICcuLi8uLi9tb2RlbHMvZXN0cmVtaS1wZXJzb25hLWZpc2ljYS5tb2RlbCc7XHJcbmltcG9ydCB7Z2V0RXJyb3JNZXNzYWdlfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzLW1lc3NhZ2VzLnV0aWxzJztcclxuaW1wb3J0IHtpYmFuVmFsaWRhdG9yfSBmcm9tIFwibmd4LWliYW5cIjtcclxuaW1wb3J0IHtCb25pZmljb0V4dHJhU2VwYU1vZGVsfSBmcm9tICcuLi8uLi9tb2RlbHMvYm9uaWZpY28tZXh0cmEtc2VwYS5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2xpYi1ib25pZmljby1leHRyYS1zZXBhJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vYm9uaWZpY28tZXh0cmEtc2VwYS5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vYm9uaWZpY28tZXh0cmEtc2VwYS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQm9uaWZpY29FeHRyYVNlcGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuXHRASW5wdXQoKVxyXG5cdGJvbmlmaWNvRXh0cmFTZXBhOiBCb25pZmljb0V4dHJhU2VwYU1vZGVsO1xyXG5cclxuXHRASW5wdXQoKVxyXG5cdGlzUGVyc29uYUZpc2ljYUV4dHJhU2VwYVZhbGlkOiBib29sZWFuO1xyXG5cclxuXHRASW5wdXQoKVxyXG5cdG5hemlvbmk6IE5hemlvbmVNb2RlbFtdO1xyXG5cclxuXHRASW5wdXQoKVxyXG5cdHByb3ZpbmNlOiBMb2NhbGl0YU1vZGVsW107XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0ZXh0cmFTZXBhRm9ybVBhdGg6IHN0cmluZztcclxuXHJcblx0QElucHV0KClcclxuXHRlc3RyZW1pUEZFeHRyYVNlcGFGb3JtUGF0aDogc3RyaW5nO1xyXG5cclxuXHRASW5wdXQoKVxyXG5cdHZpZXdTZXNzb1BGOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0dmFsaWRhdGVBbmRHZXRSZXNpZGVuemE6IFZlcmlmaWNhUGZSZXNwb25zZURUTztcclxuXHJcblx0QE91dHB1dCgpXHJcblx0dmFsaWRhdGVFeHRyYVNlcGFQZXJzb25hRmlzaWNhRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcblx0QE91dHB1dCgpXHJcblx0cmVzZXRFc3RyZW1pUGVyc29uYUZpc2ljYUV4dHJhU2VwYUZvcm1FbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuXHRAT3V0cHV0KClcclxuXHRib25pZmljb0V4dHJhU2VwYVJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGJvbmlmaWNvOiBCb25pZmljb0V4dHJhU2VwYU1vZGVsLCBpc1ZhbGlkOiBib29sZWFuIH0+KCk7XHJcblxyXG5cdEBPdXRwdXQoKVxyXG5cdHBlcnNvbmFGaXNpY2FFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjx7IHBlcnNvbmE6IERhdGlQZXJzb25hRmlzaWNhTW9kZWwsIGlzVmFsaWQ6IGJvb2xlYW4gfT4oKTtcclxuXHJcblx0ZXh0cmFTZXBhRm9ybTogRm9ybUdyb3VwO1xyXG5cclxuXHRpYmFuVmFsaWRhdG9ycyA9IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB0aGlzLmV4dHJhU2VwYUNvdW50cmllc1ZhbGlkYXRvcigpLFx0aWJhblZhbGlkYXRvcigpXTtcclxuXHJcblx0Y29kaWNlQ29udG9WYWxpZGF0b3JzID0gW1ZhbGlkYXRvcnMucmVxdWlyZWQsXHR0aGlzLlZhbGlkYXRlTm90SWJhbiwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNDQpXTtcclxuXHJcblx0cHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcblx0Z2V0RXJyb3JNZXNzYWdlID0gZ2V0RXJyb3JNZXNzYWdlO1xyXG5cclxuXHRzZXBhQ291bnRyaWVzID0gW3tcIm5hbWVcIjpcIkF1c3RyaWFcIixcImNvZGVcIjpcIkFUXCIsXCJpYmFuXCI6XCJBVDQ5MzIwMDA1NjU2MzI4OTk3NFwifSx7XCJuYW1lXCI6XCJCZWxnaXVtXCIsXCJjb2RlXCI6XCJCRVwiLFwiaWJhblwiOlwiQkU2NTU2MTY4OTUyODg5NlwifSx7XCJuYW1lXCI6XCJCdWxnYXJpYVwiLFwiY29kZVwiOlwiQkdcIixcImliYW5cIjpcIkJHOTJUVEJCOTQwMDY1NTkyNjYxODhcIn0se1wibmFtZVwiOlwiQ3lwcnVzXCIsXCJjb2RlXCI6XCJDWVwiLFwiaWJhblwiOlwiQ1k1MjY2NTU2MTQxNjc3MjM2OTQ1Nzg2NDQzN1wifSx7XCJuYW1lXCI6XCJDcm9hdGlhXCIsXCJjb2RlXCI6XCJIUlwiLFwiaWJhblwiOlwiSFI1NTIzNDAwMDk4NjYzMjY2MjQ2XCJ9LHtcIm5hbWVcIjpcIkRlbm1hcmtcIixcImNvZGVcIjpcIkRLXCIsXCJpYmFuXCI6XCJESzI1NTA1MTU5MTgzMjg1MjhcIn0se1wibmFtZVwiOlwiRXN0b25pYVwiLFwiY29kZVwiOlwiRUVcIixcImliYW5cIjpcIkVFNTkxMjg2NjUzODY3NDkxNzg2XCJ9LHtcIm5hbWVcIjpcIkZpbmxhbmRcIixcImNvZGVcIjpcIkZJXCIsXCJpYmFuXCI6XCJGSTg0Nzk0ODY5MTE3ODg1OThcIn0se1wibmFtZVwiOlwiRnJhbmNlXCIsXCJjb2RlXCI6XCJGUlwiLFwiaWJhblwiOlwiRlI4NTE0NTA4MDAwNzA3MjM5NDg4NzM4SjIxXCJ9LHtcIm5hbWVcIjpcIkdlcm1hbnlcIixcImNvZGVcIjpcIkRFXCIsXCJpYmFuXCI6XCJERTE0NTAwMTA1MTc0MTg1NDg0MTc3XCJ9LHtcIm5hbWVcIjpcIkdyZWVjZVwiLFwiY29kZVwiOlwiR1JcIixcImliYW5cIjpcIkdSOTIwMTQ5NDQ5MTU4ODE0MTU0OTUzMTc5OVwifSx7XCJuYW1lXCI6XCJJcmVsYW5kXCIsXCJjb2RlXCI6XCJJRVwiLFwiaWJhblwiOlwiSUUyOUFJQks5MzExNTIxMjM0NTY3OFwifSx7XCJuYW1lXCI6XCJJdGFseVwiLFwiY29kZVwiOlwiSVRcIixcImliYW5cIjpcIklUNzdSMDMwMDIwMzI4MDY0ODQxOTY2ODI1M1wifSx7XCJuYW1lXCI6XCJMYXR2aWFcIixcImNvZGVcIjpcIkxWXCIsXCJpYmFuXCI6XCJMVjgwQkFOSzAwMDA0MzUxOTUwMDFcIn0se1wibmFtZVwiOlwiTGl0aHVhbmlhXCIsXCJjb2RlXCI6XCJMVFwiLFwiaWJhblwiOlwiTFQyNzUxNjgxNzk5OTM2NDU0MjhcIn0se1wibmFtZVwiOlwiTHV4ZW1ib3VyZ1wiLFwiY29kZVwiOlwiTFVcIixcImliYW5cIjpcIkxVMzUwMTA2ODE0MzMxNzE2NDI1XCJ9LHtcIm5hbWVcIjpcIk1hbHRhXCIsXCJjb2RlXCI6XCJNVFwiLFwiaWJhblwiOlwiTVQ1NFdMQ0kxMjM3NzUyOTY4NTU4OTQ1NDc0NzgzNVwifSx7XCJuYW1lXCI6XCJOZXRoZXJsYW5kc1wiLFwiY29kZVwiOlwiTkxcIixcImliYW5cIjpcIk5MMTNJTkdCNjc1NTAzNzM5N1wifSx7XCJuYW1lXCI6XCJQb2xhbmRcIixcImNvZGVcIjpcIlBMXCIsXCJpYmFuXCI6XCJQTDA2MTA5MDI0MDIzOTYyMjM2MjYzNjY2NjY0XCJ9LHtcIm5hbWVcIjpcIlBvcnR1Z2FsXCIsXCJjb2RlXCI6XCJQVFwiLFwiaWJhblwiOlwiUFQyNjAwMzUwNjUxNjk5NTIzNDM2OTQ4MlwifSx7XCJuYW1lXCI6XCJDemVjaCBSZXB1YmxpY1wiLFwiY29kZVwiOlwiQ1pcIixcImliYW5cIjpcIkNaMTM1MDUxNTM0MzI5MTI0MzI2MTIyMlwifSx7XCJuYW1lXCI6XCJSb21hbmlhXCIsXCJjb2RlXCI6XCJST1wiLFwiaWJhblwiOlwiUk82NFJaQlIyMzM1NTIxOTI2NzY4MjYyXCJ9LHtcIm5hbWVcIjpcIlNsb3Zha2lhXCIsXCJjb2RlXCI6XCJTS1wiLFwiaWJhblwiOlwiU0s2MDUzNDE5NTg5MTQyNjQzODI4MjYyXCJ9LHtcIm5hbWVcIjpcIlNsb3ZlbmlhXCIsXCJjb2RlXCI6XCJTSVwiLFwiaWJhblwiOlwiU0k5Nzk3NTQyNjY3ODMzMjc4NlwifSx7XCJuYW1lXCI6XCJTcGFpblwiLFwiY29kZVwiOlwiRVNcIixcImliYW5cIjpcIkVTNzIzMTkwNDk3NzQ5MjU2OTk0NDE1OFwifSx7XCJuYW1lXCI6XCJTd2VkZW5cIixcImNvZGVcIjpcIlNFXCIsXCJpYmFuXCI6XCJTRTQ5NDk5OTYxOTU3NDk3NTU1NzIxMzZcIn0se1wibmFtZVwiOlwiSHVuZ2FyeVwiLFwiY29kZVwiOlwiSFVcIixcImliYW5cIjpcIkhVNDIxMTc3MzAxNjExMTExMDE4MDAwMDAwMDBcIn0se1wibmFtZVwiOlwiTm9yd2F5XCIsXCJjb2RlXCI6XCJOT1wiLFwiaWJhblwiOlwiTk85Mzg2MDExMTE3OTQ3XCJ9LHtcIm5hbWVcIjpcIkxpZWNodGVuc3RlaW5cIixcImNvZGVcIjpcIkxJXCIsXCJpYmFuXCI6XCJMSTcwMDg4MDA2ODMxNDY1Mjc0ODRcIn0se1wibmFtZVwiOlwiSWNlbGFuZFwiLFwiY29kZVwiOlwiSVNcIixcImliYW5cIjpcIklTMTQwMTU5MjYwMDc2NTQ1NTEwNzMwMzM5XCJ9LHtcIm5hbWVcIjpcIlN3aXR6ZXJsYW5kXCIsXCJjb2RlXCI6XCJDSFwiLFwiaWJhblwiOlwiQ0g0Nzg5MTQ0NjIzMzI4MjYzMTM5XCJ9LHtcIm5hbWVcIjpcIlVuaXRlZCBLaW5nZG9tXCIsXCJjb2RlXCI6XCJHQlwiLFwiaWJhblwiOlwiR0IwOUJBUkMyMDA0MDQxNjI4OTY2OVwifSx7XCJuYW1lXCI6XCJNb25hY29cIixcImNvZGVcIjpcIk1DXCIsXCJpYmFuXCI6XCJNQzIxMTI3MzkwMDA0MDcxNzk4NDYxMjRGMDhcIn0se1wibmFtZVwiOlwiQW5kb3JyYVwiLFwiY29kZVwiOlwiQURcIixcImliYW5cIjpcIkFENTEyNzYzODU3NDI2Mjk5NTc3NTc0NFwifSx7XCJuYW1lXCI6XCJTYW4gTWFyaW5vXCIsXCJjb2RlXCI6XCJTTVwiLFwiaWJhblwiOlwiU004NlUwMzIyNTA5ODAwMDAwMDAwMjcwMTAwXCJ9LHtcIm5hbWVcIjpcIkhvbHkgU2VlIChWYXRpY2FuIENpdHkgU3RhdGUpXCIsXCJjb2RlXCI6XCJWQVwiLFwiaWJhblwiOlwiVkE1OTAwMTEyMzAwMDAxMjM0NTY3OFwifV07XHJcblxyXG5cdGRlbGVnYXRvOiBEYXRpUGVyc29uYUZpc2ljYU1vZGVsO1xyXG5cclxuXHRpc0RlbGVnYXRvVmFsaWQ6IGJvb2xlYW47XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkge1xyXG5cdFx0Ly8gdGhpcy5pbml0RXh0cmFTZXBhRm9ybSgpO1xyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmluaXRFeHRyYVNlcGFGb3JtKCk7XHJcblx0XHR0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXHJcblx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snY29kaWNlQ29udG9QcmVzZW50J10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShcclxuXHRcdFx0XHQoY29kaWNlQ29udG9QcmVzZW50KSA9PiB7XHJcblx0XHRcdFx0XHRpZiAoY29kaWNlQ29udG9QcmVzZW50KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snaWJhbiddLnNldFZhbGlkYXRvcnMoW10pO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ2liYW4nXS5wYXRjaFZhbHVlKG51bGwpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ2liYW4nXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snY29kaWNlQ29udG8nXS5zZXRWYWxpZGF0b3JzKHRoaXMuY29kaWNlQ29udG9WYWxpZGF0b3JzKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWydjb2RpY2VDb250byddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snY29kaWNlQ29udG8nXS5zZXRWYWxpZGF0b3JzKFtdKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWydjb2RpY2VDb250byddLnBhdGNoVmFsdWUobnVsbCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snY29kaWNlQ29udG8nXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snaWJhbiddLnNldFZhbGlkYXRvcnModGhpcy5pYmFuVmFsaWRhdG9ycyk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snaWJhbiddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdClcclxuXHRcdCk7XHJcblxyXG5cdFx0dGhpcy5zdWJzY3JpcHRpb24uYWRkKFxyXG5cdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ3N3aWZ0QmljUHJlc2VudCddLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoXHJcblx0XHRcdFx0KHN3aWZ0QmljUHJlc2VudCkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKHN3aWZ0QmljUHJlc2VudCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ3N3aWZ0J10uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCxcdFZhbGlkYXRvcnMubWF4TGVuZ3RoKDExKSxcdFZhbGlkYXRvcnMubWluTGVuZ3RoKDgpXSk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snc3dpZnQnXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snbmF6aW9uZSddLnNldFZhbGlkYXRvcnMoW10pO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ25hemlvbmUnXS5wYXRjaFZhbHVlKG51bGwpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ25hemlvbmUnXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snY2l0dGEnXS5zZXRWYWxpZGF0b3JzKFtdKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWydjaXR0YSddLnBhdGNoVmFsdWUobnVsbCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snY2l0dGEnXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snYmFuY2EnXS5zZXRWYWxpZGF0b3JzKFtdKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWydiYW5jYSddLnBhdGNoVmFsdWUobnVsbCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snYmFuY2EnXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snaW5kaXJpenpvJ10uc2V0VmFsaWRhdG9ycyhbXSk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snaW5kaXJpenpvJ10ucGF0Y2hWYWx1ZShudWxsKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWydpbmRpcml6em8nXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snemlwQ29kZSddLnNldFZhbGlkYXRvcnMoW10pO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ3ppcENvZGUnXS5wYXRjaFZhbHVlKG51bGwpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ3ppcENvZGUnXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snY2l2aWNvJ10uc2V0VmFsaWRhdG9ycyhbXSk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snY2l2aWNvJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ2NpdmljbyddLnBhdGNoVmFsdWUobnVsbCk7XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ3N3aWZ0J10uc2V0VmFsaWRhdG9ycyhbXSk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snc3dpZnQnXS5wYXRjaFZhbHVlKG51bGwpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ3N3aWZ0J10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ25hemlvbmUnXS5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snbmF6aW9uZSddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWydjaXR0YSddLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWydjaXR0YSddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWydiYW5jYSddLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWydiYW5jYSddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWydpbmRpcml6em8nXS5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snaW5kaXJpenpvJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmV4dHJhU2VwYUZvcm0uY29udHJvbHNbJ3ppcENvZGUnXS5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snemlwQ29kZSddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWydjaXZpY28nXS5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5jb250cm9sc1snY2l2aWNvJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0KVxyXG5cdFx0KTtcclxuXHJcblx0XHR0aGlzLmV4dHJhU2VwYUZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIC8vIGlmICh0aGlzLmV4dHJhU2VwYUZvcm0udmFsaWQpIHtcclxuICAgICAgICBjb25zdCBib25pZmljb0V4dHJhU2VwYTogQm9uaWZpY29FeHRyYVNlcGFNb2RlbCA9IHtcclxuXHRcdFx0XHRcdHN3aWZ0OiB0aGlzLmV4dHJhU2VwYUZvcm0uZ2V0KCdzd2lmdCcpLnZhbHVlLFxyXG5cdFx0XHRcdFx0Y29kaWNlQ29udG9QcmVzZW50OiB0aGlzLmV4dHJhU2VwYUZvcm0uZ2V0KCdjb2RpY2VDb250b1ByZXNlbnQnKS52YWx1ZSxcclxuXHRcdFx0XHRcdGNvZGljZUNvbnRvOiB0aGlzLmV4dHJhU2VwYUZvcm0uZ2V0KCdjb2RpY2VDb250bycpLnZhbHVlLFxyXG5cdFx0XHRcdFx0aWJhbjogdGhpcy5leHRyYVNlcGFGb3JtLmdldCgnaWJhbicpLnZhbHVlLFxyXG5cdFx0XHRcdFx0ZGVsZWdhdG86IHRoaXMuZXh0cmFTZXBhRm9ybS5nZXQoJ2V4aXN0c0RlbGVnYXRvUmlzY29zc2lvbmUnKS52YWx1ZSxcclxuXHRcdFx0XHRcdGRlbGVnYXRvUmlzY29zc2lvbmU6IHRoaXMuZXh0cmFTZXBhRm9ybS5nZXQoJ2V4aXN0c0RlbGVnYXRvUmlzY29zc2lvbmUnKS52YWx1ZSA/IHRoaXMuZGVsZWdhdG8gOiBudWxsLFxyXG5cdFx0XHRcdFx0YmFuY2E6IHRoaXMuZXh0cmFTZXBhRm9ybS5nZXQoJ2JhbmNhJykudmFsdWUsXHJcblx0XHRcdFx0XHRmaWxpYWxlOiB0aGlzLmV4dHJhU2VwYUZvcm0uZ2V0KCdjaXR0YScpLnZhbHVlLFxyXG5cdFx0XHRcdFx0aW5kaXJpenpvOiB0aGlzLmV4dHJhU2VwYUZvcm0uZ2V0KCdpbmRpcml6em8nKS52YWx1ZSxcclxuXHRcdFx0XHRcdHN3aWZ0QmljUHJlc2VudDogdGhpcy5leHRyYVNlcGFGb3JtLmdldCgnc3dpZnRCaWNQcmVzZW50JykudmFsdWUsXHJcblx0XHRcdFx0XHRuYXppb25lOiB0aGlzLmV4dHJhU2VwYUZvcm0uZ2V0KCduYXppb25lJykudmFsdWUsXHJcblx0XHRcdFx0XHR6aXBDb2RlOiB0aGlzLmV4dHJhU2VwYUZvcm0uZ2V0KCd6aXBDb2RlJykudmFsdWUsXHJcblx0XHRcdFx0XHRjb2RpY2VQcm92aW5jaWE6ICdFRScsXHJcblx0XHRcdFx0XHRjaXZpY286IHRoaXMuZXh0cmFTZXBhRm9ybS5nZXQoJ2NpdmljbycpLnZhbHVlLFxyXG5cdFx0XHRcdH07XHJcblxyXG5cdFx0XHRcdGNvbnN0IGlzRm9ybVZhbGlkID0gdGhpcy5leHRyYVNlcGFGb3JtLnZhbGlkO1xyXG5cdFx0XHRcdGNvbnN0IGlzRm9ybURlbGVnYXRvVmFsaWQgPSB0aGlzLmV4dHJhU2VwYUZvcm0uZ2V0KCdleGlzdHNEZWxlZ2F0b1Jpc2Nvc3Npb25lJykudmFsdWUgPT09IHRydWUgPyB0aGlzLmlzRGVsZWdhdG9WYWxpZCA6IHRydWU7XHJcbiAgICAgICAgY29uc3QgaXNWYWxpZCA9IGlzRm9ybVZhbGlkICYmIGlzRm9ybURlbGVnYXRvVmFsaWQ7XHJcblxyXG4gICAgICAgIHRoaXMuYm9uaWZpY29FeHRyYVNlcGFSZWFkeS5lbWl0KHsgYm9uaWZpY286IGJvbmlmaWNvRXh0cmFTZXBhLCBpc1ZhbGlkIH0pO1xyXG4gICAgICAgLy99XHJcbiAgICB9KTtcclxuXHR9XHJcblxyXG5cdGluaXRFeHRyYVNlcGFGb3JtKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5leHRyYVNlcGFGb3JtID0gbmV3IEZvcm1Hcm91cCh7XHJcblx0XHRcdGV4aXN0c0RlbGVnYXRvUmlzY29zc2lvbmU6IG5ldyBGb3JtQ29udHJvbCh0aGlzLmJvbmlmaWNvRXh0cmFTZXBhICE9IG51bGwgPyB0aGlzLmJvbmlmaWNvRXh0cmFTZXBhLmRlbGVnYXRvIDogZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcblx0XHRcdHN3aWZ0OiBuZXcgRm9ybUNvbnRyb2wodGhpcy5ib25pZmljb0V4dHJhU2VwYT8uc3dpZnQsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLFx0VmFsaWRhdG9ycy5tYXhMZW5ndGgoMTEpLFx0VmFsaWRhdG9ycy5taW5MZW5ndGgoOCldKSxcclxuXHRcdFx0YmFuY2E6IG5ldyBGb3JtQ29udHJvbCh0aGlzLmJvbmlmaWNvRXh0cmFTZXBhPy5iYW5jYSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuXHRcdFx0aW5kaXJpenpvOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5ib25pZmljb0V4dHJhU2VwYT8uaW5kaXJpenpvLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG5cdFx0XHRjb2RpY2VDb250b1ByZXNlbnQ6IG5ldyBGb3JtQ29udHJvbCh0aGlzLmJvbmlmaWNvRXh0cmFTZXBhICE9IG51bGwgPyB0aGlzLmJvbmlmaWNvRXh0cmFTZXBhLmNvZGljZUNvbnRvUHJlc2VudCA6IGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG5cdFx0XHRjb2RpY2VDb250bzogbmV3IEZvcm1Db250cm9sKHRoaXMuYm9uaWZpY29FeHRyYVNlcGE/LmNvZGljZUNvbnRvLCB0aGlzLmNvZGljZUNvbnRvVmFsaWRhdG9ycyksXHJcblx0XHRcdGliYW46IG5ldyBGb3JtQ29udHJvbCh0aGlzLmJvbmlmaWNvRXh0cmFTZXBhPy5pYmFuLCB0aGlzLmliYW5WYWxpZGF0b3JzKSxcclxuXHRcdFx0c3dpZnRCaWNQcmVzZW50OiBuZXcgRm9ybUNvbnRyb2wodGhpcy5ib25pZmljb0V4dHJhU2VwYT8uc3dpZnQgPyB0cnVlIDogZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcblx0XHRcdG5hemlvbmU6IG5ldyBGb3JtQ29udHJvbCh0aGlzLmJvbmlmaWNvRXh0cmFTZXBhPy5uYXppb25lLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG5cdFx0XHRjaXR0YTogbmV3IEZvcm1Db250cm9sKHRoaXMuYm9uaWZpY29FeHRyYVNlcGE/LmZpbGlhbGUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcblx0XHRcdHppcENvZGU6IG5ldyBGb3JtQ29udHJvbCh0aGlzLmJvbmlmaWNvRXh0cmFTZXBhPy56aXBDb2RlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG5cdFx0XHRjaXZpY286IG5ldyBGb3JtQ29udHJvbCh0aGlzLmJvbmlmaWNvRXh0cmFTZXBhPy5jaXZpY28sIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuXHR9XHJcblxyXG5cdG9uVmFsaWRhdGVFeHRyYVNlcGFQZXJzb25hRmlzaWNhKCk6IHZvaWQge1xyXG5cdFx0dGhpcy52YWxpZGF0ZUV4dHJhU2VwYVBlcnNvbmFGaXNpY2FFbWl0dGVyLmVtaXQoKTtcclxuXHR9XHJcblxyXG5cdG9uRXhpc3RzRGVsZWdhdG9SaXNjb3NzaW9uZUNoYW5nZSh0aXBvKTogdm9pZCB7XHJcblx0XHRpZiAoIXRpcG8udmFsdWUpIHtcclxuXHRcdFx0dGhpcy5pc0RlbGVnYXRvVmFsaWQgPSB0cnVlO1xyXG5cdFx0XHR0aGlzLnJlc2V0RXN0cmVtaVBlcnNvbmFGaXNpY2FFeHRyYVNlcGFGb3JtRW1pdHRlci5lbWl0KCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRieUNvZGUobjE6IE5hemlvbmVNb2RlbCwgbjI6IE5hemlvbmVNb2RlbCkge1xyXG5cdFx0cmV0dXJuIG4xPy5jb2RpY2VDYXRhc3RhbGUgPT0gbjI/LmNvZGljZUNhdGFzdGFsZTtcclxuXHR9XHJcblxyXG5cdFZhbGlkYXRlTm90SWJhbihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcclxuXHRcdGlmICghY29udHJvbC52YWx1ZSkge1xyXG5cdFx0ICByZXR1cm4gbnVsbDtcclxuXHRcdH1cclxuXHRcdGNvbnN0IGliYW5SZWdleCA6IFJlZ0V4cCA9IC9eKD86KD86SVR8U00pXFxkezJ9W0EtWl1cXGR7MjJ9fENZXFxkezJ9W0EtWl1cXGR7MjN9fE5MXFxkezJ9W0EtWl17NH1cXGR7MTB9fExWXFxkezJ9W0EtWl17NH1cXGR7MTN9fCg/OkJHfEJIfEdCfElFKVxcZHsyfVtBLVpdezR9XFxkezE0fXxHSVxcZHsyfVtBLVpdezR9XFxkezE1fXxST1xcZHsyfVtBLVpdezR9XFxkezE2fXxLV1xcZHsyfVtBLVpdezR9XFxkezIyfXxNVFxcZHsyfVtBLVpdezR9XFxkezIzfXxOT1xcZHsxM318KD86REt8Rkl8R0x8Rk8pXFxkezE2fXxNS1xcZHsxN318KD86QVR8RUV8S1p8TFV8WEspXFxkezE4fXwoPzpCQXxIUnxMSXxDSHxDUilcXGR7MTl9fCg/OkdFfERFfExUfE1FfFJTKVxcZHsyMH18SUxcXGR7MjF9fCg/OkFEfENafEVTfE1EfFNBKVxcZHsyMn18UFRcXGR7MjN9fCg/OkJFfElTKVxcZHsyNH18KD86RlJ8TVJ8TUMpXFxkezI1fXwoPzpBTHxET3xMQnxQTClcXGR7MjZ9fCg/OkFafEhVKVxcZHsyN318KD86R1J8TVUpXFxkezI4fSkkLztcclxuXHJcblx0XHRpZiAoaWJhblJlZ2V4LnRlc3QoY29udHJvbC52YWx1ZS50b1N0cmluZygpLnRyaW0oKSkpIHtcclxuXHRcdCAgcmV0dXJuIHsgY29kaWNlQ29udG9TY2hvdWxkTm90QmVJYmFuOiB0cnVlIH07XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIG51bGw7XHJcblx0fVxyXG5cclxuXHRleHRyYVNlcGFDb3VudHJpZXNWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xyXG5cdFx0cmV0dXJuIChmb3JtOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuXHRcdFx0Y29uc3QgaWJhbiA9IGZvcm0udmFsdWU7XHJcblx0XHRcdGlmICghaWJhbiB8fCBpYmFuPy5sZW5ndGggPCAyKSB7XHJcblx0XHRcdFx0cmV0dXJuIG51bGw7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGNvbnN0IGNvdW50cnlDb2RlOiBzdHJpbmcgPSBpYmFuLnN1YnN0cmluZygwLCAyKTtcclxuXHRcdFx0aWYgKHRoaXMuc2VwYUNvdW50cmllcy5zb21lKChlbGVtZW50KSA9PiBlbGVtZW50LmNvZGUgPT09IGNvdW50cnlDb2RlKSkge1xyXG5cdFx0XHRcdHJldHVybiB7IGliYW5TZXBhOiB0cnVlIH07XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0fTtcclxuXHR9XHJcblxyXG5cdG9uRGVsZWdhdG9SaXNjb3NzaW9uZVJlYWR5KGV2ZW50OiB7IHBlcnNvbmE6IERhdGlQZXJzb25hRmlzaWNhTW9kZWwsIGlzVmFsaWQ6IGJvb2xlYW4gfSl7XHJcblx0XHR0aGlzLmRlbGVnYXRvID0gZXZlbnQucGVyc29uYTtcclxuXHRcdHRoaXMuaXNEZWxlZ2F0b1ZhbGlkID0gZXZlbnQuaXNWYWxpZDtcclxuXHRcdHRoaXMucGVyc29uYUZpc2ljYUVtaXR0ZXIuZW1pdCh7IHBlcnNvbmE6IGV2ZW50LnBlcnNvbmEsIGlzVmFsaWQ6IGV2ZW50LmlzVmFsaWQgfSk7XHJcblx0fVxyXG5cclxuXHRjb252ZXJ0VG9VcHBlcmNhc2UodmFsdWU6IHN0cmluZykge1xyXG5cdFx0aWYodGhpcy5leHRyYVNlcGFGb3JtLmNvbnRyb2xzWydjb2RpY2VDb250b1ByZXNlbnQnXS52YWx1ZSl7XHJcblx0XHRcdHRoaXMuZXh0cmFTZXBhRm9ybS5nZXQoJ2NvZGljZUNvbnRvJykuc2V0VmFsdWUodmFsdWUudG9VcHBlckNhc2UoKSk7XHJcblx0XHR9ZWxzZXtcclxuXHRcdFx0dGhpcy5leHRyYVNlcGFGb3JtLmdldCgnaWJhbicpLnNldFZhbHVlKHZhbHVlLnRvVXBwZXJDYXNlKCkpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcbn1cclxuXHJcblxyXG4iXX0=