nsc-react-component 3.1.6 → 3.1.8

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.
@@ -13,7 +13,7 @@ export interface NscModalPorps extends ModalProps {
13
13
  dragable?: boolean;
14
14
  }
15
15
  export default class NscModal extends PureComponent<NscModalPorps & DrawerProps, any> {
16
- static confirm: (props: import("antd/lib").ModalFuncProps) => {
16
+ static confirm: (props: import("antd/lib/modal").ModalFuncProps) => {
17
17
  destroy: () => void;
18
18
  update: (configUpdate: import("antd").ModalFuncProps | ((prevConfig: import("antd").ModalFuncProps) => import("antd").ModalFuncProps)) => void;
19
19
  };
@@ -81,6 +81,7 @@ declare class BasePage extends PureComponent<NSCBaseBageProps, any> {
81
81
  dateFormat: any;
82
82
  constructor(props: any);
83
83
  componentDidMount(): void;
84
+ componentDidUpdate(): void;
84
85
  setSearchParams(params: any, callBack: any): void;
85
86
  onSelect: (checkedTreeKeys: any) => void;
86
87
  showForm(value?: any, editorflag?: string): void;
@@ -84,6 +84,7 @@ class BasePage extends PureComponent {
84
84
  tableSize: size || "default",
85
85
  treeSearchPrams: {},
86
86
  popopens: {},
87
+ moreOpen: false,
87
88
  elementHeight: 0
88
89
  };
89
90
  }
@@ -98,6 +99,15 @@ class BasePage extends PureComponent {
98
99
  });
99
100
  initData && initData();
100
101
  }
102
+ componentDidUpdate() {
103
+ var _this$pageRef$current2;
104
+ const elementHeight = (_this$pageRef$current2 = this.pageRef.current) === null || _this$pageRef$current2 === void 0 ? void 0 : _this$pageRef$current2.clientHeight;
105
+ if (elementHeight > this.state.elementHeight) {
106
+ this.setState({
107
+ elementHeight
108
+ });
109
+ }
110
+ }
101
111
  setSearchParams(params, callBack) {
102
112
  var _this$searchRef$curre;
103
113
  (_this$searchRef$curre = this.searchRef.current) === null || _this$searchRef$curre === void 0 || _this$searchRef$curre.setSearchParams(params);
@@ -268,7 +278,7 @@ class BasePage extends PureComponent {
268
278
  }
269
279
  renderToolButtons(toolbuttons, toolbarFlag) {
270
280
  const flag = toolbuttons.length > 5;
271
- toolbuttons = [...toolbuttons].reverse();
281
+ // toolbuttons = [...toolbuttons].reverse();
272
282
  const {
273
283
  showSearch = true
274
284
  } = this.props;
@@ -283,17 +293,23 @@ class BasePage extends PureComponent {
283
293
  } = _item$props,
284
294
  params = _objectWithoutProperties(_item$props, _excluded);
285
295
  if (index > 3) {
286
- return /*#__PURE__*/React.createElement("div", _extends({
287
- className: cls(getLess(styles, "nsc-basepage-editor"), getLess(styles, "nsc-basepage-content-item")),
296
+ return /*#__PURE__*/React.createElement("div", {
297
+ className: cls(getLess(styles, "nsc-basepage-editor"), getLess(styles, "nsc-basepage-content-item"))
298
+ }, /*#__PURE__*/React.createElement(Button, _extends({
288
299
  key: index,
289
300
  onClick: () => {
301
+ this.setState({
302
+ moreOpen: false
303
+ });
290
304
  onClick && onClick();
291
305
  }
292
- }, params), /*#__PURE__*/React.createElement("span", {
306
+ }, params, {
307
+ type: "link"
308
+ }), /*#__PURE__*/React.createElement("span", {
293
309
  className: getLess(styles, "nsc-basepage-icon")
294
310
  }, icon), /*#__PURE__*/React.createElement("span", {
295
311
  className: getLess(styles, "nsc-basepage-text")
296
- }, children));
312
+ }, children)));
297
313
  }
298
314
  });
