@mediusinc/mng-commons 0.13.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/esm2020/lib/api/utils/medius-rest.util.mjs +8 -3
  2. package/esm2020/lib/components/action/action.component.mjs +17 -4
  3. package/esm2020/lib/components/action/editor/action-editor.component.mjs +1 -1
  4. package/esm2020/lib/components/action/models/action-execution.model.mjs +6 -1
  5. package/esm2020/lib/components/action/models/index.mjs +2 -1
  6. package/esm2020/lib/components/action/models/tableview-action-default-categories.model.mjs +11 -0
  7. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +1 -1
  8. package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +17 -10
  9. package/esm2020/lib/components/tableview/route/tableview-route.component.mjs +5 -13
  10. package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +5 -2
  11. package/esm2020/lib/components/tableview/table/table.component.mjs +48 -20
  12. package/esm2020/lib/components/tableview/tableview.component.mjs +9 -3
  13. package/esm2020/lib/data-providers/table.data-provider.mjs +9 -2
  14. package/esm2020/lib/data-providers/tableview.data-provider.mjs +30 -2
  15. package/esm2020/lib/descriptors/action.descriptor.mjs +11 -1
  16. package/esm2020/lib/descriptors/column.descriptor.mjs +106 -29
  17. package/esm2020/lib/descriptors/editor.descriptor.mjs +109 -7
  18. package/esm2020/lib/descriptors/field.descriptor.mjs +38 -4
  19. package/esm2020/lib/descriptors/filter.descriptor.mjs +13 -6
  20. package/esm2020/lib/descriptors/index.mjs +2 -2
  21. package/esm2020/lib/descriptors/table.descriptor.mjs +282 -16
  22. package/esm2020/lib/descriptors/tableview.descriptor.mjs +175 -3
  23. package/esm2020/lib/descriptors/types/table.type.mjs +10 -1
  24. package/esm2020/lib/mng-commons.module.mjs +5 -1
  25. package/esm2020/lib/models/index.mjs +2 -1
  26. package/esm2020/lib/models/tableview-attr.model.mjs +2 -0
  27. package/esm2020/lib/pipes/class-map.pipe.mjs +22 -0
  28. package/esm2020/lib/pipes/index.mjs +2 -1
  29. package/esm2020/lib/router/models/router.model.mjs +1 -1
  30. package/esm2020/lib/router/tableview-route-builder.mjs +41 -17
  31. package/esm2020/lib/services/action-executor.service.mjs +1 -1
  32. package/esm2020/lib/utils/tableview.util.mjs +144 -0
  33. package/fesm2015/mediusinc-mng-commons.mjs +1095 -128
  34. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  35. package/fesm2020/mediusinc-mng-commons.mjs +1077 -117
  36. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  37. package/lib/api/utils/medius-rest.util.d.ts +1 -0
  38. package/lib/components/action/action.component.d.ts +2 -1
  39. package/lib/components/action/models/action-execution.model.d.ts +2 -0
  40. package/lib/components/action/models/index.d.ts +1 -0
  41. package/lib/components/action/models/tableview-action-default-categories.model.d.ts +10 -0
  42. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +9 -4
  43. package/lib/components/tableview/route/tableview-route.component.d.ts +0 -5
  44. package/lib/components/tableview/table/table.component.d.ts +4 -2
  45. package/lib/components/tableview/tableview.component.d.ts +3 -0
  46. package/lib/data-providers/table.data-provider.d.ts +6 -1
  47. package/lib/data-providers/tableview.data-provider.d.ts +16 -2
  48. package/lib/descriptors/action.descriptor.d.ts +4 -0
  49. package/lib/descriptors/column.descriptor.d.ts +39 -5
  50. package/lib/descriptors/editor.descriptor.d.ts +69 -11
  51. package/lib/descriptors/field.descriptor.d.ts +7 -2
  52. package/lib/descriptors/filter.descriptor.d.ts +7 -6
  53. package/lib/descriptors/index.d.ts +1 -1
  54. package/lib/descriptors/table.descriptor.d.ts +124 -8
  55. package/lib/descriptors/tableview.descriptor.d.ts +81 -7
  56. package/lib/descriptors/types/table.type.d.ts +8 -0
  57. package/lib/mng-commons.module.d.ts +72 -71
  58. package/lib/models/index.d.ts +1 -0
  59. package/lib/models/tableview-attr.model.d.ts +9 -0
  60. package/lib/pipes/class-map.pipe.d.ts +7 -0
  61. package/lib/pipes/index.d.ts +1 -0
  62. package/lib/router/models/router.model.d.ts +6 -0
  63. package/lib/router/tableview-route-builder.d.ts +3 -0
  64. package/lib/utils/tableview.util.d.ts +39 -0
  65. package/package.json +1 -1
  66. package/scss/mng-overrides/_theme_tableview.scss +17 -0
  67. package/version-info.json +5 -5
