brainloper-ui 14.1.10 → 14.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,10 +17,10 @@ export class BreadCrumbComponent {
17
17
  }
18
18
  }
19
19
  BreadCrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BreadCrumbComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
20
- BreadCrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: BreadCrumbComponent, selector: "app-bread-crumb", inputs: { menu: "menu" }, outputs: { selectRouter: "selectRouter" }, ngImport: i0, template: "<div aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb\">\n <li *ngFor=\"let m of menu\" [class]=\"m.current?'active':''\" class=\"breadcrumb-item\" (click)=\"handlerRouter(m)\">{{m.name}}</li>\n </ol>\n</div>\n", styles: [".breadcrumb-item{cursor:pointer}.breadcrumb{background-color:#b7b9bb!important;padding:10px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
20
+ BreadCrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: BreadCrumbComponent, selector: "app-bread-crumb", inputs: { menu: "menu" }, outputs: { selectRouter: "selectRouter" }, ngImport: i0, template: "<div aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb\">\n <li *ngFor=\"let m of menu\" [class]=\"m.current?'active':''\" class=\"breadcrumb-item\" (click)=\"handlerRouter(m)\">{{m.name}}</li>\n </ol>\n</div>\n", styles: [".breadcrumb-item{cursor:pointer}.breadcrumb{background-color:#b7b9bb!important;padding:10px;margin:0}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
21
21
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BreadCrumbComponent, decorators: [{
22
22
  type: Component,
23
- args: [{ selector: 'app-bread-crumb', template: "<div aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb\">\n <li *ngFor=\"let m of menu\" [class]=\"m.current?'active':''\" class=\"breadcrumb-item\" (click)=\"handlerRouter(m)\">{{m.name}}</li>\n </ol>\n</div>\n", styles: [".breadcrumb-item{cursor:pointer}.breadcrumb{background-color:#b7b9bb!important;padding:10px}\n"] }]
23
+ args: [{ selector: 'app-bread-crumb', template: "<div aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb\">\n <li *ngFor=\"let m of menu\" [class]=\"m.current?'active':''\" class=\"breadcrumb-item\" (click)=\"handlerRouter(m)\">{{m.name}}</li>\n </ol>\n</div>\n", styles: [".breadcrumb-item{cursor:pointer}.breadcrumb{background-color:#b7b9bb!important;padding:10px;margin:0}\n"] }]
24
24
  }], ctorParameters: function () { return [{ type: i1.Router }]; }, propDecorators: { menu: [{
25
25
  type: Input
26
26
  }], selectRouter: [{
@@ -7,6 +7,7 @@ import * as i1 from "@angular/material/dialog";
7
7
  import * as i2 from "../../../../services/message.service";
8
8
  import * as i3 from "../../../../services/work-order-pdf.service";
9
9
  import * as i4 from "@angular/material/button";
10
+ import * as i5 from "@angular/material/icon";
10
11
  export class TemplateOtComponent {
11
12
  constructor(dialogRef, dataModal, dialog, message, workOrderPdfService) {
12
13
  this.dialogRef = dialogRef;
@@ -134,12 +135,12 @@ export class TemplateOtComponent {
134
135
  }
135
136
  }
136
137
  TemplateOtComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TemplateOtComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i1.MatDialog }, { token: i2.MessageService }, { token: i3.WorkOrderPdfService }], target: i0.ɵɵFactoryTarget.Component });
137
- TemplateOtComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TemplateOtComponent, selector: "app-template-ot", ngImport: i0, template: "<div id=\"templateOT\" #templateOT>\n <div class=\"d-flex flex-column w-100 white-background\">\n\n <!-- Encabezado -->\n <div class=\"borde w-100 d-flex flex-row align-items-center header-section\">\n <div class=\"d-flex flex-column align-items-center text-content\" style=\"width:80%\">\n <h2 class=\"text-header text-uppercase wrap-text\">{{data.name}}</h2>\n <h2 class=\"text-header wrap-text\">NIT: {{data.nit}}</h2>\n <div class=\"w-100 d-flex flex-row justify-content-evenly\">\n <h3 class=\"text-header wrap-text\">{{data.address}}</h3>\n <h3 class=\"text-header wrap-text\">TEL: {{data.telephone}}</h3>\n </div>\n </div>\n <div style=\"width:20%\">\n <div class=\"img w-100\" [style.background-image]=\"'url(' + data.image + ')'\">\n </div>\n </div>\n </div>\n\n <div class=\"borde container-headers\">\n <h2>Orden de trabajo</h2>\n <h2 class=\"wrap-text\">N\u00B0: {{data.consecutive}}</h2>\n </div>\n\n <!-- Cuerpo -->\n <div class=\"borde w-100 flexible-row\">\n <div class=\"border-r container-text\" style=\"width:12%\">\n <h2 class=\"fw-bold\">\u00C1rea:</h2>\n </div>\n <div class=\"border-r container-text text-content\" style=\"width:32%\">\n <h2 class=\"wrap-text\">{{data.area}}</h2>\n </div>\n <div class=\"border-r container-text\" style=\"width:12%\">\n <h2 class=\"fw-bold\">C\u00F3digo:</h2>\n </div>\n <div class=\"border-r container-text text-content\" style=\"width:16%\">\n <h2 class=\"wrap-text\">{{data.code}}</h2>\n </div>\n <div class=\"border-r container-text\" style=\"width:12%\">\n <h2 class=\"fw-bold\">Fecha:</h2>\n </div>\n <div class=\"container-text text-content\" style=\"width:16%\">\n <h2 class=\"wrap-text\">{{data.date}}</h2>\n </div>\n </div>\n\n <div class=\"borde w-100 flexible-row\">\n <div class=\"border-r container-text\" style=\"width:12%\">\n <h2 class=\"fw-bold\">Operario:</h2>\n </div>\n <div class=\"border-r container-text text-content\" style=\"width:32%\">\n <h2 class=\"wrap-text\">{{data.responsible}}</h2>\n </div>\n <div class=\"border-r container-text\" style=\"width:12%\">\n <h2 class=\"fw-bold\">Od\u00F3metro:</h2>\n </div>\n <div class=\"border-r container-text text-content\" style=\"width:16%\">\n <h2 class=\"wrap-text\">{{data.odometer}}</h2>\n </div>\n <div class=\"border-r container-text\" style=\"width:12%\">\n <h2 class=\"fw-bold\">Referencia Factura:</h2>\n </div>\n <div class=\"container-text text-content\" style=\"width:16%\">\n <h2 class=\"wrap-text\">{{data.invoiceReference}}</h2>\n </div>\n </div>\n\n <div class=\"borde container-headers\">\n <h2>Datos del proveedor</h2>\n </div>\n\n <div class=\"borde flexible-row\">\n <div class=\"border-r container-text\" style=\"width:15%\">\n <h2 class=\"fw-bold\">Nombre:</h2>\n </div>\n <div class=\"border-r container-text text-content\" style=\"width:35%\">\n <h2 class=\"wrap-text\">{{data.nameProvider}}</h2>\n </div>\n <div class=\"border-r container-text\" style=\"width:15%\">\n <h2 class=\"fw-bold\">Direcci\u00F3n:</h2>\n </div>\n <div class=\"container-text text-content\" style=\"width:35%\">\n <h2 class=\"wrap-text\">{{data.addressProvider}}</h2>\n </div>\n </div>\n\n <div class=\"borde container-headers\">\n <h2>Detalles del servicio</h2>\n </div>\n\n <div class=\"borde w-100 description-section\">\n <h2 class=\"wrap-text text-start\">{{data.description}}</h2>\n </div>\n\n <div class=\"borde w-100 flexible-row\">\n <div class=\"border-r container-text\" style=\"width:35%\">\n <h2 class=\"fw-bold\">AUTORIZADA POR:</h2>\n </div>\n <div class=\"container-text text-content\" style=\"width:65%\">\n <h2 class=\"wrap-text\">{{data.approved_by}}</h2>\n </div>\n </div>\n\n <!-- piso -->\n <div class=\"borde d-flex flex-column align-items-center justify-content-center w-100 footer-section\">\n <h2>Favor adjuntar la orden a la factura o cuenta de cobro</h2>\n <h2 class=\"wrap-text\">{{data.mail}}</h2>\n </div>\n\n </div>\n</div>\n\n<div class=\"download-container\">\n <button (click)=\"generatePdfWithHtml2Canvas()\" color='primary' mat-raised-button style=\"margin-right: 10px;\">\n Generar PDF\n </button>\n <!-- <button (click)=\"generatePdfWithJsPDFVersion2()\" color='warn' mat-raised-button style=\"margin-right: 10px;\">\n Generar PDF (version 2.0)\n </button>\n <button (click)=\"generatePdfWithJsPDFVersion3()\" color='accent' mat-raised-button>\n <mat-icon>picture_as_pdf</mat-icon>\n Generar PDF (version 3.0)\n </button> -->\n\n</div>", styles: [".img{background-size:100%!important;background-repeat:no-repeat!important;background-position:center!important;background-size:contain!important;height:22mm!important;margin:0!important;padding:0!important}h2{font-size:1rem!important;line-height:1.2!important;margin:0!important;padding:0!important;text-align:center!important}h3{line-height:1.2!important;margin:0!important;padding:0!important;text-align:center!important}.text-header{line-height:1.5!important;font-weight:700!important}.text-uppercase{text-transform:uppercase!important}.wrap-text{white-space:pre-wrap!important}.text-content{padding:5px!important;word-wrap:break-word!important;overflow-wrap:break-word!important}.borde{border:1px solid blue!important}.border-r{border-right:1px solid blue!important;min-height:100%!important;align-self:stretch!important}.container-text{display:flex!important;justify-content:center!important;align-items:center!important;min-height:inherit!important}.container-headers{display:flex!important;align-items:center!important;justify-content:space-evenly!important;width:100%!important;min-height:8mm!important;background:rgba(240,244,255,.6117647059)!important;padding:5px!important;word-wrap:break-word!important;overflow-wrap:break-word!important}.container-headers h2{font-weight:700!important}.flexible-row{display:flex!important;flex-direction:row!important;align-items:stretch!important;min-height:11mm!important}.header-section{min-height:25mm!important}.footer-section{min-height:14mm!important;background:rgba(240,244,255,.35)!important;padding:5px!important;word-wrap:break-word!important;overflow-wrap:break-word!important}.description-section{min-height:20mm!important;padding:10px!important;word-wrap:break-word!important;overflow-wrap:break-word!important}.w-100{width:100%!important}.text-start{text-align:start!important}.white-background{background-color:#fff!important}.download-container{display:flex!important;justify-content:center!important;margin-top:15px!important}\n"], dependencies: [{ kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] });
138
+ TemplateOtComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TemplateOtComponent, selector: "app-template-ot", ngImport: i0, template: "<div id=\"templateOT\" #templateOT>\n <div class=\"d-flex flex-column w-100 white-background\">\n\n <!-- Encabezado -->\n <div class=\"borde w-100 d-flex flex-row align-items-center header-section\">\n <div class=\"d-flex flex-column align-items-center text-content\" style=\"width:80%\">\n <h2 class=\"text-header text-uppercase wrap-text\">{{data.name}}</h2>\n <h2 class=\"text-header wrap-text\">NIT: {{data.nit}}</h2>\n <div class=\"w-100 d-flex flex-row justify-content-evenly\">\n <h3 class=\"text-header wrap-text\">{{data.address}}</h3>\n <h3 class=\"text-header wrap-text\">TEL: {{data.telephone}}</h3>\n </div>\n </div>\n <div style=\"width:20%\">\n <div class=\"img w-100\" [style.background-image]=\"'url(' + data.image + ')'\">\n </div>\n </div>\n </div>\n\n <div class=\"borde container-headers\">\n <h2>Orden de trabajo</h2>\n <h2 class=\"wrap-text\">N\u00B0: {{data.consecutive}}</h2>\n </div>\n\n <!-- Cuerpo -->\n <div class=\"borde w-100 flexible-row\">\n <div class=\"border-r container-text\" style=\"width:12%\">\n <h2 class=\"fw-bold\">\u00C1rea:</h2>\n </div>\n <div class=\"border-r container-text text-content\" style=\"width:32%\">\n <h2 class=\"wrap-text\">{{data.area}}</h2>\n </div>\n <div class=\"border-r container-text\" style=\"width:12%\">\n <h2 class=\"fw-bold\">C\u00F3digo:</h2>\n </div>\n <div class=\"border-r container-text text-content\" style=\"width:16%\">\n <h2 class=\"wrap-text\">{{data.code}}</h2>\n </div>\n <div class=\"border-r container-text\" style=\"width:12%\">\n <h2 class=\"fw-bold\">Fecha:</h2>\n </div>\n <div class=\"container-text text-content\" style=\"width:16%\">\n <h2 class=\"wrap-text\">{{data.date}}</h2>\n </div>\n </div>\n\n <div class=\"borde w-100 flexible-row\">\n <div class=\"border-r container-text\" style=\"width:12%\">\n <h2 class=\"fw-bold\">Operario:</h2>\n </div>\n <div class=\"border-r container-text text-content\" style=\"width:32%\">\n <h2 class=\"wrap-text\">{{data.responsible}}</h2>\n </div>\n <div class=\"border-r container-text\" style=\"width:12%\">\n <h2 class=\"fw-bold\">Od\u00F3metro:</h2>\n </div>\n <div class=\"border-r container-text text-content\" style=\"width:16%\">\n <h2 class=\"wrap-text\">{{data.odometer}}</h2>\n </div>\n <div class=\"border-r container-text\" style=\"width:12%\">\n <h2 class=\"fw-bold\">Referencia Factura:</h2>\n </div>\n <div class=\"container-text text-content\" style=\"width:16%\">\n <h2 class=\"wrap-text\">{{data.invoiceReference}}</h2>\n </div>\n </div>\n\n <div class=\"borde container-headers\">\n <h2>Datos del proveedor</h2>\n </div>\n\n <div class=\"borde flexible-row\">\n <div class=\"border-r container-text\" style=\"width:15%\">\n <h2 class=\"fw-bold\">Nombre:</h2>\n </div>\n <div class=\"border-r container-text text-content\" style=\"width:35%\">\n <h2 class=\"wrap-text\">{{data.nameProvider}}</h2>\n </div>\n <div class=\"border-r container-text\" style=\"width:15%\">\n <h2 class=\"fw-bold\">Direcci\u00F3n:</h2>\n </div>\n <div class=\"container-text text-content\" style=\"width:35%\">\n <h2 class=\"wrap-text\">{{data.addressProvider}}</h2>\n </div>\n </div>\n\n <div class=\"borde container-headers\">\n <h2>Detalles del servicio</h2>\n </div>\n\n <div class=\"borde w-100 description-section\">\n <h2 class=\"wrap-text text-start\">{{data.description}}</h2>\n </div>\n\n <div class=\"borde w-100 flexible-row\">\n <div class=\"border-r container-text\" style=\"width:35%\">\n <h2 class=\"fw-bold\">AUTORIZADA POR:</h2>\n </div>\n <div class=\"container-text text-content\" style=\"width:65%\">\n <h2 class=\"wrap-text\">{{data.approved_by}}</h2>\n </div>\n </div>\n\n <!-- piso -->\n <div class=\"borde d-flex flex-column align-items-center justify-content-center w-100 footer-section\">\n <h2>Favor adjuntar la orden a la factura o cuenta de cobro</h2>\n <h2 class=\"wrap-text\">{{data.mail}}</h2>\n </div>\n\n </div>\n</div>\n\n<div class=\"download-container\">\n <button (click)=\"generatePdfWithHtml2Canvas()\" color='primary' mat-raised-button style=\"margin-right: 10px;\">\n Generar PDF\n </button>\n <button (click)=\"generatePdfWithJsPDFVersion2()\" color='warn' mat-raised-button style=\"margin-right: 10px;\">\n Generar PDF (version 2.0)\n </button>\n <button (click)=\"generatePdfWithJsPDFVersion3()\" color='accent' mat-raised-button>\n <mat-icon>picture_as_pdf</mat-icon>\n Generar PDF (version 3.0)\n </button>\n\n</div>", styles: [".img{background-size:100%!important;background-repeat:no-repeat!important;background-position:center!important;background-size:contain!important;height:22mm!important;margin:0!important;padding:0!important}h2{font-size:1rem!important;line-height:1.2!important;margin:0!important;padding:0!important;text-align:center!important}h3{line-height:1.2!important;margin:0!important;padding:0!important;text-align:center!important}.text-header{line-height:1.5!important;font-weight:700!important}.text-uppercase{text-transform:uppercase!important}.wrap-text{white-space:pre-wrap!important}.text-content{padding:5px!important;word-wrap:break-word!important;overflow-wrap:break-word!important}.borde{border:1px solid blue!important}.border-r{border-right:1px solid blue!important;min-height:100%!important;align-self:stretch!important}.container-text{display:flex!important;justify-content:center!important;align-items:center!important;min-height:inherit!important}.container-headers{display:flex!important;align-items:center!important;justify-content:space-evenly!important;width:100%!important;min-height:8mm!important;background:rgba(240,244,255,.6117647059)!important;padding:5px!important;word-wrap:break-word!important;overflow-wrap:break-word!important}.container-headers h2{font-weight:700!important}.flexible-row{display:flex!important;flex-direction:row!important;align-items:stretch!important;min-height:11mm!important}.header-section{min-height:25mm!important}.footer-section{min-height:14mm!important;background:rgba(240,244,255,.35)!important;padding:5px!important;word-wrap:break-word!important;overflow-wrap:break-word!important}.description-section{min-height:20mm!important;padding:10px!important;word-wrap:break-word!important;overflow-wrap:break-word!important}.w-100{width:100%!important}.text-start{text-align:start!important}.white-background{background-color:#fff!important}.download-container{display:flex!important;justify-content:center!important;margin-top:15px!important}\n"], dependencies: [{ kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
138
139
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TemplateOtComponent, decorators: [{
139
140
  type: Component,
140
- args: [{ selector: 'app-template-ot', template: "<div id=\"templateOT\" #templateOT>\n <div class=\"d-flex flex-column w-100 white-background\">\n\n <!-- Encabezado -->\n <div class=\"borde w-100 d-flex flex-row align-items-center header-section\">\n <div class=\"d-flex flex-column align-items-center text-content\" style=\"width:80%\">\n <h2 class=\"text-header text-uppercase wrap-text\">{{data.name}}</h2>\n <h2 class=\"text-header wrap-text\">NIT: {{data.nit}}</h2>\n <div class=\"w-100 d-flex flex-row justify-content-evenly\">\n <h3 class=\"text-header wrap-text\">{{data.address}}</h3>\n <h3 class=\"text-header wrap-text\">TEL: {{data.telephone}}</h3>\n </div>\n </div>\n <div style=\"width:20%\">\n <div class=\"img w-100\" [style.background-image]=\"'url(' + data.image + ')'\">\n </div>\n </div>\n </div>\n\n <div class=\"borde container-headers\">\n <h2>Orden de trabajo</h2>\n <h2 class=\"wrap-text\">N\u00B0: {{data.consecutive}}</h2>\n </div>\n\n <!-- Cuerpo -->\n <div class=\"borde w-100 flexible-row\">\n <div class=\"border-r container-text\" style=\"width:12%\">\n <h2 class=\"fw-bold\">\u00C1rea:</h2>\n </div>\n <div class=\"border-r container-text text-content\" style=\"width:32%\">\n <h2 class=\"wrap-text\">{{data.area}}</h2>\n </div>\n <div class=\"border-r container-text\" style=\"width:12%\">\n <h2 class=\"fw-bold\">C\u00F3digo:</h2>\n </div>\n <div class=\"border-r container-text text-content\" style=\"width:16%\">\n <h2 class=\"wrap-text\">{{data.code}}</h2>\n </div>\n <div class=\"border-r container-text\" style=\"width:12%\">\n <h2 class=\"fw-bold\">Fecha:</h2>\n </div>\n <div class=\"container-text text-content\" style=\"width:16%\">\n <h2 class=\"wrap-text\">{{data.date}}</h2>\n </div>\n </div>\n\n <div class=\"borde w-100 flexible-row\">\n <div class=\"border-r container-text\" style=\"width:12%\">\n <h2 class=\"fw-bold\">Operario:</h2>\n </div>\n <div class=\"border-r container-text text-content\" style=\"width:32%\">\n <h2 class=\"wrap-text\">{{data.responsible}}</h2>\n </div>\n <div class=\"border-r container-text\" style=\"width:12%\">\n <h2 class=\"fw-bold\">Od\u00F3metro:</h2>\n </div>\n <div class=\"border-r container-text text-content\" style=\"width:16%\">\n <h2 class=\"wrap-text\">{{data.odometer}}</h2>\n </div>\n <div class=\"border-r container-text\" style=\"width:12%\">\n <h2 class=\"fw-bold\">Referencia Factura:</h2>\n </div>\n <div class=\"container-text text-content\" style=\"width:16%\">\n <h2 class=\"wrap-text\">{{data.invoiceReference}}</h2>\n </div>\n </div>\n\n <div class=\"borde container-headers\">\n <h2>Datos del proveedor</h2>\n </div>\n\n <div class=\"borde flexible-row\">\n <div class=\"border-r container-text\" style=\"width:15%\">\n <h2 class=\"fw-bold\">Nombre:</h2>\n </div>\n <div class=\"border-r container-text text-content\" style=\"width:35%\">\n <h2 class=\"wrap-text\">{{data.nameProvider}}</h2>\n </div>\n <div class=\"border-r container-text\" style=\"width:15%\">\n <h2 class=\"fw-bold\">Direcci\u00F3n:</h2>\n </div>\n <div class=\"container-text text-content\" style=\"width:35%\">\n <h2 class=\"wrap-text\">{{data.addressProvider}}</h2>\n </div>\n </div>\n\n <div class=\"borde container-headers\">\n <h2>Detalles del servicio</h2>\n </div>\n\n <div class=\"borde w-100 description-section\">\n <h2 class=\"wrap-text text-start\">{{data.description}}</h2>\n </div>\n\n <div class=\"borde w-100 flexible-row\">\n <div class=\"border-r container-text\" style=\"width:35%\">\n <h2 class=\"fw-bold\">AUTORIZADA POR:</h2>\n </div>\n <div class=\"container-text text-content\" style=\"width:65%\">\n <h2 class=\"wrap-text\">{{data.approved_by}}</h2>\n </div>\n </div>\n\n <!-- piso -->\n <div class=\"borde d-flex flex-column align-items-center justify-content-center w-100 footer-section\">\n <h2>Favor adjuntar la orden a la factura o cuenta de cobro</h2>\n <h2 class=\"wrap-text\">{{data.mail}}</h2>\n </div>\n\n </div>\n</div>\n\n<div class=\"download-container\">\n <button (click)=\"generatePdfWithHtml2Canvas()\" color='primary' mat-raised-button style=\"margin-right: 10px;\">\n Generar PDF\n </button>\n <!-- <button (click)=\"generatePdfWithJsPDFVersion2()\" color='warn' mat-raised-button style=\"margin-right: 10px;\">\n Generar PDF (version 2.0)\n </button>\n <button (click)=\"generatePdfWithJsPDFVersion3()\" color='accent' mat-raised-button>\n <mat-icon>picture_as_pdf</mat-icon>\n Generar PDF (version 3.0)\n </button> -->\n\n</div>", styles: [".img{background-size:100%!important;background-repeat:no-repeat!important;background-position:center!important;background-size:contain!important;height:22mm!important;margin:0!important;padding:0!important}h2{font-size:1rem!important;line-height:1.2!important;margin:0!important;padding:0!important;text-align:center!important}h3{line-height:1.2!important;margin:0!important;padding:0!important;text-align:center!important}.text-header{line-height:1.5!important;font-weight:700!important}.text-uppercase{text-transform:uppercase!important}.wrap-text{white-space:pre-wrap!important}.text-content{padding:5px!important;word-wrap:break-word!important;overflow-wrap:break-word!important}.borde{border:1px solid blue!important}.border-r{border-right:1px solid blue!important;min-height:100%!important;align-self:stretch!important}.container-text{display:flex!important;justify-content:center!important;align-items:center!important;min-height:inherit!important}.container-headers{display:flex!important;align-items:center!important;justify-content:space-evenly!important;width:100%!important;min-height:8mm!important;background:rgba(240,244,255,.6117647059)!important;padding:5px!important;word-wrap:break-word!important;overflow-wrap:break-word!important}.container-headers h2{font-weight:700!important}.flexible-row{display:flex!important;flex-direction:row!important;align-items:stretch!important;min-height:11mm!important}.header-section{min-height:25mm!important}.footer-section{min-height:14mm!important;background:rgba(240,244,255,.35)!important;padding:5px!important;word-wrap:break-word!important;overflow-wrap:break-word!important}.description-section{min-height:20mm!important;padding:10px!important;word-wrap:break-word!important;overflow-wrap:break-word!important}.w-100{width:100%!important}.text-start{text-align:start!important}.white-background{background-color:#fff!important}.download-container{display:flex!important;justify-content:center!important;margin-top:15px!important}\n"] }]
141
+ args: [{ selector: 'app-template-ot', template: "<div id=\"templateOT\" #templateOT>\n <div class=\"d-flex flex-column w-100 white-background\">\n\n <!-- Encabezado -->\n <div class=\"borde w-100 d-flex flex-row align-items-center header-section\">\n <div class=\"d-flex flex-column align-items-center text-content\" style=\"width:80%\">\n <h2 class=\"text-header text-uppercase wrap-text\">{{data.name}}</h2>\n <h2 class=\"text-header wrap-text\">NIT: {{data.nit}}</h2>\n <div class=\"w-100 d-flex flex-row justify-content-evenly\">\n <h3 class=\"text-header wrap-text\">{{data.address}}</h3>\n <h3 class=\"text-header wrap-text\">TEL: {{data.telephone}}</h3>\n </div>\n </div>\n <div style=\"width:20%\">\n <div class=\"img w-100\" [style.background-image]=\"'url(' + data.image + ')'\">\n </div>\n </div>\n </div>\n\n <div class=\"borde container-headers\">\n <h2>Orden de trabajo</h2>\n <h2 class=\"wrap-text\">N\u00B0: {{data.consecutive}}</h2>\n </div>\n\n <!-- Cuerpo -->\n <div class=\"borde w-100 flexible-row\">\n <div class=\"border-r container-text\" style=\"width:12%\">\n <h2 class=\"fw-bold\">\u00C1rea:</h2>\n </div>\n <div class=\"border-r container-text text-content\" style=\"width:32%\">\n <h2 class=\"wrap-text\">{{data.area}}</h2>\n </div>\n <div class=\"border-r container-text\" style=\"width:12%\">\n <h2 class=\"fw-bold\">C\u00F3digo:</h2>\n </div>\n <div class=\"border-r container-text text-content\" style=\"width:16%\">\n <h2 class=\"wrap-text\">{{data.code}}</h2>\n </div>\n <div class=\"border-r container-text\" style=\"width:12%\">\n <h2 class=\"fw-bold\">Fecha:</h2>\n </div>\n <div class=\"container-text text-content\" style=\"width:16%\">\n <h2 class=\"wrap-text\">{{data.date}}</h2>\n </div>\n </div>\n\n <div class=\"borde w-100 flexible-row\">\n <div class=\"border-r container-text\" style=\"width:12%\">\n <h2 class=\"fw-bold\">Operario:</h2>\n </div>\n <div class=\"border-r container-text text-content\" style=\"width:32%\">\n <h2 class=\"wrap-text\">{{data.responsible}}</h2>\n </div>\n <div class=\"border-r container-text\" style=\"width:12%\">\n <h2 class=\"fw-bold\">Od\u00F3metro:</h2>\n </div>\n <div class=\"border-r container-text text-content\" style=\"width:16%\">\n <h2 class=\"wrap-text\">{{data.odometer}}</h2>\n </div>\n <div class=\"border-r container-text\" style=\"width:12%\">\n <h2 class=\"fw-bold\">Referencia Factura:</h2>\n </div>\n <div class=\"container-text text-content\" style=\"width:16%\">\n <h2 class=\"wrap-text\">{{data.invoiceReference}}</h2>\n </div>\n </div>\n\n <div class=\"borde container-headers\">\n <h2>Datos del proveedor</h2>\n </div>\n\n <div class=\"borde flexible-row\">\n <div class=\"border-r container-text\" style=\"width:15%\">\n <h2 class=\"fw-bold\">Nombre:</h2>\n </div>\n <div class=\"border-r container-text text-content\" style=\"width:35%\">\n <h2 class=\"wrap-text\">{{data.nameProvider}}</h2>\n </div>\n <div class=\"border-r container-text\" style=\"width:15%\">\n <h2 class=\"fw-bold\">Direcci\u00F3n:</h2>\n </div>\n <div class=\"container-text text-content\" style=\"width:35%\">\n <h2 class=\"wrap-text\">{{data.addressProvider}}</h2>\n </div>\n </div>\n\n <div class=\"borde container-headers\">\n <h2>Detalles del servicio</h2>\n </div>\n\n <div class=\"borde w-100 description-section\">\n <h2 class=\"wrap-text text-start\">{{data.description}}</h2>\n </div>\n\n <div class=\"borde w-100 flexible-row\">\n <div class=\"border-r container-text\" style=\"width:35%\">\n <h2 class=\"fw-bold\">AUTORIZADA POR:</h2>\n </div>\n <div class=\"container-text text-content\" style=\"width:65%\">\n <h2 class=\"wrap-text\">{{data.approved_by}}</h2>\n </div>\n </div>\n\n <!-- piso -->\n <div class=\"borde d-flex flex-column align-items-center justify-content-center w-100 footer-section\">\n <h2>Favor adjuntar la orden a la factura o cuenta de cobro</h2>\n <h2 class=\"wrap-text\">{{data.mail}}</h2>\n </div>\n\n </div>\n</div>\n\n<div class=\"download-container\">\n <button (click)=\"generatePdfWithHtml2Canvas()\" color='primary' mat-raised-button style=\"margin-right: 10px;\">\n Generar PDF\n </button>\n <button (click)=\"generatePdfWithJsPDFVersion2()\" color='warn' mat-raised-button style=\"margin-right: 10px;\">\n Generar PDF (version 2.0)\n </button>\n <button (click)=\"generatePdfWithJsPDFVersion3()\" color='accent' mat-raised-button>\n <mat-icon>picture_as_pdf</mat-icon>\n Generar PDF (version 3.0)\n </button>\n\n</div>", styles: [".img{background-size:100%!important;background-repeat:no-repeat!important;background-position:center!important;background-size:contain!important;height:22mm!important;margin:0!important;padding:0!important}h2{font-size:1rem!important;line-height:1.2!important;margin:0!important;padding:0!important;text-align:center!important}h3{line-height:1.2!important;margin:0!important;padding:0!important;text-align:center!important}.text-header{line-height:1.5!important;font-weight:700!important}.text-uppercase{text-transform:uppercase!important}.wrap-text{white-space:pre-wrap!important}.text-content{padding:5px!important;word-wrap:break-word!important;overflow-wrap:break-word!important}.borde{border:1px solid blue!important}.border-r{border-right:1px solid blue!important;min-height:100%!important;align-self:stretch!important}.container-text{display:flex!important;justify-content:center!important;align-items:center!important;min-height:inherit!important}.container-headers{display:flex!important;align-items:center!important;justify-content:space-evenly!important;width:100%!important;min-height:8mm!important;background:rgba(240,244,255,.6117647059)!important;padding:5px!important;word-wrap:break-word!important;overflow-wrap:break-word!important}.container-headers h2{font-weight:700!important}.flexible-row{display:flex!important;flex-direction:row!important;align-items:stretch!important;min-height:11mm!important}.header-section{min-height:25mm!important}.footer-section{min-height:14mm!important;background:rgba(240,244,255,.35)!important;padding:5px!important;word-wrap:break-word!important;overflow-wrap:break-word!important}.description-section{min-height:20mm!important;padding:10px!important;word-wrap:break-word!important;overflow-wrap:break-word!important}.w-100{width:100%!important}.text-start{text-align:start!important}.white-background{background-color:#fff!important}.download-container{display:flex!important;justify-content:center!important;margin-top:15px!important}\n"] }]
141
142
  }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
142
143
  type: Inject,
143
144
  args: [MAT_DIALOG_DATA]
144
145
  }] }, { type: i1.MatDialog }, { type: i2.MessageService }, { type: i3.WorkOrderPdfService }]; } });
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtb3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2JyYWlubG9wZXItdWkvY29tcG9uZW50cy9yZXBvcnQvdGVtcGxhdGUtb3QvdGVtcGxhdGUtb3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2JyYWlubG9wZXItdWkvY29tcG9uZW50cy9yZXBvcnQvdGVtcGxhdGUtb3QvdGVtcGxhdGUtb3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM5QixPQUFPLFdBQVcsTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUEyQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBT3BGLE1BQU0sT0FBTyxtQkFBbUI7SUF1QjlCLFlBQ1MsU0FBNEMsRUFDbkIsU0FBUyxFQUNqQyxNQUFpQixFQUNsQixPQUF1QixFQUN0QixtQkFBd0M7UUFKekMsY0FBUyxHQUFULFNBQVMsQ0FBbUM7UUFDbkIsY0FBUyxHQUFULFNBQVMsQ0FBQTtRQUNqQyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2xCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3RCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUExQmxELFNBQUksR0FBRztZQUNMLElBQUksRUFBRSxFQUFFO1lBQ1IsR0FBRyxFQUFFLEVBQUU7WUFDUCxPQUFPLEVBQUUsRUFBRTtZQUNYLFNBQVMsRUFBRSxFQUFFO1lBQ2IsSUFBSSxFQUFFLEVBQUU7WUFDUixLQUFLLEVBQUUsRUFBRTtZQUNULElBQUksRUFBRSxFQUFFO1lBQ1IsSUFBSSxFQUFFLEVB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Q0FBQztRQUM5QixDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O2dIQW5KVSxtQkFBbUIsOENBeUJwQixlQUFlO29HQXpCZCxtQkFBbUIsdURDWmhDLHE2S0E0SE07MkZEaEhPLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxpQkFBaUI7OzBCQTZCeEIsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9tZXNzYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgV29ya09yZGVyUGRmU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3dvcmstb3JkZXItcGRmLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsganNQREYgfSBmcm9tICdqc3BkZic7XG5pbXBvcnQgaHRtbDJjYW52YXMgZnJvbSAnaHRtbDJjYW52YXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC10ZW1wbGF0ZS1vdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZW1wbGF0ZS1vdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RlbXBsYXRlLW90LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVPdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgZGF0YSA9IHtcbiAgICBuYW1lOiAnJyxcbiAgICBuaXQ6ICcnLFxuICAgIGFkZHJlc3M6ICcnLFxuICAgIHRlbGVwaG9uZTogJycsXG4gICAgbWFpbDogJycsXG4gICAgaW1hZ2U6ICcnLFxuICAgIGNvZGU6ICcnLFxuICAgIGRhdGU6ICcnLFxuICAgIHJlc3BvbnNpYmxlOiAnJyxcbiAgICB0aGlyZDogJycsXG4gICAgb2RvbWV0ZXI6ICcnLFxuICAgIGFwcHJvdmVkX2J5OiAnJyxcbiAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgY29uc2VjdXRpdmU6ICcnLFxuICAgIG5hbWVQcm92aWRlcjogJycsXG4gICAgYWRkcmVzc1Byb3ZpZGVyOiAnJyxcbiAgICBhcmVhOiAnJyxcbiAgICBpbnZvaWNlUmVmZXJlbmNlOiAnJyxcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZU90Q29tcG9uZW50PixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGFNb2RhbCxcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHB1YmxpYyBtZXNzYWdlOiBNZXNzYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHdvcmtPcmRlclBkZlNlcnZpY2U6IFdvcmtPcmRlclBkZlNlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGFNb2RhbC5kYXRhXG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuZGF0YU1vZGFsLmF1dG9HZW5lcmF0ZSkge1xuICAgICAgaWYgKHRoaXMuZGF0YU1vZGFsLnVzZU5ld01ldGhvZCkge1xuICAgICAgICB0aGlzLmdlbmVyYXRlUGRmV2l0aEpzUERGVmVyc2lvbjIoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVQZGZXaXRoSHRtbDJDYW52YXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVQZGZXaXRoSHRtbDJDYW52YXMoKTogdm9pZCB7XG4gICAgdGhpcy5tZXNzYWdlLm9wZW5Mb2FkaW5nKFwiQ2FyZ2FuZG9cIiwgXCJHZW5lcmFuZG8gUERGXCIpXG4gICAgY29uc3QgREFUQSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZW1wbGF0ZU9UJyk7XG4gICAgY29uc3QgZG9jID0gbmV3IGpzUERGKCdwJywgJ3B0JywgJ2E0Jyk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIGJhY2tncm91bmQ6ICd3aGl0ZScsXG4gICAgICBzY2FsZTogM1xuICAgIH07XG4gICAgaHRtbDJjYW52YXMoREFUQSwgb3B0aW9ucylcbiAgICAgIC50aGVuKChjYW52YXMpID0+IHtcbiAgICAgICAgY29uc3QgaW1nID0gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvUE5HJyk7XG5cbiAgICAgICAgY29uc3QgYnVmZmVyWCA9IDE1O1xuICAgICAgICBjb25zdCBidWZmZXJZID0gMTU7XG4gICAgICAgIGNvbnN0IGltZ1Byb3BzID0gKGRvYyBhcyBhbnkpLmdldEltYWdlUHJvcGVydGllcyhpbWcpO1xuICAgICAgICBjb25zdCBwZGZXaWR0aCA9IGRvYy5pbnRlcm5hbC5wYWdlU2l6ZS5nZXRXaWR0aCgpIC0gMiAqIGJ1ZmZlclg7XG4gICAgICAgIGNvbnN0IHBkZkhlaWdodCA9IChpbWdQcm9wcy5oZWlnaHQgKiBwZGZXaWR0aCkgLyBpbWdQcm9wcy53aWR0aDtcbiAgICAgICAgZG9jLmFkZEltYWdlKFxuICAgICAgICAgIGltZyxcbiAgICAgICAgICAnUE5HJyxcbiAgICAgICAgICBidWZmZXJYLFxuICAgICAgICAgIGJ1ZmZlclksXG4gICAgICAgICAgcGRmV2lkdGgsXG4gICAgICAgICAgcGRmSGVpZ2h0LFxuICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAnRkFTVCdcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGRvYztcbiAgICAgIH0pXG4gICAgICAudGhlbigoZG9jUmVzdWx0KSA9PiB7XG4gICAgICAgIGRvY1Jlc3VsdC5vdXRwdXQoJ2RhdGF1cmxuZXd3aW5kb3cnLCB7IGZpbGVuYW1lOiAncmVwb3J0ZS5wZGYnIH0pO1xuICAgICAgICB0aGlzLmRpYWxvZy5jbG9zZUFsbCgpXG4gICAgICAgIHRoaXMubWVzc2FnZS5jbG9zZUxvYWRpbmcoKVxuICAgICAgfSk7XG4gIH1cblxuICAgIHB1YmxpYyBnZW5lcmF0ZVBkZldpdGhKc1BERlZlcnNpb24yKCk6IHZvaWQge1xuICAgIHRoaXMubWVzc2FnZS5vcGVuTG9hZGluZyhcIkNhcmdhbmRvXCIsIFwiR2VuZXJhbmRvIFBERiBjb24gbnVldm8gbcOpdG9kb1wiKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkb2MgPSBuZXcganNQREYoJ3AnLCAncHQnLCAnbGV0dGVyJyk7XG4gICAgICBjb25zdCBwYWdlV2lkdGggPSBkb2MuaW50ZXJuYWwucGFnZVNpemUuZ2V0V2lkdGgoKTtcbiAgICAgIGNvbnN0IG1hcmdpbiA9IDQwO1xuICAgICAgbGV0IGN1cnJlbnRZID0gbWFyZ2luO1xuXG4gICAgICAvLyBFbmNhYmV6YWRvIHNpbXBsZVxuICAgICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdib2xkJyk7XG4gICAgICBkb2Muc2V0Rm9udFNpemUoMTgpO1xuICAgICAgY29uc3QgdGl0bGUgPSAnT1JERU4gREUgVFJBQkFKTyc7XG4gICAgICBjb25zdCB0aXRsZVdpZHRoID0gZG9jLmdldFRleHRXaWR0aCh0aXRsZSk7XG4gICAgICBkb2MudGV4dCh0aXRsZSwgKHBhZ2VXaWR0aCAtIHRpdGxlV2lkdGgpIC8gMiwgY3VycmVudFkpO1xuICAgICAgY3VycmVudFkgKz0gMzA7XG5cbiAgICAgIGRvYy5zZXRGb250U2l6ZSgxNCk7XG4gICAgICBjb25zdCBudW1iZXJUZXh0ID0gYE7CsCAke3RoaXMuZGF0YS5jb25zZWN1dGl2ZX1gO1xuICAgICAgY29uc3QgbnVtYmVyV2lkdGggPSBkb2MuZ2V0VGV4dFdpZHRoKG51bWJlclRleHQpO1xuICAgICAgZG9jLnRleHQobnVtYmVyVGV4dCwgKHBhZ2VXaWR0aCAtIG51bWJlcldpZHRoKSAvIDIsIGN1cnJlbnRZKTtcbiAgICAgIGN1cnJlbnRZICs9IDQwO1xuXG4gICAgICAvLyBJbmZvcm1hY2nDs24gYsOhc2ljYVxuICAgICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdub3JtYWwnKTtcbiAgICAgIGRvYy5zZXRGb250U2l6ZSgxMik7XG5cbiAgICAgIGNvbnN0IGluZm8gPSBbXG4gICAgICAgIGBFbXByZXNhOiAke3RoaXMuZGF0YS5uYW1lfWAsXG4gICAgICAgIGBOSVQ6ICR7dGhpcy5kYXRhLm5pdH1gLFxuICAgICAgICBgw4FyZWE6ICR7dGhpcy5kYXRhLmFyZWF9YCxcbiAgICAgICAgYEPDs2RpZ286ICR7dGhpcy5kYXRhLmNvZGV9YCxcbiAgICAgICAgYEZlY2hhOiAke3RoaXMuZGF0YS5kYXRlfWAsXG4gICAgICAgIGBPcGVyYXJpbzogJHt0aGlzLmRhdGEucmVzcG9uc2libGV9YCxcbiAgICAgICAgYFByb3ZlZWRvcjogJHt0aGlzLmRhdGEubmFtZVByb3ZpZGVyfWAsXG4gICAgICAgIGBEZXNjcmlwY2nDs246ICR7dGhpcy5kYXRhLmRlc2NyaXB0aW9ufWBcbiAgICAgIF07XG5cbiAgICAgIGluZm8uZm9yRWFjaChsaW5lID0+IHtcbiAgICAgICAgZG9jLnRleHQobGluZSwgbWFyZ2luLCBjdXJyZW50WSk7XG4gICAgICAgIGN1cnJlbnRZICs9IDIwO1xuICAgICAgfSk7XG5cbiAgICAgIGRvYy5vdXRwdXQoJ2RhdGF1cmxuZXd3aW5kb3cnLCB7IGZpbGVuYW1lOiAnb3JkZW5fdHJhYmFqby5wZGYnIH0pO1xuICAgICAgdGhpcy5kaWFsb2cuY2xvc2VBbGwoKTtcbiAgICAgIHRoaXMubWVzc2FnZS5jbG9zZUxvYWRpbmcoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZ2VuZXJhbmRvIFBERiBudWV2bzonLCBlcnJvcik7XG4gICAgICB0aGlzLm1lc3NhZ2UuY2xvc2VMb2FkaW5nKCk7XG4gICAgICB0aGlzLmdlbmVyYXRlUGRmV2l0aEh0bWwyQ2FudmFzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdlbmVyYXRlUGRmV2l0aEpzUERGVmVyc2lvbjMoKTogdm9pZCB7XG4gICAgdGhpcy5tZXNzYWdlLm9wZW5Mb2FkaW5nKFwiQ2FyZ2FuZG9cIiwgXCJHZW5lcmFuZG8gUERGIHByb2Zlc2lvbmFsXCIpO1xuXG4gICAgdGhpcy53b3JrT3JkZXJQZGZTZXJ2aWNlLmdlbmVyYXRlV29ya09yZGVyUERGKHRoaXMuZGF0YSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5kaWFsb2cuY2xvc2VBbGwoKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlLmNsb3NlTG9hZGluZygpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZ2VuZXJhbmRvIFBERiBwcm9mZXNpb25hbDonLCBlcnJvcik7XG4gICAgICAgIHRoaXMubWVzc2FnZS5jbG9zZUxvYWRpbmcoKTtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVBkZldpdGhIdG1sMkNhbnZhcygpO1xuICAgICAgfSk7XG4gIH1cblxuXG5cblxufVxuIiwiPGRpdiBpZD1cInRlbXBsYXRlT1RcIiAjdGVtcGxhdGVPVD5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIHctMTAwIHdoaXRlLWJhY2tncm91bmRcIj5cblxuICAgICAgICA8IS0tIEVuY2FiZXphZG8gIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGUgdy0xMDAgZC1mbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBoZWFkZXItc2VjdGlvblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIgdGV4dC1jb250ZW50XCIgc3R5bGU9XCJ3aWR0aDo4MCVcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ0ZXh0LWhlYWRlciB0ZXh0LXVwcGVyY2FzZSB3cmFwLXRleHRcIj57e2RhdGEubmFtZX19PC9oMj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ0ZXh0LWhlYWRlciB3cmFwLXRleHRcIj5OSVQ6IHt7ZGF0YS5uaXR9fTwvaDI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIGQtZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtZXZlbmx5XCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInRleHQtaGVhZGVyIHdyYXAtdGV4dFwiPnt7ZGF0YS5hZGRyZXNzfX08L2gzPlxuICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LWhlYWRlciB3cmFwLXRleHRcIj5URUw6IHt7ZGF0YS50ZWxlcGhvbmV9fTwvaDM+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDoyMCVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nIHctMTAwXCIgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwiJ3VybCgnICsgZGF0YS5pbWFnZSArICcpJ1wiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZSBjb250YWluZXItaGVhZGVyc1wiPlxuICAgICAgICAgICAgPGgyPk9yZGVuIGRlIHRyYWJham88L2gyPlxuICAgICAgICAgICAgPGgyIGNsYXNzPVwid3JhcC10ZXh0XCI+TsKwOiB7e2RhdGEuY29uc2VjdXRpdmV9fTwvaDI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gQ3VlcnBvIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGUgdy0xMDAgZmxleGlibGUtcm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLXIgY29udGFpbmVyLXRleHRcIiBzdHlsZT1cIndpZHRoOjEyJVwiPlxuICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cImZ3LWJvbGRcIj7DgXJlYTo8L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLXIgY29udGFpbmVyLXRleHQgdGV4dC1jb250ZW50XCIgc3R5bGU9XCJ3aWR0aDozMiVcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ3cmFwLXRleHRcIj57e2RhdGEuYXJlYX19PC9oMj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLXIgY29udGFpbmVyLXRleHRcIiBzdHlsZT1cIndpZHRoOjEyJVwiPlxuICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cImZ3LWJvbGRcIj5Dw7NkaWdvOjwvaDI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXItciBjb250YWluZXItdGV4dCB0ZXh0LWNvbnRlbnRcIiBzdHlsZT1cIndpZHRoOjE2JVwiPlxuICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cIndyYXAtdGV4dFwiPnt7ZGF0YS5jb2RlfX08L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLXIgY29udGFpbmVyLXRleHRcIiBzdHlsZT1cIndpZHRoOjEyJVwiPlxuICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cImZ3LWJvbGRcIj5GZWNoYTo8L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLXRleHQgdGV4dC1jb250ZW50XCIgc3R5bGU9XCJ3aWR0aDoxNiVcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ3cmFwLXRleHRcIj57e2RhdGEuZGF0ZX19PC9oMj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGUgdy0xMDAgZmxleGlibGUtcm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLXIgY29udGFpbmVyLXRleHRcIiBzdHlsZT1cIndpZHRoOjEyJVwiPlxuICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cImZ3LWJvbGRcIj5PcGVyYXJpbzo8L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLXIgY29udGFpbmVyLXRleHQgdGV4dC1jb250ZW50XCIgc3R5bGU9XCJ3aWR0aDozMiVcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ3cmFwLXRleHRcIj57e2RhdGEucmVzcG9uc2libGV9fTwvaDI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXItciBjb250YWluZXItdGV4dFwiIHN0eWxlPVwid2lkdGg6MTIlXCI+XG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwiZnctYm9sZFwiPk9kw7NtZXRybzo8L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLXIgY29udGFpbmVyLXRleHQgdGV4dC1jb250ZW50XCIgc3R5bGU9XCJ3aWR0aDoxNiVcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ3cmFwLXRleHRcIj57e2RhdGEub2RvbWV0ZXJ9fTwvaDI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLXIgY29udGFpbmVyLXRleHRcIiBzdHlsZT1cIndpZHRoOjEyJVwiPlxuICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cImZ3LWJvbGRcIj5SZWZlcmVuY2lhIEZhY3R1cmE6PC9oMj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci10ZXh0IHRleHQtY29udGVudFwiIHN0eWxlPVwid2lkdGg6MTYlXCI+XG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwid3JhcC10ZXh0XCI+e3tkYXRhLmludm9pY2VSZWZlcmVuY2V9fTwvaDI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlIGNvbnRhaW5lci1oZWFkZXJzXCI+XG4gICAgICAgICAgICA8aDI+RGF0b3MgZGVsIHByb3ZlZWRvcjwvaDI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZSBmbGV4aWJsZS1yb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXItciBjb250YWluZXItdGV4dFwiIHN0eWxlPVwid2lkdGg6MTUlXCI+XG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwiZnctYm9sZFwiPk5vbWJyZTo8L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLXIgY29udGFpbmVyLXRleHQgdGV4dC1jb250ZW50XCIgc3R5bGU9XCJ3aWR0aDozNSVcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ3cmFwLXRleHRcIj57e2RhdGEubmFtZVByb3ZpZGVyfX08L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLXIgY29udGFpbmVyLXRleHRcIiBzdHlsZT1cIndpZHRoOjE1JVwiPlxuICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cImZ3LWJvbGRcIj5EaXJlY2Npw7NuOjwvaDI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItdGV4dCB0ZXh0LWNvbnRlbnRcIiBzdHlsZT1cIndpZHRoOjM1JVwiPlxuICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cIndyYXAtdGV4dFwiPnt7ZGF0YS5hZGRyZXNzUHJvdmlkZXJ9fTwvaDI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlIGNvbnRhaW5lci1oZWFkZXJzXCI+XG4gICAgICAgICAgICA8aDI+RGV0YWxsZXMgZGVsIHNlcnZpY2lvPC9oMj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlIHctMTAwIGRlc2NyaXB0aW9uLXNlY3Rpb25cIj5cbiAgICAgICAgICAgIDxoMiBjbGFzcz1cIndyYXAtdGV4dCB0ZXh0LXN0YXJ0XCI+e3tkYXRhLmRlc2NyaXB0aW9ufX08L2gyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGUgdy0xMDAgZmxleGlibGUtcm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLXIgY29udGFpbmVyLXRleHRcIiBzdHlsZT1cIndpZHRoOjM1JVwiPlxuICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cImZ3LWJvbGRcIj5BVVRPUklaQURBIFBPUjo8L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLXRleHQgdGV4dC1jb250ZW50XCIgc3R5bGU9XCJ3aWR0aDo2NSVcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ3cmFwLXRleHRcIj57e2RhdGEuYXBwcm92ZWRfYnl9fTwvaDI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBwaXNvIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGUgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHctMTAwIGZvb3Rlci1zZWN0aW9uXCI+XG4gICAgICAgICAgICA8aDI+RmF2b3IgYWRqdW50YXIgbGEgb3JkZW4gYSBsYSBmYWN0dXJhIG8gY3VlbnRhIGRlIGNvYnJvPC9oMj5cbiAgICAgICAgICAgIDxoMiBjbGFzcz1cIndyYXAtdGV4dFwiPnt7ZGF0YS5tYWlsfX08L2gyPlxuICAgICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJkb3dubG9hZC1jb250YWluZXJcIj5cbiAgICA8YnV0dG9uIChjbGljayk9XCJnZW5lcmF0ZVBkZldpdGhIdG1sMkNhbnZhcygpXCIgY29sb3I9J3ByaW1hcnknIG1hdC1yYWlzZWQtYnV0dG9uIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxMHB4O1wiPlxuICAgICAgICBHZW5lcmFyIFBERlxuICAgIDwvYnV0dG9uPlxuICAgIDwhLS0gPGJ1dHRvbiAoY2xpY2spPVwiZ2VuZXJhdGVQZGZXaXRoSnNQREZWZXJzaW9uMigpXCIgY29sb3I9J3dhcm4nIG1hdC1yYWlzZWQtYnV0dG9uIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxMHB4O1wiPlxuICAgICAgICAgICAgR2VuZXJhciBQREYgKHZlcnNpb24gMi4wKVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gKGNsaWNrKT1cImdlbmVyYXRlUGRmV2l0aEpzUERGVmVyc2lvbjMoKVwiIGNvbG9yPSdhY2NlbnQnIG1hdC1yYWlzZWQtYnV0dG9uPlxuICAgICAgICA8bWF0LWljb24+cGljdHVyZV9hc19wZGY8L21hdC1pY29uPlxuICAgICAgICBHZW5lcmFyIFBERiAodmVyc2lvbiAzLjApXG4gICAgPC9idXR0b24+IC0tPlxuXG48L2Rpdj4iXX0=
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtb3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2JyYWlubG9wZXItdWkvY29tcG9uZW50cy9yZXBvcnQvdGVtcGxhdGUtb3QvdGVtcGxhdGUtb3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2JyYWlubG9wZXItdWkvY29tcG9uZW50cy9yZXBvcnQvdGVtcGxhdGUtb3QvdGVtcGxhdGUtb3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM5QixPQUFPLFdBQVcsTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUEyQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7OztBQU9wRixNQUFNLE9BQU8sbUJBQW1CO0lBdUI5QixZQUNTLFNBQTRDLEVBQ25CLFNBQVMsRUFDakMsTUFBaUIsRUFDbEIsT0FBdUIsRUFDdEIsbUJBQXdDO1FBSnpDLGNBQVMsR0FBVCxTQUFTLENBQW1DO1FBQ25CLGNBQVMsR0FBVCxTQUFTLENBQUE7UUFDakMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNsQixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN0Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBMUJsRCxTQUFJLEdBQUc7WUFDTCxJQUFJLEVBQUUsRUFBRTtZQUNSLEdBQUcsRUFBRSxFQUFFO1lBQ1AsT0FBTyxFQUFFLEVBQUU7WUFDWCxTQUFTLEVBQUUsRUFBRTtZQUNiLElBQUksRUFBRSxFQUFFO1lBQ1IsS0FBSyxFQUFFLEVBQUU7WUFDVCxJQUFJLEVBQUUsRUFBRTtZQUNSLElBQUksRUFBRSxF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LENBQUM7UUFDOUIsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3pELElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztnSEFuSlUsbUJBQW1CLDhDQXlCcEIsZUFBZTtvR0F6QmQsbUJBQW1CLHVEQ1poQyw0NUtBNEhNOzJGRGhITyxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsaUJBQWlCOzswQkE2QnhCLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvbWVzc2FnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFdvcmtPcmRlclBkZlNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy93b3JrLW9yZGVyLXBkZi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGpzUERGIH0gZnJvbSAnanNwZGYnO1xuaW1wb3J0IGh0bWwyY2FudmFzIGZyb20gJ2h0bWwyY2FudmFzJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdGVtcGxhdGUtb3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGVtcGxhdGUtb3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZW1wbGF0ZS1vdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlT3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGRhdGEgPSB7XG4gICAgbmFtZTogJycsXG4gICAgbml0OiAnJyxcbiAgICBhZGRyZXNzOiAnJyxcbiAgICB0ZWxlcGhvbmU6ICcnLFxuICAgIG1haWw6ICcnLFxuICAgIGltYWdlOiAnJyxcbiAgICBjb2RlOiAnJyxcbiAgICBkYXRlOiAnJyxcbiAgICByZXNwb25zaWJsZTogJycsXG4gICAgdGhpcmQ6ICcnLFxuICAgIG9kb21ldGVyOiAnJyxcbiAgICBhcHByb3ZlZF9ieTogJycsXG4gICAgZGVzY3JpcHRpb246ICcnLFxuICAgIGNvbnNlY3V0aXZlOiAnJyxcbiAgICBuYW1lUHJvdmlkZXI6ICcnLFxuICAgIGFkZHJlc3NQcm92aWRlcjogJycsXG4gICAgYXJlYTogJycsXG4gICAgaW52b2ljZVJlZmVyZW5jZTogJycsXG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVPdENvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhTW9kYWwsXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwdWJsaWMgbWVzc2FnZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB3b3JrT3JkZXJQZGZTZXJ2aWNlOiBXb3JrT3JkZXJQZGZTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhTW9kYWwuZGF0YVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmRhdGFNb2RhbC5hdXRvR2VuZXJhdGUpIHtcbiAgICAgIGlmICh0aGlzLmRhdGFNb2RhbC51c2VOZXdNZXRob2QpIHtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVBkZldpdGhKc1BERlZlcnNpb24yKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmdlbmVyYXRlUGRmV2l0aEh0bWwyQ2FudmFzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdlbmVyYXRlUGRmV2l0aEh0bWwyQ2FudmFzKCk6IHZvaWQge1xuICAgIHRoaXMubWVzc2FnZS5vcGVuTG9hZGluZyhcIkNhcmdhbmRvXCIsIFwiR2VuZXJhbmRvIFBERlwiKVxuICAgIGNvbnN0IERBVEEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVtcGxhdGVPVCcpO1xuICAgIGNvbnN0IGRvYyA9IG5ldyBqc1BERigncCcsICdwdCcsICdhNCcpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBiYWNrZ3JvdW5kOiAnd2hpdGUnLFxuICAgICAgc2NhbGU6IDNcbiAgICB9O1xuICAgIGh0bWwyY2FudmFzKERBVEEsIG9wdGlvbnMpXG4gICAgICAudGhlbigoY2FudmFzKSA9PiB7XG4gICAgICAgIGNvbnN0IGltZyA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL1BORycpO1xuXG4gICAgICAgIGNvbnN0IGJ1ZmZlclggPSAxNTtcbiAgICAgICAgY29uc3QgYnVmZmVyWSA9IDE1O1xuICAgICAgICBjb25zdCBpbWdQcm9wcyA9IChkb2MgYXMgYW55KS5nZXRJbWFnZVByb3BlcnRpZXMoaW1nKTtcbiAgICAgICAgY29uc3QgcGRmV2lkdGggPSBkb2MuaW50ZXJuYWwucGFnZVNpemUuZ2V0V2lkdGgoKSAtIDIgKiBidWZmZXJYO1xuICAgICAgICBjb25zdCBwZGZIZWlnaHQgPSAoaW1nUHJvcHMuaGVpZ2h0ICogcGRmV2lkdGgpIC8gaW1nUHJvcHMud2lkdGg7XG4gICAgICAgIGRvYy5hZGRJbWFnZShcbiAgICAgICAgICBpbWcsXG4gICAgICAgICAgJ1BORycsXG4gICAgICAgICAgYnVmZmVyWCxcbiAgICAgICAgICBidWZmZXJZLFxuICAgICAgICAgIHBkZldpZHRoLFxuICAgICAgICAgIHBkZkhlaWdodCxcbiAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgJ0ZBU1QnXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBkb2M7XG4gICAgICB9KVxuICAgICAgLnRoZW4oKGRvY1Jlc3VsdCkgPT4ge1xuICAgICAgICBkb2NSZXN1bHQub3V0cHV0KCdkYXRhdXJsbmV3d2luZG93JywgeyBmaWxlbmFtZTogJ3JlcG9ydGUucGRmJyB9KTtcbiAgICAgICAgdGhpcy5kaWFsb2cuY2xvc2VBbGwoKVxuICAgICAgICB0aGlzLm1lc3NhZ2UuY2xvc2VMb2FkaW5nKClcbiAgICAgIH0pO1xuICB9XG5cbiAgICBwdWJsaWMgZ2VuZXJhdGVQZGZXaXRoSnNQREZWZXJzaW9uMigpOiB2b2lkIHtcbiAgICB0aGlzLm1lc3NhZ2Uub3BlbkxvYWRpbmcoXCJDYXJnYW5kb1wiLCBcIkdlbmVyYW5kbyBQREYgY29uIG51ZXZvIG3DqXRvZG9cIik7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZG9jID0gbmV3IGpzUERGKCdwJywgJ3B0JywgJ2xldHRlcicpO1xuICAgICAgY29uc3QgcGFnZVdpZHRoID0gZG9jLmludGVybmFsLnBhZ2VTaXplLmdldFdpZHRoKCk7XG4gICAgICBjb25zdCBtYXJnaW4gPSA0MDtcbiAgICAgIGxldCBjdXJyZW50WSA9IG1hcmdpbjtcblxuICAgICAgLy8gRW5jYWJlemFkbyBzaW1wbGVcbiAgICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnYm9sZCcpO1xuICAgICAgZG9jLnNldEZvbnRTaXplKDE4KTtcbiAgICAgIGNvbnN0IHRpdGxlID0gJ09SREVOIERFIFRSQUJBSk8nO1xuICAgICAgY29uc3QgdGl0bGVXaWR0aCA9IGRvYy5nZXRUZXh0V2lkdGgodGl0bGUpO1xuICAgICAgZG9jLnRleHQodGl0bGUsIChwYWdlV2lkdGggLSB0aXRsZVdpZHRoKSAvIDIsIGN1cnJlbnRZKTtcbiAgICAgIGN1cnJlbnRZICs9IDMwO1xuXG4gICAgICBkb2Muc2V0Rm9udFNpemUoMTQpO1xuICAgICAgY29uc3QgbnVtYmVyVGV4dCA9IGBOwrAgJHt0aGlzLmRhdGEuY29uc2VjdXRpdmV9YDtcbiAgICAgIGNvbnN0IG51bWJlcldpZHRoID0gZG9jLmdldFRleHRXaWR0aChudW1iZXJUZXh0KTtcbiAgICAgIGRvYy50ZXh0KG51bWJlclRleHQsIChwYWdlV2lkdGggLSBudW1iZXJXaWR0aCkgLyAyLCBjdXJyZW50WSk7XG4gICAgICBjdXJyZW50WSArPSA0MDtcblxuICAgICAgLy8gSW5mb3JtYWNpw7NuIGLDoXNpY2FcbiAgICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnbm9ybWFsJyk7XG4gICAgICBkb2Muc2V0Rm9udFNpemUoMTIpO1xuXG4gICAgICBjb25zdCBpbmZvID0gW1xuICAgICAgICBgRW1wcmVzYTogJHt0aGlzLmRhdGEubmFtZX1gLFxuICAgICAgICBgTklUOiAke3RoaXMuZGF0YS5uaXR9YCxcbiAgICAgICAgYMOBcmVhOiAke3RoaXMuZGF0YS5hcmVhfWAsXG4gICAgICAgIGBDw7NkaWdvOiAke3RoaXMuZGF0YS5jb2RlfWAsXG4gICAgICAgIGBGZWNoYTogJHt0aGlzLmRhdGEuZGF0ZX1gLFxuICAgICAgICBgT3BlcmFyaW86ICR7dGhpcy5kYXRhLnJlc3BvbnNpYmxlfWAsXG4gICAgICAgIGBQcm92ZWVkb3I6ICR7dGhpcy5kYXRhLm5hbWVQcm92aWRlcn1gLFxuICAgICAgICBgRGVzY3JpcGNpw7NuOiAke3RoaXMuZGF0YS5kZXNjcmlwdGlvbn1gXG4gICAgICBdO1xuXG4gICAgICBpbmZvLmZvckVhY2gobGluZSA9PiB7XG4gICAgICAgIGRvYy50ZXh0KGxpbmUsIG1hcmdpbiwgY3VycmVudFkpO1xuICAgICAgICBjdXJyZW50WSArPSAyMDtcbiAgICAgIH0pO1xuXG4gICAgICBkb2Mub3V0cHV0KCdkYXRhdXJsbmV3d2luZG93JywgeyBmaWxlbmFtZTogJ29yZGVuX3RyYWJham8ucGRmJyB9KTtcbiAgICAgIHRoaXMuZGlhbG9nLmNsb3NlQWxsKCk7XG4gICAgICB0aGlzLm1lc3NhZ2UuY2xvc2VMb2FkaW5nKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGdlbmVyYW5kbyBQREYgbnVldm86JywgZXJyb3IpO1xuICAgICAgdGhpcy5tZXNzYWdlLmNsb3NlTG9hZGluZygpO1xuICAgICAgdGhpcy5nZW5lcmF0ZVBkZldpdGhIdG1sMkNhbnZhcygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZW5lcmF0ZVBkZldpdGhKc1BERlZlcnNpb24zKCk6IHZvaWQge1xuICAgIHRoaXMubWVzc2FnZS5vcGVuTG9hZGluZyhcIkNhcmdhbmRvXCIsIFwiR2VuZXJhbmRvIFBERiBwcm9mZXNpb25hbFwiKTtcblxuICAgIHRoaXMud29ya09yZGVyUGRmU2VydmljZS5nZW5lcmF0ZVdvcmtPcmRlclBERih0aGlzLmRhdGEpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuZGlhbG9nLmNsb3NlQWxsKCk7XG4gICAgICAgIHRoaXMubWVzc2FnZS5jbG9zZUxvYWRpbmcoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGdlbmVyYW5kbyBQREYgcHJvZmVzaW9uYWw6JywgZXJyb3IpO1xuICAgICAgICB0aGlzLm1lc3NhZ2UuY2xvc2VMb2FkaW5nKCk7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVQZGZXaXRoSHRtbDJDYW52YXMoKTtcbiAgICAgIH0pO1xuICB9XG5cblxuXG5cbn1cbiIsIjxkaXYgaWQ9XCJ0ZW1wbGF0ZU9UXCIgI3RlbXBsYXRlT1Q+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiB3LTEwMCB3aGl0ZS1iYWNrZ3JvdW5kXCI+XG5cbiAgICAgICAgPCEtLSBFbmNhYmV6YWRvICAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlIHctMTAwIGQtZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgaGVhZGVyLXNlY3Rpb25cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIHRleHQtY29udGVudFwiIHN0eWxlPVwid2lkdGg6ODAlXCI+XG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwidGV4dC1oZWFkZXIgdGV4dC11cHBlcmNhc2Ugd3JhcC10ZXh0XCI+e3tkYXRhLm5hbWV9fTwvaDI+XG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwidGV4dC1oZWFkZXIgd3JhcC10ZXh0XCI+TklUOiB7e2RhdGEubml0fX08L2gyPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBkLWZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWV2ZW5seVwiPlxuICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LWhlYWRlciB3cmFwLXRleHRcIj57e2RhdGEuYWRkcmVzc319PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidGV4dC1oZWFkZXIgd3JhcC10ZXh0XCI+VEVMOiB7e2RhdGEudGVsZXBob25lfX08L2gzPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6MjAlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZyB3LTEwMFwiIFtzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXT1cIid1cmwoJyArIGRhdGEuaW1hZ2UgKyAnKSdcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGUgY29udGFpbmVyLWhlYWRlcnNcIj5cbiAgICAgICAgICAgIDxoMj5PcmRlbiBkZSB0cmFiYWpvPC9oMj5cbiAgICAgICAgICAgIDxoMiBjbGFzcz1cIndyYXAtdGV4dFwiPk7CsDoge3tkYXRhLmNvbnNlY3V0aXZlfX08L2gyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIEN1ZXJwbyAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlIHctMTAwIGZsZXhpYmxlLXJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1yIGNvbnRhaW5lci10ZXh0XCIgc3R5bGU9XCJ3aWR0aDoxMiVcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJmdy1ib2xkXCI+w4FyZWE6PC9oMj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1yIGNvbnRhaW5lci10ZXh0IHRleHQtY29udGVudFwiIHN0eWxlPVwid2lkdGg6MzIlXCI+XG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwid3JhcC10ZXh0XCI+e3tkYXRhLmFyZWF9fTwvaDI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1yIGNvbnRhaW5lci10ZXh0XCIgc3R5bGU9XCJ3aWR0aDoxMiVcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJmdy1ib2xkXCI+Q8OzZGlnbzo8L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLXIgY29udGFpbmVyLXRleHQgdGV4dC1jb250ZW50XCIgc3R5bGU9XCJ3aWR0aDoxNiVcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ3cmFwLXRleHRcIj57e2RhdGEuY29kZX19PC9oMj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1yIGNvbnRhaW5lci10ZXh0XCIgc3R5bGU9XCJ3aWR0aDoxMiVcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJmdy1ib2xkXCI+RmVjaGE6PC9oMj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci10ZXh0IHRleHQtY29udGVudFwiIHN0eWxlPVwid2lkdGg6MTYlXCI+XG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwid3JhcC10ZXh0XCI+e3tkYXRhLmRhdGV9fTwvaDI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlIHctMTAwIGZsZXhpYmxlLXJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1yIGNvbnRhaW5lci10ZXh0XCIgc3R5bGU9XCJ3aWR0aDoxMiVcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJmdy1ib2xkXCI+T3BlcmFyaW86PC9oMj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1yIGNvbnRhaW5lci10ZXh0IHRleHQtY29udGVudFwiIHN0eWxlPVwid2lkdGg6MzIlXCI+XG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwid3JhcC10ZXh0XCI+e3tkYXRhLnJlc3BvbnNpYmxlfX08L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLXIgY29udGFpbmVyLXRleHRcIiBzdHlsZT1cIndpZHRoOjEyJVwiPlxuICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cImZ3LWJvbGRcIj5PZMOzbWV0cm86PC9oMj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1yIGNvbnRhaW5lci10ZXh0IHRleHQtY29udGVudFwiIHN0eWxlPVwid2lkdGg6MTYlXCI+XG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwid3JhcC10ZXh0XCI+e3tkYXRhLm9kb21ldGVyfX08L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1yIGNvbnRhaW5lci10ZXh0XCIgc3R5bGU9XCJ3aWR0aDoxMiVcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJmdy1ib2xkXCI+UmVmZXJlbmNpYSBGYWN0dXJhOjwvaDI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItdGV4dCB0ZXh0LWNvbnRlbnRcIiBzdHlsZT1cIndpZHRoOjE2JVwiPlxuICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cIndyYXAtdGV4dFwiPnt7ZGF0YS5pbnZvaWNlUmVmZXJlbmNlfX08L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZSBjb250YWluZXItaGVhZGVyc1wiPlxuICAgICAgICAgICAgPGgyPkRhdG9zIGRlbCBwcm92ZWVkb3I8L2gyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGUgZmxleGlibGUtcm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLXIgY29udGFpbmVyLXRleHRcIiBzdHlsZT1cIndpZHRoOjE1JVwiPlxuICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cImZ3LWJvbGRcIj5Ob21icmU6PC9oMj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1yIGNvbnRhaW5lci10ZXh0IHRleHQtY29udGVudFwiIHN0eWxlPVwid2lkdGg6MzUlXCI+XG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwid3JhcC10ZXh0XCI+e3tkYXRhLm5hbWVQcm92aWRlcn19PC9oMj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1yIGNvbnRhaW5lci10ZXh0XCIgc3R5bGU9XCJ3aWR0aDoxNSVcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJmdy1ib2xkXCI+RGlyZWNjacOzbjo8L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLXRleHQgdGV4dC1jb250ZW50XCIgc3R5bGU9XCJ3aWR0aDozNSVcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ3cmFwLXRleHRcIj57e2RhdGEuYWRkcmVzc1Byb3ZpZGVyfX08L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZSBjb250YWluZXItaGVhZGVyc1wiPlxuICAgICAgICAgICAgPGgyPkRldGFsbGVzIGRlbCBzZXJ2aWNpbzwvaDI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZSB3LTEwMCBkZXNjcmlwdGlvbi1zZWN0aW9uXCI+XG4gICAgICAgICAgICA8aDIgY2xhc3M9XCJ3cmFwLXRleHQgdGV4dC1zdGFydFwiPnt7ZGF0YS5kZXNjcmlwdGlvbn19PC9oMj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlIHctMTAwIGZsZXhpYmxlLXJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1yIGNvbnRhaW5lci10ZXh0XCIgc3R5bGU9XCJ3aWR0aDozNSVcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJmdy1ib2xkXCI+QVVUT1JJWkFEQSBQT1I6PC9oMj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci10ZXh0IHRleHQtY29udGVudFwiIHN0eWxlPVwid2lkdGg6NjUlXCI+XG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwid3JhcC10ZXh0XCI+e3tkYXRhLmFwcHJvdmVkX2J5fX08L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gcGlzbyAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciB3LTEwMCBmb290ZXItc2VjdGlvblwiPlxuICAgICAgICAgICAgPGgyPkZhdm9yIGFkanVudGFyIGxhIG9yZGVuIGEgbGEgZmFjdHVyYSBvIGN1ZW50YSBkZSBjb2JybzwvaDI+XG4gICAgICAgICAgICA8aDIgY2xhc3M9XCJ3cmFwLXRleHRcIj57e2RhdGEubWFpbH19PC9oMj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZG93bmxvYWQtY29udGFpbmVyXCI+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiZ2VuZXJhdGVQZGZXaXRoSHRtbDJDYW52YXMoKVwiIGNvbG9yPSdwcmltYXJ5JyBtYXQtcmFpc2VkLWJ1dHRvbiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMTBweDtcIj5cbiAgICAgICAgR2VuZXJhciBQREZcbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIChjbGljayk9XCJnZW5lcmF0ZVBkZldpdGhKc1BERlZlcnNpb24yKClcIiBjb2xvcj0nd2FybicgbWF0LXJhaXNlZC1idXR0b24gc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEwcHg7XCI+XG4gICAgICAgICAgICBHZW5lcmFyIFBERiAodmVyc2lvbiAyLjApXG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiZ2VuZXJhdGVQZGZXaXRoSnNQREZWZXJzaW9uMygpXCIgY29sb3I9J2FjY2VudCcgbWF0LXJhaXNlZC1idXR0b24+XG4gICAgICAgIDxtYXQtaWNvbj5waWN0dXJlX2FzX3BkZjwvbWF0LWljb24+XG4gICAgICAgIEdlbmVyYXIgUERGICh2ZXJzaW9uIDMuMClcbiAgICA8L2J1dHRvbj5cblxuPC9kaXY+Il19
@@ -18,7 +18,7 @@ export class HttpService {
18
18
  }
