@1money/component-ui 0.0.73 → 0.0.75
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/Dialog/Dialog.js +7 -39
- package/es/components/Dialog/constants.d.ts +0 -3
- package/es/components/Dialog/constants.js +1 -4
- package/es/components/Dialog/style/Dialog.css +0 -21
- package/es/components/ProForm/ProForm.js +201 -48
- package/es/components/ProForm/ProFormDependency.d.ts +11 -2
- package/es/components/ProForm/ProFormDependency.js +29 -136
- package/es/components/ProForm/ProFormItem.js +81 -24
- package/es/components/ProForm/ProFormList.js +114 -62
- package/es/components/ProForm/Submitter.js +15 -4
- package/es/components/ProForm/context.d.ts +11 -3
- package/es/components/ProForm/context.js +32 -12
- package/es/components/ProForm/core/constants.d.ts +10 -2
- package/es/components/ProForm/core/constants.js +17 -3
- 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 +220 -120
- package/es/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
- package/es/components/ProForm/core/hooks/useFormCore.js +114 -90
- package/es/components/ProForm/core/runRules.d.ts +5 -3
- package/es/components/ProForm/core/runRules.js +13 -5
- package/es/components/ProForm/core/useFormItem.d.ts +2 -2
- package/es/components/ProForm/core/useFormItem.js +46 -23
- package/es/components/ProForm/fields/ProFormFieldSet.js +20 -7
- package/es/components/ProForm/fields/createProFormField.js +14 -4
- 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 +2 -2
- package/es/components/ProForm/index.js +1 -1
- package/es/components/ProForm/interface.d.ts +105 -23
- package/es/components/ProForm/layouts/DialogForm.js +17 -7
- package/es/components/ProForm/layouts/DrawerForm.js +16 -7
- package/es/components/ProForm/layouts/QueryFilter.js +46 -135
- 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 +0 -7
- package/es/components/ProForm/utils.js +32 -8
- package/es/components/ProTable/ProTable.js +3 -3
- package/es/index.css +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/lib/components/Dialog/Dialog.js +6 -38
- package/lib/components/Dialog/constants.d.ts +0 -3
- package/lib/components/Dialog/constants.js +1 -4
- package/lib/components/Dialog/style/Dialog.css +0 -21
- package/lib/components/ProForm/ProForm.js +201 -48
- package/lib/components/ProForm/ProFormDependency.d.ts +11 -2
- package/lib/components/ProForm/ProFormDependency.js +30 -138
- package/lib/components/ProForm/ProFormItem.js +78 -21
- package/lib/components/ProForm/ProFormList.js +112 -60
- package/lib/components/ProForm/Submitter.js +15 -4
- package/lib/components/ProForm/context.d.ts +11 -3
- package/lib/components/ProForm/context.js +33 -13
- package/lib/components/ProForm/core/constants.d.ts +10 -2
- package/lib/components/ProForm/core/constants.js +18 -4
- 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 +220 -120
- package/lib/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
- package/lib/components/ProForm/core/hooks/useFormCore.js +113 -89
- package/lib/components/ProForm/core/runRules.d.ts +5 -3
- package/lib/components/ProForm/core/runRules.js +13 -5
- package/lib/components/ProForm/core/useFormItem.d.ts +2 -2
- package/lib/components/ProForm/core/useFormItem.js +44 -21
- package/lib/components/ProForm/fields/ProFormFieldSet.js +19 -6
- package/lib/components/ProForm/fields/createProFormField.js +14 -4
- 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 +2 -2
- package/lib/components/ProForm/index.js +1 -1
- package/lib/components/ProForm/interface.d.ts +105 -23
- package/lib/components/ProForm/layouts/DialogForm.js +17 -7
- package/lib/components/ProForm/layouts/DrawerForm.js +16 -7
- package/lib/components/ProForm/layouts/QueryFilter.js +45 -134
- 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 +0 -7
- package/lib/components/ProForm/utils.js +32 -8
- package/lib/components/ProTable/ProTable.js +3 -3
- package/lib/index.css +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/package.json +1 -1
- package/scripts/mcp-server/examples.generated.json +36 -0
- package/scripts/mcp-server/index.generated.json +538 -16
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
2
|
import type { ProFormDependencyProps } from './interface';
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Generic-aware component type — `memo()` erases generics, so the export is
|
|
5
|
+
* re-asserted to keep `<ProForm.Dependency<MyValues> name={['a']}>` fully
|
|
6
|
+
* typed (autocompleted `name`, typed `form` in children).
|
|
7
|
+
*/
|
|
8
|
+
export interface ProFormDependencyComponent {
|
|
9
|
+
<Values = Record<string, unknown>>(props: ProFormDependencyProps<Values>): ReactElement | null;
|
|
10
|
+
displayName?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare const ProFormDependency: ProFormDependencyComponent;
|
|
4
13
|
export default ProFormDependency;
|
|
@@ -1,53 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
3
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports["default"] = exports.ProFormDependency = void 0;
|
|
9
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
8
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
|
-
var
|
|
10
|
+
var _context = require("./context");
|
|
11
|
+
var _formStore = require("./core/formStore");
|
|
13
12
|
var _utils = require("./utils");
|
|
14
13
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
15
14
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
16
|
-
var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
|
|
17
|
-
function adopt(value) {
|
|
18
|
-
return value instanceof P ? value : new P(function (resolve) {
|
|
19
|
-
resolve(value);
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
23
|
-
function fulfilled(value) {
|
|
24
|
-
try {
|
|
25
|
-
step(generator.next(value));
|
|
26
|
-
} catch (e) {
|
|
27
|
-
reject(e);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
function rejected(value) {
|
|
31
|
-
try {
|
|
32
|
-
step(generator["throw"](value));
|
|
33
|
-
} catch (e) {
|
|
34
|
-
reject(e);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
function step(result) {
|
|
38
|
-
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
39
|
-
}
|
|
40
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
41
|
-
});
|
|
42
|
-
};
|
|
43
15
|
var ProFormDependencyBase = function ProFormDependencyBase(_ref) {
|
|
44
16
|
var name = _ref.name,
|
|
45
17
|
ignoreFormListField = _ref.ignoreFormListField,
|
|
46
18
|
children = _ref.children;
|
|
47
|
-
var
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
var formListCtx = (0,
|
|
19
|
+
var _useProFormStable = (0, _context.useProFormStable)(),
|
|
20
|
+
formInstance = _useProFormStable.formInstance;
|
|
21
|
+
var store = (0, _context.useProFormStore)();
|
|
22
|
+
var formListCtx = (0, _context.useFormListContext)();
|
|
51
23
|
// Resolve the actual paths to watch, considering FormList scope
|
|
52
24
|
var resolvedPaths = (0, _react.useMemo)(function () {
|
|
53
25
|
var shouldPrefix = !ignoreFormListField && formListCtx.listName !== undefined;
|
|
@@ -55,119 +27,39 @@ var ProFormDependencyBase = function ProFormDependencyBase(_ref) {
|
|
|
55
27
|
return shouldPrefix ? "".concat(formListCtx.listName, ".").concat(fieldName) : fieldName;
|
|
56
28
|
});
|
|
57
29
|
}, [name, ignoreFormListField, formListCtx.listName]);
|
|
30
|
+
// Subscribe ONLY to the watched paths: a commit that leaves every watched
|
|
31
|
+
// value Object.is-equal short-circuits, so children are NOT re-invoked when
|
|
32
|
+
// unrelated fields change. Reactivity tracks the RAW values; the payload
|
|
33
|
+
// below is derived from the FORMATTED values.
|
|
34
|
+
var watchedArray = (0, _formStore.useStoreSelector)(store, function (state) {
|
|
35
|
+
return resolvedPaths.map(function (path) {
|
|
36
|
+
return path.includes('.') ? (0, _utils.getNestedValue)(state.values, path) : state.values[path];
|
|
37
|
+
});
|
|
38
|
+
}, _formStore.shallowEqualArrays);
|
|
58
39
|
var watchedValues = (0, _react.useMemo)(function () {
|
|
40
|
+
// Children receive FORMATTED values (dateFormatter + transform applied),
|
|
41
|
+
// matching what onFinish would submit for those fields. A transform that
|
|
42
|
+
// RENAMES its key deletes the original path from the formatted object —
|
|
43
|
+
// fall back to the raw value so the watcher still sees the field.
|
|
44
|
+
var formatted = formInstance.getFieldFormatValueObject();
|
|
59
45
|
var result = {};
|
|
60
46
|
for (var i = 0; i < name.length; i++) {
|
|
61
|
-
var originalName = name[i];
|
|
62
|
-
var resolvedPath = resolvedPaths[i];
|
|
63
47
|
// Use the original name as key so children get clean keys
|
|
64
|
-
|
|
48
|
+
var path = resolvedPaths[i];
|
|
49
|
+
var value = watchedArray[i];
|
|
50
|
+
var formattedValue = path.includes('.') ? (0, _utils.getNestedValue)(formatted, path) : path in formatted ? formatted[path] : undefined;
|
|
51
|
+
if (formattedValue !== undefined) {
|
|
52
|
+
value = formattedValue;
|
|
53
|
+
}
|
|
54
|
+
result[name[i]] = value;
|
|
65
55
|
}
|
|
66
56
|
return result;
|
|
67
|
-
}, [name, resolvedPaths,
|
|
68
|
-
// Fallback form instance for standalone usage (outside ProForm)
|
|
69
|
-
var fallbackInstance = (0, _react.useMemo)(function () {
|
|
70
|
-
return {
|
|
71
|
-
submit: function submit() {
|
|
72
|
-
return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
73
|
-
return _regenerator["default"].wrap(function (_context) {
|
|
74
|
-
while (1) switch (_context.prev = _context.next) {
|
|
75
|
-
case 0:
|
|
76
|
-
return _context.abrupt("return", undefined);
|
|
77
|
-
case 1:
|
|
78
|
-
case "end":
|
|
79
|
-
return _context.stop();
|
|
80
|
-
}
|
|
81
|
-
}, _callee);
|
|
82
|
-
}));
|
|
83
|
-
},
|
|
84
|
-
resetFields: function resetFields() {},
|
|
85
|
-
getFieldValue: function getFieldValue(n) {
|
|
86
|
-
return n.includes('.') ? (0, _utils.getNestedValue)(values, n) : values[n];
|
|
87
|
-
},
|
|
88
|
-
getFieldsValue: function getFieldsValue() {
|
|
89
|
-
return values;
|
|
90
|
-
},
|
|
91
|
-
setFieldsValue: function setFieldsValue() {},
|
|
92
|
-
setFieldValue: function setFieldValue() {},
|
|
93
|
-
validateFields: function validateFields() {
|
|
94
|
-
return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
95
|
-
return _regenerator["default"].wrap(function (_context2) {
|
|
96
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
97
|
-
case 0:
|
|
98
|
-
return _context2.abrupt("return", values);
|
|
99
|
-
case 1:
|
|
100
|
-
case "end":
|
|
101
|
-
return _context2.stop();
|
|
102
|
-
}
|
|
103
|
-
}, _callee2);
|
|
104
|
-
}));
|
|
105
|
-
},
|
|
106
|
-
getFieldError: function getFieldError() {
|
|
107
|
-
return undefined;
|
|
108
|
-
},
|
|
109
|
-
getFieldWarning: function getFieldWarning() {
|
|
110
|
-
return undefined;
|
|
111
|
-
},
|
|
112
|
-
getFieldsError: function getFieldsError() {
|
|
113
|
-
return {};
|
|
114
|
-
},
|
|
115
|
-
isFieldTouched: function isFieldTouched() {
|
|
116
|
-
return false;
|
|
117
|
-
},
|
|
118
|
-
isFieldsTouched: function isFieldsTouched() {
|
|
119
|
-
return false;
|
|
120
|
-
},
|
|
121
|
-
isFieldValidating: function isFieldValidating() {
|
|
122
|
-
return false;
|
|
123
|
-
},
|
|
124
|
-
setFieldError: function setFieldError() {},
|
|
125
|
-
setFieldsError: function setFieldsError() {},
|
|
126
|
-
setFieldTouched: function setFieldTouched() {},
|
|
127
|
-
setFieldsTouched: function setFieldsTouched() {},
|
|
128
|
-
defineField: function defineField() {
|
|
129
|
-
return function () {
|
|
130
|
-
return null;
|
|
131
|
-
};
|
|
132
|
-
},
|
|
133
|
-
registerField: function registerField() {},
|
|
134
|
-
unregisterField: function unregisterField() {},
|
|
135
|
-
getFieldsFormatValue: function getFieldsFormatValue() {
|
|
136
|
-
return values;
|
|
137
|
-
},
|
|
138
|
-
validateFieldsReturnFormatValue: function validateFieldsReturnFormatValue() {
|
|
139
|
-
return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
140
|
-
return _regenerator["default"].wrap(function (_context3) {
|
|
141
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
142
|
-
case 0:
|
|
143
|
-
return _context3.abrupt("return", {
|
|
144
|
-
success: false
|
|
145
|
-
});
|
|
146
|
-
case 1:
|
|
147
|
-
case "end":
|
|
148
|
-
return _context3.stop();
|
|
149
|
-
}
|
|
150
|
-
}, _callee3);
|
|
151
|
-
}));
|
|
152
|
-
},
|
|
153
|
-
submitForm: function submitForm() {
|
|
154
|
-
return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
155
|
-
return _regenerator["default"].wrap(function (_context4) {
|
|
156
|
-
while (1) switch (_context4.prev = _context4.next) {
|
|
157
|
-
case 0:
|
|
158
|
-
case "end":
|
|
159
|
-
return _context4.stop();
|
|
160
|
-
}
|
|
161
|
-
}, _callee4);
|
|
162
|
-
}));
|
|
163
|
-
}
|
|
164
|
-
};
|
|
165
|
-
}, [values]);
|
|
57
|
+
}, [name, resolvedPaths, watchedArray, formInstance]);
|
|
166
58
|
return (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
167
|
-
children: children(watchedValues, formInstance
|
|
59
|
+
children: children(watchedValues, formInstance)
|
|
168
60
|
});
|
|
169
61
|
};
|
|
170
62
|
ProFormDependencyBase.displayName = 'ProFormDependency';
|
|
171
63
|
var ProFormDependency = exports.ProFormDependency = /*#__PURE__*/(0, _react.memo)(ProFormDependencyBase);
|
|
172
64
|
var _default = exports["default"] = ProFormDependency;
|
|
173
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfY29udGV4dDUiLCJfdXRpbHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsInJlamVjdGVkIiwicmVzdWx0IiwiZG9uZSIsInRoZW4iLCJhcHBseSIsIlByb0Zvcm1EZXBlbmRlbmN5QmFzZSIsIl9yZWYiLCJuYW1lIiwiaWdub3JlRm9ybUxpc3RGaWVsZCIsImNoaWxkcmVuIiwiX3VzZVByb0Zvcm1Db250ZXh0IiwidXNlUHJvRm9ybUNvbnRleHQiLCJ2YWx1ZXMiLCJmb3JtSW5zdGFuY2UiLCJmb3JtTGlzdEN0eCIsInVzZUZvcm1MaXN0Q29udGV4dCIsInJlc29sdmVkUGF0aHMiLCJ1c2VNZW1vIiwic2hvdWxkUHJlZml4IiwibGlzdE5hbWUiLCJ1bmRlZmluZWQiLCJtYXAiLCJmaWVsZE5hbWUiLCJjb25jYXQiLCJ3YXRjaGVkVmFsdWVzIiwibGVuZ3RoIiwib3JpZ2luYWxOYW1lIiwicmVzb2x2ZWRQYXRoIiwiaW5jbHVkZXMiLCJnZXROZXN0ZWRWYWx1ZSIsImZhbGxiYWNrSW5zdGFuY2UiLCJzdWJtaXQiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJhYnJ1cHQiLCJzdG9wIiwicmVzZXRGaWVsZHMiLCJnZXRGaWVsZFZhbHVlIiwiZ2V0RmllbGRzVmFsdWUiLCJzZXRGaWVsZHNWYWx1ZSIsInNldEZpZWxkVmFsdWUiLCJ2YWxpZGF0ZUZpZWxkcyIsIl9jYWxsZWUyIiwiX2NvbnRleHQyIiwiZ2V0RmllbGRFcnJvciIsImdldEZpZWxkV2FybmluZyIsImdldEZpZWxkc0Vycm9yIiwiaXNGaWVsZFRvdWNoZWQiLCJpc0ZpZWxkc1RvdWNoZWQiLCJpc0ZpZWxkVmFsaWRhdGluZyIsInNldEZpZWxkRXJyb3IiLCJzZXRGaWVsZHNFcnJvciIsInNldEZpZWxkVG91Y2hlZCIsInNldEZpZWxkc1RvdWNoZWQiLCJkZWZpbmVGaWVsZCIsInJlZ2lzdGVyRmllbGQiLCJ1bnJlZ2lzdGVyRmllbGQiLCJnZXRGaWVsZHNGb3JtYXRWYWx1ZSIsInZhbGlkYXRlRmllbGRzUmV0dXJuRm9ybWF0VmFsdWUiLCJfY2FsbGVlMyIsIl9jb250ZXh0MyIsInN1Y2Nlc3MiLCJzdWJtaXRGb3JtIiwiX2NhbGxlZTQiLCJfY29udGV4dDQiLCJfanN4IiwiX0ZyYWdtZW50IiwiZGlzcGxheU5hbWUiLCJQcm9Gb3JtRGVwZW5kZW5jeSIsImV4cG9ydHMiLCJtZW1vIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVNBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ1RBLElBQUFDLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFHLFNBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQUF5QyxTQUFBSyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3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a0JBQUFBLFNBQUEsQ0FBQS9CLElBQUEsR0FBQStCLFNBQUEsQ0FBQXJFLElBQUE7Y0FBQTtjQUFBO2dCQUFBLE9BQUFxRSxTQUFBLENBQUE3QixJQUFBO1lBQUE7VUFBQSxHQUFBNEIsUUFBQTtRQUFBLENBQUcsRUFBQTtNQUFBO0lETDVCLENDTUM7RUFBQSxDQUFDLEVBQ0YsQ0FBQ3ZELE1BQU0sQ0FBQyxDQUNUO0VBRUQsT0FBTyxJQUFBeUQsZUFBQSxFQUFBQyxvQkFBQSxFQUFBO0lBQUE3RCxRQUFBLEVBQUdBLFFBQVEsQ0FBQ2UsYUFBYSxFQUFFWCxZQUFZLEtBQUEsSUFBQSxJQUFaQSxZQUFZLEtBQUEsS0FBQSxDQUFBLEdBQVpBLFlBQVksR0FBSWlCLGdCQUFnQjtFQUFDLENBQUEsQ0FBSTtBQUN6RSxDQUFDO0FBRUR6QixxQkFBcUIsQ0FBQ2tFLFdBQVcsR0FBRyxtQkFBbUI7QUFFaEQsSUFBTUMsaUJBQWlCLEdBQUFDLE9BQUEsQ0FBQUQsaUJBQUEsZ0JBQUcsSUFBQUUsV0FBSSxFQUFDckUscUJBQXFCLENBQUM7QUFBQyxJQUFBc0UsUUFBQSxHQUFBRixPQUFBLGNBRTlDRCxpQkFBaUIiLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL1Byb0Zvcm1EZXBlbmRlbmN5LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgeyBGcmFnbWVudCBhcyBfRnJhZ21lbnQsIGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgUmVhY3QsIHsgbWVtbywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVByb0Zvcm1Db250ZXh0LCB1c2VGb3JtTGlzdENvbnRleHQgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHsgZ2V0TmVzdGVkVmFsdWUgfSBmcm9tICcuL3V0aWxzJztcbmNvbnN0IFByb0Zvcm1EZXBlbmRlbmN5QmFzZSA9ICh7IG5hbWUsIGlnbm9yZUZvcm1MaXN0RmllbGQsIGNoaWxkcmVuLCB9KSA9PiB7XG4gICAgY29uc3QgeyB2YWx1ZXMsIGZvcm1JbnN0YW5jZSB9ID0gdXNlUHJvRm9ybUNvbnRleHQoKTtcbiAgICBjb25zdCBmb3JtTGlzdEN0eCA9IHVzZUZvcm1MaXN0Q29udGV4dCgpO1xuICAgIC8vIFJlc29sdmUgdGhlIGFjdHVhbCBwYXRocyB0byB3YXRjaCwgY29uc2lkZXJpbmcgRm9ybUxpc3Qgc2NvcGVcbiAgICBjb25zdCByZXNvbHZlZFBhdGhzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNob3VsZFByZWZpeCA9ICFpZ25vcmVGb3JtTGlzdEZpZWxkICYmIGZvcm1MaXN0Q3R4Lmxpc3ROYW1lICE9PSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiBuYW1lLm1hcCgoZmllbGROYW1lKSA9PiBzaG91bGRQcmVmaXggPyBgJHtmb3JtTGlzdEN0eC5saXN0TmFtZX0uJHtmaWVsZE5hbWV9YCA6IGZpZWxkTmFtZSk7XG4gICAgfSwgW25hbWUsIGlnbm9yZUZvcm1MaXN0RmllbGQsIGZvcm1MaXN0Q3R4Lmxpc3ROYW1lXSk7XG4gICAgY29uc3Qgd2F0Y2hlZFZhbHVlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbE5hbWUgPSBuYW1lW2ldO1xuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRQYXRoID0gcmVzb2x2ZWRQYXRoc1tpXTtcbiAgICAgICAgICAgIC8vIFVzZSB0aGUgb3JpZ2luYWwgbmFtZSBhcyBrZXkgc28gY2hpbGRyZW4gZ2V0IGNsZWFuIGtleXNcbiAgICAgICAgICAgIHJlc3VsdFtvcmlnaW5hbE5hbWVdID0gcmVzb2x2ZWRQYXRoLmluY2x1ZGVzKCcuJylcbiAgICAgICAgICAgICAgICA/IGdldE5lc3RlZFZhbHVlKHZhbHVlcywgcmVzb2x2ZWRQYXRoKVxuICAgICAgICAgICAgICAgIDogdmFsdWVzW3Jlc29sdmVkUGF0aF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LCBbbmFtZSwgcmVzb2x2ZWRQYXRocywgdmFsdWVzXSk7XG4gICAgLy8gRmFsbGJhY2sgZm9ybSBpbnN0YW5jZSBmb3Igc3RhbmRhbG9uZSB1c2FnZSAob3V0c2lkZSBQcm9Gb3JtKVxuICAgIGNvbnN0IGZhbGxiYWNrSW5zdGFuY2UgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgICAgIHN1Ym1pdDogKCkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7IHJldHVybiB1bmRlZmluZWQ7IH0pLFxuICAgICAgICByZXNldEZpZWxkczogKCkgPT4geyB9LFxuICAgICAgICBnZXRGaWVsZFZhbHVlOiAobikgPT4gbi5pbmNsdWRlcygnLicpID8gZ2V0TmVzdGVkVmFsdWUodmFsdWVzLCBuKSA6IHZhbHVlc1tuXSxcbiAgICAgICAgZ2V0RmllbGRzVmFsdWU6ICgpID0+IHZhbHVlcyxcbiAgICAgICAgc2V0RmllbGRzVmFsdWU6ICgpID0+IHsgfSxcbiAgICAgICAgc2V0RmllbGRWYWx1ZTogKCkgPT4geyB9LFxuICAgICAgICB2YWxpZGF0ZUZpZWxkczogKCkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7IHJldHVybiB2YWx1ZXM7IH0pLFxuICAgICAgICBnZXRGaWVsZEVycm9yOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAgIGdldEZpZWxkV2FybmluZzogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgICBnZXRGaWVsZHNFcnJvcjogKCkgPT4gKHt9KSxcbiAgICAgICAgaXNGaWVsZFRvdWNoZWQ6ICgpID0+IGZhbHNlLFxuICAgICAgICBpc0ZpZWxkc1RvdWNoZWQ6ICgpID0+IGZhbHNlLFxuICAgICAgICBpc0ZpZWxkVmFsaWRhdGluZzogKCkgPT4gZmFsc2UsXG4gICAgICAgIHNldEZpZWxkRXJyb3I6ICgpID0+IHsgfSxcbiAgICAgICAgc2V0RmllbGRzRXJyb3I6ICgpID0+IHsgfSxcbiAgICAgICAgc2V0RmllbGRUb3VjaGVkOiAoKSA9PiB7IH0sXG4gICAgICAgIHNldEZpZWxkc1RvdWNoZWQ6ICgpID0+IHsgfSxcbiAgICAgICAgZGVmaW5lRmllbGQ6ICgpID0+ICgoKSA9PiBudWxsKSxcbiAgICAgICAgcmVnaXN0ZXJGaWVsZDogKCkgPT4geyB9LFxuICAgICAgICB1bnJlZ2lzdGVyRmllbGQ6ICgpID0+IHsgfSxcbiAgICAgICAgZ2V0RmllbGRzRm9ybWF0VmFsdWU6ICgpID0+IHZhbHVlcyxcbiAgICAgICAgdmFsaWRhdGVGaWVsZHNSZXR1cm5Gb3JtYXRWYWx1ZTogKCkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7IHJldHVybiAoeyBzdWNjZXNzOiBmYWxzZSB9KTsgfSksXG4gICAgICAgIHN1Ym1pdEZvcm06ICgpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgeyB9KSxcbiAgICB9KSwgW3ZhbHVlc10pO1xuICAgIHJldHVybiBfanN4KF9GcmFnbWVudCwgeyBjaGlsZHJlbjogY2hpbGRyZW4od2F0Y2hlZFZhbHVlcywgZm9ybUluc3RhbmNlICE9PSBudWxsICYmIGZvcm1JbnN0YW5jZSAhPT0gdm9pZCAwID8gZm9ybUluc3RhbmNlIDogZmFsbGJhY2tJbnN0YW5jZSkgfSk7XG59O1xuUHJvRm9ybURlcGVuZGVuY3lCYXNlLmRpc3BsYXlOYW1lID0gJ1Byb0Zvcm1EZXBlbmRlbmN5JztcbmV4cG9ydCBjb25zdCBQcm9Gb3JtRGVwZW5kZW5jeSA9IG1lbW8oUHJvRm9ybURlcGVuZGVuY3lCYXNlKTtcbmV4cG9ydCBkZWZhdWx0IFByb0Zvcm1EZXBlbmRlbmN5OyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
65
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfY29udGV4dCIsIl9mb3JtU3RvcmUiLCJfdXRpbHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJQcm9Gb3JtRGVwZW5kZW5jeUJhc2UiLCJfcmVmIiwibmFtZSIsImlnbm9yZUZvcm1MaXN0RmllbGQiLCJjaGlsZHJlbiIsIl91c2VQcm9Gb3JtU3RhYmxlIiwidXNlUHJvRm9ybVN0YWJsZSIsImZvcm1JbnN0YW5jZSIsInN0b3JlIiwidXNlUHJvRm9ybVN0b3JlIiwiZm9ybUxpc3RDdHgiLCJ1c2VGb3JtTGlzdENvbnRleHQiLCJyZXNvbHZlZFBhdGhzIiwidXNlTWVtbyIsInNob3VsZFByZWZpeCIsImxpc3ROYW1lIiwidW5kZWZpbmVkIiwibWFwIiwiZmllbGROYW1lIiwiY29uY2F0Iiwid2F0Y2hlZEFycmF5IiwidXNlU3RvcmVTZWxlY3RvciIsInN0YXRlIiwicGF0aCIsImluY2x1ZGVzIiwiZ2V0TmVzdGVkVmFsdWUiLCJ2YWx1ZXMiLCJzaGFsbG93RXF1YWxBcnJheXMiLCJ3YXRjaGVkVmFsdWVzIiwiZm9ybWF0dGVkIiwiZ2V0RmllbGRGb3JtYXRWYWx1ZU9iamVjdCIsInJlc3VsdCIsImxlbmd0aCIsInZhbHVlIiwiZm9ybWF0dGVkVmFsdWUiLCJfanN4IiwiX0ZyYWdtZW50IiwiZGlzcGxheU5hbWUiLCJQcm9Gb3JtRGVwZW5kZW5jeSIsImV4cG9ydHMiLCJtZW1vIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUNBQSxJQUFBQyxNQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBRyxRQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxVQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxNQUFBLEdBQUFMLE9BQUE7QUFBeUMsU0FBQU0seUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFMLHdCQUFBSyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFHLEdBQUEsQ0FBQU4sQ0FBQSxVQUFBRyxDQUFBLENBQUFJLEdBQUEsQ0FBQVAsQ0FBQSxPQUFBUSxDQUFBLEtBQUFDLFNBQUEsVUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3QkFBQSxXQUFBQyxDQUFBLElBQUFkLENBQUEsb0JBQUFjLENBQUEsT0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFoQixDQUFBLEVBQUFjLENBQUEsU0FBQUcsQ0FBQSxHQUFBUCxDQUFBLEdBQUFDLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWIsQ0FBQSxFQUFBYyxDQUFBLFVBQUFHLENBQUEs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R21DLEtBQUs7SUFDekI7SUFDQSxPQUFPRixNQUFNO0VBQ2YsQ0FBQyxFQUFFLENBQUM3QixJQUFJLEVBQUVVLGFBQWEsRUFBRVEsWUFBWSxFQUFFYixZQUFZLENBQUMsQ0FBQztFQUVyRCxPQUFPLElBQUE0QixlQUFBLEVBQUFDLG9CQUFBLEVBQUE7SUFBQWhDLFFBQUEsRUFBR0EsUUFBUSxDQUFDd0IsYUFBYSxFQUFFckIsWUFBWTtFQUFDLENBQUEsQ0FBSTtBQUNyRCxDQUFDO0FBRURQLHFCQUFxQixDQUFDcUMsV0FBVyxHQUFHLG1CQUFtQjtBQWNoRCxJQUFNQyxpQkFBaUIsR0FBQUMsT0FBQSxDQUFBRCxpQkFBQSxnQkFBRyxJQUFBRSxXQUFJLEVBQ25DeEMscUJBQXFCLENBQ21CO0FBQUMsSUFBQXlDLFFBQUEsR0FBQUYsT0FBQSxjQUU1QkQsaUJBQWlCIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZyYWdtZW50IGFzIF9GcmFnbWVudCwganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBSZWFjdCwgeyBtZW1vLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlUHJvRm9ybVN0YWJsZSwgdXNlUHJvRm9ybVN0b3JlLCB1c2VGb3JtTGlzdENvbnRleHQgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHsgdXNlU3RvcmVTZWxlY3Rvciwgc2hhbGxvd0VxdWFsQXJyYXlzIH0gZnJvbSAnLi9jb3JlL2Zvcm1TdG9yZSc7XG5pbXBvcnQgeyBnZXROZXN0ZWRWYWx1ZSB9IGZyb20gJy4vdXRpbHMnO1xuY29uc3QgUHJvRm9ybURlcGVuZGVuY3lCYXNlID0gKHsgbmFtZSwgaWdub3JlRm9ybUxpc3RGaWVsZCwgY2hpbGRyZW4sIH0pID0+IHtcbiAgICBjb25zdCB7IGZvcm1JbnN0YW5jZSB9ID0gdXNlUHJvRm9ybVN0YWJsZSgpO1xuICAgIGNvbnN0IHN0b3JlID0gdXNlUHJvRm9ybVN0b3JlKCk7XG4gICAgY29uc3QgZm9ybUxpc3RDdHggPSB1c2VGb3JtTGlzdENvbnRleHQoKTtcbiAgICAvLyBSZXNvbHZlIHRoZSBhY3R1YWwgcGF0aHMgdG8gd2F0Y2gsIGNvbnNpZGVyaW5nIEZvcm1MaXN0IHNjb3BlXG4gICAgY29uc3QgcmVzb2x2ZWRQYXRocyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBjb25zdCBzaG91bGRQcmVmaXggPSAhaWdub3JlRm9ybUxpc3RGaWVsZCAmJiBmb3JtTGlzdEN0eC5saXN0TmFtZSAhPT0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gbmFtZS5tYXAoKGZpZWxkTmFtZSkgPT4gc2hvdWxkUHJlZml4ID8gYCR7Zm9ybUxpc3RDdHgubGlzdE5hbWV9LiR7ZmllbGROYW1lfWAgOiBmaWVsZE5hbWUpO1xuICAgIH0sIFtuYW1lLCBpZ25vcmVGb3JtTGlzdEZpZWxkLCBmb3JtTGlzdEN0eC5saXN0TmFtZV0pO1xuICAgIC8vIFN1YnNjcmliZSBPTkxZIHRvIHRoZSB3YXRjaGVkIHBhdGhzOiBhIGNvbW1pdCB0aGF0IGxlYXZlcyBldmVyeSB3YXRjaGVkXG4gICAgLy8gdmFsdWUgT2JqZWN0LmlzLWVxdWFsIHNob3J0LWNpcmN1aXRzLCBzbyBjaGlsZHJlbiBhcmUgTk9UIHJlLWludm9rZWQgd2hlblxuICAgIC8vIHVucmVsYXRlZCBmaWVsZHMgY2hhbmdlLiBSZWFjdGl2aXR5IHRyYWNrcyB0aGUgUkFXIHZhbHVlczsgdGhlIHBheWxvYWRcbiAgICAvLyBiZWxvdyBpcyBkZXJpdmVkIGZyb20gdGhlIEZPUk1BVFRFRCB2YWx1ZXMuXG4gICAgY29uc3Qgd2F0Y2hlZEFycmF5ID0gdXNlU3RvcmVTZWxlY3RvcihzdG9yZSwgKHN0YXRlKSA9PiByZXNvbHZlZFBhdGhzLm1hcCgocGF0aCkgPT4gcGF0aC5pbmNsdWRlcygnLicpID8gZ2V0TmVzdGVkVmFsdWUoc3RhdGUudmFsdWVzLCBwYXRoKSA6IHN0YXRlLnZhbHVlc1twYXRoXSksIHNoYWxsb3dFcXVhbEFycmF5cyk7XG4gICAgY29uc3Qgd2F0Y2hlZFZhbHVlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICAvLyBDaGlsZHJlbiByZWNlaXZlIEZPUk1BVFRFRCB2YWx1ZXMgKGRhdGVGb3JtYXR0ZXIgKyB0cmFuc2Zvcm0gYXBwbGllZCksXG4gICAgICAgIC8vIG1hdGNoaW5nIHdoYXQgb25GaW5pc2ggd291bGQgc3VibWl0IGZvciB0aG9zZSBmaWVsZHMuIEEgdHJhbnNmb3JtIHRoYXRcbiAgICAgICAgLy8gUkVOQU1FUyBpdHMga2V5IGRlbGV0ZXMgdGhlIG9yaWdpbmFsIHBhdGggZnJvbSB0aGUgZm9ybWF0dGVkIG9iamVjdCDigJRcbiAgICAgICAgLy8gZmFsbCBiYWNrIHRvIHRoZSByYXcgdmFsdWUgc28gdGhlIHdhdGNoZXIgc3RpbGwgc2VlcyB0aGUgZmllbGQuXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGZvcm1JbnN0YW5jZS5nZXRGaWVsZEZvcm1hdFZhbHVlT2JqZWN0KCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIC8vIFVzZSB0aGUgb3JpZ2luYWwgbmFtZSBhcyBrZXkgc28gY2hpbGRyZW4gZ2V0IGNsZWFuIGtleXNcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSByZXNvbHZlZFBhdGhzW2ldO1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gd2F0Y2hlZEFycmF5W2ldO1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSBwYXRoLmluY2x1ZGVzKCcuJylcbiAgICAgICAgICAgICAgICA/IGdldE5lc3RlZFZhbHVlKGZvcm1hdHRlZCwgcGF0aClcbiAgICAgICAgICAgICAgICA6IChwYXRoIGluIGZvcm1hdHRlZCA/IGZvcm1hdHRlZFtwYXRoXSA6IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICBpZiAoZm9ybWF0dGVkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gZm9ybWF0dGVkVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHRbbmFtZVtpXV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sIFtuYW1lLCByZXNvbHZlZFBhdGhzLCB3YXRjaGVkQXJyYXksIGZvcm1JbnN0YW5jZV0pO1xuICAgIHJldHVybiBfanN4KF9GcmFnbWVudCwgeyBjaGlsZHJlbjogY2hpbGRyZW4od2F0Y2hlZFZhbHVlcywgZm9ybUluc3RhbmNlKSB9KTtcbn07XG5Qcm9Gb3JtRGVwZW5kZW5jeUJhc2UuZGlzcGxheU5hbWUgPSAnUHJvRm9ybURlcGVuZGVuY3knO1xuZXhwb3J0IGNvbnN0IFByb0Zvcm1EZXBlbmRlbmN5ID0gbWVtbyhQcm9Gb3JtRGVwZW5kZW5jeUJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgUHJvRm9ybURlcGVuZGVuY3k7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports["default"] = exports.ProFormItem = void 0;
|
|
9
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
13
|
var _Grid = require("../Grid");
|
|
@@ -15,6 +16,8 @@ var _classnames = _interopRequireWildcard(require("../../utils/classnames"));
|
|
|
15
16
|
var _useFormItem2 = require("./core/useFormItem");
|
|
16
17
|
var _constants = require("./core/constants");
|
|
17
18
|
var _context = require("./context");
|
|
19
|
+
var _formStore = require("./core/formStore");
|
|
20
|
+
var _pathUtils = require("./core/pathUtils");
|
|
18
21
|
var _constants2 = require("./constants");
|
|
19
22
|
var _utils = require("./utils");
|
|
20
23
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
@@ -63,12 +66,18 @@ var ReadonlyChildBase = function ReadonlyChildBase(_ref) {
|
|
|
63
66
|
convertValue = _ref.convertValue,
|
|
64
67
|
readonlyRender = _ref.readonlyRender,
|
|
65
68
|
emptyText = _ref.emptyText;
|
|
66
|
-
var
|
|
67
|
-
|
|
68
|
-
|
|
69
|
+
var store = (0, _context.useProFormStore)();
|
|
70
|
+
// Subscribe per-field; only a custom readonlyRender (which receives ALL
|
|
71
|
+
// values) needs to track the whole values object.
|
|
72
|
+
var _useStoreSelector = (0, _formStore.useStoreSelector)(store, function (state) {
|
|
73
|
+
return [name ? (0, _pathUtils.resolveValue)(state.values, name) : undefined, readonlyRender ? state.values : undefined];
|
|
74
|
+
}, _formStore.shallowEqualArrays),
|
|
75
|
+
_useStoreSelector2 = (0, _slicedToArray2["default"])(_useStoreSelector, 2),
|
|
76
|
+
raw = _useStoreSelector2[0],
|
|
77
|
+
allValues = _useStoreSelector2[1];
|
|
69
78
|
var value = convertValue && name ? convertValue(raw, name) : raw;
|
|
70
79
|
if (readonlyRender) {
|
|
71
|
-
var node = readonlyRender(value, values);
|
|
80
|
+
var node = readonlyRender(value, allValues !== null && allValues !== void 0 ? allValues : store.getState().values);
|
|
72
81
|
return (0, _jsxRuntime.jsx)("span", {
|
|
73
82
|
children: node !== null && node !== void 0 ? node : emptyText
|
|
74
83
|
});
|
|
@@ -93,9 +102,10 @@ var ConvertValueChildBase = function ConvertValueChildBase(_ref2) {
|
|
|
93
102
|
_ref2$valuePropName = _ref2.valuePropName,
|
|
94
103
|
valuePropName = _ref2$valuePropName === void 0 ? 'value' : _ref2$valuePropName,
|
|
95
104
|
children = _ref2.children;
|
|
96
|
-
var
|
|
97
|
-
|
|
98
|
-
|
|
105
|
+
var store = (0, _context.useProFormStore)();
|
|
106
|
+
var raw = (0, _formStore.useStoreSelector)(store, function (state) {
|
|
107
|
+
return (0, _pathUtils.resolveValue)(state.values, name);
|
|
108
|
+
});
|
|
99
109
|
var converted = convertValue ? convertValue(raw, name) : raw;
|
|
100
110
|
return /*#__PURE__*/_react["default"].cloneElement(children, (0, _defineProperty2["default"])({}, valuePropName, converted));
|
|
101
111
|
};
|
|
@@ -105,7 +115,10 @@ var ConvertValueChild = /*#__PURE__*/(0, _react.memo)(ConvertValueChildBase);
|
|
|
105
115
|
// ProFormItem
|
|
106
116
|
// ---------------------------------------------------------------------------
|
|
107
117
|
var ProFormItemBase = function ProFormItemBase(props) {
|
|
108
|
-
var
|
|
118
|
+
var _a;
|
|
119
|
+
// Stable slice only — value/error reactivity lives in useFormItem's
|
|
120
|
+
// per-field subscription, so this shell never re-renders for siblings.
|
|
121
|
+
var ctx = (0, _context.useProFormStable)();
|
|
109
122
|
// Form-level `formItemProps` act as DEFAULTS; props explicitly set on the
|
|
110
123
|
// item win. JSX frequently passes `undefined` for unset props (e.g. the
|
|
111
124
|
// createProFormField pass-through), so only defined values may override.
|
|
@@ -161,22 +174,59 @@ var ProFormItemBase = function ProFormItemBase(props) {
|
|
|
161
174
|
labelAlign = _useFormItem.labelAlign,
|
|
162
175
|
requiredMark = _useFormItem.requiredMark,
|
|
163
176
|
injectField = _useFormItem.injectField;
|
|
164
|
-
// Register /
|
|
165
|
-
|
|
166
|
-
|
|
177
|
+
// Register transform / valueType DURING render (idempotent ref writes, like
|
|
178
|
+
// registerField): consumers rendered later in the same pass — e.g. a
|
|
179
|
+
// Dependency reading formatted values — must already see them. Effects
|
|
180
|
+
// would register too late (after the whole tree rendered).
|
|
181
|
+
//
|
|
182
|
+
// Each instance tracks the {name, value} PAIR it registered. Removal is
|
|
183
|
+
// always performed with the pair's own name AND value: an item without a
|
|
184
|
+
// transform never touches a same-name sibling's registration, an unmount
|
|
185
|
+
// cleanup can't wipe a successor's (value-guarded), and a NAME change
|
|
186
|
+
// removes the old name's entry with the OLD value before the ref is
|
|
187
|
+
// overwritten (a live single-value ref would leak it).
|
|
188
|
+
var ownTransformRef = (0, _react.useRef)(null);
|
|
189
|
+
var ownValueTypeRef = (0, _react.useRef)(null);
|
|
190
|
+
var prevTransform = ownTransformRef.current;
|
|
191
|
+
if (prevTransform && (prevTransform.name !== name || !transform)) {
|
|
192
|
+
ctx.unregisterTransform(prevTransform.name, prevTransform.fn);
|
|
193
|
+
ownTransformRef.current = null;
|
|
194
|
+
}
|
|
195
|
+
if (name && transform) {
|
|
167
196
|
ctx.registerTransform(name, transform);
|
|
168
|
-
|
|
169
|
-
|
|
197
|
+
ownTransformRef.current = {
|
|
198
|
+
name: name,
|
|
199
|
+
fn: transform
|
|
170
200
|
};
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
(
|
|
174
|
-
|
|
201
|
+
}
|
|
202
|
+
var prevValueType = ownValueTypeRef.current;
|
|
203
|
+
if (prevValueType && (prevValueType.name !== name || !valueType)) {
|
|
204
|
+
ctx.unregisterValueType(prevValueType.name, prevValueType.valueType);
|
|
205
|
+
ownValueTypeRef.current = null;
|
|
206
|
+
}
|
|
207
|
+
if (name && valueType) {
|
|
175
208
|
ctx.registerValueType(name, valueType);
|
|
209
|
+
ownValueTypeRef.current = {
|
|
210
|
+
name: name,
|
|
211
|
+
valueType: valueType
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
(0, _react.useEffect)(function () {
|
|
215
|
+
// RE-REGISTER in the body: StrictMode's mount→cleanup→re-run cycle and
|
|
216
|
+
// keyed remounts (old instance's cleanup runs AFTER the new render
|
|
217
|
+
// registered) both end with a cleanup having deleted the entry — the
|
|
218
|
+
// effect body must restore the latest registration.
|
|
219
|
+
var transformReg = ownTransformRef.current;
|
|
220
|
+
if (transformReg) ctx.registerTransform(transformReg.name, transformReg.fn);
|
|
221
|
+
var valueTypeReg = ownValueTypeRef.current;
|
|
222
|
+
if (valueTypeReg) ctx.registerValueType(valueTypeReg.name, valueTypeReg.valueType);
|
|
176
223
|
return function () {
|
|
177
|
-
|
|
224
|
+
var t = ownTransformRef.current;
|
|
225
|
+
if (t) ctx.unregisterTransform(t.name, t.fn);
|
|
226
|
+
var v = ownValueTypeRef.current;
|
|
227
|
+
if (v) ctx.unregisterValueType(v.name, v.valueType);
|
|
178
228
|
};
|
|
179
|
-
}, [name,
|
|
229
|
+
}, [name, ctx.registerTransform, ctx.unregisterTransform, ctx.registerValueType, ctx.unregisterValueType]);
|
|
180
230
|
if (hidden) return null;
|
|
181
231
|
var controlChild;
|
|
182
232
|
if (isReadonly) {
|
|
@@ -204,13 +254,20 @@ var ProFormItemBase = function ProFormItemBase(props) {
|
|
|
204
254
|
}
|
|
205
255
|
}
|
|
206
256
|
var classes = (0, _classnames["default"])(prefixCls);
|
|
257
|
+
// Form-level layout.itemGap overrides the size-class margin (inline style
|
|
258
|
+
// wins); itemGap=0 is meaningful.
|
|
259
|
+
var itemGap = (_a = ctx.layout) === null || _a === void 0 ? void 0 : _a.itemGap;
|
|
260
|
+
var gapStyle = itemGap !== undefined ? {
|
|
261
|
+
marginBottom: typeof itemGap === 'number' ? "".concat(itemGap, "px") : itemGap
|
|
262
|
+
} : undefined;
|
|
207
263
|
var shell = (0, _jsxRuntime.jsxs)("div", {
|
|
208
264
|
className: classes(undefined, (0, _classnames.joinCls)(classes(size), className)),
|
|
265
|
+
style: gapStyle,
|
|
209
266
|
children: [label && (0, _jsxRuntime.jsxs)("div", {
|
|
210
267
|
className: classes('label-wrapper', (0, _classnames.joinCls)(classes('label-wrapper-vertical'), labelAlign && classes("label-wrapper-".concat(labelAlign)))),
|
|
211
268
|
children: [(0, _jsxRuntime.jsx)(_Typography.TypographyLabel, {
|
|
212
269
|
as: "label",
|
|
213
|
-
size: _constants.
|
|
270
|
+
size: _constants.FORM_LABEL_SIZES[size],
|
|
214
271
|
color: _constants.FORM_LABEL_COLOR,
|
|
215
272
|
className: classes('label'),
|
|
216
273
|
children: label
|
|
@@ -264,4 +321,4 @@ var ProFormItemBase = function ProFormItemBase(props) {
|
|
|
264
321
|
ProFormItemBase.displayName = 'ProFormItem';
|
|
265
322
|
var ProFormItem = exports.ProFormItem = /*#__PURE__*/(0, _react.memo)(ProFormItemBase);
|
|
266
323
|
var _default = exports["default"] = ProFormItem;
|
|
267
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtSXRlbS5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtSXRlbS50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfR3JpZCIsIl9UeXBvZ3JhcGh5IiwiX2NsYXNzbmFtZXMiLCJfdXNlRm9ybUl0ZW0yIiwiX2NvbnN0YW50cyIsIl9jb250ZXh0IiwiX2NvbnN0YW50czIiLCJfdXRpbHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJFTVBUWV9URVhUX0RFRkFVTFQiLCJyZW5kZXJCeVZhbHVlVHlwZSIsInZhbHVlVHlwZSIsInZhbHVlIiwicHJvcHMiLCJ1bmRlZmluZWQiLCJyZXBlYXQiLCJTdHJpbmciLCJsZW5ndGgiLCJudW0iLCJOdW1iZXIiLCJpc05hTiIsInRvTG9jYWxlU3RyaW5nIiwidmFsdWVFbnVtIiwib3B0aW9ucyIsInZhbHVlRW51bVRvT3B0aW9ucyIsIm1hdGNoIiwiZmluZCIsIm8iLCJsYWJlbCIsIkRhdGUiLCJmb3JtYXREYXRlQnlQYXR0ZXJuIiwiREFURV9GT1JNQVQiLCJEQVRFX1RJTUVfRk9STUFUIiwiUmVhZG9ubHlDaGlsZEJhc2UiLCJfcmVmIiwibmFtZSIsImNvbnZlcnRWYWx1ZSIsInJlYWRvbmx5UmVuZGVyIiwiZW1wdHlUZXh0IiwiX3VzZVByb0Zvcm1Db250ZXh0IiwidXNlUHJvRm9ybUNvbnRleHQiLCJ2YWx1ZXMiLCJyYXciLCJub2RlIiwiX2pzeCIsImNoaWxkcmVuIiwicmVuZGVyZWQiLCJkaXNwbGF5TmFtZSIsIlJlYWRvbmx5Q2hpbGQiLCJtZW1vIiwiQ29udmVydFZhbHVlQ2hpbGRCYXNlIiwiX3JlZjIiLCJfcmVmMiR2YWx1ZVByb3BOYW1lIiwidmFsdWVQcm9wTmFtZSIsIl91c2VQcm9Gb3JtQ29udGV4dDIiLCJjb252ZXJ0ZWQiLCJSZWFjdCIsImNsb25lRWxlbWVudCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJDb252ZXJ0VmFsdWVDaGlsZCIsIlByb0Zvcm1JdGVtQmFzZSIsImN0eCIsIm1lcmdlZFByb3BzIiwiZm9ybUl0ZW1Qcm9wcyIsIm1lcmdlZCIsImFzc2lnbiIsIl9pIiwiX09iamVjdCRrZXlzIiwia2V5cyIsImtleSIsIl9tZXJnZWRQcm9wcyIsImRlc2NyaXB0aW9uIiwicnVsZXMiLCJyZXF1aXJlZCIsImZlZWRiYWNrIiwidmFsaWRhdGVTdGF0dXMiLCJfbWVyZ2VkUHJvcHMkY2xhc3NOYW0iLCJjbGFzc05hbWUiLCJfbWVyZ2VkUHJvcHMkcHJlZml4Q2wiLCJwcmVmaXhDbHMiLCJoaWRkZW4iLCJ0cmFuc2Zvcm0iLCJjb2xQcm9wcyIsIm1vZGVQcm9wIiwibW9kZSIsIl9tZXJnZWRQcm9wcyRlbXB0eVRleCIsInZhbGlkYXRlRGVib3VuY2UiLCJtZXJnZWRNb2RlIiwiaXNSZWFkb25seSIsIl91c2VGb3JtSXRlbSIsInVzZUZvcm1JdGVtIiwiZmllbGRFcnJvciIsImZpZWxkV2FybmluZyIsImlzUmVxdWlyZWQiLCJzaXplIiwibGFiZWxBbGlnbiIsInJlcXVpcmVkTWFyayIsImluamVjdEZpZWxkIiwidXNlRWZmZWN0IiwicmVnaXN0ZXJUcmFuc2Zvcm0iLCJ1bnJlZ2lzdGVyVHJhbnNmb3JtIiwicmVnaXN0ZXJWYWx1ZVR5cGUiLCJ1bnJlZ2lzdGVyVmFsdWVUeXBlIiwiY29udHJvbENoaWxkIiwiaW5qZWN0ZWQiLCJpc1ZhbGlkRWxlbWVudCIsImNsYXNzZXMiLCJjbGFzc25hbWVzIiwic2hlbGwiLCJfanN4cyIsImpvaW5DbHMiLCJjb25jYXQiLCJUeXBvZ3JhcGh5TGFiZWwiLCJhcyIsIkZPUk1fTEFCRUxfU0laRSIsImNvbG9yIiwiRk9STV9MQUJFTF9DT0xPUiIsIlR5cG9ncmFwaHlCb2R5IiwiRk9STV9ERVNDUklQVElPTl9TSVpFIiwiRk9STV9ERVNDUklQVElPTl9DT0xPUiIsIkZPUk1fRVJST1JfU0laRSIsIkZPUk1fRVJST1JfQ09MT1IiLCJGT1JNX1dBUk5JTkdfU0laRSIsIkZPUk1fV0FSTklOR19DT0xPUiIsIkZPUk1fRkVFREJBQ0tfU0laRSIsIkZPUk1fRkVFREJBQ0tfQ09MT1IiLCJncmlkIiwiX21lcmdlZCRzcGFuIiwic3BhbiIsIkRFRkFVTFRfQ09MX1NQQU4iLCJzbSIsIm1kIiwibGciLCJDb2wiLCJQcm9Gb3JtSXRlbSIsImV4cG9ydHMiLCJfZGVmYXVsdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FDQUEsSUFBQUMsTUFBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsS0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBSCx1QkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU0sYUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sVUFBQSxHQUFBUCxPQUFBO0FBWUEsSUFBQVEsUUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsV0FBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsTUFBQSxHQUFBVixPQUFBO0FBQWlHLFNBQUFXLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBVix3QkFBQVUsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBYyxDQUFBLFNBQUFHLENBQUEsR0FBQVAsQ0FBQSxHQUFBQyxNQUFBLENBQUFFLHdCQUFBLENBQUFiLENBQUEsRUFBQWMsQ0FBQSxVQUFBRyxDQUFBLEtBQUFBLENBQUEsQ0FBQVYsR0FBQSxJQUFBVSxDQUFBLENBQUFDLEdBQUEsSUFBQVAsTUFBQSxDQUFBQyxjQUFBLENBQUFKLENBQUEsRUFBQU0sQ0FBQSxFQUFBRyxDQUFBLElBQUFULENBQUEsQ0FBQU0sQ0FBQSxJQUFBZCxDQUFBLENBQUFjLENBQUEsWUFBQU4sQ0FBQSxjQUFBUixDQUFBLEVBQUFHLENBQUEsSUFBQUEsQ0FBQSxDQUFBZSxHQUFBLENBQUFsQixDQUFBLEVBQUFRLENBQUEsR0FBQUEsQ0FBQTtBQUdqRyxJQUFNVyxrQkFBa0IsR0FBRyxHQUFHO0FBRTlCO0FBQ0E7QUFDQTtBQUNBLFNBQVNDLGlCQUFpQkEsQ0FDeEJDLFNBQXVDLEVBQ3ZDQyxLQUFjLEVBQ2RDLEtBQTBDLEVBQUE7RUFFMUMsSUFBSUQsS0FBSyxLQUFLLElBQUksSUFBSUEsS0FBSyxLQUFLRSxTQUFTLElBQUlGLEtBQUssS0FBSyxFQUFFLEVBQUUsT0FBTyxJQUFJO0VBRXRFLFFBQVFELFNBQVM7SUFDZixLQUFLLFVBQVU7TUFDYixPQUFPLEdBQUcsQ0FBQ0ksTUFBTSxDQUFDQyxNQUFNLENBQUNKLEtBQUssQ0FBQyxDQUFDSyxNQUFNLENBQUM7SUFDekMsS0FBSyxRQUFRO01BQ1gsT0FBT0wsS0FBSyxHQUFHLElBQUksR0FBRyxLQUFLO0lBQzdCLEtBQUssT0FBTztNQUFFO1FBQ1osSUFBTU0sR0FBRyxHQUFHQyxNQUFNLENBQUNQLEtBQUssQ0FBQztRQUN6QixJQUFJTyxNQUFNLENBQUNDLEtBQUssQ0FBQ0YsR0FBRyxDQUFDLEVBQUUsT0FBT0YsTUFBTSxDQUFDSixLQUFLLENBQUM7UUFDM0MsT0FBT00sR0FBRyxDQUFDRyxjQUFjLENBQUEsQ0FBRTtNQUM3QjtJQUNBLEtBQUssUUFBUTtJQUNiLEtBQUssT0FBTztJQUNaLEtBQUssS0FBSztNQUFFO1FBQ1YsSUFBSSxDQUFDUixLQUFLLENBQUNTLFNBQVMsRUFBRSxPQUFPTixNQUFNLENBQUNKLEtBQUssQ0FBQztRQUMxQyxJQUFNVyxPQUFPLEdBQUcsSUFBQUMseUJBQWtCLEVBQUNYLEtBQUssQ0FBQ1MsU0FBUyxDQUFDO1FBQ25ELElBQU1HLEtBQUssR0FBR0YsT0FBTyxDQUFDRyxJQUFJLENBQUMsVUFBQ0MsQ0FBQztVQUFBLE9BQUtYLE1BQU0sQ0FBQ1csQ0FBQyxDQUFDZixLQUFLLENBQUMsS0FBS0ksTUFBTSxDQUFDSixLQUFLLENBQUM7UUFBQSxFQUFDO1FBQ3BFLE9BQU9hLEtBQUssR0FBR0EsS0FBSyxDQUFDRyxLQUFLLEdBQUdaLE1BQU0sQ0FBQ0osS0FBSyxDQUFDO01BQzVDO0lBQ0EsS0FBSyxNQUFNO01BQ1QsT0FBT0EsS0FBSyxZQUFZaUIsSUFBSSxHQUFHLElBQUFDLDBCQUFtQixFQUFDbEIsS0FBSyxFQUFFbUIsa0JBQVcsQ0FBQyxHQUFHZixNQUFNLENBQUNKLEtBQUssQ0FBQztJQUN4RixLQUFLLFVBQVU7TUFDYixPQUFPQSxLQUFLLFlBQVlpQixJQUFJLEdBQUcsSUFBQUMsMEJBQW1CLEVBQUNsQixLQUFLLEVBQUVvQix1QkFBZ0IsQ0FBQyxHQUFHaEIsTUFBTSxDQUFDSixLQUFLLENBQUM7SUFDN0YsS0FBSyxNQUFNO0lBQ1g7TUFDRSxPQUFPSSxNQUFNLENBQUNKLEtBQUssQ0FBQztFQUN4QjtBQUNGO0FBY0EsSUFBTXFCLGlCQUFpQixHQUEyQixTQUE1Q0EsaUJBQWlCQSxDQUFBQyxJQUFBLEVBT2xCO0VBQUEsSUFOSEMsSUFBSSxHQUFBRCxJQUFBLENBQUpDLElBQUk7SUFDSnhCLFNBQVMsR0FBQXVCLElBQUEsQ0FBVHZCLFNBQVM7SUFDVFcsU0FBUyxHQUFBWSxJQUFBLENBQVRaLFNBQVM7SUFDVGMsWUFBWSxHQUFBRixJQUFBLENBQVpFLFlBQVk7SUFDWkMsY0FBYyxHQUFBSCxJQUFBLENBQWRHLGNBQWM7SUFDZEMsU0FBUyxHQUFBSixJQUFBLENBQVRJLFNBQVM7RUFFVCxJQUFBQyxrQkFBQSxHQUFtQixJQUFBQywwQkFBaUIsRUFBQSxDQUFFO0lBQTlCQyxNQUFNLEdBQUFGLGtCQUFBLENBQU5FLE1BQU07RUFDZCxJQUFNQyxHQUFHLEdBQUdQLElBQUksR0FBR00sTUFBTSxDQUFDTixJQUFJLENBQUMsR0FBR3JCLFNBQVM7RUFDM0MsSUFBTUYsS0FBSyxHQUFHd0IsWUFBWSxJQUFJRCxJQUFJLEdBQUdDLFlBQVksQ0FBQ00sR0FBRyxFQUFFUCxJQUFJLENBQUMsR0FBR08sR0FBRztFQUVsRSxJQUFJTCxjQUFjLEVBQUU7SUFDbEIsSUFBTU0sSUFBSSxHQUFHTixjQUFjLENBQUN6QixLQUFLLEVBQUU2QixNQUFNLENBQUM7SUFDMUMsT0FBTyxJQUFBRyxlQUFBLEVBQUEsTUFBQSxFQUFBO01BQUFDLFFBQUEsRUFBT0YsSUFBSSxLQUFBLElBQUEsSUFBSkEsSUFBSSxLQUFBLEtBQUEsQ0FBQSxHQUFKQSxJQUFJLEdBQUlMO0lBQVMsQ0FBQSxDQUFRO0VBQ3pDO0VBRUEsSUFBSTFCLEtBQUssS0FBSyxJQUFJLElBQUlBLEtBQUssS0FBS0UsU0FBUyxJQUFJRixLQUFLLEtBQUssRUFBRSxFQUFFO0lBQ3pELE9BQU8sSUFBQWdDLGVBQUEsRUFBQSxNQUFBLEVBQUE7TUFBQUMsUUFBQSxFQUFPUDtJQUFTLENBQUEsQ0FBUTtFQUNqQztFQUVBLElBQU1RLFFBQVEsR0FBR3BDLGlCQUFpQixDQUFDQyxTQUFTLEVBQUVDLEtBQUssRUFBRTtJQUFFVSxTQUFTLEVBQVRBO0VBQVMsQ0FBRSxDQUFDO0VBQ25FLE9BQU8sSUFBQXNCLGVBQUEsRUFBQSxNQUFBLEVBQUE7SUFBQUMsUUFBQSxFQUFPQyxRQUFRLEtBQUEsSUFBQSxJQUFSQSxRQUFRLEtBQUEsS0FBQSxDQUFBLEdBQVJBLFFBQVEsR0FBSVI7RUFBUyxDQUFBLENBQVE7QUFDN0MsQ0FBQztBQUVETCxpQkFBaUIsQ0FBQ2MsV0FBVyxHQUFHLHFCQUFxQjtBQUNyRCxJQUFNQyxhQUFhLGdCQUFHLElBQUFDLFdBQUksRUFBQ2hCLGlCQUFpQixDQUFDO0FBYTdDLElBQU1pQixxQkFBcUIsR0FBK0IsU0FBcERBLHFCQUFxQkEsQ0FBQUMsS0FBQSxFQUt0QjtFQUFBLElBSkhoQixJQUFJLEdBQUFnQixLQUFBLENBQUpoQixJQUFJO0lBQ0pDLFlBQVksR0FBQWUsS0FBQSxDQUFaZixZQUFZO0lBQUFnQixtQkFBQSxHQUFBRCxLQUFBLENBQ1pFLGFBQWE7SUFBYkEsYUFBYSxHQUFBRCxtQkFBQSxjQUFHLE9BQU8sR0FBQUEsbUJBQUE7SUFDdkJQLFFBQVEsR0FBQU0sS0FBQSxDQUFSTixRQUFRO0VBRVIsSUFBQVMsbUJBQUEsR0FBbUIsSUFBQWQsMEJBQWlCLEVBQUEsQ0FBRTtJQUE5QkMsTUFBTSxHQUFBYSxtQkFBQSxDQUFOYixNQUFNO0VBQ2QsSUFBTUMsR0FBRyxHQUFHRCxNQUFNLENBQUNOLElBQUksQ0FBQztFQUN4QixJQUFNb0IsU0FBUyxHQUFHbkIsWUFBWSxHQUFHQSxZQUFZLENBQUNNLEdBQUcsRUFBRVAsSUFBSSxDQUFDLEdBQUdPLEdBQUc7RUFDOUQsb0JBQU9jLGlCQUFLLENBQUNDLFlBQVksQ0FBQ1osUUFBUSxNQUFBYSxnQkFBQSxpQkFBS0wsYUFBYSxFQUFHRSxTQUFTLENBQTZCLENBQUM7QUFDaEcsQ0FBQztBQUVETCxxQkFBcUIsQ0FBQ0gsV0FBVyxHQUFHLHlCQUF5QjtBQUM3RCxJQUFNWSxpQkFBaUIsZ0JBQUcsSUFBQVYsV0FBSSxFQUFDQyxxQkFBcUIsQ0FBQztBQUVyRDtBQUNBO0FBQ0E7QUFDQSxJQUFNVSxlQUFlLEdBQXlCLFNBQXhDQSxlQUFlQSxDQUEwQi9DLEtBQUssRUFBSTtFQUN0RCxJQUFNZ0QsR0FBRyxHQUFHLElBQUFyQiwwQkFBaUIsRUFBQSxDQUFFO0VBRS9CO0VBQ0E7RUFDQTtFQUNBLElBQUlzQixXQUFXLEdBQUdqRCxLQUFLO0VBQ3ZCLElBQUlnRCxHQUFHLENBQUNFLGFBQWEsRUFBRTtJQUNyQixJQUFNQyxNQUFNLEdBQUEvRCxNQUFBLENBQUFnRSxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQWlDSixHQUFHLENBQUNFLGFBQWEsQ0FBRTtJQUNoRSxTQUFBRyxFQUFBLE1BQUFDLFlBQUEsR0FBa0JsRSxNQUFNLENBQUNtRSxJQUFJLENBQUN2RCxLQUFLLENBQUMsRUFBQXFELEVBQUEsR0FBQUMsWUFBQSxDQUFBbEQsTUFBQSxFQUFBaUQsRUFBQSxJQUFFO01BQWpDLElBQU1HLEdBQUcsR0FBQUYsWUFBQSxDQUFBRCxFQUFBO01BQ1osSUFBTXRELEtBQUssR0FBSUMsS0FBaUMsQ0FBQ3dELEdBQUcsQ0FBQztNQUNyRCxJQUFJekQsS0FBSyxLQUFLRSxTQUFTLEVBQUVrRCxNQUFNLENBQUNLLEdBQUcsQ0FBQyxHQUFHekQsS0FBSztJQUM5QztJQUNBa0QsV0FBVyxHQUFHRSxNQUEwQjtFQUMxQztFQUVBLElBQUFNLFlBQUEsR0FzQklSLFdBQVc7SUFyQmJqQixRQUFRLEdBQUF5QixZQUFBLENBQVJ6QixRQUFRO0lBQ1JWLElBQUksR0FBQW1DLFlBQUEsQ0FBSm5DLElBQUk7SUFDSlAsS0FBSyxHQUFBMEMsWUFBQSxDQUFMMUMsS0FBSztJQUNMMkMsV0FBVyxHQUFBRCxZQUFBLENBQVhDLFdBQVc7SUFDWEMsS0FBSyxHQUFBRixZQUFBLENBQUxFLEtBQUs7SUFDTEMsUUFBUSxHQUFBSCxZQUFBLENBQVJHLFFBQVE7SUFDUkMsUUFBUSxHQUFBSixZQUFBLENBQVJJLFFBQVE7SUFDUkMsY0FBYyxHQUFBTCxZQUFBLENBQWRLLGNBQWM7SUFBQUMscUJBQUEsR0FBQU4sWUFBQSxDQUNkTyxTQUFTO0lBQVRBLFNBQVMsR0FBQUQscUJBQUEsY0FBRyxFQUFFLEdBQUFBLHFCQUFBO0lBQUFFLHFCQUFBLEdBQUFSLFlBQUEsQ0FDZFMsU0FBUztJQUFUQSxTQUFTLEdBQUFELHFCQUFBLGNBQUcsV0FBVyxHQUFBQSxxQkFBQTtJQUN2QkUsTUFBTSxHQUFBVixZQUFBLENBQU5VLE1BQU07SUFDTkMsU0FBUyxHQUFBWCxZQUFBLENBQVRXLFNBQVM7SUFDVDdDLFlBQVksR0FBQWtDLFlBQUEsQ0FBWmxDLFlBQVk7SUFDWnpCLFNBQVMsR0FBQTJELFlBQUEsQ0FBVDNELFNBQVM7SUFDVDBCLGNBQWMsR0FBQWlDLFlBQUEsQ0FBZGpDLGNBQWM7SUFDZDZDLFFBQVEsR0FBQVosWUFBQSxDQUFSWSxRQUFRO0lBQ0ZDLFFBQVEsR0FBQWIsWUFBQSxDQUFkYyxJQUFJO0lBQUFDLHFCQUFBLEdBQUFmLFlBQUEsQ0FDSmhDLFNBQVM7SUFBVEEsU0FBUyxHQUFBK0MscUJBQUEsY0FBRzVFLGtCQUFrQixHQUFBNEUscUJBQUE7SUFDOUIvRCxTQUFTLEdBQUFnRCxZQUFBLENBQVRoRCxTQUFTO0lBQ1QrQixhQUFhLEdBQUFpQixZQUFBLENBQWJqQixhQUFhO0lBQ2JpQyxnQkFBZ0IsR0FBQWhCLFlBQUEsQ0FBaEJnQixnQkFBZ0I7RUFHbEIsSUFBTUMsVUFBVSxHQUFHSixRQUFRLEtBQUEsSUFBQSxJQUFSQSxRQUFRLEtBQUEsS0FBQSxDQUFBLEdBQVJBLFFBQVEsR0FBSXRCLEdBQUcsQ0FBQ3VCLElBQUk7RUFDdkMsSUFBTUksVUFBVSxHQUFHRCxVQUFVLEtBQUssTUFBTTtFQUV4QyxJQUFBRSxZQUFBLEdBUUksSUFBQUMseUJBQVcsRUFBQztNQUFFdkQsSUFBSSxFQUFKQSxJQUFJO01BQUVxQyxLQUFLLEVBQUxBLEtBQUs7TUFBRUMsUUFBUSxFQUFSQSxRQUFRO01BQUVFLGNBQWMsRUFBZEEsY0FBYztNQUFFdEIsYUFBYSxFQUFiQSxhQUFhO01BQUVpQyxnQkFBZ0IsRUFBaEJBO0lBQWdCLENBQUUsQ0FBQztJQVB6RkssVUFBVSxHQUFBRixZQUFBLENBQVZFLFVBQVU7SUFDVkMsWUFBWSxHQUFBSCxZQUFBLENBQVpHLFlBQVk7SUFDWkMsVUFBVSxHQUFBSixZQUFBLENBQVZJLFVBQVU7SUFDVkMsSUFBSSxHQUFBTCxZQUFBLENBQUpLLElBQUk7SUFDSkMsVUFBVSxHQUFBTixZQUFBLENBQVZNLFVBQVU7SUFDVkMsWUFBWSxHQUFBUCxZQUFBLENBQVpPLFlBQVk7SUFDWkMsV0FBVyxHQUFBUixZQUFBLENBQVhRLFdBQVc7RUFHYjtFQUNBLElBQUFDLGdCQUFTLEVBQUMsWUFBSztJQUNiLElBQUksQ0FBQy9ELElBQUksSUFBSSxDQUFDOEMsU0FBUyxFQUFFO0lBQ3pCcEIsR0FBRyxDQUFDc0MsaUJBQWlCLENBQUNoRSxJQUFJLEVBQUU4QyxTQUFTLENBQUM7SUFDdEMsT0FBTyxZQUFLO01BQ1ZwQixHQUFHLENBQUN1QyxtQkFBbUIsQ0FBQ2pFLElBQUksQ0FBQztJQUMvQixDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUNBLElBQUksRUFBRThDLFNBQVMsRUFBRXBCLEdBQUcsQ0FBQ3NDLGlCQUFpQixFQUFFdEMsR0FBRyxDQUFDdUMsbUJBQW1CLENBQUMsQ0FBQztFQUVyRTtFQUNBLElBQUFGLGdCQUFTLEVBQUMsWUFBSztJQUNiLElBQUksQ0FBQy9ELElBQUksSUFBSSxDQUFDeEIsU0FBUyxFQUFFO0lBQ3pCa0QsR0FBRyxDQUFDd0MsaUJBQWlCLENBQUNsRSxJQUFJLEVBQUV4QixTQUFTLENBQUM7SUFDdEMsT0FBTyxZQUFLO01BQ1ZrRCxHQUFHLENBQUN5QyxtQkFBbUIsQ0FBQ25FLElBQUksQ0FBQztJQUMvQixDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUNBLElBQUksRUFBRXhCLFNBQVMsRUFBRWtELEdBQUcsQ0FBQ3dDLGlCQUFpQixFQUFFeEMsR0FBRyxDQUFDeUMsbUJBQW1CLENBQUMsQ0FBQztFQUVyRSxJQUFJdEIsTUFBTSxFQUFFLE9BQU8sSUFBSTtFQUV2QixJQUFJdUIsWUFBdUI7RUFDM0IsSUFBSWYsVUFBVSxFQUFFO0lBQ2RlLFlBQVksR0FDVixJQUFBM0QsZUFBQSxFQUFDSSxhQUFhLEVBQUE7TUFDWmIsSUFBSSxFQUFFQSxJQUFJO01BQ1Z4QixTQUFTLEVBQUVBLFNBQVM7TUFDcEJXLFNBQVMsRUFBRUEsU0FBUztNQUNwQmMsWUFBWSxFQUFFQSxZQUFZO01BQzFCQyxjQUFjLEVBQUVBLGNBQWM7TUFDOUJDLFNBQVMsRUFBRUE7SUFBUyxDQUFBLENBRXZCO0VBQ0gsQ0FBQyxNQUFNO0lBQ0w7SUFDQTtJQUNBLElBQU1rRSxRQUFRLEdBQUdQLFdBQVcsQ0FBQ3BELFFBQVEsQ0FBQztJQUN0QyxJQUFJVCxZQUFZLElBQUlELElBQUksaUJBQUlxQixpQkFBSyxDQUFDaUQsY0FBYyxDQUFDRCxRQUFRLENBQUMsRUFBRTtNQUMxREQsWUFBWSxHQUNWLElBQUEzRCxlQUFBLEVBQUNlLGlCQUFpQixFQUFBO1FBQUN4QixJQUFJLEVBQUVBLElBQUk7UUFBRUMsWUFBWSxFQUFFQSxZQUFZO1FBQUVpQixhQUFhLEVBQUVBLGFBQWE7UUFBQVIsUUFBQSxFQUNwRjJEO01BQThCLENBQUEsQ0FFbEM7SUFDSCxDQUFDLE1BQU07TUFDTEQsWUFBWSxHQUFHQyxRQUFRO0lBQ3pCO0VBQ0Y7RUFFQSxJQUFNRSxPQUFPLEdBQUcsSUFBQUMsc0JBQVUsRUFBQzVCLFNBQVMsQ0FBQztFQUVyQyxJQUFNNkIsS0FBSyxHQUNULElBQUFDLGdCQUFBLEVBQUEsS0FBQSxFQUFBO0lBQ0VoQyxTQUFTLEVBQUU2QixPQUFPLENBQ2hCNUYsU0FBUyxFQUNULElBQUFnRyxtQkFBTyxFQUFDSixPQUFPLENBQUNaLElBQUksQ0FBQyxFQUFFakIsU0FBUyxDQUFDLENBQ2xDO0lBQUFoQyxRQUFBLEVBQUEsQ0FFQWpCLEtBQUssSUFDSixJQUFBaUYsZ0JBQUEsRUFBQSxLQUFBLEVBQUE7TUFDRWhDLFNBQVMsRUFBRTZCLE9BQU8sQ0FDaEIsZUFBZSxFQUNmLElBQUFJLG1CQUFPLEVBQ0xKLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxFQUNqQ1gsVUFBVSxJQUFJVyxPQUFPLGtCQUFBSyxNQUFBLENBQWtCaEIsVUFBVSxDQUFFLENBQUMsQ0FDckQsQ0FDRjtNQUFBbEQsUUFBQSxFQUFBLENBRUQsSUFBQUQsZUFBQSxFQUFDb0UsMkJBQWUsRUFBQTtRQUNkQyxFQUFFLEVBQUMsT0FBTztRQUNWbkIsSUFBSSxFQUFFb0IsMEJBQWU7UUFDckJDLEtBQUssRUFBRUMsMkJBQWdCO1FBQ3ZCdkMsU0FBUyxFQUFFNkIsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUFBN0QsUUFBQSxFQUUxQmpCO01BQUssQ0FBQSxDQUNVLEVBQ2pCMkMsV0FBVyxJQUNWLElBQUEzQixlQUFBLEVBQUN5RSwwQkFBYyxFQUFBO1FBQ2JKLEVBQUUsRUFBQyxLQUFLO1FBQ1JwQyxTQUFTLEVBQUU2QixPQUFPLENBQUMsYUFBYSxDQUFDO1FBQ2pDWixJQUFJLEVBQUV3QixnQ0FBcUI7UUFDM0JILEtBQUssRUFBRUksaUNBQXNCO1FBQUExRSxRQUFBLEVBRTVCMEI7TUFBVyxDQUFBLENBRWY7SUFBQSxDQUFBLENBRUosRUFFRCxJQUFBc0MsZ0JBQUEsRUFBQSxLQUFBLEVBQUE7TUFBS2hDLFNBQVMsRUFBRTZCLE9BQU8sQ0FBQyxTQUFTLENBQUM7TUFBQTdELFFBQUEsRUFBQSxDQUMvQjBELFlBQVksRUFFWlosVUFBVSxJQUNULElBQUEvQyxlQUFBLEVBQUN5RSwwQkFBYyxFQUFBO1FBQ2JKLEVBQUUsRUFBQyxLQUFLO1FBQ1JwQyxTQUFTLEVBQUU2QixPQUFPLENBQUMsT0FBTyxDQUFDO1FBQzNCWixJQUFJLEVBQUUwQiwwQkFBZTtRQUNyQkwsS0FBSyxFQUFFTSwyQkFBZ0I7UUFBQTVFLFFBQUEsRUFFdEI4QztNQUFVLENBQUEsQ0FFZCxFQUVBLENBQUNBLFVBQVUsSUFBSUMsWUFBWSxJQUMxQixJQUFBaEQsZUFBQSxFQUFDeUUsMEJBQWMsRUFBQTtRQUNiSixFQUFFLEVBQUMsS0FBSztRQUNScEMsU0FBUyxFQUFFNkIsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUM3QlosSUFBSSxFQUFFNEIsNEJBQWlCO1FBQ3ZCUCxLQUFLLEVBQUVRLDZCQUFrQjtRQUFBOUUsUUFBQSxFQUV4QitDO01BQVksQ0FBQSxDQUVoQixFQUVBLENBQUNELFVBQVUsSUFBSSxDQUFDQyxZQUFZLElBQUlsQixRQUFRLElBQ3ZDLElBQUE5QixlQUFBLEVBQUN5RSwwQkFBYyxFQUFBO1FBQ2JKLEVBQUUsRUFBQyxLQUFLO1FBQ1JwQyxTQUFTLEVBQUU2QixPQUFPLENBQUMsVUFBVSxDQUFDO1FBQzlCWixJQUFJLEVBQUU4Qiw2QkFBa0I7UUFDeEJULEtBQUssRUFBRVUsOEJBQW1CO1FBQUFoRixRQUFBLEVBRXpCNkI7TUFBUSxDQUFBLENBRVo7SUFBQSxDQUFBLENBQ0c7RUFBQSxDQUFBLENBRVQ7RUFFRCxJQUFJYixHQUFHLENBQUNpRSxJQUFJLEVBQUU7SUFDWixJQUFNOUQsT0FBTSxHQUFBL0QsTUFBQSxDQUFBZ0UsTUFBQSxDQUFBaEUsTUFBQSxDQUFBZ0UsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFRSixHQUFHLENBQUNxQixRQUFRLENBQUEsRUFBS0EsUUFBUSxDQUFFO0lBQy9DLElBQUE2QyxZQUFBLEdBQWdEL0QsT0FBTSxDQUE5Q2dFLElBQUk7TUFBSkEsSUFBSSxHQUFBRCxZQUFBLGNBQUdFLDRCQUFnQixHQUFBRixZQUFBO01BQUVHLEVBQUUsR0FBYWxFLE9BQU0sQ0FBckJrRSxFQUFFO01BQUVDLEVBQUUsR0FBU25FLE9BQU0sQ0FBakJtRSxFQUFFO01BQUVDLEVBQUUsR0FBS3BFLE9BQU0sQ0FBYm9FLEVBQUU7SUFDM0MsT0FBTyxJQUFBeEYsZUFBQSxFQUFDeUYsU0FBRyxFQUFBO01BQUNMLElBQUksRUFBRUEsSUFBSTtNQUFFRSxFQUFFLEVBQUVBLEVBQUU7TUFBRUMsRUFBRSxFQUFFQSxFQUFFO01BQUVDLEVBQUUsRUFBRUEsRUFBRTtNQUFBdkYsUUFBQSxFQUFHK0Q7SUFBSyxDQUFBLENBQU87RUFDL0Q7RUFFQSxPQUFPQSxLQUFLO0FBQ2QsQ0FBQztBQUVEaEQsZUFBZSxDQUFDYixXQUFXLEdBQUcsYUFBYTtBQUVwQyxJQUFNdUYsV0FBVyxHQUFBQyxPQUFBLENBQUFELFdBQUEsZ0JBQUcsSUFBQXJGLFdBQUksRUFBQ1csZUFBZSxDQUFDO0FBQUMsSUFBQTRFLFFBQUEsR0FBQUQsT0FBQSxjQUVsQ0QsV0FBVyIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vUHJvRm9ybUl0ZW0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFJlYWN0LCB7IG1lbW8sIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IENvbCB9IGZyb20gJy4uL0dyaWQnO1xuaW1wb3J0IHsgVHlwb2dyYXBoeUJvZHksIFR5cG9ncmFwaHlMYWJlbCB9IGZyb20gJy4uL1R5cG9ncmFwaHknO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzLCBqb2luQ2xzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyB1c2VGb3JtSXRlbSB9IGZyb20gJy4vY29yZS91c2VGb3JtSXRlbSc7XG5pbXBvcnQgeyBGT1JNX0VSUk9SX0NPTE9SLCBGT1JNX0VSUk9SX1NJWkUsIEZPUk1fV0FSTklOR19DT0xPUiwgRk9STV9XQVJOSU5HX1NJWkUsIEZPUk1fREVTQ1JJUFRJT05fQ09MT1IsIEZPUk1fREVTQ1JJUFRJT05fU0laRSwgRk9STV9GRUVEQkFDS19DT0xPUiwgRk9STV9GRUVEQkFDS19TSVpFLCBGT1JNX0xBQkVMX0NPTE9SLCBGT1JNX0xBQkVMX1NJWkUsIH0gZnJvbSAnLi9jb3JlL2NvbnN0YW50cyc7XG5pbXBvcnQgeyB1c2VQcm9Gb3JtQ29udGV4dCB9IGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgeyBERUZBVUxUX0NPTF9TUEFOIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgdmFsdWVFbnVtVG9PcHRpb25zLCBmb3JtYXREYXRlQnlQYXR0ZXJuLCBEQVRFX0ZPUk1BVCwgREFURV9USU1FX0ZPUk1BVCB9IGZyb20gJy4vdXRpbHMnO1xuY29uc3QgRU1QVFlfVEVYVF9ERUZBVUxUID0gJy0nO1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZWFkLW1vZGUgcmVuZGVyaW5nIGZvciBlYWNoIHN1cHBvcnRlZCB2YWx1ZVR5cGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gcmVuZGVyQnlWYWx1ZVR5cGUodmFsdWVUeXBlLCB2YWx1ZSwgcHJvcHMpIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIHN3aXRjaCAodmFsdWVUeXBlKSB7XG4gICAgICAgIGNhc2UgJ3Bhc3N3b3JkJzpcbiAgICAgICAgICAgIHJldHVybiAnKicucmVwZWF0KFN0cmluZyh2YWx1ZSkubGVuZ3RoKTtcbiAgICAgICAgY2FzZSAnc3dpdGNoJzpcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSA/ICdPbicgOiAnT2ZmJztcbiAgICAgICAgY2FzZSAnZGlnaXQnOiB7XG4gICAgICAgICAgICBjb25zdCBudW0gPSBOdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgaWYgKE51bWJlci5pc05hTihudW0pKVxuICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIG51bS50b0xvY2FsZVN0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgIGNhc2UgJ3JhZGlvJzpcbiAgICAgICAgY2FzZSAndGFnJzoge1xuICAgICAgICAgICAgaWYgKCFwcm9wcy52YWx1ZUVudW0pXG4gICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gdmFsdWVFbnVtVG9PcHRpb25zKHByb3BzLnZhbHVlRW51bSk7XG4gICAgICAgICAgICBjb25zdCBtYXRjaCA9IG9wdGlvbnMuZmluZCgobykgPT4gU3RyaW5nKG8udmFsdWUpID09PSBTdHJpbmcodmFsdWUpKTtcbiAgICAgICAgICAgIHJldHVybiBtYXRjaCA/IG1hdGNoLmxhYmVsIDogU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyBmb3JtYXREYXRlQnlQYXR0ZXJuKHZhbHVlLCBEQVRFX0ZPUk1BVCkgOiBTdHJpbmcodmFsdWUpO1xuICAgICAgICBjYXNlICdkYXRlVGltZSc6XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gZm9ybWF0RGF0ZUJ5UGF0dGVybih2YWx1ZSwgREFURV9USU1FX0ZPUk1BVCkgOiBTdHJpbmcodmFsdWUpO1xuICAgICAgICBjYXNlICd0ZXh0JzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIH1cbn1cbmNvbnN0IFJlYWRvbmx5Q2hpbGRCYXNlID0gKHsgbmFtZSwgdmFsdWVUeXBlLCB2YWx1ZUVudW0sIGNvbnZlcnRWYWx1ZSwgcmVhZG9ubHlSZW5kZXIsIGVtcHR5VGV4dCwgfSkgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWVzIH0gPSB1c2VQcm9Gb3JtQ29udGV4dCgpO1xuICAgIGNvbnN0IHJhdyA9IG5hbWUgPyB2YWx1ZXNbbmFtZV0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgdmFsdWUgPSBjb252ZXJ0VmFsdWUgJiYgbmFtZSA/IGNvbnZlcnRWYWx1ZShyYXcsIG5hbWUpIDogcmF3O1xuICAgIGlmIChyZWFkb25seVJlbmRlcikge1xuICAgICAgICBjb25zdCBub2RlID0gcmVhZG9ubHlSZW5kZXIodmFsdWUsIHZhbHVlcyk7XG4gICAgICAgIHJldHVybiBfanN4KFwic3BhblwiLCB7IGNoaWxkcmVuOiBub2RlICE9PSBudWxsICYmIG5vZGUgIT09IHZvaWQgMCA/IG5vZGUgOiBlbXB0eVRleHQgfSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykge1xuICAgICAgICByZXR1cm4gX2pzeChcInNwYW5cIiwgeyBjaGlsZHJlbjogZW1wdHlUZXh0IH0pO1xuICAgIH1cbiAgICBjb25zdCByZW5kZXJlZCA9IHJlbmRlckJ5VmFsdWVUeXBlKHZhbHVlVHlwZSwgdmFsdWUsIHsgdmFsdWVFbnVtIH0pO1xuICAgIHJldHVybiBfanN4KFwic3BhblwiLCB7IGNoaWxkcmVuOiByZW5kZXJlZCAhPT0gbnVsbCAmJiByZW5kZXJlZCAhPT0gdm9pZCAwID8gcmVuZGVyZWQgOiBlbXB0eVRleHQgfSk7XG59O1xuUmVhZG9ubHlDaGlsZEJhc2UuZGlzcGxheU5hbWUgPSAnUHJvRm9ybUl0ZW1SZWFkb25seSc7XG5jb25zdCBSZWFkb25seUNoaWxkID0gbWVtbyhSZWFkb25seUNoaWxkQmFzZSk7XG5jb25zdCBDb252ZXJ0VmFsdWVDaGlsZEJhc2UgPSAoeyBuYW1lLCBjb252ZXJ0VmFsdWUsIHZhbHVlUHJvcE5hbWUgPSAndmFsdWUnLCBjaGlsZHJlbiwgfSkgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWVzIH0gPSB1c2VQcm9Gb3JtQ29udGV4dCgpO1xuICAgIGNvbnN0IHJhdyA9IHZhbHVlc1tuYW1lXTtcbiAgICBjb25zdCBjb252ZXJ0ZWQgPSBjb252ZXJ0VmFsdWUgPyBjb252ZXJ0VmFsdWUocmF3LCBuYW1lKSA6IHJhdztcbiAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7IFt2YWx1ZVByb3BOYW1lXTogY29udmVydGVkIH0pO1xufTtcbkNvbnZlcnRWYWx1ZUNoaWxkQmFzZS5kaXNwbGF5TmFtZSA9ICdQcm9Gb3JtSXRlbUNvbnZlcnRWYWx1ZSc7XG5jb25zdCBDb252ZXJ0VmFsdWVDaGlsZCA9IG1lbW8oQ29udmVydFZhbHVlQ2hpbGRCYXNlKTtcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUHJvRm9ybUl0ZW1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuY29uc3QgUHJvRm9ybUl0ZW1CYXNlID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgY3R4ID0gdXNlUHJvRm9ybUNvbnRleHQoKTtcbiAgICAvLyBGb3JtLWxldmVsIGBmb3JtSXRlbVByb3BzYCBhY3QgYXMgREVGQVVMVFM7IHByb3BzIGV4cGxpY2l0bHkgc2V0IG9uIHRoZVxuICAgIC8vIGl0ZW0gd2luLiBKU1ggZnJlcXVlbnRseSBwYXNzZXMgYHVuZGVmaW5lZGAgZm9yIHVuc2V0IHByb3BzIChlLmcuIHRoZVxuICAgIC8vIGNyZWF0ZVByb0Zvcm1GaWVsZCBwYXNzLXRocm91Z2gpLCBzbyBvbmx5IGRlZmluZWQgdmFsdWVzIG1heSBvdmVycmlkZS5cbiAgICBsZXQgbWVyZ2VkUHJvcHMgPSBwcm9wcztcbiAgICBpZiAoY3R4LmZvcm1JdGVtUHJvcHMpIHtcbiAgICAgICAgY29uc3QgbWVyZ2VkID0gT2JqZWN0LmFzc2lnbih7fSwgY3R4LmZvcm1JdGVtUHJvcHMpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhwcm9wcykpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcHJvcHNba2V5XTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIG1lcmdlZFtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgbWVyZ2VkUHJvcHMgPSBtZXJnZWQ7XG4gICAgfVxuICAgIGNvbnN0IHsgY2hpbGRyZW4sIG5hbWUsIGxhYmVsLCBkZXNjcmlwdGlvbiwgcnVsZXMsIHJlcXVpcmVkLCBmZWVkYmFjaywgdmFsaWRhdGVTdGF0dXMsIGNsYXNzTmFtZSA9ICcnLCBwcmVmaXhDbHMgPSAnZm9ybS1pdGVtJywgaGlkZGVuLCB0cmFuc2Zvcm0sIGNvbnZlcnRWYWx1ZSwgdmFsdWVUeXBlLCByZWFkb25seVJlbmRlciwgY29sUHJvcHMsIG1vZGU6IG1vZGVQcm9wLCBlbXB0eVRleHQgPSBFTVBUWV9URVhUX0RFRkFVTFQsIHZhbHVlRW51bSwgdmFsdWVQcm9wTmFtZSwgdmFsaWRhdGVEZWJvdW5jZSwgfSA9IG1lcmdlZFByb3BzO1xuICAgIGNvbnN0IG1lcmdlZE1vZGUgPSBtb2RlUHJvcCAhPT0gbnVsbCAmJiBtb2RlUHJvcCAhPT0gdm9pZCAwID8gbW9kZVByb3AgOiBjdHgubW9kZTtcbiAgICBjb25zdCBpc1JlYWRvbmx5ID0gbWVyZ2VkTW9kZSA9PT0gJ3JlYWQnO1xuICAgIGNvbnN0IHsgZmllbGRFcnJvciwgZmllbGRXYXJuaW5nLCBpc1JlcXVpcmVkLCBzaXplLCBsYWJlbEFsaWduLCByZXF1aXJlZE1hcmssIGluamVjdEZpZWxkLCB9ID0gdXNlRm9ybUl0ZW0oeyBuYW1lLCBydWxlcywgcmVxdWlyZWQsIHZhbGlkYXRlU3RhdHVzLCB2YWx1ZVByb3BOYW1lLCB2YWxpZGF0ZURlYm91bmNlIH0pO1xuICAgIC8vIFJlZ2lzdGVyIC8gdW5yZWdpc3RlciB0cmFuc2Zvcm1cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIW5hbWUgfHwgIXRyYW5zZm9ybSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY3R4LnJlZ2lzdGVyVHJhbnNmb3JtKG5hbWUsIHRyYW5zZm9ybSk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBjdHgudW5yZWdpc3RlclRyYW5zZm9ybShuYW1lKTtcbiAgICAgICAgfTtcbiAgICB9LCBbbmFtZSwgdHJhbnNmb3JtLCBjdHgucmVnaXN0ZXJUcmFuc2Zvcm0sIGN0eC51bnJlZ2lzdGVyVHJhbnNmb3JtXSk7XG4gICAgLy8gUmVnaXN0ZXIgLyB1bnJlZ2lzdGVyIHZhbHVlVHlwZSAoZHJpdmVzIHZhbHVlVHlwZS1hd2FyZSBkYXRlRm9ybWF0dGVyKVxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghbmFtZSB8fCAhdmFsdWVUeXBlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjdHgucmVnaXN0ZXJWYWx1ZVR5cGUobmFtZSwgdmFsdWVUeXBlKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGN0eC51bnJlZ2lzdGVyVmFsdWVUeXBlKG5hbWUpO1xuICAgICAgICB9O1xuICAgIH0sIFtuYW1lLCB2YWx1ZVR5cGUsIGN0eC5yZWdpc3RlclZhbHVlVHlwZSwgY3R4LnVucmVnaXN0ZXJWYWx1ZVR5cGVdKTtcbiAgICBpZiAoaGlkZGVuKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICBsZXQgY29udHJvbENoaWxkO1xuICAgIGlmIChpc1JlYWRvbmx5KSB7XG4gICAgICAgIGNvbnRyb2xDaGlsZCA9IChfanN4KFJlYWRvbmx5Q2hpbGQsIHsgbmFtZTogbmFtZSwgdmFsdWVUeXBlOiB2YWx1ZVR5cGUsIHZhbHVlRW51bTogdmFsdWVFbnVtLCBjb252ZXJ0VmFsdWU6IGNvbnZlcnRWYWx1ZSwgcmVhZG9ubHlSZW5kZXI6IHJlYWRvbmx5UmVuZGVyLCBlbXB0eVRleHQ6IGVtcHR5VGV4dCB9KSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICAvLyBJbmplY3QgZmlyc3Qgc28gdGhlIHJlYWwgZmllbGQgcmVjZWl2ZXMgdmFsdWUvb25DaGFuZ2Uvb25CbHVyLFxuICAgICAgICAvLyB0aGVuIG9wdGlvbmFsbHkgd3JhcCBpbiBDb252ZXJ0VmFsdWVDaGlsZCB0byBvdmVycmlkZSB0aGUgZGlzcGxheWVkIHZhbHVlLlxuICAgICAgICBjb25zdCBpbmplY3RlZCA9IGluamVjdEZpZWxkKGNoaWxkcmVuKTtcbiAgICAgICAgaWYgKGNvbnZlcnRWYWx1ZSAmJiBuYW1lICYmIFJlYWN0LmlzVmFsaWRFbGVtZW50KGluamVjdGVkKSkge1xuICAgICAgICAgICAgY29udHJvbENoaWxkID0gKF9qc3goQ29udmVydFZhbHVlQ2hpbGQsIHsgbmFtZTogbmFtZSwgY29udmVydFZhbHVlOiBjb252ZXJ0VmFsdWUsIHZhbHVlUHJvcE5hbWU6IHZhbHVlUHJvcE5hbWUsIGNoaWxkcmVuOiBpbmplY3RlZCB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb250cm9sQ2hpbGQgPSBpbmplY3RlZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIGNvbnN0IHNoZWxsID0gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKHVuZGVmaW5lZCwgam9pbkNscyhjbGFzc2VzKHNpemUpLCBjbGFzc05hbWUpKSwgY2hpbGRyZW46IFtsYWJlbCAmJiAoX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2xhYmVsLXdyYXBwZXInLCBqb2luQ2xzKGNsYXNzZXMoJ2xhYmVsLXdyYXBwZXItdmVydGljYWwnKSwgbGFiZWxBbGlnbiAmJiBjbGFzc2VzKGBsYWJlbC13cmFwcGVyLSR7bGFiZWxBbGlnbn1gKSkpLCBjaGlsZHJlbjogW19qc3goVHlwb2dyYXBoeUxhYmVsLCB7IGFzOiBcImxhYmVsXCIsIHNpemU6IEZPUk1fTEFCRUxfU0laRSwgY29sb3I6IEZPUk1fTEFCRUxfQ09MT1IsIGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwnKSwgY2hpbGRyZW46IGxhYmVsIH0pLCBkZXNjcmlwdGlvbiAmJiAoX2pzeChUeXBvZ3JhcGh5Qm9keSwgeyBhczogXCJkaXZcIiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdkZXNjcmlwdGlvbicpLCBzaXplOiBGT1JNX0RFU0NSSVBUSU9OX1NJWkUsIGNvbG9yOiBGT1JNX0RFU0NSSVBUSU9OX0NPTE9SLCBjaGlsZHJlbjogZGVzY3JpcHRpb24gfSkpXSB9KSksIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdjb250cm9sJyksIGNoaWxkcmVuOiBbY29udHJvbENoaWxkLCBmaWVsZEVycm9yICYmIChfanN4KFR5cG9ncmFwaHlCb2R5LCB7IGFzOiBcImRpdlwiLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2Vycm9yJyksIHNpemU6IEZPUk1fRVJST1JfU0laRSwgY29sb3I6IEZPUk1fRVJST1JfQ09MT1IsIGNoaWxkcmVuOiBmaWVsZEVycm9yIH0pKSwgIWZpZWxkRXJyb3IgJiYgZmllbGRXYXJuaW5nICYmIChfanN4KFR5cG9ncmFwaHlCb2R5LCB7IGFzOiBcImRpdlwiLCBjbGFzc05hbWU6IGNsYXNzZXMoJ3dhcm5pbmcnKSwgc2l6ZTogRk9STV9XQVJOSU5HX1NJWkUsIGNvbG9yOiBGT1JNX1dBUk5JTkdfQ09MT1IsIGNoaWxkcmVuOiBmaWVsZFdhcm5pbmcgfSkpLCAhZmllbGRFcnJvciAmJiAhZmllbGRXYXJuaW5nICYmIGZlZWRiYWNrICYmIChfanN4KFR5cG9ncmFwaHlCb2R5LCB7IGFzOiBcImRpdlwiLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2ZlZWRiYWNrJyksIHNpemU6IEZPUk1fRkVFREJBQ0tfU0laRSwgY29sb3I6IEZPUk1fRkVFREJBQ0tfQ09MT1IsIGNoaWxkcmVuOiBmZWVkYmFjayB9KSldIH0pXSB9KSk7XG4gICAgaWYgKGN0eC5ncmlkKSB7XG4gICAgICAgIGNvbnN0IG1lcmdlZCA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgY3R4LmNvbFByb3BzKSwgY29sUHJvcHMpO1xuICAgICAgICBjb25zdCB7IHNwYW4gPSBERUZBVUxUX0NPTF9TUEFOLCBzbSwgbWQsIGxnIH0gPSBtZXJnZWQ7XG4gICAgICAgIHJldHVybiBfanN4KENvbCwgeyBzcGFuOiBzcGFuLCBzbTogc20sIG1kOiBtZCwgbGc6IGxnLCBjaGlsZHJlbjogc2hlbGwgfSk7XG4gICAgfVxuICAgIHJldHVybiBzaGVsbDtcbn07XG5Qcm9Gb3JtSXRlbUJhc2UuZGlzcGxheU5hbWUgPSAnUHJvRm9ybUl0ZW0nO1xuZXhwb3J0IGNvbnN0IFByb0Zvcm1JdGVtID0gbWVtbyhQcm9Gb3JtSXRlbUJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgUHJvRm9ybUl0ZW07IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
324
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtSXRlbS5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtSXRlbS50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfR3JpZCIsIl9UeXBvZ3JhcGh5IiwiX2NsYXNzbmFtZXMiLCJfdXNlRm9ybUl0ZW0yIiwiX2NvbnN0YW50cyIsIl9jb250ZXh0IiwiX2Zvcm1TdG9yZSIsIl9wYXRoVXRpbHMiLCJfY29uc3RhbnRzMiIsIl91dGlscyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIkVNUFRZX1RFWFRfREVGQVVMVCIsInJlbmRlckJ5VmFsdWVUeXBlIiwidmFsdWVUeXBlIiwidmFsdWUiLCJwcm9wcyIsInVuZGVmaW5lZCIsInJlcGVhdCIsIlN0cmluZyIsImxlbmd0aCIsIm51bSIsIk51bWJlciIsImlzTmFOIiwidG9Mb2NhbGVTdHJpbmciLCJ2YWx1ZUVudW0iLCJvcHRpb25zIiwidmFsdWVFbnVtVG9PcHRpb25zIiwibWF0Y2giLCJmaW5kIiwibyIsImxhYmVsIiwiRGF0ZSIsImZvcm1hdERhdGVCeVBhdHRlcm4iLCJEQVRFX0ZPUk1BVCIsIkRBVEVfVElNRV9GT1JNQVQiLCJSZWFkb25seUNoaWxkQmFzZSIsIl9yZWYiLCJuYW1lIiwiY29udmVydFZhbHVlIiwicmVhZG9ubHlSZW5kZXIiLCJlbXB0eVRleHQiLCJzdG9yZSIsInVzZVByb0Zvcm1TdG9yZSIsIl91c2VTdG9yZVNlbGVjdG9yIiwidXNlU3RvcmVTZWxlY3RvciIsInN0YXRlIiwicmVzb2x2ZVZhbHVlIiwidmFsdWVzIiwic2hhbGxvd0VxdWFsQXJyYXlzIiwiX3VzZVN0b3JlU2VsZWN0b3IyIiwiX3NsaWNlZFRvQXJyYXkyIiwicmF3IiwiYWxsVmFsdWVzIiwibm9kZSIsImdldFN0YXRlIiwiX2pzeCIsImNoaWxkcmVuIiwicmVuZGVyZWQiLCJkaXNwbGF5TmFtZSIsIlJlYWRvbmx5Q2hpbGQiLCJtZW1vIiwiQ29udmVydFZhbHVlQ2hpbGRCYXNlIiwiX3JlZjIiLCJfcmVmMiR2YWx1ZVByb3BOYW1lIiwidmFsdWVQcm9wTmFtZSIsImNvbnZlcnRlZCIsIlJlYWN0IiwiY2xvbmVFbGVtZW50IiwiX2RlZmluZVByb3BlcnR5MiIsIkNvbnZlcnRWYWx1ZUNoaWxkIiwiUHJvRm9ybUl0ZW1CYXNlIiwiX2EiLCJjdHgiLCJ1c2VQcm9Gb3JtU3RhYmxlIiwibWVyZ2VkUHJvcHMiLCJmb3JtSXRlbVByb3BzIiwibWVyZ2VkIiwiYXNzaWduIiwiX2kiLCJfT2JqZWN0JGtleXMiLCJrZXlzIiwia2V5IiwiX21lcmdlZFByb3BzIiwiZGVzY3JpcHRpb24iLCJydWxlcyIsInJlcXVpcmVkIiwiZmVlZGJhY2siLCJ2YWxpZGF0ZVN0YXR1cyIsIl9tZXJnZWRQcm9wcyRjbGFzc05hbSIsImNsYXNzTmFtZSIsIl9tZXJnZWRQcm9wcyRwcmVmaXhDbCIsInByZWZpeENscyIsImhpZGRlbiIsInRyYW5zZm9ybSIsImNvbFByb3BzIiwibW9kZVByb3AiLCJtb2RlIiwiX21lcmdlZFByb3BzJGVtcHR5VGV4IiwidmFsaWRhdGVEZWJvdW5jZSIsIm1lcmdlZE1vZGUiLCJpc1JlYWRvbmx5IiwiX3VzZUZvcm1JdGVtIiwidXNlRm9ybUl0ZW0iLCJmaWVsZEVycm9yIiwiZmllbGRXYXJuaW5nIiwiaXNSZXF1aXJlZCIsInNpemUiLCJsYWJlbEFsaWduIiwicmVxdWlyZWRNYXJrIiwiaW5qZWN0RmllbGQiLCJvd25UcmFuc2Zvcm1SZWYiLCJ1c2VSZWYiLCJvd25WYWx1ZVR5cGVSZWYiLCJwcmV2VHJhbnNmb3JtIiwiY3VycmVudCIsInVucmVnaXN0ZXJUcmFuc2Zvcm0iLCJmbiIsInJlZ2lzdGVyVHJhbnNmb3JtIiwicHJldlZhbHVlVHlwZSIsInVucmVnaXN0ZXJWYWx1ZVR5cGUiLCJyZWdpc3RlclZhbHVlVHlwZSIsInVzZUVmZmVjdCIsInRyYW5zZm9ybVJlZyIsInZhbHVlVHlwZVJlZyIsInYiLCJjb250cm9sQ2hpbGQiLCJpbmplY3RlZCIsImlzVmFsaWRFbGVtZW50IiwiY2xhc3NlcyIsImNsYXNzbmFtZXMiLCJpdGVtR2FwIiwibGF5b3V0IiwiZ2FwU3R5bGUiLCJtYXJnaW5Cb3R0b20iLCJjb25jYXQiLCJzaGVsbCIsIl9qc3hzIiwiam9pbkNscyIsInN0eWxlIiwiVHlwb2dyYXBoeUxhYmVsIiwiYXMiLCJGT1JNX0xBQkVMX1NJWkVTIiwiY29sb3IiLCJGT1JNX0xBQkVMX0NPTE9SIiwiVHlwb2dyYXBoeUJvZHkiLCJGT1JNX0RFU0NSSVBUSU9OX1NJWkUiLCJGT1JNX0RFU0NSSVBUSU9OX0NPTE9SIiwiRk9STV9FUlJPUl9TSVpFIiwiRk9STV9FUlJPUl9DT0xPUiIsIkZPUk1fV0FSTklOR19TSVpFIiwiRk9STV9XQVJOSU5HX0NPTE9SIiwiRk9STV9GRUVEQkFDS19TSVpFIiwiRk9STV9GRUVEQkFDS19DT0xPUiIsImdyaWQiLCJfbWVyZ2VkJHNwYW4iLCJzcGFuIiwiREVGQVVMVF9DT0xfU1BBTiIsInNtIiwibWQiLCJsZyIsIkNvbCIsIlByb0Zvcm1JdGVtIiwiZXhwb3J0cyIsIl9kZWZhdWx0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FDQUEsSUFBQUMsTUFBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsS0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBSCx1QkFBQSxDQUFBRixPQUFBO0FBQ0Es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LEdBQUcsQ0FBQ2lGLElBQUksRUFBRTtJQUNaLElBQU03RSxPQUFNLEdBQUF6RSxNQUFBLENBQUEwRSxNQUFBLENBQUExRSxNQUFBLENBQUEwRSxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQVFMLEdBQUcsQ0FBQ3NCLFFBQVEsQ0FBQSxFQUFLQSxRQUFRLENBQUU7SUFDL0MsSUFBQTRELFlBQUEsR0FBZ0Q5RSxPQUFNLENBQTlDK0UsSUFBSTtNQUFKQSxJQUFJLEdBQUFELFlBQUEsY0FBR0UsNEJBQWdCLEdBQUFGLFlBQUE7TUFBRUcsRUFBRSxHQUFhakYsT0FBTSxDQUFyQmlGLEVBQUU7TUFBRUMsRUFBRSxHQUFTbEYsT0FBTSxDQUFqQmtGLEVBQUU7TUFBRUMsRUFBRSxHQUFLbkYsT0FBTSxDQUFibUYsRUFBRTtJQUMzQyxPQUFPLElBQUF4RyxlQUFBLEVBQUN5RyxTQUFHLEVBQUE7TUFBQ0wsSUFBSSxFQUFFQSxJQUFJO01BQUVFLEVBQUUsRUFBRUEsRUFBRTtNQUFFQyxFQUFFLEVBQUVBLEVBQUU7TUFBRUMsRUFBRSxFQUFFQSxFQUFFO01BQUF2RyxRQUFBLEVBQUcrRTtJQUFLLENBQUEsQ0FBTztFQUMvRDtFQUVBLE9BQU9BLEtBQUs7QUFDZCxDQUFDO0FBRURqRSxlQUFlLENBQUNaLFdBQVcsR0FBRyxhQUFhO0FBRXBDLElBQU11RyxXQUFXLEdBQUFDLE9BQUEsQ0FBQUQsV0FBQSxnQkFBRyxJQUFBckcsV0FBSSxFQUFDVSxlQUFlLENBQUM7QUFBQyxJQUFBNkYsUUFBQSxHQUFBRCxPQUFBLGNBRWxDRCxXQUFXIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtSXRlbS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgUmVhY3QsIHsgbWVtbywgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBDb2wgfSBmcm9tICcuLi9HcmlkJztcbmltcG9ydCB7IFR5cG9ncmFwaHlCb2R5LCBUeXBvZ3JhcGh5TGFiZWwgfSBmcm9tICcuLi9UeXBvZ3JhcGh5JztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgdXNlRm9ybUl0ZW0gfSBmcm9tICcuL2NvcmUvdXNlRm9ybUl0ZW0nO1xuaW1wb3J0IHsgRk9STV9FUlJPUl9DT0xPUiwgRk9STV9FUlJPUl9TSVpFLCBGT1JNX1dBUk5JTkdfQ09MT1IsIEZPUk1fV0FSTklOR19TSVpFLCBGT1JNX0RFU0NSSVBUSU9OX0NPTE9SLCBGT1JNX0RFU0NSSVBUSU9OX1NJWkUsIEZPUk1fRkVFREJBQ0tfQ09MT1IsIEZPUk1fRkVFREJBQ0tfU0laRSwgRk9STV9MQUJFTF9DT0xPUiwgRk9STV9MQUJFTF9TSVpFUywgfSBmcm9tICcuL2NvcmUvY29uc3RhbnRzJztcbmltcG9ydCB7IHVzZVByb0Zvcm1TdGFibGUsIHVzZVByb0Zvcm1TdG9yZSB9IGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgeyB1c2VTdG9yZVNlbGVjdG9yLCBzaGFsbG93RXF1YWxBcnJheXMgfSBmcm9tICcuL2NvcmUvZm9ybVN0b3JlJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJy4vY29yZS9wYXRoVXRpbHMnO1xuaW1wb3J0IHsgREVGQVVMVF9DT0xfU1BBTiB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IHZhbHVlRW51bVRvT3B0aW9ucywgZm9ybWF0RGF0ZUJ5UGF0dGVybiwgREFURV9GT1JNQVQsIERBVEVfVElNRV9GT1JNQVQgfSBmcm9tICcuL3V0aWxzJztcbmNvbnN0IEVNUFRZX1RFWFRfREVGQVVMVCA9ICctJztcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmVhZC1tb2RlIHJlbmRlcmluZyBmb3IgZWFjaCBzdXBwb3J0ZWQgdmFsdWVUeXBlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHJlbmRlckJ5VmFsdWVUeXBlKHZhbHVlVHlwZSwgdmFsdWUsIHByb3BzKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICBzd2l0Y2ggKHZhbHVlVHlwZSkge1xuICAgICAgICBjYXNlICdwYXNzd29yZCc6XG4gICAgICAgICAgICByZXR1cm4gJyonLnJlcGVhdChTdHJpbmcodmFsdWUpLmxlbmd0aCk7XG4gICAgICAgIGNhc2UgJ3N3aXRjaCc6XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgPyAnT24nIDogJ09mZic7XG4gICAgICAgIGNhc2UgJ2RpZ2l0Jzoge1xuICAgICAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgICAgIGlmIChOdW1iZXIuaXNOYU4obnVtKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiBudW0udG9Mb2NhbGVTdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICBjYXNlICdyYWRpbyc6XG4gICAgICAgIGNhc2UgJ3RhZyc6IHtcbiAgICAgICAgICAgIGlmICghcHJvcHMudmFsdWVFbnVtKVxuICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHZhbHVlRW51bVRvT3B0aW9ucyhwcm9wcy52YWx1ZUVudW0pO1xuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBvcHRpb25zLmZpbmQoKG8pID0+IFN0cmluZyhvLnZhbHVlKSA9PT0gU3RyaW5nKHZhbHVlKSk7XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaC5sYWJlbCA6IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gZm9ybWF0RGF0ZUJ5UGF0dGVybih2YWx1ZSwgREFURV9GT1JNQVQpIDogU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgY2FzZSAnZGF0ZVRpbWUnOlxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IGZvcm1hdERhdGVCeVBhdHRlcm4odmFsdWUsIERBVEVfVElNRV9GT1JNQVQpIDogU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICB9XG59XG5jb25zdCBSZWFkb25seUNoaWxkQmFzZSA9ICh7IG5hbWUsIHZhbHVlVHlwZSwgdmFsdWVFbnVtLCBjb252ZXJ0VmFsdWUsIHJlYWRvbmx5UmVuZGVyLCBlbXB0eVRleHQsIH0pID0+IHtcbiAgICBjb25zdCBzdG9yZSA9IHVzZVByb0Zvcm1TdG9yZSgpO1xuICAgIC8vIFN1YnNjcmliZSBwZXItZmllbGQ7IG9ubHkgYSBjdXN0b20gcmVhZG9ubHlSZW5kZXIgKHdoaWNoIHJlY2VpdmVzIEFMTFxuICAgIC8vIHZhbHVlcykgbmVlZHMgdG8gdHJhY2sgdGhlIHdob2xlIHZhbHVlcyBvYmplY3QuXG4gICAgY29uc3QgW3JhdywgYWxsVmFsdWVzXSA9IHVzZVN0b3JlU2VsZWN0b3Ioc3RvcmUsIChzdGF0ZSkgPT4gW1xuICAgICAgICBuYW1lID8gcmVzb2x2ZVZhbHVlKHN0YXRlLnZhbHVlcywgbmFtZSkgOiB1bmRlZmluZWQsXG4gICAgICAgIHJlYWRvbmx5UmVuZGVyID8gc3RhdGUudmFsdWVzIDogdW5kZWZpbmVkLFxuICAgIF0sIHNoYWxsb3dFcXVhbEFycmF5cyk7XG4gICAgY29uc3QgdmFsdWUgPSBjb252ZXJ0VmFsdWUgJiYgbmFtZSA/IGNvbnZlcnRWYWx1ZShyYXcsIG5hbWUpIDogcmF3O1xuICAgIGlmIChyZWFkb25seVJlbmRlcikge1xuICAgICAgICBjb25zdCBub2RlID0gcmVhZG9ubHlSZW5kZXIodmFsdWUsIGFsbFZhbHVlcyAhPT0gbnVsbCAmJiBhbGxWYWx1ZXMgIT09IHZvaWQgMCA/IGFsbFZhbHVlcyA6IHN0b3JlLmdldFN0YXRlKCkudmFsdWVzKTtcbiAgICAgICAgcmV0dXJuIF9qc3goXCJzcGFuXCIsIHsgY2hpbGRyZW46IG5vZGUgIT09IG51bGwgJiYgbm9kZSAhPT0gdm9pZCAwID8gbm9kZSA6IGVtcHR5VGV4dCB9KTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBfanN4KFwic3BhblwiLCB7IGNoaWxkcmVuOiBlbXB0eVRleHQgfSk7XG4gICAgfVxuICAgIGNvbnN0IHJlbmRlcmVkID0gcmVuZGVyQnlWYWx1ZVR5cGUodmFsdWVUeXBlLCB2YWx1ZSwgeyB2YWx1ZUVudW0gfSk7XG4gICAgcmV0dXJuIF9qc3goXCJzcGFuXCIsIHsgY2hpbGRyZW46IHJlbmRlcmVkICE9PSBudWxsICYmIHJlbmRlcmVkICE9PSB2b2lkIDAgPyByZW5kZXJlZCA6IGVtcHR5VGV4dCB9KTtcbn07XG5SZWFkb25seUNoaWxkQmFzZS5kaXNwbGF5TmFtZSA9ICdQcm9Gb3JtSXRlbVJlYWRvbmx5JztcbmNvbnN0IFJlYWRvbmx5Q2hpbGQgPSBtZW1vKFJlYWRvbmx5Q2hpbGRCYXNlKTtcbmNvbnN0IENvbnZlcnRWYWx1ZUNoaWxkQmFzZSA9ICh7IG5hbWUsIGNvbnZlcnRWYWx1ZSwgdmFsdWVQcm9wTmFtZSA9ICd2YWx1ZScsIGNoaWxkcmVuLCB9KSA9PiB7XG4gICAgY29uc3Qgc3RvcmUgPSB1c2VQcm9Gb3JtU3RvcmUoKTtcbiAgICBjb25zdCByYXcgPSB1c2VTdG9yZVNlbGVjdG9yKHN0b3JlLCAoc3RhdGUpID0+IHJlc29sdmVWYWx1ZShzdGF0ZS52YWx1ZXMsIG5hbWUpKTtcbiAgICBjb25zdCBjb252ZXJ0ZWQgPSBjb252ZXJ0VmFsdWUgPyBjb252ZXJ0VmFsdWUocmF3LCBuYW1lKSA6IHJhdztcbiAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7IFt2YWx1ZVByb3BOYW1lXTogY29udmVydGVkIH0pO1xufTtcbkNvbnZlcnRWYWx1ZUNoaWxkQmFzZS5kaXNwbGF5TmFtZSA9ICdQcm9Gb3JtSXRlbUNvbnZlcnRWYWx1ZSc7XG5jb25zdCBDb252ZXJ0VmFsdWVDaGlsZCA9IG1lbW8oQ29udmVydFZhbHVlQ2hpbGRCYXNlKTtcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUHJvRm9ybUl0ZW1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuY29uc3QgUHJvRm9ybUl0ZW1CYXNlID0gKHByb3BzKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIC8vIFN0YWJsZSBzbGljZSBvbmx5IOKAlCB2YWx1ZS9lcnJvciByZWFjdGl2aXR5IGxpdmVzIGluIHVzZUZvcm1JdGVtJ3NcbiAgICAvLyBwZXItZmllbGQgc3Vic2NyaXB0aW9uLCBzbyB0aGlzIHNoZWxsIG5ldmVyIHJlLXJlbmRlcnMgZm9yIHNpYmxpbmdzLlxuICAgIGNvbnN0IGN0eCA9IHVzZVByb0Zvcm1TdGFibGUoKTtcbiAgICAvLyBGb3JtLWxldmVsIGBmb3JtSXRlbVByb3BzYCBhY3QgYXMgREVGQVVMVFM7IHByb3BzIGV4cGxpY2l0bHkgc2V0IG9uIHRoZVxuICAgIC8vIGl0ZW0gd2luLiBKU1ggZnJlcXVlbnRseSBwYXNzZXMgYHVuZGVmaW5lZGAgZm9yIHVuc2V0IHByb3BzIChlLmcuIHRoZVxuICAgIC8vIGNyZWF0ZVByb0Zvcm1GaWVsZCBwYXNzLXRocm91Z2gpLCBzbyBvbmx5IGRlZmluZWQgdmFsdWVzIG1heSBvdmVycmlkZS5cbiAgICBsZXQgbWVyZ2VkUHJvcHMgPSBwcm9wcztcbiAgICBpZiAoY3R4LmZvcm1JdGVtUHJvcHMpIHtcbiAgICAgICAgY29uc3QgbWVyZ2VkID0gT2JqZWN0LmFzc2lnbih7fSwgY3R4LmZvcm1JdGVtUHJvcHMpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhwcm9wcykpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcHJvcHNba2V5XTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIG1lcmdlZFtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgbWVyZ2VkUHJvcHMgPSBtZXJnZWQ7XG4gICAgfVxuICAgIGNvbnN0IHsgY2hpbGRyZW4sIG5hbWUsIGxhYmVsLCBkZXNjcmlwdGlvbiwgcnVsZXMsIHJlcXVpcmVkLCBmZWVkYmFjaywgdmFsaWRhdGVTdGF0dXMsIGNsYXNzTmFtZSA9ICcnLCBwcmVmaXhDbHMgPSAnZm9ybS1pdGVtJywgaGlkZGVuLCB0cmFuc2Zvcm0sIGNvbnZlcnRWYWx1ZSwgdmFsdWVUeXBlLCByZWFkb25seVJlbmRlciwgY29sUHJvcHMsIG1vZGU6IG1vZGVQcm9wLCBlbXB0eVRleHQgPSBFTVBUWV9URVhUX0RFRkFVTFQsIHZhbHVlRW51bSwgdmFsdWVQcm9wTmFtZSwgdmFsaWRhdGVEZWJvdW5jZSwgfSA9IG1lcmdlZFByb3BzO1xuICAgIGNvbnN0IG1lcmdlZE1vZGUgPSBtb2RlUHJvcCAhPT0gbnVsbCAmJiBtb2RlUHJvcCAhPT0gdm9pZCAwID8gbW9kZVByb3AgOiBjdHgubW9kZTtcbiAgICBjb25zdCBpc1JlYWRvbmx5ID0gbWVyZ2VkTW9kZSA9PT0gJ3JlYWQnO1xuICAgIGNvbnN0IHsgZmllbGRFcnJvciwgZmllbGRXYXJuaW5nLCBpc1JlcXVpcmVkLCBzaXplLCBsYWJlbEFsaWduLCByZXF1aXJlZE1hcmssIGluamVjdEZpZWxkLCB9ID0gdXNlRm9ybUl0ZW0oeyBuYW1lLCBydWxlcywgcmVxdWlyZWQsIHZhbGlkYXRlU3RhdHVzLCB2YWx1ZVByb3BOYW1lLCB2YWxpZGF0ZURlYm91bmNlIH0pO1xuICAgIC8vIFJlZ2lzdGVyIHRyYW5zZm9ybSAvIHZhbHVlVHlwZSBEVVJJTkcgcmVuZGVyIChpZGVtcG90ZW50IHJlZiB3cml0ZXMsIGxpa2VcbiAgICAvLyByZWdpc3RlckZpZWxkKTogY29uc3VtZXJzIHJlbmRlcmVkIGxhdGVyIGluIHRoZSBzYW1lIHBhc3Mg4oCUIGUuZy4gYVxuICAgIC8vIERlcGVuZGVuY3kgcmVhZGluZyBmb3JtYXR0ZWQgdmFsdWVzIOKAlCBtdXN0IGFscmVhZHkgc2VlIHRoZW0uIEVmZmVjdHNcbiAgICAvLyB3b3VsZCByZWdpc3RlciB0b28gbGF0ZSAoYWZ0ZXIgdGhlIHdob2xlIHRyZWUgcmVuZGVyZWQpLlxuICAgIC8vXG4gICAgLy8gRWFjaCBpbnN0YW5jZSB0cmFja3MgdGhlIHtuYW1lLCB2YWx1ZX0gUEFJUiBpdCByZWdpc3RlcmVkLiBSZW1vdmFsIGlzXG4gICAgLy8gYWx3YXlzIHBlcmZvcm1lZCB3aXRoIHRoZSBwYWlyJ3Mgb3duIG5hbWUgQU5EIHZhbHVlOiBhbiBpdGVtIHdpdGhvdXQgYVxuICAgIC8vIHRyYW5zZm9ybSBuZXZlciB0b3VjaGVzIGEgc2FtZS1uYW1lIHNpYmxpbmcncyByZWdpc3RyYXRpb24sIGFuIHVubW91bnRcbiAgICAvLyBjbGVhbnVwIGNhbid0IHdpcGUgYSBzdWNjZXNzb3IncyAodmFsdWUtZ3VhcmRlZCksIGFuZCBhIE5BTUUgY2hhbmdlXG4gICAgLy8gcmVtb3ZlcyB0aGUgb2xkIG5hbWUncyBlbnRyeSB3aXRoIHRoZSBPTEQgdmFsdWUgYmVmb3JlIHRoZSByZWYgaXNcbiAgICAvLyBvdmVyd3JpdHRlbiAoYSBsaXZlIHNpbmdsZS12YWx1ZSByZWYgd291bGQgbGVhayBpdCkuXG4gICAgY29uc3Qgb3duVHJhbnNmb3JtUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IG93blZhbHVlVHlwZVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBwcmV2VHJhbnNmb3JtID0gb3duVHJhbnNmb3JtUmVmLmN1cnJlbnQ7XG4gICAgaWYgKHByZXZUcmFuc2Zvcm0gJiYgKHByZXZUcmFuc2Zvcm0ubmFtZSAhPT0gbmFtZSB8fCAhdHJhbnNmb3JtKSkge1xuICAgICAgICBjdHgudW5yZWdpc3RlclRyYW5zZm9ybShwcmV2VHJhbnNmb3JtLm5hbWUsIHByZXZUcmFuc2Zvcm0uZm4pO1xuICAgICAgICBvd25UcmFuc2Zvcm1SZWYuY3VycmVudCA9IG51bGw7XG4gICAgfVxuICAgIGlmIChuYW1lICYmIHRyYW5zZm9ybSkge1xuICAgICAgICBjdHgucmVnaXN0ZXJUcmFuc2Zvcm0obmFtZSwgdHJhbnNmb3JtKTtcbiAgICAgICAgb3duVHJhbnNmb3JtUmVmLmN1cnJlbnQgPSB7IG5hbWUsIGZuOiB0cmFuc2Zvcm0gfTtcbiAgICB9XG4gICAgY29uc3QgcHJldlZhbHVlVHlwZSA9IG93blZhbHVlVHlwZVJlZi5jdXJyZW50O1xuICAgIGlmIChwcmV2VmFsdWVUeXBlICYmIChwcmV2VmFsdWVUeXBlLm5hbWUgIT09IG5hbWUgfHwgIXZhbHVlVHlwZSkpIHtcbiAgICAgICAgY3R4LnVucmVnaXN0ZXJWYWx1ZVR5cGUocHJldlZhbHVlVHlwZS5uYW1lLCBwcmV2VmFsdWVUeXBlLnZhbHVlVHlwZSk7XG4gICAgICAgIG93blZhbHVlVHlwZVJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKG5hbWUgJiYgdmFsdWVUeXBlKSB7XG4gICAgICAgIGN0eC5yZWdpc3RlclZhbHVlVHlwZShuYW1lLCB2YWx1ZVR5cGUpO1xuICAgICAgICBvd25WYWx1ZVR5cGVSZWYuY3VycmVudCA9IHsgbmFtZSwgdmFsdWVUeXBlIH07XG4gICAgfVxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIC8vIFJFLVJFR0lTVEVSIGluIHRoZSBib2R5OiBTdHJpY3RNb2RlJ3MgbW91bnTihpJjbGVhbnVw4oaScmUtcnVuIGN5Y2xlIGFuZFxuICAgICAgICAvLyBrZXllZCByZW1vdW50cyAob2xkIGluc3RhbmNlJ3MgY2xlYW51cCBydW5zIEFGVEVSIHRoZSBuZXcgcmVuZGVyXG4gICAgICAgIC8vIHJlZ2lzdGVyZWQpIGJvdGggZW5kIHdpdGggYSBjbGVhbnVwIGhhdmluZyBkZWxldGVkIHRoZSBlbnRyeSDigJQgdGhlXG4gICAgICAgIC8vIGVmZmVjdCBib2R5IG11c3QgcmVzdG9yZSB0aGUgbGF0ZXN0IHJlZ2lzdHJhdGlvbi5cbiAgICAgICAgY29uc3QgdHJhbnNmb3JtUmVnID0gb3duVHJhbnNmb3JtUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICh0cmFuc2Zvcm1SZWcpXG4gICAgICAgICAgICBjdHgucmVnaXN0ZXJUcmFuc2Zvcm0odHJhbnNmb3JtUmVnLm5hbWUsIHRyYW5zZm9ybVJlZy5mbik7XG4gICAgICAgIGNvbnN0IHZhbHVlVHlwZVJlZyA9IG93blZhbHVlVHlwZVJlZi5jdXJyZW50O1xuICAgICAgICBpZiAodmFsdWVUeXBlUmVnKVxuICAgICAgICAgICAgY3R4LnJlZ2lzdGVyVmFsdWVUeXBlKHZhbHVlVHlwZVJlZy5uYW1lLCB2YWx1ZVR5cGVSZWcudmFsdWVUeXBlKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHQgPSBvd25UcmFuc2Zvcm1SZWYuY3VycmVudDtcbiAgICAgICAgICAgIGlmICh0KVxuICAgICAgICAgICAgICAgIGN0eC51bnJlZ2lzdGVyVHJhbnNmb3JtKHQubmFtZSwgdC5mbik7XG4gICAgICAgICAgICBjb25zdCB2ID0gb3duVmFsdWVUeXBlUmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICBpZiAodilcbiAgICAgICAgICAgICAgICBjdHgudW5yZWdpc3RlclZhbHVlVHlwZSh2Lm5hbWUsIHYudmFsdWVUeXBlKTtcbiAgICAgICAgfTtcbiAgICB9LCBbbmFtZSwgY3R4LnJlZ2lzdGVyVHJhbnNmb3JtLCBjdHgudW5yZWdpc3RlclRyYW5zZm9ybSwgY3R4LnJlZ2lzdGVyVmFsdWVUeXBlLCBjdHgudW5yZWdpc3RlclZhbHVlVHlwZV0pO1xuICAgIGlmIChoaWRkZW4pXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIGxldCBjb250cm9sQ2hpbGQ7XG4gICAgaWYgKGlzUmVhZG9ubHkpIHtcbiAgICAgICAgY29udHJvbENoaWxkID0gKF9qc3goUmVhZG9ubHlDaGlsZCwgeyBuYW1lOiBuYW1lLCB2YWx1ZVR5cGU6IHZhbHVlVHlwZSwgdmFsdWVFbnVtOiB2YWx1ZUVudW0sIGNvbnZlcnRWYWx1ZTogY29udmVydFZhbHVlLCByZWFkb25seVJlbmRlcjogcmVhZG9ubHlSZW5kZXIsIGVtcHR5VGV4dDogZW1wdHlUZXh0IH0pKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIEluamVjdCBmaXJzdCBzbyB0aGUgcmVhbCBmaWVsZCByZWNlaXZlcyB2YWx1ZS9vbkNoYW5nZS9vbkJsdXIsXG4gICAgICAgIC8vIHRoZW4gb3B0aW9uYWxseSB3cmFwIGluIENvbnZlcnRWYWx1ZUNoaWxkIHRvIG92ZXJyaWRlIHRoZSBkaXNwbGF5ZWQgdmFsdWUuXG4gICAgICAgIGNvbnN0IGluamVjdGVkID0gaW5qZWN0RmllbGQoY2hpbGRyZW4pO1xuICAgICAgICBpZiAoY29udmVydFZhbHVlICYmIG5hbWUgJiYgUmVhY3QuaXNWYWxpZEVsZW1lbnQoaW5qZWN0ZWQpKSB7XG4gICAgICAgICAgICBjb250cm9sQ2hpbGQgPSAoX2pzeChDb252ZXJ0VmFsdWVDaGlsZCwgeyBuYW1lOiBuYW1lLCBjb252ZXJ0VmFsdWU6IGNvbnZlcnRWYWx1ZSwgdmFsdWVQcm9wTmFtZTogdmFsdWVQcm9wTmFtZSwgY2hpbGRyZW46IGluamVjdGVkIH0pKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRyb2xDaGlsZCA9IGluamVjdGVkO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgLy8gRm9ybS1sZXZlbCBsYXlvdXQuaXRlbUdhcCBvdmVycmlkZXMgdGhlIHNpemUtY2xhc3MgbWFyZ2luIChpbmxpbmUgc3R5bGVcbiAgICAvLyB3aW5zKTsgaXRlbUdhcD0wIGlzIG1lYW5pbmdmdWwuXG4gICAgY29uc3QgaXRlbUdhcCA9IChfYSA9IGN0eC5sYXlvdXQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5pdGVtR2FwO1xuICAgIGNvbnN0IGdhcFN0eWxlID0gaXRlbUdhcCAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8geyBtYXJnaW5Cb3R0b206IHR5cGVvZiBpdGVtR2FwID09PSAnbnVtYmVyJyA/IGAke2l0ZW1HYXB9cHhgIDogaXRlbUdhcCB9XG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHNoZWxsID0gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKHVuZGVmaW5lZCwgam9pbkNscyhjbGFzc2VzKHNpemUpLCBjbGFzc05hbWUpKSwgc3R5bGU6IGdhcFN0eWxlLCBjaGlsZHJlbjogW2xhYmVsICYmIChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwtd3JhcHBlcicsIGpvaW5DbHMoY2xhc3NlcygnbGFiZWwtd3JhcHBlci12ZXJ0aWNhbCcpLCBsYWJlbEFsaWduICYmIGNsYXNzZXMoYGxhYmVsLXdyYXBwZXItJHtsYWJlbEFsaWdufWApKSksIGNoaWxkcmVuOiBbX2pzeChUeXBvZ3JhcGh5TGFiZWwsIHsgYXM6IFwibGFiZWxcIiwgc2l6ZTogRk9STV9MQUJFTF9TSVpFU1tzaXplXSwgY29sb3I6IEZPUk1fTEFCRUxfQ09MT1IsIGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwnKSwgY2hpbGRyZW46IGxhYmVsIH0pLCBkZXNjcmlwdGlvbiAmJiAoX2pzeChUeXBvZ3JhcGh5Qm9keSwgeyBhczogXCJkaXZcIiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdkZXNjcmlwdGlvbicpLCBzaXplOiBGT1JNX0RFU0NSSVBUSU9OX1NJWkUsIGNvbG9yOiBGT1JNX0RFU0NSSVBUSU9OX0NPTE9SLCBjaGlsZHJlbjogZGVzY3JpcHRpb24gfSkpXSB9KSksIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdjb250cm9sJyksIGNoaWxkcmVuOiBbY29udHJvbENoaWxkLCBmaWVsZEVycm9yICYmIChfanN4KFR5cG9ncmFwaHlCb2R5LCB7IGFzOiBcImRpdlwiLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2Vycm9yJyksIHNpemU6IEZPUk1fRVJST1JfU0laRSwgY29sb3I6IEZPUk1fRVJST1JfQ09MT1IsIGNoaWxkcmVuOiBmaWVsZEVycm9yIH0pKSwgIWZpZWxkRXJyb3IgJiYgZmllbGRXYXJuaW5nICYmIChfanN4KFR5cG9ncmFwaHlCb2R5LCB7IGFzOiBcImRpdlwiLCBjbGFzc05hbWU6IGNsYXNzZXMoJ3dhcm5pbmcnKSwgc2l6ZTogRk9STV9XQVJOSU5HX1NJWkUsIGNvbG9yOiBGT1JNX1dBUk5JTkdfQ09MT1IsIGNoaWxkcmVuOiBmaWVsZFdhcm5pbmcgfSkpLCAhZmllbGRFcnJvciAmJiAhZmllbGRXYXJuaW5nICYmIGZlZWRiYWNrICYmIChfanN4KFR5cG9ncmFwaHlCb2R5LCB7IGFzOiBcImRpdlwiLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2ZlZWRiYWNrJyksIHNpemU6IEZPUk1fRkVFREJBQ0tfU0laRSwgY29sb3I6IEZPUk1fRkVFREJBQ0tfQ09MT1IsIGNoaWxkcmVuOiBmZWVkYmFjayB9KSldIH0pXSB9KSk7XG4gICAgaWYgKGN0eC5ncmlkKSB7XG4gICAgICAgIGNvbnN0IG1lcmdlZCA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgY3R4LmNvbFByb3BzKSwgY29sUHJvcHMpO1xuICAgICAgICBjb25zdCB7IHNwYW4gPSBERUZBVUxUX0NPTF9TUEFOLCBzbSwgbWQsIGxnIH0gPSBtZXJnZWQ7XG4gICAgICAgIHJldHVybiBfanN4KENvbCwgeyBzcGFuOiBzcGFuLCBzbTogc20sIG1kOiBtZCwgbGc6IGxnLCBjaGlsZHJlbjogc2hlbGwgfSk7XG4gICAgfVxuICAgIHJldHVybiBzaGVsbDtcbn07XG5Qcm9Gb3JtSXRlbUJhc2UuZGlzcGxheU5hbWUgPSAnUHJvRm9ybUl0ZW0nO1xuZXhwb3J0IGNvbnN0IFByb0Zvcm1JdGVtID0gbWVtbyhQcm9Gb3JtSXRlbUJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgUHJvRm9ybUl0ZW07IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|