@sumaris-net/ngx-components 2.8.1-beta3 → 2.8.1-beta4
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/doc/changelog.md +5 -0
- package/esm2022/src/app/core/table/row-field.component.mjs +3 -4
- package/esm2022/src/app/core/table/table.module.mjs +4 -7
- package/esm2022/src/app/core/table/table.pipes.mjs +2 -35
- package/esm2022/src/app/shared/pipes/pipes.module.mjs +70 -127
- package/esm2022/src/app/shared/pipes/property.pipes.mjs +54 -26
- package/fesm2022/sumaris-net.ngx-components.mjs +199 -260
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/app/core/table/table.module.d.ts +1 -1
- package/src/app/core/table/table.pipes.d.ts +0 -8
- package/src/app/shared/inputs.d.ts +1 -1
- package/src/app/shared/pipes/pipes.module.d.ts +1 -1
- package/src/app/shared/pipes/property.pipes.d.ts +14 -2
|
@@ -18,7 +18,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
18
18
|
type: Pipe,
|
|
19
19
|
args: [{ name: 'propertyGet' }]
|
|
20
20
|
}] });
|
|
21
|
-
|
|
21
|
+
class AbstractValuePipe {
|
|
22
22
|
dateFormat;
|
|
23
23
|
translate;
|
|
24
24
|
_i18nYes;
|
|
@@ -27,17 +27,19 @@ export class PropertyFormatPipe {
|
|
|
27
27
|
this.dateFormat = dateFormat;
|
|
28
28
|
this.translate = translate;
|
|
29
29
|
}
|
|
30
|
-
|
|
31
|
-
if (!
|
|
32
|
-
|
|
33
|
-
const definition = keyOrDefinition && typeof keyOrDefinition === 'object' && keyOrDefinition;
|
|
34
|
-
const key = definition?.key || keyOrDefinition;
|
|
35
|
-
if (!key) {
|
|
36
|
-
// Should never occur
|
|
37
|
-
console.warn("Invalid use of pipe 'formatProperty': missing key or definition");
|
|
38
|
-
return '';
|
|
30
|
+
get i18nYes() {
|
|
31
|
+
if (!this._i18nYes) {
|
|
32
|
+
this._i18nYes = this.translate.instant('COMMON.YES');
|
|
39
33
|
}
|
|
40
|
-
|
|
34
|
+
return this._i18nYes;
|
|
35
|
+
}
|
|
36
|
+
get i18nNo() {
|
|
37
|
+
if (!this._i18nNo) {
|
|
38
|
+
this._i18nNo = this.translate.instant('COMMON.NO');
|
|
39
|
+
}
|
|
40
|
+
return this._i18nNo;
|
|
41
|
+
}
|
|
42
|
+
valueToString(value, definition) {
|
|
41
43
|
if (isNil(value))
|
|
42
44
|
return value;
|
|
43
45
|
const type = definition?.type || typeof value;
|
|
@@ -49,17 +51,17 @@ export class PropertyFormatPipe {
|
|
|
49
51
|
case 'enum': {
|
|
50
52
|
// DEBUG
|
|
51
53
|
// console.debug('formatProperty by definition (type='enum', key=' +definition.key+ '):', value );
|
|
52
|
-
const item = (definition
|
|
54
|
+
const item = (definition?.values || [value]).find((item) => (isNotNil(item.key) ? item.key : item) === value);
|
|
53
55
|
return item.value || item;
|
|
54
56
|
}
|
|
55
57
|
case 'entity': {
|
|
56
|
-
if (definition
|
|
57
|
-
return definition
|
|
58
|
+
if (definition?.autocomplete?.displayWith) {
|
|
59
|
+
return definition?.autocomplete.displayWith(value);
|
|
58
60
|
}
|
|
59
|
-
return joinPropertiesPath(value, definition
|
|
61
|
+
return joinPropertiesPath(value, definition?.autocomplete?.attributes || ['label', 'name']) || undefined;
|
|
60
62
|
}
|
|
61
63
|
case 'boolean':
|
|
62
|
-
return
|
|
64
|
+
return value === 1 || value === true || value === 'true' ? this.i18nYes : this.i18nNo;
|
|
63
65
|
case 'integer':
|
|
64
66
|
case 'double':
|
|
65
67
|
case 'string':
|
|
@@ -67,17 +69,23 @@ export class PropertyFormatPipe {
|
|
|
67
69
|
return value;
|
|
68
70
|
}
|
|
69
71
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
return this._i18nYes;
|
|
72
|
+
}
|
|
73
|
+
export class PropertyFormatPipe extends AbstractValuePipe {
|
|
74
|
+
constructor(dateFormat, translate) {
|
|
75
|
+
super(dateFormat, translate);
|
|
75
76
|
}
|
|
76
|
-
|
|
77
|
-
if (!
|
|
78
|
-
|
|
77
|
+
transform(obj, keyOrDefinition) {
|
|
78
|
+
if (!obj)
|
|
79
|
+
return '';
|
|
80
|
+
const definition = keyOrDefinition && typeof keyOrDefinition === 'object' && keyOrDefinition;
|
|
81
|
+
const key = definition?.key || keyOrDefinition;
|
|
82
|
+
if (!key) {
|
|
83
|
+
// Should never occur
|
|
84
|
+
console.warn("Invalid use of pipe 'formatProperty': missing key or definition");
|
|
85
|
+
return '';
|
|
79
86
|
}
|
|
80
|
-
|
|
87
|
+
const value = obj[key];
|
|
88
|
+
return this.valueToString(value, definition);
|
|
81
89
|
}
|
|
82
90
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PropertyFormatPipe, deps: [{ token: i1.DateFormatService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
83
91
|
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: PropertyFormatPipe, name: "propertyFormat" });
|
|
@@ -92,4 +100,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
92
100
|
type: Injectable,
|
|
93
101
|
args: [{ providedIn: 'root' }]
|
|
94
102
|
}], ctorParameters: () => [{ type: i1.DateFormatService }, { type: i2.TranslateService }] });
|
|
95
|
-
|
|
103
|
+
export class ValueFormatPipe extends AbstractValuePipe {
|
|
104
|
+
constructor(dateFormat, translate) {
|
|
105
|
+
super(dateFormat, translate);
|
|
106
|
+
}
|
|
107
|
+
transform(value, definition) {
|
|
108
|
+
return this.valueToString(value, definition);
|
|
109
|
+
}
|
|
110
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ValueFormatPipe, deps: [{ token: i1.DateFormatService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
111
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: ValueFormatPipe, name: "valueFormat" });
|
|
112
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ValueFormatPipe, providedIn: 'root' });
|
|
113
|
+
}
|
|
114
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ValueFormatPipe, decorators: [{
|
|
115
|
+
type: Pipe,
|
|
116
|
+
args: [{
|
|
117
|
+
name: 'valueFormat',
|
|
118
|
+
}]
|
|
119
|
+
}, {
|
|
120
|
+
type: Injectable,
|
|
121
|
+
args: [{ providedIn: 'root' }]
|
|
122
|
+
}], ctorParameters: () => [{ type: i1.DateFormatService }, { type: i2.TranslateService }] });
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHkucGlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9waXBlcy9wcm9wZXJ0eS5waXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7QUFNdEYsTUFBTSxPQUFPLGVBQWU7SUFDMUIsU0FBUyxDQUFDLEdBQVEsRUFBRSxJQUEyRTtRQUM3RixPQUFPLGlCQUFpQixDQUN0QixHQUFHO1FBQ0gsT0FBTztRQUNQLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDM0UsZ0JBQWdCO1FBQ2hCLElBQUksSUFBSyxJQUFZLEVBQUUsWUFBWSxDQUNwQyxDQUFDO0lBQ0osQ0FBQzt1R0FUVSxlQUFlO3FHQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBRDNCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFOztBQWE3QixNQUFlLGlCQUFpQjtJQUtwQjtJQUNBO0lBTEYsUUFBUSxDQUFTO0lBQ2pCLE9BQU8sQ0FBUztJQUV4QixZQUNVLFVBQTZCLEVBQzdCLFNBQTJCO1FBRDNCLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQzdCLGNBQVMsR0FBVCxTQUFTLENBQWtCO0lBQ2xDLENBQUM7SUFFSixJQUFJLE9BQU87UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxP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QUMsSUFBSSxDQUFDLGlFQUFpRSxDQUFDLENBQUM7WUFDaEYsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDL0MsQ0FBQzt1R0FoQlUsa0JBQWtCO3FHQUFsQixrQkFBa0I7MkdBQWxCLGtCQUFrQixjQURMLE1BQU07OzJGQUNuQixrQkFBa0I7a0JBSjlCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGdCQUFnQjtpQkFDdkI7O2tCQUNBLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQXdCbEMsTUFBTSxPQUFPLGVBQWdCLFNBQVEsaUJBQWlCO0lBQ3BELFlBQVksVUFBNkIsRUFBRSxTQUEyQjtRQUNwRSxLQUFLLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBVSxFQUFFLFVBQStCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDL0MsQ0FBQzt1R0FQVSxlQUFlO3FHQUFmLGVBQWU7MkdBQWYsZUFBZSxjQURGLE1BQU07OzJGQUNuQixlQUFlO2tCQUozQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxhQUFhO2lCQUNwQjs7a0JBQ0EsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXRQcm9wZXJ0eUJ5UGF0aCwgaXNOaWwsIGlzTm90TmlsLCBqb2luUHJvcGVydGllc1BhdGggfSBmcm9tICcuLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgRGF0ZUZvcm1hdFNlcnZpY2UgfSBmcm9tICcuL2RhdGUtZm9ybWF0LnBpcGUnO1xuaW1wb3J0IHsgRm9ybUZpZWxkRGVmaW5pdGlvbiB9IGZyb20gJy4uL2Zvcm0vZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5AUGlwZSh7IG5hbWU6ICdwcm9wZXJ0eUdldCcgfSlcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0eUdldFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKG9iajogYW55LCBhcmdzOiBzdHJpbmcgfCBBcnJheTxzdHJpbmcgfCBudW1iZXI+IHwgeyBrZXk6IHN0cmluZzsgZGVmYXVsdFZhbHVlPzogYW55IH0pOiBhbnkge1xuICAgIHJldHVybiBnZXRQcm9wZXJ0eUJ5UGF0aChcbiAgICAgIG9iaixcbiAgICAgIC8vIFBhdGhcbiAgICAgIGFyZ3MgJiYgKHR5cGVvZiBhcmdzID09PSAnc3RyaW5nJyB8fCBBcnJheS5pc0FycmF5KGFyZ3MpID8gYXJncyA6IGFyZ3Mua2V5KSxcbiAgICAgIC8vIERlZmF1bHQgdmFsdWVcbiAgICAgIGFyZ3MgJiYgKGFyZ3MgYXMgYW55KT8uZGVmYXVsdFZhbHVlXG4gICAgKTtcbiAgfVxufVxuXG5hYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFZhbHVlUGlwZSB7XG4gIHByaXZhdGUgX2kxOG5ZZXM6IHN0cmluZztcbiAgcHJpdmF0ZSBfaTE4bk5vOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkYXRlRm9ybWF0OiBEYXRlRm9ybWF0U2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZVxuICApIHt9XG5cbiAgZ2V0IGkxOG5ZZXMoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX2kxOG5ZZXMpIHtcbiAgICAgIHRoaXMuX2kxOG5ZZXMgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdDT01NT04uWUVTJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9pMThuWWVzO1xuICB9XG5cbiAgZ2V0IGkxOG5ObygpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5faTE4bk5vKSB7XG4gICAgICB0aGlzLl9pMThuTm8gPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdDT01NT04uTk8nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2kxOG5ObztcbiAgfVxuXG4gIHByb3RlY3RlZCB2YWx1ZVRvU3RyaW5nKHZhbHVlOiBhbnksIGRlZmluaXRpb24/OiBGb3JtRmllbGREZWZpbml0aW9uKTogc3RyaW5nIHtcbiAgICBpZiAoaXNOaWwodmFsdWUpKSByZXR1cm4gdmFsdWU7XG4gICAgY29uc3QgdHlwZSA9IGRlZmluaXRpb24/LnR5cGUgfHwgdHlwZW9mIHZhbHVlO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVGb3JtYXQudHJhbnNmb3JtKHZhbHVlKSBhcyBzdHJpbmc7XG4gICAgICBjYXNlICdkYXRlVGltZSc6XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVGb3JtYXQudHJhbnNmb3JtKHZhbHVlLCB7IHRpbWU6IHRydWUgfSkgYXMgc3RyaW5nO1xuICAgICAgY2FzZSAnZW51bSc6IHtcbiAgICAgICAgLy8gREVCVUdcbiAgICAgICAgLy8gY29uc29sZS5kZWJ1ZygnZm9ybWF0UHJvcGVydHkgYnkgZGVmaW5pdGlvbiAodHlwZT0nZW51bScsIGtleT0nICtkZWZpbml0aW9uLmtleSsgJyk6JywgdmFsdWUgKTtcbiAgICAgICAgY29uc3QgaXRlbSA9ICgoZGVmaW5pdGlvbj8udmFsdWVzIGFzIGFueVtdKSB8fCBbdmFsdWVdKS5maW5kKChpdGVtKSA9PiAoaXNOb3ROaWwoaXRlbS5rZXkpID8gaXRlbS5rZXkgOiBpdGVtKSA9PT0gdmFsdWUpO1xuICAgICAgICByZXR1cm4gaXRlbS52YWx1ZSB8fCBpdGVtO1xuICAgICAgfVxuICAgICAgY2FzZSAnZW50aXR5Jzoge1xuICAgICAgICBpZiAoZGVmaW5pdGlvbj8uYXV0b2NvbXBsZXRlPy5kaXNwbGF5V2l0aCkge1xuICAgICAgICAgIHJldHVybiBkZWZpbml0aW9uPy5hdXRvY29tcGxldGUuZGlzcGxheVdpdGgodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBqb2luUHJvcGVydGllc1BhdGgodmFsdWUsIGRlZmluaXRpb24/LmF1dG9jb21wbGV0ZT8uYXR0cmlidXRlcyB8fCBbJ2xhYmVsJywgJ25hbWUnXSkgfHwgdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gMSB8fCB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gJ3RydWUnID8gdGhpcy5pMThuWWVzIDogdGhpcy5pMThuTm87XG4gICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgIGNhc2UgJ2RvdWJsZSc6XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdwcm9wZXJ0eUZvcm1hdCcsXG59KVxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0eUZvcm1hdFBpcGUgZXh0ZW5kcyBBYnN0cmFjdFZhbHVlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBjb25zdHJ1Y3RvcihkYXRlRm9ybWF0OiBEYXRlRm9ybWF0U2VydmljZSwgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG4gICAgc3VwZXIoZGF0ZUZvcm1hdCwgdHJhbnNsYXRlKTtcbiAgfVxuXG4gIHRyYW5zZm9ybShvYmo6IGFueSwga2V5T3JEZWZpbml0aW9uOiBzdHJpbmcgfCBGb3JtRmllbGREZWZpbml0aW9uKTogc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBpZiAoIW9iaikgcmV0dXJuICcnO1xuICAgIGNvbnN0IGRlZmluaXRpb24gPSBrZXlPckRlZmluaXRpb24gJiYgdHlwZW9mIGtleU9yRGVmaW5pdGlvbiA9PT0gJ29iamVjdCcgJiYga2V5T3JEZWZpbml0aW9uO1xuICAgIGNvbnN0IGtleSA9IGRlZmluaXRpb24/LmtleSB8fCAoa2V5T3JEZWZpbml0aW9uIGFzIHN0cmluZyk7XG4gICAgaWYgKCFrZXkpIHtcbiAgICAgIC8vIFNob3VsZCBuZXZlciBvY2N1clxuICAgICAgY29uc29sZS53YXJuKFwiSW52YWxpZCB1c2Ugb2YgcGlwZSAnZm9ybWF0UHJvcGVydHknOiBtaXNzaW5nIGtleSBvciBkZWZpbml0aW9uXCIpO1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IG9ialtrZXldO1xuICAgIHJldHVybiB0aGlzLnZhbHVlVG9TdHJpbmcodmFsdWUsIGRlZmluaXRpb24pO1xuICB9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3ZhbHVlRm9ybWF0Jyxcbn0pXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFZhbHVlRm9ybWF0UGlwZSBleHRlbmRzIEFic3RyYWN0VmFsdWVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKGRhdGVGb3JtYXQ6IERhdGVGb3JtYXRTZXJ2aWNlLCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICBzdXBlcihkYXRlRm9ybWF0LCB0cmFuc2xhdGUpO1xuICB9XG5cbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGRlZmluaXRpb246IEZvcm1GaWVsZERlZmluaXRpb24pOiBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlVG9TdHJpbmcodmFsdWUsIGRlZmluaXRpb24pO1xuICB9XG59XG4iXX0=
|