@c80/ui 1.0.42 → 1.0.44

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.
@@ -36,45 +36,72 @@ export class TableDataUtilsService {
36
36
  /**
37
37
  * Devuelve el valor de display para una celda, mostrando '-' para valores falsy excepto 0, false y objetos/arrays vacíos
38
38
  * @param value - Valor a formatear
39
+ * @param col - Definición de columna (opcional) para formateo específico por tipo
39
40
  * @returns Cadena formateada para display
40
41
  */
41
- getDisplayValue(value) {
42
- // Si el valor es 0, mostrarlo
43
- if (value === 0) {
42
+ getDisplayValue(value, col) {
43
+ return this.formatValueByType(value, col);
44
+ }
45
+ formatValueByType(value, col) {
46
+ if (value === 0)
44
47
  return '0';
45
- }
46
- // Si el valor es false, debe ser manejado por lógica booleana en template, no aquí
47
- if (value === false) {
48
+ if (value === false)
48
49
  return 'false';
49
- }
50
- // Manejar objetos y arrays (incluyendo los vacíos)
51
- if (typeof value === 'object' && value !== null) {
52
- try {
53
- return JSON.stringify(value);
54
- }
55
- catch {
56
- return '[object Object]';
57
- }
58
- }
59
- // Si el valor son otros falsy values (null, undefined, ''), mostrar '-'
60
- if (!value) {
50
+ if (col?.type === 'date' && value)
51
+ return this.formatDateValue(value);
52
+ if (typeof value === 'object' && value !== null)
53
+ return this.formatObjectValue(value);
54
+ if (!value)
61
55
  return '-';
62
- }
63
- // Manejar otros tipos explícitamente
64
- if (typeof value === 'string' ||
65
- typeof value === 'number' ||
66
- typeof value === 'boolean') {
56
+ return this.formatPrimitiveValue(value);
57
+ }
58
+ formatPrimitiveValue(value) {
59
+ if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
67
60
  return String(value);
68
61
  }
69
- // Para cualquier otro tipo (función, símbolo, etc.), devolver un fallback seguro
70
62
  return '-';
71
63
  }
72
64
  /**
73
- * Obtiene el texto de display para un valor enum
74
- * @param value - Valor del enum
75
- * @param col - Definición de la columna
76
- * @returns Texto formateado del enum
65
+ * Formatea un valor de fecha a formato legible
66
+ * @param value - Valor de fecha (Date, string ISO, timestamp)
67
+ * @returns Fecha formateada como DD/MM/YYYY HH:MM
77
68
  */
69
+ formatDateValue(value) {
70
+ try {
71
+ const date = this.parseDate(value);
72
+ if (!date || Number.isNaN(date.getTime()))
73
+ return '-';
74
+ const day = String(date.getDate()).padStart(2, '0');
75
+ const month = String(date.getMonth() + 1).padStart(2, '0');
76
+ const year = date.getFullYear();
77
+ const hours = String(date.getHours()).padStart(2, '0');
78
+ const minutes = String(date.getMinutes()).padStart(2, '0');
79
+ return `${day}/${month}/${year} ${hours}:${minutes}`;
80
+ }
81
+ catch {
82
+ return '-';
83
+ }
84
+ }
85
+ parseDate(value) {
86
+ if (value instanceof Date)
87
+ return value;
88
+ if (typeof value === 'string' || typeof value === 'number')
89
+ return new Date(value);
90
+ return null;
91
+ }
92
+ formatObjectValue(value) {
93
+ try {
94
+ return JSON.stringify(value);
95
+ }
96
+ catch {
97
+ return '[object Object]';
98
+ }
99
+ } /**
100
+ * Obtiene el texto de display para un valor enum
101
+ * @param value - Valor del enum
102
+ * @param col - Definición de la columna
103
+ * @returns Texto formateado del enum
104
+ */
78
105
  getEnumDisplayValue(value, col) {
79
106
  if (!col.enum || (value !== 0 && !value)) {
80
107
  return '-';
@@ -163,4 +190,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
163
190
  providedIn: 'root'
164
191
  }]
165
192
  }] });
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS11dGlscy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy91aS9zcmMvbGliL3RhYmxlL3RhYmxlLWRhdGEtdXRpbHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQzs7Ozs7Ozs7R0FRRztBQUlILE1BQU0sT0FBTyxxQkFBcUI7SUFFOUI7Ozs7O09BS0c7SUFDSCxZQUFZLENBQW9DLEdBQU0sRUFBRSxRQUFnQjtRQUNwRSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxPQUFRLEdBQStCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsY0FBYyxDQUFDLEdBQTRCLEVBQUUsUUFBZ0I7UUFDekQsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUMvQyxPQUFPLE9BQU8sSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFFLE9BQW1DLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUMxRyxDQUFDLEVBQUUsR0FBYyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxlQUFlLENBQUMsS0FBYztRQUMxQiw4QkFBOEI7UUFDOUIsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDZCxPQUFPLEdBQUcsQ0FBQztRQUNmLENBQUM7UUFDRCxtRkFBbUY7UUFDbkYsSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7WUFD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aW1wb3J0IHsgQzgwVGFibGVDb2xEZWYgfSBmcm9tICcuL3RhYmxlLnR5cGVzJztcblxuLyoqXG4gKiBTZXJ2aWNpbyBwYXJhIHV0aWxpZGFkZXMgZGUgbWFuaXB1bGFjacOzbiBkZSBkYXRvcyBlbiB0YWJsYXMgQzgwXG4gKlxuICogUHJvcG9yY2lvbmEgbcOpdG9kb3MgcGFyYTpcbiAqIC0gQWNjZXNvIGEgdmFsb3JlcyBkZSBjZWxkYXMgKGluY2x1eWVuZG8gcHJvcGllZGFkZXMgYW5pZGFkYXMpXG4gKiAtIEZvcm1hdGVvIGRlIHZhbG9yZXMgcGFyYSBkaXNwbGF5XG4gKiAtIEdlc3Rpw7NuIGRlIGVudW1zIHkgY29sb3Jlc1xuICogLSBPcmRlbmFtaWVudG8gZGUgZGF0b3NcbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUYWJsZURhdGFVdGlsc1NlcnZpY2Uge1xuXG4gICAgLyoqXG4gICAgICogT2J0aWVuZSBlbCB2YWxvciBkZSB1bmEgY2VsZGEgdXNhbmRvIGVsIGFjY2Vzc29yLCBzb3BvcnRhbmRvIG5vdGFjacOzbiBkZSBwdW50byBwYXJhIHByb3BpZWRhZGVzIGFuaWRhZGFzXG4gICAgICogQHBhcmFtIHJvdyAtIExhIGZpbGEgZGUgZGF0b3NcbiAgICAgKiBAcGFyYW0gYWNjZXNzb3IgLSBFbCBhY2Nlc3NvciBkZSBsYSBjb2x1bW5hXG4gICAgICogQHJldHVybnMgRWwgdmFsb3IgZGUgbGEgY2VsZGFcbiAgICAgKi9cbiAgICBnZXRDZWxsVmFsdWU8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+Pihyb3c6IFQsIGFjY2Vzc29yOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgICAgICAgaWYgKGFjY2Vzc29yLmluY2x1ZGVzKCcuJykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgYWNjZXNzb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAocm93IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVthY2Nlc3Nvcl07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT2J0aWVuZSBlbCB2YWxvciBkZSB1biBvYmpldG8gdXNhbmRvIG5vdGFjacOzbiBkZSBwdW50byAoZWo6ICd0YXNrLm5hbWUnKVxuICAgICAqIEBwYXJhbSBvYmogLSBPYmpldG8gZGVsIGN1YWwgb2J0ZW5lciBlbCB2YWxvclxuICAgICAqIEBwYXJhbSBhY2Nlc3NvciAtIFJ1dGEgZGUgYWNjZXNvIHVzYW5kbyBub3RhY2nDs24gZGUgcHVudG9cbiAgICAgKiBAcmV0dXJucyBFbCB2YWxvciBhbmlkYWRvIG8gdW5kZWZpbmVkXG4gICAgICovXG4gICAgZ2V0TmVzdGVkVmFsdWUob2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgYWNjZXNzb3I6IHN0cmluZyk6IHVua25vd24ge1xuICAgICAgICByZXR1cm4gYWNjZXNzb3Iuc3BsaXQoJy4nKS5yZWR1Y2UoKGN1cnJlbnQsIGtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQgJiYgdHlwZW9mIGN1cnJlbnQgPT09ICdvYmplY3QnID8gKGN1cnJlbnQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleV0gOiB1bmRlZmluZWQ7XG4gICAgICAgIH0sIG9iaiBhcyB1bmtub3duKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXZ1ZWx2ZSBlbCB2YWxvciBkZSBkaXNwbGF5IHBhcmEgdW5hIGNlbGRhLCBtb3N0cmFuZG8gJy0nIHBhcmEgdmFsb3JlcyBmYWxzeSBleGNlcHRvIDAsIGZhbHNlIHkgb2JqZXRvcy9hcnJheXMgdmFjw61vc1xuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFZhbG9yIGEgZm9ybWF0ZWFyXG4gICAgICogQHJldHVybnMgQ2FkZW5hIGZvcm1hdGVhZGEgcGFyYSBkaXNwbGF5XG4gICAgICovXG4gICAgZ2V0RGlzcGxheVZhbHVlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICAgICAgLy8gU2kgZWwgdmFsb3IgZXMgMCwgbW9zdHJhcmxvXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuICcwJztcbiAgICAgICAgfVxuICAgICAgICAvLyBTaSBlbCB2YWxvciBlcyBmYWxzZSwgZGViZSBzZXIgbWFuZWphZG8gcG9yIGzDs2dpY2EgYm9vbGVhbmEgZW4gdGVtcGxhdGUsIG5vIGFxdcOtXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiAnZmFsc2UnO1xuICAgICAgICB9XG4gICAgICAgIC8vIE1hbmVqYXIgb2JqZXRvcyB5IGFycmF5cyAoaW5jbHV5ZW5kbyBsb3MgdmFjw61vcylcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW29iamVjdCBPYmplY3RdJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBTaSBlbCB2YWxvciBzb24gb3Ryb3MgZmFsc3kgdmFsdWVzIChudWxsLCB1bmRlZmluZWQsICcnKSwgbW9zdHJhciAnLSdcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuICctJztcbiAgICAgICAgfVxuICAgICAgICAvLyBNYW5lamFyIG90cm9zIHRpcG9zIGV4cGzDrWNpdGFtZW50ZVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8XG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8XG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJ1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFBhcmEgY3VhbHF1aWVyIG90cm8gdGlwbyAoZnVuY2nDs24sIHPDrW1ib2xvLCBldGMuKSwgZGV2b2x2ZXIgdW4gZmFsbGJhY2sgc2VndXJvXG4gICAgICAgIHJldHVybiAnLSc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT2J0aWVuZSBlbCB0ZXh0byBkZSBkaXNwbGF5IHBhcmEgdW4gdmFsb3IgZW51bVxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFZhbG9yIGRlbCBlbnVtXG4gICAgICogQHBhcmFtIGNvbCAtIERlZmluaWNpw7NuIGRlIGxhIGNvbHVtbmFcbiAgICAgKiBAcmV0dXJucyBUZXh0byBmb3JtYXRlYWRvIGRlbCBlbnVtXG4gICAgICovXG4gICAgZ2V0RW51bURpc3BsYXlWYWx1ZSh2YWx1ZTogdW5rbm93biwgY29sOiBDODBUYWJsZUNvbERlZik6IHN0cmluZyB7XG4gICAgICAgIGlmICghY29sLmVudW0gfHwgKHZhbHVlICE9PSAwICYmICF2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAnLSc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGlzcGxheVZhbHVlID0gY29sLmVudW1bdmFsdWUgYXMgc3RyaW5nIHwgbnVtYmVyXTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGRpc3BsYXlWYWx1ZSB8fFxuICAgICAgICAgICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgICAgID8gU3RyaW5nKHZhbHVlKVxuICAgICAgICAgICAgICAgIDogJy0nKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9idGllbmUgbGFzIG9wY2lvbmVzIGRlbCBlbnVtIGNvbW8gYXJyYXkgcGFyYSBkcm9wZG93bnMgc2VsZWN0XG4gICAgICogQHBhcmFtIGNvbCAtIERlZmluaWNpw7NuIGRlIGxhIGNvbHVtbmFcbiAgICAgKiBAcmV0dXJucyBBcnJheSBkZSBvcGNpb25lcyBjb24gdmFsdWUgeSBsYWJlbFxuICAgICAqL1xuICAgIGdldEVudW1PcHRpb25zKGNvbDogQzgwVGFibGVDb2xEZWYpOiB7IHZhbHVlOiBzdHJpbmcgfCBudW1iZXI7IGxhYmVsOiBzdHJpbmcgfVtdIHtcbiAgICAgICAgaWYgKCFjb2wuZW51bSkgcmV0dXJuIFtdO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoY29sLmVudW0pLm1hcCgoW3ZhbHVlLCBsYWJlbF0pID0+ICh7XG4gICAgICAgICAgICB2YWx1ZTogTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpID8gdmFsdWUgOiBOdW1iZXIodmFsdWUpLFxuICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPYnRpZW5lIGVsIGNvbG9yIENTUyBwYXJhIHVuIHZhbG9yIGRlIGNlbGRhIGJhc2FkbyBlbiBsYSBjb25maWd1cmFjacOzbiBkZSBjb2xvciBkZSBsYSBjb2x1bW5hXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVmFsb3IgZGUgbGEgY2VsZGFcbiAgICAgKiBAcGFyYW0gY29sIC0gRGVmaW5pY2nDs24gZGUgbGEgY29sdW1uYVxuICAgICAqIEByZXR1cm5zIENvbG9yIENTUyBvIHVuZGVmaW5lZCBzaSBubyBoYXkgY29uZmlndXJhY2nDs25cbiAgICAgKi9cbiAgICBnZXRDZWxsQ29sb3IodmFsdWU6IHVua25vd24sIGNvbDogQzgwVGFibGVDb2xEZWYpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIWNvbC5jb2xvciB8fCAodmFsdWUgIT09IDAgJiYgIXZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29sLmNvbG9yW3ZhbHVlIGFzIHN0cmluZyB8IG51bWJlcl07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBsaWNhIG9yZGVuYW1pZW50byBhIGxvcyBpdGVtcyBiYXPDoW5kb3NlIGVuIGxhcyBjb2x1bW5hcyBjb24gY29uZmlndXJhY2nDs24gZGUgb3JkZW5cbiAgICAgKiBAcGFyYW0gaXRlbXMgLSBBcnJheSBkZSBpdGVtcyBhIG9yZGVuYXIgKHNlIG1vZGlmaWNhIGluLXBsYWNlKVxuICAgICAqIEBwYXJhbSBjb2x1bW5zIC0gRGVmaW5pY2lvbmVzIGRlIGNvbHVtbmFzXG4gICAgICovXG4gICAgYXBwbHlTb3J0aW5nPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oaXRlbXM6IFRbXSwgY29sdW1uczogQzgwVGFibGVDb2xEZWZbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBvcmRlcmVkQ29sdW1ucyA9IGNvbHVtbnMuZmlsdGVyKChjb2wpID0+IGNvbC5vcmRlcik7XG4gICAgICAgIGlmIChvcmRlcmVkQ29sdW1ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbCBvZiBvcmRlcmVkQ29sdW1ucykge1xuICAgICAgICAgICAgICAgIGl0ZW1zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWVBID0gdGhpcy5nZXRDZWxsVmFsdWUoYSwgY29sLmFjY2Vzc29yKSBhcyBzdHJpbmcgfCBudW1iZXI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlQiA9IHRoaXMuZ2V0Q2VsbFZhbHVlKGIsIGNvbC5hY2Nlc3NvcikgYXMgc3RyaW5nIHwgbnVtYmVyO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2wub3JkZXIgPT09ICdBU0MnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVBID4gdmFsdWVCKSByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZUEgPCB2YWx1ZUIpIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlQSA8IHZhbHVlQikgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVBID4gdmFsdWVCKSByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYSBlbCBtYXgtaGVpZ2h0IGRlIGxhIHRhYmxhIGJhc2FkbyBlbiBlbCB0YW1hw7FvXG4gICAgICogQHBhcmFtIHNpemUgLSBUYW1hw7FvIGNvbmZpZ3VyYWRvICgwID0gc2luIGzDrW1pdGUpXG4gICAgICogQHJldHVybnMgU3RyaW5nIENTUyBwYXJhIG1heC1oZWlnaHQgbyB1bmRlZmluZWQgc2kgc2luIGzDrW1pdGVcbiAgICAgKi9cbiAgICBnZXRUYWJsZU1heEhlaWdodChzaXplOiBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoc2l6ZSA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOyAvLyBTaW4gbMOtbWl0ZSBkZSBhbHR1cmFcbiAgICAgICAgfVxuICAgICAgICAvLyBBbHR1cmEgYmFzZSBkZSA0MDBweCAqIHNpemVcbiAgICAgICAgY29uc3QgYmFzZUhlaWdodCA9IDQwMDtcbiAgICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gTWF0aC5yb3VuZChiYXNlSGVpZ2h0ICogc2l6ZSk7XG4gICAgICAgIHJldHVybiBgJHttYXhIZWlnaHR9cHhgO1xuICAgIH1cbn1cbiJdfQ==
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS11dGlscy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy91aS9zcmMvbGliL3RhYmxlL3RhYmxlLWRhdGEtdXRpbHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQzs7Ozs7Ozs7R0FRRztBQUlILE1BQU0sT0FBTyxxQkFBcUI7SUFFaEM7Ozs7O09BS0c7SUFDSCxZQUFZLENBQW9DLEdBQU0sRUFBRSxRQUFnQjtRQUN0RSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFDRCxPQUFRLEdBQStCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsY0FBYyxDQUFDLEdBQTRCLEVBQUUsUUFBZ0I7UUFDM0QsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNqRCxPQUFPLE9BQU8sSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFFLE9BQW1DLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN4RyxDQUFDLEVBQUUsR0FBYyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsZUFBZSxDQUFDLEtBQWMsRUFBRSxHQUFvQjtRQUNsRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEtBQWMsRUFBRSxHQUFvQjtRQUM1RCxJQUFJLEtBQUss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QUN2QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNoRCxPQUFPLEdBQUcsU0FBUyxJQUFJLENBQUM7SUFDMUIsQ0FBQzt3R0E1S1UscUJBQXFCOzRHQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7NEZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEM4MFRhYmxlQ29sRGVmIH0gZnJvbSAnLi90YWJsZS50eXBlcyc7XG5cbi8qKlxuICogU2VydmljaW8gcGFyYSB1dGlsaWRhZGVzIGRlIG1hbmlwdWxhY2nDs24gZGUgZGF0b3MgZW4gdGFibGFzIEM4MFxuICpcbiAqIFByb3BvcmNpb25hIG3DqXRvZG9zIHBhcmE6XG4gKiAtIEFjY2VzbyBhIHZhbG9yZXMgZGUgY2VsZGFzIChpbmNsdXllbmRvIHByb3BpZWRhZGVzIGFuaWRhZGFzKVxuICogLSBGb3JtYXRlbyBkZSB2YWxvcmVzIHBhcmEgZGlzcGxheVxuICogLSBHZXN0acOzbiBkZSBlbnVtcyB5IGNvbG9yZXNcbiAqIC0gT3JkZW5hbWllbnRvIGRlIGRhdG9zXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlRGF0YVV0aWxzU2VydmljZSB7XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZWwgdmFsb3IgZGUgdW5hIGNlbGRhIHVzYW5kbyBlbCBhY2Nlc3Nvciwgc29wb3J0YW5kbyBub3RhY2nDs24gZGUgcHVudG8gcGFyYSBwcm9waWVkYWRlcyBhbmlkYWRhc1xuICAgKiBAcGFyYW0gcm93IC0gTGEgZmlsYSBkZSBkYXRvc1xuICAgKiBAcGFyYW0gYWNjZXNzb3IgLSBFbCBhY2Nlc3NvciBkZSBsYSBjb2x1bW5hXG4gICAqIEByZXR1cm5zIEVsIHZhbG9yIGRlIGxhIGNlbGRhXG4gICAqL1xuICBnZXRDZWxsVmFsdWU8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+Pihyb3c6IFQsIGFjY2Vzc29yOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgICBpZiAoYWNjZXNzb3IuaW5jbHVkZXMoJy4nKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBhY2Nlc3Nvcik7XG4gICAgfVxuICAgIHJldHVybiAocm93IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVthY2Nlc3Nvcl07XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBlbCB2YWxvciBkZSB1biBvYmpldG8gdXNhbmRvIG5vdGFjacOzbiBkZSBwdW50byAoZWo6ICd0YXNrLm5hbWUnKVxuICAgKiBAcGFyYW0gb2JqIC0gT2JqZXRvIGRlbCBjdWFsIG9idGVuZXIgZWwgdmFsb3JcbiAgICogQHBhcmFtIGFjY2Vzc29yIC0gUnV0YSBkZSBhY2Nlc28gdXNhbmRvIG5vdGFjacOzbiBkZSBwdW50b1xuICAgKiBAcmV0dXJucyBFbCB2YWxvciBhbmlkYWRvIG8gdW5kZWZpbmVkXG4gICAqL1xuICBnZXROZXN0ZWRWYWx1ZShvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBhY2Nlc3Nvcjogc3RyaW5nKTogdW5rbm93biB7XG4gICAgcmV0dXJuIGFjY2Vzc29yLnNwbGl0KCcuJykucmVkdWNlKChjdXJyZW50LCBrZXkpID0+IHtcbiAgICAgIHJldHVybiBjdXJyZW50ICYmIHR5cGVvZiBjdXJyZW50ID09PSAnb2JqZWN0JyA/IChjdXJyZW50IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtrZXldIDogdW5kZWZpbmVkO1xuICAgIH0sIG9iaiBhcyB1bmtub3duKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXZ1ZWx2ZSBlbCB2YWxvciBkZSBkaXNwbGF5IHBhcmEgdW5hIGNlbGRhLCBtb3N0cmFuZG8gJy0nIHBhcmEgdmFsb3JlcyBmYWxzeSBleGNlcHRvIDAsIGZhbHNlIHkgb2JqZXRvcy9hcnJheXMgdmFjw61vc1xuICAgKiBAcGFyYW0gdmFsdWUgLSBWYWxvciBhIGZvcm1hdGVhclxuICAgKiBAcGFyYW0gY29sIC0gRGVmaW5pY2nDs24gZGUgY29sdW1uYSAob3BjaW9uYWwpIHBhcmEgZm9ybWF0ZW8gZXNwZWPDrWZpY28gcG9yIHRpcG9cbiAgICogQHJldHVybnMgQ2FkZW5hIGZvcm1hdGVhZGEgcGFyYSBkaXNwbGF5XG4gICAqL1xuICBnZXREaXNwbGF5VmFsdWUodmFsdWU6IHVua25vd24sIGNvbD86IEM4MFRhYmxlQ29sRGVmKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXRWYWx1ZUJ5VHlwZSh2YWx1ZSwgY29sKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0VmFsdWVCeVR5cGUodmFsdWU6IHVua25vd24sIGNvbD86IEM4MFRhYmxlQ29sRGVmKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT09IDApIHJldHVybiAnMCc7XG4gICAgaWYgKHZhbHVlID09PSBmYWxzZSkgcmV0dXJuICdmYWxzZSc7XG4gICAgaWYgKGNvbD8udHlwZSA9PT0gJ2RhdGUnICYmIHZhbHVlKSByZXR1cm4gdGhpcy5mb3JtYXREYXRlVmFsdWUodmFsdWUpO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSByZXR1cm4gdGhpcy5mb3JtYXRPYmplY3RWYWx1ZSh2YWx1ZSk7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuICctJztcbiAgICByZXR1cm4gdGhpcy5mb3JtYXRQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFByaW1pdGl2ZVZhbHVlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuICctJztcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXRlYSB1biB2YWxvciBkZSBmZWNoYSBhIGZvcm1hdG8gbGVnaWJsZVxuICAgKiBAcGFyYW0gdmFsdWUgLSBWYWxvciBkZSBmZWNoYSAoRGF0ZSwgc3RyaW5nIElTTywgdGltZXN0YW1wKVxuICAgKiBAcmV0dXJucyBGZWNoYSBmb3JtYXRlYWRhIGNvbW8gREQvTU0vWVlZWSBISDpNTVxuICAgKi9cbiAgcHJpdmF0ZSBmb3JtYXREYXRlVmFsdWUodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5wYXJzZURhdGUodmFsdWUpO1xuICAgICAgaWYgKCFkYXRlIHx8IE51bWJlci5pc05hTihkYXRlLmdldFRpbWUoKSkpIHJldHVybiAnLSc7XG5cbiAgICAgIGNvbnN0IGRheSA9IFN0cmluZyhkYXRlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgIGNvbnN0IG1vbnRoID0gU3RyaW5nKGRhdGUuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgY29uc3QgaG91cnMgPSBTdHJpbmcoZGF0ZS5nZXRIb3VycygpKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgY29uc3QgbWludXRlcyA9IFN0cmluZyhkYXRlLmdldE1pbnV0ZXMoKSkucGFkU3RhcnQoMiwgJzAnKTtcblxuICAgICAgcmV0dXJuIGAke2RheX0vJHttb250aH0vJHt5ZWFyfSAke2hvdXJzfToke21pbnV0ZXN9YDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiAnLSc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZURhdGUodmFsdWU6IHVua25vd24pOiBEYXRlIHwgbnVsbCB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIHZhbHVlO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdE9iamVjdFZhbHVlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiAnW29iamVjdCBPYmplY3RdJztcbiAgICB9XG4gIH0gICAgLyoqXG4gICAgICogT2J0aWVuZSBlbCB0ZXh0byBkZSBkaXNwbGF5IHBhcmEgdW4gdmFsb3IgZW51bVxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFZhbG9yIGRlbCBlbnVtXG4gICAgICogQHBhcmFtIGNvbCAtIERlZmluaWNpw7NuIGRlIGxhIGNvbHVtbmFcbiAgICAgKiBAcmV0dXJucyBUZXh0byBmb3JtYXRlYWRvIGRlbCBlbnVtXG4gICAgICovXG4gIGdldEVudW1EaXNwbGF5VmFsdWUodmFsdWU6IHVua25vd24sIGNvbDogQzgwVGFibGVDb2xEZWYpOiBzdHJpbmcge1xuICAgIGlmICghY29sLmVudW0gfHwgKHZhbHVlICE9PSAwICYmICF2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAnLSc7XG4gICAgfVxuICAgIGNvbnN0IGRpc3BsYXlWYWx1ZSA9IGNvbC5lbnVtW3ZhbHVlIGFzIHN0cmluZyB8IG51bWJlcl07XG4gICAgcmV0dXJuIChcbiAgICAgIGRpc3BsYXlWYWx1ZSB8fFxuICAgICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJ1xuICAgICAgICA/IFN0cmluZyh2YWx1ZSlcbiAgICAgICAgOiAnLScpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGxhcyBvcGNpb25lcyBkZWwgZW51bSBjb21vIGFycmF5IHBhcmEgZHJvcGRvd25zIHNlbGVjdFxuICAgKiBAcGFyYW0gY29sIC0gRGVmaW5pY2nDs24gZGUgbGEgY29sdW1uYVxuICAgKiBAcmV0dXJucyBBcnJheSBkZSBvcGNpb25lcyBjb24gdmFsdWUgeSBsYWJlbFxuICAgKi9cbiAgZ2V0RW51bU9wdGlvbnMoY29sOiBDODBUYWJsZUNvbERlZik6IHsgdmFsdWU6IHN0cmluZyB8IG51bWJlcjsgbGFiZWw6IHN0cmluZyB9W10ge1xuICAgIGlmICghY29sLmVudW0pIHJldHVybiBbXTtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoY29sLmVudW0pLm1hcCgoW3ZhbHVlLCBsYWJlbF0pID0+ICh7XG4gICAgICB2YWx1ZTogTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpID8gdmFsdWUgOiBOdW1iZXIodmFsdWUpLFxuICAgICAgbGFiZWwsXG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZWwgY29sb3IgQ1NTIHBhcmEgdW4gdmFsb3IgZGUgY2VsZGEgYmFzYWRvIGVuIGxhIGNvbmZpZ3VyYWNpw7NuIGRlIGNvbG9yIGRlIGxhIGNvbHVtbmFcbiAgICogQHBhcmFtIHZhbHVlIC0gVmFsb3IgZGUgbGEgY2VsZGFcbiAgICogQHBhcmFtIGNvbCAtIERlZmluaWNpw7NuIGRlIGxhIGNvbHVtbmFcbiAgICogQHJldHVybnMgQ29sb3IgQ1NTIG8gdW5kZWZpbmVkIHNpIG5vIGhheSBjb25maWd1cmFjacOzblxuICAgKi9cbiAgZ2V0Q2VsbENvbG9yKHZhbHVlOiB1bmtub3duLCBjb2w6IEM4MFRhYmxlQ29sRGVmKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIWNvbC5jb2xvciB8fCAodmFsdWUgIT09IDAgJiYgIXZhbHVlKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIGNvbC5jb2xvclt2YWx1ZSBhcyBzdHJpbmcgfCBudW1iZXJdO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwbGljYSBvcmRlbmFtaWVudG8gYSBsb3MgaXRlbXMgYmFzw6FuZG9zZSBlbiBsYXMgY29sdW1uYXMgY29uIGNvbmZpZ3VyYWNpw7NuIGRlIG9yZGVuXG4gICAqIEBwYXJhbSBpdGVtcyAtIEFycmF5IGRlIGl0ZW1zIGEgb3JkZW5hciAoc2UgbW9kaWZpY2EgaW4tcGxhY2UpXG4gICAqIEBwYXJhbSBjb2x1bW5zIC0gRGVmaW5pY2lvbmVzIGRlIGNvbHVtbmFzXG4gICAqL1xuICBhcHBseVNvcnRpbmc8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihpdGVtczogVFtdLCBjb2x1bW5zOiBDODBUYWJsZUNvbERlZltdKTogdm9pZCB7XG4gICAgY29uc3Qgb3JkZXJlZENvbHVtbnMgPSBjb2x1bW5zLmZpbHRlcigoY29sKSA9PiBjb2wub3JkZXIpO1xuICAgIGlmIChvcmRlcmVkQ29sdW1ucy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IGNvbCBvZiBvcmRlcmVkQ29sdW1ucykge1xuICAgICAgICBpdGVtcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWVBID0gdGhpcy5nZXRDZWxsVmFsdWUoYSwgY29sLmFjY2Vzc29yKSBhcyBzdHJpbmcgfCBudW1iZXI7XG4gICAgICAgICAgY29uc3QgdmFsdWVCID0gdGhpcy5nZXRDZWxsVmFsdWUoYiwgY29sLmFjY2Vzc29yKSBhcyBzdHJpbmcgfCBudW1iZXI7XG5cbiAgICAgICAgICBpZiAoY29sLm9yZGVyID09PSAnQVNDJykge1xuICAgICAgICAgICAgaWYgKHZhbHVlQSA+IHZhbHVlQikgcmV0dXJuIDE7XG4gICAgICAgICAgICBpZiAodmFsdWVBIDwgdmFsdWVCKSByZXR1cm4gLTE7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHZhbHVlQSA8IHZhbHVlQikgcmV0dXJuIDE7XG4gICAgICAgICAgICBpZiAodmFsdWVBID4gdmFsdWVCKSByZXR1cm4gLTE7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhIGVsIG1heC1oZWlnaHQgZGUgbGEgdGFibGEgYmFzYWRvIGVuIGVsIHRhbWHDsW9cbiAgICogQHBhcmFtIHNpemUgLSBUYW1hw7FvIGNvbmZpZ3VyYWRvICgwID0gc2luIGzDrW1pdGUpXG4gICAqIEByZXR1cm5zIFN0cmluZyBDU1MgcGFyYSBtYXgtaGVpZ2h0IG8gdW5kZWZpbmVkIHNpIHNpbiBsw61taXRlXG4gICAqL1xuICBnZXRUYWJsZU1heEhlaWdodChzaXplOiBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmIChzaXplIDw9IDApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7IC8vIFNpbiBsw61taXRlIGRlIGFsdHVyYVxuICAgIH1cbiAgICAvLyBBbHR1cmEgYmFzZSBkZSA0MDBweCAqIHNpemVcbiAgICBjb25zdCBiYXNlSGVpZ2h0ID0gNDAwO1xuICAgIGNvbnN0IG1heEhlaWdodCA9IE1hdGgucm91bmQoYmFzZUhlaWdodCAqIHNpemUpO1xuICAgIHJldHVybiBgJHttYXhIZWlnaHR9cHhgO1xuICB9XG59XG4iXX0=
@@ -18,88 +18,71 @@ export class TableSelectionService {
18
18
  const selectedItems = signal(new Set());
19
19
  const selectAllChecked = signal(false);
20
20
  const selectAllIndeterminate = signal(false);
21
+ const signals = { selectedItems, selectAllChecked, selectAllIndeterminate };
21
22
  return {
22
23
  selectedItems: selectedItems.asReadonly(),
23
24
  selectAllChecked: selectAllChecked.asReadonly(),
24
25
  selectAllIndeterminate: selectAllIndeterminate.asReadonly(),
25
- clearSelection: this.createClearSelectionFn(selectedItems, selectAllChecked, selectAllIndeterminate),
26
- toggleSelectAll: this.createToggleSelectAllFn(selectedItems, selectAllChecked, selectAllIndeterminate),
27
- toggleItemSelection: this.createToggleItemSelectionFn(selectedItems),
28
- isItemSelected: this.createIsItemSelectedFn(selectedItems),
29
- preserveSelection: this.createPreserveSelectionFn(selectedItems, selectAllChecked, selectAllIndeterminate),
30
- getSelectedItems: this.createGetSelectedItemsFn(selectedItems),
26
+ clearSelection: () => this.clearSelection(signals),
27
+ toggleSelectAll: (allItems) => this.toggleSelectAll(signals, allItems),
28
+ toggleItemSelection: (item, multiple) => this.toggleItemSelection(selectedItems, item, multiple),
29
+ isItemSelected: (item) => this.isItemSelected(selectedItems, item),
30
+ preserveSelection: (newData) => this.preserveSelection(signals, newData),
31
+ getSelectedItems: (allData) => this.getSelectedItems(selectedItems, allData),
31
32
  };
32
33
  }