299
315
  return /*#__PURE__*/React.createElement("div", {
@@ -305,15 +321,30 @@ class BasePage extends PureComponent {
305
321
  if (flag) {
306
322
  if (index < 4) {
307
323
  return /*#__PURE__*/React.createElement("div", {
308
- key: index
324
+ key: index,
325
+ style: {
326
+ marginRight: 12
327
+ }
309
328
  }, item);
310
329
  } else if (index == 4) {
311
330
  return /*#__PURE__*/React.createElement(Popover, {
312
331
  content: content,
313
332
  title: null,
314
333
  placement: "bottom",
315
- trigger: ["click"],
316
- key: index
334
+ key: index,
335
+ open: this.state.moreOpen,
336
+ onOpenChange: open => {
337
+ if (open) {
338
+ this.setState({
339
+ moreOpen: true
340
+ });
341
+ } else {
342
+ this.setState({
343
+ moreOpen: false
344
+ });
345
+ }
346
+ }
347
+ // open={true}
317
348
  // overlayClassName={styles['pop-box']}
318
349
  }, /*#__PURE__*/React.createElement(Button, {
319
350
  type: "primary"
@@ -323,7 +354,10 @@ class BasePage extends PureComponent {
323
354
  }
324
355
  } else {
325
356
  return /*#__PURE__*/React.createElement("div", {
326
- key: index
357
+ key: index,
358
+ style: {
359
+ marginRight: index == toolbuttons.length - 1 ? 0 : 12
360
+ }
327
361
  }, item);
328
362
  }
329
363
  }));
@@ -928,4 +962,4 @@ class BasePage extends PureComponent {
928
962
  }
929
963
  }
930
964
  export default BasePage;
931
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsInV0aWxzIiwiRG93bk91dGxpbmVkIiwiRXllT3V0bGluZWQiLCJFZGl0T3V0bGluZWQiLCJSaWdodE91dGxpbmVkIiwiUGx1c091dGxpbmVkIiwiRWxsaXBzaXNPdXRsaW5lZCIsIkRlbGV0ZU91dGxpbmVkIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiSGVhZGVyU2VhcmNoIiwic3R5bGVzIiwiQmFzZVBhZ2UiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX3R5cGUiLCJfc2l6ZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJzdGF0ZSIsInZhbHVlIiwiZGVwdElkIiwib25TZWFyY2giLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJzdG9yZVByZWZpeCIsInR5cGUiLCJjb250ZW50Iiwic2l6ZSIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJ0cmVlU2VsZWN0ZWRLZXkiLCJleHBhbmQiLCJmb3JtVHlwZSIsInRhYmxlU2l6ZSIsInRyZWVTZWFyY2hQcmFtcyIsInBvcG9wZW5zIiwiZWxlbWVudEhlaWdodCIsImNvbXBvbmVudERpZE1vdW50IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50IiwiaW5pdERhdGEiLCJwYWdlUmVmIiwiY3VycmVudCIsImNsaWVudEhlaWdodCIsInNldFN0YXRlIiwic2V0U2VhcmNoUGFyYW1zIiwicGFyYW1zIiwiY2FsbEJhY2siLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUiLCJzZWFyY2hSZWYiLCJzaG93Rm9ybSIsIl90aGlzJGVkaXRvclJlZiIsImVkaXRvcmZsYWciLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJlZGl0b3JSZWYiLCJzaG93IiwiX29iamVjdFNwcmVhZCIsImhpZGVGb3JtIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlIiwic2V0TG9hZGluZyIsImxvYWRpbmciLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUyIiwic2V0RWRpdEZvcm1WYWx1ZXMiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUzIiwic2V0RmllbGRzVmFsdWUiLCJnZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTQiLCJnZXRGaWVsZHNWYWx1ZSIsIm9uRGVsZXRlIiwiZGF0YSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbiIsImRlbGV0ZVVybCIsImRlbGV0ZVBhcmFtcyIsImRlbGV0ZVBvc2l0aW9uIiwiX3RoaXMiLCJ0YWJsZVJlZiIsImdldFNlbGVjdGVkUm93S2V5cyIsIndhcm5pbmciLCJjb25maXJtIiwib25PayIsIkVycm9yIiwiZGVmYXVsdFBhcmFtcyIsIm1ldGhvZCIsImF1dG9QcmVmaXgiLCJpZHMiLCJqb2luIiwiaWQiLCJyZXF1ZXN0UGFyYW1zIiwidGhlbiIsImNvZGUiLCJfdGhpcyRzZWFyY2hSZWYiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMyIiwic3VjY2VzcyIsImdldFNlYXJjaFZhbHVlcyIsIm9uQ2FsbEJhY2tzIiwib25EZWxldGVDYWxsQmFjayIsInRhYmxlTG9hZCIsImVycm9yIiwiY2F0Y2giLCJjb25zb2xlIiwibG9nIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMiIsInJlcXVlc3RDb25maWciLCJzdG9yZSIsImxvYWQiLCJvblNlYXJjaENhbGxCYWNrIiwiY2FsbGJhY2siLCJ0YWJsZVJlbG9hZCIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjMiLCJhdXRvTG9hZCIsInJlbG9hZCIsIl9yZXMkZGF0YSIsInJlY29yZHMiLCJjdXJyZW50UGFnZSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjQiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW41IiwiZ2V0U2VsZWN0ZWRSb3dEYXRhcyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjYiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjciLCJfdGhpcyRzZWFyY2hSZWYyIiwiZnJvbVZhbHVlIiwiZ2V0Q2hpbGRyZW5EYXRhIiwidGFibGVQcm9wcyIsInJvd0tleSIsInJlc0tleSIsImNoaWxkTm9kZXMiLCJjaGlsZHJlbiIsIm1hcCIsIml0ZW0iLCJpbmRleCIsInJlbmRlclRvb2xCdXR0b25zIiwidG9vbGJ1dHRvbnMiLCJ0b29sYmFyRmxhZyIsImZsYWciLCJyZXZlcnNlIiwic2hvd1NlYXJjaCIsIl9pdGVtJHByb3BzIiwicGFnZVR5cGUiLCJvbkNsaWNrIiwiaWNvbiIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kcyIsImNsYXNzTmFtZSIsInN0eWxlIiwibWFyZ2luTGVmdCIsInRpdGxlIiwicGxhY2VtZW50IiwidHJpZ2dlciIsInJlbmRlckNsb3VtbkJ1dHRvbiIsImNvbHVtbkJ1dHRvbnMiLCJyZWNvcmQiLCJhY3Rpb25Qcm9wcyIsImJhc2VBY3Rpb25Db2x1bW4iLCJuZXdCdXR0b25zIiwic2hvd0ljb24iLCJfaXRlbSRwcm9wczIiLCJyZWNvcmRTaG93IiwiX2V4Y2x1ZGVkMiIsImV2YWwiLCJwdXNoIiwibnVtYmVyIiwiYnV0dG9uTnVtYmVyIiwiX2l0ZW0kcHJvcHMzIiwiX2V4Y2x1ZGVkMyIsIk51bWJlciIsIl9pdGVtJHByb3BzNCIsIl9leGNsdWRlZDQiLCJvcGVuIiwib25PcGVuQ2hhbmdlIiwidHJlZVNlbGVjdCIsInNlbGVjdGVkS2V5cyIsIm9iaiIsIl90aGlzJHNlYXJjaFJlZjMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMzIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNCIsImtleXdvcmQiLCJzZWFyY2hLZXkiLCJzZWFyY2hGaWVsZCIsInBhcmFudFNlbGVjdCIsInRyZWVQcm9wcyIsInNlbGVjdGVkTm9kZXMiLCJkYXRhcmVmIiwiYXR0cmlidXRlIiwiaXNMZWFmIiwib25UcmVlU2VsZWN0IiwidHJlZVNlbGVjdENhbGxCYWNrIiwicmVzZXRTZWFyY2giLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUyIiwicmVzZXRGaWVsZHMiLCJnZXRUZXh0IiwidGV4dCIsIl9wcm9wcyRkYXRhIiwibmV3VGV4dCIsImkiLCJsYWJlbCIsInNldFRhYmxlRGF0YSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjgiLCJzZXREYXRhIiwic2V0VHJlZURhdGEiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQiLCJ0cmVlUmVmIiwicmVuZGVyIiwiX3RhYmxlUHJvcHMkdG9vbGJhciIsIl90YWJsZVByb3BzJHRvb2xiYXIyIiwiY29sdW1ucyIsInN1Ym1pdFVybCIsImZvcm1Qcm9wcyIsInNob3dMZWZ0Iiwic3VibWl0UGFyYW1zIiwic2hvd1Rvb2xCdXR0b24iLCJidXR0b25zIiwiZWRpdG9yRm9ybSIsIm9uU2hvd0Zvcm0iLCJmb3JtQ2hhbmdlVmFsaWQiLCJ0b29sQnV0dG9uUG9zaXRpb24iLCJmaWx0ZXJDb2x1bW4iLCJhY3Rpb25Db2x1bW4iLCJzaG93Um93U2VsZWN0aW9uIiwiY29sdW1uT3JkZXIiLCJleHBhbmRhYmxlIiwidGFibGVUaXRsZSIsIm90aGVydGFibGVQYXJhbXMiLCJfZXhjbHVkZWQ1IiwidHJlZVN0b3JlIiwidHJlZVNlYXJjaCIsInRpdGxlQWxpYXMiLCJ0cmVlVGl0bGUiLCJvdGhlcnRyZWVQYXJhbXMiLCJfZXhjbHVkZWQ2IiwidGFibGVQYXJhbXMiLCJ0YWJsZUNvbHVtbiIsInNlYXJjaEZvcm1zIiwiZWRpdG9yRm9ybXMiLCJkZWZhdWx0VmFsdWUiLCJfdGVtcCRzZWFyY2giLCJfdGVtcCRwcm9wcyIsIl90ZW1wJHByb3BzMiIsIl90ZW1wIiwidGVtcCIsIndpZHRoIiwic2VhcmNoIiwiX3RlbXAkc2VhcmNoMiIsIl90ZW1wJHNlYXJjaDMiLCJfdGVtcCRzZWFyY2g0IiwiZmllbGQiLCJkYXRhSW5kZXgiLCJsYWJlbENvbCIsIndyYXBwZXJDb2wiLCJydWxlcyIsInNlYXJjaFJ1bGVzIiwiZWRpdG9yIiwic3BhbiIsImRpY3ROYW1lIiwiX3RlbXAkcHJvcHMzIiwiY29sdW1uU2VhcmNoIiwiZmlsdGVyUHJvcHMiLCJ0ZW1wUHJvcCIsImVsbGlwc2lzIiwic2hvd1RpdGxlIiwiY29sdW1uU2hvdyIsInNlbGZCdXR0b25zIiwiaW5kZXhPZiIsImJpbmQiLCJkYW5nZXIiLCJBcnJheSIsImlzQXJyYXkiLCJjaGlsZCIsIl9jaGlsZCRwcm9wcyIsIl9jaGlsZCRwcm9wczIiLCJfY2hpbGQkcHJvcHMzIiwiX2l0ZW0kcHJvcHM1IiwiX2l0ZW0kcHJvcHM2IiwiX2l0ZW0kcHJvcHM3IiwiYWxpZ24iLCJ0ZXh0QWxpZ24iLCJmaXhlZCIsInJlYWNvcmQiLCJGcmFnbWVudCIsInNlYXJjaEZsYWciLCJ0YWJsZVRvb2wiLCJ0b29sRmxhZyIsInRvb2xiYXIiLCJ0b29scyIsInBhZ2VIZWlnaHQiLCJ0YWJsZUhlYWRlckhlaWdodCIsImhlYWRlckhlaWdodCIsInRvb2xIZWlnaHQiLCJwYWRkaW5nSGVpZ2h0IiwidGFibGVDb250ZW50SGVpZ2h0IiwidGFibGVIZWlnaHQiLCJ0YWJsZVNyb2xsSGVpZ2h0IiwicGFnaW5hdGlvbiIsInNjcm9sbCIsIngiLCJ5IiwicmVmIiwicGFnZVRpdGxlIiwiZGlzcGxheSIsImNoZWNrYWJsZSIsInNlYXJjaGFibGUiLCJvblNlbGVjdCIsIm9uUmVzZXQiLCJzZWFyY2hGb3JtUHJvcHMiLCJoZWlnaHQiLCJleHBhbmRJY29uIiwiX3JlZiIsImV4cGFuZGVkIiwib25FeHBhbmQiLCJlIiwib25DaGFuZ2UiLCJvblRvb2xDbGljayIsIm9uUmVmcmVzaCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzUiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM2Iiwib25TdW1iaXRDYWxsQmFjayIsIm9uU3VibWl0Iiwib25IaWRlRm9ybSIsIm9uRm9ybUNoYW5nZSIsImNoYW5nZVZhbGlkIiwib3RoZXJQcm9wcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvQmFzZVBhZ2UvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50LCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFRhYmxlIGZyb20gXCIuLi8uLi9iYXNlL3RhYmxlXCI7XHJcbmltcG9ydCBUcmVlIGZyb20gXCIuLi8uLi9iYXNlL3RyZWVcIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi9iYXNlL21vZGFsXCI7XHJcbmltcG9ydCBQb3BvdmVyIGZyb20gXCIuLi8uLi9iYXNlL3BvcG92ZXJcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgRWRpdG9yRm9ybSBmcm9tIFwiLi9Gb3JtXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIERvd25PdXRsaW5lZCxcclxuICBFeWVPdXRsaW5lZCxcclxuICBFZGl0T3V0bGluZWQsXHJcbiAgUmlnaHRPdXRsaW5lZCxcclxuICBQbHVzT3V0bGluZWQsXHJcbiAgRWxsaXBzaXNPdXRsaW5lZCxcclxuICBEZWxldGVPdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgcmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcbmltcG9ydCB7IGdldFN0b3JhZ2UsIHB4MnZ3IH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7IElGb3JtUHJvcHMgfSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtL0Zvcm1cIjtcclxuaW1wb3J0IEhlYWRlclNlYXJjaCBmcm9tIFwiLi4vSGVhZGVyU2VhcmNoXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25Qcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmludGVyZmFjZSBUYWJsZVByb3BzIHtcclxuICBhY3Rpb25Db2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaTjeS9nOWIl1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuui/h+a7pOaMiemSrlxyXG4gIHNob3dSb3dTZWxlY3Rpb24/OiBib29sZWFuOyAvL+aYr+WQpuihqOagvOWLvumAieWIl1xyXG4gIHBhZ2luYXRpb24/OiBib29sZWFuIHwgUGFnaW5hdGlvblByb3BzOyAvL+aYr+WQpuaYvuekuuWIhumhtVxyXG4gIGNvbHVtbk9yZGVyPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrooajmoLzluo/liJdcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuY29uc3Qgc3R5bGVzID0gbnVsbDtcclxuaW50ZXJmYWNlIFRyZWVQcm9wcyB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaQnOe0ouahhlxyXG4gIHNlYXJjaEtleT86IHN0cmluZzsgLy/mkJzntKJ2YWx1ZeWvueW6lOeahGtleVxyXG4gIHNlYXJjaEZpZWxkPzogc3RyaW5nOyAvL+afpeivouWvueW6lOeahGtleVxyXG4gIHRpdGxlQWxpYXM/OiBzdHJpbmc7IC8v5qCRdGl0bGXlr7nlupTnmoRrZXks6buY6K6kdGl0bGVcclxuICBub2RlUG9ycHM/OiBvYmplY3Q7XHJcbiAgcGFyYW50U2VsZWN0PzogYm9vbGVhbjtcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuaW50ZXJmYWNlIEZvcm1Qcm9wcyBleHRlbmRzIElGb3JtUHJvcHMge31cclxuaW50ZXJmYWNlIE5TQ0Jhc2VCYWdlUHJvcHMge1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWktOmDqOaQnOe0ouagj1xyXG4gIHRhYmxlUHJvcHM/OiBUYWJsZVByb3BzOyAvL+ihqOagvOWPguaVsFxyXG4gIHRyZWVQcm9wcz86IFRyZWVQcm9wczsgLy/lt6bkvqfmoJHlj4LmlbBcclxuICBzdWJtaXRQYXJhbXM/OiBPYmplY3Q7IC8v5re75Yqg5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HZGF0YeS8oOmAklxyXG4gIHN1Ym1pdFVybD86IHN0cmluZztcclxuICBvblN1Ym1pdD86ICh2YWx1ZT86IGFueSwgbGFiZWw/OiBhbnkpID0+IHZvaWQ7XHJcbiAgY29sdW1uczogQXJyYXk8T2JqZWN0PjtcclxuICBzaG93TGVmdD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65bem5L6n55uu5b2V5qCRXHJcbiAgc2hvd1Rvb2xCdXR0b24/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaMiemSruagj1xyXG4gIGVkaXRvckZvcm0/OiBib29sZWFuOyAvL+aYr+WQpumcgOimgeihqOWNleWKn+iDvSAsIOS4umZhbHNlIOe8lui+ke+8jOafpeeci++8jOaWsOWinuWKn+iDveWdh+S4jeWPr+eUqFxyXG4gIGRlbGV0ZVVybD86IHN0cmluZzsgLy/liKDpmaR1cmxcclxuICBvbkRlbGV0ZT86IChzZWxlY3RlZEtleXM/OiBBcnJheTxzdHJpbmc+KSA9PiB2b2lkOyAvL+WIoOmZpOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2lkc+aLvOaOpeS8oOmAkue7meWQjuWPsFxyXG4gIGRlbGV0ZVBvc2l0aW9uPzogXCJ0b29sYmFyXCIgfCBcInJvd1wiO1xyXG4gIGRlbGV0ZVBhcmFtcz86IE9iamVjdDtcclxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcclxuICBvblNlYXJjaD86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICBvblJlc2V0PzogKCkgPT4gdm9pZDtcclxuICBpbml0RGF0YT86IGFueTsgLy/liJ3lp4vljJblm57osIPlh73mlbDvvIzlnKhjb21wb25lbnREaWRNb3VudOS4reiwg+eUqFxyXG4gIGJ1dHRvbnM/OiBBcnJheTxzdHJpbmc+OyAvL+aMiemSrumbhuWQiCAgWydhZGQnLCdkZWxldGUnLCdzZWFyY2gnLCdlZGl0b3InXVxyXG4gIG9uU2hvd0Zvcm0/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25IaWRlRm9ybT86ICgpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25Gb3JtQ2hhbmdlPzogKGNoYW5nZWRWYWx1ZXM/OiBhbnksIGFsbFZhbHVlcz86IGFueSkgPT4gdm9pZDsgLy/ooajljZVvbkNoYW5nZeWbnuiwg1xyXG4gIGZvcm1UeXBlPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIjtcclxuICBmb3JtQ2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+ihqOWNleagoemqjFxyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICB0b29sQnV0dG9uUG9zaXRpb24/OiBcInJpZ2h0XCIgfCBcImJ1dHRvbVwiO1xyXG4gIHBhZ2VUaXRsZT86IHN0cmluZyB8IFJlYWN0Tm9kZTtcclxuICBmb3JtUHJvcHM/OiBGb3JtUHJvcHM7XHJcbiAgYWN0aW9uUHJvcHM/OiB7XHJcbiAgICB0ZXh0QWxpZ24/OiBzdHJpbmc7XHJcbiAgICBzaG93SWNvbj86IGJvb2xlYW47XHJcbiAgICB3aWR0aD86IG51bWJlcjtcclxuICAgIGJ1dHRvbk51bWJlcj86IG51bWJlciB8IFwiYWxsXCI7XHJcbiAgfTtcclxuICBzZWFyY2hGb3JtUHJvcHM/OiB7IHdyYXBwZXJDb2w/OiBhbnk7IGxhYmVsQ29sPzogYW55IH07XHJcbiAgb25UcmVlU2VsZWN0PzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uQ2FsbEJhY2tzPzoge1xyXG4gICAgdHJlZVNlbGVjdENhbGxCYWNrPzogYW55O1xyXG4gICAgb25TZWFyY2hDYWxsQmFjaz86IGFueTtcclxuICAgIG9uU3VtYml0Q2FsbEJhY2s/OiBhbnk7XHJcbiAgICBvbkRlbGV0ZUNhbGxCYWNrPzogYW55O1xyXG4gIH07XHJcbiAgcGFnZVR5cGU/OiBcIm5vcm1hbFwiIHwgXCJ0YWJzcGFnZVwiO1xyXG59XHJcblxyXG5jbGFzcyBCYXNlUGFnZSBleHRlbmRzIFB1cmVDb21wb25lbnQ8TlNDQmFzZUJhZ2VQcm9wcywgYW55PiB7XHJcbiAgdGFibGVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHRyZWVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHNlYXJjaFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZWRpdG9yUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBkYXRlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBhbnkpIHtcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICAgIGxldCB7IHN0b3JlUHJlZml4IH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0eXBlID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwiLVwiICsgXCJmb3JtVHlwZVwiIDogXCJmb3JtVHlwZVwiXHJcbiAgICApO1xyXG4gICAgdHlwZSA9IHR5cGU/LmNvbnRlbnQ7XHJcbiAgICBsZXQgc2l6ZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwidGFibGVTaXplXCIgOiBcInRhYmxlU2l6ZVwiXHJcbiAgICApO1xyXG4gICAgc2l6ZSA9IHNpemU/LmNvbnRlbnQ7XHJcbiAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICB0eXBlOiBcImFkZFwiLFxyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFtdLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBbXSxcclxuICAgICAgdHJlZVNlbGVjdGVkS2V5OiBcIlwiLFxyXG4gICAgICBleHBhbmQ6IGZhbHNlLFxyXG4gICAgICBmb3JtVHlwZTogdHlwZSB8fCBcIm1vZGFsXCIsXHJcbiAgICAgIHRhYmxlU2l6ZTogc2l6ZSB8fCBcImRlZmF1bHRcIixcclxuICAgICAgdHJlZVNlYXJjaFByYW1zOiB7fSxcclxuICAgICAgcG9wb3BlbnM6IHt9LFxyXG4gICAgICBlbGVtZW50SGVpZ2h0OiAwLFxyXG4gICAgfTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IGluaXREYXRhIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZWxlbWVudEhlaWdodCA9IHRoaXMucGFnZVJlZi5jdXJyZW50Py5jbGllbnRIZWlnaHQ7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZWxlbWVudEhlaWdodCxcclxuICAgIH0pO1xyXG4gICAgaW5pdERhdGEgJiYgaW5pdERhdGEoKTtcclxuICB9XHJcblxyXG4gIHNldFNlYXJjaFBhcmFtcyhwYXJhbXMsIGNhbGxCYWNrKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5zZXRTZWFyY2hQYXJhbXMocGFyYW1zKTtcclxuICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdCA9IChjaGVja2VkVHJlZUtleXM6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgeyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHZhbHVlID0geyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCwgZGVwdElkOiBjaGVja2VkVHJlZUtleXNbMF0gfTtcclxuICAgIGlmICh0aGlzLnByb3BzLm9uU2VhcmNoKSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25TZWFyY2godmFsdWUpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy50YWJsZUxvYWQodmFsdWUpO1xyXG4gIH07XHJcblxyXG4gIC8v5pi+56S66KGo5Y2VXHJcbiAgc2hvd0Zvcm0odmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZj8uY3VycmVudD8uc2hvdyh7IC4uLnZhbHVlIH0sIGVkaXRvcmZsYWcpO1xyXG4gIH1cclxuXHJcbiAgLy/lhbPpl63ooajljZVcclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldExvYWRpbmcobG9hZGluZyk7XHJcbiAgfVxyXG5cclxuICBzZXRFZGl0Rm9ybVZhbHVlcyh2YWx1ZSkge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdEZvcm1WYWx1ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIC8v5om56YeP5Yig6ZmkXHJcbiAgb25EZWxldGUoZGF0YT86IGFueSkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBkZWxldGVVcmwsXHJcbiAgICAgIG9uRGVsZXRlLFxyXG4gICAgICBkZWxldGVQYXJhbXMsXHJcbiAgICAgIGRlbGV0ZVBvc2l0aW9uID0gXCJ0b29sYmFyXCIsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJvd0tleXMgPSB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgIGlmIChzZWxlY3RlZFJvd0tleXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICBtZXNzYWdlLndhcm5pbmcoXCLor7fpgInmi6nopoHliKDpmaTnmoTmlbDmja7vvIFcIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBNb2RhbC5jb25maXJtKHtcclxuICAgICAgY29udGVudDogXCLmmK/lkKbnoa7orqTliKDpmaTmiYDpgInpobnvvJ9cIixcclxuICAgICAgLy8gY2VudGVyZWQ6dHJ1ZSxcclxuICAgICAgb25PazogKCkgPT4ge1xyXG4gICAgICAgIGlmIChvbkRlbGV0ZSkge1xyXG4gICAgICAgICAgb25EZWxldGUgJiZcclxuICAgICAgICAgICAgb25EZWxldGUoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMgOiBkYXRhKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFkZWxldGVVcmwpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOS4jeiDveS4uuepuu+8gVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFBhcmFtcyA9IHtcclxuICAgICAgICAgIG1ldGhvZDogXCJwb3N0XCIsXHJcbiAgICAgICAgICBhdXRvUHJlZml4OiB0cnVlLFxyXG4gICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgIGlkczogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMuam9pbigpIDogZGF0YS5pZCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgcmVxdWVzdFBhcmFtcyA9IHt9IGFzIGFueTtcclxuICAgICAgICBpZiAoZGVmYXVsdFBhcmFtcykge1xyXG4gICAgICAgICAgcmVxdWVzdFBhcmFtcyA9IHsgLi4uZGVsZXRlUGFyYW1zIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlcXVlc3RQYXJhbXMgPSB7IC4uLmRlZmF1bHRQYXJhbXMgfTtcclxuICAgICAgICByZXF1ZXN0KGRlbGV0ZVVybCwge1xyXG4gICAgICAgICAgLi4ucmVxdWVzdFBhcmFtcyxcclxuICAgICAgICB9KVxyXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY29kZSB9ID0gcmVzO1xyXG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKFwi5Yig6Zmk5oiQ5Yqf77yBXCIpO1xyXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IF90aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrKCk7XHJcbiAgICAgICAgICAgICAgX3RoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5Yig6Zmk5aSx6LSl77yBXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyb3IpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdGFibGVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgIHBhcmFtczogcGFyYW1zLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8v5p+l6K+iXHJcbiAgb25TZWFyY2gocGFyYW1zKSB7XHJcbiAgICBjb25zdCB7IG9uU2VhcmNoLCBvbkNhbGxCYWNrcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChvblNlYXJjaCkge1xyXG4gICAgICBvblNlYXJjaCh7IC4uLnBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudGFibGVMb2FkKHsgLi4ucGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgIG9uQ2FsbEJhY2tzPy5vblNlYXJjaENhbGxCYWNrICYmXHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2FsbEJhY2tzPy5vblNlYXJjaENhbGxCYWNrLCB0aGlzLCBbcGFyYW1zXSk7XHJcbiAgfVxyXG4gIC8v6KGo5qC86YeN5paw5Yqg6L29XHJcbiAgdGFibGVSZWxvYWQocGFyYW1zID0ge30sIGF1dG9Mb2FkID0gdHJ1ZSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgY2FsbGJhY2s6IChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBhdXRvTG9hZCAmJlxyXG4gICAgICAgICAgcmVzPy5kYXRhPy5yZWNvcmRzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50UGFnZSAhPT0gMVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgICAgICAgcGFyYW1zOiB7IGN1cnJlbnQ6IDEsIC4uLnBhcmFtcyB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0RhdGFzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dEYXRhcygpO1xyXG4gIH1cclxuICByZXNldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnJlc2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWFyY2hWYWx1ZXMoKSB7XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICByZXR1cm4geyAuLi5mcm9tVmFsdWUsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH07XHJcbiAgfVxyXG5cclxuICBnZXRDaGlsZHJlbkRhdGEoZGF0YSwga2V5cyA9IFtdKSB7XHJcbiAgICBjb25zdCB7IHRhYmxlUHJvcHMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCByZXNLZXkgPSBbXTtcclxuICAgIGlmIChkYXRhLmNoaWxkTm9kZXMpIHtcclxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBkYXRhLmNoaWxkTm9kZXM7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICBpZiAoaXRlbS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgICAgICB0aGlzLmdldENoaWxkcmVuRGF0YShpdGVtLmNoaWxkTm9kZXMsIGtleXMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXNLZXkgPSBbLi4ua2V5cywgaXRlbVtyb3dLZXldXTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGRhdGFbcm93S2V5XV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzS2V5O1xyXG4gIH1cclxuXHJcbiAgcmVuZGVyVG9vbEJ1dHRvbnModG9vbGJ1dHRvbnM6IGFueSwgdG9vbGJhckZsYWcpIHtcclxuICAgIGNvbnN0IGZsYWcgPSB0b29sYnV0dG9ucy5sZW5ndGggPiA1O1xyXG4gICAgdG9vbGJ1dHRvbnMgPSBbLi4udG9vbGJ1dHRvbnNdLnJldmVyc2UoKTtcclxuICAgIGNvbnN0IHsgc2hvd1NlYXJjaCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID0gaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gMykge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PntpY29ufTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdG9vbC1idXR0b25zXCIpKX1cclxuICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAwIH19XHJcbiAgICAgID5cclxuICAgICAgICB7dG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2luZGV4fT57aXRlbX08L2Rpdj47XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgdHJpZ2dlcj17W1wiY2xpY2tcIl19XHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wLWJveCddfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAg5pu05aSaIDxEb3duT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtpbmRleH0+e2l0ZW19PC9kaXY+O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG4gIHJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zOiBhbnksIHJlY29yZDogYW55KSB7XHJcbiAgICBjb25zdCB7IGFjdGlvblByb3BzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGNvbnN0IG5ld0J1dHRvbnMgPSBbXTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgY29sdW1uQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgcmVjb3JkU2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChyZWNvcmRTaG93KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgIGlmIChldmFsKHJlY29yZFNob3cpKSB7XHJcbiAgICAgICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgY29uc3Qgc2hvdyA9IHJlY29yZFNob3cocmVjb3JkKTtcclxuICAgICAgICAgIHNob3cgJiYgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgbGV0IG51bWJlciA9IGFjdGlvblByb3BzPy5idXR0b25OdW1iZXJcclxuICAgICAgPyBhY3Rpb25Qcm9wcz8uYnV0dG9uTnVtYmVyXHJcbiAgICAgIDogYmFzZUFjdGlvbkNvbHVtbj8uYnV0dG9uTnVtYmVyXHJcbiAgICAgID8gYmFzZUFjdGlvbkNvbHVtbj8uYnV0dG9uTnVtYmVyXHJcbiAgICAgIDogMztcclxuICAgIGxldCBmbGFnID0gZmFsc2U7XHJcbiAgICBpZiAobnVtYmVyID09IFwiYWxsXCIpIHtcclxuICAgICAgZmxhZyA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZmxhZyA9IG5ld0J1dHRvbnMubGVuZ3RoID4gbnVtYmVyO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSBuZXdCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCByZWNvcmRTaG93LCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gTnVtYmVyKG51bWJlcikgLSAxKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSxcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1pdGVtXCIpXHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IHsgLi4udGhpcy5zdGF0ZS5wb3BvcGVucyB9O1xyXG4gICAgICAgICAgICAgIGRhdGFbcmVjb3JkLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcG9wb3BlbnM6IGRhdGEsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBuZXdCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCByZWNvcmRTaG93LCBpY29uLCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICBpZiAoaW5kZXggPCBudW1iZXIpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLCB7XHJcbiAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvci1maXJzdFwiKV06IGluZGV4ID09PSAwLFxyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICBpY29uPXtpY29ufVxyXG4gICAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gbnVtYmVyKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgdGl0bGU9e251bGx9XHJcbiAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICB0cmlnZ2VyPXtbXCJjbGlja1wiXX1cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9wZW49e3RoaXMuc3RhdGUucG9wb3BlbnNbcmVjb3JkLmlkXSB8fCBmYWxzZX1cclxuICAgICAgICAgICAgICBvbk9wZW5DaGFuZ2U9eyhvcGVuKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAob3Blbikge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHsgLi4udGhpcy5zdGF0ZS5wb3BvcGVucyB9O1xyXG4gICAgICAgICAgICAgICAgICBkYXRhW3JlY29yZC5pZF0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICBwb3BvcGVuczogZGF0YSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICBwb3BvcGVuczoge30sXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AnXX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKX0+XHJcbiAgICAgICAgICAgICAgICA8RWxsaXBzaXNPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvci1maXJzdFwiKV06IGluZGV4ID09PSAwLFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICB0eXBlPVwibGlua1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuICAvL+agkeeCueWHu+S6i+S7tlxyXG4gIHRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzOiBhbnksIG9iajogYW55KSB7XHJcbiAgICBsZXQga2V5d29yZCA9IFwiXCI7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHNlYXJjaEtleSA9IFwia2V5XCIsXHJcbiAgICAgIHNlYXJjaEZpZWxkID0gXCJcIixcclxuICAgICAgcGFyYW50U2VsZWN0ID0gdHJ1ZSxcclxuICAgIH0gPSB0aGlzLnByb3BzLnRyZWVQcm9wcztcclxuICAgIGNvbnN0IHsgdHJlZVNlbGVjdGVkS2V5IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZCwgc2VsZWN0ZWROb2RlcyB9ID0gb2JqO1xyXG5cclxuICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICBrZXl3b3JkID0gc2VsZWN0ZWROb2Rlc1swXS5kYXRhcmVmLmF0dHJpYnV0ZVtzZWFyY2hLZXldO1xyXG4gICAgICBpZiAocGFyYW50U2VsZWN0KSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgIHRyZWVTZWFyY2hQcmFtczogeyBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkTm9kZXNbMF0uaXNMZWFmIHx8ICFzZWxlY3RlZE5vZGVzWzBdLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRLZXlzWzBdICE9PSB0cmVlU2VsZWN0ZWRLZXkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IGtleXdvcmQsXHJcbiAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7fSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblRyZWVTZWxlY3QpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzLCBvYmopO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCkgfHwge307XHJcbiAgICBzZWFyY2hGaWVsZCAmJiB0aGlzLnRhYmxlTG9hZCh7IC4uLmZyb21WYWx1ZSwgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9KTtcclxuICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjayAmJlxyXG4gICAgICB1dGlscy5jYWxsYmFjayh0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2ssIHRoaXMsIFtcclxuICAgICAgICBzZWxlY3RlZEtleXMsXHJcbiAgICAgICAgb2JqLFxyXG4gICAgICBdKTtcclxuICB9XHJcbiAgcmVzZXRTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuICBnZXRUZXh0KHByb3BzLCB0ZXh0KSB7XHJcbiAgICBsZXQgbmV3VGV4dCA9IHRleHQ7XHJcbiAgICBpZiAocHJvcHM/LmRhdGEgJiYgcHJvcHM/LmRhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGRhdGEgPSBwcm9wcy5kYXRhO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGE/Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGRhdGFbaV0udmFsdWUgPT0gdGV4dCkge1xyXG4gICAgICAgICAgbmV3VGV4dCA9IGRhdGFbaV0ubGFiZWw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VGV4dDtcclxuICB9XHJcbiAgc2V0VGFibGVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIHNldFRyZWVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRLZXkgPSAoc2VsZWN0ZWQpID0+IHtcclxuICAgIGxldCByZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGtleSBpbiBzZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBrZXlzID0gc2VsZWN0ZWRba2V5XTtcclxuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlcyA9IFsuLi5yZXMsIC4uLmtleXNdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH07XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgY29sdW1ucyA9IFtdLFxyXG4gICAgICBzaG93U2VhcmNoID0gdHJ1ZSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIHN1Ym1pdFVybCA9IFwiXCIsXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgICAgdHJlZVByb3BzID0ge30sXHJcbiAgICAgIGZvcm1Qcm9wcyA9IHt9LFxyXG4gICAgICBzaG93TGVmdCA9IGZhbHNlLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgc2hvd1Rvb2xCdXR0b24gPSB0cnVlLFxyXG4gICAgICBidXR0b25zID0gW10sXHJcbiAgICAgIGVkaXRvckZvcm0gPSB0cnVlLFxyXG4gICAgICBvblNob3dGb3JtLFxyXG4gICAgICBmb3JtQ2hhbmdlVmFsaWQgPSB0cnVlLFxyXG4gICAgICBjbGFzc05hbWUsXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9IFwiYnV0dG9tXCIsXHJcbiAgICAgIGFjdGlvblByb3BzLFxyXG4gICAgICBkZWxldGVQb3NpdGlvbiA9IFwidG9vbGJhclwiLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlLFxyXG4gICAgICBmaWx0ZXJDb2x1bW4gPSB0cnVlLFxyXG4gICAgICBhY3Rpb25Db2x1bW4gPSB0cnVlLFxyXG4gICAgICBzaG93Um93U2VsZWN0aW9uID0gdHJ1ZSxcclxuICAgICAgY29sdW1uT3JkZXIgPSB0cnVlLFxyXG4gICAgICBleHBhbmRhYmxlID0ge30sXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICAgIHRpdGxlOiB0YWJsZVRpdGxlLFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zXHJcbiAgICB9ID0gdGFibGVQcm9wcztcclxuXHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0cmVlU3RvcmUgPSB7fSxcclxuICAgICAgc2hvd1NlYXJjaDogdHJlZVNlYXJjaCA9IHRydWUsXHJcbiAgICAgIHRpdGxlQWxpYXMgPSBcInRpdGxlXCIsXHJcbiAgICAgIHRpdGxlOiB0cmVlVGl0bGUsXHJcbiAgICAgIC4uLm90aGVydHJlZVBhcmFtc1xyXG4gICAgfSA9IHRyZWVQcm9wcztcclxuICAgIGxldCB0YWJsZVBhcmFtcyA9IHsgZmlsdGVyQ29sdW1uLCBzdG9yZSwgLi4ub3RoZXJ0YWJsZVBhcmFtcyB9IGFzIGFueTtcclxuICAgIGxldCB0YWJsZUNvbHVtbjogYW55W10gPSBbXTtcclxuICAgIGNvbnN0IHNlYXJjaEZvcm1zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGVkaXRvckZvcm1zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZTogYW55ID0ge307XHJcbiAgICBjb25zdCBjb2x1bW5CdXR0b25zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IHsgZWxlbWVudEhlaWdodCB9ID0gdGhpcy5zdGF0ZTtcclxuXHJcbiAgICBjb2x1bW5zLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGxldCB0ZW1wID0geyB3aWR0aDogMTAwLCAuLi5pdGVtIH07XHJcbiAgICAgIGlmICh0ZW1wLnNlYXJjaCA9PT0gdHJ1ZSB8fCB0ZW1wLnNlYXJjaD8uc2hvdyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHNlYXJjaEZvcm1zLnB1c2goe1xyXG4gICAgICAgICAgbmFtZTogdGVtcC5maWVsZCB8fCB0ZW1wLmRhdGFJbmRleCxcclxuICAgICAgICAgIGxhYmVsOiB0ZW1wLnNlYXJjaD8ubGFiZWwgfHwgdGVtcC50aXRsZSxcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHByb3BzOiB0ZW1wLnByb3BzLFxyXG4gICAgICAgICAgbGFiZWxDb2w6IHRlbXAuc2VhcmNoPy5sYWJlbENvbCxcclxuICAgICAgICAgIHdyYXBwZXJDb2w6IHRlbXAuc2VhcmNoPy53cmFwcGVyQ29sLFxyXG4gICAgICAgICAgcnVsZXM6IHRlbXAuc2VhcmNoUnVsZXMgPyB0ZW1wLnNlYXJjaFJ1bGVzIDogW10sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnNlYXJjaDtcclxuICAgICAgdGVtcC5lZGl0b3IgIT09IGZhbHNlICYmXHJcbiAgICAgICAgZWRpdG9yRm9ybXMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4LFxyXG4gICAgICAgICAgbGFiZWw6IHRlbXAudGl0bGUsXHJcbiAgICAgICAgICBydWxlczogdGVtcC5ydWxlcyA/IHRlbXAucnVsZXMgOiBbXSxcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHNwYW46IHRlbXAuc3BhbixcclxuICAgICAgICAgIGRpY3ROYW1lOiB0ZW1wLmRpY3ROYW1lLFxyXG4gICAgICAgICAgcHJvcHM6IHsgLi4udGVtcC5wcm9wcyB9LFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRlbXAucHJvcHM/LmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlICE9PSBudWxsXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4O1xyXG4gICAgICAgIGRlZmF1bHRWYWx1ZVtuYW1lXSA9IHRlbXAucHJvcHM/LmRlZmF1bHRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC5ydWxlcztcclxuICAgICAgZGVsZXRlIHRlbXAuc3BhbjtcclxuICAgICAgaWYgKHRlbXAuY29sdW1uU2VhcmNoKSB7XHJcbiAgICAgICAgdGVtcC5maWx0ZXJQcm9wcyA9IHtcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHByb3BzOiB0ZW1wLnByb3BzLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAudHlwZTtcclxuICAgICAgbGV0IHRlbXBQcm9wID0geyAuLi50ZW1wLnByb3BzIH07XHJcbiAgICAgIGlmICghdGVtcC5lbGxpcHNpcykge1xyXG4gICAgICAgIHRlbXAgPSB7XHJcbiAgICAgICAgICBlbGxpcHNpczogeyBzaG93VGl0bGU6IGZhbHNlIH0sXHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VGV4dCh0ZW1wUHJvcCwgdGV4dCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4udGVtcCxcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRlbXAgPSB7XHJcbiAgICAgICAgICBlbGxpcHNpczogdHJ1ZSxcclxuICAgICAgICAgIC4uLnRlbXAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC5wcm9wcztcclxuXHJcbiAgICAgIC8vIHRlbXAuZWxsaXBzaXMgPSB0cnVlO1xyXG4gICAgICBpZiAodGVtcD8uY29sdW1uU2hvdyAhPT0gZmFsc2UpIHRhYmxlQ29sdW1uLnB1c2godGVtcCk7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHNlbGZCdXR0b25zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgaWYgKGFjdGlvblByb3BzPy5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBlbHNlIGlmIChiYXNlQWN0aW9uQ29sdW1uLnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwic2VhcmNoXCIpID4gLTEpIHtcclxuICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgIDxCdXR0b25cclxuICAgICAgICAgIG9uQ2xpY2s9eyhyZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgIG9uU2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZGV0YWlsXCIpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImRldGFpbFwiKTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBpY29uPXs8RXllT3V0bGluZWQgLz59XHJcbiAgICAgICAgICB0eXBlPVwibGlua1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAg5p+l55yLXHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwiZWRpdG9yXCIpID4gLTEpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eyhyZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImVkaXRvclwiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJlZGl0b3JcIik7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGljb249ezxFZGl0T3V0bGluZWQgLz59XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOe8lui+kVxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcImFkZFwiKSA+IC0xKSB7XHJcbiAgICAgIHNlbGZCdXR0b25zLnB1c2goXHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgb25TaG93Rm9ybSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICBvblNob3dGb3JtKG51bGwsIFwiYWRkXCIpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNob3dGb3JtKCk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgaWNvbj17PFBsdXNPdXRsaW5lZCAvPn1cclxuICAgICAgICA+XHJcbiAgICAgICAgICDmt7vliqBcclxuICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJkZWxldGVcIikgPiAtMSkge1xyXG4gICAgICBpZiAoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIpIHtcclxuICAgICAgICBzZWxmQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAvLyB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgb25DbGljaz17dGhpcy5vbkRlbGV0ZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICBpY29uPXs8RGVsZXRlT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgIGRhbmdlclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDliKDpmaRcclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZGVsZXRlUG9zaXRpb24gPT0gXCJyb3dcIikge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgLy8gdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eyhyZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMub25EZWxldGUocmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgaWNvbj17PERlbGV0ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgICAgdHlwZT1cImxpbmtcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDliKDpmaRcclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XHJcbiAgICAgICAgICBpdGVtLm1hcCgoY2hpbGQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgICBzZWxmQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgICBjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIgfHxcclxuICAgICAgICAgICAgICBjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCJcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgIGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiIHx8XHJcbiAgICAgICAgICAgIGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIGNvbnN0IHsgcHJvcHMgfTogYW55ID0gY2hpbGRyZW47XHJcbiAgICAgIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICBzZWxmQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfSBlbHNlIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGFjdGlvbkNvbHVtbiAmJlxyXG4gICAgICB0YWJsZUNvbHVtbi5wdXNoKHtcclxuICAgICAgICB0aXRsZTogXCLmk43kvZxcIixcclxuICAgICAgICBkYXRhSW5kZXg6IFwiYWN0aW9uXCIsXHJcbiAgICAgICAgYWxpZ246IGFjdGlvblByb3BzPy50ZXh0QWxpZ25cclxuICAgICAgICAgID8gYWN0aW9uUHJvcHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLnRleHRBbGlnblxyXG4gICAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uLnRleHRBbGlnblxyXG4gICAgICAgICAgOiBcImxlZnRcIixcclxuICAgICAgICB3aWR0aDogYWN0aW9uUHJvcHM/LndpZHRoXHJcbiAgICAgICAgICA/IGFjdGlvblByb3BzPy53aWR0aFxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgIDogMjAwLFxyXG4gICAgICAgIGZpeGVkOiBcInJpZ2h0XCIsXHJcbiAgICAgICAgcmVuZGVyOiAodGV4dDogYW55LCByZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1hY3Rpb25cIil9PlxyXG4gICAgICAgICAgICAgIHt0aGlzLnJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zLCByZWNvcmQpfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgaWYgKGNvbHVtbk9yZGVyKVxyXG4gICAgICB0YWJsZUNvbHVtbiA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aXRsZTogXCLluo/lj7dcIixcclxuICAgICAgICAgIHdpZHRoOiA4MCxcclxuICAgICAgICAgIGFsaWduOiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgcmVuZGVyOiAodGV4dCwgcmVhY29yZCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIDw+e2luZGV4ICsgMX08Lz47XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGFibGVDb2x1bW4sXHJcbiAgICAgIF07XHJcbiAgICBsZXQgc2VhcmNoRmxhZyA9IHNob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMDtcclxuICAgIGxldCB7IHRhYmxlVG9vbCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdG9vbEZsYWcgPVxyXG4gICAgICBzaG93VG9vbEJ1dHRvbiAmJlxyXG4gICAgICBzZWxmQnV0dG9ucy5sZW5ndGggPiAwICYmXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9PSBcImJ1dHRvbVwiO1xyXG4gICAgbGV0IHRvb2xiYXJGbGFnID0gIShcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyID09IGZhbHNlIHx8XHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhcj8uc2hvdyA9PSBmYWxzZSB8fFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnRvb2xzPy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICB0YWJsZVRvb2w/LnNob3cgPT0gZmFsc2VcclxuICAgICk7XHJcblxyXG4gICAgbGV0IHBhZ2VIZWlnaHQgPSB0aGlzLnByb3BzLnBhZ2VUeXBlID09IFwidGFic3BhZ2VcIiA/IDYzIDogMDtcclxuICAgIGxldCB0YWJsZUhlYWRlckhlaWdodCA9IDU1O1xyXG5cclxuICAgIGxldCBoZWFkZXJIZWlnaHQgPSBzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDAgPyAxMDQgOiAwO1xyXG4gICAgbGV0IHRvb2xIZWlnaHQgPSB0YWJsZVRpdGxlIHx8IHRvb2xGbGFnID8gNDggOiAwO1xyXG4gICAgbGV0IHBhZGRpbmdIZWlnaHQgPSAyNTtcclxuICAgIGxldCB0YWJsZUNvbnRlbnRIZWlnaHQgPVxyXG4gICAgICBlbGVtZW50SGVpZ2h0IC0gaGVhZGVySGVpZ2h0IC0gdG9vbEhlaWdodCAtIHBhZGRpbmdIZWlnaHQgLSBwYWdlSGVpZ2h0O1xyXG4gICAgbGV0IHRhYmxlSGVpZ2h0ID0gdGFibGVDb250ZW50SGVpZ2h0IC0gMzIgLSAzMjtcclxuICAgIGxldCB0YWJsZVNyb2xsSGVpZ2h0ID0gdGFibGVDb250ZW50SGVpZ2h0IC0gdGFibGVIZWFkZXJIZWlnaHQgLSAzMiAtIDMyO1xyXG4gICAgaWYgKHRhYmxlUHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcclxuICAgICAgY29uc3Qgc2Nyb2xsID0gdGFibGVQYXJhbXMuc2Nyb2xsO1xyXG4gICAgICB0YWJsZVBhcmFtcyA9IHtcclxuICAgICAgICAuLi50YWJsZVBhcmFtcyxcclxuICAgICAgICBzY3JvbGw6IHsgeDogXCJtYXgtY29udGVudFwiLCB5OiB0YWJsZVNyb2xsSGVpZ2h0LCAuLi5zY3JvbGwgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2VcIiksIGNsYXNzTmFtZSl9XHJcbiAgICAgICAgcmVmPXt0aGlzLnBhZ2VSZWZ9XHJcbiAgICAgID5cclxuICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGUgJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGl0bGVcIikpfT5cclxuICAgICAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcGFuZVwiKSl9XHJcbiAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiBcImZsZXhcIiB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtzaG93TGVmdCAmJiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtbGVmdFwiKX0+XHJcbiAgICAgICAgICAgICAge3RyZWVUaXRsZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidHJlZS10aXRsZVwiKX0+e3RyZWVUaXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInRyZWUtY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwidHJlZS1jb250ZW50LW5vdGl0bGVcIildOiAhdHJlZVRpdGxlLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFRyZWVcclxuICAgICAgICAgICAgICAgICAgc3RvcmU9e3sgLi4udHJlZVN0b3JlIH19XHJcbiAgICAgICAgICAgICAgICAgIHNob3dJY29uPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgY2hlY2thYmxlPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZT17dHJlZVNlYXJjaH1cclxuICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMudHJlZVNlbGVjdC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEtleXM9e1t0aGlzLnN0YXRlLnRyZWVTZWxlY3RlZEtleV19XHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlQWxpYXM9e3RpdGxlQWxpYXN9XHJcbiAgICAgICAgICAgICAgICAgIHsuLi5vdGhlcnRyZWVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1yaWdodFwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2Utbm8tbGVmdC1yaWdodFwiKV06ICFzaG93TGVmdCxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDAgJiYgKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaGVhZGVyc2VhcmNoXCIpfT5cclxuICAgICAgICAgICAgICAgIDxIZWFkZXJTZWFyY2hcclxuICAgICAgICAgICAgICAgICAgc2VhcmNoRm9ybXM9e3NlYXJjaEZvcm1zfVxyXG4gICAgICAgICAgICAgICAgICB0b29sQnV0dG9uUG9zaXRpb249e3Rvb2xCdXR0b25Qb3NpdGlvbn1cclxuICAgICAgICAgICAgICAgICAgb25TZWFyY2g9e3RoaXMub25TZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgb25SZXNldD17dGhpcy5wcm9wcy5vblJlc2V0fVxyXG4gICAgICAgICAgICAgICAgICByZWY9e3RoaXMuc2VhcmNoUmVmfVxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hGb3JtUHJvcHM9e3RoaXMucHJvcHMuc2VhcmNoRm9ybVByb3BzfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtZ2FwXCIpXTogIXNlYXJjaEZsYWcsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7KHRhYmxlVGl0bGUgfHwgdG9vbEZsYWcpICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRpdGxlXCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10aXRsZS13aWR0aFwiKV06ICF0b29sYmFyRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+e3RhYmxlVGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIHt0b29sRmxhZyAmJiB0aGlzLnJlbmRlclRvb2xCdXR0b25zKHNlbGZCdXR0b25zLCB0b29sYmFyRmxhZyl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlXCIpLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10b3BcIildOiAhdG9vbGJhckZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRvcDJcIildOlxyXG4gICAgICAgICAgICAgICAgICAgICAgdG9vbGJhckZsYWcgJiYgIXRvb2xGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgaGVpZ2h0OiB0YWJsZUNvbnRlbnRIZWlnaHQgfX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8VGFibGVcclxuICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnRhYmxlUmVmfVxyXG4gICAgICAgICAgICAgICAgICBjb2x1bW5zPXt0YWJsZUNvbHVtbn1cclxuICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZEljb246ICh7IGV4cGFuZGVkLCBvbkV4cGFuZCwgcmVjb3JkIH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge2V4cGFuZGVkID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPERvd25PdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25FeHBhbmQocmVjb3JkLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm5zYy1iYXNlcGFnZS1leHBhbmQtaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2RlcyAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWdodE91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJuc2MtYmFzZXBhZ2UtZXhwYW5kLWljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4uZXhwYW5kYWJsZSxcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgY29sdW1uT3JkZXI9e3RydWV9XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsocGFnaW5hdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgY3VycmVudFBhZ2UgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQYWdlICE9PSBwYWdpbmF0aW9uLmN1cnJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogcGFnaW5hdGlvbi5jdXJyZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICB0b29sYmFyPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgb25Ub29sQ2xpY2s6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9uUmVmcmVzaDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlTG9hZChwYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLnRhYmxlUHJvcHMudG9vbGJhcixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgc2hvd1Jvd1NlbGVjdGlvbj17c2hvd1Jvd1NlbGVjdGlvbn1cclxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgaGVpZ2h0OiB0YWJsZUhlaWdodCB9fVxyXG4gICAgICAgICAgICAgICAgICB7Li4udGFibGVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgICAgIC8vIHBhZ2luYXRpb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIHsvKiA8ZGl2PjwvZGl2PiAqL31cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIHtlZGl0b3JGb3JtICYmIChcclxuICAgICAgICAgICAgPEVkaXRvckZvcm1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMuZWRpdG9yUmVmfVxyXG4gICAgICAgICAgICAgIGNhbGxCYWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblN1bWJpdENhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2soKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudGFibGVSZWxvYWQoKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGZvcm1Qcm9wcz17ZWRpdG9yRm9ybXN9XHJcbiAgICAgICAgICAgICAgc3VibWl0VXJsPXtzdWJtaXRVcmx9XHJcbiAgICAgICAgICAgICAgc3VibWl0UGFyYW1zPXtzdWJtaXRQYXJhbXN9XHJcbiAgICAgICAgICAgICAgb25TdWJtaXQ9e3RoaXMucHJvcHMub25TdWJtaXR9XHJcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtkZWZhdWx0VmFsdWV9XHJcbiAgICAgICAgICAgICAgb25IaWRlRm9ybT17dGhpcy5wcm9wcy5vbkhpZGVGb3JtfVxyXG4gICAgICAgICAgICAgIG9uRm9ybUNoYW5nZT17dGhpcy5wcm9wcy5vbkZvcm1DaGFuZ2V9XHJcbiAgICAgICAgICAgICAgZm9ybVR5cGU9e3RoaXMucHJvcHMuZm9ybVR5cGUgfHwgXCJhdXRvXCJ9XHJcbiAgICAgICAgICAgICAgY2hhbmdlVmFsaWQ9e2Zvcm1DaGFuZ2VWYWxpZH1cclxuICAgICAgICAgICAgICBvdGhlclByb3BzPXt7IC4uLmZvcm1Qcm9wcyB9fVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxy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
965
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsInV0aWxzIiwiRG93bk91dGxpbmVkIiwiRXllT3V0bGluZWQiLCJFZGl0T3V0bGluZWQiLCJSaWdodE91dGxpbmVkIiwiUGx1c091dGxpbmVkIiwiRWxsaXBzaXNPdXRsaW5lZCIsIkRlbGV0ZU91dGxpbmVkIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiSGVhZGVyU2VhcmNoIiwic3R5bGVzIiwiQmFzZVBhZ2UiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX3R5cGUiLCJfc2l6ZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJzdGF0ZSIsInZhbHVlIiwiZGVwdElkIiwib25TZWFyY2giLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJzdG9yZVByZWZpeCIsInR5cGUiLCJjb250ZW50Iiwic2l6ZSIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJ0cmVlU2VsZWN0ZWRLZXkiLCJleHBhbmQiLCJmb3JtVHlwZSIsInRhYmxlU2l6ZSIsInRyZWVTZWFyY2hQcmFtcyIsInBvcG9wZW5zIiwibW9yZU9wZW4iLCJlbGVtZW50SGVpZ2h0IiwiY29tcG9uZW50RGlkTW91bnQiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQiLCJpbml0RGF0YSIsInBhZ2VSZWYiLCJjdXJyZW50IiwiY2xpZW50SGVpZ2h0Iiwic2V0U3RhdGUiLCJjb21wb25lbnREaWRVcGRhdGUiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQyIiwic2V0U2VhcmNoUGFyYW1zIiwicGFyYW1zIiwiY2FsbEJhY2siLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUiLCJzZWFyY2hSZWYiLCJzaG93Rm9ybSIsIl90aGlzJGVkaXRvclJlZiIsImVkaXRvcmZsYWciLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJlZGl0b3JSZWYiLCJzaG93IiwiX29iamVjdFNwcmVhZCIsImhpZGVGb3JtIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlIiwic2V0TG9hZGluZyIsImxvYWRpbmciLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUyIiwic2V0RWRpdEZvcm1WYWx1ZXMiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUzIiwic2V0RmllbGRzVmFsdWUiLCJnZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTQiLCJnZXRGaWVsZHNWYWx1ZSIsIm9uRGVsZXRlIiwiZGF0YSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbiIsImRlbGV0ZVVybCIsImRlbGV0ZVBhcmFtcyIsImRlbGV0ZVBvc2l0aW9uIiwiX3RoaXMiLCJ0YWJsZVJlZiIsImdldFNlbGVjdGVkUm93S2V5cyIsIndhcm5pbmciLCJjb25maXJtIiwib25PayIsIkVycm9yIiwiZGVmYXVsdFBhcmFtcyIsIm1ldGhvZCIsImF1dG9QcmVmaXgiLCJpZHMiLCJqb2luIiwiaWQiLCJyZXF1ZXN0UGFyYW1zIiwidGhlbiIsImNvZGUiLCJfdGhpcyRzZWFyY2hSZWYiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMyIiwic3VjY2VzcyIsImdldFNlYXJjaFZhbHVlcyIsIm9uQ2FsbEJhY2tzIiwib25EZWxldGVDYWxsQmFjayIsInRhYmxlTG9hZCIsImVycm9yIiwiY2F0Y2giLCJjb25zb2xlIiwibG9nIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMiIsInJlcXVlc3RDb25maWciLCJzdG9yZSIsImxvYWQiLCJvblNlYXJjaENhbGxCYWNrIiwiY2FsbGJhY2siLCJ0YWJsZVJlbG9hZCIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjMiLCJhdXRvTG9hZCIsInJlbG9hZCIsIl9yZXMkZGF0YSIsInJlY29yZHMiLCJjdXJyZW50UGFnZSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjQiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW41IiwiZ2V0U2VsZWN0ZWRSb3dEYXRhcyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjYiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjciLCJfdGhpcyRzZWFyY2hSZWYyIiwiZnJvbVZhbHVlIiwiZ2V0Q2hpbGRyZW5EYXRhIiwidGFibGVQcm9wcyIsInJvd0tleSIsInJlc0tleSIsImNoaWxkTm9kZXMiLCJjaGlsZHJlbiIsIm1hcCIsIml0ZW0iLCJpbmRleCIsInJlbmRlclRvb2xCdXR0b25zIiwidG9vbGJ1dHRvbnMiLCJ0b29sYmFyRmxhZyIsImZsYWciLCJzaG93U2VhcmNoIiwiX2l0ZW0kcHJvcHMiLCJwYWdlVHlwZSIsIm9uQ2xpY2siLCJpY29uIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsIl9leHRlbmRzIiwic3R5bGUiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJ0aXRsZSIsInBsYWNlbWVudCIsIm9wZW4iLCJvbk9wZW5DaGFuZ2UiLCJyZW5kZXJDbG91bW5CdXR0b24iLCJjb2x1bW5CdXR0b25zIiwicmVjb3JkIiwiYWN0aW9uUHJvcHMiLCJiYXNlQWN0aW9uQ29sdW1uIiwibmV3QnV0dG9ucyIsInNob3dJY29uIiwiX2l0ZW0kcHJvcHMyIiwicmVjb3JkU2hvdyIsIl9leGNsdWRlZDIiLCJldmFsIiwicHVzaCIsIm51bWJlciIsImJ1dHRvbk51bWJlciIsIl9pdGVtJHByb3BzMyIsIl9leGNsdWRlZDMiLCJOdW1iZXIiLCJfaXRlbSRwcm9wczQiLCJfZXhjbHVkZWQ0IiwidHJpZ2dlciIsInRyZWVTZWxlY3QiLCJzZWxlY3RlZEtleXMiLCJvYmoiLCJfdGhpcyRzZWFyY2hSZWYzIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzQiLCJrZXl3b3JkIiwic2VhcmNoS2V5Iiwic2VhcmNoRmllbGQiLCJwYXJhbnRTZWxlY3QiLCJ0cmVlUHJvcHMiLCJzZWxlY3RlZE5vZGVzIiwiZGF0YXJlZiIsImF0dHJpYnV0ZSIsImlzTGVhZiIsIm9uVHJlZVNlbGVjdCIsInRyZWVTZWxlY3RDYWxsQmFjayIsInJlc2V0U2VhcmNoIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlMiIsInJlc2V0RmllbGRzIiwiZ2V0VGV4dCIsInRleHQiLCJfcHJvcHMkZGF0YSIsIm5ld1RleHQiLCJpIiwibGFiZWwiLCJzZXRUYWJsZURhdGEiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW44Iiwic2V0RGF0YSIsInNldFRyZWVEYXRhIiwiX3RoaXMkdHJlZVJlZiRjdXJyZW50IiwidHJlZVJlZiIsInJlbmRlciIsIl90YWJsZVByb3BzJHRvb2xiYXIiLCJfdGFibGVQcm9wcyR0b29sYmFyMiIsImNvbHVtbnMiLCJzdWJtaXRVcmwiLCJmb3JtUHJvcHMiLCJzaG93TGVmdCIsInN1Ym1pdFBhcmFtcyIsInNob3dUb29sQnV0dG9uIiwiYnV0dG9ucyIsImVkaXRvckZvcm0iLCJvblNob3dGb3JtIiwiZm9ybUNoYW5nZVZhbGlkIiwidG9vbEJ1dHRvblBvc2l0aW9uIiwiZmlsdGVyQ29sdW1uIiwiYWN0aW9uQ29sdW1uIiwic2hvd1Jvd1NlbGVjdGlvbiIsImNvbHVtbk9yZGVyIiwiZXhwYW5kYWJsZSIsInRhYmxlVGl0bGUiLCJvdGhlcnRhYmxlUGFyYW1zIiwiX2V4Y2x1ZGVkNSIsInRyZWVTdG9yZSIsInRyZWVTZWFyY2giLCJ0aXRsZUFsaWFzIiwidHJlZVRpdGxlIiwib3RoZXJ0cmVlUGFyYW1zIiwiX2V4Y2x1ZGVkNiIsInRhYmxlUGFyYW1zIiwidGFibGVDb2x1bW4iLCJzZWFyY2hGb3JtcyIsImVkaXRvckZvcm1zIiwiZGVmYXVsdFZhbHVlIiwiX3RlbXAkc2VhcmNoIiwiX3RlbXAkcHJvcHMiLCJfdGVtcCRwcm9wczIiLCJfdGVtcCIsInRlbXAiLCJ3aWR0aCIsInNlYXJjaCIsIl90ZW1wJHNlYXJjaDIiLCJfdGVtcCRzZWFyY2gzIiwiX3RlbXAkc2VhcmNoNCIsImZpZWxkIiwiZGF0YUluZGV4IiwibGFiZWxDb2wiLCJ3cmFwcGVyQ29sIiwicnVsZXMiLCJzZWFyY2hSdWxlcyIsImVkaXRvciIsInNwYW4iLCJkaWN0TmFtZSIsIl90ZW1wJHByb3BzMyIsImNvbHVtblNlYXJjaCIsImZpbHRlclByb3BzIiwidGVtcFByb3AiLCJlbGxpcHNpcyIsInNob3dUaXRsZSIsImNvbHVtblNob3ciLCJzZWxmQnV0dG9ucyIsImluZGV4T2YiLCJiaW5kIiwiZGFuZ2VyIiwiQXJyYXkiLCJpc0FycmF5IiwiY2hpbGQiLCJfY2hpbGQkcHJvcHMiLCJfY2hpbGQkcHJvcHMyIiwiX2NoaWxkJHByb3BzMyIsIl9pdGVtJHByb3BzNSIsIl9pdGVtJHByb3BzNiIsIl9pdGVtJHByb3BzNyIsImFsaWduIiwidGV4dEFsaWduIiwiZml4ZWQiLCJyZWFjb3JkIiwiRnJhZ21lbnQiLCJzZWFyY2hGbGFnIiwidGFibGVUb29sIiwidG9vbEZsYWciLCJ0b29sYmFyIiwidG9vbHMiLCJwYWdlSGVpZ2h0IiwidGFibGVIZWFkZXJIZWlnaHQiLCJoZWFkZXJIZWlnaHQiLCJ0b29sSGVpZ2h0IiwicGFkZGluZ0hlaWdodCIsInRhYmxlQ29udGVudEhlaWdodCIsInRhYmxlSGVpZ2h0IiwidGFibGVTcm9sbEhlaWdodCIsInBhZ2luYXRpb24iLCJzY3JvbGwiLCJ4IiwieSIsInJlZiIsInBhZ2VUaXRsZSIsImRpc3BsYXkiLCJjaGVja2FibGUiLCJzZWFyY2hhYmxlIiwib25TZWxlY3QiLCJvblJlc2V0Iiwic2VhcmNoRm9ybVByb3BzIiwiaGVpZ2h0IiwiZXhwYW5kSWNvbiIsIl9yZWYiLCJleHBhbmRlZCIsIm9uRXhwYW5kIiwiZSIsIm9uQ2hhbmdlIiwib25Ub29sQ2xpY2siLCJvblJlZnJlc2giLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM1IiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNiIsIm9uU3VtYml0Q2FsbEJhY2siLCJvblN1Ym1pdCIsIm9uSGlkZUZvcm0iLCJvbkZvcm1DaGFuZ2UiLCJjaGFuZ2VWYWxpZCIsIm90aGVyUHJvcHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL0Jhc2VQYWdlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBUYWJsZSBmcm9tIFwiLi4vLi4vYmFzZS90YWJsZVwiO1xyXG5pbXBvcnQgVHJlZSBmcm9tIFwiLi4vLi4vYmFzZS90cmVlXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBNb2RhbCBmcm9tIFwiLi4vLi4vYmFzZS9tb2RhbFwiO1xyXG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwiLi4vLi4vYmFzZS9wb3BvdmVyXCI7XHJcbmltcG9ydCBtZXNzYWdlIGZyb20gXCIuLi8uLi9iYXNlL21lc3NhZ2VcIjtcclxuaW1wb3J0IEVkaXRvckZvcm0gZnJvbSBcIi4vRm9ybVwiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFBhZ2VTdG9yZSwgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBEb3duT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbiAgRWRpdE91dGxpbmVkLFxyXG4gIFJpZ2h0T3V0bGluZWQsXHJcbiAgUGx1c091dGxpbmVkLFxyXG4gIEVsbGlwc2lzT3V0bGluZWQsXHJcbiAgRGVsZXRlT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHJlcXVlc3QgZnJvbSBcIm5zYy1yZXF1ZXN0XCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5pbXBvcnQgeyBnZXRTdG9yYWdlLCBweDJ2dyB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBJRm9ybVByb3BzIH0gZnJvbSBcIi4uLy4uL2Jhc2UvZm9ybS9Gb3JtXCI7XHJcbmltcG9ydCBIZWFkZXJTZWFyY2ggZnJvbSBcIi4uL0hlYWRlclNlYXJjaFwiO1xyXG5pbXBvcnQgeyBQYWdpbmF0aW9uUHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbnRlcmZhY2UgVGFibGVQcm9wcyB7XHJcbiAgYWN0aW9uQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrov4fmu6TmjInpkq5cclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjsgLy/mmK/lkKbooajmoLzli77pgInliJdcclxuICBwYWdpbmF0aW9uPzogYm9vbGVhbiB8IFBhZ2luYXRpb25Qcm9wczsgLy/mmK/lkKbmmL7npLrliIbpobVcclxuICBjb2x1bW5PcmRlcj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66KGo5qC85bqP5YiXXHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNvbnN0IHN0eWxlcyA9IG51bGw7XHJcbmludGVyZmFjZSBUcmVlUHJvcHMge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmkJzntKLmoYZcclxuICBzZWFyY2hLZXk/OiBzdHJpbmc7IC8v5pCc57SidmFsdWXlr7nlupTnmoRrZXlcclxuICBzZWFyY2hGaWVsZD86IHN0cmluZzsgLy/mn6Xor6Llr7nlupTnmoRrZXlcclxuICB0aXRsZUFsaWFzPzogc3RyaW5nOyAvL+agkXRpdGxl5a+55bqU55qEa2V5LOm7mOiupHRpdGxlXHJcbiAgbm9kZVBvcnBzPzogb2JqZWN0O1xyXG4gIHBhcmFudFNlbGVjdD86IGJvb2xlYW47XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmludGVyZmFjZSBGb3JtUHJvcHMgZXh0ZW5kcyBJRm9ybVByb3BzIHt9XHJcbmludGVyZmFjZSBOU0NCYXNlQmFnZVByb3BzIHtcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrlpLTpg6jmkJzntKLmoI9cclxuICB0YWJsZVByb3BzPzogVGFibGVQcm9wczsgLy/ooajmoLzlj4LmlbBcclxuICB0cmVlUHJvcHM/OiBUcmVlUHJvcHM7IC8v5bem5L6n5qCR5Y+C5pWwXHJcbiAgc3VibWl0UGFyYW1zPzogT2JqZWN0OyAvL+a3u+WKoOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2RhdGHkvKDpgJJcclxuICBzdWJtaXRVcmw/OiBzdHJpbmc7XHJcbiAgb25TdWJtaXQ/OiAodmFsdWU/OiBhbnksIGxhYmVsPzogYW55KSA9PiB2b2lkO1xyXG4gIGNvbHVtbnM6IEFycmF5PE9iamVjdD47XHJcbiAgc2hvd0xlZnQ/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuW3puS+p+ebruW9leagkVxyXG4gIHNob3dUb29sQnV0dG9uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmjInpkq7moI9cclxuICBlZGl0b3JGb3JtPzogYm9vbGVhbjsgLy/mmK/lkKbpnIDopoHooajljZXlip/og70gLCDkuLpmYWxzZSDnvJbovpHvvIzmn6XnnIvvvIzmlrDlop7lip/og73lnYfkuI3lj6/nlKhcclxuICBkZWxldGVVcmw/OiBzdHJpbmc7IC8v5Yig6ZmkdXJsXHJcbiAgb25EZWxldGU/OiAoc2VsZWN0ZWRLZXlzPzogQXJyYXk8c3RyaW5nPikgPT4gdm9pZDsgLy/liKDpmaTlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dpZHPmi7zmjqXkvKDpgJLnu5nlkI7lj7BcclxuICBkZWxldGVQb3NpdGlvbj86IFwidG9vbGJhclwiIHwgXCJyb3dcIjtcclxuICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7XHJcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgb25TZWFyY2g/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgb25SZXNldD86ICgpID0+IHZvaWQ7XHJcbiAgaW5pdERhdGE/OiBhbnk7IC8v5Yid5aeL5YyW5Zue6LCD5Ye95pWw77yM5ZyoY29tcG9uZW50RGlkTW91bnTkuK3osIPnlKhcclxuICBidXR0b25zPzogQXJyYXk8c3RyaW5nPjsgLy/mjInpkq7pm4blkIggIFsnYWRkJywnZGVsZXRlJywnc2VhcmNoJywnZWRpdG9yJ11cclxuICBvblNob3dGb3JtPzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uSGlkZUZvcm0/OiAoKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uRm9ybUNoYW5nZT86IChjaGFuZ2VkVmFsdWVzPzogYW55LCBhbGxWYWx1ZXM/OiBhbnkpID0+IHZvaWQ7IC8v6KGo5Y2Vb25DaGFuZ2Xlm57osINcclxuICBmb3JtVHlwZT86IFwibW9kYWxcIiB8IFwiZHJhd2VyXCI7XHJcbiAgZm9ybUNoYW5nZVZhbGlkPzogYm9vbGVhbjsgLy/ooajljZXmoKHpqoxcclxuICBjbGFzc05hbWU/OiBhbnk7XHJcbiAgdG9vbEJ1dHRvblBvc2l0aW9uPzogXCJyaWdodFwiIHwgXCJidXR0b21cIjtcclxuICBwYWdlVGl0bGU/OiBzdHJpbmcgfCBSZWFjdE5vZGU7XHJcbiAgZm9ybVByb3BzPzogRm9ybVByb3BzO1xyXG4gIGFjdGlvblByb3BzPzoge1xyXG4gICAgdGV4dEFsaWduPzogc3RyaW5nO1xyXG4gICAgc2hvd0ljb24/OiBib29sZWFuO1xyXG4gICAgd2lkdGg/OiBudW1iZXI7XHJcbiAgICBidXR0b25OdW1iZXI/OiBudW1iZXIgfCBcImFsbFwiO1xyXG4gIH07XHJcbiAgc2VhcmNoRm9ybVByb3BzPzogeyB3cmFwcGVyQ29sPzogYW55OyBsYWJlbENvbD86IGFueSB9O1xyXG4gIG9uVHJlZVNlbGVjdD86ICh2YWx1ZT86IGFueSwgZWRpdG9yRmxhZz86IHN0cmluZykgPT4gdm9pZDsgLy/miZPlvIDooajljZXlm57osINcclxuICBvbkNhbGxCYWNrcz86IHtcclxuICAgIHRyZWVTZWxlY3RDYWxsQmFjaz86IGFueTtcclxuICAgIG9uU2VhcmNoQ2FsbEJhY2s/OiBhbnk7XHJcbiAgICBvblN1bWJpdENhbGxCYWNrPzogYW55O1xyXG4gICAgb25EZWxldGVDYWxsQmFjaz86IGFueTtcclxuICB9O1xyXG4gIHBhZ2VUeXBlPzogXCJub3JtYWxcIiB8IFwidGFic3BhZ2VcIjtcclxufVxyXG5cclxuY2xhc3MgQmFzZVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PE5TQ0Jhc2VCYWdlUHJvcHMsIGFueT4ge1xyXG4gIHRhYmxlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICB0cmVlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBzZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgcGFnZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBjb25zdHJ1Y3Rvcihwcm9wczogYW55KSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQgeyBzdG9yZVByZWZpeCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdHlwZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwiZm9ybVR5cGVcIiA6IFwiZm9ybVR5cGVcIlxyXG4gICAgKTtcclxuICAgIHR5cGUgPSB0eXBlPy5jb250ZW50O1xyXG4gICAgbGV0IHNpemUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcInRhYmxlU2l6ZVwiIDogXCJ0YWJsZVNpemVcIlxyXG4gICAgKTtcclxuICAgIHNpemUgPSBzaXplPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIHRyZWVTZWxlY3RlZEtleTogXCJcIixcclxuICAgICAgZXhwYW5kOiBmYWxzZSxcclxuICAgICAgZm9ybVR5cGU6IHR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICB0YWJsZVNpemU6IHNpemUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICBlbGVtZW50SGVpZ2h0OiAwLFxyXG4gICAgfTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IGluaXREYXRhIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZWxlbWVudEhlaWdodCA9IHRoaXMucGFnZVJlZi5jdXJyZW50Py5jbGllbnRIZWlnaHQ7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZWxlbWVudEhlaWdodCxcclxuICAgIH0pO1xyXG4gICAgaW5pdERhdGEgJiYgaW5pdERhdGEoKTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xyXG4gICAgY29uc3QgZWxlbWVudEhlaWdodCA9IHRoaXMucGFnZVJlZi5jdXJyZW50Py5jbGllbnRIZWlnaHQ7XHJcbiAgICBpZiAoZWxlbWVudEhlaWdodCA+IHRoaXMuc3RhdGUuZWxlbWVudEhlaWdodCkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBlbGVtZW50SGVpZ2h0LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgc2V0U2VhcmNoUGFyYW1zKHBhcmFtcywgY2FsbEJhY2spIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnNldFNlYXJjaFBhcmFtcyhwYXJhbXMpO1xyXG4gICAgY2FsbEJhY2sgJiYgY2FsbEJhY2socGFyYW1zKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ID0gKGNoZWNrZWRUcmVlS2V5czogYW55KSA9PiB7XHJcbiAgICBjb25zdCB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgdmFsdWUgPSB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50LCBkZXB0SWQ6IGNoZWNrZWRUcmVlS2V5c1swXSB9O1xyXG4gICAgaWYgKHRoaXMucHJvcHMub25TZWFyY2gpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblNlYXJjaCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgfTtcclxuXHJcbiAgLy/mmL7npLrooajljZVcclxuICBzaG93Rm9ybSh2YWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmPy5jdXJyZW50Py5zaG93KHsgLi4udmFsdWUgfSwgZWRpdG9yZmxhZyk7XHJcbiAgfVxyXG5cclxuICAvL+WFs+mXreihqOWNlVxyXG4gIGhpZGVGb3JtKCkge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICB9XHJcblxyXG4gIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2V0TG9hZGluZyhsb2FkaW5nKTtcclxuICB9XHJcblxyXG4gIHNldEVkaXRGb3JtVmFsdWVzKHZhbHVlKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRGaWVsZHNWYWx1ZSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0Rm9ybVZhbHVlcygpIHtcclxuICAgIHJldHVybiB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy/mibnph4/liKDpmaRcclxuICBvbkRlbGV0ZShkYXRhPzogYW55KSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGRlbGV0ZVVybCxcclxuICAgICAgb25EZWxldGUsXHJcbiAgICAgIGRlbGV0ZVBhcmFtcyxcclxuICAgICAgZGVsZXRlUG9zaXRpb24gPSBcInRvb2xiYXJcIixcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGNvbnN0IHNlbGVjdGVkUm93S2V5cyA9IHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgICBpZiAoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIpIHtcclxuICAgICAgaWYgKHNlbGVjdGVkUm93S2V5cy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgIG1lc3NhZ2Uud2FybmluZyhcIuivt+mAieaLqeimgeWIoOmZpOeahOaVsOaNru+8gVwiKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIE1vZGFsLmNvbmZpcm0oe1xyXG4gICAgICBjb250ZW50OiBcIuaYr+WQpuehruiupOWIoOmZpOaJgOmAiemhue+8n1wiLFxyXG4gICAgICAvLyBjZW50ZXJlZDp0cnVlLFxyXG4gICAgICBvbk9rOiAoKSA9PiB7XHJcbiAgICAgICAgaWYgKG9uRGVsZXRlKSB7XHJcbiAgICAgICAgICBvbkRlbGV0ZSAmJlxyXG4gICAgICAgICAgICBvbkRlbGV0ZShkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cyA6IGRhdGEpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWRlbGV0ZVVybCkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJs5LiN6IO95Li656m677yBXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBkZWZhdWx0UGFyYW1zID0ge1xyXG4gICAgICAgICAgbWV0aG9kOiBcInBvc3RcIixcclxuICAgICAgICAgIGF1dG9QcmVmaXg6IHRydWUsXHJcbiAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgaWRzOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cy5qb2luKCkgOiBkYXRhLmlkLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGxldCByZXF1ZXN0UGFyYW1zID0ge30gYXMgYW55O1xyXG4gICAgICAgIGlmIChkZWZhdWx0UGFyYW1zKSB7XHJcbiAgICAgICAgICByZXF1ZXN0UGFyYW1zID0geyAuLi5kZWxldGVQYXJhbXMgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVxdWVzdFBhcmFtcyA9IHsgLi4uZGVmYXVsdFBhcmFtcyB9O1xyXG4gICAgICAgIHJlcXVlc3QoZGVsZXRlVXJsLCB7XHJcbiAgICAgICAgICAuLi5yZXF1ZXN0UGFyYW1zLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MoXCLliKDpmaTmiJDlip/vvIFcIik7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbHVlID0gX3RoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25EZWxldGVDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2soKTtcclxuICAgICAgICAgICAgICBfdGhpcy50YWJsZUxvYWQodmFsdWUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLliKDpmaTlpLHotKXvvIFcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnJvcik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICB0YWJsZUxvYWQocGFyYW1zOiBhbnksIHJlcXVlc3RDb25maWcgPSB7fSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZS5sb2FkKHtcclxuICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgcGFyYW1zOiBwYXJhbXMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy/mn6Xor6JcclxuICBvblNlYXJjaChwYXJhbXMpIHtcclxuICAgIGNvbnN0IHsgb25TZWFyY2gsIG9uQ2FsbEJhY2tzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKG9uU2VhcmNoKSB7XHJcbiAgICAgIG9uU2VhcmNoKHsgLi4ucGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50YWJsZUxvYWQoeyAuLi5wYXJhbXMsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH0pO1xyXG4gICAgb25DYWxsQmFja3M/Lm9uU2VhcmNoQ2FsbEJhY2sgJiZcclxuICAgICAgdXRpbHMuY2FsbGJhY2sob25DYWxsQmFja3M/Lm9uU2VhcmNoQ2FsbEJhY2ssIHRoaXMsIFtwYXJhbXNdKTtcclxuICB9XHJcbiAgLy/ooajmoLzph43mlrDliqDovb1cclxuICB0YWJsZVJlbG9hZChwYXJhbXMgPSB7fSwgYXV0b0xvYWQgPSB0cnVlKSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5yZWxvYWQoe1xyXG4gICAgICBjYWxsYmFjazogKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGF1dG9Mb2FkICYmXHJcbiAgICAgICAgICByZXM/LmRhdGE/LnJlY29yZHM/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRQYWdlICE9PSAxXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5yZWxvYWQoe1xyXG4gICAgICAgICAgICBwYXJhbXM6IHsgY3VycmVudDogMSwgLi4ucGFyYW1zIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93RGF0YXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0RhdGFzKCk7XHJcbiAgfVxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8ucmVzZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcblxyXG4gIGdldFNlYXJjaFZhbHVlcygpIHtcclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgIHJldHVybiB7IC4uLmZyb21WYWx1ZSwgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfTtcclxuICB9XHJcblxyXG4gIGdldENoaWxkcmVuRGF0YShkYXRhLCBrZXlzID0gW10pIHtcclxuICAgIGNvbnN0IHsgdGFibGVQcm9wcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHJlc0tleSA9IFtdO1xyXG4gICAgaWYgKGRhdGEuY2hpbGROb2Rlcykge1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IGRhdGEuY2hpbGROb2RlcztcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLmNoaWxkTm9kZXMpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0Q2hpbGRyZW5EYXRhKGl0ZW0uY2hpbGROb2Rlcywga2V5cyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBpdGVtW3Jvd0tleV1dO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNLZXkgPSBbLi4ua2V5cywgZGF0YVtyb3dLZXldXTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXNLZXk7XHJcbiAgfVxyXG5cclxuICByZW5kZXJUb29sQnV0dG9ucyh0b29sYnV0dG9uczogYW55LCB0b29sYmFyRmxhZykge1xyXG4gICAgY29uc3QgZmxhZyA9IHRvb2xidXR0b25zLmxlbmd0aCA+IDU7XHJcbiAgICAvLyB0b29sYnV0dG9ucyA9IFsuLi50b29sYnV0dG9uc10ucmV2ZXJzZSgpO1xyXG4gICAgY29uc3QgeyBzaG93U2VhcmNoID0gdHJ1ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgc2hvdywgLi4ucGFyYW1zIH0gPSBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiAzKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSxcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1pdGVtXCIpXHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICBtb3JlT3BlbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljaygpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRvb2wtYnV0dG9uc1wiKSl9XHJcbiAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogMCB9fVxyXG4gICAgICA+XHJcbiAgICAgICAge3Rvb2xidXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPCA0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogMTIsXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSA0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICBvcGVuPXt0aGlzLnN0YXRlLm1vcmVPcGVufVxyXG4gICAgICAgICAgICAgICAgICBvbk9wZW5DaGFuZ2U9eyhvcGVuKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3JlT3BlbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAvLyBvcGVuPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcC1ib3gnXX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIOabtOWkmiA8RG93bk91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiBpbmRleCA9PSB0b29sYnV0dG9ucy5sZW5ndGggLSAxID8gMCA6IDEyLFxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7aXRlbX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxuICByZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9uczogYW55LCByZWNvcmQ6IGFueSkge1xyXG4gICAgY29uc3QgeyBhY3Rpb25Qcm9wcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBjb25zdCBuZXdCdXR0b25zID0gW107XHJcbiAgICBsZXQgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgaWYgKGFjdGlvblByb3BzPy5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBlbHNlIGlmIChiYXNlQWN0aW9uQ29sdW1uLnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGNvbHVtbkJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHJlY29yZFNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAocmVjb3JkU2hvdykge1xyXG4gICAgICAgIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICBpZiAoZXZhbChyZWNvcmRTaG93KSkge1xyXG4gICAgICAgICAgICBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgIGNvbnN0IHNob3cgPSByZWNvcmRTaG93KHJlY29yZCk7XHJcbiAgICAgICAgICBzaG93ICYmIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGxldCBudW1iZXIgPSBhY3Rpb25Qcm9wcz8uYnV0dG9uTnVtYmVyXHJcbiAgICAgID8gYWN0aW9uUHJvcHM/LmJ1dHRvbk51bWJlclxyXG4gICAgICA6IGJhc2VBY3Rpb25Db2x1bW4/LmJ1dHRvbk51bWJlclxyXG4gICAgICA/IGJhc2VBY3Rpb25Db2x1bW4/LmJ1dHRvbk51bWJlclxyXG4gICAgICA6IDM7XHJcbiAgICBsZXQgZmxhZyA9IGZhbHNlO1xyXG4gICAgaWYgKG51bWJlciA9PSBcImFsbFwiKSB7XHJcbiAgICAgIGZsYWcgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZsYWcgPSBuZXdCdXR0b25zLmxlbmd0aCA+IG51bWJlcjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gbmV3QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgcmVjb3JkU2hvdywgaWNvbiwgc2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IE51bWJlcihudW1iZXIpIC0gMSkge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7IC4uLnRoaXMuc3RhdGUucG9wb3BlbnMgfTtcclxuICAgICAgICAgICAgICBkYXRhW3JlY29yZC5pZF0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIHBvcG9wZW5zOiBkYXRhLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbmV3QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgcmVjb3JkU2hvdywgaWNvbiwgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgaWYgKGluZGV4IDwgbnVtYmVyKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3ItZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgaWNvbj17aWNvbn1cclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IG51bWJlcikge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgdHJpZ2dlcj17W1wiY2xpY2tcIl19XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvcGVuPXt0aGlzLnN0YXRlLnBvcG9wZW5zW3JlY29yZC5pZF0gfHwgZmFsc2V9XHJcbiAgICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXsob3BlbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9wZW4pIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7IC4uLnRoaXMuc3RhdGUucG9wb3BlbnMgfTtcclxuICAgICAgICAgICAgICAgICAgZGF0YVtyZWNvcmQuaWRdID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3BlbnM6IGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3BlbnM6IHt9LFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wJ119XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIil9PlxyXG4gICAgICAgICAgICAgICAgPEVsbGlwc2lzT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3ItZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgdHlwZT1cImxpbmtcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIH1cclxuICB9XHJcbiAgLy/moJHngrnlh7vkuovku7ZcclxuICB0cmVlU2VsZWN0KHNlbGVjdGVkS2V5czogYW55LCBvYmo6IGFueSkge1xyXG4gICAgbGV0IGtleXdvcmQgPSBcIlwiO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzZWFyY2hLZXkgPSBcImtleVwiLFxyXG4gICAgICBzZWFyY2hGaWVsZCA9IFwiXCIsXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICB9ID0gdGhpcy5wcm9wcy50cmVlUHJvcHM7XHJcbiAgICBjb25zdCB7IHRyZWVTZWxlY3RlZEtleSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWQsIHNlbGVjdGVkTm9kZXMgfSA9IG9iajtcclxuXHJcbiAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAga2V5d29yZCA9IHNlbGVjdGVkTm9kZXNbMF0uZGF0YXJlZi5hdHRyaWJ1dGVbc2VhcmNoS2V5XTtcclxuICAgICAgaWYgKHBhcmFudFNlbGVjdCkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHsgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChzZWxlY3RlZE5vZGVzWzBdLmlzTGVhZiB8fCAhc2VsZWN0ZWROb2Rlc1swXS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgaWYgKHNlbGVjdGVkS2V5c1swXSAhPT0gdHJlZVNlbGVjdGVkS2V5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgICAgIHRyZWVTZWFyY2hQcmFtczogeyBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBrZXl3b3JkLFxyXG4gICAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucHJvcHMub25UcmVlU2VsZWN0KSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25UcmVlU2VsZWN0KHNlbGVjdGVkS2V5cywgb2JqKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpIHx8IHt9O1xyXG4gICAgc2VhcmNoRmllbGQgJiYgdGhpcy50YWJsZUxvYWQoeyAuLi5mcm9tVmFsdWUsIFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSk7XHJcbiAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2sgJiZcclxuICAgICAgdXRpbHMuY2FsbGJhY2sodGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrLCB0aGlzLCBbXHJcbiAgICAgICAgc2VsZWN0ZWRLZXlzLFxyXG4gICAgICAgIG9iaixcclxuICAgICAgXSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VhcmNoKCkge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICB9XHJcbiAgZ2V0VGV4dChwcm9wcywgdGV4dCkge1xyXG4gICAgbGV0IG5ld1RleHQgPSB0ZXh0O1xyXG4gICAgaWYgKHByb3BzPy5kYXRhICYmIHByb3BzPy5kYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBkYXRhID0gcHJvcHMuZGF0YTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhPy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChkYXRhW2ldLnZhbHVlID09IHRleHQpIHtcclxuICAgICAgICAgIG5ld1RleHQgPSBkYXRhW2ldLmxhYmVsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld1RleHQ7XHJcbiAgfVxyXG4gIHNldFRhYmxlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5zZXREYXRhKGRhdGEpO1xyXG4gIH1cclxuICBzZXRUcmVlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnRyZWVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkS2V5ID0gKHNlbGVjdGVkKSA9PiB7XHJcbiAgICBsZXQgcmVzID0gW107XHJcbiAgICBmb3IgKGxldCBrZXkgaW4gc2VsZWN0ZWQpIHtcclxuICAgICAgY29uc3Qga2V5cyA9IHNlbGVjdGVkW2tleV07XHJcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICByZXMgPSBbLi4ucmVzLCAuLi5rZXlzXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9O1xyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNvbHVtbnMgPSBbXSxcclxuICAgICAgc2hvd1NlYXJjaCA9IHRydWUsXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBzdWJtaXRVcmwgPSBcIlwiLFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICAgIHRyZWVQcm9wcyA9IHt9LFxyXG4gICAgICBmb3JtUHJvcHMgPSB7fSxcclxuICAgICAgc2hvd0xlZnQgPSBmYWxzZSxcclxuICAgICAgc3VibWl0UGFyYW1zID0ge30sXHJcbiAgICAgIHNob3dUb29sQnV0dG9uID0gdHJ1ZSxcclxuICAgICAgYnV0dG9ucyA9IFtdLFxyXG4gICAgICBlZGl0b3JGb3JtID0gdHJ1ZSxcclxuICAgICAgb25TaG93Rm9ybSxcclxuICAgICAgZm9ybUNoYW5nZVZhbGlkID0gdHJ1ZSxcclxuICAgICAgY2xhc3NOYW1lLFxyXG4gICAgICB0b29sQnV0dG9uUG9zaXRpb24gPSBcImJ1dHRvbVwiLFxyXG4gICAgICBhY3Rpb25Qcm9wcyxcclxuICAgICAgZGVsZXRlUG9zaXRpb24gPSBcInRvb2xiYXJcIixcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZSxcclxuICAgICAgZmlsdGVyQ29sdW1uID0gdHJ1ZSxcclxuICAgICAgYWN0aW9uQ29sdW1uID0gdHJ1ZSxcclxuICAgICAgc2hvd1Jvd1NlbGVjdGlvbiA9IHRydWUsXHJcbiAgICAgIGNvbHVtbk9yZGVyID0gdHJ1ZSxcclxuICAgICAgZXhwYW5kYWJsZSA9IHt9LFxyXG4gICAgICBwYXJhbnRTZWxlY3QgPSB0cnVlLFxyXG4gICAgICB0aXRsZTogdGFibGVUaXRsZSxcclxuICAgICAgLi4ub3RoZXJ0YWJsZVBhcmFtc1xyXG4gICAgfSA9IHRhYmxlUHJvcHM7XHJcblxyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZTogdHJlZVN0b3JlID0ge30sXHJcbiAgICAgIHNob3dTZWFyY2g6IHRyZWVTZWFyY2ggPSB0cnVlLFxyXG4gICAgICB0aXRsZUFsaWFzID0gXCJ0aXRsZVwiLFxyXG4gICAgICB0aXRsZTogdHJlZVRpdGxlLFxyXG4gICAgICAuLi5vdGhlcnRyZWVQYXJhbXNcclxuICAgIH0gPSB0cmVlUHJvcHM7XHJcbiAgICBsZXQgdGFibGVQYXJhbXMgPSB7IGZpbHRlckNvbHVtbiwgc3RvcmUsIC4uLm90aGVydGFibGVQYXJhbXMgfSBhcyBhbnk7XHJcbiAgICBsZXQgdGFibGVDb2x1bW46IGFueVtdID0gW107XHJcbiAgICBjb25zdCBzZWFyY2hGb3JtczogYW55ID0gW107XHJcbiAgICBjb25zdCBlZGl0b3JGb3JtczogYW55ID0gW107XHJcbiAgICBjb25zdCBkZWZhdWx0VmFsdWU6IGFueSA9IHt9O1xyXG4gICAgY29uc3QgY29sdW1uQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCB7IGVsZW1lbnRIZWlnaHQgfSA9IHRoaXMuc3RhdGU7XHJcblxyXG4gICAgY29sdW1ucy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBsZXQgdGVtcCA9IHsgd2lkdGg6IDEwMCwgLi4uaXRlbSB9O1xyXG4gICAgICBpZiAodGVtcC5zZWFyY2ggPT09IHRydWUgfHwgdGVtcC5zZWFyY2g/LnNob3cgPT09IHRydWUpIHtcclxuICAgICAgICBzZWFyY2hGb3Jtcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBsYWJlbDogdGVtcC5zZWFyY2g/LmxhYmVsIHx8IHRlbXAudGl0bGUsXHJcbiAgICAgICAgICB0eXBlOiB0ZW1wLnR5cGUsXHJcbiAgICAgICAgICBwcm9wczogdGVtcC5wcm9wcyxcclxuICAgICAgICAgIGxhYmVsQ29sOiB0ZW1wLnNlYXJjaD8ubGFiZWxDb2wsXHJcbiAgICAgICAgICB3cmFwcGVyQ29sOiB0ZW1wLnNlYXJjaD8ud3JhcHBlckNvbCxcclxuICAgICAgICAgIHJ1bGVzOiB0ZW1wLnNlYXJjaFJ1bGVzID8gdGVtcC5zZWFyY2hSdWxlcyA6IFtdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBkZWxldGUgdGVtcC5zZWFyY2g7XHJcbiAgICAgIHRlbXAuZWRpdG9yICE9PSBmYWxzZSAmJlxyXG4gICAgICAgIGVkaXRvckZvcm1zLnB1c2goe1xyXG4gICAgICAgICAgbmFtZTogdGVtcC5maWVsZCB8fCB0ZW1wLmRhdGFJbmRleCxcclxuICAgICAgICAgIGxhYmVsOiB0ZW1wLnRpdGxlLFxyXG4gICAgICAgICAgcnVsZXM6IHRlbXAucnVsZXMgPyB0ZW1wLnJ1bGVzIDogW10sXHJcbiAgICAgICAgICB0eXBlOiB0ZW1wLnR5cGUsXHJcbiAgICAgICAgICBzcGFuOiB0ZW1wLnNwYW4sXHJcbiAgICAgICAgICBkaWN0TmFtZTogdGVtcC5kaWN0TmFtZSxcclxuICAgICAgICAgIHByb3BzOiB7IC4uLnRlbXAucHJvcHMgfSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICB0ZW1wLnByb3BzPy5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgIHRlbXAucHJvcHM/LmRlZmF1bHRWYWx1ZSAhPT0gbnVsbFxyXG4gICAgICApIHtcclxuICAgICAgICBjb25zdCBuYW1lID0gdGVtcC5maWVsZCB8fCB0ZW1wLmRhdGFJbmRleDtcclxuICAgICAgICBkZWZhdWx0VmFsdWVbbmFtZV0gPSB0ZW1wLnByb3BzPy5kZWZhdWx0VmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAucnVsZXM7XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnNwYW47XHJcbiAgICAgIGlmICh0ZW1wLmNvbHVtblNlYXJjaCkge1xyXG4gICAgICAgIHRlbXAuZmlsdGVyUHJvcHMgPSB7XHJcbiAgICAgICAgICB0eXBlOiB0ZW1wLnR5cGUsXHJcbiAgICAgICAgICBwcm9wczogdGVtcC5wcm9wcyxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnR5cGU7XHJcbiAgICAgIGxldCB0ZW1wUHJvcCA9IHsgLi4udGVtcC5wcm9wcyB9O1xyXG4gICAgICBpZiAoIXRlbXAuZWxsaXBzaXMpIHtcclxuICAgICAgICB0ZW1wID0ge1xyXG4gICAgICAgICAgZWxsaXBzaXM6IHsgc2hvd1RpdGxlOiBmYWxzZSB9LFxyXG4gICAgICAgICAgcmVuZGVyOiAodGV4dDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFRleHQodGVtcFByb3AsIHRleHQpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnRlbXAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0ZW1wID0ge1xyXG4gICAgICAgICAgZWxsaXBzaXM6IHRydWUsXHJcbiAgICAgICAgICAuLi50ZW1wLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAucHJvcHM7XHJcblxyXG4gICAgICAvLyB0ZW1wLmVsbGlwc2lzID0gdHJ1ZTtcclxuICAgICAgaWYgKHRlbXA/LmNvbHVtblNob3cgIT09IGZhbHNlKSB0YWJsZUNvbHVtbi5wdXNoKHRlbXApO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBzZWxmQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCB7IGJhc2VBY3Rpb25Db2x1bW4gfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHNob3dJY29uID0gdHJ1ZTtcclxuICAgIGlmIChhY3Rpb25Qcm9wcz8uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgZWxzZSBpZiAoYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcInNlYXJjaFwiKSA+IC0xKSB7XHJcbiAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICBvblNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImRldGFpbFwiKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJkZXRhaWxcIik7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgaWNvbj17PEV5ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgdHlwZT1cImxpbmtcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIOafpeeci1xyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcImVkaXRvclwiKSA+IC0xKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgICAgb25TaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJlZGl0b3JcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZWRpdG9yXCIpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBpY29uPXs8RWRpdE91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDnvJbovpFcclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJhZGRcIikgPiAtMSkge1xyXG4gICAgICBzZWxmQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgIDxCdXR0b25cclxuICAgICAgICAgIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB7IG9uU2hvd0Zvcm0gfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgb25TaG93Rm9ybShudWxsLCBcImFkZFwiKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zaG93Rm9ybSgpO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIGljb249ezxQbHVzT3V0bGluZWQgLz59XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAg5re75YqgXHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwiZGVsZXRlXCIpID4gLTEpIHtcclxuICAgICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgLy8gdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25EZWxldGUuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgaWNvbj17PERlbGV0ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5Yig6ZmkXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwicm93XCIpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIC8vIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLm9uRGVsZXRlKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGljb249ezxEZWxldGVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgZGFuZ2VyXHJcbiAgICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5Yig6ZmkXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xyXG4gICAgICAgICAgaXRlbS5tYXAoKGNoaWxkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiIHx8XHJcbiAgICAgICAgICAgICAgY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgIHNlbGZCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICBpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIiB8fFxyXG4gICAgICAgICAgICBpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIlxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICBjb25zdCB7IHByb3BzIH06IGFueSA9IGNoaWxkcmVuO1xyXG4gICAgICBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhY3Rpb25Db2x1bW4gJiZcclxuICAgICAgdGFibGVDb2x1bW4ucHVzaCh7XHJcbiAgICAgICAgdGl0bGU6IFwi5pON5L2cXCIsXHJcbiAgICAgICAgZGF0YUluZGV4OiBcImFjdGlvblwiLFxyXG4gICAgICAgIGFsaWduOiBhY3Rpb25Qcm9wcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGFjdGlvblByb3BzPy50ZXh0QWxpZ25cclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgIDogXCJsZWZ0XCIsXHJcbiAgICAgICAgd2lkdGg6IGFjdGlvblByb3BzPy53aWR0aFxyXG4gICAgICAgICAgPyBhY3Rpb25Qcm9wcz8ud2lkdGhcclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICA6IDIwMCxcclxuICAgICAgICBmaXhlZDogXCJyaWdodFwiLFxyXG4gICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSwgcmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtYWN0aW9uXCIpfT5cclxuICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9ucywgcmVjb3JkKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIGlmIChjb2x1bW5PcmRlcilcclxuICAgICAgdGFibGVDb2x1bW4gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6IFwi5bqP5Y+3XCIsXHJcbiAgICAgICAgICB3aWR0aDogODAsXHJcbiAgICAgICAgICBhbGlnbjogXCJjZW50ZXJcIixcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQsIHJlYWNvcmQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiA8PntpbmRleCArIDF9PC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRhYmxlQ29sdW1uLFxyXG4gICAgICBdO1xyXG4gICAgbGV0IHNlYXJjaEZsYWcgPSBzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDA7XHJcbiAgICBsZXQgeyB0YWJsZVRvb2wgfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xGbGFnID1cclxuICAgICAgc2hvd1Rvb2xCdXR0b24gJiZcclxuICAgICAgc2VsZkJ1dHRvbnMubGVuZ3RoID4gMCAmJlxyXG4gICAgICB0b29sQnV0dG9uUG9zaXRpb24gPT0gXCJidXR0b21cIjtcclxuICAgIGxldCB0b29sYmFyRmxhZyA9ICEoXHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhciA9PSBmYWxzZSB8fFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnNob3cgPT0gZmFsc2UgfHxcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyPy50b29scz8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgdGFibGVUb29sPy5zaG93ID09IGZhbHNlXHJcbiAgICApO1xyXG5cclxuICAgIGxldCBwYWdlSGVpZ2h0ID0gdGhpcy5wcm9wcy5wYWdlVHlwZSA9PSBcInRhYnNwYWdlXCIgPyA2MyA6IDA7XHJcbiAgICBsZXQgdGFibGVIZWFkZXJIZWlnaHQgPSA1NTtcclxuXHJcbiAgICBsZXQgaGVhZGVySGVpZ2h0ID0gc2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwID8gMTA0IDogMDtcclxuICAgIGxldCB0b29sSGVpZ2h0ID0gdGFibGVUaXRsZSB8fCB0b29sRmxhZyA/IDQ4IDogMDtcclxuICAgIGxldCBwYWRkaW5nSGVpZ2h0ID0gMjU7XHJcbiAgICBsZXQgdGFibGVDb250ZW50SGVpZ2h0ID1cclxuICAgICAgZWxlbWVudEhlaWdodCAtIGhlYWRlckhlaWdodCAtIHRvb2xIZWlnaHQgLSBwYWRkaW5nSGVpZ2h0IC0gcGFnZUhlaWdodDtcclxuICAgIGxldCB0YWJsZUhlaWdodCA9IHRhYmxlQ29udGVudEhlaWdodCAtIDMyIC0gMzI7XHJcbiAgICBsZXQgdGFibGVTcm9sbEhlaWdodCA9IHRhYmxlQ29udGVudEhlaWdodCAtIHRhYmxlSGVhZGVySGVpZ2h0IC0gMzIgLSAzMjtcclxuICAgIGlmICh0YWJsZVByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlKSB7XHJcbiAgICAgIGNvbnN0IHNjcm9sbCA9IHRhYmxlUGFyYW1zLnNjcm9sbDtcclxuICAgICAgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgICAgLi4udGFibGVQYXJhbXMsXHJcbiAgICAgICAgc2Nyb2xsOiB7IHg6IFwibWF4LWNvbnRlbnRcIiwgeTogdGFibGVTcm9sbEhlaWdodCwgLi4uc2Nyb2xsIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlXCIpLCBjbGFzc05hbWUpfVxyXG4gICAgICAgIHJlZj17dGhpcy5wYWdlUmVmfVxyXG4gICAgICA+XHJcbiAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlICYmIChcclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRpdGxlXCIpKX0+XHJcbiAgICAgICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXBhbmVcIikpfVxyXG4gICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogXCJmbGV4XCIgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7c2hvd0xlZnQgJiYgKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWxlZnRcIil9PlxyXG4gICAgICAgICAgICAgIHt0cmVlVGl0bGUgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRyZWUtdGl0bGVcIil9Pnt0cmVlVGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLWNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcInRyZWUtY29udGVudC1ub3RpdGxlXCIpXTogIXRyZWVUaXRsZSxcclxuICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxUcmVlXHJcbiAgICAgICAgICAgICAgICAgIHN0b3JlPXt7IC4uLnRyZWVTdG9yZSB9fVxyXG4gICAgICAgICAgICAgICAgICBzaG93SWNvbj17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgIGNoZWNrYWJsZT17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGU9e3RyZWVTZWFyY2h9XHJcbiAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLnRyZWVTZWxlY3QuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRLZXlzPXtbdGhpcy5zdGF0ZS50cmVlU2VsZWN0ZWRLZXldfVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZUFsaWFzPXt0aXRsZUFsaWFzfVxyXG4gICAgICAgICAgICAgICAgICB7Li4ub3RoZXJ0cmVlUGFyYW1zfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcmlnaHRcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLW5vLWxlZnQtcmlnaHRcIildOiAhc2hvd0xlZnQsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWhlYWRlcnNlYXJjaFwiKX0+XHJcbiAgICAgICAgICAgICAgICA8SGVhZGVyU2VhcmNoXHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1zPXtzZWFyY2hGb3Jtc31cclxuICAgICAgICAgICAgICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uPXt0b29sQnV0dG9uUG9zaXRpb259XHJcbiAgICAgICAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIG9uUmVzZXQ9e3RoaXMucHJvcHMub25SZXNldH1cclxuICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnNlYXJjaFJlZn1cclxuICAgICAgICAgICAgICAgICAgc2VhcmNoRm9ybVByb3BzPXt0aGlzLnByb3BzLnNlYXJjaEZvcm1Qcm9wc31cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWdhcFwiKV06ICFzZWFyY2hGbGFnLFxyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgeyh0YWJsZVRpdGxlIHx8IHRvb2xGbGFnKSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10aXRsZVwiKSwge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGl0bGUtd2lkdGhcIildOiAhdG9vbGJhckZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2Pnt0YWJsZVRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICB7dG9vbEZsYWcgJiYgdGhpcy5yZW5kZXJUb29sQnV0dG9ucyhzZWxmQnV0dG9ucywgdG9vbGJhckZsYWcpfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuXHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZVwiKSxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdG9wXCIpXTogIXRvb2xiYXJGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10b3AyXCIpXTpcclxuICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJGbGFnICYmICF0b29sRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogdGFibGVDb250ZW50SGVpZ2h0IH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy50YWJsZVJlZn1cclxuICAgICAgICAgICAgICAgICAgY29sdW1ucz17dGFibGVDb2x1bW59XHJcbiAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU9e3tcclxuICAgICAgICAgICAgICAgICAgICBleHBhbmRJY29uOiAoeyBleHBhbmRlZCwgb25FeHBhbmQsIHJlY29yZCB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEb3duT3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJuc2MtYmFzZXBhZ2UtZXhwYW5kLWljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXMgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmlnaHRPdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibnNjLWJhc2VwYWdlLWV4cGFuZC1pY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLmV4cGFuZGFibGUsXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbk9yZGVyPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHBhZ2luYXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGN1cnJlbnRQYWdlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UGFnZSAhPT0gcGFnaW5hdGlvbi5jdXJyZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhZ2U6IHBhZ2luYXRpb24uY3VycmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgdG9vbGJhcj17e1xyXG4gICAgICAgICAgICAgICAgICAgIG9uVG9vbENsaWNrOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvblJlZnJlc2g6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUxvYWQocGFyYW1zKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAuLi50YWJsZVByb3BzLnRvb2xiYXIsXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHNob3dSb3dTZWxlY3Rpb249e3Nob3dSb3dTZWxlY3Rpb259XHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogdGFibGVIZWlnaHQgfX1cclxuICAgICAgICAgICAgICAgICAgey4uLnRhYmxlUGFyYW1zfVxyXG4gICAgICAgICAgICAgICAgICAvLyBwYWdpbmF0aW9uPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICB7LyogPGRpdj48L2Rpdj4gKi99XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB7ZWRpdG9yRm9ybSAmJiAoXHJcbiAgICAgICAgICAgIDxFZGl0b3JGb3JtXHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmVkaXRvclJlZn1cclxuICAgICAgICAgICAgICBjYWxsQmFjaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TdW1iaXRDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblN1bWJpdENhbGxCYWNrKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlUmVsb2FkKCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICBmb3JtUHJvcHM9e2VkaXRvckZvcm1zfVxyXG4gICAgICAgICAgICAgIHN1Ym1pdFVybD17c3VibWl0VXJsfVxyXG4gICAgICAgICAgICAgIHN1Ym1pdFBhcmFtcz17c3VibWl0UGFyYW1zfVxyXG4gICAgICAgICAgICAgIG9uU3VibWl0PXt0aGlzLnByb3BzLm9uU3VibWl0fVxyXG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZT17ZGVmYXVsdFZhbHVlfVxyXG4gICAgICAgICAgICAgIG9uSGlkZUZvcm09e3RoaXMucHJvcHMub25IaWRlRm9ybX1cclxuICAgICAgICAgICAgICBvbkZvcm1DaGFuZ2U9e3RoaXMucHJvcHMub25Gb3JtQ2hhbmdlfVxyXG4gICAgICAgICAgICAgIGZvcm1UeXBlPXt0aGlzLnByb3BzLmZvcm1UeXBlIHx8IFwiYXV0b1wifVxyXG4gICAgICAgICAgICAgIGNoYW5nZVZhbGlkPXtmb3JtQ2hhbmdlVmFsaWR9XHJcbiAgICAgICAgICAgICAgb3RoZXJQcm9wcz17eyAuLi5mb3JtUHJvcHMgfX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgQmFzZVBhZ2U7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBbUIsT0FBTztBQUN2RCxPQUFPQyxLQUFLLE1BQU0sa0JBQWtCO0FBQ3BDLE9BQU9DLElBQUksTUFBTSxpQkFBaUI7QUFDbEMsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPQyxLQUFLLE1BQU0sa0JBQWtCO0FBQ3BDLE9BQU9DLE9BQU8sTUFBTSxvQkFBb0I7QUFDeEMsT0FBT0MsT0FBTyxNQUFNLG9CQUFvQjtBQUN4QyxPQUFPQyxVQUFVLE1BQU0sUUFBUTtBQUMvQixPQUFPQyxHQUFHLE1BQU0sWUFBWTtBQUM1QixPQUFPLHFCQUFxQjtBQUU1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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","PureComponent","Table","Tree","Button","Modal","Popover","message","EditorForm","cls","utils","DownOutlined","EyeOutlined","EditOutlined","RightOutlined","PlusOutlined","EllipsisOutlined","DeleteOutlined","getLess","request","config","getStorage","HeaderSearch","styles","BasePage","constructor","props","_type","_size","_defineProperty","createRef","checkedTreeKeys","name","userType","account","state","value","deptId","onSearch","selected","res","key","keys","length","storePrefix","type","content","size","selectedRowKeys","selectedRowDatas","treeSelectedKey","expand","formType","tableSize","treeSearchPrams","popopens","elementHeight","componentDidMount","_this$pageRef$current","initData","pageRef","current","clientHeight","setState","setSearchParams","params","callBack","_this$searchRef$curre","searchRef","showForm","_this$editorRef","editorflag","arguments","undefined","editorRef","show","_objectSpread","hideForm","_this$editorRef$curre","setLoading","loading","_this$editorRef$curre2","setEditFormValues","_this$editorRef$curre3","setFieldsValue","getEditFormValues","_this$editorRef$curre4","getFieldsValue","onDelete","data","_this$tableRef$curren","deleteUrl","deleteParams","deletePosition","_this","tableRef","getSelectedRowKeys","warning","confirm","onOk","Error","defaultParams","method","autoPrefix","ids","join","id","requestParams","then","code","_this$searchRef","_this$props$onCallBac","_this$props$onCallBac2","success","getSearchValues","onCallBacks","onDeleteCallBack","tableLoad","error","catch","console","log","_this$tableRef$curren2","requestConfig","store","load","onSearchCallBack","callback","tableReload","_this$tableRef$curren3","autoLoad","reload","_res$data","records","currentPage","_this$tableRef$curren4","_this$tableRef$curren5","getSelectedRowDatas","_this$tableRef$curren6","resetSelectedRowKeys","_this$tableRef$curren7","_this$searchRef2","fromValue","getChildrenData","tableProps","rowKey","resKey","childNodes","children","map","item","index","renderToolButtons","toolbuttons","toolbarFlag","flag","reverse","showSearch","_item$props","pageType","onClick","icon","_objectWithoutProperties","_excluded","createElement","_extends","className","style","marginLeft","title","placement","trigger","renderCloumnButton","columnButtons","record","actionProps","baseActionColumn","newButtons","showIcon","_item$props2","recordShow","_excluded2","eval","push","number","buttonNumber","_item$props3","_excluded3","Number","_item$props4","_excluded4","open","onOpenChange","treeSelect","selectedKeys","obj","_this$searchRef3","_this$props$onCallBac3","_this$props$onCallBac4","keyword","searchKey","searchField","parantSelect","treeProps","selectedNodes","dataref","attribute","isLeaf","onTreeSelect","treeSelectCallBack","resetSearch","_this$searchRef$curre2","resetFields","getText","text","_props$data","newText","i","label","setTableData","_this$tableRef$curren8","setData","setTreeData","_this$treeRef$current","treeRef","render","_tableProps$toolbar","_tableProps$toolbar2","columns","submitUrl","formProps","showLeft","submitParams","showToolButton","buttons","editorForm","onShowForm","formChangeValid","toolButtonPosition","filterColumn","actionColumn","showRowSelection","columnOrder","expandable","tableTitle","othertableParams","_excluded5","treeStore","treeSearch","titleAlias","treeTitle","othertreeParams","_excluded6","tableParams","tableColumn","searchForms","editorForms","defaultValue","_temp$search","_temp$props","_temp$props2","_temp","temp","width","search","_temp$search2","_temp$search3","_temp$search4","field","dataIndex","labelCol","wrapperCol","rules","searchRules","editor","span","dictName","_temp$props3","columnSearch","filterProps","tempProp","ellipsis","showTitle","columnShow","selfButtons","indexOf","bind","danger","Array","isArray","child","_child$props","_child$props2","_child$props3","_item$props5","_item$props6","_item$props7","align","textAlign","fixed","reacord","Fragment","searchFlag","tableTool","toolFlag","toolbar","tools","pageHeight","tableHeaderHeight","headerHeight","toolHeight","paddingHeight","tableContentHeight","tableHeight","tableSrollHeight","pagination","scroll","x","y","ref","pageTitle","display","checkable","searchable","onSelect","onReset","searchFormProps","height","expandIcon","_ref","expanded","onExpand","e","onChange","onToolClick","onRefresh","_this$props$onCallBac5","_this$props$onCallBac6","onSumbitCallBack","onSubmit","onHideForm","onFormChange","changeValid","otherProps"],"sources":["../../../src/components/page/BasePage/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Table from \"../../base/table\";\r\nimport Tree from \"../../base/tree\";\r\nimport Button from \"../../base/button\";\r\nimport Modal from \"../../base/modal\";\r\nimport Popover from \"../../base/popover\";\r\nimport message from \"../../base/message\";\r\nimport EditorForm from \"./Form\";\r\nimport cls from \"classnames\";\r\nimport \"./index.module.less\";\r\nimport Store, { PageStore, StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport {\r\n DownOutlined,\r\n EyeOutlined,\r\n EditOutlined,\r\n RightOutlined,\r\n PlusOutlined,\r\n EllipsisOutlined,\r\n DeleteOutlined,\r\n} from \"@ant-design/icons\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport request from \"nsc-request\";\r\nimport omit from \"omit.js\";\r\nimport config from \"../../config\";\r\nimport { getStorage, px2vw } from \"@bj-nsc/functions\";\r\nimport { IFormProps } from \"../../base/form/Form\";\r\nimport HeaderSearch from \"../HeaderSearch\";\r\nimport { PaginationProps } from \"antd\";\r\ninterface TableProps {\r\n actionColumn?: boolean; //是否显示操作列\r\n store?: StoreProps;\r\n filterColumn?: boolean; //是否显示过滤按钮\r\n showRowSelection?: boolean; //是否表格勾选列\r\n pagination?: boolean | PaginationProps; //是否显示分页\r\n columnOrder?: boolean; //是否显示表格序列\r\n [propsName: string]: any;\r\n}\r\nconst styles = null;\r\ninterface TreeProps {\r\n store?: StoreProps;\r\n showSearch?: boolean; //是否显示搜索框\r\n searchKey?: string; //搜索value对应的key\r\n searchField?: string; //查询对应的key\r\n titleAlias?: string; //树title对应的key,默认title\r\n nodePorps?: object;\r\n parantSelect?: boolean;\r\n [propsName: string]: any;\r\n}\r\ninterface FormProps extends IFormProps {}\r\ninterface NSCBaseBageProps {\r\n showSearch?: boolean; //是否显示头部搜索栏\r\n tableProps?: TableProps; //表格参数\r\n treeProps?: TreeProps; //左侧树参数\r\n submitParams?: Object; //添加参数,默认mothod:post, 参数通过data传递\r\n submitUrl?: string;\r\n onSubmit?: (value?: any, label?: any) => void;\r\n columns: Array<Object>;\r\n showLeft?: boolean; //是否显示左侧目录树\r\n showToolButton?: boolean; //是否显示按钮栏\r\n editorForm?: boolean; //是否需要表单功能 , 为false 编辑,查看,新增功能均不可用\r\n deleteUrl?: string; //删除url\r\n onDelete?: (selectedKeys?: Array<string>) => void; //删除参数,默认mothod:post, 参数通过ids拼接传递给后台\r\n deletePosition?: \"toolbar\" | \"row\";\r\n deleteParams?: Object;\r\n children?: React.ReactNode;\r\n onSearch?: (value?: any) => void;\r\n onReset?: () => void;\r\n initData?: any; //初始化回调函数,在componentDidMount中调用\r\n buttons?: Array<string>; //按钮集合 ['add','delete','search','editor']\r\n onShowForm?: (value?: any, editorFlag?: string) => void; //打开表单回调\r\n onHideForm?: () => void; //打开表单回调\r\n onFormChange?: (changedValues?: any, allValues?: any) => void; //表单onChange回调\r\n formType?: \"modal\" | \"drawer\";\r\n formChangeValid?: boolean; //表单校验\r\n className?: any;\r\n toolButtonPosition?: \"right\" | \"buttom\";\r\n pageTitle?: string | ReactNode;\r\n formProps?: FormProps;\r\n actionProps?: {\r\n textAlign?: string;\r\n showIcon?: boolean;\r\n width?: number;\r\n buttonNumber?: number | \"all\";\r\n };\r\n searchFormProps?: { wrapperCol?: any; labelCol?: any };\r\n onTreeSelect?: (value?: any, editorFlag?: string) => void; //打开表单回调\r\n onCallBacks?: {\r\n treeSelectCallBack?: any;\r\n onSearchCallBack?: any;\r\n onSumbitCallBack?: any;\r\n onDeleteCallBack?: any;\r\n };\r\n pageType?: \"normal\" | \"tabspage\";\r\n}\r\n\r\nclass BasePage extends PureComponent<NSCBaseBageProps, any> {\r\n tableRef = React.createRef<any>();\r\n treeRef = React.createRef<any>();\r\n searchRef = React.createRef<any>();\r\n editorRef = React.createRef<any>();\r\n pageRef = React.createRef<any>();\r\n dateFormat = {} as any;\r\n constructor(props: any) {\r\n super(props);\r\n let { storePrefix } = config();\r\n let type = getStorage(\r\n storePrefix ? storePrefix + \"-\" + \"formType\" : \"formType\"\r\n );\r\n type = type?.content;\r\n let size = getStorage(\r\n storePrefix ? storePrefix + \"-\" + \"tableSize\" : \"tableSize\"\r\n );\r\n size = size?.content;\r\n this.state = {\r\n type: \"add\",\r\n selectedRowKeys: [],\r\n selectedRowDatas: [],\r\n treeSelectedKey: \"\",\r\n expand: false,\r\n formType: type || \"modal\",\r\n tableSize: size || \"default\",\r\n treeSearchPrams: {},\r\n popopens: {},\r\n elementHeight: 0,\r\n };\r\n }\r\n componentDidMount() {\r\n const { initData } = this.props;\r\n const elementHeight = this.pageRef.current?.clientHeight;\r\n this.setState({\r\n elementHeight,\r\n });\r\n initData && initData();\r\n }\r\n\r\n setSearchParams(params, callBack) {\r\n this.searchRef.current?.setSearchParams(params);\r\n callBack && callBack(params);\r\n }\r\n\r\n onSelect = (checkedTreeKeys: any) => {\r\n const { name, userType, account } = this.state;\r\n const value = { name, userType, account, deptId: checkedTreeKeys[0] };\r\n if (this.props.onSearch) {\r\n this.props.onSearch(value);\r\n }\r\n // this.tableLoad(value);\r\n };\r\n\r\n //显示表单\r\n showForm(value?: any, editorflag = \"add\") {\r\n this.editorRef?.current?.show({ ...value }, editorflag);\r\n }\r\n\r\n //关闭表单\r\n hideForm() {\r\n this.editorRef.current?.hideForm();\r\n }\r\n\r\n setLoading(loading: boolean) {\r\n this.editorRef.current?.setLoading(loading);\r\n }\r\n\r\n setEditFormValues(value) {\r\n this.editorRef.current?.setFieldsValue(value);\r\n }\r\n\r\n getEditFormValues() {\r\n return this.editorRef.current?.getFieldsValue();\r\n }\r\n\r\n //批量删除\r\n onDelete(data?: any) {\r\n const {\r\n deleteUrl,\r\n onDelete,\r\n deleteParams,\r\n deletePosition = \"toolbar\",\r\n } = this.props;\r\n let _this = this;\r\n const selectedRowKeys = this.tableRef.current?.getSelectedRowKeys();\r\n if (deletePosition == \"toolbar\") {\r\n if (selectedRowKeys.length == 0) {\r\n message.warning(\"请选择要删除的数据!\");\r\n return;\r\n }\r\n }\r\n Modal.confirm({\r\n content: \"是否确认删除所选项?\",\r\n // centered:true,\r\n onOk: () => {\r\n if (onDelete) {\r\n onDelete &&\r\n onDelete(deletePosition == \"toolbar\" ? selectedRowKeys : data);\r\n return;\r\n }\r\n if (!deleteUrl) {\r\n throw new Error(\"url不能为空!\");\r\n }\r\n const defaultParams = {\r\n method: \"post\",\r\n autoPrefix: true,\r\n params: {\r\n ids: deletePosition == \"toolbar\" ? selectedRowKeys.join() : data.id,\r\n },\r\n };\r\n let requestParams = {} as any;\r\n if (defaultParams) {\r\n requestParams = { ...deleteParams };\r\n }\r\n requestParams = { ...defaultParams };\r\n request(deleteUrl, {\r\n ...requestParams,\r\n })\r\n .then(function (res: any) {\r\n const { code } = res;\r\n if (code === 200) {\r\n message.success(\"删除成功!\");\r\n let value = _this.searchRef?.current?.getSearchValues();\r\n _this.props.onCallBacks?.onDeleteCallBack &&\r\n _this.props.onCallBacks?.onDeleteCallBack();\r\n _this.tableLoad(value);\r\n } else {\r\n message.error(\"删除失败!\");\r\n }\r\n })\r\n .catch(function (error: any) {\r\n console.log(\"error\", error);\r\n });\r\n },\r\n });\r\n }\r\n tableLoad(params: any, requestConfig = {}) {\r\n this.tableRef.current?.store.load({\r\n ...requestConfig,\r\n params: params,\r\n });\r\n }\r\n //查询\r\n onSearch(params) {\r\n const { onSearch, onCallBacks } = this.props;\r\n if (onSearch) {\r\n onSearch({ ...params, ...this.state.treeSearchPrams });\r\n return;\r\n }\r\n this.tableLoad({ ...params, ...this.state.treeSearchPrams });\r\n onCallBacks?.onSearchCallBack &&\r\n utils.callback(onCallBacks?.onSearchCallBack, this, [params]);\r\n }\r\n //表格重新加载\r\n tableReload(params = {}, autoLoad = true) {\r\n this.tableRef.current?.store?.reload({\r\n callback: (res) => {\r\n if (\r\n autoLoad &&\r\n res?.data?.records?.length == 0 &&\r\n this.state.currentPage !== 1\r\n ) {\r\n this.tableRef.current?.store?.reload({\r\n params: { current: 1, ...params },\r\n });\r\n }\r\n },\r\n });\r\n }\r\n getSelectedRowKeys() {\r\n return this.tableRef.current?.getSelectedRowKeys();\r\n }\r\n getSelectedRowDatas() {\r\n return this.tableRef.current?.getSelectedRowDatas();\r\n }\r\n resetSelectedRowKeys() {\r\n return this.tableRef.current?.resetSelectedRowKeys();\r\n }\r\n\r\n getSearchValues() {\r\n const fromValue = this.searchRef?.current?.getSearchValues();\r\n return { ...fromValue, ...this.state.treeSearchPrams };\r\n }\r\n\r\n getChildrenData(data, keys = []) {\r\n const { tableProps } = this.props;\r\n const { rowKey = \"id\" } = tableProps;\r\n let resKey = [];\r\n if (data.childNodes) {\r\n const children = data.childNodes;\r\n children.map((item, index) => {\r\n if (item.childNodes) {\r\n this.getChildrenData(item.childNodes, keys);\r\n } else {\r\n resKey = [...keys, item[rowKey]];\r\n }\r\n });\r\n } else {\r\n resKey = [...keys, data[rowKey]];\r\n }\r\n return resKey;\r\n }\r\n\r\n renderToolButtons(toolbuttons: any, toolbarFlag) {\r\n const flag = toolbuttons.length > 5;\r\n toolbuttons = [...toolbuttons].reverse();\r\n const { showSearch = true } = this.props;\r\n const content = toolbuttons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, icon, show, ...params } = item.props;\r\n if (index > 3) {\r\n return (\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-editor\"),\r\n getLess(styles, \"nsc-basepage-content-item\")\r\n )}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick();\r\n }}\r\n {...params}\r\n >\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>{icon}</span>\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </div>\r\n );\r\n }\r\n });\r\n return (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-tool-buttons\"))}\r\n style={{ marginLeft: 0 }}\r\n >\r\n {toolbuttons.map((item: any, index: any) => {\r\n if (flag) {\r\n if (index < 4) {\r\n return <div key={index}>{item}</div>;\r\n } else if (index == 4) {\r\n return (\r\n <Popover\r\n content={content}\r\n title={null}\r\n placement=\"bottom\"\r\n trigger={[\"click\"]}\r\n key={index}\r\n // overlayClassName={styles['pop-box']}\r\n >\r\n <Button type=\"primary\">\r\n 更多 <DownOutlined />\r\n </Button>\r\n </Popover>\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return <div key={index}>{item}</div>;\r\n }\r\n })}\r\n </div>\r\n );\r\n }\r\n renderCloumnButton(columnButtons: any, record: any) {\r\n const { actionProps } = this.props;\r\n const { baseActionColumn } = config();\r\n const newButtons = [];\r\n let showIcon = true;\r\n if (actionProps?.showIcon === false) showIcon = false;\r\n else if (baseActionColumn.showIcon === false) showIcon = false;\r\n columnButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, icon, recordShow, ...params } =\r\n item.props;\r\n if (recordShow) {\r\n if (typeof recordShow == \"string\") {\r\n if (eval(recordShow)) {\r\n newButtons.push(item);\r\n }\r\n } else if (typeof recordShow == \"function\") {\r\n const show = recordShow(record);\r\n show && newButtons.push(item);\r\n }\r\n } else {\r\n newButtons.push(item);\r\n }\r\n });\r\n let number = actionProps?.buttonNumber\r\n ? actionProps?.buttonNumber\r\n : baseActionColumn?.buttonNumber\r\n ? baseActionColumn?.buttonNumber\r\n : 3;\r\n let flag = false;\r\n if (number == \"all\") {\r\n flag = false;\r\n } else {\r\n flag = newButtons.length > number;\r\n }\r\n\r\n const content = newButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, recordShow, icon, show, ...params } =\r\n item.props;\r\n if (index > Number(number) - 1) {\r\n return (\r\n <Button\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-editor\"),\r\n getLess(styles, \"nsc-basepage-content-item\")\r\n )}\r\n key={index}\r\n onClick={() => {\r\n let data = { ...this.state.popopens };\r\n data[record.id] = false;\r\n this.setState({\r\n popopens: data,\r\n });\r\n onClick && onClick(record);\r\n }}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n }\r\n });\r\n return newButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, recordShow, icon, ...params } =\r\n item.props;\r\n if (flag) {\r\n if (index < number) {\r\n return (\r\n <Button\r\n className={cls(getLess(styles, \"nsc-basepage-editor\"), {\r\n [getLess(styles, \"nsc-basepage-editor-first\")]: index === 0,\r\n })}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick(record);\r\n }}\r\n icon={icon}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n } else if (index == number) {\r\n return (\r\n <Popover\r\n placement=\"bottom\"\r\n title={null}\r\n content={content}\r\n trigger={[\"click\"]}\r\n key={index}\r\n open={this.state.popopens[record.id] || false}\r\n onOpenChange={(open) => {\r\n if (open) {\r\n let data = { ...this.state.popopens };\r\n data[record.id] = true;\r\n this.setState({\r\n popopens: data,\r\n });\r\n } else {\r\n this.setState({\r\n popopens: {},\r\n });\r\n }\r\n }}\r\n // overlayClassName={styles['pop']}\r\n >\r\n <a className={getLess(styles, \"nsc-basepage-editor\")}>\r\n <EllipsisOutlined />\r\n </a>\r\n </Popover>\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return (\r\n <Button\r\n className={cls(getLess(styles, \"nsc-basepage-editor\"), {\r\n [getLess(styles, \"nsc-basepage-editor-first\")]: index === 0,\r\n })}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick(record);\r\n }}\r\n {...params}\r\n type=\"link\"\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n }\r\n });\r\n // }\r\n }\r\n //树点击事件\r\n treeSelect(selectedKeys: any, obj: any) {\r\n let keyword = \"\";\r\n const {\r\n searchKey = \"key\",\r\n searchField = \"\",\r\n parantSelect = true,\r\n } = this.props.treeProps;\r\n const { treeSelectedKey } = this.state;\r\n const { selected, selectedNodes } = obj;\r\n\r\n if (selected) {\r\n keyword = selectedNodes[0].dataref.attribute[searchKey];\r\n if (parantSelect) {\r\n this.setState({\r\n treeSelectedKey: selectedKeys[0],\r\n treeSearchPrams: { [searchField]: keyword },\r\n });\r\n } else {\r\n if (selectedNodes[0].isLeaf || !selectedNodes[0].children) {\r\n if (selectedKeys[0] !== treeSelectedKey) {\r\n this.setState({\r\n treeSelectedKey: selectedKeys[0],\r\n treeSearchPrams: { [searchField]: keyword },\r\n });\r\n }\r\n }\r\n }\r\n } else {\r\n this.setState({\r\n treeSelectedKey: keyword,\r\n treeSearchPrams: {},\r\n });\r\n }\r\n if (this.props.onTreeSelect) {\r\n this.props.onTreeSelect(selectedKeys, obj);\r\n return;\r\n }\r\n const fromValue = this.searchRef?.current?.getSearchValues() || {};\r\n searchField && this.tableLoad({ ...fromValue, [searchField]: keyword });\r\n this.props.onCallBacks?.treeSelectCallBack &&\r\n utils.callback(this.props.onCallBacks?.treeSelectCallBack, this, [\r\n selectedKeys,\r\n obj,\r\n ]);\r\n }\r\n resetSearch() {\r\n this.searchRef.current?.resetFields();\r\n }\r\n getText(props, text) {\r\n let newText = text;\r\n if (props?.data && props?.data?.length > 0) {\r\n let data = props.data;\r\n for (let i = 0; i < data?.length; i++) {\r\n if (data[i].value == text) {\r\n newText = data[i].label;\r\n }\r\n }\r\n }\r\n return newText;\r\n }\r\n setTableData(data) {\r\n this.tableRef.current?.store?.setData(data);\r\n }\r\n setTreeData(data) {\r\n this.treeRef.current?.store?.setData(data);\r\n }\r\n getSelectedKey = (selected) => {\r\n let res = [];\r\n for (let key in selected) {\r\n const keys = selected[key];\r\n if (keys.length > 0) {\r\n res = [...res, ...keys];\r\n }\r\n }\r\n return res;\r\n };\r\n\r\n render() {\r\n const {\r\n columns = [],\r\n showSearch = true,\r\n children,\r\n submitUrl = \"\",\r\n tableProps = {},\r\n treeProps = {},\r\n formProps = {},\r\n showLeft = false,\r\n submitParams = {},\r\n showToolButton = true,\r\n buttons = [],\r\n editorForm = true,\r\n onShowForm,\r\n formChangeValid = true,\r\n className,\r\n toolButtonPosition = \"buttom\",\r\n actionProps,\r\n deletePosition = \"toolbar\",\r\n } = this.props;\r\n const {\r\n store,\r\n filterColumn = true,\r\n actionColumn = true,\r\n showRowSelection = true,\r\n columnOrder = true,\r\n expandable = {},\r\n parantSelect = true,\r\n title: tableTitle,\r\n ...othertableParams\r\n } = tableProps;\r\n\r\n const {\r\n store: treeStore = {},\r\n showSearch: treeSearch = true,\r\n titleAlias = \"title\",\r\n title: treeTitle,\r\n ...othertreeParams\r\n } = treeProps;\r\n let tableParams = { filterColumn, store, ...othertableParams } as any;\r\n let tableColumn: any[] = [];\r\n const searchForms: any = [];\r\n const editorForms: any = [];\r\n const defaultValue: any = {};\r\n const columnButtons: any = [];\r\n const { elementHeight } = this.state;\r\n\r\n columns.map((item: any) => {\r\n let temp = { width: 100, ...item };\r\n if (temp.search === true || temp.search?.show === true) {\r\n searchForms.push({\r\n name: temp.field || temp.dataIndex,\r\n label: temp.search?.label || temp.title,\r\n type: temp.type,\r\n props: temp.props,\r\n labelCol: temp.search?.labelCol,\r\n wrapperCol: temp.search?.wrapperCol,\r\n rules: temp.searchRules ? temp.searchRules : [],\r\n });\r\n }\r\n\r\n delete temp.search;\r\n temp.editor !== false &&\r\n editorForms.push({\r\n name: temp.field || temp.dataIndex,\r\n label: temp.title,\r\n rules: temp.rules ? temp.rules : [],\r\n type: temp.type,\r\n span: temp.span,\r\n dictName: temp.dictName,\r\n props: { ...temp.props },\r\n });\r\n\r\n if (\r\n temp.props?.defaultValue !== undefined &&\r\n temp.props?.defaultValue !== null\r\n ) {\r\n const name = temp.field || temp.dataIndex;\r\n defaultValue[name] = temp.props?.defaultValue;\r\n }\r\n delete temp.rules;\r\n delete temp.span;\r\n if (temp.columnSearch) {\r\n temp.filterProps = {\r\n type: temp.type,\r\n props: temp.props,\r\n };\r\n }\r\n delete temp.type;\r\n let tempProp = { ...temp.props };\r\n if (!temp.ellipsis) {\r\n temp = {\r\n ellipsis: { showTitle: false },\r\n render: (text: any) => {\r\n return this.getText(tempProp, text);\r\n },\r\n ...temp,\r\n };\r\n } else {\r\n temp = {\r\n ellipsis: true,\r\n ...temp,\r\n };\r\n }\r\n delete temp.props;\r\n\r\n // temp.ellipsis = true;\r\n if (temp?.columnShow !== false) tableColumn.push(temp);\r\n });\r\n const selfButtons: any = [];\r\n const { baseActionColumn } = config();\r\n let showIcon = true;\r\n if (actionProps?.showIcon === false) showIcon = false;\r\n else if (baseActionColumn.showIcon === false) showIcon = false;\r\n\r\n if (buttons.indexOf(\"search\") > -1) {\r\n columnButtons.push(\r\n <Button\r\n onClick={(record: any) => {\r\n if (onShowForm) {\r\n onShowForm(record.attribute || record, \"detail\");\r\n return;\r\n }\r\n this.showForm(record.attribute || record, \"detail\");\r\n }}\r\n icon={<EyeOutlined />}\r\n type=\"link\"\r\n >\r\n 查看\r\n </Button>\r\n );\r\n\r\n if (buttons.indexOf(\"editor\") > -1) {\r\n columnButtons.push(\r\n <Button\r\n onClick={(record: any) => {\r\n if (onShowForm) {\r\n onShowForm(record.attribute || record, \"editor\");\r\n return;\r\n }\r\n this.showForm(record.attribute || record, \"editor\");\r\n }}\r\n icon={<EditOutlined />}\r\n >\r\n 编辑\r\n </Button>\r\n );\r\n }\r\n }\r\n if (buttons.indexOf(\"add\") > -1) {\r\n selfButtons.push(\r\n <Button\r\n type={\"primary\"}\r\n onClick={() => {\r\n const { onShowForm } = this.props;\r\n if (onShowForm) {\r\n onShowForm(null, \"add\");\r\n return;\r\n }\r\n this.showForm();\r\n }}\r\n icon={<PlusOutlined />}\r\n >\r\n 添加\r\n </Button>\r\n );\r\n }\r\n if (buttons.indexOf(\"delete\") > -1) {\r\n if (deletePosition == \"toolbar\") {\r\n selfButtons.push(\r\n <Button\r\n // type={\"primary\"}\r\n onClick={this.onDelete.bind(this)}\r\n icon={<DeleteOutlined />}\r\n danger\r\n >\r\n 删除\r\n </Button>\r\n );\r\n } else if (deletePosition == \"row\") {\r\n columnButtons.push(\r\n <Button\r\n // type={\"primary\"}\r\n onClick={(record: any) => {\r\n this.onDelete(record);\r\n }}\r\n icon={<DeleteOutlined />}\r\n danger\r\n type=\"link\"\r\n >\r\n 删除\r\n </Button>\r\n );\r\n }\r\n }\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n if (Array.isArray(item)) {\r\n item.map((child) => {\r\n if (child?.props?.pageType == \"toolButton\") {\r\n selfButtons.push(child);\r\n } else if (\r\n child?.props?.pageType == \"cloumnButton\" ||\r\n child?.props?.pageType == \"columnButton\"\r\n ) {\r\n columnButtons.push(child);\r\n }\r\n });\r\n } else {\r\n if (item?.props?.pageType == \"toolButton\") {\r\n selfButtons.push(item);\r\n } else if (\r\n item?.props?.pageType == \"cloumnButton\" ||\r\n item?.props?.pageType == \"columnButton\"\r\n ) {\r\n columnButtons.push(item);\r\n }\r\n }\r\n });\r\n } else if (children) {\r\n const { props }: any = children;\r\n if (props?.pageType == \"toolButton\") {\r\n selfButtons.push(children);\r\n } else if (props?.pageType == \"cloumnButton\") {\r\n columnButtons.push(children);\r\n }\r\n }\r\n actionColumn &&\r\n tableColumn.push({\r\n title: \"操作\",\r\n dataIndex: \"action\",\r\n align: actionProps?.textAlign\r\n ? actionProps?.textAlign\r\n : baseActionColumn.textAlign\r\n ? baseActionColumn.textAlign\r\n : \"left\",\r\n width: actionProps?.width\r\n ? actionProps?.width\r\n : baseActionColumn.width\r\n ? baseActionColumn.width\r\n : 200,\r\n fixed: \"right\",\r\n render: (text: any, record: any) => {\r\n return (\r\n <div className={getLess(styles, \"nsc-basepage-action\")}>\r\n {this.renderCloumnButton(columnButtons, record)}\r\n </div>\r\n );\r\n },\r\n });\r\n\r\n if (columnOrder)\r\n tableColumn = [\r\n {\r\n title: \"序号\",\r\n width: 80,\r\n align: \"center\",\r\n render: (text, reacord, index) => {\r\n return <>{index + 1}</>;\r\n },\r\n },\r\n ...tableColumn,\r\n ];\r\n let searchFlag = showSearch && searchForms.length > 0;\r\n let { tableTool } = config();\r\n let toolFlag =\r\n showToolButton &&\r\n selfButtons.length > 0 &&\r\n toolButtonPosition == \"buttom\";\r\n let toolbarFlag = !(\r\n tableProps.toolbar == false ||\r\n tableProps.toolbar?.show == false ||\r\n tableProps.toolbar?.tools?.length == 0 ||\r\n tableTool?.show == false\r\n );\r\n\r\n let pageHeight = this.props.pageType == \"tabspage\" ? 63 : 0;\r\n let tableHeaderHeight = 55;\r\n\r\n let headerHeight = showSearch && searchForms.length > 0 ? 104 : 0;\r\n let toolHeight = tableTitle || toolFlag ? 48 : 0;\r\n let paddingHeight = 25;\r\n let tableContentHeight =\r\n elementHeight - headerHeight - toolHeight - paddingHeight - pageHeight;\r\n let tableHeight = tableContentHeight - 32 - 32;\r\n let tableSrollHeight = tableContentHeight - tableHeaderHeight - 32 - 32;\r\n if (tableProps.pagination !== false) {\r\n const scroll = tableParams.scroll;\r\n tableParams = {\r\n ...tableParams,\r\n scroll: { x: \"max-content\", y: tableSrollHeight, ...scroll },\r\n };\r\n }\r\n return (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage\"), className)}\r\n ref={this.pageRef}\r\n >\r\n {this.props.pageTitle && (\r\n <div className={cls(getLess(styles, \"nsc-basepage-title\"))}>\r\n {this.props.pageTitle}\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-pane\"))}\r\n style={{ display: \"flex\" }}\r\n >\r\n {showLeft && (\r\n <div className={getLess(styles, \"nsc-basepage-left\")}>\r\n {treeTitle && (\r\n <div className={getLess(styles, \"tree-title\")}>{treeTitle}</div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"tree-content\"), {\r\n [getLess(styles, \"tree-content-notitle\")]: !treeTitle,\r\n })}\r\n >\r\n <Tree\r\n store={{ ...treeStore }}\r\n showIcon={false}\r\n checkable={false}\r\n searchable={treeSearch}\r\n onSelect={this.treeSelect.bind(this)}\r\n selectedKeys={[this.state.treeSelectedKey]}\r\n titleAlias={titleAlias}\r\n {...othertreeParams}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-right\"), {\r\n [getLess(styles, \"nsc-basepage-no-left-right\")]: !showLeft,\r\n })}\r\n >\r\n {showSearch && searchForms.length > 0 && (\r\n <div className={getLess(styles, \"nsc-basepage-headersearch\")}>\r\n <HeaderSearch\r\n searchForms={searchForms}\r\n toolButtonPosition={toolButtonPosition}\r\n onSearch={this.onSearch.bind(this)}\r\n onReset={this.props.onReset}\r\n ref={this.searchRef}\r\n searchFormProps={this.props.searchFormProps}\r\n />\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-content\"), {\r\n [getLess(styles, \"nsc-basepage-content-gap\")]: !searchFlag,\r\n })}\r\n >\r\n {(tableTitle || toolFlag) && (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-table-title\"), {\r\n [getLess(styles, \"nsc-basepage-title-width\")]: !toolbarFlag,\r\n })}\r\n >\r\n <div>{tableTitle}</div>\r\n {toolFlag && this.renderToolButtons(selfButtons, toolbarFlag)}\r\n </div>\r\n )}\r\n\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-table\"),\r\n {\r\n [getLess(styles, \"nsc-basepage-table-top\")]: !toolbarFlag,\r\n },\r\n {\r\n [getLess(styles, \"nsc-basepage-table-top2\")]:\r\n toolbarFlag && !toolFlag,\r\n }\r\n )}\r\n style={{ height: tableContentHeight }}\r\n >\r\n <Table\r\n ref={this.tableRef}\r\n columns={tableColumn}\r\n expandable={{\r\n expandIcon: ({ expanded, onExpand, record }) => {\r\n return (\r\n <>\r\n {expanded ? (\r\n <DownOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(\r\n styles,\r\n \"nsc-basepage-expand-icon\"\r\n )}\r\n />\r\n ) : (\r\n record.childNodes && (\r\n <RightOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(\r\n styles,\r\n \"nsc-basepage-expand-icon\"\r\n )}\r\n />\r\n )\r\n )}\r\n </>\r\n );\r\n },\r\n ...expandable,\r\n }}\r\n columnOrder={true}\r\n onChange={(pagination) => {\r\n const { currentPage } = this.state;\r\n if (currentPage !== pagination.current) {\r\n this.setState({\r\n currentPage: pagination.current,\r\n });\r\n }\r\n }}\r\n toolbar={{\r\n onToolClick: {\r\n onRefresh: () => {\r\n const params = this.getSearchValues();\r\n this.tableLoad(params);\r\n },\r\n },\r\n ...tableProps.toolbar,\r\n }}\r\n showRowSelection={showRowSelection}\r\n style={{ height: tableHeight }}\r\n {...tableParams}\r\n // pagination={false}\r\n />\r\n {/* <div></div> */}\r\n </div>\r\n </div>\r\n </div>\r\n {editorForm && (\r\n <EditorForm\r\n ref={this.editorRef}\r\n callBack={() => {\r\n this.props.onCallBacks?.onSumbitCallBack &&\r\n this.props.onCallBacks?.onSumbitCallBack();\r\n this.tableReload();\r\n }}\r\n formProps={editorForms}\r\n submitUrl={submitUrl}\r\n submitParams={submitParams}\r\n onSubmit={this.props.onSubmit}\r\n defaultValue={defaultValue}\r\n onHideForm={this.props.onHideForm}\r\n onFormChange={this.props.onFormChange}\r\n formType={this.props.formType || \"auto\"}\r\n changeValid={formChangeValid}\r\n otherProps={{ ...formProps }}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\nexport default BasePage;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["React","PureComponent","Table","Tree","Button","Modal","Popover","message","EditorForm","cls","utils","DownOutlined","EyeOutlined","EditOutlined","RightOutlined","PlusOutlined","EllipsisOutlined","DeleteOutlined","getLess","request","config","getStorage","HeaderSearch","styles","BasePage","constructor","props","_type","_size","_defineProperty","createRef","checkedTreeKeys","name","userType","account","state","value","deptId","onSearch","selected","res","key","keys","length","storePrefix","type","content","size","selectedRowKeys","selectedRowDatas","treeSelectedKey","expand","formType","tableSize","treeSearchPrams","popopens","moreOpen","elementHeight","componentDidMount","_this$pageRef$current","initData","pageRef","current","clientHeight","setState","componentDidUpdate","_this$pageRef$current2","setSearchParams","params","callBack","_this$searchRef$curre","searchRef","showForm","_this$editorRef","editorflag","arguments","undefined","editorRef","show","_objectSpread","hideForm","_this$editorRef$curre","setLoading","loading","_this$editorRef$curre2","setEditFormValues","_this$editorRef$curre3","setFieldsValue","getEditFormValues","_this$editorRef$curre4","getFieldsValue","onDelete","data","_this$tableRef$curren","deleteUrl","deleteParams","deletePosition","_this","tableRef","getSelectedRowKeys","warning","confirm","onOk","Error","defaultParams","method","autoPrefix","ids","join","id","requestParams","then","code","_this$searchRef","_this$props$onCallBac","_this$props$onCallBac2","success","getSearchValues","onCallBacks","onDeleteCallBack","tableLoad","error","catch","console","log","_this$tableRef$curren2","requestConfig","store","load","onSearchCallBack","callback","tableReload","_this$tableRef$curren3","autoLoad","reload","_res$data","records","currentPage","_this$tableRef$curren4","_this$tableRef$curren5","getSelectedRowDatas","_this$tableRef$curren6","resetSelectedRowKeys","_this$tableRef$curren7","_this$searchRef2","fromValue","getChildrenData","tableProps","rowKey","resKey","childNodes","children","map","item","index","renderToolButtons","toolbuttons","toolbarFlag","flag","showSearch","_item$props","pageType","onClick","icon","_objectWithoutProperties","_excluded","createElement","className","_extends","style","marginLeft","marginRight","title","placement","open","onOpenChange","renderCloumnButton","columnButtons","record","actionProps","baseActionColumn","newButtons","showIcon","_item$props2","recordShow","_excluded2","eval","push","number","buttonNumber","_item$props3","_excluded3","Number","_item$props4","_excluded4","trigger","treeSelect","selectedKeys","obj","_this$searchRef3","_this$props$onCallBac3","_this$props$onCallBac4","keyword","searchKey","searchField","parantSelect","treeProps","selectedNodes","dataref","attribute","isLeaf","onTreeSelect","treeSelectCallBack","resetSearch","_this$searchRef$curre2","resetFields","getText","text","_props$data","newText","i","label","setTableData","_this$tableRef$curren8","setData","setTreeData","_this$treeRef$current","treeRef","render","_tableProps$toolbar","_tableProps$toolbar2","columns","submitUrl","formProps","showLeft","submitParams","showToolButton","buttons","editorForm","onShowForm","formChangeValid","toolButtonPosition","filterColumn","actionColumn","showRowSelection","columnOrder","expandable","tableTitle","othertableParams","_excluded5","treeStore","treeSearch","titleAlias","treeTitle","othertreeParams","_excluded6","tableParams","tableColumn","searchForms","editorForms","defaultValue","_temp$search","_temp$props","_temp$props2","_temp","temp","width","search","_temp$search2","_temp$search3","_temp$search4","field","dataIndex","labelCol","wrapperCol","rules","searchRules","editor","span","dictName","_temp$props3","columnSearch","filterProps","tempProp","ellipsis","showTitle","columnShow","selfButtons","indexOf","bind","danger","Array","isArray","child","_child$props","_child$props2","_child$props3","_item$props5","_item$props6","_item$props7","align","textAlign","fixed","reacord","Fragment","searchFlag","tableTool","toolFlag","toolbar","tools","pageHeight","tableHeaderHeight","headerHeight","toolHeight","paddingHeight","tableContentHeight","tableHeight","tableSrollHeight","pagination","scroll","x","y","ref","pageTitle","display","checkable","searchable","onSelect","onReset","searchFormProps","height","expandIcon","_ref","expanded","onExpand","e","onChange","onToolClick","onRefresh","_this$props$onCallBac5","_this$props$onCallBac6","onSumbitCallBack","onSubmit","onHideForm","onFormChange","changeValid","otherProps"],"sources":["../../../src/components/page/BasePage/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Table from \"../../base/table\";\r\nimport Tree from \"../../base/tree\";\r\nimport Button from \"../../base/button\";\r\nimport Modal from \"../../base/modal\";\r\nimport Popover from \"../../base/popover\";\r\nimport message from \"../../base/message\";\r\nimport EditorForm from \"./Form\";\r\nimport cls from \"classnames\";\r\nimport \"./index.module.less\";\r\nimport Store, { PageStore, StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport {\r\n DownOutlined,\r\n EyeOutlined,\r\n EditOutlined,\r\n RightOutlined,\r\n PlusOutlined,\r\n EllipsisOutlined,\r\n DeleteOutlined,\r\n} from \"@ant-design/icons\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport request from \"nsc-request\";\r\nimport omit from \"omit.js\";\r\nimport config from \"../../config\";\r\nimport { getStorage, px2vw } from \"@bj-nsc/functions\";\r\nimport { IFormProps } from \"../../base/form/Form\";\r\nimport HeaderSearch from \"../HeaderSearch\";\r\nimport { PaginationProps } from \"antd\";\r\ninterface TableProps {\r\n actionColumn?: boolean; //是否显示操作列\r\n store?: StoreProps;\r\n filterColumn?: boolean; //是否显示过滤按钮\r\n showRowSelection?: boolean; //是否表格勾选列\r\n pagination?: boolean | PaginationProps; //是否显示分页\r\n columnOrder?: boolean; //是否显示表格序列\r\n [propsName: string]: any;\r\n}\r\nconst styles = null;\r\ninterface TreeProps {\r\n store?: StoreProps;\r\n showSearch?: boolean; //是否显示搜索框\r\n searchKey?: string; //搜索value对应的key\r\n searchField?: string; //查询对应的key\r\n titleAlias?: string; //树title对应的key,默认title\r\n nodePorps?: object;\r\n parantSelect?: boolean;\r\n [propsName: string]: any;\r\n}\r\ninterface FormProps extends IFormProps {}\r\ninterface NSCBaseBageProps {\r\n showSearch?: boolean; //是否显示头部搜索栏\r\n tableProps?: TableProps; //表格参数\r\n treeProps?: TreeProps; //左侧树参数\r\n submitParams?: Object; //添加参数,默认mothod:post, 参数通过data传递\r\n submitUrl?: string;\r\n onSubmit?: (value?: any, label?: any) => void;\r\n columns: Array<Object>;\r\n showLeft?: boolean; //是否显示左侧目录树\r\n showToolButton?: boolean; //是否显示按钮栏\r\n editorForm?: boolean; //是否需要表单功能 , 为false 编辑,查看,新增功能均不可用\r\n deleteUrl?: string; //删除url\r\n onDelete?: (selectedKeys?: Array<string>) => void; //删除参数,默认mothod:post, 参数通过ids拼接传递给后台\r\n deletePosition?: \"toolbar\" | \"row\";\r\n deleteParams?: Object;\r\n children?: React.ReactNode;\r\n onSearch?: (value?: any) => void;\r\n onReset?: () => void;\r\n initData?: any; //初始化回调函数,在componentDidMount中调用\r\n buttons?: Array<string>; //按钮集合 ['add','delete','search','editor']\r\n onShowForm?: (value?: any, editorFlag?: string) => void; //打开表单回调\r\n onHideForm?: () => void; //打开表单回调\r\n onFormChange?: (changedValues?: any, allValues?: any) => void; //表单onChange回调\r\n formType?: \"modal\" | \"drawer\";\r\n formChangeValid?: boolean; //表单校验\r\n className?: any;\r\n toolButtonPosition?: \"right\" | \"buttom\";\r\n pageTitle?: string | ReactNode;\r\n formProps?: FormProps;\r\n actionProps?: {\r\n textAlign?: string;\r\n showIcon?: boolean;\r\n width?: number;\r\n buttonNumber?: number | \"all\";\r\n };\r\n searchFormProps?: { wrapperCol?: any; labelCol?: any };\r\n onTreeSelect?: (value?: any, editorFlag?: string) => void; //打开表单回调\r\n onCallBacks?: {\r\n treeSelectCallBack?: any;\r\n onSearchCallBack?: any;\r\n onSumbitCallBack?: any;\r\n onDeleteCallBack?: any;\r\n };\r\n pageType?: \"normal\" | \"tabspage\";\r\n}\r\n\r\nclass BasePage extends PureComponent<NSCBaseBageProps, any> {\r\n tableRef = React.createRef<any>();\r\n treeRef = React.createRef<any>();\r\n searchRef = React.createRef<any>();\r\n editorRef = React.createRef<any>();\r\n pageRef = React.createRef<any>();\r\n dateFormat = {} as any;\r\n constructor(props: any) {\r\n super(props);\r\n let { storePrefix } = config();\r\n let type = getStorage(\r\n storePrefix ? storePrefix + \"-\" + \"formType\" : \"formType\"\r\n );\r\n type = type?.content;\r\n let size = getStorage(\r\n storePrefix ? storePrefix + \"-\" + \"tableSize\" : \"tableSize\"\r\n );\r\n size = size?.content;\r\n this.state = {\r\n type: \"add\",\r\n selectedRowKeys: [],\r\n selectedRowDatas: [],\r\n treeSelectedKey: \"\",\r\n expand: false,\r\n formType: type || \"modal\",\r\n tableSize: size || \"default\",\r\n treeSearchPrams: {},\r\n popopens: {},\r\n moreOpen: false,\r\n elementHeight: 0,\r\n };\r\n }\r\n componentDidMount() {\r\n const { initData } = this.props;\r\n const elementHeight = this.pageRef.current?.clientHeight;\r\n this.setState({\r\n elementHeight,\r\n });\r\n initData && initData();\r\n }\r\n componentDidUpdate() {\r\n const elementHeight = this.pageRef.current?.clientHeight;\r\n if (elementHeight > this.state.elementHeight) {\r\n this.setState({\r\n elementHeight,\r\n });\r\n }\r\n }\r\n setSearchParams(params, callBack) {\r\n this.searchRef.current?.setSearchParams(params);\r\n callBack && callBack(params);\r\n }\r\n\r\n onSelect = (checkedTreeKeys: any) => {\r\n const { name, userType, account } = this.state;\r\n const value = { name, userType, account, deptId: checkedTreeKeys[0] };\r\n if (this.props.onSearch) {\r\n this.props.onSearch(value);\r\n }\r\n // this.tableLoad(value);\r\n };\r\n\r\n //显示表单\r\n showForm(value?: any, editorflag = \"add\") {\r\n this.editorRef?.current?.show({ ...value }, editorflag);\r\n }\r\n\r\n //关闭表单\r\n hideForm() {\r\n this.editorRef.current?.hideForm();\r\n }\r\n\r\n setLoading(loading: boolean) {\r\n this.editorRef.current?.setLoading(loading);\r\n }\r\n\r\n setEditFormValues(value) {\r\n this.editorRef.current?.setFieldsValue(value);\r\n }\r\n\r\n getEditFormValues() {\r\n return this.editorRef.current?.getFieldsValue();\r\n }\r\n\r\n //批量删除\r\n onDelete(data?: any) {\r\n const {\r\n deleteUrl,\r\n onDelete,\r\n deleteParams,\r\n deletePosition = \"toolbar\",\r\n } = this.props;\r\n let _this = this;\r\n const selectedRowKeys = this.tableRef.current?.getSelectedRowKeys();\r\n if (deletePosition == \"toolbar\") {\r\n if (selectedRowKeys.length == 0) {\r\n message.warning(\"请选择要删除的数据!\");\r\n return;\r\n }\r\n }\r\n Modal.confirm({\r\n content: \"是否确认删除所选项?\",\r\n // centered:true,\r\n onOk: () => {\r\n if (onDelete) {\r\n onDelete &&\r\n onDelete(deletePosition == \"toolbar\" ? selectedRowKeys : data);\r\n return;\r\n }\r\n if (!deleteUrl) {\r\n throw new Error(\"url不能为空!\");\r\n }\r\n const defaultParams = {\r\n method: \"post\",\r\n autoPrefix: true,\r\n params: {\r\n ids: deletePosition == \"toolbar\" ? selectedRowKeys.join() : data.id,\r\n },\r\n };\r\n let requestParams = {} as any;\r\n if (defaultParams) {\r\n requestParams = { ...deleteParams };\r\n }\r\n requestParams = { ...defaultParams };\r\n request(deleteUrl, {\r\n ...requestParams,\r\n })\r\n .then(function (res: any) {\r\n const { code } = res;\r\n if (code === 200) {\r\n message.success(\"删除成功!\");\r\n let value = _this.searchRef?.current?.getSearchValues();\r\n _this.props.onCallBacks?.onDeleteCallBack &&\r\n _this.props.onCallBacks?.onDeleteCallBack();\r\n _this.tableLoad(value);\r\n } else {\r\n message.error(\"删除失败!\");\r\n }\r\n })\r\n .catch(function (error: any) {\r\n console.log(\"error\", error);\r\n });\r\n },\r\n });\r\n }\r\n tableLoad(params: any, requestConfig = {}) {\r\n this.tableRef.current?.store.load({\r\n ...requestConfig,\r\n params: params,\r\n });\r\n }\r\n //查询\r\n onSearch(params) {\r\n const { onSearch, onCallBacks } = this.props;\r\n if (onSearch) {\r\n onSearch({ ...params, ...this.state.treeSearchPrams });\r\n return;\r\n }\r\n this.tableLoad({ ...params, ...this.state.treeSearchPrams });\r\n onCallBacks?.onSearchCallBack &&\r\n utils.callback(onCallBacks?.onSearchCallBack, this, [params]);\r\n }\r\n //表格重新加载\r\n tableReload(params = {}, autoLoad = true) {\r\n this.tableRef.current?.store?.reload({\r\n callback: (res) => {\r\n if (\r\n autoLoad &&\r\n res?.data?.records?.length == 0 &&\r\n this.state.currentPage !== 1\r\n ) {\r\n this.tableRef.current?.store?.reload({\r\n params: { current: 1, ...params },\r\n });\r\n }\r\n },\r\n });\r\n }\r\n getSelectedRowKeys() {\r\n return this.tableRef.current?.getSelectedRowKeys();\r\n }\r\n getSelectedRowDatas() {\r\n return this.tableRef.current?.getSelectedRowDatas();\r\n }\r\n resetSelectedRowKeys() {\r\n return this.tableRef.current?.resetSelectedRowKeys();\r\n }\r\n\r\n getSearchValues() {\r\n const fromValue = this.searchRef?.current?.getSearchValues();\r\n return { ...fromValue, ...this.state.treeSearchPrams };\r\n }\r\n\r\n getChildrenData(data, keys = []) {\r\n const { tableProps } = this.props;\r\n const { rowKey = \"id\" } = tableProps;\r\n let resKey = [];\r\n if (data.childNodes) {\r\n const children = data.childNodes;\r\n children.map((item, index) => {\r\n if (item.childNodes) {\r\n this.getChildrenData(item.childNodes, keys);\r\n } else {\r\n resKey = [...keys, item[rowKey]];\r\n }\r\n });\r\n } else {\r\n resKey = [...keys, data[rowKey]];\r\n }\r\n return resKey;\r\n }\r\n\r\n renderToolButtons(toolbuttons: any, toolbarFlag) {\r\n const flag = toolbuttons.length > 5;\r\n // toolbuttons = [...toolbuttons].reverse();\r\n const { showSearch = true } = this.props;\r\n const content = toolbuttons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, icon, show, ...params } = item.props;\r\n if (index > 3) {\r\n return (\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-editor\"),\r\n getLess(styles, \"nsc-basepage-content-item\")\r\n )}\r\n >\r\n <Button\r\n key={index}\r\n onClick={() => {\r\n this.setState({\r\n moreOpen: false,\r\n });\r\n onClick && onClick();\r\n }}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n </div>\r\n );\r\n }\r\n });\r\n\r\n return (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-tool-buttons\"))}\r\n style={{ marginLeft: 0 }}\r\n >\r\n {toolbuttons.map((item: any, index: any) => {\r\n if (flag) {\r\n if (index < 4) {\r\n return (\r\n <div\r\n key={index}\r\n style={{\r\n marginRight: 12,\r\n }}\r\n >\r\n {item}\r\n </div>\r\n );\r\n } else if (index == 4) {\r\n return (\r\n <Popover\r\n content={content}\r\n title={null}\r\n placement=\"bottom\"\r\n key={index}\r\n open={this.state.moreOpen}\r\n onOpenChange={(open) => {\r\n if (open) {\r\n this.setState({\r\n moreOpen: true,\r\n });\r\n } else {\r\n this.setState({\r\n moreOpen: false,\r\n });\r\n }\r\n }}\r\n // open={true}\r\n // overlayClassName={styles['pop-box']}\r\n >\r\n <Button type=\"primary\">\r\n 更多 <DownOutlined />\r\n </Button>\r\n </Popover>\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return (\r\n <div\r\n key={index}\r\n style={{\r\n marginRight: index == toolbuttons.length - 1 ? 0 : 12,\r\n }}\r\n >\r\n {item}\r\n </div>\r\n );\r\n }\r\n })}\r\n </div>\r\n );\r\n }\r\n renderCloumnButton(columnButtons: any, record: any) {\r\n const { actionProps } = this.props;\r\n const { baseActionColumn } = config();\r\n const newButtons = [];\r\n let showIcon = true;\r\n if (actionProps?.showIcon === false) showIcon = false;\r\n else if (baseActionColumn.showIcon === false) showIcon = false;\r\n columnButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, icon, recordShow, ...params } =\r\n item.props;\r\n if (recordShow) {\r\n if (typeof recordShow == \"string\") {\r\n if (eval(recordShow)) {\r\n newButtons.push(item);\r\n }\r\n } else if (typeof recordShow == \"function\") {\r\n const show = recordShow(record);\r\n show && newButtons.push(item);\r\n }\r\n } else {\r\n newButtons.push(item);\r\n }\r\n });\r\n let number = actionProps?.buttonNumber\r\n ? actionProps?.buttonNumber\r\n : baseActionColumn?.buttonNumber\r\n ? baseActionColumn?.buttonNumber\r\n : 3;\r\n let flag = false;\r\n if (number == \"all\") {\r\n flag = false;\r\n } else {\r\n flag = newButtons.length > number;\r\n }\r\n\r\n const content = newButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, recordShow, icon, show, ...params } =\r\n item.props;\r\n if (index > Number(number) - 1) {\r\n return (\r\n <Button\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-editor\"),\r\n getLess(styles, \"nsc-basepage-content-item\")\r\n )}\r\n key={index}\r\n onClick={() => {\r\n let data = { ...this.state.popopens };\r\n data[record.id] = false;\r\n this.setState({\r\n popopens: data,\r\n });\r\n onClick && onClick(record);\r\n }}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n }\r\n });\r\n return newButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, recordShow, icon, ...params } =\r\n item.props;\r\n if (flag) {\r\n if (index < number) {\r\n return (\r\n <Button\r\n className={cls(getLess(styles, \"nsc-basepage-editor\"), {\r\n [getLess(styles, \"nsc-basepage-editor-first\")]: index === 0,\r\n })}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick(record);\r\n }}\r\n icon={icon}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n } else if (index == number) {\r\n return (\r\n <Popover\r\n placement=\"bottom\"\r\n title={null}\r\n content={content}\r\n trigger={[\"click\"]}\r\n key={index}\r\n open={this.state.popopens[record.id] || false}\r\n onOpenChange={(open) => {\r\n if (open) {\r\n let data = { ...this.state.popopens };\r\n data[record.id] = true;\r\n this.setState({\r\n popopens: data,\r\n });\r\n } else {\r\n this.setState({\r\n popopens: {},\r\n });\r\n }\r\n }}\r\n // overlayClassName={styles['pop']}\r\n >\r\n <a className={getLess(styles, \"nsc-basepage-editor\")}>\r\n <EllipsisOutlined />\r\n </a>\r\n </Popover>\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return (\r\n <Button\r\n className={cls(getLess(styles, \"nsc-basepage-editor\"), {\r\n [getLess(styles, \"nsc-basepage-editor-first\")]: index === 0,\r\n })}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick(record);\r\n }}\r\n {...params}\r\n type=\"link\"\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n }\r\n });\r\n // }\r\n }\r\n //树点击事件\r\n treeSelect(selectedKeys: any, obj: any) {\r\n let keyword = \"\";\r\n const {\r\n searchKey = \"key\",\r\n searchField = \"\",\r\n parantSelect = true,\r\n } = this.props.treeProps;\r\n const { treeSelectedKey } = this.state;\r\n const { selected, selectedNodes } = obj;\r\n\r\n if (selected) {\r\n keyword = selectedNodes[0].dataref.attribute[searchKey];\r\n if (parantSelect) {\r\n this.setState({\r\n treeSelectedKey: selectedKeys[0],\r\n treeSearchPrams: { [searchField]: keyword },\r\n });\r\n } else {\r\n if (selectedNodes[0].isLeaf || !selectedNodes[0].children) {\r\n if (selectedKeys[0] !== treeSelectedKey) {\r\n this.setState({\r\n treeSelectedKey: selectedKeys[0],\r\n treeSearchPrams: { [searchField]: keyword },\r\n });\r\n }\r\n }\r\n }\r\n } else {\r\n this.setState({\r\n treeSelectedKey: keyword,\r\n treeSearchPrams: {},\r\n });\r\n }\r\n if (this.props.onTreeSelect) {\r\n this.props.onTreeSelect(selectedKeys, obj);\r\n return;\r\n }\r\n const fromValue = this.searchRef?.current?.getSearchValues() || {};\r\n searchField && this.tableLoad({ ...fromValue, [searchField]: keyword });\r\n this.props.onCallBacks?.treeSelectCallBack &&\r\n utils.callback(this.props.onCallBacks?.treeSelectCallBack, this, [\r\n selectedKeys,\r\n obj,\r\n ]);\r\n }\r\n resetSearch() {\r\n this.searchRef.current?.resetFields();\r\n }\r\n getText(props, text) {\r\n let newText = text;\r\n if (props?.data && props?.data?.length > 0) {\r\n let data = props.data;\r\n for (let i = 0; i < data?.length; i++) {\r\n if (data[i].value == text) {\r\n newText = data[i].label;\r\n }\r\n }\r\n }\r\n return newText;\r\n }\r\n setTableData(data) {\r\n this.tableRef.current?.store?.setData(data);\r\n }\r\n setTreeData(data) {\r\n this.treeRef.current?.store?.setData(data);\r\n }\r\n getSelectedKey = (selected) => {\r\n let res = [];\r\n for (let key in selected) {\r\n const keys = selected[key];\r\n if (keys.length > 0) {\r\n res = [...res, ...keys];\r\n }\r\n }\r\n return res;\r\n };\r\n\r\n render() {\r\n const {\r\n columns = [],\r\n showSearch = true,\r\n children,\r\n submitUrl = \"\",\r\n tableProps = {},\r\n treeProps = {},\r\n formProps = {},\r\n showLeft = false,\r\n submitParams = {},\r\n showToolButton = true,\r\n buttons = [],\r\n editorForm = true,\r\n onShowForm,\r\n formChangeValid = true,\r\n className,\r\n toolButtonPosition = \"buttom\",\r\n actionProps,\r\n deletePosition = \"toolbar\",\r\n } = this.props;\r\n const {\r\n store,\r\n filterColumn = true,\r\n actionColumn = true,\r\n showRowSelection = true,\r\n columnOrder = true,\r\n expandable = {},\r\n parantSelect = true,\r\n title: tableTitle,\r\n ...othertableParams\r\n } = tableProps;\r\n\r\n const {\r\n store: treeStore = {},\r\n showSearch: treeSearch = true,\r\n titleAlias = \"title\",\r\n title: treeTitle,\r\n ...othertreeParams\r\n } = treeProps;\r\n let tableParams = { filterColumn, store, ...othertableParams } as any;\r\n let tableColumn: any[] = [];\r\n const searchForms: any = [];\r\n const editorForms: any = [];\r\n const defaultValue: any = {};\r\n const columnButtons: any = [];\r\n const { elementHeight } = this.state;\r\n\r\n columns.map((item: any) => {\r\n let temp = { width: 100, ...item };\r\n if (temp.search === true || temp.search?.show === true) {\r\n searchForms.push({\r\n name: temp.field || temp.dataIndex,\r\n label: temp.search?.label || temp.title,\r\n type: temp.type,\r\n props: temp.props,\r\n labelCol: temp.search?.labelCol,\r\n wrapperCol: temp.search?.wrapperCol,\r\n rules: temp.searchRules ? temp.searchRules : [],\r\n });\r\n }\r\n\r\n delete temp.search;\r\n temp.editor !== false &&\r\n editorForms.push({\r\n name: temp.field || temp.dataIndex,\r\n label: temp.title,\r\n rules: temp.rules ? temp.rules : [],\r\n type: temp.type,\r\n span: temp.span,\r\n dictName: temp.dictName,\r\n props: { ...temp.props },\r\n });\r\n\r\n if (\r\n temp.props?.defaultValue !== undefined &&\r\n temp.props?.defaultValue !== null\r\n ) {\r\n const name = temp.field || temp.dataIndex;\r\n defaultValue[name] = temp.props?.defaultValue;\r\n }\r\n delete temp.rules;\r\n delete temp.span;\r\n if (temp.columnSearch) {\r\n temp.filterProps = {\r\n type: temp.type,\r\n props: temp.props,\r\n };\r\n }\r\n delete temp.type;\r\n let tempProp = { ...temp.props };\r\n if (!temp.ellipsis) {\r\n temp = {\r\n ellipsis: { showTitle: false },\r\n render: (text: any) => {\r\n return this.getText(tempProp, text);\r\n },\r\n ...temp,\r\n };\r\n } else {\r\n temp = {\r\n ellipsis: true,\r\n ...temp,\r\n };\r\n }\r\n delete temp.props;\r\n\r\n // temp.ellipsis = true;\r\n if (temp?.columnShow !== false) tableColumn.push(temp);\r\n });\r\n const selfButtons: any = [];\r\n const { baseActionColumn } = config();\r\n let showIcon = true;\r\n if (actionProps?.showIcon === false) showIcon = false;\r\n else if (baseActionColumn.showIcon === false) showIcon = false;\r\n\r\n if (buttons.indexOf(\"search\") > -1) {\r\n columnButtons.push(\r\n <Button\r\n onClick={(record: any) => {\r\n if (onShowForm) {\r\n onShowForm(record.attribute || record, \"detail\");\r\n return;\r\n }\r\n this.showForm(record.attribute || record, \"detail\");\r\n }}\r\n icon={<EyeOutlined />}\r\n type=\"link\"\r\n >\r\n 查看\r\n </Button>\r\n );\r\n\r\n if (buttons.indexOf(\"editor\") > -1) {\r\n columnButtons.push(\r\n <Button\r\n onClick={(record: any) => {\r\n if (onShowForm) {\r\n onShowForm(record.attribute || record, \"editor\");\r\n return;\r\n }\r\n this.showForm(record.attribute || record, \"editor\");\r\n }}\r\n icon={<EditOutlined />}\r\n >\r\n 编辑\r\n </Button>\r\n );\r\n }\r\n }\r\n if (buttons.indexOf(\"add\") > -1) {\r\n selfButtons.push(\r\n <Button\r\n type={\"primary\"}\r\n onClick={() => {\r\n const { onShowForm } = this.props;\r\n if (onShowForm) {\r\n onShowForm(null, \"add\");\r\n return;\r\n }\r\n this.showForm();\r\n }}\r\n icon={<PlusOutlined />}\r\n >\r\n 添加\r\n </Button>\r\n );\r\n }\r\n if (buttons.indexOf(\"delete\") > -1) {\r\n if (deletePosition == \"toolbar\") {\r\n selfButtons.push(\r\n <Button\r\n // type={\"primary\"}\r\n onClick={this.onDelete.bind(this)}\r\n icon={<DeleteOutlined />}\r\n danger\r\n >\r\n 删除\r\n </Button>\r\n );\r\n } else if (deletePosition == \"row\") {\r\n columnButtons.push(\r\n <Button\r\n // type={\"primary\"}\r\n onClick={(record: any) => {\r\n this.onDelete(record);\r\n }}\r\n icon={<DeleteOutlined />}\r\n danger\r\n type=\"link\"\r\n >\r\n 删除\r\n </Button>\r\n );\r\n }\r\n }\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n if (Array.isArray(item)) {\r\n item.map((child) => {\r\n if (child?.props?.pageType == \"toolButton\") {\r\n selfButtons.push(child);\r\n } else if (\r\n child?.props?.pageType == \"cloumnButton\" ||\r\n child?.props?.pageType == \"columnButton\"\r\n ) {\r\n columnButtons.push(child);\r\n }\r\n });\r\n } else {\r\n if (item?.props?.pageType == \"toolButton\") {\r\n selfButtons.push(item);\r\n } else if (\r\n item?.props?.pageType == \"cloumnButton\" ||\r\n item?.props?.pageType == \"columnButton\"\r\n ) {\r\n columnButtons.push(item);\r\n }\r\n }\r\n });\r\n } else if (children) {\r\n const { props }: any = children;\r\n if (props?.pageType == \"toolButton\") {\r\n selfButtons.push(children);\r\n } else if (props?.pageType == \"cloumnButton\") {\r\n columnButtons.push(children);\r\n }\r\n }\r\n actionColumn &&\r\n tableColumn.push({\r\n title: \"操作\",\r\n dataIndex: \"action\",\r\n align: actionProps?.textAlign\r\n ? actionProps?.textAlign\r\n : baseActionColumn.textAlign\r\n ? baseActionColumn.textAlign\r\n : \"left\",\r\n width: actionProps?.width\r\n ? actionProps?.width\r\n : baseActionColumn.width\r\n ? baseActionColumn.width\r\n : 200,\r\n fixed: \"right\",\r\n render: (text: any, record: any) => {\r\n return (\r\n <div className={getLess(styles, \"nsc-basepage-action\")}>\r\n {this.renderCloumnButton(columnButtons, record)}\r\n </div>\r\n );\r\n },\r\n });\r\n\r\n if (columnOrder)\r\n tableColumn = [\r\n {\r\n title: \"序号\",\r\n width: 80,\r\n align: \"center\",\r\n render: (text, reacord, index) => {\r\n return <>{index + 1}</>;\r\n },\r\n },\r\n ...tableColumn,\r\n ];\r\n let searchFlag = showSearch && searchForms.length > 0;\r\n let { tableTool } = config();\r\n let toolFlag =\r\n showToolButton &&\r\n selfButtons.length > 0 &&\r\n toolButtonPosition == \"buttom\";\r\n let toolbarFlag = !(\r\n tableProps.toolbar == false ||\r\n tableProps.toolbar?.show == false ||\r\n tableProps.toolbar?.tools?.length == 0 ||\r\n tableTool?.show == false\r\n );\r\n\r\n let pageHeight = this.props.pageType == \"tabspage\" ? 63 : 0;\r\n let tableHeaderHeight = 55;\r\n\r\n let headerHeight = showSearch && searchForms.length > 0 ? 104 : 0;\r\n let toolHeight = tableTitle || toolFlag ? 48 : 0;\r\n let paddingHeight = 25;\r\n let tableContentHeight =\r\n elementHeight - headerHeight - toolHeight - paddingHeight - pageHeight;\r\n let tableHeight = tableContentHeight - 32 - 32;\r\n let tableSrollHeight = tableContentHeight - tableHeaderHeight - 32 - 32;\r\n if (tableProps.pagination !== false) {\r\n const scroll = tableParams.scroll;\r\n tableParams = {\r\n ...tableParams,\r\n scroll: { x: \"max-content\", y: tableSrollHeight, ...scroll },\r\n };\r\n }\r\n return (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage\"), className)}\r\n ref={this.pageRef}\r\n >\r\n {this.props.pageTitle && (\r\n <div className={cls(getLess(styles, \"nsc-basepage-title\"))}>\r\n {this.props.pageTitle}\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-pane\"))}\r\n style={{ display: \"flex\" }}\r\n >\r\n {showLeft && (\r\n <div className={getLess(styles, \"nsc-basepage-left\")}>\r\n {treeTitle && (\r\n <div className={getLess(styles, \"tree-title\")}>{treeTitle}</div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"tree-content\"), {\r\n [getLess(styles, \"tree-content-notitle\")]: !treeTitle,\r\n })}\r\n >\r\n <Tree\r\n store={{ ...treeStore }}\r\n showIcon={false}\r\n checkable={false}\r\n searchable={treeSearch}\r\n onSelect={this.treeSelect.bind(this)}\r\n selectedKeys={[this.state.treeSelectedKey]}\r\n titleAlias={titleAlias}\r\n {...othertreeParams}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-right\"), {\r\n [getLess(styles, \"nsc-basepage-no-left-right\")]: !showLeft,\r\n })}\r\n >\r\n {showSearch && searchForms.length > 0 && (\r\n <div className={getLess(styles, \"nsc-basepage-headersearch\")}>\r\n <HeaderSearch\r\n searchForms={searchForms}\r\n toolButtonPosition={toolButtonPosition}\r\n onSearch={this.onSearch.bind(this)}\r\n onReset={this.props.onReset}\r\n ref={this.searchRef}\r\n searchFormProps={this.props.searchFormProps}\r\n />\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-content\"), {\r\n [getLess(styles, \"nsc-basepage-content-gap\")]: !searchFlag,\r\n })}\r\n >\r\n {(tableTitle || toolFlag) && (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-table-title\"), {\r\n [getLess(styles, \"nsc-basepage-title-width\")]: !toolbarFlag,\r\n })}\r\n >\r\n <div>{tableTitle}</div>\r\n {toolFlag && this.renderToolButtons(selfButtons, toolbarFlag)}\r\n </div>\r\n )}\r\n\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-table\"),\r\n {\r\n [getLess(styles, \"nsc-basepage-table-top\")]: !toolbarFlag,\r\n },\r\n {\r\n [getLess(styles, \"nsc-basepage-table-top2\")]:\r\n toolbarFlag && !toolFlag,\r\n }\r\n )}\r\n style={{ height: tableContentHeight }}\r\n >\r\n <Table\r\n ref={this.tableRef}\r\n columns={tableColumn}\r\n expandable={{\r\n expandIcon: ({ expanded, onExpand, record }) => {\r\n return (\r\n <>\r\n {expanded ? (\r\n <DownOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(\r\n styles,\r\n \"nsc-basepage-expand-icon\"\r\n )}\r\n />\r\n ) : (\r\n record.childNodes && (\r\n <RightOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(\r\n styles,\r\n \"nsc-basepage-expand-icon\"\r\n )}\r\n />\r\n )\r\n )}\r\n </>\r\n );\r\n },\r\n ...expandable,\r\n }}\r\n columnOrder={true}\r\n onChange={(pagination) => {\r\n const { currentPage } = this.state;\r\n if (currentPage !== pagination.current) {\r\n this.setState({\r\n currentPage: pagination.current,\r\n });\r\n }\r\n }}\r\n toolbar={{\r\n onToolClick: {\r\n onRefresh: () => {\r\n const params = this.getSearchValues();\r\n this.tableLoad(params);\r\n },\r\n },\r\n ...tableProps.toolbar,\r\n }}\r\n showRowSelection={showRowSelection}\r\n style={{ height: tableHeight }}\r\n {...tableParams}\r\n // pagination={false}\r\n />\r\n {/* <div></div> */}\r\n </div>\r\n </div>\r\n </div>\r\n {editorForm && (\r\n <EditorForm\r\n ref={this.editorRef}\r\n callBack={() => {\r\n this.props.onCallBacks?.onSumbitCallBack &&\r\n this.props.onCallBacks?.onSumbitCallBack();\r\n this.tableReload();\r\n }}\r\n formProps={editorForms}\r\n submitUrl={submitUrl}\r\n submitParams={submitParams}\r\n onSubmit={this.props.onSubmit}\r\n defaultValue={defaultValue}\r\n onHideForm={this.props.onHideForm}\r\n onFormChange={this.props.onFormChange}\r\n formType={this.props.formType || \"auto\"}\r\n changeValid={formChangeValid}\r\n otherProps={{ ...formProps }}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\nexport default BasePage;\r\n"],"mappings":"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"}
@@ -68,12 +68,12 @@
68
68
  }
