nsc-react-component 3.3.0 → 3.3.2

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.
@@ -108,7 +108,13 @@ class FormPage extends PureComponent {
108
108
  if (this.fileFormat.length > 0) {
109
109
  let newFileList = {};
110
110
  this.fileFormat.map(item => {
111
- newFileList[item] = this.getFileList(fileList[item] || []);
111
+ if (fileList[item].length == 0) {
112
+ newFileList[item] = null;
113
+ } else {
114
+ if (!formValue[item]) {
115
+ newFileList[item] = this.getFileList(fileList[item] || []);
116
+ }
117
+ }
112
118
  });
113
119
  data = _objectSpread(_objectSpread({}, data), newFileList);
114
120
  }
@@ -140,8 +146,12 @@ class FormPage extends PureComponent {
140
146
  if (this.fileFormat.length > 0) {
141
147
  let fileList = {};
142
148
  this.fileFormat.map(item => {
143
- let olddata = value[item];
144
- fileList[item] = this.getFileList(olddata || [], type);
149
+ let olddata = values[item];
150
+ if (olddata && Array.isArray(olddata)) {
151
+ fileList[item] = this.getFileList(olddata || [], type);
152
+ } else {
153
+ fileList[item] = [];
154
+ }
145
155
  });
146
156
  this.setState({
147
157
  fileList: fileList
@@ -300,9 +310,9 @@ class FormPage extends PureComponent {
300
310
  }
301
311
  delete props.valueFormat;
302
312
  delete props.format;
303
- delete props.allowChars;
304
313
  if (label == "查看") {
305
314
  props.disabled = true;
315
+ props.placeholder = '';
306
316
  }
307
317
  if (item.rules && item.rules.length > 0) {
308
318
  newValid.push(item.name);
@@ -347,7 +357,7 @@ class FormPage extends PureComponent {
347
357
  showDownloadIcon: true,
348
358
  showRemoveIcon: label !== '查看'
349
359
  }
350
- }, props), label !== '查看' && /*#__PURE__*/React.createElement(Button, null, "\u4E0A\u4F20\u6587\u4EF6"))));
360
+ }, props), item.props.children ? item.props.children : label !== '查看' && /*#__PURE__*/React.createElement(Button, null, "\u4E0A\u4F20\u6587\u4EF6"))));
351
361
  }
352
362
  }));
353
363
  }
@@ -475,4 +485,4 @@ class FormPage extends PureComponent {
475
485
  }
476
486
  }
477
487
  export default FormPage;
