@1money/component-ui 0.0.71 → 0.0.74
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/es/components/ProForm/ProForm.d.ts +10 -2
- package/es/components/ProForm/ProForm.js +241 -55
- package/es/components/ProForm/ProFormDependency.d.ts +11 -2
- package/es/components/ProForm/ProFormDependency.js +29 -133
- package/es/components/ProForm/ProFormItem.js +146 -52
- package/es/components/ProForm/ProFormList.js +114 -62
- package/es/components/ProForm/SchemaForm.d.ts +7 -0
- package/es/components/ProForm/SchemaForm.js +103 -0
- package/es/components/ProForm/Submitter.js +26 -5
- package/es/components/ProForm/context.d.ts +30 -3
- package/es/components/ProForm/context.js +69 -10
- package/es/components/ProForm/core/constants.d.ts +12 -3
- package/es/components/ProForm/core/constants.js +18 -7
- package/es/components/ProForm/core/formStore.d.ts +24 -0
- package/es/components/ProForm/core/formStore.js +101 -0
- package/es/components/ProForm/core/hooks/useForm.d.ts +4 -1
- package/es/components/ProForm/core/hooks/useForm.js +336 -212
- package/es/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
- package/es/components/ProForm/core/hooks/useFormCore.js +151 -93
- package/es/components/ProForm/core/interface.d.ts +33 -12
- package/es/components/ProForm/core/runRules.d.ts +20 -8
- package/es/components/ProForm/core/runRules.js +105 -50
- package/es/components/ProForm/core/useFormItem.d.ts +10 -1
- package/es/components/ProForm/core/useFormItem.js +141 -56
- package/es/components/ProForm/fields/ProFormDatePicker.js +4 -1
- package/es/components/ProForm/fields/ProFormFieldSet.js +20 -7
- package/es/components/ProForm/fields/createProFormField.js +61 -32
- package/es/components/ProForm/hooks/useFieldRequest.d.ts +6 -1
- package/es/components/ProForm/hooks/useFieldRequest.js +54 -9
- package/es/components/ProForm/hooks/useUrlSync.d.ts +16 -0
- package/es/components/ProForm/hooks/useUrlSync.js +170 -0
- package/es/components/ProForm/index.d.ts +12 -5
- package/es/components/ProForm/index.js +7 -2
- package/es/components/ProForm/interface.d.ts +185 -28
- package/es/components/ProForm/layouts/DialogForm.d.ts +5 -1
- package/es/components/ProForm/layouts/DialogForm.js +18 -7
- package/es/components/ProForm/layouts/DrawerForm.d.ts +5 -1
- package/es/components/ProForm/layouts/DrawerForm.js +17 -7
- package/es/components/ProForm/layouts/QueryFilter.d.ts +5 -2
- package/es/components/ProForm/layouts/QueryFilter.js +47 -71
- package/es/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
- package/es/components/ProForm/layouts/useOverlayForm.js +27 -8
- package/es/components/ProForm/style/ProForm.css +4 -4
- package/es/components/ProForm/utils.d.ts +12 -1
- package/es/components/ProForm/utils.js +101 -28
- package/es/components/ProTable/ProTable.js +3 -3
- package/es/components/Tooltip/style/Tooltip.css +1 -0
- package/es/index.css +1 -1
- package/es/index.d.ts +2 -2
- package/es/index.js +2 -2
- package/lib/components/ProForm/ProForm.d.ts +10 -2
- package/lib/components/ProForm/ProForm.js +239 -53
- package/lib/components/ProForm/ProFormDependency.d.ts +11 -2
- package/lib/components/ProForm/ProFormDependency.js +30 -135
- package/lib/components/ProForm/ProFormItem.js +143 -48
- package/lib/components/ProForm/ProFormList.js +112 -60
- package/lib/components/ProForm/SchemaForm.d.ts +7 -0
- package/lib/components/ProForm/SchemaForm.js +110 -0
- package/lib/components/ProForm/Submitter.js +26 -5
- package/lib/components/ProForm/context.d.ts +30 -3
- package/lib/components/ProForm/context.js +69 -10
- package/lib/components/ProForm/core/constants.d.ts +12 -3
- package/lib/components/ProForm/core/constants.js +19 -8
- package/lib/components/ProForm/core/formStore.d.ts +24 -0
- package/lib/components/ProForm/core/formStore.js +110 -0
- package/lib/components/ProForm/core/hooks/useForm.d.ts +4 -1
- package/lib/components/ProForm/core/hooks/useForm.js +336 -212
- package/lib/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
- package/lib/components/ProForm/core/hooks/useFormCore.js +150 -92
- package/lib/components/ProForm/core/interface.d.ts +33 -12
- package/lib/components/ProForm/core/runRules.d.ts +20 -8
- package/lib/components/ProForm/core/runRules.js +106 -50
- package/lib/components/ProForm/core/useFormItem.d.ts +10 -1
- package/lib/components/ProForm/core/useFormItem.js +138 -53
- package/lib/components/ProForm/fields/ProFormDatePicker.js +4 -1
- package/lib/components/ProForm/fields/ProFormFieldSet.js +19 -6
- package/lib/components/ProForm/fields/createProFormField.js +61 -32
- package/lib/components/ProForm/hooks/useFieldRequest.d.ts +6 -1
- package/lib/components/ProForm/hooks/useFieldRequest.js +53 -8
- package/lib/components/ProForm/hooks/useUrlSync.d.ts +16 -0
- package/lib/components/ProForm/hooks/useUrlSync.js +178 -0
- package/lib/components/ProForm/index.d.ts +12 -5
- package/lib/components/ProForm/index.js +16 -1
- package/lib/components/ProForm/interface.d.ts +185 -28
- package/lib/components/ProForm/layouts/DialogForm.d.ts +5 -1
- package/lib/components/ProForm/layouts/DialogForm.js +18 -7
- package/lib/components/ProForm/layouts/DrawerForm.d.ts +5 -1
- package/lib/components/ProForm/layouts/DrawerForm.js +17 -7
- package/lib/components/ProForm/layouts/QueryFilter.d.ts +5 -2
- package/lib/components/ProForm/layouts/QueryFilter.js +46 -70
- package/lib/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
- package/lib/components/ProForm/layouts/useOverlayForm.js +30 -8
- package/lib/components/ProForm/style/ProForm.css +4 -4
- package/lib/components/ProForm/utils.d.ts +12 -1
- package/lib/components/ProForm/utils.js +104 -28
- package/lib/components/ProTable/ProTable.js +3 -3
- package/lib/components/Tooltip/style/Tooltip.css +1 -0
- package/lib/index.css +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +13 -1
- package/package.json +1 -1
- package/scripts/mcp-server/examples.generated.json +90 -0
- package/scripts/mcp-server/index.generated.json +1866 -212
|
@@ -16,6 +16,7 @@ var _classnames = _interopRequireDefault(require("../../utils/classnames"));
|
|
|
16
16
|
var _Button = require("../Button");
|
|
17
17
|
var _Typography = require("../Typography");
|
|
18
18
|
var _context = require("./context");
|
|
19
|
+
var _formStore = require("./core/formStore");
|
|
19
20
|
var _constants = require("./constants");
|
|
20
21
|
var _utils = require("./utils");
|
|
21
22
|
var classes = (0, _classnames["default"])("".concat(_constants.CSS_PREFIX, "-list"));
|
|
@@ -23,6 +24,70 @@ var listKeyCounter = 0;
|
|
|
23
24
|
var generateKey = function generateKey() {
|
|
24
25
|
return "list_".concat(++listKeyCounter);
|
|
25
26
|
};
|
|
27
|
+
// Stable empty result for the no-value case — a fresh [] per selector run
|
|
28
|
+
// would never compare equal and loop the subscription.
|
|
29
|
+
var EMPTY_LIST = [];
|
|
30
|
+
// Row-level memo boundary: setNestedValue clones ONLY the edited row, so
|
|
31
|
+
// untouched rows keep their record identity and bail out here while a
|
|
32
|
+
// sibling row is being edited.
|
|
33
|
+
var ListRowActionsBase = function ListRowActionsBase(_ref) {
|
|
34
|
+
var index = _ref.index,
|
|
35
|
+
record = _ref.record,
|
|
36
|
+
canAdd = _ref.canAdd,
|
|
37
|
+
canRemove = _ref.canRemove,
|
|
38
|
+
copyIconProps = _ref.copyIconProps,
|
|
39
|
+
deleteIconProps = _ref.deleteIconProps,
|
|
40
|
+
action = _ref.action,
|
|
41
|
+
actionRender = _ref.actionRender,
|
|
42
|
+
itemRender = _ref.itemRender,
|
|
43
|
+
onCopy = _ref.onCopy,
|
|
44
|
+
onRemove = _ref.onRemove;
|
|
45
|
+
var copyBtnProps = (0, _utils.extractButtonProps)(copyIconProps);
|
|
46
|
+
var deleteBtnProps = (0, _utils.extractButtonProps)(deleteIconProps);
|
|
47
|
+
var defaultDom = {
|
|
48
|
+
copy: copyIconProps !== false ? (0, _jsxRuntime.jsx)(_Button.Button, Object.assign({
|
|
49
|
+
type: "button",
|
|
50
|
+
color: "secondary",
|
|
51
|
+
size: "small"
|
|
52
|
+
}, copyBtnProps.rest, {
|
|
53
|
+
onClick: function onClick() {
|
|
54
|
+
return onCopy(index);
|
|
55
|
+
},
|
|
56
|
+
disabled: !canAdd || copyBtnProps.disabled,
|
|
57
|
+
children: _constants.DEFAULT_TEXT.copy
|
|
58
|
+
}), "copy-".concat(index)) : null,
|
|
59
|
+
"delete": deleteIconProps !== false ? (0, _jsxRuntime.jsx)(_Button.Button, Object.assign({
|
|
60
|
+
type: "button",
|
|
61
|
+
color: "secondary",
|
|
62
|
+
size: "small"
|
|
63
|
+
}, deleteBtnProps.rest, {
|
|
64
|
+
onClick: function onClick() {
|
|
65
|
+
return onRemove(index);
|
|
66
|
+
},
|
|
67
|
+
disabled: !canRemove || deleteBtnProps.disabled,
|
|
68
|
+
children: _constants.DEFAULT_TEXT["delete"]
|
|
69
|
+
}), "delete-".concat(index)) : null
|
|
70
|
+
};
|
|
71
|
+
var renderedActions = actionRender ? actionRender({
|
|
72
|
+
index: index,
|
|
73
|
+
record: record
|
|
74
|
+
}, action, defaultDom) : [defaultDom.copy, defaultDom["delete"]].filter(Boolean);
|
|
75
|
+
var rowNode = (0, _jsxRuntime.jsx)("div", {
|
|
76
|
+
className: classes('row-actions'),
|
|
77
|
+
children: renderedActions
|
|
78
|
+
});
|
|
79
|
+
if (itemRender) {
|
|
80
|
+
return (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
81
|
+
children: itemRender({
|
|
82
|
+
listDom: rowNode,
|
|
83
|
+
action: action
|
|
84
|
+
})
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
return rowNode;
|
|
88
|
+
};
|
|
89
|
+
ListRowActionsBase.displayName = 'ProFormListRowActions';
|
|
90
|
+
var ListRowActions = /*#__PURE__*/(0, _react.memo)(ListRowActionsBase);
|
|
26
91
|
var ProFormListBase = function ProFormListBase(props) {
|
|
27
92
|
var _a, _b;
|
|
28
93
|
var rawName = props.name,
|
|
@@ -44,19 +109,21 @@ var ProFormListBase = function ProFormListBase(props) {
|
|
|
44
109
|
// ── Nested list: prepend parent list name ──
|
|
45
110
|
var parentCtx = (0, _context.useFormListContext)();
|
|
46
111
|
var fullName = parentCtx.listName ? "".concat(parentCtx.listName, ".").concat(rawName) : rawName;
|
|
47
|
-
var
|
|
48
|
-
|
|
49
|
-
|
|
112
|
+
var _useProFormStable = (0, _context.useProFormStable)(),
|
|
113
|
+
setFieldValue = _useProFormStable.setFieldValue;
|
|
114
|
+
var store = (0, _context.useProFormStore)();
|
|
50
115
|
var initialApplied = (0, _react.useRef)(false);
|
|
51
116
|
var keysRef = (0, _react.useRef)([]);
|
|
52
117
|
var _useSafeState = (0, _useSafeState3["default"])(null),
|
|
53
118
|
_useSafeState2 = (0, _slicedToArray2["default"])(_useSafeState, 2),
|
|
54
119
|
listError = _useSafeState2[0],
|
|
55
120
|
setListError = _useSafeState2[1];
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
121
|
+
// Subscribe ONLY to this list's own value: typing elsewhere in the form
|
|
122
|
+
// leaves the array identity untouched and this component does not render.
|
|
123
|
+
var list = (0, _formStore.useStoreSelector)(store, function (state) {
|
|
124
|
+
var raw = fullName.includes('.') ? (0, _utils.getNestedValue)(state.values, fullName) : state.values[fullName];
|
|
125
|
+
return Array.isArray(raw) ? raw : EMPTY_LIST;
|
|
126
|
+
});
|
|
60
127
|
// Sync keys with list length
|
|
61
128
|
while (keysRef.current.length < list.length) {
|
|
62
129
|
keysRef.current.push(generateKey());
|
|
@@ -151,62 +218,47 @@ var ProFormListBase = function ProFormListBase(props) {
|
|
|
151
218
|
getList: getList
|
|
152
219
|
};
|
|
153
220
|
}, [add, removeAt, move, copy, getList]);
|
|
221
|
+
// Per-key cache keeps each row's field object identity stable across list
|
|
222
|
+
// commits (e.g. typing in a sibling row), so memoized row content sees
|
|
223
|
+
// shallow-equal props and bails out.
|
|
224
|
+
var fieldObjCache = (0, _react.useRef)(new Map());
|
|
154
225
|
var mappedFields = (0, _react.useMemo)(function () {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
226
|
+
var nextCache = new Map();
|
|
227
|
+
var fields = list.map(function (_item, index) {
|
|
228
|
+
var key = keysRef.current[index] || "fallback_".concat(index);
|
|
229
|
+
var fieldName = "".concat(fullName, ".").concat(index);
|
|
230
|
+
var cached = fieldObjCache.current.get(key);
|
|
231
|
+
var field = cached && cached.name === fieldName ? cached : {
|
|
232
|
+
name: fieldName,
|
|
233
|
+
key: key
|
|
159
234
|
};
|
|
235
|
+
nextCache.set(key, field);
|
|
236
|
+
return field;
|
|
160
237
|
});
|
|
238
|
+
fieldObjCache.current = nextCache;
|
|
239
|
+
return fields;
|
|
161
240
|
}, [list, fullName]);
|
|
162
|
-
//
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
color: "secondary",
|
|
184
|
-
size: "small"
|
|
185
|
-
}, deleteBtnProps.rest, {
|
|
186
|
-
onClick: function onClick() {
|
|
187
|
-
return removeAt(index);
|
|
188
|
-
},
|
|
189
|
-
disabled: !canRemove || deleteBtnProps.disabled,
|
|
190
|
-
children: _constants.DEFAULT_TEXT["delete"]
|
|
191
|
-
}), "delete-".concat(index)) : null
|
|
192
|
-
};
|
|
193
|
-
var renderedActions = actionRender ? actionRender({
|
|
194
|
-
index: index,
|
|
195
|
-
record: record
|
|
196
|
-
}, action, defaultDom) : [defaultDom.copy, defaultDom["delete"]].filter(Boolean);
|
|
197
|
-
var rowNode = (0, _jsxRuntime.jsx)("div", {
|
|
198
|
-
className: classes('row-actions'),
|
|
199
|
-
children: renderedActions
|
|
200
|
-
}, keysRef.current[index] || index);
|
|
201
|
-
if (itemRender) {
|
|
202
|
-
return itemRender({
|
|
203
|
-
listDom: rowNode,
|
|
204
|
-
action: action
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
return rowNode;
|
|
208
|
-
});
|
|
209
|
-
}, [list, copyIconProps, deleteIconProps, canAdd, canRemove, copy, removeAt, action, actionRender, itemRender]);
|
|
241
|
+
// Memoized so the row factory is re-invoked only when the list itself (or
|
|
242
|
+
// the consumer-provided children) changes — never for unrelated commits.
|
|
243
|
+
var listDom = (0, _react.useMemo)(function () {
|
|
244
|
+
return typeof children === 'function' ? children(mappedFields, action) : children;
|
|
245
|
+
}, [children, mappedFields, action]);
|
|
246
|
+
// Action buttons per row — ListRowActions is the memo boundary
|
|
247
|
+
var actionRows = list.map(function (record, index) {
|
|
248
|
+
return (0, _jsxRuntime.jsx)(ListRowActions, {
|
|
249
|
+
index: index,
|
|
250
|
+
record: record,
|
|
251
|
+
canAdd: canAdd,
|
|
252
|
+
canRemove: canRemove,
|
|
253
|
+
copyIconProps: copyIconProps,
|
|
254
|
+
deleteIconProps: deleteIconProps,
|
|
255
|
+
action: action,
|
|
256
|
+
actionRender: actionRender,
|
|
257
|
+
itemRender: itemRender,
|
|
258
|
+
onCopy: copy,
|
|
259
|
+
onRemove: removeAt
|
|
260
|
+
}, keysRef.current[index] || index);
|
|
261
|
+
});
|
|
210
262
|
// Creator button
|
|
211
263
|
var hasCreator = creatorButtonProps !== false;
|
|
212
264
|
var creatorConfig = hasCreator && (0, _typeof2["default"])(creatorButtonProps) === 'object' ? creatorButtonProps : {};
|
|
@@ -257,4 +309,4 @@ var ProFormListBase = function ProFormListBase(props) {
|
|
|
257
309
|
ProFormListBase.displayName = 'ProFormList';
|
|
258
310
|
var ProFormList = exports.ProFormList = /*#__PURE__*/(0, _react.memo)(ProFormListBase);
|
|
259
311
|
var _default = exports["default"] = ProFormList;
|
|
260
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtTGlzdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtTGlzdC50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX3VzZU1lbW9pemVkRm4iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3VzZVNhZmVTdGF0ZTMiLCJfY2xhc3NuYW1lcyIsIl9CdXR0b24iLCJfVHlwb2dyYXBoeSIsIl9jb250ZXh0IiwiX2NvbnN0YW50cyIsIl91dGlscyIsImNsYXNzZXMiLCJjbGFzc25hbWVzIiwiY29uY2F0IiwiQ1NTX1BSRUZJWCIsImxpc3RLZXlDb3VudGVyIiwiZ2VuZXJhdGVLZXkiLCJQcm9Gb3JtTGlzdEJhc2UiLCJwcm9wcyIsIl9hIiwiX2IiLCJyYXdOYW1lIiwibmFtZSIsImxhYmVsIiwibWluIiwibWF4IiwicmVxdWlyZWQiLCJfcHJvcHMkcmVxdWlyZWRNZXNzYWciLCJyZXF1aXJlZE1lc3NhZ2UiLCJpbml0aWFsVmFsdWUiLCJjb3B5SWNvblByb3BzIiwiZGVsZXRlSWNvblByb3BzIiwiY3JlYXRvckJ1dHRvblByb3BzIiwiaXRlbVJlbmRlciIsImFjdGlvblJlbmRlciIsImNoaWxkcmVuIiwib25BZnRlckFkZCIsIm9uQWZ0ZXJSZW1vdmUiLCJwYXJlbnRDdHgiLCJ1c2VGb3JtTGlzdENvbnRleHQiLCJmdWxsTmFtZSIsImxpc3ROYW1lIiwiX3VzZVByb0Zvcm1Db250ZXh0IiwidXNlUHJvRm9ybUNvbnRleHQiLCJ2YWx1ZXMiLCJzZXRGaWVsZFZhbHVlIiwiaW5pdGlhbEFwcGxpZWQiLCJ1c2VSZWYiLCJrZXlzUmVmIiwiX3VzZVNhZmVTdGF0ZSIsInVzZVNhZmVTdGF0ZSIsIl91c2VTYWZlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwibGlzdEVycm9yIiwic2V0TGlzdEVycm9yIiwibGlzdCIsInVzZU1lbW8iLCJyYXciLCJpbmNsdWRlcyIsImdldE5lc3RlZFZhbHVlIiwiQXJyYXkiLCJpc0FycmF5IiwiY3VycmVudCIsImxlbmd0aCIsInB1c2giLCJzbGljZSIsInVzZUVmZmVjdCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJtYXAiLCJjYW5BZGQiLCJjYW5SZW1vdmUiLCJ2YWxpZGF0ZUxpc3QiLCJ1c2VNZW1vaXplZEZuIiwiYWRkIiwiZGVmYXVsdFZhbHVlIiwiaW5kZXgiLCJ2YWx1ZSIsIm5ld0xpc3QiLCJuZXdLZXlzIiwiaW5zZXJ0SW5kZXgiLCJzcGxpY2UiLCJyZW1vdmVBdCIsImNvcHkiLCJPYmplY3QiLCJhc3NpZ24iLCJtb3ZlIiwiZnJvbSIsInRvIiwiX25ld0xpc3Qkc3BsaWNlIiwiX25ld0xpc3Qkc3BsaWNlMiIsIm1vdmVkSXRlbSIsIl9uZXdLZXlzJHNwbGljZSIsIl9uZXdLZXlzJHNwbGljZTIiLCJtb3ZlZEtleSIsImdldExpc3QiLCJhY3Rpb24iLCJyZW1vdmUiLCJtYXBwZWRGaWVsZHMiLCJfaXRlbSIsImtleSIsImxpc3REb20iLCJhY3Rpb25Sb3dzIiwicmVjb3JkIiwiY29weUJ0blByb3BzIiwiZXh0cmFjdEJ1dHRvblByb3BzIiwiZGVsZXRlQnRuUHJvcHMiLCJkZWZhdWx0RG9tIiwiX2pzeCIsIkJ1dHRvbiIsInR5cGUiLCJjb2xvciIsInNpemUiLCJyZXN0Iiwib25DbGljayIsImRpc2FibGVkIiwiREVGQVVMVF9URVhUIiwicmVuZGVyZWRBY3Rpb25zIiwiZmlsdGVyIiwiQm9vbGVhbiIsInJvd05vZGUiLCJjbGFzc05hbWUiLCJoYXNDcmVhdG9yIiwiY3JlYXRvckNvbmZpZyIsIl90eXBlb2YyIiwiY3JlYXRvclBvc2l0aW9uIiwicG9zaXRpb24iLCJjcmVhdG9yVGV4dCIsInRleHQiLCJjcmVhdG9yQnV0dG9uIiwiZm9ybUxpc3RDb250ZXh0VmFsdWUiLCJGb3JtTGlzdENvbnRleHQiLCJQcm92aWRlciIsIl9qc3hzIiwiVHlwb2dyYXBoeUxhYmVsIiwiUFJPRk9STV9MSVNUX0xBQkVMX1NJWkUiLCJQUk9GT1JNX0xJU1RfTEFCRUxfQ09MT1IiLCJUeXBvZ3JhcGh5Qm9keSIsImFzIiwiZGlzcGxheU5hbWUiLCJQcm9Gb3JtTGlzdCIsImV4cG9ydHMiLCJtZW1vIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUNBQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxjQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxjQUFBLEdBQUFELHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFGLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBTSxPQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxXQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxRQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxVQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxNQUFBLEdBQUFWLE9BQUE7QUFHQSxJQUFNVyxPQUFPLEdBQUcsSUFBQUMsc0JBQVUsS0FBQUMsTUFBQSxDQUFJQyxxQkFBVSxVQUFPLENBQUM7QUFFaEQsSUFBSUMsY0FBYyxHQUFHLENBQUM7QUFDdEIsSUFBTUMsV0FBVyxHQUFHLFNBQWRBLFdBQVdBLENBQUE7RUFBQSxlQUFBSCxNQUFBLENBQXlCLEVBQUVFLGNBQWM7QUFBQSxDQUFFO0FBRTVELElBQU1FLGVBQWUsR0FBeUIsU0FBeENBLGVBQWVBLENBQTBCQyxLQUFLLEVBQUk7RURIcEQsSUFBSUMsRUFBRSxFQUFFQyxFQUFFO0VDSVosSUFDUUMsT0FBTyxHQWVYSCxLQUFLLENBZlBJLElBQUk7SUFDSkMsS0FBSyxHQWNITCxLQUFLLENBZFBLLEtBQUs7SUFDTEMsR0FBRyxHQWFETixLQUFLLENBYlBNLEdBQUc7SUFDSEMsR0FBRyxHQVlEUCxLQUFLLENBWlBPLEdBQUc7SUFDSEMsUUFBUSxHQVdOUixLQUFLLENBWFBRLFFBQVE7SUFBQUMscUJBQUEsR0FXTlQsS0FBSyxDQVZQVSxlQUFl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TUFBUyxDQUFBLENBQWtCO0lBQUEsQ0FBQTtFQUN4RixDQUFBLENBQ21CO0FBRS9CLENBQUM7QUFFRHBDLGVBQWUsQ0FBQ3lILFdBQVcsR0FBRyxhQUFhO0FBRXBDLElBQU1DLFdBQVcsR0FBQUMsT0FBQSxDQUFBRCxXQUFBLGdCQUFHLElBQUFFLFdBQUksRUFBQzVILGVBQWUsQ0FBQztBQUFDLElBQUE2SCxRQUFBLEdBQUFGLE9BQUEsY0FFbENELFdBQVciLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL1Byb0Zvcm1MaXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnQDFtb25leS9ob29rcy91c2VNZW1vaXplZEZuJztcbmltcG9ydCB1c2VTYWZlU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VTYWZlU3RhdGUnO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi9CdXR0b24nO1xuaW1wb3J0IHsgVHlwb2dyYXBoeUxhYmVsLCBUeXBvZ3JhcGh5Qm9keSB9IGZyb20gJy4uL1R5cG9ncmFwaHknO1xuaW1wb3J0IHsgRm9ybUxpc3RDb250ZXh0LCB1c2VGb3JtTGlzdENvbnRleHQsIHVzZVByb0Zvcm1Db250ZXh0IH0gZnJvbSAnLi9jb250ZXh0JztcbmltcG9ydCB7IENTU19QUkVGSVgsIERFRkFVTFRfVEVYVCwgUFJPRk9STV9MSVNUX0xBQkVMX1NJWkUsIFBST0ZPUk1fTElTVF9MQUJFTF9DT0xPUiB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGV4dHJhY3RCdXR0b25Qcm9wcywgZ2V0TmVzdGVkVmFsdWUgfSBmcm9tICcuL3V0aWxzJztcbmNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKGAke0NTU19QUkVGSVh9LWxpc3RgKTtcbmxldCBsaXN0S2V5Q291bnRlciA9IDA7XG5jb25zdCBnZW5lcmF0ZUtleSA9ICgpID0+IGBsaXN0XyR7KytsaXN0S2V5Q291bnRlcn1gO1xuY29uc3QgUHJvRm9ybUxpc3RCYXNlID0gKHByb3BzKSA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBjb25zdCB7IG5hbWU6IHJhd05hbWUsIGxhYmVsLCBtaW4sIG1heCwgcmVxdWlyZWQsIHJlcXVpcmVkTWVzc2FnZSA9ICdUaGlzIGxpc3QgY2Fubm90IGJlIGVtcHR5JywgaW5pdGlhbFZhbHVlLCBjb3B5SWNvblByb3BzLCBkZWxldGVJY29uUHJvcHMsIGNyZWF0b3JCdXR0b25Qcm9wcywgaXRlbVJlbmRlciwgYWN0aW9uUmVuZGVyLCBjaGlsZHJlbiwgb25BZnRlckFkZCwgb25BZnRlclJlbW92ZSwgfSA9IHByb3BzO1xuICAgIC8vIOKUgOKUgCBOZXN0ZWQgbGlzdDogcHJlcGVuZCBwYXJlbnQgbGlzdCBuYW1lIOKUgOKUgFxuICAgIGNvbnN0IHBhcmVudEN0eCA9IHVzZUZvcm1MaXN0Q29udGV4dCgpO1xuICAgIGNvbnN0IGZ1bGxOYW1lID0gcGFyZW50Q3R4Lmxpc3ROYW1lID8gYCR7cGFyZW50Q3R4Lmxpc3ROYW1lfS4ke3Jhd05hbWV9YCA6IHJhd05hbWU7XG4gICAgY29uc3QgeyB2YWx1ZXMsIHNldEZpZWxkVmFsdWUgfSA9IHVzZVByb0Zvcm1Db250ZXh0KCk7XG4gICAgY29uc3QgaW5pdGlhbEFwcGxpZWQgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGtleXNSZWYgPSB1c2VSZWYoW10pO1xuICAgIGNvbnN0IFtsaXN0RXJyb3IsIHNldExpc3RFcnJvcl0gPSB1c2VTYWZlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgbGlzdCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBjb25zdCByYXcgPSBmdWxsTmFtZS5pbmNsdWRlcygnLicpXG4gICAgICAgICAgICA/IGdldE5lc3RlZFZhbHVlKHZhbHVlcywgZnVsbE5hbWUpXG4gICAgICAgICAgICA6IHZhbHVlc1tmdWxsTmFtZV07XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHJhdykgPyByYXcgOiBbXTtcbiAgICB9LCBbdmFsdWVzLCBmdWxsTmFtZV0pO1xuICAgIC8vIFN5bmMga2V5cyB3aXRoIGxpc3QgbGVuZ3RoXG4gICAgd2hpbGUgKGtleXNSZWYuY3VycmVudC5sZW5ndGggPCBsaXN0Lmxlbmd0aCkge1xuICAgICAgICBrZXlzUmVmLmN1cnJlbnQucHVzaChnZW5lcmF0ZUtleSgpKTtcbiAgICB9XG4gICAgaWYgKGtleXNSZWYuY3VycmVudC5sZW5ndGggPiBsaXN0Lmxlbmd0aCkge1xuICAgICAgICBrZXlzUmVmLmN1cnJlbnQgPSBrZXlzUmVmLmN1cnJlbnQuc2xpY2UoMCwgbGlzdC5sZW5ndGgpO1xuICAgIH1cbiAgICAvLyBBcHBseSBpbml0aWFsIHZhbHVlIG9uY2VcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoaW5pdGlhbEFwcGxpZWQuY3VycmVudClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKGxpc3QubGVuZ3RoICE9PSAwKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoaW5pdGlhbFZhbHVlKSB8fCBpbml0aWFsVmFsdWUubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpbml0aWFsQXBwbGllZC5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgc2V0RmllbGRWYWx1ZShmdWxsTmFtZSwgWy4uLmluaXRpYWxWYWx1ZV0pO1xuICAgICAgICBrZXlzUmVmLmN1cnJlbnQgPSBpbml0aWFsVmFsdWUubWFwKCgpID0+IGdlbmVyYXRlS2V5KCkpO1xuICAgIH0sIFtsaXN0Lmxlbmd0aCwgaW5pdGlhbFZhbHVlLCBmdWxsTmFtZSwgc2V0RmllbGRWYWx1ZV0pO1xuICAgIC8vIENsZWFyIGVycm9yIHdoZW4gbGlzdCBiZWNvbWVzIG5vbi1lbXB0eVxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChyZXF1aXJlZCAmJiBsaXN0Lmxlbmd0aCA+IDAgJiYgbGlzdEVycm9yKSB7XG4gICAgICAgICAgICBzZXRMaXN0RXJyb3IobnVsbCk7XG4gICAgICAgIH1cbiAgICB9LCBbbGlzdC5sZW5ndGgsIHJlcXVpcmVkLCBsaXN0RXJyb3IsIHNldExpc3RFcnJvcl0pO1xuICAgIGNvbnN0IGNhbkFkZCA9IG1heCA9PSBudWxsIHx8IGxpc3QubGVuZ3RoIDwgbWF4O1xuICAgIGNvbnN0IGNhblJlbW92ZSA9IG1pbiA9PSBudWxsIHx8IGxpc3QubGVuZ3RoID4gbWluO1xuICAgIGNvbnN0IHZhbGlkYXRlTGlzdCA9IHVzZU1lbW9pemVkRm4oKCkgPT4ge1xuICAgICAgICBpZiAoIXJlcXVpcmVkKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmIChsaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgc2V0TGlzdEVycm9yKHJlcXVpcmVkTWVzc2FnZSk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgc2V0TGlzdEVycm9yKG51bGwpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgICBjb25zdCBhZGQgPSB1c2VNZW1vaXplZEZuKChkZWZhdWx0VmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmICghY2FuQWRkKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCAmJiBkZWZhdWx0VmFsdWUgIT09IHZvaWQgMCA/IGRlZmF1bHRWYWx1ZSA6IHt9O1xuICAgICAgICBjb25zdCBuZXdMaXN0ID0gWy4uLmxpc3RdO1xuICAgICAgICBjb25zdCBuZXdLZXlzID0gWy4uLmtleXNSZWYuY3VycmVudF07XG4gICAgICAgIGNvbnN0IGluc2VydEluZGV4ID0gdHlwZW9mIGluZGV4ID09PSAnbnVtYmVyJyA/IGluZGV4IDogbmV3TGlzdC5sZW5ndGg7XG4gICAgICAgIG5ld0xpc3Quc3BsaWNlKGluc2VydEluZGV4LCAwLCB2YWx1ZSk7XG4gICAgICAgIG5ld0tleXMuc3BsaWNlKGluc2VydEluZGV4LCAwLCBnZW5lcmF0ZUtleSgpKTtcbiAgICAgICAga2V5c1JlZi5jdXJyZW50ID0gbmV3S2V5cztcbiAgICAgICAgc2V0RmllbGRWYWx1ZShmdWxsTmFtZSwgbmV3TGlzdCk7XG4gICAgICAgIG9uQWZ0ZXJBZGQgPT09IG51bGwgfHwgb25BZnRlckFkZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25BZnRlckFkZCh2YWx1ZSwgaW5zZXJ0SW5kZXgpO1xuICAgIH0pO1xuICAgIGNvbnN0IHJlbW92ZUF0ID0gdXNlTWVtb2l6ZWRGbigoaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKCFjYW5SZW1vdmUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG5ld0xpc3QgPSBbLi4ubGlzdF07XG4gICAgICAgIGNvbnN0IG5ld0tleXMgPSBbLi4ua2V5c1JlZi5jdXJyZW50XTtcbiAgICAgICAgbmV3TGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICBuZXdLZXlzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIGtleXNSZWYuY3VycmVudCA9IG5ld0tleXM7XG4gICAgICAgIHNldEZpZWxkVmFsdWUoZnVsbE5hbWUsIG5ld0xpc3QpO1xuICAgICAgICBvbkFmdGVyUmVtb3ZlID09PSBudWxsIHx8IG9uQWZ0ZXJSZW1vdmUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQWZ0ZXJSZW1vdmUoaW5kZXgpO1xuICAgICAgICAvLyBWYWxpZGF0ZSBhZnRlciByZW1vdmVcbiAgICAgICAgaWYgKHJlcXVpcmVkICYmIG5ld0xpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBzZXRMaXN0RXJyb3IocmVxdWlyZWRNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGNvcHkgPSB1c2VNZW1vaXplZEZuKChpbmRleCkgPT4ge1xuICAgICAgICBpZiAoIWNhbkFkZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBsaXN0W2luZGV4XSA/IE9iamVjdC5hc3NpZ24oe30sIGxpc3RbaW5kZXhdKSA6IHt9O1xuICAgICAgICBhZGQodmFsdWUsIGluZGV4ICsgMSk7XG4gICAgfSk7XG4gICAgY29uc3QgbW92ZSA9IHVzZU1lbW9pemVkRm4oKGZyb20sIHRvKSA9PiB7XG4gICAgICAgIGlmIChmcm9tID09PSB0bylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKGZyb20gPCAwIHx8IGZyb20gPj0gbGlzdC5sZW5ndGggfHwgdG8gPCAwIHx8IHRvID49IGxpc3QubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBuZXdMaXN0ID0gWy4uLmxpc3RdO1xuICAgICAgICBjb25zdCBuZXdLZXlzID0gWy4uLmtleXNSZWYuY3VycmVudF07XG4gICAgICAgIGNvbnN0IFttb3ZlZEl0ZW1dID0gbmV3TGlzdC5zcGxpY2UoZnJvbSwgMSk7XG4gICAgICAgIGNvbnN0IFttb3ZlZEtleV0gPSBuZXdLZXlzLnNwbGljZShmcm9tLCAxKTtcbiAgICAgICAgbmV3TGlzdC5zcGxpY2UodG8sIDAsIG1vdmVkSXRlbSk7XG4gICAgICAgIG5ld0tleXMuc3BsaWNlKHRvLCAwLCBtb3ZlZEtleSk7XG4gICAgICAgIGtleXNSZWYuY3VycmVudCA9IG5ld0tleXM7XG4gICAgICAgIHNldEZpZWxkVmFsdWUoZnVsbE5hbWUsIG5ld0xpc3QpO1xuICAgIH0pO1xuICAgIGNvbnN0IGdldExpc3QgPSB1c2VNZW1vaXplZEZuKCgpID0+IGxpc3QpO1xuICAgIGNvbnN0IGFjdGlvbiA9IHVzZU1lbW8oKCkgPT4gKHsgYWRkLCByZW1vdmU6IHJlbW92ZUF0LCBtb3ZlLCBjb3B5LCBnZXRMaXN0IH0pLCBbYWRkLCByZW1vdmVBdCwgbW92ZSwgY29weSwgZ2V0TGlzdF0pO1xuICAgIGNvbnN0IG1hcHBlZEZpZWxkcyA9IHVzZU1lbW8oKCkgPT4gbGlzdC5tYXAoKF9pdGVtLCBpbmRleCkgPT4gKHtcbiAgICAgICAgbmFtZTogYCR7ZnVsbE5hbWV9LiR7aW5kZXh9YCxcbiAgICAgICAga2V5OiBrZXlzUmVmLmN1cnJlbnRbaW5kZXhdIHx8IGBmYWxsYmFja18ke2luZGV4fWAsXG4gICAgfSkpLCBbbGlzdCwgZnVsbE5hbWVdKTtcbiAgICAvLyBSZW5kZXIgY2hpbGRyZW5cbiAgICBjb25zdCBsaXN0RG9tID0gdHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gY2hpbGRyZW4obWFwcGVkRmllbGRzLCBhY3Rpb24pXG4gICAgICAgIDogY2hpbGRyZW47XG4gICAgLy8gQWN0aW9uIGJ1dHRvbnMgcGVyIHJvd1xuICAgIGNvbnN0IGFjdGlvblJvd3MgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIGxpc3QubWFwKChyZWNvcmQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb3B5QnRuUHJvcHMgPSBleHRyYWN0QnV0dG9uUHJvcHMoY29weUljb25Qcm9wcyk7XG4gICAgICAgICAgICBjb25zdCBkZWxldGVCdG5Qcm9wcyA9IGV4dHJhY3RCdXR0b25Qcm9wcyhkZWxldGVJY29uUHJvcHMpO1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdERvbSA9IHtcbiAgICAgICAgICAgICAgICBjb3B5OiBjb3B5SWNvblByb3BzICE9PSBmYWxzZSA/IChfanN4KEJ1dHRvbiwgT2JqZWN0LmFzc2lnbih7IHR5cGU6IFwiYnV0dG9uXCIsIGNvbG9yOiBcInNlY29uZGFyeVwiLCBzaXplOiBcInNtYWxsXCIgfSwgY29weUJ0blByb3BzLnJlc3QsIHsgb25DbGljazogKCkgPT4gY29weShpbmRleCksIGRpc2FibGVkOiAhY2FuQWRkIHx8IGNvcHlCdG5Qcm9wcy5kaXNhYmxlZCwgY2hpbGRyZW46IERFRkFVTFRfVEVYVC5jb3B5IH0pLCBgY29weS0ke2luZGV4fWApKSA6IG51bGwsXG4gICAgICAgICAgICAgICAgZGVsZXRlOiBkZWxldGVJY29uUHJvcHMgIT09IGZhbHNlID8gKF9qc3goQnV0dG9uLCBPYmplY3QuYXNzaWduKHsgdHlwZTogXCJidXR0b25cIiwgY29sb3I6IFwic2Vjb25kYXJ5XCIsIHNpemU6IFwic21hbGxcIiB9LCBkZWxldGVCdG5Qcm9wcy5yZXN0LCB7IG9uQ2xpY2s6ICgpID0+IHJlbW92ZUF0KGluZGV4KSwgZGlzYWJsZWQ6ICFjYW5SZW1vdmUgfHwgZGVsZXRlQnRuUHJvcHMuZGlzYWJsZWQsIGNoaWxkcmVuOiBERUZBVUxUX1RFWFQuZGVsZXRlIH0pLCBgZGVsZXRlLSR7aW5kZXh9YCkpIDogbnVsbCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCByZW5kZXJlZEFjdGlvbnMgPSBhY3Rpb25SZW5kZXJcbiAgICAgICAgICAgICAgICA/IGFjdGlvblJlbmRlcih7IGluZGV4LCByZWNvcmQgfSwgYWN0aW9uLCBkZWZhdWx0RG9tKVxuICAgICAgICAgICAgICAgIDogW2RlZmF1bHREb20uY29weSwgZGVmYXVsdERvbS5kZWxldGVdLmZpbHRlcihCb29sZWFuKTtcbiAgICAgICAgICAgIGNvbnN0IHJvd05vZGUgPSAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygncm93LWFjdGlvbnMnKSwgY2hpbGRyZW46IHJlbmRlcmVkQWN0aW9ucyB9LCBrZXlzUmVmLmN1cnJlbnRbaW5kZXhdIHx8IGluZGV4KSk7XG4gICAgICAgICAgICBpZiAoaXRlbVJlbmRlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtUmVuZGVyKHsgbGlzdERvbTogcm93Tm9kZSwgYWN0aW9uIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJvd05vZGU7XG4gICAgICAgIH0pO1xuICAgIH0sIFtsaXN0LCBjb3B5SWNvblByb3BzLCBkZWxldGVJY29uUHJvcHMsIGNhbkFkZCwgY2FuUmVtb3ZlLCBjb3B5LCByZW1vdmVBdCwgYWN0aW9uLCBhY3Rpb25SZW5kZXIsIGl0ZW1SZW5kZXJdKTtcbiAgICAvLyBDcmVhdG9yIGJ1dHRvblxuICAgIGNvbnN0IGhhc0NyZWF0b3IgPSBjcmVhdG9yQnV0dG9uUHJvcHMgIT09IGZhbHNlO1xuICAgIGNvbnN0IGNyZWF0b3JDb25maWcgPSBoYXNDcmVhdG9yICYmIHR5cGVvZiBjcmVhdG9yQnV0dG9uUHJvcHMgPT09ICdvYmplY3QnID8gY3JlYXRvckJ1dHRvblByb3BzIDoge307XG4gICAgY29uc3QgY3JlYXRvclBvc2l0aW9uID0gKF9hID0gY3JlYXRvckNvbmZpZyA9PT0gbnVsbCB8fCBjcmVhdG9yQ29uZmlnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjcmVhdG9yQ29uZmlnLnBvc2l0aW9uKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnYm90dG9tJztcbiAgICBjb25zdCBjcmVhdG9yVGV4dCA9IChfYiA9IGNyZWF0b3JDb25maWcgPT09IG51bGwgfHwgY3JlYXRvckNvbmZpZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3JlYXRvckNvbmZpZy50ZXh0KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBERUZBVUxUX1RFWFQuYWRkO1xuICAgIGNvbnN0IGNyZWF0b3JCdXR0b24gPSBoYXNDcmVhdG9yID8gKF9qc3goQnV0dG9uLCB7IHR5cGU6IFwiYnV0dG9uXCIsIGNvbG9yOiBcInNlY29uZGFyeVwiLCBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoY3JlYXRvclBvc2l0aW9uID09PSAndG9wJykge1xuICAgICAgICAgICAgICAgIGFkZCh7fSwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhZGQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZGlzYWJsZWQ6ICFjYW5BZGQsIGNoaWxkcmVuOiBjcmVhdG9yVGV4dCB9KSkgOiBudWxsO1xuICAgIGNvbnN0IGZvcm1MaXN0Q29udGV4dFZhbHVlID0gdXNlTWVtbygoKSA9PiAoeyBsaXN0TmFtZTogZnVsbE5hbWUgfSksIFtmdWxsTmFtZV0pO1xuICAgIHJldHVybiAoX2pzeChGb3JtTGlzdENvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IGZvcm1MaXN0Q29udGV4dFZhbHVlLCBjaGlsZHJlbjogX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoKSwgY2hpbGRyZW46IFtsYWJlbCAmJiBfanN4KFR5cG9ncmFwaHlMYWJlbCwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2xhYmVsJyksIHNpemU6IFBST0ZPUk1fTElTVF9MQUJFTF9TSVpFLCBjb2xvcjogUFJPRk9STV9MSVNUX0xBQkVMX0NPTE9SLCBjaGlsZHJlbjogbGFiZWwgfSksIGNyZWF0b3JQb3NpdGlvbiA9PT0gJ3RvcCcgJiYgY3JlYXRvckJ1dHRvbiwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnY29udGVudCcpLCBjaGlsZHJlbjogbGlzdERvbSB9KSwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnYWN0aW9ucycpLCBjaGlsZHJlbjogYWN0aW9uUm93cyB9KSwgY3JlYXRvclBvc2l0aW9uID09PSAnYm90dG9tJyAmJiBjcmVhdG9yQnV0dG9uLCBsaXN0RXJyb3IgJiYgX2pzeChUeXBvZ3JhcGh5Qm9keSwgeyBhczogXCJkaXZcIiwgc2l6ZTogXCJzbVwiLCBjb2xvcjogXCJkYW5nZXJcIiwgY2hpbGRyZW46IGxpc3RFcnJvciB9KV0gfSkgfSkpO1xufTtcblByb0Zvcm1MaXN0QmFzZS5kaXNwbGF5TmFtZSA9ICdQcm9Gb3JtTGlzdCc7XG5leHBvcnQgY29uc3QgUHJvRm9ybUxpc3QgPSBtZW1vKFByb0Zvcm1MaXN0QmFzZSk7XG5leHBvcnQgZGVmYXVsdCBQcm9Gb3JtTGlzdDsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
312
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtTGlzdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtTGlzdC50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX3VzZU1lbW9pemVkRm4iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3VzZVNhZmVTdGF0ZTMiLCJfY2xhc3NuYW1lcyIsIl9CdXR0b24iLCJfVHlwb2dyYXBoeSIsIl9jb250ZXh0IiwiX2Zvcm1TdG9yZSIsIl9jb25zdGFudHMiLCJfdXRpbHMiLCJjbGFzc2VzIiwiY2xhc3NuYW1lcyIsImNvbmNhdCIsIkNTU19QUkVGSVgiLCJsaXN0S2V5Q291bnRlciIsImdlbmVyYXRlS2V5IiwiRU1QVFlfTElTVCIsIkxpc3RSb3dBY3Rpb25zQmFzZSIsIl9yZWYiLCJpbmRleCIsInJlY29yZCIsImNhbkFkZCIsImNhblJlbW92ZSIsImNvcHlJY29uUHJvcHMiLCJkZWxldGVJY29uUHJvcHMiLCJhY3Rpb24iLCJhY3Rpb25SZW5kZXIiLCJpdGVtUmVuZGVyIiwib25Db3B5Iiwib25SZW1vdmUiLCJjb3B5QnRuUHJvcHMiLCJleHRyYWN0QnV0dG9uUHJvcHMiLCJkZWxldGVCdG5Qcm9wcyIsImRlZmF1bHREb20iLCJjb3B5IiwiX2pzeCIsIkJ1dHRvbiIsIk9iamVjdCIsImFzc2lnbiIsInR5cGUiLCJjb2xvciIsInNpemUiLCJyZXN0Iiwib25DbGljayIsImRpc2FibGVkIiwiY2hpbGRyZW4iLCJERUZBVUxUX1RFWFQiLCJyZW5kZXJlZEFjdGlvbnMiLCJmaWx0ZXIiLCJCb29sZWFuIiwicm93Tm9kZSIsImNsYXNzTmFtZSIsIl9GcmFnbWVudCIsImxpc3REb20iLCJkaXNwbGF5TmFtZSIsIkxpc3RSb3dBY3Rpb25zIiwibWVtbyIsIlByb0Zvcm1MaXN0QmFzZSIsInByb3BzIiwiX2EiLCJfYiIsInJhd05hbWUiLCJuYW1lIiwibGFiZWwiLCJtaW4iLCJtYXgiLCJyZXF1aXJlZCIsIl9wcm9wcyRyZXF1aXJlZE1lc3NhZyIsInJlcXVpcmVkTWVzc2FnZSIsImluaXRpYWxWYWx1ZSIsImNyZWF0b3JCdXR0b25Qcm9wcyIsIm9uQWZ0ZXJBZGQiLCJvbkFmdGVyUmVtb3ZlIiwicGFyZW50Q3R4IiwidXNlRm9ybUxpc3RDb250ZXh0IiwiZnVsbE5hbWUiLCJsaXN0TmFtZSIsIl91c2VQcm9Gb3JtU3RhYmxlIiwidXNlUHJvRm9ybVN0YWJsZSIsInNldEZpZWxkVmFsdWUiLCJzdG9yZSIsInVzZVByb0Zvcm1TdG9yZSIsImluaXRpYWxBcHBsaWVkIiwidXNlUmVmIiwia2V5c1JlZiIsIl91c2VTYWZlU3RhdGUiLCJ1c2VTYWZlU3RhdGUiLCJfdXNlU2FmZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsImxpc3RFcnJvciIsInNldExpc3RFcnJvciIsImxpc3QiLCJ1c2VTdG9yZVNlbGVjdG9yIiwic3RhdGUiLCJyYXciLCJpbmNsdWRlcyIsImdldE5lc3RlZFZhbHVlIiwidmFsdWVzIiwiQXJyYXkiLCJpc0FycmF5IiwiY3VycmVudCIsImxlbmd0aCIsInB1c2giLCJzbGljZSIsInVzZUVmZmVjdCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJtYXAiLCJ2YWxpZGF0ZUxpc3QiLCJ1c2VNZW1vaXplZEZuIiwiYWRkIiwiZGVmYXVsdFZhbHVlIiwidmFsdWUiLCJuZXdMaXN0IiwibmV3S2V5cyIsImluc2VydEluZGV4Iiwic3BsaWNlIiwicmVtb3ZlQXQiLCJtb3ZlIiwiZnJvbSIsInRvIiwiX25ld0xpc3Qkc3BsaWNlIiwiX25ld0xpc3Qkc3BsaWNlMiIsIm1vdmVkSXRlbSIsIl9uZXdLZXlzJHNwbGljZSIsIl9uZXdLZXlzJHNwbGljZTIiLCJtb3ZlZEtleSIsImdldExpc3QiLCJ1c2VNZW1vIiwicmVtb3ZlIiwiZmllbGRPYmpDYWNoZSIsIk1hcCIsIm1hcHBlZEZpZWxkcyIsIm5leHRDYWNoZSIsImZpZWxkcyIsIl9pdGVtIiwia2V5IiwiZmllbGROYW1lIiwiY2FjaGVkIiwiZ2V0IiwiZmllbGQiLCJzZXQiLCJhY3Rpb25Sb3dzIiwiaGFzQ3JlYXRvciIsImNyZWF0b3JDb25maWciLCJfdHlwZW9mMiIsImNyZWF0b3JQb3NpdGlvbiIsInBvc2l0aW9uIiwiY3JlYXRvclRleHQiLCJ0ZXh0IiwiY3JlYXRvckJ1dHRvbiIsImZvcm1MaXN0Q29udGV4dFZhbHVlIiwiRm9ybUxpc3RDb250ZXh0IiwiUHJvdmlkZXIiLCJfanN4cyIsIlR5cG9ncmFwaHlMYWJlbCIsIlBST0ZPUk1fTElTVF9MQUJFTF9TSVpFIiwiUFJPRk9STV9MSVNUX0xBQkVMX0NPTE9SIiwiVHlwb2dyYXBoeUJvZHkiLCJhcyIsIlByb0Zvcm1MaXN0IiwiZXhwb3J0cyIsIl9kZWZhdWx0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FDQUEsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsY0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksY0FBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBRixzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQU0sT0FBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sV0FBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsUUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsVUFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsVUFBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsTUFBQSxHQUFBWCxPQUFBO0FBR0EsSUFBTVksT0FBTyxHQUFHLElBQUFDLHNCQUFVLEtBQUFDLE1BQUEsQ0FBSUMscUJBQVUsVUFBTyxDQUFDO0FBRWhELElBQUlDLGNBQWMsR0FBRyxDQUFDO0FBQ3RCLElBQU1DLFdBQVcsR0FBRyxTQUFkQSxXQUFXQSxDQUFBO0VBQUEsZUFBQUgsTUFBQSxDQUF5QixFQUFFRSxjQUFjO0FBQUEsQ0FBRTtBQUU1RDtBQUNBO0FBQ0EsSUFB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QUFBd0csUUFBQSxHQUFBRCxPQUFBLGNBRWxDRCxXQUFXIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtTGlzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBGcmFnbWVudCBhcyBfRnJhZ21lbnQsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnQDFtb25leS9ob29rcy91c2VNZW1vaXplZEZuJztcbmltcG9ydCB1c2VTYWZlU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VTYWZlU3RhdGUnO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi9CdXR0b24nO1xuaW1wb3J0IHsgVHlwb2dyYXBoeUxhYmVsLCBUeXBvZ3JhcGh5Qm9keSB9IGZyb20gJy4uL1R5cG9ncmFwaHknO1xuaW1wb3J0IHsgRm9ybUxpc3RDb250ZXh0LCB1c2VGb3JtTGlzdENvbnRleHQsIHVzZVByb0Zvcm1TdGFibGUsIHVzZVByb0Zvcm1TdG9yZSB9IGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgeyB1c2VTdG9yZVNlbGVjdG9yIH0gZnJvbSAnLi9jb3JlL2Zvcm1TdG9yZSc7XG5pbXBvcnQgeyBDU1NfUFJFRklYLCBERUZBVUxUX1RFWFQsIFBST0ZPUk1fTElTVF9MQUJFTF9TSVpFLCBQUk9GT1JNX0xJU1RfTEFCRUxfQ09MT1IgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBleHRyYWN0QnV0dG9uUHJvcHMsIGdldE5lc3RlZFZhbHVlIH0gZnJvbSAnLi91dGlscyc7XG5jb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhgJHtDU1NfUFJFRklYfS1saXN0YCk7XG5sZXQgbGlzdEtleUNvdW50ZXIgPSAwO1xuY29uc3QgZ2VuZXJhdGVLZXkgPSAoKSA9PiBgbGlzdF8keysrbGlzdEtleUNvdW50ZXJ9YDtcbi8vIFN0YWJsZSBlbXB0eSByZXN1bHQgZm9yIHRoZSBuby12YWx1ZSBjYXNlIOKAlCBhIGZyZXNoIFtdIHBlciBzZWxlY3RvciBydW5cbi8vIHdvdWxkIG5ldmVyIGNvbXBhcmUgZXF1YWwgYW5kIGxvb3AgdGhlIHN1YnNjcmlwdGlvbi5cbmNvbnN0IEVNUFRZX0xJU1QgPSBbXTtcbi8vIFJvdy1sZXZlbCBtZW1vIGJvdW5kYXJ5OiBzZXROZXN0ZWRWYWx1ZSBjbG9uZXMgT05MWSB0aGUgZWRpdGVkIHJvdywgc29cbi8vIHVudG91Y2hlZCByb3dzIGtlZXAgdGhlaXIgcmVjb3JkIGlkZW50aXR5IGFuZCBiYWlsIG91dCBoZXJlIHdoaWxlIGFcbi8vIHNpYmxpbmcgcm93IGlzIGJlaW5nIGVkaXRlZC5cbmNvbnN0IExpc3RSb3dBY3Rpb25zQmFzZSA9ICh7IGluZGV4LCByZWNvcmQsIGNhbkFkZCwgY2FuUmVtb3ZlLCBjb3B5SWNvblByb3BzLCBkZWxldGVJY29uUHJvcHMsIGFjdGlvbiwgYWN0aW9uUmVuZGVyLCBpdGVtUmVuZGVyLCBvbkNvcHksIG9uUmVtb3ZlLCB9KSA9PiB7XG4gICAgY29uc3QgY29weUJ0blByb3BzID0gZXh0cmFjdEJ1dHRvblByb3BzKGNvcHlJY29uUHJvcHMpO1xuICAgIGNvbnN0IGRlbGV0ZUJ0blByb3BzID0gZXh0cmFjdEJ1dHRvblByb3BzKGRlbGV0ZUljb25Qcm9wcyk7XG4gICAgY29uc3QgZGVmYXVsdERvbSA9IHtcbiAgICAgICAgY29weTogY29weUljb25Qcm9wcyAhPT0gZmFsc2UgPyAoX2pzeChCdXR0b24sIE9iamVjdC5hc3NpZ24oeyB0eXBlOiBcImJ1dHRvblwiLCBjb2xvcjogXCJzZWNvbmRhcnlcIiwgc2l6ZTogXCJzbWFsbFwiIH0sIGNvcHlCdG5Qcm9wcy5yZXN0LCB7IG9uQ2xpY2s6ICgpID0+IG9uQ29weShpbmRleCksIGRpc2FibGVkOiAhY2FuQWRkIHx8IGNvcHlCdG5Qcm9wcy5kaXNhYmxlZCwgY2hpbGRyZW46IERFRkFVTFRfVEVYVC5jb3B5IH0pLCBgY29weS0ke2luZGV4fWApKSA6IG51bGwsXG4gICAgICAgIGRlbGV0ZTogZGVsZXRlSWNvblByb3BzICE9PSBmYWxzZSA/IChfanN4KEJ1dHRvbiwgT2JqZWN0LmFzc2lnbih7IHR5cGU6IFwiYnV0dG9uXCIsIGNvbG9yOiBcInNlY29uZGFyeVwiLCBzaXplOiBcInNtYWxsXCIgfSwgZGVsZXRlQnRuUHJvcHMucmVzdCwgeyBvbkNsaWNrOiAoKSA9PiBvblJlbW92ZShpbmRleCksIGRpc2FibGVkOiAhY2FuUmVtb3ZlIHx8IGRlbGV0ZUJ0blByb3BzLmRpc2FibGVkLCBjaGlsZHJlbjogREVGQVVMVF9URVhULmRlbGV0ZSB9KSwgYGRlbGV0ZS0ke2luZGV4fWApKSA6IG51bGwsXG4gICAgfTtcbiAgICBjb25zdCByZW5kZXJlZEFjdGlvbnMgPSBhY3Rpb25SZW5kZXJcbiAgICAgICAgPyBhY3Rpb25SZW5kZXIoeyBpbmRleCwgcmVjb3JkIH0sIGFjdGlvbiwgZGVmYXVsdERvbSlcbiAgICAgICAgOiBbZGVmYXVsdERvbS5jb3B5LCBkZWZhdWx0RG9tLmRlbGV0ZV0uZmlsdGVyKEJvb2xlYW4pO1xuICAgIGNvbnN0IHJvd05vZGUgPSAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygncm93LWFjdGlvbnMnKSwgY2hpbGRyZW46IHJlbmRlcmVkQWN0aW9ucyB9KSk7XG4gICAgaWYgKGl0ZW1SZW5kZXIpIHtcbiAgICAgICAgcmV0dXJuIF9qc3goX0ZyYWdtZW50LCB7IGNoaWxkcmVuOiBpdGVtUmVuZGVyKHsgbGlzdERvbTogcm93Tm9kZSwgYWN0aW9uIH0pIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcm93Tm9kZTtcbn07XG5MaXN0Um93QWN0aW9uc0Jhc2UuZGlzcGxheU5hbWUgPSAnUHJvRm9ybUxpc3RSb3dBY3Rpb25zJztcbmNvbnN0IExpc3RSb3dBY3Rpb25zID0gbWVtbyhMaXN0Um93QWN0aW9uc0Jhc2UpO1xuY29uc3QgUHJvRm9ybUxpc3RCYXNlID0gKHByb3BzKSA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBjb25zdCB7IG5hbWU6IHJhd05hbWUsIGxhYmVsLCBtaW4sIG1heCwgcmVxdWlyZWQsIHJlcXVpcmVkTWVzc2FnZSA9ICdUaGlzIGxpc3QgY2Fubm90IGJlIGVtcHR5JywgaW5pdGlhbFZhbHVlLCBjb3B5SWNvblByb3BzLCBkZWxldGVJY29uUHJvcHMsIGNyZWF0b3JCdXR0b25Qcm9wcywgaXRlbVJlbmRlciwgYWN0aW9uUmVuZGVyLCBjaGlsZHJlbiwgb25BZnRlckFkZCwgb25BZnRlclJlbW92ZSwgfSA9IHByb3BzO1xuICAgIC8vIOKUgOKUgCBOZXN0ZWQgbGlzdDogcHJlcGVuZCBwYXJlbnQgbGlzdCBuYW1lIOKUgOKUgFxuICAgIGNvbnN0IHBhcmVudEN0eCA9IHVzZUZvcm1MaXN0Q29udGV4dCgpO1xuICAgIGNvbnN0IGZ1bGxOYW1lID0gcGFyZW50Q3R4Lmxpc3ROYW1lID8gYCR7cGFyZW50Q3R4Lmxpc3ROYW1lfS4ke3Jhd05hbWV9YCA6IHJhd05hbWU7XG4gICAgY29uc3QgeyBzZXRGaWVsZFZhbHVlIH0gPSB1c2VQcm9Gb3JtU3RhYmxlKCk7XG4gICAgY29uc3Qgc3RvcmUgPSB1c2VQcm9Gb3JtU3RvcmUoKTtcbiAgICBjb25zdCBpbml0aWFsQXBwbGllZCA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3Qga2V5c1JlZiA9IHVzZVJlZihbXSk7XG4gICAgY29uc3QgW2xpc3RFcnJvciwgc2V0TGlzdEVycm9yXSA9IHVzZVNhZmVTdGF0ZShudWxsKTtcbiAgICAvLyBTdWJzY3JpYmUgT05MWSB0byB0aGlzIGxpc3QncyBvd24gdmFsdWU6IHR5cGluZyBlbHNld2hlcmUgaW4gdGhlIGZvcm1cbiAgICAvLyBsZWF2ZXMgdGhlIGFycmF5IGlkZW50aXR5IHVudG91Y2hlZCBhbmQgdGhpcyBjb21wb25lbnQgZG9lcyBub3QgcmVuZGVyLlxuICAgIGNvbnN0IGxpc3QgPSB1c2VTdG9yZVNlbGVjdG9yKHN0b3JlLCAoc3RhdGUpID0+IHtcbiAgICAgICAgY29uc3QgcmF3ID0gZnVsbE5hbWUuaW5jbHVkZXMoJy4nKVxuICAgICAgICAgICAgPyBnZXROZXN0ZWRWYWx1ZShzdGF0ZS52YWx1ZXMsIGZ1bGxOYW1lKVxuICAgICAgICAgICAgOiBzdGF0ZS52YWx1ZXNbZnVsbE5hbWVdO1xuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShyYXcpID8gcmF3IDogRU1QVFlfTElTVDtcbiAgICB9KTtcbiAgICAvLyBTeW5jIGtleXMgd2l0aCBsaXN0IGxlbmd0aFxuICAgIHdoaWxlIChrZXlzUmVmLmN1cnJlbnQubGVuZ3RoIDwgbGlzdC5sZW5ndGgpIHtcbiAgICAgICAga2V5c1JlZi5jdXJyZW50LnB1c2goZ2VuZXJhdGVLZXkoKSk7XG4gICAgfVxuICAgIGlmIChrZXlzUmVmLmN1cnJlbnQubGVuZ3RoID4gbGlzdC5sZW5ndGgpIHtcbiAgICAgICAga2V5c1JlZi5jdXJyZW50ID0ga2V5c1JlZi5jdXJyZW50LnNsaWNlKDAsIGxpc3QubGVuZ3RoKTtcbiAgICB9XG4gICAgLy8gQXBwbHkgaW5pdGlhbCB2YWx1ZSBvbmNlXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGluaXRpYWxBcHBsaWVkLmN1cnJlbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChsaXN0Lmxlbmd0aCAhPT0gMClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGluaXRpYWxWYWx1ZSkgfHwgaW5pdGlhbFZhbHVlLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaW5pdGlhbEFwcGxpZWQuY3VycmVudCA9IHRydWU7XG4gICAgICAgIHNldEZpZWxkVmFsdWUoZnVsbE5hbWUsIFsuLi5pbml0aWFsVmFsdWVdKTtcbiAgICAgICAga2V5c1JlZi5jdXJyZW50ID0gaW5pdGlhbFZhbHVlLm1hcCgoKSA9PiBnZW5lcmF0ZUtleSgpKTtcbiAgICB9LCBbbGlzdC5sZW5ndGgsIGluaXRpYWxWYWx1ZSwgZnVsbE5hbWUsIHNldEZpZWxkVmFsdWVdKTtcbiAgICAvLyBDbGVhciBlcnJvciB3aGVuIGxpc3QgYmVjb21lcyBub24tZW1wdHlcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAocmVxdWlyZWQgJiYgbGlzdC5sZW5ndGggPiAwICYmIGxpc3RFcnJvcikge1xuICAgICAgICAgICAgc2V0TGlzdEVycm9yKG51bGwpO1xuICAgICAgICB9XG4gICAgfSwgW2xpc3QubGVuZ3RoLCByZXF1aXJlZCwgbGlzdEVycm9yLCBzZXRMaXN0RXJyb3JdKTtcbiAgICBjb25zdCBjYW5BZGQgPSBtYXggPT0gbnVsbCB8fCBsaXN0Lmxlbmd0aCA8IG1heDtcbiAgICBjb25zdCBjYW5SZW1vdmUgPSBtaW4gPT0gbnVsbCB8fCBsaXN0Lmxlbmd0aCA+IG1pbjtcbiAgICBjb25zdCB2YWxpZGF0ZUxpc3QgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgaWYgKCFyZXF1aXJlZClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAobGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHNldExpc3RFcnJvcihyZXF1aXJlZE1lc3NhZ2UpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHNldExpc3RFcnJvcihudWxsKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gICAgY29uc3QgYWRkID0gdXNlTWVtb2l6ZWRGbigoZGVmYXVsdFZhbHVlLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoIWNhbkFkZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBkZWZhdWx0VmFsdWUgIT09IG51bGwgJiYgZGVmYXVsdFZhbHVlICE9PSB2b2lkIDAgPyBkZWZhdWx0VmFsdWUgOiB7fTtcbiAgICAgICAgY29uc3QgbmV3TGlzdCA9IFsuLi5saXN0XTtcbiAgICAgICAgY29uc3QgbmV3S2V5cyA9IFsuLi5rZXlzUmVmLmN1cnJlbnRdO1xuICAgICAgICBjb25zdCBpbnNlcnRJbmRleCA9IHR5cGVvZiBpbmRleCA9PT0gJ251bWJlcicgPyBpbmRleCA6IG5ld0xpc3QubGVuZ3RoO1xuICAgICAgICBuZXdMaXN0LnNwbGljZShpbnNlcnRJbmRleCwgMCwgdmFsdWUpO1xuICAgICAgICBuZXdLZXlzLnNwbGljZShpbnNlcnRJbmRleCwgMCwgZ2VuZXJhdGVLZXkoKSk7XG4gICAgICAgIGtleXNSZWYuY3VycmVudCA9IG5ld0tleXM7XG4gICAgICAgIHNldEZpZWxkVmFsdWUoZnVsbE5hbWUsIG5ld0xpc3QpO1xuICAgICAgICBvbkFmdGVyQWRkID09PSBudWxsIHx8IG9uQWZ0ZXJBZGQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQWZ0ZXJBZGQodmFsdWUsIGluc2VydEluZGV4KTtcbiAgICB9KTtcbiAgICBjb25zdCByZW1vdmVBdCA9IHVzZU1lbW9pemVkRm4oKGluZGV4KSA9PiB7XG4gICAgICAgIGlmICghY2FuUmVtb3ZlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBuZXdMaXN0ID0gWy4uLmxpc3RdO1xuICAgICAgICBjb25zdCBuZXdLZXlzID0gWy4uLmtleXNSZWYuY3VycmVudF07XG4gICAgICAgIG5ld0xpc3Quc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgbmV3S2V5cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICBrZXlzUmVmLmN1cnJlbnQgPSBuZXdLZXlzO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKGZ1bGxOYW1lLCBuZXdMaXN0KTtcbiAgICAgICAgb25BZnRlclJlbW92ZSA9PT0gbnVsbCB8fCBvbkFmdGVyUmVtb3ZlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkFmdGVyUmVtb3ZlKGluZGV4KTtcbiAgICAgICAgLy8gVmFsaWRhdGUgYWZ0ZXIgcmVtb3ZlXG4gICAgICAgIGlmIChyZXF1aXJlZCAmJiBuZXdMaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgc2V0TGlzdEVycm9yKHJlcXVpcmVkTWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBjb3B5ID0gdXNlTWVtb2l6ZWRGbigoaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKCFjYW5BZGQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHZhbHVlID0gbGlzdFtpbmRleF0gPyBPYmplY3QuYXNzaWduKHt9LCBsaXN0W2luZGV4XSkgOiB7fTtcbiAgICAgICAgYWRkKHZhbHVlLCBpbmRleCArIDEpO1xuICAgIH0pO1xuICAgIGNvbnN0IG1vdmUgPSB1c2VNZW1vaXplZEZuKChmcm9tLCB0bykgPT4ge1xuICAgICAgICBpZiAoZnJvbSA9PT0gdG8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChmcm9tIDwgMCB8fCBmcm9tID49IGxpc3QubGVuZ3RoIHx8IHRvIDwgMCB8fCB0byA+PSBsaXN0Lmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgbmV3TGlzdCA9IFsuLi5saXN0XTtcbiAgICAgICAgY29uc3QgbmV3S2V5cyA9IFsuLi5rZXlzUmVmLmN1cnJlbnRdO1xuICAgICAgICBjb25zdCBbbW92ZWRJdGVtXSA9IG5ld0xpc3Quc3BsaWNlKGZyb20sIDEpO1xuICAgICAgICBjb25zdCBbbW92ZWRLZXldID0gbmV3S2V5cy5zcGxpY2UoZnJvbSwgMSk7XG4gICAgICAgIG5ld0xpc3Quc3BsaWNlKHRvLCAwLCBtb3ZlZEl0ZW0pO1xuICAgICAgICBuZXdLZXlzLnNwbGljZSh0bywgMCwgbW92ZWRLZXkpO1xuICAgICAgICBrZXlzUmVmLmN1cnJlbnQgPSBuZXdLZXlzO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKGZ1bGxOYW1lLCBuZXdMaXN0KTtcbiAgICB9KTtcbiAgICBjb25zdCBnZXRMaXN0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiBsaXN0KTtcbiAgICBjb25zdCBhY3Rpb24gPSB1c2VNZW1vKCgpID0+ICh7IGFkZCwgcmVtb3ZlOiByZW1vdmVBdCwgbW92ZSwgY29weSwgZ2V0TGlzdCB9KSwgW2FkZCwgcmVtb3ZlQXQsIG1vdmUsIGNvcHksIGdldExpc3RdKTtcbiAgICAvLyBQZXIta2V5IGNhY2hlIGtlZXBzIGVhY2ggcm93J3MgZmllbGQgb2JqZWN0IGlkZW50aXR5IHN0YWJsZSBhY3Jvc3MgbGlzdFxuICAgIC8vIGNvbW1pdHMgKGUuZy4gdHlwaW5nIGluIGEgc2libGluZyByb3cpLCBzbyBtZW1vaXplZCByb3cgY29udGVudCBzZWVzXG4gICAgLy8gc2hhbGxvdy1lcXVhbCBwcm9wcyBhbmQgYmFpbHMgb3V0LlxuICAgIGNvbnN0IGZpZWxkT2JqQ2FjaGUgPSB1c2VSZWYobmV3IE1hcCgpKTtcbiAgICBjb25zdCBtYXBwZWRGaWVsZHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dENhY2hlID0gbmV3IE1hcCgpO1xuICAgICAgICBjb25zdCBmaWVsZHMgPSBsaXN0Lm1hcCgoX2l0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBrZXlzUmVmLmN1cnJlbnRbaW5kZXhdIHx8IGBmYWxsYmFja18ke2luZGV4fWA7XG4gICAgICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSBgJHtmdWxsTmFtZX0uJHtpbmRleH1gO1xuICAgICAgICAgICAgY29uc3QgY2FjaGVkID0gZmllbGRPYmpDYWNoZS5jdXJyZW50LmdldChrZXkpO1xuICAgICAgICAgICAgY29uc3QgZmllbGQgPSBjYWNoZWQgJiYgY2FjaGVkLm5hbWUgPT09IGZpZWxkTmFtZSA/IGNhY2hlZCA6IHsgbmFtZTogZmllbGROYW1lLCBrZXkgfTtcbiAgICAgICAgICAgIG5leHRDYWNoZS5zZXQoa2V5LCBmaWVsZCk7XG4gICAgICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICAgIH0pO1xuICAgICAgICBmaWVsZE9iakNhY2hlLmN1cnJlbnQgPSBuZXh0Q2FjaGU7XG4gICAgICAgIHJldHVybiBmaWVsZHM7XG4gICAgfSwgW2xpc3QsIGZ1bGxOYW1lXSk7XG4gICAgLy8gTWVtb2l6ZWQgc28gdGhlIHJvdyBmYWN0b3J5IGlzIHJlLWludm9rZWQgb25seSB3aGVuIHRoZSBsaXN0IGl0c2VsZiAob3JcbiAgICAvLyB0aGUgY29uc3VtZXItcHJvdmlkZWQgY2hpbGRyZW4pIGNoYW5nZXMg4oCUIG5ldmVyIGZvciB1bnJlbGF0ZWQgY29tbWl0cy5cbiAgICBjb25zdCBsaXN0RG9tID0gdXNlTWVtbygoKSA9PiAodHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nID8gY2hpbGRyZW4obWFwcGVkRmllbGRzLCBhY3Rpb24pIDogY2hpbGRyZW4pLCBbY2hpbGRyZW4sIG1hcHBlZEZpZWxkcywgYWN0aW9uXSk7XG4gICAgLy8gQWN0aW9uIGJ1dHRvbnMgcGVyIHJvdyDigJQgTGlzdFJvd0FjdGlvbnMgaXMgdGhlIG1lbW8gYm91bmRhcnlcbiAgICBjb25zdCBhY3Rpb25Sb3dzID0gbGlzdC5tYXAoKHJlY29yZCwgaW5kZXgpID0+IChfanN4KExpc3RSb3dBY3Rpb25zLCB7IGluZGV4OiBpbmRleCwgcmVjb3JkOiByZWNvcmQsIGNhbkFkZDogY2FuQWRkLCBjYW5SZW1vdmU6IGNhblJlbW92ZSwgY29weUljb25Qcm9wczogY29weUljb25Qcm9wcywgZGVsZXRlSWNvblByb3BzOiBkZWxldGVJY29uUHJvcHMsIGFjdGlvbjogYWN0aW9uLCBhY3Rpb25SZW5kZXI6IGFjdGlvblJlbmRlciwgaXRlbVJlbmRlcjogaXRlbVJlbmRlciwgb25Db3B5OiBjb3B5LCBvblJlbW92ZTogcmVtb3ZlQXQgfSwga2V5c1JlZi5jdXJyZW50W2luZGV4XSB8fCBpbmRleCkpKTtcbiAgICAvLyBDcmVhdG9yIGJ1dHRvblxuICAgIGNvbnN0IGhhc0NyZWF0b3IgPSBjcmVhdG9yQnV0dG9uUHJvcHMgIT09IGZhbHNlO1xuICAgIGNvbnN0IGNyZWF0b3JDb25maWcgPSBoYXNDcmVhdG9yICYmIHR5cGVvZiBjcmVhdG9yQnV0dG9uUHJvcHMgPT09ICdvYmplY3QnID8gY3JlYXRvckJ1dHRvblByb3BzIDoge307XG4gICAgY29uc3QgY3JlYXRvclBvc2l0aW9uID0gKF9hID0gY3JlYXRvckNvbmZpZyA9PT0gbnVsbCB8fCBjcmVhdG9yQ29uZmlnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjcmVhdG9yQ29uZmlnLnBvc2l0aW9uKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnYm90dG9tJztcbiAgICBjb25zdCBjcmVhdG9yVGV4dCA9IChfYiA9IGNyZWF0b3JDb25maWcgPT09IG51bGwgfHwgY3JlYXRvckNvbmZpZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3JlYXRvckNvbmZpZy50ZXh0KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBERUZBVUxUX1RFWFQuYWRkO1xuICAgIGNvbnN0IGNyZWF0b3JCdXR0b24gPSBoYXNDcmVhdG9yID8gKF9qc3goQnV0dG9uLCB7IHR5cGU6IFwiYnV0dG9uXCIsIGNvbG9yOiBcInNlY29uZGFyeVwiLCBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoY3JlYXRvclBvc2l0aW9uID09PSAndG9wJykge1xuICAgICAgICAgICAgICAgIGFkZCh7fSwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhZGQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZGlzYWJsZWQ6ICFjYW5BZGQsIGNoaWxkcmVuOiBjcmVhdG9yVGV4dCB9KSkgOiBudWxsO1xuICAgIGNvbnN0IGZvcm1MaXN0Q29udGV4dFZhbHVlID0gdXNlTWVtbygoKSA9PiAoeyBsaXN0TmFtZTogZnVsbE5hbWUgfSksIFtmdWxsTmFtZV0pO1xuICAgIHJldHVybiAoX2pzeChGb3JtTGlzdENvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IGZvcm1MaXN0Q29udGV4dFZhbHVlLCBjaGlsZHJlbjogX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoKSwgY2hpbGRyZW46IFtsYWJlbCAmJiBfanN4KFR5cG9ncmFwaHlMYWJlbCwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2xhYmVsJyksIHNpemU6IFBST0ZPUk1fTElTVF9MQUJFTF9TSVpFLCBjb2xvcjogUFJPRk9STV9MSVNUX0xBQkVMX0NPTE9SLCBjaGlsZHJlbjogbGFiZWwgfSksIGNyZWF0b3JQb3NpdGlvbiA9PT0gJ3RvcCcgJiYgY3JlYXRvckJ1dHRvbiwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnY29udGVudCcpLCBjaGlsZHJlbjogbGlzdERvbSB9KSwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnYWN0aW9ucycpLCBjaGlsZHJlbjogYWN0aW9uUm93cyB9KSwgY3JlYXRvclBvc2l0aW9uID09PSAnYm90dG9tJyAmJiBjcmVhdG9yQnV0dG9uLCBsaXN0RXJyb3IgJiYgX2pzeChUeXBvZ3JhcGh5Qm9keSwgeyBhczogXCJkaXZcIiwgc2l6ZTogXCJzbVwiLCBjb2xvcjogXCJkYW5nZXJcIiwgY2hpbGRyZW46IGxpc3RFcnJvciB9KV0gfSkgfSkpO1xufTtcblByb0Zvcm1MaXN0QmFzZS5kaXNwbGF5TmFtZSA9ICdQcm9Gb3JtTGlzdCc7XG5leHBvcnQgY29uc3QgUHJvRm9ybUxpc3QgPSBtZW1vKFByb0Zvcm1MaXN0QmFzZSk7XG5leHBvcnQgZGVmYXVsdCBQcm9Gb3JtTGlzdDsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
|
+
import type { SchemaFormProps } from './interface';
|
|
3
|
+
/** Generic-aware export — keeps `<SchemaForm<MyValues> …>` fully typed. */
|
|
4
|
+
export declare const SchemaForm: (<Values = Record<string, unknown>>(props: SchemaFormProps<Values>) => ReactElement | null) & {
|
|
5
|
+
displayName?: string;
|
|
6
|
+
};
|
|
7
|
+
export default SchemaForm;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = exports.SchemaForm = void 0;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
10
|
+
var _react = require("react");
|
|
11
|
+
var _ProForm = require("./ProForm");
|
|
12
|
+
var _fields = require("./fields");
|
|
13
|
+
var _pathUtils = require("./core/pathUtils");
|
|
14
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
15
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
16
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
17
|
+
var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
18
|
+
var t = {};
|
|
19
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
20
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
21
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
22
|
+
}
|
|
23
|
+
return t;
|
|
24
|
+
};
|
|
25
|
+
// valueType → ProForm field component. `digit` reuses the text field with a
|
|
26
|
+
// numeric input type (the library has no standalone InputNumber).
|
|
27
|
+
var VALUE_TYPE_FIELDS = {
|
|
28
|
+
text: _fields.ProFormText,
|
|
29
|
+
password: _fields.ProFormPassword,
|
|
30
|
+
textarea: _fields.ProFormTextArea,
|
|
31
|
+
digit: _fields.ProFormText,
|
|
32
|
+
select: _fields.ProFormSelect,
|
|
33
|
+
checkbox: _fields.ProFormCheckbox,
|
|
34
|
+
checkboxGroup: _fields.ProFormCheckboxGroup,
|
|
35
|
+
radioGroup: _fields.ProFormRadioGroup,
|
|
36
|
+
"switch": _fields.ProFormSwitch,
|
|
37
|
+
slider: _fields.ProFormSlider,
|
|
38
|
+
date: _fields.ProFormDatePicker,
|
|
39
|
+
dateTime: _fields.ProFormDatePicker,
|
|
40
|
+
upload: _fields.ProFormUpload
|
|
41
|
+
};
|
|
42
|
+
function renderColumn(column) {
|
|
43
|
+
var _a;
|
|
44
|
+
if (column.renderFormItem) {
|
|
45
|
+
return (0, _jsxRuntime.jsx)(_react.Fragment, {
|
|
46
|
+
children: column.renderFormItem(column)
|
|
47
|
+
}, column.dataIndex);
|
|
48
|
+
}
|
|
49
|
+
var title = column.title,
|
|
50
|
+
dataIndex = column.dataIndex,
|
|
51
|
+
_column$valueType = column.valueType,
|
|
52
|
+
valueType = _column$valueType === void 0 ? 'text' : _column$valueType,
|
|
53
|
+
fieldProps = column.fieldProps,
|
|
54
|
+
_initialValue = column.initialValue,
|
|
55
|
+
_renderFormItem = column.renderFormItem,
|
|
56
|
+
rest = __rest(column, ["title", "dataIndex", "valueType", "fieldProps", "initialValue", "renderFormItem"]);
|
|
57
|
+
var Field = (_a = VALUE_TYPE_FIELDS[valueType]) !== null && _a !== void 0 ? _a : VALUE_TYPE_FIELDS.text;
|
|
58
|
+
var mergedFieldProps = fieldProps;
|
|
59
|
+
if (valueType === 'digit') {
|
|
60
|
+
mergedFieldProps = Object.assign({
|
|
61
|
+
type: 'number'
|
|
62
|
+
}, fieldProps);
|
|
63
|
+
} else if (valueType === 'dateTime') {
|
|
64
|
+
mergedFieldProps = Object.assign({
|
|
65
|
+
showTime: true
|
|
66
|
+
}, fieldProps);
|
|
67
|
+
}
|
|
68
|
+
return (0, _jsxRuntime.jsx)(Field, Object.assign({
|
|
69
|
+
name: dataIndex,
|
|
70
|
+
label: title,
|
|
71
|
+
fieldProps: mergedFieldProps
|
|
72
|
+
}, valueType === 'dateTime' ? {
|
|
73
|
+
valueType: 'dateTime'
|
|
74
|
+
} : {}, rest), dataIndex);
|
|
75
|
+
}
|
|
76
|
+
var SchemaFormBase = function SchemaFormBase(props) {
|
|
77
|
+
var columns = props.columns,
|
|
78
|
+
initialValues = props.initialValues,
|
|
79
|
+
formProps = __rest(props, ["columns", "initialValues"]);
|
|
80
|
+
// Column-level initialValue seeds the form; form-level initialValues win.
|
|
81
|
+
var mergedInitialValues = (0, _react.useMemo)(function () {
|
|
82
|
+
var fromColumns = {};
|
|
83
|
+
var hasColumnValue = false;
|
|
84
|
+
var _iterator = _createForOfIteratorHelper(columns),
|
|
85
|
+
_step;
|
|
86
|
+
try {
|
|
87
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
88
|
+
var column = _step.value;
|
|
89
|
+
if (column.initialValue === undefined) continue;
|
|
90
|
+
hasColumnValue = true;
|
|
91
|
+
fromColumns = column.dataIndex.includes('.') ? (0, _pathUtils.setNestedValue)(fromColumns, column.dataIndex, column.initialValue) : Object.assign(Object.assign({}, fromColumns), (0, _defineProperty2["default"])({}, column.dataIndex, column.initialValue));
|
|
92
|
+
}
|
|
93
|
+
} catch (err) {
|
|
94
|
+
_iterator.e(err);
|
|
95
|
+
} finally {
|
|
96
|
+
_iterator.f();
|
|
97
|
+
}
|
|
98
|
+
if (!hasColumnValue) return initialValues;
|
|
99
|
+
return Object.assign(Object.assign({}, fromColumns), initialValues);
|
|
100
|
+
}, [columns, initialValues]);
|
|
101
|
+
return (0, _jsxRuntime.jsx)(_ProForm.ProForm, Object.assign({}, formProps, {
|
|
102
|
+
initialValues: mergedInitialValues,
|
|
103
|
+
children: columns.map(renderColumn)
|
|
104
|
+
}));
|
|
105
|
+
};
|
|
106
|
+
SchemaFormBase.displayName = 'SchemaForm';
|
|
107
|
+
/** Generic-aware export — keeps `<SchemaForm<MyValues> …>` fully typed. */
|
|
108
|
+
var SchemaForm = exports.SchemaForm = /*#__PURE__*/(0, _react.memo)(SchemaFormBase);
|
|
109
|
+
var _default = exports["default"] = SchemaForm;
|
|
110
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9TY2hlbWFGb3JtLmpzIiwiY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL1NjaGVtYUZvcm0udHN4Il0sIm5hbWVzIjpbIl9qc3hSdW50aW1lIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9Qcm9Gb3JtIiwiX2ZpZWxkcyIsIl9wYXRoVXRpbHMiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInIiLCJlIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsImEiLCJ1IiwiY2FsbCIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIl9fcmVzdCIsInAiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJWQUxVRV9UWVBFX0ZJRUxEUyIsInRleHQiLCJQcm9Gb3JtVGV4dCIsInBhc3N3b3JkIiwiUHJvRm9ybVBhc3N3b3JkIiwidGV4dGFyZWEiLCJQcm9Gb3JtVGV4dEFyZWEiLCJkaWdpdCIsInNlbGVjdCIsIlByb0Zvcm1TZWxlY3QiLCJjaGVja2JveCIsIlByb0Zvcm1DaGVja2JveCIsImNoZWNrYm94R3JvdXAiLCJQcm9Gb3JtQ2hlY2tib3hHcm91cCIsInJhZGlvR3JvdXAiLCJQcm9Gb3JtUmFkaW9Hcm91cCIsIlByb0Zvcm1Td2l0Y2giLCJzbGlkZXIiLCJQcm9Gb3JtU2xpZGVyIiwiZGF0ZSIsIlByb0Zvcm1EYXRlUGlja2VyIiwiZGF0ZVRpbWUiLCJ1cGxvYWQiLCJQcm9Gb3JtVXBsb2FkIiwicmVuZGVyQ29sdW1uIiwiY29sdW1uIiwiX2EiLCJyZW5kZXJGb3JtSXRlbSIsIl9qc3giLCJGcmFnbWVudCIsImNoaWxkcmVuIiwiZGF0YUluZGV4IiwidGl0bGUiLCJfY29sdW1uJHZhbHVlVHlwZSIsInZhbHVlVHlwZSIsImZpZWxkUHJvcHMiLCJfaW5pdGlhbFZhbHVlIiwiaW5pdGlhbFZhbHVlIiwiX3JlbmRlckZvcm1JdGVtIiwicmVzdCIsIkZpZWxkIiwibWVyZ2VkRmllbGRQcm9wcyIsImFzc2lnbiIsInR5cGUiLCJzaG93VGltZSIsImxhYmVsIiwiU2NoZW1hRm9ybUJhc2UiLCJwcm9wcyIsImNvbHVtbnMiLCJpbml0aWFsVmFsdWVzIiwiZm9ybVByb3BzIiwibWVyZ2VkSW5pdGlhbFZhbHVlcyIsInVzZU1lbW8iLCJmcm9tQ29sdW1ucyIsImhhc0NvbHVtblZhbHVlIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJ1bmRlZmluZWQiLCJpbmNsdWRlcyIsInNldE5lc3RlZFZhbHVlIiwiX2RlZmluZVByb3BlcnR5MiIsImVyciIsIlByb0Zvcm0iLCJtYXAiLCJkaXNwbGF5TmFtZSIsIlNjaGVtYUZvcm0iLCJleHBvcnRzIiwibWVtbyIsIl9kZWZhdWx0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVdBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ1hBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLE9BQUEsR0FBQUgsT0FBQTtBQWFBLElBQUFJLFVBQUEsR0FBQUosT0FBQTtBQUFrRCxTQUFBSywyQkFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEseUJBQUFDLE1BQUEsSUFBQUgsQ0FBQSxDQUFBRyxNQUFBLENBQUFDLFFBQUEsS0FBQUosQ0FBQSxxQkFBQUUsQ0FBQSxRQUFBRyxLQUFBLENBQUFDLE9BQUEsQ0FBQU4sQ0FBQSxNQUFBRSxDQUFBLEdBQUFLLDJCQUFBLENBQUFQLENBQUEsTUFBQUMsQ0FBQSxJQUFBRCxDQUFB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Q1ksWUFBWSxDQUFBLENBQUU7TUFDakU7SUFBQyxTQUFBd0IsR0FBQTtNQUFBTixTQUFBLENBQUE1RixDQUFBLENBQUFrRyxHQUFBO0lBQUE7TUFBQU4sU0FBQSxDQUFBOUUsQ0FBQTtJQUFBO0lBQ0QsSUFBSSxDQUFDNkUsY0FBYyxFQUFFLE9BQU9MLGFBQWE7SUFDekMsT0FBQXhELE1BQUEsQ0FBQWlELE1BQUEsQ0FBQWpELE1BQUEsQ0FBQWlELE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBWVcsV0FBVyxDQUFBLEVBQUtKLGFBQWEsQ0FBQTtFQUMzQyxDQUFDLEVBQUUsQ0FBQ0QsT0FBTyxFQUFFQyxhQUFhLENBQUMsQ0FBQztFQUU1QixPQUNFLElBQUFyQixlQUFBLEVBQUNrQyxnQkFBTyxFQUFBckUsTUFBQSxDQUFBaUQsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFLUSxTQUFTLEVBQUE7SUFBRUQsYUFBYSxFQUFFRSxtQkFBbUI7SUFBQXJCLFFBQUEsRUFDdkRrQixPQUFPLENBQUNlLEdBQUcsQ0FBQ3ZDLFlBQVk7RUFBQyxDQUFBLENBQUEsQ0FDbEI7QUFFZCxDQUFDO0FBRURzQixjQUFjLENBQUNrQixXQUFXLEdBQUcsWUFBWTtBQUV6QztBQUNPLElBQU1DLFVBQVUsR0FBQUMsT0FBQSxDQUFBRCxVQUFBLGdCQUFHLElBQUFFLFdBQUksRUFBQ3JCLGNBQWMsQ0FFTztBQUFDLElBQUFzQixRQUFBLEdBQUFGLE9BQUEsY0FFdENELFVBQVUiLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL1NjaGVtYUZvcm0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgRnJhZ21lbnQsIG1lbW8sIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBQcm9Gb3JtIH0gZnJvbSAnLi9Qcm9Gb3JtJztcbmltcG9ydCB7IFByb0Zvcm1UZXh0LCBQcm9Gb3JtUGFzc3dvcmQsIFByb0Zvcm1UZXh0QXJlYSwgUHJvRm9ybVNlbGVjdCwgUHJvRm9ybUNoZWNrYm94LCBQcm9Gb3JtQ2hlY2tib3hHcm91cCwgUHJvRm9ybVJhZGlvR3JvdXAsIFByb0Zvcm1Td2l0Y2gsIFByb0Zvcm1TbGlkZXIsIFByb0Zvcm1EYXRlUGlja2VyLCBQcm9Gb3JtVXBsb2FkLCB9IGZyb20gJy4vZmllbGRzJztcbmltcG9ydCB7IHNldE5lc3RlZFZhbHVlIH0gZnJvbSAnLi9jb3JlL3BhdGhVdGlscyc7XG4vLyB2YWx1ZVR5cGUg4oaSIFByb0Zvcm0gZmllbGQgY29tcG9uZW50LiBgZGlnaXRgIHJldXNlcyB0aGUgdGV4dCBmaWVsZCB3aXRoIGFcbi8vIG51bWVyaWMgaW5wdXQgdHlwZSAodGhlIGxpYnJhcnkgaGFzIG5vIHN0YW5kYWxvbmUgSW5wdXROdW1iZXIpLlxuY29uc3QgVkFMVUVfVFlQRV9GSUVMRFMgPSB7XG4gICAgdGV4dDogUHJvRm9ybVRleHQsXG4gICAgcGFzc3dvcmQ6IFByb0Zvcm1QYXNzd29yZCxcbiAgICB0ZXh0YXJlYTogUHJvRm9ybVRleHRBcmVhLFxuICAgIGRpZ2l0OiBQcm9Gb3JtVGV4dCxcbiAgICBzZWxlY3Q6IFByb0Zvcm1TZWxlY3QsXG4gICAgY2hlY2tib3g6IFByb0Zvcm1DaGVja2JveCxcbiAgICBjaGVja2JveEdyb3VwOiBQcm9Gb3JtQ2hlY2tib3hHcm91cCxcbiAgICByYWRpb0dyb3VwOiBQcm9Gb3JtUmFkaW9Hcm91cCxcbiAgICBzd2l0Y2g6IFByb0Zvcm1Td2l0Y2gsXG4gICAgc2xpZGVyOiBQcm9Gb3JtU2xpZGVyLFxuICAgIGRhdGU6IFByb0Zvcm1EYXRlUGlja2VyLFxuICAgIGRhdGVUaW1lOiBQcm9Gb3JtRGF0ZVBpY2tlcixcbiAgICB1cGxvYWQ6IFByb0Zvcm1VcGxvYWQsXG59O1xuZnVuY3Rpb24gcmVuZGVyQ29sdW1uKGNvbHVtbikge1xuICAgIHZhciBfYTtcbiAgICBpZiAoY29sdW1uLnJlbmRlckZvcm1JdGVtKSB7XG4gICAgICAgIHJldHVybiBfanN4KEZyYWdtZW50LCB7IGNoaWxkcmVuOiBjb2x1bW4ucmVuZGVyRm9ybUl0ZW0oY29sdW1uKSB9LCBjb2x1bW4uZGF0YUluZGV4KTtcbiAgICB9XG4gICAgY29uc3QgeyB0aXRsZSwgZGF0YUluZGV4LCB2YWx1ZVR5cGUgPSAndGV4dCcsIGZpZWxkUHJvcHMsIGluaXRpYWxWYWx1ZTogX2luaXRpYWxWYWx1ZSwgcmVuZGVyRm9ybUl0ZW06IF9yZW5kZXJGb3JtSXRlbSB9ID0gY29sdW1uLCByZXN0ID0gX19yZXN0KGNvbHVtbiwgW1widGl0bGVcIiwgXCJkYXRhSW5kZXhcIiwgXCJ2YWx1ZVR5cGVcIiwgXCJmaWVsZFByb3BzXCIsIFwiaW5pdGlhbFZhbHVlXCIsIFwicmVuZGVyRm9ybUl0ZW1cIl0pO1xuICAgIGNvbnN0IEZpZWxkID0gKF9hID0gVkFMVUVfVFlQRV9GSUVMRFNbdmFsdWVUeXBlXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogVkFMVUVfVFlQRV9GSUVMRFMudGV4dDtcbiAgICBsZXQgbWVyZ2VkRmllbGRQcm9wcyA9IGZpZWxkUHJvcHM7XG4gICAgaWYgKHZhbHVlVHlwZSA9PT0gJ2RpZ2l0Jykge1xuICAgICAgICBtZXJnZWRGaWVsZFByb3BzID0gT2JqZWN0LmFzc2lnbih7IHR5cGU6ICdudW1iZXInIH0sIGZpZWxkUHJvcHMpO1xuICAgIH1cbiAgICBlbHNlIGlmICh2YWx1ZVR5cGUgPT09ICdkYXRlVGltZScpIHtcbiAgICAgICAgbWVyZ2VkRmllbGRQcm9wcyA9IE9iamVjdC5hc3NpZ24oeyBzaG93VGltZTogdHJ1ZSB9LCBmaWVsZFByb3BzKTtcbiAgICB9XG4gICAgcmV0dXJuIChfanN4KEZpZWxkLCBPYmplY3QuYXNzaWduKHsgbmFtZTogZGF0YUluZGV4LCBsYWJlbDogdGl0bGUsIGZpZWxkUHJvcHM6IG1lcmdlZEZpZWxkUHJvcHMgfSwgKHZhbHVlVHlwZSA9PT0gJ2RhdGVUaW1lJyA/IHsgdmFsdWVUeXBlOiAnZGF0ZVRpbWUnIH0gOiB7fSksIHJlc3QpLCBkYXRhSW5kZXgpKTtcbn1cbmNvbnN0IFNjaGVtYUZvcm1CYXNlID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBjb2x1bW5zLCBpbml0aWFsVmFsdWVzIH0gPSBwcm9wcywgZm9ybVByb3BzID0gX19yZXN0KHByb3BzLCBbXCJjb2x1bW5zXCIsIFwiaW5pdGlhbFZhbHVlc1wiXSk7XG4gICAgLy8gQ29sdW1uLWxldmVsIGluaXRpYWxWYWx1ZSBzZWVkcyB0aGUgZm9ybTsgZm9ybS1sZXZlbCBpbml0aWFsVmFsdWVzIHdpbi5cbiAgICBjb25zdCBtZXJnZWRJbml0aWFsVmFsdWVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGxldCBmcm9tQ29sdW1ucyA9IHt9O1xuICAgICAgICBsZXQgaGFzQ29sdW1uVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xuICAgICAgICAgICAgaWYgKGNvbHVtbi5pbml0aWFsVmFsdWUgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGhhc0NvbHVtblZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGZyb21Db2x1bW5zID0gY29sdW1uLmRhdGFJbmRleC5pbmNsdWRlcygnLicpXG4gICAgICAgICAgICAgICAgPyBzZXROZXN0ZWRWYWx1ZShmcm9tQ29sdW1ucywgY29sdW1uLmRhdGFJbmRleCwgY29sdW1uLmluaXRpYWxWYWx1ZSlcbiAgICAgICAgICAgICAgICA6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZnJvbUNvbHVtbnMpLCB7IFtjb2x1bW4uZGF0YUluZGV4XTogY29sdW1uLmluaXRpYWxWYWx1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWhhc0NvbHVtblZhbHVlKVxuICAgICAgICAgICAgcmV0dXJuIGluaXRpYWxWYWx1ZXM7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGZyb21Db2x1bW5zKSwgaW5pdGlhbFZhbHVlcyk7XG4gICAgfSwgW2NvbHVtbnMsIGluaXRpYWxWYWx1ZXNdKTtcbiAgICByZXR1cm4gKF9qc3goUHJvRm9ybSwgT2JqZWN0LmFzc2lnbih7fSwgZm9ybVByb3BzLCB7IGluaXRpYWxWYWx1ZXM6IG1lcmdlZEluaXRpYWxWYWx1ZXMsIGNoaWxkcmVuOiBjb2x1bW5zLm1hcChyZW5kZXJDb2x1bW4pIH0pKSk7XG59O1xuU2NoZW1hRm9ybUJhc2UuZGlzcGxheU5hbWUgPSAnU2NoZW1hRm9ybSc7XG4vKiogR2VuZXJpYy1hd2FyZSBleHBvcnQg4oCUIGtlZXBzIGA8U2NoZW1hRm9ybTxNeVZhbHVlcz4g4oCmPmAgZnVsbHkgdHlwZWQuICovXG5leHBvcnQgY29uc3QgU2NoZW1hRm9ybSA9IG1lbW8oU2NoZW1hRm9ybUJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgU2NoZW1hRm9ybTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -69,28 +69,49 @@ var SubmitterBase = function SubmitterBase(props) {
|
|
|
69
69
|
}, _callee);
|
|
70
70
|
}));
|
|
71
71
|
});
|
|
72
|
+
// Reset the values FIRST, then fire the callback chain,
|
|
73
|
+
// so onReset observes the already-reset state. resetFields() itself is a
|
|
74
|
+
// pure state API and fires no callbacks.
|
|
72
75
|
var handleReset = (0, _useMemoizedFn["default"])(function () {
|
|
73
|
-
onReset === null || onReset === void 0 ? void 0 : onReset();
|
|
74
76
|
form.resetFields();
|
|
77
|
+
onReset === null || onReset === void 0 ? void 0 : onReset();
|
|
78
|
+
});
|
|
79
|
+
// Button onClick chains the consumer's resetButtonProps.onClick (mirroring
|
|
80
|
+
// handleSubmitClick). Overlay close does NOT depend on this — it rides the
|
|
81
|
+
// form-level onReset channel in DialogForm/DrawerForm.
|
|
82
|
+
var handleResetClick = (0, _useMemoizedFn["default"])(function (e) {
|
|
83
|
+
var _a;
|
|
84
|
+
handleReset();
|
|
85
|
+
(_a = resetButtonProps === null || resetButtonProps === void 0 ? void 0 : resetButtonProps.onClick) === null || _a === void 0 ? void 0 : _a.call(resetButtonProps, e);
|
|
86
|
+
});
|
|
87
|
+
// The default submit button keeps type="submit" so the actual submission
|
|
88
|
+
// flows through the <form> onSubmit handler exactly once — this click
|
|
89
|
+
// handler only fires the user's onSubmit callback (plus any onClick they
|
|
90
|
+
// passed via submitButtonProps).
|
|
91
|
+
var handleSubmitClick = (0, _useMemoizedFn["default"])(function (e) {
|
|
92
|
+
var _a;
|
|
93
|
+
onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit();
|
|
94
|
+
(_a = submitButtonProps === null || submitButtonProps === void 0 ? void 0 : submitButtonProps.onClick) === null || _a === void 0 ? void 0 : _a.call(submitButtonProps, e);
|
|
75
95
|
});
|
|
76
96
|
var resetButton = (0, _react.useMemo)(function () {
|
|
77
97
|
return (0, _jsxRuntime.jsx)(_Button.Button, Object.assign({
|
|
78
98
|
type: "button",
|
|
79
99
|
color: "secondary"
|
|
80
100
|
}, resetButtonProps, {
|
|
81
|
-
onClick:
|
|
101
|
+
onClick: handleResetClick,
|
|
82
102
|
children: resetText
|
|
83
103
|
}), "reset");
|
|
84
|
-
}, [resetText, resetButtonProps,
|
|
104
|
+
}, [resetText, resetButtonProps, handleResetClick]);
|
|
85
105
|
var submitButton = (0, _react.useMemo)(function () {
|
|
86
106
|
return (0, _jsxRuntime.jsx)(_Button.Button, Object.assign({
|
|
87
107
|
type: "submit",
|
|
88
108
|
color: "primary",
|
|
89
109
|
loading: loading
|
|
90
110
|
}, submitButtonProps, {
|
|
111
|
+
onClick: handleSubmitClick,
|
|
91
112
|
children: submitText
|
|
92
113
|
}), "submit");
|
|
93
|
-
}, [submitText, submitButtonProps, loading]);
|
|
114
|
+
}, [submitText, submitButtonProps, loading, handleSubmitClick]);
|
|
94
115
|
var dom = [resetButton, submitButton];
|
|
95
116
|
if (render) {
|
|
96
117
|
return (0, _jsxRuntime.jsx)("div", {
|
|
@@ -110,4 +131,4 @@ var SubmitterBase = function SubmitterBase(props) {
|
|
|
110
131
|
SubmitterBase.displayName = 'Submitter';
|
|
111
132
|
var Submitter = exports.Submitter = /*#__PURE__*/(0, _react.memo)(SubmitterBase);
|
|
112
133
|
var _default = exports["default"] = Submitter;
|
|
113
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9TdWJtaXR0ZXIuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vU3VibWl0dGVyLnRzeCJdLCJuYW1lcyI6WyJfanN4UnVudGltZSIsInJlcXVpcmUiLCJfcmVhY3QiLCJfdXNlTWVtb2l6ZWRGbiIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY2xhc3NuYW1lcyIsIl9jb250ZXh0MiIsIl9CdXR0b24iLCJfY29uc3RhbnRzIiwiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiYWRvcHQiLCJ2YWx1ZSIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwiY2xhc3NlcyIsImNsYXNzbmFtZXMiLCJjb25jYXQiLCJDU1NfUFJFRklYIiwiU3VibWl0dGVyQmFzZSIsInByb3BzIiwiX3Byb3BzJHN1Ym1pdFRleHQiLCJzdWJtaXRUZXh0IiwiREVGQVVMVF9URVhUIiwic3VibWl0IiwiX3Byb3BzJHJlc2V0VGV4dCIsInJlc2V0VGV4dCIsInJlc2V0IiwicmVuZGVyIiwib25TdWJtaXQiLCJvblJlc2V0Iiwic3VibWl0QnV0dG9uUHJvcHMiLCJyZXNldEJ1dHRvblByb3BzIiwiX3Byb3BzJGxvYWRpbmciLCJsb2FkaW5nIiwiZm9ybSIsInVzZUZvcm1JbnN0YW5jZSIsImhhbmRsZVN1Ym1pdCIsInVzZU1lbW9pemVkRm4iLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJzdWJtaXRGb3JtIiwic3RvcCIsImhhbmRsZVJlc2V0IiwicmVzZXRGaWVsZHMiLCJyZXNldEJ1dHRvbiIsInVzZU1lbW8iLCJfanN4IiwiQnV0dG9uIiwiT2JqZWN0IiwiYXNzaWduIiwidHlwZSIsImNvbG9yIiwib25DbGljayIsImNoaWxkcmVuIiwic3VibWl0QnV0dG9uIiwiZG9tIiwiY2xhc3NOYW1lIiwiX2pzeHMiLCJkaXNwbGF5TmFtZSIsIlN1Ym1pdHRlciIsImV4cG9ydHMiLCJtZW1vIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBU0EsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FDVEEsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsY0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssU0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sT0FBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sVUFBQSxHQUFBUCxPQUFBO0FETkEsSUFBSVEsU0FBUyxHQUFJLFVBQVEsU0FBS0EsU0FBUyxJQUFLLFVBQVVDLE9BQU8sRUFBRUMsVUFBVSxFQUFFQyxDQUFDLEVBQUVDLFNBQVMsRUFBRTtFQUNyRixTQUFTQyxLQUFLQSxDQUFDQyxLQUFLLEVBQUU7SUFBRSxPQUFPQSxLQUFLLFlBQVlILENBQUMsR0FBR0csS0FBSyxHQUFHLElBQUlILENBQUMsQ0FBQyxVQUFVSSxPQUFPLEVBQUU7TUFBRUEsT0FBTyxDQUFDRCxLQUFLLENBQUM7SUFBRSxDQUFDLENBQUM7RUFBRTtFQUMzRyxPQUFPLEtBQUtILENBQUMsS0FBS0EsQ0FBQyxHQUFHSyxPQUFPLENBQUMsRUFBRSxVQUFVRCxPQUFPLEVBQUVFLE1BQU0sRUFBRTtJQUN2RCxTQUFTQyxTQUFTQSxDQUFDSixLQUFLLEVBQUU7TUFBRSxJQUFJO1FBQUVLLElBQUksQ0FBQ1AsU0FBUyxDQUFDUSxJQUFJLENBQUNOLEtBQUssQ0FBQyxDQUFDO01BQUUsQ0FBQyxDQUFDLE9BQU9PLENBQUMsRUFBRTtRQUFFSixNQUFNLENBQUNJLENBQUMsQ0FBQztNQUFFO0lBQUU7SUFDMUYsU0FBU0MsUUFBUUEsQ0FBQ1IsS0FBSyxFQUFFO01BQUUsSUFBSTtRQUFFSyxJ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NEMsV0FBVyxHQUFHLFdBQVc7QUFFaEMsSUFBTUMsU0FBUyxHQUFBQyxPQUFBLENBQUFELFNBQUEsZ0JBQUcsSUFBQUUsV0FBSSxFQUFDL0MsYUFBYSxDQUFDO0FBQUMsSUFBQWdELFFBQUEsR0FBQUYsT0FBQSxjQUU5QkQsU0FBUyIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vU3VibWl0dGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VNZW1vaXplZEZuIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlTWVtb2l6ZWRGbic7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IHVzZUZvcm1JbnN0YW5jZSB9IGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi9CdXR0b24nO1xuaW1wb3J0IHsgQ1NTX1BSRUZJWCwgREVGQVVMVF9URVhUIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoYCR7Q1NTX1BSRUZJWH0tc3VibWl0dGVyYCk7XG5jb25zdCBTdWJtaXR0ZXJCYXNlID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBzdWJtaXRUZXh0ID0gREVGQVVMVF9URVhULnN1Ym1pdCwgcmVzZXRUZXh0ID0gREVGQVVMVF9URVhULnJlc2V0LCByZW5kZXIsIG9uU3VibWl0LCBvblJlc2V0LCBzdWJtaXRCdXR0b25Qcm9wcywgcmVzZXRCdXR0b25Qcm9wcywgbG9hZGluZyA9IGZhbHNlLCB9ID0gcHJvcHM7XG4gICAgY29uc3QgZm9ybSA9IHVzZUZvcm1JbnN0YW5jZSgpO1xuICAgIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IHVzZU1lbW9pemVkRm4oKCkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIG9uU3VibWl0ID09PSBudWxsIHx8IG9uU3VibWl0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblN1Ym1pdCgpO1xuICAgICAgICB5aWVsZCBmb3JtLnN1Ym1pdEZvcm0oKTtcbiAgICB9KSk7XG4gICAgY29uc3QgaGFuZGxlUmVzZXQgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgb25SZXNldCA9PT0gbnVsbCB8fCBvblJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblJlc2V0KCk7XG4gICAgICAgIGZvcm0ucmVzZXRGaWVsZHMoKTtcbiAgICB9KTtcbiAgICBjb25zdCByZXNldEJ1dHRvbiA9IHVzZU1lbW8oKCkgPT4gKF9qc3goQnV0dG9uLCBPYmplY3QuYXNzaWduKHsgdHlwZTogXCJidXR0b25cIiwgY29sb3I6IFwic2Vjb25kYXJ5XCIgfSwgcmVzZXRCdXR0b25Qcm9wcywgeyBvbkNsaWNrOiBoYW5kbGVSZXNldCwgY2hpbGRyZW46IHJlc2V0VGV4dCB9KSwgXCJyZXNldFwiKSksIFtyZXNldFRleHQsIHJlc2V0QnV0dG9uUHJvcHMsIGhhbmRsZVJlc2V0XSk7XG4gICAgY29uc3Qgc3VibWl0QnV0dG9uID0gdXNlTWVtbygoKSA9PiAoX2pzeChCdXR0b24sIE9iamVjdC5hc3NpZ24oeyB0eXBlOiBcInN1Ym1pdFwiLCBjb2xvcjogXCJwcmltYXJ5XCIsIGxvYWRpbmc6IGxvYWRpbmcgfSwgc3VibWl0QnV0dG9uUHJvcHMsIHsgY2hpbGRyZW46IHN1Ym1pdFRleHQgfSksIFwic3VibWl0XCIpKSwgW3N1Ym1pdFRleHQsIHN1Ym1pdEJ1dHRvblByb3BzLCBsb2FkaW5nXSk7XG4gICAgY29uc3QgZG9tID0gW3Jlc2V0QnV0dG9uLCBzdWJtaXRCdXR0b25dO1xuICAgIGlmIChyZW5kZXIpIHtcbiAgICAgICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCksIGNoaWxkcmVuOiByZW5kZXIoeyBmb3JtLCBzdWJtaXQ6IGhhbmRsZVN1Ym1pdCwgcmVzZXQ6IGhhbmRsZVJlc2V0IH0sIGRvbSkgfSkpO1xuICAgIH1cbiAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCksIGNoaWxkcmVuOiBbcmVzZXRCdXR0b24sIHN1Ym1pdEJ1dHRvbl0gfSkpO1xufTtcblN1Ym1pdHRlckJhc2UuZGlzcGxheU5hbWUgPSAnU3VibWl0dGVyJztcbmV4cG9ydCBjb25zdCBTdWJtaXR0ZXIgPSBtZW1vKFN1Ym1pdHRlckJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgU3VibWl0dGVyOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
134
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9TdWJtaXR0ZXIuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vU3VibWl0dGVyLnRzeCJdLCJuYW1lcyI6WyJfanN4UnVudGltZSIsInJlcXVpcmUiLCJfcmVhY3QiLCJfdXNlTWVtb2l6ZWRGbiIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY2xhc3NuYW1lcyIsIl9jb250ZXh0MiIsIl9CdXR0b24iLCJfY29uc3RhbnRzIiwiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiYWRvcHQiLCJ2YWx1ZSIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwiY2xhc3NlcyIsImNsYXNzbmFtZXMiLCJjb25jYXQiLCJDU1NfUFJFRklYIiwiU3VibWl0dGVyQmFzZSIsInByb3BzIiwiX3Byb3BzJHN1Ym1pdFRleHQiLCJzdWJtaXRUZXh0IiwiREVGQVVMVF9URVhUIiwic3VibWl0IiwiX3Byb3BzJHJlc2V0VGV4dCIsInJlc2V0VGV4dCIsInJlc2V0IiwicmVuZGVyIiwib25TdWJtaXQiLCJvblJlc2V0Iiwic3VibWl0QnV0dG9uUHJvcHMiLCJyZXNldEJ1dHRvblByb3BzIiwiX3Byb3BzJGxvYWRpbmciLCJsb2FkaW5nIiwiZm9ybSIsInVzZUZvcm1JbnN0YW5jZSIsImhhbmRsZVN1Ym1pdCIsInVzZU1lbW9pemVkRm4iLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJzdWJtaXRGb3JtIiwic3RvcCIsImhhbmRsZVJlc2V0IiwicmVzZXRGaWVsZHMiLCJoYW5kbGVSZXNldENsaWNrIiwiX2EiLCJvbkNsaWNrIiwiY2FsbCIsImhhbmRsZVN1Ym1pdENsaWNrIiwicmVzZXRCdXR0b24iLCJ1c2VNZW1vIiwiX2pzeCIsIkJ1dHRvbiIsIk9iamVjdCIsImFzc2lnbiIsInR5cGUiLCJjb2xvciIsImNoaWxkcmVuIiwic3VibWl0QnV0dG9uIiwiZG9tIiwiY2xhc3NOYW1lIiwiX2pzeHMiLCJkaXNwbGF5TmFtZSIsIlN1Ym1pdHRlciIsImV4cG9ydHMiLCJtZW1vIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBU0EsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FDVEEsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsY0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssU0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sT0FBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sVUFBQSxHQUFBUCxPQUFBO0FETkEsSUFBSVEsU0FBUyxHQUFJLFVBQVEsU0FBS0EsU0FBUyxJQUFLLFVBQVVDLE9BQU8sRUFBRUMsVUFBVSxFQUFFQyxDQUFDLEVBQUVDLFNBQVMsRUFBRTtFQUNyRixTQUFTQyxLQUFLQSxDQUFDQyxLQUFLLEVBQUU7SUFBRSxPQUFPQSxLQUFLLFlBQVlILENBQUMsR0FBR0csS0FBSyxHQUFHLElBQUlILENBQUMsQ0FBQyxVQUFVSSxPQUFPLEVBQUU7TUFBRUEsT0FBTyxDQUFDRCxLQUFLLENBQUM7SUFBRSxDQUFDLENBQUM7RUFBRTtFQUMzRyxPQUFPLEtBQUtILENBQUMsS0FBS0EsQ0FBQyxHQUFHSyxPQUFPLENBQUMsRUFBRSxVQUFVRCxPQUFPLEVBQUVFLE1BQU0sRUFBRTtJQUN2RCxTQUFTQyxTQUFTQSxDQUFDSixLQUFLLEVBQUU7TUFBRSxJQUFJO1FBQUVLLElBQUksQ0FBQ1AsU0FBUyxDQUFDUSxJQUFJLENBQUNOLEtBQUssQ0FBQyxDQUFDO01BQUUsQ0FBQyxDQUFDLE9BQU9PLENBQUMsRUFBRTtRQUFFSixNQUFNLENBQUNJLENBQUMsQ0FBQztNQUFFO0lBQUU7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R0FBQUMsT0FBQSxDQUFBRCxTQUFBLGdCQUFHLElBQUFFLFdBQUksRUFBQ25ELGFBQWEsQ0FBQztBQUFDLElBQUFvRCxRQUFBLEdBQUFGLE9BQUEsY0FFOUJELFNBQVMiLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL1N1Ym1pdHRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlTWVtb2l6ZWRGbiBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZU1lbW9pemVkRm4nO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyB1c2VGb3JtSW5zdGFuY2UgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vQnV0dG9uJztcbmltcG9ydCB7IENTU19QUkVGSVgsIERFRkFVTFRfVEVYVCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKGAke0NTU19QUkVGSVh9LXN1Ym1pdHRlcmApO1xuY29uc3QgU3VibWl0dGVyQmFzZSA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgc3VibWl0VGV4dCA9IERFRkFVTFRfVEVYVC5zdWJtaXQsIHJlc2V0VGV4dCA9IERFRkFVTFRfVEVYVC5yZXNldCwgcmVuZGVyLCBvblN1Ym1pdCwgb25SZXNldCwgc3VibWl0QnV0dG9uUHJvcHMsIHJlc2V0QnV0dG9uUHJvcHMsIGxvYWRpbmcgPSBmYWxzZSwgfSA9IHByb3BzO1xuICAgIGNvbnN0IGZvcm0gPSB1c2VGb3JtSW5zdGFuY2UoKTtcbiAgICBjb25zdCBoYW5kbGVTdWJtaXQgPSB1c2VNZW1vaXplZEZuKCgpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBvblN1Ym1pdCA9PT0gbnVsbCB8fCBvblN1Ym1pdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25TdWJtaXQoKTtcbiAgICAgICAgeWllbGQgZm9ybS5zdWJtaXRGb3JtKCk7XG4gICAgfSkpO1xuICAgIC8vIFJlc2V0IHRoZSB2YWx1ZXMgRklSU1QsIHRoZW4gZmlyZSB0aGUgY2FsbGJhY2sgY2hhaW4sXG4gICAgLy8gc28gb25SZXNldCBvYnNlcnZlcyB0aGUgYWxyZWFkeS1yZXNldCBzdGF0ZS4gcmVzZXRGaWVsZHMoKSBpdHNlbGYgaXMgYVxuICAgIC8vIHB1cmUgc3RhdGUgQVBJIGFuZCBmaXJlcyBubyBjYWxsYmFja3MuXG4gICAgY29uc3QgaGFuZGxlUmVzZXQgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgZm9ybS5yZXNldEZpZWxkcygpO1xuICAgICAgICBvblJlc2V0ID09PSBudWxsIHx8IG9uUmVzZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uUmVzZXQoKTtcbiAgICB9KTtcbiAgICAvLyBCdXR0b24gb25DbGljayBjaGFpbnMgdGhlIGNvbnN1bWVyJ3MgcmVzZXRCdXR0b25Qcm9wcy5vbkNsaWNrIChtaXJyb3JpbmdcbiAgICAvLyBoYW5kbGVTdWJtaXRDbGljaykuIE92ZXJsYXkgY2xvc2UgZG9lcyBOT1QgZGVwZW5kIG9uIHRoaXMg4oCUIGl0IHJpZGVzIHRoZVxuICAgIC8vIGZvcm0tbGV2ZWwgb25SZXNldCBjaGFubmVsIGluIERpYWxvZ0Zvcm0vRHJhd2VyRm9ybS5cbiAgICBjb25zdCBoYW5kbGVSZXNldENsaWNrID0gdXNlTWVtb2l6ZWRGbigoZSkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGhhbmRsZVJlc2V0KCk7XG4gICAgICAgIChfYSA9IHJlc2V0QnV0dG9uUHJvcHMgPT09IG51bGwgfHwgcmVzZXRCdXR0b25Qcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzZXRCdXR0b25Qcm9wcy5vbkNsaWNrKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChyZXNldEJ1dHRvblByb3BzLCBlKTtcbiAgICB9KTtcbiAgICAvLyBUaGUgZGVmYXVsdCBzdWJtaXQgYnV0dG9uIGtlZXBzIHR5cGU9XCJzdWJtaXRcIiBzbyB0aGUgYWN0dWFsIHN1Ym1pc3Npb25cbiAgICAvLyBmbG93cyB0aHJvdWdoIHRoZSA8Zm9ybT4gb25TdWJtaXQgaGFuZGxlciBleGFjdGx5IG9uY2Ug4oCUIHRoaXMgY2xpY2tcbiAgICAvLyBoYW5kbGVyIG9ubHkgZmlyZXMgdGhlIHVzZXIncyBvblN1Ym1pdCBjYWxsYmFjayAocGx1cyBhbnkgb25DbGljayB0aGV5XG4gICAgLy8gcGFzc2VkIHZpYSBzdWJtaXRCdXR0b25Qcm9wcykuXG4gICAgY29uc3QgaGFuZGxlU3VibWl0Q2xpY2sgPSB1c2VNZW1vaXplZEZuKChlKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgb25TdWJtaXQgPT09IG51bGwgfHwgb25TdWJtaXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uU3VibWl0KCk7XG4gICAgICAgIChfYSA9IHN1Ym1pdEJ1dHRvblByb3BzID09PSBudWxsIHx8IHN1Ym1pdEJ1dHRvblByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdWJtaXRCdXR0b25Qcm9wcy5vbkNsaWNrKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChzdWJtaXRCdXR0b25Qcm9wcywgZSk7XG4gICAgfSk7XG4gICAgY29uc3QgcmVzZXRCdXR0b24gPSB1c2VNZW1vKCgpID0+IChfanN4KEJ1dHRvbiwgT2JqZWN0LmFzc2lnbih7IHR5cGU6IFwiYnV0dG9uXCIsIGNvbG9yOiBcInNlY29uZGFyeVwiIH0sIHJlc2V0QnV0dG9uUHJvcHMsIHsgb25DbGljazogaGFuZGxlUmVzZXRDbGljaywgY2hpbGRyZW46IHJlc2V0VGV4dCB9KSwgXCJyZXNldFwiKSksIFtyZXNldFRleHQsIHJlc2V0QnV0dG9uUHJvcHMsIGhhbmRsZVJlc2V0Q2xpY2tdKTtcbiAgICBjb25zdCBzdWJtaXRCdXR0b24gPSB1c2VNZW1vKCgpID0+IChfanN4KEJ1dHRvbiwgT2JqZWN0LmFzc2lnbih7IHR5cGU6IFwic3VibWl0XCIsIGNvbG9yOiBcInByaW1hcnlcIiwgbG9hZGluZzogbG9hZGluZyB9LCBzdWJtaXRCdXR0b25Qcm9wcywgeyBvbkNsaWNrOiBoYW5kbGVTdWJtaXRDbGljaywgY2hpbGRyZW46IHN1Ym1pdFRleHQgfSksIFwic3VibWl0XCIpKSwgW3N1Ym1pdFRleHQsIHN1Ym1pdEJ1dHRvblByb3BzLCBsb2FkaW5nLCBoYW5kbGVTdWJtaXRDbGlja10pO1xuICAgIGNvbnN0IGRvbSA9IFtyZXNldEJ1dHRvbiwgc3VibWl0QnV0dG9uXTtcbiAgICBpZiAocmVuZGVyKSB7XG4gICAgICAgIHJldHVybiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygpLCBjaGlsZHJlbjogcmVuZGVyKHsgZm9ybSwgc3VibWl0OiBoYW5kbGVTdWJtaXQsIHJlc2V0OiBoYW5kbGVSZXNldCB9LCBkb20pIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygpLCBjaGlsZHJlbjogW3Jlc2V0QnV0dG9uLCBzdWJtaXRCdXR0b25dIH0pKTtcbn07XG5TdWJtaXR0ZXJCYXNlLmRpc3BsYXlOYW1lID0gJ1N1Ym1pdHRlcic7XG5leHBvcnQgY29uc3QgU3VibWl0dGVyID0gbWVtbyhTdWJtaXR0ZXJCYXNlKTtcbmV4cG9ydCBkZWZhdWx0IFN1Ym1pdHRlcjsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|