@mediusinc/mng-commons 0.9.3 → 0.9.7
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/README.md +3 -1
- package/dev-scripts/version-info.js +7 -2
- package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +17 -10
- package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +18 -11
- package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +2 -1
- package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +2 -1
- package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +2 -1
- package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +2 -1
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +3 -2
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +5 -4
- package/esm2020/lib/components/tableview/table/table.component.mjs +117 -52
- package/esm2020/lib/descriptors/column.descriptor.mjs +1 -1
- package/esm2020/lib/descriptors/field-validation.descriptor.mjs +1 -1
- package/esm2020/lib/descriptors/field.descriptor.mjs +10 -1
- package/esm2020/lib/models/version.model.mjs +1 -1
- package/esm2020/lib/types/type.model.mjs +1 -1
- package/esm2020/lib/utils/editor-formly.util.mjs +30 -1
- package/fesm2015/mediusinc-mng-commons.mjs +234 -105
- package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
- package/fesm2020/mediusinc-mng-commons.mjs +218 -98
- package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
- package/lib/components/form/autocomplete/autocomplete.component.d.ts +5 -2
- package/lib/components/form/dropdown/dropdown.component.d.ts +5 -2
- package/lib/components/tableview/table/table.component.d.ts +6 -3
- package/lib/descriptors/column.descriptor.d.ts +2 -2
- package/lib/descriptors/field-validation.descriptor.d.ts +3 -3
- package/lib/descriptors/field.descriptor.d.ts +4 -1
- package/lib/models/version.model.d.ts +1 -1
- package/lib/types/type.model.d.ts +3 -0
- package/lib/utils/editor-formly.util.d.ts +1 -0
- package/package.json +2 -3
- package/scss/mng-overrides/_mixins.scss +2 -0
- package/scss/{theme/default/_mng-variables.scss → mng-overrides/_variables.scss} +0 -0
- package/scss/theme/default/_mng-variables-theme-dark.scss +1 -1
- package/scss/theme/default/_mng-variables-theme-light.scss +1 -1
- package/version-info.json +5 -5
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { map } from 'rxjs/operators';
|
|
1
2
|
import { FieldInputDescriptor, FieldLookupDescriptor, FieldLookupEnumDescriptor, FieldManyEditorDescriptor, FieldManyToManyEditorDescriptor } from '../descriptors';
|
|
2
3
|
import { FieldInputTypeEnum, FieldLookupTypeEnum } from '../descriptors/types';
|
|
3
4
|
export class EditorFormlyUtil {
|
|
@@ -179,6 +180,7 @@ export class EditorFormlyUtil {
|
|
|
179
180
|
field.defaultValue = descriptor.defaultValue;
|
|
180
181
|
}
|
|
181
182
|
EditorFormlyUtil.addValidationsToFormlyField(field, descriptor.validations);
|
|
183
|
+
EditorFormlyUtil.addAsyncValidationsToFormlyField(field, descriptor.asyncValidations);
|
|
182
184
|
return field;
|
|
183
185
|
}
|
|
184
186
|
static addValidationsToFormlyField(config, validations) {
|
|
@@ -207,5 +209,32 @@ export class EditorFormlyUtil {
|
|
|
207
209
|
}
|
|
208
210
|
}
|
|
209
211
|
}
|
|
212
|
+
static addAsyncValidationsToFormlyField(config, asyncValidations) {
|
|
213
|
+
if (!config.asyncValidators) {
|
|
214
|
+
config.asyncValidators = {};
|
|
215
|
+
}
|
|
216
|
+
for (const validation of asyncValidations) {
|
|
217
|
+
if (typeof validation.validator === 'function') {
|
|
218
|
+
config.asyncValidators[validation.name] = {
|
|
219
|
+
expression: (control, field, options) => {
|
|
220
|
+
const validator = validation.validator;
|
|
221
|
+
const validatorObs = validator(control, field, options);
|
|
222
|
+
// formly validator only excepts true/false for validation
|
|
223
|
+
// map possible angular validator result to true/false
|
|
224
|
+
return validatorObs.pipe(map(value => (typeof value === 'boolean' ? value : value === null)));
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
if (typeof validation.message === 'function') {
|
|
228
|
+
config.asyncValidators[validation.name].message = validation.message;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
if (!Array.isArray(config.asyncValidators.asyncValidation)) {
|
|
233
|
+
config.asyncValidators.asyncValidation = [];
|
|
234
|
+
}
|
|
235
|
+
config.asyncValidators.asyncValidation.push(validation.name);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
210
239
|
}
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWZvcm1seS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi91dGlscy9lZGl0b3ItZm9ybWx5LnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUlILG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6QiwrQkFBK0IsRUFHbEMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUMsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUU3RSxNQUFNLE9BQU8sZ0JBQWdCO0lBQ2xCLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQyxVQUFpQztRQUM1RSxNQUFNLE1BQU0sR0FBd0IsRUFBRSxDQUFDO1FBRXZDLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO1lBQzVELGdCQUFnQjtZQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQ3JGO2FBQU07WUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDekU7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLFNBQXlDO1FBQ3ZFLE1BQU0sU0FBUyxHQUFzQjtZQUNqQyxJQUFJLEVBQUUsTUFBTTtZQUNaLFVBQVUsRUFBRSxFQUFFO1NBQ2pCLENBQUM7UUFDRixLQUFLLE1BQU0sR0FBRyxJQUFJLFNBQVMsRUFBRTtZQUN6QixNQUFNLFFBQVEsR0FB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LFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN0RDtTQUNKO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBYnN0cmFjdENvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtGb3JtbHlGaWVsZENvbmZpZ30gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5cbmltcG9ydCB7XG4gICAgQUZpZWxkRGVzY3JpcHRvcixcbiAgICBFZGl0b3JEZXNjcmlwdG9yLFxuICAgIEZpZWxkR3JvdXBEZXNjcmlwdG9yLFxuICAgIEZpZWxkSW5wdXREZXNjcmlwdG9yLFxuICAgIEZpZWxkTG9va3VwRGVzY3JpcHRvcixcbiAgICBGaWVsZExvb2t1cEVudW1EZXNjcmlwdG9yLFxuICAgIEZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3IsXG4gICAgRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvcixcbiAgICBGaWVsZFRhYkdyb3VwRGVzY3JpcHRvcixcbiAgICBGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yXG59IGZyb20gJy4uL2Rlc2NyaXB0b3JzJztcbmltcG9ydCB7RmllbGRJbnB1dFR5cGVFbnVtLCBGaWVsZExvb2t1cFR5cGVFbnVtfSBmcm9tICcuLi9kZXNjcmlwdG9ycy90eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBFZGl0b3JGb3JtbHlVdGlsIHtcbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUZvcm1seUNvbmZpZ0Zyb21EZXNjcmlwdG9yKGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3I8YW55Pik6IEZvcm1seUZpZWxkQ29uZmlnW10ge1xuICAgICAgICBjb25zdCBmaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBbXTtcblxuICAgICAgICBpZiAoZGVzY3JpcHRvci50YWJzLmxlbmd0aCA9PT0gMSAmJiBkZXNjcmlwdG9yLnRhYnNbMF0uZGVmYXVsdCkge1xuICAgICAgICAgICAgLy8gZG9udCB1c2UgdGFic1xuICAgICAgICAgICAgZmllbGRzLnB1c2goLi4uRWRpdG9yRm9ybWx5VXRpbC5jcmVhdGVGb3JtbHlHcm91cFR5cGUoZGVzY3JpcHRvci50YWJzWzBdLmZpZWxkcykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmllbGRzLnB1c2goLi4uRWRpdG9yRm9ybWx5VXRpbC5jcmVhdGVGb3JtbHlUYWJUeXBlKGRlc2NyaXB0b3IudGFicykpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkcztcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUZvcm1seVRhYlR5cGUodGFiR3JvdXBzOiBGaWVsZFRhYkdyb3VwRGVzY3JpcHRvcjxhbnk+W10pOiBGb3JtbHlGaWVsZENvbmZpZ1tdIHtcbiAgICAgICAgY29uc3QgdGFic0ZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZyA9IHtcbiAgICAgICAgICAgIHR5cGU6ICd0YWJzJyxcbiAgICAgICAgICAgIGZpZWxkR3JvdXA6IFtdXG4gICAgICAgIH07XG4gICAgICAgIGZvciAoY29uc3QgdGFiIG9mIHRhYkdyb3Vwcykge1xuICAgICAgICAgICAgY29uc3QgdGFiRmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnID0ge1xuICAgICAgICAgICAgICAgIGlkOiB0YWIubmFtZSxcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHt9LFxuICAgICAgICAgICAgICAgIGZpZWxkR3JvdXA6IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHRhYi50aXRsZSkge1xuICAgICAgICAgICAgICAgIHRhYkZpZWxkLnRlbXBsYXRlT3B0aW9ucyEubGFiZWwgPSB0YWIudGl0bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YWJGaWVsZC5maWVsZEdyb3VwIS5wdXNoKC4uLkVkaXRvckZvcm1seVV0aWwuY3JlYXRlRm9ybWx5R3JvdXBUeXBlKHRhYi5maWVsZHMpKTtcbiAgICAgICAgICAgIHRhYnNGaWVsZC5maWVsZEdyb3VwIS5wdXNoKHRhYkZpZWxkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3RhYnNGaWVsZF07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGb3JtbHlHcm91cFR5cGUoZ3JvdXBzOiBGaWVsZEdyb3VwRGVzY3JpcHRvcjxhbnk+W10pOiBGb3JtbHlGaWVsZENvbmZpZ1tdIHtcbiAgICAgICAgaWYgKGdyb3Vwcy5sZW5ndGggPT09IDEgJiYgZ3JvdXBzWzBdLmRlZmF1bHQpIHtcbiAgICAgICAgICAgIC8vIGRvbnQgdXNlIGZpZWxkc2V0LCBqdXN0IGNyZWF0ZSBmaWVsZHNcbiAgICAgICAgICAgIHJldHVybiBFZGl0b3JGb3JtbHlVdGlsLmNyZWF0ZUZvcm1seUZpZWxkcyhncm91cHNbMF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBzRmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdmaWVsZHNldCcsXG4gICAgICAgICAgICAgICAgZmllbGRHcm91cDogW11cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIGdyb3Vwcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwRmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICBpZDogZ3JvdXAubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yOiBncm91cFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBmaWVsZEdyb3VwOiBbXVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKGdyb3VwLnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwRmllbGQudGVtcGxhdGVPcHRpb25zIS5sYWJlbCA9IGdyb3VwLnRpdGxlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBncm91cEZpZWxkLmZpZWxkR3JvdXAhLnB1c2goLi4uRWRpdG9yRm9ybWx5VXRpbC5jcmVhdGVGb3JtbHlGaWVsZHMoZ3JvdXApKTtcbiAgICAgICAgICAgICAgICBncm91cHNGaWVsZC5maWVsZEdyb3VwIS5wdXNoKGdyb3VwRmllbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFtncm91cHNGaWVsZF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUZvcm1seUZpZWxkcyhkZXNjcmlwdG9yOiBGaWVsZEdyb3VwRGVzY3JpcHRvcjxhbnk+KTogRm9ybWx5RmllbGRDb25maWdbXSB7XG4gICAgICAgIGNvbnN0IGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGRlc2NyaXB0b3JGaWVsZCBvZiBkZXNjcmlwdG9yLmZpZWxkcykge1xuICAgICAgICAgICAgZmllbGRzLnB1c2goRWRpdG9yRm9ybWx5VXRpbC5jcmVhdGVGb3JtbHlGaWVsZChkZXNjcmlwdG9yRmllbGQpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyB3cmFwIGluIGdyb3VwIHRvIGJlIGFibGUgdG8gdXNlIGZsZXggZ3JpZFxuICAgICAgICBjb25zdCB3cmFwcGVyR3JvdXA6IEZvcm1seUZpZWxkQ29uZmlnID0ge1xuICAgICAgICAgICAgZmllbGRHcm91cENsYXNzTmFtZTogJ3AtZmx1aWQgZm9ybWdyaWQgZ3JpZCcsXG4gICAgICAgICAgICBmaWVsZEdyb3VwOiBmaWVsZHNcbiAgICAgICAgfTtcblxuICAgICAgICBFZGl0b3JGb3JtbHlVdGlsLmFkZFZhbGlkYXRpb25zVG9Gb3JtbHlGaWVsZCh3cmFwcGVyR3JvdXAsIGRlc2NyaXB0b3IudmFsaWRhdGlvbnMpO1xuXG4gICAgICAgIHJldHVybiBbd3JhcHBlckdyb3VwXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUZvcm1seUZpZWxkKGRlc2NyaXB0b3I6IEFGaWVsZERlc2NyaXB0b3I8YW55LCBhbnk+KTogRm9ybWx5RmllbGRDb25maWcge1xuICAgICAgICBjb25zdCBmaWVsZDogRm9ybWx5RmllbGRDb25maWcgPSB7XG4gICAgICAgICAgICBrZXk6IGRlc2NyaXB0b3IucHJvcGVydHksXG4gICAgICAgICAgICBleHByZXNzaW9uUHJvcGVydGllczoge30sXG4gICAgICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHt9XG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IGNsYXNzTmFtZSA9IGRlc2NyaXB0b3IuY2xhc3NOYW1lO1xuICAgICAgICBpZiAoIWNsYXNzTmFtZSkge1xuICAgICAgICAgICAgLy8gYXNzaWduIGRlZmF1bHQgZmllbGQgd2lkdGggdGhyb3VnaCBlbnRpcmUgcm93XG4gICAgICAgICAgICBjbGFzc05hbWUgPSAnY29sLTEyJztcbiAgICAgICAgfVxuICAgICAgICBmaWVsZC5jbGFzc05hbWUgPSBjbGFzc05hbWU7XG5cbiAgICAgICAgZmllbGQudGVtcGxhdGVPcHRpb25zIVsnZGVzY3JpcHRvciddID0gZGVzY3JpcHRvcjtcbiAgICAgICAgaWYgKGRlc2NyaXB0b3IgaW5zdGFuY2VvZiBGaWVsZElucHV0RGVzY3JpcHRvcikge1xuICAgICAgICAgICAgc3dpdGNoIChkZXNjcmlwdG9yLmZpZWxkVHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkhpZGRlbjpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uTGFiZWw6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnbGFiZWwnO1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgZmllbGQua2V5O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5UZXh0YXJlYTpcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICd0ZXh0YXJlYSc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLk51bWJlcjpcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdudW1iZXInO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMhLm1pbiA9IGRlc2NyaXB0b3IubnVtYmVyTWluO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMhLm1heCA9IGRlc2NyaXB0b3IubnVtYmVyTWF4O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5DdXJyZW5jeTpcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdjdXJyZW5jeSc7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucyEubWluID0gZGVzY3JpcHRvci5udW1iZXJNaW47XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucyEubWF4ID0gZGVzY3JpcHRvci5udW1iZXJNYXg7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLlN3aXRjaDpcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdzd2l0Y2gnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5SYWRpbzpcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdyYWRpbyc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkRhdGVwaWNrZXI6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnZGF0ZXBpY2tlcic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLk1hc2s6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnbWFzayc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkZpbGU6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnZmlsZSc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkN1c3RvbTpcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudHlwZSA9IGRlc2NyaXB0b3IuY3VzdG9tQ29tcG9uZW50TmFtZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdpbnB1dCc7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucyEubWluTGVuZ3RoID0gZGVzY3JpcHRvci5taW5MZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucyEubWF4TGVuZ3RoID0gZGVzY3JpcHRvci5tYXhMZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucyEucGF0dGVybiA9IGRlc2NyaXB0b3IucGF0dGVybjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvciBpbnN0YW5jZW9mIEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnZW51bSc7XG4gICAgICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvciBpbnN0YW5jZW9mIEZpZWxkTG9va3VwRGVzY3JpcHRvcikge1xuICAgICAgICAgICAgc3dpdGNoIChkZXNjcmlwdG9yLmxvb2t1cFR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkTG9va3VwVHlwZUVudW0uQXV0b2NvbXBsZXRlOlxuICAgICAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2F1dG9jb21wbGV0ZSc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRMb29rdXBUeXBlRW51bS5EaWFsb2c6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnZGlhbG9nJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZExvb2t1cFR5cGVFbnVtLkRyb3Bkb3duOlxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnZHJvcGRvd24nO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChkZXNjcmlwdG9yIGluc3RhbmNlb2YgRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvcikge1xuICAgICAgICAgICAgZmllbGQudHlwZSA9ICd0YWJsZS1kaWFsb2ctbXVsdGlzZWxlY3QnO1xuICAgICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IgaW5zdGFuY2VvZiBGaWVsZE1hbnlFZGl0b3JEZXNjcmlwdG9yKSB7XG4gICAgICAgICAgICBmaWVsZC50eXBlID0gJ3RhYmxlLWRpYWxvZy1mb3JtJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZXNjcmlwdG9yLmxhYmVsKSB7XG4gICAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMhLmxhYmVsID0gZGVzY3JpcHRvci5sYWJlbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZXNjcmlwdG9yLnJlcXVpcmVkRXhwcmVzc2lvbikge1xuICAgICAgICAgICAgZmllbGQuZXhwcmVzc2lvblByb3BlcnRpZXMhWyd0ZW1wbGF0ZU9wdGlvbnMucmVxdWlyZWQnXSA9IGRlc2NyaXB0b3IucmVxdWlyZWRFeHByZXNzaW9uO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZXNjcmlwdG9yLnJlcXVpcmVkKSB7XG4gICAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMhLnJlcXVpcmVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZXNjcmlwdG9yLmhpZGRlbkV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIGZpZWxkLmV4cHJlc3Npb25Qcm9wZXJ0aWVzIVsnaGlkZSddID0gZGVzY3JpcHRvci5oaWRkZW5FeHByZXNzaW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRlc2NyaXB0b3IuZGlzYWJsZWRFeHByZXNzaW9uKSB7XG4gICAgICAgICAgICBmaWVsZC5leHByZXNzaW9uUHJvcGVydGllcyFbJ3RlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCddID0gZGVzY3JpcHRvci5kaXNhYmxlZEV4cHJlc3Npb247XG4gICAgICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvci5kaXNhYmxlZCkge1xuICAgICAgICAgICAgZmllbGQudGVtcGxhdGVPcHRpb25zIS5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWVsZC5leHByZXNzaW9uUHJvcGVydGllcyFbJ3RlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCddID0gJ2Zvcm1TdGF0ZS5kaXNhYmxlZCc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGRlc2NyaXB0b3IuZGVmYXVsdFZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgZmllbGQuZGVmYXVsdFZhbHVlID0gZGVzY3JpcHRvci5kZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBFZGl0b3JGb3JtbHlVdGlsLmFkZFZhbGlkYXRpb25zVG9Gb3JtbHlGaWVsZChmaWVsZCwgZGVzY3JpcHRvci52YWxpZGF0aW9ucyk7XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYWRkVmFsaWRhdGlvbnNUb0Zvcm1seUZpZWxkKGNvbmZpZzogRm9ybWx5RmllbGRDb25maWcsIHZhbGlkYXRpb25zOiBBcnJheTxGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yPikge1xuICAgICAgICBpZiAoIWNvbmZpZy52YWxpZGF0b3JzKSB7XG4gICAgICAgICAgICBjb25maWcudmFsaWRhdG9ycyA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCB2YWxpZGF0aW9uIG9mIHZhbGlkYXRpb25zKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbGlkYXRpb24udmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvcnNbdmFsaWRhdGlvbi5uYW1lXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogKFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbDogQWJzdHJhY3RDb250cm9sLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWQ6IHN0cmluZ106IGFueTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JSZXMgPSB2YWxpZGF0aW9uLnZhbGlkYXRvciEoY29udHJvbCwgZmllbGQsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9ybWx5IHZhbGlkYXRvciBvbmx5IGV4Y2VwdHMgdHJ1ZS9mYWxzZSBmb3IgdmFsaWRhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFwIHBvc3NpYmxlIGFuZ3VsYXIgdmFsaWRhdG9yIHJlc3VsdCB0byB0cnVlL2ZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbGlkYXRvclJlcyA9PT0gJ2Jvb2xlYW4nID8gdmFsaWRhdG9yUmVzIDogdmFsaWRhdG9yUmVzID09PSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbGlkYXRpb24ubWVzc2FnZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb25maWcudmFsaWRhdG9yc1t2YWxpZGF0aW9uLm5hbWVdLm1lc3NhZ2UgPSB2YWxpZGF0aW9uLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29uZmlnLnZhbGlkYXRvcnMudmFsaWRhdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvcnMudmFsaWRhdGlvbiA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25maWcudmFsaWRhdG9ycy52YWxpZGF0aW9uLnB1c2godmFsaWRhdGlvbi5uYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWZvcm1seS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi91dGlscy9lZGl0b3ItZm9ybWx5LnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5DLE9BQU8sRUFJSCxvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsK0JBQStCLEVBR2xDLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLGtCQUFrQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFHN0UsTUFBTSxPQUFPLGdCQUFnQjtJQUNsQixNQUFNLENBQUMsZ0NBQWdDLENBQUMsVUFBaUM7UUFDNUUsTUFBTSxNQUFNLEdBQXdCLEVBQUUsQ0FBQztRQUV2QyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtZQUM1RCxnQkFBZ0I7WUFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUNyRjthQUFNO1lBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ3pFO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxTQUF5QztRQUN2RSxNQUFNLFNBQVMsR0FBc0I7WUFDakMsSUFBSSxFQUFFLE1BQU07WUFDWixVQUFVLEVBQUUsRUFBRTtTQUNqQixDQUFDO1FBQ0YsS0FBSyxN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VSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO2lCQUN4RTthQUNKO2lCQUFNO2dCQUNILElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLEVBQUU7b0JBQ3hELE1BQU0sQ0FBQyxlQUFlLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztpQkFDL0M7Z0JBQ0QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNoRTtTQUNKO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtGb3JtbHlGaWVsZENvbmZpZ30gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgICBBRmllbGREZXNjcmlwdG9yLFxuICAgIEVkaXRvckRlc2NyaXB0b3IsXG4gICAgRmllbGRHcm91cERlc2NyaXB0b3IsXG4gICAgRmllbGRJbnB1dERlc2NyaXB0b3IsXG4gICAgRmllbGRMb29rdXBEZXNjcmlwdG9yLFxuICAgIEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3IsXG4gICAgRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcixcbiAgICBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yLFxuICAgIEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yLFxuICAgIEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3Jcbn0gZnJvbSAnLi4vZGVzY3JpcHRvcnMnO1xuaW1wb3J0IHtGaWVsZElucHV0VHlwZUVudW0sIEZpZWxkTG9va3VwVHlwZUVudW19IGZyb20gJy4uL2Rlc2NyaXB0b3JzL3R5cGVzJztcbmltcG9ydCB7TW5nRmllbGRBc3luY1ZhbGlkYXRvcn0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgRWRpdG9yRm9ybWx5VXRpbCB7XG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGb3JtbHlDb25maWdGcm9tRGVzY3JpcHRvcihkZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9yPGFueT4pOiBGb3JtbHlGaWVsZENvbmZpZ1tdIHtcbiAgICAgICAgY29uc3QgZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW107XG5cbiAgICAgICAgaWYgKGRlc2NyaXB0b3IudGFicy5sZW5ndGggPT09IDEgJiYgZGVzY3JpcHRvci50YWJzWzBdLmRlZmF1bHQpIHtcbiAgICAgICAgICAgIC8vIGRvbnQgdXNlIHRhYnNcbiAgICAgICAgICAgIGZpZWxkcy5wdXNoKC4uLkVkaXRvckZvcm1seVV0aWwuY3JlYXRlRm9ybWx5R3JvdXBUeXBlKGRlc2NyaXB0b3IudGFic1swXS5maWVsZHMpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpZWxkcy5wdXNoKC4uLkVkaXRvckZvcm1seVV0aWwuY3JlYXRlRm9ybWx5VGFiVHlwZShkZXNjcmlwdG9yLnRhYnMpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWVsZHM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGb3JtbHlUYWJUeXBlKHRhYkdyb3VwczogRmllbGRUYWJHcm91cERlc2NyaXB0b3I8YW55PltdKTogRm9ybWx5RmllbGRDb25maWdbXSB7XG4gICAgICAgIGNvbnN0IHRhYnNGaWVsZDogRm9ybWx5RmllbGRDb25maWcgPSB7XG4gICAgICAgICAgICB0eXBlOiAndGFicycsXG4gICAgICAgICAgICBmaWVsZEdyb3VwOiBbXVxuICAgICAgICB9O1xuICAgICAgICBmb3IgKGNvbnN0IHRhYiBvZiB0YWJHcm91cHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYkZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICBpZDogdGFiLm5hbWUsXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7fSxcbiAgICAgICAgICAgICAgICBmaWVsZEdyb3VwOiBbXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh0YWIudGl0bGUpIHtcbiAgICAgICAgICAgICAgICB0YWJGaWVsZC50ZW1wbGF0ZU9wdGlvbnMhLmxhYmVsID0gdGFiLnRpdGxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFiRmllbGQuZmllbGRHcm91cCEucHVzaCguLi5FZGl0b3JGb3JtbHlVdGlsLmNyZWF0ZUZvcm1seUdyb3VwVHlwZSh0YWIuZmllbGRzKSk7XG4gICAgICAgICAgICB0YWJzRmllbGQuZmllbGRHcm91cCEucHVzaCh0YWJGaWVsZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt0YWJzRmllbGRdO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlRm9ybWx5R3JvdXBUeXBlKGdyb3VwczogRmllbGRHcm91cERlc2NyaXB0b3I8YW55PltdKTogRm9ybWx5RmllbGRDb25maWdbXSB7XG4gICAgICAgIGlmIChncm91cHMubGVuZ3RoID09PSAxICYmIGdyb3Vwc1swXS5kZWZhdWx0KSB7XG4gICAgICAgICAgICAvLyBkb250IHVzZSBmaWVsZHNldCwganVzdCBjcmVhdGUgZmllbGRzXG4gICAgICAgICAgICByZXR1cm4gRWRpdG9yRm9ybWx5VXRpbC5jcmVhdGVGb3JtbHlGaWVsZHMoZ3JvdXBzWzBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3Vwc0ZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZmllbGRzZXQnLFxuICAgICAgICAgICAgICAgIGZpZWxkR3JvdXA6IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZm9yIChjb25zdCBncm91cCBvZiBncm91cHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cEZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGdyb3VwLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvcjogZ3JvdXBcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRHcm91cDogW11cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmIChncm91cC50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICBncm91cEZpZWxkLnRlbXBsYXRlT3B0aW9ucyEubGFiZWwgPSBncm91cC50aXRsZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZ3JvdXBGaWVsZC5maWVsZEdyb3VwIS5wdXNoKC4uLkVkaXRvckZvcm1seVV0aWwuY3JlYXRlRm9ybWx5RmllbGRzKGdyb3VwKSk7XG4gICAgICAgICAgICAgICAgZ3JvdXBzRmllbGQuZmllbGRHcm91cCEucHVzaChncm91cEZpZWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBbZ3JvdXBzRmllbGRdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGb3JtbHlGaWVsZHMoZGVzY3JpcHRvcjogRmllbGRHcm91cERlc2NyaXB0b3I8YW55Pik6IEZvcm1seUZpZWxkQ29uZmlnW10ge1xuICAgICAgICBjb25zdCBmaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBkZXNjcmlwdG9yRmllbGQgb2YgZGVzY3JpcHRvci5maWVsZHMpIHtcbiAgICAgICAgICAgIGZpZWxkcy5wdXNoKEVkaXRvckZvcm1seVV0aWwuY3JlYXRlRm9ybWx5RmllbGQoZGVzY3JpcHRvckZpZWxkKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gd3JhcCBpbiBncm91cCB0byBiZSBhYmxlIHRvIHVzZSBmbGV4IGdyaWRcbiAgICAgICAgY29uc3Qgd3JhcHBlckdyb3VwOiBGb3JtbHlGaWVsZENvbmZpZyA9IHtcbiAgICAgICAgICAgIGZpZWxkR3JvdXBDbGFzc05hbWU6ICdwLWZsdWlkIGZvcm1ncmlkIGdyaWQnLFxuICAgICAgICAgICAgZmllbGRHcm91cDogZmllbGRzXG4gICAgICAgIH07XG5cbiAgICAgICAgRWRpdG9yRm9ybWx5VXRpbC5hZGRWYWxpZGF0aW9uc1RvRm9ybWx5RmllbGQod3JhcHBlckdyb3VwLCBkZXNjcmlwdG9yLnZhbGlkYXRpb25zKTtcblxuICAgICAgICByZXR1cm4gW3dyYXBwZXJHcm91cF07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGb3JtbHlGaWVsZChkZXNjcmlwdG9yOiBBRmllbGREZXNjcmlwdG9yPGFueSwgYW55Pik6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgICAgICAgY29uc3QgZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnID0ge1xuICAgICAgICAgICAga2V5OiBkZXNjcmlwdG9yLnByb3BlcnR5LFxuICAgICAgICAgICAgZXhwcmVzc2lvblByb3BlcnRpZXM6IHt9LFxuICAgICAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7fVxuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBjbGFzc05hbWUgPSBkZXNjcmlwdG9yLmNsYXNzTmFtZTtcbiAgICAgICAgaWYgKCFjbGFzc05hbWUpIHtcbiAgICAgICAgICAgIC8vIGFzc2lnbiBkZWZhdWx0IGZpZWxkIHdpZHRoIHRocm91Z2ggZW50aXJlIHJvd1xuICAgICAgICAgICAgY2xhc3NOYW1lID0gJ2NvbC0xMic7XG4gICAgICAgIH1cbiAgICAgICAgZmllbGQuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuXG4gICAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucyFbJ2Rlc2NyaXB0b3InXSA9IGRlc2NyaXB0b3I7XG4gICAgICAgIGlmIChkZXNjcmlwdG9yIGluc3RhbmNlb2YgRmllbGRJbnB1dERlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5maWVsZFR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5IaWRkZW46XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkxhYmVsOlxuICAgICAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2xhYmVsJztcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZpZWxkLmtleTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uVGV4dGFyZWE6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAndGV4dGFyZWEnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5OdW1iZXI6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnbnVtYmVyJztcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudGVtcGxhdGVPcHRpb25zIS5taW4gPSBkZXNjcmlwdG9yLm51bWJlck1pbjtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudGVtcGxhdGVPcHRpb25zIS5tYXggPSBkZXNjcmlwdG9yLm51bWJlck1heDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uQ3VycmVuY3k6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnY3VycmVuY3knO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMhLm1pbiA9IGRlc2NyaXB0b3IubnVtYmVyTWluO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMhLm1heCA9IGRlc2NyaXB0b3IubnVtYmVyTWF4O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5Td2l0Y2g6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnc3dpdGNoJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uUmFkaW86XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAncmFkaW8nO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5EYXRlcGlja2VyOlxuICAgICAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2RhdGVwaWNrZXInO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5NYXNrOlxuICAgICAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ21hc2snO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5GaWxlOlxuICAgICAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2ZpbGUnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5DdXN0b206XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSBkZXNjcmlwdG9yLmN1c3RvbUNvbXBvbmVudE5hbWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnaW5wdXQnO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMhLm1pbkxlbmd0aCA9IGRlc2NyaXB0b3IubWluTGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMhLm1heExlbmd0aCA9IGRlc2NyaXB0b3IubWF4TGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMhLnBhdHRlcm4gPSBkZXNjcmlwdG9yLnBhdHRlcm47XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IgaW5zdGFuY2VvZiBGaWVsZExvb2t1cEVudW1EZXNjcmlwdG9yKSB7XG4gICAgICAgICAgICBmaWVsZC50eXBlID0gJ2VudW0nO1xuICAgICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IgaW5zdGFuY2VvZiBGaWVsZExvb2t1cERlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5sb29rdXBUeXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZExvb2t1cFR5cGVFbnVtLkF1dG9jb21wbGV0ZTpcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdhdXRvY29tcGxldGUnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkTG9va3VwVHlwZUVudW0uRGlhbG9nOlxuICAgICAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2RpYWxvZyc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRMb29rdXBUeXBlRW51bS5Ecm9wZG93bjpcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2Ryb3Bkb3duJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvciBpbnN0YW5jZW9mIEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAndGFibGUtZGlhbG9nLW11bHRpc2VsZWN0JztcbiAgICAgICAgfSBlbHNlIGlmIChkZXNjcmlwdG9yIGluc3RhbmNlb2YgRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcikge1xuICAgICAgICAgICAgZmllbGQudHlwZSA9ICd0YWJsZS1kaWFsb2ctZm9ybSc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGVzY3JpcHRvci5sYWJlbCkge1xuICAgICAgICAgICAgZmllbGQudGVtcGxhdGVPcHRpb25zIS5sYWJlbCA9IGRlc2NyaXB0b3IubGFiZWw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGVzY3JpcHRvci5yZXF1aXJlZEV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIGZpZWxkLmV4cHJlc3Npb25Qcm9wZXJ0aWVzIVsndGVtcGxhdGVPcHRpb25zLnJlcXVpcmVkJ10gPSBkZXNjcmlwdG9yLnJlcXVpcmVkRXhwcmVzc2lvbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVzY3JpcHRvci5yZXF1aXJlZCkge1xuICAgICAgICAgICAgZmllbGQudGVtcGxhdGVPcHRpb25zIS5yZXF1aXJlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGVzY3JpcHRvci5oaWRkZW5FeHByZXNzaW9uKSB7XG4gICAgICAgICAgICBmaWVsZC5leHByZXNzaW9uUHJvcGVydGllcyFbJ2hpZGUnXSA9IGRlc2NyaXB0b3IuaGlkZGVuRXhwcmVzc2lvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZXNjcmlwdG9yLmRpc2FibGVkRXhwcmVzc2lvbikge1xuICAgICAgICAgICAgZmllbGQuZXhwcmVzc2lvblByb3BlcnRpZXMhWyd0ZW1wbGF0ZU9wdGlvbnMuZGlzYWJsZWQnXSA9IGRlc2NyaXB0b3IuZGlzYWJsZWRFeHByZXNzaW9uO1xuICAgICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucyEuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmllbGQuZXhwcmVzc2lvblByb3BlcnRpZXMhWyd0ZW1wbGF0ZU9wdGlvbnMuZGlzYWJsZWQnXSA9ICdmb3JtU3RhdGUuZGlzYWJsZWQnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBkZXNjcmlwdG9yLmRlZmF1bHRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGZpZWxkLmRlZmF1bHRWYWx1ZSA9IGRlc2NyaXB0b3IuZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgRWRpdG9yRm9ybWx5VXRpbC5hZGRWYWxpZGF0aW9uc1RvRm9ybWx5RmllbGQoZmllbGQsIGRlc2NyaXB0b3IudmFsaWRhdGlvbnMpO1xuICAgICAgICBFZGl0b3JGb3JtbHlVdGlsLmFkZEFzeW5jVmFsaWRhdGlvbnNUb0Zvcm1seUZpZWxkKGZpZWxkLCBkZXNjcmlwdG9yLmFzeW5jVmFsaWRhdGlvbnMpO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFkZFZhbGlkYXRpb25zVG9Gb3JtbHlGaWVsZChjb25maWc6IEZvcm1seUZpZWxkQ29uZmlnLCB2YWxpZGF0aW9uczogQXJyYXk8RmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcj4pIHtcbiAgICAgICAgaWYgKCFjb25maWcudmFsaWRhdG9ycykge1xuICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvcnMgPSB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgdmFsaWRhdGlvbiBvZiB2YWxpZGF0aW9ucykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWxpZGF0aW9uLnZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGNvbmZpZy52YWxpZGF0b3JzW3ZhbGlkYXRpb24ubmFtZV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IChcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM/OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkOiBzdHJpbmddOiBhbnk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdG9yUmVzID0gdmFsaWRhdGlvbi52YWxpZGF0b3IhKGNvbnRyb2wsIGZpZWxkLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvcm1seSB2YWxpZGF0b3Igb25seSBleGNlcHRzIHRydWUvZmFsc2UgZm9yIHZhbGlkYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hcCBwb3NzaWJsZSBhbmd1bGFyIHZhbGlkYXRvciByZXN1bHQgdG8gdHJ1ZS9mYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWxpZGF0b3JSZXMgPT09ICdib29sZWFuJyA/IHZhbGlkYXRvclJlcyA6IHZhbGlkYXRvclJlcyA9PT0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWxpZGF0aW9uLm1lc3NhZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvcnNbdmFsaWRhdGlvbi5uYW1lXS5tZXNzYWdlID0gdmFsaWRhdGlvbi5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbmZpZy52YWxpZGF0b3JzLnZhbGlkYXRpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy52YWxpZGF0b3JzLnZhbGlkYXRpb24gPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvcnMudmFsaWRhdGlvbi5wdXNoKHZhbGlkYXRpb24ubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFkZEFzeW5jVmFsaWRhdGlvbnNUb0Zvcm1seUZpZWxkKGNvbmZpZzogRm9ybWx5RmllbGRDb25maWcsIGFzeW5jVmFsaWRhdGlvbnM6IEFycmF5PEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3I+KSB7XG4gICAgICAgIGlmICghY29uZmlnLmFzeW5jVmFsaWRhdG9ycykge1xuICAgICAgICAgICAgY29uZmlnLmFzeW5jVmFsaWRhdG9ycyA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCB2YWxpZGF0aW9uIG9mIGFzeW5jVmFsaWRhdGlvbnMpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsaWRhdGlvbi52YWxpZGF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjb25maWcuYXN5bmNWYWxpZGF0b3JzW3ZhbGlkYXRpb24ubmFtZV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IChcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM/OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkOiBzdHJpbmddOiBhbnk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdG9yID0gPE1uZ0ZpZWxkQXN5bmNWYWxpZGF0b3I+dmFsaWRhdGlvbi52YWxpZGF0b3I7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRvck9iczogT2JzZXJ2YWJsZTxWYWxpZGF0aW9uRXJyb3JzIHwgYm9vbGVhbiB8IG51bGw+ID0gdmFsaWRhdG9yKGNvbnRyb2wsIGZpZWxkLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvcm1seSB2YWxpZGF0b3Igb25seSBleGNlcHRzIHRydWUvZmFsc2UgZm9yIHZhbGlkYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hcCBwb3NzaWJsZSBhbmd1bGFyIHZhbGlkYXRvciByZXN1bHQgdG8gdHJ1ZS9mYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRvck9icy5waXBlKG1hcCh2YWx1ZSA9PiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicgPyB2YWx1ZSA6IHZhbHVlID09PSBudWxsKSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbGlkYXRpb24ubWVzc2FnZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb25maWcuYXN5bmNWYWxpZGF0b3JzW3ZhbGlkYXRpb24ubmFtZV0ubWVzc2FnZSA9IHZhbGlkYXRpb24ubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjb25maWcuYXN5bmNWYWxpZGF0b3JzLmFzeW5jVmFsaWRhdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLmFzeW5jVmFsaWRhdG9ycy5hc3luY1ZhbGlkYXRpb24gPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uZmlnLmFzeW5jVmFsaWRhdG9ycy5hc3luY1ZhbGlkYXRpb24ucHVzaCh2YWxpZGF0aW9uLm5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
|