19
19
  return data;
20
20
  }
21
- getData(url, params, withCredentials = false, responseType = HttpResponseType.JSON) {
21
+ createOptionsWithResponseType(params, withCredentials = false, responseType = HttpResponseType.JSON) {
22
22
  const options = {
23
23
  params: this.createParams(params),
24
24
  withCredentials
@@ -26,56 +26,38 @@ export class HttpService {
26
26
  if (responseType !== HttpResponseType.JSON) {
27
27
  options.responseType = responseType;
28
28
  }
29
- return this.http.get(url, options);
29
+ return options;
30
30
  }
31
- postData(url, body, params, withCredentials = false, responseType = HttpResponseType.JSON) {
32
- const options = {
33
- params: this.createParams(params),
34
- withCredentials
35
- };
36
- if (responseType !== HttpResponseType.JSON) {
37
- options.responseType = responseType;
38
- }
39
- return this.http.post(url, body, options);
31
+ getData(url, params, withCredentials = false) {
32
+ return this.http.get(url, { params: this.createParams(params), withCredentials });
40
33
  }
41
- putData(url, body, params, withCredentials = false, responseType = HttpResponseType.JSON) {
42
- const options = {
43
- params: this.createParams(params),
44
- withCredentials
45
- };
46
- if (responseType !== HttpResponseType.JSON) {
47
- options.responseType = responseType;
48
- }
49
- return this.http.put(url, body, options);
34
+ postData(url, body, params, withCredentials = false) {
35
+ return this.http.post(url, body, { params: this.createParams(params), withCredentials });
50
36
  }
51
- deleteData(url, params, withCredentials = false, responseType = HttpResponseType.JSON) {
52
- const options = {
53
- params: this.createParams(params),
54
- withCredentials
55
- };
56
- if (responseType !== HttpResponseType.JSON) {
57
- options.responseType = responseType;
58
- }
59
- return this.http.delete(url, options);
37
+ putData(url, body, params, withCredentials = false) {
38
+ return this.http.put(url, body, { params: this.createParams(params), withCredentials });
39
+ }
40
+ deleteData(url, params, withCredentials = false) {
41
+ return this.http.delete(url, { params: this.createParams(params), withCredentials });
60
42
  }
61
- getDataPromise(url, params, withCredentials = false, responseType = HttpResponseType.JSON) {
43
+ getDataPromise(url, params, withCredentials = false) {
62
44
  return new Promise((resolve, reject) => {
63
- this.getData(url, params, withCredentials, responseType).subscribe(res => resolve(res), err => reject(err));
45
+ this.getData(url, params, withCredentials).subscribe(res => resolve(res), err => reject(err));
64
46
  });
65
47
  }
66
- postDataPromise(url, body, params, withCredentials = false, responseType = HttpResponseType.JSON) {
48
+ postDataPromise(url, body, params, withCredentials = false) {
67
49
  return new Promise((resolve, reject) => {
68
- this.postData(url, body, params, withCredentials, responseType).subscribe(res => resolve(res), err => reject(err));
50
+ this.postData(url, body, params, withCredentials).subscribe(res => resolve(res), err => reject(err));
69
51
  });
70
52
  }
71
- putDataPromise(url, body, params, withCredentials = false, responseType = HttpResponseType.JSON) {
53
+ putDataPromise(url, body, params, withCredentials = false) {
72
54
  return new Promise((resolve, reject) => {
73
- this.putData(url, body, params, withCredentials, responseType).subscribe(res => resolve(res), err => reject(err));
55
+ this.putData(url, body, params, withCredentials).subscribe(res => resolve(res), err => reject(err));
74
56
  });
75
57
  }
76
- deleteDataPromise(url, params, withCredentials = false, responseType = HttpResponseType.JSON) {
58
+ deleteDataPromise(url, params, withCredentials = false) {
77
59
  return new Promise((resolve, reject) => {
78
- this.deleteData(url, params, withCredentials, responseType).subscribe(res => resolve(res), err => reject(err));
60
+ this.deleteData(url, params, withCredentials).subscribe(res => resolve(res), err => reject(err));
79
61
  });
80
62
  }
81
63
  getDataBody(url, params, withCredentials = false) {
@@ -117,10 +99,42 @@ export class HttpService {
117
99
  }, err => reject(err));
118
100
  });
119
101
  }
102
+ getDataWithResponseType(url, params, withCredentials = false, responseType = HttpResponseType.JSON) {
103
+ return this.http.get(url, this.createOptionsWithResponseType(params, withCredentials, responseType));
104
+ }
105
+ postDataWithResponseType(url, body, params, withCredentials = false, responseType = HttpResponseType.JSON) {
106
+ return this.http.post(url, body, this.createOptionsWithResponseType(params, withCredentials, responseType));
107
+ }
108
+ putDataWithResponseType(url, body, params, withCredentials = false, responseType = HttpResponseType.JSON) {
109
+ return this.http.put(url, body, this.createOptionsWithResponseType(params, withCredentials, responseType));
110
+ }
111
+ deleteDataWithResponseType(url, params, withCredentials = false, responseType = HttpResponseType.JSON) {
112
+ return this.http.delete(url, this.createOptionsWithResponseType(params, withCredentials, responseType));
113
+ }
114
+ getDataPromiseWithResponseType(url, params, withCredentials = false, responseType = HttpResponseType.JSON) {
115
+ return new Promise((resolve, reject) => {
116
+ this.getDataWithResponseType(url, params, withCredentials, responseType).subscribe(res => resolve(res), err => reject(err));
117
+ });
118
+ }
119
+ postDataPromiseWithResponseType(url, body, params, withCredentials = false, responseType = HttpResponseType.JSON) {
120
+ return new Promise((resolve, reject) => {
121
+ this.postDataWithResponseType(url, body, params, withCredentials, responseType).subscribe(res => resolve(res), err => reject(err));
122
+ });
123
+ }
124
+ putDataPromiseWithResponseType(url, body, params, withCredentials = false, responseType = HttpResponseType.JSON) {
125
+ return new Promise((resolve, reject) => {
126
+ this.putDataWithResponseType(url, body, params, withCredentials, responseType).subscribe(res => resolve(res), err => reject(err));
127
+ });
128
+ }
129
+ deleteDataPromiseWithResponseType(url, params, withCredentials = false, responseType = HttpResponseType.JSON) {
130
+ return new Promise((resolve, reject) => {
131
+ this.deleteDataWithResponseType(url, params, withCredentials, responseType).subscribe(res => resolve(res), err => reject(err));
132
+ });
133
+ }
120
134
  }
121
135
  HttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HttpService, deps: [{ token: i1.HttpClient }, { token: i2.MessageService }], target: i0.ɵɵFactoryTarget.Injectable });
122
136
  HttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HttpService });
123
137
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HttpService, decorators: [{
124
138
  type: Injectable
125
139
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.MessageService }]; } });
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3NlcnZpY2VzL2h0dHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7OztBQUd2RSxNQUFNLE9BQU8sV0FBVztJQUV0QixZQUNVLElBQWdCLEVBQ2hCLE9BQXVCO1FBRHZCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7SUFDN0IsQ0FBQztJQUVHLFlBQVksQ0FBQyxNQUFZO1FBQy9CLElBQUksSUFBSSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDNUIsSUFBSSxNQUFNLEVBQUU7WUFDVixNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUN2QixJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBVyxFQUFFLE1BQU8sRUFBRSxrQkFBMkIsS0FBSyxFQUFFLGVBQWlDLGdCQUFnQixDQUFDLElBQUk7UUFDcEgsTUFBTSxPQUFPLEdBQVE7WUFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1lBQ2pDLGVBQWU7U0FDaEIsQ0FBQztRQUVGLElBQUksWUFBWSxLQUFLLGdCQUFnQixDQUFDLElBQUksRUFBRTtZQUMxQyxPQUFPLENBQUMsWUFB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QztpQkFDN0M7WUFDSCxDQUFDLEVBQ0QsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQ25CLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUksR0FBVyxFQUFFLElBQVMsRUFBRSxNQUFPLEVBQUUsa0JBQTJCLEtBQUs7UUFDOUUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQ3hGLEdBQUcsQ0FBQyxFQUFFO2dCQUNKLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQ3BDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFNLENBQUMsQ0FBQztpQkFDM0I7cUJBQU07b0JBQ0wsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztpQkFDN0M7WUFDSCxDQUFDLEVBQ0QsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQ25CLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O3dHQXZKVSxXQUFXOzRHQUFYLFdBQVc7MkZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9tZXNzYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEh0dHBSZXNwb25zZVR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VudW0vaHR0cFJlc3BvbnNlVHlwZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBIdHRwU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgbWVzc2FnZTogTWVzc2FnZVNlcnZpY2VcbiAgKSB7IH1cblxuICBwcml2YXRlIGNyZWF0ZVBhcmFtcyhwYXJhbXM/OiBhbnkpOiBIdHRwUGFyYW1zIHtcbiAgICBsZXQgZGF0YSA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgaWYgKHBhcmFtcykge1xuICAgICAgcGFyYW1zLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIGRhdGEgPSBkYXRhLmFwcGVuZChgJHtlbGVtZW50LmlkfWAsIGAke2VsZW1lbnQudmFsdWV9YCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBnZXREYXRhKHVybDogc3RyaW5nLCBwYXJhbXM/LCB3aXRoQ3JlZGVudGlhbHM6IGJvb2xlYW4gPSBmYWxzZSwgcmVzcG9uc2VUeXBlOiBIdHRwUmVzcG9uc2VUeXBlID0gSHR0cFJlc3BvbnNlVHlwZS5KU09OKSB7XG4gICAgY29uc3Qgb3B0aW9uczogYW55ID0geyBcbiAgICAgIHBhcmFtczogdGhpcy5jcmVhdGVQYXJhbXMocGFyYW1zKSwgXG4gICAgICB3aXRoQ3JlZGVudGlhbHMgXG4gICAgfTtcbiAgICBcbiAgICBpZiAocmVzcG9uc2VUeXBlICE9PSBIdHRwUmVzcG9uc2VUeXBlLkpTT04pIHtcbiAgICAgIG9wdGlvbnMucmVzcG9uc2VUeXBlID0gcmVzcG9uc2VUeXBlO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwsIG9wdGlvbnMpO1xuICB9XG5cbiAgcG9zdERhdGEodXJsOiBzdHJpbmcsIGJvZHk6IGFueSwgcGFyYW1zPywgd2l0aENyZWRlbnRpYWxzOiBib29sZWFuID0gZmFsc2UsIHJlc3BvbnNlVHlwZTogSHR0cFJlc3BvbnNlVHlwZSA9IEh0dHBSZXNwb25zZVR5cGUuSlNPTikge1xuICAgIGNvbnN0IG9wdGlvbnM6IGFueSA9IHsgXG4gICAgICBwYXJhbXM6IHRoaXMuY3JlYXRlUGFyYW1zKHBhcmFtcyksIFxuICAgICAgd2l0aENyZWRlbnRpYWxzIFxuICAgIH07XG4gICAgXG4gICAgaWYgKHJlc3BvbnNlVHlwZSAhPT0gSHR0cFJlc3BvbnNlVHlwZS5KU09OKSB7XG4gICAgICBvcHRpb25zLnJlc3BvbnNlVHlwZSA9IHJlc3BvbnNlVHlwZTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHVybCwgYm9keSwgb3B0aW9ucyk7XG4gIH1cblxuICBwdXREYXRhKHVybDogc3RyaW5nLCBib2R5OiBhbnksIHBhcmFtcz8sIHdpdGhDcmVkZW50aWFsczogYm9vbGVhbiA9IGZhbHNlLCByZXNwb25zZVR5cGU6IEh0dHBSZXNwb25zZVR5cGUgPSBIdHRwUmVzcG9uc2VUeXBlLkpTT04pIHtcbiAgICBjb25zdCBvcHRpb25zOiBhbnkgPSB7IFxuICAgICAgcGFyYW1zOiB0aGlzLmNyZWF0ZVBhcmFtcyhwYXJhbXMpLCBcbiAgICAgIHdpdGhDcmVkZW50aWFscyBcbiAgICB9O1xuICAgIFxuICAgIGlmIChyZXNwb25zZVR5cGUgIT09IEh0dHBSZXNwb25zZVR5cGUuSlNPTikge1xuICAgICAgb3B0aW9ucy5yZXNwb25zZVR5cGUgPSByZXNwb25zZVR5cGU7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHVybCwgYm9keSwgb3B0aW9ucyk7XG4gIH1cblxuICBkZWxldGVEYXRhKHVybDogc3RyaW5nLCBwYXJhbXM/LCB3aXRoQ3JlZGVudGlhbHM6IGJvb2xlYW4gPSBmYWxzZSwgcmVzcG9uc2VUeXBlOiBIdHRwUmVzcG9uc2VUeXBlID0gSHR0cFJlc3BvbnNlVHlwZS5KU09OKSB7XG4gICAgY29uc3Qgb3B0aW9uczogYW55ID0geyBcbiAgICAgIHBhcmFtczogdGhpcy5jcmVhdGVQYXJhbXMocGFyYW1zKSwgXG4gICAgICB3aXRoQ3JlZGVudGlhbHMgXG4gICAgfTtcbiAgICBcbiAgICBpZiAocmVzcG9uc2VUeXBlICE9PSBIdHRwUmVzcG9uc2VUeXBlLkpTT04pIHtcbiAgICAgIG9wdGlvbnMucmVzcG9uc2VUeXBlID0gcmVzcG9uc2VUeXBlO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZSh1cmwsIG9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0RGF0YVByb21pc2U8VCA9IGFueT4odXJsOiBzdHJpbmcsIHBhcmFtcz8sIHdpdGhDcmVkZW50aWFsczogYm9vbGVhbiA9IGZhbHNlLCByZXNwb25zZVR5cGU6IEh0dHBSZXNwb25zZVR5cGUgPSBIdHRwUmVzcG9uc2VUeXBlLkpTT04pOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5nZXREYXRhKHVybCwgcGFyYW1zLCB3aXRoQ3JlZGVudGlhbHMsIHJlc3BvbnNlVHlwZSkuc3Vic2NyaWJlKFxuICAgICAgICByZXMgPT4gcmVzb2x2ZShyZXMgYXMgVCksXG4gICAgICAgIGVyciA9PiByZWplY3QoZXJyKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHBvc3REYXRhUHJvbWlzZTxUID0gYW55Pih1cmw6IHN0cmluZywgYm9keTogYW55LCBwYXJhbXM/LCB3aXRoQ3JlZGVudGlhbHM6IGJvb2xlYW4gPSBmYWxzZSwgcmVzcG9uc2VUeXBlOiBIdHRwUmVzcG9uc2VUeXBlID0gSHR0cFJlc3BvbnNlVHlwZS5KU09OKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMucG9zdERhdGEodXJsLCBib2R5LCBwYXJhbXMsIHdpdGhDcmVkZW50aWFscywgcmVzcG9uc2VUeXBlKS5zdWJzY3JpYmUoXG4gICAgICAgIHJlcyA9PiByZXNvbHZlKHJlcyBhcyBUKSxcbiAgICAgICAgZXJyID0+IHJlamVjdChlcnIpXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHV0RGF0YVByb21pc2U8VCA9IGFueT4odXJsOiBzdHJpbmcsIGJvZHk6IGFueSwgcGFyYW1zPywgd2l0aENyZWRlbnRpYWxzOiBib29sZWFuID0gZmFsc2UsIHJlc3BvbnNlVHlwZTogSHR0cFJlc3BvbnNlVHlwZSA9IEh0dHBSZXNwb25zZVR5cGUuSlNPTik6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnB1dERhdGEodXJsLCBib2R5LCBwYXJhbXMsIHdpdGhDcmVkZW50aWFscywgcmVzcG9uc2VUeXBlKS5zdWJzY3JpYmUoXG4gICAgICAgIHJlcyA9PiByZXNvbHZlKHJlcyBhcyBUKSxcbiAgICAgICAgZXJyID0+IHJlamVjdChlcnIpXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgZGVsZXRlRGF0YVByb21pc2U8VCA9IGFueT4odXJsOiBzdHJpbmcsIHBhcmFtcz8sIHdpdGhDcmVkZW50aWFsczogYm9vbGVhbiA9IGZhbHNlLCByZXNwb25zZVR5cGU6IEh0dHBSZXNwb25zZVR5cGUgPSBIdHRwUmVzcG9uc2VUeXBlLkpTT04pOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5kZWxldGVEYXRhKHVybCwgcGFyYW1zLCB3aXRoQ3JlZGVudGlhbHMsIHJlc3BvbnNlVHlwZSkuc3Vic2NyaWJlKFxuICAgICAgICByZXMgPT4gcmVzb2x2ZShyZXMgYXMgVCksXG4gICAgICAgIGVyciA9PiByZWplY3QoZXJyKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldERhdGFCb2R5PFQ+KHVybDogc3RyaW5nLCBwYXJhbXM/LCB3aXRoQ3JlZGVudGlhbHM6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmh0dHAuZ2V0KHVybCwgeyBwYXJhbXM6IHRoaXMuY3JlYXRlUGFyYW1zKHBhcmFtcyksIHdpdGhDcmVkZW50aWFscyB9KS5zdWJzY3JpYmUoXG4gICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgaWYgKHJlc1snY29kZSddID09PSAwICYmIHJlc1snYm9keSddKSB7XG4gICAgICAgICAgICByZXNvbHZlKHJlc1snYm9keSddIGFzIFQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlLkVycm9yKFwiRXJyb3JcIiwgcmVzWydtZXNzYWdlJ10pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyID0+IHJlamVjdChlcnIpXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcG9zdERhdGFCb2R5PFQ+KHVybDogc3RyaW5nLCBib2R5OiBhbnksIHBhcmFtcz8sIHdpdGhDcmVkZW50aWFsczogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuaHR0cC5wb3N0KHVybCwgYm9keSwgeyBwYXJhbXM6IHRoaXMuY3JlYXRlUGFyYW1zKHBhcmFtcyksIHdpdGhDcmVkZW50aWFscyB9KS5zdWJzY3JpYmUoXG4gICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgaWYgKHJlc1snY29kZSddID09PSAwICYmIHJlc1snYm9keSddKSB7XG4gICAgICAgICAgICByZXNvbHZlKHJlc1snYm9keSddIGFzIFQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlLkVycm9yKFwiRXJyb3JcIiwgcmVzWydtZXNzYWdlJ10pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyID0+IHJlamVjdChlcnIpXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHV0RGF0YUJvZHk8VD4odXJsOiBzdHJpbmcsIGJvZHk6IGFueSwgcGFyYW1zPywgd2l0aENyZWRlbnRpYWxzOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5odHRwLnB1dCh1cmwsIGJvZHksIHsgcGFyYW1zOiB0aGlzLmNyZWF0ZVBhcmFtcyhwYXJhbXMpLCB3aXRoQ3JlZGVudGlhbHMgfSkuc3Vic2NyaWJlKFxuICAgICAgICByZXMgPT4ge1xuICAgICAgICAgIGlmIChyZXNbJ2NvZGUnXSA9PT0gMCAmJiByZXNbJ2JvZHknXSkge1xuICAgICAgICAgICAgcmVzb2x2ZShyZXNbJ2JvZHknXSBhcyBUKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZS5FcnJvcihcIkVycm9yXCIsIHJlc1snbWVzc2FnZSddKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVyciA9PiByZWplY3QoZXJyKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxufSJdfQ==
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3NlcnZpY2VzL2h0dHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7OztBQUd2RSxNQUFNLE9BQU8sV0FBVztJQUV0QixZQUNVLElBQWdCLEVBQ2hCLE9BQXVCO1FBRHZCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7SUFDN0IsQ0FBQztJQUVHLFlBQVksQ0FBQyxNQUFZO1FBQy9CLElBQUksSUFBSSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDNUIsSUFBSSxNQUFNLEVBQUU7WUFDVixNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUN2QixJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyw2QkFBNkIsQ0FBQyxNQUFPLEVBQUUsa0JBQTJCLEtBQUssRUFBRSxlQUFpQyxnQkFBZ0IsQ0FBQyxJQUFJO1FBQ3JJLE1BQU0sT0FBTyxHQUFRO1lBQ25CLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztZQUNqQyxlQUFlO1NBQ2hCLENBQUM7UUFFRixJQUFJLFlBQVksS0FBSyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7WUFDMUMsT0FBTyxDQUFDLFlBQVksR0FBRyxZ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QztJQUVELDhCQUE4QixDQUFVLEdBQVcsRUFBRSxJQUFTLEVBQUUsTUFBTyxFQUFFLGtCQUEyQixLQUFLLEVBQUUsZUFBaUMsZ0JBQWdCLENBQUMsSUFBSTtRQUMvSixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsWUFBWSxDQUFDLENBQUMsU0FBUyxDQUN0RixHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFRLENBQUMsRUFDeEIsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQ25CLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxpQ0FBaUMsQ0FBVSxHQUFXLEVBQUUsTUFBTyxFQUFFLGtCQUEyQixLQUFLLEVBQUUsZUFBaUMsZ0JBQWdCLENBQUMsSUFBSTtRQUN2SixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQ25GLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQVEsQ0FBQyxFQUN4QixHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FDbkIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7d0dBcExVLFdBQVc7NEdBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuL21lc3NhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSHR0cFJlc3BvbnNlVHlwZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZW51bS9odHRwUmVzcG9uc2VUeXBlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEh0dHBTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBtZXNzYWdlOiBNZXNzYWdlU2VydmljZVxuICApIHsgfVxuXG4gIHByaXZhdGUgY3JlYXRlUGFyYW1zKHBhcmFtcz86IGFueSk6IEh0dHBQYXJhbXMge1xuICAgIGxldCBkYXRhID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBpZiAocGFyYW1zKSB7XG4gICAgICBwYXJhbXMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgZGF0YSA9IGRhdGEuYXBwZW5kKGAke2VsZW1lbnQuaWR9YCwgYCR7ZWxlbWVudC52YWx1ZX1gKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT3B0aW9uc1dpdGhSZXNwb25zZVR5cGUocGFyYW1zPywgd2l0aENyZWRlbnRpYWxzOiBib29sZWFuID0gZmFsc2UsIHJlc3BvbnNlVHlwZTogSHR0cFJlc3BvbnNlVHlwZSA9IEh0dHBSZXNwb25zZVR5cGUuSlNPTikge1xuICAgIGNvbnN0IG9wdGlvbnM6IGFueSA9IHsgXG4gICAgICBwYXJhbXM6IHRoaXMuY3JlYXRlUGFyYW1zKHBhcmFtcyksIFxuICAgICAgd2l0aENyZWRlbnRpYWxzIFxuICAgIH07XG4gICAgXG4gICAgaWYgKHJlc3BvbnNlVHlwZSAhPT0gSHR0cFJlc3BvbnNlVHlwZS5KU09OKSB7XG4gICAgICBvcHRpb25zLnJlc3BvbnNlVHlwZSA9IHJlc3BvbnNlVHlwZTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH1cblxuICBnZXREYXRhKHVybDogc3RyaW5nLCBwYXJhbXM/LCB3aXRoQ3JlZGVudGlhbHM6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwgeyBwYXJhbXM6IHRoaXMuY3JlYXRlUGFyYW1zKHBhcmFtcyksIHdpdGhDcmVkZW50aWFscyB9KTtcbiAgfVxuXG4gIHBvc3REYXRhKHVybDogc3RyaW5nLCBib2R5OiBhbnksIHBhcmFtcz8sIHdpdGhDcmVkZW50aWFsczogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHVybCwgYm9keSwgeyBwYXJhbXM6IHRoaXMuY3JlYXRlUGFyYW1zKHBhcmFtcyksIHdpdGhDcmVkZW50aWFscyB9KTtcbiAgfVxuXG4gIHB1dERhdGEodXJsOiBzdHJpbmcsIGJvZHk6IGFueSwgcGFyYW1zPywgd2l0aENyZWRlbnRpYWxzOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh1cmwsIGJvZHksIHsgcGFyYW1zOiB0aGlzLmNyZWF0ZVBhcmFtcyhwYXJhbXMpLCB3aXRoQ3JlZGVudGlhbHMgfSk7XG4gIH1cblxuICBkZWxldGVEYXRhKHVybDogc3RyaW5nLCBwYXJhbXM/LCB3aXRoQ3JlZGVudGlhbHM6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKHVybCwgeyBwYXJhbXM6IHRoaXMuY3JlYXRlUGFyYW1zKHBhcmFtcyksIHdpdGhDcmVkZW50aWFscyB9KTtcbiAgfVxuXG4gIGdldERhdGFQcm9taXNlKHVybDogc3RyaW5nLCBwYXJhbXM/LCB3aXRoQ3JlZGVudGlhbHM6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmdldERhdGEodXJsLCBwYXJhbXMsIHdpdGhDcmVkZW50aWFscykuc3Vic2NyaWJlKFxuICAgICAgICByZXMgPT4gcmVzb2x2ZShyZXMpLFxuICAgICAgICBlcnIgPT4gcmVqZWN0KGVycilcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwb3N0RGF0YVByb21pc2UodXJsOiBzdHJpbmcsIGJvZHk6IGFueSwgcGFyYW1zPywgd2l0aENyZWRlbnRpYWxzOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5wb3N0RGF0YSh1cmwsIGJvZHksIHBhcmFtcywgd2l0aENyZWRlbnRpYWxzKS5zdWJzY3JpYmUoXG4gICAgICAgIHJlcyA9PiByZXNvbHZlKHJlcyksXG4gICAgICAgIGVyciA9PiByZWplY3QoZXJyKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1dERhdGFQcm9taXNlKHVybDogc3RyaW5nLCBib2R5OiBhbnksIHBhcmFtcz8sIHdpdGhDcmVkZW50aWFsczogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMucHV0RGF0YSh1cmwsIGJvZHksIHBhcmFtcywgd2l0aENyZWRlbnRpYWxzKS5zdWJzY3JpYmUoXG4gICAgICAgIHJlcyA9PiByZXNvbHZlKHJlcyksXG4gICAgICAgIGVyciA9PiByZWplY3QoZXJyKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIGRlbGV0ZURhdGFQcm9taXNlKHVybDogc3RyaW5nLCBwYXJhbXM/LCB3aXRoQ3JlZGVudGlhbHM6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmRlbGV0ZURhdGEodXJsLCBwYXJhbXMsIHdpdGhDcmVkZW50aWFscykuc3Vic2NyaWJlKFxuICAgICAgICByZXMgPT4gcmVzb2x2ZShyZXMpLFxuICAgICAgICBlcnIgPT4gcmVqZWN0KGVycilcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBnZXREYXRhQm9keTxUPih1cmw6IHN0cmluZywgcGFyYW1zPywgd2l0aENyZWRlbnRpYWxzOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5odHRwLmdldCh1cmwsIHsgcGFyYW1zOiB0aGlzLmNyZWF0ZVBhcmFtcyhwYXJhbXMpLCB3aXRoQ3JlZGVudGlhbHMgfSkuc3Vic2NyaWJlKFxuICAgICAgICByZXMgPT4ge1xuICAgICAgICAgIGlmIChyZXNbJ2NvZGUnXSA9PT0gMCAmJiByZXNbJ2JvZHknXSkge1xuICAgICAgICAgICAgcmVzb2x2ZShyZXNbJ2JvZHknXSBhcyBUKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZS5FcnJvcihcIkVycm9yXCIsIHJlc1snbWVzc2FnZSddKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVyciA9PiByZWplY3QoZXJyKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHBvc3REYXRhQm9keTxUPih1cmw6IHN0cmluZywgYm9keTogYW55LCBwYXJhbXM/LCB3aXRoQ3JlZGVudGlhbHM6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmh0dHAucG9zdCh1cmwsIGJvZHksIHsgcGFyYW1zOiB0aGlzLmNyZWF0ZVBhcmFtcyhwYXJhbXMpLCB3aXRoQ3JlZGVudGlhbHMgfSkuc3Vic2NyaWJlKFxuICAgICAgICByZXMgPT4ge1xuICAgICAgICAgIGlmIChyZXNbJ2NvZGUnXSA9PT0gMCAmJiByZXNbJ2JvZHknXSkge1xuICAgICAgICAgICAgcmVzb2x2ZShyZXNbJ2JvZHknXSBhcyBUKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZS5FcnJvcihcIkVycm9yXCIsIHJlc1snbWVzc2FnZSddKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVyciA9PiByZWplY3QoZXJyKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1dERhdGFCb2R5PFQ+KHVybDogc3RyaW5nLCBib2R5OiBhbnksIHBhcmFtcz8sIHdpdGhDcmVkZW50aWFsczogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuaHR0cC5wdXQodXJsLCBib2R5LCB7IHBhcmFtczogdGhpcy5jcmVhdGVQYXJhbXMocGFyYW1zKSwgd2l0aENyZWRlbnRpYWxzIH0pLnN1YnNjcmliZShcbiAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICBpZiAocmVzWydjb2RlJ10gPT09IDAgJiYgcmVzWydib2R5J10pIHtcbiAgICAgICAgICAgIHJlc29sdmUocmVzWydib2R5J10gYXMgVCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2UuRXJyb3IoXCJFcnJvclwiLCByZXNbJ21lc3NhZ2UnXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnIgPT4gcmVqZWN0KGVycilcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBnZXREYXRhV2l0aFJlc3BvbnNlVHlwZSh1cmw6IHN0cmluZywgcGFyYW1zPywgd2l0aENyZWRlbnRpYWxzOiBib29sZWFuID0gZmFsc2UsIHJlc3BvbnNlVHlwZTogSHR0cFJlc3BvbnNlVHlwZSA9IEh0dHBSZXNwb25zZVR5cGUuSlNPTikge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwgdGhpcy5jcmVhdGVPcHRpb25zV2l0aFJlc3BvbnNlVHlwZShwYXJhbXMsIHdpdGhDcmVkZW50aWFscywgcmVzcG9uc2VUeXBlKSk7XG4gIH1cblxuICBwb3N0RGF0YVdpdGhSZXNwb25zZVR5cGUodXJsOiBzdHJpbmcsIGJvZHk6IGFueSwgcGFyYW1zPywgd2l0aENyZWRlbnRpYWxzOiBib29sZWFuID0gZmFsc2UsIHJlc3BvbnNlVHlwZTogSHR0cFJlc3BvbnNlVHlwZSA9IEh0dHBSZXNwb25zZVR5cGUuSlNPTikge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh1cmwsIGJvZHksIHRoaXMuY3JlYXRlT3B0aW9uc1dpdGhSZXNwb25zZVR5cGUocGFyYW1zLCB3aXRoQ3JlZGVudGlhbHMsIHJlc3BvbnNlVHlwZSkpO1xuICB9XG5cbiAgcHV0RGF0YVdpdGhSZXNwb25zZVR5cGUodXJsOiBzdHJpbmcsIGJvZHk6IGFueSwgcGFyYW1zPywgd2l0aENyZWRlbnRpYWxzOiBib29sZWFuID0gZmFsc2UsIHJlc3BvbnNlVHlwZTogSHR0cFJlc3BvbnNlVHlwZSA9IEh0dHBSZXNwb25zZVR5cGUuSlNPTikge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHVybCwgYm9keSwgdGhpcy5jcmVhdGVPcHRpb25zV2l0aFJlc3BvbnNlVHlwZShwYXJhbXMsIHdpdGhDcmVkZW50aWFscywgcmVzcG9uc2VUeXBlKSk7XG4gIH1cblxuICBkZWxldGVEYXRhV2l0aFJlc3BvbnNlVHlwZSh1cmw6IHN0cmluZywgcGFyYW1zPywgd2l0aENyZWRlbnRpYWxzOiBib29sZWFuID0gZmFsc2UsIHJlc3BvbnNlVHlwZTogSHR0cFJlc3BvbnNlVHlwZSA9IEh0dHBSZXNwb25zZVR5cGUuSlNPTikge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKHVybCwgdGhpcy5jcmVhdGVPcHRpb25zV2l0aFJlc3BvbnNlVHlwZShwYXJhbXMsIHdpdGhDcmVkZW50aWFscywgcmVzcG9uc2VUeXBlKSk7XG4gIH1cblxuICBnZXREYXRhUHJvbWlzZVdpdGhSZXNwb25zZVR5cGU8VCA9IGFueT4odXJsOiBzdHJpbmcsIHBhcmFtcz8sIHdpdGhDcmVkZW50aWFsczogYm9vbGVhbiA9IGZhbHNlLCByZXNwb25zZVR5cGU6IEh0dHBSZXNwb25zZVR5cGUgPSBIdHRwUmVzcG9uc2VUeXBlLkpTT04pOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5nZXREYXRhV2l0aFJlc3BvbnNlVHlwZSh1cmwsIHBhcmFtcywgd2l0aENyZWRlbnRpYWxzLCByZXNwb25zZVR5cGUpLnN1YnNjcmliZShcbiAgICAgICAgcmVzID0+IHJlc29sdmUocmVzIGFzIFQpLFxuICAgICAgICBlcnIgPT4gcmVqZWN0KGVycilcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwb3N0RGF0YVByb21pc2VXaXRoUmVzcG9uc2VUeXBlPFQgPSBhbnk+KHVybDogc3RyaW5nLCBib2R5OiBhbnksIHBhcmFtcz8sIHdpdGhDcmVkZW50aWFsczogYm9vbGVhbiA9IGZhbHNlLCByZXNwb25zZVR5cGU6IEh0dHBSZXNwb25zZVR5cGUgPSBIdHRwUmVzcG9uc2VUeXBlLkpTT04pOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5wb3N0RGF0YVdpdGhSZXNwb25zZVR5cGUodXJsLCBib2R5LCBwYXJhbXMsIHdpdGhDcmVkZW50aWFscywgcmVzcG9uc2VUeXBlKS5zdWJzY3JpYmUoXG4gICAgICAgIHJlcyA9PiByZXNvbHZlKHJlcyBhcyBUKSxcbiAgICAgICAgZXJyID0+IHJlamVjdChlcnIpXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHV0RGF0YVByb21pc2VXaXRoUmVzcG9uc2VUeXBlPFQgPSBhbnk+KHVybDogc3RyaW5nLCBib2R5OiBhbnksIHBhcmFtcz8sIHdpdGhDcmVkZW50aWFsczogYm9vbGVhbiA9IGZhbHNlLCByZXNwb25zZVR5cGU6IEh0dHBSZXNwb25zZVR5cGUgPSBIdHRwUmVzcG9uc2VUeXBlLkpTT04pOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5wdXREYXRhV2l0aFJlc3BvbnNlVHlwZSh1cmwsIGJvZHksIHBhcmFtcywgd2l0aENyZWRlbnRpYWxzLCByZXNwb25zZVR5cGUpLnN1YnNjcmliZShcbiAgICAgICAgcmVzID0+IHJlc29sdmUocmVzIGFzIFQpLFxuICAgICAgICBlcnIgPT4gcmVqZWN0KGVycilcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBkZWxldGVEYXRhUHJvbWlzZVdpdGhSZXNwb25zZVR5cGU8VCA9IGFueT4odXJsOiBzdHJpbmcsIHBhcmFtcz8sIHdpdGhDcmVkZW50aWFsczogYm9vbGVhbiA9IGZhbHNlLCByZXNwb25zZVR5cGU6IEh0dHBSZXNwb25zZVR5cGUgPSBIdHRwUmVzcG9uc2VUeXBlLkpTT04pOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5kZWxldGVEYXRhV2l0aFJlc3BvbnNlVHlwZSh1cmwsIHBhcmFtcywgd2l0aENyZWRlbnRpYWxzLCByZXNwb25zZVR5cGUpLnN1YnNjcmliZShcbiAgICAgICAgcmVzID0+IHJlc29sdmUocmVzIGFzIFQpLFxuICAgICAgICBlcnIgPT4gcmVqZWN0KGVycilcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbn0iXX0=