nsc-react-component 4.1.6 → 4.1.7

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.
@@ -138,6 +138,22 @@ class BasePage extends PureComponent {
138
138
  });
139
139
  }
140
140
  }
141
+ // componentDidMount() {
142
+ // const { initData } = this.props;
143
+ // const elementHeight = this.pageRef.current?.clientHeight;
144
+ // this.setState({
145
+ // elementHeight,
146
+ // });
147
+ // initData && initData();
148
+ // }
149
+ // componentDidUpdate() {
150
+ // const elementHeight = this.pageRef.current?.clientHeight;
151
+ // if (elementHeight > this.state.elementHeight) {
152
+ // this.setState({
153
+ // elementHeight,
154
+ // });
155
+ // }
156
+ // }
141
157
  componentWillUnmount() {
142
158
  // 移除resize监听
143
159
  window.removeEventListener("resize", this.throttleCalculateTableHeaderHeight);
@@ -1007,12 +1023,13 @@ class BasePage extends PureComponent {
1007
1023
  } = config();
1008
1024
  let toolFlag = showToolButton && toolButtons.length > 0 && toolButtonPosition == "buttom";
1009
1025
  let toolbarFlag = !(tableProps.toolbar == false || ((_tableProps$toolbar = tableProps.toolbar) === null || _tableProps$toolbar === void 0 ? void 0 : _tableProps$toolbar.show) == false || ((_tableProps$toolbar2 = tableProps.toolbar) === null || _tableProps$toolbar2 === void 0 || (_tableProps$toolbar2 = _tableProps$toolbar2.tools) === null || _tableProps$toolbar2 === void 0 ? void 0 : _tableProps$toolbar2.length) == 0 || (tableTool === null || tableTool === void 0 ? void 0 : tableTool.show) == false);
1026
+ let headerHeight = showSearch && searchForms.length > 0 ? 104 : 0; //头部搜索栏高度
1010
1027
  let toolHeight = tableTitle || toolFlag ? 50 : 0;
1011
1028
  let paddingHeight = 20 * 2; //上下间距
1012
- let tableContentHeight = elementHeight - toolHeight - paddingHeight;
1029
+ let tableContentHeight = elementHeight - toolHeight - paddingHeight - headerHeight;
1013
1030
  let PaginationHeight = tableProps.pagination !== false ? 32 + 16 : 0; //32 为分页器高度,16为margin间距
1014
1031
  let tableHeight = tableContentHeight - PaginationHeight;
1015
- let tableSrollHeight = tableContentHeight - this.state.tableHeaderHeight - PaginationHeight;
1032
+ let tableSrollHeight = tableContentHeight - this.state.tableHeaderHeight > 0 ? this.state.tableHeaderHeight : 55 - PaginationHeight;
1016
1033
  // if (tableProps.pagination !== false) {
1017
1034
  const scroll = tableParams.scroll;
1018
1035
  tableParams = _objectSpread(_objectSpread({}, tableParams), {}, {
@@ -1163,4 +1180,4 @@ class BasePage extends PureComponent {
1163
1180
  }
1164
1181
  _defineProperty(BasePage, "convertColumns", convertColumns);
1165
1182
  export default BasePage;
1166
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsIkRvd25PdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiRWRpdE91dGxpbmVkIiwiUmlnaHRPdXRsaW5lZCIsIlBsdXNPdXRsaW5lZCIsIkVsbGlwc2lzT3V0bGluZWQiLCJEZWxldGVPdXRsaW5lZCIsImNvbnZlckZ1bmN0aW9uIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiZ2V0QnV0dG9uUGVybWlzc29ucyIsIkhlYWRlclNlYXJjaCIsImNvbnZlcnRDb2x1bW5zIiwiZ2V0TmV3Q29sdW1ucyIsInRocm90dGxlIiwic3R5bGVzIiwiQmFzZVBhZ2UiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX3R5cGUiLCJfc2l6ZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJzdGF0ZSIsInZhbHVlIiwiZGVwdElkIiwib25TZWFyY2giLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJ0YWJsZVdyYXBwZXJSZWYiLCJjdXJyZW50IiwidGFibGVIZWFkZXIiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiaGVhZGVySGVpZ2h0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaGVpZ2h0IiwidGFibGVIZWFkZXJIZWlnaHQiLCJzZXRTdGF0ZSIsImNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0Iiwic3RvcmVQcmVmaXgiLCJ0eXBlIiwiY29udGVudCIsInNpemUiLCJzZWxlY3RlZFJvd0tleXMiLCJzZWxlY3RlZFJvd0RhdGFzIiwidHJlZVNlbGVjdGVkS2V5IiwiZXhwYW5kIiwiZm9ybVR5cGUiLCJ0YWJsZVNpemUiLCJ0cmVlU2VhcmNoUHJhbXMiLCJwb3BvcGVucyIsIm1vcmVPcGVuIiwiZWxlbWVudEhlaWdodCIsInBlcm1pc3Npb25CdXR0b25zIiwicXVlcnlQYXJhbXMiLCJjb21wb25lbnREaWRNb3VudCIsIl90aGlzJHBhZ2VDb250ZW50UmVmJCIsImluaXREYXRhIiwicGVybWlzc29uIiwicGFnZUNvbnRlbnRSZWYiLCJjbGllbnRIZWlnaHQiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwidGhyb3R0bGVDYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCIsInNldFRpbWVvdXQiLCJjb21wb25lbnREaWRVcGRhdGUiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQiLCJwYWdlUmVmIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2V0U2VhcmNoUGFyYW1zIiwicGFyYW1zIiwiY2FsbEJhY2siLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUiLCJzZWFyY2hSZWYiLCJkb1N1Ym1pdCIsImRhdGEiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUiLCJsYWJlbCIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImVkaXRvclJlZiIsInNob3dGb3JtIiwiX3RoaXMkZWRpdG9yUmVmIiwiZWRpdG9yZmxhZyIsIm5ld1ZhbHVlIiwiX29iamVjdFNwcmVhZCIsInNob3ciLCJoaWRlRm9ybSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTIiLCJzZXRMb2FkaW5nIiwibG9hZGluZyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTMiLCJzZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTQiLCJzZXRGb3JtVmFsdWUiLCJnZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTUiLCJnZXRGb3JtVmFsdWUiLCJvbkRlbGV0ZSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbiIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjIiLCJkZWxldGVVcmwiLCJkZWxldGVQYXJhbXMiLCJkZWxldGVQb3NpdGlvbiIsImJ1dHRvbkNsaWNrIiwicmVxdWVzdFBhcmFtcyIsInJlcXVlc3RVcmxzIiwicmVxdWVzdENvbmZpZyIsIl90aGlzIiwidGFibGVSZWYiLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJnZXRTZWxlY3RlZFJvd0RhdGFzIiwidXJsIiwid2FybmluZyIsImNvbmZpcm0iLCJvbk9rIiwicmVjb3JkIiwiaWRzIiwiaWQiLCJmdW5jcyIsIlV0aWxzIiwiRXJyb3IiLCJkYXRhUGFyYW1zIiwib3RoZXJQYXJhbXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJkZWZhdWx0UGFyYW1zIiwibWV0aG9kIiwiYXV0b1ByZWZpeCIsImpvaW4iLCJmaW5hbFBhcmFtcyIsInRoZW4iLCJjb2RlIiwiX3RoaXMkc2VhcmNoUmVmIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMiIsInN1Y2Nlc3MiLCJnZXRTZWFyY2hWYWx1ZXMiLCJvbkNhbGxCYWNrcyIsIm9uRGVsZXRlQ2FsbEJhY2siLCJ0YWJsZUxvYWQiLCJlcnJvciIsImNhdGNoIiwiY29uc29sZSIsImxvZyIsIl90YWJsZVN0b3JlJHJlcXVlc3RDbyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjMiLCJkZWZhdWx0UmVxdWVzdENvbmZpZyIsInRhYmxlUHJvcHMiLCJzdG9yZSIsInRhYmxlU3RvcmUiLCJjb252ZXJ0UXVlcnlQYXJhbXMiLCJyZXF1ZXN0Q29uaWciLCJzdG9yZUNvbmZpZyIsInN0b3JlUGFyYW1zIiwib3RoZXJTdG9yZUNvbmZpZyIsIl9leGNsdWRlZDIiLCJsb2FkIiwiX3RhYmxlU3RvcmUkcmVxdWVzdENvMiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzMiLCJvblF1ZXJ5Q2FsbEJhY2siLCJ0YWJsZVJlbG9hZCIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjQiLCJhdXRvTG9hZCIsInJlbG9hZCIsImNhbGxiYWNrIiwiX3JlcyRkYXRhIiwicmVjb3JkcyIsImN1cnJlbnRQYWdlIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNSIsInRyZWVMb2FkIiwiX3RoaXMkdHJlZVJlZiRjdXJyZW50IiwidHJlZVJlZiIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjYiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW43Iiwic2V0U2VsZWN0ZWRSb3dLZXlzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuOCIsInNldFNlbGVjdGVkUm93RGF0YXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW45IiwicmVzZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4xMCIsIl90aGlzJHNlYXJjaFJlZjIiLCJmcm9tVmFsdWUiLCJnZXRDaGlsZHJlbkRhdGEiLCJyb3dLZXkiLCJyZXNLZXkiLCJjaGlsZE5vZGVzIiwiY2hpbGRyZW4iLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJyZW5kZXJUb29sQnV0dG9ucyIsInRvb2xidXR0b25zIiwidG9vbGJhckZsYWciLCJmbGFnIiwic2hvd1NlYXJjaCIsIl9pdGVtJHByb3BzIiwicGFnZVR5cGUiLCJvbkNsaWNrIiwiaWNvbiIsIl9leGNsdWRlZDMiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiX2V4dGVuZHMiLCJzdHlsZSIsIm1hcmdpbkxlZnQiLCJtYXJnaW5SaWdodCIsInRpdGxlIiwicGxhY2VtZW50Iiwib3BlbiIsIm9uT3BlbkNoYW5nZSIsInJlbmRlckNsb3VtbkJ1dHRvbiIsImNvbHVtbkJ1dHRvbnMiLCJyb3dSZWNvcmQiLCJhY3Rpb25Qcm9wcyIsImJhc2VBY3Rpb25Db2x1bW4iLCJuZXdCdXR0b25zIiwic2hvd0ljb24iLCJfaXRlbSRwcm9wczIiLCJyZWNvcmRTaG93IiwiX2V4Y2x1ZGVkNCIsImV2ZW50T3B0aW9uIiwiVWl0bHMiLCJmdW5jIiwiRnVuY3Rpb24iLCJwdXNoIiwiZSIsImV2YWwiLCJudW1iZXIiLCJidXR0b25OdW1iZXIiLCJfaXRlbSRwcm9wczMiLCJfZXhjbHVkZWQ1IiwiTnVtYmVyIiwiX2l0ZW0kcHJvcHM0IiwiX2V4Y2x1ZGVkNiIsInRyaWdnZXIiLCJ0cmVlU2VsZWN0Iiwic2VsZWN0ZWRLZXlzIiwib2JqIiwiX3RoaXMkc2VhcmNoUmVmMyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzQiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM1Iiwia2V5d29yZCIsInNlYXJjaEtleSIsInNlYXJjaEZpZWxkIiwicGFyYW50U2VsZWN0IiwidHJlZVByb3BzIiwic2VsZWN0ZWROb2RlcyIsImRhdGFyZWYiLCJhdHRyaWJ1dGUiLCJpc0xlYWYiLCJvblRyZWVTZWxlY3QiLCJ0cmVlU2VsZWN0Q2FsbEJhY2siLCJyZXNldFNlYXJjaCIsIl90aGlzJHNlYXJjaFJlZiRjdXJyZTIiLCJyZXNldEZpZWxkcyIsImdldFRleHQiLCJ0ZXh0IiwiX3Byb3BzJGRhdGEiLCJuZXdUZXh0IiwiaSIsInNldFRhYmxlRGF0YSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjExIiwic2V0RGF0YSIsInNldFRyZWVEYXRhIiwiX3RoaXMkdHJlZVJlZiRjdXJyZW50MiIsImNvbnZlclBhcmFtcyIsInJlbmRlciIsIl90aGlzMiIsIl90YWJsZVByb3BzJHRvb2xiYXIiLCJfdGFibGVQcm9wcyR0b29sYmFyMiIsImNvbHVtbnMiLCJzdWJtaXRVcmwiLCJmb3JtUHJvcHMiLCJmb3JtUGFnZVByb3BzIiwic2hvd0xlZnQiLCJzdWJtaXRQYXJhbXMiLCJzaG93VG9vbEJ1dHRvbiIsImJ1dHRvbnMiLCJlZGl0b3JGb3JtIiwib25TaG93Rm9ybSIsImZvcm1DaGFuZ2VWYWxpZCIsInRvb2xCdXR0b25Qb3NpdGlvbiIsInBlcm1pc3Npb24iLCJoYXMiLCJmaWx0ZXJDb2x1bW4iLCJhY3Rpb25Db2x1bW4iLCJzaG93Um93U2VsZWN0aW9uIiwiY29sdW1uT3JkZXIiLCJleHBhbmRhYmxlIiwidGFibGVUaXRsZSIsIm90aGVydGFibGVQYXJhbXMiLCJfZXhjbHVkZWQ3IiwibmV3VGFibGVTdG9yZSIsIl9uZXdUYWJsZVN0b3JlJHJlcXVlcyIsInRyZWVTdG9yZSIsInRyZWVTZWFyY2giLCJ0aXRsZUFsaWFzIiwidHJlZVRpdGxlIiwib3RoZXJ0cmVlUGFyYW1zIiwiX2V4Y2x1ZGVkOCIsInRhYmxlUGFyYW1zIiwiZGVmYXVsdFZhbHVlIiwibWVudUNvZGUiLCJwZXJtaXNzb25zIiwidGFibGVDb2x1bW4iLCJzZWFyY2hGb3JtcyIsImVkaXRvckZvcm1zIiwidG9vbEJ1dHRvbnMiLCJidXR0b25NYXAiLCJlZGl0b3IiLCJkZWxldGUiLCJzZWFyY2giLCJyZXR1cm5CdXR0b24iLCJfYnV0dG9uTWFwJGNvZGUiLCJkZWZhdWx0UHJvcHMiLCJvbkVkaXRvciIsIl90aGlzMiRwcm9wcyRvbkNhbGxCYSIsIl90aGlzMiRwcm9wcyRvbkNhbGxCYTIiLCJvbkVkaXRvckNhbGxCYWNrIiwib25TZWFyY2hDYWxsQmFjayIsImNoZWNrUGVyc3Npb24iLCJpbmRleE9mIiwib25BZGQiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM2IiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNyIsIm9uQWRkQ2FsbEJhY2siLCJiaW5kIiwiZGFuZ2VyIiwiQXJyYXkiLCJpc0FycmF5IiwiY2hpbGQiLCJfY2hpbGQkcHJvcHMiLCJfY2hpbGQkcHJvcHMyIiwiX2NoaWxkJHByb3BzMyIsIl9jaGlsZCRwcm9wczQiLCJfY2hpbGQkcHJvcHM1IiwiX2l0ZW0kcHJvcHM1IiwiX2l0ZW0kcHJvcHM2IiwiX2l0ZW0kcHJvcHM3IiwiX2l0ZW0kcHJvcHM4IiwiX2l0ZW0kcHJvcHM5IiwiZGF0YUluZGV4IiwiYWxpZ24iLCJ0ZXh0QWxpZ24iLCJ3aWR0aCIsImZpeGVkIiwicmVhY29yZCIsIkZyYWdtZW50Iiwic2VhcmNoRmxhZyIsInRhYmxlVG9vbCIsInRvb2xGbGFnIiwidG9vbGJhciIsInRvb2xzIiwidG9vbEhlaWdodCIsInBhZGRpbmdIZWlnaHQiLCJ0YWJsZUNvbnRlbnRIZWlnaHQiLCJQYWdpbmF0aW9uSGVpZ2h0IiwicGFnaW5hdGlvbiIsInRhYmxlSGVpZ2h0IiwidGFibGVTcm9sbEhlaWdodCIsInNjcm9sbCIsIngiLCJ5IiwicmVmIiwicGFnZVRpdGxlIiwiZGlzcGxheSIsImNoZWNrYWJsZSIsInNlYXJjaGFibGUiLCJvblNlbGVjdCIsIm9uUmVzZXQiLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUzIiwic2VhcmNoRm9ybVByb3BzIiwiZXhwYW5kSWNvbiIsIl9yZWYiLCJfcmVjb3JkJGNoaWxkTm9kZXMiLCJfcmVjb3JkJGNoaWxkTm9kZXMyIiwiZXhwYW5kZWQiLCJvbkV4cGFuZCIsIm9uQ2hhbmdlIiwib25Ub29sQ2xpY2siLCJvblJlZnJlc2giLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM4IiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjOSIsIm9uU3VtYml0Q2FsbEJhY2siLCJmb3JtcyIsIm9uU3VibWl0Iiwib25IaWRlRm9ybSIsIm9uRm9ybUNoYW5nZSIsImNoYW5nZVZhbGlkIiwicmVxdWVzdE9iamVjdCIsImFkZFVybCIsImVkaXRvclVybCIsImFkZFBhcmFtcyIsImVkaXRvclBhcmFtcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvQmFzZVBhZ2UvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50LCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFRhYmxlIGZyb20gXCIuLi8uLi9iYXNlL3RhYmxlXCI7XHJcbmltcG9ydCBUcmVlIGZyb20gXCIuLi8uLi9iYXNlL3RyZWVcIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi9iYXNlL21vZGFsXCI7XHJcbmltcG9ydCBQb3BvdmVyIGZyb20gXCIuLi8uLi9iYXNlL3BvcG92ZXJcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgRWRpdG9yRm9ybSwgeyBGb3JtUGFnZVByb3BzIH0gZnJvbSBcIi4uL0Zvcm1QYWdlL2luZGV4XCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIERvd25PdXRsaW5lZCxcclxuICBFeWVPdXRsaW5lZCxcclxuICBFZGl0T3V0bGluZWQsXHJcbiAgUmlnaHRPdXRsaW5lZCxcclxuICBQbHVzT3V0bGluZWQsXHJcbiAgRWxsaXBzaXNPdXRsaW5lZCxcclxuICBEZWxldGVPdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgY29udmVyRnVuY3Rpb24sIGdldExlc3MsIGdldE5vZGUsIHNpbXBsaWZ5Q29sdW1ucyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgcmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcbmltcG9ydCB7IGdldFN0b3JhZ2UsIHB4MnZ3LCBnZXRCdXR0b25QZXJtaXNzb25zIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBIZWFkZXJTZWFyY2ggZnJvbSBcIi4uL0hlYWRlclNlYXJjaFwiO1xyXG5pbXBvcnQgeyBQYWdpbmF0aW9uUHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgbnNjZmlsZSBmcm9tIFwibnNjLWZpbGVcIjtcclxuaW1wb3J0IHsgY29udmVydENvbHVtbnMsIGdldE5ld0NvbHVtbnMgfSBmcm9tIFwiLi91dGlsc1wiO1xyXG5pbXBvcnQgaXNFcXVhbCBmcm9tIFwibG9kYXNoL2lzRXF1YWxcIjtcclxuaW1wb3J0IHRocm90dGxlIGZyb20gXCJsb2Rhc2gvdGhyb3R0bGVcIjtcclxudHlwZSBCdXR0b25JdGVtID1cclxuICB8IHN0cmluZ1xyXG4gIHwge1xyXG4gICAgICBjb2RlOiBzdHJpbmc7XHJcbiAgICAgIHJlY29yZFNob3c/OiBzdHJpbmcgfCBGdW5jdGlvbjtcclxuICAgICAgcHJvcHM/OiBhbnk7XHJcbiAgICB9O1xyXG5cclxuaW50ZXJmYWNlIFRhYmxlUHJvcHMge1xyXG4gIGFjdGlvbkNvbHVtbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65pON5L2c5YiXXHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIGZpbHRlckNvbHVtbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66L+H5ruk5oyJ6ZKuXHJcbiAgc2hvd1Jvd1NlbGVjdGlvbj86IGJvb2xlYW47IC8v5piv5ZCm6KGo5qC85Yu+6YCJ5YiXXHJcbiAgcGFnaW5hdGlvbj86IGJvb2xlYW4gfCBQYWdpbmF0aW9uUHJvcHM7IC8v5piv5ZCm5pi+56S65YiG6aG1XHJcbiAgY29sdW1uT3JkZXI/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuihqOagvOW6j+WIl1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5jb25zdCBzdHlsZXMgPSBudWxsO1xyXG5pbnRlcmZhY2UgVHJlZVByb3BzIHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgc2hvd1NlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65pCc57Si5qGGXHJcbiAgc2VhcmNoS2V5Pzogc3RyaW5nOyAvL+aQnOe0onZhbHVl5a+55bqU55qEa2V5XHJcbiAgc2VhcmNoRmllbGQ/OiBzdHJpbmc7IC8v5p+l6K+i5a+55bqU55qEa2V5XHJcbiAgdGl0bGVBbGlhcz86IHN0cmluZzsgLy/moJF0aXRsZeWvueW6lOeahGtleSzpu5jorqR0aXRsZVxyXG4gIG5vZGVQb3Jwcz86IG9iamVjdDtcclxuICBwYXJhbnRTZWxlY3Q/OiBib29sZWFuO1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5pbnRlcmZhY2UgRm9ybVByb3BzIGV4dGVuZHMgRm9ybVBhZ2VQcm9wcyB7fVxyXG5cclxuaW50ZXJmYWNlIE5TQ0Jhc2VCYWdlUHJvcHMge1xyXG4gIHNob3dTZWFyY2g/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/OiBCdXR0b25JdGVtW107IC8v5oyJ6ZKu6ZuG5ZCIICBbJ2FkZCcsJ2RlbGV0ZScsJ3NlYXJjaCcsJ2VkaXRvciddXHJcbiAgb25TaG93Rm9ybT86ICh2YWx1ZT86IGFueSwgZWRpdG9yRmxhZz86IHN0cmluZykgPT4gdm9pZDsgLy/miZPlvIDooajljZXlm57osINcclxuICBvbkhpZGVGb3JtPzogKCkgPT4gdm9pZDsgLy/miZPlvIDooajljZXlm57osINcclxuICBvbkZvcm1DaGFuZ2U/OiAoY2hhbmdlZFZhbHVlcz86IGFueSwgYWxsVmFsdWVzPzogYW55KSA9PiB2b2lkOyAvL+ihqOWNlW9uQ2hhbmdl5Zue6LCDXHJcbiAgZm9ybVR5cGU/OiBcIm1vZGFsXCIgfCBcImRyYXdlclwiO1xyXG4gIGZvcm1DaGFuZ2VWYWxpZD86IGJvb2xlYW47IC8v6KGo5Y2V5qCh6aqMXHJcbiAgY2xhc3NOYW1lPzogYW55O1xyXG4gIHRvb2xCdXR0b25Qb3NpdGlvbj86IFwicmlnaHRcIiB8IFwiYnV0dG9tXCI7XHJcbiAgcGFnZVRpdGxlPzogc3RyaW5nIHwgUmVhY3ROb2RlO1xyXG4gIGZvcm1Qcm9wcz86IEZvcm1Qcm9wcztcclxuICBhY3Rpb25Qcm9wcz86IHtcclxuICAgIHRleHRBbGlnbj86IHN0cmluZztcclxuICAgIHNob3dJY29uPzogYm9vbGVhbjtcclxuICAgIHdpZHRoPzogbnVtYmVyO1xyXG4gICAgYnV0dG9uTnVtYmVyPzogbnVtYmVyIHwgXCJhbGxcIjtcclxuICB9O1xyXG4gIHNlYXJjaEZvcm1Qcm9wcz86IHsgd3JhcHBlckNvbD86IGFueTsgbGFiZWxDb2w/OiBhbnkgfTtcclxuICBvblRyZWVTZWxlY3Q/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25DYWxsQmFja3M/OiB7XHJcbiAgICB0cmVlU2VsZWN0Q2FsbEJhY2s/OiBhbnk7IC8v5qCR54K55Ye75p+l6K+i5ZCO5Zue6LCDXHJcbiAgICBvblF1ZXJ5Q2FsbEJhY2s/OiBhbnk7IC8v5p+l6K+i5Zue6LCD77yM5p+l6K+i5pWw5o2u5ZCO5Zue6LCDXHJcbiAgICBvblN1bWJpdENhbGxCYWNrPzogYW55OyAvL+S/neWtmOWbnuiwg++8jOS/neWtmOaVsOaNruaIkOWKn+WQjuWbnuiwg1xyXG4gICAgb25EZWxldGVDYWxsQmFjaz86IGFueTsgLy/liKDpmaTmjInpkq7lm57osIPvvIzliKDpmaTmlbDmja7lkI7miafooYxcclxuICAgIG9uRWRpdG9yQ2FsbEJhY2s/OiBhbnk7IC8v57yW6L6R5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgICBvbkFkZENhbGxCYWNrPzogYW55OyAvL+a3u+WKoOaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gICAgb25TZWFyY2hDYWxsQmFjaz86IGFueTsgLy/liJfooajmn6Xor6LmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICB9O1xyXG4gIHBhZ2VUeXBlPzogXCJub3JtYWxcIiB8IFwidGFic3BhZ2VcIjtcclxuICBmb3JtUGFnZVByb3BzPzoge307XHJcbiAgYnV0dG9uQ2xpY2s/OiB7XHJcbiAgICBvbkFkZD86ICgpID0+IHZvaWQ7XHJcbiAgICBvbkVkaXRvcj86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICAgIG9uU2VhcmNoPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gICAgb25EZWxldGU/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgfTtcclxuICBwZXJtaXNzaW9uPzoge1xyXG4gICAgaGFzPzogYm9vbGVhbjtcclxuICAgIG1lbnVDb2RlPzogc3RyaW5nO1xyXG4gIH07XHJcbiAgcmVxdWVzdFBhcmFtcz86IHtcclxuICAgIC8v6ZyA6KaB6aKd5aSW5Lyg55qE5Zu65a6a6K+35rGC5Y+C5pWwXHJcbiAgICBhZGRQYXJhbXM/OiBPYmplY3Q7IC8v5paw5aKe5Zu65a6a5Y+C5pWwXHJcbiAgICBlZGl0b3JQYXJhbXM/OiBPYmplY3Q7IC8v57yW6L6R5Zu65a6a5Y+C5pWwXHJcbiAgICBxdWVyeVBhcmFtcz86IE9iamVjdDsgLy/mn6Xor6Llm7rlrprlj4LmlbBcclxuICAgIGRlbGV0ZVBhcmFtcz86IE9iamVjdDsgLy/liKDpmaTlm7rlrprlj4LmlbBcclxuICB9O1xyXG4gIHJlcXVlc3RVcmxzPzoge1xyXG4gICAgYWRkVXJsPzogc3RyaW5nOyAvL+aWsOWinnVybFxyXG4gICAgZWRpdG9yVXJsPzogc3RyaW5nOyAvL+e8lui+kXVybFxyXG4gICAgZGVsZXRlVXJsPzogc3RyaW5nOyAvL+WIoOmZpHVybFxyXG4gIH07XHJcbiAgZnVuY3M/OiBhbnk7XHJcbiAgcmVxdWVzdENvbmZpZz86IGFueTtcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmNsYXNzIEJhc2VQYWdlIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxOU0NCYXNlQmFnZVByb3BzLCBhbnk+IHtcclxuICB0YWJsZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgdHJlZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgc2VhcmNoUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBlZGl0b3JSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHBhZ2VSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHBhZ2VDb250ZW50UmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBkYXRlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIHRhYmxlV3JhcHBlclJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcclxuICBzdGF0aWMgY29udmVydENvbHVtbnMgPSBjb252ZXJ0Q29sdW1ucztcclxuICBjb25zdHJ1Y3Rvcihwcm9wczogYW55KSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQgeyBzdG9yZVByZWZpeCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdHlwZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwiZm9ybVR5cGVcIiA6IFwiZm9ybVR5cGVcIlxyXG4gICAgKTtcclxuICAgIHR5cGUgPSB0eXBlPy5jb250ZW50O1xyXG4gICAgbGV0IHNpemUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcInRhYmxlU2l6ZVwiIDogXCJ0YWJsZVNpemVcIlxyXG4gICAgKTtcclxuICAgIHNpemUgPSBzaXplPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIHRyZWVTZWxlY3RlZEtleTogXCJcIixcclxuICAgICAgZXhwYW5kOiBmYWxzZSxcclxuICAgICAgZm9ybVR5cGU6IHR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICB0YWJsZVNpemU6IHNpemUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICBlbGVtZW50SGVpZ2h0OiAwLFxyXG4gICAgICBwZXJtaXNzaW9uQnV0dG9uczogW10sXHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7fSxcclxuICAgICAgdGFibGVIZWFkZXJIZWlnaHQ6IDAsIC8vIOa3u+WKoOihqOWktOmrmOW6puWIsHN0YXRlXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IGluaXREYXRhLCBwZXJtaXNzb24gPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSB0aGlzLnBhZ2VDb250ZW50UmVmLmN1cnJlbnQ/LmNsaWVudEhlaWdodDtcclxuXHJcbiAgICAvLyDmt7vliqDnqpflj6NyZXNpemXnm5HlkKxcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMudGhyb3R0bGVDYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCk7XHJcblxyXG4gICAgLy8g5Yid5aeL6K6h566X6KGo5aS06auY5bqmXHJcbiAgICBzZXRUaW1lb3V0KHRoaXMuY2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQsIDApO1xyXG5cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBlbGVtZW50SGVpZ2h0LFxyXG4gICAgfSk7XHJcbiAgICBpbml0RGF0YSAmJiBpbml0RGF0YSgpO1xyXG4gIH1cclxuICBjb21wb25lbnREaWRVcGRhdGUoKSB7XHJcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmNsaWVudEhlaWdodDtcclxuICAgIGlmIChlbGVtZW50SGVpZ2h0ID4gdGhpcy5zdGF0ZS5lbGVtZW50SGVpZ2h0KSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGVsZW1lbnRIZWlnaHQsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgIC8vIOenu+mZpHJlc2l6ZeebkeWQrFxyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXHJcbiAgICAgIFwicmVzaXplXCIsXHJcbiAgICAgIHRoaXMudGhyb3R0bGVDYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodFxyXG4gICAgKTtcclxuICB9XHJcbiAgc2V0U2VhcmNoUGFyYW1zKHBhcmFtcywgY2FsbEJhY2spIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnNldFNlYXJjaFBhcmFtcyhwYXJhbXMpO1xyXG4gICAgY2FsbEJhY2sgJiYgY2FsbEJhY2socGFyYW1zKTtcclxuICB9XHJcbiAgZG9TdWJtaXQoZGF0YSwgbGFiZWwgPSBcIue8lui+kVwiKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5kb1N1Ym1pdChkYXRhLCBsYWJlbCk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdCA9IChjaGVja2VkVHJlZUtleXM6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgeyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHZhbHVlID0geyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCwgZGVwdElkOiBjaGVja2VkVHJlZUtleXNbMF0gfTtcclxuICAgIGlmICh0aGlzLnByb3BzLm9uU2VhcmNoKSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25TZWFyY2godmFsdWUpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy50YWJsZUxvYWQodmFsdWUpO1xyXG4gIH07XHJcblxyXG4gIC8v5pi+56S66KGo5Y2VXHJcbiAgc2hvd0Zvcm0odmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiLCBjYWxsQmFjaz86IGFueSkge1xyXG4gICAgbGV0IG5ld1ZhbHVlID0gdmFsdWUgPyB7IC4uLnZhbHVlIH0gOiBudWxsO1xyXG4gICAgdGhpcy5lZGl0b3JSZWY/LmN1cnJlbnQ/LnNob3cobmV3VmFsdWUsIGVkaXRvcmZsYWcsIGNhbGxCYWNrKTtcclxuICB9XHJcblxyXG4gIC8v5YWz6Zet6KGo5Y2VXHJcbiAgaGlkZUZvcm0oKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRMb2FkaW5nKGxvYWRpbmcpO1xyXG4gIH1cclxuXHJcbiAgc2V0RWRpdEZvcm1WYWx1ZXModmFsdWUsIHR5cGUgPSBcIue8lui+kVwiKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRGb3JtVmFsdWUodmFsdWUsIHR5cGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdEZvcm1WYWx1ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZ2V0Rm9ybVZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICAvL+aJuemHj+WIoOmZpFxyXG4gIG9uRGVsZXRlKGRhdGE/OiBhbnkpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgZGVsZXRlVXJsLFxyXG4gICAgICBvbkRlbGV0ZSxcclxuICAgICAgZGVsZXRlUGFyYW1zID0ge30sXHJcbiAgICAgIGRlbGV0ZVBvc2l0aW9uID0gXCJ0b29sYmFyXCIsXHJcbiAgICAgIGJ1dHRvbkNsaWNrID0ge30sXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgcmVxdWVzdFVybHMgPSB7fSxcclxuICAgICAgcmVxdWVzdENvbmZpZyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dLZXlzID0gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICAgIGNvbnN0IHNlbGVjdGVkUm93RGF0YXMgPSB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93RGF0YXMoKTtcclxuICAgIGxldCB1cmwgPSByZXF1ZXN0VXJscy5kZWxldGVVcmwgPyByZXF1ZXN0VXJscy5kZWxldGVVcmwgOiBkZWxldGVVcmw7XHJcbiAgICBsZXQgcGFyYW1zOiBhbnkgPSByZXF1ZXN0UGFyYW1zLmRlbGV0ZVBhcmFtc1xyXG4gICAgICA/IHJlcXVlc3RQYXJhbXMuZGVsZXRlUGFyYW1zXHJcbiAgICAgIDogZGVsZXRlUGFyYW1zO1xyXG4gICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgIGlmIChzZWxlY3RlZFJvd0tleXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICBtZXNzYWdlLndhcm5pbmcoXCLor7fpgInmi6nopoHliKDpmaTnmoTmlbDmja7vvIFcIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBNb2RhbC5jb25maXJtKHtcclxuICAgICAgY29udGVudDogXCLmmK/lkKbnoa7orqTliKDpmaTmiYDpgInpobnvvJ9cIixcclxuICAgICAgLy8gY2VudGVyZWQ6dHJ1ZSxcclxuICAgICAgb25PazogKCkgPT4ge1xyXG4gICAgICAgIGlmIChidXR0b25DbGljay5vbkRlbGV0ZSkge1xyXG4gICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgIGJ1dHRvbkNsaWNrLm9uRGVsZXRlLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgIHJlY29yZDogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0RhdGFzIDogZGF0YSxcclxuICAgICAgICAgICAgICBpZHM6IGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzIDogZGF0YT8uaWQsXHJcbiAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvbkRlbGV0ZSkge1xyXG4gICAgICAgICAgb25EZWxldGUgJiZcclxuICAgICAgICAgICAgb25EZWxldGUoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMgOiBkYXRhKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF1cmwpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOS4jeiDveS4uuepuu+8gVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgeyBkYXRhOiBkYXRhUGFyYW1zID0ge30sIC4uLm90aGVyUGFyYW1zIH0gPSBwYXJhbXM7XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFBhcmFtcyA9IHtcclxuICAgICAgICAgIG1ldGhvZDogXCJwb3N0XCIsXHJcbiAgICAgICAgICBhdXRvUHJlZml4OiB0cnVlLFxyXG4gICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgIGlkczogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMuam9pbigpIDogZGF0YS5pZCxcclxuICAgICAgICAgICAgLi4uZGF0YVBhcmFtcyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgbGV0IGZpbmFsUGFyYW1zID0ge30gYXMgYW55O1xyXG4gICAgICAgIGZpbmFsUGFyYW1zID0geyAuLi5kZWZhdWx0UGFyYW1zLCAuLi5vdGhlclBhcmFtcyB9O1xyXG4gICAgICAgIHJlcXVlc3QodXJsLCB7XHJcbiAgICAgICAgICAuLi5maW5hbFBhcmFtcyxcclxuICAgICAgICB9KVxyXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY29kZSB9ID0gcmVzO1xyXG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKFwi5Yig6Zmk5oiQ5Yqf77yBXCIpO1xyXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IF90aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25EZWxldGVDYWxsQmFjayxcclxuICAgICAgICAgICAgICAgICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICBfdGhpcy50YWJsZUxvYWQodmFsdWUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLliKDpmaTlpLHotKXvvIFcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnJvcik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICB0YWJsZUxvYWQocGFyYW1zOiBhbnksIHJlcXVlc3RDb25maWcgPSB7fSkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICByZXF1ZXN0Q29uZmlnOiBkZWZhdWx0UmVxdWVzdENvbmZpZyA9IHt9LFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBzdG9yZTogdGFibGVTdG9yZSB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gdGhpcy5jb252ZXJ0UXVlcnlQYXJhbXMoKTtcclxuICAgIGxldCBkYXRhID0gcXVlcnlQYXJhbXMuZGF0YSB8fCBxdWVyeVBhcmFtcy5wYXJhbXMgfHwge307XHJcbiAgICBsZXQgZmluYWxQYXJhbXMgPSB7XHJcbiAgICAgIC4uLmRhdGEsXHJcbiAgICAgIC4uLnRhYmxlU3RvcmUucmVxdWVzdENvbmZpZz8ucGFyYW1zLFxyXG4gICAgICAuLi5wYXJhbXMsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyByZXF1ZXN0Q29uaWc6IHN0b3JlQ29uZmlnID0ge30gfSA9IHRhYmxlU3RvcmU7XHJcbiAgICBjb25zdCB7IHBhcmFtczogc3RvcmVQYXJhbXMgPSB7fSwgLi4ub3RoZXJTdG9yZUNvbmZpZyB9ID0gc3RvcmVDb25maWc7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlLmxvYWQoe1xyXG4gICAgICAuLi5kZWZhdWx0UmVxdWVzdENvbmZpZyxcclxuICAgICAgLi4ub3RoZXJTdG9yZUNvbmZpZyxcclxuICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgcGFyYW1zOiB7IC4uLnN0b3JlUGFyYW1zLCAuLi5maW5hbFBhcmFtcyB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8v5p+l6K+iXHJcbiAgb25TZWFyY2gocGFyYW1zKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIG9uU2VhcmNoLFxyXG4gICAgICBvbkNhbGxCYWNrcyxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgc3RvcmU6IHRhYmxlU3RvcmUgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHRoaXMuY29udmVydFF1ZXJ5UGFyYW1zKCk7XHJcbiAgICBsZXQgZGF0YSA9IHF1ZXJ5UGFyYW1zLmRhdGEgfHwgcXVlcnlQYXJhbXMucGFyYW1zIHx8IHt9O1xyXG4gICAgbGV0IGZpbmFsUGFyYW1zID0ge1xyXG4gICAgICAuLi5kYXRhLFxyXG4gICAgICAuLi50YWJsZVN0b3JlLnJlcXVlc3RDb25maWc/LnBhcmFtcyxcclxuICAgICAgLi4ucGFyYW1zLFxyXG4gICAgfTtcclxuICAgIGlmIChvblNlYXJjaCkge1xyXG4gICAgICBvblNlYXJjaCh7IC4uLmZpbmFsUGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50YWJsZUxvYWQoeyAuLi5maW5hbFBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICBvbkNhbGxCYWNrcz8ub25RdWVyeUNhbGxCYWNrICYmXHJcbiAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uUXVlcnlDYWxsQmFjayxcclxuICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiwgcGFyYW1zOiBwYXJhbXMgfSxcclxuICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8v6KGo5qC86YeN5paw5Yqg6L29XHJcbiAgdGFibGVSZWxvYWQocGFyYW1zID0ge30sIGF1dG9Mb2FkID0gdHJ1ZSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgY2FsbGJhY2s6IChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBhdXRvTG9hZCAmJlxyXG4gICAgICAgICAgcmVzPy5kYXRhPy5yZWNvcmRzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50UGFnZSAhPT0gMVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgICAgICAgcGFyYW1zOiB7IGN1cnJlbnQ6IDEsIC4uLnBhcmFtcyB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRyZWVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIGNvbnN0IHsgcmVxdWVzdENvbmZpZzogZGVmYXVsdFJlcXVlc3RDb25maWcgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZS5sb2FkKHtcclxuICAgICAgLi4uZGVmYXVsdFJlcXVlc3RDb25maWcsXHJcbiAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgIHBhcmFtczogcGFyYW1zLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0RhdGFzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dEYXRhcygpO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0tleXMoZGF0YTogQXJyYXk8U3RyaW5nIHwgTnVtYmVyPikge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uc2V0U2VsZWN0ZWRSb3dLZXlzKGRhdGEpO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGE6IEFycmF5PE9iamVjdD4pIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnNldFNlbGVjdGVkUm93RGF0YXMoZGF0YSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8ucmVzZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcblxyXG4gIGdldFNlYXJjaFZhbHVlcygpIHtcclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgIHJldHVybiB7IC4uLmZyb21WYWx1ZSwgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfTtcclxuICB9XHJcblxyXG4gIGdldENoaWxkcmVuRGF0YShkYXRhLCBrZXlzID0gW10pIHtcclxuICAgIGNvbnN0IHsgdGFibGVQcm9wcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHJlc0tleSA9IFtdO1xyXG4gICAgbGV0IGtleSA9IFwiXCI7XHJcbiAgICBpZiAoZGF0YS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gZGF0YS5jaGlsZE5vZGVzO1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByb3dLZXkgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICBrZXkgPSByb3dLZXkoaXRlbSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGtleSA9IGl0ZW1bcm93S2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGROb2Rlcykge1xyXG4gICAgICAgICAgdGhpcy5nZXRDaGlsZHJlbkRhdGEoaXRlbS5jaGlsZE5vZGVzLCBrZXlzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGtleV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBrZXldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc0tleTtcclxuICB9XHJcblxyXG4gIHJlbmRlclRvb2xCdXR0b25zKHRvb2xidXR0b25zOiBhbnksIHRvb2xiYXJGbGFnKSB7XHJcbiAgICBjb25zdCBmbGFnID0gdG9vbGJ1dHRvbnMubGVuZ3RoID4gNTtcclxuICAgIGNvbnN0IHsgc2hvd1NlYXJjaCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID0gaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gMykge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2soKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10b29sLWJ1dHRvbnNcIikpfVxyXG4gICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDAgfX1cclxuICAgICAgPlxyXG4gICAgICAgIHt0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgICAgaWYgKGluZGV4IDwgNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IDEyLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgICAgb3Blbj17dGhpcy5zdGF0ZS5tb3JlT3Blbn1cclxuICAgICAgICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXsob3BlbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9yZU9wZW46IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgLy8gb3Blbj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AtYm94J119XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdHlwZT1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICDmm7TlpJogPERvd25PdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogaW5kZXggPT0gdG9vbGJ1dHRvbnMubGVuZ3RoIC0gMSA/IDAgOiAxMixcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbiAgcmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnM6IGFueSwgcm93UmVjb3JkOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgYWN0aW9uUHJvcHMsIHRhYmxlUHJvcHMgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBjb25zdCBuZXdCdXR0b25zID0gW107XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGFibGVQcm9wcztcclxuXHJcbiAgICBsZXQga2V5ID0gXCJcIjtcclxuICAgIGlmICh0eXBlb2Ygcm93S2V5ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICBrZXkgPSByb3dLZXkocm93UmVjb3JkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGtleSA9IHJvd1JlY29yZFtyb3dLZXldO1xyXG4gICAgfVxyXG4gICAgbGV0IHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSB0cnVlIHx8IGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IHRydWUpXHJcbiAgICAgIHNob3dJY29uID0gdHJ1ZTtcclxuICAgIGNvbHVtbkJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHJlY29yZFNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAocmVjb3JkU2hvdykge1xyXG4gICAgICAgIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBldmVudE9wdGlvbiA9IHtcclxuICAgICAgICAgICAgICByZWNvcmQ6IHJvd1JlY29yZCxcclxuICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGNvbnN0IFV0aWxzID0geyAuLi50aGlzLnByb3BzLlVpdGxzIH07XHJcbiAgICAgICAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiZXZlbnRPcHRpb24sVXRpbHNcIiwgcmVjb3JkU2hvdyk7XHJcbiAgICAgICAgICAgIGNvbnN0IHNob3cgPSBmdW5jKGV2ZW50T3B0aW9uLCBVdGlscyk7XHJcbiAgICAgICAgICAgIHNob3cgJiYgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBsZXQgcmVjb3JkID0gcm93UmVjb3JkO1xyXG4gICAgICAgICAgICBpZiAoZXZhbChyZWNvcmRTaG93KSkge1xyXG4gICAgICAgICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICBjb25zdCBzaG93ID0gcmVjb3JkU2hvdyhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgc2hvdyAmJiBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBsZXQgbnVtYmVyID0gYWN0aW9uUHJvcHM/LmJ1dHRvbk51bWJlclxyXG4gICAgICA/IGFjdGlvblByb3BzPy5idXR0b25OdW1iZXJcclxuICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uPy5idXR0b25OdW1iZXJcclxuICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uPy5idXR0b25OdW1iZXJcclxuICAgICAgOiAzO1xyXG4gICAgbGV0IGZsYWcgPSBmYWxzZTtcclxuICAgIGlmIChudW1iZXIgPT0gXCJhbGxcIikge1xyXG4gICAgICBmbGFnID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmbGFnID0gbmV3QnV0dG9ucy5sZW5ndGggPiBudW1iZXI7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiBOdW1iZXIobnVtYmVyKSAtIDEpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRhID0geyAuLi50aGlzLnN0YXRlLnBvcG9wZW5zIH07XHJcbiAgICAgICAgICAgICAgZGF0YVtyb3dSZWNvcmQuaWRdID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBwb3BvcGVuczogZGF0YSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socm93UmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgIGlmIChpbmRleCA8IG51bWJlcikge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socm93UmVjb3JkKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGljb249e2ljb259XHJcbiAgICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSBudW1iZXIpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgIHRyaWdnZXI9e1tcImNsaWNrXCJdfVxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb3Blbj17dGhpcy5zdGF0ZS5wb3BvcGVuc1trZXldIHx8IGZhbHNlfVxyXG4gICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17KG9wZW4pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0geyAuLi50aGlzLnN0YXRlLnBvcG9wZW5zIH07XHJcbiAgICAgICAgICAgICAgICAgIGRhdGFba2V5XSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiBkYXRhLFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcCddfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpfT5cclxuICAgICAgICAgICAgICAgIDxFbGxpcHNpc091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJvd1JlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG4gIC8v5qCR54K55Ye75LqL5Lu2XHJcbiAgdHJlZVNlbGVjdChzZWxlY3RlZEtleXM6IGFueSwgb2JqOiBhbnkpIHtcclxuICAgIGxldCBrZXl3b3JkID0gXCJcIjtcclxuICAgIGNvbnN0IHtcclxuICAgICAgc2VhcmNoS2V5ID0gXCJrZXlcIixcclxuICAgICAgc2VhcmNoRmllbGQgPSBcIlwiLFxyXG4gICAgICBwYXJhbnRTZWxlY3QgPSB0cnVlLFxyXG4gICAgfSA9IHRoaXMucHJvcHMudHJlZVByb3BzO1xyXG4gICAgY29uc3QgeyB0cmVlU2VsZWN0ZWRLZXkgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkLCBzZWxlY3RlZE5vZGVzIH0gPSBvYmo7XHJcblxyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIGtleXdvcmQgPSBzZWxlY3RlZE5vZGVzWzBdLmRhdGFyZWYuYXR0cmlidXRlW3NlYXJjaEtleV07XHJcbiAgICAgIGlmIChwYXJhbnRTZWxlY3QpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoc2VsZWN0ZWROb2Rlc1swXS5pc0xlYWYgfHwgIXNlbGVjdGVkTm9kZXNbMF0uY2hpbGRyZW4pIHtcclxuICAgICAgICAgIGlmIChzZWxlY3RlZEtleXNbMF0gIT09IHRyZWVTZWxlY3RlZEtleSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHsgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHRyZWVTZWxlY3RlZEtleToga2V5d29yZCxcclxuICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHt9LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnByb3BzLm9uVHJlZVNlbGVjdCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uVHJlZVNlbGVjdChzZWxlY3RlZEtleXMsIG9iaik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKSB8fCB7fTtcclxuICAgIHNlYXJjaEZpZWxkICYmIHRoaXMudGFibGVMb2FkKHsgLi4uZnJvbVZhbHVlLCBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0pO1xyXG4gICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrICYmXHJcbiAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjayxcclxuICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiwgc2VsZWN0ZWRLZXlzOiBzZWxlY3RlZEtleXMsIG9iajogb2JqIH0sXHJcbiAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICApO1xyXG4gICAgLy8gdXRpbHMuY2FsbGJhY2sodGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrLCB0aGlzLCBbXHJcbiAgICAvLyAgIHNlbGVjdGVkS2V5cyxcclxuICAgIC8vICAgb2JqLFxyXG4gICAgLy8gXSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VhcmNoKCkge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICB9XHJcbiAgZ2V0VGV4dChwcm9wcywgdGV4dCkge1xyXG4gICAgbGV0IG5ld1RleHQgPSB0ZXh0O1xyXG4gICAgaWYgKHByb3BzPy5kYXRhICYmIHByb3BzPy5kYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBkYXRhID0gcHJvcHMuZGF0YTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhPy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChkYXRhW2ldLnZhbHVlID09IHRleHQpIHtcclxuICAgICAgICAgIG5ld1RleHQgPSBkYXRhW2ldLmxhYmVsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld1RleHQ7XHJcbiAgfVxyXG4gIHNldFRhYmxlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5zZXREYXRhKGRhdGEpO1xyXG4gIH1cclxuICBzZXRUcmVlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnRyZWVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkS2V5ID0gKHNlbGVjdGVkKSA9PiB7XHJcbiAgICBsZXQgcmVzID0gW107XHJcbiAgICBmb3IgKGxldCBrZXkgaW4gc2VsZWN0ZWQpIHtcclxuICAgICAgY29uc3Qga2V5cyA9IHNlbGVjdGVkW2tleV07XHJcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICByZXMgPSBbLi4ucmVzLCAuLi5rZXlzXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9O1xyXG5cclxuICBjb252ZXJ0UXVlcnlQYXJhbXMoKSB7XHJcbiAgICBjb25zdCB7IHJlcXVlc3RQYXJhbXMgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gcmVxdWVzdFBhcmFtcy5xdWVyeVBhcmFtcztcclxuICAgIGlmIChxdWVyeVBhcmFtcyAmJiB0eXBlb2YgcXVlcnlQYXJhbXMgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICBjb25zdCBVdGlscyA9IHRoaXMucHJvcHMuVXRpbHMgfHwge307XHJcbiAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHNcIiwgcXVlcnlQYXJhbXMpO1xyXG4gICAgICBsZXQgY29udmVyUGFyYW1zID0gZnVuYyhVdGlscyk7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zID0gY29udmVyUGFyYW1zO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcXVlcnlQYXJhbXMgPSBxdWVyeVBhcmFtcyB8fCB7fTtcclxuICAgIH1cclxuICAgIHJldHVybiBxdWVyeVBhcmFtcztcclxuICB9XHJcblxyXG4gIC8vIOiuoeeul+ihqOWktOmrmOW6pueahOaWueazlVxyXG4gIGNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0ID0gKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMudGFibGVXcmFwcGVyUmVmLmN1cnJlbnQpIHtcclxuICAgICAgY29uc3QgdGFibGVIZWFkZXIgPVxyXG4gICAgICAgIHRoaXMudGFibGVXcmFwcGVyUmVmLmN1cnJlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAgIFwiYW50LXRhYmxlLXRoZWFkXCJcclxuICAgICAgICApWzBdO1xyXG4gICAgICBpZiAodGFibGVIZWFkZXIpIHtcclxuICAgICAgICBjb25zdCBoZWFkZXJIZWlnaHQgPSB0YWJsZUhlYWRlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XHJcbiAgICAgICAgaWYgKGhlYWRlckhlaWdodCAhPT0gdGhpcy5zdGF0ZS50YWJsZUhlYWRlckhlaWdodCkge1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIHRhYmxlSGVhZGVySGVpZ2h0OiBoZWFkZXJIZWlnaHQsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG4gIHRocm90dGxlQ2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQgPSB0aHJvdHRsZShcclxuICAgIHRoaXMuY2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQsXHJcbiAgICA1MDBcclxuICApO1xyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNvbHVtbnMgPSBbXSxcclxuICAgICAgc2hvd1NlYXJjaCA9IHRydWUsXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBzdWJtaXRVcmwgPSBcIlwiLFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICAgIHRyZWVQcm9wcyA9IHt9LFxyXG4gICAgICBmb3JtUHJvcHMgPSB7fSxcclxuICAgICAgZm9ybVBhZ2VQcm9wcyA9IHt9LFxyXG4gICAgICBzaG93TGVmdCA9IGZhbHNlLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgc2hvd1Rvb2xCdXR0b24gPSB0cnVlLFxyXG4gICAgICBidXR0b25zID0gW10sXHJcbiAgICAgIGVkaXRvckZvcm0gPSB0cnVlLFxyXG4gICAgICBvblNob3dGb3JtLFxyXG4gICAgICBmb3JtQ2hhbmdlVmFsaWQgPSB0cnVlLFxyXG4gICAgICBjbGFzc05hbWUsXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9IFwiYnV0dG9tXCIsXHJcbiAgICAgIGFjdGlvblByb3BzLFxyXG4gICAgICBkZWxldGVQb3NpdGlvbiA9IFwidG9vbGJhclwiLFxyXG4gICAgICBidXR0b25DbGljayA9IHt9LFxyXG4gICAgICBwZXJtaXNzaW9uID0geyBoYXM6IGZhbHNlIH0sXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgcmVxdWVzdFVybHMgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZTogdGFibGVTdG9yZSA9IHt9LFxyXG4gICAgICBmaWx0ZXJDb2x1bW4gPSB0cnVlLFxyXG4gICAgICBhY3Rpb25Db2x1bW4gPSB0cnVlLFxyXG4gICAgICBzaG93Um93U2VsZWN0aW9uID0gdHJ1ZSxcclxuICAgICAgY29sdW1uT3JkZXIgPSB0cnVlLFxyXG4gICAgICBleHBhbmRhYmxlID0ge30sXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICAgIHRpdGxlOiB0YWJsZVRpdGxlLFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zXHJcbiAgICB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCBuZXdUYWJsZVN0b3JlID0geyAuLi50YWJsZVN0b3JlIH07XHJcbiAgICBpZiAocmVxdWVzdFBhcmFtcy5xdWVyeVBhcmFtcykge1xyXG4gICAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHRoaXMuY29udmVydFF1ZXJ5UGFyYW1zKCk7XHJcbiAgICAgIGxldCBkYXRhID0gcXVlcnlQYXJhbXM/LmRhdGEgfHwgcXVlcnlQYXJhbXM/LnBhcmFtcyB8fCB7fTtcclxuICAgICAgbmV3VGFibGVTdG9yZS5yZXF1ZXN0Q29uZmlnID0ge1xyXG4gICAgICAgIHBhcmFtczogeyAuLi5kYXRhLCAuLi5uZXdUYWJsZVN0b3JlLnJlcXVlc3RDb25maWc/LnBhcmFtcyB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZTogdHJlZVN0b3JlID0ge30sXHJcbiAgICAgIHNob3dTZWFyY2g6IHRyZWVTZWFyY2ggPSB0cnVlLFxyXG4gICAgICB0aXRsZUFsaWFzID0gXCJ0aXRsZVwiLFxyXG4gICAgICB0aXRsZTogdHJlZVRpdGxlLFxyXG4gICAgICAuLi5vdGhlcnRyZWVQYXJhbXNcclxuICAgIH0gPSB0cmVlUHJvcHM7XHJcblxyXG4gICAgbGV0IHRhYmxlUGFyYW1zID0ge1xyXG4gICAgICBmaWx0ZXJDb2x1bW4sXHJcbiAgICAgIHN0b3JlOiB7IC4uLm5ld1RhYmxlU3RvcmUgfSxcclxuICAgICAgLi4ub3RoZXJ0YWJsZVBhcmFtcyxcclxuICAgIH0gYXMgYW55O1xyXG4gICAgY29uc3QgZGVmYXVsdFZhbHVlOiBhbnkgPSB7fTtcclxuICAgIGNvbnN0IGNvbHVtbkJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBlbGVtZW50SGVpZ2h0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHBlcm1pc3Npb25CdXR0b25zID0gW107XHJcbiAgICBpZiAocGVybWlzc2lvbi5oYXMgJiYgcGVybWlzc2lvbi5tZW51Q29kZSkge1xyXG4gICAgICBwZXJtaXNzaW9uQnV0dG9ucyA9XHJcbiAgICAgICAgZ2V0QnV0dG9uUGVybWlzc29ucyhwZXJtaXNzaW9uLm1lbnVDb2RlKS5wZXJtaXNzb25zIHx8IFtdO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb2JqID0gY29udmVydENvbHVtbnMoY29sdW1ucywge30pO1xyXG4gICAgbGV0IHRhYmxlQ29sdW1uOiBhbnlbXSA9IGdldE5ld0NvbHVtbnMoY29sdW1ucywgdGhpcy5wcm9wcyk7XHJcbiAgICBjb25zdCBzZWFyY2hGb3JtcyA9IG9iai5zZWFyY2hGb3JtcyB8fCBbXTtcclxuICAgIGNvbnN0IGVkaXRvckZvcm1zID0gb2JqLmVkaXRvckZvcm1zIHx8IFtdO1xyXG4gICAgY29uc3QgdG9vbEJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgY29uc3QgYnV0dG9uTWFwID0ge1xyXG4gICAgICBlZGl0b3I6IHsgbmFtZTogXCLnvJbovpFcIiwgY29kZTogXCJlZGl0b3JcIiwgaWNvbjogPEVkaXRPdXRsaW5lZCAvPiB9LFxyXG4gICAgICBkZWxldGU6IHsgbmFtZTogXCLliKDpmaRcIiwgY29kZTogXCJkZWxldGVcIiwgaWNvbjogPERlbGV0ZU91dGxpbmVkIC8+IH0sXHJcbiAgICAgIHNlYXJjaDogeyBuYW1lOiBcIuafpeeci1wiLCBjb2RlOiBcInNlYXJjaFwiLCBpY29uOiA8RXllT3V0bGluZWQgLz4gfSxcclxuICAgIH07XHJcbiAgICBjb25zdCByZXR1cm5CdXR0b24gPSAoY29kZSwgc2hvdyA9IFwiXCIsIGRlZmF1bHRQcm9wcyA9IHt9KSA9PiB7XHJcbiAgICAgIGxldCBwcm9wcyA9IHtcclxuICAgICAgICBpY29uOiBzaG93SWNvbiA/IGJ1dHRvbk1hcFtjb2RlXS5pY29uIDogbnVsbCxcclxuICAgICAgICB0eXBlOiBcImxpbmtcIixcclxuICAgICAgICAuLi5kZWZhdWx0UHJvcHMsXHJcbiAgICAgIH0gYXMgYW55O1xyXG5cclxuICAgICAgaWYgKHNob3cpIHtcclxuICAgICAgICBwcm9wcyA9IHsgLi4ucHJvcHMsIHJlY29yZFNob3c6IHNob3cgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxCdXR0b25cclxuICAgICAgICAgIG9uQ2xpY2s9eyhyZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY29kZSA9PSBcImRlbGV0ZVwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbkRlbGV0ZShyZWNvcmQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmIChjb2RlID09IFwiZWRpdG9yXCIgJiYgYnV0dG9uQ2xpY2sub25FZGl0b3IpIHtcclxuICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBidXR0b25DbGljay5vbkVkaXRvcixcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PSBcInNlYXJjaFwiICYmIGJ1dHRvbkNsaWNrLm9uU2VhcmNoKSB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25TZWFyY2gsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCxcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIG9uU2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIGNvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgY29kZSwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNhbGxCYWNrID1cclxuICAgICAgICAgICAgICAgICAgY29kZSA9PSBcImVkaXRvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkVkaXRvckNhbGxCYWNrXHJcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblNlYXJjaENhbGxCYWNrO1xyXG4gICAgICAgICAgICAgICAgY2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCxcclxuICAgICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtidXR0b25NYXBbY29kZV0/Lm5hbWV9XHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgY2hlY2tQZXJzc2lvbiA9IChjb2RlKSA9PiB7XHJcbiAgICAgIGlmICghcGVybWlzc2lvbi5oYXMpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gcGVybWlzc2lvbkJ1dHRvbnMuaW5kZXhPZihjb2RlKSA+IC0xO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgYnV0dG9ucy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoKGl0ZW0gPT0gXCJhZGRcIiB8fCBpdGVtLmNvZGUgPT0gXCJhZGRcIikgJiYgY2hlY2tQZXJzc2lvbihcImFkZFwiKSkge1xyXG4gICAgICAgIHRvb2xCdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgeyBvblNob3dGb3JtLCBidXR0b25DbGljayA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgICAgIGlmIChidXR0b25DbGljaz8ub25BZGQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBidXR0b25DbGljay5vbkFkZCxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIG9uU2hvd0Zvcm0obnVsbCwgXCJhZGRcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0obnVsbCwgbnVsbCwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25BZGRDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkFkZENhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBpY29uPXs8UGx1c091dGxpbmVkIC8+fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDmt7vliqBcclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgKGl0ZW0gPT0gXCJkZWxldGVcIiB8fCBpdGVtLmNvZGUgPT0gXCJkZWxldGVcIikgJiZcclxuICAgICAgICBjaGVja1BlcnNzaW9uKFwiZGVsZXRlXCIpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGlmIChkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIikge1xyXG4gICAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChcclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIC8vIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25EZWxldGUuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICBpY29uPXs8RGVsZXRlT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgICAgZGFuZ2VyXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICDliKDpmaRcclxuICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICAgIHJldHVybkJ1dHRvbihpdGVtLmNvZGUgfHwgaXRlbSwgaXRlbS5yZWNvcmRTaG93LCBpdGVtLnByb3BzIHx8IHt9KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGNoZWNrUGVyc3Npb24oaXRlbS5jb2RlID8gaXRlbS5jb2RlIDogaXRlbSkpIHtcclxuICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgICAgcmV0dXJuQnV0dG9uKFxyXG4gICAgICAgICAgICAgIGl0ZW0uY29kZSA/IGl0ZW0uY29kZSA6IGl0ZW0sXHJcbiAgICAgICAgICAgICAgaXRlbS5yZWNvcmRTaG93LFxyXG4gICAgICAgICAgICAgIGl0ZW0ucHJvcHMgfHwge31cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XHJcbiAgICAgICAgICBpdGVtLm1hcCgoY2hpbGQpID0+IHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIgJiZcclxuICAgICAgICAgICAgICBjaGVja1BlcnNzaW9uKGNoaWxkPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIiB8fFxyXG4gICAgICAgICAgICAgICAgY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSAmJlxyXG4gICAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oY2hpbGQ/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIgJiZcclxuICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihpdGVtPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0b29sQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiIHx8XHJcbiAgICAgICAgICAgICAgaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpICYmXHJcbiAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oaXRlbT8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIGNvbnN0IHsgcHJvcHMgfTogYW55ID0gY2hpbGRyZW47XHJcbiAgICAgIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIgJiYgY2hlY2tQZXJzc2lvbihwcm9wcz8uY29kZSkpIHtcclxuICAgICAgICB0b29sQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAocHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIgfHxcclxuICAgICAgICAgIHByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSAmJlxyXG4gICAgICAgIGNoZWNrUGVyc3Npb24ocHJvcHM/LmNvZGUpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGFjdGlvbkNvbHVtbiAmJlxyXG4gICAgICB0YWJsZUNvbHVtbi5wdXNoKHtcclxuICAgICAgICB0aXRsZTogXCLmk43kvZxcIixcclxuICAgICAgICBkYXRhSW5kZXg6IFwiYWN0aW9uXCIsXHJcbiAgICAgICAgYWxpZ246IGFjdGlvblByb3BzPy50ZXh0QWxpZ25cclxuICAgICAgICAgID8gYWN0aW9uUHJvcHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLnRleHRBbGlnblxyXG4gICAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uLnRleHRBbGlnblxyXG4gICAgICAgICAgOiBcImxlZnRcIixcclxuICAgICAgICB3aWR0aDogYWN0aW9uUHJvcHM/LndpZHRoXHJcbiAgICAgICAgICA/IGFjdGlvblByb3BzPy53aWR0aFxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgIDogMjAwLFxyXG4gICAgICAgIGZpeGVkOiBcInJpZ2h0XCIsXHJcbiAgICAgICAgcmVuZGVyOiAodGV4dDogYW55LCByZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1hY3Rpb25cIil9PlxyXG4gICAgICAgICAgICAgIHt0aGlzLnJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zLCByZWNvcmQpfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgaWYgKGNvbHVtbk9yZGVyKVxyXG4gICAgICB0YWJsZUNvbHVtbiA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aXRsZTogXCLluo/lj7dcIixcclxuICAgICAgICAgIHdpZHRoOiA4MCxcclxuICAgICAgICAgIGFsaWduOiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgcmVuZGVyOiAodGV4dCwgcmVhY29yZCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIDw+e2luZGV4ICsgMX08Lz47XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGFibGVDb2x1bW4sXHJcbiAgICAgIF07XHJcbiAgICBsZXQgc2VhcmNoRmxhZyA9IHNob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMDtcclxuICAgIGxldCB7IHRhYmxlVG9vbCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdG9vbEZsYWcgPVxyXG4gICAgICBzaG93VG9vbEJ1dHRvbiAmJlxyXG4gICAgICB0b29sQnV0dG9ucy5sZW5ndGggPiAwICYmXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9PSBcImJ1dHRvbVwiO1xyXG4gICAgbGV0IHRvb2xiYXJGbGFnID0gIShcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyID09IGZhbHNlIHx8XHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhcj8uc2hvdyA9PSBmYWxzZSB8fFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnRvb2xzPy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICB0YWJsZVRvb2w/LnNob3cgPT0gZmFsc2VcclxuICAgICk7XHJcblxyXG4gICAgbGV0IHRvb2xIZWlnaHQgPSB0YWJsZVRpdGxlIHx8IHRvb2xGbGFnID8gNTAgOiAwO1xyXG4gICAgbGV0IHBhZGRpbmdIZWlnaHQgPSAyMCAqIDI7IC8v5LiK5LiL6Ze06LedXHJcbiAgICBsZXQgdGFibGVDb250ZW50SGVpZ2h0ID0gZWxlbWVudEhlaWdodCAtIHRvb2xIZWlnaHQgLSBwYWRkaW5nSGVpZ2h0O1xyXG4gICAgbGV0IFBhZ2luYXRpb25IZWlnaHQgPSB0YWJsZVByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlID8gMzIgKyAxNiA6IDA7IC8vMzIg5Li65YiG6aG15Zmo6auY5bqmLDE25Li6bWFyZ2lu6Ze06LedXHJcbiAgICBsZXQgdGFibGVIZWlnaHQgPSB0YWJsZUNvbnRlbnRIZWlnaHQgLSBQYWdpbmF0aW9uSGVpZ2h0O1xyXG4gICAgbGV0IHRhYmxlU3JvbGxIZWlnaHQgPVxyXG4gICAgICB0YWJsZUNvbnRlbnRIZWlnaHQgLSB0aGlzLnN0YXRlLnRhYmxlSGVhZGVySGVpZ2h0IC0gUGFnaW5hdGlvbkhlaWdodDtcclxuICAgIC8vIGlmICh0YWJsZVByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlKSB7XHJcbiAgICBjb25zdCBzY3JvbGwgPSB0YWJsZVBhcmFtcy5zY3JvbGw7XHJcbiAgICB0YWJsZVBhcmFtcyA9IHtcclxuICAgICAgLi4udGFibGVQYXJhbXMsXHJcbiAgICAgIHNjcm9sbDogeyB4OiBcIm1heC1jb250ZW50XCIsIHk6IHRhYmxlU3JvbGxIZWlnaHQsIC4uLnNjcm9sbCB9LFxyXG4gICAgfTtcclxuICAgIC8vIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2VcIiksIGNsYXNzTmFtZSl9XHJcbiAgICAgICAgcmVmPXt0aGlzLnBhZ2VSZWZ9XHJcbiAgICAgID5cclxuICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGUgJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGl0bGVcIikpfT5cclxuICAgICAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcGFuZVwiKSl9XHJcbiAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiBcImZsZXhcIiB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtzaG93TGVmdCAmJiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtbGVmdFwiKX0+XHJcbiAgICAgICAgICAgICAge3RyZWVUaXRsZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidHJlZS10aXRsZVwiKX0+e3RyZWVUaXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInRyZWUtY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwidHJlZS1jb250ZW50LW5vdGl0bGVcIildOiAhdHJlZVRpdGxlLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFRyZWVcclxuICAgICAgICAgICAgICAgICAgc3RvcmU9e3sgLi4udHJlZVN0b3JlIH19XHJcbiAgICAgICAgICAgICAgICAgIHNob3dJY29uPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgY2hlY2thYmxlPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZT17dHJlZVNlYXJjaH1cclxuICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMudHJlZVNlbGVjdC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEtleXM9e1t0aGlzLnN0YXRlLnRyZWVTZWxlY3RlZEtleV19XHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlQWxpYXM9e3RpdGxlQWxpYXN9XHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy50cmVlUmVmfVxyXG4gICAgICAgICAgICAgICAgICB7Li4ub3RoZXJ0cmVlUGFyYW1zfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcmlnaHRcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLW5vLWxlZnQtcmlnaHRcIildOiAhc2hvd0xlZnQsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWhlYWRlcnNlYXJjaFwiKX0+XHJcbiAgICAgICAgICAgICAgICA8SGVhZGVyU2VhcmNoXHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1zPXtzZWFyY2hGb3Jtc31cclxuICAgICAgICAgICAgICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uPXt0b29sQnV0dG9uUG9zaXRpb259XHJcbiAgICAgICAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIG9uUmVzZXQ9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJlc2V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUmVzZXQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlTG9hZCh7fSk7XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy5zZWFyY2hSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1Qcm9wcz17dGhpcy5wcm9wcy5zZWFyY2hGb3JtUHJvcHN9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1nYXBcIildOiAhc2VhcmNoRmxhZyxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMucGFnZUNvbnRlbnRSZWZ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7KHRhYmxlVGl0bGUgfHwgdG9vbEZsYWcpICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRpdGxlXCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10aXRsZS13aWR0aFwiKV06ICF0b29sYmFyRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+e3RhYmxlVGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIHt0b29sRmxhZyAmJiB0aGlzLnJlbmRlclRvb2xCdXR0b25zKHRvb2xCdXR0b25zLCB0b29sYmFyRmxhZyl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlXCIpLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10b3BcIildOiAhdG9vbGJhckZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRvcDJcIildOlxyXG4gICAgICAgICAgICAgICAgICAgICAgdG9vbGJhckZsYWcgJiYgIXRvb2xGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgcmVmPXt0aGlzLnRhYmxlV3JhcHBlclJlZn1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogdGFibGVDb250ZW50SGVpZ2h0IH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy50YWJsZVJlZn1cclxuICAgICAgICAgICAgICAgICAgY29sdW1ucz17dGFibGVDb2x1bW59XHJcbiAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU9e3tcclxuICAgICAgICAgICAgICAgICAgICBleHBhbmRJY29uOiAoeyBleHBhbmRlZCwgb25FeHBhbmQsIHJlY29yZCB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXM/Lmxlbmd0aCA+IDAgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RG93bk91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogcmVjb3JkLmNoaWxkTm9kZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzPy5sZW5ndGggPiAwID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0T3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZXhwYW5kLWljb25cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAuLi5leHBhbmRhYmxlLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBjb2x1bW5PcmRlcj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhwYWdpbmF0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBjdXJyZW50UGFnZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBhZ2UgIT09IHBhZ2luYXRpb24uY3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHRvb2xiYXI9e3tcclxuICAgICAgICAgICAgICAgICAgICBvblRvb2xDbGljazoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb25SZWZyZXNoOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVMb2FkKHBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4udGFibGVQcm9wcy50b29sYmFyLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBzaG93Um93U2VsZWN0aW9uPXtzaG93Um93U2VsZWN0aW9ufVxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IHRhYmxlSGVpZ2h0IH19XHJcbiAgICAgICAgICAgICAgICAgIHsuLi50YWJsZVBhcmFtc31cclxuICAgICAgICAgICAgICAgICAgLy8gcGFnaW5hdGlvbj17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgey8qIDxkaXY+PC9kaXY+ICovfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAge2VkaXRvckZvcm0gJiYgKFxyXG4gICAgICAgICAgICA8RWRpdG9yRm9ybVxyXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5lZGl0b3JSZWZ9XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TdW1iaXRDYWxsQmFjayxcclxuICAgICAgICAgICAgICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudGFibGVSZWxvYWQoKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGZvcm1zPXtlZGl0b3JGb3Jtc31cclxuICAgICAgICAgICAgICBzdWJtaXRVcmw9e3N1Ym1pdFVybH1cclxuICAgICAgICAgICAgICBzdWJtaXRQYXJhbXM9e3N1Ym1pdFBhcmFtc31cclxuICAgICAgICAgICAgICBvblN1Ym1pdD17dGhpcy5wcm9wcy5vblN1Ym1pdH1cclxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e2RlZmF1bHRWYWx1ZX1cclxuICAgICAgICAgICAgICBvbkhpZGVGb3JtPXt0aGlzLnByb3BzLm9uSGlkZUZvcm19XHJcbiAgICAgICAgICAgICAgb25Gb3JtQ2hhbmdlPXt0aGlzLnByb3BzLm9uRm9ybUNoYW5nZX1cclxuICAgICAgICAgICAgICBmb3JtVHlwZT17dGhpcy5wcm9wcy5mb3JtVHlwZSB8fCBcImF1dG9cIn1cclxuICAgICAgICAgICAgICBjaGFuZ2VWYWxpZD17Zm9ybUNoYW5nZVZhbGlkfVxyXG4gICAgICAgICAgICAgIFV0aWxzPXt0aGlzLnByb3BzLlV0aWxzfVxyXG4gICAgICAgICAgICAgIHJlcXVlc3RPYmplY3Q9e3tcclxuICAgICAgICAgICAgICAgIGFkZFVybDogcmVxdWVzdFVybHMuYWRkVXJsLFxyXG4gICAgICAgICAgICAgICAgZWRpdG9yVXJsOiByZXF1ZXN0VXJscy5lZGl0b3JVcmwsXHJcbiAgICAgICAgICAgICAgICBhZGRQYXJhbXM6IHJlcXVlc3RQYXJhbXMuYWRkUGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgZWRpdG9yUGFyYW1zOiByZXF1ZXN0UGFyYW1zLmVkaXRvclBhcmFtcyxcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGZ1bmNzPXt0aGlzLnByb3BzLmZ1bmNzfVxyXG4gICAgICAgICAgICAgIHsuLi5mb3JtUHJvcHN9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IEJhc2VQYWdlO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBbUIsT0FBTztBQUN2RCxPQUFPQyxLQUFLLE1BQU0sa0JBQWtCO0FBQ3BDLE9BQU9DLElBQUksTUFBTSxpQkFBaUI7QUFDbEMsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPQyxLQUFLLE1BQU0sa0JBQWtCO0FBQ3BDLE9BQU9DLE9BQU8sTUFBTSxvQkFBb0I7QUFDeEMsT0FBT0MsT0FBTyxNQUFNLG9CQUFvQjtBQUN4QyxPQUFPQyxVQUFVLE1BQXlCLG1CQUFtQjtBQUM3RCxPQUFPQyxHQUFHLE1BQU0sWUFBWTtBQUM1QixPQUFPLHFCQUFxQjtBQUc1QixTQUNFQyxZQUFZLEVBQ1pDLFdBQVcsRUFDWEMsWUFBWSxFQUNaQyxhQUFhLEVBQ2JDLFlBQVksRUFDWkMsZ0JBQWdCLEVBQ2hCQyxjQUFjLFFBQ1QsbUJBQW1CO0FBQzFCLFNBQVNDLGNBQWMsRUFBRUMsT0FBTyxRQUFrQyxhQUFhO0FBQy9FLE9BQU9DLE9BQU8sTUFBTSxhQUFhO0FBQ2pDLE9BQU9DLE1BQU0sTUFB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
1183
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsIkRvd25PdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiRWRpdE91dGxpbmVkIiwiUmlnaHRPdXRsaW5lZCIsIlBsdXNPdXRsaW5lZCIsIkVsbGlwc2lzT3V0bGluZWQiLCJEZWxldGVPdXRsaW5lZCIsImNvbnZlckZ1bmN0aW9uIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiZ2V0QnV0dG9uUGVybWlzc29ucyIsIkhlYWRlclNlYXJjaCIsImNvbnZlcnRDb2x1bW5zIiwiZ2V0TmV3Q29sdW1ucyIsInRocm90dGxlIiwic3R5bGVzIiwiQmFzZVBhZ2UiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX3R5cGUiLCJfc2l6ZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJzdGF0ZSIsInZhbHVlIiwiZGVwdElkIiwib25TZWFyY2giLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJ0YWJsZVdyYXBwZXJSZWYiLCJjdXJyZW50IiwidGFibGVIZWFkZXIiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiaGVhZGVySGVpZ2h0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaGVpZ2h0IiwidGFibGVIZWFkZXJIZWlnaHQiLCJzZXRTdGF0ZSIsImNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0Iiwic3RvcmVQcmVmaXgiLCJ0eXBlIiwiY29udGVudCIsInNpemUiLCJzZWxlY3RlZFJvd0tleXMiLCJzZWxlY3RlZFJvd0RhdGFzIiwidHJlZVNlbGVjdGVkS2V5IiwiZXhwYW5kIiwiZm9ybVR5cGUiLCJ0YWJsZVNpemUiLCJ0cmVlU2VhcmNoUHJhbXMiLCJwb3BvcGVucyIsIm1vcmVPcGVuIiwiZWxlbWVudEhlaWdodCIsInBlcm1pc3Npb25CdXR0b25zIiwicXVlcnlQYXJhbXMiLCJjb21wb25lbnREaWRNb3VudCIsIl90aGlzJHBhZ2VDb250ZW50UmVmJCIsImluaXREYXRhIiwicGVybWlzc29uIiwicGFnZUNvbnRlbnRSZWYiLCJjbGllbnRIZWlnaHQiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwidGhyb3R0bGVDYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCIsInNldFRpbWVvdXQiLCJjb21wb25lbnREaWRVcGRhdGUiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQiLCJwYWdlUmVmIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2V0U2VhcmNoUGFyYW1zIiwicGFyYW1zIiwiY2FsbEJhY2siLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUiLCJzZWFyY2hSZWYiLCJkb1N1Ym1pdCIsImRhdGEiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUiLCJsYWJlbCIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImVkaXRvclJlZiIsInNob3dGb3JtIiwiX3RoaXMkZWRpdG9yUmVmIiwiZWRpdG9yZmxhZyIsIm5ld1ZhbHVlIiwiX29iamVjdFNwcmVhZCIsInNob3ciLCJoaWRlRm9ybSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTIiLCJzZXRMb2FkaW5nIiwibG9hZGluZyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTMiLCJzZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTQiLCJzZXRGb3JtVmFsdWUiLCJnZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTUiLCJnZXRGb3JtVmFsdWUiLCJvbkRlbGV0ZSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbiIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjIiLCJkZWxldGVVcmwiLCJkZWxldGVQYXJhbXMiLCJkZWxldGVQb3NpdGlvbiIsImJ1dHRvbkNsaWNrIiwicmVxdWVzdFBhcmFtcyIsInJlcXVlc3RVcmxzIiwicmVxdWVzdENvbmZpZyIsIl90aGlzIiwidGFibGVSZWYiLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJnZXRTZWxlY3RlZFJvd0RhdGFzIiwidXJsIiwid2FybmluZyIsImNvbmZpcm0iLCJvbk9rIiwicmVjb3JkIiwiaWRzIiwiaWQiLCJmdW5jcyIsIlV0aWxzIiwiRXJyb3IiLCJkYXRhUGFyYW1zIiwib3RoZXJQYXJhbXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJkZWZhdWx0UGFyYW1zIiwibWV0aG9kIiwiYXV0b1ByZWZpeCIsImpvaW4iLCJmaW5hbFBhcmFtcyIsInRoZW4iLCJjb2RlIiwiX3RoaXMkc2VhcmNoUmVmIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMiIsInN1Y2Nlc3MiLCJnZXRTZWFyY2hWYWx1ZXMiLCJvbkNhbGxCYWNrcyIsIm9uRGVsZXRlQ2FsbEJhY2siLCJ0YWJsZUxvYWQiLCJlcnJvciIsImNhdGNoIiwiY29uc29sZSIsImxvZyIsIl90YWJsZVN0b3JlJHJlcXVlc3RDbyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjMiLCJkZWZhdWx0UmVxdWVzdENvbmZpZyIsInRhYmxlUHJvcHMiLCJzdG9yZSIsInRhYmxlU3RvcmUiLCJjb252ZXJ0UXVlcnlQYXJhbXMiLCJyZXF1ZXN0Q29uaWciLCJzdG9yZUNvbmZpZyIsInN0b3JlUGFyYW1zIiwib3RoZXJTdG9yZUNvbmZpZyIsIl9leGNsdWRlZDIiLCJsb2FkIiwiX3RhYmxlU3RvcmUkcmVxdWVzdENvMiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzMiLCJvblF1ZXJ5Q2FsbEJhY2siLCJ0YWJsZVJlbG9hZCIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjQiLCJhdXRvTG9hZCIsInJlbG9hZCIsImNhbGxiYWNrIiwiX3JlcyRkYXRhIiwicmVjb3JkcyIsImN1cnJlbnRQYWdlIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNSIsInRyZWVMb2FkIiwiX3RoaXMkdHJlZVJlZiRjdXJyZW50IiwidHJlZVJlZiIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjYiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW43Iiwic2V0U2VsZWN0ZWRSb3dLZXlzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuOCIsInNldFNlbGVjdGVkUm93RGF0YXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW45IiwicmVzZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4xMCIsIl90aGlzJHNlYXJjaFJlZjIiLCJmcm9tVmFsdWUiLCJnZXRDaGlsZHJlbkRhdGEiLCJyb3dLZXkiLCJyZXNLZXkiLCJjaGlsZE5vZGVzIiwiY2hpbGRyZW4iLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJyZW5kZXJUb29sQnV0dG9ucyIsInRvb2xidXR0b25zIiwidG9vbGJhckZsYWciLCJmbGFnIiwic2hvd1NlYXJjaCIsIl9pdGVtJHByb3BzIiwicGFnZVR5cGUiLCJvbkNsaWNrIiwiaWNvbiIsIl9leGNsdWRlZDMiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiX2V4dGVuZHMiLCJzdHlsZSIsIm1hcmdpbkxlZnQiLCJtYXJnaW5SaWdodCIsInRpdGxlIiwicGxhY2VtZW50Iiwib3BlbiIsIm9uT3BlbkNoYW5nZSIsInJlbmRlckNsb3VtbkJ1dHRvbiIsImNvbHVtbkJ1dHRvbnMiLCJyb3dSZWNvcmQiLCJhY3Rpb25Qcm9wcyIsImJhc2VBY3Rpb25Db2x1bW4iLCJuZXdCdXR0b25zIiwic2hvd0ljb24iLCJfaXRlbSRwcm9wczIiLCJyZWNvcmRTaG93IiwiX2V4Y2x1ZGVkNCIsImV2ZW50T3B0aW9uIiwiVWl0bHMiLCJmdW5jIiwiRnVuY3Rpb24iLCJwdXNoIiwiZSIsImV2YWwiLCJudW1iZXIiLCJidXR0b25OdW1iZXIiLCJfaXRlbSRwcm9wczMiLCJfZXhjbHVkZWQ1IiwiTnVtYmVyIiwiX2l0ZW0kcHJvcHM0IiwiX2V4Y2x1ZGVkNiIsInRyaWdnZXIiLCJ0cmVlU2VsZWN0Iiwic2VsZWN0ZWRLZXlzIiwib2JqIiwiX3RoaXMkc2VhcmNoUmVmMyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzQiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM1Iiwia2V5d29yZCIsInNlYXJjaEtleSIsInNlYXJjaEZpZWxkIiwicGFyYW50U2VsZWN0IiwidHJlZVByb3BzIiwic2VsZWN0ZWROb2RlcyIsImRhdGFyZWYiLCJhdHRyaWJ1dGUiLCJpc0xlYWYiLCJvblRyZWVTZWxlY3QiLCJ0cmVlU2VsZWN0Q2FsbEJhY2siLCJyZXNldFNlYXJjaCIsIl90aGlzJHNlYXJjaFJlZiRjdXJyZTIiLCJyZXNldEZpZWxkcyIsImdldFRleHQiLCJ0ZXh0IiwiX3Byb3BzJGRhdGEiLCJuZXdUZXh0IiwiaSIsInNldFRhYmxlRGF0YSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjExIiwic2V0RGF0YSIsInNldFRyZWVEYXRhIiwiX3RoaXMkdHJlZVJlZiRjdXJyZW50MiIsImNvbnZlclBhcmFtcyIsInJlbmRlciIsIl90aGlzMiIsIl90YWJsZVByb3BzJHRvb2xiYXIiLCJfdGFibGVQcm9wcyR0b29sYmFyMiIsImNvbHVtbnMiLCJzdWJtaXRVcmwiLCJmb3JtUHJvcHMiLCJmb3JtUGFnZVByb3BzIiwic2hvd0xlZnQiLCJzdWJtaXRQYXJhbXMiLCJzaG93VG9vbEJ1dHRvbiIsImJ1dHRvbnMiLCJlZGl0b3JGb3JtIiwib25TaG93Rm9ybSIsImZvcm1DaGFuZ2VWYWxpZCIsInRvb2xCdXR0b25Qb3NpdGlvbiIsInBlcm1pc3Npb24iLCJoYXMiLCJmaWx0ZXJDb2x1bW4iLCJhY3Rpb25Db2x1bW4iLCJzaG93Um93U2VsZWN0aW9uIiwiY29sdW1uT3JkZXIiLCJleHBhbmRhYmxlIiwidGFibGVUaXRsZSIsIm90aGVydGFibGVQYXJhbXMiLCJfZXhjbHVkZWQ3IiwibmV3VGFibGVTdG9yZSIsIl9uZXdUYWJsZVN0b3JlJHJlcXVlcyIsInRyZWVTdG9yZSIsInRyZWVTZWFyY2giLCJ0aXRsZUFsaWFzIiwidHJlZVRpdGxlIiwib3RoZXJ0cmVlUGFyYW1zIiwiX2V4Y2x1ZGVkOCIsInRhYmxlUGFyYW1zIiwiZGVmYXVsdFZhbHVlIiwibWVudUNvZGUiLCJwZXJtaXNzb25zIiwidGFibGVDb2x1bW4iLCJzZWFyY2hGb3JtcyIsImVkaXRvckZvcm1zIiwidG9vbEJ1dHRvbnMiLCJidXR0b25NYXAiLCJlZGl0b3IiLCJkZWxldGUiLCJzZWFyY2giLCJyZXR1cm5CdXR0b24iLCJfYnV0dG9uTWFwJGNvZGUiLCJkZWZhdWx0UHJvcHMiLCJvbkVkaXRvciIsIl90aGlzMiRwcm9wcyRvbkNhbGxCYSIsIl90aGlzMiRwcm9wcyRvbkNhbGxCYTIiLCJvbkVkaXRvckNhbGxCYWNrIiwib25TZWFyY2hDYWxsQmFjayIsImNoZWNrUGVyc3Npb24iLCJpbmRleE9mIiwib25BZGQiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM2IiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNyIsIm9uQWRkQ2FsbEJhY2siLCJiaW5kIiwiZGFuZ2VyIiwiQXJyYXkiLCJpc0FycmF5IiwiY2hpbGQiLCJfY2hpbGQkcHJvcHMiLCJfY2hpbGQkcHJvcHMyIiwiX2NoaWxkJHByb3BzMyIsIl9jaGlsZCRwcm9wczQiLCJfY2hpbGQkcHJvcHM1IiwiX2l0ZW0kcHJvcHM1IiwiX2l0ZW0kcHJvcHM2IiwiX2l0ZW0kcHJvcHM3IiwiX2l0ZW0kcHJvcHM4IiwiX2l0ZW0kcHJvcHM5IiwiZGF0YUluZGV4IiwiYWxpZ24iLCJ0ZXh0QWxpZ24iLCJ3aWR0aCIsImZpeGVkIiwicmVhY29yZCIsIkZyYWdtZW50Iiwic2VhcmNoRmxhZyIsInRhYmxlVG9vbCIsInRvb2xGbGFnIiwidG9vbGJhciIsInRvb2xzIiwidG9vbEhlaWdodCIsInBhZGRpbmdIZWlnaHQiLCJ0YWJsZUNvbnRlbnRIZWlnaHQiLCJQYWdpbmF0aW9uSGVpZ2h0IiwicGFnaW5hdGlvbiIsInRhYmxlSGVpZ2h0IiwidGFibGVTcm9sbEhlaWdodCIsInNjcm9sbCIsIngiLCJ5IiwicmVmIiwicGFnZVRpdGxlIiwiZGlzcGxheSIsImNoZWNrYWJsZSIsInNlYXJjaGFibGUiLCJvblNlbGVjdCIsIm9uUmVzZXQiLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUzIiwic2VhcmNoRm9ybVByb3BzIiwiZXhwYW5kSWNvbiIsIl9yZWYiLCJfcmVjb3JkJGNoaWxkTm9kZXMiLCJfcmVjb3JkJGNoaWxkTm9kZXMyIiwiZXhwYW5kZWQiLCJvbkV4cGFuZCIsIm9uQ2hhbmdlIiwib25Ub29sQ2xpY2siLCJvblJlZnJlc2giLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM4IiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjOSIsIm9uU3VtYml0Q2FsbEJhY2siLCJmb3JtcyIsIm9uU3VibWl0Iiwib25IaWRlRm9ybSIsIm9uRm9ybUNoYW5nZSIsImNoYW5nZVZhbGlkIiwicmVxdWVzdE9iamVjdCIsImFkZFVybCIsImVkaXRvclVybCIsImFkZFBhcmFtcyIsImVkaXRvclBhcmFtcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvQmFzZVBhZ2UvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50LCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFRhYmxlIGZyb20gXCIuLi8uLi9iYXNlL3RhYmxlXCI7XHJcbmltcG9ydCBUcmVlIGZyb20gXCIuLi8uLi9iYXNlL3RyZWVcIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi9iYXNlL21vZGFsXCI7XHJcbmltcG9ydCBQb3BvdmVyIGZyb20gXCIuLi8uLi9iYXNlL3BvcG92ZXJcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgRWRpdG9yRm9ybSwgeyBGb3JtUGFnZVByb3BzIH0gZnJvbSBcIi4uL0Zvcm1QYWdlL2luZGV4XCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIERvd25PdXRsaW5lZCxcclxuICBFeWVPdXRsaW5lZCxcclxuICBFZGl0T3V0bGluZWQsXHJcbiAgUmlnaHRPdXRsaW5lZCxcclxuICBQbHVzT3V0bGluZWQsXHJcbiAgRWxsaXBzaXNPdXRsaW5lZCxcclxuICBEZWxldGVPdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgY29udmVyRnVuY3Rpb24sIGdldExlc3MsIGdldE5vZGUsIHNpbXBsaWZ5Q29sdW1ucyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgcmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcbmltcG9ydCB7IGdldFN0b3JhZ2UsIHB4MnZ3LCBnZXRCdXR0b25QZXJtaXNzb25zIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBIZWFkZXJTZWFyY2ggZnJvbSBcIi4uL0hlYWRlclNlYXJjaFwiO1xyXG5pbXBvcnQgeyBQYWdpbmF0aW9uUHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgbnNjZmlsZSBmcm9tIFwibnNjLWZpbGVcIjtcclxuaW1wb3J0IHsgY29udmVydENvbHVtbnMsIGdldE5ld0NvbHVtbnMgfSBmcm9tIFwiLi91dGlsc1wiO1xyXG5pbXBvcnQgaXNFcXVhbCBmcm9tIFwibG9kYXNoL2lzRXF1YWxcIjtcclxuaW1wb3J0IHRocm90dGxlIGZyb20gXCJsb2Rhc2gvdGhyb3R0bGVcIjtcclxudHlwZSBCdXR0b25JdGVtID1cclxuICB8IHN0cmluZ1xyXG4gIHwge1xyXG4gICAgICBjb2RlOiBzdHJpbmc7XHJcbiAgICAgIHJlY29yZFNob3c/OiBzdHJpbmcgfCBGdW5jdGlvbjtcclxuICAgICAgcHJvcHM/OiBhbnk7XHJcbiAgICB9O1xyXG5cclxuaW50ZXJmYWNlIFRhYmxlUHJvcHMge1xyXG4gIGFjdGlvbkNvbHVtbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65pON5L2c5YiXXHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIGZpbHRlckNvbHVtbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66L+H5ruk5oyJ6ZKuXHJcbiAgc2hvd1Jvd1NlbGVjdGlvbj86IGJvb2xlYW47IC8v5piv5ZCm6KGo5qC85Yu+6YCJ5YiXXHJcbiAgcGFnaW5hdGlvbj86IGJvb2xlYW4gfCBQYWdpbmF0aW9uUHJvcHM7IC8v5piv5ZCm5pi+56S65YiG6aG1XHJcbiAgY29sdW1uT3JkZXI/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuihqOagvOW6j+WIl1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5jb25zdCBzdHlsZXMgPSBudWxsO1xyXG5pbnRlcmZhY2UgVHJlZVByb3BzIHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgc2hvd1NlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65pCc57Si5qGGXHJcbiAgc2VhcmNoS2V5Pzogc3RyaW5nOyAvL+aQnOe0onZhbHVl5a+55bqU55qEa2V5XHJcbiAgc2VhcmNoRmllbGQ/OiBzdHJpbmc7IC8v5p+l6K+i5a+55bqU55qEa2V5XHJcbiAgdGl0bGVBbGlhcz86IHN0cmluZzsgLy/moJF0aXRsZeWvueW6lOeahGtleSzpu5jorqR0aXRsZVxyXG4gIG5vZGVQb3Jwcz86IG9iamVjdDtcclxuICBwYXJhbnRTZWxlY3Q/OiBib29sZWFuO1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5pbnRlcmZhY2UgRm9ybVByb3BzIGV4dGVuZHMgRm9ybVBhZ2VQcm9wcyB7fVxyXG5cclxuaW50ZXJmYWNlIE5TQ0Jhc2VCYWdlUHJvcHMge1xyXG4gIHNob3dTZWFyY2g/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/OiBCdXR0b25JdGVtW107IC8v5oyJ6ZKu6ZuG5ZCIICBbJ2FkZCcsJ2RlbGV0ZScsJ3NlYXJjaCcsJ2VkaXRvciddXHJcbiAgb25TaG93Rm9ybT86ICh2YWx1ZT86IGFueSwgZWRpdG9yRmxhZz86IHN0cmluZykgPT4gdm9pZDsgLy/miZPlvIDooajljZXlm57osINcclxuICBvbkhpZGVGb3JtPzogKCkgPT4gdm9pZDsgLy/miZPlvIDooajljZXlm57osINcclxuICBvbkZvcm1DaGFuZ2U/OiAoY2hhbmdlZFZhbHVlcz86IGFueSwgYWxsVmFsdWVzPzogYW55KSA9PiB2b2lkOyAvL+ihqOWNlW9uQ2hhbmdl5Zue6LCDXHJcbiAgZm9ybVR5cGU/OiBcIm1vZGFsXCIgfCBcImRyYXdlclwiO1xyXG4gIGZvcm1DaGFuZ2VWYWxpZD86IGJvb2xlYW47IC8v6KGo5Y2V5qCh6aqMXHJcbiAgY2xhc3NOYW1lPzogYW55O1xyXG4gIHRvb2xCdXR0b25Qb3NpdGlvbj86IFwicmlnaHRcIiB8IFwiYnV0dG9tXCI7XHJcbiAgcGFnZVRpdGxlPzogc3RyaW5nIHwgUmVhY3ROb2RlO1xyXG4gIGZvcm1Qcm9wcz86IEZvcm1Qcm9wcztcclxuICBhY3Rpb25Qcm9wcz86IHtcclxuICAgIHRleHRBbGlnbj86IHN0cmluZztcclxuICAgIHNob3dJY29uPzogYm9vbGVhbjtcclxuICAgIHdpZHRoPzogbnVtYmVyO1xyXG4gICAgYnV0dG9uTnVtYmVyPzogbnVtYmVyIHwgXCJhbGxcIjtcclxuICB9O1xyXG4gIHNlYXJjaEZvcm1Qcm9wcz86IHsgd3JhcHBlckNvbD86IGFueTsgbGFiZWxDb2w/OiBhbnkgfTtcclxuICBvblRyZWVTZWxlY3Q/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25DYWxsQmFja3M/OiB7XHJcbiAgICB0cmVlU2VsZWN0Q2FsbEJhY2s/OiBhbnk7IC8v5qCR54K55Ye75p+l6K+i5ZCO5Zue6LCDXHJcbiAgICBvblF1ZXJ5Q2FsbEJhY2s/OiBhbnk7IC8v5p+l6K+i5Zue6LCD77yM5p+l6K+i5pWw5o2u5ZCO5Zue6LCDXHJcbiAgICBvblN1bWJpdENhbGxCYWNrPzogYW55OyAvL+S/neWtmOWbnuiwg++8jOS/neWtmOaVsOaNruaIkOWKn+WQjuWbnuiwg1xyXG4gICAgb25EZWxldGVDYWxsQmFjaz86IGFueTsgLy/liKDpmaTmjInpkq7lm57osIPvvIzliKDpmaTmlbDmja7lkI7miafooYxcclxuICAgIG9uRWRpdG9yQ2FsbEJhY2s/OiBhbnk7IC8v57yW6L6R5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgICBvbkFkZENhbGxCYWNrPzogYW55OyAvL+a3u+WKoOaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gICAgb25TZWFyY2hDYWxsQmFjaz86IGFueTsgLy/liJfooajmn6Xor6LmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICB9O1xyXG4gIHBhZ2VUeXBlPzogXCJub3JtYWxcIiB8IFwidGFic3BhZ2VcIjtcclxuICBmb3JtUGFnZVByb3BzPzoge307XHJcbiAgYnV0dG9uQ2xpY2s/OiB7XHJcbiAgICBvbkFkZD86ICgpID0+IHZvaWQ7XHJcbiAgICBvbkVkaXRvcj86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICAgIG9uU2VhcmNoPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gICAgb25EZWxldGU/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgfTtcclxuICBwZXJtaXNzaW9uPzoge1xyXG4gICAgaGFzPzogYm9vbGVhbjtcclxuICAgIG1lbnVDb2RlPzogc3RyaW5nO1xyXG4gIH07XHJcbiAgcmVxdWVzdFBhcmFtcz86IHtcclxuICAgIC8v6ZyA6KaB6aKd5aSW5Lyg55qE5Zu65a6a6K+35rGC5Y+C5pWwXHJcbiAgICBhZGRQYXJhbXM/OiBPYmplY3Q7IC8v5paw5aKe5Zu65a6a5Y+C5pWwXHJcbiAgICBlZGl0b3JQYXJhbXM/OiBPYmplY3Q7IC8v57yW6L6R5Zu65a6a5Y+C5pWwXHJcbiAgICBxdWVyeVBhcmFtcz86IE9iamVjdDsgLy/mn6Xor6Llm7rlrprlj4LmlbBcclxuICAgIGRlbGV0ZVBhcmFtcz86IE9iamVjdDsgLy/liKDpmaTlm7rlrprlj4LmlbBcclxuICB9O1xyXG4gIHJlcXVlc3RVcmxzPzoge1xyXG4gICAgYWRkVXJsPzogc3RyaW5nOyAvL+aWsOWinnVybFxyXG4gICAgZWRpdG9yVXJsPzogc3RyaW5nOyAvL+e8lui+kXVybFxyXG4gICAgZGVsZXRlVXJsPzogc3RyaW5nOyAvL+WIoOmZpHVybFxyXG4gIH07XHJcbiAgZnVuY3M/OiBhbnk7XHJcbiAgcmVxdWVzdENvbmZpZz86IGFueTtcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmNsYXNzIEJhc2VQYWdlIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxOU0NCYXNlQmFnZVByb3BzLCBhbnk+IHtcclxuICB0YWJsZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgdHJlZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgc2VhcmNoUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBlZGl0b3JSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHBhZ2VSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHBhZ2VDb250ZW50UmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBkYXRlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIHRhYmxlV3JhcHBlclJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcclxuICBzdGF0aWMgY29udmVydENvbHVtbnMgPSBjb252ZXJ0Q29sdW1ucztcclxuICBjb25zdHJ1Y3Rvcihwcm9wczogYW55KSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQgeyBzdG9yZVByZWZpeCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdHlwZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwiZm9ybVR5cGVcIiA6IFwiZm9ybVR5cGVcIlxyXG4gICAgKTtcclxuICAgIHR5cGUgPSB0eXBlPy5jb250ZW50O1xyXG4gICAgbGV0IHNpemUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcInRhYmxlU2l6ZVwiIDogXCJ0YWJsZVNpemVcIlxyXG4gICAgKTtcclxuICAgIHNpemUgPSBzaXplPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIHRyZWVTZWxlY3RlZEtleTogXCJcIixcclxuICAgICAgZXhwYW5kOiBmYWxzZSxcclxuICAgICAgZm9ybVR5cGU6IHR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICB0YWJsZVNpemU6IHNpemUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICBlbGVtZW50SGVpZ2h0OiAwLFxyXG4gICAgICBwZXJtaXNzaW9uQnV0dG9uczogW10sXHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7fSxcclxuICAgICAgdGFibGVIZWFkZXJIZWlnaHQ6IDAsIC8vIOa3u+WKoOihqOWktOmrmOW6puWIsHN0YXRlXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IGluaXREYXRhLCBwZXJtaXNzb24gPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSB0aGlzLnBhZ2VDb250ZW50UmVmLmN1cnJlbnQ/LmNsaWVudEhlaWdodDtcclxuXHJcbiAgICAvLyDmt7vliqDnqpflj6NyZXNpemXnm5HlkKxcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMudGhyb3R0bGVDYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCk7XHJcblxyXG4gICAgLy8g5Yid5aeL6K6h566X6KGo5aS06auY5bqmXHJcbiAgICBzZXRUaW1lb3V0KHRoaXMuY2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQsIDApO1xyXG5cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBlbGVtZW50SGVpZ2h0LFxyXG4gICAgfSk7XHJcbiAgICBpbml0RGF0YSAmJiBpbml0RGF0YSgpO1xyXG4gIH1cclxuICBjb21wb25lbnREaWRVcGRhdGUoKSB7XHJcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmNsaWVudEhlaWdodDtcclxuICAgIGlmIChlbGVtZW50SGVpZ2h0ID4gdGhpcy5zdGF0ZS5lbGVtZW50SGVpZ2h0KSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGVsZW1lbnRIZWlnaHQsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAvLyAgIGNvbnN0IHsgaW5pdERhdGEgfSA9IHRoaXMucHJvcHM7XHJcbiAgLy8gICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmNsaWVudEhlaWdodDtcclxuICAvLyAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gIC8vICAgICBlbGVtZW50SGVpZ2h0LFxyXG4gIC8vICAgfSk7XHJcbiAgLy8gICBpbml0RGF0YSAmJiBpbml0RGF0YSgpO1xyXG4gIC8vIH1cclxuICAvLyBjb21wb25lbnREaWRVcGRhdGUoKSB7XHJcbiAgLy8gICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmNsaWVudEhlaWdodDtcclxuICAvLyAgIGlmIChlbGVtZW50SGVpZ2h0ID4gdGhpcy5zdGF0ZS5lbGVtZW50SGVpZ2h0KSB7XHJcbiAgLy8gICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gIC8vICAgICAgIGVsZW1lbnRIZWlnaHQsXHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgIC8vIOenu+mZpHJlc2l6ZeebkeWQrFxyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXHJcbiAgICAgIFwicmVzaXplXCIsXHJcbiAgICAgIHRoaXMudGhyb3R0bGVDYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodFxyXG4gICAgKTtcclxuICB9XHJcbiAgc2V0U2VhcmNoUGFyYW1zKHBhcmFtcywgY2FsbEJhY2spIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnNldFNlYXJjaFBhcmFtcyhwYXJhbXMpO1xyXG4gICAgY2FsbEJhY2sgJiYgY2FsbEJhY2socGFyYW1zKTtcclxuICB9XHJcbiAgZG9TdWJtaXQoZGF0YSwgbGFiZWwgPSBcIue8lui+kVwiKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5kb1N1Ym1pdChkYXRhLCBsYWJlbCk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdCA9IChjaGVja2VkVHJlZUtleXM6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgeyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHZhbHVlID0geyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCwgZGVwdElkOiBjaGVja2VkVHJlZUtleXNbMF0gfTtcclxuICAgIGlmICh0aGlzLnByb3BzLm9uU2VhcmNoKSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25TZWFyY2godmFsdWUpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy50YWJsZUxvYWQodmFsdWUpO1xyXG4gIH07XHJcblxyXG4gIC8v5pi+56S66KGo5Y2VXHJcbiAgc2hvd0Zvcm0odmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiLCBjYWxsQmFjaz86IGFueSkge1xyXG4gICAgbGV0IG5ld1ZhbHVlID0gdmFsdWUgPyB7IC4uLnZhbHVlIH0gOiBudWxsO1xyXG4gICAgdGhpcy5lZGl0b3JSZWY/LmN1cnJlbnQ/LnNob3cobmV3VmFsdWUsIGVkaXRvcmZsYWcsIGNhbGxCYWNrKTtcclxuICB9XHJcblxyXG4gIC8v5YWz6Zet6KGo5Y2VXHJcbiAgaGlkZUZvcm0oKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRMb2FkaW5nKGxvYWRpbmcpO1xyXG4gIH1cclxuXHJcbiAgc2V0RWRpdEZvcm1WYWx1ZXModmFsdWUsIHR5cGUgPSBcIue8lui+kVwiKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRGb3JtVmFsdWUodmFsdWUsIHR5cGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdEZvcm1WYWx1ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZ2V0Rm9ybVZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICAvL+aJuemHj+WIoOmZpFxyXG4gIG9uRGVsZXRlKGRhdGE/OiBhbnkpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgZGVsZXRlVXJsLFxyXG4gICAgICBvbkRlbGV0ZSxcclxuICAgICAgZGVsZXRlUGFyYW1zID0ge30sXHJcbiAgICAgIGRlbGV0ZVBvc2l0aW9uID0gXCJ0b29sYmFyXCIsXHJcbiAgICAgIGJ1dHRvbkNsaWNrID0ge30sXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgcmVxdWVzdFVybHMgPSB7fSxcclxuICAgICAgcmVxdWVzdENvbmZpZyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dLZXlzID0gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICAgIGNvbnN0IHNlbGVjdGVkUm93RGF0YXMgPSB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93RGF0YXMoKTtcclxuICAgIGxldCB1cmwgPSByZXF1ZXN0VXJscy5kZWxldGVVcmwgPyByZXF1ZXN0VXJscy5kZWxldGVVcmwgOiBkZWxldGVVcmw7XHJcbiAgICBsZXQgcGFyYW1zOiBhbnkgPSByZXF1ZXN0UGFyYW1zLmRlbGV0ZVBhcmFtc1xyXG4gICAgICA/IHJlcXVlc3RQYXJhbXMuZGVsZXRlUGFyYW1zXHJcbiAgICAgIDogZGVsZXRlUGFyYW1zO1xyXG4gICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgIGlmIChzZWxlY3RlZFJvd0tleXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICBtZXNzYWdlLndhcm5pbmcoXCLor7fpgInmi6nopoHliKDpmaTnmoTmlbDmja7vvIFcIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBNb2RhbC5jb25maXJtKHtcclxuICAgICAgY29udGVudDogXCLmmK/lkKbnoa7orqTliKDpmaTmiYDpgInpobnvvJ9cIixcclxuICAgICAgLy8gY2VudGVyZWQ6dHJ1ZSxcclxuICAgICAgb25PazogKCkgPT4ge1xyXG4gICAgICAgIGlmIChidXR0b25DbGljay5vbkRlbGV0ZSkge1xyXG4gICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgIGJ1dHRvbkNsaWNrLm9uRGVsZXRlLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgIHJlY29yZDogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0RhdGFzIDogZGF0YSxcclxuICAgICAgICAgICAgICBpZHM6IGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzIDogZGF0YT8uaWQsXHJcbiAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvbkRlbGV0ZSkge1xyXG4gICAgICAgICAgb25EZWxldGUgJiZcclxuICAgICAgICAgICAgb25EZWxldGUoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMgOiBkYXRhKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF1cmwpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOS4jeiDveS4uuepuu+8gVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgeyBkYXRhOiBkYXRhUGFyYW1zID0ge30sIC4uLm90aGVyUGFyYW1zIH0gPSBwYXJhbXM7XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFBhcmFtcyA9IHtcclxuICAgICAgICAgIG1ldGhvZDogXCJwb3N0XCIsXHJcbiAgICAgICAgICBhdXRvUHJlZml4OiB0cnVlLFxyXG4gICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgIGlkczogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMuam9pbigpIDogZGF0YS5pZCxcclxuICAgICAgICAgICAgLi4uZGF0YVBhcmFtcyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgbGV0IGZpbmFsUGFyYW1zID0ge30gYXMgYW55O1xyXG4gICAgICAgIGZpbmFsUGFyYW1zID0geyAuLi5kZWZhdWx0UGFyYW1zLCAuLi5vdGhlclBhcmFtcyB9O1xyXG4gICAgICAgIHJlcXVlc3QodXJsLCB7XHJcbiAgICAgICAgICAuLi5maW5hbFBhcmFtcyxcclxuICAgICAgICB9KVxyXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY29kZSB9ID0gcmVzO1xyXG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKFwi5Yig6Zmk5oiQ5Yqf77yBXCIpO1xyXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IF90aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25EZWxldGVDYWxsQmFjayxcclxuICAgICAgICAgICAgICAgICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICBfdGhpcy50YWJsZUxvYWQodmFsdWUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLliKDpmaTlpLHotKXvvIFcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnJvcik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICB0YWJsZUxvYWQocGFyYW1zOiBhbnksIHJlcXVlc3RDb25maWcgPSB7fSkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICByZXF1ZXN0Q29uZmlnOiBkZWZhdWx0UmVxdWVzdENvbmZpZyA9IHt9LFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBzdG9yZTogdGFibGVTdG9yZSB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gdGhpcy5jb252ZXJ0UXVlcnlQYXJhbXMoKTtcclxuICAgIGxldCBkYXRhID0gcXVlcnlQYXJhbXMuZGF0YSB8fCBxdWVyeVBhcmFtcy5wYXJhbXMgfHwge307XHJcbiAgICBsZXQgZmluYWxQYXJhbXMgPSB7XHJcbiAgICAgIC4uLmRhdGEsXHJcbiAgICAgIC4uLnRhYmxlU3RvcmUucmVxdWVzdENvbmZpZz8ucGFyYW1zLFxyXG4gICAgICAuLi5wYXJhbXMsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyByZXF1ZXN0Q29uaWc6IHN0b3JlQ29uZmlnID0ge30gfSA9IHRhYmxlU3RvcmU7XHJcbiAgICBjb25zdCB7IHBhcmFtczogc3RvcmVQYXJhbXMgPSB7fSwgLi4ub3RoZXJTdG9yZUNvbmZpZyB9ID0gc3RvcmVDb25maWc7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlLmxvYWQoe1xyXG4gICAgICAuLi5kZWZhdWx0UmVxdWVzdENvbmZpZyxcclxuICAgICAgLi4ub3RoZXJTdG9yZUNvbmZpZyxcclxuICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgcGFyYW1zOiB7IC4uLnN0b3JlUGFyYW1zLCAuLi5maW5hbFBhcmFtcyB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8v5p+l6K+iXHJcbiAgb25TZWFyY2gocGFyYW1zKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIG9uU2VhcmNoLFxyXG4gICAgICBvbkNhbGxCYWNrcyxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgc3RvcmU6IHRhYmxlU3RvcmUgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHRoaXMuY29udmVydFF1ZXJ5UGFyYW1zKCk7XHJcbiAgICBsZXQgZGF0YSA9IHF1ZXJ5UGFyYW1zLmRhdGEgfHwgcXVlcnlQYXJhbXMucGFyYW1zIHx8IHt9O1xyXG4gICAgbGV0IGZpbmFsUGFyYW1zID0ge1xyXG4gICAgICAuLi5kYXRhLFxyXG4gICAgICAuLi50YWJsZVN0b3JlLnJlcXVlc3RDb25maWc/LnBhcmFtcyxcclxuICAgICAgLi4ucGFyYW1zLFxyXG4gICAgfTtcclxuICAgIGlmIChvblNlYXJjaCkge1xyXG4gICAgICBvblNlYXJjaCh7IC4uLmZpbmFsUGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50YWJsZUxvYWQoeyAuLi5maW5hbFBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICBvbkNhbGxCYWNrcz8ub25RdWVyeUNhbGxCYWNrICYmXHJcbiAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uUXVlcnlDYWxsQmFjayxcclxuICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiwgcGFyYW1zOiBwYXJhbXMgfSxcclxuICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8v6KGo5qC86YeN5paw5Yqg6L29XHJcbiAgdGFibGVSZWxvYWQocGFyYW1zID0ge30sIGF1dG9Mb2FkID0gdHJ1ZSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgY2FsbGJhY2s6IChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBhdXRvTG9hZCAmJlxyXG4gICAgICAgICAgcmVzPy5kYXRhPy5yZWNvcmRzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50UGFnZSAhPT0gMVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgICAgICAgcGFyYW1zOiB7IGN1cnJlbnQ6IDEsIC4uLnBhcmFtcyB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRyZWVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIGNvbnN0IHsgcmVxdWVzdENvbmZpZzogZGVmYXVsdFJlcXVlc3RDb25maWcgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZS5sb2FkKHtcclxuICAgICAgLi4uZGVmYXVsdFJlcXVlc3RDb25maWcsXHJcbiAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgIHBhcmFtczogcGFyYW1zLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0RhdGFzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dEYXRhcygpO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0tleXMoZGF0YTogQXJyYXk8U3RyaW5nIHwgTnVtYmVyPikge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uc2V0U2VsZWN0ZWRSb3dLZXlzKGRhdGEpO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGE6IEFycmF5PE9iamVjdD4pIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnNldFNlbGVjdGVkUm93RGF0YXMoZGF0YSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8ucmVzZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcblxyXG4gIGdldFNlYXJjaFZhbHVlcygpIHtcclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgIHJldHVybiB7IC4uLmZyb21WYWx1ZSwgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfTtcclxuICB9XHJcblxyXG4gIGdldENoaWxkcmVuRGF0YShkYXRhLCBrZXlzID0gW10pIHtcclxuICAgIGNvbnN0IHsgdGFibGVQcm9wcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHJlc0tleSA9IFtdO1xyXG4gICAgbGV0IGtleSA9IFwiXCI7XHJcbiAgICBpZiAoZGF0YS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gZGF0YS5jaGlsZE5vZGVzO1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByb3dLZXkgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICBrZXkgPSByb3dLZXkoaXRlbSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGtleSA9IGl0ZW1bcm93S2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGROb2Rlcykge1xyXG4gICAgICAgICAgdGhpcy5nZXRDaGlsZHJlbkRhdGEoaXRlbS5jaGlsZE5vZGVzLCBrZXlzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGtleV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBrZXldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc0tleTtcclxuICB9XHJcblxyXG4gIHJlbmRlclRvb2xCdXR0b25zKHRvb2xidXR0b25zOiBhbnksIHRvb2xiYXJGbGFnKSB7XHJcbiAgICBjb25zdCBmbGFnID0gdG9vbGJ1dHRvbnMubGVuZ3RoID4gNTtcclxuICAgIGNvbnN0IHsgc2hvd1NlYXJjaCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID0gaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gMykge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2soKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10b29sLWJ1dHRvbnNcIikpfVxyXG4gICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDAgfX1cclxuICAgICAgPlxyXG4gICAgICAgIHt0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgICAgaWYgKGluZGV4IDwgNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IDEyLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgICAgb3Blbj17dGhpcy5zdGF0ZS5tb3JlT3Blbn1cclxuICAgICAgICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXsob3BlbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9yZU9wZW46IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgLy8gb3Blbj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AtYm94J119XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdHlwZT1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICDmm7TlpJogPERvd25PdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogaW5kZXggPT0gdG9vbGJ1dHRvbnMubGVuZ3RoIC0gMSA/IDAgOiAxMixcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbiAgcmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnM6IGFueSwgcm93UmVjb3JkOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgYWN0aW9uUHJvcHMsIHRhYmxlUHJvcHMgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBjb25zdCBuZXdCdXR0b25zID0gW107XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGFibGVQcm9wcztcclxuXHJcbiAgICBsZXQga2V5ID0gXCJcIjtcclxuICAgIGlmICh0eXBlb2Ygcm93S2V5ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICBrZXkgPSByb3dLZXkocm93UmVjb3JkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGtleSA9IHJvd1JlY29yZFtyb3dLZXldO1xyXG4gICAgfVxyXG4gICAgbGV0IHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSB0cnVlIHx8IGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IHRydWUpXHJcbiAgICAgIHNob3dJY29uID0gdHJ1ZTtcclxuICAgIGNvbHVtbkJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHJlY29yZFNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAocmVjb3JkU2hvdykge1xyXG4gICAgICAgIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBldmVudE9wdGlvbiA9IHtcclxuICAgICAgICAgICAgICByZWNvcmQ6IHJvd1JlY29yZCxcclxuICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGNvbnN0IFV0aWxzID0geyAuLi50aGlzLnByb3BzLlVpdGxzIH07XHJcbiAgICAgICAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiZXZlbnRPcHRpb24sVXRpbHNcIiwgcmVjb3JkU2hvdyk7XHJcbiAgICAgICAgICAgIGNvbnN0IHNob3cgPSBmdW5jKGV2ZW50T3B0aW9uLCBVdGlscyk7XHJcbiAgICAgICAgICAgIHNob3cgJiYgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBsZXQgcmVjb3JkID0gcm93UmVjb3JkO1xyXG4gICAgICAgICAgICBpZiAoZXZhbChyZWNvcmRTaG93KSkge1xyXG4gICAgICAgICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICBjb25zdCBzaG93ID0gcmVjb3JkU2hvdyhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgc2hvdyAmJiBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBsZXQgbnVtYmVyID0gYWN0aW9uUHJvcHM/LmJ1dHRvbk51bWJlclxyXG4gICAgICA/IGFjdGlvblByb3BzPy5idXR0b25OdW1iZXJcclxuICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uPy5idXR0b25OdW1iZXJcclxuICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uPy5idXR0b25OdW1iZXJcclxuICAgICAgOiAzO1xyXG4gICAgbGV0IGZsYWcgPSBmYWxzZTtcclxuICAgIGlmIChudW1iZXIgPT0gXCJhbGxcIikge1xyXG4gICAgICBmbGFnID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmbGFnID0gbmV3QnV0dG9ucy5sZW5ndGggPiBudW1iZXI7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiBOdW1iZXIobnVtYmVyKSAtIDEpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRhID0geyAuLi50aGlzLnN0YXRlLnBvcG9wZW5zIH07XHJcbiAgICAgICAgICAgICAgZGF0YVtyb3dSZWNvcmQuaWRdID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBwb3BvcGVuczogZGF0YSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socm93UmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgIGlmIChpbmRleCA8IG51bWJlcikge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socm93UmVjb3JkKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGljb249e2ljb259XHJcbiAgICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSBudW1iZXIpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgIHRyaWdnZXI9e1tcImNsaWNrXCJdfVxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb3Blbj17dGhpcy5zdGF0ZS5wb3BvcGVuc1trZXldIHx8IGZhbHNlfVxyXG4gICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17KG9wZW4pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0geyAuLi50aGlzLnN0YXRlLnBvcG9wZW5zIH07XHJcbiAgICAgICAgICAgICAgICAgIGRhdGFba2V5XSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiBkYXRhLFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcCddfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpfT5cclxuICAgICAgICAgICAgICAgIDxFbGxpcHNpc091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJvd1JlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG4gIC8v5qCR54K55Ye75LqL5Lu2XHJcbiAgdHJlZVNlbGVjdChzZWxlY3RlZEtleXM6IGFueSwgb2JqOiBhbnkpIHtcclxuICAgIGxldCBrZXl3b3JkID0gXCJcIjtcclxuICAgIGNvbnN0IHtcclxuICAgICAgc2VhcmNoS2V5ID0gXCJrZXlcIixcclxuICAgICAgc2VhcmNoRmllbGQgPSBcIlwiLFxyXG4gICAgICBwYXJhbnRTZWxlY3QgPSB0cnVlLFxyXG4gICAgfSA9IHRoaXMucHJvcHMudHJlZVByb3BzO1xyXG4gICAgY29uc3QgeyB0cmVlU2VsZWN0ZWRLZXkgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkLCBzZWxlY3RlZE5vZGVzIH0gPSBvYmo7XHJcblxyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIGtleXdvcmQgPSBzZWxlY3RlZE5vZGVzWzBdLmRhdGFyZWYuYXR0cmlidXRlW3NlYXJjaEtleV07XHJcbiAgICAgIGlmIChwYXJhbnRTZWxlY3QpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoc2VsZWN0ZWROb2Rlc1swXS5pc0xlYWYgfHwgIXNlbGVjdGVkTm9kZXNbMF0uY2hpbGRyZW4pIHtcclxuICAgICAgICAgIGlmIChzZWxlY3RlZEtleXNbMF0gIT09IHRyZWVTZWxlY3RlZEtleSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHsgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHRyZWVTZWxlY3RlZEtleToga2V5d29yZCxcclxuICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHt9LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnByb3BzLm9uVHJlZVNlbGVjdCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uVHJlZVNlbGVjdChzZWxlY3RlZEtleXMsIG9iaik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKSB8fCB7fTtcclxuICAgIHNlYXJjaEZpZWxkICYmIHRoaXMudGFibGVMb2FkKHsgLi4uZnJvbVZhbHVlLCBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0pO1xyXG4gICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrICYmXHJcbiAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjayxcclxuICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiwgc2VsZWN0ZWRLZXlzOiBzZWxlY3RlZEtleXMsIG9iajogb2JqIH0sXHJcbiAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICApO1xyXG4gICAgLy8gdXRpbHMuY2FsbGJhY2sodGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrLCB0aGlzLCBbXHJcbiAgICAvLyAgIHNlbGVjdGVkS2V5cyxcclxuICAgIC8vICAgb2JqLFxyXG4gICAgLy8gXSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VhcmNoKCkge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICB9XHJcbiAgZ2V0VGV4dChwcm9wcywgdGV4dCkge1xyXG4gICAgbGV0IG5ld1RleHQgPSB0ZXh0O1xyXG4gICAgaWYgKHByb3BzPy5kYXRhICYmIHByb3BzPy5kYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBkYXRhID0gcHJvcHMuZGF0YTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhPy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChkYXRhW2ldLnZhbHVlID09IHRleHQpIHtcclxuICAgICAgICAgIG5ld1RleHQgPSBkYXRhW2ldLmxhYmVsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld1RleHQ7XHJcbiAgfVxyXG4gIHNldFRhYmxlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5zZXREYXRhKGRhdGEpO1xyXG4gIH1cclxuICBzZXRUcmVlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnRyZWVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkS2V5ID0gKHNlbGVjdGVkKSA9PiB7XHJcbiAgICBsZXQgcmVzID0gW107XHJcbiAgICBmb3IgKGxldCBrZXkgaW4gc2VsZWN0ZWQpIHtcclxuICAgICAgY29uc3Qga2V5cyA9IHNlbGVjdGVkW2tleV07XHJcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICByZXMgPSBbLi4ucmVzLCAuLi5rZXlzXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9O1xyXG5cclxuICBjb252ZXJ0UXVlcnlQYXJhbXMoKSB7XHJcbiAgICBjb25zdCB7IHJlcXVlc3RQYXJhbXMgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gcmVxdWVzdFBhcmFtcy5xdWVyeVBhcmFtcztcclxuICAgIGlmIChxdWVyeVBhcmFtcyAmJiB0eXBlb2YgcXVlcnlQYXJhbXMgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICBjb25zdCBVdGlscyA9IHRoaXMucHJvcHMuVXRpbHMgfHwge307XHJcbiAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHNcIiwgcXVlcnlQYXJhbXMpO1xyXG4gICAgICBsZXQgY29udmVyUGFyYW1zID0gZnVuYyhVdGlscyk7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zID0gY29udmVyUGFyYW1zO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcXVlcnlQYXJhbXMgPSBxdWVyeVBhcmFtcyB8fCB7fTtcclxuICAgIH1cclxuICAgIHJldHVybiBxdWVyeVBhcmFtcztcclxuICB9XHJcblxyXG4gIC8vIOiuoeeul+ihqOWktOmrmOW6pueahOaWueazlVxyXG4gIGNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0ID0gKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMudGFibGVXcmFwcGVyUmVmLmN1cnJlbnQpIHtcclxuICAgICAgY29uc3QgdGFibGVIZWFkZXIgPVxyXG4gICAgICAgIHRoaXMudGFibGVXcmFwcGVyUmVmLmN1cnJlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAgIFwiYW50LXRhYmxlLXRoZWFkXCJcclxuICAgICAgICApWzBdO1xyXG4gICAgICBpZiAodGFibGVIZWFkZXIpIHtcclxuICAgICAgICBjb25zdCBoZWFkZXJIZWlnaHQgPSB0YWJsZUhlYWRlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XHJcbiAgICAgICAgaWYgKGhlYWRlckhlaWdodCAhPT0gdGhpcy5zdGF0ZS50YWJsZUhlYWRlckhlaWdodCkge1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIHRhYmxlSGVhZGVySGVpZ2h0OiBoZWFkZXJIZWlnaHQsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG4gIHRocm90dGxlQ2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQgPSB0aHJvdHRsZShcclxuICAgIHRoaXMuY2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQsXHJcbiAgICA1MDBcclxuICApO1xyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNvbHVtbnMgPSBbXSxcclxuICAgICAgc2hvd1NlYXJjaCA9IHRydWUsXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBzdWJtaXRVcmwgPSBcIlwiLFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICAgIHRyZWVQcm9wcyA9IHt9LFxyXG4gICAgICBmb3JtUHJvcHMgPSB7fSxcclxuICAgICAgZm9ybVBhZ2VQcm9wcyA9IHt9LFxyXG4gICAgICBzaG93TGVmdCA9IGZhbHNlLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgc2hvd1Rvb2xCdXR0b24gPSB0cnVlLFxyXG4gICAgICBidXR0b25zID0gW10sXHJcbiAgICAgIGVkaXRvckZvcm0gPSB0cnVlLFxyXG4gICAgICBvblNob3dGb3JtLFxyXG4gICAgICBmb3JtQ2hhbmdlVmFsaWQgPSB0cnVlLFxyXG4gICAgICBjbGFzc05hbWUsXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9IFwiYnV0dG9tXCIsXHJcbiAgICAgIGFjdGlvblByb3BzLFxyXG4gICAgICBkZWxldGVQb3NpdGlvbiA9IFwidG9vbGJhclwiLFxyXG4gICAgICBidXR0b25DbGljayA9IHt9LFxyXG4gICAgICBwZXJtaXNzaW9uID0geyBoYXM6IGZhbHNlIH0sXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgcmVxdWVzdFVybHMgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZTogdGFibGVTdG9yZSA9IHt9LFxyXG4gICAgICBmaWx0ZXJDb2x1bW4gPSB0cnVlLFxyXG4gICAgICBhY3Rpb25Db2x1bW4gPSB0cnVlLFxyXG4gICAgICBzaG93Um93U2VsZWN0aW9uID0gdHJ1ZSxcclxuICAgICAgY29sdW1uT3JkZXIgPSB0cnVlLFxyXG4gICAgICBleHBhbmRhYmxlID0ge30sXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICAgIHRpdGxlOiB0YWJsZVRpdGxlLFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zXHJcbiAgICB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCBuZXdUYWJsZVN0b3JlID0geyAuLi50YWJsZVN0b3JlIH07XHJcbiAgICBpZiAocmVxdWVzdFBhcmFtcy5xdWVyeVBhcmFtcykge1xyXG4gICAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHRoaXMuY29udmVydFF1ZXJ5UGFyYW1zKCk7XHJcbiAgICAgIGxldCBkYXRhID0gcXVlcnlQYXJhbXM/LmRhdGEgfHwgcXVlcnlQYXJhbXM/LnBhcmFtcyB8fCB7fTtcclxuICAgICAgbmV3VGFibGVTdG9yZS5yZXF1ZXN0Q29uZmlnID0ge1xyXG4gICAgICAgIHBhcmFtczogeyAuLi5kYXRhLCAuLi5uZXdUYWJsZVN0b3JlLnJlcXVlc3RDb25maWc/LnBhcmFtcyB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZTogdHJlZVN0b3JlID0ge30sXHJcbiAgICAgIHNob3dTZWFyY2g6IHRyZWVTZWFyY2ggPSB0cnVlLFxyXG4gICAgICB0aXRsZUFsaWFzID0gXCJ0aXRsZVwiLFxyXG4gICAgICB0aXRsZTogdHJlZVRpdGxlLFxyXG4gICAgICAuLi5vdGhlcnRyZWVQYXJhbXNcclxuICAgIH0gPSB0cmVlUHJvcHM7XHJcblxyXG4gICAgbGV0IHRhYmxlUGFyYW1zID0ge1xyXG4gICAgICBmaWx0ZXJDb2x1bW4sXHJcbiAgICAgIHN0b3JlOiB7IC4uLm5ld1RhYmxlU3RvcmUgfSxcclxuICAgICAgLi4ub3RoZXJ0YWJsZVBhcmFtcyxcclxuICAgIH0gYXMgYW55O1xyXG4gICAgY29uc3QgZGVmYXVsdFZhbHVlOiBhbnkgPSB7fTtcclxuICAgIGNvbnN0IGNvbHVtbkJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBlbGVtZW50SGVpZ2h0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHBlcm1pc3Npb25CdXR0b25zID0gW107XHJcbiAgICBpZiAocGVybWlzc2lvbi5oYXMgJiYgcGVybWlzc2lvbi5tZW51Q29kZSkge1xyXG4gICAgICBwZXJtaXNzaW9uQnV0dG9ucyA9XHJcbiAgICAgICAgZ2V0QnV0dG9uUGVybWlzc29ucyhwZXJtaXNzaW9uLm1lbnVDb2RlKS5wZXJtaXNzb25zIHx8IFtdO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb2JqID0gY29udmVydENvbHVtbnMoY29sdW1ucywge30pO1xyXG4gICAgbGV0IHRhYmxlQ29sdW1uOiBhbnlbXSA9IGdldE5ld0NvbHVtbnMoY29sdW1ucywgdGhpcy5wcm9wcyk7XHJcbiAgICBjb25zdCBzZWFyY2hGb3JtcyA9IG9iai5zZWFyY2hGb3JtcyB8fCBbXTtcclxuICAgIGNvbnN0IGVkaXRvckZvcm1zID0gb2JqLmVkaXRvckZvcm1zIHx8IFtdO1xyXG4gICAgY29uc3QgdG9vbEJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgY29uc3QgYnV0dG9uTWFwID0ge1xyXG4gICAgICBlZGl0b3I6IHsgbmFtZTogXCLnvJbovpFcIiwgY29kZTogXCJlZGl0b3JcIiwgaWNvbjogPEVkaXRPdXRsaW5lZCAvPiB9LFxyXG4gICAgICBkZWxldGU6IHsgbmFtZTogXCLliKDpmaRcIiwgY29kZTogXCJkZWxldGVcIiwgaWNvbjogPERlbGV0ZU91dGxpbmVkIC8+IH0sXHJcbiAgICAgIHNlYXJjaDogeyBuYW1lOiBcIuafpeeci1wiLCBjb2RlOiBcInNlYXJjaFwiLCBpY29uOiA8RXllT3V0bGluZWQgLz4gfSxcclxuICAgIH07XHJcbiAgICBjb25zdCByZXR1cm5CdXR0b24gPSAoY29kZSwgc2hvdyA9IFwiXCIsIGRlZmF1bHRQcm9wcyA9IHt9KSA9PiB7XHJcbiAgICAgIGxldCBwcm9wcyA9IHtcclxuICAgICAgICBpY29uOiBzaG93SWNvbiA/IGJ1dHRvbk1hcFtjb2RlXS5pY29uIDogbnVsbCxcclxuICAgICAgICB0eXBlOiBcImxpbmtcIixcclxuICAgICAgICAuLi5kZWZhdWx0UHJvcHMsXHJcbiAgICAgIH0gYXMgYW55O1xyXG5cclxuICAgICAgaWYgKHNob3cpIHtcclxuICAgICAgICBwcm9wcyA9IHsgLi4ucHJvcHMsIHJlY29yZFNob3c6IHNob3cgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxCdXR0b25cclxuICAgICAgICAgIG9uQ2xpY2s9eyhyZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY29kZSA9PSBcImRlbGV0ZVwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbkRlbGV0ZShyZWNvcmQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmIChjb2RlID09IFwiZWRpdG9yXCIgJiYgYnV0dG9uQ2xpY2sub25FZGl0b3IpIHtcclxuICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBidXR0b25DbGljay5vbkVkaXRvcixcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PSBcInNlYXJjaFwiICYmIGJ1dHRvbkNsaWNrLm9uU2VhcmNoKSB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25TZWFyY2gsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCxcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIG9uU2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIGNvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgY29kZSwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNhbGxCYWNrID1cclxuICAgICAgICAgICAgICAgICAgY29kZSA9PSBcImVkaXRvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkVkaXRvckNhbGxCYWNrXHJcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblNlYXJjaENhbGxCYWNrO1xyXG4gICAgICAgICAgICAgICAgY2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCxcclxuICAgICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtidXR0b25NYXBbY29kZV0/Lm5hbWV9XHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgY2hlY2tQZXJzc2lvbiA9IChjb2RlKSA9PiB7XHJcbiAgICAgIGlmICghcGVybWlzc2lvbi5oYXMpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gcGVybWlzc2lvbkJ1dHRvbnMuaW5kZXhPZihjb2RlKSA+IC0xO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgYnV0dG9ucy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoKGl0ZW0gPT0gXCJhZGRcIiB8fCBpdGVtLmNvZGUgPT0gXCJhZGRcIikgJiYgY2hlY2tQZXJzc2lvbihcImFkZFwiKSkge1xyXG4gICAgICAgIHRvb2xCdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgeyBvblNob3dGb3JtLCBidXR0b25DbGljayA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgICAgIGlmIChidXR0b25DbGljaz8ub25BZGQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBidXR0b25DbGljay5vbkFkZCxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIG9uU2hvd0Zvcm0obnVsbCwgXCJhZGRcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0obnVsbCwgbnVsbCwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25BZGRDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkFkZENhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBpY29uPXs8UGx1c091dGxpbmVkIC8+fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDmt7vliqBcclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgKGl0ZW0gPT0gXCJkZWxldGVcIiB8fCBpdGVtLmNvZGUgPT0gXCJkZWxldGVcIikgJiZcclxuICAgICAgICBjaGVja1BlcnNzaW9uKFwiZGVsZXRlXCIpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGlmIChkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIikge1xyXG4gICAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChcclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIC8vIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25EZWxldGUuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICBpY29uPXs8RGVsZXRlT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgICAgZGFuZ2VyXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICDliKDpmaRcclxuICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICAgIHJldHVybkJ1dHRvbihpdGVtLmNvZGUgfHwgaXRlbSwgaXRlbS5yZWNvcmRTaG93LCBpdGVtLnByb3BzIHx8IHt9KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGNoZWNrUGVyc3Npb24oaXRlbS5jb2RlID8gaXRlbS5jb2RlIDogaXRlbSkpIHtcclxuICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgICAgcmV0dXJuQnV0dG9uKFxyXG4gICAgICAgICAgICAgIGl0ZW0uY29kZSA/IGl0ZW0uY29kZSA6IGl0ZW0sXHJcbiAgICAgICAgICAgICAgaXRlbS5yZWNvcmRTaG93LFxyXG4gICAgICAgICAgICAgIGl0ZW0ucHJvcHMgfHwge31cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XHJcbiAgICAgICAgICBpdGVtLm1hcCgoY2hpbGQpID0+IHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIgJiZcclxuICAgICAgICAgICAgICBjaGVja1BlcnNzaW9uKGNoaWxkPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIiB8fFxyXG4gICAgICAgICAgICAgICAgY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSAmJlxyXG4gICAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oY2hpbGQ/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIgJiZcclxuICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihpdGVtPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0b29sQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiIHx8XHJcbiAgICAgICAgICAgICAgaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpICYmXHJcbiAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oaXRlbT8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIGNvbnN0IHsgcHJvcHMgfTogYW55ID0gY2hpbGRyZW47XHJcbiAgICAgIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIgJiYgY2hlY2tQZXJzc2lvbihwcm9wcz8uY29kZSkpIHtcclxuICAgICAgICB0b29sQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAocHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIgfHxcclxuICAgICAgICAgIHByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSAmJlxyXG4gICAgICAgIGNoZWNrUGVyc3Npb24ocHJvcHM/LmNvZGUpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGFjdGlvbkNvbHVtbiAmJlxyXG4gICAgICB0YWJsZUNvbHVtbi5wdXNoKHtcclxuICAgICAgICB0aXRsZTogXCLmk43kvZxcIixcclxuICAgICAgICBkYXRhSW5kZXg6IFwiYWN0aW9uXCIsXHJcbiAgICAgICAgYWxpZ246IGFjdGlvblByb3BzPy50ZXh0QWxpZ25cclxuICAgICAgICAgID8gYWN0aW9uUHJvcHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLnRleHRBbGlnblxyXG4gICAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uLnRleHRBbGlnblxyXG4gICAgICAgICAgOiBcImxlZnRcIixcclxuICAgICAgICB3aWR0aDogYWN0aW9uUHJvcHM/LndpZHRoXHJcbiAgICAgICAgICA/IGFjdGlvblByb3BzPy53aWR0aFxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgIDogMjAwLFxyXG4gICAgICAgIGZpeGVkOiBcInJpZ2h0XCIsXHJcbiAgICAgICAgcmVuZGVyOiAodGV4dDogYW55LCByZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1hY3Rpb25cIil9PlxyXG4gICAgICAgICAgICAgIHt0aGlzLnJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zLCByZWNvcmQpfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgaWYgKGNvbHVtbk9yZGVyKVxyXG4gICAgICB0YWJsZUNvbHVtbiA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aXRsZTogXCLluo/lj7dcIixcclxuICAgICAgICAgIHdpZHRoOiA4MCxcclxuICAgICAgICAgIGFsaWduOiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgcmVuZGVyOiAodGV4dCwgcmVhY29yZCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIDw+e2luZGV4ICsgMX08Lz47XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGFibGVDb2x1bW4sXHJcbiAgICAgIF07XHJcbiAgICBsZXQgc2VhcmNoRmxhZyA9IHNob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMDtcclxuICAgIGxldCB7IHRhYmxlVG9vbCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdG9vbEZsYWcgPVxyXG4gICAgICBzaG93VG9vbEJ1dHRvbiAmJlxyXG4gICAgICB0b29sQnV0dG9ucy5sZW5ndGggPiAwICYmXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9PSBcImJ1dHRvbVwiO1xyXG4gICAgbGV0IHRvb2xiYXJGbGFnID0gIShcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyID09IGZhbHNlIHx8XHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhcj8uc2hvdyA9PSBmYWxzZSB8fFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnRvb2xzPy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICB0YWJsZVRvb2w/LnNob3cgPT0gZmFsc2VcclxuICAgICk7XHJcbiAgICBsZXQgaGVhZGVySGVpZ2h0ID0gc2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwID8gMTA0IDogMDsgLy/lpLTpg6jmkJzntKLmoI/pq5jluqZcclxuICAgIGxldCB0b29sSGVpZ2h0ID0gdGFibGVUaXRsZSB8fCB0b29sRmxhZyA/IDUwIDogMDtcclxuICAgIGxldCBwYWRkaW5nSGVpZ2h0ID0gMjAgKiAyOyAvL+S4iuS4i+mXtOi3nVxyXG4gICAgbGV0IHRhYmxlQ29udGVudEhlaWdodCA9XHJcbiAgICAgIGVsZW1lbnRIZWlnaHQgLSB0b29sSGVpZ2h0IC0gcGFkZGluZ0hlaWdodCAtIGhlYWRlckhlaWdodDtcclxuICAgIGxldCBQYWdpbmF0aW9uSGVpZ2h0ID0gdGFibGVQcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSA/IDMyICsgMTYgOiAwOyAvLzMyIOS4uuWIhumhteWZqOmrmOW6piwxNuS4um1hcmdpbumXtOi3nVxyXG4gICAgbGV0IHRhYmxlSGVpZ2h0ID0gdGFibGVDb250ZW50SGVpZ2h0IC0gUGFnaW5hdGlvbkhlaWdodDtcclxuICAgIGxldCB0YWJsZVNyb2xsSGVpZ2h0ID1cclxuICAgICAgdGFibGVDb250ZW50SGVpZ2h0IC0gdGhpcy5zdGF0ZS50YWJsZUhlYWRlckhlaWdodCA+IDBcclxuICAgICAgICA/IHRoaXMuc3RhdGUudGFibGVIZWFkZXJIZWlnaHRcclxuICAgICAgICA6IDU1IC0gUGFnaW5hdGlvbkhlaWdodDtcclxuICAgIC8vIGlmICh0YWJsZVByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlKSB7XHJcbiAgICBjb25zdCBzY3JvbGwgPSB0YWJsZVBhcmFtcy5zY3JvbGw7XHJcbiAgICB0YWJsZVBhcmFtcyA9IHtcclxuICAgICAgLi4udGFibGVQYXJhbXMsXHJcbiAgICAgIHNjcm9sbDogeyB4OiBcIm1heC1jb250ZW50XCIsIHk6IHRhYmxlU3JvbGxIZWlnaHQsIC4uLnNjcm9sbCB9LFxyXG4gICAgfTtcclxuICAgIC8vIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2VcIiksIGNsYXNzTmFtZSl9XHJcbiAgICAgICAgcmVmPXt0aGlzLnBhZ2VSZWZ9XHJcbiAgICAgID5cclxuICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGUgJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGl0bGVcIikpfT5cclxuICAgICAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcGFuZVwiKSl9XHJcbiAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiBcImZsZXhcIiB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtzaG93TGVmdCAmJiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtbGVmdFwiKX0+XHJcbiAgICAgICAgICAgICAge3RyZWVUaXRsZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidHJlZS10aXRsZVwiKX0+e3RyZWVUaXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInRyZWUtY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwidHJlZS1jb250ZW50LW5vdGl0bGVcIildOiAhdHJlZVRpdGxlLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFRyZWVcclxuICAgICAgICAgICAgICAgICAgc3RvcmU9e3sgLi4udHJlZVN0b3JlIH19XHJcbiAgICAgICAgICAgICAgICAgIHNob3dJY29uPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgY2hlY2thYmxlPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZT17dHJlZVNlYXJjaH1cclxuICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMudHJlZVNlbGVjdC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEtleXM9e1t0aGlzLnN0YXRlLnRyZWVTZWxlY3RlZEtleV19XHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlQWxpYXM9e3RpdGxlQWxpYXN9XHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy50cmVlUmVmfVxyXG4gICAgICAgICAgICAgICAgICB7Li4ub3RoZXJ0cmVlUGFyYW1zfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcmlnaHRcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLW5vLWxlZnQtcmlnaHRcIildOiAhc2hvd0xlZnQsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWhlYWRlcnNlYXJjaFwiKX0+XHJcbiAgICAgICAgICAgICAgICA8SGVhZGVyU2VhcmNoXHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1zPXtzZWFyY2hGb3Jtc31cclxuICAgICAgICAgICAgICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uPXt0b29sQnV0dG9uUG9zaXRpb259XHJcbiAgICAgICAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIG9uUmVzZXQ9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJlc2V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUmVzZXQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlTG9hZCh7fSk7XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy5zZWFyY2hSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1Qcm9wcz17dGhpcy5wcm9wcy5zZWFyY2hGb3JtUHJvcHN9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1nYXBcIildOiAhc2VhcmNoRmxhZyxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMucGFnZUNvbnRlbnRSZWZ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7KHRhYmxlVGl0bGUgfHwgdG9vbEZsYWcpICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRpdGxlXCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10aXRsZS13aWR0aFwiKV06ICF0b29sYmFyRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+e3RhYmxlVGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIHt0b29sRmxhZyAmJiB0aGlzLnJlbmRlclRvb2xCdXR0b25zKHRvb2xCdXR0b25zLCB0b29sYmFyRmxhZyl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlXCIpLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10b3BcIildOiAhdG9vbGJhckZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRvcDJcIildOlxyXG4gICAgICAgICAgICAgICAgICAgICAgdG9vbGJhckZsYWcgJiYgIXRvb2xGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgcmVmPXt0aGlzLnRhYmxlV3JhcHBlclJlZn1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogdGFibGVDb250ZW50SGVpZ2h0IH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy50YWJsZVJlZn1cclxuICAgICAgICAgICAgICAgICAgY29sdW1ucz17dGFibGVDb2x1bW59XHJcbiAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU9e3tcclxuICAgICAgICAgICAgICAgICAgICBleHBhbmRJY29uOiAoeyBleHBhbmRlZCwgb25FeHBhbmQsIHJlY29yZCB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXM/Lmxlbmd0aCA+IDAgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RG93bk91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogcmVjb3JkLmNoaWxkTm9kZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzPy5sZW5ndGggPiAwID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0T3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZXhwYW5kLWljb25cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAuLi5leHBhbmRhYmxlLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBjb2x1bW5PcmRlcj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhwYWdpbmF0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBjdXJyZW50UGFnZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBhZ2UgIT09IHBhZ2luYXRpb24uY3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHRvb2xiYXI9e3tcclxuICAgICAgICAgICAgICAgICAgICBvblRvb2xDbGljazoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb25SZWZyZXNoOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVMb2FkKHBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4udGFibGVQcm9wcy50b29sYmFyLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBzaG93Um93U2VsZWN0aW9uPXtzaG93Um93U2VsZWN0aW9ufVxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IHRhYmxlSGVpZ2h0IH19XHJcbiAgICAgICAgICAgICAgICAgIHsuLi50YWJsZVBhcmFtc31cclxuICAgICAgICAgICAgICAgICAgLy8gcGFnaW5hdGlvbj17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgey8qIDxkaXY+PC9kaXY+ICovfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAge2VkaXRvckZvcm0gJiYgKFxyXG4gICAgICAgICAgICA8RWRpdG9yRm9ybVxyXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5lZGl0b3JSZWZ9XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TdW1iaXRDYWxsQmFjayxcclxuICAgICAgICAgICAgICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudGFibGVSZWxvYWQoKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGZvcm1zPXtlZGl0b3JGb3Jtc31cclxuICAgICAgICAgICAgICBzdWJtaXRVcmw9e3N1Ym1pdFVybH1cclxuICAgICAgICAgICAgICBzdWJtaXRQYXJhbXM9e3N1Ym1pdFBhcmFtc31cclxuICAgICAgICAgICAgICBvblN1Ym1pdD17dGhpcy5wcm9wcy5vblN1Ym1pdH1cclxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e2RlZmF1bHRWYWx1ZX1cclxuICAgICAgICAgICAgICBvbkhpZGVGb3JtPXt0aGlzLnByb3BzLm9uSGlkZUZvcm19XHJcbiAgICAgICAgICAgICAgb25Gb3JtQ2hhbmdlPXt0aGlzLnByb3BzLm9uRm9ybUNoYW5nZX1cclxuICAgICAgICAgICAgICBmb3JtVHlwZT17dGhpcy5wcm9wcy5mb3JtVHlwZSB8fCBcImF1dG9cIn1cclxuICAgICAgICAgICAgICBjaGFuZ2VWYWxpZD17Zm9ybUNoYW5nZVZhbGlkfVxyXG4gICAgICAgICAgICAgIFV0aWxzPXt0aGlzLnByb3BzLlV0aWxzfVxyXG4gICAgICAgICAgICAgIHJlcXVlc3RPYmplY3Q9e3tcclxuICAgICAgICAgICAgICAgIGFkZFVybDogcmVxdWVzdFVybHMuYWRkVXJsLFxyXG4gICAgICAgICAgICAgICAgZWRpdG9yVXJsOiByZXF1ZXN0VXJscy5lZGl0b3JVcmwsXHJcbiAgICAgICAgICAgICAgICBhZGRQYXJhbXM6IHJlcXVlc3RQYXJhbXMuYWRkUGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgZWRpdG9yUGFyYW1zOiByZXF1ZXN0UGFyYW1zLmVkaXRvclBhcmFtcyxcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGZ1bmNzPXt0aGlzLnByb3BzLmZ1bmNzfVxyXG4gICAgICAgICAgICAgIHsuLi5mb3JtUHJvcHN9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IEJhc2VQYWdlO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBbUIsT0FBTztBQUN2RCxPQUFPQyxLQUFLLE1BQU0sa0JBQWtCO0FBQ3BDLE9BQU9DLElBQUksTUFBTSxpQkFBaUI7QUFDbEMsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPQyxLQUFLLE1BQU0sa0JBQWtCO0FBQ3BDLE9BQU9DLE9BQU8sTUFBTSxvQkFBb0I7QUFDeEMsT0FBT0MsT0FBTyxNQUFNLG9CQUFvQjtBQUN4QyxPQUFPQyxVQUFVLE1BQXlCLG1CQUFtQjtBQUM3RCxPQUFPQyxHQUFHLE1BQU0sWUFBWTtBQUM1QixPQUFPLHFCQUFxQjtBQUc1QixTQUNFQyxZQUFZLEVBQ1pDLFdBQVcsRUFDWEMsWUFBWSxFQUNaQyxhQUFhLEVBQ2JDLFlBQVksRUFDWkMsZ0JBQWdCLEVBQ2hCQyxjQUFjLFFBQ1QsbUJBQW1CO0FBQzFCLFNBQVNDLGNBQWMsRUFBRUMsT0FBTyxRQUFrQyxhQUFhO0FBQy9FLE9BQU9DLE9BQU8sTUFBTSxhQUFhO0FBQ2pDLE9BQU9DLE1BQU0sTUFBTSxjQUFjO0FBQ2pDLFNBQVNDLFVBQVUsRUFBU0MsbUJBQW1CLFFBQVEsbUJBQW1CO0FBQzFFLE9BQU9DLFlBQVksTUFBTSxpQkFBaUI7QUFHMUMsU0FBU0MsY0FBYyxFQUFFQyxhQUFhLFFBQVEsU0FBUztBQUV2RCxPQUFPQyxRQUFRLE1BQU0saUJBQWlCO0FBa0J0QyxNQUFNQyxNQUFNLEdBQUcsSUFBSTtBQXdGbkIsTUFBTUMsUUFBUSxTQUFTM0IsYUFBYSxDQUF3QjtFQVUxRDRCLFdBQVdBLENBQUNDLEtBQVUsRUFBRTtJQUFBLElBQUFDLEtBQUEsRUFBQUMsS0FBQTtJQUN0QixLQUFLLENBQUNGLEtBQUssQ0FBQztJQUFDRyxlQUFBLGdDQVZKakMsS0FBSyxDQUFDa0MsU0FBUyxDQUFNLENBQUM7SUFBQUQsZUFBQSwrQkFDdkJqQyxLQUFLLENBQUNrQyxTQUFTLENBQU0sQ0FBQztJQUFBRCxlQUFBLGlDQUNwQmpDLEtBQUssQ0FBQ2tDLFNBQVMsQ0FBTSxDQUFDO0lBQUFELGVBQUEsaUNBQ3RCakMsS0FBSyxDQUFDa0MsU0FBUyxDQUFNLENBQUM7SUFBQUQsZUFBQSwrQkFDeEJqQyxLQUFLLENBQUNrQyxTQUFTLENBQU0sQ0FBQztJQUFBRCxlQUFBLHNDQUNmakMsS0FBSyxDQUFDa0MsU0FBUyxDQUFNLENBQUM7SUFBQUQsZUFBQSxxQkFDMUIsQ0FBQyxDQUFDO0lBQUFBLGVBQUEsdUNBQ0dqQyxLQUFLLENBQUNrQyxTQUFTLENBQWlCLENBQUM7SUFBQUQsZUFBQSxtQkFxRnZDRSxlQUFvQixJQUFLO01BQ25DLE1BQU07UUFBRUMsSUFBSTtRQUFFQyxRQUFRO1FBQUVDO01BQVEsQ0FBQyxHQUFHLElBQUksQ0FBQ0MsS0FBSztNQUM5QyxNQUFNQyxLQUFLLEdBQUc7UUFBRUosSUFBSTtRQUFFQyxRQUFRO1FBQUVDLE9BQU87UUFBRUcsTUFBTSxFQUFFTixlQUFlLENBQUMsQ0FBQztNQUFFLENBQUM7TUFDckUsSUFBSSxJQUFJLENBQUNMLEtBQUssQ0FBQ1ksUUFBUSxFQUFFO1FBQ3ZCLElBQUksQ0FBQ1osS0FBSyxDQUFDWSxRQUFRLENBQUNGLEtBQUssQ0FBQztNQUM1QjtNQUNBO0lBQ0YsQ0FBQztJQUFBUCxlQUFBLHlCQXNrQmlCVSxRQUFRLElBQUs7TUFDN0IsSUFBSUMsR0FBRyxHQUFHLEVBQUU7TUFDWixLQUFLLElBQUlDLEdBQUcsSUFBSUYsUUFBUSxFQUFFO1FBQ3hCLE1BQU1HLElBQUksR0FBR0gsUUFBUSxDQUFDRSxHQUFHLENBQUM7UUFDMUIsSUFBSUMsSUFBSSxDQUFDQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1VBQ25CSCxHQUFHLEdBQUcsQ0FBQyxHQUFHQSxHQUFHLEVBQUUsR0FBR0UsSUFBSSxDQUFDO1FBQ3pCO01BQ0Y7TUFDQSxPQUFPRixHQUFHO0lBQ1osQ0FBQztJQWdCRDtJQUFBWCxlQUFBLHFDQUM2QixNQUFNO01BQ2pDLElBQUksSUFBSSxDQUFDZSxlQUFlLENBQUNDLE9BQU8sRUFBRTtRQUNoQyxNQUFNQyxXQUFXLEdBQ2YsSUFBSSxDQUFDRixlQUFlLENBQUNDLE9BQU8sQ0FBQ0Usc0JBQXNCLENBQ2pELGlCQUNGLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDTixJQUFJRCxXQUFXLEVBQUU7VUFDZixNQUFNRSxZQUFZLEdBQUdGLFdBQVcsQ0FBQ0cscUJBQXFCLENBQUMsQ0FBQyxDQUFDQyxNQUFNO1VBQy9ELElBQUlGLFlBQVksS0FBSyxJQUFJLENBQUNiLEtBQUssQ0FBQ2dCLGlCQUFpQixFQUFFO1lBQ2pELElBQUksQ0FBQ0MsUUFBUSxDQUFDO2NBQ1pELGlCQUFpQixFQUFFSDtZQUNyQixDQUFDLENBQUM7VUFDSjtRQUNGO01BQ0Y7SUFDRixDQUFDO0lBQUFuQixlQUFBLDZDQUNvQ1AsUUFBUSxDQUMzQyxJQUFJLENBQUMrQiwwQkFBMEIsRUFDL0IsR0FDRixDQUFDO0lBM3NCQyxJQUFJO01BQUVDO0lBQVksQ0FBQyxHQUFHdEMsTUFBTSxDQUFDLENBQUM7SUFDOUIsSUFBSXVDLElBQUksR0FBR3RDLFVBQVUsQ0FDbkJxQyxXQUFXLEdBQUdBLFdBQVcsR0FBRyxHQUFHLEdBQUcsVUFBVSxHQUFHLFVBQ2pELENBQUM7SUFDREMsSUFBSSxJQUFBNUIsS0FBQSxHQUFHNEIsSUFBSSxjQUFBNUIsS0FBQSx1QkFBSkEsS0FBQSxDQUFNNkIsT0FBTztJQUNwQixJQUFJQyxJQUFJLEdBQUd4QyxVQUFVLENBQ25CcUMsV0FBVyxHQUFHQSxXQUFXLEdBQUcsR0FBRyxHQUFHLFdBQVcsR0FBRyxXQUNsRCxDQUFDO0lBQ0RHLElBQUksSUFBQTdCLEtBQUEsR0FBRzZCLElBQUksY0FBQTdCLEtBQUEsdUJBQUpBLEtBQUEsQ0FBTTRCLE9BQU87SUFDcEIsSUFBSSxDQUFDckIsS0FBSyxHQUFHO01BQ1hvQixJQUFJLEVBQUUsS0FBSztNQUNYRyxlQUFlLEVBQUUsRUFBRTtNQUNuQkMsZ0JBQWdCLEVBQUUsRUFBRTtNQUNwQkMsZUFBZSxFQUFFLEVBQUU7TUFDbkJDLE1BQU0sRUFBRSxLQUFLO01BQ2JDLFFBQVEsRUFBRVAsSUFBSSxJQUFJLE9BQU87TUFDekJRLFNBQVMsRUFBRU4sSUFBSSxJQUFJLFNBQVM7TUFDNUJPLGVBQWUsRUFBRSxDQUFDLENBQUM7TUFDbkJDLFFBQVEsRUFBRSxDQUFDLENBQUM7TUFDWkMsUUFBUSxFQUFFLEtBQUs7TUFDZkMsYUFBYSxFQUFFLENBQUM7TUFDaEJDLGlCQUFpQixFQUFFLEVBQUU7TUFDckJDLFdBQVcsRUFBRSxDQUFDLENBQUM7TUFDZmxCLGlCQUFpQixFQUFFLENBQUMsQ0FBRTtJQUN4QixDQUFDO0VBQ0g7RUFFQW1CLGlCQUFpQkEsQ0FBQSxFQUFHO0lBQUEsSUFBQUMscUJBQUE7SUFDbEIsTUFBTTtNQUFFQyxRQUFRO01BQUVDLFNBQVMsR0FBRyxDQUFDO0lBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQy9DLEtBQUs7SUFDL0MsTUFBTXlDLGFBQWEsSUFBQUkscUJBQUEsR0FBRyxJQUFJLENBQUNHLGNBQWMsQ0FBQzdCLE9BQU8sY0FBQTBCLHFCQUFBLHVCQUEzQkEscUJBQUEsQ0FBNkJJLFlBQVk7O0lBRS9EO0lBQ0FDLE1BQU0sQ0FBQ0MsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQ0Msa0NBQWtDLENBQUM7O0lBRTFFO0lBQ0FDLFVBQVUsQ0FBQyxJQUFJLENBQUMxQiwwQkFBMEIsRUFBRSxDQUFDLENBQUM7SUFFOUMsSUFBSSxDQUFDRCxRQUFRLENBQUM7TUFDWmU7SUFDRixDQUFDLENBQUM7SUFDRkssUUFBUSxJQUFJQSxRQUFRLENBQUMsQ0FBQztFQUN4QjtFQUNBUSxrQkFBa0JBLENBQUEsRUFBRztJQUFBLElBQUFDLHFCQUFBO0lBQ25CLE1BQU1kLGFBQWEsSUFBQWMscUJBQUEsR0FBRyxJQUFJLENBQUNDLE9BQU8sQ0FBQ3JDLE9BQU8sY0FBQW9DLHFCQUFBLHVCQUFwQkEscUJBQUEsQ0FBc0JOLFlBQVk7SUFDeEQsSUFBSVIsYUFBYSxHQUFHLElBQUksQ0FBQ2hDLEtBQUssQ0FBQ2dDLGFBQWEsRUFBRTtNQUM1QyxJQUFJLENBQUNmLFFBQVEsQ0FBQztRQUNaZTtNQUNGLENBQUMsQ0FBQztJQUNKO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBZ0Isb0JBQW9CQSxDQUFBLEVBQUc7SUFDckI7SUFDQVAsTUFBTSxDQUFDUSxtQkFBbUIsQ0FDeEIsUUFBUSxFQUNSLElBQUksQ0FBQ04sa0NBQ1AsQ0FBQztFQUNIO0VBQ0FPLGVBQWVBLENBQUNDLE1BQU0sRUFBRUMsUUFBUSxFQUFFO0lBQUEsSUFBQUMscUJBQUE7SUFDaEMsQ0FBQUEscUJBQUEsT0FBSSxDQUFDQyxTQUFTLENBQUM1QyxPQUFPLGNBQUEyQyxxQkFBQSxlQUF0QkEscUJBQUEsQ0FBd0JILGVBQWUsQ0FBQ0MsTUFBTSxDQUFDO0lBQy9DQyxRQUFRLElBQUlBLFFBQVEsQ0FBQ0QsTUFBTSxDQUFDO0VBQzlCO0VBQ0FJLFFBQVFBLENBQUNDLElBQUksRUFBZ0I7SUFBQSxJQUFBQyxxQkFBQTtJQUFBLElBQWRDLEtBQUssR0FBQUMsU0FBQSxDQUFBbkQsTUFBQSxRQUFBbUQsU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxJQUFJO0lBQ3pCLENBQUFGLHFCQUFBLE9BQUksQ0FBQ0ksU0FBUyxDQUFDbkQsT0FBTyxjQUFBK0MscUJBQUEsZUFBdEJBLHFCQUFBLENBQXdCRixRQUFRLENBQUNDLElBQUksRUFBRUUsS0FBSyxDQUFDO0VBQy9DO0VBV0E7RUFDQUksUUFBUUEsQ0FBQzdELEtBQVcsRUFBc0M7SUFBQSxJQUFBOEQsZUFBQTtJQUFBLElBQXBDQyxVQUFVLEdBQUFMLFNBQUEsQ0FBQW5ELE1BQUEsUUFBQW1ELFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQUcsS0FBSztJQUFBLElBQUVQLFFBQWMsR0FBQU8sU0FBQSxDQUFBbkQsTUFBQSxPQUFBbUQsU0FBQSxNQUFBQyxTQUFBO0lBQ3RELElBQUlLLFFBQVEsR0FBR2hFLEtBQUssR0FBQWlFLGFBQUEsS0FBUWpFLEtBQUssSUFBSyxJQUFJO0lBQzFDLENBQUE4RCxlQUFBLE9BQUksQ0FBQ0YsU0FBUyxjQUFBRSxlQUFBLGdCQUFBQSxlQUFBLEdBQWRBLGVBQUEsQ0FBZ0JyRCxPQUFPLGNBQUFxRCxlQUFBLGVBQXZCQSxlQUFBLENBQXlCSSxJQUFJLENBQUNGLFFBQVEsRUFBRUQsVUFBVSxFQUFFWixRQUFRLENBQUM7RUFDL0Q7O0VBRUE7RUFDQWdCLFFBQVFBLENBQUEsRUFBRztJQUFBLElBQUFDLHNCQUFBO0lBQ1QsQ0FBQUEsc0JBQUEsT0FBSSxDQUFDUixTQUFTLENBQUNuRCxPQUFPLGNBQUEyRCxzQkFBQSxlQUF0QkEsc0JBQUEsQ0FBd0JELFFBQVEsQ0FBQyxDQUFDO0VBQ3BDO0VBRUFFLFVBQVVBLENBQUNDLE9BQWdCLEVBQUU7SUFBQSxJQUFBQyxzQkFBQTtJQUMzQixDQUFBQSxzQkFBQSxPQUFJLENBQUNYLFNBQVMsQ0FBQ25ELE9BQU8sY0FBQThELHNCQUFBLGVBQXRCQSxzQkFBQSxDQUF3QkYsVUFBVSxDQUFDQyxPQUFPLENBQUM7RUFDN0M7RUFFQUUsaUJBQWlCQSxDQUFDeEUsS0FBSyxFQUFlO0lBQUEsSUFBQXlFLHNCQUFBO0lBQUEsSUFBYnRELElBQUksR0FBQXVDLFNBQUEsQ0FBQW5ELE1BQUEsUUFBQW1ELFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQUcsSUFBSTtJQUNsQyxDQUFBZSxzQkFBQSxPQUFJLENBQUNiLFNBQVMsQ0FBQ25ELE9BQU8sY0FBQWdFLHNCQUFBLGVBQXRCQSxzQkFBQSxDQUF3QkMsWUFBWSxDQUFDMUUsS0FBSyxFQUFFbUIsSUFBSSxDQUFDO0VBQ25EO0VBRUF3RCxpQkFBaUJBLENBQUEsRUFBRztJQUFBLElBQUFDLHNCQUFBO0lBQ2xCLFFBQUFBLHNCQUFBLEdBQU8sSUFBSSxDQUFDaEIsU0FBUyxDQUFDbkQsT0FBTyxjQUFBbUUsc0JBQUEsdUJBQXRCQSxzQkFBQSxDQUF3QkMsWUFBWSxDQUFDLENBQUM7RUFDL0M7O0VBRUE7RUFDQUMsUUFBUUEsQ0FBQ3ZCLElBQVUsRUFBRTtJQUFBLElBQUF3QixxQkFBQSxFQUFBQyxzQkFBQTtJQUNuQixNQUFNO01BQ0pDLFNBQVM7TUFDVEgsUUFBUTtNQUNSSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO01BQ2pCQyxjQUFjLEdBQUcsU0FBUztNQUMxQkMsV0FBVyxHQUFHLENBQUMsQ0FBQztNQUNoQkMsYUFBYSxHQUFHLENBQUMsQ0FBQztNQUNsQkMsV0FBVyxHQUFHLENBQUMsQ0FBQztNQUNoQkMsYUFBYSxHQUFHLENBQUM7SUFDbkIsQ0FBQyxHQUFHLElBQUksQ0FBQ2pHLEtBQUs7SUFDZCxJQUFJa0csS0FBSyxHQUFHLElBQUk7SUFDaEIsTUFBTWxFLGVBQWUsSUFBQXlELHFCQUFBLEdBQUcsSUFBSSxDQUFDVSxRQUFRLENBQUNoRixPQUFPLGNBQUFzRSxxQkFBQSx1QkFBckJBLHFCQUFBLENBQXVCVyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ25FLE1BQU1uRSxnQkFBZ0IsSUFBQXlELHNCQUFBLEdBQUcsSUFBSSxDQUFDUyxRQUFRLENBQUNoRixPQUFPLGNBQUF1RSxzQkFBQSx1QkFBckJBLHNCQUFBLENBQXVCVyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3JFLElBQUlDLEdBQUcsR0FBR04sV0FBVyxDQUFDTCxTQUFTLEdBQUdLLFdBQVcsQ0FBQ0wsU0FBUyxHQUFHQSxTQUFTO0lBQ25FLElBQUkvQixNQUFXLEdBQUdtQyxhQUFhLENBQUNILFlBQVksR0FDeENHLGFBQWEsQ0FBQ0gsWUFBWSxHQUMxQkEsWUFBWTtJQUNoQixJQUFJQyxjQUFjLElBQUksU0FBUyxFQUFFO01BQy9CLElBQUk3RCxlQUFlLENBQUNmLE1BQU0sSUFBSSxDQUFDLEVBQUU7UUFDL0J4QyxPQUFPLENBQUM4SCxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQzdCO01BQ0Y7SUFDRjtJQUNBaEksS0FBSyxDQUFDaUksT0FBTyxDQUFDO01BQ1oxRSxPQUFPLEVBQUUsWUFBWTtNQUNyQjtNQUNBMkUsSUFBSSxFQUFFQSxDQUFBLEtBQU07UUFDVixJQUFJWCxXQUFXLENBQUNOLFFBQVEsRUFBRTtVQUN4QnJHLGNBQWMsQ0FDWjJHLFdBQVcsQ0FBQ04sUUFBUSxFQUNwQjtZQUNFaEMsT0FBTyxFQUFFLElBQUksQ0FBQ3hELEtBQUssQ0FBQ3dELE9BQU87WUFDM0JrRCxNQUFNLEVBQUViLGNBQWMsSUFBSSxTQUFTLEdBQUc1RCxnQkFBZ0IsR0FBR2dDLElBQUk7WUFDN0QwQyxHQUFHLEVBQUVkLGNBQWMsSUFBSSxTQUFTLEdBQUc3RCxlQUFlLEdBQUdpQyxJQUFJLGFBQUpBLElBQUksdUJBQUpBLElBQUksQ0FBRTJDLEVBQUU7WUFDN0RDLEtBQUssRUFBRSxJQUFJLENBQUM3RyxLQUFLLENBQUM2RztVQUNwQixDQUFDLEVBQ0QsSUFBSSxDQUFDN0csS0FBSyxDQUFDOEcsS0FDYixDQUFDO1VBQ0Q7UUFDRjtRQUNBLElBQUl0QixRQUFRLEVBQUU7VUFDWkEsUUFBUSxJQUNOQSxRQUFRLENBQUNLLGNBQWMsSUFBSSxTQUFTLEdBQUc3RCxlQUFlLEdBQUdpQyxJQUFJLENBQUM7VUFDaEU7UUFDRjtRQUNBLElBQUksQ0FBQ3FDLEdBQUcsRUFBRTtVQUNSLE1BQU0sSUFBSVMsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUM3QjtRQUNBLE1BQU07WUFBRTlDLElBQUksRUFBRStDLFVBQVUsR0FBRyxDQUFDO1VBQWtCLENBQUMsR0FBR3BELE1BQU07VUFBdEJxRCxXQUFXLEdBQUFDLHdCQUFBLENBQUt0RCxNQUFNLEVBQUF1RCxTQUFBO1FBQ3hELE1BQU1DLGFBQWEsR0FBQXpDLGFBQUE7VUFDakIwQyxNQUFNLEVBQUUsTUFBTTtVQUNkQyxVQUFVLEVBQUUsSUFBSTtVQUNoQjFELE1BQU0sRUFBQWUsYUFBQTtZQUNKZ0MsR0FBRyxFQUFFZCxjQUFjLElBQUksU0FBUyxHQUFHN0QsZUFBZSxDQUFDdUYsSUFBSSxDQUFDLENBQUMsR0FBR3RELElBQUksQ0FBQzJDO1VBQUUsR0FDaEVJLFVBQVU7UUFDZCxHQUNFZixhQUFhLENBQ2pCO1FBQ0QsSUFBSXVCLFdBQVcsR0FBRyxDQUFDLENBQVE7UUFDM0JBLFdBQVcsR0FBQTdDLGFBQUEsQ0FBQUEsYUFBQSxLQUFReUMsYUFBYSxHQUFLSCxXQUFXLENBQUU7UUFDbEQ1SCxPQUFPLENBQUNpSCxHQUFHLEVBQUEzQixhQUFBLEtBQ042QyxXQUFXLENBQ2YsQ0FBQyxDQUNDQyxJQUFJLENBQUMsVUFBVTNHLEdBQVEsRUFBRTtVQUN4QixNQUFNO1lBQUU0RztVQUFLLENBQUMsR0FBRzVHLEdBQUc7VUFDcEIsSUFBSTRHLElBQUksS0FBSyxHQUFHLEVBQUU7WUFBQSxJQUFBQyxlQUFBLEVBQUFDLHFCQUFBLEVBQUFDLHNCQUFBO1lBQ2hCcEosT0FBTyxDQUFDcUosT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUN4QixJQUFJcEgsS0FBSyxJQUFBaUgsZUFBQSxHQUFHekIsS0FBSyxDQUFDbkMsU0FBUyxjQUFBNEQsZUFBQSxnQkFBQUEsZUFBQSxHQUFmQSxlQUFBLENBQWlCeEcsT0FBTyxjQUFBd0csZUFBQSx1QkFBeEJBLGVBQUEsQ0FBMEJJLGVBQWUsQ0FBQyxDQUFDO1lBQ3ZELEVBQUFILHFCQUFBLEdBQUExQixLQUFLLENBQUNsRyxLQUFLLENBQUNnSSxXQUFXLGNBQUFKLHFCQUFBLHVCQUF2QkEscUJBQUEsQ0FBeUJLLGdCQUFnQixLQUN2QzlJLGNBQWMsRUFBQTBJLHNCQUFBLEdBQ1ozQixLQUFLLENBQUNsRyxLQUFLLENBQUNnSSxXQUFXLGNBQUFILHNCQUFBLHVCQUF2QkEsc0JBQUEsQ0FBeUJJLGdCQUFnQixFQUN6QztjQUFFekUsT0FBTyxFQUFFLElBQUksQ0FBQ3hELEtBQUssQ0FBQ3dEO1lBQVEsQ0FBQyxFQUMvQixJQUFJLENBQUN4RCxLQUFLLENBQUM4RyxLQUNiLENBQUM7WUFDSFosS0FBSyxDQUFDZ0MsU0FBUyxDQUFDeEgsS0FBSyxDQUFDO1VBQ3hCLENBQUMsTUFBTTtZQUNMakMsT0FBTyxDQUFDMEosS0FBSyxDQUFDLE9BQU8sQ0FBQztVQUN4QjtRQUNGLENBQUMsQ0FBQyxDQUNEQyxLQUFLLENBQUMsVUFBVUQsS0FBVSxFQUFFO1VBQzNCRSxPQUFPLENBQUNDLEdBQUcsQ0FBQyxPQUFPLEVBQUVILEtBQUssQ0FBQztRQUM3QixDQUFDLENBQUM7TUFDTjtJQUNGLENBQUMsQ0FBQztFQUNKO0VBQ0FELFNBQVNBLENBQUN0RSxNQUFXLEVBQXNCO0lBQUEsSUFBQTJFLHFCQUFBLEVBQUFDLHNCQUFBO0lBQUEsSUFBcEJ2QyxhQUFhLEdBQUE3QixTQUFBLENBQUFuRCxNQUFBLFFBQUFtRCxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLENBQUMsQ0FBQztJQUN2QyxNQUFNO01BQ0o2QixhQUFhLEVBQUV3QyxvQkFBb0IsR0FBRyxDQUFDLENBQUM7TUFDeEMxQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO01BQ2xCMkMsVUFBVSxHQUFHLENBQUM7SUFDaEIsQ0FBQyxHQUFHLElBQUksQ0FBQzFJLEtBQUs7SUFDZCxNQUFNO01BQUUySSxLQUFLLEVBQUVDO0lBQVcsQ0FBQyxHQUFHRixVQUFVO0lBQ3hDLElBQUkvRixXQUFnQixHQUFHLElBQUksQ0FBQ2tHLGtCQUFrQixDQUFDLENBQUM7SUFDaEQsSUFBSTVFLElBQUksR0FBR3RCLFdBQVcsQ0FBQ3NCLElBQUksSUFBSXRCLFdBQVcsQ0FBQ2lCLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDdkQsSUFBSTRELFdBQVcsR0FBQTdDLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLEtBQ1ZWLElBQUksSUFBQXNFLHFCQUFBLEdBQ0pLLFVBQVUsQ0FBQzNDLGFBQWEsY0FBQXNDLHFCQUFBLHVCQUF4QkEscUJBQUEsQ0FBMEIzRSxNQUFNLEdBQ2hDQSxNQUFNLENBQ1Y7SUFDRCxNQUFNO01BQUVrRixZQUFZLEVBQUVDLFdBQVcsR0FBRyxDQUFDO0lBQUUsQ0FBQyxHQUFHSCxVQUFVO0lBQ3JELE1BQU07UUFBRWhGLE1BQU0sRUFBRW9GLFdBQVcsR0FBRyxDQUFDO01BQXVCLENBQUMsR0FBR0QsV0FBVztNQUFoQ0UsZ0JBQWdCLEdBQUEvQix3QkFBQSxDQUFLNkIsV0FBVyxFQUFBRyxVQUFBO0lBQ3JFLENBQUFWLHNCQUFBLE9BQUksQ0FBQ3JDLFFBQVEsQ0FBQ2hGLE9BQU8sY0FBQXFILHNCQUFBLGVBQXJCQSxzQkFBQSxDQUF1QkcsS0FBSyxDQUFDUSxJQUFJLENBQUF4RSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLEtBQzVCOEQsb0JBQW9CLEdBQ3BCUSxnQkFBZ0IsR0FDaEJoRCxhQUFhO01BQ2hCckMsTUFBTSxFQUFBZSxhQUFBLENBQUFBLGFBQUEsS0FBT3FFLFdBQVcsR0FBS3hCLFdBQVc7SUFBRSxFQUMzQyxDQUFDO0VBQ0o7RUFDQTtFQUNBNUcsUUFBUUEsQ0FBQ2dELE1BQU0sRUFBRTtJQUFBLElBQUF3RixzQkFBQSxFQUFBQyxzQkFBQTtJQUNmLE1BQU07TUFDSnpJLFFBQVE7TUFDUm9ILFdBQVc7TUFDWGpDLGFBQWEsR0FBRyxDQUFDLENBQUM7TUFDbEIyQyxVQUFVLEdBQUcsQ0FBQztJQUNoQixDQUFDLEdBQUcsSUFBSSxDQUFDMUksS0FBSztJQUNkLE1BQU07TUFBRTJJLEtBQUssRUFBRUM7SUFBVyxDQUFDLEdBQUdGLFVBQVU7SUFDeEMsSUFBSS9GLFdBQWdCLEdBQUcsSUFBSSxDQUFDa0csa0JBQWtCLENBQUMsQ0FBQztJQUNoRCxJQUFJNUUsSUFBSSxHQUFHdEIsV0FBVyxDQUFDc0IsSUFBSSxJQUFJdEIsV0FBVyxDQUFDaUIsTUFBTSxJQUFJLENBQUMsQ0FBQztJQUN2RCxJQUFJNEQsV0FBVyxHQUFBN0MsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsS0FDVlYsSUFBSSxJQUFBbUYsc0JBQUEsR0FDSlIsVUFBVSxDQUFDM0MsYUFBYSxjQUFBbUQsc0JBQUEsdUJBQXhCQSxzQkFBQSxDQUEwQnhGLE1BQU0sR0FDaENBLE1BQU0sQ0FDVjtJQUNELElBQUloRCxRQUFRLEVBQUU7TUFDWkEsUUFBUSxDQUFBK0QsYUFBQSxDQUFBQSxhQUFBLEtBQU02QyxXQUFXLEdBQUssSUFBSSxDQUFDL0csS0FBSyxDQUFDNkIsZUFBZSxDQUFFLENBQUM7TUFDM0Q7SUFDRjtJQUNBLElBQUksQ0FBQzRGLFNBQVMsQ0FBQXZELGFBQUEsQ0FBQUEsYUFBQSxLQUFNNkMsV0FBVyxHQUFLLElBQUksQ0FBQy9HLEtBQUssQ0FBQzZCLGVBQWUsQ0FBRSxDQUFDO0lBQ2pFLENBQUEwRixXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRXNCLGVBQWUsS0FDMUJuSyxjQUFjLEVBQUFrSyxzQkFBQSxHQUNaLElBQUksQ0FBQ3JKLEtBQUssQ0FBQ2dJLFdBQVcsY0FBQXFCLHNCQUFBLHVCQUF0QkEsc0JBQUEsQ0FBd0JDLGVBQWUsRUFDdkM7TUFBRTlGLE9BQU8sRUFBRSxJQUFJLENBQUN4RCxLQUFLLENBQUN3RCxPQUFPO01BQUVJLE1BQU0sRUFBRUE7SUFBTyxDQUFDLEVBQy9DLElBQUksQ0FBQzVELEtBQUssQ0FBQzhHLEtBQ2IsQ0FBQztFQUNMO0VBQ0E7RUFDQXlDLFdBQVdBLENBQUEsRUFBK0I7SUFBQSxJQUFBQyxzQkFBQTtJQUFBLElBQTlCNUYsTUFBTSxHQUFBUSxTQUFBLENBQUFuRCxNQUFBLFFBQUFtRCxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLENBQUMsQ0FBQztJQUFBLElBQUVxRixRQUFRLEdBQUFyRixTQUFBLENBQUFuRCxNQUFBLFFBQUFtRCxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLElBQUk7SUFDdEMsQ0FBQW9GLHNCQUFBLE9BQUksQ0FBQ3JELFFBQVEsQ0FBQ2hGLE9BQU8sY0FBQXFJLHNCQUFBLGdCQUFBQSxzQkFBQSxHQUFyQkEsc0JBQUEsQ0FBdUJiLEtBQUssY0FBQWEsc0JBQUEsZUFBNUJBLHNCQUFBLENBQThCRSxNQUFNLENBQUM7TUFDbkNDLFFBQVEsRUFBRzdJLEdBQUcsSUFBSztRQUFBLElBQUE4SSxTQUFBO1FBQ2pCLElBQ0VILFFBQVEsSUFDUixDQUFBM0ksR0FBRyxhQUFIQSxHQUFHLGdCQUFBOEksU0FBQSxHQUFIOUksR0FBRyxDQUFFbUQsSUFBSSxjQUFBMkYsU0FBQSxnQkFBQUEsU0FBQSxHQUFUQSxTQUFBLENBQVdDLE9BQU8sY0FBQUQsU0FBQSx1QkFBbEJBLFNBQUEsQ0FBb0IzSSxNQUFNLEtBQUksQ0FBQyxJQUMvQixJQUFJLENBQUNSLEtBQUssQ0FBQ3FKLFdBQVcsS0FBSyxDQUFDLEVBQzVCO1VBQUEsSUFBQUMsc0JBQUE7VUFDQSxDQUFBQSxzQkFBQSxPQUFJLENBQUM1RCxRQUFRLENBQUNoRixPQUFPLGNBQUE0SSxzQkFBQSxnQkFBQUEsc0JBQUEsR0FBckJBLHNCQUFBLENBQXVCcEIsS0FBSyxjQUFBb0Isc0JBQUEsZUFBNUJBLHNCQUFBLENBQThCTCxNQUFNLENBQUM7WUFDbkM5RixNQUFNLEVBQUFlLGFBQUE7Y0FBSXhELE9BQU8sRUFBRTtZQUFDLEdBQUt5QyxNQUFNO1VBQ2pDLENBQUMsQ0FBQztRQUNKO01BQ0Y7SUFDRixDQUFDLENBQUM7RUFDSjtFQUNBb0csUUFBUUEsQ0FBQ3BHLE1BQVcsRUFBc0I7SUFBQSxJQUFBcUcscUJBQUE7SUFBQSxJQUFwQmhFLGFBQWEsR0FBQTdCLFNBQUEsQ0FBQW5ELE1BQUEsUUFBQW1ELFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQUcsQ0FBQyxDQUFDO0lBQ3RDLE1BQU07TUFBRTZCLGFBQWEsRUFBRXdDLG9CQUFvQixHQUFHLENBQUM7SUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDekksS0FBSztJQUMvRCxDQUFBaUsscUJBQUEsT0FBSSxDQUFDQyxPQUFPLENBQUMvSSxPQUFPLGNBQUE4SSxxQkFBQSxlQUFwQkEscUJBQUEsQ0FBc0J0QixLQUFLLENBQUNRLElBQUksQ0FBQXhFLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLEtBQzNCOEQsb0JBQW9CLEdBQ3BCeEMsYUFBYTtNQUNoQnJDLE1BQU0sRUFBRUE7SUFBTSxFQUNmLENBQUM7RUFDSjtFQUNBd0Msa0JBQWtCQSxDQUFBLEVBQUc7SUFBQSxJQUFBK0Qsc0JBQUE7SUFDbkIsUUFBQUEsc0JBQUEsR0FBTyxJQUFJLENBQUNoRSxRQUFRLENBQUNoRixPQUFPLGNBQUFnSixzQkFBQSx1QkFBckJBLHNCQUFBLENBQXVCL0Qsa0JBQWtCLENBQUMsQ0FBQztFQUNwRDtFQUNBQyxtQkFBbUJBLENBQUEsRUFBRztJQUFBLElBQUErRCxzQkFBQTtJQUNwQixRQUFBQSxzQkFBQSxHQUFPLElBQUksQ0FBQ2pFLFFBQVEsQ0FBQ2hGLE9BQU8sY0FBQWlKLHNCQUFBLHVCQUFyQkEsc0JBQUEsQ0FBdUIvRCxtQkFBbUIsQ0FBQyxDQUFDO0VBQ3JEO0VBQ0FnRSxrQkFBa0JBLENBQUNwRyxJQUE0QixFQUFFO0lBQUEsSUFBQXFHLHNCQUFBO0lBQy9DLFFBQUFBLHNCQUFBLEdBQU8sSUFBSSxDQUFDbkUsUUFBUSxDQUFDaEYsT0FBTyxjQUFBbUosc0JBQUEsdUJBQXJCQSxzQkFBQSxDQUF1QkQsa0JBQWtCLENBQUNwRyxJQUFJLENBQUM7RUFDeEQ7RUFDQXNHLG1CQUFtQkEsQ0FBQ3RHLElBQW1CLEVBQUU7SUFBQSxJQUFBdUcsc0JBQUE7SUFDdkMsUUFBQUEsc0JBQUEsR0FBTyxJQUFJLENBQUNyRSxRQUFRLENBQUNoRixPQUFPLGNBQUFxSixzQkFBQSx1QkFBckJBLHNCQUFBLENBQXVCRCxtQkFBbUIsQ0FBQ3RHLElBQUksQ0FBQztFQUN6RDtFQUNBd0csb0JBQW9CQSxDQUFBLEVBQUc7SUFBQSxJQUFBQyx1QkFBQTtJQUNyQixRQUFBQSx1QkFBQSxHQUFPLElBQUksQ0FBQ3ZFLFFBQVEsQ0FBQ2hGLE9BQU8sY0FBQXVKLHVCQUFBLHVCQUFyQkEsdUJBQUEsQ0FBdUJELG9CQUFvQixDQUFDLENBQUM7RUFDdEQ7RUFFQTFDLGVBQWVBLENBQUEsRUFBRztJQUFBLElBQUE0QyxnQkFBQTtJQUNoQixNQUFNQyxTQUFTLElBQUFELGdCQUFBLEdBQUcsSUFBSSxDQUFDNUcsU0FBUyxjQUFBNEcsZ0JBQUEsZ0JBQUFBLGdCQUFBLEdBQWRBLGdCQUFBLENBQWdCeEosT0FBTyxjQUFBd0osZ0JBQUEsdUJBQXZCQSxnQkFBQSxDQUF5QjVDLGVBQWUsQ0FBQyxDQUFDO0lBQzVELE9BQUFwRCxhQUFBLENBQUFBLGFBQUEsS0FBWWlHLFNBQVMsR0FBSyxJQUFJLENBQUNuSyxLQUFLLENBQUM2QixlQUFlO0VBQ3REO0VBRUF1SSxlQUFlQSxDQUFDNUcsSUFBSSxFQUFhO0lBQUEsSUFBWGpELElBQUksR0FBQW9ELFNBQUEsQ0FBQW5ELE1BQUEsUUFBQW1ELFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQUcsRUFBRTtJQUM3QixNQUFNO01BQUVzRTtJQUFXLENBQUMsR0FBRyxJQUFJLENBQUMxSSxLQUFLO0lBQ2pDLE1BQU07TUFBRThLLE1BQU0sR0FBRztJQUFLLENBQUMsR0FBR3BDLFVBQVU7SUFDcEMsSUFBSXFDLE1BQU0sR0FBRyxFQUFFO0lBQ2YsSUFBSWhLLEdBQUcsR0FBRyxFQUFFO0lBQ1osSUFBSWtELElBQUksQ0FBQytHLFVBQVUsRUFBRTtNQUNuQixNQUFNQyxRQUFRLEdBQUdoSCxJQUFJLENBQUMrRyxVQUFVO01BQ2hDQyxRQUFRLENBQUNDLEdBQUcsQ0FBQyxDQUFDQyxJQUFJLEVBQUVDLEtBQUssS0FBSztRQUM1QixJQUFJLE9BQU9OLE1BQU0sSUFBSSxVQUFVLEVBQUU7VUFDL0IvSixHQUFHLEdBQUcrSixNQUFNLENBQUNLLElBQUksQ0FBQztRQUNwQixDQUFDLE1BQU07VUFDTHBLLEdBQUcsR0FBR29LLElBQUksQ0FBQ0wsTUFBTSxDQUFDO1FBQ3BCO1FBQ0EsSUFBSUssSUFBSSxDQUFDSCxVQUFVLEVBQUU7VUFDbkIsSUFBSSxDQUFDSCxlQUFlLENBQUNNLElBQUksQ0FBQ0gsVUFBVSxFQUFFaEssSUFBSSxDQUFDO1FBQzdDLENBQUMsTUFBTTtVQUNMK0osTUFBTSxHQUFHLENBQUMsR0FBRy9KLElBQUksRUFBRUQsR0FBRyxDQUFDO1FBQ3pCO01BQ0YsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxNQUFNO01BQ0xnSyxNQUFNLEdBQUcsQ0FBQyxHQUFHL0osSUFBSSxFQUFFRCxHQUFHLENBQUM7SUFDekI7SUFDQSxPQUFPZ0ssTUFBTTtFQUNmO0VBRUFNLGlCQUFpQkEsQ0FBQ0MsV0FBZ0IsRUFBRUMsV0FBVyxFQUFFO0lBQy9DLE1BQU1DLElBQUksR0FBR0YsV0FBVyxDQUFDckssTUFBTSxHQUFHLENBQUM7SUFDbkMsTUFBTTtNQUFFd0ssVUFBVSxHQUFHO0lBQUssQ0FBQyxHQUFHLElBQUksQ0FBQ3pMLEtBQUs7SUFDeEMsTUFBTThCLE9BQU8sR0FBR3dKLFdBQVcsQ0FBQ0osR0FBRyxDQUFDLENBQUNDLElBQVMsRUFBRUMsS0FBVSxLQUFLO01BQ3pELE1BQUFNLFdBQUEsR0FBK0RQLElBQUksQ0FBQ25MLEtBQUs7UUFBbkU7VUFBRWlMLFFBQVE7VUFBRVUsUUFBUTtVQUFFQyxPQUFPO1VBQUVDLElBQUk7VUFBRWpIO1FBQWdCLENBQUMsR0FBQThHLFdBQUE7UUFBUjlILE1BQU0sR0FBQXNELHdCQUFBLENBQUF3RSxXQUFBLEVBQUFJLFVBQUE7TUFDMUQsSUFBSVYsS0FBSyxHQUFHLENBQUMsRUFBRTtRQUNiLG9CQUNFbE4sS0FBQSxDQUFBNk4sYUFBQTtVQUNFQyxTQUFTLEVBQUVyTixHQUFHLENBQ1pTLE9BQU8sQ0FBQ1MsTUFBTSxFQUFFLHFCQUFxQixDQUFDLEVBQ3RDVCxPQUFPLENBQUNTLE1BQU0sRUFBRSwyQkFBMkIsQ0FDN0M7UUFBRSxnQkFFRjNCLEtBQUEsQ0FBQTZOLGFBQUEsQ0FBQ3pOLE1BQU0sRUFBQTJOLFFBQUE7VUFDTGxMLEdBQUcsRUFBRXFLLEtBQU07VUFDWFEsT0FBTyxFQUFFQSxDQUFBLEtBQU07WUFDYixJQUFJLENBQUNsSyxRQUFRLENBQUM7Y0FDWmMsUUFBUSxFQUFFO1lBQ1osQ0FBQyxDQUFDO1lBQ0ZvSixPQUFPLElBQUlBLE9BQU8sQ0FBQyxDQUFDO1VBQ3RCO1FBQUUsR0FDRWhJLE1BQU07VUFDVi9CLElBQUksRUFBRTtRQUFPLGlCQUViM0QsS0FBQSxDQUFBNk4sYUFBQTtVQUFNQyxTQUFTLEVBQUU1TSxPQUFPLENBQUNTLE1BQU0sRUFBRSxtQkFBbUI7UUFBRSxHQUNuRGdNLElBQ0csQ0FBQyxlQUNQM04sS0FBQSxDQUFBNk4sYUFBQTtVQUFNQyxTQUFTLEVBQUU1TSxPQUFPLENBQUNTLE1BQU0sRUFBRSxtQkFBbUI7UUFBRSxHQUNuRG9MLFFBQ0csQ0FDQSxDQUNMLENBQUM7TUFFVjtJQUNGLENBQUMsQ0FBQztJQUVGLG9CQUNFL00sS0FBQSxDQUFBNk4sYUFBQTtNQUNFQyxTQUFTLEVBQUVyTixHQUFHLENBQUNTLE9BQU8sQ0FBQ1MsTUFBTSxFQUFFLDJCQUEyQixDQUFDLENBQUU7TUFDN0RxTSxLQUFLLEVBQUU7UUFBRUMsVUFBVSxFQUFFO01BQUU7SUFBRSxHQUV4QmIsV0FBVyxDQUFDSixHQUFHLENBQUMsQ0FBQ0MsSUFBUyxFQUFFQyxLQUFVLEtBQUs7TUFDMUMsSUFBSUksSUFBSSxFQUFFO1FBQ1IsSUFBSUosS0FBSyxHQUFHLENBQUMsRUFBRTtVQUNiLG9CQUNFbE4sS0FBQSxDQUFBNk4sYUFBQTtZQUNFaEwsR0FBRyxFQUFFcUssS0FBTTtZQUNYYyxLQUFLLEVBQUU7Y0FDTEUsV0FBVyxFQUFFO1lBQ2Y7VUFBRSxHQUVEakIsSUFDRSxDQUFDO1FBRVYsQ0FBQyxNQUFNLElBQUlDLEtBQUssSUFBSSxDQUFDLEVBQUU7VUFDckIsb0JBQ0VsTixLQUFBLENBQUE2TixhQUFBLENBQUN2TixPQUFPO1lBQ05zRCxPQUFPLEVBQUVBLE9BQVE7WUFDakJ1SyxLQUFLLEVBQUUsSUFBSztZQUNaQyxTQUFTLEVBQUMsUUFBUTtZQUNsQnZMLEdBQUcsRUFBRXFLLEtBQU07WUFDWG1CLElBQUksRUFBRSxJQUFJLENBQUM5TCxLQUFLLENBQUMrQixRQUFTO1lBQzFCZ0ssWUFBWSxFQUFHRCxJQUFJLElBQUs7Y0FDdEIsSUFBSUEsSUFBSSxFQUFFO2dCQUNSLElBQUksQ0FBQzdLLFFBQVEsQ0FBQztrQkFDWmMsUUFBUSxFQUFFO2dCQUNaLENBQUMsQ0FBQztjQUNKLENBQUMsTUFBTTtnQkFDTCxJQUFJLENBQUNkLFFBQVEsQ0FBQztrQkFDWmMsUUFBUSxFQUFFO2dCQUNaLENBQUMsQ0FBQztjQUNKO1lBQ0Y7WUFDQTtZQUNBO1VBQUEsZ0JBRUF0RSxLQUFBLENBQUE2TixhQUFBLENBQUN6TixNQUFNO1lBQUN1RCxJQUFJLEVBQUM7VUFBUyxHQUFDLGVBQ2xCLGVBQUEzRCxLQUFBLENBQUE2TixhQUFBLENBQUNuTixZQUFZLE1BQUUsQ0FDWixDQUNELENBQUM7UUFFZCxDQUFDLE1BQU07VUFDTCxPQUFPLElBQUk7UUFDYjtNQUNGLENBQUMsTUFBTTtRQUNMLG9CQUNFVixLQUFBLENBQUE2TixhQUFBO1VBQ0VoTCxHQUFHLEVBQUVxSyxLQUFNO1VBQ1hjLEtBQUssRUFBRTtZQUNMRSxXQUFXLEVBQUVoQixLQUFLLElBQUlFLFdBQVcsQ0FBQ3JLLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHO1VBQ3JEO1FBQUUsR0FFRGtLLElBQ0UsQ0FBQztNQUVWO0lBQ0YsQ0FBQyxDQUNFLENBQUM7RUFFVjtFQUNBc0Isa0JBQWtCQSxDQUFDQyxhQUFrQixFQUFFQyxTQUFjLEVBQUU7SUFDckQsTUFBTTtNQUFFQyxXQUFXO01BQUVsRSxVQUFVLEdBQUcsQ0FBQztJQUFFLENBQUMsR0FBRyxJQUFJLENBQUMxSSxLQUFLO0lBQ25ELE1BQU07TUFBRTZNO0lBQWlCLENBQUMsR0FBR3ZOLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLE1BQU13TixVQUFVLEdBQUcsRUFBRTtJQUNyQixNQUFNO01BQUVoQyxNQUFNLEdBQUc7SUFBSyxDQUFDLEdBQUdwQyxVQUFVO0lBRXBDLElBQUkzSCxHQUFHLEdBQUcsRUFBRTtJQUNaLElBQUksT0FBTytKLE1BQU0sSUFBSSxVQUFVLEVBQUU7TUFDL0IvSixHQUFHLEdBQUcrSixNQUFNLENBQUM2QixTQUFTLENBQUM7SUFDekIsQ0FBQyxNQUFNO01BQ0w1TCxHQUFHLEdBQUc0TCxTQUFTLENBQUM3QixNQUFNLENBQUM7SUFDekI7SUFDQSxJQUFJaUMsUUFBUSxHQUFHLEtBQUs7SUFDcEIsSUFBSSxDQUFBSCxXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRUcsUUFBUSxNQUFLLElBQUksSUFBSUYsZ0JBQWdCLENBQUNFLFFBQVEsS0FBSyxJQUFJLEVBQ3RFQSxRQUFRLEdBQUcsSUFBSTtJQUNqQkwsYUFBYSxDQUFDeEIsR0FBRyxDQUFDLENBQUNDLElBQVMsRUFBRUMsS0FBVSxLQUFLO01BQzNDLE1BQUE0QixZQUFBLEdBQ0U3QixJQUFJLENBQUNuTCxLQUFLO1FBRE47VUFBRWlMLFFBQVE7VUFBRVUsUUFBUTtVQUFFQyxPQUFPO1VBQUVDLElBQUk7VUFBRW9CO1FBQXNCLENBQUMsR0FBQUQsWUFBQTtRQUFScEosTUFBTSxHQUFBc0Qsd0JBQUEsQ0FBQThGLFlBQUEsRUFBQUUsVUFBQTtNQUVoRSxJQUFJRCxVQUFVLEVBQUU7UUFDZCxJQUFJLE9BQU9BLFVBQVUsSUFBSSxRQUFRLEVBQUU7VUFDakMsSUFBSTtZQUNGLE1BQU1FLFdBQVcsR0FBRztjQUNsQnpHLE1BQU0sRUFBRWlHLFNBQVM7Y0FDakJuSixPQUFPLEVBQUUsSUFBSSxDQUFDeEQsS0FBSyxDQUFDd0QsT0FBTztjQUMzQnFELEtBQUssRUFBRSxJQUFJLENBQUM3RyxLQUFLLENBQUM2RztZQUNwQixDQUFDO1lBQ0QsTUFBTUMsS0FBSyxHQUFBbkMsYUFBQSxLQUFRLElBQUksQ0FBQzNFLEtBQUssQ0FBQ29OLEtBQUssQ0FBRTtZQUNyQyxJQUFJQyxJQUFJLEdBQUcsSUFBSUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFTCxVQUFVLENBQUM7WUFDeEQsTUFBTXJJLElBQUksR0FBR3lJLElBQUksQ0FBQ0YsV0FBVyxFQUFFckcsS0FBSyxDQUFDO1lBQ3JDbEMsSUFBSSxJQUFJa0ksVUFBVSxDQUFDUyxJQUFJLENBQUNwQyxJQUFJLENBQUM7VUFDL0IsQ0FBQyxDQUFDLE9BQU9xQyxDQUFDLEVBQUU7WUFDVixJQUFJOUcsTUFBTSxHQUFHaUcsU0FBUztZQUN0QixJQUFJYyxJQUFJLENBQUNSLFVBQVUsQ0FBQyxFQUFFO2NBQ3BCSCxVQUFVLENBQUNTLElBQUksQ0FBQ3BDLElBQUksQ0FBQztZQUN2QjtVQUNGO1FBQ0YsQ0FBQyxNQUFNLElBQUksT0FBTzhCLFVBQVUsSUFBSSxVQUFVLEVBQUU7VUFDMUMsTUFBTXJJLElBQUksR0FBR3FJLFVBQVUsQ0FBQ04sU0FBUyxDQUFDO1VBQ2xDL0gsSUFBSSxJQUFJa0ksVUFBVSxDQUFDUyxJQUFJLENBQUNwQyxJQUFJLENBQUM7UUFDL0I7TUFDRixDQUFDLE1BQU07UUFDTDJCLFVBQVUsQ0FBQ1MsSUFBSSxDQUFDcEMsSUFBSSxDQUFDO01BQ3ZCO0lBQ0YsQ0FBQyxDQUFDO0lBQ0YsSUFBSXVDLE1BQU0sR0FBR2QsV0FBVyxhQUFYQSxXQUFXLGVBQVhBLFdBQVcsQ0FBRWUsWUFBWSxHQUNsQ2YsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUVlLFlBQVksR0FDekJkLGdCQUFnQixhQUFoQkEsZ0JBQWdCLGVBQWhCQSxnQkFBZ0IsQ0FBRWMsWUFBWSxHQUM5QmQsZ0JBQWdCLGFBQWhCQSxnQkFBZ0IsdUJBQWhCQSxnQkFBZ0IsQ0FBRWMsWUFBWSxHQUM5QixDQUFDO0lBQ0wsSUFBSW5DLElBQUksR0FBRyxLQUFLO0lBQ2hCLElBQUlrQyxNQUFNLElBQUksS0FBSyxFQUFFO01BQ25CbEMsSUFBSSxHQUFHLEtBQUs7SUFDZCxDQUFDLE1BQU07TUFDTEEsSUFBSSxHQUFHc0IsVUFBVSxDQUFDN0wsTUFBTSxHQUFHeU0sTUFBTTtJQUNuQztJQUVBLE1BQU01TCxPQUFPLEdBQUdnTCxVQUFVLENBQUM1QixHQUFHLENBQUMsQ0FBQ0MsSUFBUyxFQUFFQyxLQUFVLEtBQUs7TUFDeEQsTUFBQXdDLFlBQUEsR0FDRXpDLElBQUksQ0FBQ25MLEtBQUs7UUFETjtVQUFFaUwsUUFBUTtVQUFFVSxRQUFRO1VBQUVDLE9BQU87VUFBRXFCLFVBQVU7VUFBRXBCLElBQUk7VUFBRWpIO1FBQWdCLENBQUMsR0FBQWdKLFlBQUE7UUFBUmhLLE1BQU0sR0FBQXNELHdCQUFBLENBQUEwRyxZQUFBLEVBQUFDLFVBQUE7TUFFdEUsSUFBSXpDLEtBQUssR0FBRzBDLE1BQU0sQ0FBQ0osTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQzlCLG9CQUNFeFAsS0FBQSxDQUFBNk4sYUFBQSxDQUFDek4sTUFBTSxFQUFBMk4sUUFBQTtVQUNMRCxTQUFTLEVBQUVyTixHQUFHLENBQ1pTLE9BQU8sQ0FBQ1MsTUFBTSxFQUFFLHFCQUFxQixDQUFDLEVBQ3RDVCxPQUFPLENBQUNTLE1BQU0sRUFBRSwyQkFBMkIsQ0FDN0MsQ0FBRTtVQUNGa0IsR0FBRyxFQUFFcUssS0FBTTtVQUNYUSxPQUFPLEVBQUVBLENBQUEsS0FBTTtZQUNiLElBQUkzSCxJQUFJLEdBQUFVLGFBQUEsS0FBUSxJQUFJLENBQUNsRSxLQUFLLENBQUM4QixRQUFRLENBQUU7WUFDckMwQixJQUFJLENBQUMwSSxTQUFTLENBQUMvRixFQUFFLENBQUMsR0FBRyxLQUFLO1lBQzFCLElBQUksQ0FBQ2xGLFFBQVEsQ0FBQztjQUNaYSxRQUFRLEVBQUUwQjtZQUNaLENBQUMsQ0FBQztZQUNGMkgsT0FBTyxJQUFJQSxPQUFPLENBQUNlLFNBQVMsQ0FBQztVQUMvQjtRQUFFLEdBQ0UvSSxNQUFNO1VBQ1YvQixJQUFJLEVBQUU7UUFBTyxJQUVaa0wsUUFBUSxLQUFLLEtBQUssaUJBQ2pCN08sS0FBQSxDQUFBNk4sYUFBQTtVQUFNQyxTQUFTLEVBQUU1TSxPQUFPLENBQUNTLE1BQU0sRUFBRSxtQkFBbUI7UUFBRSxHQUNuRGdNLElBQ0csQ0FDUCxlQUNEM04sS0FBQSxDQUFBNk4sYUFBQTtVQUFNQyxTQUFTLEVBQUU1TSxPQUFPLENBQUNTLE1BQU0sRUFBRSxtQkFBbUI7UUFBRSxHQUNuRG9MLFFBQ0csQ0FDQSxDQUFDO01BRWI7SUFDRixDQUFDLENBQUM7SUFDRixPQUFPNkIsVUFBVSxDQUFDNUIsR0FBRyxDQUFDLENBQUNDLElBQVMsRUFBRUMsS0FBVSxLQUFLO01BQy9DLE1BQUEyQyxZQUFBLEdBQ0U1QyxJQUFJLENBQUNuTCxLQUFLO1FBRE47VUFBRWlMLFFBQVE7VUFBRVUsUUFBUTtVQUFFQyxPQUFPO1VBQUVxQixVQUFVO1VBQUVwQjtRQUFnQixDQUFDLEdBQUFrQyxZQUFBO1FBQVJuSyxNQUFNLEdBQUFzRCx3QkFBQSxDQUFBNkcsWUFBQSxFQUFBQyxVQUFBO01BRWhFLElBQUl4QyxJQUFJLEVBQUU7UUFDUixJQUFJSixLQUFLLEdBQUdzQyxNQUFNLEVBQUU7VUFDbEIsb0JBQ0V4UCxLQUFBLENBQUE2TixhQUFBLENBQUN6TixNQUFNLEVBQUEyTixRQUFBO1lBQ0xELFNBQVMsRUFBRXJOLEdBQUcsQ0FBQ1MsT0FBTyxDQUFDUyxNQUFNLEVBQUUscUJBQXFCLENBQUMsRUFBRTtjQUNyRCxDQUFDVCxPQUFPLENBQUNTLE1BQU0sRUFBRSwyQkFBMkIsQ0FBQyxHQUFHdUwsS0FBSyxLQUFLO1lBQzVELENBQUMsQ0FBRTtZQUNIckssR0FBRyxFQUFFcUssS0FBTTtZQUNYUSxPQUFPLEVBQUVBLENBQUEsS0FBTTtjQUNiQSxPQUFPLElBQUlBLE9BQU8sQ0FBQ2UsU0FBUyxDQUFDO1lBQy9CLENBQUU7WUFDRmQsSUFBSSxFQUFFQTtVQUFLLEdBQ1BqSSxNQUFNO1lBQ1YvQixJQUFJLEVBQUU7VUFBTyxJQUVaa0wsUUFBUSxLQUFLLEtBQUssaUJBQ2pCN08sS0FBQSxDQUFBNk4sYUFBQTtZQUFNQyxTQUFTLEVBQUU1TSxPQUFPLENBQUNTLE1BQU0sRUFBRSxtQkFBbUI7VUFBRSxHQUNuRGdNLElBQ0csQ0FDUCxlQUNEM04sS0FBQSxDQUFBNk4sYUFBQTtZQUFNQyxTQUFTLEVBQUU1TSxPQUFPLENBQUNTLE1BQU0sRUFBRSxtQkFBbUI7VUFBRSxHQUNuRG9MLFFBQ0csQ0FDQSxDQUFDO1FBRWIsQ0FBQyxNQUFNLElBQUlHLEtBQUssSUFBSXNDLE1BQU0sRUFBRTtVQUMxQixvQkFDRXhQLEtBQUEsQ0FBQTZOLGFBQUEsQ0FBQ3ZOLE9BQU87WUFDTjhOLFNBQVMsRUFBQyxRQUFRO1lBQ2xCRCxLQUFLLEVBQUUsSUFBSztZQUNadkssT0FBTyxFQUFFQSxPQUFRO1lBQ2pCbU0sT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFFO1lBQ25CbE4sR0FBRyxFQUFFcUssS0FBTTtZQUNYbUIsSUFBSSxFQUFFLElBQUksQ0FBQzlMLEtBQUssQ0FBQzhCLFFBQVEsQ0FBQ3hCLEdBQUcsQ0FBQyxJQUFJLEtBQU07WUFDeEN5TCxZQUFZLEVBQUdELElBQUksSUFBSztjQUN0QixJQUFJQSxJQUFJLEVBQUU7Z0JBQ1IsSUFBSXRJLElBQUksR0FBQVUsYUFBQSxLQUFRLElBQUksQ0FBQ2xFLEtBQUssQ0FBQzhCLFFBQVEsQ0FBRTtnQkFDckMwQixJQUFJLENBQUNsRCxHQUFHLENBQUMsR0FBRyxJQUFJO2dCQUNoQixJQUFJLENBQUNXLFFBQVEsQ0FBQztrQkFDWmEsUUFBUSxFQUFFMEI7Z0JBQ1osQ0FBQyxDQUFDO2NBQ0osQ0FBQyxNQUFNO2dCQUNMLElBQUksQ0FBQ3ZDLFFBQVEsQ0FBQztrQkFDWmEsUUFBUSxFQUFFLENBQUM7Z0JBQ2IsQ0FBQyxDQUFDO2NBQ0o7WUFDRjtZQUNBO1VBQUEsZ0JBRUFyRSxLQUFBLENBQUE2TixhQUFBO1lBQUdDLFNBQVMsRUFBRTVNLE9BQU8sQ0FBQ1MsTUFBTSxFQUFFLHFCQUFxQjtVQUFFLGdCQUNuRDNCLEtBQUEsQ0FBQTZOLGFBQUEsQ0FBQzlNLGdCQUFnQixNQUFFLENBQ2xCLENBQ0ksQ0FBQztRQUVkLENBQUMsTUFBTTtVQUNMLE9BQU8sSUFBSTtRQUNiO01BQ0YsQ0FBQyxNQUFNO1FBQ0wsb0JBQ0VmLEtBQUEsQ0FBQTZOLGFBQUEsQ0FBQ3pOLE1BQU0sRUFBQTJOLFFBQUE7VUFDTEQsU0FBUyxFQUFFck4sR0FBRyxDQUFDUyxPQUFPLENBQUNTLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxFQUFFO1lBQ3JELENBQUNULE9BQU8sQ0FBQ1MsTUFBTSxFQUFFLDJCQUEyQixDQUFDLEdBQUd1TCxLQUFLLEtBQUs7VUFDNUQsQ0FBQyxDQUFFO1VBQ0hySyxHQUFHLEVBQUVxSyxLQUFNO1VBQ1hRLE9BQU8sRUFBRUEsQ0FBQSxLQUFNO1lBQ2JBLE9BQU8sSUFBSUEsT0FBTyxDQUFDZSxTQUFTLENBQUM7VUFDL0I7UUFBRSxHQUNFL0ksTUFBTTtVQUNWL0IsSUFBSSxFQUFDO1FBQU0sSUFFVmtMLFFBQVEsS0FBSyxLQUFLLGlCQUNqQjdPLEtBQUEsQ0FBQTZOLGFBQUE7VUFBTUMsU0FBUyxFQUFFNU0sT0FBTyxDQUFDUyxNQUFNLEVBQUUsbUJBQW1CO1FBQUUsR0FDbkRnTSxJQUNHLENBQ1AsZUFDRDNOLEtBQUEsQ0FBQTZOLGFBQUE7VUFBTUMsU0FBUyxFQUFFNU0sT0FBTyxDQUFDUyxNQUFNLEVBQUUsbUJBQW1CO1FBQUUsR0FDbkRvTCxRQUNHLENBQ0EsQ0FBQztNQUViO0lBQ0YsQ0FBQyxDQUFDO0lBQ0Y7RUFDRjtFQUNBO0VBQ0FpRCxVQUFVQSxDQUFDQyxZQUFpQixFQUFFQyxHQUFRLEVBQUU7SUFBQSxJQUFBQyxnQkFBQSxFQUFBQyxzQkFBQSxFQUFBQyxzQkFBQTtJQUN0QyxJQUFJQyxPQUFPLEdBQUcsRUFBRTtJQUNoQixNQUFNO01BQ0pDLFNBQVMsR0FBRyxLQUFLO01BQ2pCQyxXQUFXLEdBQUcsRUFBRTtNQUNoQkMsWUFBWSxHQUFHO0lBQ2pCLENBQUMsR0FBRyxJQUFJLENBQUMzTyxLQUFLLENBQUM0TyxTQUFTO0lBQ3hCLE1BQU07TUFBRTFNO0lBQWdCLENBQUMsR0FBRyxJQUFJLENBQUN6QixLQUFLO0lBQ3RDLE1BQU07TUFBRUksUUFBUTtNQUFFZ087SUFBYyxDQUFDLEdBQUdULEdBQUc7SUFFdkMsSUFBSXZOLFFBQVEsRUFBRTtNQUNaMk4sT0FBTyxHQUFHSyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUNDLE9BQU8sQ0FBQ0MsU0FBUyxDQUFDTixTQUFTLENBQUM7TUFDdkQsSUFBSUUsWUFBWSxFQUFFO1FBQ2hCLElBQUksQ0FBQ2pOLFFBQVEsQ0FBQztVQUNaUSxlQUFlLEVBQUVpTSxZQUFZLENBQUMsQ0FBQyxDQUFDO1VBQ2hDN0wsZUFBZSxFQUFFO1lBQUUsQ0FBQ29NLFdBQVcsR0FBR0Y7VUFBUTtRQUM1QyxDQUFDLENBQUM7TUFDSixDQUFDLE1BQU07UUFDTCxJQUFJSyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUNHLE1BQU0sSUFBSSxDQUFDSCxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM1RCxRQUFRLEVBQUU7VUFDekQsSUFBSWtELFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBS2pNLGVBQWUsRUFBRTtZQUN2QyxJQUFJLENBQUNSLFFBQVEsQ0FBQztjQUNaUSxlQUFlLEVBQUVpTSxZQUFZLENBQUMsQ0FBQyxDQUFDO2NBQ2hDN0wsZUFBZSxFQUFFO2dCQUFFLENBQUNvTSxXQUFXLEdBQUdGO2NBQVE7WUFDNUMsQ0FBQyxDQUFDO1VBQ0o7UUFDRjtNQUNGO0lBQ0YsQ0FBQyxNQUFNO01BQ0wsSUFBSSxDQUFDOU0sUUFBUSxDQUFDO1FBQ1pRLGVBQWUsRUFBRXNNLE9BQU87UUFDeEJsTSxlQUFlLEVBQUUsQ0FBQztNQUNwQixDQUFDLENBQUM7SUFDSjtJQUNBLElBQUksSUFBSSxDQUFDdEMsS0FBSyxDQUFDaVAsWUFBWSxFQUFFO01BQzNCLElBQUksQ0FBQ2pQLEtBQUssQ0FBQ2lQLFlBQVksQ0FBQ2QsWUFBWSxFQUFFQyxHQUFHLENBQUM7TUFDMUM7SUFDRjtJQUNBLE1BQU14RCxTQUFTLEdBQUcsRUFBQXlELGdCQUFBLE9BQUksQ0FBQ3RLLFNBQVMsY0FBQXNLLGdCQUFBLGdCQUFBQSxnQkFBQSxHQUFkQSxnQkFBQSxDQUFnQmxOLE9BQU8sY0FBQWtOLGdCQUFBLHVCQUF2QkEsZ0JBQUEsQ0FBeUJ0RyxlQUFlLENBQUMsQ0FBQyxLQUFJLENBQUMsQ0FBQztJQUNsRTJHLFdBQVcsSUFBSSxJQUFJLENBQUN4RyxTQUFTLENBQUF2RCxhQUFBLENBQUFBLGFBQUEsS0FBTWlHLFNBQVM7TUFBRSxDQUFDOEQsV0FBVyxHQUFHRjtJQUFPLEVBQUUsQ0FBQztJQUN2RSxFQUFBRixzQkFBQSxPQUFJLENBQUN0TyxLQUFLLENBQUNnSSxXQUFXLGNBQUFzRyxzQkFBQSx1QkFBdEJBLHNCQUFBLENBQXdCWSxrQkFBa0IsS0FDeEMvUCxjQUFjLEVBQUFvUCxzQkFBQSxHQUNaLElBQUksQ0FBQ3ZPLEtBQUssQ0FBQ2dJLFdBQVcsY0FBQXVHLHNCQUFBLHVCQUF0QkEsc0JBQUEsQ0FBd0JXLGtCQUFrQixFQUMxQztNQUFFMUwsT0FBTyxFQUFFLElBQUksQ0FBQ3hELEtBQUssQ0FBQ3dELE9BQU87TUFBRTJLLFlBQVksRUFBRUEsWUFBWTtNQUFFQyxHQUFHLEVBQUVBO0lBQUksQ0FBQyxFQUNyRSxJQUFJLENBQUNwTyxLQUFLLENBQUM4RyxLQUNiLENBQUM7SUFDSDtJQUNBO0lBQ0E7SUFDQTtFQUNGO0VBQ0FxSSxXQUFXQSxDQUFBLEVBQUc7SUFBQSxJQUFBQyxzQkFBQTtJQUNaLENBQUFBLHNCQUFBLE9BQUksQ0FBQ3JMLFNBQVMsQ0FBQzVDLE9BQU8sY0FBQWlPLHNCQUFBLGVBQXRCQSxzQkFBQSxDQUF3QkMsV0FBVyxDQUFDLENBQUM7RUFDdkM7RUFDQUMsT0FBT0EsQ0FBQ3RQLEtBQUssRUFBRXVQLElBQUksRUFBRTtJQUFBLElBQUFDLFdBQUE7SUFDbkIsSUFBSUMsT0FBTyxHQUFHRixJQUFJO0lBQ2xCLElBQUl2UCxLQUFLLGFBQUxBLEtBQUssZUFBTEEsS0FBSyxDQUFFaUUsSUFBSSxJQUFJLENBQUFqRSxLQUFLLGFBQUxBLEtBQUssZ0JBQUF3UCxXQUFBLEdBQUx4UCxLQUFLLENBQUVpRSxJQUFJLGNBQUF1TCxXQUFBLHVCQUFYQSxXQUFBLENBQWF2TyxNQUFNLElBQUcsQ0FBQyxFQUFFO01BQzFDLElBQUlnRCxJQUFJLEdBQUdqRSxLQUFLLENBQUNpRSxJQUFJO01BQ3JCLEtBQUssSUFBSXlMLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsSUFBR3pMLElBQUksYUFBSkEsSUFBSSx1QkFBSkEsSUFBSSxDQUFFaEQsTUFBTSxHQUFFeU8sQ0FBQyxFQUFFLEVBQUU7UUFDckMsSUFBSXpMLElBQUksQ0FBQ3lMLENBQUMsQ0FBQyxDQUFDaFAsS0FBSyxJQUFJNk8sSUFBSSxFQUFFO1VBQ3pCRSxPQUFPLEdBQUd4TCxJQUFJLENBQUN5TCxDQUFDLENBQUMsQ0FBQ3ZMLEtBQUs7UUFDekI7TUFDRjtJQUNGO0lBQ0EsT0FBT3NMLE9BQU87RUFDaEI7RUFDQUUsWUFBWUEsQ0FBQzFMLElBQUksRUFBRTtJQUFBLElBQUEyTCx1QkFBQTtJQUNqQixDQUFBQSx1QkFBQSxPQUFJLENBQUN6SixRQUFRLENBQUNoRixPQUFPLGNBQUF5Tyx1QkFBQSxnQkFBQUEsdUJBQUEsR0FBckJBLHVCQUFBLENBQXVCakgsS0FBSyxjQUFBaUgsdUJBQUEsZUFBNUJBLHVCQUFBLENBQThCQyxPQUFPLENBQUM1TCxJQUFJLENBQUM7RUFDN0M7RUFDQTZMLFdBQVdBLENBQUM3TCxJQUFJLEVBQUU7SUFBQSxJQUFBOEwsc0JBQUE7SUFDaEIsQ0FBQUEsc0JBQUEsT0FBSSxDQUFDN0YsT0FBTyxDQUFDL0ksT0FBTyxjQUFBNE8sc0JBQUEsZ0JBQUFBLHNCQUFBLEdBQXBCQSxzQkFBQSxDQUFzQnBILEtBQUssY0FBQW9ILHNCQUFBLGVBQTNCQSxzQkFBQSxDQUE2QkYsT0FBTyxDQUFDNUwsSUFBSSxDQUFDO0VBQzVDO0VBWUE0RSxrQkFBa0JBLENBQUEsRUFBRztJQUNuQixNQUFNO01BQUU5QyxhQUFhLEdBQUcsQ0FBQztJQUFFLENBQUMsR0FBRyxJQUFJLENBQUMvRixLQUFLO0lBQ3pDLElBQUkyQyxXQUFnQixHQUFHb0QsYUFBYSxDQUFDcEQsV0FBVztJQUNoRCxJQUFJQSxXQUFXLElBQUksT0FBT0EsV0FBVyxJQUFJLFFBQVEsRUFBRTtNQUNqRCxNQUFNbUUsS0FBSyxHQUFHLElBQUksQ0FBQzlHLEtBQUssQ0FBQzhHLEtBQUssSUFBSSxDQUFDLENBQUM7TUFDcEMsSUFBSXVHLElBQUksR0FBRyxJQUFJQyxRQUFRLENBQUMsT0FBTyxFQUFFM0ssV0FBVyxDQUFDO01BQzdDLElBQUlxTixZQUFZLEdBQUczQyxJQUFJLENBQUN2RyxLQUFLLENBQUM7TUFDOUJuRSxXQUFXLEdBQUdxTixZQUFZO0lBQzVCLENBQUMsTUFBTTtNQUNMck4sV0FBVyxHQUFHQSxXQUFXLElBQUksQ0FBQyxDQUFDO0lBQ2pDO0lBQ0EsT0FBT0EsV0FBVztFQUNwQjtFQXdCQXNOLE1BQU1BLENBQUEsRUFBRztJQUFBLElBQUFDLE1BQUE7TUFBQUMsbUJBQUE7TUFBQUMsb0JBQUE7SUFDUCxNQUFNO01BQ0pDLE9BQU8sR0FBRyxFQUFFO01BQ1o1RSxVQUFVLEdBQUcsSUFBSTtNQUNqQlIsUUFBUTtNQUNScUYsU0FBUyxHQUFHLEVBQUU7TUFDZDVILFVBQVUsR0FBRyxDQUFDLENBQUM7TUFDZmtHLFNBQVMsR0FBRyxDQUFDLENBQUM7TUFDZDJCLFNBQVMsR0FBRyxDQUFDLENBQUM7TUFDZEMsYUFBYSxHQUFHLENBQUMsQ0FBQztNQUNsQkMsUUFBUSxHQUFHLEtBQUs7TUFDaEJDLFlBQVksR0FBRyxDQUFDLENBQUM7TUFDakJDLGNBQWMsR0FBRyxJQUFJO01BQ3JCQyxPQUFPLEdBQUcsRUFBRTtNQUNaQyxVQUFVLEdBQUcsSUFBSTtNQUNqQkMsVUFBVTtNQUNWQyxlQUFlLEdBQUcsSUFBSTtNQUN0Qi9FLFNBQVM7TUFDVGdGLGtCQUFrQixHQUFHLFFBQVE7TUFDN0JwRSxXQUFXO01BQ1gvRyxjQUFjLEdBQUcsU0FBUztNQUMxQkMsV0FBVyxHQUFHLENBQUMsQ0FBQztNQUNoQm1MLFVBQVUsR0FBRztRQUFFQyxHQUFHLEVBQUU7TUFBTSxDQUFDO01BQzNCbkwsYUFBYSxHQUFHLENBQUMsQ0FBQztNQUNsQkMsV0FBVyxHQUFHLENBQUM7SUFDakIsQ0FBQyxHQUFHLElBQUksQ0FBQ2hHLEtBQUs7SUFDZCxNQUFNO1FBQ0oySSxLQUFLLEVBQUVDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDdEJ1SSxZQUFZLEdBQUcsSUFBSTtRQUNuQkMsWUFBWSxHQUFHLElBQUk7UUFDbkJDLGdCQUFnQixHQUFHLElBQUk7UUFDdkJDLFdBQVcsR0FBRyxJQUFJO1FBQ2xCQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2Y1QyxZQUFZLEdBQUcsSUFBSTtRQUNuQnRDLEtBQUssRUFBRW1GO01BRVQsQ0FBQyxHQUFHOUksVUFBVTtNQURUK0ksZ0JBQWdCLEdBQUF2Syx3QkFBQSxDQUNqQndCLFVBQVUsRUFBQWdKLFVBQUE7SUFDZCxJQUFJQyxhQUFhLEdBQUFoTixhQUFBLEtBQVFpRSxVQUFVLENBQUU7SUFDckMsSUFBSTdDLGFBQWEsQ0FBQ3BELFdBQVcsRUFBRTtNQUFBLElBQUFpUCxxQkFBQTtNQUM3QixJQUFJalAsV0FBZ0IsR0FBRyxJQUFJLENBQUNrRyxrQkFBa0IsQ0FBQyxDQUFDO01BQ2hELElBQUk1RSxJQUFJLEdBQUcsQ0FBQXRCLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFc0IsSUFBSSxNQUFJdEIsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUVpQixNQUFNLEtBQUksQ0FBQyxDQUFDO01BQ3pEK04sYUFBYSxDQUFDMUwsYUFBYSxHQUFHO1FBQzVCckMsTUFBTSxFQUFBZSxhQUFBLENBQUFBLGFBQUEsS0FBT1YsSUFBSSxJQUFBMk4scUJBQUEsR0FBS0QsYUFBYSxDQUFDMUwsYUFBYSxjQUFBMkwscUJBQUEsdUJBQTNCQSxxQkFBQSxDQUE2QmhPLE1BQU07TUFDM0QsQ0FBQztJQUNIO0lBQ0EsTUFBTTtRQUNKK0UsS0FBSyxFQUFFa0osU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNyQnBHLFVBQVUsRUFBRXFHLFVBQVUsR0FBRyxJQUFJO1FBQzdCQyxVQUFVLEdBQUcsT0FBTztRQUNwQjFGLEtBQUssRUFBRTJGO01BRVQsQ0FBQyxHQUFHcEQsU0FBUztNQURScUQsZUFBZSxHQUFBL0ssd0JBQUEsQ0FDaEIwSCxTQUFTLEVBQUFzRCxVQUFBO0lBRWIsSUFBSUMsV0FBVyxHQUFBeE4sYUFBQTtNQUNid00sWUFBWTtNQUNaeEksS0FBSyxFQUFBaEUsYUFBQSxLQUFPZ04sYUFBYTtJQUFFLEdBQ3hCRixnQkFBZ0IsQ0FDYjtJQUNSLE1BQU1XLFlBQWlCLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLE1BQU0xRixhQUFrQixHQUFHLEVBQUU7SUFDN0IsTUFBTTtNQUFFaks7SUFBYyxDQUFDLEdBQUcsSUFBSSxDQUFDaEMsS0FBSztJQUNwQyxJQUFJaUMsaUJBQWlCLEdBQUcsRUFBRTtJQUMxQixJQUFJdU8sVUFBVSxDQUFDQyxHQUFHLElBQUlELFVBQVUsQ0FBQ29CLFFBQVEsRUFBRTtNQUN6QzNQLGlCQUFpQixHQUNmbEQsbUJBQW1CLENBQUN5UixVQUFVLENBQUNvQixRQUFRLENBQUMsQ0FBQ0MsVUFBVSxJQUFJLEVBQUU7SUFDN0Q7SUFDQSxNQUFNbEUsR0FBRyxHQUFHMU8sY0FBYyxDQUFDMlEsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLElBQUlrQyxXQUFrQixHQUFHNVMsYUFBYSxDQUFDMFEsT0FBTyxFQUFFLElBQUksQ0FBQ3JRLEtBQUssQ0FBQztJQUMzRCxNQUFNd1MsV0FBVyxHQUFHcEUsR0FBRyxDQUFDb0UsV0FBVyxJQUFJLEVBQUU7SUFDekMsTUFBTUMsV0FBVyxHQUFHckUsR0FBRyxDQUFDcUUsV0FBVyxJQUFJLEVBQUU7SUFDekMsTUFBTUMsV0FBZ0IsR0FBRyxFQUFFO0lBQzNCLE1BQU07TUFBRTdGO0lBQWlCLENBQUMsR0FBR3ZOLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLElBQUl5TixRQUFRLEdBQUcsSUFBSTtJQUNuQixJQUFJLENBQUFILFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFRyxRQUFRLE1BQUssS0FBSyxFQUFFQSxRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQ2pELElBQUlGLGdCQUFnQixDQUFDRSxRQUFRLEtBQUssS0FBSyxFQUFFQSxRQUFRLEdBQUcsS0FBSztJQUM5RCxNQUFNNEYsU0FBUyxHQUFHO01BQ2hCQyxNQUFNLEVBQUU7UUFBRXRTLElBQUksRUFBRSxJQUFJO1FBQUVvSCxJQUFJLEVBQUUsUUFBUTtRQUFFbUUsSUFBSSxlQUFFM04sS0FBQSxDQUFBNk4sYUFBQSxDQUFDak4sWUFBWSxNQUFFO01BQUUsQ0FBQztNQUM5RCtULE1BQU0sRUFBRTtRQUFFdlMsSUFBSSxFQUFFLElBQUk7UUFBRW9ILElBQUksRUFBRSxRQUFRO1FBQUVtRSxJQUFJLGVBQUUzTixLQUFBLENBQUE2TixhQUFBLENBQUM3TSxjQUFjLE1BQUU7TUFBRSxDQUFDO01BQ2hFNFQsTUFBTSxFQUFFO1FBQUV4UyxJQUFJLEVBQUUsSUFBSTtRQUFFb0gsSUFBSSxFQUFFLFFBQVE7UUFBRW1FLElBQUksZUFBRTNOLEtBQUEsQ0FBQTZOLGFBQUEsQ0FBQ2xOLFdBQVcsTUFBRTtNQUFFO0lBQzlELENBQUM7SUFDRCxNQUFNa1UsWUFBWSxHQUFHLFNBQUFBLENBQUNyTCxJQUFJLEVBQW1DO01BQUEsSUFBQXNMLGVBQUE7TUFBQSxJQUFqQ3BPLElBQUksR0FBQVIsU0FBQSxDQUFBbkQsTUFBQSxRQUFBbUQsU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxFQUFFO01BQUEsSUFBRTZPLFlBQVksR0FBQTdPLFNBQUEsQ0FBQW5ELE1BQUEsUUFBQW1ELFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQUcsQ0FBQyxDQUFDO01BQ3RELElBQUlwRSxLQUFLLEdBQUEyRSxhQUFBO1FBQ1BrSCxJQUFJLEVBQUVrQixRQUFRLEdBQUc0RixTQUFTLENBQUNqTCxJQUFJLENBQUMsQ0FBQ21FLElBQUksR0FBRyxJQUFJO1FBQzVDaEssSUFBSSxFQUFFO01BQU0sR0FDVG9SLFlBQVksQ0FDVDtNQUVSLElBQUlyTyxJQUFJLEVBQUU7UUFDUjVFLEtBQUssR0FBQTJFLGFBQUEsQ0FBQUEsYUFBQSxLQUFRM0UsS0FBSztVQUFFaU4sVUFBVSxFQUFFckk7UUFBSSxFQUFFO01BQ3hDO01BQ0Esb0JBQ0UxRyxLQUFBLENBQUE2TixhQUFBLENBQUN6TixNQUFNLEVBQUEyTixRQUFBO1FBQ0xMLE9BQU8sRUFBR2xGLE1BQVcsSUFBSztVQUN4QixJQUFJZ0IsSUFBSSxJQUFJLFFBQVEsRUFBRTtZQUNwQndJLE1BQUksQ0FBQzFLLFFBQVEsQ0FBQ2tCLE1BQU0sQ0FBQztVQUN2QixDQUFDLE1BQU07WUFDTCxJQUFJZ0IsSUFBSSxJQUFJLFFBQVEsSUFBSTVCLFdBQVcsQ0FBQ29OLFFBQVEsRUFBRTtjQUM1Qy9ULGNBQWMsQ0FDWjJHLFdBQVcsQ0FBQ29OLFFBQVEsRUFDcEI7Z0JBQ0UxUCxPQUFPLEVBQUUwTSxNQUFJLENBQUNsUSxLQUFLLENBQUN3RCxPQUFPO2dCQUMzQmtELE1BQU0sRUFBRUEsTUFBTSxDQUFDcUksU0FBUyxJQUFJckksTUFBTTtnQkFDbENHLEtBQUssRUFBRXFKLE1BQUksQ0FBQ2xRLEtBQUssQ0FBQzZHO2NBQ3BCLENBQUMsRUFDRHFKLE1BQUksQ0FBQ2xRLEtBQUssQ0FBQzhHLEtBQ2IsQ0FBQztjQUNEO1lBQ0YsQ0FBQyxNQUFNLElBQUlZLElBQUksSUFBSSxRQUFRLElBQUk1QixXQUFXLENBQUNsRixRQUFRLEVBQUU7Y0FDbkR6QixjQUFjLENBQ1oyRyxXQUFXLENBQUNsRixRQUFRLEVBQ3BCO2dCQUNFNEMsT0FBTyxFQUFFME0sTUFBSSxDQUFDbFEsS0FBSyxDQUFDd0QsT0FBTztnQkFDM0JrRCxNQUFNLEVBQUVBLE1BQU0sQ0FBQ3FJLFNBQVMsSUFBSXJJLE1BQU07Z0JBQ2xDRyxLQUFLLEVBQUVxSixNQUFJLENBQUNsUSxLQUFLLENBQUM2RztjQUNwQixDQUFDLEVBQ0RxSixNQUFJLENBQUNsUSxLQUFLLENBQUM4RyxLQUNiLENBQUM7Y0FDRDtZQUNGO1lBQ0EsSUFBSWdLLFVBQVUsRUFBRTtjQUNkQSxVQUFVLENBQUNwSyxNQUFNLENBQUNxSSxTQUFTLElBQUlySSxNQUFNLEVBQUVnQixJQUFJLENBQUM7Y0FDNUM7WUFDRjtZQUVBd0ksTUFBSSxDQUFDM0wsUUFBUSxDQUFDbUMsTUFBTSxDQUFDcUksU0FBUyxJQUFJckksTUFBTSxFQUFFZ0IsSUFBSSxFQUFFLE1BQU07Y0FBQSxJQUFBeUwscUJBQUEsRUFBQUMsc0JBQUE7Y0FDcEQsSUFBSXZQLFFBQVEsR0FDVjZELElBQUksSUFBSSxRQUFRLElBQUF5TCxxQkFBQSxHQUNaakQsTUFBSSxDQUFDbFEsS0FBSyxDQUFDZ0ksV0FBVyxjQUFBbUwscUJBQUEsdUJBQXRCQSxxQkFBQSxDQUF3QkUsZ0JBQWdCLElBQUFELHNCQUFBLEdBQ3hDbEQsTUFBSSxDQUFDbFEsS0FBSyxDQUFDZ0ksV0FBVyxjQUFBb0wsc0JBQUEsdUJBQXRCQSxzQkFBQSxDQUF3QkUsZ0JBQWdCO2NBQzlDelAsUUFBUSxJQUNOMUUsY0FBYyxDQUNaMEUsUUFBUSxFQUNSO2dCQUNFTCxPQUFPLEVBQUUwTSxNQUFJLENBQUNsUSxLQUFLLENBQUN3RCxPQUFPO2dCQUMzQmtELE1BQU0sRUFBRUEsTUFBTSxDQUFDcUksU0FBUyxJQUFJckksTUFBTTtnQkFDbENHLEtBQUssRUFBRXFKLE1BQUksQ0FBQ2xRLEtBQUssQ0FBQzZHO2NBQ3BCLENBQUMsRUFDRHFKLE1BQUksQ0FBQ2xRLEtBQUssQ0FBQzhHLEtBQ2IsQ0FBQztZQUNMLENBQUMsQ0FBQztVQUNKO1FBQ0Y7TUFBRSxHQUNFOUcsS0FBSyxJQUFBZ1QsZUFBQSxHQUVSTCxTQUFTLENBQUNqTCxJQUFJLENBQUMsY0FBQXNMLGVBQUEsdUJBQWZBLGVBQUEsQ0FBaUIxUyxJQUNaLENBQUM7SUFFYixDQUFDO0lBQ0QsTUFBTWlULGFBQWEsR0FBSTdMLElBQUksSUFBSztNQUM5QixJQUFJLENBQUN1SixVQUFVLENBQUNDLEdBQUcsRUFBRTtRQUNuQixPQUFPLElBQUk7TUFDYixDQUFDLE1BQU07UUFDTCxPQUFPeE8saUJBQWlCLENBQUM4USxPQUFPLENBQUM5TCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7TUFDN0M7SUFDRixDQUFDO0lBQ0RrSixPQUFPLENBQUMxRixHQUFHLENBQUVDLElBQVMsSUFBSztNQUN6QixJQUFJLENBQUNBLElBQUksSUFBSSxLQUFLLElBQUlBLElBQUksQ0FBQ3pELElBQUksSUFBSSxLQUFLLEtBQUs2TCxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDakViLFdBQVcsQ0FBQ25GLElBQUksZUFDZHJQLEtBQUEsQ0FBQTZOLGFBQUEsQ0FBQ3pOLE1BQU07VUFDTHVELElBQUksRUFBRSxTQUFVO1VBQ2hCK0osT0FBTyxFQUFFQSxDQUFBLEtBQU07WUFDYixNQUFNO2NBQUVrRixVQUFVO2NBQUVoTCxXQUFXLEdBQUcsQ0FBQztZQUFFLENBQUMsR0FBRyxJQUFJLENBQUM5RixLQUFLO1lBQ25ELElBQUk4RixXQUFXLGFBQVhBLFdBQVcsZUFBWEEsV0FBVyxDQUFFMk4sS0FBSyxFQUFFO2NBQ3RCdFUsY0FBYyxDQUNaMkcsV0FBVyxDQUFDMk4sS0FBSyxFQUNqQjtnQkFDRWpRLE9BQU8sRUFBRSxJQUFJLENBQUN4RCxLQUFLLENBQUN3RCxPQUFPO2dCQUMzQnFELEtBQUssRUFBRSxJQUFJLENBQUM3RyxLQUFLLENBQUM2RztjQUNwQixDQUFDLEVBQ0QsSUFBSSxDQUFDN0csS0FBSyxDQUFDOEcsS0FDYixDQUFDO2NBQ0Q7WUFDRjtZQUNBLElBQUlnSyxVQUFVLEVBQUU7Y0FDZEEsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7Y0FDdkI7WUFDRjtZQUNBLElBQUksQ0FBQ3ZNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU07Y0FBQSxJQUFBbVAsc0JBQUEsRUFBQUMsc0JBQUE7Y0FDOUIsRUFBQUQsc0JBQUEsT0FBSSxDQUFDMVQsS0FBSyxDQUFDZ0ksV0FBVyxjQUFBMEwsc0JBQUEsdUJBQXRCQSxzQkFBQSxDQUF3QkUsYUFBYSxLQUNuQ3pVLGNBQWMsRUFBQXdVLHNCQUFBLEdBQ1osSUFBSSxDQUFDM1QsS0FBSyxDQUFDZ0ksV0FBVyxjQUFBMkwsc0JBQUEsdUJBQXRCQSxzQkFBQSxDQUF3QkMsYUFBYSxFQUNyQztnQkFDRXBRLE9BQU8sRUFBRSxJQUFJLENBQUN4RCxLQUFLLENBQUN3RCxPQUFPO2dCQUMzQnFELEtBQUssRUFBRSxJQUFJLENBQUM3RyxLQUFLLENBQUM2RztjQUNwQixDQUFDLEVBQ0QsSUFBSSxDQUFDN0csS0FBSyxDQUFDOEcsS0FDYixDQUFDO1lBQ0wsQ0FBQyxDQUFDO1VBQ0osQ0FBRTtVQUNGK0UsSUFBSSxlQUFFM04sS0FBQSxDQUFBNk4sYUFBQSxDQUFDL00sWUFBWSxNQUFFO1FBQUUsR0FDeEIsY0FFTyxDQUNWLENBQUM7TUFDSCxDQUFDLE1BQU0sSUFDTCxDQUFDbU0sSUFBSSxJQUFJLFFBQVEsSUFBSUEsSUFBSSxDQUFDekQsSUFBSSxJQUFJLFFBQVEsS0FDMUM2TCxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQ3ZCO1FBQ0EsSUFBSTFOLGNBQWMsSUFBSSxTQUFTLEVBQUU7VUFDL0I2TSxXQUFXLENBQUNuRixJQUFJLGVBQ2RyUCxLQUFBLENBQUE2TixhQUFBLENBQUN6TjtVQUNDO1VBQUE7WUFDQXNOLE9BQU8sRUFBRSxJQUFJLENBQUNwRyxRQUFRLENBQUNxTyxJQUFJLENBQUMsSUFBSSxDQUFFO1lBQ2xDaEksSUFBSSxlQUFFM04sS0FBQSxDQUFBNk4sYUFBQSxDQUFDN00sY0FBYyxNQUFFLENBQUU7WUFDekI0VSxNQUFNO1VBQUEsR0FDUCxjQUVPLENBQ1YsQ0FBQztRQUNILENBQUMsTUFBTTtVQUNMcEgsYUFBYSxDQUFDYSxJQUFJLENBQ2hCd0YsWUFBWSxDQUFDNUgsSUFBSSxDQUFDekQsSUFBSSxJQUFJeUQsSUFBSSxFQUFFQSxJQUFJLENBQUM4QixVQUFVLEVBQUU5QixJQUFJLENBQUNuTCxLQUFLLElBQUksQ0FBQyxDQUFDLENBQ25FLENBQUM7UUFDSDtNQUNGLENBQUMsTUFBTTtRQUNMLElBQUl1VCxhQUFhLENBQUNwSSxJQUFJLENBQUN6RCxJQUFJLEdBQUd5RCxJQUFJLENBQUN6RCxJQUFJLEdBQUd5RCxJQUFJLENBQUMsRUFBRTtVQUMvQ3VCLGFBQWEsQ0FBQ2EsSUFBSSxDQUNoQndGLFlBQVksQ0FDVjVILElBQUksQ0FBQ3pELElBQUksR0FBR3lELElBQUksQ0FBQ3pELElBQUksR0FBR3lELElBQUksRUFDNUJBLElBQUksQ0FBQzhCLFVBQVUsRUFDZjlCLElBQUksQ0FBQ25MLEtBQUssSUFBSSxDQUFDLENBQ2pCLENBQ0YsQ0FBQztRQUNIO01BQ0Y7SUFDRixDQUFDLENBQUM7SUFFRixJQUFJK1QsS0FBSyxDQUFDQyxPQUFPLENBQUMvSSxRQUFRLENBQUMsRUFBRTtNQUMzQkEsUUFBUSxDQUFDQyxHQUFHLENBQUVDLElBQVMsSUFBSztRQUMxQixJQUFJNEksS0FBSyxDQUFDQyxPQUFPLENBQUM3SSxJQUFJLENBQUMsRUFBRTtVQUN2QkEsSUFBSSxDQUFDRCxHQUFHLENBQUUrSSxLQUFLLElBQUs7WUFBQSxJQUFBQyxZQUFBLEVBQUFDLGFBQUEsRUFBQUMsYUFBQSxFQUFBQyxhQUFBLEVBQUFDLGFBQUE7WUFDbEIsSUFDRSxDQUFBTCxLQUFLLGFBQUxBLEtBQUssZ0JBQUFDLFlBQUEsR0FBTEQsS0FBSyxDQUFFalUsS0FBSyxjQUFBa1UsWUFBQSx1QkFBWkEsWUFBQSxDQUFjdkksUUFBUSxLQUFJLFlBQVksSUFDdEM0SCxhQUFhLENBQUNVLEtBQUssYUFBTEEsS0FBSyxnQkFBQUUsYUFBQSxHQUFMRixLQUFLLENBQUVqVSxLQUFLLGNBQUFtVSxhQUFBLHVCQUFaQSxhQUFBLENBQWN6TSxJQUFJLENBQUMsRUFDakM7Y0FDQWdMLFdBQVcsQ0FBQ25GLElBQUksQ0FBQzBHLEtBQUssQ0FBQztZQUN6QixDQUFDLE1BQU0sSUFDTCxDQUFDLENBQUFBLEtBQUssYUFBTEEsS0FBSyxnQkFBQUcsYUFBQSxHQUFMSCxLQUFLLENBQUVqVSxLQUFLLGNBQUFvVSxhQUFBLHVCQUFaQSxhQUFBLENBQWN6SSxRQUFRLEtBQUksY0FBYyxJQUN2QyxDQUFBc0ksS0FBSyxhQUFMQSxLQUFLLGdCQUFBSSxhQUFBLEdBQUxKLEtBQUssQ0FBRWpVLEtBQUssY0FBQXFVLGFBQUEsdUJBQVpBLGFBQUEsQ0FBYzFJLFFBQVEsS0FBSSxjQUFjLEtBQzFDNEgsYUFBYSxDQUFDVSxLQUFLLGFBQUxBLEtBQUssZ0JBQUFLLGFBQUEsR0FBTEwsS0FBSyxDQUFFalUsS0FBSyxjQUFBc1UsYUFBQSx1QkFBWkEsYUFBQSxDQUFjNU0sSUFBSSxDQUFDLEVBQ2pDO2NBQ0FnRixhQUFhLENBQUNhLElBQUksQ0FBQzBHLEtBQUssQ0FBQztZQUMzQjtVQUNGLENBQUMsQ0FBQztRQUNKLENBQUMsTUFBTTtVQUFBLElBQUFNLFlBQUEsRUFBQUMsWUFBQSxFQUFBQyxZQUFBLEVBQUFDLFlBQUEsRUFBQUMsWUFBQTtVQUNMLElBQ0UsQ0FBQXhKLElBQUksYUFBSkEsSUFBSSxnQkFBQW9KLFlBQUEsR0FBSnBKLElBQUksQ0FBRW5MLEtBQUssY0FBQXVVLFlBQUEsdUJBQVhBLFlBQUEsQ0FBYTVJLFFBQVEsS0FBSSxZQUFZLElBQ3JDNEgsYUFBYSxDQUFDcEksSUFBSSxhQUFKQSxJQUFJLGdCQUFBcUosWUFBQSxHQUFKckosSUFBSSxDQUFFbkwsS0FBSyxjQUFBd1UsWUFBQSx1QkFBWEEsWUFBQSxDQUFhOU0sSUFBSSxDQUFDLEVBQ2hDO1lBQ0FnTCxXQUFXLENBQUNuRixJQUFJLENBQUNwQyxJQUFJLENBQUM7VUFDeEIsQ0FBQyxNQUFNLElBQ0wsQ0FBQyxDQUFBQSxJQUFJLGFBQUpBLElBQUksZ0JBQUFzSixZQUFBLEdBQUp0SixJQUFJLENBQUVuTCxLQUFLLGNBQUF5VSxZQUFBLHVCQUFYQSxZQUFBLENBQWE5SSxRQUFRLEtBQUksY0FBYyxJQUN0QyxDQUFBUixJQUFJLGFBQUpBLElBQUksZ0JBQUF1SixZQUFBLEdBQUp2SixJQUFJLENBQUVuTCxLQUFLLGNBQUEwVSxZQUFBLHVCQUFYQSxZQUFBLENBQWEvSSxRQUFRLEtBQUksY0FBYyxLQUN6QzRILGFBQWEsQ0FBQ3BJLElBQUksYUFBSkEsSUFBSSxnQkFBQXdKLFlBQUEsR0FBSnhKLElBQUksQ0FBRW5MLEtBQUssY0FBQTJVLFlBQUEsdUJBQVhBLFlBQUEsQ0FBYWpOLElBQUksQ0FBQyxFQUNoQztZQUNBZ0YsYUFBYSxDQUFDYSxJQUFJLENBQUNwQyxJQUFJLENBQUM7VUFDMUI7UUFDRjtNQUNGLENBQUMsQ0FBQztJQUNKLENBQUMsTUFBTSxJQUFJRixRQUFRLEVBQUU7TUFDbkIsTUFBTTtRQUFFakw7TUFBVyxDQUFDLEdBQUdpTCxRQUFRO01BQy9CLElBQUksQ0FBQWpMLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFMkwsUUFBUSxLQUFJLFlBQVksSUFBSTRILGFBQWEsQ0FBQ3ZULEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFMEgsSUFBSSxDQUFDLEVBQUU7UUFDakVnTCxXQUFXLENBQUNuRixJQUFJLENBQUN0QyxRQUFRLENBQUM7TUFDNUIsQ0FBQyxNQUFNLElBQ0wsQ0FBQyxDQUFBakwsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUUyTCxRQUFRLEtBQUksY0FBYyxJQUNoQyxDQUFBM0wsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUUyTCxRQUFRLEtBQUksY0FBYyxLQUNuQzRILGFBQWEsQ0FBQ3ZULEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFMEgsSUFBSSxDQUFDLEVBQzFCO1FBQ0FnRixhQUFhLENBQUNhLElBQUksQ0FBQ3RDLFFBQVEsQ0FBQztNQUM5QjtJQUNGO0lBQ0FtRyxZQUFZLElBQ1ZtQixXQUFXLENBQUNoRixJQUFJLENBQUM7TUFDZmxCLEtBQUssRUFBRSxJQUFJO01BQ1h1SSxTQUFTLEVBQUUsUUFBUTtNQUNuQkMsS0FBSyxFQUFFakksV0FBVyxhQUFYQSxXQUFXLGVBQVhBLFdBQVcsQ0FBRWtJLFNBQVMsR0FDekJsSSxXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRWtJLFNBQVMsR0FDdEJqSSxnQkFBZ0IsQ0FBQ2lJLFNBQVMsR0FDMUJqSSxnQkFBZ0IsQ0FBQ2lJLFNBQVMsR0FDMUIsTUFBTTtNQUNWQyxLQUFLLEVBQUVuSSxXQUFXLGFBQVhBLFdBQVcsZUFBWEEsV0FBVyxDQUFFbUksS0FBSyxHQUNyQm5JLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFbUksS0FBSyxHQUNsQmxJLGdCQUFnQixDQUFDa0ksS0FBSyxHQUN0QmxJLGdCQUFnQixDQUFDa0ksS0FBSyxHQUN0QixHQUFHO01BQ1BDLEtBQUssRUFBRSxPQUFPO01BQ2QvRSxNQUFNLEVBQUVBLENBQUNWLElBQVMsRUFBRTdJLE1BQVcsS0FBSztRQUNsQyxvQkFDRXhJLEtBQUEsQ0FBQTZOLGFBQUE7VUFBS0MsU0FBUyxFQUFFNU0sT0FBTyxDQUFDUyxNQUFNLEVBQUUscUJBQXFCO1FBQUUsR0FDcEQsSUFBSSxDQUFDNE0sa0JBQWtCLENBQUNDLGFBQWEsRUFBRWhHLE1BQU0sQ0FDM0MsQ0FBQztNQUVWO0lBQ0YsQ0FBQyxDQUFDO0lBRUosSUFBSTRLLFdBQVcsRUFDYmlCLFdBQVcsR0FBRyxDQUNaO01BQ0VsRyxLQUFLLEVBQUUsSUFBSTtNQUNYMEksS0FBSyxFQUFFLEVBQUU7TUFDVEYsS0FBSyxFQUFFLFFBQVE7TUFDZjVFLE1BQU0sRUFBRUEsQ0FBQ1YsSUFBSSxFQUFFMEYsT0FBTyxFQUFFN0osS0FBSyxLQUFLO1FBQ2hDLG9CQUFPbE4sS0FBQSxDQUFBNk4sYUFBQSxDQUFBN04sS0FBQSxDQUFBZ1gsUUFBQSxRQUFHOUosS0FBSyxHQUFHLENBQUksQ0FBQztNQUN6QjtJQUNGLENBQUMsRUFDRCxHQUFHbUgsV0FBVyxDQUNmO0lBQ0gsSUFBSTRDLFVBQVUsR0FBRzFKLFVBQVUsSUFBSStHLFdBQVcsQ0FBQ3ZSLE1BQU0sR0FBRyxDQUFDO0lBQ3JELElBQUk7TUFBRW1VO0lBQVUsQ0FBQyxHQUFHOVYsTUFBTSxDQUFDLENBQUM7SUFDNUIsSUFBSStWLFFBQVEsR0FDVjFFLGNBQWMsSUFDZCtCLFdBQVcsQ0FBQ3pSLE1BQU0sR0FBRyxDQUFDLElBQ3RCK1Asa0JBQWtCLElBQUksUUFBUTtJQUNoQyxJQUFJekYsV0FBVyxHQUFHLEVBQ2hCN0MsVUFBVSxDQUFDNE0sT0FBTyxJQUFJLEtBQUssSUFDM0IsRUFBQW5GLG1CQUFBLEdBQUF6SCxVQUFVLENBQUM0TSxPQUFPLGNBQUFuRixtQkFBQSx1QkFBbEJBLG1CQUFBLENBQW9CdkwsSUFBSSxLQUFJLEtBQUssSUFDakMsRUFBQXdMLG9CQUFBLEdBQUExSCxVQUFVLENBQUM0TSxPQUFPLGNBQUFsRixvQkFBQSxnQkFBQUEsb0JBQUEsR0FBbEJBLG9CQUFBLENBQW9CbUYsS0FBSyxjQUFBbkYsb0JBQUEsdUJBQXpCQSxvQkFBQSxDQUEyQm5QLE1BQU0sS0FBSSxDQUFDLElBQ3RDLENBQUFtVSxTQUFTLGFBQVRBLFNBQVMsdUJBQVRBLFNBQVMsQ0FBRXhRLElBQUksS0FBSSxLQUFLLENBQ3pCO0lBQ0QsSUFBSXRELFlBQVksR0FBR21LLFVBQVUsSUFBSStHLFdBQVcsQ0FBQ3ZSLE1BQU0sR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25FLElBQUl1VSxVQUFVLEdBQUdoRSxVQUFVLElBQUk2RCxRQUFRLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDaEQsSUFBSUksYUFBYSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1QixJQUFJQyxrQkFBa0IsR0FDcEJqVCxhQUFhLEdBQUcrUyxVQUFVLEdBQUdDLGFBQWEsR0FBR25VLFlBQVk7SUFDM0QsSUFBSXFVLGdCQUFnQixHQUFHak4sVUFBVSxDQUFDa04sVUFBVSxLQUFLLEtBQUssR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLElBQUlDLFdBQVcsR0FBR0gsa0JBQWtCLEdBQUdDLGdCQUFnQjtJQUN2RCxJQUFJRyxnQkFBZ0IsR0FDbEJKLGtCQUFrQixHQUFHLElBQUksQ0FBQ2pWLEtBQUssQ0FBQ2dCLGlCQUFpQixHQUFHLENBQUMsR0FDakQsSUFBSSxDQUFDaEIsS0FBSyxDQUFDZ0IsaUJBQWlCLEdBQzVCLEVBQUUsR0FBR2tVLGdCQUFnQjtJQUMzQjtJQUNBLE1BQU1JLE1BQU0sR0FBRzVELFdBQVcsQ0FBQzRELE1BQU07SUFDakM1RCxXQUFXLEdBQUF4TixhQUFBLENBQUFBLGFBQUEsS0FDTndOLFdBQVc7TUFDZDRELE1BQU0sRUFBQXBSLGFBQUE7UUFBSXFSLENBQUMsRUFBRSxhQUFhO1FBQUVDLENBQUMsRUFBRUg7TUFBZ0IsR0FBS0MsTUFBTTtJQUFFLEVBQzdEO0lBQ0Q7SUFDQSxvQkFDRTdYLEtBQUEsQ0FBQTZOLGFBQUE7TUFDRUMsU0FBUyxFQUFFck4sR0FBRyxDQUFDUyxPQUFPLENBQUNTLE1BQU0sRUFBRSxjQUFjLENBQUMsRUFBRW1NLFNBQVMsQ0FBRTtNQUMzRGtLLEdBQUcsRUFBRSxJQUFJLENBQUMxUztJQUFRLEdBRWpCLElBQUksQ0FBQ3hELEtBQUssQ0FBQ21XLFNBQVMsaUJBQ25CalksS0FBQSxDQUFBNk4sYUFBQTtNQUFLQyxTQUFTLEVBQUVyTixHQUFHLENBQUNTLE9BQU8sQ0FBQ1MsTUFBTSxFQUFFLG9CQUFvQixDQUFDO0lBQUUsR0FDeEQsSUFBSSxDQUFDRyxLQUFLLENBQUNtVyxTQUNULENBQ04sZUFDRGpZLEtBQUEsQ0FBQTZOLGFBQUE7TUFDRUMsU0FBUyxFQUFFck4sR0FBRyxDQUFDUyxPQUFPLENBQUNTLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxDQUFFO01BQ3JEcU0sS0FBSyxFQUFFO1FBQUVrSyxPQUFPLEVBQUU7TUFBTztJQUFFLEdBRTFCM0YsUUFBUSxpQkFDUHZTLEtBQUEsQ0FBQTZOLGFBQUE7TUFBS0MsU0FBUyxFQUFFNU0sT0FBTyxDQUFDUyxNQUFNLEVBQUUsbUJBQW1CO0lBQUUsR0FDbERtUyxTQUFTLGlCQUNSOVQsS0FBQSxDQUFBNk4sYUFBQTtNQUFLQyxTQUFTLEVBQUU1TSxPQUFPLENBQUNTLE1BQU0sRUFBRSxZQUFZO0lBQUUsR0FBRW1TLFNBQWUsQ0FDaEUsZUFDRDlULEtBQUEsQ0FBQTZOLGFBQUE7TUFDRUMsU0FBUyxFQUFFck4sR0FBRyxDQUFDUyxPQUFPLENBQUNTLE1BQU0sRUFBRSxjQUFjLENBQUMsRUFBRTtRQUM5QyxDQUFDVCxPQUFPLENBQUNTLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxHQUFHLENBQUNtUztNQUM5QyxDQUFDO0lBQUUsZ0JBRUg5VCxLQUFBLENBQUE2TixhQUFBLENBQUMxTixJQUFJLEVBQUE0TixRQUFBO01BQ0h0RCxLQUFLLEVBQUFoRSxhQUFBLEtBQU9rTixTQUFTLENBQUc7TUFDeEI5RSxRQUFRLEVBQUUsS0FBTTtNQUNoQnNKLFNBQVMsRUFBRSxLQUFNO01BQ2pCQyxVQUFVLEVBQUV4RSxVQUFXO01BQ3ZCeUUsUUFBUSxFQUFFLElBQUksQ0FBQ3JJLFVBQVUsQ0FBQzJGLElBQUksQ0FBQyxJQUFJLENBQUU7TUFDckMxRixZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMxTixLQUFLLENBQUN5QixlQUFlLENBQUU7TUFDM0M2UCxVQUFVLEVBQUVBLFVBQVc7TUFDdkJtRSxHQUFHLEVBQUUsSUFBSSxDQUFDaE07SUFBUSxHQUNkK0gsZUFBZSxDQUNwQixDQUNFLENBQ0YsQ0FDTixlQUNEL1QsS0FBQSxDQUFBNk4sYUFBQTtNQUNFQyxTQUFTLEVBQUVyTixHQUFHLENBQUNTLE9BQU8sQ0FBQ1MsTUFBTSxFQUFFLG9CQUFvQixDQUFDLEVBQUU7UUFDcEQsQ0FBQ1QsT0FBTyxDQUFDUyxNQUFNLEVBQUUsNEJBQTRCLENBQUMsR0FBRyxDQUFDNFE7TUFDcEQsQ0FBQztJQUFFLEdBRUZoRixVQUFVLElBQUkrRyxXQUFXLENBQUN2UixNQUFNLEdBQUcsQ0FBQyxpQkFDbkMvQyxLQUFBLENBQUE2TixhQUFBO01BQUtDLFNBQVMsRUFBRTVNLE9BQU8sQ0FBQ1MsTUFBTSxFQUFFLDJCQUEyQjtJQUFFLGdCQUMzRDNCLEtBQUEsQ0FBQTZOLGFBQUEsQ0FBQ3RNLFlBQVk7TUFDWCtTLFdBQVcsRUFBRUEsV0FBWTtNQUN6QnhCLGtCQUFrQixFQUFFQSxrQkFBbUI7TUFDdkNwUSxRQUFRLEVBQUUsSUFBSSxDQUFDQSxRQUFRLENBQUNpVCxJQUFJLENBQUMsSUFBSSxDQUFFO01BQ25DMkMsT0FBTyxFQUFFQSxDQUFBLEtBQU07UUFBQSxJQUFBQyxzQkFBQTtRQUNiLElBQUksSUFBSSxDQUFDelcsS0FBSyxDQUFDd1csT0FBTyxFQUFFO1VBQ3RCLElBQUksQ0FBQ3hXLEtBQUssQ0FBQ3dXLE9BQU8sQ0FBQyxDQUFDO1VBQ3BCO1FBQ0Y7UUFDQSxDQUFBQyxzQkFBQSxPQUFJLENBQUMxUyxTQUFTLENBQUM1QyxPQUFPLGNBQUFzVixzQkFBQSxlQUF0QkEsc0JBQUEsQ0FBd0JwSCxXQUFXLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUNuSCxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDcEIsQ0FBRTtNQUNGZ08sR0FBRyxFQUFFLElBQUksQ0FBQ25TLFNBQVU7TUFDcEIyUyxlQUFlLEVBQUUsSUFBSSxDQUFDMVcsS0FBSyxDQUFDMFc7SUFBZ0IsQ0FDN0MsQ0FDRSxDQUNOLGVBQ0R4WSxLQUFBLENBQUE2TixhQUFBO01BQ0VDLFNBQVMsRUFBRXJOLEdBQUcsQ0FBQ1MsT0FBTyxDQUFDUyxNQUFNLEVBQUUsc0JBQXNCLENBQUMsRUFBRTtRQUN0RCxDQUFDVCxPQUFPLENBQUNTLE1BQU0sRUFBRSwwQkFBMEIsQ0FBQyxHQUFHLENBQUNzVjtNQUNsRCxDQUFDLENBQUU7TUFDSGUsR0FBRyxFQUFFLElBQUksQ0FBQ2xUO0lBQWUsR0FFeEIsQ0FBQ3dPLFVBQVUsSUFBSTZELFFBQVEsa0JBQ3RCblgsS0FBQSxDQUFBNk4sYUFBQTtNQUNFQyxTQUFTLEVBQUVyTixHQUFHLENBQUNTLE9BQU8sQ0FBQ1MsTUFBTSxFQUFFLDBCQUEwQixDQUFDLEVBQUU7UUFDMUQsQ0FBQ1QsT0FBTyxDQUFDUyxNQUFNLEVBQUUsMEJBQTBCLENBQUMsR0FBRyxDQUFDMEw7TUFDbEQsQ0FBQztJQUFFLGdCQUVIck4sS0FBQSxDQUFBNk4sYUFBQSxjQUFNeUYsVUFBZ0IsQ0FBQyxFQUN0QjZELFFBQVEsSUFBSSxJQUFJLENBQUNoSyxpQkFBaUIsQ0FBQ3FILFdBQVcsRUFBRW5ILFdBQVcsQ0FDekQsQ0FDTixlQUVEck4sS0FBQSxDQUFBNk4sYUFBQTtNQUNFQyxTQUFTLEVBQUVyTixHQUFHLENBQ1pTLE9BQU8sQ0FBQ1MsTUFBTSxFQUFFLG9CQUFvQixDQUFDLEVBQ3JDO1FBQ0UsQ0FBQ1QsT0FBTyxDQUFDUyxNQUFNLEVBQUUsd0JBQXdCLENBQUMsR0FBRyxDQUFDMEw7TUFDaEQsQ0FBQyxFQUNEO1FBQ0UsQ0FBQ25NLE9BQU8sQ0FBQ1MsTUFBTSxFQUFFLHlCQUF5QixDQUFDLEdBQ3pDMEwsV0FBVyxJQUFJLENBQUM4SjtNQUNwQixDQUNGLENBQUU7TUFDRmEsR0FBRyxFQUFFLElBQUksQ0FBQ2hWLGVBQWdCO01BQzFCZ0wsS0FBSyxFQUFFO1FBQUUxSyxNQUFNLEVBQUVrVTtNQUFtQjtJQUFFLGdCQUV0Q3hYLEtBQUEsQ0FBQTZOLGFBQUEsQ0FBQzNOLEtBQUssRUFBQTZOLFFBQUE7TUFDSmlLLEdBQUcsRUFBRSxJQUFJLENBQUMvUCxRQUFTO01BQ25Ca0ssT0FBTyxFQUFFa0MsV0FBWTtNQUNyQmhCLFVBQVUsRUFBQTVNLGFBQUE7UUFDUmdTLFVBQVUsRUFBRUMsSUFBQSxJQUFvQztVQUFBLElBQUFDLGtCQUFBLEVBQUFDLG1CQUFBO1VBQUEsSUFBbkM7WUFBRUMsUUFBUTtZQUFFQyxRQUFRO1lBQUV0UTtVQUFPLENBQUMsR0FBQWtRLElBQUE7VUFDekMsb0JBQ0UxWSxLQUFBLENBQUE2TixhQUFBLENBQUE3TixLQUFBLENBQUFnWCxRQUFBLFFBQ0c2QixRQUFRLElBQ1RyUSxNQUFNLENBQUNzRSxVQUFVLElBQ2pCLEVBQUE2TCxrQkFBQSxHQUFBblEsTUFBTSxDQUFDc0UsVUFBVSxjQUFBNkwsa0JBQUEsdUJBQWpCQSxrQkFBQSxDQUFtQjVWLE1BQU0sSUFBRyxDQUFDLGdCQUMzQi9DLEtBQUEsQ0FBQTZOLGFBQUEsQ0FBQ25OLFlBQVk7WUFDWGdOLE9BQU8sRUFBRzRCLENBQUMsSUFBS3dKLFFBQVEsQ0FBQ3RRLE1BQU0sRUFBRThHLENBQUMsQ0FBRTtZQUNwQ3hCLFNBQVMsRUFBRTVNLE9BQU8sQ0FBQ1MsTUFBTSxFQUFFLGFBQWE7VUFBRSxDQUMzQyxDQUFDLEdBQ0E2RyxNQUFNLENBQUNzRSxVQUFVLElBQ25CLEVBQUE4TCxtQkFBQSxHQUFBcFEsTUFBTSxDQUFDc0UsVUFBVSxjQUFBOEwsbUJBQUEsdUJBQWpCQSxtQkFBQSxDQUFtQjdWLE1BQU0sSUFBRyxDQUFDLGdCQUM3Qi9DLEtBQUEsQ0FBQTZOLGFBQUEsQ0FBQ2hOLGFBQWE7WUFDWjZNLE9BQU8sRUFBRzRCLENBQUMsSUFBS3dKLFFBQVEsQ0FBQ3RRLE1BQU0sRUFBRThHLENBQUMsQ0FBRTtZQUNwQ3hCLFNBQVMsRUFBRTVNLE9BQU8sQ0FBQ1MsTUFBTSxFQUFFLGFBQWE7VUFBRSxDQUMzQyxDQUFDLEdBQ0EsSUFDSixDQUFDO1FBRVA7TUFBQyxHQUNFMFIsVUFBVSxDQUNiO01BQ0ZELFdBQVcsRUFBRSxJQUFLO01BQ2xCMkYsUUFBUSxFQUFHckIsVUFBVSxJQUFLO1FBQ3hCLE1BQU07VUFBRTlMO1FBQVksQ0FBQyxHQUFHLElBQUksQ0FBQ3JKLEtBQUs7UUFDbEMsSUFBSXFKLFdBQVcsS0FBSzhMLFVBQVUsQ0FBQ3pVLE9BQU8sRUFBRTtVQUN0QyxJQUFJLENBQUNPLFFBQVEsQ0FBQztZQUNab0ksV0FBVyxFQUFFOEwsVUFBVSxDQUFDelU7VUFDMUIsQ0FBQyxDQUFDO1FBQ0o7TUFDRixDQUFFO01BQ0ZtVSxPQUFPLEVBQUEzUSxhQUFBO1FBQ0x1UyxXQUFXLEVBQUU7VUFDWEMsU0FBUyxFQUFFQSxDQUFBLEtBQU07WUFDZixNQUFNdlQsTUFBTSxHQUFHLElBQUksQ0FBQ21FLGVBQWUsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQ0csU0FBUyxDQUFDdEUsTUFBTSxDQUFDO1VBQ3hCO1FBQ0Y7TUFBQyxHQUNFOEUsVUFBVSxDQUFDNE0sT0FBTyxDQUNyQjtNQUNGakUsZ0JBQWdCLEVBQUVBLGdCQUFpQjtNQUNuQ25GLEtBQUssRUFBRTtRQUFFMUssTUFBTSxFQUFFcVU7TUFBWTtJQUFFLEdBQzNCMUQsV0FBVyxDQUVoQixDQUVFLENBQ0YsQ0FDRixDQUFDLEVBQ0x0QixVQUFVLGlCQUNUM1MsS0FBQSxDQUFBNk4sYUFBQSxDQUFDck4sVUFBVSxFQUFBdU4sUUFBQTtNQUNUaUssR0FBRyxFQUFFLElBQUksQ0FBQzVSLFNBQVU7TUFDcEJULFFBQVEsRUFBRUEsQ0FBQSxLQUFNO1FBQUEsSUFBQXVULHNCQUFBLEVBQUFDLHNCQUFBO1FBQ2QsRUFBQUQsc0JBQUEsT0FBSSxDQUFDcFgsS0FBSyxDQUFDZ0ksV0FBVyxjQUFBb1Asc0JBQUEsdUJBQXRCQSxzQkFBQSxDQUF3QkUsZ0JBQWdCLEtBQ3RDblksY0FBYyxFQUFBa1ksc0JBQUEsR0FDWixJQUFJLENBQUNyWCxLQUFLLENBQUNnSSxXQUFXLGNBQUFxUCxzQkFBQSx1QkFBdEJBLHNCQUFBLENBQXdCQyxnQkFBZ0IsRUFDeEM7VUFBRTlULE9BQU8sRUFBRSxJQUFJLENBQUN4RCxLQUFLLENBQUN3RDtRQUFRLENBQUMsRUFDL0IsSUFBSSxDQUFDeEQsS0FBSyxDQUFDOEcsS0FDYixDQUFDO1FBQ0gsSUFBSSxDQUFDeUMsV0FBVyxDQUFDLENBQUM7TUFDcEIsQ0FBRTtNQUNGZ08sS0FBSyxFQUFFOUUsV0FBWTtNQUNuQm5DLFNBQVMsRUFBRUEsU0FBVTtNQUNyQkksWUFBWSxFQUFFQSxZQUFhO01BQzNCOEcsUUFBUSxFQUFFLElBQUksQ0FBQ3hYLEtBQUssQ0FBQ3dYLFFBQVM7TUFDOUJwRixZQUFZLEVBQUVBLFlBQWE7TUFDM0JxRixVQUFVLEVBQUUsSUFBSSxDQUFDelgsS0FBSyxDQUFDeVgsVUFBVztNQUNsQ0MsWUFBWSxFQUFFLElBQUksQ0FBQzFYLEtBQUssQ0FBQzBYLFlBQWE7TUFDdEN0VixRQUFRLEVBQUUsSUFBSSxDQUFDcEMsS0FBSyxDQUFDb0MsUUFBUSxJQUFJLE1BQU87TUFDeEN1VixXQUFXLEVBQUU1RyxlQUFnQjtNQUM3QmpLLEtBQUssRUFBRSxJQUFJLENBQUM5RyxLQUFLLENBQUM4RyxLQUFNO01BQ3hCOFEsYUFBYSxFQUFFO1FBQ2JDLE1BQU0sRUFBRTdSLFdBQVcsQ0FBQzZSLE1BQU07UUFDMUJDLFNBQVMsRUFBRTlSLFdBQVcsQ0FBQzhSLFNBQVM7UUFDaENDLFNBQVMsRUFBRWhTLGFBQWEsQ0FBQ2dTLFNBQVM7UUFDbENDLFlBQVksRUFBRWpTLGFBQWEsQ0FBQ2lTO01BQzlCLENBQUU7TUFDRm5SLEtBQUssRUFBRSxJQUFJLENBQUM3RyxLQUFLLENBQUM2RztJQUFNLEdBQ3BCMEosU0FBUyxDQUNkLENBRUEsQ0FDRixDQUFDO0VBRVY7QUFDRjtBQUFDcFEsZUFBQSxDQWh1Q0tMLFFBQVEsb0JBU1lKLGNBQWM7QUF3dEN4QyxlQUFlSSxRQUFRIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","PureComponent","Table","Tree","Button","Modal","Popover","message","EditorForm","cls","DownOutlined","EyeOutlined","EditOutlined","RightOutlined","PlusOutlined","EllipsisOutlined","DeleteOutlined","converFunction","getLess","request","config","getStorage","getButtonPermissons","HeaderSearch","convertColumns","getNewColumns","throttle","styles","BasePage","constructor","props","_type","_size","_defineProperty","createRef","checkedTreeKeys","name","userType","account","state","value","deptId","onSearch","selected","res","key","keys","length","tableWrapperRef","current","tableHeader","getElementsByClassName","headerHeight","getBoundingClientRect","height","tableHeaderHeight","setState","calculateTableHeaderHeight","storePrefix","type","content","size","selectedRowKeys","selectedRowDatas","treeSelectedKey","expand","formType","tableSize","treeSearchPrams","popopens","moreOpen","elementHeight","permissionButtons","queryParams","componentDidMount","_this$pageContentRef$","initData","permisson","pageContentRef","clientHeight","window","addEventListener","throttleCalculateTableHeaderHeight","setTimeout","componentDidUpdate","_this$pageRef$current","pageRef","componentWillUnmount","removeEventListener","setSearchParams","params","callBack","_this$searchRef$curre","searchRef","doSubmit","data","_this$editorRef$curre","label","arguments","undefined","editorRef","showForm","_this$editorRef","editorflag","newValue","_objectSpread","show","hideForm","_this$editorRef$curre2","setLoading","loading","_this$editorRef$curre3","setEditFormValues","_this$editorRef$curre4","setFormValue","getEditFormValues","_this$editorRef$curre5","getFormValue","onDelete","_this$tableRef$curren","_this$tableRef$curren2","deleteUrl","deleteParams","deletePosition","buttonClick","requestParams","requestUrls","requestConfig","_this","tableRef","getSelectedRowKeys","getSelectedRowDatas","url","warning","confirm","onOk","record","ids","id","funcs","Utils","Error","dataParams","otherParams","_objectWithoutProperties","_excluded","defaultParams","method","autoPrefix","join","finalParams","then","code","_this$searchRef","_this$props$onCallBac","_this$props$onCallBac2","success","getSearchValues","onCallBacks","onDeleteCallBack","tableLoad","error","catch","console","log","_tableStore$requestCo","_this$tableRef$curren3","defaultRequestConfig","tableProps","store","tableStore","convertQueryParams","requestConig","storeConfig","storeParams","otherStoreConfig","_excluded2","load","_tableStore$requestCo2","_this$props$onCallBac3","onQueryCallBack","tableReload","_this$tableRef$curren4","autoLoad","reload","callback","_res$data","records","currentPage","_this$tableRef$curren5","treeLoad","_this$treeRef$current","treeRef","_this$tableRef$curren6","_this$tableRef$curren7","setSelectedRowKeys","_this$tableRef$curren8","setSelectedRowDatas","_this$tableRef$curren9","resetSelectedRowKeys","_this$tableRef$curren10","_this$searchRef2","fromValue","getChildrenData","rowKey","resKey","childNodes","children","map","item","index","renderToolButtons","toolbuttons","toolbarFlag","flag","showSearch","_item$props","pageType","onClick","icon","_excluded3","createElement","className","_extends","style","marginLeft","marginRight","title","placement","open","onOpenChange","renderCloumnButton","columnButtons","rowRecord","actionProps","baseActionColumn","newButtons","showIcon","_item$props2","recordShow","_excluded4","eventOption","Uitls","func","Function","push","e","eval","number","buttonNumber","_item$props3","_excluded5","Number","_item$props4","_excluded6","trigger","treeSelect","selectedKeys","obj","_this$searchRef3","_this$props$onCallBac4","_this$props$onCallBac5","keyword","searchKey","searchField","parantSelect","treeProps","selectedNodes","dataref","attribute","isLeaf","onTreeSelect","treeSelectCallBack","resetSearch","_this$searchRef$curre2","resetFields","getText","text","_props$data","newText","i","setTableData","_this$tableRef$curren11","setData","setTreeData","_this$treeRef$current2","converParams","render","_this2","_tableProps$toolbar","_tableProps$toolbar2","columns","submitUrl","formProps","formPageProps","showLeft","submitParams","showToolButton","buttons","editorForm","onShowForm","formChangeValid","toolButtonPosition","permission","has","filterColumn","actionColumn","showRowSelection","columnOrder","expandable","tableTitle","othertableParams","_excluded7","newTableStore","_newTableStore$reques","treeStore","treeSearch","titleAlias","treeTitle","othertreeParams","_excluded8","tableParams","defaultValue","menuCode","permissons","tableColumn","searchForms","editorForms","toolButtons","buttonMap","editor","delete","search","returnButton","_buttonMap$code","defaultProps","onEditor","_this2$props$onCallBa","_this2$props$onCallBa2","onEditorCallBack","onSearchCallBack","checkPerssion","indexOf","onAdd","_this$props$onCallBac6","_this$props$onCallBac7","onAddCallBack","bind","danger","Array","isArray","child","_child$props","_child$props2","_child$props3","_child$props4","_child$props5","_item$props5","_item$props6","_item$props7","_item$props8","_item$props9","dataIndex","align","textAlign","width","fixed","reacord","Fragment","searchFlag","tableTool","toolFlag","toolbar","tools","toolHeight","paddingHeight","tableContentHeight","PaginationHeight","pagination","tableHeight","tableSrollHeight","scroll","x","y","ref","pageTitle","display","checkable","searchable","onSelect","onReset","_this$searchRef$curre3","searchFormProps","expandIcon","_ref","_record$childNodes","_record$childNodes2","expanded","onExpand","onChange","onToolClick","onRefresh","_this$props$onCallBac8","_this$props$onCallBac9","onSumbitCallBack","forms","onSubmit","onHideForm","onFormChange","changeValid","requestObject","addUrl","editorUrl","addParams","editorParams"],"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, { FormPageProps } from \"../FormPage/index\";\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 { converFunction, getLess, getNode, simplifyColumns } from \"../../utils\";\r\nimport request from \"nsc-request\";\r\nimport config from \"../../config\";\r\nimport { getStorage, px2vw, getButtonPermissons } from \"@bj-nsc/functions\";\r\nimport HeaderSearch from \"../HeaderSearch\";\r\nimport { PaginationProps } from \"antd\";\r\nimport nscfile from \"nsc-file\";\r\nimport { convertColumns, getNewColumns } from \"./utils\";\r\nimport isEqual from \"lodash/isEqual\";\r\nimport throttle from \"lodash/throttle\";\r\ntype ButtonItem =\r\n | string\r\n | {\r\n code: string;\r\n recordShow?: string | Function;\r\n props?: any;\r\n };\r\n\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 FormPageProps {}\r\n\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?: ButtonItem[]; //按钮集合 ['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 onQueryCallBack?: any; //查询回调,查询数据后回调\r\n onSumbitCallBack?: any; //保存回调,保存数据成功后回调\r\n onDeleteCallBack?: any; //删除按钮回调,删除数据后执行\r\n onEditorCallBack?: any; //编辑按钮回调,打开弹框后执行\r\n onAddCallBack?: any; //添加按钮回调,打开弹框后执行\r\n onSearchCallBack?: any; //列表查询按钮回调,打开弹框后执行\r\n };\r\n pageType?: \"normal\" | \"tabspage\";\r\n formPageProps?: {};\r\n buttonClick?: {\r\n onAdd?: () => void;\r\n onEditor?: (value?: any) => void;\r\n onSearch?: (value?: any) => void;\r\n onDelete?: (value?: any) => void;\r\n };\r\n permission?: {\r\n has?: boolean;\r\n menuCode?: string;\r\n };\r\n requestParams?: {\r\n //需要额外传的固定请求参数\r\n addParams?: Object; //新增固定参数\r\n editorParams?: Object; //编辑固定参数\r\n queryParams?: Object; //查询固定参数\r\n deleteParams?: Object; //删除固定参数\r\n };\r\n requestUrls?: {\r\n addUrl?: string; //新增url\r\n editorUrl?: string; //编辑url\r\n deleteUrl?: string; //删除url\r\n };\r\n funcs?: any;\r\n requestConfig?: any;\r\n [propsName: string]: any;\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 pageContentRef = React.createRef<any>();\r\n dateFormat = {} as any;\r\n tableWrapperRef = React.createRef<HTMLDivElement>();\r\n static convertColumns = convertColumns;\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 permissionButtons: [],\r\n queryParams: {},\r\n tableHeaderHeight: 0, // 添加表头高度到state\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const { initData, permisson = {} } = this.props;\r\n const elementHeight = this.pageContentRef.current?.clientHeight;\r\n\r\n // 添加窗口resize监听\r\n window.addEventListener(\"resize\", this.throttleCalculateTableHeaderHeight);\r\n\r\n // 初始计算表头高度\r\n setTimeout(this.calculateTableHeaderHeight, 0);\r\n\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 componentWillUnmount() {\r\n // 移除resize监听\r\n window.removeEventListener(\r\n \"resize\",\r\n this.throttleCalculateTableHeaderHeight\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 doSubmit(data, label = \"编辑\") {\r\n this.editorRef.current?.doSubmit(data, label);\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\", callBack?: any) {\r\n let newValue = value ? { ...value } : null;\r\n this.editorRef?.current?.show(newValue, editorflag, callBack);\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, type = \"编辑\") {\r\n this.editorRef.current?.setFormValue(value, type);\r\n }\r\n\r\n getEditFormValues() {\r\n return this.editorRef.current?.getFormValue();\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 buttonClick = {},\r\n requestParams = {},\r\n requestUrls = {},\r\n requestConfig = {},\r\n } = this.props;\r\n let _this = this;\r\n const selectedRowKeys = this.tableRef.current?.getSelectedRowKeys();\r\n const selectedRowDatas = this.tableRef.current?.getSelectedRowDatas();\r\n let url = requestUrls.deleteUrl ? requestUrls.deleteUrl : deleteUrl;\r\n let params: any = requestParams.deleteParams\r\n ? requestParams.deleteParams\r\n : deleteParams;\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 (buttonClick.onDelete) {\r\n converFunction(\r\n buttonClick.onDelete,\r\n {\r\n pageRef: this.props.pageRef,\r\n record: deletePosition == \"toolbar\" ? selectedRowDatas : data,\r\n ids: deletePosition == \"toolbar\" ? selectedRowKeys : data?.id,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n return;\r\n }\r\n if (onDelete) {\r\n onDelete &&\r\n onDelete(deletePosition == \"toolbar\" ? selectedRowKeys : data);\r\n return;\r\n }\r\n if (!url) {\r\n throw new Error(\"url不能为空!\");\r\n }\r\n const { data: dataParams = {}, ...otherParams } = params;\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 ...dataParams,\r\n },\r\n ...requestConfig,\r\n };\r\n let finalParams = {} as any;\r\n finalParams = { ...defaultParams, ...otherParams };\r\n request(url, {\r\n ...finalParams,\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 converFunction(\r\n _this.props.onCallBacks?.onDeleteCallBack,\r\n { pageRef: this.props.pageRef },\r\n this.props.Utils\r\n );\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 const {\r\n requestConfig: defaultRequestConfig = {},\r\n requestParams = {},\r\n tableProps = {},\r\n } = this.props;\r\n const { store: tableStore } = tableProps;\r\n let queryParams: any = this.convertQueryParams();\r\n let data = queryParams.data || queryParams.params || {};\r\n let finalParams = {\r\n ...data,\r\n ...tableStore.requestConfig?.params,\r\n ...params,\r\n };\r\n const { requestConig: storeConfig = {} } = tableStore;\r\n const { params: storeParams = {}, ...otherStoreConfig } = storeConfig;\r\n this.tableRef.current?.store.load({\r\n ...defaultRequestConfig,\r\n ...otherStoreConfig,\r\n ...requestConfig,\r\n params: { ...storeParams, ...finalParams },\r\n });\r\n }\r\n //查询\r\n onSearch(params) {\r\n const {\r\n onSearch,\r\n onCallBacks,\r\n requestParams = {},\r\n tableProps = {},\r\n } = this.props;\r\n const { store: tableStore } = tableProps;\r\n let queryParams: any = this.convertQueryParams();\r\n let data = queryParams.data || queryParams.params || {};\r\n let finalParams = {\r\n ...data,\r\n ...tableStore.requestConfig?.params,\r\n ...params,\r\n };\r\n if (onSearch) {\r\n onSearch({ ...finalParams, ...this.state.treeSearchPrams });\r\n return;\r\n }\r\n this.tableLoad({ ...finalParams, ...this.state.treeSearchPrams });\r\n onCallBacks?.onQueryCallBack &&\r\n converFunction(\r\n this.props.onCallBacks?.onQueryCallBack,\r\n { pageRef: this.props.pageRef, params: params },\r\n this.props.Utils\r\n );\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 treeLoad(params: any, requestConfig = {}) {\r\n const { requestConfig: defaultRequestConfig = {} } = this.props;\r\n this.treeRef.current?.store.load({\r\n ...defaultRequestConfig,\r\n ...requestConfig,\r\n params: params,\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 setSelectedRowKeys(data: Array<String | Number>) {\r\n return this.tableRef.current?.setSelectedRowKeys(data);\r\n }\r\n setSelectedRowDatas(data: Array<Object>) {\r\n return this.tableRef.current?.setSelectedRowDatas(data);\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 let key = \"\";\r\n if (data.childNodes) {\r\n const children = data.childNodes;\r\n children.map((item, index) => {\r\n if (typeof rowKey == \"function\") {\r\n key = rowKey(item);\r\n } else {\r\n key = item[rowKey];\r\n }\r\n if (item.childNodes) {\r\n this.getChildrenData(item.childNodes, keys);\r\n } else {\r\n resKey = [...keys, key];\r\n }\r\n });\r\n } else {\r\n resKey = [...keys, key];\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 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, rowRecord: any) {\r\n const { actionProps, tableProps = {} } = this.props;\r\n const { baseActionColumn } = config();\r\n const newButtons = [];\r\n const { rowKey = \"id\" } = tableProps;\r\n\r\n let key = \"\";\r\n if (typeof rowKey == \"function\") {\r\n key = rowKey(rowRecord);\r\n } else {\r\n key = rowRecord[rowKey];\r\n }\r\n let showIcon = false;\r\n if (actionProps?.showIcon === true || baseActionColumn.showIcon === true)\r\n showIcon = true;\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 try {\r\n const eventOption = {\r\n record: rowRecord,\r\n pageRef: this.props.pageRef,\r\n funcs: this.props.funcs,\r\n };\r\n const Utils = { ...this.props.Uitls };\r\n let func = new Function(\"eventOption,Utils\", recordShow);\r\n const show = func(eventOption, Utils);\r\n show && newButtons.push(item);\r\n } catch (e) {\r\n let record = rowRecord;\r\n if (eval(recordShow)) {\r\n newButtons.push(item);\r\n }\r\n }\r\n } else if (typeof recordShow == \"function\") {\r\n const show = recordShow(rowRecord);\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[rowRecord.id] = false;\r\n this.setState({\r\n popopens: data,\r\n });\r\n onClick && onClick(rowRecord);\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(rowRecord);\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[key] || false}\r\n onOpenChange={(open) => {\r\n if (open) {\r\n let data = { ...this.state.popopens };\r\n data[key] = 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(rowRecord);\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 converFunction(\r\n this.props.onCallBacks?.treeSelectCallBack,\r\n { pageRef: this.props.pageRef, selectedKeys: selectedKeys, obj: obj },\r\n this.props.Utils\r\n );\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 convertQueryParams() {\r\n const { requestParams = {} } = this.props;\r\n let queryParams: any = requestParams.queryParams;\r\n if (queryParams && typeof queryParams == \"string\") {\r\n const Utils = this.props.Utils || {};\r\n let func = new Function(\"Utils\", queryParams);\r\n let converParams = func(Utils);\r\n queryParams = converParams;\r\n } else {\r\n queryParams = queryParams || {};\r\n }\r\n return queryParams;\r\n }\r\n\r\n // 计算表头高度的方法\r\n calculateTableHeaderHeight = () => {\r\n if (this.tableWrapperRef.current) {\r\n const tableHeader =\r\n this.tableWrapperRef.current.getElementsByClassName(\r\n \"ant-table-thead\"\r\n )[0];\r\n if (tableHeader) {\r\n const headerHeight = tableHeader.getBoundingClientRect().height;\r\n if (headerHeight !== this.state.tableHeaderHeight) {\r\n this.setState({\r\n tableHeaderHeight: headerHeight,\r\n });\r\n }\r\n }\r\n }\r\n };\r\n throttleCalculateTableHeaderHeight = throttle(\r\n this.calculateTableHeaderHeight,\r\n 500\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 formPageProps = {},\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 buttonClick = {},\r\n permission = { has: false },\r\n requestParams = {},\r\n requestUrls = {},\r\n } = this.props;\r\n const {\r\n store: tableStore = {},\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 let newTableStore = { ...tableStore };\r\n if (requestParams.queryParams) {\r\n let queryParams: any = this.convertQueryParams();\r\n let data = queryParams?.data || queryParams?.params || {};\r\n newTableStore.requestConfig = {\r\n params: { ...data, ...newTableStore.requestConfig?.params },\r\n };\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\r\n let tableParams = {\r\n filterColumn,\r\n store: { ...newTableStore },\r\n ...othertableParams,\r\n } as any;\r\n const defaultValue: any = {};\r\n const columnButtons: any = [];\r\n const { elementHeight } = this.state;\r\n let permissionButtons = [];\r\n if (permission.has && permission.menuCode) {\r\n permissionButtons =\r\n getButtonPermissons(permission.menuCode).permissons || [];\r\n }\r\n const obj = convertColumns(columns, {});\r\n let tableColumn: any[] = getNewColumns(columns, this.props);\r\n const searchForms = obj.searchForms || [];\r\n const editorForms = obj.editorForms || [];\r\n const toolButtons: 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 const buttonMap = {\r\n editor: { name: \"编辑\", code: \"editor\", icon: <EditOutlined /> },\r\n delete: { name: \"删除\", code: \"delete\", icon: <DeleteOutlined /> },\r\n search: { name: \"查看\", code: \"search\", icon: <EyeOutlined /> },\r\n };\r\n const returnButton = (code, show = \"\", defaultProps = {}) => {\r\n let props = {\r\n icon: showIcon ? buttonMap[code].icon : null,\r\n type: \"link\",\r\n ...defaultProps,\r\n } as any;\r\n\r\n if (show) {\r\n props = { ...props, recordShow: show };\r\n }\r\n return (\r\n <Button\r\n onClick={(record: any) => {\r\n if (code == \"delete\") {\r\n this.onDelete(record);\r\n } else {\r\n if (code == \"editor\" && buttonClick.onEditor) {\r\n converFunction(\r\n buttonClick.onEditor,\r\n {\r\n pageRef: this.props.pageRef,\r\n record: record.attribute || record,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n return;\r\n } else if (code == \"search\" && buttonClick.onSearch) {\r\n converFunction(\r\n buttonClick.onSearch,\r\n {\r\n pageRef: this.props.pageRef,\r\n record: record.attribute || record,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n return;\r\n }\r\n if (onShowForm) {\r\n onShowForm(record.attribute || record, code);\r\n return;\r\n }\r\n\r\n this.showForm(record.attribute || record, code, () => {\r\n let callBack =\r\n code == \"editor\"\r\n ? this.props.onCallBacks?.onEditorCallBack\r\n : this.props.onCallBacks?.onSearchCallBack;\r\n callBack &&\r\n converFunction(\r\n callBack,\r\n {\r\n pageRef: this.props.pageRef,\r\n record: record.attribute || record,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n });\r\n }\r\n }}\r\n {...props}\r\n >\r\n {buttonMap[code]?.name}\r\n </Button>\r\n );\r\n };\r\n const checkPerssion = (code) => {\r\n if (!permission.has) {\r\n return true;\r\n } else {\r\n return permissionButtons.indexOf(code) > -1;\r\n }\r\n };\r\n buttons.map((item: any) => {\r\n if ((item == \"add\" || item.code == \"add\") && checkPerssion(\"add\")) {\r\n toolButtons.push(\r\n <Button\r\n type={\"primary\"}\r\n onClick={() => {\r\n const { onShowForm, buttonClick = {} } = this.props;\r\n if (buttonClick?.onAdd) {\r\n converFunction(\r\n buttonClick.onAdd,\r\n {\r\n pageRef: this.props.pageRef,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n return;\r\n }\r\n if (onShowForm) {\r\n onShowForm(null, \"add\");\r\n return;\r\n }\r\n this.showForm(null, null, () => {\r\n this.props.onCallBacks?.onAddCallBack &&\r\n converFunction(\r\n this.props.onCallBacks?.onAddCallBack,\r\n {\r\n pageRef: this.props.pageRef,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n });\r\n }}\r\n icon={<PlusOutlined />}\r\n >\r\n 添加\r\n </Button>\r\n );\r\n } else if (\r\n (item == \"delete\" || item.code == \"delete\") &&\r\n checkPerssion(\"delete\")\r\n ) {\r\n if (deletePosition == \"toolbar\") {\r\n toolButtons.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 {\r\n columnButtons.push(\r\n returnButton(item.code || item, item.recordShow, item.props || {})\r\n );\r\n }\r\n } else {\r\n if (checkPerssion(item.code ? item.code : item)) {\r\n columnButtons.push(\r\n returnButton(\r\n item.code ? item.code : item,\r\n item.recordShow,\r\n item.props || {}\r\n )\r\n );\r\n }\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 (\r\n child?.props?.pageType == \"toolButton\" &&\r\n checkPerssion(child?.props?.code)\r\n ) {\r\n toolButtons.push(child);\r\n } else if (\r\n (child?.props?.pageType == \"columnButton\" ||\r\n child?.props?.pageType == \"cloumnButton\") &&\r\n checkPerssion(child?.props?.code)\r\n ) {\r\n columnButtons.push(child);\r\n }\r\n });\r\n } else {\r\n if (\r\n item?.props?.pageType == \"toolButton\" &&\r\n checkPerssion(item?.props?.code)\r\n ) {\r\n toolButtons.push(item);\r\n } else if (\r\n (item?.props?.pageType == \"columnButton\" ||\r\n item?.props?.pageType == \"cloumnButton\") &&\r\n checkPerssion(item?.props?.code)\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\" && checkPerssion(props?.code)) {\r\n toolButtons.push(children);\r\n } else if (\r\n (props?.pageType == \"columnButton\" ||\r\n props?.pageType == \"cloumnButton\") &&\r\n checkPerssion(props?.code)\r\n ) {\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 toolButtons.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 toolHeight = tableTitle || toolFlag ? 50 : 0;\r\n let paddingHeight = 20 * 2; //上下间距\r\n let tableContentHeight = elementHeight - toolHeight - paddingHeight;\r\n let PaginationHeight = tableProps.pagination !== false ? 32 + 16 : 0; //32 为分页器高度,16为margin间距\r\n let tableHeight = tableContentHeight - PaginationHeight;\r\n let tableSrollHeight =\r\n tableContentHeight - this.state.tableHeaderHeight - PaginationHeight;\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 ref={this.treeRef}\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={() => {\r\n if (this.props.onReset) {\r\n this.props.onReset();\r\n return;\r\n }\r\n this.searchRef.current?.resetFields();\r\n this.tableLoad({});\r\n }}\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 ref={this.pageContentRef}\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(toolButtons, 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 ref={this.tableWrapperRef}\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 record.childNodes &&\r\n record.childNodes?.length > 0 ? (\r\n <DownOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(styles, \"expand-icon\")}\r\n />\r\n ) : record.childNodes &&\r\n record.childNodes?.length > 0 ? (\r\n <RightOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(styles, \"expand-icon\")}\r\n />\r\n ) : null}\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 converFunction(\r\n this.props.onCallBacks?.onSumbitCallBack,\r\n { pageRef: this.props.pageRef },\r\n this.props.Utils\r\n );\r\n this.tableReload();\r\n }}\r\n forms={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 Utils={this.props.Utils}\r\n requestObject={{\r\n addUrl: requestUrls.addUrl,\r\n editorUrl: requestUrls.editorUrl,\r\n addParams: requestParams.addParams,\r\n editorParams: requestParams.editorParams,\r\n }}\r\n funcs={this.props.funcs}\r\n {...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","DownOutlined","EyeOutlined","EditOutlined","RightOutlined","PlusOutlined","EllipsisOutlined","DeleteOutlined","converFunction","getLess","request","config","getStorage","getButtonPermissons","HeaderSearch","convertColumns","getNewColumns","throttle","styles","BasePage","constructor","props","_type","_size","_defineProperty","createRef","checkedTreeKeys","name","userType","account","state","value","deptId","onSearch","selected","res","key","keys","length","tableWrapperRef","current","tableHeader","getElementsByClassName","headerHeight","getBoundingClientRect","height","tableHeaderHeight","setState","calculateTableHeaderHeight","storePrefix","type","content","size","selectedRowKeys","selectedRowDatas","treeSelectedKey","expand","formType","tableSize","treeSearchPrams","popopens","moreOpen","elementHeight","permissionButtons","queryParams","componentDidMount","_this$pageContentRef$","initData","permisson","pageContentRef","clientHeight","window","addEventListener","throttleCalculateTableHeaderHeight","setTimeout","componentDidUpdate","_this$pageRef$current","pageRef","componentWillUnmount","removeEventListener","setSearchParams","params","callBack","_this$searchRef$curre","searchRef","doSubmit","data","_this$editorRef$curre","label","arguments","undefined","editorRef","showForm","_this$editorRef","editorflag","newValue","_objectSpread","show","hideForm","_this$editorRef$curre2","setLoading","loading","_this$editorRef$curre3","setEditFormValues","_this$editorRef$curre4","setFormValue","getEditFormValues","_this$editorRef$curre5","getFormValue","onDelete","_this$tableRef$curren","_this$tableRef$curren2","deleteUrl","deleteParams","deletePosition","buttonClick","requestParams","requestUrls","requestConfig","_this","tableRef","getSelectedRowKeys","getSelectedRowDatas","url","warning","confirm","onOk","record","ids","id","funcs","Utils","Error","dataParams","otherParams","_objectWithoutProperties","_excluded","defaultParams","method","autoPrefix","join","finalParams","then","code","_this$searchRef","_this$props$onCallBac","_this$props$onCallBac2","success","getSearchValues","onCallBacks","onDeleteCallBack","tableLoad","error","catch","console","log","_tableStore$requestCo","_this$tableRef$curren3","defaultRequestConfig","tableProps","store","tableStore","convertQueryParams","requestConig","storeConfig","storeParams","otherStoreConfig","_excluded2","load","_tableStore$requestCo2","_this$props$onCallBac3","onQueryCallBack","tableReload","_this$tableRef$curren4","autoLoad","reload","callback","_res$data","records","currentPage","_this$tableRef$curren5","treeLoad","_this$treeRef$current","treeRef","_this$tableRef$curren6","_this$tableRef$curren7","setSelectedRowKeys","_this$tableRef$curren8","setSelectedRowDatas","_this$tableRef$curren9","resetSelectedRowKeys","_this$tableRef$curren10","_this$searchRef2","fromValue","getChildrenData","rowKey","resKey","childNodes","children","map","item","index","renderToolButtons","toolbuttons","toolbarFlag","flag","showSearch","_item$props","pageType","onClick","icon","_excluded3","createElement","className","_extends","style","marginLeft","marginRight","title","placement","open","onOpenChange","renderCloumnButton","columnButtons","rowRecord","actionProps","baseActionColumn","newButtons","showIcon","_item$props2","recordShow","_excluded4","eventOption","Uitls","func","Function","push","e","eval","number","buttonNumber","_item$props3","_excluded5","Number","_item$props4","_excluded6","trigger","treeSelect","selectedKeys","obj","_this$searchRef3","_this$props$onCallBac4","_this$props$onCallBac5","keyword","searchKey","searchField","parantSelect","treeProps","selectedNodes","dataref","attribute","isLeaf","onTreeSelect","treeSelectCallBack","resetSearch","_this$searchRef$curre2","resetFields","getText","text","_props$data","newText","i","setTableData","_this$tableRef$curren11","setData","setTreeData","_this$treeRef$current2","converParams","render","_this2","_tableProps$toolbar","_tableProps$toolbar2","columns","submitUrl","formProps","formPageProps","showLeft","submitParams","showToolButton","buttons","editorForm","onShowForm","formChangeValid","toolButtonPosition","permission","has","filterColumn","actionColumn","showRowSelection","columnOrder","expandable","tableTitle","othertableParams","_excluded7","newTableStore","_newTableStore$reques","treeStore","treeSearch","titleAlias","treeTitle","othertreeParams","_excluded8","tableParams","defaultValue","menuCode","permissons","tableColumn","searchForms","editorForms","toolButtons","buttonMap","editor","delete","search","returnButton","_buttonMap$code","defaultProps","onEditor","_this2$props$onCallBa","_this2$props$onCallBa2","onEditorCallBack","onSearchCallBack","checkPerssion","indexOf","onAdd","_this$props$onCallBac6","_this$props$onCallBac7","onAddCallBack","bind","danger","Array","isArray","child","_child$props","_child$props2","_child$props3","_child$props4","_child$props5","_item$props5","_item$props6","_item$props7","_item$props8","_item$props9","dataIndex","align","textAlign","width","fixed","reacord","Fragment","searchFlag","tableTool","toolFlag","toolbar","tools","toolHeight","paddingHeight","tableContentHeight","PaginationHeight","pagination","tableHeight","tableSrollHeight","scroll","x","y","ref","pageTitle","display","checkable","searchable","onSelect","onReset","_this$searchRef$curre3","searchFormProps","expandIcon","_ref","_record$childNodes","_record$childNodes2","expanded","onExpand","onChange","onToolClick","onRefresh","_this$props$onCallBac8","_this$props$onCallBac9","onSumbitCallBack","forms","onSubmit","onHideForm","onFormChange","changeValid","requestObject","addUrl","editorUrl","addParams","editorParams"],"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, { FormPageProps } from \"../FormPage/index\";\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 { converFunction, getLess, getNode, simplifyColumns } from \"../../utils\";\r\nimport request from \"nsc-request\";\r\nimport config from \"../../config\";\r\nimport { getStorage, px2vw, getButtonPermissons } from \"@bj-nsc/functions\";\r\nimport HeaderSearch from \"../HeaderSearch\";\r\nimport { PaginationProps } from \"antd\";\r\nimport nscfile from \"nsc-file\";\r\nimport { convertColumns, getNewColumns } from \"./utils\";\r\nimport isEqual from \"lodash/isEqual\";\r\nimport throttle from \"lodash/throttle\";\r\ntype ButtonItem =\r\n | string\r\n | {\r\n code: string;\r\n recordShow?: string | Function;\r\n props?: any;\r\n };\r\n\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 FormPageProps {}\r\n\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?: ButtonItem[]; //按钮集合 ['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 onQueryCallBack?: any; //查询回调,查询数据后回调\r\n onSumbitCallBack?: any; //保存回调,保存数据成功后回调\r\n onDeleteCallBack?: any; //删除按钮回调,删除数据后执行\r\n onEditorCallBack?: any; //编辑按钮回调,打开弹框后执行\r\n onAddCallBack?: any; //添加按钮回调,打开弹框后执行\r\n onSearchCallBack?: any; //列表查询按钮回调,打开弹框后执行\r\n };\r\n pageType?: \"normal\" | \"tabspage\";\r\n formPageProps?: {};\r\n buttonClick?: {\r\n onAdd?: () => void;\r\n onEditor?: (value?: any) => void;\r\n onSearch?: (value?: any) => void;\r\n onDelete?: (value?: any) => void;\r\n };\r\n permission?: {\r\n has?: boolean;\r\n menuCode?: string;\r\n };\r\n requestParams?: {\r\n //需要额外传的固定请求参数\r\n addParams?: Object; //新增固定参数\r\n editorParams?: Object; //编辑固定参数\r\n queryParams?: Object; //查询固定参数\r\n deleteParams?: Object; //删除固定参数\r\n };\r\n requestUrls?: {\r\n addUrl?: string; //新增url\r\n editorUrl?: string; //编辑url\r\n deleteUrl?: string; //删除url\r\n };\r\n funcs?: any;\r\n requestConfig?: any;\r\n [propsName: string]: any;\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 pageContentRef = React.createRef<any>();\r\n dateFormat = {} as any;\r\n tableWrapperRef = React.createRef<HTMLDivElement>();\r\n static convertColumns = convertColumns;\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 permissionButtons: [],\r\n queryParams: {},\r\n tableHeaderHeight: 0, // 添加表头高度到state\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const { initData, permisson = {} } = this.props;\r\n const elementHeight = this.pageContentRef.current?.clientHeight;\r\n\r\n // 添加窗口resize监听\r\n window.addEventListener(\"resize\", this.throttleCalculateTableHeaderHeight);\r\n\r\n // 初始计算表头高度\r\n setTimeout(this.calculateTableHeaderHeight, 0);\r\n\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 // 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 componentWillUnmount() {\r\n // 移除resize监听\r\n window.removeEventListener(\r\n \"resize\",\r\n this.throttleCalculateTableHeaderHeight\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 doSubmit(data, label = \"编辑\") {\r\n this.editorRef.current?.doSubmit(data, label);\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\", callBack?: any) {\r\n let newValue = value ? { ...value } : null;\r\n this.editorRef?.current?.show(newValue, editorflag, callBack);\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, type = \"编辑\") {\r\n this.editorRef.current?.setFormValue(value, type);\r\n }\r\n\r\n getEditFormValues() {\r\n return this.editorRef.current?.getFormValue();\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 buttonClick = {},\r\n requestParams = {},\r\n requestUrls = {},\r\n requestConfig = {},\r\n } = this.props;\r\n let _this = this;\r\n const selectedRowKeys = this.tableRef.current?.getSelectedRowKeys();\r\n const selectedRowDatas = this.tableRef.current?.getSelectedRowDatas();\r\n let url = requestUrls.deleteUrl ? requestUrls.deleteUrl : deleteUrl;\r\n let params: any = requestParams.deleteParams\r\n ? requestParams.deleteParams\r\n : deleteParams;\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 (buttonClick.onDelete) {\r\n converFunction(\r\n buttonClick.onDelete,\r\n {\r\n pageRef: this.props.pageRef,\r\n record: deletePosition == \"toolbar\" ? selectedRowDatas : data,\r\n ids: deletePosition == \"toolbar\" ? selectedRowKeys : data?.id,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n return;\r\n }\r\n if (onDelete) {\r\n onDelete &&\r\n onDelete(deletePosition == \"toolbar\" ? selectedRowKeys : data);\r\n return;\r\n }\r\n if (!url) {\r\n throw new Error(\"url不能为空!\");\r\n }\r\n const { data: dataParams = {}, ...otherParams } = params;\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 ...dataParams,\r\n },\r\n ...requestConfig,\r\n };\r\n let finalParams = {} as any;\r\n finalParams = { ...defaultParams, ...otherParams };\r\n request(url, {\r\n ...finalParams,\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 converFunction(\r\n _this.props.onCallBacks?.onDeleteCallBack,\r\n { pageRef: this.props.pageRef },\r\n this.props.Utils\r\n );\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 const {\r\n requestConfig: defaultRequestConfig = {},\r\n requestParams = {},\r\n tableProps = {},\r\n } = this.props;\r\n const { store: tableStore } = tableProps;\r\n let queryParams: any = this.convertQueryParams();\r\n let data = queryParams.data || queryParams.params || {};\r\n let finalParams = {\r\n ...data,\r\n ...tableStore.requestConfig?.params,\r\n ...params,\r\n };\r\n const { requestConig: storeConfig = {} } = tableStore;\r\n const { params: storeParams = {}, ...otherStoreConfig } = storeConfig;\r\n this.tableRef.current?.store.load({\r\n ...defaultRequestConfig,\r\n ...otherStoreConfig,\r\n ...requestConfig,\r\n params: { ...storeParams, ...finalParams },\r\n });\r\n }\r\n //查询\r\n onSearch(params) {\r\n const {\r\n onSearch,\r\n onCallBacks,\r\n requestParams = {},\r\n tableProps = {},\r\n } = this.props;\r\n const { store: tableStore } = tableProps;\r\n let queryParams: any = this.convertQueryParams();\r\n let data = queryParams.data || queryParams.params || {};\r\n let finalParams = {\r\n ...data,\r\n ...tableStore.requestConfig?.params,\r\n ...params,\r\n };\r\n if (onSearch) {\r\n onSearch({ ...finalParams, ...this.state.treeSearchPrams });\r\n return;\r\n }\r\n this.tableLoad({ ...finalParams, ...this.state.treeSearchPrams });\r\n onCallBacks?.onQueryCallBack &&\r\n converFunction(\r\n this.props.onCallBacks?.onQueryCallBack,\r\n { pageRef: this.props.pageRef, params: params },\r\n this.props.Utils\r\n );\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 treeLoad(params: any, requestConfig = {}) {\r\n const { requestConfig: defaultRequestConfig = {} } = this.props;\r\n this.treeRef.current?.store.load({\r\n ...defaultRequestConfig,\r\n ...requestConfig,\r\n params: params,\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 setSelectedRowKeys(data: Array<String | Number>) {\r\n return this.tableRef.current?.setSelectedRowKeys(data);\r\n }\r\n setSelectedRowDatas(data: Array<Object>) {\r\n return this.tableRef.current?.setSelectedRowDatas(data);\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 let key = \"\";\r\n if (data.childNodes) {\r\n const children = data.childNodes;\r\n children.map((item, index) => {\r\n if (typeof rowKey == \"function\") {\r\n key = rowKey(item);\r\n } else {\r\n key = item[rowKey];\r\n }\r\n if (item.childNodes) {\r\n this.getChildrenData(item.childNodes, keys);\r\n } else {\r\n resKey = [...keys, key];\r\n }\r\n });\r\n } else {\r\n resKey = [...keys, key];\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 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, rowRecord: any) {\r\n const { actionProps, tableProps = {} } = this.props;\r\n const { baseActionColumn } = config();\r\n const newButtons = [];\r\n const { rowKey = \"id\" } = tableProps;\r\n\r\n let key = \"\";\r\n if (typeof rowKey == \"function\") {\r\n key = rowKey(rowRecord);\r\n } else {\r\n key = rowRecord[rowKey];\r\n }\r\n let showIcon = false;\r\n if (actionProps?.showIcon === true || baseActionColumn.showIcon === true)\r\n showIcon = true;\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 try {\r\n const eventOption = {\r\n record: rowRecord,\r\n pageRef: this.props.pageRef,\r\n funcs: this.props.funcs,\r\n };\r\n const Utils = { ...this.props.Uitls };\r\n let func = new Function(\"eventOption,Utils\", recordShow);\r\n const show = func(eventOption, Utils);\r\n show && newButtons.push(item);\r\n } catch (e) {\r\n let record = rowRecord;\r\n if (eval(recordShow)) {\r\n newButtons.push(item);\r\n }\r\n }\r\n } else if (typeof recordShow == \"function\") {\r\n const show = recordShow(rowRecord);\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[rowRecord.id] = false;\r\n this.setState({\r\n popopens: data,\r\n });\r\n onClick && onClick(rowRecord);\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(rowRecord);\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[key] || false}\r\n onOpenChange={(open) => {\r\n if (open) {\r\n let data = { ...this.state.popopens };\r\n data[key] = 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(rowRecord);\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 converFunction(\r\n this.props.onCallBacks?.treeSelectCallBack,\r\n { pageRef: this.props.pageRef, selectedKeys: selectedKeys, obj: obj },\r\n this.props.Utils\r\n );\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 convertQueryParams() {\r\n const { requestParams = {} } = this.props;\r\n let queryParams: any = requestParams.queryParams;\r\n if (queryParams && typeof queryParams == \"string\") {\r\n const Utils = this.props.Utils || {};\r\n let func = new Function(\"Utils\", queryParams);\r\n let converParams = func(Utils);\r\n queryParams = converParams;\r\n } else {\r\n queryParams = queryParams || {};\r\n }\r\n return queryParams;\r\n }\r\n\r\n // 计算表头高度的方法\r\n calculateTableHeaderHeight = () => {\r\n if (this.tableWrapperRef.current) {\r\n const tableHeader =\r\n this.tableWrapperRef.current.getElementsByClassName(\r\n \"ant-table-thead\"\r\n )[0];\r\n if (tableHeader) {\r\n const headerHeight = tableHeader.getBoundingClientRect().height;\r\n if (headerHeight !== this.state.tableHeaderHeight) {\r\n this.setState({\r\n tableHeaderHeight: headerHeight,\r\n });\r\n }\r\n }\r\n }\r\n };\r\n throttleCalculateTableHeaderHeight = throttle(\r\n this.calculateTableHeaderHeight,\r\n 500\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 formPageProps = {},\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 buttonClick = {},\r\n permission = { has: false },\r\n requestParams = {},\r\n requestUrls = {},\r\n } = this.props;\r\n const {\r\n store: tableStore = {},\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 let newTableStore = { ...tableStore };\r\n if (requestParams.queryParams) {\r\n let queryParams: any = this.convertQueryParams();\r\n let data = queryParams?.data || queryParams?.params || {};\r\n newTableStore.requestConfig = {\r\n params: { ...data, ...newTableStore.requestConfig?.params },\r\n };\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\r\n let tableParams = {\r\n filterColumn,\r\n store: { ...newTableStore },\r\n ...othertableParams,\r\n } as any;\r\n const defaultValue: any = {};\r\n const columnButtons: any = [];\r\n const { elementHeight } = this.state;\r\n let permissionButtons = [];\r\n if (permission.has && permission.menuCode) {\r\n permissionButtons =\r\n getButtonPermissons(permission.menuCode).permissons || [];\r\n }\r\n const obj = convertColumns(columns, {});\r\n let tableColumn: any[] = getNewColumns(columns, this.props);\r\n const searchForms = obj.searchForms || [];\r\n const editorForms = obj.editorForms || [];\r\n const toolButtons: 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 const buttonMap = {\r\n editor: { name: \"编辑\", code: \"editor\", icon: <EditOutlined /> },\r\n delete: { name: \"删除\", code: \"delete\", icon: <DeleteOutlined /> },\r\n search: { name: \"查看\", code: \"search\", icon: <EyeOutlined /> },\r\n };\r\n const returnButton = (code, show = \"\", defaultProps = {}) => {\r\n let props = {\r\n icon: showIcon ? buttonMap[code].icon : null,\r\n type: \"link\",\r\n ...defaultProps,\r\n } as any;\r\n\r\n if (show) {\r\n props = { ...props, recordShow: show };\r\n }\r\n return (\r\n <Button\r\n onClick={(record: any) => {\r\n if (code == \"delete\") {\r\n this.onDelete(record);\r\n } else {\r\n if (code == \"editor\" && buttonClick.onEditor) {\r\n converFunction(\r\n buttonClick.onEditor,\r\n {\r\n pageRef: this.props.pageRef,\r\n record: record.attribute || record,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n return;\r\n } else if (code == \"search\" && buttonClick.onSearch) {\r\n converFunction(\r\n buttonClick.onSearch,\r\n {\r\n pageRef: this.props.pageRef,\r\n record: record.attribute || record,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n return;\r\n }\r\n if (onShowForm) {\r\n onShowForm(record.attribute || record, code);\r\n return;\r\n }\r\n\r\n this.showForm(record.attribute || record, code, () => {\r\n let callBack =\r\n code == \"editor\"\r\n ? this.props.onCallBacks?.onEditorCallBack\r\n : this.props.onCallBacks?.onSearchCallBack;\r\n callBack &&\r\n converFunction(\r\n callBack,\r\n {\r\n pageRef: this.props.pageRef,\r\n record: record.attribute || record,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n });\r\n }\r\n }}\r\n {...props}\r\n >\r\n {buttonMap[code]?.name}\r\n </Button>\r\n );\r\n };\r\n const checkPerssion = (code) => {\r\n if (!permission.has) {\r\n return true;\r\n } else {\r\n return permissionButtons.indexOf(code) > -1;\r\n }\r\n };\r\n buttons.map((item: any) => {\r\n if ((item == \"add\" || item.code == \"add\") && checkPerssion(\"add\")) {\r\n toolButtons.push(\r\n <Button\r\n type={\"primary\"}\r\n onClick={() => {\r\n const { onShowForm, buttonClick = {} } = this.props;\r\n if (buttonClick?.onAdd) {\r\n converFunction(\r\n buttonClick.onAdd,\r\n {\r\n pageRef: this.props.pageRef,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n return;\r\n }\r\n if (onShowForm) {\r\n onShowForm(null, \"add\");\r\n return;\r\n }\r\n this.showForm(null, null, () => {\r\n this.props.onCallBacks?.onAddCallBack &&\r\n converFunction(\r\n this.props.onCallBacks?.onAddCallBack,\r\n {\r\n pageRef: this.props.pageRef,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n });\r\n }}\r\n icon={<PlusOutlined />}\r\n >\r\n 添加\r\n </Button>\r\n );\r\n } else if (\r\n (item == \"delete\" || item.code == \"delete\") &&\r\n checkPerssion(\"delete\")\r\n ) {\r\n if (deletePosition == \"toolbar\") {\r\n toolButtons.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 {\r\n columnButtons.push(\r\n returnButton(item.code || item, item.recordShow, item.props || {})\r\n );\r\n }\r\n } else {\r\n if (checkPerssion(item.code ? item.code : item)) {\r\n columnButtons.push(\r\n returnButton(\r\n item.code ? item.code : item,\r\n item.recordShow,\r\n item.props || {}\r\n )\r\n );\r\n }\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 (\r\n child?.props?.pageType == \"toolButton\" &&\r\n checkPerssion(child?.props?.code)\r\n ) {\r\n toolButtons.push(child);\r\n } else if (\r\n (child?.props?.pageType == \"columnButton\" ||\r\n child?.props?.pageType == \"cloumnButton\") &&\r\n checkPerssion(child?.props?.code)\r\n ) {\r\n columnButtons.push(child);\r\n }\r\n });\r\n } else {\r\n if (\r\n item?.props?.pageType == \"toolButton\" &&\r\n checkPerssion(item?.props?.code)\r\n ) {\r\n toolButtons.push(item);\r\n } else if (\r\n (item?.props?.pageType == \"columnButton\" ||\r\n item?.props?.pageType == \"cloumnButton\") &&\r\n checkPerssion(item?.props?.code)\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\" && checkPerssion(props?.code)) {\r\n toolButtons.push(children);\r\n } else if (\r\n (props?.pageType == \"columnButton\" ||\r\n props?.pageType == \"cloumnButton\") &&\r\n checkPerssion(props?.code)\r\n ) {\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 toolButtons.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 let headerHeight = showSearch && searchForms.length > 0 ? 104 : 0; //头部搜索栏高度\r\n let toolHeight = tableTitle || toolFlag ? 50 : 0;\r\n let paddingHeight = 20 * 2; //上下间距\r\n let tableContentHeight =\r\n elementHeight - toolHeight - paddingHeight - headerHeight;\r\n let PaginationHeight = tableProps.pagination !== false ? 32 + 16 : 0; //32 为分页器高度,16为margin间距\r\n let tableHeight = tableContentHeight - PaginationHeight;\r\n let tableSrollHeight =\r\n tableContentHeight - this.state.tableHeaderHeight > 0\r\n ? this.state.tableHeaderHeight\r\n : 55 - PaginationHeight;\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 ref={this.treeRef}\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={() => {\r\n if (this.props.onReset) {\r\n this.props.onReset();\r\n return;\r\n }\r\n this.searchRef.current?.resetFields();\r\n this.tableLoad({});\r\n }}\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 ref={this.pageContentRef}\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(toolButtons, 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 ref={this.tableWrapperRef}\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 record.childNodes &&\r\n record.childNodes?.length > 0 ? (\r\n <DownOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(styles, \"expand-icon\")}\r\n />\r\n ) : record.childNodes &&\r\n record.childNodes?.length > 0 ? (\r\n <RightOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(styles, \"expand-icon\")}\r\n />\r\n ) : null}\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 converFunction(\r\n this.props.onCallBacks?.onSumbitCallBack,\r\n { pageRef: this.props.pageRef },\r\n this.props.Utils\r\n );\r\n this.tableReload();\r\n }}\r\n forms={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 Utils={this.props.Utils}\r\n requestObject={{\r\n addUrl: requestUrls.addUrl,\r\n editorUrl: requestUrls.editorUrl,\r\n addParams: requestParams.addParams,\r\n editorParams: requestParams.editorParams,\r\n }}\r\n funcs={this.props.funcs}\r\n {...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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nsc-react-component",
3
- "version": "4.1.6",
3
+ "version": "4.1.7",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {