@rjsf/core 4.2.2 → 4.2.3

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 (130) hide show
  1. package/dist/cjs/components/AddButton.js +39 -0
  2. package/dist/cjs/components/ErrorList.js +41 -0
  3. package/dist/cjs/components/Form.js +588 -0
  4. package/dist/cjs/components/IconButton.js +37 -0
  5. package/dist/cjs/components/fields/ArrayField.js +977 -0
  6. package/dist/cjs/components/fields/BooleanField.js +107 -0
  7. package/dist/cjs/components/fields/DescriptionField.js +50 -0
  8. package/dist/cjs/components/fields/MultiSchemaField.js +275 -0
  9. package/dist/cjs/components/fields/NullField.js +66 -0
  10. package/dist/cjs/components/fields/NumberField.js +156 -0
  11. package/dist/cjs/components/fields/ObjectField.js +366 -0
  12. package/dist/cjs/components/fields/SchemaField.js +546 -0
  13. package/dist/cjs/components/fields/StringField.js +98 -0
  14. package/dist/cjs/components/fields/TitleField.js +42 -0
  15. package/dist/cjs/components/fields/UnsupportedField.js +46 -0
  16. package/dist/cjs/components/fields/index.js +47 -0
  17. package/dist/cjs/components/widgets/AltDateTimeWidget.js +48 -0
  18. package/dist/cjs/components/widgets/AltDateWidget.js +301 -0
  19. package/dist/cjs/components/widgets/BaseInput.js +151 -0
  20. package/dist/cjs/components/widgets/CheckboxWidget.js +85 -0
  21. package/dist/cjs/components/widgets/CheckboxesWidget.js +121 -0
  22. package/dist/cjs/components/widgets/ColorWidget.js +45 -0
  23. package/dist/cjs/components/widgets/DateTimeWidget.js +43 -0
  24. package/dist/cjs/components/widgets/DateWidget.js +39 -0
  25. package/dist/cjs/components/widgets/EmailWidget.js +34 -0
  26. package/dist/cjs/components/widgets/FileWidget.js +215 -0
  27. package/dist/cjs/components/widgets/HiddenWidget.js +36 -0
  28. package/dist/cjs/components/widgets/PasswordWidget.js +34 -0
  29. package/dist/cjs/components/widgets/RadioWidget.js +107 -0
  30. package/dist/cjs/components/widgets/RangeWidget.js +46 -0
  31. package/dist/cjs/components/widgets/SelectWidget.js +151 -0
  32. package/dist/cjs/components/widgets/SubmitButton.js +35 -0
  33. package/dist/cjs/components/widgets/TextWidget.js +31 -0
  34. package/dist/cjs/components/widgets/TextareaWidget.js +81 -0
  35. package/dist/cjs/components/widgets/URLWidget.js +34 -0
  36. package/dist/cjs/components/widgets/UpDownWidget.js +36 -0
  37. package/dist/cjs/components/widgets/index.js +73 -0
  38. package/dist/cjs/defaultRegistry.js +23 -0
  39. package/dist/cjs/index.js +37 -0
  40. package/dist/cjs/types.js +47 -0
  41. package/dist/cjs/utils.js +1407 -0
  42. package/dist/cjs/validate.js +354 -0
  43. package/dist/cjs/withTheme.js +53 -0
  44. package/dist/es/components/AddButton.js +28 -0
  45. package/dist/es/components/ErrorList.js +31 -0
  46. package/dist/es/components/Form.js +572 -0
  47. package/dist/es/components/IconButton.js +27 -0
  48. package/dist/es/components/fields/ArrayField.js +959 -0
  49. package/dist/es/components/fields/BooleanField.js +93 -0
  50. package/dist/es/components/fields/DescriptionField.js +39 -0
  51. package/dist/es/components/fields/MultiSchemaField.js +261 -0
  52. package/dist/es/components/fields/NullField.js +55 -0
  53. package/dist/es/components/fields/NumberField.js +141 -0
  54. package/dist/es/components/fields/ObjectField.js +351 -0
  55. package/dist/es/components/fields/SchemaField.js +528 -0
  56. package/dist/es/components/fields/StringField.js +84 -0
  57. package/dist/es/components/fields/TitleField.js +30 -0
  58. package/dist/es/components/fields/UnsupportedField.js +35 -0
  59. package/dist/es/components/fields/index.js +26 -0
  60. package/dist/es/components/widgets/AltDateTimeWidget.js +36 -0
  61. package/dist/es/components/widgets/AltDateWidget.js +287 -0
  62. package/dist/es/components/widgets/BaseInput.js +140 -0
  63. package/dist/es/components/widgets/CheckboxWidget.js +73 -0
  64. package/dist/es/components/widgets/CheckboxesWidget.js +108 -0
  65. package/dist/es/components/widgets/ColorWidget.js +34 -0
  66. package/dist/es/components/widgets/DateTimeWidget.js +31 -0
  67. package/dist/es/components/widgets/DateWidget.js +28 -0
  68. package/dist/es/components/widgets/EmailWidget.js +23 -0
  69. package/dist/es/components/widgets/FileWidget.js +201 -0
  70. package/dist/es/components/widgets/HiddenWidget.js +25 -0
  71. package/dist/es/components/widgets/PasswordWidget.js +23 -0
  72. package/dist/es/components/widgets/RadioWidget.js +94 -0
  73. package/dist/es/components/widgets/RangeWidget.js +34 -0
  74. package/dist/es/components/widgets/SelectWidget.js +138 -0
  75. package/dist/es/components/widgets/SubmitButton.js +24 -0
  76. package/dist/es/components/widgets/TextWidget.js +20 -0
  77. package/dist/es/components/widgets/TextareaWidget.js +70 -0
  78. package/dist/es/components/widgets/URLWidget.js +23 -0
  79. package/dist/es/components/widgets/UpDownWidget.js +24 -0
  80. package/dist/es/components/widgets/index.js +43 -0
  81. package/dist/es/defaultRegistry.js +12 -0
  82. package/dist/es/index.js +16 -0
  83. package/dist/es/types.js +34 -0
  84. package/dist/es/utils.js +1309 -0
  85. package/dist/es/validate.js +338 -0
  86. package/dist/es/withTheme.js +39 -0
  87. package/lib/components/AddButton.js +28 -0
  88. package/lib/components/ErrorList.js +31 -0
  89. package/lib/components/Form.js +572 -0
  90. package/lib/components/IconButton.js +27 -0
  91. package/lib/components/fields/ArrayField.js +959 -0
  92. package/lib/components/fields/BooleanField.js +93 -0
  93. package/lib/components/fields/DescriptionField.js +39 -0
  94. package/lib/components/fields/MultiSchemaField.js +261 -0
  95. package/lib/components/fields/NullField.js +55 -0
  96. package/lib/components/fields/NumberField.js +141 -0
  97. package/lib/components/fields/ObjectField.js +351 -0
  98. package/lib/components/fields/SchemaField.js +528 -0
  99. package/lib/components/fields/StringField.js +84 -0
  100. package/lib/components/fields/TitleField.js +30 -0
  101. package/lib/components/fields/UnsupportedField.js +35 -0
  102. package/lib/components/fields/index.js +26 -0
  103. package/lib/components/widgets/AltDateTimeWidget.js +36 -0
  104. package/lib/components/widgets/AltDateWidget.js +287 -0
  105. package/lib/components/widgets/BaseInput.js +140 -0
  106. package/lib/components/widgets/CheckboxWidget.js +73 -0
  107. package/lib/components/widgets/CheckboxesWidget.js +108 -0
  108. package/lib/components/widgets/ColorWidget.js +34 -0
  109. package/lib/components/widgets/DateTimeWidget.js +31 -0
  110. package/lib/components/widgets/DateWidget.js +28 -0
  111. package/lib/components/widgets/EmailWidget.js +23 -0
  112. package/lib/components/widgets/FileWidget.js +201 -0
  113. package/lib/components/widgets/HiddenWidget.js +25 -0
  114. package/lib/components/widgets/PasswordWidget.js +23 -0
  115. package/lib/components/widgets/RadioWidget.js +94 -0
  116. package/lib/components/widgets/RangeWidget.js +34 -0
  117. package/lib/components/widgets/SelectWidget.js +138 -0
  118. package/lib/components/widgets/SubmitButton.js +24 -0
  119. package/lib/components/widgets/TextWidget.js +20 -0
  120. package/lib/components/widgets/TextareaWidget.js +70 -0
  121. package/lib/components/widgets/URLWidget.js +23 -0
  122. package/lib/components/widgets/UpDownWidget.js +24 -0
  123. package/lib/components/widgets/index.js +43 -0
  124. package/lib/defaultRegistry.js +12 -0
  125. package/lib/index.js +16 -0
  126. package/lib/types.js +34 -0
  127. package/lib/utils.js +1309 -0
  128. package/lib/validate.js +338 -0
  129. package/lib/withTheme.js +39 -0
  130. package/package.json +6 -3
@@ -0,0 +1,354 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.toErrorList = toErrorList;
7
+ exports["default"] = validateFormData;
8
+ exports.withIdRefPrefix = withIdRefPrefix;
9
+ exports.isValid = isValid;
10
+
11
+ var _toPath = _interopRequireDefault(require("lodash/toPath"));
12
+
13
+ var _ajv = _interopRequireDefault(require("ajv"));
14
+
15
+ var _utils = require("./utils");
16
+
17
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
18
+
19
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
20
+
21
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
22
+
23
+ function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
24
+
25
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
26
+
27
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
28
+
29
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
30
+
31
+ var ajv = createAjvInstance();
32
+ var formerCustomFormats = null;
33
+ var formerMetaSchema = null;
34
+ var ROOT_SCHEMA_PREFIX = "__rjsf_rootSchema";
35
+
36
+ function createAjvInstance() {
37
+ var ajv = new _ajv["default"]({
38
+ errorDataPath: "property",
39
+ allErrors: true,
40
+ multipleOfPrecision: 8,
41
+ schemaId: "auto",
42
+ unknownFormats: "ignore"
43
+ }); // add custom formats
44
+
45
+ ajv.addFormat("data-url", /^data:([a-z]+\/[a-z0-9-+.]+)?;(?:name=(.*);)?base64,(.*)$/);
46
+ ajv.addFormat("color", /^(#?([0-9A-Fa-f]{3}){1,2}\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\(\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*,\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*,\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*\))|(rgb\(\s*(\d?\d%|100%)+\s*,\s*(\d?\d%|100%)+\s*,\s*(\d?\d%|100%)+\s*\)))$/);
47
+ return ajv;
48
+ }
49
+
50
+ function toErrorSchema(errors) {
51
+ // Transforms a ajv validation errors list:
52
+ // [
53
+ // {property: ".level1.level2[2].level3", message: "err a"},
54
+ // {property: ".level1.level2[2].level3", message: "err b"},
55
+ // {property: ".level1.level2[4].level3", message: "err b"},
56
+ // ]
57
+ // Into an error tree:
58
+ // {
59
+ // level1: {
60
+ // level2: {
61
+ // 2: {level3: {errors: ["err a", "err b"]}},
62
+ // 4: {level3: {errors: ["err b"]}},
63
+ // }
64
+ // }
65
+ // };
66
+ if (!errors.length) {
67
+ return {};
68
+ }
69
+
70
+ return errors.reduce(function (errorSchema, error) {
71
+ var property = error.property,
72
+ message = error.message;
73
+ var path = (0, _toPath["default"])(property);
74
+ var parent = errorSchema; // If the property is at the root (.level1) then toPath creates
75
+ // an empty array element at the first index. Remove it.
76
+
77
+ if (path.length > 0 && path[0] === "") {
78
+ path.splice(0, 1);
79
+ }
80
+
81
+ var _iteratorNormalCompletion = true;
82
+ var _didIteratorError = false;
83
+ var _iteratorError = undefined;
84
+
85
+ try {
86
+ for (var _iterator = path.slice(0)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
87
+ var segment = _step.value;
88
+
89
+ if (!(segment in parent)) {
90
+ parent[segment] = {};
91
+ }
92
+
93
+ parent = parent[segment];
94
+ }
95
+ } catch (err) {
96
+ _didIteratorError = true;
97
+ _iteratorError = err;
98
+ } finally {
99
+ try {
100
+ if (!_iteratorNormalCompletion && _iterator["return"] != null) {
101
+ _iterator["return"]();
102
+ }
103
+ } finally {
104
+ if (_didIteratorError) {
105
+ throw _iteratorError;
106
+ }
107
+ }
108
+ }
109
+
110
+ if (Array.isArray(parent.__errors)) {
111
+ // We store the list of errors for this node in a property named __errors
112
+ // to avoid name collision with a possible sub schema field named
113
+ // "errors" (see `validate.createErrorHandler`).
114
+ parent.__errors = parent.__errors.concat(message);
115
+ } else {
116
+ if (message) {
117
+ parent.__errors = [message];
118
+ }
119
+ }
120
+
121
+ return errorSchema;
122
+ }, {});
123
+ }
124
+
125
+ function toErrorList(errorSchema) {
126
+ var fieldName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "root";
127
+ // XXX: We should transform fieldName as a full field path string.
128
+ var errorList = [];
129
+
130
+ if ("__errors" in errorSchema) {
131
+ errorList = errorList.concat(errorSchema.__errors.map(function (stack) {
132
+ return {
133
+ stack: "".concat(fieldName, ": ").concat(stack)
134
+ };
135
+ }));
136
+ }
137
+
138
+ return Object.keys(errorSchema).reduce(function (acc, key) {
139
+ if (key !== "__errors") {
140
+ acc = acc.concat(toErrorList(errorSchema[key], key));
141
+ }
142
+
143
+ return acc;
144
+ }, errorList);
145
+ }
146
+
147
+ function createErrorHandler(formData) {
148
+ var handler = {
149
+ // We store the list of errors for this node in a property named __errors
150
+ // to avoid name collision with a possible sub schema field named
151
+ // "errors" (see `utils.toErrorSchema`).
152
+ __errors: [],
153
+ addError: function addError(message) {
154
+ this.__errors.push(message);
155
+ }
156
+ };
157
+
158
+ if ((0, _utils.isObject)(formData)) {
159
+ return Object.keys(formData).reduce(function (acc, key) {
160
+ return _objectSpread({}, acc, _defineProperty({}, key, createErrorHandler(formData[key])));
161
+ }, handler);
162
+ }
163
+
164
+ if (Array.isArray(formData)) {
165
+ return formData.reduce(function (acc, value, key) {
166
+ return _objectSpread({}, acc, _defineProperty({}, key, createErrorHandler(value)));
167
+ }, handler);
168
+ }
169
+
170
+ return handler;
171
+ }
172
+
173
+ function unwrapErrorHandler(errorHandler) {
174
+ return Object.keys(errorHandler).reduce(function (acc, key) {
175
+ if (key === "addError") {
176
+ return acc;
177
+ } else if (key === "__errors") {
178
+ return _objectSpread({}, acc, _defineProperty({}, key, errorHandler[key]));
179
+ }
180
+
181
+ return _objectSpread({}, acc, _defineProperty({}, key, unwrapErrorHandler(errorHandler[key])));
182
+ }, {});
183
+ }
184
+ /**
185
+ * Transforming the error output from ajv to format used by jsonschema.
186
+ * At some point, components should be updated to support ajv.
187
+ */
188
+
189
+
190
+ function transformAjvErrors() {
191
+ var errors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
192
+
193
+ if (errors === null) {
194
+ return [];
195
+ }
196
+
197
+ return errors.map(function (e) {
198
+ var dataPath = e.dataPath,
199
+ keyword = e.keyword,
200
+ message = e.message,
201
+ params = e.params,
202
+ schemaPath = e.schemaPath;
203
+ var property = "".concat(dataPath); // put data in expected format
204
+
205
+ return {
206
+ name: keyword,
207
+ property: property,
208
+ message: message,
209
+ params: params,
210
+ // specific to ajv
211
+ stack: "".concat(property, " ").concat(message).trim(),
212
+ schemaPath: schemaPath
213
+ };
214
+ });
215
+ }
216
+ /**
217
+ * This function processes the formData with a user `validate` contributed
218
+ * function, which receives the form data and an `errorHandler` object that
219
+ * will be used to add custom validation errors for each field.
220
+ */
221
+
222
+
223
+ function validateFormData(formData, schema, customValidate, transformErrors) {
224
+ var additionalMetaSchemas = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
225
+ var customFormats = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
226
+ // Include form data with undefined values, which is required for validation.
227
+ var rootSchema = schema;
228
+ formData = (0, _utils.getDefaultFormState)(schema, formData, rootSchema, true);
229
+ var newMetaSchemas = !(0, _utils.deepEquals)(formerMetaSchema, additionalMetaSchemas);
230
+ var newFormats = !(0, _utils.deepEquals)(formerCustomFormats, customFormats);
231
+
232
+ if (newMetaSchemas || newFormats) {
233
+ ajv = createAjvInstance();
234
+ } // add more schemas to validate against
235
+
236
+
237
+ if (additionalMetaSchemas && newMetaSchemas && Array.isArray(additionalMetaSchemas)) {
238
+ ajv.addMetaSchema(additionalMetaSchemas);
239
+ formerMetaSchema = additionalMetaSchemas;
240
+ } // add more custom formats to validate against
241
+
242
+
243
+ if (customFormats && newFormats && (0, _utils.isObject)(customFormats)) {
244
+ Object.keys(customFormats).forEach(function (formatName) {
245
+ ajv.addFormat(formatName, customFormats[formatName]);
246
+ });
247
+ formerCustomFormats = customFormats;
248
+ }
249
+
250
+ var validationError = null;
251
+
252
+ try {
253
+ ajv.validate(schema, formData);
254
+ } catch (err) {
255
+ validationError = err;
256
+ }
257
+
258
+ var errors = transformAjvErrors(ajv.errors); // Clear errors to prevent persistent errors, see #1104
259
+
260
+ ajv.errors = null;
261
+ var noProperMetaSchema = validationError && validationError.message && typeof validationError.message === "string" && validationError.message.includes("no schema with key or ref ");
262
+
263
+ if (noProperMetaSchema) {
264
+ errors = [].concat(_toConsumableArray(errors), [{
265
+ stack: validationError.message
266
+ }]);
267
+ }
268
+
269
+ if (typeof transformErrors === "function") {
270
+ errors = transformErrors(errors);
271
+ }
272
+
273
+ var errorSchema = toErrorSchema(errors);
274
+
275
+ if (noProperMetaSchema) {
276
+ errorSchema = _objectSpread({}, errorSchema, {
277
+ $schema: {
278
+ __errors: [validationError.message]
279
+ }
280
+ });
281
+ }
282
+
283
+ if (typeof customValidate !== "function") {
284
+ return {
285
+ errors: errors,
286
+ errorSchema: errorSchema
287
+ };
288
+ }
289
+
290
+ var errorHandler = customValidate(formData, createErrorHandler(formData));
291
+ var userErrorSchema = unwrapErrorHandler(errorHandler);
292
+ var newErrorSchema = (0, _utils.mergeObjects)(errorSchema, userErrorSchema, true); // XXX: The errors list produced is not fully compliant with the format
293
+ // exposed by the jsonschema lib, which contains full field paths and other
294
+ // properties.
295
+
296
+ var newErrors = toErrorList(newErrorSchema);
297
+ return {
298
+ errors: newErrors,
299
+ errorSchema: newErrorSchema
300
+ };
301
+ }
302
+ /**
303
+ * Recursively prefixes all $ref's in a schema with `ROOT_SCHEMA_PREFIX`
304
+ * This is used in isValid to make references to the rootSchema
305
+ */
306
+
307
+
308
+ function withIdRefPrefix(schemaNode) {
309
+ var obj = schemaNode;
310
+
311
+ if (schemaNode.constructor === Object) {
312
+ obj = _objectSpread({}, schemaNode);
313
+
314
+ for (var key in obj) {
315
+ var value = obj[key];
316
+
317
+ if (key === "$ref" && typeof value === "string" && value.startsWith("#")) {
318
+ obj[key] = ROOT_SCHEMA_PREFIX + value;
319
+ } else {
320
+ obj[key] = withIdRefPrefix(value);
321
+ }
322
+ }
323
+ } else if (Array.isArray(schemaNode)) {
324
+ obj = _toConsumableArray(schemaNode);
325
+
326
+ for (var i = 0; i < obj.length; i++) {
327
+ obj[i] = withIdRefPrefix(obj[i]);
328
+ }
329
+ }
330
+
331
+ return obj;
332
+ }
333
+ /**
334
+ * Validates data against a schema, returning true if the data is valid, or
335
+ * false otherwise. If the schema is invalid, then this function will return
336
+ * false.
337
+ */
338
+
339
+
340
+ function isValid(schema, data, rootSchema) {
341
+ try {
342
+ // add the rootSchema ROOT_SCHEMA_PREFIX as id.
343
+ // then rewrite the schema ref's to point to the rootSchema
344
+ // this accounts for the case where schema have references to models
345
+ // that lives in the rootSchema but not in the schema in question.
346
+ return ajv.addSchema(rootSchema, ROOT_SCHEMA_PREFIX).validate(withIdRefPrefix(schema), data);
347
+ } catch (e) {
348
+ return false;
349
+ } finally {
350
+ // make sure we remove the rootSchema from the global ajv instance
351
+ ajv.removeSchema(ROOT_SCHEMA_PREFIX);
352
+ }
353
+ }
354
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWxpZGF0ZS5qcyJdLCJuYW1lcyI6WyJhanYiLCJjcmVhdGVBanZJbnN0YW5jZSIsImZvcm1lckN1c3RvbUZvcm1hdHMiLCJmb3JtZXJNZXRhU2NoZW1hIiwiUk9PVF9TQ0hFTUFfUFJFRklYIiwiQWp2IiwiZXJyb3JEYXRhUGF0aCIsImFsbEVycm9ycyIsIm11bHRpcGxlT2ZQcmVjaXNpb24iLCJzY2hlbWFJZCIsInVua25vd25Gb3JtYXRzIiwiYWRkRm9ybWF0IiwidG9FcnJvclNjaGVtYSIsImVycm9ycyIsImxlbmd0aCIsInJlZHVjZSIsImVycm9yU2NoZW1hIiwiZXJyb3IiLCJwcm9wZXJ0eSIsIm1lc3NhZ2UiLCJwYXRoIiwicGFyZW50Iiwic3BsaWNlIiwic2xpY2UiLCJzZWdtZW50IiwiQXJyYXkiLCJpc0FycmF5IiwiX19lcnJvcnMiLCJjb25jYXQiLCJ0b0Vycm9yTGlzdCIsImZpZWxkTmFtZSIsImVycm9yTGlzdCIsIm1hcCIsInN0YWNrIiwiT2JqZWN0Iiwia2V5cyIsImFjYyIsImtleSIsImNyZWF0ZUVycm9ySGFuZGxlciIsImZvcm1EYXRhIiwiaGFuZGxlciIsImFkZEVycm9yIiwicHVzaCIsInZhbHVlIiwidW53cmFwRXJyb3JIYW5kbGVyIiwiZXJyb3JIYW5kbGVyIiwidHJhbnNmb3JtQWp2RXJyb3JzIiwiZSIsImRhdGFQYXRoIiwia2V5d29yZCIsInBhcmFtcyIsInNjaGVtYVBhdGgiLCJuYW1lIiwidHJpbSIsInZhbGlkYXRlRm9ybURhdGEiLCJzY2hlbWEiLCJjdXN0b21WYWxpZGF0ZSIsInRyYW5zZm9ybUVycm9ycyIsImFkZGl0aW9uYWxNZXRhU2NoZW1hcyIsImN1c3RvbUZvcm1hdHMiLCJyb290U2NoZW1hIiwibmV3TWV0YVNjaGVtYXMiLCJuZXdGb3JtYXRzIiwiYWRkTWV0YVNjaGVtYSIsImZvckVhY2giLCJmb3JtYXROYW1lIiwidmFsaWRhdGlvbkVycm9yIiwidmFsaWRhdGUiLCJlcnIiLCJub1Byb3Blck1ldGFTY2hlbWEiLCJpbmNsdWRlcyIsIiRzY2hlbWEiLCJ1c2VyRXJyb3JTY2hlbWEiLCJuZXdFcnJvclNjaGVtYSIsIm5ld0Vycm9ycyIsIndpdGhJZFJlZlByZWZpeCIsInNjaGVtYU5vZGUiLCJvYmoiLCJjb25zdHJ1Y3RvciIsInN0YXJ0c1dpdGgiLCJpIiwiaXNWYWxpZCIsImRhdGEiLCJhZGRTY2hlbWEiLCJyZW1vdmVTY2hlbWEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7OztBQURBLElBQUlBLEdBQUcsR0FBR0MsaUJBQWlCLEVBQTNCO0FBR0EsSUFBSUMsbUJBQW1CLEdBQUcsSUFBMUI7QUFDQSxJQUFJQyxnQkFBZ0IsR0FBRyxJQUF2QjtBQUNBLElBQU1DLGtCQUFrQixHQUFHLG1CQUEzQjs7QUFJQSxTQUFTSCxpQkFBVCxHQUE2QjtBQUMzQixNQUFNRCxHQUFHLEdBQUcsSUFBSUssZUFBSixDQUFRO0FBQ2xCQyxJQUFBQSxhQUFhLEVBQUUsVUFERztBQUVsQkMsSUFBQUEsU0FBUyxFQUFFLElBRk87QUFHbEJDLElBQUFBLG1CQUFtQixFQUFFLENBSEg7QUFJbEJDLElBQUFBLFFBQVEsRUFBRSxNQUpRO0FBS2xCQyxJQUFBQSxjQUFjLEVBQUU7QUFMRSxHQUFSLENBQVosQ0FEMkIsQ0FTM0I7O0FBQ0FWLEVBQUFBLEdBQUcsQ0FBQ1csU0FBSixDQUNFLFVBREYsRUFFRSwyREFGRjtBQUlBWCxFQUFBQSxHQUFHLENBQUNXLFNBQUosQ0FDRSxPQURGLEVBRUUsNFlBRkY7QUFJQSxTQUFPWCxHQUFQO0FBQ0Q7O0FBRUQsU0FBU1ksYUFBVCxDQUF1QkMsTUFBdkIsRUFBK0I7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSSxDQUFDQSxNQUFNLENBQUNDLE1BQVosRUFBb0I7QUFDbEIsV0FBTyxFQUFQO0FBQ0Q7O0FBQ0QsU0FB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QVNJLE9BQVQsQ0FBaUIxQixNQUFqQixFQUF5QjJCLElBQXpCLEVBQStCdEIsVUFBL0IsRUFBMkM7QUFDaEQsTUFBSTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBTzVELEdBQUcsQ0FDUG1GLFNBREksQ0FDTXZCLFVBRE4sRUFDa0J4RCxrQkFEbEIsRUFFSitELFFBRkksQ0FFS1EsZUFBZSxDQUFDcEIsTUFBRCxDQUZwQixFQUU4QjJCLElBRjlCLENBQVA7QUFHRCxHQVJELENBUUUsT0FBT25DLENBQVAsRUFBVTtBQUNWLFdBQU8sS0FBUDtBQUNELEdBVkQsU0FVVTtBQUNSO0FBQ0EvQyxJQUFBQSxHQUFHLENBQUNvRixZQUFKLENBQWlCaEYsa0JBQWpCO0FBQ0Q7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0b1BhdGggZnJvbSBcImxvZGFzaC90b1BhdGhcIjtcbmltcG9ydCBBanYgZnJvbSBcImFqdlwiO1xubGV0IGFqdiA9IGNyZWF0ZUFqdkluc3RhbmNlKCk7XG5pbXBvcnQgeyBkZWVwRXF1YWxzLCBnZXREZWZhdWx0Rm9ybVN0YXRlIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxubGV0IGZvcm1lckN1c3RvbUZvcm1hdHMgPSBudWxsO1xubGV0IGZvcm1lck1ldGFTY2hlbWEgPSBudWxsO1xuY29uc3QgUk9PVF9TQ0hFTUFfUFJFRklYID0gXCJfX3Jqc2Zfcm9vdFNjaGVtYVwiO1xuXG5pbXBvcnQgeyBpc09iamVjdCwgbWVyZ2VPYmplY3RzIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuZnVuY3Rpb24gY3JlYXRlQWp2SW5zdGFuY2UoKSB7XG4gIGNvbnN0IGFqdiA9IG5ldyBBanYoe1xuICAgIGVycm9yRGF0YVBhdGg6IFwicHJvcGVydHlcIixcbiAgICBhbGxFcnJvcnM6IHRydWUsXG4gICAgbXVsdGlwbGVPZlByZWNpc2lvbjogOCxcbiAgICBzY2hlbWFJZDogXCJhdXRvXCIsXG4gICAgdW5rbm93bkZvcm1hdHM6IFwiaWdub3JlXCIsXG4gIH0pO1xuXG4gIC8vIGFkZCBjdXN0b20gZm9ybWF0c1xuICBhanYuYWRkRm9ybWF0KFxuICAgIFwiZGF0YS11cmxcIixcbiAgICAvXmRhdGE6KFthLXpdK1xcL1thLXowLTktKy5dKyk/Oyg/Om5hbWU9KC4qKTspP2Jhc2U2NCwoLiopJC9cbiAgKTtcbiAgYWp2LmFkZEZvcm1hdChcbiAgICBcImNvbG9yXCIsXG4gICAgL14oIz8oWzAtOUEtRmEtZl17M30pezEsMn1cXGJ8YXF1YXxibGFja3xibHVlfGZ1Y2hzaWF8Z3JheXxncmVlbnxsaW1lfG1hcm9vbnxuYXZ5fG9saXZlfG9yYW5nZXxwdXJwbGV8cmVkfHNpbHZlcnx0ZWFsfHdoaXRlfHllbGxvd3wocmdiXFwoXFxzKlxcYihbMC05XXxbMS05XVswLTldfDFbMC05XVswLTldfDJbMC00XVswLTldfDI1WzAtNV0pXFxiXFxzKixcXHMqXFxiKFswLTldfFsxLTldWzAtOV18MVswLTldWzAtOV18MlswLTRdWzAtOV18MjVbMC01XSlcXGJcXHMqLFxccypcXGIoWzAtOV18WzEtOV1bMC05XXwxWzAtOV1bMC05XXwyWzAtNF1bMC05XXwyNVswLTVdKVxcYlxccypcXCkpfChyZ2JcXChcXHMqKFxcZD9cXGQlfDEwMCUpK1xccyosXFxzKihcXGQ/XFxkJXwxMDAlKStcXHMqLFxccyooXFxkP1xcZCV8MTAwJSkrXFxzKlxcKSkpJC9cbiAgKTtcbiAgcmV0dXJuIGFqdjtcbn1cblxuZnVuY3Rpb24gdG9FcnJvclNjaGVtYShlcnJvcnMpIHtcbiAgLy8gVHJhbnNmb3JtcyBhIGFqdiB2YWxpZGF0aW9uIGVycm9ycyBsaXN0OlxuICAvLyBbXG4gIC8vICAge3Byb3BlcnR5OiBcIi5sZXZlbDEubGV2ZWwyWzJdLmxldmVsM1wiLCBtZXNzYWdlOiBcImVyciBhXCJ9LFxuICAvLyAgIHtwcm9wZXJ0eTogXCIubGV2ZWwxLmxldmVsMlsyXS5sZXZlbDNcIiwgbWVzc2FnZTogXCJlcnIgYlwifSxcbiAgLy8gICB7cHJvcGVydHk6IFwiLmxldmVsMS5sZXZlbDJbNF0ubGV2ZWwzXCIsIG1lc3NhZ2U6IFwiZXJyIGJcIn0sXG4gIC8vIF1cbiAgLy8gSW50byBhbiBlcnJvciB0cmVlOlxuICAvLyB7XG4gIC8vICAgbGV2ZWwxOiB7XG4gIC8vICAgICBsZXZlbDI6IHtcbiAgLy8gICAgICAgMjoge2xldmVsMzoge2Vycm9yczogW1wiZXJyIGFcIiwgXCJlcnIgYlwiXX19LFxuICAvLyAgICAgICA0OiB7bGV2ZWwzOiB7ZXJyb3JzOiBbXCJlcnIgYlwiXX19LFxuICAvLyAgICAgfVxuICAvLyAgIH1cbiAgLy8gfTtcbiAgaWYgKCFlcnJvcnMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIHJldHVybiBlcnJvcnMucmVkdWNlKChlcnJvclNjaGVtYSwgZXJyb3IpID0+IHtcbiAgICBjb25zdCB7IHByb3BlcnR5LCBtZXNzYWdlIH0gPSBlcnJvcjtcbiAgICBjb25zdCBwYXRoID0gdG9QYXRoKHByb3BlcnR5KTtcbiAgICBsZXQgcGFyZW50ID0gZXJyb3JTY2hlbWE7XG5cbiAgICAvLyBJZiB0aGUgcHJvcGVydHkgaXMgYXQgdGhlIHJvb3QgKC5sZXZlbDEpIHRoZW4gdG9QYXRoIGNyZWF0ZXNcbiAgICAvLyBhbiBlbXB0eSBhcnJheSBlbGVtZW50IGF0IHRoZSBmaXJzdCBpbmRleC4gUmVtb3ZlIGl0LlxuICAgIGlmIChwYXRoLmxlbmd0aCA+IDAgJiYgcGF0aFswXSA9PT0gXCJcIikge1xuICAgICAgcGF0aC5zcGxpY2UoMCwgMSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBzZWdtZW50IG9mIHBhdGguc2xpY2UoMCkpIHtcbiAgICAgIGlmICghKHNlZ21lbnQgaW4gcGFyZW50KSkge1xuICAgICAgICBwYXJlbnRbc2VnbWVudF0gPSB7fTtcbiAgICAgIH1cbiAgICAgIHBhcmVudCA9IHBhcmVudFtzZWdtZW50XTtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShwYXJlbnQuX19lcnJvcnMpKSB7XG4gICAgICAvLyBXZSBzdG9yZSB0aGUgbGlzdCBvZiBlcnJvcnMgZm9yIHRoaXMgbm9kZSBpbiBhIHByb3BlcnR5IG5hbWVkIF9fZXJyb3JzXG4gICAgICAvLyB0byBhdm9pZCBuYW1lIGNvbGxpc2lvbiB3aXRoIGEgcG9zc2libGUgc3ViIHNjaGVtYSBmaWVsZCBuYW1lZFxuICAgICAgLy8gXCJlcnJvcnNcIiAoc2VlIGB2YWxpZGF0ZS5jcmVhdGVFcnJvckhhbmRsZXJgKS5cbiAgICAgIHBhcmVudC5fX2Vycm9ycyA9IHBhcmVudC5fX2Vycm9ycy5jb25jYXQobWVzc2FnZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChtZXNzYWdlKSB7XG4gICAgICAgIHBhcmVudC5fX2Vycm9ycyA9IFttZXNzYWdlXTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVycm9yU2NoZW1hO1xuICB9LCB7fSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0Vycm9yTGlzdChlcnJvclNjaGVtYSwgZmllbGROYW1lID0gXCJyb290XCIpIHtcbiAgLy8gWFhYOiBXZSBzaG91bGQgdHJhbnNmb3JtIGZpZWxkTmFtZSBhcyBhIGZ1bGwgZmllbGQgcGF0aCBzdHJpbmcuXG4gIGxldCBlcnJvckxpc3QgPSBbXTtcbiAgaWYgKFwiX19lcnJvcnNcIiBpbiBlcnJvclNjaGVtYSkge1xuICAgIGVycm9yTGlzdCA9IGVycm9yTGlzdC5jb25jYXQoXG4gICAgICBlcnJvclNjaGVtYS5fX2Vycm9ycy5tYXAoc3RhY2sgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN0YWNrOiBgJHtmaWVsZE5hbWV9OiAke3N0YWNrfWAsXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICk7XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5rZXlzKGVycm9yU2NoZW1hKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgaWYgKGtleSAhPT0gXCJfX2Vycm9yc1wiKSB7XG4gICAgICBhY2MgPSBhY2MuY29uY2F0KHRvRXJyb3JMaXN0KGVycm9yU2NoZW1hW2tleV0sIGtleSkpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBlcnJvckxpc3QpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVFcnJvckhhbmRsZXIoZm9ybURhdGEpIHtcbiAgY29uc3QgaGFuZGxlciA9IHtcbiAgICAvLyBXZSBzdG9yZSB0aGUgbGlzdCBvZiBlcnJvcnMgZm9yIHRoaXMgbm9kZSBpbiBhIHByb3BlcnR5IG5hbWVkIF9fZXJyb3JzXG4gICAgLy8gdG8gYXZvaWQgbmFtZSBjb2xsaXNpb24gd2l0aCBhIHBvc3NpYmxlIHN1YiBzY2hlbWEgZmllbGQgbmFtZWRcbiAgICAvLyBcImVycm9yc1wiIChzZWUgYHV0aWxzLnRvRXJyb3JTY2hlbWFgKS5cbiAgICBfX2Vycm9yczogW10sXG4gICAgYWRkRXJyb3IobWVzc2FnZSkge1xuICAgICAgdGhpcy5fX2Vycm9ycy5wdXNoKG1lc3NhZ2UpO1xuICAgIH0sXG4gIH07XG4gIGlmIChpc09iamVjdChmb3JtRGF0YSkpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZm9ybURhdGEpLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgIHJldHVybiB7IC4uLmFjYywgW2tleV06IGNyZWF0ZUVycm9ySGFuZGxlcihmb3JtRGF0YVtrZXldKSB9O1xuICAgIH0sIGhhbmRsZXIpO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KGZvcm1EYXRhKSkge1xuICAgIHJldHVybiBmb3JtRGF0YS5yZWR1Y2UoKGFjYywgdmFsdWUsIGtleSkgPT4ge1xuICAgICAgcmV0dXJuIHsgLi4uYWNjLCBba2V5XTogY3JlYXRlRXJyb3JIYW5kbGVyKHZhbHVlKSB9O1xuICAgIH0sIGhhbmRsZXIpO1xuICB9XG4gIHJldHVybiBoYW5kbGVyO1xufVxuXG5mdW5jdGlvbiB1bndyYXBFcnJvckhhbmRsZXIoZXJyb3JIYW5kbGVyKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhlcnJvckhhbmRsZXIpLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICBpZiAoa2V5ID09PSBcImFkZEVycm9yXCIpIHtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09IFwiX19lcnJvcnNcIikge1xuICAgICAgcmV0dXJuIHsgLi4uYWNjLCBba2V5XTogZXJyb3JIYW5kbGVyW2tleV0gfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgLi4uYWNjLCBba2V5XTogdW53cmFwRXJyb3JIYW5kbGVyKGVycm9ySGFuZGxlcltrZXldKSB9O1xuICB9LCB7fSk7XG59XG5cbi8qKlxuICogVHJhbnNmb3JtaW5nIHRoZSBlcnJvciBvdXRwdXQgZnJvbSBhanYgdG8gZm9ybWF0IHVzZWQgYnkganNvbnNjaGVtYS5cbiAqIEF0IHNvbWUgcG9pbnQsIGNvbXBvbmVudHMgc2hvdWxkIGJlIHVwZGF0ZWQgdG8gc3VwcG9ydCBhanYuXG4gKi9cbmZ1bmN0aW9uIHRyYW5zZm9ybUFqdkVycm9ycyhlcnJvcnMgPSBbXSkge1xuICBpZiAoZXJyb3JzID09PSBudWxsKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcmV0dXJuIGVycm9ycy5tYXAoZSA9PiB7XG4gICAgY29uc3QgeyBkYXRhUGF0aCwga2V5d29yZCwgbWVzc2FnZSwgcGFyYW1zLCBzY2hlbWFQYXRoIH0gPSBlO1xuICAgIGxldCBwcm9wZXJ0eSA9IGAke2RhdGFQYXRofWA7XG5cbiAgICAvLyBwdXQgZGF0YSBpbiBleHBlY3RlZCBmb3JtYXRcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZToga2V5d29yZCxcbiAgICAgIHByb3BlcnR5LFxuICAgICAgbWVzc2FnZSxcbiAgICAgIHBhcmFtcywgLy8gc3BlY2lmaWMgdG8gYWp2XG4gICAgICBzdGFjazogYCR7cHJvcGVydHl9ICR7bWVzc2FnZX1gLnRyaW0oKSxcbiAgICAgIHNjaGVtYVBhdGgsXG4gICAgfTtcbiAgfSk7XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlIGZvcm1EYXRhIHdpdGggYSB1c2VyIGB2YWxpZGF0ZWAgY29udHJpYnV0ZWRcbiAqIGZ1bmN0aW9uLCB3aGljaCByZWNlaXZlcyB0aGUgZm9ybSBkYXRhIGFuZCBhbiBgZXJyb3JIYW5kbGVyYCBvYmplY3QgdGhhdFxuICogd2lsbCBiZSB1c2VkIHRvIGFkZCBjdXN0b20gdmFsaWRhdGlvbiBlcnJvcnMgZm9yIGVhY2ggZmllbGQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZhbGlkYXRlRm9ybURhdGEoXG4gIGZvcm1EYXRhLFxuICBzY2hlbWEsXG4gIGN1c3RvbVZhbGlkYXRlLFxuICB0cmFuc2Zvcm1FcnJvcnMsXG4gIGFkZGl0aW9uYWxNZXRhU2NoZW1hcyA9IFtdLFxuICBjdXN0b21Gb3JtYXRzID0ge31cbikge1xuICAvLyBJbmNsdWRlIGZvcm0gZGF0YSB3aXRoIHVuZGVmaW5lZCB2YWx1ZXMsIHdoaWNoIGlzIHJlcXVpcmVkIGZvciB2YWxpZGF0aW9uLlxuICBjb25zdCByb290U2NoZW1hID0gc2NoZW1hO1xuICBmb3JtRGF0YSA9IGdldERlZmF1bHRGb3JtU3RhdGUoc2NoZW1hLCBmb3JtRGF0YSwgcm9vdFNjaGVtYSwgdHJ1ZSk7XG5cbiAgY29uc3QgbmV3TWV0YVNjaGVtYXMgPSAhZGVlcEVxdWFscyhmb3JtZXJNZXRhU2NoZW1hLCBhZGRpdGlvbmFsTWV0YVNjaGVtYXMpO1xuICBjb25zdCBuZXdGb3JtYXRzID0gIWRlZXBFcXVhbHMoZm9ybWVyQ3VzdG9tRm9ybWF0cywgY3VzdG9tRm9ybWF0cyk7XG5cbiAgaWYgKG5ld01ldGFTY2hlbWFzIHx8IG5ld0Zvcm1hdHMpIHtcbiAgICBhanYgPSBjcmVhdGVBanZJbnN0YW5jZSgpO1xuICB9XG5cbiAgLy8gYWRkIG1vcmUgc2NoZW1hcyB0byB2YWxpZGF0ZSBhZ2FpbnN0XG4gIGlmIChcbiAgICBhZGRpdGlvbmFsTWV0YVNjaGVtYXMgJiZcbiAgICBuZXdNZXRhU2NoZW1hcyAmJlxuICAgIEFycmF5LmlzQXJyYXkoYWRkaXRpb25hbE1ldGFTY2hlbWFzKVxuICApIHtcbiAgICBhanYuYWRkTWV0YVNjaGVtYShhZGRpdGlvbmFsTWV0YVNjaGVtYXMpO1xuICAgIGZvcm1lck1ldGFTY2hlbWEgPSBhZGRpdGlvbmFsTWV0YVNjaGVtYXM7XG4gIH1cblxuICAvLyBhZGQgbW9yZSBjdXN0b20gZm9ybWF0cyB0byB2YWxpZGF0ZSBhZ2FpbnN0XG4gIGlmIChjdXN0b21Gb3JtYXRzICYmIG5ld0Zvcm1hdHMgJiYgaXNPYmplY3QoY3VzdG9tRm9ybWF0cykpIHtcbiAgICBPYmplY3Qua2V5cyhjdXN0b21Gb3JtYXRzKS5mb3JFYWNoKGZvcm1hdE5hbWUgPT4ge1xuICAgICAgYWp2LmFkZEZvcm1hdChmb3JtYXROYW1lLCBjdXN0b21Gb3JtYXRzW2Zvcm1hdE5hbWVdKTtcbiAgICB9KTtcblxuICAgIGZvcm1lckN1c3RvbUZvcm1hdHMgPSBjdXN0b21Gb3JtYXRzO1xuICB9XG5cbiAgbGV0IHZhbGlkYXRpb25FcnJvciA9IG51bGw7XG4gIHRyeSB7XG4gICAgYWp2LnZhbGlkYXRlKHNjaGVtYSwgZm9ybURhdGEpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB2YWxpZGF0aW9uRXJyb3IgPSBlcnI7XG4gIH1cblxuICBsZXQgZXJyb3JzID0gdHJhbnNmb3JtQWp2RXJyb3JzKGFqdi5lcnJvcnMpO1xuICAvLyBDbGVhciBlcnJvcnMgdG8gcHJldmVudCBwZXJzaXN0ZW50IGVycm9ycywgc2VlICMxMTA0XG5cbiAgYWp2LmVycm9ycyA9IG51bGw7XG5cbiAgY29uc3Qgbm9Qcm9wZXJNZXRhU2NoZW1hID1cbiAgICB2YWxpZGF0aW9uRXJyb3IgJiZcbiAgICB2YWxpZGF0aW9uRXJyb3IubWVzc2FnZSAmJlxuICAgIHR5cGVvZiB2YWxpZGF0aW9uRXJyb3IubWVzc2FnZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgIHZhbGlkYXRpb25FcnJvci5tZXNzYWdlLmluY2x1ZGVzKFwibm8gc2NoZW1hIHdpdGgga2V5IG9yIHJlZiBcIik7XG5cbiAgaWYgKG5vUHJvcGVyTWV0YVNjaGVtYSkge1xuICAgIGVycm9ycyA9IFtcbiAgICAgIC4uLmVycm9ycyxcbiAgICAgIHtcbiAgICAgICAgc3RhY2s6IHZhbGlkYXRpb25FcnJvci5tZXNzYWdlLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG4gIGlmICh0eXBlb2YgdHJhbnNmb3JtRXJyb3JzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBlcnJvcnMgPSB0cmFuc2Zvcm1FcnJvcnMoZXJyb3JzKTtcbiAgfVxuXG4gIGxldCBlcnJvclNjaGVtYSA9IHRvRXJyb3JTY2hlbWEoZXJyb3JzKTtcblxuICBpZiAobm9Qcm9wZXJNZXRhU2NoZW1hKSB7XG4gICAgZXJyb3JTY2hlbWEgPSB7XG4gICAgICAuLi5lcnJvclNjaGVtYSxcbiAgICAgIC4uLntcbiAgICAgICAgJHNjaGVtYToge1xuICAgICAgICAgIF9fZXJyb3JzOiBbdmFsaWRhdGlvbkVycm9yLm1lc3NhZ2VdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBjdXN0b21WYWxpZGF0ZSAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcmV0dXJuIHsgZXJyb3JzLCBlcnJvclNjaGVtYSB9O1xuICB9XG5cbiAgY29uc3QgZXJyb3JIYW5kbGVyID0gY3VzdG9tVmFsaWRhdGUoZm9ybURhdGEsIGNyZWF0ZUVycm9ySGFuZGxlcihmb3JtRGF0YSkpO1xuICBjb25zdCB1c2VyRXJyb3JTY2hlbWEgPSB1bndyYXBFcnJvckhhbmRsZXIoZXJyb3JIYW5kbGVyKTtcbiAgY29uc3QgbmV3RXJyb3JTY2hlbWEgPSBtZXJnZU9iamVjdHMoZXJyb3JTY2hlbWEsIHVzZXJFcnJvclNjaGVtYSwgdHJ1ZSk7XG4gIC8vIFhYWDogVGhlIGVycm9ycyBsaXN0IHByb2R1Y2VkIGlzIG5vdCBmdWxseSBjb21wbGlhbnQgd2l0aCB0aGUgZm9ybWF0XG4gIC8vIGV4cG9zZWQgYnkgdGhlIGpzb25zY2hlbWEgbGliLCB3aGljaCBjb250YWlucyBmdWxsIGZpZWxkIHBhdGhzIGFuZCBvdGhlclxuICAvLyBwcm9wZXJ0aWVzLlxuICBjb25zdCBuZXdFcnJvcnMgPSB0b0Vycm9yTGlzdChuZXdFcnJvclNjaGVtYSk7XG5cbiAgcmV0dXJuIHtcbiAgICBlcnJvcnM6IG5ld0Vycm9ycyxcbiAgICBlcnJvclNjaGVtYTogbmV3RXJyb3JTY2hlbWEsXG4gIH07XG59XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgcHJlZml4ZXMgYWxsICRyZWYncyBpbiBhIHNjaGVtYSB3aXRoIGBST09UX1NDSEVNQV9QUkVGSVhgXG4gKiBUaGlzIGlzIHVzZWQgaW4gaXNWYWxpZCB0byBtYWtlIHJlZmVyZW5jZXMgdG8gdGhlIHJvb3RTY2hlbWFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhJZFJlZlByZWZpeChzY2hlbWFOb2RlKSB7XG4gIGxldCBvYmogPSBzY2hlbWFOb2RlO1xuICBpZiAoc2NoZW1hTm9kZS5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0KSB7XG4gICAgb2JqID0geyAuLi5zY2hlbWFOb2RlIH07XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IG9ialtrZXldO1xuICAgICAgaWYgKFxuICAgICAgICBrZXkgPT09IFwiJHJlZlwiICYmXG4gICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICB2YWx1ZS5zdGFydHNXaXRoKFwiI1wiKVxuICAgICAgKSB7XG4gICAgICAgIG9ialtrZXldID0gUk9PVF9TQ0hFTUFfUFJFRklYICsgdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmpba2V5XSA9IHdpdGhJZFJlZlByZWZpeCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hTm9kZSkpIHtcbiAgICBvYmogPSBbLi4uc2NoZW1hTm9kZV07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvYmoubGVuZ3RoOyBpKyspIHtcbiAgICAgIG9ialtpXSA9IHdpdGhJZFJlZlByZWZpeChvYmpbaV0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBkYXRhIGFnYWluc3QgYSBzY2hlbWEsIHJldHVybmluZyB0cnVlIGlmIHRoZSBkYXRhIGlzIHZhbGlkLCBvclxuICogZmFsc2Ugb3RoZXJ3aXNlLiBJZiB0aGUgc2NoZW1hIGlzIGludmFsaWQsIHRoZW4gdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVyblxuICogZmFsc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkKHNjaGVtYSwgZGF0YSwgcm9vdFNjaGVtYSkge1xuICB0cnkge1xuICAgIC8vIGFkZCB0aGUgcm9vdFNjaGVtYSBST09UX1NDSEVNQV9QUkVGSVggYXMgaWQuXG4gICAgLy8gdGhlbiByZXdyaXRlIHRoZSBzY2hlbWEgcmVmJ3MgdG8gcG9pbnQgdG8gdGhlIHJvb3RTY2hlbWFcbiAgICAvLyB0aGlzIGFjY291bnRzIGZvciB0aGUgY2FzZSB3aGVyZSBzY2hlbWEgaGF2ZSByZWZlcmVuY2VzIHRvIG1vZGVsc1xuICAgIC8vIHRoYXQgbGl2ZXMgaW4gdGhlIHJvb3RTY2hlbWEgYnV0IG5vdCBpbiB0aGUgc2NoZW1hIGluIHF1ZXN0aW9uLlxuICAgIHJldHVybiBhanZcbiAgICAgIC5hZGRTY2hlbWEocm9vdFNjaGVtYSwgUk9PVF9TQ0hFTUFfUFJFRklYKVxuICAgICAgLnZhbGlkYXRlKHdpdGhJZFJlZlByZWZpeChzY2hlbWEpLCBkYXRhKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBtYWtlIHN1cmUgd2UgcmVtb3ZlIHRoZSByb290U2NoZW1hIGZyb20gdGhlIGdsb2JhbCBhanYgaW5zdGFuY2VcbiAgICBhanYucmVtb3ZlU2NoZW1hKFJPT1RfU0NIRU1BX1BSRUZJWCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _ = _interopRequireDefault(require("./"));
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
+
16
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } }
17
+
18
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
19
+
20
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
21
+
22
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
23
+
24
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
25
+
26
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
27
+
28
+ function withTheme(themeProps) {
29
+ return (0, _react.forwardRef)(function (_ref, ref) {
30
+ var fields = _ref.fields,
31
+ widgets = _ref.widgets,
32
+ directProps = _objectWithoutProperties(_ref, ["fields", "widgets"]);
33
+
34
+ fields = _objectSpread({}, themeProps.fields, fields);
35
+ widgets = _objectSpread({}, themeProps.widgets, widgets);
36
+ return (
37
+ /*#__PURE__*/
38
+ _react["default"].createElement(_["default"], _extends({}, themeProps, directProps, {
39
+ fields: fields,
40
+ widgets: widgets,
41
+ ref: ref
42
+ }))
43
+ );
44
+ });
45
+ }
46
+
47
+ withTheme.propTypes = {
48
+ widgets: _propTypes["default"].object,
49
+ fields: _propTypes["default"].object
50
+ };
51
+ var _default = withTheme;
52
+ exports["default"] = _default;
53
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93aXRoVGhlbWUuanMiXSwibmFtZXMiOlsid2l0aFRoZW1lIiwidGhlbWVQcm9wcyIsInJlZiIsImZpZWxkcyIsIndpZGdldHMiLCJkaXJlY3RQcm9wcyIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm9iamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsU0FBU0EsU0FBVCxDQUFtQkMsVUFBbkIsRUFBK0I7QUFDN0IsU0FBTyx1QkFBVyxnQkFBc0NDLEdBQXRDLEVBQThDO0FBQUEsUUFBM0NDLE1BQTJDLFFBQTNDQSxNQUEyQztBQUFBLFFBQW5DQyxPQUFtQyxRQUFuQ0EsT0FBbUM7QUFBQSxRQUF2QkMsV0FBdUI7O0FBQzlERixJQUFBQSxNQUFNLHFCQUFRRixVQUFVLENBQUNFLE1BQW5CLEVBQThCQSxNQUE5QixDQUFOO0FBQ0FDLElBQUFBLE9BQU8scUJBQVFILFVBQVUsQ0FBQ0csT0FBbkIsRUFBK0JBLE9BQS9CLENBQVA7QUFFQTtBQUFBO0FBQ0Usc0NBQUMsWUFBRCxlQUNNSCxVQUROLEVBRU1JLFdBRk47QUFHRSxRQUFBLE1BQU0sRUFBRUYsTUFIVjtBQUlFLFFBQUEsT0FBTyxFQUFFQyxPQUpYO0FBS0UsUUFBQSxHQUFHLEVBQUVGO0FBTFA7QUFERjtBQVNELEdBYk0sQ0FBUDtBQWNEOztBQUVERixTQUFTLENBQUNNLFNBQVYsR0FBc0I7QUFDcEJGLEVBQUFBLE9BQU8sRUFBRUcsc0JBQVVDLE1BREM7QUFFcEJMLEVBQUFBLE1BQU0sRUFBRUksc0JBQVVDO0FBRkUsQ0FBdEI7ZUFLZVIsUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgRm9ybSBmcm9tIFwiLi9cIjtcblxuZnVuY3Rpb24gd2l0aFRoZW1lKHRoZW1lUHJvcHMpIHtcbiAgcmV0dXJuIGZvcndhcmRSZWYoKHsgZmllbGRzLCB3aWRnZXRzLCAuLi5kaXJlY3RQcm9wcyB9LCByZWYpID0+IHtcbiAgICBmaWVsZHMgPSB7IC4uLnRoZW1lUHJvcHMuZmllbGRzLCAuLi5maWVsZHMgfTtcbiAgICB3aWRnZXRzID0geyAuLi50aGVtZVByb3BzLndpZGdldHMsIC4uLndpZGdldHMgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8Rm9ybVxuICAgICAgICB7Li4udGhlbWVQcm9wc31cbiAgICAgICAgey4uLmRpcmVjdFByb3BzfVxuICAgICAgICBmaWVsZHM9e2ZpZWxkc31cbiAgICAgICAgd2lkZ2V0cz17d2lkZ2V0c31cbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAvPlxuICAgICk7XG4gIH0pO1xufVxuXG53aXRoVGhlbWUucHJvcFR5cGVzID0ge1xuICB3aWRnZXRzOiBQcm9wVHlwZXMub2JqZWN0LFxuICBmaWVsZHM6IFByb3BUeXBlcy5vYmplY3QsXG59O1xuXG5leHBvcnQgZGVmYXVsdCB3aXRoVGhlbWU7XG4iXX0=
@@ -0,0 +1,28 @@
1
+ import React from "react";
2
+ import IconButton from "./IconButton";
3
+ export default function AddButton(_ref) {
4
+ var className = _ref.className,
5
+ onClick = _ref.onClick,
6
+ disabled = _ref.disabled;
7
+ return (
8
+ /*#__PURE__*/
9
+ React.createElement("div", {
10
+ className: "row"
11
+ },
12
+ /*#__PURE__*/
13
+ React.createElement("p", {
14
+ className: "col-xs-3 col-xs-offset-9 text-right ".concat(className)
15
+ },
16
+ /*#__PURE__*/
17
+ React.createElement(IconButton, {
18
+ type: "info",
19
+ icon: "plus",
20
+ className: "btn-add col-xs-12",
21
+ "aria-label": "Add",
22
+ tabIndex: "0",
23
+ onClick: onClick,
24
+ disabled: disabled
25
+ })))
26
+ );
27
+ }
28
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0FkZEJ1dHRvbi5qcyJdLCJuYW1lcyI6WyJSZWFjdCIsIkljb25CdXR0b24iLCJBZGRCdXR0b24iLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwiZGlzYWJsZWQiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLEtBQVAsTUFBa0IsT0FBbEI7QUFDQSxPQUFPQyxVQUFQLE1BQXVCLGNBQXZCO0FBRUEsZUFBZSxTQUFTQyxTQUFULE9BQXFEO0FBQUEsTUFBaENDLFNBQWdDLFFBQWhDQSxTQUFnQztBQUFBLE1BQXJCQyxPQUFxQixRQUFyQkEsT0FBcUI7QUFBQSxNQUFaQyxRQUFZLFFBQVpBLFFBQVk7QUFDbEU7QUFBQTtBQUNFO0FBQUssTUFBQSxTQUFTLEVBQUM7QUFBZjtBQUFBO0FBQ0U7QUFBRyxNQUFBLFNBQVMsZ0RBQXlDRixTQUF6QztBQUFaO0FBQUE7QUFDRSx3QkFBQyxVQUFEO0FBQ0UsTUFBQSxJQUFJLEVBQUMsTUFEUDtBQUVFLE1BQUEsSUFBSSxFQUFDLE1BRlA7QUFHRSxNQUFBLFNBQVMsRUFBQyxtQkFIWjtBQUlFLG9CQUFXLEtBSmI7QUFLRSxNQUFBLFFBQVEsRUFBQyxHQUxYO0FBTUUsTUFBQSxPQUFPLEVBQUVDLE9BTlg7QUFPRSxNQUFBLFFBQVEsRUFBRUM7QUFQWixNQURGLENBREY7QUFERjtBQWVEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IEljb25CdXR0b24gZnJvbSBcIi4vSWNvbkJ1dHRvblwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBBZGRCdXR0b24oeyBjbGFzc05hbWUsIG9uQ2xpY2ssIGRpc2FibGVkIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgPHAgY2xhc3NOYW1lPXtgY29sLXhzLTMgY29sLXhzLW9mZnNldC05IHRleHQtcmlnaHQgJHtjbGFzc05hbWV9YH0+XG4gICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgdHlwZT1cImluZm9cIlxuICAgICAgICAgIGljb249XCJwbHVzXCJcbiAgICAgICAgICBjbGFzc05hbWU9XCJidG4tYWRkIGNvbC14cy0xMlwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIkFkZFwiXG4gICAgICAgICAgdGFiSW5kZXg9XCIwXCJcbiAgICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgLz5cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdfQ==
@@ -0,0 +1,31 @@
1
+ import React from "react";
2
+ export default function ErrorList(props) {
3
+ var errors = props.errors;
4
+ return (
5
+ /*#__PURE__*/
6
+ React.createElement("div", {
7
+ className: "panel panel-danger errors"
8
+ },
9
+ /*#__PURE__*/
10
+ React.createElement("div", {
11
+ className: "panel-heading"
12
+ },
13
+ /*#__PURE__*/
14
+ React.createElement("h3", {
15
+ className: "panel-title"
16
+ }, "Errors")),
17
+ /*#__PURE__*/
18
+ React.createElement("ul", {
19
+ className: "list-group"
20
+ }, errors.map(function (error, i) {
21
+ return (
22
+ /*#__PURE__*/
23
+ React.createElement("li", {
24
+ key: i,
25
+ className: "list-group-item text-danger"
26
+ }, error.stack)
27
+ );
28
+ })))
29
+ );
30
+ }
31
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0Vycm9yTGlzdC5qcyJdLCJuYW1lcyI6WyJSZWFjdCIsIkVycm9yTGlzdCIsInByb3BzIiwiZXJyb3JzIiwibWFwIiwiZXJyb3IiLCJpIiwic3RhY2siXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLEtBQVAsTUFBa0IsT0FBbEI7QUFFQSxlQUFlLFNBQVNDLFNBQVQsQ0FBbUJDLEtBQW5CLEVBQTBCO0FBQUEsTUFDL0JDLE1BRCtCLEdBQ3BCRCxLQURvQixDQUMvQkMsTUFEK0I7QUFFdkM7QUFBQTtBQUNFO0FBQUssTUFBQSxTQUFTLEVBQUM7QUFBZjtBQUFBO0FBQ0U7QUFBSyxNQUFBLFNBQVMsRUFBQztBQUFmO0FBQUE7QUFDRTtBQUFJLE1BQUEsU0FBUyxFQUFDO0FBQWQsZ0JBREYsQ0FERjtBQUFBO0FBSUU7QUFBSSxNQUFBLFNBQVMsRUFBQztBQUFkLE9BQ0dBLE1BQU0sQ0FBQ0MsR0FBUCxDQUFXLFVBQUNDLEtBQUQsRUFBUUMsQ0FBUixFQUFjO0FBQ3hCO0FBQUE7QUFDRTtBQUFJLFVBQUEsR0FBRyxFQUFFQSxDQUFUO0FBQVksVUFBQSxTQUFTLEVBQUM7QUFBdEIsV0FDR0QsS0FBSyxDQUFDRSxLQURUO0FBREY7QUFLRCxLQU5BLENBREgsQ0FKRjtBQURGO0FBZ0JEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBFcnJvckxpc3QocHJvcHMpIHtcbiAgY29uc3QgeyBlcnJvcnMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicGFuZWwgcGFuZWwtZGFuZ2VyIGVycm9yc1wiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYW5lbC1oZWFkaW5nXCI+XG4gICAgICAgIDxoMyBjbGFzc05hbWU9XCJwYW5lbC10aXRsZVwiPkVycm9yczwvaDM+XG4gICAgICA8L2Rpdj5cbiAgICAgIDx1bCBjbGFzc05hbWU9XCJsaXN0LWdyb3VwXCI+XG4gICAgICAgIHtlcnJvcnMubWFwKChlcnJvciwgaSkgPT4ge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8bGkga2V5PXtpfSBjbGFzc05hbWU9XCJsaXN0LWdyb3VwLWl0ZW0gdGV4dC1kYW5nZXJcIj5cbiAgICAgICAgICAgICAge2Vycm9yLnN0YWNrfVxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICApO1xuICAgICAgICB9KX1cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0=