brainloper-ui 18.0.1 → 20.0.0
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.
- package/fesm2022/brainloper-ui.mjs +124 -115
- package/fesm2022/brainloper-ui.mjs.map +1 -1
- package/index.d.ts +896 -5
- package/package.json +16 -18
- package/esm2022/brainloper-ui.mjs +0 -5
- package/esm2022/public_api.mjs +0 -58
- package/esm2022/src/app/modules/brainloper-ui/brainloper-ui.module.mjs +0 -303
- package/esm2022/src/app/modules/brainloper-ui/components/bread-crumb/bread-crumb.component.mjs +0 -30
- package/esm2022/src/app/modules/brainloper-ui/components/buttons/button-icon/button-icon.component.mjs +0 -23
- package/esm2022/src/app/modules/brainloper-ui/components/buttons/button-label/button-label.component.mjs +0 -83
- package/esm2022/src/app/modules/brainloper-ui/components/carousel/carousel.component.mjs +0 -42
- package/esm2022/src/app/modules/brainloper-ui/components/combos/combos.component.mjs +0 -183
- package/esm2022/src/app/modules/brainloper-ui/components/data-table/data-table.component.mjs +0 -747
- package/esm2022/src/app/modules/brainloper-ui/components/data-table/table-modal/table-modal.component.mjs +0 -120
- package/esm2022/src/app/modules/brainloper-ui/components/file-input/file-input.component.mjs +0 -205
- package/esm2022/src/app/modules/brainloper-ui/components/file-input/imagenes/doc.mjs +0 -2
- package/esm2022/src/app/modules/brainloper-ui/components/file-input/imagenes/fondoTransparente.mjs +0 -2
- package/esm2022/src/app/modules/brainloper-ui/components/file-input/imagenes/pdf.mjs +0 -2
- package/esm2022/src/app/modules/brainloper-ui/components/filters/filters.component.mjs +0 -227
- package/esm2022/src/app/modules/brainloper-ui/components/report/template-fuel/template-fuel.component.mjs +0 -89
- package/esm2022/src/app/modules/brainloper-ui/components/report/template-ot/template-ot.component.mjs +0 -86
- package/esm2022/src/app/modules/brainloper-ui/components/select-filter/select-filter.component.mjs +0 -117
- package/esm2022/src/app/modules/directives/carousel-item.directive.mjs +0 -20
- package/esm2022/src/app/modules/interfaces/buttons/button-icon.mjs +0 -2
- package/esm2022/src/app/modules/interfaces/buttons/button-lavel-edit.mjs +0 -2
- package/esm2022/src/app/modules/interfaces/combos/combos-configuration.mjs +0 -2
- package/esm2022/src/app/modules/interfaces/data-table/params.mjs +0 -2
- package/esm2022/src/app/modules/interfaces/data-table/rules.mjs +0 -2
- package/esm2022/src/app/modules/interfaces/data-table/table-columns.mjs +0 -2
- package/esm2022/src/app/modules/interfaces/data-table/table-configuration.mjs +0 -2
- package/esm2022/src/app/modules/interfaces/enum/enumActions.mjs +0 -8
- package/esm2022/src/app/modules/interfaces/enum/enumRules.mjs +0 -8
- package/esm2022/src/app/modules/interfaces/enum/httpResponseType.mjs +0 -8
- package/esm2022/src/app/modules/interfaces/file-forms-service/file-forms-params.mjs +0 -2
- package/esm2022/src/app/modules/interfaces/file-forms-service/file-input-params.mjs +0 -2
- package/esm2022/src/app/modules/interfaces/filters/header-filters.mjs +0 -2
- package/esm2022/src/app/modules/interfaces/menu-break-crumb/menu-break-crumb.mjs +0 -6
- package/esm2022/src/app/modules/interfaces/report/template-pdf-base.mjs +0 -2
- package/esm2022/src/app/modules/interfaces/report/template-pdf-ot.mjs +0 -2
- package/esm2022/src/app/modules/interfaces/report/template-pdf-purchase-order.mjs +0 -2
- package/esm2022/src/app/modules/interfaces/report/template-pfd-fo.mjs +0 -2
- package/esm2022/src/app/modules/services/crypto.service.mjs +0 -38
- package/esm2022/src/app/modules/services/export-data.service.mjs +0 -169
- package/esm2022/src/app/modules/services/file-forms.service.mjs +0 -24
- package/esm2022/src/app/modules/services/fuel-order-pdf.service.mjs +0 -346
- package/esm2022/src/app/modules/services/functions.service.mjs +0 -75
- package/esm2022/src/app/modules/services/generate-pdf.service.mjs +0 -93
- package/esm2022/src/app/modules/services/http.service.mjs +0 -142
- package/esm2022/src/app/modules/services/loading/loading.component.mjs +0 -30
- package/esm2022/src/app/modules/services/local-storage.service.mjs +0 -115
- package/esm2022/src/app/modules/services/message.service.mjs +0 -202
- package/esm2022/src/app/modules/services/purchase-order-pdf.service.mjs +0 -179
- package/esm2022/src/app/modules/services/screen-size-util.mjs +0 -6
- package/esm2022/src/app/modules/services/session.service.mjs +0 -43
- package/esm2022/src/app/modules/services/work-order-pdf.service.mjs +0 -363
- package/public_api.d.ts +0 -57
- package/src/app/modules/brainloper-ui/brainloper-ui.module.d.ts +0 -59
- package/src/app/modules/brainloper-ui/components/bread-crumb/bread-crumb.component.d.ts +0 -13
- package/src/app/modules/brainloper-ui/components/buttons/button-icon/button-icon.component.d.ts +0 -10
- package/src/app/modules/brainloper-ui/components/buttons/button-label/button-label.component.d.ts +0 -24
- package/src/app/modules/brainloper-ui/components/carousel/carousel.component.d.ts +0 -16
- package/src/app/modules/brainloper-ui/components/combos/combos.component.d.ts +0 -46
- package/src/app/modules/brainloper-ui/components/data-table/data-table.component.d.ts +0 -101
- package/src/app/modules/brainloper-ui/components/data-table/table-modal/table-modal.component.d.ts +0 -20
- package/src/app/modules/brainloper-ui/components/file-input/file-input.component.d.ts +0 -43
- package/src/app/modules/brainloper-ui/components/file-input/imagenes/doc.d.ts +0 -2
- package/src/app/modules/brainloper-ui/components/file-input/imagenes/fondoTransparente.d.ts +0 -2
- package/src/app/modules/brainloper-ui/components/file-input/imagenes/pdf.d.ts +0 -2
- package/src/app/modules/brainloper-ui/components/filters/filters.component.d.ts +0 -30
- package/src/app/modules/brainloper-ui/components/report/template-fuel/template-fuel.component.d.ts +0 -39
- package/src/app/modules/brainloper-ui/components/report/template-ot/template-ot.component.d.ts +0 -38
- package/src/app/modules/brainloper-ui/components/select-filter/select-filter.component.d.ts +0 -26
- package/src/app/modules/directives/carousel-item.directive.d.ts +0 -9
- package/src/app/modules/interfaces/buttons/button-icon.d.ts +0 -9
- package/src/app/modules/interfaces/buttons/button-lavel-edit.d.ts +0 -6
- package/src/app/modules/interfaces/combos/combos-configuration.d.ts +0 -13
- package/src/app/modules/interfaces/data-table/params.d.ts +0 -7
- package/src/app/modules/interfaces/data-table/rules.d.ts +0 -8
- package/src/app/modules/interfaces/data-table/table-columns.d.ts +0 -25
- package/src/app/modules/interfaces/data-table/table-configuration.d.ts +0 -26
- package/src/app/modules/interfaces/enum/enumActions.d.ts +0 -6
- package/src/app/modules/interfaces/enum/enumRules.d.ts +0 -6
- package/src/app/modules/interfaces/enum/httpResponseType.d.ts +0 -6
- package/src/app/modules/interfaces/file-forms-service/file-forms-params.d.ts +0 -4
- package/src/app/modules/interfaces/file-forms-service/file-input-params.d.ts +0 -13
- package/src/app/modules/interfaces/filters/header-filters.d.ts +0 -13
- package/src/app/modules/interfaces/menu-break-crumb/menu-break-crumb.d.ts +0 -10
- package/src/app/modules/interfaces/report/template-pdf-base.d.ts +0 -17
- package/src/app/modules/interfaces/report/template-pdf-ot.d.ts +0 -6
- package/src/app/modules/interfaces/report/template-pdf-purchase-order.d.ts +0 -17
- package/src/app/modules/interfaces/report/template-pfd-fo.d.ts +0 -7
- package/src/app/modules/services/crypto.service.d.ts +0 -10
- package/src/app/modules/services/export-data.service.d.ts +0 -18
- package/src/app/modules/services/file-forms.service.d.ts +0 -7
- package/src/app/modules/services/fuel-order-pdf.service.d.ts +0 -25
- package/src/app/modules/services/functions.service.d.ts +0 -15
- package/src/app/modules/services/generate-pdf.service.d.ts +0 -22
- package/src/app/modules/services/http.service.d.ts +0 -32
- package/src/app/modules/services/loading/loading.component.d.ts +0 -15
- package/src/app/modules/services/local-storage.service.d.ts +0 -49
- package/src/app/modules/services/message.service.d.ts +0 -23
- package/src/app/modules/services/purchase-order-pdf.service.d.ts +0 -21
- package/src/app/modules/services/screen-size-util.d.ts +0 -3
- package/src/app/modules/services/session.service.d.ts +0 -14
- package/src/app/modules/services/work-order-pdf.service.d.ts +0 -33
|
@@ -1,346 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { jsPDF } from 'jspdf';
|
|
3
|
-
import 'jspdf-autotable';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
// export interface TemplatePdfFo {
|
|
6
|
-
// name: string;
|
|
7
|
-
// nit: string;
|
|
8
|
-
// address: string;
|
|
9
|
-
// telephone: string;
|
|
10
|
-
// mail: string;
|
|
11
|
-
// image?: string;
|
|
12
|
-
// code: string;
|
|
13
|
-
// date: string;
|
|
14
|
-
// responsible: string;
|
|
15
|
-
// id_place: string;
|
|
16
|
-
// approved_by: string;
|
|
17
|
-
// detalle: string;
|
|
18
|
-
// description: string;
|
|
19
|
-
// consecutive: string;
|
|
20
|
-
// namePlace: string;
|
|
21
|
-
// addressPlace: string;
|
|
22
|
-
// area: string;
|
|
23
|
-
// odometer: string;
|
|
24
|
-
// invoiceReference?: string;
|
|
25
|
-
// }
|
|
26
|
-
export class FuelOrderPdfService {
|
|
27
|
-
constructor() { }
|
|
28
|
-
generateFuelOrderProfesionalPDF(data, options) {
|
|
29
|
-
return new Promise((resolve, reject) => {
|
|
30
|
-
try {
|
|
31
|
-
const opts = {
|
|
32
|
-
format: 'letter',
|
|
33
|
-
download: true,
|
|
34
|
-
filename: 'orden_combustible.pdf',
|
|
35
|
-
...options
|
|
36
|
-
};
|
|
37
|
-
const doc = new jsPDF('p', 'pt', opts.format);
|
|
38
|
-
const pageWidth = doc.internal.pageSize.getWidth();
|
|
39
|
-
const pageHeight = doc.internal.pageSize.getHeight();
|
|
40
|
-
const margin = 40;
|
|
41
|
-
let currentY = margin;
|
|
42
|
-
// Colores corporativos
|
|
43
|
-
const primaryColor = [41, 128, 185]; // Azul
|
|
44
|
-
const secondaryColor = [52, 73, 94]; // Gris oscuro
|
|
45
|
-
const accentColor = [230, 126, 34]; // Naranja
|
|
46
|
-
// === ENCABEZADO PRINCIPAL ===
|
|
47
|
-
this.addHeader(doc, data, margin, currentY, pageWidth, primaryColor);
|
|
48
|
-
currentY = 140;
|
|
49
|
-
// === TÍTULO DEL DOCUMENTO ===
|
|
50
|
-
currentY = this.addDocumentTitle(doc, data, currentY, pageWidth, accentColor);
|
|
51
|
-
currentY += 25;
|
|
52
|
-
// === INFORMACIÓN PRINCIPAL ===
|
|
53
|
-
currentY = this.addMainInfo(doc, data, currentY, margin, pageWidth);
|
|
54
|
-
currentY += 20;
|
|
55
|
-
// === DATOS DEL PROVEEDOR ===
|
|
56
|
-
currentY = this.addProviderInfo(doc, data, currentY, margin, pageWidth, secondaryColor);
|
|
57
|
-
currentY += 20;
|
|
58
|
-
// === DETALLES DEL SERVICIO ===
|
|
59
|
-
currentY = this.addServiceDetails(doc, data, currentY, margin, pageWidth, secondaryColor);
|
|
60
|
-
currentY += 20;
|
|
61
|
-
// === AUTORIZACIÓN ===
|
|
62
|
-
currentY = this.addAuthorization(doc, data, currentY, margin, pageWidth);
|
|
63
|
-
currentY += 30;
|
|
64
|
-
// === PIE DE PÁGINA ===
|
|
65
|
-
this.addFooter(doc, data, pageHeight - 80, pageWidth, primaryColor);
|
|
66
|
-
// === GENERAR/DESCARGAR ===
|
|
67
|
-
if (opts.download) {
|
|
68
|
-
doc.output('dataurlnewwindow', { filename: opts.filename });
|
|
69
|
-
}
|
|
70
|
-
resolve(doc);
|
|
71
|
-
}
|
|
72
|
-
catch (error) {
|
|
73
|
-
reject(error);
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Genera PDF optimizado para impresión
|
|
79
|
-
*/
|
|
80
|
-
generateForPrint(data) {
|
|
81
|
-
return this.generateFuelOrderProfesionalPDF(data, {
|
|
82
|
-
format: 'letter',
|
|
83
|
-
download: false
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
addHeader(doc, data, margin, y, pageWidth, color) {
|
|
87
|
-
// Fondo del encabezado
|
|
88
|
-
doc.setFillColor(color[0], color[1], color[2]);
|
|
89
|
-
doc.rect(margin, y, pageWidth - (margin * 2), 80, 'F');
|
|
90
|
-
// Texto del encabezado en blanco
|
|
91
|
-
doc.setTextColor(255, 255, 255);
|
|
92
|
-
doc.setFont('helvetica', 'bold');
|
|
93
|
-
doc.setFontSize(18);
|
|
94
|
-
const companyName = data.name.toUpperCase();
|
|
95
|
-
const nameWidth = doc.getTextWidth(companyName);
|
|
96
|
-
doc.text(companyName, (pageWidth - nameWidth) / 2, y + 25);
|
|
97
|
-
doc.setFontSize(12);
|
|
98
|
-
const nitText = `NIT: ${data.nit}`;
|
|
99
|
-
const nitWidth = doc.getTextWidth(nitText);
|
|
100
|
-
doc.text(nitText, (pageWidth - nitWidth) / 2, y + 45);
|
|
101
|
-
doc.setFontSize(10);
|
|
102
|
-
const addressText = `${data.address} - TEL: ${data.telephone}`;
|
|
103
|
-
const addressWidth = doc.getTextWidth(addressText);
|
|
104
|
-
doc.text(addressText, (pageWidth - addressWidth) / 2, y + 65);
|
|
105
|
-
// Resetear color de texto
|
|
106
|
-
doc.setTextColor(0, 0, 0);
|
|
107
|
-
}
|
|
108
|
-
addDocumentTitle(doc, data, y, pageWidth, color) {
|
|
109
|
-
doc.setTextColor(color[0], color[1], color[2]);
|
|
110
|
-
doc.setFont('helvetica', 'bold');
|
|
111
|
-
doc.setFontSize(20);
|
|
112
|
-
const title = 'ORDEN DE COMBUSTIBLE';
|
|
113
|
-
const titleWidth = doc.getTextWidth(title);
|
|
114
|
-
doc.text(title, (pageWidth - titleWidth) / 2, y);
|
|
115
|
-
doc.setFontSize(16);
|
|
116
|
-
const numberText = `N° ${data.consecutive}`;
|
|
117
|
-
const numberWidth = doc.getTextWidth(numberText);
|
|
118
|
-
doc.text(numberText, (pageWidth - numberWidth) / 2, y + 25);
|
|
119
|
-
doc.setTextColor(0, 0, 0);
|
|
120
|
-
return y + 40;
|
|
121
|
-
}
|
|
122
|
-
addMainInfo(doc, data, y, margin, pageWidth) {
|
|
123
|
-
const tableData = [
|
|
124
|
-
[
|
|
125
|
-
{ content: 'Área:', styles: { fontStyle: 'bold', fillColor: [240, 240, 240] } },
|
|
126
|
-
{ content: data.area, styles: {} },
|
|
127
|
-
{ content: 'Código:', styles: { fontStyle: 'bold', fillColor: [240, 240, 240] } },
|
|
128
|
-
{ content: data.code, styles: {} },
|
|
129
|
-
{ content: 'Fecha:', styles: { fontStyle: 'bold', fillColor: [240, 240, 240] } },
|
|
130
|
-
{ content: data.date, styles: {} }
|
|
131
|
-
],
|
|
132
|
-
[
|
|
133
|
-
{ content: 'Operario:', styles: { fontStyle: 'bold', fillColor: [240, 240, 240] } },
|
|
134
|
-
{ content: data.responsible, styles: { colSpan: 3 } },
|
|
135
|
-
{ content: 'Odómetro:', styles: { fontStyle: 'bold', fillColor: [240, 240, 240] } },
|
|
136
|
-
{ content: data.odometer, styles: {} }
|
|
137
|
-
]
|
|
138
|
-
];
|
|
139
|
-
doc.autoTable({
|
|
140
|
-
startY: y,
|
|
141
|
-
body: tableData,
|
|
142
|
-
theme: 'grid',
|
|
143
|
-
styles: {
|
|
144
|
-
fontSize: 11,
|
|
145
|
-
cellPadding: 8,
|
|
146
|
-
lineColor: [200, 200, 200],
|
|
147
|
-
lineWidth: 0.5
|
|
148
|
-
},
|
|
149
|
-
columnStyles: {
|
|
150
|
-
0: { cellWidth: 70 },
|
|
151
|
-
1: { cellWidth: 100 },
|
|
152
|
-
2: { cellWidth: 70 },
|
|
153
|
-
3: { cellWidth: 80 },
|
|
154
|
-
4: { cellWidth: 70 },
|
|
155
|
-
5: { cellWidth: 80 }
|
|
156
|
-
},
|
|
157
|
-
margin: { left: margin, right: margin }
|
|
158
|
-
});
|
|
159
|
-
return doc.lastAutoTable.finalY;
|
|
160
|
-
}
|
|
161
|
-
addProviderInfo(doc, data, y, margin, pageWidth, color) {
|
|
162
|
-
// Título de sección
|
|
163
|
-
doc.setTextColor(color[0], color[1], color[2]);
|
|
164
|
-
doc.setFont('helvetica', 'bold');
|
|
165
|
-
doc.setFontSize(14);
|
|
166
|
-
const title = 'DATOS DEL PROVEEDOR';
|
|
167
|
-
const titleWidth = doc.getTextWidth(title);
|
|
168
|
-
doc.text(title, (pageWidth - titleWidth) / 2, y);
|
|
169
|
-
doc.setTextColor(0, 0, 0);
|
|
170
|
-
const tableData = [
|
|
171
|
-
[
|
|
172
|
-
{ content: 'Lugar:', styles: { fontStyle: 'bold', fillColor: [240, 240, 240] } },
|
|
173
|
-
{ content: data.namePlace, styles: {} },
|
|
174
|
-
{ content: 'Dirección:', styles: { fontStyle: 'bold', fillColor: [240, 240, 240] } },
|
|
175
|
-
{ content: data.addressPlace, styles: {} }
|
|
176
|
-
]
|
|
177
|
-
];
|
|
178
|
-
doc.autoTable({
|
|
179
|
-
startY: y + 20,
|
|
180
|
-
body: tableData,
|
|
181
|
-
theme: 'grid',
|
|
182
|
-
styles: {
|
|
183
|
-
fontSize: 11,
|
|
184
|
-
cellPadding: 8,
|
|
185
|
-
lineColor: [200, 200, 200],
|
|
186
|
-
lineWidth: 0.5
|
|
187
|
-
},
|
|
188
|
-
columnStyles: {
|
|
189
|
-
0: { cellWidth: 80 },
|
|
190
|
-
1: { cellWidth: 160 },
|
|
191
|
-
2: { cellWidth: 80 },
|
|
192
|
-
3: { cellWidth: 150 }
|
|
193
|
-
},
|
|
194
|
-
margin: { left: margin, right: margin }
|
|
195
|
-
});
|
|
196
|
-
return doc.lastAutoTable.finalY;
|
|
197
|
-
}
|
|
198
|
-
addServiceDetails(doc, data, y, margin, pageWidth, color) {
|
|
199
|
-
// Título de sección
|
|
200
|
-
doc.setTextColor(color[0], color[1], color[2]);
|
|
201
|
-
doc.setFont('helvetica', 'bold');
|
|
202
|
-
doc.setFontSize(14);
|
|
203
|
-
const title = 'DETALLES DEL SERVICIO';
|
|
204
|
-
const titleWidth = doc.getTextWidth(title);
|
|
205
|
-
doc.text(title, (pageWidth - titleWidth) / 2, y);
|
|
206
|
-
doc.setTextColor(0, 0, 0);
|
|
207
|
-
// Preparar texto para calcular altura necesaria
|
|
208
|
-
const boxY = y + 20;
|
|
209
|
-
const boxWidth = pageWidth - (margin * 2);
|
|
210
|
-
const textMargin = margin + 15;
|
|
211
|
-
const maxWidth = boxWidth - 30;
|
|
212
|
-
const lineHeight = 15;
|
|
213
|
-
const minBoxHeight = 60; // Altura mínima del contenedor
|
|
214
|
-
const padding = 40; // Padding superior e inferior
|
|
215
|
-
// Calcular líneas de texto necesarias
|
|
216
|
-
doc.setFont('helvetica', 'normal');
|
|
217
|
-
doc.setFontSize(11);
|
|
218
|
-
let totalLines = 0;
|
|
219
|
-
// Contar líneas del detalle
|
|
220
|
-
if (data.detalle && data.detalle.trim()) {
|
|
221
|
-
const detalleLines = doc.splitTextToSize(data.detalle.trim(), maxWidth);
|
|
222
|
-
totalLines += detalleLines.length;
|
|
223
|
-
}
|
|
224
|
-
// Contar líneas de la descripción (incluye etiqueta "Descripción:")
|
|
225
|
-
if (data.description && data.description.trim()) {
|
|
226
|
-
totalLines += 2; // Una línea para "Descripción:" + espacio
|
|
227
|
-
const descLines = doc.splitTextToSize(data.description.trim(), maxWidth);
|
|
228
|
-
totalLines += descLines.length;
|
|
229
|
-
}
|
|
230
|
-
// Calcular altura necesaria basada en el contenido
|
|
231
|
-
const contentHeight = Math.max(totalLines * lineHeight, 30); // Mínimo 30pt para contenido
|
|
232
|
-
const boxHeight = Math.max(minBoxHeight, contentHeight + padding);
|
|
233
|
-
// Verificar si necesitamos una nueva página
|
|
234
|
-
const pageHeight = doc.internal.pageSize.getHeight();
|
|
235
|
-
const remainingSpace = pageHeight - boxY - 100; // Dejar espacio para footer
|
|
236
|
-
let finalBoxY = boxY;
|
|
237
|
-
if (boxHeight > remainingSpace) {
|
|
238
|
-
// Añadir nueva página
|
|
239
|
-
doc.addPage();
|
|
240
|
-
finalBoxY = margin + 40; // Posición en nueva página
|
|
241
|
-
}
|
|
242
|
-
// Dibujar contenedor con altura dinámica
|
|
243
|
-
// Fondo gris claro
|
|
244
|
-
doc.setFillColor(250, 250, 250);
|
|
245
|
-
doc.rect(margin, finalBoxY, boxWidth, boxHeight, 'F');
|
|
246
|
-
// Borde
|
|
247
|
-
doc.setDrawColor(200, 200, 200);
|
|
248
|
-
doc.rect(margin, finalBoxY, boxWidth, boxHeight, 'S');
|
|
249
|
-
// Añadir contenido de texto
|
|
250
|
-
let textY = finalBoxY + 20;
|
|
251
|
-
// Añadir detalle si existe
|
|
252
|
-
if (data.detalle && data.detalle.trim()) {
|
|
253
|
-
const detalleLines = doc.splitTextToSize(data.detalle.trim(), maxWidth);
|
|
254
|
-
doc.text(detalleLines, textMargin, textY);
|
|
255
|
-
textY += detalleLines.length * lineHeight + 10; // Espacio extra después del detalle
|
|
256
|
-
}
|
|
257
|
-
// Añadir descripción si existe
|
|
258
|
-
if (data.description && data.description.trim()) {
|
|
259
|
-
doc.setFont('helvetica', 'bold');
|
|
260
|
-
doc.text('Descripción:', textMargin, textY);
|
|
261
|
-
doc.setFont('helvetica', 'normal');
|
|
262
|
-
textY += lineHeight;
|
|
263
|
-
const descLines = doc.splitTextToSize(data.description.trim(), maxWidth);
|
|
264
|
-
// Verificar si necesitamos manejar contenido muy largo
|
|
265
|
-
const remainingHeight = finalBoxY + boxHeight - textY - 20;
|
|
266
|
-
const maxLinesInSpace = Math.floor(remainingHeight / lineHeight);
|
|
267
|
-
if (descLines.length > maxLinesInSpace && maxLinesInSpace > 0) {
|
|
268
|
-
// Mostrar líneas que caben en el espacio actual
|
|
269
|
-
const currentLines = descLines.slice(0, maxLinesInSpace);
|
|
270
|
-
doc.text(currentLines, textMargin, textY);
|
|
271
|
-
// Continuar en nueva página si hay más contenido
|
|
272
|
-
if (descLines.length > maxLinesInSpace) {
|
|
273
|
-
doc.addPage();
|
|
274
|
-
textY = margin + 20;
|
|
275
|
-
const remainingLines = descLines.slice(maxLinesInSpace);
|
|
276
|
-
doc.text(remainingLines, textMargin, textY);
|
|
277
|
-
return textY + (remainingLines.length * lineHeight) + 20;
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
else {
|
|
281
|
-
doc.text(descLines, textMargin, textY);
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
// Si no hay contenido, mostrar un mensaje
|
|
285
|
-
if ((!data.detalle || !data.detalle.trim()) && (!data.description || !data.description.trim())) {
|
|
286
|
-
doc.setFont('helvetica', 'italic');
|
|
287
|
-
doc.setFontSize(10);
|
|
288
|
-
doc.setTextColor(150, 150, 150);
|
|
289
|
-
doc.text('No se han especificado detalles del servicio.', textMargin, textY);
|
|
290
|
-
doc.setTextColor(0, 0, 0);
|
|
291
|
-
doc.setFont('helvetica', 'normal');
|
|
292
|
-
doc.setFontSize(11);
|
|
293
|
-
}
|
|
294
|
-
return finalBoxY + boxHeight;
|
|
295
|
-
}
|
|
296
|
-
addAuthorization(doc, data, y, margin, pageWidth) {
|
|
297
|
-
const tableData = [
|
|
298
|
-
[
|
|
299
|
-
{ content: 'AUTORIZADA POR:', styles: { fontStyle: 'bold', fontSize: 12, fillColor: [240, 240, 240] } },
|
|
300
|
-
{ content: data.approved_by, styles: { fontSize: 12 } }
|
|
301
|
-
]
|
|
302
|
-
];
|
|
303
|
-
doc.autoTable({
|
|
304
|
-
startY: y,
|
|
305
|
-
body: tableData,
|
|
306
|
-
theme: 'grid',
|
|
307
|
-
styles: {
|
|
308
|
-
cellPadding: 12,
|
|
309
|
-
lineColor: [200, 200, 200],
|
|
310
|
-
lineWidth: 0.5
|
|
311
|
-
},
|
|
312
|
-
columnStyles: {
|
|
313
|
-
0: { cellWidth: 150 },
|
|
314
|
-
1: { cellWidth: 320 }
|
|
315
|
-
},
|
|
316
|
-
margin: { left: margin, right: margin }
|
|
317
|
-
});
|
|
318
|
-
return doc.lastAutoTable.finalY;
|
|
319
|
-
}
|
|
320
|
-
addFooter(doc, data, y, pageWidth, color) {
|
|
321
|
-
// Fondo del pie de página
|
|
322
|
-
doc.setFillColor(color[0], color[1], color[2]);
|
|
323
|
-
doc.rect(40, y, pageWidth - 80, 60, 'F');
|
|
324
|
-
// Texto en blanco
|
|
325
|
-
doc.setTextColor(255, 255, 255);
|
|
326
|
-
doc.setFont('helvetica', 'bold');
|
|
327
|
-
doc.setFontSize(12);
|
|
328
|
-
const instruction = 'Favor adjuntar la orden de venta o factura';
|
|
329
|
-
const instWidth = doc.getTextWidth(instruction);
|
|
330
|
-
doc.text(instruction, (pageWidth - instWidth) / 2, y + 25);
|
|
331
|
-
doc.setFontSize(10);
|
|
332
|
-
const emailWidth = doc.getTextWidth(data.mail);
|
|
333
|
-
doc.text(data.mail, (pageWidth - emailWidth) / 2, y + 45);
|
|
334
|
-
// Resetear color
|
|
335
|
-
doc.setTextColor(0, 0, 0);
|
|
336
|
-
}
|
|
337
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FuelOrderPdfService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
338
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FuelOrderPdfService, providedIn: 'root' });
|
|
339
|
-
}
|
|
340
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FuelOrderPdfService, decorators: [{
|
|
341
|
-
type: Injectable,
|
|
342
|
-
args: [{
|
|
343
|
-
providedIn: 'root'
|
|
344
|
-
}]
|
|
345
|
-
}], ctorParameters: () => [] });
|
|
346
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVlbC1vcmRlci1wZGYuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zZXJ2aWNlcy9mdWVsLW9yZGVyLXBkZi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM5QixPQUFPLGlCQUFpQixDQUFDOztBQUd6QixtQ0FBbUM7QUFDbkMsa0JBQWtCO0FBQ2xCLGlCQUFpQjtBQUNqQixxQkFBcUI7QUFDckIsdUJBQXVCO0FBQ3ZCLGtCQUFrQjtBQUNsQixvQkFBb0I7QUFDcEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQix5QkFBeUI7QUFDekIsc0JBQXNCO0FBQ3RCLHlCQUF5QjtBQUN6QixxQkFBcUI7QUFDckIseUJBQXlCO0FBQ3pCLHlCQUF5QjtBQUN6Qix1QkFBdUI7QUFDdkIsMEJBQTBCO0FBQzFCLGtCQUFrQjtBQUNsQixzQkFBc0I7QUFDdEIsK0JBQStCO0FBQy9CLElBQUk7QUFLSixNQUFNLE9BQU8sbUJBQW1CO0lBRTlCLGdCQUFnQixDQUFDO0lBRWpCLCtCQUErQixDQUFDLElBQW1CLEVBQUUsT0FJcEQ7UUFDQyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQztnQkFDSCxNQUFNLElBQUksR0FBRztvQkFDWCxNQUFNLEVBQUUsUUFBUTtvQkFDaEIsUUFBUSxFQUFFLElBQUk7b0JBQ2QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsR0FBRyxPQUFPO2lCQUNYLENBQUM7Z0JBRUYsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzlDLE1BQU0s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Ryw0Q0FBNEMsQ0FBQztRQUNqRSxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2hELEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFM0QsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwQixNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUUxRCxpQkFBaUI7UUFDakIsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7d0dBcFhVLG1CQUFtQjs0R0FBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBqc1BERiB9IGZyb20gJ2pzcGRmJztcbmltcG9ydCAnanNwZGYtYXV0b3RhYmxlJztcbmltcG9ydCB7IFRlbXBsYXRlUGRmRm8gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlcG9ydC90ZW1wbGF0ZS1wZmQtZm8nO1xuXG4vLyBleHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlUGRmRm8ge1xuLy8gICBuYW1lOiBzdHJpbmc7XG4vLyAgIG5pdDogc3RyaW5nO1xuLy8gICBhZGRyZXNzOiBzdHJpbmc7XG4vLyAgIHRlbGVwaG9uZTogc3RyaW5nO1xuLy8gICBtYWlsOiBzdHJpbmc7XG4vLyAgIGltYWdlPzogc3RyaW5nO1xuLy8gICBjb2RlOiBzdHJpbmc7XG4vLyAgIGRhdGU6IHN0cmluZztcbi8vICAgcmVzcG9uc2libGU6IHN0cmluZztcbi8vICAgaWRfcGxhY2U6IHN0cmluZztcbi8vICAgYXBwcm92ZWRfYnk6IHN0cmluZztcbi8vICAgZGV0YWxsZTogc3RyaW5nO1xuLy8gICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuLy8gICBjb25zZWN1dGl2ZTogc3RyaW5nO1xuLy8gICBuYW1lUGxhY2U6IHN0cmluZztcbi8vICAgYWRkcmVzc1BsYWNlOiBzdHJpbmc7XG4vLyAgIGFyZWE6IHN0cmluZztcbi8vICAgb2RvbWV0ZXI6IHN0cmluZztcbi8vICAgaW52b2ljZVJlZmVyZW5jZT86IHN0cmluZztcbi8vIH1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRnVlbE9yZGVyUGRmU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBnZW5lcmF0ZUZ1ZWxPcmRlclByb2Zlc2lvbmFsUERGKGRhdGE6IFRlbXBsYXRlUGRmRm8sIG9wdGlvbnM/OiB7XG4gICAgZm9ybWF0PzogJ2xldHRlcicgfCAnYTQnO1xuICAgIGRvd25sb2FkPzogYm9vbGVhbjtcbiAgICBmaWxlbmFtZT86IHN0cmluZztcbiAgfSk6IFByb21pc2U8anNQREY+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgb3B0cyA9IHtcbiAgICAgICAgICBmb3JtYXQ6ICdsZXR0ZXInLFxuICAgICAgICAgIGRvd25sb2FkOiB0cnVlLFxuICAgICAgICAgIGZpbGVuYW1lOiAnb3JkZW5fY29tYnVzdGlibGUucGRmJyxcbiAgICAgICAgICAuLi5vcHRpb25zXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZG9jID0gbmV3IGpzUERGKCdwJywgJ3B0Jywgb3B0cy5mb3JtYXQpO1xuICAgICAgICBjb25zdCBwYWdlV2lkdGggPSBkb2MuaW50ZXJuYWwucGFnZVNpemUuZ2V0V2lkdGgoKTtcbiAgICAgICAgY29uc3QgcGFnZUhlaWdodCA9IGRvYy5pbnRlcm5hbC5wYWdlU2l6ZS5nZXRIZWlnaHQoKTtcbiAgICAgICAgY29uc3QgbWFyZ2luID0gNDA7XG4gICAgICAgIGxldCBjdXJyZW50WSA9IG1hcmdpbjtcblxuICAgICAgICAvLyBDb2xvcmVzIGNvcnBvcmF0aXZvc1xuICAgICAgICBjb25zdCBwcmltYXJ5Q29sb3IgPSBbNDEsIDEyOCwgMTg1XTsgLy8gQXp1bFxuICAgICAgICBjb25zdCBzZWNvbmRhcnlDb2xvciA9IFs1MiwgNzMsIDk0XTsgLy8gR3JpcyBvc2N1cm9cbiAgICAgICAgY29uc3QgYWNjZW50Q29sb3IgPSBbMjMwLCAxMjYsIDM0XTsgLy8gTmFyYW5qYVxuXG4gICAgICAgIC8vID09PSBFTkNBQkVaQURPIFBSSU5DSVBBTCA9PT1cbiAgICAgICAgdGhpcy5hZGRIZWFkZXIoZG9jLCBkYXRhLCBtYXJnaW4sIGN1cnJlbnRZLCBwYWdlV2lkdGgsIHByaW1hcnlDb2xvcik7XG4gICAgICAgIGN1cnJlbnRZID0gMTQwO1xuXG4gICAgICAgIC8vID09PSBUw41UVUxPIERFTCBET0NVTUVOVE8gPT09XG4gICAgICAgIGN1cnJlbnRZID0gdGhpcy5hZGREb2N1bWVudFRpdGxlKGRvYywgZGF0YSwgY3VycmVudFksIHBhZ2VXaWR0aCwgYWNjZW50Q29sb3IpO1xuICAgICAgICBjdXJyZW50WSArPSAyNTtcblxuICAgICAgICAvLyA9PT0gSU5GT1JNQUNJw5NOIFBSSU5DSVBBTCA9PT1cbiAgICAgICAgY3VycmVudFkgPSB0aGlzLmFkZE1haW5JbmZvKGRvYywgZGF0YSwgY3VycmVudFksIG1hcmdpbiwgcGFnZVdpZHRoKTtcbiAgICAgICAgY3VycmVudFkgKz0gMjA7XG5cbiAgICAgICAgLy8gPT09IERBVE9TIERFTCBQUk9WRUVET1IgPT09XG4gICAgICAgIGN1cnJlbnRZID0gdGhpcy5hZGRQcm92aWRlckluZm8oZG9jLCBkYXRhLCBjdXJyZW50WSwgbWFyZ2luLCBwYWdlV2lkdGgsIHNlY29uZGFyeUNvbG9yKTtcbiAgICAgICAgY3VycmVudFkgKz0gMjA7XG5cbiAgICAgICAgLy8gPT09IERFVEFMTEVTIERFTCBTRVJWSUNJTyA9PT1cbiAgICAgICAgY3VycmVudFkgPSB0aGlzLmFkZFNlcnZpY2VEZXRhaWxzKGRvYywgZGF0YSwgY3VycmVudFksIG1hcmdpbiwgcGFnZVdpZHRoLCBzZWNvbmRhcnlDb2xvcik7XG4gICAgICAgIGN1cnJlbnRZICs9IDIwO1xuXG4gICAgICAgIC8vID09PSBBVVRPUklaQUNJw5NOID09PVxuICAgICAgICBjdXJyZW50WSA9IHRoaXMuYWRkQXV0aG9yaXphdGlvbihkb2MsIGRhdGEsIGN1cnJlbnRZLCBtYXJnaW4sIHBhZ2VXaWR0aCk7XG4gICAgICAgIGN1cnJlbnRZICs9IDMwO1xuXG4gICAgICAgIC8vID09PSBQSUUgREUgUMOBR0lOQSA9PT1cbiAgICAgICAgdGhpcy5hZGRGb290ZXIoZG9jLCBkYXRhLCBwYWdlSGVpZ2h0IC0gODAsIHBhZ2VXaWR0aCwgcHJpbWFyeUNvbG9yKTtcblxuICAgICAgICAvLyA9PT0gR0VORVJBUi9ERVNDQVJHQVIgPT09XG4gICAgICAgIGlmIChvcHRzLmRvd25sb2FkKSB7XG4gICAgICAgICAgZG9jLm91dHB1dCgnZGF0YXVybG5ld3dpbmRvdycsIHsgZmlsZW5hbWU6IG9wdHMuZmlsZW5hbWUgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlKGRvYyk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYSBQREYgb3B0aW1pemFkbyBwYXJhIGltcHJlc2nDs25cbiAgICovXG4gIGdlbmVyYXRlRm9yUHJpbnQoZGF0YTogVGVtcGxhdGVQZGZGbyk6IFByb21pc2U8anNQREY+IHtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUZ1ZWxPcmRlclByb2Zlc2lvbmFsUERGKGRhdGEsIHtcbiAgICAgIGZvcm1hdDogJ2xldHRlcicsXG4gICAgICBkb3dubG9hZDogZmFsc2VcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkSGVhZGVyKGRvYzoganNQREYsIGRhdGE6IFRlbXBsYXRlUGRmRm8sIG1hcmdpbjogbnVtYmVyLCB5OiBudW1iZXIsIHBhZ2VXaWR0aDogbnVtYmVyLCBjb2xvcjogbnVtYmVyW10pOiB2b2lkIHtcbiAgICAvLyBGb25kbyBkZWwgZW5jYWJlemFkb1xuICAgIGRvYy5zZXRGaWxsQ29sb3IoY29sb3JbMF0sIGNvbG9yWzFdLCBjb2xvclsyXSk7XG4gICAgZG9jLnJlY3QobWFyZ2luLCB5LCBwYWdlV2lkdGggLSAobWFyZ2luICogMiksIDgwLCAnRicpO1xuXG4gICAgLy8gVGV4dG8gZGVsIGVuY2FiZXphZG8gZW4gYmxhbmNvXG4gICAgZG9jLnNldFRleHRDb2xvcigyNTUsIDI1NSwgMjU1KTtcbiAgICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJywgJ2JvbGQnKTtcbiAgICBkb2Muc2V0Rm9udFNpemUoMTgpO1xuXG4gICAgY29uc3QgY29tcGFueU5hbWUgPSBkYXRhLm5hbWUudG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCBuYW1lV2lkdGggPSBkb2MuZ2V0VGV4dFdpZHRoKGNvbXBhbnlOYW1lKTtcbiAgICBkb2MudGV4dChjb21wYW55TmFtZSwgKHBhZ2VXaWR0aCAtIG5hbWVXaWR0aCkgLyAyLCB5ICsgMjUpO1xuXG4gICAgZG9jLnNldEZvbnRTaXplKDEyKTtcbiAgICBjb25zdCBuaXRUZXh0ID0gYE5JVDogJHtkYXRhLm5pdH1gO1xuICAgIGNvbnN0IG5pdFdpZHRoID0gZG9jLmdldFRleHRXaWR0aChuaXRUZXh0KTtcbiAgICBkb2MudGV4dChuaXRUZXh0LCAocGFnZVdpZHRoIC0gbml0V2lkdGgpIC8gMiwgeSArIDQ1KTtcblxuICAgIGRvYy5zZXRGb250U2l6ZSgxMCk7XG4gICAgY29uc3QgYWRkcmVzc1RleHQgPSBgJHtkYXRhLmFkZHJlc3N9IC0gVEVMOiAke2RhdGEudGVsZXBob25lfWA7XG4gICAgY29uc3QgYWRkcmVzc1dpZHRoID0gZG9jLmdldFRleHRXaWR0aChhZGRyZXNzVGV4dCk7XG4gICAgZG9jLnRleHQoYWRkcmVzc1RleHQsIChwYWdlV2lkdGggLSBhZGRyZXNzV2lkdGgpIC8gMiwgeSArIDY1KTtcblxuICAgIC8vIFJlc2V0ZWFyIGNvbG9yIGRlIHRleHRvXG4gICAgZG9jLnNldFRleHRDb2xvcigwLCAwLCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRG9jdW1lbnRUaXRsZShkb2M6IGpzUERGLCBkYXRhOiBUZW1wbGF0ZVBkZkZvLCB5OiBudW1iZXIsIHBhZ2VXaWR0aDogbnVtYmVyLCBjb2xvcjogbnVtYmVyW10pOiBudW1iZXIge1xuICAgIGRvYy5zZXRUZXh0Q29sb3IoY29sb3JbMF0sIGNvbG9yWzFdLCBjb2xvclsyXSk7XG4gICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdib2xkJyk7XG4gICAgZG9jLnNldEZvbnRTaXplKDIwKTtcblxuICAgIGNvbnN0IHRpdGxlID0gJ09SREVOIERFIENPTUJVU1RJQkxFJztcbiAgICBjb25zdCB0aXRsZVdpZHRoID0gZG9jLmdldFRleHRXaWR0aCh0aXRsZSk7XG4gICAgZG9jLnRleHQodGl0bGUsIChwYWdlV2lkdGggLSB0aXRsZVdpZHRoKSAvIDIsIHkpO1xuXG4gICAgZG9jLnNldEZvbnRTaXplKDE2KTtcbiAgICBjb25zdCBudW1iZXJUZXh0ID0gYE7CsCAke2RhdGEuY29uc2VjdXRpdmV9YDtcbiAgICBjb25zdCBudW1iZXJXaWR0aCA9IGRvYy5nZXRUZXh0V2lkdGgobnVtYmVyVGV4dCk7XG4gICAgZG9jLnRleHQobnVtYmVyVGV4dCwgKHBhZ2VXaWR0aCAtIG51bWJlcldpZHRoKSAvIDIsIHkgKyAyNSk7XG5cbiAgICBkb2Muc2V0VGV4dENvbG9yKDAsIDAsIDApO1xuICAgIHJldHVybiB5ICsgNDA7XG4gIH1cblxuICBwcml2YXRlIGFkZE1haW5JbmZvKGRvYzoganNQREYsIGRhdGE6IFRlbXBsYXRlUGRmRm8sIHk6IG51bWJlciwgbWFyZ2luOiBudW1iZXIsIHBhZ2VXaWR0aDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCB0YWJsZURhdGEgPSBbXG4gICAgICBbXG4gICAgICAgIHsgY29udGVudDogJ8OBcmVhOicsIHN0eWxlczogeyBmb250U3R5bGU6ICdib2xkJywgZmlsbENvbG9yOiBbMjQwLCAyNDAsIDI0MF0gfSB9LFxuICAgICAgICB7IGNvbnRlbnQ6IGRhdGEuYXJlYSwgc3R5bGVzOiB7fSB9LFxuICAgICAgICB7IGNvbnRlbnQ6ICdDw7NkaWdvOicsIHN0eWxlczogeyBmb250U3R5bGU6ICdib2xkJywgZmlsbENvbG9yOiBbMjQwLCAyNDAsIDI0MF0gfSB9LFxuICAgICAgICB7IGNvbnRlbnQ6IGRhdGEuY29kZSwgc3R5bGVzOiB7fSB9LFxuICAgICAgICB7IGNvbnRlbnQ6ICdGZWNoYTonLCBzdHlsZXM6IHsgZm9udFN0eWxlOiAnYm9sZCcsIGZpbGxDb2xvcjogWzI0MCwgMjQwLCAyNDBdIH0gfSxcbiAgICAgICAgeyBjb250ZW50OiBkYXRhLmRhdGUsIHN0eWxlczoge30gfVxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgeyBjb250ZW50OiAnT3BlcmFyaW86Jywgc3R5bGVzOiB7IGZvbnRTdHlsZTogJ2JvbGQnLCBmaWxsQ29sb3I6IFsyNDAsIDI0MCwgMjQwXSB9IH0sXG4gICAgICAgIHsgY29udGVudDogZGF0YS5yZXNwb25zaWJsZSwgc3R5bGVzOiB7IGNvbFNwYW46IDMgfSB9LFxuICAgICAgICB7IGNvbnRlbnQ6ICdPZMOzbWV0cm86Jywgc3R5bGVzOiB7IGZvbnRTdHlsZTogJ2JvbGQnLCBmaWxsQ29sb3I6IFsyNDAsIDI0MCwgMjQwXSB9IH0sXG4gICAgICAgIHsgY29udGVudDogZGF0YS5vZG9tZXRlciwgc3R5bGVzOiB7fSB9XG4gICAgICBdXG4gICAgXTtcblxuICAgIChkb2MgYXMgYW55KS5hdXRvVGFibGUoe1xuICAgICAgc3RhcnRZOiB5LFxuICAgICAgYm9keTogdGFibGVEYXRhLFxuICAgICAgdGhlbWU6ICdncmlkJyxcbiAgICAgIHN0eWxlczoge1xuICAgICAgICBmb250U2l6ZTogMTEsXG4gICAgICAgIGNlbGxQYWRkaW5nOiA4LFxuICAgICAgICBsaW5lQ29sb3I6IFsyMDAsIDIwMCwgMjAwXSxcbiAgICAgICAgbGluZVdpZHRoOiAwLjVcbiAgICAgIH0sXG4gICAgICBjb2x1bW5TdHlsZXM6IHtcbiAgICAgICAgMDogeyBjZWxsV2lkdGg6IDcwIH0sXG4gICAgICAgIDE6IHsgY2VsbFdpZHRoOiAxMDAgfSxcbiAgICAgICAgMjogeyBjZWxsV2lkdGg6IDcwIH0sXG4gICAgICAgIDM6IHsgY2VsbFdpZHRoOiA4MCB9LFxuICAgICAgICA0OiB7IGNlbGxXaWR0aDogNzAgfSxcbiAgICAgICAgNTogeyBjZWxsV2lkdGg6IDgwIH1cbiAgICAgIH0sXG4gICAgICBtYXJnaW46IHsgbGVmdDogbWFyZ2luLCByaWdodDogbWFyZ2luIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAoZG9jIGFzIGFueSkubGFzdEF1dG9UYWJsZS5maW5hbFk7XG4gIH1cblxuICBwcml2YXRlIGFkZFByb3ZpZGVySW5mbyhkb2M6IGpzUERGLCBkYXRhOiBUZW1wbGF0ZVBkZkZvLCB5OiBudW1iZXIsIG1hcmdpbjogbnVtYmVyLCBwYWdlV2lkdGg6IG51bWJlciwgY29sb3I6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgICAvLyBUw610dWxvIGRlIHNlY2Npw7NuXG4gICAgZG9jLnNldFRleHRDb2xvcihjb2xvclswXSwgY29sb3JbMV0sIGNvbG9yWzJdKTtcbiAgICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJywgJ2JvbGQnKTtcbiAgICBkb2Muc2V0Rm9udFNpemUoMTQpO1xuICAgIGNvbnN0IHRpdGxlID0gJ0RBVE9TIERFTCBQUk9WRUVET1InO1xuICAgIGNvbnN0IHRpdGxlV2lkdGggPSBkb2MuZ2V0VGV4dFdpZHRoKHRpdGxlKTtcbiAgICBkb2MudGV4dCh0aXRsZSwgKHBhZ2VXaWR0aCAtIHRpdGxlV2lkdGgpIC8gMiwgeSk7XG4gICAgZG9jLnNldFRleHRDb2xvcigwLCAwLCAwKTtcblxuICAgIGNvbnN0IHRhYmxlRGF0YSA9IFtcbiAgICAgIFtcbiAgICAgICAgeyBjb250ZW50OiAnTHVnYXI6Jywgc3R5bGVzOiB7IGZvbnRTdHlsZTogJ2JvbGQnLCBmaWxsQ29sb3I6IFsyNDAsIDI0MCwgMjQwXSB9IH0sXG4gICAgICAgIHsgY29udGVudDogZGF0YS5uYW1lUGxhY2UsIHN0eWxlczoge30gfSxcbiAgICAgICAgeyBjb250ZW50OiAnRGlyZWNjacOzbjonLCBzdHlsZXM6IHsgZm9udFN0eWxlOiAnYm9sZCcsIGZpbGxDb2xvcjogWzI0MCwgMjQwLCAyNDBdIH0gfSxcbiAgICAgICAgeyBjb250ZW50OiBkYXRhLmFkZHJlc3NQbGFjZSwgc3R5bGVzOiB7fSB9XG4gICAgICBdXG4gICAgXTtcblxuICAgIChkb2MgYXMgYW55KS5hdXRvVGFibGUoe1xuICAgICAgc3RhcnRZOiB5ICsgMjAsXG4gICAgICBib2R5OiB0YWJsZURhdGEsXG4gICAgICB0aGVtZTogJ2dyaWQnLFxuICAgICAgc3R5bGVzOiB7XG4gICAgICAgIGZvbnRTaXplOiAxMSxcbiAgICAgICAgY2VsbFBhZGRpbmc6IDgsXG4gICAgICAgIGxpbmVDb2xvcjogWzIwMCwgMjAwLCAyMDBdLFxuICAgICAgICBsaW5lV2lkdGg6IDAuNVxuICAgICAgfSxcbiAgICAgIGNvbHVtblN0eWxlczoge1xuICAgICAgICAwOiB7IGNlbGxXaWR0aDogODAgfSxcbiAgICAgICAgMTogeyBjZWxsV2lkdGg6IDE2MCB9LFxuICAgICAgICAyOiB7IGNlbGxXaWR0aDogODAgfSxcbiAgICAgICAgMzogeyBjZWxsV2lkdGg6IDE1MCB9XG4gICAgICB9LFxuICAgICAgbWFyZ2luOiB7IGxlZnQ6IG1hcmdpbiwgcmlnaHQ6IG1hcmdpbiB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKGRvYyBhcyBhbnkpLmxhc3RBdXRvVGFibGUuZmluYWxZO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRTZXJ2aWNlRGV0YWlscyhkb2M6IGpzUERGLCBkYXRhOiBUZW1wbGF0ZVBkZkZvLCB5OiBudW1iZXIsIG1hcmdpbjogbnVtYmVyLCBwYWdlV2lkdGg6IG51bWJlciwgY29sb3I6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgICAvLyBUw610dWxvIGRlIHNlY2Npw7NuXG4gICAgZG9jLnNldFRleHRDb2xvcihjb2xvclswXSwgY29sb3JbMV0sIGNvbG9yWzJdKTtcbiAgICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJywgJ2JvbGQnKTtcbiAgICBkb2Muc2V0Rm9udFNpemUoMTQpO1xuICAgIGNvbnN0IHRpdGxlID0gJ0RFVEFMTEVTIERFTCBTRVJWSUNJTyc7XG4gICAgY29uc3QgdGl0bGVXaWR0aCA9IGRvYy5nZXRUZXh0V2lkdGgodGl0bGUpO1xuICAgIGRvYy50ZXh0KHRpdGxlLCAocGFnZVdpZHRoIC0gdGl0bGVXaWR0aCkgLyAyLCB5KTtcbiAgICBkb2Muc2V0VGV4dENvbG9yKDAsIDAsIDApO1xuXG4gICAgLy8gUHJlcGFyYXIgdGV4dG8gcGFyYSBjYWxjdWxhciBhbHR1cmEgbmVjZXNhcmlhXG4gICAgY29uc3QgYm94WSA9IHkgKyAyMDtcbiAgICBjb25zdCBib3hXaWR0aCA9IHBhZ2VXaWR0aCAtIChtYXJnaW4gKiAyKTtcbiAgICBjb25zdCB0ZXh0TWFyZ2luID0gbWFyZ2luICsgMTU7XG4gICAgY29uc3QgbWF4V2lkdGggPSBib3hXaWR0aCAtIDMwO1xuICAgIGNvbnN0IGxpbmVIZWlnaHQgPSAxNTtcbiAgICBjb25zdCBtaW5Cb3hIZWlnaHQgPSA2MDsgLy8gQWx0dXJhIG3DrW5pbWEgZGVsIGNvbnRlbmVkb3JcbiAgICBjb25zdCBwYWRkaW5nID0gNDA7IC8vIFBhZGRpbmcgc3VwZXJpb3IgZSBpbmZlcmlvclxuXG4gICAgLy8gQ2FsY3VsYXIgbMOtbmVhcyBkZSB0ZXh0byBuZWNlc2FyaWFzXG4gICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdub3JtYWwnKTtcbiAgICBkb2Muc2V0Rm9udFNpemUoMTEpO1xuXG4gICAgbGV0IHRvdGFsTGluZXMgPSAwO1xuXG4gICAgLy8gQ29udGFyIGzDrW5lYXMgZGVsIGRldGFsbGVcbiAgICBpZiAoZGF0YS5kZXRhbGxlICYmIGRhdGEuZGV0YWxsZS50cmltKCkpIHtcbiAgICAgIGNvbnN0IGRldGFsbGVMaW5lcyA9IGRvYy5zcGxpdFRleHRUb1NpemUoZGF0YS5kZXRhbGxlLnRyaW0oKSwgbWF4V2lkdGgpO1xuICAgICAgdG90YWxMaW5lcyArPSBkZXRhbGxlTGluZXMubGVuZ3RoO1xuICAgIH1cblxuICAgIC8vIENvbnRhciBsw61uZWFzIGRlIGxhIGRlc2NyaXBjacOzbiAoaW5jbHV5ZSBldGlxdWV0YSBcIkRlc2NyaXBjacOzbjpcIilcbiAgICBpZiAoZGF0YS5kZXNjcmlwdGlvbiAmJiBkYXRhLmRlc2NyaXB0aW9uLnRyaW0oKSkge1xuICAgICAgdG90YWxMaW5lcyArPSAyOyAvLyBVbmEgbMOtbmVhIHBhcmEgXCJEZXNjcmlwY2nDs246XCIgKyBlc3BhY2lvXG4gICAgICBjb25zdCBkZXNjTGluZXMgPSBkb2Muc3BsaXRUZXh0VG9TaXplKGRhdGEuZGVzY3JpcHRpb24udHJpbSgpLCBtYXhXaWR0aCk7XG4gICAgICB0b3RhbExpbmVzICs9IGRlc2NMaW5lcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgLy8gQ2FsY3VsYXIgYWx0dXJhIG5lY2VzYXJpYSBiYXNhZGEgZW4gZWwgY29udGVuaWRvXG4gICAgY29uc3QgY29udGVudEhlaWdodCA9IE1hdGgubWF4KHRvdGFsTGluZXMgKiBsaW5lSGVpZ2h0LCAzMCk7IC8vIE3DrW5pbW8gMzBwdCBwYXJhIGNvbnRlbmlkb1xuICAgIGNvbnN0IGJveEhlaWdodCA9IE1hdGgubWF4KG1pbkJveEhlaWdodCwgY29udGVudEhlaWdodCArIHBhZGRpbmcpO1xuXG4gICAgLy8gVmVyaWZpY2FyIHNpIG5lY2VzaXRhbW9zIHVuYSBudWV2YSBww6FnaW5hXG4gICAgY29uc3QgcGFnZUhlaWdodCA9IGRvYy5pbnRlcm5hbC5wYWdlU2l6ZS5nZXRIZWlnaHQoKTtcbiAgICBjb25zdCByZW1haW5pbmdTcGFjZSA9IHBhZ2VIZWlnaHQgLSBib3hZIC0gMTAwOyAvLyBEZWphciBlc3BhY2lvIHBhcmEgZm9vdGVyXG5cbiAgICBsZXQgZmluYWxCb3hZID0gYm94WTtcbiAgICBpZiAoYm94SGVpZ2h0ID4gcmVtYWluaW5nU3BhY2UpIHtcbiAgICAgIC8vIEHDsWFkaXIgbnVldmEgcMOhZ2luYVxuICAgICAgZG9jLmFkZFBhZ2UoKTtcbiAgICAgIGZpbmFsQm94WSA9IG1hcmdpbiArIDQwOyAvLyBQb3NpY2nDs24gZW4gbnVldmEgcMOhZ2luYVxuICAgIH1cblxuICAgIC8vIERpYnVqYXIgY29udGVuZWRvciBjb24gYWx0dXJhIGRpbsOhbWljYVxuICAgIC8vIEZvbmRvIGdyaXMgY2xhcm9cbiAgICBkb2Muc2V0RmlsbENvbG9yKDI1MCwgMjUwLCAyNTApO1xuICAgIGRvYy5yZWN0KG1hcmdpbiwgZmluYWxCb3hZLCBib3hXaWR0aCwgYm94SGVpZ2h0LCAnRicpO1xuXG4gICAgLy8gQm9yZGVcbiAgICBkb2Muc2V0RHJhd0NvbG9yKDIwMCwgMjAwLCAyMDApO1xuICAgIGRvYy5yZWN0KG1hcmdpbiwgZmluYWxCb3hZLCBib3hXaWR0aCwgYm94SGVpZ2h0LCAnUycpO1xuXG4gICAgLy8gQcOxYWRpciBjb250ZW5pZG8gZGUgdGV4dG9cbiAgICBsZXQgdGV4dFkgPSBmaW5hbEJveFkgKyAyMDtcblxuICAgIC8vIEHDsWFkaXIgZGV0YWxsZSBzaSBleGlzdGVcbiAgICBpZiAoZGF0YS5kZXRhbGxlICYmIGRhdGEuZGV0YWxsZS50cmltKCkpIHtcbiAgICAgIGNvbnN0IGRldGFsbGVMaW5lcyA9IGRvYy5zcGxpdFRleHRUb1NpemUoZGF0YS5kZXRhbGxlLnRyaW0oKSwgbWF4V2lkdGgpO1xuICAgICAgZG9jLnRleHQoZGV0YWxsZUxpbmVzLCB0ZXh0TWFyZ2luLCB0ZXh0WSk7XG4gICAgICB0ZXh0WSArPSBkZXRhbGxlTGluZXMubGVuZ3RoICogbGluZUhlaWdodCArIDEwOyAvLyBFc3BhY2lvIGV4dHJhIGRlc3B1w6lzIGRlbCBkZXRhbGxlXG4gICAgfVxuXG4gICAgLy8gQcOxYWRpciBkZXNjcmlwY2nDs24gc2kgZXhpc3RlXG4gICAgaWYgKGRhdGEuZGVzY3JpcHRpb24gJiYgZGF0YS5kZXNjcmlwdGlvbi50cmltKCkpIHtcbiAgICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnYm9sZCcpO1xuICAgICAgZG9jLnRleHQoJ0Rlc2NyaXBjacOzbjonLCB0ZXh0TWFyZ2luLCB0ZXh0WSk7XG4gICAgICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJywgJ25vcm1hbCcpO1xuICAgICAgdGV4dFkgKz0gbGluZUhlaWdodDtcblxuICAgICAgY29uc3QgZGVzY0xpbmVzID0gZG9jLnNwbGl0VGV4dFRvU2l6ZShkYXRhLmRlc2NyaXB0aW9uLnRyaW0oKSwgbWF4V2lkdGgpO1xuXG4gICAgICAvLyBWZXJpZmljYXIgc2kgbmVjZXNpdGFtb3MgbWFuZWphciBjb250ZW5pZG8gbXV5IGxhcmdvXG4gICAgICBjb25zdCByZW1haW5pbmdIZWlnaHQgPSBmaW5hbEJveFkgKyBib3hIZWlnaHQgLSB0ZXh0WSAtIDIwO1xuICAgICAgY29uc3QgbWF4TGluZXNJblNwYWNlID0gTWF0aC5mbG9vcihyZW1haW5pbmdIZWlnaHQgLyBsaW5lSGVpZ2h0KTtcblxuICAgICAgaWYgKGRlc2NMaW5lcy5sZW5ndGggPiBtYXhMaW5lc0luU3BhY2UgJiYgbWF4TGluZXNJblNwYWNlID4gMCkge1xuICAgICAgICAvLyBNb3N0cmFyIGzDrW5lYXMgcXVlIGNhYmVuIGVuIGVsIGVzcGFjaW8gYWN0dWFsXG4gICAgICAgIGNvbnN0IGN1cnJlbnRMaW5lcyA9IGRlc2NMaW5lcy5zbGljZSgwLCBtYXhMaW5lc0luU3BhY2UpO1xuICAgICAgICBkb2MudGV4dChjdXJyZW50TGluZXMsIHRleHRNYXJnaW4sIHRleHRZKTtcblxuICAgICAgICAvLyBDb250aW51YXIgZW4gbnVldmEgcMOhZ2luYSBzaSBoYXkgbcOhcyBjb250ZW5pZG9cbiAgICAgICAgaWYgKGRlc2NMaW5lcy5sZW5ndGggPiBtYXhMaW5lc0luU3BhY2UpIHtcbiAgICAgICAgICBkb2MuYWRkUGFnZSgpO1xuICAgICAgICAgIHRleHRZID0gbWFyZ2luICsgMjA7XG4gICAgICAgICAgY29uc3QgcmVtYWluaW5nTGluZXMgPSBkZXNjTGluZXMuc2xpY2UobWF4TGluZXNJblNwYWNlKTtcbiAgICAgICAgICBkb2MudGV4dChyZW1haW5pbmdMaW5lcywgdGV4dE1hcmdpbiwgdGV4dFkpO1xuICAgICAgICAgIHJldHVybiB0ZXh0WSArIChyZW1haW5pbmdMaW5lcy5sZW5ndGggKiBsaW5lSGVpZ2h0KSArIDIwO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkb2MudGV4dChkZXNjTGluZXMsIHRleHRNYXJnaW4sIHRleHRZKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTaSBubyBoYXkgY29udGVuaWRvLCBtb3N0cmFyIHVuIG1lbnNhamVcbiAgICBpZiAoKCFkYXRhLmRldGFsbGUgfHwgIWRhdGEuZGV0YWxsZS50cmltKCkpICYmICghZGF0YS5kZXNjcmlwdGlvbiB8fCAhZGF0YS5kZXNjcmlwdGlvbi50cmltKCkpKSB7XG4gICAgICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJywgJ2l0YWxpYycpO1xuICAgICAgZG9jLnNldEZvbnRTaXplKDEwKTtcbiAgICAgIGRvYy5zZXRUZXh0Q29sb3IoMTUwLCAxNTAsIDE1MCk7XG4gICAgICBkb2MudGV4dCgnTm8gc2UgaGFuIGVzcGVjaWZpY2FkbyBkZXRhbGxlcyBkZWwgc2VydmljaW8uJywgdGV4dE1hcmdpbiwgdGV4dFkpO1xuICAgICAgZG9jLnNldFRleHRDb2xvcigwLCAwLCAwKTtcbiAgICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnbm9ybWFsJyk7XG4gICAgICBkb2Muc2V0Rm9udFNpemUoMTEpO1xuICAgIH1cblxuICAgIHJldHVybiBmaW5hbEJveFkgKyBib3hIZWlnaHQ7XG4gIH1cblxuXG4gIHByaXZhdGUgYWRkQXV0aG9yaXphdGlvbihkb2M6IGpzUERGLCBkYXRhOiBUZW1wbGF0ZVBkZkZvLCB5OiBudW1iZXIsIG1hcmdpbjogbnVtYmVyLCBwYWdlV2lkdGg6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgdGFibGVEYXRhID0gW1xuICAgICAgW1xuICAgICAgICB7IGNvbnRlbnQ6ICdBVVRPUklaQURBIFBPUjonLCBzdHlsZXM6IHsgZm9udFN0eWxlOiAnYm9sZCcsIGZvbnRTaXplOiAxMiwgZmlsbENvbG9yOiBbMjQwLCAyNDAsIDI0MF0gfSB9LFxuICAgICAgICB7IGNvbnRlbnQ6IGRhdGEuYXBwcm92ZWRfYnksIHN0eWxlczogeyBmb250U2l6ZTogMTIgfSB9XG4gICAgICBdXG4gICAgXTtcblxuICAgIChkb2MgYXMgYW55KS5hdXRvVGFibGUoe1xuICAgICAgc3RhcnRZOiB5LFxuICAgICAgYm9keTogdGFibGVEYXRhLFxuICAgICAgdGhlbWU6ICdncmlkJyxcbiAgICAgIHN0eWxlczoge1xuICAgICAgICBjZWxsUGFkZGluZzogMTIsXG4gICAgICAgIGxpbmVDb2xvcjogWzIwMCwgMjAwLCAyMDBdLFxuICAgICAgICBsaW5lV2lkdGg6IDAuNVxuICAgICAgfSxcbiAgICAgIGNvbHVtblN0eWxlczoge1xuICAgICAgICAwOiB7IGNlbGxXaWR0aDogMTUwIH0sXG4gICAgICAgIDE6IHsgY2VsbFdpZHRoOiAzMjAgfVxuICAgICAgfSxcbiAgICAgIG1hcmdpbjogeyBsZWZ0OiBtYXJnaW4sIHJpZ2h0OiBtYXJnaW4gfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIChkb2MgYXMgYW55KS5sYXN0QXV0b1RhYmxlLmZpbmFsWTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRm9vdGVyKGRvYzoganNQREYsIGRhdGE6IFRlbXBsYXRlUGRmRm8sIHk6IG51bWJlciwgcGFnZVdpZHRoOiBudW1iZXIsIGNvbG9yOiBudW1iZXJbXSk6IHZvaWQge1xuICAgIC8vIEZvbmRvIGRlbCBwaWUgZGUgcMOhZ2luYVxuICAgIGRvYy5zZXRGaWxsQ29sb3IoY29sb3JbMF0sIGNvbG9yWzFdLCBjb2xvclsyXSk7XG4gICAgZG9jLnJlY3QoNDAsIHksIHBhZ2VXaWR0aCAtIDgwLCA2MCwgJ0YnKTtcblxuICAgIC8vIFRleHRvIGVuIGJsYW5jb1xuICAgIGRvYy5zZXRUZXh0Q29sb3IoMjU1LCAyNTUsIDI1NSk7XG4gICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdib2xkJyk7XG4gICAgZG9jLnNldEZvbnRTaXplKDEyKTtcblxuICAgIGNvbnN0IGluc3RydWN0aW9uID0gJ0Zhdm9yIGFkanVudGFyIGxhIG9yZGVuIGRlIHZlbnRhIG8gZmFjdHVyYSc7XG4gICAgY29uc3QgaW5zdFdpZHRoID0gZG9jLmdldFRleHRXaWR0aChpbnN0cnVjdGlvbik7XG4gICAgZG9jLnRleHQoaW5zdHJ1Y3Rpb24sIChwYWdlV2lkdGggLSBpbnN0V2lkdGgpIC8gMiwgeSArIDI1KTtcblxuICAgIGRvYy5zZXRGb250U2l6ZSgxMCk7XG4gICAgY29uc3QgZW1haWxXaWR0aCA9IGRvYy5nZXRUZXh0V2lkdGgoZGF0YS5tYWlsKTtcbiAgICBkb2MudGV4dChkYXRhLm1haWwsIChwYWdlV2lkdGggLSBlbWFpbFdpZHRoKSAvIDIsIHkgKyA0NSk7XG5cbiAgICAvLyBSZXNldGVhciBjb2xvclxuICAgIGRvYy5zZXRUZXh0Q29sb3IoMCwgMCwgMCk7XG4gIH1cblxufVxuIl19
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class FunctionsService {
|
|
4
|
-
constructor() { }
|
|
5
|
-
dateForm(date) {
|
|
6
|
-
let data = new Date(date);
|
|
7
|
-
let change = `${data.getFullYear()}/${data.getMonth() + 1}/${data.getDate()}`;
|
|
8
|
-
return (change);
|
|
9
|
-
}
|
|
10
|
-
dateIso(date) {
|
|
11
|
-
let data = date.toString();
|
|
12
|
-
let cut = data.replace(/(.*)\T.*/, '$1');
|
|
13
|
-
let add = `${cut}T05:00:00.000Z`;
|
|
14
|
-
let fecha = add.replace(/(.*)\T.*/, '$1');
|
|
15
|
-
return (fecha);
|
|
16
|
-
}
|
|
17
|
-
dateDB(date) {
|
|
18
|
-
let day = this.validateTwoDigitFormat(date.getDate().toString());
|
|
19
|
-
let month = this.validateTwoDigitFormat((date.getMonth() + 1).toString());
|
|
20
|
-
return `${date.getFullYear()}-${month}-${day}`;
|
|
21
|
-
}
|
|
22
|
-
dateWithTime(date) {
|
|
23
|
-
if (!date)
|
|
24
|
-
return "";
|
|
25
|
-
var value = date.split("T");
|
|
26
|
-
return value[0] + " " + value[1].split(".")[0];
|
|
27
|
-
}
|
|
28
|
-
areObjectsEqual(obj1, obj2) {
|
|
29
|
-
return JSON.stringify(obj1) === JSON.stringify(obj2);
|
|
30
|
-
}
|
|
31
|
-
removeDuplicateObjects(originalArray) {
|
|
32
|
-
const uniqueArray = [];
|
|
33
|
-
originalArray.forEach((obj) => {
|
|
34
|
-
if (!uniqueArray.some((uniqueObj) => this.areObjectsEqual(obj, uniqueObj))) {
|
|
35
|
-
uniqueArray.push(obj);
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
return uniqueArray;
|
|
39
|
-
}
|
|
40
|
-
transformDate(date) {
|
|
41
|
-
if (!date) {
|
|
42
|
-
return '';
|
|
43
|
-
}
|
|
44
|
-
const dateObj = new Date(date);
|
|
45
|
-
const day = this.validateTwoDigitFormat(dateObj.getDate().toString());
|
|
46
|
-
const month = this.validateTwoDigitFormat((dateObj.getMonth() + 1).toString());
|
|
47
|
-
const year = dateObj.getFullYear();
|
|
48
|
-
return `${day}/${month}/${year}`;
|
|
49
|
-
}
|
|
50
|
-
formatNumber(value) {
|
|
51
|
-
if (value === null || value === undefined) {
|
|
52
|
-
return '$ 0';
|
|
53
|
-
}
|
|
54
|
-
return new Intl.NumberFormat('es-CO', {
|
|
55
|
-
style: 'currency',
|
|
56
|
-
currency: 'COP',
|
|
57
|
-
minimumFractionDigits: 0,
|
|
58
|
-
maximumFractionDigits: 0,
|
|
59
|
-
}).format(value);
|
|
60
|
-
}
|
|
61
|
-
validateTwoDigitFormat(number) {
|
|
62
|
-
if (number.length == 1)
|
|
63
|
-
number = "0" + number;
|
|
64
|
-
return number;
|
|
65
|
-
}
|
|
66
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FunctionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
67
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FunctionsService, providedIn: 'root' });
|
|
68
|
-
}
|
|
69
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FunctionsService, decorators: [{
|
|
70
|
-
type: Injectable,
|
|
71
|
-
args: [{
|
|
72
|
-
providedIn: 'root'
|
|
73
|
-
}]
|
|
74
|
-
}], ctorParameters: () => [] });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc2VydmljZXMvZnVuY3Rpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUUzQixnQkFBZ0IsQ0FBQztJQUdqQixRQUFRLENBQUUsSUFBSTtRQUNiLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3pCLElBQUksTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUE7UUFDNUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2pCLENBQUM7SUFFRCxPQUFPLENBQUUsSUFBSTtRQUNYLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMzQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN4QyxJQUFJLEdBQUcsR0FBSSxHQUFHLEdBQUcsZ0JBQWdCLENBQUE7UUFDakMsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDekMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hCLENBQUM7SUFFRCxNQUFNLENBQUUsSUFBSTtRQUNWLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtRQUNoRSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsc0JBQXNCLENB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IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGdW5jdGlvbnNTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG5cbiAgZGF0ZUZvcm0gKGRhdGUpIHtcbiAgIGxldCBkYXRhID0gbmV3IERhdGUoZGF0ZSlcbiAgIGxldCBjaGFuZ2UgPSBgJHtkYXRhLmdldEZ1bGxZZWFyKCl9LyR7ZGF0YS5nZXRNb250aCgpICsgMX0vJHtkYXRhLmdldERhdGUoKX1gXG4gICAgcmV0dXJuIChjaGFuZ2UpXG4gIH1cblxuICBkYXRlSXNvIChkYXRlKSB7XG4gICAgbGV0IGRhdGEgPSBkYXRlLnRvU3RyaW5nKCk7XG4gICAgbGV0IGN1dCA9IGRhdGEucmVwbGFjZSgvKC4qKVxcVC4qLywgJyQxJylcbiAgICBsZXQgYWRkICA9IGAke2N1dH1UMDU6MDA6MDAuMDAwWmBcbiAgICBsZXQgZmVjaGEgPSBhZGQucmVwbGFjZSgvKC4qKVxcVC4qLywgJyQxJylcbiAgICByZXR1cm4gKGZlY2hhKVxuICB9XG5cbiAgZGF0ZURCIChkYXRlKSB7XG4gICAgbGV0IGRheSA9IHRoaXMudmFsaWRhdGVUd29EaWdpdEZvcm1hdChkYXRlLmdldERhdGUoKS50b1N0cmluZygpKVxuICAgIGxldCBtb250aCA9IHRoaXMudmFsaWRhdGVUd29EaWdpdEZvcm1hdCgoZGF0ZS5nZXRNb250aCgpKzEpLnRvU3RyaW5nKCkpXG4gICAgcmV0dXJuIGAke2RhdGUuZ2V0RnVsbFllYXIoKX0tJHttb250aH0tJHtkYXl9YFxuICB9XG5cbiAgZGF0ZVdpdGhUaW1lKGRhdGU6c3RyaW5nKTpzdHJpbmd7XG4gICAgaWYoIWRhdGUpIHJldHVybiBcIlwiXG4gICAgdmFyIHZhbHVlID0gZGF0ZS5zcGxpdChcIlRcIilcbiAgICByZXR1cm4gIHZhbHVlWzBdICsgXCIgXCIgKyB2YWx1ZVsxXS5zcGxpdChcIi5cIilbMF1cbiAgfVxuXG4gIGFyZU9iamVjdHNFcXVhbChvYmoxOiBhbnksIG9iajI6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmoxKSA9PT0gSlNPTi5zdHJpbmdpZnkob2JqMik7XG4gIH1cblxuICByZW1vdmVEdXBsaWNhdGVPYmplY3RzKG9yaWdpbmFsQXJyYXk6IGFueVtdKTogYW55W10ge1xuICAgIGNvbnN0IHVuaXF1ZUFycmF5OiBhbnlbXSA9IFtdO1xuICAgIG9yaWdpbmFsQXJyYXkuZm9yRWFjaCgob2JqKSA9PiB7XG4gICAgICBpZiAoIXVuaXF1ZUFycmF5LnNvbWUoKHVuaXF1ZU9iaikgPT4gdGhpcy5hcmVPYmplY3RzRXF1YWwob2JqLCB1bmlxdWVPYmopKSkge1xuICAgICAgICB1bmlxdWVBcnJheS5wdXNoKG9iaik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdW5pcXVlQXJyYXk7XG4gIH1cblxuICB0cmFuc2Zvcm1EYXRlKGRhdGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFkYXRlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IGRhdGVPYmogPSBuZXcgRGF0ZShkYXRlKTtcbiAgICBjb25zdCBkYXkgPSB0aGlzLnZhbGlkYXRlVHdvRGlnaXRGb3JtYXQoZGF0ZU9iai5nZXREYXRlKCkudG9TdHJpbmcoKSk7XG4gICAgY29uc3QgbW9udGggPSB0aGlzLnZhbGlkYXRlVHdvRGlnaXRGb3JtYXQoKGRhdGVPYmouZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKCkpO1xuICAgIGNvbnN0IHllYXIgPSBkYXRlT2JqLmdldEZ1bGxZZWFyKCk7XG4gICAgcmV0dXJuIGAke2RheX0vJHttb250aH0vJHt5ZWFyfWA7XG4gIH1cblxuICBmb3JtYXROdW1iZXIodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiAnJCAwJztcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbnRsLk51bWJlckZvcm1hdCgnZXMtQ08nLCB7XG4gICAgICBzdHlsZTogJ2N1cnJlbmN5JyxcbiAgICAgIGN1cnJlbmN5OiAnQ09QJyxcbiAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMCxcbiAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMCxcbiAgICB9KS5mb3JtYXQodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVR3b0RpZ2l0Rm9ybWF0KG51bWJlcjogc3RyaW5nKTpzdHJpbmd7XG4gICAgaWYobnVtYmVyLmxlbmd0aCA9PSAxKSBudW1iZXIgPSBcIjBcIiArIG51bWJlclxuICAgIHJldHVybiBudW1iZXJcbiAgfVxuXG59XG4iXX0=
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { TemplateFuelComponent } from '../brainloper-ui/components/report/template-fuel/template-fuel.component';
|
|
3
|
-
import { TemplateOtComponent } from '../brainloper-ui/components/report/template-ot/template-ot.component';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/material/dialog";
|
|
6
|
-
import * as i2 from "./work-order-pdf.service";
|
|
7
|
-
import * as i3 from "./fuel-order-pdf.service";
|
|
8
|
-
import * as i4 from "./purchase-order-pdf.service";
|
|
9
|
-
export class GeneratePdfService {
|
|
10
|
-
dialog;
|
|
11
|
-
workOrderPdfService;
|
|
12
|
-
FuelOrderPdfService;
|
|
13
|
-
purchaseOrderPdfService;
|
|
14
|
-
constructor(dialog, workOrderPdfService, FuelOrderPdfService, purchaseOrderPdfService) {
|
|
15
|
-
this.dialog = dialog;
|
|
16
|
-
this.workOrderPdfService = workOrderPdfService;
|
|
17
|
-
this.FuelOrderPdfService = FuelOrderPdfService;
|
|
18
|
-
this.purchaseOrderPdfService = purchaseOrderPdfService;
|
|
19
|
-
}
|
|
20
|
-
getPdfOt(data, autoGenerateData) {
|
|
21
|
-
let autoGenerate = false;
|
|
22
|
-
if (autoGenerateData) {
|
|
23
|
-
autoGenerate = autoGenerateData;
|
|
24
|
-
}
|
|
25
|
-
return new Promise((resolve, rejects) => {
|
|
26
|
-
let screen = "850px";
|
|
27
|
-
// if ( window.screen.width<1000) {
|
|
28
|
-
// screen = "100vw"
|
|
29
|
-
// }
|
|
30
|
-
this.dialog.open(TemplateOtComponent, {
|
|
31
|
-
data: {
|
|
32
|
-
data,
|
|
33
|
-
autoGenerate: autoGenerate
|
|
34
|
-
},
|
|
35
|
-
width: screen
|
|
36
|
-
}).afterClosed().subscribe((res) => {
|
|
37
|
-
return resolve(true);
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
getPdfFo(data, autoGenerateData) {
|
|
42
|
-
let autoGenerate = false;
|
|
43
|
-
if (autoGenerateData) {
|
|
44
|
-
autoGenerate = autoGenerateData;
|
|
45
|
-
}
|
|
46
|
-
return new Promise((resolve, rejects) => {
|
|
47
|
-
let screen = "850px";
|
|
48
|
-
this.dialog.open(TemplateFuelComponent, {
|
|
49
|
-
data: {
|
|
50
|
-
data,
|
|
51
|
-
autoGenerate: autoGenerate
|
|
52
|
-
},
|
|
53
|
-
width: screen
|
|
54
|
-
}).afterClosed().subscribe((res) => {
|
|
55
|
-
return resolve(true);
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
getPdfFoV2(data) {
|
|
60
|
-
return new Promise((resolve, reject) => {
|
|
61
|
-
this.FuelOrderPdfService.generateFuelOrderProfesionalPDF(data)
|
|
62
|
-
.then(() => resolve(true))
|
|
63
|
-
.catch(error => reject(error));
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
getPdfOtV2(data) {
|
|
67
|
-
return new Promise((resolve, reject) => {
|
|
68
|
-
this.workOrderPdfService.generateWorkOrderPDF(data)
|
|
69
|
-
.then(() => resolve(true))
|
|
70
|
-
.catch(error => reject(error));
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
generatePurchaseOrderPDF(order) {
|
|
74
|
-
return new Promise((resolve, reject) => {
|
|
75
|
-
this.purchaseOrderPdfService.generatePurchaseOrderPDF(order, { download: false })
|
|
76
|
-
.then((doc) => {
|
|
77
|
-
const blobUrl = doc.output('bloburl');
|
|
78
|
-
window.open(blobUrl, '_blank');
|
|
79
|
-
resolve(true);
|
|
80
|
-
})
|
|
81
|
-
.catch(error => reject(error));
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeneratePdfService, deps: [{ token: i1.MatDialog }, { token: i2.WorkOrderPdfService }, { token: i3.FuelOrderPdfService }, { token: i4.PurchaseOrderPdfService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
85
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeneratePdfService, providedIn: 'root' });
|
|
86
|
-
}
|
|
87
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeneratePdfService, decorators: [{
|
|
88
|
-
type: Injectable,
|
|
89
|
-
args: [{
|
|
90
|
-
providedIn: 'root'
|
|
91
|
-
}]
|
|
92
|
-
}], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.WorkOrderPdfService }, { type: i3.FuelOrderPdfService }, { type: i4.PurchaseOrderPdfService }] });
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUtcGRmLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc2VydmljZXMvZ2VuZXJhdGUtcGRmLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUtqSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQzs7Ozs7O0FBTTNHLE1BQU0sT0FBTyxrQkFBa0I7SUFHbkI7SUFDQTtJQUNBO0lBQ0E7SUFKVixZQUNVLE1BQWlCLEVBQ2pCLG1CQUF3QyxFQUN4QyxtQkFBd0MsRUFDeEMsdUJBQWlEO1FBSGpELFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBMEI7SUFDdkQsQ0FBQztJQUVMLFFBQVEsQ0FBQyxJQUFtQixFQUFFLGdCQUEwQjtRQUN0RCxJQUFJLFlBQVksR0FBRyxLQUFLLENBQUE7UUFDeEIsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3JCLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQTtRQUNqQyxDQUFDO1FBRUQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUN0QyxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUE7WUFDcEIsbUNBQW1DO1lBQ25DLHFCQUFxQjtZQUNyQixJQUFJO1lBRUosSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7Z0JBQ3BDLElBQUksRUFBRTtvQkFDSixJQUFJO29CQUNKLFlBQVksRUFBRSxZQUFZO2lCQUMzQjtnQkFDRCxLQUFL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fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBUZW1wbGF0ZUZ1ZWxDb21wb25lbnQgfSBmcm9tICcuLi9icmFpbmxvcGVyLXVpL2NvbXBvbmVudHMvcmVwb3J0L3RlbXBsYXRlLWZ1ZWwvdGVtcGxhdGUtZnVlbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVtcGxhdGVQZGZPdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVwb3J0L3RlbXBsYXRlLXBkZi1vdCc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBkZkZvIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZXBvcnQvdGVtcGxhdGUtcGZkLWZvJztcbmltcG9ydCB7IFdvcmtPcmRlclBkZlNlcnZpY2UgfSBmcm9tICcuL3dvcmstb3JkZXItcGRmLnNlcnZpY2UnO1xuaW1wb3J0IHsgRnVlbE9yZGVyUGRmU2VydmljZSB9IGZyb20gJy4vZnVlbC1vcmRlci1wZGYuc2VydmljZSc7XG5pbXBvcnQgeyBUZW1wbGF0ZU90Q29tcG9uZW50IH0gZnJvbSAnLi4vYnJhaW5sb3Blci11aS9jb21wb25lbnRzL3JlcG9ydC90ZW1wbGF0ZS1vdC90ZW1wbGF0ZS1vdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHVyY2hhc2VPcmRlclBkZlNlcnZpY2UgfSBmcm9tICcuL3B1cmNoYXNlLW9yZGVyLXBkZi5zZXJ2aWNlJztcbmltcG9ydCB7IFRlbXBsYXRlUGRmUHVyY2hhc2VPcmRlciB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVwb3J0L3RlbXBsYXRlLXBkZi1wdXJjaGFzZS1vcmRlcic7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBHZW5lcmF0ZVBkZlNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSB3b3JrT3JkZXJQZGZTZXJ2aWNlOiBXb3JrT3JkZXJQZGZTZXJ2aWNlLFxuICAgIHByaXZhdGUgRnVlbE9yZGVyUGRmU2VydmljZTogRnVlbE9yZGVyUGRmU2VydmljZSxcbiAgICBwcml2YXRlIHB1cmNoYXNlT3JkZXJQZGZTZXJ2aWNlIDogUHVyY2hhc2VPcmRlclBkZlNlcnZpY2VcbiAgKSB7IH1cblxuICBnZXRQZGZPdChkYXRhOiBUZW1wbGF0ZVBkZk90LCBhdXRvR2VuZXJhdGVEYXRhPzogYm9vbGVhbikge1xuICAgIGxldCBhdXRvR2VuZXJhdGUgPSBmYWxzZVxuICAgIGlmIChhdXRvR2VuZXJhdGVEYXRhKSB7XG4gICAgICBhdXRvR2VuZXJhdGUgPSBhdXRvR2VuZXJhdGVEYXRhXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICBsZXQgc2NyZWVuID0gXCI4NTBweFwiXG4gICAgICAvLyBpZiAoIHdpbmRvdy5zY3JlZW4ud2lkdGg8MTAwMCkge1xuICAgICAgLy8gICBzY3JlZW4gPSBcIjEwMHZ3XCJcbiAgICAgIC8vIH1cblxuICAgICAgdGhpcy5kaWFsb2cub3BlbihUZW1wbGF0ZU90Q29tcG9uZW50LCB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGF1dG9HZW5lcmF0ZTogYXV0b0dlbmVyYXRlXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiBzY3JlZW5cbiAgICAgIH0pLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUodHJ1ZSlcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIGdldFBkZkZvKGRhdGE6IFRlbXBsYXRlUGRmRm8sIGF1dG9HZW5lcmF0ZURhdGE/OiBib29sZWFuKSB7XG4gICAgbGV0IGF1dG9HZW5lcmF0ZSA9IGZhbHNlXG4gICAgaWYgKGF1dG9HZW5lcmF0ZURhdGEpIHtcbiAgICAgIGF1dG9HZW5lcmF0ZSA9IGF1dG9HZW5lcmF0ZURhdGFcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdHMpID0+IHtcbiAgICAgIGxldCBzY3JlZW4gPSBcIjg1MHB4XCJcblxuICAgICAgdGhpcy5kaWFsb2cub3BlbihUZW1wbGF0ZUZ1ZWxDb21wb25lbnQsIHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgYXV0b0dlbmVyYXRlOiBhdXRvR2VuZXJhdGVcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6IHNjcmVlblxuICAgICAgfSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZSh0cnVlKVxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgZ2V0UGRmRm9WMihkYXRhOiBUZW1wbGF0ZVBkZkZvKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgdGhpcy5GdWVsT3JkZXJQZGZTZXJ2aWNlLmdlbmVyYXRlRnVlbE9yZGVyUHJvZmVzaW9uYWxQREYoZGF0YSlcbiAgICAgICAgICAudGhlbigoKSA9PiByZXNvbHZlKHRydWUpKVxuICAgICAgICAgIC5jYXRjaChlcnJvciA9PiByZWplY3QoZXJyb3IpKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldFBkZk90VjIoZGF0YTogVGVtcGxhdGVQZGZPdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHRoaXMud29ya09yZGVyUGRmU2VydmljZS5nZW5lcmF0ZVdvcmtPcmRlclBERihkYXRhKVxuICAgICAgICAgIC50aGVuKCgpID0+IHJlc29sdmUodHJ1ZSkpXG4gICAgICAgICAgLmNhdGNoKGVycm9yID0+IHJlamVjdChlcnJvcikpO1xuXG4gICAgfSk7XG4gIH1cblxuICBnZW5lcmF0ZVB1cmNoYXNlT3JkZXJQREYob3JkZXI6IFRlbXBsYXRlUGRmUHVyY2hhc2VPcmRlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICB0aGlzLnB1cmNoYXNlT3JkZXJQZGZTZXJ2aWNlLmdlbmVyYXRlUHVyY2hhc2VPcmRlclBERihvcmRlciwgeyBkb3dubG9hZDogZmFsc2UgfSlcbiAgICAgICAgICAudGhlbigoZG9jKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmxvYlVybCA9IGRvYy5vdXRwdXQoJ2Jsb2J1cmwnKTtcbiAgICAgICAgICAgICAgICB3aW5kb3cub3BlbihibG9iVXJsLCAnX2JsYW5rJyk7XG4gICAgICAgICAgICByZXNvbHZlKHRydWUpXG4gICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgICAuY2F0Y2goZXJyb3IgPT4gcmVqZWN0KGVycm9yKSk7XG5cbiAgICB9KTtcbiAgfVxuXG5cbn1cbiJdfQ==
|