69
69
  .nsc-basepage-tool-buttons {
70
70
  display: flex;
71
- flex-direction: row-reverse;
71
+ justify-content: flex-end;
72
72
  flex-wrap: wrap;
73
73
  flex: 1;
74
74
  margin-bottom: 16px;
75
75
  button {
76
- margin-right: 12px;
76
+ // margin-right: 12px;
77
77
  min-width: 80px;
78
78
  }
79
79
  }
@@ -5,6 +5,15 @@
5
5
  // padding-right: 24px;
6
6
  .nsc-headersearch-form {
7
7
  width: 100%;
8
+ :global {
9
+ .ant-form-item {
10
+ margin-bottom: 24px;
11
+ margin-right: 0;
12
+ }
13
+ .ant-form-horizontal .ant-form-item-control {
14
+ margin-right: 16px;
15
+ }
16
+ }
8
17
  .nsc-headersearch-expand-style {
9
18
  line-height: 32px;
10
19
  // color: var(--ant-primary-color);
@@ -13,15 +22,6 @@
13
22
  cursor: pointer;
14
23
  }
15
24
  }
16
- :global {
17
- .ant-form-item {
18
- margin-right: 0px;
19
- margin-bottom: 16px;
20
- }
21
- .ant-form-horizontal .ant-form-item-control {
22
- margin-right: 16px;
23
- }
24
- }
25
25
  }
26
26
  .header-padding {
27
27
  // padding-right: 24px;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nsc-react-component",
3
- "version": "3.1.6",
3
+ "version": "3.1.8",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -56,7 +56,6 @@
56
56
  "@bj-nsc/msn": ">=1.0.22",
57
57
  "@types/react": "^17.0.3",
58
58
  "@types/react-dom": "^17.0.2",
59
- "antd": ">=5.9.4",
60
59
  "nsc-file": "^2.3.0",
61
60
  "nsc-request": "^3.1.5",
62
61
  "react": ">=16.9.0",
@@ -66,8 +65,8 @@
66
65
  "@ant-design/icons": "^5.0.1",
67
66
  "@babel/runtime": "^7.13.17",
68
67
  "@babel/runtime-corejs3": "^7.13.17",
69
- "@bj-nsc/functions": "^1.4.4",
70
- "antd": "^5.9.4",
68
+ "@bj-nsc/functions": ">=1.4.4",
69
+ "antd": "^5.16.0",
71
70
  "classnames": "^2.2.6",
72
71
  "clone-deep": "^4.0.1",
73
72
  "core-js": "3",