nsc-react-component 1.3.13 → 1.3.14
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/lib/form/Form.d.ts +2 -2
- package/lib/form/Form.js +50 -16
- package/package.json +1 -1
package/lib/form/Form.d.ts
CHANGED
|
@@ -32,8 +32,8 @@ declare class NscForm extends PureComponent<IFormProps> {
|
|
|
32
32
|
submit(): void;
|
|
33
33
|
onSubmit(url?: string, options?: any, callback?: (res?: any) => void, msg?: boolean): void;
|
|
34
34
|
validateFields(name: any): Promise<any>;
|
|
35
|
-
hideForm(): void;
|
|
36
|
-
showForm(value?: any): void;
|
|
35
|
+
hideForm(resetValue?: boolean): void;
|
|
36
|
+
showForm(value?: any, resetValue?: boolean): void;
|
|
37
37
|
cloneElement(item: any, index?: number): string | React.DetailedReactHTMLElement<{
|
|
38
38
|
key: number;
|
|
39
39
|
children: any;
|
package/lib/form/Form.js
CHANGED
|
@@ -81,75 +81,101 @@ var NscForm = /*#__PURE__*/function (_PureComponent) {
|
|
|
81
81
|
key: "getFieldError",
|
|
82
82
|
value: //获取对应字段名的错误信息
|
|
83
83
|
function getFieldError(name) {
|
|
84
|
-
|
|
84
|
+
var _this$formRef$current;
|
|
85
|
+
|
|
86
|
+
return (_this$formRef$current = this.formRef.current) === null || _this$formRef$current === void 0 ? void 0 : _this$formRef$current.getFieldError(name);
|
|
85
87
|
} //获取对应字段实例
|
|
86
88
|
|
|
87
89
|
}, {
|
|
88
90
|
key: "getFieldInstance",
|
|
89
91
|
value: function getFieldInstance(name) {
|
|
90
|
-
|
|
92
|
+
var _this$formRef$current2;
|
|
93
|
+
|
|
94
|
+
return (_this$formRef$current2 = this.formRef.current) === null || _this$formRef$current2 === void 0 ? void 0 : _this$formRef$current2.getFieldInstance(name);
|
|
91
95
|
} //获取一组字段名对应的错误信息,返回为数组形式
|
|
92
96
|
|
|
93
97
|
}, {
|
|
94
98
|
key: "getFieldsError",
|
|
95
99
|
value: function getFieldsError() {
|
|
96
|
-
|
|
100
|
+
var _this$formRef$current3;
|
|
101
|
+
|
|
102
|
+
return (_this$formRef$current3 = this.formRef.current) === null || _this$formRef$current3 === void 0 ? void 0 : _this$formRef$current3.getFieldsError();
|
|
97
103
|
} //获取一组字段名对应的值,会按照对应结构返回
|
|
98
104
|
|
|
99
105
|
}, {
|
|
100
106
|
key: "getFieldsValue",
|
|
101
107
|
value: function getFieldsValue() {
|
|
102
|
-
|
|
108
|
+
var _this$formRef$current4;
|
|
109
|
+
|
|
110
|
+
return (_this$formRef$current4 = this.formRef.current) === null || _this$formRef$current4 === void 0 ? void 0 : _this$formRef$current4.getFieldsValue();
|
|
103
111
|
} //获取对应字段名的值
|
|
104
112
|
|
|
105
113
|
}, {
|
|
106
114
|
key: "getFieldValue",
|
|
107
115
|
value: function getFieldValue(name) {
|
|
108
|
-
|
|
116
|
+
var _this$formRef$current5;
|
|
117
|
+
|
|
118
|
+
return (_this$formRef$current5 = this.formRef.current) === null || _this$formRef$current5 === void 0 ? void 0 : _this$formRef$current5.getFieldValue(name);
|
|
109
119
|
} //检查一组字段是否被用户操作过
|
|
110
120
|
|
|
111
121
|
}, {
|
|
112
122
|
key: "isFieldsTouched",
|
|
113
123
|
value: function isFieldsTouched() {
|
|
114
|
-
|
|
124
|
+
var _this$formRef$current6;
|
|
125
|
+
|
|
126
|
+
return (_this$formRef$current6 = this.formRef.current) === null || _this$formRef$current6 === void 0 ? void 0 : _this$formRef$current6.isFieldsTouched();
|
|
115
127
|
} //检查对应字段是否被用户操作过
|
|
116
128
|
|
|
117
129
|
}, {
|
|
118
130
|
key: "isFieldTouched",
|
|
119
131
|
value: function isFieldTouched(name) {
|
|
120
|
-
|
|
132
|
+
var _this$formRef$current7;
|
|
133
|
+
|
|
134
|
+
return (_this$formRef$current7 = this.formRef.current) === null || _this$formRef$current7 === void 0 ? void 0 : _this$formRef$current7.isFieldTouched(name);
|
|
121
135
|
} //检查一组字段是否正在校验
|
|
122
136
|
|
|
123
137
|
}, {
|
|
124
138
|
key: "isFieldValidating",
|
|
125
139
|
value: function isFieldValidating(name) {
|
|
126
|
-
|
|
140
|
+
var _this$formRef$current8;
|
|
141
|
+
|
|
142
|
+
return (_this$formRef$current8 = this.formRef.current) === null || _this$formRef$current8 === void 0 ? void 0 : _this$formRef$current8.isFieldValidating(name);
|
|
127
143
|
} //重置一组字段到
|
|
128
144
|
|
|
129
145
|
}, {
|
|
130
146
|
key: "resetFields",
|
|
131
147
|
value: function resetFields() {
|
|
132
|
-
|
|
148
|
+
var _this$formRef$current9;
|
|
149
|
+
|
|
150
|
+
(_this$formRef$current9 = this.formRef.current) === null || _this$formRef$current9 === void 0 ? void 0 : _this$formRef$current9.resetFields();
|
|
133
151
|
}
|
|
134
152
|
}, {
|
|
135
153
|
key: "scrollToField",
|
|
136
154
|
value: function scrollToField(name, options) {
|
|
137
|
-
|
|
155
|
+
var _this$formRef$current10;
|
|
156
|
+
|
|
157
|
+
(_this$formRef$current10 = this.formRef.current) === null || _this$formRef$current10 === void 0 ? void 0 : _this$formRef$current10.scrollToField(name, options);
|
|
138
158
|
}
|
|
139
159
|
}, {
|
|
140
160
|
key: "setFields",
|
|
141
161
|
value: function setFields(filds) {
|
|
142
|
-
|
|
162
|
+
var _this$formRef$current11;
|
|
163
|
+
|
|
164
|
+
(_this$formRef$current11 = this.formRef.current) === null || _this$formRef$current11 === void 0 ? void 0 : _this$formRef$current11.setFields(filds);
|
|
143
165
|
}
|
|
144
166
|
}, {
|
|
145
167
|
key: "setFieldsValue",
|
|
146
168
|
value: function setFieldsValue(values) {
|
|
147
|
-
|
|
169
|
+
var _this$formRef$current12;
|
|
170
|
+
|
|
171
|
+
(_this$formRef$current12 = this.formRef.current) === null || _this$formRef$current12 === void 0 ? void 0 : _this$formRef$current12.setFieldsValue(values);
|
|
148
172
|
}
|
|
149
173
|
}, {
|
|
150
174
|
key: "submit",
|
|
151
175
|
value: function submit() {
|
|
152
|
-
|
|
176
|
+
var _this$formRef$current13;
|
|
177
|
+
|
|
178
|
+
(_this$formRef$current13 = this.formRef.current) === null || _this$formRef$current13 === void 0 ? void 0 : _this$formRef$current13.submit();
|
|
153
179
|
}
|
|
154
180
|
}, {
|
|
155
181
|
key: "onSubmit",
|
|
@@ -227,12 +253,15 @@ var NscForm = /*#__PURE__*/function (_PureComponent) {
|
|
|
227
253
|
value: function hideForm() {
|
|
228
254
|
var _this3 = this;
|
|
229
255
|
|
|
256
|
+
var resetValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
230
257
|
this.setState({
|
|
231
258
|
formVisible: false
|
|
232
259
|
}, function () {
|
|
233
|
-
|
|
260
|
+
if (resetValue) {
|
|
261
|
+
var _this3$formRef$curren;
|
|
234
262
|
|
|
235
|
-
|
|
263
|
+
(_this3$formRef$curren = _this3.formRef.current) === null || _this3$formRef$curren === void 0 ? void 0 : _this3$formRef$curren.resetFields();
|
|
264
|
+
}
|
|
236
265
|
});
|
|
237
266
|
}
|
|
238
267
|
}, {
|
|
@@ -240,6 +269,7 @@ var NscForm = /*#__PURE__*/function (_PureComponent) {
|
|
|
240
269
|
value: function showForm(value) {
|
|
241
270
|
var _this4 = this;
|
|
242
271
|
|
|
272
|
+
var resetValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
243
273
|
this.setState({
|
|
244
274
|
formVisible: true
|
|
245
275
|
}, function () {
|
|
@@ -247,6 +277,10 @@ var NscForm = /*#__PURE__*/function (_PureComponent) {
|
|
|
247
277
|
var _this4$formRef$curren;
|
|
248
278
|
|
|
249
279
|
(_this4$formRef$curren = _this4.formRef.current) === null || _this4$formRef$curren === void 0 ? void 0 : _this4$formRef$curren.setFieldsValue(value);
|
|
280
|
+
} else {
|
|
281
|
+
var _this4$formRef$curren2;
|
|
282
|
+
|
|
283
|
+
if (resetValue) (_this4$formRef$curren2 = _this4.formRef.current) === null || _this4$formRef$curren2 === void 0 ? void 0 : _this4$formRef$curren2.resetFields();
|
|
250
284
|
}
|
|
251
285
|
});
|
|
252
286
|
}
|
|
@@ -380,4 +414,4 @@ var NscForm = /*#__PURE__*/function (_PureComponent) {
|
|
|
380
414
|
}(PureComponent);
|
|
381
415
|
|
|
382
416
|
export default NscForm;
|
|
383
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL2Zvcm0vRm9ybS50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwicmVxdWVzdCIsIm9taXQiLCJOc2NGb3JtIiwicHJvcHMiLCJjcmVhdGVSZWYiLCJmb3JtVmlzaWJsZSIsImZvcm1Nb2RhbFByb3BzIiwiZm9ybURyYXdlclByb3BzIiwibmFtZSIsImZvcm1SZWYiLCJjdXJyZW50IiwiZ2V0RmllbGRFcnJvciIsImdldEZpZWxkSW5zdGFuY2UiLCJnZXRGaWVsZHNFcnJvciIsImdldEZpZWxkc1ZhbHVlIiwiZ2V0RmllbGRWYWx1ZSIsImlzRmllbGRzVG91Y2hlZCIsImlzRmllbGRUb3VjaGVkIiwiaXNGaWVsZFZhbGlkYXRpbmciLCJyZXNldEZpZWxkcyIsIm9wdGlvbnMiLCJzY3JvbGxUb0ZpZWxkIiwiZmlsZHMiLCJzZXRGaWVsZHMiLCJ2YWx1ZXMiLCJzZXRGaWVsZHNWYWx1ZSIsInN1Ym1pdCIsInVybCIsImNhbGxiYWNrIiwibXNnIiwicHJvcHNVcmwiLCJlbmNyeXB0RmllbGRzIiwiZW5jcnlwdFByb3BwcyIsIkVycm9yIiwibWV0aG9kIiwicmVxdWVzdFVybCIsInJlcXVlc3REYXRhIiwicmVxdWVzdEVuY3J5cHQiLCJyZXF1ZXN0UGFyYW0iLCJkYXRhIiwicGFyYW1zIiwidG9Mb3dlckNhc2UiLCJ0aGVuIiwicmVzIiwiY29kZSIsInN1Y2Nlc3MiLCJlcnJvciIsImNhdGNoIiwiY29uc29sZSIsImxvZyIsInZhbGlkYXRlRmllbGRzIiwic2V0U3RhdGUiLCJ2YWx1ZSIsIml0ZW0iLCJpbmRleCIsIl90aGlzIiwia2V5IiwiY2hpbGRyZW4iLCJBcnJheSIsImlzQXJyYXkiLCJDaGlsZHJlbiIsIm1hcCIsImNoaWxkIiwiY2xvbmVFbGVtZW50IiwiZSIsIm5ld0NoaWxkcmVuIiwic2hvd01vZGVsIiwiZHJhd2VyUHJvcHMiLCJtb2RhbFByb3BzIiwic3RhdGUiLCJsYXlvdXQiLCJsYWJlbENvbCIsInNwYW4iLCJ3cmFwcGVyQ29sIiwibmV3TW9kYWxQcm9wcyIsImNlbnRlcmVkIiwiaGlkZUZvcm0iLCJiaW5kIiwibmV3RHJhd2VyUHJvcHMiLCJyZW5kZXJQYW5lbCIsIm5leHRQcm9wcyIsInByZXZTdGF0ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJuZXdTdGF0ZSIsInZpc2libGUiLCJ1bmRlZmluZWQiLCJmb3JtVmlzaWJhbGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU9BLEtBQVAsSUFBZ0JDLGFBQWhCLFFBQXFDLE9BQXJDO0FBV0EsU0FBU0MsT0FBVCxRQUF3Qix1QkFBeEI7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLFNBQWpCOztJQVVNQyxPOzs7OztBQVFKLG1CQUFZQyxLQUFaLEVBQW1CO0FBQUE7O0FBQUE7O0FBQ2pCLCtCQUFNQSxLQUFOOztBQURpQiw0RUFQVEwsS0FBSyxDQUFDTSxTQUFOLEVBT1M7O0FBQUEsNkRBTlg7QUFDTkMsTUFBQUEsV0FBVyxFQUFFLEtBRFA7QUFFTkMsTUFBQUEsY0FBYyxFQUFFLEVBRlY7QUFHTkMsTUFBQUEsZUFBZSxFQUFFO0FBSFgsS0FNVzs7QUFBQTtBQUVsQjs7OztXQWlDRDtBQUNBLDJCQUFjQyxJQUFkLEVBQW9CO0FBQ2xCLGFBQU8sS0FBS0MsT0FBTCxDQUFhQyxPQUFiLENBQXFCQyxhQUFyQixDQUFtQ0gsSUFBbkMsQ0FBUDtBQUNELEssQ0FFRDs7OztXQUNBLDBCQUFpQkEsSUFBakIsRUFBdUI7QUFDckIsYUFBTyxLQUFLQyxPQUFMLENBQWFDLE9BQWIsQ0FBcUJFLGdCQUFyQixDQUFzQ0osSUFBdEMsQ0FBUDtBQUNELEssQ0FFRDs7OztXQUNBLDBCQUFpQjtBQUNmLGFBQU8sS0FBS0MsT0FBTCxDQUFhQyxPQUFiLENBQXFCRyxjQUFyQixFQUFQO0FBQ0QsSyxDQUVEOzs7O1dBQ0EsMEJBQWlCO0FBQ2YsYUFBTyxLQUFLSixPQUFMLENBQWFDLE9BQWIsQ0FBcUJJLGNBQXJCLEVBQVA7QUFDRCxLLENBRUQ7Ozs7V0FDQSx1QkFBY04sSUFBZCxFQUFvQjtBQUNsQixhQUFPLEtBQUtDLE9BQUwsQ0FBYUMsT0FBYixDQUFxQkssYUFBckIsQ0FBbUNQLElBQW5DLENBQVA7QUFDRCxLLENBRUQ7Ozs7V0FDQSwyQkFBa0I7QUFDaEIsYUFBTyxLQUFLQyxPQUFMLENBQWFDLE9BQWIsQ0FBcUJNLGVBQXJCLEVBQVA7QUFDRCxLLENBRUQ7Ozs7V0FDQSx3QkFBZVIsSUFBZixFQUFxQjtBQUNuQixhQUFPLEtBQUtDLE9BQUwsQ0FBYUMsT0FBYixDQUFxQk8sY0FBckIsQ0FBb0NULElBQXBDLENBQVA7QUFDRCxLLENBRUQ7Ozs7V0FDQSwyQkFBa0JBLElBQWxCLEVBQXdCO0FBQ3RCLGFBQU8sS0FBS0MsT0FBTCxDQUFhQyxPQUFiLENBQXFCUSxpQkFBckIsQ0FBdUNWLElBQXZDLENBQVA7QUFDRCxLLENBRUQ7Ozs7V0FDQSx1QkFBYztBQUNaLFdBQUtDLE9BQUwsQ0FBYUMsT0FBYixDQUFxQlMsV0FBckI7QUFDRDs7O1dBRUQsdUJBQWNYLElBQWQsRUFBb0JZLE9BQXBCLEVBQTZCO0FBQzNCLFdBQUtYLE9BQUwsQ0FBYUMsT0FBYixDQUFxQlcsYUFBckIsQ0FBbUNiLElBQW5DLEVBQXlDWSxPQUF6QztBQUNEOzs7V0FFRCxtQkFBVUUsS0FBVixFQUFpQjtBQUNmLFdBQUtiLE9BQUwsQ0FBYUMsT0FBYixDQUFxQmEsU0FBckIsQ0FBK0JELEtBQS9CO0FBQ0Q7OztXQUVELHdCQUFlRSxNQUFmLEVBQXVCO0FBQ3JCLFdBQUtmLE9BQUwsQ0FBYUMsT0FBYixDQUFxQmUsY0FBckIsQ0FBb0NELE1BQXBDO0FBQ0Q7OztXQUVELGtCQUFTO0FBQ1AsV0FBS2YsT0FBTCxDQUFhQyxPQUFiLENBQXFCZ0IsTUFBckI7QUFDRDs7O1dBRUQsa0JBQ0VDLEdBREYsRUFFRVAsT0FGRixFQUdFUSxRQUhGLEVBSUVDLEdBSkYsRUFLRTtBQUNBLHdCQUE2RCxLQUFLMUIsS0FBbEU7QUFBQSxVQUFhMkIsUUFBYixlQUFRSCxHQUFSO0FBQUEsOENBQXVCSSxhQUF2QjtBQUFBLFVBQXNDQyxhQUF0QyxzQ0FBc0QsRUFBdEQ7O0FBQ0EsVUFBSSxDQUFDTCxHQUFELElBQVEsQ0FBQ0csUUFBYixFQUF1QjtBQUNyQixjQUFNLElBQUlHLEtBQUosQ0FBVSxXQUFWLENBQU47QUFDRDs7QUFDRCw0QkFBNEJiLE9BQTVCLENBQVFjLE1BQVI7QUFBQSxVQUFRQSxNQUFSLGdDQUFpQixNQUFqQjtBQUNBLFVBQUlDLFVBQVUsR0FBR1IsR0FBRyxHQUFHQSxHQUFILEdBQVNHLFFBQTdCO0FBQ0EsVUFBSU0sV0FBVyxHQUFHLEtBQUszQixPQUFMLENBQWFDLE9BQWIsQ0FBcUJJLGNBQXJCLEVBQWxCO0FBQ0EsVUFBSXVCLGNBQWMsR0FBR0wsYUFBckI7QUFDQSxVQUFJTSxZQUFZLEdBQUc7QUFBRUosUUFBQUEsTUFBTSxFQUFFQSxNQUFWO0FBQWtCSyxRQUFBQSxJQUFJLEVBQUVIO0FBQXhCLE9BQW5COztBQUNBLFVBQUloQixPQUFKLEVBQWE7QUFDWCxZQUFRbUIsSUFBUixHQUEyQ25CLE9BQTNDLENBQVFtQixJQUFSO0FBQUEsWUFBY1IsYUFBZCxHQUEyQ1gsT0FBM0MsQ0FBY1csYUFBZDtBQUFBLFlBQWdDUyxNQUFoQyw0QkFBMkNwQixPQUEzQzs7QUFDQWtCLFFBQUFBLFlBQVksbUNBQVFBLFlBQVIsR0FBeUJFLE1BQXpCLENBQVo7O0FBQ0EsWUFBSUQsSUFBSixFQUFVO0FBQ1IsaUJBQU9ELFlBQVksQ0FBQ0MsSUFBcEI7O0FBQ0EsY0FBSUwsTUFBTSxDQUFDTyxXQUFQLE1BQXdCLEtBQTVCLEVBQW1DO0FBQ2pDSCxZQUFBQSxZQUFZLGlEQUFRQSxZQUFSLEdBQXlCRSxNQUF6QjtBQUFpQ0EsY0FBQUEsTUFBTSxFQUFFRDtBQUF6QyxjQUFaO0FBQ0QsV0FGRCxNQUVPO0FBQ0xELFlBQUFBLFlBQVksaURBQVFBLFlBQVIsR0FBeUJFLE1BQXpCO0FBQWlDRCxjQUFBQSxJQUFJLEVBQUVBO0FBQXZDLGNBQVo7QUFDRDtBQUNGOztBQUNELFlBQUlSLGFBQUosRUFBbUI7QUFDakJNLFVBQUFBLGNBQWMsR0FBR04sYUFBakI7QUFDRDtBQUNGOztBQUVEL0IsTUFBQUEsT0FBTyxDQUFDbUMsVUFBRCxrQ0FDRkcsWUFERTtBQUVMUCxRQUFBQSxhQUFhLEVBQUVNO0FBRlYsU0FBUCxDQUlHSyxJQUpILENBSVEsVUFBVUMsR0FBVixFQUFvQjtBQUN4QixZQUFRQyxJQUFSLEdBQWlCRCxHQUFqQixDQUFRQyxJQUFSOztBQUNBLFlBQUlmLEdBQUosRUFBUztBQUNQLGNBQUllLElBQUksS0FBSyxHQUFiLEVBQWtCO0FBQ2hCLHFCQUFRQyxPQUFSLENBQWdCLE1BQWhCO0FBQ0QsV0FGRCxNQUVPO0FBQ0wscUJBQVFDLEtBQVIsQ0FBYyxNQUFkO0FBQ0Q7QUFDRjs7QUFDRGxCLFFBQUFBLFFBQVEsSUFBSUEsUUFBUSxDQUFDZSxHQUFELENBQXBCO0FBQ0QsT0FkSCxFQWVHSSxLQWZILENBZVMsVUFBVUQsS0FBVixFQUFzQjtBQUMzQkUsUUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVksT0FBWixFQUFxQkgsS0FBckI7QUFDRCxPQWpCSDtBQWtCRDs7O1dBRUQsd0JBQWV0QyxJQUFmLEVBQXFCO0FBQ25CLGFBQU8sS0FBS0MsT0FBTCxDQUFhQyxPQUFiLENBQXFCd0MsY0FBckIsQ0FBb0MxQyxJQUFwQyxDQUFQO0FBQ0Q7OztXQUVELG9CQUFXO0FBQUE7O0FBQ1QsV0FBSzJDLFFBQUwsQ0FDRTtBQUNFOUMsUUFBQUEsV0FBVyxFQUFFO0FBRGYsT0FERixFQUlFLFlBQU07QUFBQTs7QUFDSixpQ0FBQSxNQUFJLENBQUNJLE9BQUwsQ0FBYUMsT0FBYixnRkFBc0JTLFdBQXRCO0FBQ0QsT0FOSDtBQVFEOzs7V0FFRCxrQkFBU2lDLEtBQVQsRUFBc0I7QUFBQTs7QUFDcEIsV0FBS0QsUUFBTCxDQUNFO0FBQ0U5QyxRQUFBQSxXQUFXLEVBQUU7QUFEZixPQURGLEVBSUUsWUFBTTtBQUNKLFlBQUkrQyxLQUFKLEVBQVc7QUFBQTs7QUFDVCxtQ0FBQSxNQUFJLENBQUMzQyxPQUFMLENBQWFDLE9BQWIsZ0ZBQXNCZSxjQUF0QixDQUFxQzJCLEtBQXJDO0FBQ0Q7QUFDRixPQVJIO0FBVUQ7OztXQUVELHNCQUFhQyxJQUFiLEVBQThCO0FBQUEsVUFBWEMsS0FBVyx1RUFBSCxDQUFHOztBQUM1QixVQUFJQyxLQUFLLEdBQUcsSUFBWjs7QUFDQSxVQUFJLE9BQU9GLElBQVAsSUFBZSxRQUFuQixFQUE2QixPQUFPQSxJQUFQO0FBQzdCLFVBQUlsRCxLQUFLLEdBQUcsRUFBWjtBQUNBQSxNQUFBQSxLQUFLLENBQUNxRCxHQUFOLEdBQVlGLEtBQVo7O0FBQ0EsVUFBSTtBQUNGLFlBQUlELElBQUksQ0FBQ2xELEtBQUwsSUFBY2tELElBQUksQ0FBQ2xELEtBQUwsQ0FBV3NELFFBQTdCLEVBQXVDO0FBQ3JDLGNBQUlDLEtBQUssQ0FBQ0MsT0FBTixDQUFjTixJQUFJLENBQUNsRCxLQUFMLENBQVdzRCxRQUF6QixDQUFKLEVBQXdDO0FBQ3RDdEQsWUFBQUEsS0FBSyxDQUFDc0QsUUFBTixHQUFpQjNELEtBQUssQ0FBQzhELFFBQU4sQ0FBZUMsR0FBZixDQUNmUixJQUFJLENBQUNsRCxLQUFMLENBQVdzRCxRQURJLEVBRWYsVUFBVUssS0FBVixFQUFpQlIsS0FBakIsRUFBd0I7QUFDdEIscUJBQU9DLEtBQUssQ0FBQ1EsWUFBTixDQUFtQkQsS0FBbkIsRUFBMEJSLEtBQTFCLENBQVA7QUFDRCxhQUpjLENBQWpCO0FBTUQsV0FQRCxNQU9PO0FBQ0xuRCxZQUFBQSxLQUFLLENBQUNzRCxRQUFOLEdBQWlCLEtBQUtNLFlBQUwsQ0FBa0JWLElBQUksQ0FBQ2xELEtBQUwsQ0FBV3NELFFBQTdCLEVBQXVDLENBQXZDLENBQWpCO0FBQ0Q7QUFDRjs7QUFDRCw0QkFBTzNELEtBQUssQ0FBQ2lFLFlBQU4sQ0FBbUJWLElBQW5CLEVBQXlCbEQsS0FBekIsQ0FBUDtBQUNELE9BZEQsQ0FjRSxPQUFPNkQsQ0FBUCxFQUFVO0FBQ1YsZUFBTyxJQUFQO0FBQ0Q7QUFDRjs7O1dBQ0QscUJBQVlDLFdBQVosRUFBeUI5RCxLQUF6QixFQUFnQztBQUM5Qix5QkFBK0MsS0FBS0EsS0FBcEQ7QUFBQSxVQUFRK0QsU0FBUixnQkFBUUEsU0FBUjtBQUFBLFVBQW1CQyxXQUFuQixnQkFBbUJBLFdBQW5CO0FBQUEsVUFBZ0NDLFVBQWhDLGdCQUFnQ0EsVUFBaEM7QUFDQSxVQUFRL0QsV0FBUixHQUF3QixLQUFLZ0UsS0FBN0IsQ0FBUWhFLFdBQVI7QUFDQSxVQUFNaUUsTUFBTSxHQUFHO0FBQ2JDLFFBQUFBLFFBQVEsRUFBRTtBQUFFQyxVQUFBQSxJQUFJLEVBQUU7QUFBUixTQURHO0FBRWJDLFFBQUFBLFVBQVUsRUFBRTtBQUFFRCxVQUFBQSxJQUFJLEVBQUU7QUFBUjtBQUZDLE9BQWY7O0FBSUEsVUFBSU4sU0FBUyxJQUFJQSxTQUFTLElBQUksT0FBOUIsRUFBdUM7QUFDckMsWUFBSVEsYUFBYSxHQUFHekUsSUFBSSxDQUFDbUUsVUFBRCxFQUFhLENBQUMsU0FBRCxDQUFiLENBQXhCO0FBQ0FNLFFBQUFBLGFBQWE7QUFBS0MsVUFBQUEsUUFBUSxFQUFFO0FBQWYsV0FBd0JELGFBQXhCLENBQWI7QUFDQSw0QkFDRTtBQUNFLFVBQUEsUUFBUSxFQUFFLEtBQUtFLFFBQUwsQ0FBY0MsSUFBZCxDQUFtQixJQUFuQjtBQURaLFdBRU1ILGFBRk47QUFHRSxVQUFBLE9BQU8sRUFBRXJFO0FBSFgseUJBS0U7QUFBTSxVQUFBLEdBQUcsRUFBRSxLQUFLSTtBQUFoQixXQUE2QjZELE1BQTdCLEVBQXlDbkUsS0FBekM7QUFBZ0QsVUFBQSxRQUFRLEVBQUU7QUFBMUQsWUFDRzhELFdBREgsQ0FMRixDQURGO0FBV0QsT0FkRCxNQWNPLElBQUlDLFNBQVMsSUFBSUEsU0FBUyxJQUFJLFFBQTlCLEVBQXdDO0FBQzdDLFlBQUlZLGNBQWMsR0FBRzdFLElBQUksQ0FBQ2tFLFdBQUQsRUFBYyxDQUFDLFNBQUQsQ0FBZCxDQUF6QjtBQUNBLDRCQUNFO0FBQ0UsVUFBQSxPQUFPLEVBQUUsS0FBS1MsUUFBTCxDQUFjQyxJQUFkLENBQW1CLElBQW5CO0FBRFgsV0FFTUMsY0FGTjtBQUdFLFVBQUEsT0FBTyxFQUFFekU7QUFIWCx5QkFLRTtBQUFNLFVBQUEsR0FBRyxFQUFFLEtBQUtJO0FBQWhCLFdBQTZCNkQsTUFBN0IsRUFBeUNuRSxLQUF6QyxHQUNHOEQsV0FESCxDQUxGLENBREY7QUFXRCxPQWJNLE1BYUE7QUFDTCw0QkFDRTtBQUFNLFVBQUEsR0FBRyxFQUFFLEtBQUt4RDtBQUFoQixXQUE2QjZELE1BQTdCLEVBQXlDbkUsS0FBekMsR0FDRzhELFdBREgsQ0FERjtBQUtEO0FBQ0Y7OztXQUNELGtCQUFTO0FBQ0QsVUFBQVYsS0FBSyxHQUFHLElBQVI7QUFBQSx5QkFDc0IsS0FBS3BELEtBRDNCO0FBQUEsVUFDRnNELFFBREUsZ0JBQ0ZBLFFBREU7QUFBQSxVQUNRUyxTQURSLGdCQUNRQSxTQURSOztBQUVOLFVBQU1ELFdBQVcsR0FBR25FLEtBQUssQ0FBQzhELFFBQU4sQ0FBZUMsR0FBZixDQUFtQkosUUFBbkIsRUFBNkIsVUFBVUssS0FBVixFQUFpQlIsS0FBakIsRUFBd0I7QUFDdkUsZUFBT0MsS0FBSyxDQUFDUSxZQUFOLENBQW1CRCxLQUFuQixFQUEwQlIsS0FBMUIsQ0FBUDtBQUNELE9BRm1CLENBQXBCO0FBR0EsVUFBTW5ELEtBQUssR0FBR0YsSUFBSSxDQUFDLEtBQUtFLEtBQU4sRUFBYSxDQUM3QixNQUQ2QixFQUU3QixXQUY2QixFQUc3QixZQUg2QixFQUk3QixhQUo2QixFQUs3QixLQUw2QixFQU03QixlQU42QixDQUFiLENBQWxCO0FBU0EsMEJBQU8sMENBQUcsS0FBSzRFLFdBQUwsQ0FBaUJkLFdBQWpCLEVBQThCOUQsS0FBOUIsQ0FBSCxDQUFQO0FBQ0Q7OztXQTVQRCxrQ0FBZ0M2RSxTQUFoQyxFQUEyQ0MsU0FBM0MsRUFBc0Q7QUFDcEQsVUFBUWIsVUFBUixHQUErQ1ksU0FBL0MsQ0FBUVosVUFBUjtBQUFBLFVBQW9CRCxXQUFwQixHQUErQ2EsU0FBL0MsQ0FBb0JiLFdBQXBCO0FBQUEsVUFBaUNELFNBQWpDLEdBQStDYyxTQUEvQyxDQUFpQ2QsU0FBakM7QUFDQSxVQUFRNUQsY0FBUixHQUE0QzJFLFNBQTVDLENBQVEzRSxjQUFSO0FBQUEsVUFBd0JDLGVBQXhCLEdBQTRDMEUsU0FBNUMsQ0FBd0IxRSxlQUF4Qjs7QUFDQSxVQUFJMkQsU0FBUyxJQUFJLE9BQWpCLEVBQTBCO0FBQ3hCLFlBQUlnQixJQUFJLENBQUNDLFNBQUwsQ0FBZTdFLGNBQWYsTUFBbUM0RSxJQUFJLENBQUNDLFNBQUwsQ0FBZWYsVUFBZixDQUF2QyxFQUFtRTtBQUNqRSxjQUFJZ0IsUUFBUSxHQUFHO0FBQ2I3RSxZQUFBQSxlQUFlLEVBQUU2RDtBQURKLFdBQWY7O0FBR0EsY0FBSSxDQUFBQSxVQUFVLFNBQVYsSUFBQUEsVUFBVSxXQUFWLFlBQUFBLFVBQVUsQ0FBRWlCLE9BQVosTUFBd0IsSUFBeEIsSUFBZ0MsQ0FBQWpCLFVBQVUsU0FBVixJQUFBQSxVQUFVLFdBQVYsWUFBQUEsVUFBVSxDQUFFaUIsT0FBWixNQUF3QkMsU0FBNUQsRUFBdUU7QUFDckVGLFlBQUFBLFFBQVEsQ0FBQ0csWUFBVCxHQUF3Qm5CLFVBQXhCLGFBQXdCQSxVQUF4Qix1QkFBd0JBLFVBQVUsQ0FBRWlCLE9BQXBDO0FBQ0Q7O0FBQ0QsaUJBQU9ELFFBQVA7QUFDRDtBQUNGLE9BVkQsTUFVTyxJQUFJbEIsU0FBUyxJQUFJLFFBQWpCLEVBQTJCO0FBQ2hDLFlBQUlnQixJQUFJLENBQUNDLFNBQUwsQ0FBZTVFLGVBQWYsTUFBb0MyRSxJQUFJLENBQUNDLFNBQUwsQ0FBZWhCLFdBQWYsQ0FBeEMsRUFBcUU7QUFDbkUsY0FBSWlCLFNBQVEsR0FBRztBQUNiN0UsWUFBQUEsZUFBZSxFQUFFNEQ7QUFESixXQUFmOztBQUdBLGNBQ0UsQ0FBQUEsV0FBVyxTQUFYLElBQUFBLFdBQVcsV0FBWCxZQUFBQSxXQUFXLENBQUVrQixPQUFiLE1BQXlCLElBQXpCLElBQ0EsQ0FBQWxCLFdBQVcsU0FBWCxJQUFBQSxXQUFXLFdBQVgsWUFBQUEsV0FBVyxDQUFFa0IsT0FBYixNQUF5QkMsU0FGM0IsRUFHRTtBQUNBRixZQUFBQSxTQUFRLENBQUNHLFlBQVQsR0FBd0JwQixXQUF4QixhQUF3QkEsV0FBeEIsdUJBQXdCQSxXQUFXLENBQUVrQixPQUFyQztBQUNEOztBQUVELGlCQUFPRCxTQUFQO0FBQ0Q7QUFDRjs7QUFDRCxhQUFPLElBQVA7QUFDRDs7OztFQXpDbUJyRixhOztBQTBRdEIsZUFBZUcsT0FBZiIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBEZXNjcmlwdHRpb2466KGo5Y2V57uE5Lu2XHJcbiAqIEB2ZXJzaW9uOlxyXG4gKiBAQXV0aG9yOiByeHpodVxyXG4gKiBARGF0ZTogMjAyMS0wNC0wOSAwOToxODozNFxyXG4gKiBATGFzdEVkaXRvcnM6IHJ4emh1XHJcbiAqIEBMYXN0RWRpdFRpbWU6IDIwMjEtMDQtMjMgMTU6MjM6NTRcclxuICovXHJcbmltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7XHJcbiAgRm9ybSxcclxuICBGb3JtUHJvcHMsXHJcbiAgTW9kYWwsXHJcbiAgRHJhd2VyLFxyXG4gIE1vZGFsUHJvcHMsXHJcbiAgRHJhd2VyUHJvcHMsXHJcbiAgbWVzc2FnZSxcclxufSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgeyBGb3JtSW5zdGFuY2UgfSBmcm9tIFwiYW50ZC9saWIvZm9ybVwiO1xyXG5pbXBvcnQgeyByZXF1ZXN0IH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQgb21pdCBmcm9tIFwib21pdC5qc1wiO1xyXG5cclxuaW50ZXJmYWNlIElGb3JtUHJvcHMgZXh0ZW5kcyBGb3JtUHJvcHMge1xyXG4gIHNob3dNb2RlbD86IFwibW9kYWxcIiB8IFwiZHJhd2VyXCI7XHJcbiAgbW9kYWxQcm9wcz86IE1vZGFsUHJvcHM7XHJcbiAgZHJhd2VyUHJvcHM/OiBEcmF3ZXJQcm9wcztcclxuICB1cmw/OiBzdHJpbmc7XHJcbiAgZW5jcnlwdEZpZWxkcz86IEFycmF5PFN0cmluZz47XHJcbn1cclxuXHJcbmNsYXNzIE5zY0Zvcm0gZXh0ZW5kcyBQdXJlQ29tcG9uZW50PElGb3JtUHJvcHM+IHtcclxuICBmb3JtUmVmID0gUmVhY3QuY3JlYXRlUmVmPEZvcm1JbnN0YW5jZT4oKTtcclxuICBzdGF0ZSA9IHtcclxuICAgIGZvcm1WaXNpYmxlOiBmYWxzZSxcclxuICAgIGZvcm1Nb2RhbFByb3BzOiB7fSxcclxuICAgIGZvcm1EcmF3ZXJQcm9wczoge30sXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMobmV4dFByb3BzLCBwcmV2U3RhdGUpIHtcclxuICAgIGNvbnN0IHsgbW9kYWxQcm9wcywgZHJhd2VyUHJvcHMsIHNob3dNb2RlbCB9ID0gbmV4dFByb3BzO1xyXG4gICAgY29uc3QgeyBmb3JtTW9kYWxQcm9wcywgZm9ybURyYXdlclByb3BzIH0gPSBwcmV2U3RhdGU7XHJcbiAgICBpZiAoc2hvd01vZGVsID09IFwibW9kYWxcIikge1xyXG4gICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoZm9ybU1vZGFsUHJvcHMpICE9PSBKU09OLnN0cmluZ2lmeShtb2RhbFByb3BzKSkge1xyXG4gICAgICAgIGxldCBuZXdTdGF0ZSA9IHtcclxuICAgICAgICAgIGZvcm1EcmF3ZXJQcm9wczogbW9kYWxQcm9wcyxcclxuICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICBpZiAobW9kYWxQcm9wcz8udmlzaWJsZSAhPT0gbnVsbCB8fCBtb2RhbFByb3BzPy52aXNpYmxlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIG5ld1N0YXRlLmZvcm1WaXNpYmFsZSA9IG1vZGFsUHJvcHM/LnZpc2libGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXdTdGF0ZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChzaG93TW9kZWwgPT0gXCJkcmF3ZXJcIikge1xyXG4gICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoZm9ybURyYXdlclByb3BzKSAhPT0gSlNPTi5zdHJpbmdpZnkoZHJhd2VyUHJvcHMpKSB7XHJcbiAgICAgICAgbGV0IG5ld1N0YXRlID0ge1xyXG4gICAgICAgICAgZm9ybURyYXdlclByb3BzOiBkcmF3ZXJQcm9wcyxcclxuICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBkcmF3ZXJQcm9wcz8udmlzaWJsZSAhPT0gbnVsbCB8fFxyXG4gICAgICAgICAgZHJhd2VyUHJvcHM/LnZpc2libGUgIT09IHVuZGVmaW5lZFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgbmV3U3RhdGUuZm9ybVZpc2liYWxlID0gZHJhd2VyUHJvcHM/LnZpc2libGU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbmV3U3RhdGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy/ojrflj5blr7nlupTlrZfmrrXlkI3nmoTplJnor6/kv6Hmga9cclxuICBnZXRGaWVsZEVycm9yKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudC5nZXRGaWVsZEVycm9yKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLy/ojrflj5blr7nlupTlrZfmrrXlrp7kvotcclxuICBnZXRGaWVsZEluc3RhbmNlKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudC5nZXRGaWVsZEluc3RhbmNlKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLy/ojrflj5bkuIDnu4TlrZfmrrXlkI3lr7nlupTnmoTplJnor6/kv6Hmga/vvIzov5Tlm57kuLrmlbDnu4TlvaLlvI9cclxuICBnZXRGaWVsZHNFcnJvcigpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudC5nZXRGaWVsZHNFcnJvcigpO1xyXG4gIH1cclxuXHJcbiAgLy/ojrflj5bkuIDnu4TlrZfmrrXlkI3lr7nlupTnmoTlgLzvvIzkvJrmjInnhaflr7nlupTnu5PmnoTov5Tlm55cclxuICBnZXRGaWVsZHNWYWx1ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudC5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy/ojrflj5blr7nlupTlrZfmrrXlkI3nmoTlgLxcclxuICBnZXRGaWVsZFZhbHVlKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudC5nZXRGaWVsZFZhbHVlKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLy/mo4Dmn6XkuIDnu4TlrZfmrrXmmK/lkKbooqvnlKjmiLfmk43kvZzov4dcclxuICBpc0ZpZWxkc1RvdWNoZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQuaXNGaWVsZHNUb3VjaGVkKCk7XHJcbiAgfVxyXG5cclxuICAvL+ajgOafpeWvueW6lOWtl+auteaYr+WQpuiiq+eUqOaIt+aTjeS9nOi/h1xyXG4gIGlzRmllbGRUb3VjaGVkKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudC5pc0ZpZWxkVG91Y2hlZChuYW1lKTtcclxuICB9XHJcblxyXG4gIC8v5qOA5p+l5LiA57uE5a2X5q615piv5ZCm5q2j5Zyo5qCh6aqMXHJcbiAgaXNGaWVsZFZhbGlkYXRpbmcobmFtZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVJlZi5jdXJyZW50LmlzRmllbGRWYWxpZGF0aW5nKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLy/ph43nva7kuIDnu4TlrZfmrrXliLBcclxuICByZXNldEZpZWxkcygpIHtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50LnJlc2V0RmllbGRzKCk7XHJcbiAgfVxyXG5cclxuICBzY3JvbGxUb0ZpZWxkKG5hbWUsIG9wdGlvbnMpIHtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50LnNjcm9sbFRvRmllbGQobmFtZSwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBzZXRGaWVsZHMoZmlsZHMpIHtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50LnNldEZpZWxkcyhmaWxkcyk7XHJcbiAgfVxyXG5cclxuICBzZXRGaWVsZHNWYWx1ZSh2YWx1ZXMpIHtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50LnNldEZpZWxkc1ZhbHVlKHZhbHVlcyk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXQoKSB7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudC5zdWJtaXQoKTtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0KFxyXG4gICAgdXJsPzogc3RyaW5nLFxyXG4gICAgb3B0aW9ucz86IGFueSxcclxuICAgIGNhbGxiYWNrPzogKHJlcz86IGFueSkgPT4gdm9pZCxcclxuICAgIG1zZz86IGJvb2xlYW5cclxuICApIHtcclxuICAgIGNvbnN0IHsgdXJsOiBwcm9wc1VybCwgZW5jcnlwdEZpZWxkczogZW5jcnlwdFByb3BwcyA9IFtdIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCF1cmwgJiYgIXByb3BzVXJsKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIuayoeacieS4iuS8oOeahHVybCFcIik7XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IG1ldGhvZCA9IFwicG9zdFwiIH0gPSBvcHRpb25zO1xyXG4gICAgbGV0IHJlcXVlc3RVcmwgPSB1cmwgPyB1cmwgOiBwcm9wc1VybDtcclxuICAgIGxldCByZXF1ZXN0RGF0YSA9IHRoaXMuZm9ybVJlZi5jdXJyZW50LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgICBsZXQgcmVxdWVzdEVuY3J5cHQgPSBlbmNyeXB0UHJvcHBzO1xyXG4gICAgbGV0IHJlcXVlc3RQYXJhbSA9IHsgbWV0aG9kOiBtZXRob2QsIGRhdGE6IHJlcXVlc3REYXRhIH0gYXMgeyBkYXRhOiBhbnkgfTtcclxuICAgIGlmIChvcHRpb25zKSB7XHJcbiAgICAgIGNvbnN0IHsgZGF0YSwgZW5jcnlwdEZpZWxkcywgLi4ucGFyYW1zIH0gPSBvcHRpb25zO1xyXG4gICAgICByZXF1ZXN0UGFyYW0gPSB7IC4uLnJlcXVlc3RQYXJhbSwgLi4ucGFyYW1zIH07XHJcbiAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgZGVsZXRlIHJlcXVlc3RQYXJhbS5kYXRhO1xyXG4gICAgICAgIGlmIChtZXRob2QudG9Mb3dlckNhc2UoKSA9PSBcImdldFwiKSB7XHJcbiAgICAgICAgICByZXF1ZXN0UGFyYW0gPSB7IC4uLnJlcXVlc3RQYXJhbSwgLi4ucGFyYW1zLCBwYXJhbXM6IGRhdGEgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVxdWVzdFBhcmFtID0geyAuLi5yZXF1ZXN0UGFyYW0sIC4uLnBhcmFtcywgZGF0YTogZGF0YSB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoZW5jcnlwdEZpZWxkcykge1xyXG4gICAgICAgIHJlcXVlc3RFbmNyeXB0ID0gZW5jcnlwdEZpZWxkcztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlcXVlc3QocmVxdWVzdFVybCwge1xyXG4gICAgICAuLi5yZXF1ZXN0UGFyYW0sXHJcbiAgICAgIGVuY3J5cHRGaWVsZHM6IHJlcXVlc3RFbmNyeXB0LFxyXG4gICAgfSlcclxuICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlczogYW55KSB7XHJcbiAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgaWYgKG1zZykge1xyXG4gICAgICAgICAgaWYgKGNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MoXCLmj5DkuqTmiJDlip9cIik7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5o+Q5Lqk5aSx6LSlXCIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYWxsYmFjayAmJiBjYWxsYmFjayhyZXMpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZUZpZWxkcyhuYW1lKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQudmFsaWRhdGVGaWVsZHMobmFtZSk7XHJcbiAgfVxyXG5cclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgIHtcclxuICAgICAgICBmb3JtVmlzaWJsZTogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNob3dGb3JtKHZhbHVlPzogYW55KSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICB7XHJcbiAgICAgICAgZm9ybVZpc2libGU6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zZXRGaWVsZHNWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY2xvbmVFbGVtZW50KGl0ZW0sIGluZGV4ID0gMCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGlmICh0eXBlb2YgaXRlbSA9PSBcInN0cmluZ1wiKSByZXR1cm4gaXRlbTtcclxuICAgIGxldCBwcm9wcyA9IHt9IGFzIHsga2V5OiBudW1iZXI7IGNoaWxkcmVuOiBhbnkgfTtcclxuICAgIHByb3BzLmtleSA9IGluZGV4O1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKGl0ZW0ucHJvcHMgJiYgaXRlbS5wcm9wcy5jaGlsZHJlbikge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0ucHJvcHMuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICBwcm9wcy5jaGlsZHJlbiA9IFJlYWN0LkNoaWxkcmVuLm1hcChcclxuICAgICAgICAgICAgaXRlbS5wcm9wcy5jaGlsZHJlbixcclxuICAgICAgICAgICAgZnVuY3Rpb24gKGNoaWxkLCBpbmRleCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBfdGhpcy5jbG9uZUVsZW1lbnQoY2hpbGQsIGluZGV4KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcHJvcHMuY2hpbGRyZW4gPSB0aGlzLmNsb25lRWxlbWVudChpdGVtLnByb3BzLmNoaWxkcmVuLCAwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChpdGVtLCBwcm9wcyk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuICByZW5kZXJQYW5lbChuZXdDaGlsZHJlbiwgcHJvcHMpIHtcclxuICAgIGNvbnN0IHsgc2hvd01vZGVsLCBkcmF3ZXJQcm9wcywgbW9kYWxQcm9wcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgZm9ybVZpc2libGUgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBsYXlvdXQgPSB7XHJcbiAgICAgIGxhYmVsQ29sOiB7IHNwYW46IDQgfSxcclxuICAgICAgd3JhcHBlckNvbDogeyBzcGFuOiAyMCB9LFxyXG4gICAgfTtcclxuICAgIGlmIChzaG93TW9kZWwgJiYgc2hvd01vZGVsID09IFwibW9kYWxcIikge1xyXG4gICAgICBsZXQgbmV3TW9kYWxQcm9wcyA9IG9taXQobW9kYWxQcm9wcywgW1widmlzaWJsZVwiXSk7XHJcbiAgICAgIG5ld01vZGFsUHJvcHMgPSB7IGNlbnRlcmVkOiB0cnVlLCAuLi5uZXdNb2RhbFByb3BzIH07XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPE1vZGFsXHJcbiAgICAgICAgICBvbkNhbmNlbD17dGhpcy5oaWRlRm9ybS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgey4uLm5ld01vZGFsUHJvcHN9XHJcbiAgICAgICAgICB2aXNpYmxlPXtmb3JtVmlzaWJsZX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICA8Rm9ybSByZWY9e3RoaXMuZm9ybVJlZn0gey4uLmxheW91dH0gey4uLnByb3BzfSBwcmVzZXJ2ZT17ZmFsc2V9PlxyXG4gICAgICAgICAgICB7bmV3Q2hpbGRyZW59XHJcbiAgICAgICAgICA8L0Zvcm0+XHJcbiAgICAgICAgPC9Nb2RhbD5cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSBpZiAoc2hvd01vZGVsICYmIHNob3dNb2RlbCA9PSBcImRyYXdlclwiKSB7XHJcbiAgICAgIGxldCBuZXdEcmF3ZXJQcm9wcyA9IG9taXQoZHJhd2VyUHJvcHMsIFtcInZpc2libGVcIl0pO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxEcmF3ZXJcclxuICAgICAgICAgIG9uQ2xvc2U9e3RoaXMuaGlkZUZvcm0uYmluZCh0aGlzKX1cclxuICAgICAgICAgIHsuLi5uZXdEcmF3ZXJQcm9wc31cclxuICAgICAgICAgIHZpc2libGU9e2Zvcm1WaXNpYmxlfVxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxGb3JtIHJlZj17dGhpcy5mb3JtUmVmfSB7Li4ubGF5b3V0fSB7Li4ucHJvcHN9PlxyXG4gICAgICAgICAgICB7bmV3Q2hpbGRyZW59XHJcbiAgICAgICAgICA8L0Zvcm0+XHJcbiAgICAgICAgPC9EcmF3ZXI+XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxGb3JtIHJlZj17dGhpcy5mb3JtUmVmfSB7Li4ubGF5b3V0fSB7Li4ucHJvcHN9PlxyXG4gICAgICAgICAge25ld0NoaWxkcmVufVxyXG4gICAgICAgIDwvRm9ybT5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3QgX3RoaXMgPSB0aGlzLFxyXG4gICAgICB7IGNoaWxkcmVuLCBzaG93TW9kZWwgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBuZXdDaGlsZHJlbiA9IFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgZnVuY3Rpb24gKGNoaWxkLCBpbmRleCkge1xyXG4gICAgICByZXR1cm4gX3RoaXMuY2xvbmVFbGVtZW50KGNoaWxkLCBpbmRleCk7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHByb3BzID0gb21pdCh0aGlzLnByb3BzLCBbXHJcbiAgICAgIFwiZm9ybVwiLFxyXG4gICAgICBcInNob3dNb2RlbFwiLFxyXG4gICAgICBcIm1vZGFsUHJvcHNcIixcclxuICAgICAgXCJkcmF3ZXJQcm9wc1wiLFxyXG4gICAgICBcInVybFwiLFxyXG4gICAgICBcImVuY3J5cHRGaWVsZHNcIixcclxuICAgIF0pO1xyXG5cclxuICAgIHJldHVybiA8Pnt0aGlzLnJlbmRlclBhbmVsKG5ld0NoaWxkcmVuLCBwcm9wcyl9PC8+O1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBOc2NGb3JtO1xyXG4iXX0=
|
|
417
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL2Zvcm0vRm9ybS50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwicmVxdWVzdCIsIm9taXQiLCJOc2NGb3JtIiwicHJvcHMiLCJjcmVhdGVSZWYiLCJmb3JtVmlzaWJsZSIsImZvcm1Nb2RhbFByb3BzIiwiZm9ybURyYXdlclByb3BzIiwibmFtZSIsImZvcm1SZWYiLCJjdXJyZW50IiwiZ2V0RmllbGRFcnJvciIsImdldEZpZWxkSW5zdGFuY2UiLCJnZXRGaWVsZHNFcnJvciIsImdldEZpZWxkc1ZhbHVlIiwiZ2V0RmllbGRWYWx1ZSIsImlzRmllbGRzVG91Y2hlZCIsImlzRmllbGRUb3VjaGVkIiwiaXNGaWVsZFZhbGlkYXRpbmciLCJyZXNldEZpZWxkcyIsIm9wdGlvbnMiLCJzY3JvbGxUb0ZpZWxkIiwiZmlsZHMiLCJzZXRGaWVsZHMiLCJ2YWx1ZXMiLCJzZXRGaWVsZHNWYWx1ZSIsInN1Ym1pdCIsInVybCIsImNhbGxiYWNrIiwibXNnIiwicHJvcHNVcmwiLCJlbmNyeXB0RmllbGRzIiwiZW5jcnlwdFByb3BwcyIsIkVycm9yIiwibWV0aG9kIiwicmVxdWVzdFVybCIsInJlcXVlc3REYXRhIiwicmVxdWVzdEVuY3J5cHQiLCJyZXF1ZXN0UGFyYW0iLCJkYXRhIiwicGFyYW1zIiwidG9Mb3dlckNhc2UiLCJ0aGVuIiwicmVzIiwiY29kZSIsInN1Y2Nlc3MiLCJlcnJvciIsImNhdGNoIiwiY29uc29sZSIsImxvZyIsInZhbGlkYXRlRmllbGRzIiwicmVzZXRWYWx1ZSIsInNldFN0YXRlIiwidmFsdWUiLCJpdGVtIiwiaW5kZXgiLCJfdGhpcyIsImtleSIsImNoaWxkcmVuIiwiQXJyYXkiLCJpc0FycmF5IiwiQ2hpbGRyZW4iLCJtYXAiLCJjaGlsZCIsImNsb25lRWxlbWVudCIsImUiLCJuZXdDaGlsZHJlbiIsInNob3dNb2RlbCIsImRyYXdlclByb3BzIiwibW9kYWxQcm9wcyIsInN0YXRlIiwibGF5b3V0IiwibGFiZWxDb2wiLCJzcGFuIiwid3JhcHBlckNvbCIsIm5ld01vZGFsUHJvcHMiLCJjZW50ZXJlZCIsImhpZGVGb3JtIiwiYmluZCIsIm5ld0RyYXdlclByb3BzIiwicmVuZGVyUGFuZWwiLCJuZXh0UHJvcHMiLCJwcmV2U3RhdGUiLCJKU09OIiwic3RyaW5naWZ5IiwibmV3U3RhdGUiLCJ2aXNpYmxlIiwidW5kZWZpbmVkIiwiZm9ybVZpc2liYWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPQSxLQUFQLElBQWdCQyxhQUFoQixRQUFxQyxPQUFyQztBQVdBLFNBQVNDLE9BQVQsUUFBd0IsdUJBQXhCO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixTQUFqQjs7SUFVTUMsTzs7Ozs7QUFRSixtQkFBWUMsS0FBWixFQUFtQjtBQUFBOztBQUFBOztBQUNqQiwrQkFBTUEsS0FBTjs7QUFEaUIsNEVBUFRMLEtBQUssQ0FBQ00sU0FBTixFQU9TOztBQUFBLDZEQU5YO0FBQ05DLE1BQUFBLFdBQVcsRUFBRSxLQURQO0FBRU5DLE1BQUFBLGNBQWMsRUFBRSxFQUZWO0FBR05DLE1BQUFBLGVBQWUsRUFBRTtBQUhYLEtBTVc7O0FBQUE7QUFFbEI7Ozs7V0FpQ0Q7QUFDQSwyQkFBY0MsSUFBZCxFQUFvQjtBQUFBOztBQUNsQixzQ0FBTyxLQUFLQyxPQUFMLENBQWFDLE9BQXBCLDBEQUFPLHNCQUFzQkMsYUFBdEIsQ0FBb0NILElBQXBDLENBQVA7QUFDRCxLLENBRUQ7Ozs7V0FDQSwwQkFBaUJBLElBQWpCLEVBQXVCO0FBQUE7O0FBQ3JCLHVDQUFPLEtBQUtDLE9BQUwsQ0FBYUMsT0FBcEIsMkRBQU8sdUJBQXNCRSxnQkFBdEIsQ0FBdUNKLElBQXZDLENBQVA7QUFDRCxLLENBRUQ7Ozs7V0FDQSwwQkFBaUI7QUFBQTs7QUFDZix1Q0FBTyxLQUFLQyxPQUFMLENB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QixhQUF3QkEsVUFBeEIsdUJBQXdCQSxVQUFVLENBQUVpQixPQUFwQztBQUNEOztBQUNELGlCQUFPRCxRQUFQO0FBQ0Q7QUFDRixPQVZELE1BVU8sSUFBSWxCLFNBQVMsSUFBSSxRQUFqQixFQUEyQjtBQUNoQyxZQUFJZ0IsSUFBSSxDQUFDQyxTQUFMLENBQWU3RSxlQUFmLE1BQW9DNEUsSUFBSSxDQUFDQyxTQUFMLENBQWVoQixXQUFmLENBQXhDLEVBQXFFO0FBQ25FLGNBQUlpQixTQUFRLEdBQUc7QUFDYjlFLFlBQUFBLGVBQWUsRUFBRTZEO0FBREosV0FBZjs7QUFHQSxjQUNFLENBQUFBLFdBQVcsU0FBWCxJQUFBQSxXQUFXLFdBQVgsWUFBQUEsV0FBVyxDQUFFa0IsT0FBYixNQUF5QixJQUF6QixJQUNBLENBQUFsQixXQUFXLFNBQVgsSUFBQUEsV0FBVyxXQUFYLFlBQUFBLFdBQVcsQ0FBRWtCLE9BQWIsTUFBeUJDLFNBRjNCLEVBR0U7QUFDQUYsWUFBQUEsU0FBUSxDQUFDRyxZQUFULEdBQXdCcEIsV0FBeEIsYUFBd0JBLFdBQXhCLHVCQUF3QkEsV0FBVyxDQUFFa0IsT0FBckM7QUFDRDs7QUFFRCxpQkFBT0QsU0FBUDtBQUNEO0FBQ0Y7O0FBQ0QsYUFBTyxJQUFQO0FBQ0Q7Ozs7RUF6Q21CdEYsYTs7QUE4UXRCLGVBQWVHLE9BQWYiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBARGVzY3JpcHR0aW9uOuihqOWNlee7hOS7tlxyXG4gKiBAdmVyc2lvbjpcclxuICogQEF1dGhvcjogcnh6aHVcclxuICogQERhdGU6IDIwMjEtMDQtMDkgMDk6MTg6MzRcclxuICogQExhc3RFZGl0b3JzOiByeHpodVxyXG4gKiBATGFzdEVkaXRUaW1lOiAyMDIxLTA0LTIzIDE1OjIzOjU0XHJcbiAqL1xyXG5pbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQge1xyXG4gIEZvcm0sXHJcbiAgRm9ybVByb3BzLFxyXG4gIE1vZGFsLFxyXG4gIERyYXdlcixcclxuICBNb2RhbFByb3BzLFxyXG4gIERyYXdlclByb3BzLFxyXG4gIG1lc3NhZ2UsXHJcbn0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IHsgRm9ybUluc3RhbmNlIH0gZnJvbSBcImFudGQvbGliL2Zvcm1cIjtcclxuaW1wb3J0IHsgcmVxdWVzdCB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuXHJcbmludGVyZmFjZSBJRm9ybVByb3BzIGV4dGVuZHMgRm9ybVByb3BzIHtcclxuICBzaG93TW9kZWw/OiBcIm1vZGFsXCIgfCBcImRyYXdlclwiO1xyXG4gIG1vZGFsUHJvcHM/OiBNb2RhbFByb3BzO1xyXG4gIGRyYXdlclByb3BzPzogRHJhd2VyUHJvcHM7XHJcbiAgdXJsPzogc3RyaW5nO1xyXG4gIGVuY3J5cHRGaWVsZHM/OiBBcnJheTxTdHJpbmc+O1xyXG59XHJcblxyXG5jbGFzcyBOc2NGb3JtIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxJRm9ybVByb3BzPiB7XHJcbiAgZm9ybVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxGb3JtSW5zdGFuY2U+KCk7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBmb3JtVmlzaWJsZTogZmFsc2UsXHJcbiAgICBmb3JtTW9kYWxQcm9wczoge30sXHJcbiAgICBmb3JtRHJhd2VyUHJvcHM6IHt9LFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKG5leHRQcm9wcywgcHJldlN0YXRlKSB7XHJcbiAgICBjb25zdCB7IG1vZGFsUHJvcHMsIGRyYXdlclByb3BzLCBzaG93TW9kZWwgfSA9IG5leHRQcm9wcztcclxuICAgIGNvbnN0IHsgZm9ybU1vZGFsUHJvcHMsIGZvcm1EcmF3ZXJQcm9wcyB9ID0gcHJldlN0YXRlO1xyXG4gICAgaWYgKHNob3dNb2RlbCA9PSBcIm1vZGFsXCIpIHtcclxuICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGZvcm1Nb2RhbFByb3BzKSAhPT0gSlNPTi5zdHJpbmdpZnkobW9kYWxQcm9wcykpIHtcclxuICAgICAgICBsZXQgbmV3U3RhdGUgPSB7XHJcbiAgICAgICAgICBmb3JtRHJhd2VyUHJvcHM6IG1vZGFsUHJvcHMsXHJcbiAgICAgICAgfSBhcyBhbnk7XHJcbiAgICAgICAgaWYgKG1vZGFsUHJvcHM/LnZpc2libGUgIT09IG51bGwgfHwgbW9kYWxQcm9wcz8udmlzaWJsZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBuZXdTdGF0ZS5mb3JtVmlzaWJhbGUgPSBtb2RhbFByb3BzPy52aXNpYmxlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3U3RhdGU7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoc2hvd01vZGVsID09IFwiZHJhd2VyXCIpIHtcclxuICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGZvcm1EcmF3ZXJQcm9wcykgIT09IEpTT04uc3RyaW5naWZ5KGRyYXdlclByb3BzKSkge1xyXG4gICAgICAgIGxldCBuZXdTdGF0ZSA9IHtcclxuICAgICAgICAgIGZvcm1EcmF3ZXJQcm9wczogZHJhd2VyUHJvcHMsXHJcbiAgICAgICAgfSBhcyBhbnk7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZHJhd2VyUHJvcHM/LnZpc2libGUgIT09IG51bGwgfHxcclxuICAgICAgICAgIGRyYXdlclByb3BzPy52aXNpYmxlICE9PSB1bmRlZmluZWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgIG5ld1N0YXRlLmZvcm1WaXNpYmFsZSA9IGRyYXdlclByb3BzPy52aXNpYmxlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG5ld1N0YXRlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8v6I635Y+W5a+55bqU5a2X5q615ZCN55qE6ZSZ6K+v5L+h5oGvXHJcbiAgZ2V0RmllbGRFcnJvcihuYW1lKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkRXJyb3IobmFtZSk7XHJcbiAgfVxyXG5cclxuICAvL+iOt+WPluWvueW6lOWtl+auteWunuS+i1xyXG4gIGdldEZpZWxkSW5zdGFuY2UobmFtZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZEluc3RhbmNlKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLy/ojrflj5bkuIDnu4TlrZfmrrXlkI3lr7nlupTnmoTplJnor6/kv6Hmga/vvIzov5Tlm57kuLrmlbDnu4TlvaLlvI9cclxuICBnZXRGaWVsZHNFcnJvcigpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRzRXJyb3IoKTtcclxuICB9XHJcblxyXG4gIC8v6I635Y+W5LiA57uE5a2X5q615ZCN5a+55bqU55qE5YC877yM5Lya5oyJ54Wn5a+55bqU57uT5p6E6L+U5ZueXHJcbiAgZ2V0RmllbGRzVmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICAvL+iOt+WPluWvueW6lOWtl+auteWQjeeahOWAvFxyXG4gIGdldEZpZWxkVmFsdWUobmFtZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZFZhbHVlKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLy/mo4Dmn6XkuIDnu4TlrZfmrrXmmK/lkKbooqvnlKjmiLfmk43kvZzov4dcclxuICBpc0ZpZWxkc1RvdWNoZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmlzRmllbGRzVG91Y2hlZCgpO1xyXG4gIH1cclxuXHJcbiAgLy/mo4Dmn6Xlr7nlupTlrZfmrrXmmK/lkKbooqvnlKjmiLfmk43kvZzov4dcclxuICBpc0ZpZWxkVG91Y2hlZChuYW1lKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmlzRmllbGRUb3VjaGVkKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLy/mo4Dmn6XkuIDnu4TlrZfmrrXmmK/lkKbmraPlnKjmoKHpqoxcclxuICBpc0ZpZWxkVmFsaWRhdGluZyhuYW1lKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmlzRmllbGRWYWxpZGF0aW5nKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLy/ph43nva7kuIDnu4TlrZfmrrXliLBcclxuICByZXNldEZpZWxkcygpIHtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsVG9GaWVsZChuYW1lLCBvcHRpb25zKSB7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2Nyb2xsVG9GaWVsZChuYW1lLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHNldEZpZWxkcyhmaWxkcykge1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNldEZpZWxkcyhmaWxkcyk7XHJcbiAgfVxyXG5cclxuICBzZXRGaWVsZHNWYWx1ZSh2YWx1ZXMpIHtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zZXRGaWVsZHNWYWx1ZSh2YWx1ZXMpO1xyXG4gIH1cclxuXHJcbiAgc3VibWl0KCkge1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnN1Ym1pdCgpO1xyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoXHJcbiAgICB1cmw/OiBzdHJpbmcsXHJcbiAgICBvcHRpb25zPzogYW55LFxyXG4gICAgY2FsbGJhY2s/OiAocmVzPzogYW55KSA9PiB2b2lkLFxyXG4gICAgbXNnPzogYm9vbGVhblxyXG4gICkge1xyXG4gICAgY29uc3QgeyB1cmw6IHByb3BzVXJsLCBlbmNyeXB0RmllbGRzOiBlbmNyeXB0UHJvcHBzID0gW10gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXVybCAmJiAhcHJvcHNVcmwpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwi5rKh5pyJ5LiK5Lyg55qEdXJsIVwiKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgbWV0aG9kID0gXCJwb3N0XCIgfSA9IG9wdGlvbnM7XHJcbiAgICBsZXQgcmVxdWVzdFVybCA9IHVybCA/IHVybCA6IHByb3BzVXJsO1xyXG4gICAgbGV0IHJlcXVlc3REYXRhID0gdGhpcy5mb3JtUmVmLmN1cnJlbnQuZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIGxldCByZXF1ZXN0RW5jcnlwdCA9IGVuY3J5cHRQcm9wcHM7XHJcbiAgICBsZXQgcmVxdWVzdFBhcmFtID0geyBtZXRob2Q6IG1ldGhvZCwgZGF0YTogcmVxdWVzdERhdGEgfSBhcyB7IGRhdGE6IGFueSB9O1xyXG4gICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgY29uc3QgeyBkYXRhLCBlbmNyeXB0RmllbGRzLCAuLi5wYXJhbXMgfSA9IG9wdGlvbnM7XHJcbiAgICAgIHJlcXVlc3RQYXJhbSA9IHsgLi4ucmVxdWVzdFBhcmFtLCAuLi5wYXJhbXMgfTtcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICBkZWxldGUgcmVxdWVzdFBhcmFtLmRhdGE7XHJcbiAgICAgICAgaWYgKG1ldGhvZC50b0xvd2VyQ2FzZSgpID09IFwiZ2V0XCIpIHtcclxuICAgICAgICAgIHJlcXVlc3RQYXJhbSA9IHsgLi4ucmVxdWVzdFBhcmFtLCAuLi5wYXJhbXMsIHBhcmFtczogZGF0YSB9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXF1ZXN0UGFyYW0gPSB7IC4uLnJlcXVlc3RQYXJhbSwgLi4ucGFyYW1zLCBkYXRhOiBkYXRhIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChlbmNyeXB0RmllbGRzKSB7XHJcbiAgICAgICAgcmVxdWVzdEVuY3J5cHQgPSBlbmNyeXB0RmllbGRzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVxdWVzdChyZXF1ZXN0VXJsLCB7XHJcbiAgICAgIC4uLnJlcXVlc3RQYXJhbSxcclxuICAgICAgZW5jcnlwdEZpZWxkczogcmVxdWVzdEVuY3J5cHQsXHJcbiAgICB9KVxyXG4gICAgICAudGhlbihmdW5jdGlvbiAocmVzOiBhbnkpIHtcclxuICAgICAgICBjb25zdCB7IGNvZGUgfSA9IHJlcztcclxuICAgICAgICBpZiAobXNnKSB7XHJcbiAgICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhcIuaPkOS6pOaIkOWKn1wiKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLmj5DkuqTlpLHotKVcIik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKHJlcyk7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlRmllbGRzKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudC52YWxpZGF0ZUZpZWxkcyhuYW1lKTtcclxuICB9XHJcblxyXG4gIGhpZGVGb3JtKHJlc2V0VmFsdWUgPSB0cnVlKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICB7XHJcbiAgICAgICAgZm9ybVZpc2libGU6IGZhbHNlLFxyXG4gICAgICB9LFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc2V0VmFsdWUpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNob3dGb3JtKHZhbHVlPzogYW55LCByZXNldFZhbHVlID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAge1xyXG4gICAgICAgIGZvcm1WaXNpYmxlOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUodmFsdWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAocmVzZXRWYWx1ZSkgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY2xvbmVFbGVtZW50KGl0ZW0sIGluZGV4ID0gMCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGlmICh0eXBlb2YgaXRlbSA9PSBcInN0cmluZ1wiKSByZXR1cm4gaXRlbTtcclxuICAgIGxldCBwcm9wcyA9IHt9IGFzIHsga2V5OiBudW1iZXI7IGNoaWxkcmVuOiBhbnkgfTtcclxuICAgIHByb3BzLmtleSA9IGluZGV4O1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKGl0ZW0ucHJvcHMgJiYgaXRlbS5wcm9wcy5jaGlsZHJlbikge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0ucHJvcHMuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICBwcm9wcy5jaGlsZHJlbiA9IFJlYWN0LkNoaWxkcmVuLm1hcChcclxuICAgICAgICAgICAgaXRlbS5wcm9wcy5jaGlsZHJlbixcclxuICAgICAgICAgICAgZnVuY3Rpb24gKGNoaWxkLCBpbmRleCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBfdGhpcy5jbG9uZUVsZW1lbnQoY2hpbGQsIGluZGV4KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcHJvcHMuY2hpbGRyZW4gPSB0aGlzLmNsb25lRWxlbWVudChpdGVtLnByb3BzLmNoaWxkcmVuLCAwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChpdGVtLCBwcm9wcyk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuICByZW5kZXJQYW5lbChuZXdDaGlsZHJlbiwgcHJvcHMpIHtcclxuICAgIGNvbnN0IHsgc2hvd01vZGVsLCBkcmF3ZXJQcm9wcywgbW9kYWxQcm9wcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgZm9ybVZpc2libGUgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBsYXlvdXQgPSB7XHJcbiAgICAgIGxhYmVsQ29sOiB7IHNwYW46IDQgfSxcclxuICAgICAgd3JhcHBlckNvbDogeyBzcGFuOiAyMCB9LFxyXG4gICAgfTtcclxuICAgIGlmIChzaG93TW9kZWwgJiYgc2hvd01vZGVsID09IFwibW9kYWxcIikge1xyXG4gICAgICBsZXQgbmV3TW9kYWxQcm9wcyA9IG9taXQobW9kYWxQcm9wcywgW1widmlzaWJsZVwiXSk7XHJcbiAgICAgIG5ld01vZGFsUHJvcHMgPSB7IGNlbnRlcmVkOiB0cnVlLCAuLi5uZXdNb2RhbFByb3BzIH07XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPE1vZGFsXHJcbiAgICAgICAgICBvbkNhbmNlbD17dGhpcy5oaWRlRm9ybS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgey4uLm5ld01vZGFsUHJvcHN9XHJcbiAgICAgICAgICB2aXNpYmxlPXtmb3JtVmlzaWJsZX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICA8Rm9ybSByZWY9e3RoaXMuZm9ybVJlZn0gey4uLmxheW91dH0gey4uLnByb3BzfSBwcmVzZXJ2ZT17ZmFsc2V9PlxyXG4gICAgICAgICAgICB7bmV3Q2hpbGRyZW59XHJcbiAgICAgICAgICA8L0Zvcm0+XHJcbiAgICAgICAgPC9Nb2RhbD5cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSBpZiAoc2hvd01vZGVsICYmIHNob3dNb2RlbCA9PSBcImRyYXdlclwiKSB7XHJcbiAgICAgIGxldCBuZXdEcmF3ZXJQcm9wcyA9IG9taXQoZHJhd2VyUHJvcHMsIFtcInZpc2libGVcIl0pO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxEcmF3ZXJcclxuICAgICAgICAgIG9uQ2xvc2U9e3RoaXMuaGlkZUZvcm0uYmluZCh0aGlzKX1cclxuICAgICAgICAgIHsuLi5uZXdEcmF3ZXJQcm9wc31cclxuICAgICAgICAgIHZpc2libGU9e2Zvcm1WaXNpYmxlfVxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxGb3JtIHJlZj17dGhpcy5mb3JtUmVmfSB7Li4ubGF5b3V0fSB7Li4ucHJvcHN9PlxyXG4gICAgICAgICAgICB7bmV3Q2hpbGRyZW59XHJcbiAgICAgICAgICA8L0Zvcm0+XHJcbiAgICAgICAgPC9EcmF3ZXI+XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxGb3JtIHJlZj17dGhpcy5mb3JtUmVmfSB7Li4ubGF5b3V0fSB7Li4ucHJvcHN9PlxyXG4gICAgICAgICAge25ld0NoaWxkcmVufVxyXG4gICAgICAgIDwvRm9ybT5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3QgX3RoaXMgPSB0aGlzLFxyXG4gICAgICB7IGNoaWxkcmVuLCBzaG93TW9kZWwgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBuZXdDaGlsZHJlbiA9IFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgZnVuY3Rpb24gKGNoaWxkLCBpbmRleCkge1xyXG4gICAgICByZXR1cm4gX3RoaXMuY2xvbmVFbGVtZW50KGNoaWxkLCBpbmRleCk7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHByb3BzID0gb21pdCh0aGlzLnByb3BzLCBbXHJcbiAgICAgIFwiZm9ybVwiLFxyXG4gICAgICBcInNob3dNb2RlbFwiLFxyXG4gICAgICBcIm1vZGFsUHJvcHNcIixcclxuICAgICAgXCJkcmF3ZXJQcm9wc1wiLFxyXG4gICAgICBcInVybFwiLFxyXG4gICAgICBcImVuY3J5cHRGaWVsZHNcIixcclxuICAgIF0pO1xyXG5cclxuICAgIHJldHVybiA8Pnt0aGlzLnJlbmRlclBhbmVsKG5ld0NoaWxkcmVuLCBwcm9wcyl9PC8+O1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBOc2NGb3JtO1xyXG4iXX0=
|