33
- createClearSelectionFn(selectedItems, selectAllChecked, selectAllIndeterminate) {
34
- return () => {
35
- selectedItems.set(new Set());
36
- selectAllChecked.set(false);
37
- selectAllIndeterminate.set(false);
38
- };
34
+ clearSelection(signals) {
35
+ signals.selectedItems.set(new Set());
36
+ signals.selectAllChecked.set(false);
37
+ signals.selectAllIndeterminate.set(false);
39
38
  }
40
- createToggleSelectAllFn(selectedItems, selectAllChecked, selectAllIndeterminate) {
41
- return (allItems) => {
42
- const currentSelection = selectedItems();
43
- if (currentSelection.size === allItems.length) {
44
- selectedItems.set(new Set());
45
- selectAllChecked.set(false);
46
- selectAllIndeterminate.set(false);
47
- }
48
- else {
49
- const allIds = new Set(allItems.map(item => item['id']));
50
- selectedItems.set(allIds);
51
- this.updateSelectAllState(allItems, allIds.size, selectAllChecked, selectAllIndeterminate);
52
- }
53
- };
39
+ toggleSelectAll(signals, allItems) {
40
+ const currentSelection = signals.selectedItems();
41
+ if (currentSelection.size === allItems.length) {
42
+ signals.selectedItems.set(new Set());
43
+ signals.selectAllChecked.set(false);
44
+ signals.selectAllIndeterminate.set(false);
45
+ }
46
+ else {
47
+ const allIds = new Set(allItems.map(item => item['id']));
48
+ signals.selectedItems.set(allIds);
49
+ this.updateSelectAllState(allItems, allIds.size, signals.selectAllChecked, signals.selectAllIndeterminate);
50
+ }
54
51
  }
55
- createToggleItemSelectionFn(selectedItems) {
56
- return (item, multiple) => {
57
- const id = item['id'];
58
- const currentSelection = new Set(selectedItems());
59
- if (!multiple) {
60
- if (currentSelection.has(id)) {
61
- currentSelection.clear();
62
- }
63
- else {
64
- currentSelection.clear();
65
- currentSelection.add(id);
66
- }
67
- }
68
- else if (currentSelection.has(id)) {
69
- currentSelection.delete(id);
70
- }
71
- else {
52
+ toggleItemSelection(selectedItems, item, multiple) {
53
+ const id = item['id'];
54
+ const currentSelection = new Set(selectedItems());
55
+ if (!multiple) {
56
+ currentSelection.clear();
57
+ if (!selectedItems().has(id)) {
72
58
  currentSelection.add(id);
73
59
  }
74
- selectedItems.set(currentSelection);
75
- };
60
+ }
61
+ else if (currentSelection.has(id)) {
62
+ currentSelection.delete(id);
63
+ }
64
+ else {
65
+ currentSelection.add(id);
66
+ }
67
+ selectedItems.set(currentSelection);
76
68
  }
77
- createIsItemSelectedFn(selectedItems) {
78
- return (item) => {
79
- const id = item['id'];
80
- return selectedItems().has(id);
81
- };
69
+ isItemSelected(selectedItems, item) {
70
+ return selectedItems().has(item['id']);
82
71
  }
83
- createPreserveSelectionFn(selectedItems, selectAllChecked, selectAllIndeterminate) {
84
- return (newData) => {
85
- const currentSelection = selectedItems();
86
- if (currentSelection.size === 0 || newData.length === 0) {
87
- selectedItems.set(new Set());
88
- selectAllChecked.set(false);
89
- selectAllIndeterminate.set(false);
90
- return;
91
- }
92
- const availableIds = new Set(newData.map(item => item['id']));
93
- const preservedSelection = new Set(Array.from(currentSelection).filter(id => availableIds.has(id)));
94
- selectedItems.set(preservedSelection);
95
- this.updateSelectAllState(newData, preservedSelection.size, selectAllChecked, selectAllIndeterminate);
96
- };
72
+ preserveSelection(signals, newData) {
73
+ const currentSelection = signals.selectedItems();
74
+ if (currentSelection.size === 0 || newData.length === 0) {
75
+ this.clearSelection(signals);
76
+ return;
77
+ }
78
+ const availableIds = new Set(newData.map(item => item['id']));
79
+ const preservedSelection = new Set(Array.from(currentSelection).filter(id => availableIds.has(id)));
80
+ signals.selectedItems.set(preservedSelection);
81
+ this.updateSelectAllState(newData, preservedSelection.size, signals.selectAllChecked, signals.selectAllIndeterminate);
97
82
  }
98
- createGetSelectedItemsFn(selectedItems) {
99
- return (allData) => {
100
- const selectedIds = selectedItems();
101
- return allData.filter(item => selectedIds.has(item['id']));
102
- };
83
+ getSelectedItems(selectedItems, allData) {
84
+ const selectedIds = selectedItems();
85
+ return allData.filter(item => selectedIds.has(item['id']));
103
86
  }
104
87
  updateSelectAllState(allItems, selectedCount, selectAllChecked, selectAllIndeterminate) {
105
88
  const totalCount = allItems.length;
@@ -117,10 +100,10 @@ export class TableSelectionService {
117
100
  }
118
101
  }
119
102
  /**
120
- * Emite los elementos seleccionados a través del EventEmitter proporcionado
103
+ * Emite los elementos seleccionados a través del output proporcionado
121
104
  * @param selectionState - Estado de selección
122
105
  * @param allData - Todos los datos de la tabla
123
- * @param selectableEmitter - EventEmitter para emitir la selección
106
+ * @param selectableEmitter - Output para emitir la selección
124
107
  */
125
108
  emitSelection(selectionState, allData, selectableEmitter) {
126
109
  const selectedItems = selectionState.getSelectedItems(allData);
@@ -135,4 +118,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
135
118
  providedIn: 'root'
136
119
  }]
137
120
  }] });
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2VsZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9saWIvdGFibGUvdGFibGUtc2VsZWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQWdCLE1BQU0sZUFBZSxDQUFDOztBQUdqRTs7Ozs7Ozs7R0FRRztBQUlILE1BQU0sT0FBTyxxQkFBcUI7SUFFOUI7OztPQUdHO0lBQ0gsb0JBQW9CO1FBQ2hCLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBVSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDakQsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0MsT0FBTztZQUNILGFBQWEsRUFBRSxhQUFhLENBQUMsVUFBVSxFQUFFO1lBQ3pDLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLFVBQVUsRUFBRTtZQUMvQyxzQkFBc0IsRUFBRSxzQkFBc0IsQ0FBQyxVQUFVLEVBQUU7WUFDM0QsY0FBYyxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUM7WUFDcEcsZUFBZSxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUM7WUFDdEcsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGFBQWEsQ0FBQztZQUNwRSxjQUFjLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQztZQUMxRCxpQkFBaUIsRUFBRSxJQUFJLENBQUMseUJBQXlCLENBQUMsYUFBYSxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDO1lBQzFHLGdCQUFnQixFQUFFLElBQUks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O1FBQ3JFLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFTyxvQkFBb0IsQ0FDeEIsUUFBYSxFQUNiLGFBQXFCLEVBQ3JCLGdCQUFvRCxFQUNwRCxzQkFBMEQ7UUFFMUQsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUVuQyxJQUFJLGFBQWEsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0QixnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsc0JBQXNCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUM7YUFBTSxJQUFJLGFBQWEsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN0QyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0Isc0JBQXNCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUM7YUFBTSxDQUFDO1lBQ0osZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsYUFBYSxDQUNULGNBQTRELEVBQzVELE9BQVksRUFDWixpQkFBb0M7UUFFcEMsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBUSxDQUFDO1FBQ3RFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxQyxDQUFDO3dHQTVKUSxxQkFBcUI7NEdBQXJCLHFCQUFxQixjQUZsQixNQUFNOzs0RkFFVCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsLCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElEIH0gZnJvbSAnLi90YWJsZS50eXBlcyc7XG5cbi8qKlxuICogU2VydmljaW8gcGFyYSBnZXN0aW9uYXIgbGEgc2VsZWNjacOzbiBkZSBlbGVtZW50b3MgZW4gdGFibGFzIEM4MFxuICpcbiAqIE1hbmVqYTpcbiAqIC0gU2VsZWNjacOzbiBzaW1wbGUgeSBtw7psdGlwbGVcbiAqIC0gRXN0YWRvIGRlIHNlbGVjY2nDs24gY29tcGxldGFcbiAqIC0gUHJlc2VydmFjacOzbiBkZSBzZWxlY2Npw7NuIHRyYXMgYWN0dWFsaXphY2lvbmVzIGRlIGRhdG9zXG4gKiAtIEVtaXNpw7NuIGRlIGV2ZW50b3MgZGUgc2VsZWNjacOzblxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlU2VsZWN0aW9uU2VydmljZSB7XG5cbiAgICAvKipcbiAgICAgKiBJbmljaWFsaXphIGVsIGVzdGFkbyBkZSBzZWxlY2Npw7NuIHBhcmEgdW5hIG51ZXZhIHRhYmxhXG4gICAgICogQHJldHVybnMgT2JqZXRvIGNvbiBzaWduYWxzIHkgbcOpdG9kb3MgZGUgc2VsZWNjacOzblxuICAgICAqL1xuICAgIGNyZWF0ZVNlbGVjdGlvblN0YXRlPF9UIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gc2lnbmFsPFNldDxJRD4+KG5ldyBTZXQoKSk7XG4gICAgICAgIGNvbnN0IHNlbGVjdEFsbENoZWNrZWQgPSBzaWduYWwoZmFsc2UpO1xuICAgICAgICBjb25zdCBzZWxlY3RBbGxJbmRldGVybWluYXRlID0gc2lnbmFsKGZhbHNlKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtczogc2VsZWN0ZWRJdGVtcy5hc1JlYWRvbmx5KCksXG4gICAgICAgICAgICBzZWxlY3RBbGxDaGVja2VkOiBzZWxlY3RBbGxDaGVja2VkLmFzUmVhZG9ubHkoKSxcbiAgICAgICAgICAgIHNlbGVjdEFsbEluZGV0ZXJtaW5hdGU6IHNlbGVjdEFsbEluZGV0ZXJtaW5hdGUuYXNSZWFkb25seSgpLFxuICAgICAgICAgICAgY2xlYXJTZWxlY3Rpb246IHRoaXMuY3JlYXRlQ2xlYXJTZWxlY3Rpb25GbihzZWxlY3RlZEl0ZW1zLCBzZWxlY3RBbGxDaGVja2VkLCBzZWxlY3RBbGxJbmRldGVybWluYXRlKSxcbiAgICAgICAgICAgIHRvZ2dsZVNlbGVjdEFsbDogdGhpcy5jcmVhdGVUb2dnbGVTZWxlY3RBbGxGbihzZWxlY3RlZEl0ZW1zLCBzZWxlY3RBbGxDaGVja2VkLCBzZWxlY3RBbGxJbmRldGVybWluYXRlKSxcbiAgICAgICAgICAgIHRvZ2dsZUl0ZW1TZWxlY3Rpb246IHRoaXMuY3JlYXRlVG9nZ2xlSXRlbVNlbGVjdGlvbkZuKHNlbGVjdGVkSXRlbXMpLFxuICAgICAgICAgICAgaXNJdGVtU2VsZWN0ZWQ6IHRoaXMuY3JlYXRlSXNJdGVtU2VsZWN0ZWRGbihzZWxlY3RlZEl0ZW1zKSxcbiAgICAgICAgICAgIHByZXNlcnZlU2VsZWN0aW9uOiB0aGlzLmNyZWF0ZVByZXNlcnZlU2VsZWN0aW9uRm4oc2VsZWN0ZWRJdGVtcywgc2VsZWN0QWxsQ2hlY2tlZCwgc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZSksXG4gICAgICAgICAgICBnZXRTZWxlY3RlZEl0ZW1zOiB0aGlzLmNyZWF0ZUdldFNlbGVjdGVkSXRlbXNGbihzZWxlY3RlZEl0ZW1zKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNsZWFyU2VsZWN0aW9uRm4oXG4gICAgICAgIHNlbGVjdGVkSXRlbXM6IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxTZXQ8SUQ+Pj4sXG4gICAgICAgIHNlbGVjdEFsbENoZWNrZWQ6IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxib29sZWFuPj4sXG4gICAgICAgIHNlbGVjdEFsbEluZGV0ZXJtaW5hdGU6IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxib29sZWFuPj5cbiAgICApIHtcbiAgICAgICAgcmV0dXJuICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMuc2V0KG5ldyBTZXQoKSk7XG4gICAgICAgICAgICBzZWxlY3RBbGxDaGVja2VkLnNldChmYWxzZSk7XG4gICAgICAgICAgICBzZWxlY3RBbGxJbmRldGVybWluYXRlLnNldChmYWxzZSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVUb2dnbGVTZWxlY3RBbGxGbjxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgICAgICBzZWxlY3RlZEl0ZW1zOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8U2V0PElEPj4+LFxuICAgICAgICBzZWxlY3RBbGxDaGVja2VkOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8Ym9vbGVhbj4+LFxuICAgICAgICBzZWxlY3RBbGxJbmRldGVybWluYXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8Ym9vbGVhbj4+XG4gICAgKSB7XG4gICAgICAgIHJldHVybiAoYWxsSXRlbXM6IFRbXSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFNlbGVjdGlvbiA9IHNlbGVjdGVkSXRlbXMoKTtcblxuICAgICAgICAgICAgaWYgKGN1cnJlbnRTZWxlY3Rpb24uc2l6ZSA9PT0gYWxsSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcy5zZXQobmV3IFNldCgpKTtcbiAgICAgICAgICAgICAgICBzZWxlY3RBbGxDaGVja2VkLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZS5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbGxJZHMgPSBuZXcgU2V0KGFsbEl0ZW1zLm1hcChpdGVtID0+IGl0ZW1bJ2lkJ10gYXMgSUQpKTtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnNldChhbGxJZHMpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0QWxsU3RhdGUoYWxsSXRlbXMsIGFsbElkcy5zaXplLCBzZWxlY3RBbGxDaGVja2VkLCBzZWxlY3RBbGxJbmRldGVybWluYXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVRvZ2dsZUl0ZW1TZWxlY3Rpb25GbjxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgICAgICBzZWxlY3RlZEl0ZW1zOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8U2V0PElEPj4+XG4gICAgKSB7XG4gICAgICAgIHJldHVybiAoaXRlbTogVCwgbXVsdGlwbGU6IGJvb2xlYW4pOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gaXRlbVsnaWQnXSBhcyBJRDtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb24gPSBuZXcgU2V0KHNlbGVjdGVkSXRlbXMoKSk7XG5cbiAgICAgICAgICAgIGlmICghbXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFNlbGVjdGlvbi5oYXMoaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3Rpb24uYWRkKGlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRTZWxlY3Rpb24uaGFzKGlkKSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3Rpb24uZGVsZXRlKGlkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFNlbGVjdGlvbi5hZGQoaWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnNldChjdXJyZW50U2VsZWN0aW9uKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUlzSXRlbVNlbGVjdGVkRm48VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgICAgICAgc2VsZWN0ZWRJdGVtczogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPFNldDxJRD4+PlxuICAgICkge1xuICAgICAgICByZXR1cm4gKGl0ZW06IFQpOiBib29sZWFuID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gaXRlbVsnaWQnXSBhcyBJRDtcbiAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZEl0ZW1zKCkuaGFzKGlkKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVByZXNlcnZlU2VsZWN0aW9uRm48VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgICAgICAgc2VsZWN0ZWRJdGVtczogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPFNldDxJRD4+PixcbiAgICAgICAgc2VsZWN0QWxsQ2hlY2tlZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPGJvb2xlYW4+PixcbiAgICAgICAgc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZTogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPGJvb2xlYW4+PlxuICAgICkge1xuICAgICAgICByZXR1cm4gKG5ld0RhdGE6IFRbXSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFNlbGVjdGlvbiA9IHNlbGVjdGVkSXRlbXMoKTtcblxuICAgICAgICAgICAgaWYgKGN1cnJlbnRTZWxlY3Rpb24uc2l6ZSA9PT0gMCB8fCBuZXdEYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMuc2V0KG5ldyBTZXQoKSk7XG4gICAgICAgICAgICAgICAgc2VsZWN0QWxsQ2hlY2tlZC5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHNlbGVjdEFsbEluZGV0ZXJtaW5hdGUuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZUlkcyA9IG5ldyBTZXQobmV3RGF0YS5tYXAoaXRlbSA9PiBpdGVtWydpZCddIGFzIElEKSk7XG4gICAgICAgICAgICBjb25zdCBwcmVzZXJ2ZWRTZWxlY3Rpb24gPSBuZXcgU2V0KFxuICAgICAgICAgICAgICAgIEFycmF5LmZyb20oY3VycmVudFNlbGVjdGlvbikuZmlsdGVyKGlkID0+IGF2YWlsYWJsZUlkcy5oYXMoaWQpKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcy5zZXQocHJlc2VydmVkU2VsZWN0aW9uKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0QWxsU3RhdGUobmV3RGF0YSwgcHJlc2VydmVkU2VsZWN0aW9uLnNpemUsIHNlbGVjdEFsbENoZWNrZWQsIHNlbGVjdEFsbEluZGV0ZXJtaW5hdGUpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlR2V0U2VsZWN0ZWRJdGVtc0ZuPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgICAgIHNlbGVjdGVkSXRlbXM6IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxTZXQ8SUQ+Pj5cbiAgICApIHtcbiAgICAgICAgcmV0dXJuIChhbGxEYXRhOiBUW10pOiBUW10gPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSBzZWxlY3RlZEl0ZW1zKCk7XG4gICAgICAgICAgICByZXR1cm4gYWxsRGF0YS5maWx0ZXIoaXRlbSA9PiBzZWxlY3RlZElkcy5oYXMoaXRlbVsnaWQnXSBhcyBJRCkpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlU2VsZWN0QWxsU3RhdGU8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgICAgICAgYWxsSXRlbXM6IFRbXSxcbiAgICAgICAgc2VsZWN0ZWRDb3VudDogbnVtYmVyLFxuICAgICAgICBzZWxlY3RBbGxDaGVja2VkOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8Ym9vbGVhbj4+LFxuICAgICAgICBzZWxlY3RBbGxJbmRldGVybWluYXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8Ym9vbGVhbj4+XG4gICAgKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRvdGFsQ291bnQgPSBhbGxJdGVtcy5sZW5ndGg7XG5cbiAgICAgICAgaWYgKHNlbGVjdGVkQ291bnQgPT09IDApIHtcbiAgICAgICAgICAgIHNlbGVjdEFsbENoZWNrZWQuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIHNlbGVjdEFsbEluZGV0ZXJtaW5hdGUuc2V0KGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZENvdW50ID09PSB0b3RhbENvdW50KSB7XG4gICAgICAgICAgICBzZWxlY3RBbGxDaGVja2VkLnNldCh0cnVlKTtcbiAgICAgICAgICAgIHNlbGVjdEFsbEluZGV0ZXJtaW5hdGUuc2V0KGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlbGVjdEFsbENoZWNrZWQuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIHNlbGVjdEFsbEluZGV0ZXJtaW5hdGUuc2V0KHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1pdGUgbG9zIGVsZW1lbnRvcyBzZWxlY2Npb25hZG9zIGEgdHJhdsOpcyBkZWwgRXZlbnRFbWl0dGVyIHByb3BvcmNpb25hZG9cbiAgICAgKiBAcGFyYW0gc2VsZWN0aW9uU3RhdGUgLSBFc3RhZG8gZGUgc2VsZWNjacOzblxuICAgICAqIEBwYXJhbSBhbGxEYXRhIC0gVG9kb3MgbG9zIGRhdG9zIGRlIGxhIHRhYmxhXG4gICAgICogQHBhcmFtIHNlbGVjdGFibGVFbWl0dGVyIC0gRXZlbnRFbWl0dGVyIHBhcmEgZW1pdGlyIGxhIHNlbGVjY2nDs25cbiAgICAgKi9cbiAgICBlbWl0U2VsZWN0aW9uPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgICAgIHNlbGVjdGlvblN0YXRlOiBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLmNyZWF0ZVNlbGVjdGlvblN0YXRlPixcbiAgICAgICAgYWxsRGF0YTogVFtdLFxuICAgICAgICBzZWxlY3RhYmxlRW1pdHRlcjogRXZlbnRFbWl0dGVyPFRbXT5cbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGlvblN0YXRlLmdldFNlbGVjdGVkSXRlbXMoYWxsRGF0YSkgYXMgVFtdO1xuICAgICAgICBzZWxlY3RhYmxlRW1pdHRlci5lbWl0KHNlbGVjdGVkSXRlbXMpO1xuICAgIH1cbn1cbiJdfQ==
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2VsZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9saWIvdGFibGUvdGFibGUtc2VsZWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQW9CLE1BQU0sZUFBZSxDQUFDOztBQUVyRTs7Ozs7Ozs7R0FRRztBQUlILE1BQU0sT0FBTyxxQkFBcUI7SUFFaEM7OztPQUdHO0lBQ0gsb0JBQW9CO1FBQ2xCLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBYyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDckQsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0MsTUFBTSxPQUFPLEdBQUcsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztRQUU1RSxPQUFPO1lBQ0wsYUFBYSxFQUFFLGFBQWEsQ0FBQyxVQUFVLEVBQUU7WUFDekMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsVUFBVSxFQUFFO1lBQy9DLHNCQUFzQixFQUFFLHNCQUFzQixDQUFDLFVBQVUsRUFBRTtZQUMzRCxjQUFjLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7WUFDbEQsZUFBZSxFQUFFLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUM7WUFDM0UsbUJBQW1CLEVBQUUsQ0FBQyxJQUFPLEVBQUUsUUFBaUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDO1lBQzVHLGNBQWMsRUFBRSxDQUFDLElBQU8s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Q0FBQztZQUN4QixnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsc0JBQXNCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLENBQUM7YUFBTSxJQUFJLGFBQWEsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN4QyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0Isc0JBQXNCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLENBQUM7YUFBTSxDQUFDO1lBQ04sZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsYUFBYSxDQUNYLGNBQTJELEVBQzNELE9BQVksRUFDWixpQkFBd0M7UUFFeEMsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9ELGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN4QyxDQUFDO3dHQXZKVSxxQkFBcUI7NEdBQXJCLHFCQUFxQixjQUZwQixNQUFNOzs0RkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsLCBPdXRwdXRFbWl0dGVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogU2VydmljaW8gcGFyYSBnZXN0aW9uYXIgbGEgc2VsZWNjacOzbiBkZSBlbGVtZW50b3MgZW4gdGFibGFzIEM4MFxuICpcbiAqIE1hbmVqYTpcbiAqIC0gU2VsZWNjacOzbiBzaW1wbGUgeSBtw7psdGlwbGVcbiAqIC0gRXN0YWRvIGRlIHNlbGVjY2nDs24gY29tcGxldGFcbiAqIC0gUHJlc2VydmFjacOzbiBkZSBzZWxlY2Npw7NuIHRyYXMgYWN0dWFsaXphY2lvbmVzIGRlIGRhdG9zXG4gKiAtIEVtaXNpw7NuIGRlIGV2ZW50b3MgZGUgc2VsZWNjacOzblxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUYWJsZVNlbGVjdGlvblNlcnZpY2Uge1xuXG4gIC8qKlxuICAgKiBJbmljaWFsaXphIGVsIGVzdGFkbyBkZSBzZWxlY2Npw7NuIHBhcmEgdW5hIG51ZXZhIHRhYmxhXG4gICAqIEByZXR1cm5zIE9iamV0byBjb24gc2lnbmFscyB5IG3DqXRvZG9zIGRlIHNlbGVjY2nDs25cbiAgICovXG4gIGNyZWF0ZVNlbGVjdGlvblN0YXRlPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IHNpZ25hbDxTZXQ8c3RyaW5nPj4obmV3IFNldCgpKTtcbiAgICBjb25zdCBzZWxlY3RBbGxDaGVja2VkID0gc2lnbmFsKGZhbHNlKTtcbiAgICBjb25zdCBzZWxlY3RBbGxJbmRldGVybWluYXRlID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIGNvbnN0IHNpZ25hbHMgPSB7IHNlbGVjdGVkSXRlbXMsIHNlbGVjdEFsbENoZWNrZWQsIHNlbGVjdEFsbEluZGV0ZXJtaW5hdGUgfTtcblxuICAgIHJldHVybiB7XG4gICAgICBzZWxlY3RlZEl0ZW1zOiBzZWxlY3RlZEl0ZW1zLmFzUmVhZG9ubHkoKSxcbiAgICAgIHNlbGVjdEFsbENoZWNrZWQ6IHNlbGVjdEFsbENoZWNrZWQuYXNSZWFkb25seSgpLFxuICAgICAgc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZTogc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZS5hc1JlYWRvbmx5KCksXG4gICAgICBjbGVhclNlbGVjdGlvbjogKCkgPT4gdGhpcy5jbGVhclNlbGVjdGlvbihzaWduYWxzKSxcbiAgICAgIHRvZ2dsZVNlbGVjdEFsbDogKGFsbEl0ZW1zOiBUW10pID0+IHRoaXMudG9nZ2xlU2VsZWN0QWxsKHNpZ25hbHMsIGFsbEl0ZW1zKSxcbiAgICAgIHRvZ2dsZUl0ZW1TZWxlY3Rpb246IChpdGVtOiBULCBtdWx0aXBsZTogYm9vbGVhbikgPT4gdGhpcy50b2dnbGVJdGVtU2VsZWN0aW9uKHNlbGVjdGVkSXRlbXMsIGl0ZW0sIG11bHRpcGxlKSxcbiAgICAgIGlzSXRlbVNlbGVjdGVkOiAoaXRlbTogVCkgPT4gdGhpcy5pc0l0ZW1TZWxlY3RlZChzZWxlY3RlZEl0ZW1zLCBpdGVtKSxcbiAgICAgIHByZXNlcnZlU2VsZWN0aW9uOiAobmV3RGF0YTogVFtdKSA9PiB0aGlzLnByZXNlcnZlU2VsZWN0aW9uKHNpZ25hbHMsIG5ld0RhdGEpLFxuICAgICAgZ2V0U2VsZWN0ZWRJdGVtczogKGFsbERhdGE6IFRbXSkgPT4gdGhpcy5nZXRTZWxlY3RlZEl0ZW1zKHNlbGVjdGVkSXRlbXMsIGFsbERhdGEpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNsZWFyU2VsZWN0aW9uKHNpZ25hbHM6IHtcbiAgICBzZWxlY3RlZEl0ZW1zOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8U2V0PHN0cmluZz4+PjtcbiAgICBzZWxlY3RBbGxDaGVja2VkOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8Ym9vbGVhbj4+O1xuICAgIHNlbGVjdEFsbEluZGV0ZXJtaW5hdGU6IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxib29sZWFuPj47XG4gIH0pOiB2b2lkIHtcbiAgICBzaWduYWxzLnNlbGVjdGVkSXRlbXMuc2V0KG5ldyBTZXQoKSk7XG4gICAgc2lnbmFscy5zZWxlY3RBbGxDaGVja2VkLnNldChmYWxzZSk7XG4gICAgc2lnbmFscy5zZWxlY3RBbGxJbmRldGVybWluYXRlLnNldChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZVNlbGVjdEFsbDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgIHNpZ25hbHM6IHtcbiAgICAgIHNlbGVjdGVkSXRlbXM6IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxTZXQ8c3RyaW5nPj4+O1xuICAgICAgc2VsZWN0QWxsQ2hlY2tlZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPGJvb2xlYW4+PjtcbiAgICAgIHNlbGVjdEFsbEluZGV0ZXJtaW5hdGU6IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxib29sZWFuPj47XG4gICAgfSxcbiAgICBhbGxJdGVtczogVFtdXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb24gPSBzaWduYWxzLnNlbGVjdGVkSXRlbXMoKTtcblxuICAgIGlmIChjdXJyZW50U2VsZWN0aW9uLnNpemUgPT09IGFsbEl0ZW1zLmxlbmd0aCkge1xuICAgICAgc2lnbmFscy5zZWxlY3RlZEl0ZW1zLnNldChuZXcgU2V0KCkpO1xuICAgICAgc2lnbmFscy5zZWxlY3RBbGxDaGVja2VkLnNldChmYWxzZSk7XG4gICAgICBzaWduYWxzLnNlbGVjdEFsbEluZGV0ZXJtaW5hdGUuc2V0KGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYWxsSWRzID0gbmV3IFNldChhbGxJdGVtcy5tYXAoaXRlbSA9PiBpdGVtWydpZCddIGFzIHN0cmluZykpO1xuICAgICAgc2lnbmFscy5zZWxlY3RlZEl0ZW1zLnNldChhbGxJZHMpO1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3RBbGxTdGF0ZShhbGxJdGVtcywgYWxsSWRzLnNpemUsIHNpZ25hbHMuc2VsZWN0QWxsQ2hlY2tlZCwgc2lnbmFscy5zZWxlY3RBbGxJbmRldGVybWluYXRlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZUl0ZW1TZWxlY3Rpb248VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgICBzZWxlY3RlZEl0ZW1zOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8U2V0PHN0cmluZz4+PixcbiAgICBpdGVtOiBULFxuICAgIG11bHRpcGxlOiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGlkID0gaXRlbVsnaWQnXSBhcyBzdHJpbmc7XG4gICAgY29uc3QgY3VycmVudFNlbGVjdGlvbiA9IG5ldyBTZXQoc2VsZWN0ZWRJdGVtcygpKTtcblxuICAgIGlmICghbXVsdGlwbGUpIHtcbiAgICAgIGN1cnJlbnRTZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgIGlmICghc2VsZWN0ZWRJdGVtcygpLmhhcyhpZCkpIHtcbiAgICAgICAgY3VycmVudFNlbGVjdGlvbi5hZGQoaWQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY3VycmVudFNlbGVjdGlvbi5oYXMoaWQpKSB7XG4gICAgICBjdXJyZW50U2VsZWN0aW9uLmRlbGV0ZShpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRTZWxlY3Rpb24uYWRkKGlkKTtcbiAgICB9XG5cbiAgICBzZWxlY3RlZEl0ZW1zLnNldChjdXJyZW50U2VsZWN0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNJdGVtU2VsZWN0ZWQ8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgICBzZWxlY3RlZEl0ZW1zOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8U2V0PHN0cmluZz4+PixcbiAgICBpdGVtOiBUXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzZWxlY3RlZEl0ZW1zKCkuaGFzKGl0ZW1bJ2lkJ10gYXMgc3RyaW5nKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlc2VydmVTZWxlY3Rpb248VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgICBzaWduYWxzOiB7XG4gICAgICBzZWxlY3RlZEl0ZW1zOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8U2V0PHN0cmluZz4+PjtcbiAgICAgIHNlbGVjdEFsbENoZWNrZWQ6IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxib29sZWFuPj47XG4gICAgICBzZWxlY3RBbGxJbmRldGVybWluYXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8Ym9vbGVhbj4+O1xuICAgIH0sXG4gICAgbmV3RGF0YTogVFtdXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb24gPSBzaWduYWxzLnNlbGVjdGVkSXRlbXMoKTtcblxuICAgIGlmIChjdXJyZW50U2VsZWN0aW9uLnNpemUgPT09IDAgfHwgbmV3RGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oc2lnbmFscyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYXZhaWxhYmxlSWRzID0gbmV3IFNldChuZXdEYXRhLm1hcChpdGVtID0+IGl0ZW1bJ2lkJ10gYXMgc3RyaW5nKSk7XG4gICAgY29uc3QgcHJlc2VydmVkU2VsZWN0aW9uID0gbmV3IFNldChcbiAgICAgIEFycmF5LmZyb20oY3VycmVudFNlbGVjdGlvbikuZmlsdGVyKGlkID0+IGF2YWlsYWJsZUlkcy5oYXMoaWQpKVxuICAgICk7XG5cbiAgICBzaWduYWxzLnNlbGVjdGVkSXRlbXMuc2V0KHByZXNlcnZlZFNlbGVjdGlvbik7XG4gICAgdGhpcy51cGRhdGVTZWxlY3RBbGxTdGF0ZShuZXdEYXRhLCBwcmVzZXJ2ZWRTZWxlY3Rpb24uc2l6ZSwgc2lnbmFscy5zZWxlY3RBbGxDaGVja2VkLCBzaWduYWxzLnNlbGVjdEFsbEluZGV0ZXJtaW5hdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZWxlY3RlZEl0ZW1zPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgc2VsZWN0ZWRJdGVtczogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPFNldDxzdHJpbmc+Pj4sXG4gICAgYWxsRGF0YTogVFtdXG4gICk6IFRbXSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSBzZWxlY3RlZEl0ZW1zKCk7XG4gICAgcmV0dXJuIGFsbERhdGEuZmlsdGVyKGl0ZW0gPT4gc2VsZWN0ZWRJZHMuaGFzKGl0ZW1bJ2lkJ10gYXMgc3RyaW5nKSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVNlbGVjdEFsbFN0YXRlPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgYWxsSXRlbXM6IFRbXSxcbiAgICBzZWxlY3RlZENvdW50OiBudW1iZXIsXG4gICAgc2VsZWN0QWxsQ2hlY2tlZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPGJvb2xlYW4+PixcbiAgICBzZWxlY3RBbGxJbmRldGVybWluYXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8Ym9vbGVhbj4+XG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHRvdGFsQ291bnQgPSBhbGxJdGVtcy5sZW5ndGg7XG5cbiAgICBpZiAoc2VsZWN0ZWRDb3VudCA9PT0gMCkge1xuICAgICAgc2VsZWN0QWxsQ2hlY2tlZC5zZXQoZmFsc2UpO1xuICAgICAgc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZS5zZXQoZmFsc2UpO1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRDb3VudCA9PT0gdG90YWxDb3VudCkge1xuICAgICAgc2VsZWN0QWxsQ2hlY2tlZC5zZXQodHJ1ZSk7XG4gICAgICBzZWxlY3RBbGxJbmRldGVybWluYXRlLnNldChmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGVjdEFsbENoZWNrZWQuc2V0KGZhbHNlKTtcbiAgICAgIHNlbGVjdEFsbEluZGV0ZXJtaW5hdGUuc2V0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0ZSBsb3MgZWxlbWVudG9zIHNlbGVjY2lvbmFkb3MgYSB0cmF2w6lzIGRlbCBvdXRwdXQgcHJvcG9yY2lvbmFkb1xuICAgKiBAcGFyYW0gc2VsZWN0aW9uU3RhdGUgLSBFc3RhZG8gZGUgc2VsZWNjacOzblxuICAgKiBAcGFyYW0gYWxsRGF0YSAtIFRvZG9zIGxvcyBkYXRvcyBkZSBsYSB0YWJsYVxuICAgKiBAcGFyYW0gc2VsZWN0YWJsZUVtaXR0ZXIgLSBPdXRwdXQgcGFyYSBlbWl0aXIgbGEgc2VsZWNjacOzblxuICAgKi9cbiAgZW1pdFNlbGVjdGlvbjxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgIHNlbGVjdGlvblN0YXRlOiB7IGdldFNlbGVjdGVkSXRlbXM6IChhbGxEYXRhOiBUW10pID0+IFRbXSB9LFxuICAgIGFsbERhdGE6IFRbXSxcbiAgICBzZWxlY3RhYmxlRW1pdHRlcjogT3V0cHV0RW1pdHRlclJlZjxUW10+XG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSBzZWxlY3Rpb25TdGF0ZS5nZXRTZWxlY3RlZEl0ZW1zKGFsbERhdGEpO1xuICAgIHNlbGVjdGFibGVFbWl0dGVyLmVtaXQoc2VsZWN0ZWRJdGVtcyk7XG4gIH1cbn1cbiJdfQ==