@@ -0,0 +1,144 @@
1
+ import { ObjectSerializer } from '../api/utils';
2
+ import { ColumnTypeEnum, FieldInputTypeEnum } from '../descriptors/types';
3
+ export class TableviewUtil {
4
+ /**
5
+ * returns attributes from class type and extends to typed def with column and field enum type
6
+ * @param modelType class type
7
+ */
8
+ static getAttributeDefMap(modelType) {
9
+ return TableviewUtil.expandAttributeDefWithTableviewTypes(ObjectSerializer.get().findAttributesDefinitionByClassType(modelType));
10
+ }
11
+ /**
12
+ * expands AttributeDef to TableviewAttributeDef with defined input and column enum type
13
+ * @param attributes open api specification model
14
+ */
15
+ static expandAttributeDefWithTableviewTypes(attributes) {
16
+ if (attributes == null) {
17
+ throw new Error('AttributeDef is null, problem with ObjectSerializer::findAttributesDefinitionByClassType?');
18
+ }
19
+ const objectSerializer = ObjectSerializer.get();
20
+ const tableviewAttributeDef = [];
21
+ for (const attribute of attributes) {
22
+ const enumType = objectSerializer.findEnum(attribute.type);
23
+ tableviewAttributeDef.push({
24
+ name: attribute.name,
25
+ baseName: attribute.baseName,
26
+ type: attribute.type,
27
+ columnType: enumType ? ColumnTypeEnum.Enum : TableviewUtil.toColumnType(attribute.type),
28
+ fieldType: TableviewUtil.toFieldInputType(attribute.type),
29
+ enumType: objectSerializer.findEnum(attribute.type),
30
+ classType: objectSerializer.findType(attribute.type)
31
+ });
32
+ }
33
+ return tableviewAttributeDef;
34
+ }
35
+ /**
36
+ * converts column to number or date on value based
37
+ * @param column column to be transformed
38
+ * @param value value to check if applicable
39
+ */
40
+ static stringColumnConverter(column, value) {
41
+ if (typeof value === 'boolean') {
42
+ return column.asBoolean();
43
+ }
44
+ else if (!isNaN(value) && typeof value === 'number') {
45
+ return column.asNumber();
46
+ }
47
+ else if (this._dateRegex.test(value)) {
48
+ return column.asDate();
49
+ }
50
+ else {
51
+ return column;
52
+ }
53
+ }
54
+ /**
55
+ * converts string type to column type enum, default is string
56
+ * @param property
57
+ */
58
+ static toColumnType(property) {
59
+ const os = ObjectSerializer.get();
60
+ if (os.findEnum(property)) {
61
+ property = 'enum';
62
+ }
63
+ else if (os.findType(property)) {
64
+ property = 'class';
65
+ }
66
+ switch (property) {
67
+ case 'number':
68
+ return ColumnTypeEnum.Number;
69
+ case 'currency':
70
+ return ColumnTypeEnum.Currency;
71
+ case 'boolean':
72
+ return ColumnTypeEnum.Boolean;
73
+ case 'date':
74
+ return ColumnTypeEnum.Date;
75
+ case 'enum':
76
+ return ColumnTypeEnum.Enum;
77
+ case 'custom':
78
+ return ColumnTypeEnum.Custom;
79
+ case 'class':
80
+ return ColumnTypeEnum.String;
81
+ case 'string':
82
+ default:
83
+ return ColumnTypeEnum.String;
84
+ }
85
+ }
86
+ /**
87
+ * converts string type to type enum, default is text
88
+ * @param property
89
+ */
90
+ static toFieldInputType(property) {
91
+ switch (property) {
92
+ case 'hidden':
93
+ return FieldInputTypeEnum.Hidden;
94
+ case 'label':
95
+ return FieldInputTypeEnum.Label;
96
+ case 'textarea':
97
+ return FieldInputTypeEnum.Textarea;
98
+ case 'number':
99
+ return FieldInputTypeEnum.Number;
100
+ case 'currency':
101
+ return FieldInputTypeEnum.Currency;
102
+ case 'switch':
103
+ case 'boolean':
104
+ return FieldInputTypeEnum.Switch;
105
+ case 'radio':
106
+ return FieldInputTypeEnum.Radio;
107
+ case 'datepicker':
108
+ return FieldInputTypeEnum.Datepicker;
109
+ case 'mask':
110
+ return FieldInputTypeEnum.Mask;
111
+ case 'file':
112
+ return FieldInputTypeEnum.File;
113
+ case 'custom':
114
+ return FieldInputTypeEnum.Custom;
115
+ case 'text':
116
+ default:
117
+ return FieldInputTypeEnum.Text;
118
+ }
119
+ }
120
+ /**
121
+ * convert column type to equivalent field input type
122
+ * @param type column type
123
+ */
124
+ static toFieldInputTypeFromColumnType(type) {
125
+ switch (type) {
126
+ case ColumnTypeEnum.Number:
127
+ return FieldInputTypeEnum.Number;
128
+ case ColumnTypeEnum.Currency:
129
+ return FieldInputTypeEnum.Currency;
130
+ case ColumnTypeEnum.Boolean:
131
+ return FieldInputTypeEnum.Switch;
132
+ case ColumnTypeEnum.Date:
133
+ return FieldInputTypeEnum.Datepicker;
134
+ case ColumnTypeEnum.Custom:
135
+ return FieldInputTypeEnum.Custom;
136
+ case ColumnTypeEnum.String:
137
+ case ColumnTypeEnum.Enum:
138
+ default:
139
+ return FieldInputTypeEnum.Text;
140
+ }
141
+ }
142
+ }
143
+ TableviewUtil._dateRegex = /\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/;
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3V0aWxzL3RhYmxldmlldy51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUU5QyxPQUFPLEVBQUMsY0FBYyxFQUFFLGtCQUFrQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFJeEUsTUFBTSxPQUFPLGFBQWE7SUFHdEI7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLGtCQUFrQixDQUFJLFNBQXVCO1FBQ3ZELE9BQU8sYUFBYSxDQUFDLG9DQUFvQyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLG1DQUFtQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDckksQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxvQ0FBb0MsQ0FBQyxVQUF1QztRQUN0RixJQUFJLFVBQVUsSUFBSSxJQUFJLEVBQUU7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQywyRkFBMkYsQ0FBQyxDQUFDO1NBQ2hIO1FBQ0QsTUFBTSxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUVoRCxNQUFNLHFCQUFxQixHQUE0QixFQUFFLENBQUM7UUFFMUQsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUU7WUFDaEMsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzRCxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZCLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSTtnQkFDcEIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRO2dCQUM1QixJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7Z0JBQ3BCLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FB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QUM7WUFDekMsS0FBSyxNQUFNO2dCQUNQLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDO1lBQ25DLEtBQUssTUFBTTtnQkFDUCxPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQztZQUNuQyxLQUFLLFFBQVE7Z0JBQ1QsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7WUFDckMsS0FBSyxNQUFNLENBQUM7WUFDWjtnQkFDSSxPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQztTQUN0QztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsOEJBQThCLENBQUMsSUFBb0I7UUFDN0QsUUFBUSxJQUFJLEVBQUU7WUFDVixLQUFLLGNBQWMsQ0FBQyxNQUFNO2dCQUN0QixPQUFPLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztZQUNyQyxLQUFLLGNBQWMsQ0FBQyxRQUFRO2dCQUN4QixPQUFPLGtCQUFrQixDQUFDLFFBQVEsQ0FBQztZQUN2QyxLQUFLLGNBQWMsQ0FBQyxPQUFPO2dCQUN2QixPQUFPLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztZQUNyQyxLQUFLLGNBQWMsQ0FBQyxJQUFJO2dCQUNwQixPQUFPLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztZQUN6QyxLQUFLLGNBQWMsQ0FBQyxNQUFNO2dCQUN0QixPQUFPLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztZQUNyQyxLQUFLLGNBQWMsQ0FBQyxNQUFNLENBQUM7WUFDM0IsS0FBSyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQ3pCO2dCQUNJLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDO1NBQ3RDO0lBQ0wsQ0FBQzs7QUFoSmMsd0JBQVUsR0FBRywwRUFBMEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXR0cmlidXRlRGVmfSBmcm9tICcuLi9hcGkvbW9kZWxzJztcbmltcG9ydCB7T2JqZWN0U2VyaWFsaXplcn0gZnJvbSAnLi4vYXBpL3V0aWxzJztcbmltcG9ydCB7Q29sdW1uRGVzY3JpcHRvcn0gZnJvbSAnLi4vZGVzY3JpcHRvcnMnO1xuaW1wb3J0IHtDb2x1bW5UeXBlRW51bSwgRmllbGRJbnB1dFR5cGVFbnVtfSBmcm9tICcuLi9kZXNjcmlwdG9ycy90eXBlcyc7XG5pbXBvcnQge1RhYmxldmlld0F0dHJpYnV0ZURlZn0gZnJvbSAnLi4vbW9kZWxzL3RhYmxldmlldy1hdHRyLm1vZGVsJztcbmltcG9ydCB7Q2xhc3NUeXBlLCBFbnVtVHlwZX0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgVGFibGV2aWV3VXRpbCB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgX2RhdGVSZWdleCA9IC9cXGR7NH0tWzAxXVxcZC1bMC0zXVxcZFRbMC0yXVxcZDpbMC01XVxcZDpbMC01XVxcZFxcLlxcZCsoWystXVswLTJdXFxkOlswLTVdXFxkfFopLztcblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgYXR0cmlidXRlcyBmcm9tIGNsYXNzIHR5cGUgYW5kIGV4dGVuZHMgdG8gdHlwZWQgZGVmIHdpdGggY29sdW1uIGFuZCBmaWVsZCBlbnVtIHR5cGVcbiAgICAgKiBAcGFyYW0gbW9kZWxUeXBlIGNsYXNzIHR5cGVcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldEF0dHJpYnV0ZURlZk1hcDxUPihtb2RlbFR5cGU6IENsYXNzVHlwZTxUPik6IFRhYmxldmlld0F0dHJpYnV0ZURlZltdIHtcbiAgICAgICAgcmV0dXJuIFRhYmxldmlld1V0aWwuZXhwYW5kQXR0cmlidXRlRGVmV2l0aFRhYmxldmlld1R5cGVzKE9iamVjdFNlcmlhbGl6ZXIuZ2V0KCkuZmluZEF0dHJpYnV0ZXNEZWZpbml0aW9uQnlDbGFzc1R5cGUobW9kZWxUeXBlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZXhwYW5kcyBBdHRyaWJ1dGVEZWYgdG8gVGFibGV2aWV3QXR0cmlidXRlRGVmIHdpdGggZGVmaW5lZCBpbnB1dCBhbmQgY29sdW1uIGVudW0gdHlwZVxuICAgICAqIEBwYXJhbSBhdHRyaWJ1dGVzIG9wZW4gYXBpIHNwZWNpZmljYXRpb24gbW9kZWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGV4cGFuZEF0dHJpYnV0ZURlZldpdGhUYWJsZXZpZXdUeXBlcyhhdHRyaWJ1dGVzPzogQXJyYXk8QXR0cmlidXRlRGVmPiB8IG51bGwpOiBUYWJsZXZpZXdBdHRyaWJ1dGVEZWZbXSB7XG4gICAgICAgIGlmIChhdHRyaWJ1dGVzID09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXR0cmlidXRlRGVmIGlzIG51bGwsIHByb2JsZW0gd2l0aCBPYmplY3RTZXJpYWxpemVyOjpmaW5kQXR0cmlidXRlc0RlZmluaXRpb25CeUNsYXNzVHlwZT8nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmplY3RTZXJpYWxpemVyID0gT2JqZWN0U2VyaWFsaXplci5nZXQoKTtcblxuICAgICAgICBjb25zdCB0YWJsZXZpZXdBdHRyaWJ1dGVEZWY6IFRhYmxldmlld0F0dHJpYnV0ZURlZltdID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBhdHRyaWJ1dGUgb2YgYXR0cmlidXRlcykge1xuICAgICAgICAgICAgY29uc3QgZW51bVR5cGUgPSBvYmplY3RTZXJpYWxpemVyLmZpbmRFbnVtKGF0dHJpYnV0ZS50eXBlKTtcbiAgICAgICAgICAgIHRhYmxldmlld0F0dHJpYnV0ZURlZi5wdXNoKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBhdHRyaWJ1dGUubmFtZSxcbiAgICAgICAgICAgICAgICBiYXNlTmFtZTogYXR0cmlidXRlLmJhc2VOYW1lLFxuICAgICAgICAgICAgICAgIHR5cGU6IGF0dHJpYnV0ZS50eXBlLFxuICAgICAgICAgICAgICAgIGNvbHVtblR5cGU6IGVudW1UeXBlID8gQ29sdW1uVHlwZUVudW0uRW51bSA6IFRhYmxldmlld1V0aWwudG9Db2x1bW5UeXBlKGF0dHJpYnV0ZS50eXBlKSxcbiAgICAgICAgICAgICAgICBmaWVsZFR5cGU6IFRhYmxldmlld1V0aWwudG9GaWVsZElucHV0VHlwZShhdHRyaWJ1dGUudHlwZSksXG4gICAgICAgICAgICAgICAgZW51bVR5cGU6IG9iamVjdFNlcmlhbGl6ZXIuZmluZEVudW0oYXR0cmlidXRlLnR5cGUpIGFzIEVudW1UeXBlLFxuICAgICAgICAgICAgICAgIGNsYXNzVHlwZTogb2JqZWN0U2VyaWFsaXplci5maW5kVHlwZShhdHRyaWJ1dGUudHlwZSkgYXMgQ2xhc3NUeXBlPGFueT5cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRhYmxldmlld0F0dHJpYnV0ZURlZjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjb252ZXJ0cyBjb2x1bW4gdG8gbnVtYmVyIG9yIGRhdGUgb24gdmFsdWUgYmFzZWRcbiAgICAgKiBAcGFyYW0gY29sdW1uIGNvbHVtbiB0byBiZSB0cmFuc2Zvcm1lZFxuICAgICAqIEBwYXJhbSB2YWx1ZSB2YWx1ZSB0byBjaGVjayBpZiBhcHBsaWNhYmxlXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBzdHJpbmdDb2x1bW5Db252ZXJ0ZXIoY29sdW1uOiBDb2x1bW5EZXNjcmlwdG9yPGFueSwgYW55PiwgdmFsdWU6IGFueSk6IENvbHVtbkRlc2NyaXB0b3I8YW55LCBhbnk+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sdW1uLmFzQm9vbGVhbigpO1xuICAgICAgICB9IGVsc2UgaWYgKCFpc05hTih2YWx1ZSkgJiYgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgcmV0dXJuIGNvbHVtbi5hc051bWJlcigpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2RhdGVSZWdleC50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbHVtbi5hc0RhdGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjb252ZXJ0cyBzdHJpbmcgdHlwZSB0byBjb2x1bW4gdHlwZSBlbnVtLCBkZWZhdWx0IGlzIHN0cmluZ1xuICAgICAqIEBwYXJhbSBwcm9wZXJ0eVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgdG9Db2x1bW5UeXBlKHByb3BlcnR5OiBzdHJpbmcpOiBDb2x1bW5UeXBlRW51bSB7XG4gICAgICAgIGNvbnN0IG9zID0gT2JqZWN0U2VyaWFsaXplci5nZXQoKTtcbiAgICAgICAgaWYgKG9zLmZpbmRFbnVtKHByb3BlcnR5KSBhcyBFbnVtVHlwZSkge1xuICAgICAgICAgICAgcHJvcGVydHkgPSAnZW51bSc7XG4gICAgICAgIH0gZWxzZSBpZiAob3MuZmluZFR5cGUocHJvcGVydHkpIGFzIENsYXNzVHlwZTxhbnk+KSB7XG4gICAgICAgICAgICBwcm9wZXJ0eSA9ICdjbGFzcyc7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKHByb3BlcnR5KSB7XG4gICAgICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgICAgICAgIHJldHVybiBDb2x1bW5UeXBlRW51bS5OdW1iZXI7XG4gICAgICAgICAgICBjYXNlICdjdXJyZW5jeSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIENvbHVtblR5cGVFbnVtLkN1cnJlbmN5O1xuICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIENvbHVtblR5cGVFbnVtLkJvb2xlYW47XG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gQ29sdW1uVHlwZUVudW0uRGF0ZTtcbiAgICAgICAgICAgIGNhc2UgJ2VudW0nOlxuICAgICAgICAgICAgICAgIHJldHVybiBDb2x1bW5UeXBlRW51bS5FbnVtO1xuICAgICAgICAgICAgY2FzZSAnY3VzdG9tJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gQ29sdW1uVHlwZUVudW0uQ3VzdG9tO1xuICAgICAgICAgICAgY2FzZSAnY2xhc3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiBDb2x1bW5UeXBlRW51bS5TdHJpbmc7XG4gICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gQ29sdW1uVHlwZUVudW0uU3RyaW5nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29udmVydHMgc3RyaW5nIHR5cGUgdG8gdHlwZSBlbnVtLCBkZWZhdWx0IGlzIHRleHRcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIHRvRmllbGRJbnB1dFR5cGUocHJvcGVydHk6IHN0cmluZyk6IEZpZWxkSW5wdXRUeXBlRW51bSB7XG4gICAgICAgIHN3aXRjaCAocHJvcGVydHkpIHtcbiAgICAgICAgICAgIGNhc2UgJ2hpZGRlbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpZWxkSW5wdXRUeXBlRW51bS5IaWRkZW47XG4gICAgICAgICAgICBjYXNlICdsYWJlbCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpZWxkSW5wdXRUeXBlRW51bS5MYWJlbDtcbiAgICAgICAgICAgIGNhc2UgJ3RleHRhcmVhJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gRmllbGRJbnB1dFR5cGVFbnVtLlRleHRhcmVhO1xuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gRmllbGRJbnB1dFR5cGVFbnVtLk51bWJlcjtcbiAgICAgICAgICAgIGNhc2UgJ2N1cnJlbmN5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gRmllbGRJbnB1dFR5cGVFbnVtLkN1cnJlbmN5O1xuICAgICAgICAgICAgY2FzZSAnc3dpdGNoJzpcbiAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWVsZElucHV0VHlwZUVudW0uU3dpdGNoO1xuICAgICAgICAgICAgY2FzZSAncmFkaW8nOlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWVsZElucHV0VHlwZUVudW0uUmFkaW87XG4gICAgICAgICAgICBjYXNlICdkYXRlcGlja2VyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gRmllbGRJbnB1dFR5cGVFbnVtLkRhdGVwaWNrZXI7XG4gICAgICAgICAgICBjYXNlICdtYXNrJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gRmllbGRJbnB1dFR5cGVFbnVtLk1hc2s7XG4gICAgICAgICAgICBjYXNlICdmaWxlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gRmllbGRJbnB1dFR5cGVFbnVtLkZpbGU7XG4gICAgICAgICAgICBjYXNlICdjdXN0b20nOlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWVsZElucHV0VHlwZUVudW0uQ3VzdG9tO1xuICAgICAgICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWVsZElucHV0VHlwZUVudW0uVGV4dDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNvbnZlcnQgY29sdW1uIHR5cGUgdG8gZXF1aXZhbGVudCBmaWVsZCBpbnB1dCB0eXBlXG4gICAgICogQHBhcmFtIHR5cGUgY29sdW1uIHR5cGVcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIHRvRmllbGRJbnB1dFR5cGVGcm9tQ29sdW1uVHlwZSh0eXBlOiBDb2x1bW5UeXBlRW51bSk6IEZpZWxkSW5wdXRUeXBlRW51bSB7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5OdW1iZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpZWxkSW5wdXRUeXBlRW51bS5OdW1iZXI7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLkN1cnJlbmN5OlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWVsZElucHV0VHlwZUVudW0uQ3VycmVuY3k7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLkJvb2xlYW46XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpZWxkSW5wdXRUeXBlRW51bS5Td2l0Y2g7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLkRhdGU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpZWxkSW5wdXRUeXBlRW51bS5EYXRlcGlja2VyO1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5DdXN0b206XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpZWxkSW5wdXRUeXBlRW51bS5DdXN0b207XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLlN0cmluZzpcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZUVudW0uRW51bTpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpZWxkSW5wdXRUeXBlRW51bS5UZXh0O1xuICAgICAgICB9XG4gICAgfVxufVxuIl19