@infordata-web/portal-common-component-lib
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.0.14.
107 lines • 23.6 kB
JavaScript
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Input } from '@angular/core';
import { Component } from '@angular/core';
import { Subject } from 'rxjs';
import { tap } from 'rxjs/operators';
import { TranslatePipe } from '../../translate/translate.pipe';
import { TranslateService } from '../../translate/translate.service';
import { saveAs } from "file-saver";
import { ConfigurationService } from '../../configuration/configuration-service';
import { Output } from '@angular/core';
import { EventEmitter } from '@angular/core';
export class AllegatiComponent {
constructor(translateService, translatePipe, http, configurationService) {
this.translateService = translateService;
this.translatePipe = translatePipe;
this.http = http;
this.configurationService = configurationService;
this.documentoDownload$ = new Subject();
this.allegati = [];
this.colonne = [];
this.dettaglioDoc = new EventEmitter();
this.cl1 = false;
this.cl2 = false;
this.cl3 = false;
this.cl4 = false;
this.cl5 = false;
this.cl6 = false;
this.cl7 = false;
this.cl8 = false;
}
ngOnInit() {
this.documentaleServiceUrl = this.configurationService.servicePaths.get('DOCUMENTALE_MS_API_URL');
this.translatePipe.transform('');
this.translateService.traduzioniLib$
.pipe(tap(_ => _ ? this.loadingLinguage = true : null))
.subscribe();
// console.log('[colonne]', this.colonne);
this.cl1 = this.colonne.find(tipoServizio => tipoServizio.chiave == "colonna_allegati_1").visibile;
this.cl2 = this.colonne.find(tipoServizio => tipoServizio.chiave == "colonna_allegati_2").visibile;
this.cl3 = this.colonne.find(tipoServizio => tipoServizio.chiave == "colonna_allegati_3").visibile;
this.cl4 = this.colonne.find(tipoServizio => tipoServizio.chiave == "colonna_allegati_4").visibile;
this.cl5 = this.colonne.find(tipoServizio => tipoServizio.chiave == "colonna_allegati_5").visibile;
this.cl6 = this.colonne.find(tipoServizio => tipoServizio.chiave == "colonna_allegati_6").visibile;
this.cl7 = this.colonne.find(tipoServizio => tipoServizio.chiave == "colonna_allegati_7").visibile;
this.cl8 = this.colonne.find(tipoServizio => tipoServizio.chiave == "colonna_allegati_8").visibile;
// console.log('[colonne] - cl1', this.cl1);
// console.log('[colonne] - cl2', this.cl2);
// console.log('[colonne] - cl3', this.cl3);
// console.log('[colonne] - cl4', this.cl4);
// console.log('[colonne] - cl5', this.cl5);
// console.log('[colonne] - cl6', this.cl6);
// console.log('[colonne] - cl7', this.cl7);
// console.log('[colonne] - cl8', this.cl8);
}
downloadFile(documento) {
const url = this.documentaleServiceUrl + documento.url;
console.log('[url]', url);
const headers = new HttpHeaders();
headers.append('Accept', 'text/plain');
this.http.get(url, { headers: headers, responseType: 'blob' }).subscribe(response => this.saveFile(response, documento.nome));
}
saveFile(response, nomeFile) {
const blob = new Blob([response], { type: 'text/plain' });
saveAs(blob, nomeFile);
}
isValid(stato) {
if (stato.filter(s => s.lastState == true)) {
return true;
}
else {
return false;
}
}
visualizzaDettaglio(allegato) {
this.visualizzaDettagli = true;
try {
this.dataJson = JSON.parse(allegato.jsonMetadati);
}
catch (e) {
this.dataJson = null;
console.log('[error occored while you were typing the JSON]');
}
;
this.documentoSelezionato = allegato;
this.dettaglioDoc.emit(this.visualizzaDettagli);
}
}
AllegatiComponent.decorators = [
{ type: Component, args: [{
selector: 'lib-allegati',
template: "<!-- <p>allegati works!</p> -->\r\n<div *ngIf=\"loadingLinguage\" class=\"row\">\r\n\t<div *ngIf=\"!visualizzaDettagli\" class=\"col-12\">\r\n\t\t<div class=\"table-responsive\">\r\n\t\t\t<table class=\"table border\">\r\n\t\t\t\t<thead>\r\n\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t<th *ngIf=\"cl1\" scope=\"col\">{{'colonna_allegati_1' | traduzione}}</th>\r\n\t\t\t\t\t\t<th *ngIf=\"cl2\" scope=\"col\">{{'colonna_allegati_2' | traduzione}}</th>\r\n\t\t\t\t\t\t<th *ngIf=\"cl3\" scope=\"col\">{{'colonna_allegati_3' | traduzione}}</th>\r\n\t\t\t\t\t\t<th *ngIf=\"cl4\" scope=\"col\">{{'colonna_allegati_4' | traduzione}}</th>\r\n\t\t\t\t\t\t<th *ngIf=\"cl5\" scope=\"col\">{{'colonna_allegati_5' | traduzione}}</th>\r\n\t\t\t\t\t\t<th *ngIf=\"cl6\" scope=\"col\">{{'colonna_allegati_6' | traduzione}}</th>\r\n\t\t\t\t\t\t<th *ngIf=\"cl7\" scope=\"col\">{{'colonna_allegati_7' | traduzione}}</th>\r\n\t\t\t\t\t\t<th *ngIf=\"cl8\" scope=\"col\">{{'colonna_allegati_8' | traduzione}}</th>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t</thead>\r\n\t\t\t\t<tbody>\r\n\t\t\t\t\t<tr *ngFor=\"let allegato of allegati let i = index\">\r\n\t\t\t\t\t\t<td *ngIf=\"cl1\">{{allegato?.dataDocumento | date:'dd/MM/yyyy'}}</td>\r\n\t\t\t\t\t\t<td *ngIf=\"cl2\">{{allegato?.dataCreazione | date:'dd/MM/yyyy'}}</td>\r\n\t\t\t\t\t\t<td *ngIf=\"cl3\">{{allegato?.tipoServizio?.descrizione}}</td>\r\n\t\t\t\t\t\t<td *ngIf=\"cl4\">{{allegato.descrizione}}</td>\r\n\t\t\t\t\t\t<td *ngIf=\"cl5\">{{allegato.nome}}</td>\r\n\t\t\t\t\t\t<td *ngIf=\"cl6\">{{allegato?.tipoDocumento?.descrizione}}</td>\r\n\t\t\t\t\t\t<td *ngIf=\"cl7\">\r\n\t\t\t\t\t\t\t<button mat-flat-button color=\"\" class=\"btn btn-link\"\r\n\t\t\t\t\t\t\t\t[disabled]=\"!isValid(allegato.statiDocumento)\"\r\n\t\t\t\t\t\t\t\t(click)=\"downloadFile(allegato)\"\r\n\t\t\t\t\t\t\t\t[attr.aria-label]=\"'bt-download-doc' | traduzione\"\r\n\t\t\t\t\t\t\t\ttitle=\"{{'bt-download-doc' | traduzione}}\">\r\n\t\t\t\t\t\t\t\t<span class=\"fas fa-download\" aria-hidden=\"true\"></span>\r\n\t\t\t\t\t\t\t\t<p class=\"sr-only\">{{'bt-download-doc' | traduzione}}</p>\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t</td>\r\n\t\t\t\t\t\t<td *ngIf=\"allegato.jsonMetadati && cl8\">\r\n\t\t\t\t\t\t\t<button mat-flat-button color=\"\" class=\"btn btn-link\"\r\n\t\t\t\t\t\t\t\t(click)=\"visualizzaDettaglio(allegato)\"\r\n\t\t\t\t\t\t\t\t[attr.aria-label]=\"'bt-visualizza-dettaglio' | traduzione\"\r\n\t\t\t\t\t\t\t\ttitle=\"{{'bt-visualizza-dettaglio' | traduzione}}\">\r\n\t\t\t\t\t\t\t\t<span class=\"fas fa-eye ml-2\" aria-hidden=\"true\"></span>\r\n\t\t\t\t\t\t\t\t<p class=\"sr-only\">{{'bt-visualizza-dettaglio' | traduzione}}</p>\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t</td>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t\t<!-- TODO -->\r\n\t\t\t\t\t<!-- <tr *ngIf=\"allegato.jsonMetadati\">\r\n\t\t\t\t\t\t<button mat-flat-button color=\"link\" class=\"btn btn-link\"\r\n\t\t\t\t\t\t\t(click)=\"visualizzaDettaglio(allegato)\">\r\n\t\t\t\t\t\t\t{{'colonna_allegati_8' | traduzione}}\r\n\t\t\t\t\t\t\t{{'Visualizza dettaglio' | traduzione}}\r\n\t\t\t\t\t\t\t<i class=\"fas fa-arrow-right ml-2\"></i>\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t<a (click)=\"visualizzaDettaglio(allegato)\" class=\"float\"\r\n\t\t\t\t\t\t\t>{{'Visualizza dettaglio' | traduzione}}\r\n\t\t\t\t\t\t\t<i class=\"bg-primary text-white fas fa-arrow-right ml-1 p-2 rounded \"></i>\r\n\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t<lib-visualizza-dettagli\r\n\t\t\t\t\t\t\t\t[documentoSelezionato]=\"allegato\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t</lib-visualizza-dettagli>\r\n\t\t\t\t\t</tr> -->\r\n\t\t\t\t</tbody>\r\n\t\t\t</table>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<div *ngIf=\"visualizzaDettagli\" class=\"card card-primary shadow\">\r\n\t\t\t\t<div class=\"card-header px-3 py-2\">\r\n\t\t\t\t\t<h4 class=\"card-title mb-0 font-weight-bold d-inline text-uppercase h5\">\r\n\t\t\t\t\t\t{{documentoSelezionato?.tipoServizio?.descrizione}}</h4>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"card-body px-3 py-2\">\r\n\t\t\t\t\t<div class=\"row mt-2 mb-3\">\r\n\t\t\t\t\t\t<div class=\"col-md-4 col-sm-6 col-xs-12\">\r\n\t\t\t\t\t\t\t<p class=\"mb-0 font-weight-bold\">\r\n\t\t\t\t\t\t\t\t{{'colonna_allegati_1' | traduzione }}:\r\n\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t<p >{{documentoSelezionato?.dataDocumento | date:'dd/MM/yyyy'}}</p>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"col-md-4 col-sm-6 col-xs-12\">\r\n\t\t\t\t\t\t\t<p class=\"mb-0 font-weight-bold\">\r\n\t\t\t\t\t\t\t\t{{'colonna_allegati_2' | traduzione }}:\r\n\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t<p>{{documentoSelezionato?.dataCreazione | date:'dd/MM/yyyy'}}</p>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"col-md-4 col-sm-6 col-xs-12\">\r\n\t\t\t\t\t\t\t<p class=\"mb-0 font-weight-bold\">\r\n\t\t\t\t\t\t\t\t{{'colonna_allegati_3' | traduzione }}:\r\n\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t<p >{{documentoSelezionato?.tipoServizio?.descrizione}}</p>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"col-md-4 col-sm-6 col-xs-12\">\r\n\t\t\t\t\t\t\t<p class=\"mb-0 font-weight-bold\">\r\n\t\t\t\t\t\t\t\t{{'colonna_allegati_5' | traduzione }}:\r\n\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t<p>{{documentoSelezionato?.nome}}</p>\r\n\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t<div class=\"col-md-4 col-sm-6 col-xs-12\">\r\n\t\t\t\t\t\t\t<p class=\"mb-0 font-weight-bold\">\r\n\t\t\t\t\t\t\t\t{{'colonna_allegati_4' | traduzione }}:\r\n\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t<p>{{documentoSelezionato?.descrizione}}</p>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"col-md-4 col-sm-6 col-xs-12\">\r\n\t\t\t\t\t\t\t<p class=\"mb-0 font-weight-bold\">\r\n\t\t\t\t\t\t\t\t{{'colonna_allegati_6' | traduzione }}:\r\n\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t<p >{{documentoSelezionato?.tipoDocumento?.descrizione}}</p>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"col-md-4 col-sm-6 col-xs-12 mb-3\">\r\n\t\t\t\t\t\t\t<p class=\"mb-0 font-weight-bold\"><strong>{{'colonna_allegati_7' | traduzione }}</strong></p>\r\n\t\t\t\t\t\t\t<button mat-flat-button color=\"link\" class=\"btn btn-primary\"\r\n\t\t\t\t\t\t\t\t[disabled]=\"!isValid(documentoSelezionato.statiDocumento)\"\r\n\t\t\t\t\t\t\t\t(click)=\"downloadFile(documentoSelezionato)\" aria-label=\"scarica il documento\">\r\n\t\t\t\t\t\t\t\tDownload <span class=\"fas fa-download fa-lg ml-2\" aria-hidden=\"true\"></span>\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t<p class=\"mb-0 font-weight-bold\" aria-labelledby=\"ulteriori_documento\">{{'Ulteriori Dettagli' | traduzione }}:</p>\r\n\t\t\t\t\t\t\t<ngx-json-viewer *ngIf=\"dataJson\"\r\n\t\t\t\t\t\t\t\t[json]=\"dataJson\"\r\n\t\t\t\t\t\t\t\t[expanded]=\"true\"\r\n\t\t\t\t\t\t\t\tid=\"ulteriori_documento\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t</ngx-json-viewer>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n",
styles: [".card-primary>.card-header{background-color:#d3deea}.table>thead{background-color:#0a2644;color:#fff}.table td,.table th{border-top:0;padding:.75rem;vertical-align:top}.table tr{border-bottom:1px solid #dee2e6}.table tbody tr:hover{background-color:#dee2e6}.btn-link{color:#0061c2}.btn-link:hover{color:#053a9a}.btn-primary{background-color:#0061c2}.btn-primary:hover{background-color:#053a9a}"]
},] }
];
AllegatiComponent.ctorParameters = () => [
{ type: TranslateService },
{ type: TranslatePipe },
{ type: HttpClient },
{ type: ConfigurationService }
];
AllegatiComponent.propDecorators = {
allegati: [{ type: Input }],
visualizzaDettagli: [{ type: Input }],
colonne: [{ type: Input }],
dettaglioDoc: [{ type: Output }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsZWdhdGkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkQ6L1Byb2dldHRpL0RBRy9zb3JnZW50aS9naXRsYWItdGVybmkvY29tbW9uLWNvbXBvbmVudC1saWIvcHJvamVjdHMvcG9ydGFsLWNvbW1vbi1jb21wb25lbnQtbGliL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9hbGxlZ2F0aS9jb21wb25lbnRzL2FsbGVnYXRpLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFhN0MsTUFBTSxPQUFPLGlCQUFpQjtJQTZCN0IsWUFBb0IsZ0JBQWtDLEVBQzdDLGFBQTRCLEVBQzVCLElBQWdCLEVBQ2hCLG9CQUEwQztRQUgvQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQzdDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQTdCbkQsdUJBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQU94QyxhQUFRLEdBQXVCLEVBQUUsQ0FBQztRQU1sQyxZQUFPLEdBQWtDLEVBQUUsQ0FBQztRQUUzQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFFNUQsUUFBRyxHQUFZLEtBQUssQ0FBQztRQUNyQixRQUFHLEdBQVksS0FBSyxDQUFDO1FBQ3JCLFFBQUcsR0FBWSxLQUFLLENBQUM7UUFDckIsUUFBRyxHQUFZLEtBQUssQ0FBQztRQUNyQixRQUFHLEdBQVksS0FBSyxDQUFDO1FBQ3JCLFFBQUcsR0FBWSxLQUFLLENBQUM7UUFDckIsUUFBRyxHQUFZLEtBQUssQ0FBQztRQUNyQixRQUFHLEdBQVksS0FBSyxDQUFDO0lBS2tDLENBQUM7SUFFeEQsUUFBUTtRQUNQLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ2xHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjO2FBQ2xDLElBQUksQ0FDSixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FDaEQ7YUFDQSxTQUFTLEVBQUUsQ0FBQztRQUVkLDBDQUEwQztRQUMxQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUNuRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUNuRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUNuRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUNuRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUNuRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUNuRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUNuRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUNuRyw0Q0FBNEM7UUFDNUMsNENBQTRDO1FBQzVDLDRDQUE0QztRQUM1Qyw0Q0FBNEM7UUFDNUMsNENBQTRDO1FBQzVDLDRDQUE0QztRQUM1Qyw0Q0FBNEM7UUFDNUMsNENBQTRDO0lBQzdDLENBQUM7SUFFRCxZQUFZLENBQUMsU0FBdUI7UUFDbkMsTUFBTSxHQUFHLEdBQVcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUM7UUFDL0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDMUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNsQyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQzlILENBQUM7SUFFRCxRQUFRLENBQUMsUUFBUSxFQUFFLFFBQVE7UUFDMUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzFELE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUErQjtRQUN0QyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxFQUFFO1lBQzNDLE9BQU8sSUFBSSxDQUFDO1NBQ1o7YUFBTTtZQUNOLE9BQU8sS0FBSyxDQUFDO1NBQ2I7SUFDRixDQUFDO0lBRUQsbUJBQW1CLENBQUMsUUFBUTtRQUMzQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQy9CLElBQUk7WUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ2xEO1FBQ0QsT0FBTyxDQUFDLEVBQUU7WUFDVCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixPQUFPLENBQUMsR0FBRyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7U0FDOUQ7UUFBQSxDQUFDO1FBQ0YsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFFBQVEsQ0FBQztRQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNqRCxDQUFDOzs7WUFuR0QsU0FBUyxTQUFDO2dCQUNWLFFBQVEsRUFBRSxjQUFjO2dCQUN4Qix5dU5BQXdDOzthQUV4Qzs7O1lBbEJRLGdCQUFnQjtZQURoQixhQUFhO1lBTGIsVUFBVTtZQVVWLG9CQUFvQjs7O3VCQXdCM0IsS0FBSztpQ0FHTCxLQUFLO3NCQUdMLEtBQUs7MkJBR0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3RyYW5zbGF0ZS90cmFuc2xhdGUucGlwZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi90cmFuc2xhdGUvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEb2N1bWVudG9EVE8gfSBmcm9tICcuLi9tb2RlbHMvZG9jdW1lbnRvLWR0byc7XHJcbmltcG9ydCB7IFN0YXRvRG9jdW1lbnRvRFRPIH0gZnJvbSAnLi4vbW9kZWxzL3N0YXRvLWRvY3VtZW50by1kdG8nO1xyXG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tIFwiZmlsZS1zYXZlclwiO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi1zZXJ2aWNlJztcclxuaW1wb3J0IHsgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb2N1bWVudGFsZSB9IGZyb20gJy4uL21vZGVscy9kb2N1bWVudGFsZSc7XHJcblxyXG50eXBlIENvbG9ubmVUYWJlbGxhQWxsZWdhdGkgPSB7XHJcblx0Y2hpYXZlOiBzdHJpbmcsXHJcblx0ZGVzY3JpemlvbmU6IHN0cmluZyxcclxuXHR2aXNpYmlsZTogYm9vbGVhblxyXG59XHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnbGliLWFsbGVnYXRpJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vYWxsZWdhdGkuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL2FsbGVnYXRpLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWxsZWdhdGlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuXHRsb2FkaW5nTGluZ3VhZ2U6IGJvb2xlYW47XHJcblx0ZG9jdW1lbnRvRG93bmxvYWQkID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG5cdGRvY3VtZW50YWxlU2VydmljZVVybDogc3RyaW5nO1xyXG5cdGRldHRhZ2xpbzogYm9vbGVhbjtcclxuXHRkb2N1bWVudG9TZWxlemlvbmF0bzogRG9jdW1lbnRhbGU7XHJcblx0ZGF0YUpzb246IGFueTtcclxuXHJcblx0QElucHV0KClcclxuXHRhbGxlZ2F0aTogQXJyYXk8RG9jdW1lbnRhbGU+ID0gW107XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0dmlzdWFsaXp6YURldHRhZ2xpOiBib29sZWFuO1xyXG5cclxuXHRASW5wdXQoKVxyXG5cdGNvbG9ubmU6IEFycmF5PENvbG9ubmVUYWJlbGxhQWxsZWdhdGk+ID0gW107XHJcblxyXG5cdEBPdXRwdXQoKSBwdWJsaWMgZGV0dGFnbGlvRG9jID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuXHRjbDE6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRjbDI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRjbDM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRjbDQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRjbDU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRjbDY6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRjbDc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRjbDg6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSB0cmFuc2xhdGVQaXBlOiBUcmFuc2xhdGVQaXBlLFxyXG5cdFx0cHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG5cdFx0cHJpdmF0ZSBjb25maWd1cmF0aW9uU2VydmljZTogQ29uZmlndXJhdGlvblNlcnZpY2UpIHsgfVxyXG5cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuZG9jdW1lbnRhbGVTZXJ2aWNlVXJsID0gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5zZXJ2aWNlUGF0aHMuZ2V0KCdET0NVTUVOVEFMRV9NU19BUElfVVJMJyk7XHJcblx0XHR0aGlzLnRyYW5zbGF0ZVBpcGUudHJhbnNmb3JtKCcnKTtcclxuXHRcdHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFkdXppb25pTGliJFxyXG5cdFx0XHQucGlwZShcclxuXHRcdFx0XHR0YXAoXyA9PiBfID8gdGhpcy5sb2FkaW5nTGluZ3VhZ2UgPSB0cnVlIDogbnVsbClcclxuXHRcdFx0KVxyXG5cdFx0XHQuc3Vic2NyaWJlKCk7XHJcblxyXG5cdFx0Ly8gY29uc29sZS5sb2coJ1tjb2xvbm5lXScsIHRoaXMuY29sb25uZSk7XHJcblx0XHR0aGlzLmNsMSA9IHRoaXMuY29sb25uZS5maW5kKHRpcG9TZXJ2aXppbyA9PiB0aXBvU2Vydml6aW8uY2hpYXZlID09IFwiY29sb25uYV9hbGxlZ2F0aV8xXCIpLnZpc2liaWxlO1xyXG5cdFx0dGhpcy5jbDIgPSB0aGlzLmNvbG9ubmUuZmluZCh0aXBvU2Vydml6aW8gPT4gdGlwb1NlcnZpemlvLmNoaWF2ZSA9PSBcImNvbG9ubmFfYWxsZWdhdGlfMlwiKS52aXNpYmlsZTtcclxuXHRcdHRoaXMuY2wzID0gdGhpcy5jb2xvbm5lLmZpbmQodGlwb1NlcnZpemlvID0+IHRpcG9TZXJ2aXppby5jaGlhdmUgPT0gXCJjb2xvbm5hX2FsbGVnYXRpXzNcIikudmlzaWJpbGU7XHJcblx0XHR0aGlzLmNsNCA9IHRoaXMuY29sb25uZS5maW5kKHRpcG9TZXJ2aXppbyA9PiB0aXBvU2Vydml6aW8uY2hpYXZlID09IFwiY29sb25uYV9hbGxlZ2F0aV80XCIpLnZpc2liaWxlO1xyXG5cdFx0dGhpcy5jbDUgPSB0aGlzLmNvbG9ubmUuZmluZCh0aXBvU2Vydml6aW8gPT4gdGlwb1NlcnZpemlvLmNoaWF2ZSA9PSBcImNvbG9ubmFfYWxsZWdhdGlfNVwiKS52aXNpYmlsZTtcclxuXHRcdHRoaXMuY2w2ID0gdGhpcy5jb2xvbm5lLmZpbmQodGlwb1NlcnZpemlvID0+IHRpcG9TZXJ2aXppby5jaGlhdmUgPT0gXCJjb2xvbm5hX2FsbGVnYXRpXzZcIikudmlzaWJpbGU7XHJcblx0XHR0aGlzLmNsNyA9IHRoaXMuY29sb25uZS5maW5kKHRpcG9TZXJ2aXppbyA9PiB0aXBvU2Vydml6aW8uY2hpYXZlID09IFwiY29sb25uYV9hbGxlZ2F0aV83XCIpLnZpc2liaWxlO1xyXG5cdFx0dGhpcy5jbDggPSB0aGlzLmNvbG9ubmUuZmluZCh0aXBvU2Vydml6aW8gPT4gdGlwb1NlcnZpemlvLmNoaWF2ZSA9PSBcImNvbG9ubmFfYWxsZWdhdGlfOFwiKS52aXNpYmlsZTtcclxuXHRcdC8vIGNvbnNvbGUubG9nKCdbY29sb25uZV0gLSBjbDEnLCB0aGlzLmNsMSk7XHJcblx0XHQvLyBjb25zb2xlLmxvZygnW2NvbG9ubmVdIC0gY2wyJywgdGhpcy5jbDIpO1xyXG5cdFx0Ly8gY29uc29sZS5sb2coJ1tjb2xvbm5lXSAtIGNsMycsIHRoaXMuY2wzKTtcclxuXHRcdC8vIGNvbnNvbGUubG9nKCdbY29sb25uZV0gLSBjbDQnLCB0aGlzLmNsNCk7XHJcblx0XHQvLyBjb25zb2xlLmxvZygnW2NvbG9ubmVdIC0gY2w1JywgdGhpcy5jbDUpO1xyXG5cdFx0Ly8gY29uc29sZS5sb2coJ1tjb2xvbm5lXSAtIGNsNicsIHRoaXMuY2w2KTtcclxuXHRcdC8vIGNvbnNvbGUubG9nKCdbY29sb25uZV0gLSBjbDcnLCB0aGlzLmNsNyk7XHJcblx0XHQvLyBjb25zb2xlLmxvZygnW2NvbG9ubmVdIC0gY2w4JywgdGhpcy5jbDgpO1xyXG5cdH1cclxuXHJcblx0ZG93bmxvYWRGaWxlKGRvY3VtZW50bzogRG9jdW1lbnRvRFRPKSB7XHJcblx0XHRjb25zdCB1cmw6IHN0cmluZyA9IHRoaXMuZG9jdW1lbnRhbGVTZXJ2aWNlVXJsICsgZG9jdW1lbnRvLnVybDtcclxuXHRcdGNvbnNvbGUubG9nKCdbdXJsXScsIHVybCk7XHJcblx0XHRjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XHJcblx0XHRoZWFkZXJzLmFwcGVuZCgnQWNjZXB0JywgJ3RleHQvcGxhaW4nKTtcclxuXHRcdHRoaXMuaHR0cC5nZXQodXJsLCB7IGhlYWRlcnM6IGhlYWRlcnMsIHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnN1YnNjcmliZShyZXNwb25zZSA9PiB0aGlzLnNhdmVGaWxlKHJlc3BvbnNlLCBkb2N1bWVudG8ubm9tZSkpXHJcblx0fVxyXG5cclxuXHRzYXZlRmlsZShyZXNwb25zZSwgbm9tZUZpbGUpIHtcclxuXHRcdGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2VdLCB7IHR5cGU6ICd0ZXh0L3BsYWluJyB9KTtcclxuXHRcdHNhdmVBcyhibG9iLCBub21lRmlsZSk7XHJcblx0fVxyXG5cclxuXHRpc1ZhbGlkKHN0YXRvOiBBcnJheTxTdGF0b0RvY3VtZW50b0RUTz4pIHtcclxuXHRcdGlmIChzdGF0by5maWx0ZXIocyA9PiBzLmxhc3RTdGF0ZSA9PSB0cnVlKSkge1xyXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHZpc3VhbGl6emFEZXR0YWdsaW8oYWxsZWdhdG8pIHtcclxuXHRcdHRoaXMudmlzdWFsaXp6YURldHRhZ2xpID0gdHJ1ZTtcclxuXHRcdHRyeSB7XHJcblx0XHRcdHRoaXMuZGF0YUpzb24gPSBKU09OLnBhcnNlKGFsbGVnYXRvLmpzb25NZXRhZGF0aSk7XHJcblx0XHR9XHJcblx0XHRjYXRjaCAoZSkge1xyXG5cdFx0XHR0aGlzLmRhdGFKc29uID0gbnVsbDtcclxuXHRcdFx0Y29uc29sZS5sb2coJ1tlcnJvciBvY2NvcmVkIHdoaWxlIHlvdSB3ZXJlIHR5cGluZyB0aGUgSlNPTl0nKTtcclxuXHRcdH07XHJcblx0XHR0aGlzLmRvY3VtZW50b1NlbGV6aW9uYXRvID0gYWxsZWdhdG87XHJcblx0XHR0aGlzLmRldHRhZ2xpb0RvYy5lbWl0KHRoaXMudmlzdWFsaXp6YURldHRhZ2xpKTtcclxuXHR9XHJcbn1cclxuIl19