478
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiZ2V0Tm9kZSIsIm1lc3NhZ2UiLCJDb2wiLCJSb3ciLCJpc0VtcHR5T2JqIiwiZGF5anMiLCJsb2Rhc2giLCJCdXR0b24iLCJVcGxvYWQiLCJjbHMiLCJGb3JtUGFnZSIsImNvbnN0cnVjdG9yIiwiYXJndW1lbnRzIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwibG9hZGluZyIsImxhYmVsIiwiZWRpdG9yRmxhZyIsInZhbHVlIiwiZGljdE5hbWVzIiwiZmlsZUxpc3QiLCJzaG93Iiwib3JnVmFsdWUiLCJlZGl0b3JmbGFnIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwic2V0U3RhdGUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQiLCJjb252ZXJ0VmFsdWUiLCJmb3JtUmVmIiwiY3VycmVudCIsInNob3dGb3JtIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50MiIsInByb3BzIiwiZGVmYXVsdFZhbHVlIiwiaGlkZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDMiLCJvbkhpZGVGb3JtIiwiaGlkZUZvcm0iLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ0Iiwic2V0TG9hZGluZyIsImdldEZvcm1WYWx1ZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDUiLCJzdGF0ZSIsImZvcm1WYWx1ZSIsImdldEZpZWxkc1ZhbHVlIiwiZGF0YSIsIl9vYmplY3RTcHJlYWQiLCJmaWxlRm9ybWF0IiwibmV3RmlsZUxpc3QiLCJtYXAiLCJpdGVtIiwiZ2V0RmlsZUxpc3QiLCJzdWJtaXRGbGFnIiwiZXJyb3IiLCJkYXRlVmFsdWVGb3JtYXQiLCJrZXkiLCJvbGRkYXRhIiwiQXJyYXkiLCJpc0FycmF5IiwiZm9ybWF0IiwiaWQiLCJ0eXBlIiwidmFsdWVzIiwiY2xvbmVEZWVwIiwiZGF0ZUZvcm1hdCIsInNldEZvcm1WYWx1ZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDYiLCJuZXdWYWx1ZSIsInNldEZpZWxkc1ZhbHVlIiwiZG9TdWJtaXQiLCJmb3JtZGF0YSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDciLCJzdWJtaXRVcmwiLCJzdWJtaXRQYXJhbXMiLCJjYWxsQmFjayIsImNvbnNvbGUiLCJvdGhlclBhcmFtcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIm9uU3VibWl0Iiwibm9VbmRlZmluZWQiLCJyZXMiLCJjb2RlIiwic3VjY2VzcyIsIm9iaiIsImZpbGVJZCIsImZpbGVOYW1lIiwic3RhdHVzIiwicHVzaCIsIl90aGlzJGZvcm1SZWYkY3VycmVudDgiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ5IiwidmFsaWQiLCJ2YWxpZGF0ZUZpZWxkcyIsInRoZW4iLCJjYXRjaCIsImVycm9ySW5mbyIsInZhbHVlQ2hhbmdlIiwiX3JlZiIsInZhbHVlT3B0aW9uIiwiZGljdE5hbWUiLCJuZXdOYW1lcyIsIm9uQ2hhbmdlIiwicmVuZGVyRm9ybSIsImZvcm1zIiwibmV3VmFsaWQiLCJjcmVhdGVFbGVtZW50IiwiZ3V0dGVyIiwiaW5kZXgiLCJfaXRlbSRwcm9wcyIsIml0ZW1Qcm9wcyIsInZhbHVlRm9ybWF0IiwibmFtZSIsImFsbG93Q2hhcnMiLCJwbGFjZWhvbGRlciIsImNvbmNhdCIsImJpbmQiLCJzaG93Q291bnQiLCJkaXNhYmxlZCIsInJ1bGVzIiwic3BhbiIsIkl0ZW0iLCJjb21wb25lbnROYW1lIiwiX2V4dGVuZHMiLCJvbkxpc3RDaGFuZ2UiLCJsaXN0Iiwic2hvd1VwbG9hZExpc3QiLCJzaG93RG93bmxvYWRJY29uIiwic2hvd1JlbW92ZUljb24iLCJyZW5kZXIiLCJvdGhlclByb3BzIiwiZm9vdGVyIiwiY2hpbGRyZW4iLCJtb2RhbFByb3BzIiwidGl0bGUiLCJvbk9rIiwib25DYW5jZWwiLCJva0J1dHRvblByb3BzIiwiY2VudGVyZWQiLCJ3aWR0aCIsImRyYXdlclByb3BzIiwib25DbG9zZSIsIm5ld0Zvcm1zT2JqIiwiZm9ybUdyb3VwcyIsIm90aGVyR3J1cHMiLCJncm91cE5hbWUiLCJpbmRleE9mIiwiZ3JvdXBGb3JtcyIsImZvcm0iLCJzZWxmQnV0dG9ucyIsInJlZiIsInNob3dNb2RlbCIsImZvcm1UeXBlIiwibGFiZWxDb2wiLCJmbGV4Iiwid3JhcHBlckNvbCIsIm9uVmFsdWVzQ2hhbmdlIiwiY2hhbmdlZFZhbHVlcyIsImFsbFZhbHVlcyIsIm9uRm9ybUNoYW5nZSIsImNoYW5nZVZhbGlkIiwiY2xhc3NOYW1lIiwiT2JqZWN0Iiwia2V5cyIsImZvb3RlckNsYXNzTmFtZSIsImNhbmNlbEJ1dHRvblByb3BzIiwib25DbGljayJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvRm9ybVBhZ2UvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50LCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IEZvcm0gZnJvbSBcIi4uLy4uL2Jhc2UvZm9ybVwiO1xyXG5pbXBvcnQgeyBnZXRMZXNzLCBnZXROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCBtZXNzYWdlIGZyb20gXCIuLi8uLi9iYXNlL21lc3NhZ2VcIjtcclxuaW1wb3J0IENvbCBmcm9tIFwiLi4vLi4vYmFzZS9ncmlkL0NvbFwiO1xyXG5pbXBvcnQgUm93IGZyb20gXCIuLi8uLi9iYXNlL2dyaWQvUm93XCI7XHJcbmltcG9ydCB7IGlzRW1wdHlPYmogfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xyXG5pbXBvcnQgXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmltcG9ydCBsb2Rhc2ggZnJvbSBcImxvZGFzaFwiO1xyXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi8uLi9iYXNlL2J1dHRvblwiO1xyXG5pbXBvcnQgVXBsb2FkIGZyb20gJy4uLy4uL2Jhc2UvdXBsb2FkJ1xyXG5pbXBvcnQgY2xzIGZyb20gJ2NsYXNzbmFtZXMnXHJcbmludGVyZmFjZSBGb3JtUGFnZVByb3BzIHtcclxuICBmb3Jtcz86IEFycmF5PGFueT47IC8v5piv5ZCm5pi+56S65pON5L2c5YiXXHJcbiAgc3VibWl0VXJsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0PzogKHZhbHVlPzogYW55LCBsYWJlbD86IGFueSkgPT4gdm9pZDtcclxuICBmb290ZXJDbGFzc05hbWU/OiBhbnk7XHJcbiAgb2tCdXR0b25Qcm9wcz86IGFueTtcclxuICBjYW5jZWxCdXR0b25Qcm9wcz86IGFueTtcclxuICBmb290ZXI/OiBSZWFjdE5vZGUgfCBib29sZWFuO1xyXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xyXG4gIG9uRm9ybUNoYW5nZT86ICh2YWx1ZT86IGFueSxhbGxWYWx1ZT86YW55KSA9PiB2b2lkO1xyXG4gIHN1Ym1pdFBhcmFtcz86YW55OyAvL+a3u+WKoOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2RhdGHkvKDpgJJcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuY2xhc3MgRm9ybVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PEZvcm1QYWdlUHJvcHMsIGFueT4ge1xyXG4gIGZvcm1SZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHN0YXRlID0ge1xyXG4gICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICBsYWJlbDogXCJcIixcclxuICAgIGVkaXRvckZsYWc6IHRydWUsXHJcbiAgICB2YWx1ZToge30gYXMgYW55LFxyXG4gICAgZGljdE5hbWVzOiB7fSBhcyBhbnksXHJcbiAgICBmaWxlTGlzdDoge30gYXMgYW55XHJcbiAgfTtcclxuICB2YWxpZDogYW55ID0gW107XHJcbiAgZGF0ZVZhbHVlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIGRhdGVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgZmlsZUZvcm1hdCA9IFtdIGFzIGFueTtcclxuICBzdWJtaXRGbGFnID0gdHJ1ZVxyXG4gIC8v6KGo5Y2V5pi+56S6XHJcbiAgc2hvdyhvcmdWYWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIpIHtcclxuICAgIGxldCBsYWJlbCA9IFwi5paw5aKeXCI7XHJcbiAgICBpZiAob3JnVmFsdWUgJiYgZWRpdG9yZmxhZyA9PSBcImVkaXRvclwiKSB7XHJcbiAgICAgIGxhYmVsID0gXCLnvJbovpFcIjtcclxuICAgIH0gZWxzZSBpZiAob3JnVmFsdWUgJiYgZWRpdG9yZmxhZyA9PSBcImRldGFpbFwiKSB7XHJcbiAgICAgIGxhYmVsID0gXCLmn6XnnItcIjtcclxuICAgIH1cclxuICAgIGlmIChvcmdWYWx1ZSkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiBsYWJlbCxcclxuICAgICAgICAgIHZhbHVlOiBvcmdWYWx1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuY29udmVydFZhbHVlKG9yZ1ZhbHVlLGxhYmVsKTtcclxuICAgICAgICAgIC8v5aSE55CG5paH5Lu25pWw5o2uXHJcbiAgICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2hvd0Zvcm0odmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNob3dGb3JtKHRoaXMucHJvcHMuZGVmYXVsdFZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhpZGUoaGlkZSA9IHRydWUpIHtcclxuICAgIGNvbnN0IHsgb25IaWRlRm9ybSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChvbkhpZGVGb3JtKSB7XHJcbiAgICAgIG9uSGlkZUZvcm0gJiYgb25IaWRlRm9ybSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UsIGZpbGVMaXN0OiB7fSB9KTtcclxuICAgIGhpZGUgJiYgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG4gIGhpZGVGb3JtKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlLCBmaWxlTGlzdDoge30gfSk7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICB9XHJcbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogbG9hZGluZyB9KTtcclxuICB9XHJcbiAgZ2V0Rm9ybVZhbHVlKCkge1xyXG4gICAgY29uc3QgeyBsYWJlbCwgdmFsdWUsIGRpY3ROYW1lcywgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIGxldCBkYXRhID0geyAuLi5mb3JtVmFsdWUsIC4uLmRpY3ROYW1lcyB9O1xyXG4gICAgaWYgKHRoaXMuZmlsZUZvcm1hdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBuZXdGaWxlTGlzdCA9IHt9IGFzIGFueTtcclxuICAgICAgdGhpcy5maWxlRm9ybWF0Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIG5ld0ZpbGVMaXN0W2l0ZW1dID0gdGhpcy5nZXRGaWxlTGlzdChmaWxlTGlzdFtpdGVtXSB8fCBbXSk7XHJcbiAgICAgIH0pXHJcbiAgICAgIGRhdGEgPSB7IC4uLmRhdGEsIC4uLm5ld0ZpbGVMaXN0IH07XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuc3VibWl0RmxhZykge1xyXG4gICAgICBtZXNzYWdlLmVycm9yKCfor7fnrYnlvoXmiYDmnInmlofku7bkuIrkvKDlrozmiJDvvIEnKVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzRW1wdHlPYmoodGhpcy5kYXRlVmFsdWVGb3JtYXQpKSB7XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmRhdGVWYWx1ZUZvcm1hdCkge1xyXG4gICAgICAgIGxldCBvbGRkYXRhID0gZGF0YVtrZXldO1xyXG4gICAgICAgIGlmIChvbGRkYXRhKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgICBkYXRhW2tleV0gPSBbXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVswXSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgIGRheWpzKG9sZGRhdGFbMV0pLmZvcm1hdCh0aGlzLmRhdGVWYWx1ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGRhdGFba2V5XSA9IGRheWpzKG9sZGRhdGEpLmZvcm1hdCh0aGlzLmRhdGVWYWx1ZUZvcm1hdFtrZXldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChsYWJlbCA9PSBcIue8lui+kVwiKSB7XHJcbiAgICAgIGRhdGEgPSB7IC4uLmRhdGEsIGlkOiB2YWx1ZT8uaWQgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuICBjb252ZXJ0VmFsdWUodmFsdWUsdHlwZSl7XHJcbiAgICBsZXQgdmFsdWVzID0gbG9kYXNoLmNsb25lRGVlcCh2YWx1ZSk7XHJcbiAgICBpZiAodGhpcy5maWxlRm9ybWF0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGZpbGVMaXN0ID0ge30gYXMgYW55O1xyXG4gICAgICB0aGlzLmZpbGVGb3JtYXQubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSB2YWx1ZVtpdGVtXTtcclxuICAgICAgICBmaWxlTGlzdFtpdGVtXSA9IHRoaXMuZ2V0RmlsZUxpc3Qob2xkZGF0YSB8fCBbXSwgdHlwZSk7XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBmaWxlTGlzdDogZmlsZUxpc3QgfSlcclxuICAgIH1cclxuICAgIC8v5aSE55CG5pel5pyf5qC85byP5pWw5o2uXHJcbiAgICBpZiAoIWlzRW1wdHlPYmoodGhpcy5kYXRlRm9ybWF0KSkge1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5kYXRlRm9ybWF0KSB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSB2YWx1ZVtrZXldO1xyXG4gICAgICAgIGlmIChvbGRkYXRhKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgICB2YWx1ZVtrZXldID0gW1xyXG4gICAgICAgICAgICAgIGRheWpzKG9sZGRhdGFbMF0sIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICBkYXlqcyhvbGRkYXRhWzFdLCB0aGlzLmRhdGVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YWx1ZVtrZXldID0gZGF5anMob2xkZGF0YSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlc1xyXG4gIH1cclxuICBzZXRGb3JtVmFsdWUodmFsdWUsdHlwZSl7XHJcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuY29udmVydFZhbHVlKHZhbHVlLHR5cGUpO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNldEZpZWxkc1ZhbHVlKG5ld1ZhbHVlKTtcclxuICB9XHJcbiAgZG9TdWJtaXQoZm9ybWRhdGEsIGxhYmVsKSB7XHJcbiAgICBjb25zdCB7IHN1Ym1pdFVybCwgc3VibWl0UGFyYW1zPXt9LCBjYWxsQmFjayB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghc3VibWl0VXJsKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJzdWJtaXRVcmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgZGF0YSA9IHt9LCAuLi5vdGhlclBhcmFtcyB9ID0gc3VibWl0UGFyYW1zXHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8ub25TdWJtaXQoXHJcbiAgICAgIHN1Ym1pdFVybCxcclxuICAgICAge1xyXG4gICAgICAgIGRhdGE6IHsgLi4uZm9ybWRhdGEsIC4uLmRhdGEgfSxcclxuICAgICAgICBub1VuZGVmaW5lZDogbGFiZWwgPT0gXCLnvJbovpFcIixcclxuICAgICAgICAuLi5vdGhlclBhcmFtcyxcclxuICAgICAgfSxcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhsYWJlbCArIFwi5oiQ5YqfXCIpO1xyXG4gICAgICAgICAgdGhpcy5oaWRlKHRydWUpO1xyXG4gICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5oaWRlKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgZ2V0RmlsZUxpc3QoZGF0YSwgbGFiZWwgPSAn5paw5aKeJykge1xyXG4gICAgdGhpcy5zdWJtaXRGbGFnID0gdHJ1ZVxyXG4gICAgbGV0IGZpbGVMaXN0ID0gW10gYXMgYW55O1xyXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRhdGEubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgbGV0IG9iaiA9IHtcclxuICAgICAgICAgIGZpbGVJZDogaXRlbS5maWxlSWQsXHJcbiAgICAgICAgICBmaWxlTmFtZTogaXRlbS5maWxlTmFtZSxcclxuICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICBpZiAobGFiZWwgPT0gJ+afpeeciycpIHtcclxuICAgICAgICAgIG9iai5zdGF0dXMgPSAnZG9uZSc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChsYWJlbCAhPT0gJ+afpeeciycgJiYgaXRlbS5zdGF0dXMgIT09ICdkb25lJykge1xyXG4gICAgICAgICAgdGhpcy5zdWJtaXRGbGFnID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbGVMaXN0LnB1c2gob2JqKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmlsZUxpc3Q7XHJcbiAgfTtcclxuXHJcbiAgb25TdWJtaXQoKSB7XHJcbiAgICBjb25zdCB7IG9uU3VibWl0IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBsYWJlbCwgdmFsdWUsIGRpY3ROYW1lcywgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIGxldCB2YWxpZCA9IHRoaXMudmFsaWQ7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudFxyXG4gICAgICA/LnZhbGlkYXRlRmllbGRzKHZhbGlkKVxyXG4gICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgbGV0IGRhdGEgPXRoaXMuZ2V0Rm9ybVZhbHVlKClcclxuICAgICAgICBpZiAoIXRoaXMuc3VibWl0RmxhZykge1xyXG4gICAgICAgICAgbWVzc2FnZS5lcnJvcign6K+3562J5b6F5omA5pyJ5paH5Lu25LiK5Lyg5a6M5oiQ77yBJylcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IHRydWUgfSk7XHJcbiAgICAgICAgaWYgKG9uU3VibWl0KSB7XHJcbiAgICAgICAgICBvblN1Ym1pdCAmJiBvblN1Ym1pdChkYXRhLCBsYWJlbCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZG9TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycm9ySW5mbzogYW55KSA9PiB7IH0pO1xyXG4gIH1cclxuICB2YWx1ZUNoYW5nZSh7IHR5cGUsIGRpY3ROYW1lIH0sIHByb3BzLCB2YWx1ZSwgdmFsdWVPcHRpb24sIGRhdGEpIHtcclxuICAgIGlmICh2YWx1ZU9wdGlvbikge1xyXG4gICAgICBpZiAoZGljdE5hbWUpIHtcclxuICAgICAgICBjb25zdCB7IGRpY3ROYW1lcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICBjb25zdCBuZXdOYW1lcyA9IHsgLi4uZGljdE5hbWVzIH0gYXMgYW55O1xyXG4gICAgICAgIG5ld05hbWVzW2RpY3ROYW1lXSA9IHZhbHVlT3B0aW9uLmxhYmVsO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgZGljdE5hbWVzOiBuZXdOYW1lcyxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHByb3BzLm9uQ2hhbmdlKSB7XHJcbiAgICAgIHByb3BzLm9uQ2hhbmdlKHZhbHVlLCB2YWx1ZU9wdGlvbiwgZGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW5kZXJGb3JtKGZvcm1zLCBsYWJlbCkge1xyXG4gICAgY29uc3QgbmV3VmFsaWQ6IGFueVtdID0gW107XHJcbiAgICByZXR1cm4gPFJvdyBndXR0ZXI9ezI0fT5cclxuICAgICAge2Zvcm1zLm1hcCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaXRlbVByb3BzID0gaXRlbS5wcm9wcyB8fCB7fTtcclxuICAgICAgICBpZiAoaXRlbVByb3BzLmZvcm1hdCB8fCBpdGVtUHJvcHMudmFsdWVGb3JtYXQpIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2l0ZW0ubmFtZV0gPVxyXG4gICAgICAgICAgICBpdGVtUHJvcHMuZm9ybWF0IHx8IGl0ZW1Qcm9wcy52YWx1ZUZvcm1hdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW1Qcm9wcy5mb3JtYXQpIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdFtpdGVtLm5hbWVdID0gaXRlbVByb3BzLmZvcm1hdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGFsbG93Q2hhcnMgPSBpdGVtLnByb3BzPy5hbGxvd0NoYXJzIHx8IGZhbHNlO1xyXG4gICAgICAgIGxldCBwcm9wcyA9IHtcclxuICAgICAgICAgIHBsYWNlaG9sZGVyOiBg6K+36L6T5YWlJHtpdGVtLmxhYmVsfWAsXHJcblxyXG4gICAgICAgICAgLi4uaXRlbS5wcm9wcyxcclxuICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLnZhbHVlQ2hhbmdlLmJpbmQoXHJcbiAgICAgICAgICAgIHRoaXMsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXHJcbiAgICAgICAgICAgICAgZGljdE5hbWU6IGl0ZW0uZGljdE5hbWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgLi4uaXRlbS5wcm9wcyB9XHJcbiAgICAgICAgICApLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKCFpdGVtLnR5cGUgfHwgaXRlbS50eXBlID09IFwiSW5wdXRcIikge1xyXG4gICAgICAgICAgcHJvcHMuYWxsb3dDaGFycyA9IHRydWU7XHJcbiAgICAgICAgICBwcm9wcy5zaG93Q291bnQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkZWxldGUgcHJvcHMudmFsdWVGb3JtYXQ7XHJcbiAgICAgICAgZGVsZXRlIHByb3BzLmZvcm1hdDtcclxuICAgICAgICBkZWxldGUgcHJvcHMuYWxsb3dDaGFycztcclxuICAgICAgICBpZiAobGFiZWwgPT0gXCLmn6XnnItcIikge1xyXG4gICAgICAgICAgcHJvcHMuZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGl0ZW0ucnVsZXMgJiYgaXRlbS5ydWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBuZXdWYWxpZC5wdXNoKGl0ZW0ubmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpbmRleCArIDEgPT09IGZvcm1zLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy52YWxpZCA9IG5ld1ZhbGlkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbS50eXBlICE9PSAnVXBsb2FkJykge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPENvbCBzcGFuPXtpdGVtLnNwYW4gfHwgMTJ9IGtleT17aW5kZXh9PlxyXG4gICAgICAgICAgICAgIDxGb3JtLkl0ZW1cclxuICAgICAgICAgICAgICAgIGxhYmVsPXtpdGVtLmxhYmVsfVxyXG4gICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgcnVsZXM9e2l0ZW0ucnVsZXN9XHJcbiAgICAgICAgICAgICAgICBhbGxvd0NoYXJzPXthbGxvd0NoYXJzfVxyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50TmFtZT17aXRlbS50eXBlID8gaXRlbS50eXBlIDogXCJJbnB1dFwifVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHtnZXROb2RlKGl0ZW0udHlwZSwge1xyXG4gICAgICAgICAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgIDwvRm9ybS5JdGVtPlxyXG4gICAgICAgICAgICA8L0NvbD5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZmlsZUZvcm1hdC5wdXNoKGl0ZW0ubmFtZSlcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxDb2wgc3Bhbj17aXRlbS5zcGFuIHx8IDEyfSBrZXk9e2luZGV4fT5cclxuICAgICAgICAgICAgICA8Rm9ybS5JdGVtXHJcbiAgICAgICAgICAgICAgICBsYWJlbD17aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgIG5hbWU9e2l0ZW0ubmFtZX1cclxuICAgICAgICAgICAgICAgIHJ1bGVzPXtpdGVtLnJ1bGVzfVxyXG4gICAgICAgICAgICAgICAgYWxsb3dDaGFycz17YWxsb3dDaGFyc31cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8VXBsb2FkXHJcbiAgICAgICAgICAgICAgICAgIGZpbGVMaXN0PXt0aGlzLnN0YXRlLmZpbGVMaXN0W2l0ZW0ubmFtZV0gfHwgW119XHJcbiAgICAgICAgICAgICAgICAgIG9uTGlzdENoYW5nZT17KGxpc3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxlTGlzdDogeyAuLi5maWxlTGlzdCwgW2l0ZW0ubmFtZV06IGxpc3QgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0PXt7IHNob3dEb3dubG9hZEljb246IHRydWUsIHNob3dSZW1vdmVJY29uOiBsYWJlbCAhPT0gJ+afpeeciycgfX1cclxuICAgICAgICAgICAgICAgICAgey4uLnByb3BzfT5cclxuICAgICAgICAgICAgICAgICAge2xhYmVsICE9PSAn5p+l55yLJyAmJiA8QnV0dG9uPuS4iuS8oOaWh+S7tjwvQnV0dG9uPn1cclxuICAgICAgICAgICAgICAgIDwvVXBsb2FkPlxyXG4gICAgICAgICAgICAgIDwvRm9ybS5JdGVtPlxyXG4gICAgICAgICAgICA8L0NvbD5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KX1cclxuICAgIDwvUm93PlxyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IGZvcm1zID0gW10sIG90aGVyUHJvcHMgPSB7fSwgZm9vdGVyID0gdHJ1ZSwgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGxvYWRpbmcsIGxhYmVsIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IG1vZGFsUHJvcHMgPSB7XHJcbiAgICAgIHRpdGxlOiBsYWJlbCxcclxuICAgICAgb25PazogdGhpcy5vblN1Ym1pdC5iaW5kKHRoaXMpLFxyXG4gICAgICBvbkNhbmNlbDogdGhpcy5oaWRlLmJpbmQodGhpcyksXHJcbiAgICAgIG9rQnV0dG9uUHJvcHM6IHsgbG9hZGluZzogbG9hZGluZyB9LFxyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNTB2d1wiLFxyXG4gICAgfSBhcyBhbnk7XHJcblxyXG5cclxuICAgIGxldCBkcmF3ZXJQcm9wcyA9IHtcclxuICAgICAgdGl0bGU6IGxhYmVsLFxyXG4gICAgICBvbk9rOiB0aGlzLm9uU3VibWl0LmJpbmQodGhpcyksXHJcbiAgICAgIG9uQ2xvc2U6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICB3aWR0aDogXCI1MHZ3XCIsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgIG1vZGFsUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgICAgZHJhd2VyUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0ZVZhbHVlRm9ybWF0ID0ge307XHJcbiAgICB0aGlzLmRhdGVGb3JtYXQgPSB7fTtcclxuICAgIHRoaXMuZmlsZUZvcm1hdCA9IFtdXHJcbiAgICBsZXQgbmV3Rm9ybXNPYmogPSB7fSBhcyBhbnk7XHJcbiAgICBsZXQgZm9ybUdyb3VwcyA9IFtdIGFzIGFueVxyXG4gICAgbGV0IG90aGVyR3J1cHMgPSBbXSBhcyBhbnlcclxuICAgIC8v5aSE55CG6KGo5Y2V5pWw5o2uXHJcbiAgICBmb3Jtcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS5ncm91cE5hbWUgJiYgZm9ybUdyb3Vwcy5pbmRleE9mKGl0ZW0uZ3JvdXBOYW1lKSA8IDApIHtcclxuICAgICAgICBmb3JtR3JvdXBzLnB1c2goaXRlbS5ncm91cE5hbWUpO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpdGVtLmdyb3VwTmFtZSkge1xyXG4gICAgICAgIG90aGVyR3J1cHMucHVzaChpdGVtKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgaWYgKGZvcm1Hcm91cHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3JtR3JvdXBzLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IGdyb3VwRm9ybXMgPSBbXSBhcyBhbnlcclxuICAgICAgICBmb3Jtcy5tYXAoKGZvcm06IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZvcm0uZ3JvdXBOYW1lID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgZ3JvdXBGb3Jtcy5wdXNoKGZvcm0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICBuZXdGb3Jtc09ialtpdGVtXSA9IGdyb3VwRm9ybXNcclxuICAgICAgfSlcclxuICAgICAgbmV3Rm9ybXNPYmpbJ25vR3JvdXBOYW1lJ10gPSBvdGhlckdydXBzXHJcbiAgICB9XHJcbiAgICAvL+iHquWumuS5ieaMiemSrlxyXG4gICAgbGV0IHNlbGZCdXR0b25zID0gW10gYXMgYW55O1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgdHlwZW9mIGl0ZW0gPT0gJ29iamVjdCcgJiYgc2VsZkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIHR5cGVvZiBjaGlsZHJlbiA9PSAnb2JqZWN0JyAmJiBzZWxmQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxGb3JtXHJcbiAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgc2hvd01vZGVsPXt0aGlzLnByb3BzLmZvcm1UeXBlfVxyXG4gICAgICAgIG1vZGFsUHJvcHM9e3sgLi4ubW9kYWxQcm9wcyB9fVxyXG4gICAgICAgIGRyYXdlclByb3BzPXt7IC4uLmRyYXdlclByb3BzIH19XHJcbiAgICAgICAgbGFiZWxDb2w9e3sgZmxleDogXCIxMDBweFwiIH19XHJcbiAgICAgICAgd3JhcHBlckNvbD17eyBmbGV4OiBcIjE1dndcIiB9fVxyXG4gICAgICAgIG9uVmFsdWVzQ2hhbmdlPXsoY2hhbmdlZFZhbHVlcywgYWxsVmFsdWVzKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB7IG9uRm9ybUNoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgIG9uRm9ybUNoYW5nZSAmJiBvbkZvcm1DaGFuZ2UoY2hhbmdlZFZhbHVlcywgYWxsVmFsdWVzKTtcclxuICAgICAgICB9fVxyXG4gICAgICAgIGNoYW5nZVZhbGlkPXt0aGlzLnByb3BzLmNoYW5nZVZhbGlkfVxyXG4gICAgICAgIHsuLi5vdGhlclByb3BzfVxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS1wYWdlXCI+XHJcbiAgICAgICAgICB7Zm9ybUdyb3Vwcy5sZW5ndGggPT0gMCA/IHRoaXMucmVuZGVyRm9ybShmb3JtcywgbGFiZWwpIDogT2JqZWN0LmtleXMobmV3Rm9ybXNPYmopLm1hcCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBrZXk9e2tleX0gY2xhc3NOYW1lPVwibnNjLWZvcm0tcGFuZVwiPlxyXG4gICAgICAgICAgICAgICAge2tleSAhPSBcIm5vR3JvdXBOYW1lXCIgJiYgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS10aXRsZVwiPntrZXl9PC9kaXY+fVxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS1jb250ZW50XCI+e3RoaXMucmVuZGVyRm9ybShuZXdGb3Jtc09ialtrZXldLCBsYWJlbCl9PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgeyF0aGlzLnByb3BzLmZvcm1UeXBlICYmIGZvb3RlciA9PSB0cnVlICYmXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoJ25zYy1mb3JtLXBhZ2UtZm9vdGVyJywgdGhpcy5wcm9wcy5mb290ZXJDbGFzc05hbWUpfT5cclxuICAgICAgICAgICAgICA8QnV0dG9uIHsuLi50aGlzLnByb3BzLmNhbmNlbEJ1dHRvblByb3BzfSBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkNhbmNlbCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FuY2VsKCk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgIH19PuWPlua2iDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxCdXR0b24gdHlwZT1cInByaW1hcnlcIiB7Li4udGhpcy5wcm9wcy5va0J1dHRvblByb3BzfVxyXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm9uU3VibWl0KClcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPXt0aGlzLnN0YXRlLmxvYWRpbmd9XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyduc2MtZm9ybS1wYWdlLWZvb3Rlci1idG4nfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIOS/neWtmFxyXG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgIHtzZWxmQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXsnbnNjLWZvcm0tcGFnZS1mb290ZXItYnRuJ30ga2V5PXtpbmRleH0+e2l0ZW19PC9kaXY+XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgeyF0aGlzLnByb3BzLmZvcm1UeXBlICYmIGZvb3RlciAhPT0gdHJ1ZSAmJiB0aGlzLnByb3BzLmZvb3Rlcn1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9Gb3JtPlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEZvcm1QYWdlO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsYUFBYSxRQUFtQixPQUFPO0FBQ3ZELE9BQU9DLElBQUksTUFBTSxpQkFBaUI7QUFDbEMsU0FBa0JDLE9BQU8sUUFBUSxhQUFhO0FBQzlDLE9BQU9DLE9BQU8sTUFBTSxvQkFBb0I7QUFDeEMsT0FBT0MsR0FBRyxNQUFNLHFCQUFxQjtBQUNyQyxPQUFPQyxHQUFHLE1BQU0s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
488
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiZ2V0Tm9kZSIsIm1lc3NhZ2UiLCJDb2wiLCJSb3ciLCJpc0VtcHR5T2JqIiwiZGF5anMiLCJsb2Rhc2giLCJCdXR0b24iLCJVcGxvYWQiLCJjbHMiLCJGb3JtUGFnZSIsImNvbnN0cnVjdG9yIiwiYXJndW1lbnRzIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwibG9hZGluZyIsImxhYmVsIiwiZWRpdG9yRmxhZyIsInZhbHVlIiwiZGljdE5hbWVzIiwiZmlsZUxpc3QiLCJzaG93Iiwib3JnVmFsdWUiLCJlZGl0b3JmbGFnIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwic2V0U3RhdGUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQiLCJjb252ZXJ0VmFsdWUiLCJmb3JtUmVmIiwiY3VycmVudCIsInNob3dGb3JtIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50MiIsInByb3BzIiwiZGVmYXVsdFZhbHVlIiwiaGlkZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDMiLCJvbkhpZGVGb3JtIiwiaGlkZUZvcm0iLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ0Iiwic2V0TG9hZGluZyIsImdldEZvcm1WYWx1ZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDUiLCJzdGF0ZSIsImZvcm1WYWx1ZSIsImdldEZpZWxkc1ZhbHVlIiwiZGF0YSIsIl9vYmplY3RTcHJlYWQiLCJmaWxlRm9ybWF0IiwibmV3RmlsZUxpc3QiLCJtYXAiLCJpdGVtIiwiZ2V0RmlsZUxpc3QiLCJzdWJtaXRGbGFnIiwiZXJyb3IiLCJkYXRlVmFsdWVGb3JtYXQiLCJrZXkiLCJvbGRkYXRhIiwiQXJyYXkiLCJpc0FycmF5IiwiZm9ybWF0IiwiaWQiLCJ0eXBlIiwidmFsdWVzIiwiY2xvbmVEZWVwIiwiZGF0ZUZvcm1hdCIsInNldEZvcm1WYWx1ZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDYiLCJuZXdWYWx1ZSIsInNldEZpZWxkc1ZhbHVlIiwiZG9TdWJtaXQiLCJmb3JtZGF0YSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDciLCJzdWJtaXRVcmwiLCJzdWJtaXRQYXJhbXMiLCJjYWxsQmFjayIsImNvbnNvbGUiLCJvdGhlclBhcmFtcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIm9uU3VibWl0Iiwibm9VbmRlZmluZWQiLCJyZXMiLCJjb2RlIiwic3VjY2VzcyIsIm9iaiIsImZpbGVJZCIsImZpbGVOYW1lIiwic3RhdHVzIiwicHVzaCIsIl90aGlzJGZvcm1SZWYkY3VycmVudDgiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ5IiwidmFsaWQiLCJ2YWxpZGF0ZUZpZWxkcyIsInRoZW4iLCJjYXRjaCIsImVycm9ySW5mbyIsInZhbHVlQ2hhbmdlIiwiX3JlZiIsInZhbHVlT3B0aW9uIiwiZGljdE5hbWUiLCJuZXdOYW1lcyIsIm9uQ2hhbmdlIiwicmVuZGVyRm9ybSIsImZvcm1zIiwibmV3VmFsaWQiLCJjcmVhdGVFbGVtZW50IiwiZ3V0dGVyIiwiaW5kZXgiLCJfaXRlbSRwcm9wcyIsIml0ZW1Qcm9wcyIsInZhbHVlRm9ybWF0IiwibmFtZSIsImFsbG93Q2hhcnMiLCJwbGFjZWhvbGRlciIsImNvbmNhdCIsImJpbmQiLCJzaG93Q291bnQiLCJkaXNhYmxlZCIsInJ1bGVzIiwic3BhbiIsIkl0ZW0iLCJjb21wb25lbnROYW1lIiwiX2V4dGVuZHMiLCJvbkxpc3RDaGFuZ2UiLCJsaXN0Iiwic2hvd1VwbG9hZExpc3QiLCJzaG93RG93bmxvYWRJY29uIiwic2hvd1JlbW92ZUljb24iLCJjaGlsZHJlbiIsInJlbmRlciIsIm90aGVyUHJvcHMiLCJmb290ZXIiLCJtb2RhbFByb3BzIiwidGl0bGUiLCJvbk9rIiwib25DYW5jZWwiLCJva0J1dHRvblByb3BzIiwiY2VudGVyZWQiLCJ3aWR0aCIsImRyYXdlclByb3BzIiwib25DbG9zZSIsIm5ld0Zvcm1zT2JqIiwiZm9ybUdyb3VwcyIsIm90aGVyR3J1cHMiLCJncm91cE5hbWUiLCJpbmRleE9mIiwiZ3JvdXBGb3JtcyIsImZvcm0iLCJzZWxmQnV0dG9ucyIsInJlZiIsInNob3dNb2RlbCIsImZvcm1UeXBlIiwibGFiZWxDb2wiLCJmbGV4Iiwid3JhcHBlckNvbCIsIm9uVmFsdWVzQ2hhbmdlIiwiY2hhbmdlZFZhbHVlcyIsImFsbFZhbHVlcyIsIm9uRm9ybUNoYW5nZSIsImNoYW5nZVZhbGlkIiwiY2xhc3NOYW1lIiwiT2JqZWN0Iiwia2V5cyIsImZvb3RlckNsYXNzTmFtZSIsImNhbmNlbEJ1dHRvblByb3BzIiwib25DbGljayJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvRm9ybVBhZ2UvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50LCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IEZvcm0gZnJvbSBcIi4uLy4uL2Jhc2UvZm9ybVwiO1xyXG5pbXBvcnQgeyBnZXRMZXNzLCBnZXROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCBtZXNzYWdlIGZyb20gXCIuLi8uLi9iYXNlL21lc3NhZ2VcIjtcclxuaW1wb3J0IENvbCBmcm9tIFwiLi4vLi4vYmFzZS9ncmlkL0NvbFwiO1xyXG5pbXBvcnQgUm93IGZyb20gXCIuLi8uLi9iYXNlL2dyaWQvUm93XCI7XHJcbmltcG9ydCB7IGlzRW1wdHlPYmogfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xyXG5pbXBvcnQgXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmltcG9ydCBsb2Rhc2ggZnJvbSBcImxvZGFzaFwiO1xyXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi8uLi9iYXNlL2J1dHRvblwiO1xyXG5pbXBvcnQgVXBsb2FkIGZyb20gJy4uLy4uL2Jhc2UvdXBsb2FkJ1xyXG5pbXBvcnQgY2xzIGZyb20gJ2NsYXNzbmFtZXMnXHJcbmludGVyZmFjZSBGb3JtUGFnZVByb3BzIHtcclxuICBmb3Jtcz86IEFycmF5PGFueT47IC8v5piv5ZCm5pi+56S65pON5L2c5YiXXHJcbiAgc3VibWl0VXJsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0PzogKHZhbHVlPzogYW55LCBsYWJlbD86IGFueSkgPT4gdm9pZDtcclxuICBmb290ZXJDbGFzc05hbWU/OiBhbnk7XHJcbiAgb2tCdXR0b25Qcm9wcz86IGFueTtcclxuICBjYW5jZWxCdXR0b25Qcm9wcz86IGFueTtcclxuICBmb290ZXI/OiBSZWFjdE5vZGUgfCBib29sZWFuO1xyXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xyXG4gIG9uRm9ybUNoYW5nZT86ICh2YWx1ZT86IGFueSwgYWxsVmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgc3VibWl0UGFyYW1zPzogYW55OyAvL+a3u+WKoOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2RhdGHkvKDpgJJcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuY2xhc3MgRm9ybVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PEZvcm1QYWdlUHJvcHMsIGFueT4ge1xyXG4gIGZvcm1SZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHN0YXRlID0ge1xyXG4gICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICBsYWJlbDogXCJcIixcclxuICAgIGVkaXRvckZsYWc6IHRydWUsXHJcbiAgICB2YWx1ZToge30gYXMgYW55LFxyXG4gICAgZGljdE5hbWVzOiB7fSBhcyBhbnksXHJcbiAgICBmaWxlTGlzdDoge30gYXMgYW55XHJcbiAgfTtcclxuICB2YWxpZDogYW55ID0gW107XHJcbiAgZGF0ZVZhbHVlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIGRhdGVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgZmlsZUZvcm1hdCA9IFtdIGFzIGFueTtcclxuICBzdWJtaXRGbGFnID0gdHJ1ZVxyXG4gIC8v6KGo5Y2V5pi+56S6XHJcbiAgc2hvdyhvcmdWYWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIpIHtcclxuICAgIGxldCBsYWJlbCA9IFwi5paw5aKeXCI7XHJcbiAgICBpZiAob3JnVmFsdWUgJiYgZWRpdG9yZmxhZyA9PSBcImVkaXRvclwiKSB7XHJcbiAgICAgIGxhYmVsID0gXCLnvJbovpFcIjtcclxuICAgIH0gZWxzZSBpZiAob3JnVmFsdWUgJiYgZWRpdG9yZmxhZyA9PSBcImRldGFpbFwiKSB7XHJcbiAgICAgIGxhYmVsID0gXCLmn6XnnItcIjtcclxuICAgIH1cclxuICAgIGlmIChvcmdWYWx1ZSkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiBsYWJlbCxcclxuICAgICAgICAgIHZhbHVlOiBvcmdWYWx1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuY29udmVydFZhbHVlKG9yZ1ZhbHVlLCBsYWJlbCk7XHJcbiAgICAgICAgICAvL+WkhOeQhuaWh+S7tuaVsOaNrlxyXG4gICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNob3dGb3JtKHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiBsYWJlbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zaG93Rm9ybSh0aGlzLnByb3BzLmRlZmF1bHRWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuICBoaWRlKGhpZGUgPSB0cnVlKSB7XHJcbiAgICBjb25zdCB7IG9uSGlkZUZvcm0gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAob25IaWRlRm9ybSkge1xyXG4gICAgICBvbkhpZGVGb3JtICYmIG9uSGlkZUZvcm0oKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlLCBmaWxlTGlzdDoge30gfSk7XHJcbiAgICBoaWRlICYmIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSwgZmlsZUxpc3Q6IHt9IH0pO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG4gIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGxvYWRpbmcgfSk7XHJcbiAgfVxyXG4gIGdldEZvcm1WYWx1ZSgpIHtcclxuICAgIGNvbnN0IHsgbGFiZWwsIHZhbHVlLCBkaWN0TmFtZXMsIGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgICBsZXQgZGF0YSA9IHsgLi4uZm9ybVZhbHVlLCAuLi5kaWN0TmFtZXMgfTtcclxuICAgIGlmICh0aGlzLmZpbGVGb3JtYXQubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgbmV3RmlsZUxpc3QgPSB7fSBhcyBhbnk7XHJcbiAgICAgIHRoaXMuZmlsZUZvcm1hdC5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBpZiAoZmlsZUxpc3RbaXRlbV0ubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgIG5ld0ZpbGVMaXN0W2l0ZW1dID0gbnVsbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCFmb3JtVmFsdWVbaXRlbV0pIHtcclxuICAgICAgICAgICAgbmV3RmlsZUxpc3RbaXRlbV0gPSB0aGlzLmdldEZpbGVMaXN0KGZpbGVMaXN0W2l0ZW1dIHx8IFtdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIGRhdGEgPSB7IC4uLmRhdGEsIC4uLm5ld0ZpbGVMaXN0IH07XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuc3VibWl0RmxhZykge1xyXG4gICAgICBtZXNzYWdlLmVycm9yKCfor7fnrYnlvoXmiYDmnInmlofku7bkuIrkvKDlrozmiJDvvIEnKVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzRW1wdHlPYmoodGhpcy5kYXRlVmFsdWVGb3JtYXQpKSB7XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmRhdGVWYWx1ZUZvcm1hdCkge1xyXG4gICAgICAgIGxldCBvbGRkYXRhID0gZGF0YVtrZXldO1xyXG4gICAgICAgIGlmIChvbGRkYXRhKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgICBkYXRhW2tleV0gPSBbXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVswXSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgIGRheWpzKG9sZGRhdGFbMV0pLmZvcm1hdCh0aGlzLmRhdGVWYWx1ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGRhdGFba2V5XSA9IGRheWpzKG9sZGRhdGEpLmZvcm1hdCh0aGlzLmRhdGVWYWx1ZUZvcm1hdFtrZXldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChsYWJlbCA9PSBcIue8lui+kVwiKSB7XHJcbiAgICAgIGRhdGEgPSB7IC4uLmRhdGEsIGlkOiB2YWx1ZT8uaWQgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuICBjb252ZXJ0VmFsdWUodmFsdWUsIHR5cGUpIHtcclxuICAgIGxldCB2YWx1ZXMgPSBsb2Rhc2guY2xvbmVEZWVwKHZhbHVlKTtcclxuICAgIGlmICh0aGlzLmZpbGVGb3JtYXQubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgZmlsZUxpc3QgPSB7fSBhcyBhbnk7XHJcbiAgICAgIHRoaXMuZmlsZUZvcm1hdC5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBsZXQgb2xkZGF0YSA9IHZhbHVlc1tpdGVtXTtcclxuICAgICAgICBpZihvbGRkYXRhICYmIEFycmF5LmlzQXJyYXkob2xkZGF0YSkpe1xyXG4gICAgICAgICAgZmlsZUxpc3RbaXRlbV0gPSB0aGlzLmdldEZpbGVMaXN0KG9sZGRhdGEgfHwgW10sIHR5cGUpO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgZmlsZUxpc3RbaXRlbV09W11cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBmaWxlTGlzdDogZmlsZUxpc3QgfSlcclxuICAgIH1cclxuICAgIC8v5aSE55CG5pel5pyf5qC85byP5pWw5o2uXHJcbiAgICBpZiAoIWlzRW1wdHlPYmoodGhpcy5kYXRlRm9ybWF0KSkge1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5kYXRlRm9ybWF0KSB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSB2YWx1ZVtrZXldO1xyXG4gICAgICAgIGlmIChvbGRkYXRhKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgICB2YWx1ZVtrZXldID0gW1xyXG4gICAgICAgICAgICAgIGRheWpzKG9sZGRhdGFbMF0sIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICBkYXlqcyhvbGRkYXRhWzFdLCB0aGlzLmRhdGVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YWx1ZVtrZXldID0gZGF5anMob2xkZGF0YSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlc1xyXG4gIH1cclxuICBzZXRGb3JtVmFsdWUodmFsdWUsIHR5cGUpIHtcclxuICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5jb252ZXJ0VmFsdWUodmFsdWUsIHR5cGUpO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNldEZpZWxkc1ZhbHVlKG5ld1ZhbHVlKTtcclxuICB9XHJcbiAgZG9TdWJtaXQoZm9ybWRhdGEsIGxhYmVsKSB7XHJcbiAgICBjb25zdCB7IHN1Ym1pdFVybCwgc3VibWl0UGFyYW1zID0ge30sIGNhbGxCYWNrIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFzdWJtaXRVcmwpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcInN1Ym1pdFVybOS4jeiDveS4uuepuu+8gVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBkYXRhID0ge30sIC4uLm90aGVyUGFyYW1zIH0gPSBzdWJtaXRQYXJhbXNcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5vblN1Ym1pdChcclxuICAgICAgc3VibWl0VXJsLFxyXG4gICAgICB7XHJcbiAgICAgICAgZGF0YTogeyAuLi5mb3JtZGF0YSwgLi4uZGF0YSB9LFxyXG4gICAgICAgIG5vVW5kZWZpbmVkOiBsYWJlbCA9PSBcIue8lui+kVwiLFxyXG4gICAgICAgIC4uLm90aGVyUGFyYW1zLFxyXG4gICAgICB9LFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCB7IGNvZGUgfSA9IHJlcztcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgaWYgKGNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKGxhYmVsICsgXCLmiJDlip9cIik7XHJcbiAgICAgICAgICB0aGlzLmhpZGUodHJ1ZSk7XHJcbiAgICAgICAgICBjYWxsQmFjayAmJiBjYWxsQmFjaygpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmhpZGUoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuICBnZXRGaWxlTGlzdChkYXRhLCBsYWJlbCA9ICfmlrDlop4nKSB7XHJcbiAgICB0aGlzLnN1Ym1pdEZsYWcgPSB0cnVlXHJcbiAgICBsZXQgZmlsZUxpc3QgPSBbXSBhcyBhbnk7XHJcbiAgICBpZiAoZGF0YSAmJiBkYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgZGF0YS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBsZXQgb2JqID0ge1xyXG4gICAgICAgICAgZmlsZUlkOiBpdGVtLmZpbGVJZCxcclxuICAgICAgICAgIGZpbGVOYW1lOiBpdGVtLmZpbGVOYW1lLFxyXG4gICAgICAgIH0gYXMgYW55O1xyXG4gICAgICAgIGlmIChsYWJlbCA9PSAn5p+l55yLJykge1xyXG4gICAgICAgICAgb2JqLnN0YXR1cyA9ICdkb25lJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxhYmVsICE9PSAn5p+l55yLJyAmJiBpdGVtLnN0YXR1cyAhPT0gJ2RvbmUnKSB7XHJcbiAgICAgICAgICB0aGlzLnN1Ym1pdEZsYWcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmlsZUxpc3QucHVzaChvYmopO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmaWxlTGlzdDtcclxuICB9O1xyXG5cclxuICBvblN1Ym1pdCgpIHtcclxuICAgIGNvbnN0IHsgb25TdWJtaXQgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSwgZGljdE5hbWVzLCBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gICAgbGV0IHZhbGlkID0gdGhpcy52YWxpZDtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50XHJcbiAgICAgID8udmFsaWRhdGVGaWVsZHModmFsaWQpXHJcbiAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICBsZXQgZGF0YSA9IHRoaXMuZ2V0Rm9ybVZhbHVlKClcclxuICAgICAgICBpZiAoIXRoaXMuc3VibWl0RmxhZykge1xyXG4gICAgICAgICAgbWVzc2FnZS5lcnJvcign6K+3562J5b6F5omA5pyJ5paH5Lu25LiK5Lyg5a6M5oiQ77yBJylcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IHRydWUgfSk7XHJcbiAgICAgICAgaWYgKG9uU3VibWl0KSB7XHJcbiAgICAgICAgICBvblN1Ym1pdCAmJiBvblN1Ym1pdChkYXRhLCBsYWJlbCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZG9TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycm9ySW5mbzogYW55KSA9PiB7IH0pO1xyXG4gIH1cclxuICB2YWx1ZUNoYW5nZSh7IHR5cGUsIGRpY3ROYW1lIH0sIHByb3BzLCB2YWx1ZSwgdmFsdWVPcHRpb24sIGRhdGEpIHtcclxuICAgIGlmICh2YWx1ZU9wdGlvbikge1xyXG4gICAgICBpZiAoZGljdE5hbWUpIHtcclxuICAgICAgICBjb25zdCB7IGRpY3ROYW1lcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICBjb25zdCBuZXdOYW1lcyA9IHsgLi4uZGljdE5hbWVzIH0gYXMgYW55O1xyXG4gICAgICAgIG5ld05hbWVzW2RpY3ROYW1lXSA9IHZhbHVlT3B0aW9uLmxhYmVsO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgZGljdE5hbWVzOiBuZXdOYW1lcyxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHByb3BzLm9uQ2hhbmdlKSB7XHJcbiAgICAgIHByb3BzLm9uQ2hhbmdlKHZhbHVlLCB2YWx1ZU9wdGlvbiwgZGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW5kZXJGb3JtKGZvcm1zLCBsYWJlbCkge1xyXG4gICAgY29uc3QgbmV3VmFsaWQ6IGFueVtdID0gW107XHJcbiAgICByZXR1cm4gPFJvdyBndXR0ZXI9ezI0fT5cclxuICAgICAge2Zvcm1zLm1hcCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaXRlbVByb3BzID0gaXRlbS5wcm9wcyB8fCB7fTtcclxuICAgICAgICBpZiAoaXRlbVByb3BzLmZvcm1hdCB8fCBpdGVtUHJvcHMudmFsdWVGb3JtYXQpIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2l0ZW0ubmFtZV0gPVxyXG4gICAgICAgICAgICBpdGVtUHJvcHMuZm9ybWF0IHx8IGl0ZW1Qcm9wcy52YWx1ZUZvcm1hdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW1Qcm9wcy5mb3JtYXQpIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdFtpdGVtLm5hbWVdID0gaXRlbVByb3BzLmZvcm1hdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGFsbG93Q2hhcnMgPSBpdGVtLnByb3BzPy5hbGxvd0NoYXJzIHx8IGZhbHNlO1xyXG4gICAgICAgIGxldCBwcm9wcyA9IHtcclxuICAgICAgICAgIHBsYWNlaG9sZGVyOiBg6K+36L6T5YWlJHtpdGVtLmxhYmVsfWAsXHJcbiAgICAgICAgICAuLi5pdGVtLnByb3BzLFxyXG4gICAgICAgICAgb25DaGFuZ2U6IHRoaXMudmFsdWVDaGFuZ2UuYmluZChcclxuICAgICAgICAgICAgdGhpcyxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSxcclxuICAgICAgICAgICAgICBkaWN0TmFtZTogaXRlbS5kaWN0TmFtZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAuLi5pdGVtLnByb3BzIH1cclxuICAgICAgICAgICksXHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAoIWl0ZW0udHlwZSB8fCBpdGVtLnR5cGUgPT0gXCJJbnB1dFwiKSB7XHJcbiAgICAgICAgICBwcm9wcy5hbGxvd0NoYXJzID0gdHJ1ZTtcclxuICAgICAgICAgIHByb3BzLnNob3dDb3VudCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlbGV0ZSBwcm9wcy52YWx1ZUZvcm1hdDtcclxuICAgICAgICBkZWxldGUgcHJvcHMuZm9ybWF0O1xyXG4gICAgICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgICAgICBwcm9wcy5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICBwcm9wcy5wbGFjZWhvbGRlciA9ICcnXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaXRlbS5ydWxlcyAmJiBpdGVtLnJ1bGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIG5ld1ZhbGlkLnB1c2goaXRlbS5uYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGluZGV4ICsgMSA9PT0gZm9ybXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkID0gbmV3VmFsaWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtLnR5cGUgIT09ICdVcGxvYWQnKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8Q29sIHNwYW49e2l0ZW0uc3BhbiB8fCAxMn0ga2V5PXtpbmRleH0+XHJcbiAgICAgICAgICAgICAgPEZvcm0uSXRlbVxyXG4gICAgICAgICAgICAgICAgbGFiZWw9e2l0ZW0ubGFiZWx9XHJcbiAgICAgICAgICAgICAgICBuYW1lPXtpdGVtLm5hbWV9XHJcbiAgICAgICAgICAgICAgICBydWxlcz17aXRlbS5ydWxlc31cclxuICAgICAgICAgICAgICAgIGFsbG93Q2hhcnM9e2FsbG93Q2hhcnN9XHJcbiAgICAgICAgICAgICAgICBjb21wb25lbnROYW1lPXtpdGVtLnR5cGUgPyBpdGVtLnR5cGUgOiBcIklucHV0XCJ9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge2dldE5vZGUoaXRlbS50eXBlLCB7XHJcbiAgICAgICAgICAgICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XHJcbiAgICAgICAgICAgIDwvQ29sPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5maWxlRm9ybWF0LnB1c2goaXRlbS5uYW1lKVxyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPENvbCBzcGFuPXtpdGVtLnNwYW4gfHwgMTJ9IGtleT17aW5kZXh9PlxyXG4gICAgICAgICAgICAgIDxGb3JtLkl0ZW1cclxuICAgICAgICAgICAgICAgIGxhYmVsPXtpdGVtLmxhYmVsfVxyXG4gICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgcnVsZXM9e2l0ZW0ucnVsZXN9XHJcbiAgICAgICAgICAgICAgICBhbGxvd0NoYXJzPXthbGxvd0NoYXJzfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxVcGxvYWRcclxuICAgICAgICAgICAgICAgICAgZmlsZUxpc3Q9e3RoaXMuc3RhdGUuZmlsZUxpc3RbaXRlbS5uYW1lXSB8fCBbXX1cclxuICAgICAgICAgICAgICAgICAgb25MaXN0Q2hhbmdlPXsobGlzdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGVcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgIGZpbGVMaXN0OiB7IC4uLmZpbGVMaXN0LCBbaXRlbS5uYW1lXTogbGlzdCB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3Q9e3sgc2hvd0Rvd25sb2FkSWNvbjogdHJ1ZSwgc2hvd1JlbW92ZUljb246IGxhYmVsICE9PSAn5p+l55yLJyB9fVxyXG4gICAgICAgICAgICAgICAgICB7Li4ucHJvcHN9PlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbS5wcm9wcy5jaGlsZHJlbiA/IGl0ZW0ucHJvcHMuY2hpbGRyZW4gOiAobGFiZWwgIT09ICfmn6XnnIsnICYmIDxCdXR0b24+5LiK5Lyg5paH5Lu2PC9CdXR0b24+KX1cclxuICAgICAgICAgICAgICAgIDwvVXBsb2FkPlxyXG4gICAgICAgICAgICAgIDwvRm9ybS5JdGVtPlxyXG4gICAgICAgICAgICA8L0NvbD5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KX1cclxuICAgIDwvUm93PlxyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IGZvcm1zID0gW10sIG90aGVyUHJvcHMgPSB7fSwgZm9vdGVyID0gdHJ1ZSwgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGxvYWRpbmcsIGxhYmVsIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IG1vZGFsUHJvcHMgPSB7XHJcbiAgICAgIHRpdGxlOiBsYWJlbCxcclxuICAgICAgb25PazogdGhpcy5vblN1Ym1pdC5iaW5kKHRoaXMpLFxyXG4gICAgICBvbkNhbmNlbDogdGhpcy5oaWRlLmJpbmQodGhpcyksXHJcbiAgICAgIG9rQnV0dG9uUHJvcHM6IHsgbG9hZGluZzogbG9hZGluZyB9LFxyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNTB2d1wiLFxyXG4gICAgfSBhcyBhbnk7XHJcblxyXG5cclxuICAgIGxldCBkcmF3ZXJQcm9wcyA9IHtcclxuICAgICAgdGl0bGU6IGxhYmVsLFxyXG4gICAgICBvbk9rOiB0aGlzLm9uU3VibWl0LmJpbmQodGhpcyksXHJcbiAgICAgIG9uQ2xvc2U6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICB3aWR0aDogXCI1MHZ3XCIsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgIG1vZGFsUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgICAgZHJhd2VyUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0ZVZhbHVlRm9ybWF0ID0ge307XHJcbiAgICB0aGlzLmRhdGVGb3JtYXQgPSB7fTtcclxuICAgIHRoaXMuZmlsZUZvcm1hdCA9IFtdXHJcbiAgICBsZXQgbmV3Rm9ybXNPYmogPSB7fSBhcyBhbnk7XHJcbiAgICBsZXQgZm9ybUdyb3VwcyA9IFtdIGFzIGFueVxyXG4gICAgbGV0IG90aGVyR3J1cHMgPSBbXSBhcyBhbnlcclxuICAgIC8v5aSE55CG6KGo5Y2V5pWw5o2uXHJcbiAgICBmb3Jtcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS5ncm91cE5hbWUgJiYgZm9ybUdyb3Vwcy5pbmRleE9mKGl0ZW0uZ3JvdXBOYW1lKSA8IDApIHtcclxuICAgICAgICBmb3JtR3JvdXBzLnB1c2goaXRlbS5ncm91cE5hbWUpO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpdGVtLmdyb3VwTmFtZSkge1xyXG4gICAgICAgIG90aGVyR3J1cHMucHVzaChpdGVtKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgaWYgKGZvcm1Hcm91cHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3JtR3JvdXBzLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IGdyb3VwRm9ybXMgPSBbXSBhcyBhbnlcclxuICAgICAgICBmb3Jtcy5tYXAoKGZvcm06IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZvcm0uZ3JvdXBOYW1lID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgZ3JvdXBGb3Jtcy5wdXNoKGZvcm0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICBuZXdGb3Jtc09ialtpdGVtXSA9IGdyb3VwRm9ybXNcclxuICAgICAgfSlcclxuICAgICAgbmV3Rm9ybXNPYmpbJ25vR3JvdXBOYW1lJ10gPSBvdGhlckdydXBzXHJcbiAgICB9XHJcbiAgICAvL+iHquWumuS5ieaMiemSrlxyXG4gICAgbGV0IHNlbGZCdXR0b25zID0gW10gYXMgYW55O1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgdHlwZW9mIGl0ZW0gPT0gJ29iamVjdCcgJiYgc2VsZkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIHR5cGVvZiBjaGlsZHJlbiA9PSAnb2JqZWN0JyAmJiBzZWxmQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxGb3JtXHJcbiAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgc2hvd01vZGVsPXt0aGlzLnByb3BzLmZvcm1UeXBlfVxyXG4gICAgICAgIG1vZGFsUHJvcHM9e3sgLi4ubW9kYWxQcm9wcyB9fVxyXG4gICAgICAgIGRyYXdlclByb3BzPXt7IC4uLmRyYXdlclByb3BzIH19XHJcbiAgICAgICAgbGFiZWxDb2w9e3sgZmxleDogXCIxMDBweFwiIH19XHJcbiAgICAgICAgd3JhcHBlckNvbD17eyBmbGV4OiBcIjE1dndcIiB9fVxyXG4gICAgICAgIG9uVmFsdWVzQ2hhbmdlPXsoY2hhbmdlZFZhbHVlcywgYWxsVmFsdWVzKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB7IG9uRm9ybUNoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgIG9uRm9ybUNoYW5nZSAmJiBvbkZvcm1DaGFuZ2UoY2hhbmdlZFZhbHVlcywgYWxsVmFsdWVzKTtcclxuICAgICAgICB9fVxyXG4gICAgICAgIGNoYW5nZVZhbGlkPXt0aGlzLnByb3BzLmNoYW5nZVZhbGlkfVxyXG4gICAgICAgIHsuLi5vdGhlclByb3BzfVxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS1wYWdlXCI+XHJcbiAgICAgICAgICB7Zm9ybUdyb3Vwcy5sZW5ndGggPT0gMCA/IHRoaXMucmVuZGVyRm9ybShmb3JtcywgbGFiZWwpIDogT2JqZWN0LmtleXMobmV3Rm9ybXNPYmopLm1hcCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBrZXk9e2tleX0gY2xhc3NOYW1lPVwibnNjLWZvcm0tcGFuZVwiPlxyXG4gICAgICAgICAgICAgICAge2tleSAhPSBcIm5vR3JvdXBOYW1lXCIgJiYgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS10aXRsZVwiPntrZXl9PC9kaXY+fVxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS1jb250ZW50XCI+e3RoaXMucmVuZGVyRm9ybShuZXdGb3Jtc09ialtrZXldLCBsYWJlbCl9PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgeyF0aGlzLnByb3BzLmZvcm1UeXBlICYmIGZvb3RlciA9PSB0cnVlICYmXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoJ25zYy1mb3JtLXBhZ2UtZm9vdGVyJywgdGhpcy5wcm9wcy5mb290ZXJDbGFzc05hbWUpfT5cclxuICAgICAgICAgICAgICA8QnV0dG9uIHsuLi50aGlzLnByb3BzLmNhbmNlbEJ1dHRvblByb3BzfSBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkNhbmNlbCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FuY2VsKCk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgIH19PuWPlua2iDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxCdXR0b24gdHlwZT1cInByaW1hcnlcIiB7Li4udGhpcy5wcm9wcy5va0J1dHRvblByb3BzfVxyXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm9uU3VibWl0KClcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPXt0aGlzLnN0YXRlLmxvYWRpbmd9XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyduc2MtZm9ybS1wYWdlLWZvb3Rlci1idG4nfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIOS/neWtmFxyXG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgIHtzZWxmQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXsnbnNjLWZvcm0tcGFnZS1mb290ZXItYnRuJ30ga2V5PXtpbmRleH0+e2l0ZW19PC9kaXY+XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgeyF0aGlzLnByb3BzLmZvcm1UeXBlICYmIGZvb3RlciAhPT0gdHJ1ZSAmJiB0aGlzLnByb3BzLmZvb3Rlcn1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9Gb3JtPlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEZvcm1QYWdlO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsYUFBYSxRQUFtQixPQUFPO0FBQ3ZELE9BQU9DLElBQUksTUFBTSxpQkFBaUI7QUFDbEMsU0FBa0JDLE9BQU8sUUFBUSxhQUFhO0FBQzlDLE9BQU9DLE9BQU8sTUFBTSxvQkFBb0I7QUFDeEMsT0FBT0MsR0FBRyxNQUFNLHFCQUFxQjtBQUNyQyxPQUFPQyxHQUFHLE1BQU0scUJBQXFCO0FBQ3JDLFNBQVNDLFVBQVUsUUFBUSxtQkFBbUI7QUFDOUMsT0FBT0MsS0FBSyxNQUFNLE9BQU87QUFDekIsT0FBTyxxQkFBcUI7QUFDNUIsT0FBT0MsTUFBTSxNQUFNLFFBQVE7QUFDM0IsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPQyxNQUFNLE1BQU0sbUJBQW1CO0FBQ3RDLE9BQU9DLEdBQUcsTUFBTSxZQUFZO0FBYzVCLE1BQU1DLFFBQVEsU0FBU1osYUFBYSxDQUFxQjtFQUFBYSxZQUFBO0lBQUEsU0FBQUMsU0FBQTtJQUFBQyxlQUFBLCtCQUM3Q2hCLEtBQUssQ0FBQ2lCLFNBQVMsQ0FBTSxDQUFDO0lBQUFELGVBQUEsZ0JBQ3hCO01BQ05FLE9BQU8sRUFBRSxLQUFLO01BQ2RDLEtBQUssRUFBRSxFQUFFO01BQ1RDLFVBQVUsRUFBRSxJQUFJO01BQ2hCQyxLQUFLLEVBQUUsQ0FBQyxDQUFRO01BQ2hCQyxTQUFTLEVBQUUsQ0FBQyxDQUFRO01BQ3BCQyxRQUFRLEVBQUUsQ0FBQztJQUNiLENBQUM7SUFBQVAsZUFBQSxnQkFDWSxFQUFFO0lBQUFBLGVBQUEsMEJBQ0csQ0FBQyxDQUFDO0lBQUFBLGVBQUEscUJBQ1AsQ0FBQyxDQUFDO0lBQUFBLGVBQUEscUJB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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","PureComponent","Form","getNode","message","Col","Row","isEmptyObj","dayjs","lodash","Button","Upload","cls","FormPage","constructor","arguments","_defineProperty","createRef","loading","label","editorFlag","value","dictNames","fileList","show","orgValue","editorflag","length","undefined","setState","_this$formRef$current","convertValue","formRef","current","showForm","_this$formRef$current2","props","defaultValue","hide","_this$formRef$current3","onHideForm","hideForm","_this$formRef$current4","setLoading","getFormValue","_this$formRef$current5","state","formValue","getFieldsValue","data","_objectSpread","fileFormat","newFileList","map","item","getFileList","submitFlag","error","dateValueFormat","key","olddata","Array","isArray","format","id","type","values","cloneDeep","dateFormat","setFormValue","_this$formRef$current6","newValue","setFieldsValue","doSubmit","formdata","_this$formRef$current7","submitUrl","submitParams","callBack","console","otherParams","_objectWithoutProperties","_excluded","onSubmit","noUndefined","res","code","success","obj","fileId","fileName","status","push","_this$formRef$current8","_this$formRef$current9","valid","validateFields","then","catch","errorInfo","valueChange","_ref","valueOption","dictName","newNames","onChange","renderForm","forms","newValid","createElement","gutter","index","_item$props","itemProps","valueFormat","name","allowChars","placeholder","concat","bind","showCount","disabled","rules","span","Item","componentName","_extends","onListChange","list","showUploadList","showDownloadIcon","showRemoveIcon","render","otherProps","footer","children","modalProps","title","onOk","onCancel","okButtonProps","centered","width","drawerProps","onClose","newFormsObj","formGroups","otherGrups","groupName","indexOf","groupForms","form","selfButtons","ref","showModel","formType","labelCol","flex","wrapperCol","onValuesChange","changedValues","allValues","onFormChange","changeValid","className","Object","keys","footerClassName","cancelButtonProps","onClick"],"sources":["../../../src/components/page/FormPage/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Form from \"../../base/form\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport message from \"../../base/message\";\r\nimport Col from \"../../base/grid/Col\";\r\nimport Row from \"../../base/grid/Row\";\r\nimport { isEmptyObj } from \"@bj-nsc/functions\";\r\nimport dayjs from \"dayjs\";\r\nimport \"./index.module.less\";\r\nimport lodash from \"lodash\";\r\nimport Button from \"../../base/button\";\r\nimport Upload from '../../base/upload'\r\nimport cls from 'classnames'\r\ninterface FormPageProps {\r\n forms?: Array<any>; //是否显示操作列\r\n submitUrl?: string;\r\n onSubmit?: (value?: any, label?: any) => void;\r\n footerClassName?: any;\r\n okButtonProps?: any;\r\n cancelButtonProps?: any;\r\n footer?: ReactNode | boolean;\r\n children?: React.ReactNode;\r\n onFormChange?: (value?: any,allValue?:any) => void;\r\n submitParams?:any; //添加参数,默认mothod:post, 参数通过data传递\r\n [propsName: string]: any;\r\n}\r\nclass FormPage extends PureComponent<FormPageProps, any> {\r\n formRef = React.createRef<any>();\r\n state = {\r\n loading: false,\r\n label: \"\",\r\n editorFlag: true,\r\n value: {} as any,\r\n dictNames: {} as any,\r\n fileList: {} as any\r\n };\r\n valid: any = [];\r\n dateValueFormat = {} as any;\r\n dateFormat = {} as any;\r\n fileFormat = [] as any;\r\n submitFlag = true\r\n //表单显示\r\n show(orgValue?: any, editorflag = \"add\") {\r\n let label = \"新增\";\r\n if (orgValue && editorflag == \"editor\") {\r\n label = \"编辑\";\r\n } else if (orgValue && editorflag == \"detail\") {\r\n label = \"查看\";\r\n }\r\n if (orgValue) {\r\n this.setState(\r\n {\r\n label: label,\r\n value: orgValue,\r\n },\r\n () => {\r\n let value = this.convertValue(orgValue,label);\r\n //处理文件数据\r\n this.formRef.current?.showForm(value);\r\n }\r\n );\r\n } else {\r\n this.setState(\r\n {\r\n label: label,\r\n },\r\n () => {\r\n this.formRef.current?.showForm(this.props.defaultValue);\r\n }\r\n );\r\n }\r\n }\r\n hide(hide = true) {\r\n const { onHideForm } = this.props;\r\n if (onHideForm) {\r\n onHideForm && onHideForm();\r\n return;\r\n }\r\n this.setState({ loading: false, fileList: {} });\r\n hide && this.formRef.current?.hideForm();\r\n }\r\n hideForm() {\r\n this.setState({ loading: false, fileList: {} });\r\n this.formRef.current?.hideForm();\r\n }\r\n setLoading(loading: boolean) {\r\n this.setState({ loading: loading });\r\n }\r\n getFormValue() {\r\n const { label, value, dictNames, fileList } = this.state;\r\n const formValue = this.formRef.current?.getFieldsValue();\r\n let data = { ...formValue, ...dictNames };\r\n if (this.fileFormat.length > 0) {\r\n let newFileList = {} as any;\r\n this.fileFormat.map((item) => {\r\n newFileList[item] = this.getFileList(fileList[item] || []);\r\n })\r\n data = { ...data, ...newFileList };\r\n }\r\n if (!this.submitFlag) {\r\n message.error('请等待所有文件上传完成!')\r\n return;\r\n }\r\n if (!isEmptyObj(this.dateValueFormat)) {\r\n for (let key in this.dateValueFormat) {\r\n let olddata = data[key];\r\n if (olddata) {\r\n if (Array.isArray(olddata)) {\r\n data[key] = [\r\n dayjs(olddata[0]).format(this.dateValueFormat[key]),\r\n dayjs(olddata[1]).format(this.dateValueFormat[key]),\r\n ];\r\n } else {\r\n data[key] = dayjs(olddata).format(this.dateValueFormat[key]);\r\n }\r\n }\r\n }\r\n }\r\n if (label == \"编辑\") {\r\n data = { ...data, id: value?.id };\r\n }\r\n return data;\r\n }\r\n convertValue(value,type){\r\n let values = lodash.cloneDeep(value);\r\n if (this.fileFormat.length > 0) {\r\n let fileList = {} as any;\r\n this.fileFormat.map((item) => {\r\n let olddata = value[item];\r\n fileList[item] = this.getFileList(olddata || [], type);\r\n })\r\n this.setState({ fileList: fileList })\r\n }\r\n //处理日期格式数据\r\n if (!isEmptyObj(this.dateFormat)) {\r\n for (let key in this.dateFormat) {\r\n let olddata = value[key];\r\n if (olddata) {\r\n if (Array.isArray(olddata)) {\r\n value[key] = [\r\n dayjs(olddata[0], this.dateFormat[key]),\r\n dayjs(olddata[1], this.dateFormat[key]),\r\n ];\r\n } else {\r\n value[key] = dayjs(olddata, this.dateFormat[key]);\r\n }\r\n }\r\n }\r\n }\r\n return values\r\n }\r\n setFormValue(value,type){\r\n const newValue = this.convertValue(value,type);\r\n this.formRef.current?.setFieldsValue(newValue);\r\n }\r\n doSubmit(formdata, label) {\r\n const { submitUrl, submitParams={}, callBack } = this.props;\r\n if (!submitUrl) {\r\n console.error(\"submitUrl不能为空!\");\r\n return;\r\n }\r\n const { data = {}, ...otherParams } = submitParams\r\n this.formRef.current?.onSubmit(\r\n submitUrl,\r\n {\r\n data: { ...formdata, ...data },\r\n noUndefined: label == \"编辑\",\r\n ...otherParams,\r\n },\r\n (res: any) => {\r\n const { code } = res;\r\n this.setState({ loading: false });\r\n if (code === 200) {\r\n message.success(label + \"成功\");\r\n this.hide(true);\r\n callBack && callBack();\r\n return;\r\n }\r\n this.hide(false);\r\n }\r\n );\r\n }\r\n getFileList(data, label = '新增') {\r\n this.submitFlag = true\r\n let fileList = [] as any;\r\n if (data && data.length > 0) {\r\n data.map((item) => {\r\n let obj = {\r\n fileId: item.fileId,\r\n fileName: item.fileName,\r\n } as any;\r\n if (label == '查看') {\r\n obj.status = 'done';\r\n }\r\n if (label !== '查看' && item.status !== 'done') {\r\n this.submitFlag = false;\r\n }\r\n fileList.push(obj);\r\n });\r\n }\r\n return fileList;\r\n };\r\n\r\n onSubmit() {\r\n const { onSubmit } = this.props;\r\n const { label, value, dictNames, fileList } = this.state;\r\n const formValue = this.formRef.current?.getFieldsValue();\r\n let valid = this.valid;\r\n this.formRef.current\r\n ?.validateFields(valid)\r\n .then(() => {\r\n let data =this.getFormValue()\r\n if (!this.submitFlag) {\r\n message.error('请等待所有文件上传完成!')\r\n return;\r\n }\r\n this.setState({ loading: true });\r\n if (onSubmit) {\r\n onSubmit && onSubmit(data, label);\r\n return;\r\n }\r\n this.doSubmit(data, label);\r\n })\r\n .catch((errorInfo: any) => { });\r\n }\r\n valueChange({ type, dictName }, props, value, valueOption, data) {\r\n if (valueOption) {\r\n if (dictName) {\r\n const { dictNames } = this.state;\r\n const newNames = { ...dictNames } as any;\r\n newNames[dictName] = valueOption.label;\r\n this.setState({\r\n dictNames: newNames,\r\n });\r\n }\r\n }\r\n if (props.onChange) {\r\n props.onChange(value, valueOption, data);\r\n }\r\n }\r\n\r\n renderForm(forms, label) {\r\n const newValid: any[] = [];\r\n return <Row gutter={24}>\r\n {forms.map((item: any, index: number) => {\r\n const itemProps = item.props || {};\r\n if (itemProps.format || itemProps.valueFormat) {\r\n this.dateValueFormat[item.name] =\r\n itemProps.format || itemProps.valueFormat;\r\n }\r\n if (itemProps.format) {\r\n this.dateFormat[item.name] = itemProps.format;\r\n }\r\n let allowChars = item.props?.allowChars || false;\r\n let props = {\r\n placeholder: `请输入${item.label}`,\r\n\r\n ...item.props,\r\n onChange: this.valueChange.bind(\r\n this,\r\n {\r\n type: item.type,\r\n dictName: item.dictName,\r\n },\r\n { ...item.props }\r\n ),\r\n };\r\n if (!item.type || item.type == \"Input\") {\r\n props.allowChars = true;\r\n props.showCount = true;\r\n }\r\n delete props.valueFormat;\r\n delete props.format;\r\n delete props.allowChars;\r\n if (label == \"查看\") {\r\n props.disabled = true;\r\n }\r\n\r\n if (item.rules && item.rules.length > 0) {\r\n newValid.push(item.name);\r\n }\r\n if (index + 1 === forms.length) {\r\n this.valid = newValid;\r\n }\r\n if (item.type !== 'Upload') {\r\n return (\r\n <Col span={item.span || 12} key={index}>\r\n <Form.Item\r\n label={item.label}\r\n name={item.name}\r\n rules={item.rules}\r\n allowChars={allowChars}\r\n componentName={item.type ? item.type : \"Input\"}\r\n >\r\n {getNode(item.type, {\r\n ...props,\r\n })}\r\n </Form.Item>\r\n </Col>\r\n );\r\n } else {\r\n this.fileFormat.push(item.name)\r\n return (\r\n <Col span={item.span || 12} key={index}>\r\n <Form.Item\r\n label={item.label}\r\n name={item.name}\r\n rules={item.rules}\r\n allowChars={allowChars}\r\n >\r\n <Upload\r\n fileList={this.state.fileList[item.name] || []}\r\n onListChange={(list) => {\r\n const { fileList } = this.state\r\n this.setState({\r\n fileList: { ...fileList, [item.name]: list }\r\n })\r\n }}\r\n showUploadList={{ showDownloadIcon: true, showRemoveIcon: label !== '查看' }}\r\n {...props}>\r\n {label !== '查看' && <Button>上传文件</Button>}\r\n </Upload>\r\n </Form.Item>\r\n </Col>\r\n );\r\n }\r\n })}\r\n </Row>\r\n }\r\n render() {\r\n const { forms = [], otherProps = {}, footer = true, children } = this.props;\r\n const { loading, label } = this.state;\r\n let modalProps = {\r\n title: label,\r\n onOk: this.onSubmit.bind(this),\r\n onCancel: this.hide.bind(this),\r\n okButtonProps: { loading: loading },\r\n centered: true,\r\n width: \"50vw\",\r\n } as any;\r\n\r\n\r\n let drawerProps = {\r\n title: label,\r\n onOk: this.onSubmit.bind(this),\r\n onClose: this.hide.bind(this),\r\n width: \"50vw\",\r\n } as any;\r\n if (label == \"查看\") {\r\n modalProps.footer = null;\r\n drawerProps.footer = null;\r\n }\r\n this.dateValueFormat = {};\r\n this.dateFormat = {};\r\n this.fileFormat = []\r\n let newFormsObj = {} as any;\r\n let formGroups = [] as any\r\n let otherGrups = [] as any\r\n //处理表单数据\r\n forms.map((item: any) => {\r\n if (item.groupName && formGroups.indexOf(item.groupName) < 0) {\r\n formGroups.push(item.groupName);\r\n } else if (!item.groupName) {\r\n otherGrups.push(item)\r\n }\r\n })\r\n if (formGroups.length > 0) {\r\n formGroups.map((item: any) => {\r\n let groupForms = [] as any\r\n forms.map((form: any) => {\r\n if (form.groupName == item) {\r\n groupForms.push(form)\r\n }\r\n })\r\n newFormsObj[item] = groupForms\r\n })\r\n newFormsObj['noGroupName'] = otherGrups\r\n }\r\n //自定义按钮\r\n let selfButtons = [] as any;\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n typeof item == 'object' && selfButtons.push(item);\r\n });\r\n } else if (children) {\r\n typeof children == 'object' && selfButtons.push(children);\r\n }\r\n return (\r\n <Form\r\n ref={this.formRef}\r\n showModel={this.props.formType}\r\n modalProps={{ ...modalProps }}\r\n drawerProps={{ ...drawerProps }}\r\n labelCol={{ flex: \"100px\" }}\r\n wrapperCol={{ flex: \"15vw\" }}\r\n onValuesChange={(changedValues, allValues) => {\r\n const { onFormChange } = this.props;\r\n onFormChange && onFormChange(changedValues, allValues);\r\n }}\r\n changeValid={this.props.changeValid}\r\n {...otherProps}\r\n >\r\n <div className=\"nsc-form-page\">\r\n {formGroups.length == 0 ? this.renderForm(forms, label) : Object.keys(newFormsObj).map((key) => {\r\n return (\r\n <div key={key} className=\"nsc-form-pane\">\r\n {key != \"noGroupName\" && <div className=\"nsc-form-title\">{key}</div>}\r\n <div className=\"nsc-form-content\">{this.renderForm(newFormsObj[key], label)}</div>\r\n </div>\r\n )\r\n })}\r\n {!this.props.formType && footer == true &&\r\n <div className={cls('nsc-form-page-footer', this.props.footerClassName)}>\r\n <Button {...this.props.cancelButtonProps} onClick={() => {\r\n if (this.props.onCancel) {\r\n this.props.onCancel();\r\n return\r\n }\r\n this.setState({ loading: false });\r\n }}>取消</Button>\r\n <Button type=\"primary\" {...this.props.okButtonProps}\r\n onClick={() => {\r\n this.onSubmit()\r\n }}\r\n loading={this.state.loading}\r\n className={'nsc-form-page-footer-btn'}\r\n >\r\n 保存\r\n </Button>\r\n {selfButtons.map((item: any, index: any) => {\r\n return <div className={'nsc-form-page-footer-btn'} key={index}>{item}</div>\r\n })\r\n }\r\n </div>\r\n }\r\n {!this.props.formType && footer !== true && this.props.footer}\r\n </div>\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nexport default FormPage;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["React","PureComponent","Form","getNode","message","Col","Row","isEmptyObj","dayjs","lodash","Button","Upload","cls","FormPage","constructor","arguments","_defineProperty","createRef","loading","label","editorFlag","value","dictNames","fileList","show","orgValue","editorflag","length","undefined","setState","_this$formRef$current","convertValue","formRef","current","showForm","_this$formRef$current2","props","defaultValue","hide","_this$formRef$current3","onHideForm","hideForm","_this$formRef$current4","setLoading","getFormValue","_this$formRef$current5","state","formValue","getFieldsValue","data","_objectSpread","fileFormat","newFileList","map","item","getFileList","submitFlag","error","dateValueFormat","key","olddata","Array","isArray","format","id","type","values","cloneDeep","dateFormat","setFormValue","_this$formRef$current6","newValue","setFieldsValue","doSubmit","formdata","_this$formRef$current7","submitUrl","submitParams","callBack","console","otherParams","_objectWithoutProperties","_excluded","onSubmit","noUndefined","res","code","success","obj","fileId","fileName","status","push","_this$formRef$current8","_this$formRef$current9","valid","validateFields","then","catch","errorInfo","valueChange","_ref","valueOption","dictName","newNames","onChange","renderForm","forms","newValid","createElement","gutter","index","_item$props","itemProps","valueFormat","name","allowChars","placeholder","concat","bind","showCount","disabled","rules","span","Item","componentName","_extends","onListChange","list","showUploadList","showDownloadIcon","showRemoveIcon","children","render","otherProps","footer","modalProps","title","onOk","onCancel","okButtonProps","centered","width","drawerProps","onClose","newFormsObj","formGroups","otherGrups","groupName","indexOf","groupForms","form","selfButtons","ref","showModel","formType","labelCol","flex","wrapperCol","onValuesChange","changedValues","allValues","onFormChange","changeValid","className","Object","keys","footerClassName","cancelButtonProps","onClick"],"sources":["../../../src/components/page/FormPage/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Form from \"../../base/form\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport message from \"../../base/message\";\r\nimport Col from \"../../base/grid/Col\";\r\nimport Row from \"../../base/grid/Row\";\r\nimport { isEmptyObj } from \"@bj-nsc/functions\";\r\nimport dayjs from \"dayjs\";\r\nimport \"./index.module.less\";\r\nimport lodash from \"lodash\";\r\nimport Button from \"../../base/button\";\r\nimport Upload from '../../base/upload'\r\nimport cls from 'classnames'\r\ninterface FormPageProps {\r\n forms?: Array<any>; //是否显示操作列\r\n submitUrl?: string;\r\n onSubmit?: (value?: any, label?: any) => void;\r\n footerClassName?: any;\r\n okButtonProps?: any;\r\n cancelButtonProps?: any;\r\n footer?: ReactNode | boolean;\r\n children?: React.ReactNode;\r\n onFormChange?: (value?: any, allValue?: any) => void;\r\n submitParams?: any; //添加参数,默认mothod:post, 参数通过data传递\r\n [propsName: string]: any;\r\n}\r\nclass FormPage extends PureComponent<FormPageProps, any> {\r\n formRef = React.createRef<any>();\r\n state = {\r\n loading: false,\r\n label: \"\",\r\n editorFlag: true,\r\n value: {} as any,\r\n dictNames: {} as any,\r\n fileList: {} as any\r\n };\r\n valid: any = [];\r\n dateValueFormat = {} as any;\r\n dateFormat = {} as any;\r\n fileFormat = [] as any;\r\n submitFlag = true\r\n //表单显示\r\n show(orgValue?: any, editorflag = \"add\") {\r\n let label = \"新增\";\r\n if (orgValue && editorflag == \"editor\") {\r\n label = \"编辑\";\r\n } else if (orgValue && editorflag == \"detail\") {\r\n label = \"查看\";\r\n }\r\n if (orgValue) {\r\n this.setState(\r\n {\r\n label: label,\r\n value: orgValue,\r\n },\r\n () => {\r\n let value = this.convertValue(orgValue, label);\r\n //处理文件数据\r\n this.formRef.current?.showForm(value);\r\n }\r\n );\r\n } else {\r\n this.setState(\r\n {\r\n label: label,\r\n },\r\n () => {\r\n this.formRef.current?.showForm(this.props.defaultValue);\r\n }\r\n );\r\n }\r\n }\r\n hide(hide = true) {\r\n const { onHideForm } = this.props;\r\n if (onHideForm) {\r\n onHideForm && onHideForm();\r\n return;\r\n }\r\n this.setState({ loading: false, fileList: {} });\r\n hide && this.formRef.current?.hideForm();\r\n }\r\n hideForm() {\r\n this.setState({ loading: false, fileList: {} });\r\n this.formRef.current?.hideForm();\r\n }\r\n setLoading(loading: boolean) {\r\n this.setState({ loading: loading });\r\n }\r\n getFormValue() {\r\n const { label, value, dictNames, fileList } = this.state;\r\n const formValue = this.formRef.current?.getFieldsValue();\r\n let data = { ...formValue, ...dictNames };\r\n if (this.fileFormat.length > 0) {\r\n let newFileList = {} as any;\r\n this.fileFormat.map((item) => {\r\n if (fileList[item].length == 0) {\r\n newFileList[item] = null;\r\n } else {\r\n if (!formValue[item]) {\r\n newFileList[item] = this.getFileList(fileList[item] || []);\r\n }\r\n }\r\n })\r\n data = { ...data, ...newFileList };\r\n }\r\n if (!this.submitFlag) {\r\n message.error('请等待所有文件上传完成!')\r\n return;\r\n }\r\n if (!isEmptyObj(this.dateValueFormat)) {\r\n for (let key in this.dateValueFormat) {\r\n let olddata = data[key];\r\n if (olddata) {\r\n if (Array.isArray(olddata)) {\r\n data[key] = [\r\n dayjs(olddata[0]).format(this.dateValueFormat[key]),\r\n dayjs(olddata[1]).format(this.dateValueFormat[key]),\r\n ];\r\n } else {\r\n data[key] = dayjs(olddata).format(this.dateValueFormat[key]);\r\n }\r\n }\r\n }\r\n }\r\n if (label == \"编辑\") {\r\n data = { ...data, id: value?.id };\r\n }\r\n return data;\r\n }\r\n convertValue(value, type) {\r\n let values = lodash.cloneDeep(value);\r\n if (this.fileFormat.length > 0) {\r\n let fileList = {} as any;\r\n this.fileFormat.map((item) => {\r\n let olddata = values[item];\r\n if(olddata && Array.isArray(olddata)){\r\n fileList[item] = this.getFileList(olddata || [], type);\r\n }else{\r\n fileList[item]=[]\r\n }\r\n })\r\n this.setState({ fileList: fileList })\r\n }\r\n //处理日期格式数据\r\n if (!isEmptyObj(this.dateFormat)) {\r\n for (let key in this.dateFormat) {\r\n let olddata = value[key];\r\n if (olddata) {\r\n if (Array.isArray(olddata)) {\r\n value[key] = [\r\n dayjs(olddata[0], this.dateFormat[key]),\r\n dayjs(olddata[1], this.dateFormat[key]),\r\n ];\r\n } else {\r\n value[key] = dayjs(olddata, this.dateFormat[key]);\r\n }\r\n }\r\n }\r\n }\r\n return values\r\n }\r\n setFormValue(value, type) {\r\n const newValue = this.convertValue(value, type);\r\n this.formRef.current?.setFieldsValue(newValue);\r\n }\r\n doSubmit(formdata, label) {\r\n const { submitUrl, submitParams = {}, callBack } = this.props;\r\n if (!submitUrl) {\r\n console.error(\"submitUrl不能为空!\");\r\n return;\r\n }\r\n const { data = {}, ...otherParams } = submitParams\r\n this.formRef.current?.onSubmit(\r\n submitUrl,\r\n {\r\n data: { ...formdata, ...data },\r\n noUndefined: label == \"编辑\",\r\n ...otherParams,\r\n },\r\n (res: any) => {\r\n const { code } = res;\r\n this.setState({ loading: false });\r\n if (code === 200) {\r\n message.success(label + \"成功\");\r\n this.hide(true);\r\n callBack && callBack();\r\n return;\r\n }\r\n this.hide(false);\r\n }\r\n );\r\n }\r\n getFileList(data, label = '新增') {\r\n this.submitFlag = true\r\n let fileList = [] as any;\r\n if (data && data.length > 0) {\r\n data.map((item) => {\r\n let obj = {\r\n fileId: item.fileId,\r\n fileName: item.fileName,\r\n } as any;\r\n if (label == '查看') {\r\n obj.status = 'done';\r\n }\r\n if (label !== '查看' && item.status !== 'done') {\r\n this.submitFlag = false;\r\n }\r\n fileList.push(obj);\r\n });\r\n }\r\n return fileList;\r\n };\r\n\r\n onSubmit() {\r\n const { onSubmit } = this.props;\r\n const { label, value, dictNames, fileList } = this.state;\r\n const formValue = this.formRef.current?.getFieldsValue();\r\n let valid = this.valid;\r\n this.formRef.current\r\n ?.validateFields(valid)\r\n .then(() => {\r\n let data = this.getFormValue()\r\n if (!this.submitFlag) {\r\n message.error('请等待所有文件上传完成!')\r\n return;\r\n }\r\n this.setState({ loading: true });\r\n if (onSubmit) {\r\n onSubmit && onSubmit(data, label);\r\n return;\r\n }\r\n this.doSubmit(data, label);\r\n })\r\n .catch((errorInfo: any) => { });\r\n }\r\n valueChange({ type, dictName }, props, value, valueOption, data) {\r\n if (valueOption) {\r\n if (dictName) {\r\n const { dictNames } = this.state;\r\n const newNames = { ...dictNames } as any;\r\n newNames[dictName] = valueOption.label;\r\n this.setState({\r\n dictNames: newNames,\r\n });\r\n }\r\n }\r\n if (props.onChange) {\r\n props.onChange(value, valueOption, data);\r\n }\r\n }\r\n\r\n renderForm(forms, label) {\r\n const newValid: any[] = [];\r\n return <Row gutter={24}>\r\n {forms.map((item: any, index: number) => {\r\n const itemProps = item.props || {};\r\n if (itemProps.format || itemProps.valueFormat) {\r\n this.dateValueFormat[item.name] =\r\n itemProps.format || itemProps.valueFormat;\r\n }\r\n if (itemProps.format) {\r\n this.dateFormat[item.name] = itemProps.format;\r\n }\r\n let allowChars = item.props?.allowChars || false;\r\n let props = {\r\n placeholder: `请输入${item.label}`,\r\n ...item.props,\r\n onChange: this.valueChange.bind(\r\n this,\r\n {\r\n type: item.type,\r\n dictName: item.dictName,\r\n },\r\n { ...item.props }\r\n ),\r\n };\r\n if (!item.type || item.type == \"Input\") {\r\n props.allowChars = true;\r\n props.showCount = true;\r\n }\r\n delete props.valueFormat;\r\n delete props.format;\r\n if (label == \"查看\") {\r\n props.disabled = true;\r\n props.placeholder = ''\r\n }\r\n\r\n if (item.rules && item.rules.length > 0) {\r\n newValid.push(item.name);\r\n }\r\n if (index + 1 === forms.length) {\r\n this.valid = newValid;\r\n }\r\n if (item.type !== 'Upload') {\r\n return (\r\n <Col span={item.span || 12} key={index}>\r\n <Form.Item\r\n label={item.label}\r\n name={item.name}\r\n rules={item.rules}\r\n allowChars={allowChars}\r\n componentName={item.type ? item.type : \"Input\"}\r\n >\r\n {getNode(item.type, {\r\n ...props,\r\n })}\r\n </Form.Item>\r\n </Col>\r\n );\r\n } else {\r\n this.fileFormat.push(item.name)\r\n return (\r\n <Col span={item.span || 12} key={index}>\r\n <Form.Item\r\n label={item.label}\r\n name={item.name}\r\n rules={item.rules}\r\n allowChars={allowChars}\r\n >\r\n <Upload\r\n fileList={this.state.fileList[item.name] || []}\r\n onListChange={(list) => {\r\n const { fileList } = this.state\r\n this.setState({\r\n fileList: { ...fileList, [item.name]: list }\r\n })\r\n }}\r\n showUploadList={{ showDownloadIcon: true, showRemoveIcon: label !== '查看' }}\r\n {...props}>\r\n {item.props.children ? item.props.children : (label !== '查看' && <Button>上传文件</Button>)}\r\n </Upload>\r\n </Form.Item>\r\n </Col>\r\n );\r\n }\r\n })}\r\n </Row>\r\n }\r\n render() {\r\n const { forms = [], otherProps = {}, footer = true, children } = this.props;\r\n const { loading, label } = this.state;\r\n let modalProps = {\r\n title: label,\r\n onOk: this.onSubmit.bind(this),\r\n onCancel: this.hide.bind(this),\r\n okButtonProps: { loading: loading },\r\n centered: true,\r\n width: \"50vw\",\r\n } as any;\r\n\r\n\r\n let drawerProps = {\r\n title: label,\r\n onOk: this.onSubmit.bind(this),\r\n onClose: this.hide.bind(this),\r\n width: \"50vw\",\r\n } as any;\r\n if (label == \"查看\") {\r\n modalProps.footer = null;\r\n drawerProps.footer = null;\r\n }\r\n this.dateValueFormat = {};\r\n this.dateFormat = {};\r\n this.fileFormat = []\r\n let newFormsObj = {} as any;\r\n let formGroups = [] as any\r\n let otherGrups = [] as any\r\n //处理表单数据\r\n forms.map((item: any) => {\r\n if (item.groupName && formGroups.indexOf(item.groupName) < 0) {\r\n formGroups.push(item.groupName);\r\n } else if (!item.groupName) {\r\n otherGrups.push(item)\r\n }\r\n })\r\n if (formGroups.length > 0) {\r\n formGroups.map((item: any) => {\r\n let groupForms = [] as any\r\n forms.map((form: any) => {\r\n if (form.groupName == item) {\r\n groupForms.push(form)\r\n }\r\n })\r\n newFormsObj[item] = groupForms\r\n })\r\n newFormsObj['noGroupName'] = otherGrups\r\n }\r\n //自定义按钮\r\n let selfButtons = [] as any;\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n typeof item == 'object' && selfButtons.push(item);\r\n });\r\n } else if (children) {\r\n typeof children == 'object' && selfButtons.push(children);\r\n }\r\n return (\r\n <Form\r\n ref={this.formRef}\r\n showModel={this.props.formType}\r\n modalProps={{ ...modalProps }}\r\n drawerProps={{ ...drawerProps }}\r\n labelCol={{ flex: \"100px\" }}\r\n wrapperCol={{ flex: \"15vw\" }}\r\n onValuesChange={(changedValues, allValues) => {\r\n const { onFormChange } = this.props;\r\n onFormChange && onFormChange(changedValues, allValues);\r\n }}\r\n changeValid={this.props.changeValid}\r\n {...otherProps}\r\n >\r\n <div className=\"nsc-form-page\">\r\n {formGroups.length == 0 ? this.renderForm(forms, label) : Object.keys(newFormsObj).map((key) => {\r\n return (\r\n <div key={key} className=\"nsc-form-pane\">\r\n {key != \"noGroupName\" && <div className=\"nsc-form-title\">{key}</div>}\r\n <div className=\"nsc-form-content\">{this.renderForm(newFormsObj[key], label)}</div>\r\n </div>\r\n )\r\n })}\r\n {!this.props.formType && footer == true &&\r\n <div className={cls('nsc-form-page-footer', this.props.footerClassName)}>\r\n <Button {...this.props.cancelButtonProps} onClick={() => {\r\n if (this.props.onCancel) {\r\n this.props.onCancel();\r\n return\r\n }\r\n this.setState({ loading: false });\r\n }}>取消</Button>\r\n <Button type=\"primary\" {...this.props.okButtonProps}\r\n onClick={() => {\r\n this.onSubmit()\r\n }}\r\n loading={this.state.loading}\r\n className={'nsc-form-page-footer-btn'}\r\n >\r\n 保存\r\n </Button>\r\n {selfButtons.map((item: any, index: any) => {\r\n return <div className={'nsc-form-page-footer-btn'} key={index}>{item}</div>\r\n })\r\n }\r\n </div>\r\n }\r\n {!this.props.formType && footer !== true && this.props.footer}\r\n </div>\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nexport default FormPage;\r\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nsc-react-component",
3
- "version": "3.3.0",
3
+ "version": "3.3.2",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {