nsc-react-component 2.14.13 → 2.14.15

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.
@@ -133,7 +133,7 @@ class NscChart extends PureComponent {
133
133
  result = dataMap[this.replace(data)];
134
134
  } else if (isArray(data)) {
135
135
  data.map(item => {
136
- let v = item.value;
136
+ let v = item === null || item === void 0 ? void 0 : item.value;
137
137
  if (v && this.isReplace(v)) {
138
138
  item.value = this.dataConversion(v, datas, dataMap);
139
139
  }
@@ -165,7 +165,7 @@ class NscChart extends PureComponent {
165
165
  if (isArray(obj)) {
166
166
  tempObj = [...obj];
167
167
  tempObj.map(item => {
168
- if (item.data) {
168
+ if (item !== null && item !== void 0 && item.data) {
169
169
  item.data = this.dataConversion(item.data, datas, dataMap);
170
170
  }
171
171
  });
@@ -244,4 +244,4 @@ class NscChart extends PureComponent {
244
244
  }
245
245
  }
246
246
  export default NscChart;
247
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJlY2hhcnRzIiwiU3RvcmUiLCJ1dGlscyIsInB4MnZ3IiwiaXNBcnJheSIsImlzT2JqZWN0IiwiTnNjQ2hhcnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwiZGF0YVNvdXJjZSIsImRhdGEiLCJzdG9yZSIsImNoaWxkcmVuIiwib3B0aW9uIiwib3B0aW9ucyIsImF1dG9Mb2FkIiwidXJsIiwibGlzdGVuZXJzIiwibGlzdGVuZXJzUG9wcyIsInN0b3JlcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIkVycm9yIiwiX3RoaXMiLCJzdG9yZVByb3BzIiwiX29iamVjdFNwcmVhZCIsIm1vZGVsIiwiY29tcG9uZW50Iiwib25CZWZvcmVMb2FkIiwiY2FsbGJhY2siLCJsb2FkIiwibW9kZWxEYXRhIiwic2V0U3RhdGUiLCJpc0ZpcnN0IiwiaW5pdCIsImRhdGFDaGFuZ2VkIiwiY29tcG9uZW50RGlkTW91bnQiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJwcmV2U3RhdGUiLCJzbmFwc2hvdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJjb25zb2xlIiwibG9nIiwicmVTZXRDaGFydCIsImlzU3RyaW5nIiwidiIsImNvbXBvbmVudFdpbGxVbm1vdW50Iiwid2luZG93IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZUNoYXJ0UmVzaXplIiwiYmluZCIsImlzUmVwbGFjZSIsInRlc3QiLCJyZXBsYWNlIiwic3Vic3RyaW5nIiwibGVuZ3RoIiwiZGF0YUNvbnZlcnNpb24iLCJkYXRhcyIsImRhdGFNYXAiLCJyZXN1bHQiLCJtYXAiLCJpdGVtIiwidmFsdWUiLCJ0ZW1wT2JqIiwia2V5IiwicHVzaCIsIm9iamVjdENvbnZlcnNpb24iLCJvYmoiLCJfbXlDaGFydCRnZXRaciIsIl9teUNoYXJ0JGdldFpyMiIsIk9uQ2xpY2siLCJPblpyQ2xpY2siLCJzdGF0ZSIsIm5ld0RhdGFzIiwibmV3T3B0aW9uIiwieEF4aXMiLCJ5QXhpcyIsInNlcmllcyIsIm15Q2hhcnQiLCJjaGFydFJlZiIsImN1cnJlbnQiLCJjbGVhciIsIm9mZiIsImdldFpyIiwic2V0T3B0aW9uIiwib24iLCJwYXJhbXMiLCJyZXNpemUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVuZGVyIiwid2lkdGgiLCJoZWlnaHQiLCJib3hTdHlsZSIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsInJlZiIsImlkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYmFzZS9jaGFydC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tIFwiZWNoYXJ0c1wiO1xyXG5pbXBvcnQgeyBFQ2hhcnRzIH0gZnJvbSBcImVjaGFydHMvbGliL2VjaGFydHNcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCB7IHB4MnZ3IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCB7IGlzQXJyYXksIGlzT2JqZWN0IH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmludGVyZmFjZSBDaGFydFByb3BzIHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgb3B0aW9uOiBhbnk7XHJcbiAgZGF0YT86IEFycmF5PE9iamVjdD4gfCBPYmplY3Q7XHJcbiAgd2lkdGg6IG51bWJlciB8IHN0cmluZzsgLy/lm77ooajlrr3luqZcclxuICBoZWlnaHQ6IG51bWJlciB8IHN0cmluZzsgLy/lm77ooajplb/luqZcclxuICBhdXRvTG9hZD86IGJvb2xlYW47IC8v5pWw5o2u5pS55Y+Y77yM6Ieq5Yqo5Yi35paw5Zu+6KGoLOm7mOiupHRydWVcclxuICBPbkNsaWNrPzogKHBhcmFtczogYW55LCBlPzogYW55KSA9PiB2b2lkOyAvL+WbvuihqOeCueWHu+S6i+S7tlxyXG4gIE9uWnJDbGljaz86IChwYXJhbXM6IGFueSwgZT86IGFueSkgPT4gdm9pZDsgLy/lm77ooajngrnlh7vkuovku7ZcclxuICBbcHJvTmFtZXM6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuLy9kYXRh56S65L6LXHJcbi8qKlxyXG4g5pWw57uE77yaXHJcbiBkYXRhPVt7bmFtZTonMeaciCcsdmFsdWU6MjB9LHtuYW1lOicy5pyIJyx2YWx1ZToxMH0se25hbWU6JzPmnIgnLHZhbHVlOjI1fV1cclxuIOWvueixoVxyXG4gZGF0YT17bmFtZTpbJzHmnIgnLCcy5pyIJywnM+aciCddLHZhbHVlOlsyMCwzMCw0MF19XHJcbiAqL1xyXG5jbGFzcyBOc2NDaGFydCBleHRlbmRzIFB1cmVDb21wb25lbnQ8Q2hhcnRQcm9wcz4ge1xyXG4gIGNoYXJ0UmVmID0gUmVhY3QuY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xyXG4gIG15Q2hhcnQ6IEVDaGFydHMgfCBudWxsID0gbnVsbDtcclxuICBzdG9yZSA9IHt9IGFzIFN0b3JlUHJvcHM7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBkYXRhU291cmNlOiBudWxsLFxyXG4gIH07XHJcbiAgaXNGaXJzdCA9IHRydWU7XHJcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICAgIGNvbnN0IHtcclxuICAgICAgZGF0YSxcclxuICAgICAgc3RvcmUgPSB7fSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIG9wdGlvbjogb3B0aW9ucyxcclxuICAgICAgYXV0b0xvYWQgPSB0cnVlLFxyXG4gICAgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgeyB1cmwsIGxpc3RlbmVyczogbGlzdGVuZXJzUG9wcyA9IHt9LCAuLi5zdG9yZXMgfSA9IHN0b3JlO1xyXG4gICAgaWYgKCFjaGlsZHJlbikge1xyXG4gICAgICBpZiAoIShkYXRhIHx8IHVybCB8fCBvcHRpb25zKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOOAgWRhdGHjgIFvcHRpb27kuI3og73pg73kuLrnqbrvvIFcIik7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgICAgbGV0IHN0b3JlUHJvcHMgPSB7XHJcbiAgICAgICAgbW9kZWw6IFwibW9kZWxcIixcclxuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgbGlzdGVuZXJzOiB7XHJcbiAgICAgICAgICBvbkJlZm9yZUxvYWQ6IGZ1bmN0aW9uIChzdG9yZSwgb3B0aW9ucykge1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLm9uQmVmb3JlTG9hZCwgX3RoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IGZ1bmN0aW9uIChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSB7XHJcbiAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhIH0sICgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoX3RoaXMuaXNGaXJzdCAmJiBhdXRvTG9hZCkge1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuaW5pdCgpO1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuaXNGaXJzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1BvcHMubG9hZCwgX3RoaXMsIFtkYXRhLCBtb2RlbERhdGEsIHN0b3JlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZGF0YUNoYW5nZWQ6IGZ1bmN0aW9uIChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSB7XHJcbiAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhIH0sICgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoYXV0b0xvYWQpIHtcclxuICAgICAgICAgICAgICAgIF90aGlzLmluaXQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLmRhdGFDaGFuZ2VkLCBfdGhpcywgW1xyXG4gICAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgICAgbW9kZWxEYXRhLFxyXG4gICAgICAgICAgICAgIHN0b3JlLFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi5zdG9yZXMsXHJcbiAgICAgIH07XHJcbiAgICAgIGlmICh1cmwgJiYgZGF0YSA9PSBudWxsKSB7XHJcbiAgICAgICAgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICAgIC4uLntcclxuICAgICAgICAgICAgYXV0b0xvYWQ6IHRydWUsXHJcbiAgICAgICAgICAgIHVybDogdXJsLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnN0b3JlUHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFN0b3JlKHN0b3JlUHJvcHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IGRhdGEsIGF1dG9Mb2FkID0gdHJ1ZSwgc3RvcmUsIG9wdGlvbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChkYXRhICYmIGF1dG9Mb2FkKSB7XHJcbiAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgfSBlbHNlIGlmICghZGF0YSAmJiAhc3RvcmU/LnVybCAmJiBvcHRpb24pIHtcclxuICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRVcGRhdGUoXHJcbiAgICBwcmV2UHJvcHM6IFJlYWRvbmx5PENoYXJ0UHJvcHM+LFxyXG4gICAgcHJldlN0YXRlOiBSZWFkb25seTx7fT4sXHJcbiAgICBzbmFwc2hvdD86IGFueVxyXG4gICk6IHZvaWQge1xyXG4gICAgY29uc3QgeyBhdXRvTG9hZCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoYXV0b0xvYWQpIHtcclxuICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KHByZXZQcm9wcy5kYXRhKSAhPT0gSlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wcy5kYXRhKSkge1xyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHByZXZQcm9wcy5vcHRpb24pICE9PSBKU09OLnN0cmluZ2lmeSh0aGlzLnByb3BzLm9wdGlvbilcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJhYWFcIik7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlU2V0Q2hhcnQoKSB7XHJcbiAgICB0aGlzLmluaXQoKTtcclxuICB9XHJcbiAgaXNTdHJpbmcodikge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2ID09PSBcInN0cmluZ1wiO1xyXG4gIH1cclxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMuaGFuZGxlQ2hhcnRSZXNpemUuYmluZCh0aGlzKSk7XHJcbiAgfVxyXG5cclxuICBpc1JlcGxhY2Uodikge1xyXG4gICAgcmV0dXJuIC9eey4qfSQvZ2kudGVzdCh2KTtcclxuICB9XHJcbiAgcmVwbGFjZSh2KSB7XHJcbiAgICByZXR1cm4gdi5zdWJzdHJpbmcoMSwgdi5sZW5ndGggLSAxKTtcclxuICB9XHJcblxyXG4gIGRhdGFDb252ZXJzaW9uKGRhdGEsIGRhdGFzLCBkYXRhTWFwKSB7XHJcbiAgICBsZXQgcmVzdWx0O1xyXG4gICAgaWYgKGRhdGEpIHtcclxuICAgICAgaWYgKHRoaXMuaXNTdHJpbmcoZGF0YSkgJiYgdGhpcy5pc1JlcGxhY2UoZGF0YSkpIHtcclxuICAgICAgICByZXN1bHQgPSBkYXRhTWFwW3RoaXMucmVwbGFjZShkYXRhKV07XHJcbiAgICAgIH0gZWxzZSBpZiAoaXNBcnJheShkYXRhKSkge1xyXG4gICAgICAgIGRhdGEubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBsZXQgdiA9IGl0ZW0udmFsdWU7XHJcbiAgICAgICAgICBpZiAodiAmJiB0aGlzLmlzUmVwbGFjZSh2KSkge1xyXG4gICAgICAgICAgICBpdGVtLnZhbHVlID0gdGhpcy5kYXRhQ29udmVyc2lvbih2LCBkYXRhcywgZGF0YU1hcCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmVzdWx0ID0gZGF0YTtcclxuICAgICAgfSBlbHNlIGlmIChpc09iamVjdChkYXRhKSkge1xyXG4gICAgICAgIHJlc3VsdCA9IFtdO1xyXG4gICAgICAgIGlmIChpc0FycmF5KGRhdGFzKSkge1xyXG4gICAgICAgICAgZGF0YXMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIHZhciB0ZW1wT2JqID0ge307XHJcbiAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBpdGVtKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHYgPSBpdGVtW2tleV07XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaXNSZXBsYWNlKHYpKSB7XHJcbiAgICAgICAgICAgICAgICB0ZW1wT2JqW2tleV0gPSBpdGVtW3RoaXMucmVwbGFjZSh2KV07XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRlbXBPYmpba2V5XSA9IHY7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRlbXBPYmopO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuICBvYmplY3RDb252ZXJzaW9uKG9iaiwgZGF0YXMsIGRhdGFNYXApIHtcclxuICAgIGxldCB0ZW1wT2JqOiBhbnk7XHJcbiAgICBpZiAob2JqKSB7XHJcbiAgICAgIGlmIChpc0FycmF5KG9iaikpIHtcclxuICAgICAgICB0ZW1wT2JqID0gWy4uLm9ial07XHJcbiAgICAgICAgdGVtcE9iai5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGlmIChpdGVtLmRhdGEpIHtcclxuICAgICAgICAgICAgaXRlbS5kYXRhID0gdGhpcy5kYXRhQ29udmVyc2lvbihpdGVtLmRhdGEsIGRhdGFzLCBkYXRhTWFwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzU3RyaW5nKG9iaikpIHtcclxuICAgICAgICB0ZW1wT2JqID0gb2JqO1xyXG4gICAgICAgIHRlbXBPYmouZGF0YSA9IHRoaXMuZGF0YUNvbnZlcnNpb24odGVtcE9iaiwgZGF0YXMsIGRhdGFNYXApO1xyXG4gICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KG9iaikpIHtcclxuICAgICAgICB0ZW1wT2JqID0geyAuLi5vYmogfTtcclxuICAgICAgICB0ZW1wT2JqLmRhdGEgPSB0aGlzLmRhdGFDb252ZXJzaW9uKHRlbXBPYmouZGF0YSwgZGF0YXMsIGRhdGFNYXApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGVtcE9iajtcclxuICB9XHJcbiAgaW5pdCgpIHtcclxuICAgIGNvbnN0IHsgb3B0aW9uLCBkYXRhLCBPbkNsaWNrLCBPblpyQ2xpY2sgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGRhdGFTb3VyY2UgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgZGF0YU1hcDogYW55ID0ge307XHJcbiAgICBjb25zdCBuZXdEYXRhcyA9IGRhdGEgfHwgZGF0YVNvdXJjZTtcclxuICAgIGxldCBuZXdPcHRpb246IGFueSA9IHsgLi4ub3B0aW9uIH07XHJcbiAgICBpZiAoaXNBcnJheShuZXdEYXRhcykpIHtcclxuICAgICAgbmV3RGF0YXMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQga2V5IGluIGl0ZW0pIHtcclxuICAgICAgICAgIGlmIChkYXRhTWFwW2tleV0gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBkYXRhTWFwW2tleV0gPSBbXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRhdGFNYXBba2V5XS5wdXNoKGl0ZW1ba2V5XSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoaXNPYmplY3QobmV3RGF0YXMpKSB7XHJcbiAgICAgIGRhdGFNYXAgPSBuZXdEYXRhcztcclxuICAgIH1cclxuICAgIG5ld09wdGlvbi54QXhpcyA9IHRoaXMub2JqZWN0Q29udmVyc2lvbihuZXdPcHRpb24ueEF4aXMsIG5ld0RhdGFzLCBkYXRhTWFwKTtcclxuICAgIG5ld09wdGlvbi55QXhpcyA9IHRoaXMub2JqZWN0Q29udmVyc2lvbihuZXdPcHRpb24ueUF4aXMsIG5ld0RhdGFzLCBkYXRhTWFwKTtcclxuICAgIG5ld09wdGlvbi5zZXJpZXMgPSB0aGlzLm9iamVjdENvbnZlcnNpb24oXHJcbiAgICAgIG5ld09wdGlvbi5zZXJpZXMsXHJcbiAgICAgIG5ld0RhdGFzLFxyXG4gICAgICBkYXRhTWFwXHJcbiAgICApO1xyXG4gICAgY29uc3QgbXlDaGFydCA9ICh0aGlzLm15Q2hhcnQgPSBlY2hhcnRzLmluaXQoXHJcbiAgICAgIHRoaXMuY2hhcnRSZWYuY3VycmVudCBhcyBIVE1MRGl2RWxlbWVudFxyXG4gICAgKSk7IC8v5Yid5aeL5YyWZWNoYXJ0c++8jOmAmui/h3JlZuWxnuaAp+iOt+WPlmRvbVxyXG4gICAgbXlDaGFydC5jbGVhcigpO1xyXG4gICAgbXlDaGFydC5vZmYoXCJjbGlja1wiKTtcclxuICAgIG15Q2hhcnQ/LmdldFpyKCk/Lm9mZihcImNsaWNrXCIpO1xyXG4gICAgbXlDaGFydC5zZXRPcHRpb24obmV3T3B0aW9uKTtcclxuICAgIG15Q2hhcnQub24oXCJjbGlja1wiLCBmdW5jdGlvbiAocGFyYW1zKSB7XHJcbiAgICAgIE9uQ2xpY2sgJiYgT25DbGljayhwYXJhbXMsIG15Q2hhcnQpO1xyXG4gICAgfSk7XHJcbiAgICBteUNoYXJ0Py5nZXRacigpPy5vbihcImNsaWNrXCIsIChwYXJhbXMpID0+IHtcclxuICAgICAgT25ackNsaWNrICYmIE9uWnJDbGljayhwYXJhbXMsIG15Q2hhcnQpO1xyXG4gICAgfSk7XHJcbiAgICBteUNoYXJ0LnJlc2l6ZSgpO1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy5oYW5kbGVDaGFydFJlc2l6ZS5iaW5kKHRoaXMpKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUNoYXJ0UmVzaXplKCkge1xyXG4gICAgaWYgKHRoaXMubXlDaGFydCkge1xyXG4gICAgICB0aGlzLm15Q2hhcnQucmVzaXplKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBib3hTdHlsZSA9IHtcclxuICAgICAgd2lkdGg6IHR5cGVvZiB3aWR0aCA9PSBcIm51bWJlclwiID8gcHgydncod2lkdGgpIDogd2lkdGgsXHJcbiAgICAgIGhlaWdodDogdHlwZW9mIGhlaWdodCA9PSBcIm51bWJlclwiID8gcHgydncoaGVpZ2h0KSA6IGhlaWdodCxcclxuICAgIH07XHJcbiAgICByZXR1cm4gPGRpdiBzdHlsZT17Ym94U3R5bGV9IHJlZj17dGhpcy5jaGFydFJlZn0gaWQ9XCJuc2NfY2hhcnRzXCI+PC9kaXY+O1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgTnNjQ2hh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
247
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJlY2hhcnRzIiwiU3RvcmUiLCJ1dGlscyIsInB4MnZ3IiwiaXNBcnJheSIsImlzT2JqZWN0IiwiTnNjQ2hhcnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwiZGF0YVNvdXJjZSIsImRhdGEiLCJzdG9yZSIsImNoaWxkcmVuIiwib3B0aW9uIiwib3B0aW9ucyIsImF1dG9Mb2FkIiwidXJsIiwibGlzdGVuZXJzIiwibGlzdGVuZXJzUG9wcyIsInN0b3JlcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIkVycm9yIiwiX3RoaXMiLCJzdG9yZVByb3BzIiwiX29iamVjdFNwcmVhZCIsIm1vZGVsIiwiY29tcG9uZW50Iiwib25CZWZvcmVMb2FkIiwiY2FsbGJhY2siLCJsb2FkIiwibW9kZWxEYXRhIiwic2V0U3RhdGUiLCJpc0ZpcnN0IiwiaW5pdCIsImRhdGFDaGFuZ2VkIiwiY29tcG9uZW50RGlkTW91bnQiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJwcmV2U3RhdGUiLCJzbmFwc2hvdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJjb25zb2xlIiwibG9nIiwicmVTZXRDaGFydCIsImlzU3RyaW5nIiwidiIsImNvbXBvbmVudFdpbGxVbm1vdW50Iiwid2luZG93IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZUNoYXJ0UmVzaXplIiwiYmluZCIsImlzUmVwbGFjZSIsInRlc3QiLCJyZXBsYWNlIiwic3Vic3RyaW5nIiwibGVuZ3RoIiwiZGF0YUNvbnZlcnNpb24iLCJkYXRhcyIsImRhdGFNYXAiLCJyZXN1bHQiLCJtYXAiLCJpdGVtIiwidmFsdWUiLCJ0ZW1wT2JqIiwia2V5IiwicHVzaCIsIm9iamVjdENvbnZlcnNpb24iLCJvYmoiLCJfbXlDaGFydCRnZXRaciIsIl9teUNoYXJ0JGdldFpyMiIsIk9uQ2xpY2siLCJPblpyQ2xpY2siLCJzdGF0ZSIsIm5ld0RhdGFzIiwibmV3T3B0aW9uIiwieEF4aXMiLCJ5QXhpcyIsInNlcmllcyIsIm15Q2hhcnQiLCJjaGFydFJlZiIsImN1cnJlbnQiLCJjbGVhciIsIm9mZiIsImdldFpyIiwic2V0T3B0aW9uIiwib24iLCJwYXJhbXMiLCJyZXNpemUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVuZGVyIiwid2lkdGgiLCJoZWlnaHQiLCJib3hTdHlsZSIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsInJlZiIsImlkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYmFzZS9jaGFydC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tIFwiZWNoYXJ0c1wiO1xyXG5pbXBvcnQgeyBFQ2hhcnRzIH0gZnJvbSBcImVjaGFydHMvbGliL2VjaGFydHNcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCB7IHB4MnZ3IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCB7IGlzQXJyYXksIGlzT2JqZWN0IH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmludGVyZmFjZSBDaGFydFByb3BzIHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgb3B0aW9uOiBhbnk7XHJcbiAgZGF0YT86IEFycmF5PE9iamVjdD4gfCBPYmplY3Q7XHJcbiAgd2lkdGg6IG51bWJlciB8IHN0cmluZzsgLy/lm77ooajlrr3luqZcclxuICBoZWlnaHQ6IG51bWJlciB8IHN0cmluZzsgLy/lm77ooajplb/luqZcclxuICBhdXRvTG9hZD86IGJvb2xlYW47IC8v5pWw5o2u5pS55Y+Y77yM6Ieq5Yqo5Yi35paw5Zu+6KGoLOm7mOiupHRydWVcclxuICBPbkNsaWNrPzogKHBhcmFtczogYW55LCBlPzogYW55KSA9PiB2b2lkOyAvL+WbvuihqOeCueWHu+S6i+S7tlxyXG4gIE9uWnJDbGljaz86IChwYXJhbXM6IGFueSwgZT86IGFueSkgPT4gdm9pZDsgLy/lm77ooajngrnlh7vkuovku7ZcclxuICBbcHJvTmFtZXM6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuLy9kYXRh56S65L6LXHJcbi8qKlxyXG4g5pWw57uE77yaXHJcbiBkYXRhPVt7bmFtZTonMeaciCcsdmFsdWU6MjB9LHtuYW1lOicy5pyIJyx2YWx1ZToxMH0se25hbWU6JzPmnIgnLHZhbHVlOjI1fV1cclxuIOWvueixoVxyXG4gZGF0YT17bmFtZTpbJzHmnIgnLCcy5pyIJywnM+aciCddLHZhbHVlOlsyMCwzMCw0MF19XHJcbiAqL1xyXG5jbGFzcyBOc2NDaGFydCBleHRlbmRzIFB1cmVDb21wb25lbnQ8Q2hhcnRQcm9wcz4ge1xyXG4gIGNoYXJ0UmVmID0gUmVhY3QuY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xyXG4gIG15Q2hhcnQ6IEVDaGFydHMgfCBudWxsID0gbnVsbDtcclxuICBzdG9yZSA9IHt9IGFzIFN0b3JlUHJvcHM7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBkYXRhU291cmNlOiBudWxsLFxyXG4gIH07XHJcbiAgaXNGaXJzdCA9IHRydWU7XHJcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICAgIGNvbnN0IHtcclxuICAgICAgZGF0YSxcclxuICAgICAgc3RvcmUgPSB7fSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIG9wdGlvbjogb3B0aW9ucyxcclxuICAgICAgYXV0b0xvYWQgPSB0cnVlLFxyXG4gICAgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgeyB1cmwsIGxpc3RlbmVyczogbGlzdGVuZXJzUG9wcyA9IHt9LCAuLi5zdG9yZXMgfSA9IHN0b3JlO1xyXG4gICAgaWYgKCFjaGlsZHJlbikge1xyXG4gICAgICBpZiAoIShkYXRhIHx8IHVybCB8fCBvcHRpb25zKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOOAgWRhdGHjgIFvcHRpb27kuI3og73pg73kuLrnqbrvvIFcIik7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgICAgbGV0IHN0b3JlUHJvcHMgPSB7XHJcbiAgICAgICAgbW9kZWw6IFwibW9kZWxcIixcclxuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgbGlzdGVuZXJzOiB7XHJcbiAgICAgICAgICBvbkJlZm9yZUxvYWQ6IGZ1bmN0aW9uIChzdG9yZSwgb3B0aW9ucykge1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLm9uQmVmb3JlTG9hZCwgX3RoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IGZ1bmN0aW9uIChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSB7XHJcbiAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhIH0sICgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoX3RoaXMuaXNGaXJzdCAmJiBhdXRvTG9hZCkge1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuaW5pdCgpO1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuaXNGaXJzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1BvcHMubG9hZCwgX3RoaXMsIFtkYXRhLCBtb2RlbERhdGEsIHN0b3JlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZGF0YUNoYW5nZWQ6IGZ1bmN0aW9uIChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSB7XHJcbiAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhIH0sICgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoYXV0b0xvYWQpIHtcclxuICAgICAgICAgICAgICAgIF90aGlzLmluaXQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLmRhdGFDaGFuZ2VkLCBfdGhpcywgW1xyXG4gICAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgICAgbW9kZWxEYXRhLFxyXG4gICAgICAgICAgICAgIHN0b3JlLFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi5zdG9yZXMsXHJcbiAgICAgIH07XHJcbiAgICAgIGlmICh1cmwgJiYgZGF0YSA9PSBudWxsKSB7XHJcbiAgICAgICAgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICAgIC4uLntcclxuICAgICAgICAgICAgYXV0b0xvYWQ6IHRydWUsXHJcbiAgICAgICAgICAgIHVybDogdXJsLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnN0b3JlUHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFN0b3JlKHN0b3JlUHJvcHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IGRhdGEsIGF1dG9Mb2FkID0gdHJ1ZSwgc3RvcmUsIG9wdGlvbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChkYXRhICYmIGF1dG9Mb2FkKSB7XHJcbiAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgfSBlbHNlIGlmICghZGF0YSAmJiAhc3RvcmU/LnVybCAmJiBvcHRpb24pIHtcclxuICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRVcGRhdGUoXHJcbiAgICBwcmV2UHJvcHM6IFJlYWRvbmx5PENoYXJ0UHJvcHM+LFxyXG4gICAgcHJldlN0YXRlOiBSZWFkb25seTx7fT4sXHJcbiAgICBzbmFwc2hvdD86IGFueVxyXG4gICk6IHZvaWQge1xyXG4gICAgY29uc3QgeyBhdXRvTG9hZCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoYXV0b0xvYWQpIHtcclxuICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KHByZXZQcm9wcy5kYXRhKSAhPT0gSlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wcy5kYXRhKSkge1xyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHByZXZQcm9wcy5vcHRpb24pICE9PSBKU09OLnN0cmluZ2lmeSh0aGlzLnByb3BzLm9wdGlvbilcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJhYWFcIik7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlU2V0Q2hhcnQoKSB7XHJcbiAgICB0aGlzLmluaXQoKTtcclxuICB9XHJcbiAgaXNTdHJpbmcodikge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2ID09PSBcInN0cmluZ1wiO1xyXG4gIH1cclxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMuaGFuZGxlQ2hhcnRSZXNpemUuYmluZCh0aGlzKSk7XHJcbiAgfVxyXG5cclxuICBpc1JlcGxhY2Uodikge1xyXG4gICAgcmV0dXJuIC9eey4qfSQvZ2kudGVzdCh2KTtcclxuICB9XHJcbiAgcmVwbGFjZSh2KSB7XHJcbiAgICByZXR1cm4gdi5zdWJzdHJpbmcoMSwgdi5sZW5ndGggLSAxKTtcclxuICB9XHJcblxyXG4gIGRhdGFDb252ZXJzaW9uKGRhdGEsIGRhdGFzLCBkYXRhTWFwKSB7XHJcbiAgICBsZXQgcmVzdWx0O1xyXG4gICAgaWYgKGRhdGEpIHtcclxuICAgICAgaWYgKHRoaXMuaXNTdHJpbmcoZGF0YSkgJiYgdGhpcy5pc1JlcGxhY2UoZGF0YSkpIHtcclxuICAgICAgICByZXN1bHQgPSBkYXRhTWFwW3RoaXMucmVwbGFjZShkYXRhKV07XHJcbiAgICAgIH0gZWxzZSBpZiAoaXNBcnJheShkYXRhKSkge1xyXG4gICAgICAgIGRhdGEubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBsZXQgdiA9IGl0ZW0/LnZhbHVlO1xyXG4gICAgICAgICAgaWYgKHYgJiYgdGhpcy5pc1JlcGxhY2UodikpIHtcclxuICAgICAgICAgICAgaXRlbS52YWx1ZSA9IHRoaXMuZGF0YUNvbnZlcnNpb24odiwgZGF0YXMsIGRhdGFNYXApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJlc3VsdCA9IGRhdGE7XHJcbiAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoZGF0YSkpIHtcclxuICAgICAgICByZXN1bHQgPSBbXTtcclxuICAgICAgICBpZiAoaXNBcnJheShkYXRhcykpIHtcclxuICAgICAgICAgIGRhdGFzLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICB2YXIgdGVtcE9iaiA9IHt9O1xyXG4gICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gaXRlbSkge1xyXG4gICAgICAgICAgICAgIGxldCB2ID0gaXRlbVtrZXldO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmlzUmVwbGFjZSh2KSkge1xyXG4gICAgICAgICAgICAgICAgdGVtcE9ialtrZXldID0gaXRlbVt0aGlzLnJlcGxhY2UodildO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0ZW1wT2JqW2tleV0gPSB2O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXN1bHQucHVzaCh0ZW1wT2JqKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbiAgb2JqZWN0Q29udmVyc2lvbihvYmosIGRhdGFzLCBkYXRhTWFwKSB7XHJcbiAgICBsZXQgdGVtcE9iajogYW55O1xyXG4gICAgaWYgKG9iaikge1xyXG4gICAgICBpZiAoaXNBcnJheShvYmopKSB7XHJcbiAgICAgICAgdGVtcE9iaiA9IFsuLi5vYmpdO1xyXG4gICAgICAgIHRlbXBPYmoubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaXRlbT8uZGF0YSkge1xyXG4gICAgICAgICAgICBpdGVtLmRhdGEgPSB0aGlzLmRhdGFDb252ZXJzaW9uKGl0ZW0uZGF0YSwgZGF0YXMsIGRhdGFNYXApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXNTdHJpbmcob2JqKSkge1xyXG4gICAgICAgIHRlbXBPYmogPSBvYmo7XHJcbiAgICAgICAgdGVtcE9iai5kYXRhID0gdGhpcy5kYXRhQ29udmVyc2lvbih0ZW1wT2JqLCBkYXRhcywgZGF0YU1hcCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3Qob2JqKSkge1xyXG4gICAgICAgIHRlbXBPYmogPSB7IC4uLm9iaiB9O1xyXG4gICAgICAgIHRlbXBPYmouZGF0YSA9IHRoaXMuZGF0YUNvbnZlcnNpb24odGVtcE9iai5kYXRhLCBkYXRhcywgZGF0YU1hcCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0ZW1wT2JqO1xyXG4gIH1cclxuICBpbml0KCkge1xyXG4gICAgY29uc3QgeyBvcHRpb24sIGRhdGEsIE9uQ2xpY2ssIE9uWnJDbGljayB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgZGF0YVNvdXJjZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCBkYXRhTWFwOiBhbnkgPSB7fTtcclxuICAgIGNvbnN0IG5ld0RhdGFzID0gZGF0YSB8fCBkYXRhU291cmNlO1xyXG4gICAgbGV0IG5ld09wdGlvbjogYW55ID0geyAuLi5vcHRpb24gfTtcclxuICAgIGlmIChpc0FycmF5KG5ld0RhdGFzKSkge1xyXG4gICAgICBuZXdEYXRhcy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gaXRlbSkge1xyXG4gICAgICAgICAgaWYgKGRhdGFNYXBba2V5XSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGRhdGFNYXBba2V5XSA9IFtdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZGF0YU1hcFtrZXldLnB1c2goaXRlbVtrZXldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChpc09iamVjdChuZXdEYXRhcykpIHtcclxuICAgICAgZGF0YU1hcCA9IG5ld0RhdGFzO1xyXG4gICAgfVxyXG4gICAgbmV3T3B0aW9uLnhBeGlzID0gdGhpcy5vYmplY3RDb252ZXJzaW9uKG5ld09wdGlvbi54QXhpcywgbmV3RGF0YXMsIGRhdGFNYXApO1xyXG4gICAgbmV3T3B0aW9uLnlBeGlzID0gdGhpcy5vYmplY3RDb252ZXJzaW9uKG5ld09wdGlvbi55QXhpcywgbmV3RGF0YXMsIGRhdGFNYXApO1xyXG4gICAgbmV3T3B0aW9uLnNlcmllcyA9IHRoaXMub2JqZWN0Q29udmVyc2lvbihcclxuICAgICAgbmV3T3B0aW9uLnNlcmllcyxcclxuICAgICAgbmV3RGF0YXMsXHJcbiAgICAgIGRhdGFNYXBcclxuICAgICk7XHJcbiAgICBjb25zdCBteUNoYXJ0ID0gKHRoaXMubXlDaGFydCA9IGVjaGFydHMuaW5pdChcclxuICAgICAgdGhpcy5jaGFydFJlZi5jdXJyZW50IGFzIEhUTUxEaXZFbGVtZW50XHJcbiAgICApKTsgLy/liJ3lp4vljJZlY2hhcnRz77yM6YCa6L+HcmVm5bGe5oCn6I635Y+WZG9tXHJcbiAgICBteUNoYXJ0LmNsZWFyKCk7XHJcbiAgICBteUNoYXJ0Lm9mZihcImNsaWNrXCIpO1xyXG4gICAgbXlDaGFydD8uZ2V0WnIoKT8ub2ZmKFwiY2xpY2tcIik7XHJcbiAgICBteUNoYXJ0LnNldE9wdGlvbihuZXdPcHRpb24pO1xyXG4gICAgbXlDaGFydC5vbihcImNsaWNrXCIsIGZ1bmN0aW9uIChwYXJhbXMpIHtcclxuICAgICAgT25DbGljayAmJiBPbkNsaWNrKHBhcmFtcywgbXlDaGFydCk7XHJcbiAgICB9KTtcclxuICAgIG15Q2hhcnQ/LmdldFpyKCk/Lm9uKFwiY2xpY2tcIiwgKHBhcmFtcykgPT4ge1xyXG4gICAgICBPblpyQ2xpY2sgJiYgT25ackNsaWNrKHBhcmFtcywgbXlDaGFydCk7XHJcbiAgICB9KTtcclxuICAgIG15Q2hhcnQucmVzaXplKCk7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB0aGlzLmhhbmRsZUNoYXJ0UmVzaXplLmJpbmQodGhpcykpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlQ2hhcnRSZXNpemUoKSB7XHJcbiAgICBpZiAodGhpcy5teUNoYXJ0KSB7XHJcbiAgICAgIHRoaXMubXlDaGFydC5yZXNpemUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGJveFN0eWxlID0ge1xyXG4gICAgICB3aWR0aDogdHlwZW9mIHdpZHRoID09IFwibnVtYmVyXCIgPyBweDJ2dyh3aWR0aCkgOiB3aWR0aCxcclxuICAgICAgaGVpZ2h0OiB0eXBlb2YgaGVpZ2h0ID09IFwibnVtYmVyXCIgPyBweDJ2dyhoZWlnaHQpIDogaGVpZ2h0LFxyXG4gICAgfTtcclxuICAgIHJldHVybiA8ZGl2IHN0eWxlPXtib3hTdHlsZX0gcmVmPXt0aGlzLmNoYXJ0UmVmfSBpZD1cIm5zY19jaGFydHNcIj48L2Rpdj47XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBOc2ND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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","PureComponent","echarts","Store","utils","px2vw","isArray","isObject","NscChart","constructor","props","_defineProperty","createRef","dataSource","data","store","children","option","options","autoLoad","url","listeners","listenersPops","stores","_objectWithoutProperties","_excluded","Error","_this","storeProps","_objectSpread","model","component","onBeforeLoad","callback","load","modelData","setState","isFirst","init","dataChanged","componentDidMount","componentDidUpdate","prevProps","prevState","snapshot","JSON","stringify","console","log","reSetChart","isString","v","componentWillUnmount","window","removeEventListener","handleChartResize","bind","isReplace","test","replace","substring","length","dataConversion","datas","dataMap","result","map","item","value","tempObj","key","push","objectConversion","obj","_myChart$getZr","_myChart$getZr2","OnClick","OnZrClick","state","newDatas","newOption","xAxis","yAxis","series","myChart","chartRef","current","clear","off","getZr","setOption","on","params","resize","addEventListener","render","width","height","boxStyle","createElement","style","ref","id"],"sources":["../../../src/components/base/chart/index.tsx"],"sourcesContent":["import React, { PureComponent } from \"react\";\r\nimport * as echarts from \"echarts\";\r\nimport { ECharts } from \"echarts/lib/echarts\";\r\nimport Store, { StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport { px2vw } from \"../../utils\";\r\nimport { isArray, isObject } from \"@bj-nsc/functions\";\r\ninterface ChartProps {\r\n store?: StoreProps;\r\n option: any;\r\n data?: Array<Object> | Object;\r\n width: number | string; //图表宽度\r\n height: number | string; //图表长度\r\n autoLoad?: boolean; //数据改变,自动刷新图表,默认true\r\n OnClick?: (params: any, e?: any) => void; //图表点击事件\r\n OnZrClick?: (params: any, e?: any) => void; //图表点击事件\r\n [proNames: string]: any;\r\n}\r\n\r\n//data示例\r\n/**\r\n 数组:\r\n data=[{name:'1月',value:20},{name:'2月',value:10},{name:'3月',value:25}]\r\n 对象\r\n data={name:['1月','2月','3月'],value:[20,30,40]}\r\n */\r\nclass NscChart extends PureComponent<ChartProps> {\r\n chartRef = React.createRef<HTMLDivElement>();\r\n myChart: ECharts | null = null;\r\n store = {} as StoreProps;\r\n state = {\r\n dataSource: null,\r\n };\r\n isFirst = true;\r\n constructor(props) {\r\n super(props);\r\n const {\r\n data,\r\n store = {},\r\n children,\r\n option: options,\r\n autoLoad = true,\r\n } = props;\r\n const { url, listeners: listenersPops = {}, ...stores } = store;\r\n if (!children) {\r\n if (!(data || url || options)) {\r\n throw new Error(\"url、data、option不能都为空!\");\r\n }\r\n let _this = this;\r\n let storeProps = {\r\n model: \"model\",\r\n component: this,\r\n listeners: {\r\n onBeforeLoad: function (store, options) {\r\n utils.callback(listenersPops.onBeforeLoad, _this, [store, options]);\r\n },\r\n load: function (data, modelData, store) {\r\n _this.setState({ dataSource: modelData }, () => {\r\n if (_this.isFirst && autoLoad) {\r\n _this.init();\r\n _this.isFirst = false;\r\n }\r\n });\r\n utils.callback(listenersPops.load, _this, [data, modelData, store]);\r\n },\r\n dataChanged: function (data, modelData, store) {\r\n _this.setState({ dataSource: modelData }, () => {\r\n if (autoLoad) {\r\n _this.init();\r\n }\r\n });\r\n utils.callback(listenersPops.dataChanged, _this, [\r\n data,\r\n modelData,\r\n store,\r\n ]);\r\n },\r\n },\r\n ...stores,\r\n };\r\n if (url && data == null) {\r\n storeProps = {\r\n ...{\r\n autoLoad: true,\r\n url: url,\r\n },\r\n ...storeProps,\r\n };\r\n }\r\n this.store = new Store(storeProps);\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n const { data, autoLoad = true, store, option } = this.props;\r\n if (data && autoLoad) {\r\n this.init();\r\n } else if (!data && !store?.url && option) {\r\n this.init();\r\n }\r\n }\r\n\r\n componentDidUpdate(\r\n prevProps: Readonly<ChartProps>,\r\n prevState: Readonly<{}>,\r\n snapshot?: any\r\n ): void {\r\n const { autoLoad = true } = this.props;\r\n if (autoLoad) {\r\n if (JSON.stringify(prevProps.data) !== JSON.stringify(this.props.data)) {\r\n this.init();\r\n } else if (\r\n JSON.stringify(prevProps.option) !== JSON.stringify(this.props.option)\r\n ) {\r\n console.log(\"aaa\");\r\n this.init();\r\n }\r\n }\r\n }\r\n\r\n reSetChart() {\r\n this.init();\r\n }\r\n isString(v) {\r\n return typeof v === \"string\";\r\n }\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.handleChartResize.bind(this));\r\n }\r\n\r\n isReplace(v) {\r\n return /^{.*}$/gi.test(v);\r\n }\r\n replace(v) {\r\n return v.substring(1, v.length - 1);\r\n }\r\n\r\n dataConversion(data, datas, dataMap) {\r\n let result;\r\n if (data) {\r\n if (this.isString(data) && this.isReplace(data)) {\r\n result = dataMap[this.replace(data)];\r\n } else if (isArray(data)) {\r\n data.map((item) => {\r\n let v = item.value;\r\n if (v && this.isReplace(v)) {\r\n item.value = this.dataConversion(v, datas, dataMap);\r\n }\r\n });\r\n result = data;\r\n } else if (isObject(data)) {\r\n result = [];\r\n if (isArray(datas)) {\r\n datas.map((item) => {\r\n var tempObj = {};\r\n for (let key in item) {\r\n let v = item[key];\r\n if (this.isReplace(v)) {\r\n tempObj[key] = item[this.replace(v)];\r\n } else {\r\n tempObj[key] = v;\r\n }\r\n }\r\n result.push(tempObj);\r\n });\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n objectConversion(obj, datas, dataMap) {\r\n let tempObj: any;\r\n if (obj) {\r\n if (isArray(obj)) {\r\n tempObj = [...obj];\r\n tempObj.map((item) => {\r\n if (item.data) {\r\n item.data = this.dataConversion(item.data, datas, dataMap);\r\n }\r\n });\r\n } else if (this.isString(obj)) {\r\n tempObj = obj;\r\n tempObj.data = this.dataConversion(tempObj, datas, dataMap);\r\n } else if (isObject(obj)) {\r\n tempObj = { ...obj };\r\n tempObj.data = this.dataConversion(tempObj.data, datas, dataMap);\r\n }\r\n }\r\n return tempObj;\r\n }\r\n init() {\r\n const { option, data, OnClick, OnZrClick } = this.props;\r\n const { dataSource } = this.state;\r\n let dataMap: any = {};\r\n const newDatas = data || dataSource;\r\n let newOption: any = { ...option };\r\n if (isArray(newDatas)) {\r\n newDatas.map((item) => {\r\n for (let key in item) {\r\n if (dataMap[key] == null) {\r\n dataMap[key] = [];\r\n }\r\n dataMap[key].push(item[key]);\r\n }\r\n });\r\n } else if (isObject(newDatas)) {\r\n dataMap = newDatas;\r\n }\r\n newOption.xAxis = this.objectConversion(newOption.xAxis, newDatas, dataMap);\r\n newOption.yAxis = this.objectConversion(newOption.yAxis, newDatas, dataMap);\r\n newOption.series = this.objectConversion(\r\n newOption.series,\r\n newDatas,\r\n dataMap\r\n );\r\n const myChart = (this.myChart = echarts.init(\r\n this.chartRef.current as HTMLDivElement\r\n )); //初始化echarts,通过ref属性获取dom\r\n myChart.clear();\r\n myChart.off(\"click\");\r\n myChart?.getZr()?.off(\"click\");\r\n myChart.setOption(newOption);\r\n myChart.on(\"click\", function (params) {\r\n OnClick && OnClick(params, myChart);\r\n });\r\n myChart?.getZr()?.on(\"click\", (params) => {\r\n OnZrClick && OnZrClick(params, myChart);\r\n });\r\n myChart.resize();\r\n window.addEventListener(\"resize\", this.handleChartResize.bind(this));\r\n }\r\n\r\n handleChartResize() {\r\n if (this.myChart) {\r\n this.myChart.resize();\r\n }\r\n }\r\n\r\n render() {\r\n const { width, height } = this.props;\r\n const boxStyle = {\r\n width: typeof width == \"number\" ? px2vw(width) : width,\r\n height: typeof height == \"number\" ? px2vw(height) : height,\r\n };\r\n return <div style={boxStyle} ref={this.chartRef} id=\"nsc_charts\"></div>;\r\n }\r\n}\r\n\r\nexport default NscChart;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","PureComponent","echarts","Store","utils","px2vw","isArray","isObject","NscChart","constructor","props","_defineProperty","createRef","dataSource","data","store","children","option","options","autoLoad","url","listeners","listenersPops","stores","_objectWithoutProperties","_excluded","Error","_this","storeProps","_objectSpread","model","component","onBeforeLoad","callback","load","modelData","setState","isFirst","init","dataChanged","componentDidMount","componentDidUpdate","prevProps","prevState","snapshot","JSON","stringify","console","log","reSetChart","isString","v","componentWillUnmount","window","removeEventListener","handleChartResize","bind","isReplace","test","replace","substring","length","dataConversion","datas","dataMap","result","map","item","value","tempObj","key","push","objectConversion","obj","_myChart$getZr","_myChart$getZr2","OnClick","OnZrClick","state","newDatas","newOption","xAxis","yAxis","series","myChart","chartRef","current","clear","off","getZr","setOption","on","params","resize","addEventListener","render","width","height","boxStyle","createElement","style","ref","id"],"sources":["../../../src/components/base/chart/index.tsx"],"sourcesContent":["import React, { PureComponent } from \"react\";\r\nimport * as echarts from \"echarts\";\r\nimport { ECharts } from \"echarts/lib/echarts\";\r\nimport Store, { StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport { px2vw } from \"../../utils\";\r\nimport { isArray, isObject } from \"@bj-nsc/functions\";\r\ninterface ChartProps {\r\n store?: StoreProps;\r\n option: any;\r\n data?: Array<Object> | Object;\r\n width: number | string; //图表宽度\r\n height: number | string; //图表长度\r\n autoLoad?: boolean; //数据改变,自动刷新图表,默认true\r\n OnClick?: (params: any, e?: any) => void; //图表点击事件\r\n OnZrClick?: (params: any, e?: any) => void; //图表点击事件\r\n [proNames: string]: any;\r\n}\r\n\r\n//data示例\r\n/**\r\n 数组:\r\n data=[{name:'1月',value:20},{name:'2月',value:10},{name:'3月',value:25}]\r\n 对象\r\n data={name:['1月','2月','3月'],value:[20,30,40]}\r\n */\r\nclass NscChart extends PureComponent<ChartProps> {\r\n chartRef = React.createRef<HTMLDivElement>();\r\n myChart: ECharts | null = null;\r\n store = {} as StoreProps;\r\n state = {\r\n dataSource: null,\r\n };\r\n isFirst = true;\r\n constructor(props) {\r\n super(props);\r\n const {\r\n data,\r\n store = {},\r\n children,\r\n option: options,\r\n autoLoad = true,\r\n } = props;\r\n const { url, listeners: listenersPops = {}, ...stores } = store;\r\n if (!children) {\r\n if (!(data || url || options)) {\r\n throw new Error(\"url、data、option不能都为空!\");\r\n }\r\n let _this = this;\r\n let storeProps = {\r\n model: \"model\",\r\n component: this,\r\n listeners: {\r\n onBeforeLoad: function (store, options) {\r\n utils.callback(listenersPops.onBeforeLoad, _this, [store, options]);\r\n },\r\n load: function (data, modelData, store) {\r\n _this.setState({ dataSource: modelData }, () => {\r\n if (_this.isFirst && autoLoad) {\r\n _this.init();\r\n _this.isFirst = false;\r\n }\r\n });\r\n utils.callback(listenersPops.load, _this, [data, modelData, store]);\r\n },\r\n dataChanged: function (data, modelData, store) {\r\n _this.setState({ dataSource: modelData }, () => {\r\n if (autoLoad) {\r\n _this.init();\r\n }\r\n });\r\n utils.callback(listenersPops.dataChanged, _this, [\r\n data,\r\n modelData,\r\n store,\r\n ]);\r\n },\r\n },\r\n ...stores,\r\n };\r\n if (url && data == null) {\r\n storeProps = {\r\n ...{\r\n autoLoad: true,\r\n url: url,\r\n },\r\n ...storeProps,\r\n };\r\n }\r\n this.store = new Store(storeProps);\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n const { data, autoLoad = true, store, option } = this.props;\r\n if (data && autoLoad) {\r\n this.init();\r\n } else if (!data && !store?.url && option) {\r\n this.init();\r\n }\r\n }\r\n\r\n componentDidUpdate(\r\n prevProps: Readonly<ChartProps>,\r\n prevState: Readonly<{}>,\r\n snapshot?: any\r\n ): void {\r\n const { autoLoad = true } = this.props;\r\n if (autoLoad) {\r\n if (JSON.stringify(prevProps.data) !== JSON.stringify(this.props.data)) {\r\n this.init();\r\n } else if (\r\n JSON.stringify(prevProps.option) !== JSON.stringify(this.props.option)\r\n ) {\r\n console.log(\"aaa\");\r\n this.init();\r\n }\r\n }\r\n }\r\n\r\n reSetChart() {\r\n this.init();\r\n }\r\n isString(v) {\r\n return typeof v === \"string\";\r\n }\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.handleChartResize.bind(this));\r\n }\r\n\r\n isReplace(v) {\r\n return /^{.*}$/gi.test(v);\r\n }\r\n replace(v) {\r\n return v.substring(1, v.length - 1);\r\n }\r\n\r\n dataConversion(data, datas, dataMap) {\r\n let result;\r\n if (data) {\r\n if (this.isString(data) && this.isReplace(data)) {\r\n result = dataMap[this.replace(data)];\r\n } else if (isArray(data)) {\r\n data.map((item) => {\r\n let v = item?.value;\r\n if (v && this.isReplace(v)) {\r\n item.value = this.dataConversion(v, datas, dataMap);\r\n }\r\n });\r\n result = data;\r\n } else if (isObject(data)) {\r\n result = [];\r\n if (isArray(datas)) {\r\n datas.map((item) => {\r\n var tempObj = {};\r\n for (let key in item) {\r\n let v = item[key];\r\n if (this.isReplace(v)) {\r\n tempObj[key] = item[this.replace(v)];\r\n } else {\r\n tempObj[key] = v;\r\n }\r\n }\r\n result.push(tempObj);\r\n });\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n objectConversion(obj, datas, dataMap) {\r\n let tempObj: any;\r\n if (obj) {\r\n if (isArray(obj)) {\r\n tempObj = [...obj];\r\n tempObj.map((item) => {\r\n if (item?.data) {\r\n item.data = this.dataConversion(item.data, datas, dataMap);\r\n }\r\n });\r\n } else if (this.isString(obj)) {\r\n tempObj = obj;\r\n tempObj.data = this.dataConversion(tempObj, datas, dataMap);\r\n } else if (isObject(obj)) {\r\n tempObj = { ...obj };\r\n tempObj.data = this.dataConversion(tempObj.data, datas, dataMap);\r\n }\r\n }\r\n return tempObj;\r\n }\r\n init() {\r\n const { option, data, OnClick, OnZrClick } = this.props;\r\n const { dataSource } = this.state;\r\n let dataMap: any = {};\r\n const newDatas = data || dataSource;\r\n let newOption: any = { ...option };\r\n if (isArray(newDatas)) {\r\n newDatas.map((item) => {\r\n for (let key in item) {\r\n if (dataMap[key] == null) {\r\n dataMap[key] = [];\r\n }\r\n dataMap[key].push(item[key]);\r\n }\r\n });\r\n } else if (isObject(newDatas)) {\r\n dataMap = newDatas;\r\n }\r\n newOption.xAxis = this.objectConversion(newOption.xAxis, newDatas, dataMap);\r\n newOption.yAxis = this.objectConversion(newOption.yAxis, newDatas, dataMap);\r\n newOption.series = this.objectConversion(\r\n newOption.series,\r\n newDatas,\r\n dataMap\r\n );\r\n const myChart = (this.myChart = echarts.init(\r\n this.chartRef.current as HTMLDivElement\r\n )); //初始化echarts,通过ref属性获取dom\r\n myChart.clear();\r\n myChart.off(\"click\");\r\n myChart?.getZr()?.off(\"click\");\r\n myChart.setOption(newOption);\r\n myChart.on(\"click\", function (params) {\r\n OnClick && OnClick(params, myChart);\r\n });\r\n myChart?.getZr()?.on(\"click\", (params) => {\r\n OnZrClick && OnZrClick(params, myChart);\r\n });\r\n myChart.resize();\r\n window.addEventListener(\"resize\", this.handleChartResize.bind(this));\r\n }\r\n\r\n handleChartResize() {\r\n if (this.myChart) {\r\n this.myChart.resize();\r\n }\r\n }\r\n\r\n render() {\r\n const { width, height } = this.props;\r\n const boxStyle = {\r\n width: typeof width == \"number\" ? px2vw(width) : width,\r\n height: typeof height == \"number\" ? px2vw(height) : height,\r\n };\r\n return <div style={boxStyle} ref={this.chartRef} id=\"nsc_charts\"></div>;\r\n }\r\n}\r\n\r\nexport default NscChart;\r\n"],"mappings":"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","ignoreList":[]}
@@ -25,6 +25,7 @@ export default class NSCSelect extends PureComponent<ISelectProps> {
25
25
  allDataSource: any[];
26
26
  children: any;
27
27
  allChildren: any;
28
+ dataStore: any[];
28
29
  };
29
30
  store: StoreProps;
30
31
  constructor(props: any);
@@ -30,7 +30,8 @@ export default class NSCSelect extends PureComponent {
30
30
  selectValue: null,
31
31
  allDataSource: [],
32
32
  children: null,
33
- allChildren: null
33
+ allChildren: null,
34
+ dataStore: []
34
35
  });
35
36
  _defineProperty(this, "store", {});
36
37
  _defineProperty(this, "getAllData", data => {
@@ -108,7 +109,8 @@ export default class NSCSelect extends PureComponent {
108
109
  const newData = _this.getAllData(data);
109
110
  _this.setState({
110
111
  dataSource: newData,
111
- allDataSource: newData
112
+ allDataSource: newData,
113
+ dataStore: data
112
114
  });
113
115
  utils.callback(listenersPops.load, _this, [data, modelData, store]);
114
116
  },
@@ -116,7 +118,8 @@ export default class NSCSelect extends PureComponent {
116
118
  const newData = _this.getAllData(data);
117
119
  _this.setState({
118
120
  dataSource: newData,
119
- allDataSource: newData
121
+ allDataSource: newData,
122
+ dataStore: data
120
123
  });
121
124
  utils.callback(listenersPops.dataChanged, _this, [data, modelData, store]);
122
125
  }
@@ -222,7 +225,8 @@ export default class NSCSelect extends PureComponent {
222
225
  } = this.props;
223
226
  const {
224
227
  allDataSource,
225
- allChildren
228
+ allChildren,
229
+ dataStore
226
230
  } = this.state;
227
231
  if (!children && (data || options)) {
228
232
  const newData = data ? data : options;
@@ -248,10 +252,11 @@ export default class NSCSelect extends PureComponent {
248
252
  });
249
253
  }
250
254
  } else if (JSON.stringify(newProps.deleteData) !== JSON.stringify(this.props.deleteData) || JSON.stringify(newProps.addData) !== JSON.stringify(this.props.addData)) {
251
- const newData = this.getAllData(allDataSource);
255
+ const newData = this.getAllData(dataStore);
252
256
  this.setState({
253
257
  dataSource: newData,
254
- allDataSource: newData
258
+ allDataSource: newData,
259
+ dataStore: dataStore
255
260
  });
256
261
  }
257
262
  }
@@ -485,4 +490,4 @@ export default class NSCSelect extends PureComponent {
485
490
  }
486
491
  _defineProperty(NSCSelect, "Option", Option);
487
492
  _defineProperty(NSCSelect, "OptGroup", OptGroup);
488
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJTdG9yZSIsInV0aWxzIiwiY29uZmlnIiwic3R5bGVzIiwiY2xzIiwiUGlueWluTWF0Y2giLCJnZXRGbGF0dGVuRGF0YSIsIk9wdGlvbiIsIk9wdEdyb3VwIiwiX1NlbGVjdCIsIk5TQ1NlbGVjdCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJfZGVmaW5lUHJvcGVydHkiLCJkYXRhU291cmNlIiwic2VsZWN0VmFsdWUiLCJhbGxEYXRhU291cmNlIiwiY2hpbGRyZW4iLCJhbGxDaGlsZHJlbiIsImRhdGEiLCJzdG9yZSIsImFkZERhdGEiLCJkZWxldGVEYXRhIiwidmFsdWVGaWVsZCIsInZpZXduYW1lIiwiQXJyYXkiLCJpc0FycmF5IiwibmV3RGF0YSIsImxlbmd0aCIsInNwbGljZURhdGEiLCJ2YWx1ZUZpZWxkcyIsInNwbGl0IiwibWFwIiwiaXRlbSIsImkiLCJ2YWx1ZSIsInYiLCJpbmRleCIsImluZGV4T2YiLCJwdXNoIiwib3B0aW9ucyIsInVybCIsImxpc3RlbmVycyIsImxpc3RlbmVyc1BvcHMiLCJjYWNoZWQiLCJjYWNoZUtleSIsInZpZXd0eXBlIiwic3RvcmVzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwidmlld1VybCIsInZpZXdCaXpVcmwiLCJyZXF1ZXN0Vmlld1VybCIsIkVycm9yIiwiX3RoaXMiLCJzdG9yZVByb3BzIiwiX29iamVjdFNwcmVhZCIsIm1vZGVsIiwiY29tcG9uZW50Iiwib25CZWZvcmVMb2FkIiwiY2FsbGJhY2siLCJsb2FkIiwibW9kZWxEYXRhIiwiZ2V0QWxsRGF0YSIsInNldFN0YXRlIiwiZGF0YUNoYW5nZWQiLCJpc0NhY2hlZCIsImlzQ2FjaGVLZXkiLCJhdXRvTG9hZCIsInJlc2V0RGF0YSIsInN0YXRlIiwiZ2V0RGF0YSIsImdldFZhbHVlIiwic2V0VmFsdWUiLCJnZXRTZWxlY3REYXRhIiwia2V5RmllbGQiLCJyZXMiLCJ2YWwiLCJjb21wb25lbnREaWRNb3VudCIsImNvbXBvbmVudERpZFVwZGF0ZSIsIm5ld1Byb3BzIiwibmV3U3RhdGUiLCJTbmFwc2hvdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0ZUNoaWxkcmVuUHJvcHMiLCJzIiwiY2hpbGRyZW5Qcm9wcyIsImMiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsIm9uU2VhcmNoIiwiZmlsdGVyT3B0aW9uIiwibGFiZWxGaWVsZCIsInJlc3VsdCIsImZvckVhY2giLCJsYWJlbCIsImxhYmVsRmllbGRzIiwibCIsImZsYWciLCJtYXRjaCIsImNoaWxkIiwiX2NoaWxkJHByb3BzIiwicmVuZGVyT3B0aW9uIiwib3B0aW9uRGF0YSIsInZhbHVlVHlwZSIsIk51bWJlciIsImtleSIsImlkIiwiY3JlYXRlRWxlbWVudCIsImRpc2FibGVkIiwicmVuZGVyQ2hpbGRyZW4iLCJzaG93R3JvdXAiLCJGcmFnbWVudCIsIm9wdEdyb3VwRGF0YSIsImdyb3VwTmFtZSIsIm9wdGlvbiIsIm9wdEdyb3VwIiwiT2JqZWN0Iiwia2V5cyIsIm9uQ2hhbmdlIiwib25TZWxlY3QiLCJvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZSIsIm9wZW4iLCJyZW5kZXIiLCJfdGhpcyRwcm9wcyIsImRlZmF1bHRTdHlsZSIsInBhcmFtcyIsIl9leGNsdWRlZDIiLCJzaG93U2VhcmNoIiwib3B0aW9uRmlsdGVyUHJvcCIsInBsYWNlaG9sZGVyIiwiYWxsb3dDbGVhciIsImFudGRTdHlsZSIsIm1vdW50RWxlbWVudElkIiwiZ2V0UG9wdXBDb250YWluZXIiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiY2xhc3NOYW1lIiwiX2V4dGVuZHMiLCJiaW5kIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYmFzZS9zZWxlY3QvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IFNlbGVjdCwgU2VsZWN0UHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgU3RvcmUsIHsgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCBQaW55aW5NYXRjaCBmcm9tIFwicGlueWluLW1hdGNoXCI7XHJcbmltcG9ydCB7IGdldEZsYXR0ZW5EYXRhIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmNvbnN0IHsgT3B0aW9uLCBPcHRHcm91cCB9ID0gU2VsZWN0O1xyXG5cclxuaW50ZXJmYWNlIElTZWxlY3RQcm9wcyBleHRlbmRzIFNlbGVjdFByb3BzPGFueT4ge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBkYXRhPzogQXJyYXk8T2JqZWN0PjsgLy/pu5jorqTmlbDmja5cclxuICBsYWJlbEZpZWxkPzogc3RyaW5nO1xyXG4gIHZhbHVlRmllbGQ/OiBzdHJpbmc7XHJcbiAgZGVmYXVsdFN0eWxlPzogYm9vbGVhbjtcclxuICBzaG93R3JvdXA/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWIhue7hFxyXG4gIGFkZERhdGE/OiBBcnJheTxPYmplY3Q+OyAvL+mFjeWQiHN0b3Jl5L2/55So77yM5LuO5aKe5Yqg6aKd5aSW55qE5pWw5o2uXHJcbiAgZGVsZXRlRGF0YT86IEFycmF5PFN0cmluZz47IC8v6YWN5ZCIc3RvcmXkvb/nlKjvvIzliKDpmaTku47mlbDmja7lupPkuK3ojrflj5bliLDnmoTmjIflrprmlbDmja5cclxuICB2YWx1ZUJyZWFrPzogc3RyaW5nOyAvL+WkmuS4qnZhbHVl5L2/55So55qE5YiG6ZqU56ymXHJcbiAgdmFsdWVUeXBlPzogXCJzdHJpbmdcIiB8IFwibnVtYmVyXCI7XHJcbiAgW3Byb05hbWU6IHN0cmluZ106IGFueTtcclxuICBvbkNoYW5nZT86IGFueTtcclxuICBvblNlbGVjdD86IGFueTtcclxufVxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOU0NTZWxlY3QgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PElTZWxlY3RQcm9wcz4ge1xyXG4gIHN0YXRpYyBPcHRpb24gPSBPcHRpb247XHJcbiAgc3RhdGljIE9wdEdyb3VwID0gT3B0R3JvdXA7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBkYXRhU291cmNlOiBbXSxcclxuICAgIHNlbGVjdFZhbHVlOiBudWxsLFxyXG4gICAgYWxsRGF0YVNvdXJjZTogW10sXHJcbiAgICBjaGlsZHJlbjogbnVsbCxcclxuICAgIGFsbENoaWxkcmVuOiBudWxsLFxyXG4gIH07XHJcbiAgc3RvcmUgPSB7fSBhcyBTdG9yZVByb3BzO1xyXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQge1xyXG4gICAgICBkYXRhLFxyXG4gICAgICBzdG9yZSA9IHt9LFxyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgb3B0aW9ucyxcclxuICAgICAgYWRkRGF0YSA9IFtdLFxyXG4gICAgICBkZWxldGVEYXRhID0gW10sXHJcbiAgICAgIHZhbHVlRmllbGQsXHJcbiAgICB9ID0gcHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHVybCxcclxuICAgICAgbGlzdGVuZXJzOiBsaXN0ZW5lcnNQb3BzID0ge30sXHJcbiAgICAgIHZpZXduYW1lLFxyXG4gICAgICBjYWNoZWQsXHJcbiAgICAgIGNhY2hlS2V5LFxyXG4gICAgICB2aWV3dHlwZSA9IFwic3lzXCIsXHJcbiAgICAgIC4uLnN0b3Jlc1xyXG4gICAgfSA9IHN0b3JlO1xyXG4gICAgdmFsdWVGaWVsZCA9IHZhbHVlRmllbGQgPyB2YWx1ZUZpZWxkIDogdmlld25hbWUgPyBcImRpY3RLZXlcIiA6IFwidmFsdWVcIjtcclxuICAgIGxldCB7IHZpZXdVcmwsIHZpZXdCaXpVcmwgfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHJlcXVlc3RWaWV3VXJsID0gdmlld3R5cGUgPT0gXCJzeXNcIiA/IHZpZXdVcmwgOiB2aWV3Qml6VXJsO1xyXG5cclxuICAgIGlmICghY2hpbGRyZW4pIHtcclxuICAgICAgaWYgKCEoZGF0YSB8fCB2aWV3bmFtZSB8fCB1cmwgfHwgb3B0aW9ucykpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmzjgIF2aWV3bmFtZeOAgWRhdGHjgIFvcHRpb25z5LiN6IO96YO95Li656m677yBXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICAgIGxldCBzdG9yZVByb3BzID0ge1xyXG4gICAgICAgIG1vZGVsOiBcIm1vZGVsXCIsXHJcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgIGxpc3RlbmVyczoge1xyXG4gICAgICAgICAgb25CZWZvcmVMb2FkOiBmdW5jdGlvbiAoc3RvcmUsIG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUG9wcy5vbkJlZm9yZUxvYWQsIF90aGlzLCBbc3RvcmUsIG9wdGlvbnNdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBsb2FkOiBmdW5jdGlvbiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdEYXRhID0gX3RoaXMuZ2V0QWxsRGF0YShkYXRhKTtcclxuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBkYXRhU291cmNlOiBuZXdEYXRhLCBhbGxEYXRhU291cmNlOiBuZXdEYXRhIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLmxvYWQsIF90aGlzLCBbZGF0YSwgbW9kZWxEYXRhLCBzdG9yZV0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGRhdGFDaGFuZ2VkOiBmdW5jdGlvbiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdEYXRhID0gX3RoaXMuZ2V0QWxsRGF0YShkYXRhKTtcclxuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBkYXRhU291cmNlOiBuZXdEYXRhLCBhbGxEYXRhU291cmNlOiBuZXdEYXRhIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLmRhdGFDaGFuZ2VkLCBfdGhpcywgW1xyXG4gICAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgICAgbW9kZWxEYXRhLFxyXG4gICAgICAgICAgICAgIHN0b3JlLFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi5zdG9yZXMsXHJcbiAgICAgIH07XHJcbiAgICAgIGlmICgodmlld25hbWUgfHwgdXJsKSAmJiBkYXRhID09IG51bGwgJiYgb3B0aW9ucyA9PSBudWxsKSB7XHJcbiAgICAgICAgbGV0IGlzQ2FjaGVkID0gY2FjaGVkO1xyXG4gICAgICAgIGxldCBpc0NhY2hlS2V5ID0gY2FjaGVLZXk7XHJcbiAgICAgICAgaWYgKHZpZXduYW1lKSB7XHJcbiAgICAgICAgICBpZiAodHlwZW9mIGNhY2hlZCAhPT0gXCJib29sZWFuXCIpIHtcclxuICAgICAgICAgICAgaXNDYWNoZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBpc0NhY2hlS2V5ID0gaXNDYWNoZUtleSA/IGlzQ2FjaGVLZXkgOiB2aWV3bmFtZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHN0b3JlUHJvcHMgPSB7XHJcbiAgICAgICAgICAuLi57XHJcbiAgICAgICAgICAgIGF1dG9Mb2FkOiB0cnVlLFxyXG4gICAgICAgICAgICB1cmw6IHVybCB8fCByZXF1ZXN0Vmlld1VybCArIHZpZXduYW1lLCAvL+ivu+Wtl+WFuO+8jHVybOWbuuWumu+8jHZpZXduYW1lXHJcbiAgICAgICAgICAgIGNhY2hlZDogaXNDYWNoZWQsXHJcbiAgICAgICAgICAgIGNhY2hlS2V5OiBpc0NhY2hlS2V5LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnN0b3JlUHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFN0b3JlKHN0b3JlUHJvcHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXREYXRhKCkge1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYWxsRGF0YVNvdXJjZSwgYWxsQ2hpbGRyZW4gfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNoaWxkcmVuOiBhbGxDaGlsZHJlbiB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGRhdGFTb3VyY2U6IGFsbERhdGFTb3VyY2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGdldEFsbERhdGEgPSAoZGF0YSkgPT4ge1xyXG4gICAgbGV0IHtcclxuICAgICAgc3RvcmUgPSB7fSxcclxuICAgICAgYWRkRGF0YSA9IFtdLFxyXG4gICAgICBkZWxldGVEYXRhID0gW10sXHJcbiAgICAgIHZhbHVlRmllbGQsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgdmlld25hbWUsXHJcbiAgICB9ID0gc3RvcmU7XHJcbiAgICB2YWx1ZUZpZWxkID0gdmFsdWVGaWVsZCA/IHZhbHVlRmllbGQgOiB2aWV3bmFtZSA/IFwiZGljdEtleVwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICAgIGxldCBuZXdEYXRhID0gWy4uLmRhdGFdO1xyXG4gICAgaWYgKGFkZERhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICBuZXdEYXRhID0gWy4uLmFkZERhdGEsIC4uLm5ld0RhdGFdO1xyXG4gICAgfVxyXG4gICAgaWYgKGRlbGV0ZURhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgc3BsaWNlRGF0YSA9IFtdO1xyXG4gICAgICBjb25zdCB2YWx1ZUZpZWxkczogYW55ID0gdmFsdWVGaWVsZC5zcGxpdChcIixcIik7XHJcbiAgICAgIG5ld0RhdGEubWFwKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gXCJcIjtcclxuICAgICAgICB2YWx1ZUZpZWxkcy5tYXAoKHYsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGluZGV4ID09IDAgPyB2YWx1ZSArIGl0ZW1bdl0gOiB2YWx1ZSArIFwiLFwiICsgaXRlbVt2XTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoZGVsZXRlRGF0YS5pbmRleE9mKHZhbHVlKSA9PSAtMSkge1xyXG4gICAgICAgICAgc3BsaWNlRGF0YS5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBzcGxpY2VEYXRhO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG5ld0RhdGE7XHJcbiAgICB9XHJcbiAgfTtcclxuICBnZXREYXRhKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuYWxsRGF0YVNvdXJjZTtcclxuICB9XHJcblxyXG4gIGdldFZhbHVlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XHJcbiAgfVxyXG4gIHNldFZhbHVlKHZhbHVlKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0VmFsdWU6IHZhbHVlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3REYXRhKHZhbHVlKSB7XHJcbiAgICBjb25zdCB7IGRhdGFTb3VyY2UgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgeyBzdG9yZSA9IHt9LCB2YWx1ZUZpZWxkIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyB2aWV3bmFtZSB9ID0gc3RvcmU7XHJcbiAgICB2YWx1ZUZpZWxkID0gdmFsdWVGaWVsZCA/IHZhbHVlRmllbGQgOiB2aWV3bmFtZSA/IFwiZGljdEtleVwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgY29uc3QgbmV3RGF0YSA9IGdldEZsYXR0ZW5EYXRhKGRhdGFTb3VyY2UsIHsga2V5RmllbGQ6IHZhbHVlRmllbGQgfSk7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgbGV0IHJlcyA9IFtdIGFzIGFueTtcclxuICAgICAgdmFsdWUubWFwKCh2YWwpID0+IHtcclxuICAgICAgICByZXMucHVzaChuZXdEYXRhW3ZhbF0gfHwge30pO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIHJlcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXdEYXRhW3ZhbHVlXSB8fCB7fTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBkYXRhLCBvcHRpb25zLCBjaGlsZHJlbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghY2hpbGRyZW4gJiYgKGRhdGEgfHwgb3B0aW9ucykpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZGF0YVNvdXJjZTogZGF0YSA/IGRhdGEgOiBvcHRpb25zLFxyXG4gICAgICAgIGFsbERhdGFTb3VyY2U6IGRhdGEgPyBkYXRhIDogb3B0aW9ucyxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcclxuICAgICAgICBhbGxDaGlsZHJlbjogY2hpbGRyZW4sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKG5ld1Byb3BzLCBuZXdTdGF0ZSwgU25hcHNob3QpIHtcclxuICAgIGNvbnN0IHsgZGF0YSwgb3B0aW9ucywgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGFsbERhdGFTb3VyY2UsIGFsbENoaWxkcmVuIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgaWYgKCFjaGlsZHJlbiAmJiAoZGF0YSB8fCBvcHRpb25zKSkge1xyXG4gICAgICBjb25zdCBuZXdEYXRhID0gZGF0YSA/IGRhdGEgOiBvcHRpb25zO1xyXG4gICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoYWxsRGF0YVNvdXJjZSkgIT09IEpTT04uc3RyaW5naWZ5KG5ld0RhdGEpKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBkYXRhU291cmNlOiBuZXdEYXRhLFxyXG4gICAgICAgICAgYWxsRGF0YVNvdXJjZTogbmV3RGF0YSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjb25zdCBzdGF0ZUNoaWxkcmVuUHJvcHM6IGFueSA9IFtdO1xyXG4gICAgICBhbGxDaGlsZHJlbi5tYXAoKHM6IGFueSkgPT4ge1xyXG4gICAgICAgIHN0YXRlQ2hpbGRyZW5Qcm9wcy5wdXNoKHMucHJvcHMpO1xyXG4gICAgICB9KTtcclxuICAgICAgY29uc3QgY2hpbGRyZW5Qcm9wczogYW55ID0gW107XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoYzogYW55KSA9PiB7XHJcbiAgICAgICAgY2hpbGRyZW5Qcm9wcy5wdXNoKGMucHJvcHMpO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHN0YXRlQ2hpbGRyZW5Qcm9wcykgIT09IEpTT04uc3RyaW5naWZ5KGNoaWxkcmVuUHJvcHMpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLFxyXG4gICAgICAgICAgYWxsQ2hpbGRyZW46IGNoaWxkcmVuLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKChKU09OLnN0cmluZ2lmeShuZXdQcm9wcy5kZWxldGVEYXRhKSAhPT0gSlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wcy5kZWxldGVEYXRhKSkgfHwgKEpTT04uc3RyaW5naWZ5KG5ld1Byb3BzLmFkZERhdGEpICE9PSBKU09OLnN0cmluZ2lmeSh0aGlzLnByb3BzLmFkZERhdGEpKSkge1xyXG4gICAgICBjb25zdCBuZXdEYXRhID0gdGhpcy5nZXRBbGxEYXRhKGFsbERhdGFTb3VyY2UpO1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbmV3RGF0YSwgYWxsRGF0YVNvdXJjZTogbmV3RGF0YSB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlID0gKHN0YXRlLCBjYWxsYmFjaykgPT4ge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9O1xyXG4gIH1cclxuICBvblNlYXJjaCh2YWx1ZSkge1xyXG4gICAgY29uc3QgeyBhbGxEYXRhU291cmNlLCBhbGxDaGlsZHJlbiB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgZmlsdGVyT3B0aW9uID0gdHJ1ZSwgb25TZWFyY2gsIGNoaWxkcmVuLCBzdG9yZSA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IHsgbGFiZWxGaWVsZCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgdmlld25hbWUgfSA9IHN0b3JlO1xyXG4gICAgbGFiZWxGaWVsZCA9IGxhYmVsRmllbGQgPyBsYWJlbEZpZWxkIDogdmlld25hbWUgPyBcImRpY3RWYWx1ZVwiIDogXCJsYWJlbFwiO1xyXG4gICAgaWYgKGZpbHRlck9wdGlvbikge1xyXG4gICAgICBsZXQgcmVzdWx0ID0gW107XHJcbiAgICAgIGlmICghY2hpbGRyZW4pIHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgIGFsbERhdGFTb3VyY2UuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgbGFiZWwgPSBcIlwiO1xyXG4gICAgICAgICAgICBpZiAobGFiZWxGaWVsZC5zcGxpdChcIixcIikubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgICAgICBsYWJlbCA9IGl0ZW1bbGFiZWxGaWVsZF07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgbGFiZWxGaWVsZHM6IGFueSA9IGxhYmVsRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgICAgICAgIGxhYmVsRmllbGRzLm1hcCgobCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgIGxhYmVsID0gaW5kZXggPT0gMCA/IGxhYmVsICsgaXRlbVtsXSA6IGxhYmVsICsgXCItXCIgKyBpdGVtW2xdO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBmbGFnID0gUGlueWluTWF0Y2gubWF0Y2gobGFiZWwsIHZhbHVlKTtcclxuICAgICAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgICAgICByZXN1bHQucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgZGF0YVNvdXJjZTogcmVzdWx0LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBkYXRhU291cmNlOiBhbGxEYXRhU291cmNlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYWxsQ2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgIGFsbENoaWxkcmVuLm1hcCgoY2hpbGQ6IGFueSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgbGFiZWwgPSBjaGlsZD8ucHJvcHM/LmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgIGxldCBmbGFnID0gUGlueWluTWF0Y2gubWF0Y2gobGFiZWwsIHZhbHVlKTtcclxuICAgICAgICAgICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgY2hpbGRyZW46IHJlc3VsdCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBvblNlYXJjaCAmJiBvblNlYXJjaCh2YWx1ZSk7XHJcbiAgfVxyXG4gIHJlbmRlck9wdGlvbihvcHRpb25EYXRhKSB7XHJcbiAgICBsZXQge1xyXG4gICAgICBzdG9yZSA9IHt9LFxyXG4gICAgICB2YWx1ZVR5cGUgPSBcInN0cmluZ1wiLFxyXG4gICAgICBsYWJlbEZpZWxkLFxyXG4gICAgICB2YWx1ZUZpZWxkLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHZpZXduYW1lIH0gPSBzdG9yZTtcclxuICAgIHZhbHVlRmllbGQgPSB2YWx1ZUZpZWxkID8gdmFsdWVGaWVsZCA6IHZpZXduYW1lID8gXCJkaWN0S2V5XCIgOiBcInZhbHVlXCI7XHJcbiAgICBsYWJlbEZpZWxkID0gbGFiZWxGaWVsZCA/IGxhYmVsRmllbGQgOiB2aWV3bmFtZSA/IFwiZGljdFZhbHVlXCIgOiBcImxhYmVsXCI7XHJcbiAgICByZXR1cm4gb3B0aW9uRGF0YS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgbGV0IHZhbHVlOiBhbnk7XHJcbiAgICAgIGlmICh2YWx1ZUZpZWxkLnNwbGl0KFwiLFwiKS5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgIHZhbHVlID1cclxuICAgICAgICAgIHZhbHVlVHlwZSA9PT0gXCJudW1iZXJcIiA/IE51bWJlcihpdGVtW3ZhbHVlRmllbGRdKSA6IGl0ZW1bdmFsdWVGaWVsZF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWVGaWVsZHM6IGFueSA9IHZhbHVlRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgIHZhbHVlID0gXCJcIjtcclxuICAgICAgICB2YWx1ZUZpZWxkcy5tYXAoKHYsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGluZGV4ID09IDAgPyB2YWx1ZSArIGl0ZW1bdl0gOiB2YWx1ZSArIFwiLFwiICsgaXRlbVt2XTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBsZXQga2V5ID0gaXRlbS5pZCA/IChpdGVtLmlkICE9PSBcInVuZGVmaW5lZFwiID8gaXRlbS5pZCA6IHZhbHVlKSA6IHZhbHVlO1xyXG4gICAgICBsZXQgbGFiZWwgPSBcIlwiO1xyXG4gICAgICBpZiAobGFiZWxGaWVsZC5zcGxpdChcIixcIikubGVuZ3RoID09IDEpIHtcclxuICAgICAgICBsYWJlbCA9IGl0ZW1bbGFiZWxGaWVsZF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgbGFiZWxGaWVsZHM6IGFueSA9IGxhYmVsRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgIGxhYmVsRmllbGRzLm1hcCgobCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIGxhYmVsID0gaW5kZXggPT0gMCA/IGxhYmVsICsgaXRlbVtsXSA6IGxhYmVsICsgXCItXCIgKyBpdGVtW2xdO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPE9wdGlvblxyXG4gICAgICAgICAga2V5PXtrZXl9XHJcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XHJcbiAgICAgICAgICBsYWJlbD17bGFiZWx9XHJcbiAgICAgICAgICBkaXNhYmxlZD17aXRlbS5kaXNhYmxlZCA/IHRydWUgOiBmYWxzZX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7bGFiZWx9XHJcbiAgICAgICAgPC9PcHRpb24+XHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmVuZGVyQ2hpbGRyZW4oKSB7XHJcbiAgICBjb25zdCB7IHNob3dHcm91cCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGRhdGFTb3VyY2UsIGNoaWxkcmVuIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIHJldHVybiA8PntjaGlsZHJlbn08Lz47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgb3B0R3JvdXBEYXRhID0ge30sXHJcbiAgICAgICAgb3B0aW9uRGF0YSA9IFtdO1xyXG4gICAgICBkYXRhU291cmNlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICBsZXQgbGFiZWwgPSBpdGVtLmdyb3VwTmFtZTtcclxuICAgICAgICBpZiAobGFiZWwgJiYgc2hvd0dyb3VwKSB7XHJcbiAgICAgICAgICBpZiAoIW9wdEdyb3VwRGF0YVtsYWJlbF0pIG9wdEdyb3VwRGF0YVtsYWJlbF0gPSBbXTtcclxuICAgICAgICAgIG9wdEdyb3VwRGF0YVtsYWJlbF0ucHVzaChpdGVtKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb3B0aW9uRGF0YS5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGxldCBvcHRpb24gPSB0aGlzLnJlbmRlck9wdGlvbihvcHRpb25EYXRhKTtcclxuICAgICAgbGV0IG9wdEdyb3VwID0gT2JqZWN0LmtleXMob3B0R3JvdXBEYXRhKS5tYXAoKGtleSkgPT4ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8T3B0R3JvdXAga2V5PXtrZXl9IGxhYmVsPXtrZXl9PlxyXG4gICAgICAgICAgICB7dGhpcy5yZW5kZXJPcHRpb24ob3B0R3JvdXBEYXRhW2tleV0pfVxyXG4gICAgICAgICAgPC9PcHRHcm91cD5cclxuICAgICAgICApO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8PlxyXG4gICAgICAgICAge29wdGlvbn1cclxuICAgICAgICAgIHtvcHRHcm91cH1cclxuICAgICAgICA8Lz5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgb25DaGFuZ2UodmFsdWUsIG9wdGlvbnMpIHtcclxuICAgIGNvbnN0IHsgb25DaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0VmFsdWU6IHZhbHVlLFxyXG4gICAgfSk7XHJcbiAgICBpZiAob25DaGFuZ2UpIHtcclxuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZ2V0U2VsZWN0RGF0YSh2YWx1ZSk7XHJcbiAgICAgIG9uQ2hhbmdlKHZhbHVlLCBvcHRpb25zLCBkYXRhKTtcclxuICAgIH1cclxuICB9XHJcbiAgb25TZWxlY3QodmFsdWUsIG9wdGlvbnMpIHtcclxuICAgIGNvbnN0IHsgb25TZWxlY3QgfSA9IHRoaXMucHJvcHM7XHJcblxyXG4gICAgaWYgKG9uU2VsZWN0KSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldFNlbGVjdERhdGEodmFsdWUpO1xyXG4gICAgICBvblNlbGVjdCh2YWx1ZSwgb3B0aW9ucywgZGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlKG9wZW4pIHtcclxuICAgIGlmICghb3Blbikge1xyXG4gICAgICB0aGlzLnJlc2V0RGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBzdG9yZSxcclxuICAgICAgZGF0YSxcclxuICAgICAgb25DaGFuZ2UsXHJcbiAgICAgIG9uU2VsZWN0LFxyXG4gICAgICBvcHRpb25zLFxyXG4gICAgICBsYWJlbEZpZWxkLFxyXG4gICAgICB2YWx1ZUZpZWxkLFxyXG4gICAgICBkZWZhdWx0U3R5bGUsXHJcbiAgICAgIHNob3dHcm91cCA9IHRydWUsXHJcbiAgICAgIGFkZERhdGEsXHJcbiAgICAgIGRlbGV0ZURhdGEsXHJcbiAgICAgIHZhbHVlVHlwZSxcclxuICAgICAgLi4ucGFyYW1zXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBwcm9wcyA9IHtcclxuICAgICAgZmlsdGVyT3B0aW9uOiBmYWxzZSxcclxuICAgICAgc2hvd1NlYXJjaDogdHJ1ZSxcclxuICAgICAgb3B0aW9uRmlsdGVyUHJvcDogXCJsYWJlbFwiLFxyXG4gICAgICBwbGFjZWhvbGRlcjogXCLor7fpgInmi6lcIixcclxuICAgICAgYWxsb3dDbGVhcjogdHJ1ZSxcclxuICAgIH0gYXMgYW55O1xyXG4gICAgbGV0IHsgYW50ZFN0eWxlLCBtb3VudEVsZW1lbnRJZCB9ID0gY29uZmlnKCk7XHJcbiAgICBpZiAobW91bnRFbGVtZW50SWQpIHtcclxuICAgICAgcHJvcHMgPSB7XHJcbiAgICAgICAgZ2V0UG9wdXBDb250YWluZXI6ICgpID0+IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG1vdW50RWxlbWVudElkKSxcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGlmICgoZGVmYXVsdFN0eWxlIHx8IGFudGRTdHlsZSkgJiYgZGVmYXVsdFN0eWxlID09PSB0cnVlKSB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhzdHlsZXNbXCJuc2Nfc2VsZWN0XCJdLCB0aGlzLnByb3BzLmNsYXNzTmFtZSl9PlxyXG4gICAgICAgICAgPFNlbGVjdFxyXG4gICAgICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZX1cclxuICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMub25DaGFuZ2UuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgb25TZWFyY2g9e3RoaXMub25TZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMub25TZWxlY3QuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgb25Ecm9wZG93blZpc2libGVDaGFuZ2U9e3RoaXMub25Ecm9wZG93blZpc2libGVDaGFuZ2UuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7dGhpcy5yZW5kZXJDaGlsZHJlbigpfVxyXG4gICAgICAgICAgPC9TZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxTZWxlY3RcclxuICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLnNlbGVjdFZhbHVlfVxyXG4gICAgICAgICAgb25TZWFyY2g9e3RoaXMub25TZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICBvblNlbGVjdD17dGhpcy5vblNlbGVjdC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgb25Ecm9wZG93blZpc2libGVDaGFuZ2U9e3RoaXMub25Ecm9wZG93blZpc2libGVDaGFuZ2UuYmluZCh0aGlzKX1cclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3RoaXMucmVuZGVyQ2hpbGRyZW4oKX1cclxuICAgICAgICA8L1NlbGVjdD5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBUSxPQUFPO0FBRTVDLE9BQU9DLEtBQUssTUFBc0IsYUFBYTtBQUMvQyxTQUFTQyxLQUFLLFFBQVEsdUJBQXVCO0FBQzdDLE9BQU9DLE1BQU0sTUFBTSxjQUFjO0FBQ2pDLE9BQU9DLE1BQU0sTUFBTSxjQUFjO0FBQ2pDLE9BQU9DLEdBQUcsTUFBTSxZQUFZO0FBRTVCLE9BQU9DLFdBQVcsTUFBTSxjQUFjO0FBQ3RDLFNBQVNDLGNBQWMsUUFBUSxtQkFBbUI7QUFDbEQsTUFBTTtFQUFFQyxNQUFNO0VBQUVDO0FBQVMsQ0FBQyxHQUFBQyxPQUFTO0FBaUJuQyxlQUFlLE1BQU1DLFNBQVMsU0FBU1gsYUFBYSxDQUFlO0VBV2pFWSxXQUFXQSxDQUFDQyxLQUFLLEVBQUU7SUFDakIsS0FBSyxDQUFDQSxLQUFLLENBQUM7SUFBQ0MsZUFBQSxnQkFUUDtNQUNOQyxVQUFVLEVBQUUsRUFBRTtNQUNkQyxXQUFXLEVBQUUsSUFBSTtNQUNqQkMsYUFBYSxFQUFFLEVBQUU7TUFDakJDLFFBQVEsRUFBRSxJQUFJO01BQ2RDLFdBQVcsRUFBRTtJQUNmLENBQUM7SUFBQUwsZUFBQSxnQkFDTyxDQUFDLENBQUM7SUFBQUEsZUFBQSxxQkEyRklNLElBQUksSUFBSztNQUNyQixJQUFJO1FBQ0ZDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDVkMsT0FBTyxHQUFHLEVBQUU7UUFDWkMsVUFBVSxHQUFHLEVBQUU7UUFDZkM7TUFDRixDQUFDLEdBQUcsSUFBSSxDQUFDWCxLQUFLO01BQ2QsTUFBTTtRQUNKWTtNQUNGLENBQUMsR0FBR0osS0FBSztNQUNURyxVQUFVLEdBQUdBLFVBQVUsR0FBR0EsVUFBVSxHQUFHQyxRQUFRLEdBQUcsU0FBUyxHQUFHLE9BQU87TUFDckUsSUFBSSxDQUFDQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ1AsSUFBSSxDQUFDLEVBQUU7UUFDeEIsT0FBTyxFQUFFO01BQ1g7TUFDQSxJQUFJUSxPQUFPLEdBQUcsQ0FBQyxHQUFHUixJQUFJLENBQUM7TUFDdkIsSUFBSUUsT0FBTyxDQUFDTyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3RCRCxPQUFPLEdBQUcsQ0FBQyxHQUFHTixPQUFPLEVBQUUsR0FBR00sT0FBTyxDQUFDO01BQ3BDO01BQ0EsSUFBSUwsVUFBVSxDQUFDTSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3pCLElBQUlDLFVBQVUsR0FBRyxFQUFFO1FBQ25CLE1BQU1DLFdBQWdCLEdBQUdQLFVBQVUsQ0FBQ1EsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUM5Q0osT0FBTyxDQUFDSyxHQUFHLENBQUMsQ0FBQ0MsSUFBSSxFQUFFQyxDQUFDLEtBQUs7VUFDdkIsSUFBSUMsS0FBSyxHQUFHLEVBQUU7VUFDZEwsV0FBVyxDQUFDRSxHQUFHLENBQUMsQ0FBQ0ksQ0FBQyxFQUFFQyxLQUFLLEtBQUs7WUFDNUJGLEtBQUssR0FBR0UsS0FBSyxJQUFJLENBQUMsR0FBR0YsS0FBSyxHQUFHRixJQUFJLENBQUNHLENBQUMsQ0FBQyxHQUFHRCxLQUFLLEdBQUcsR0FBRyxHQUFHRixJQUFJLENBQUNHLENBQUMsQ0FBQztVQUM5RCxDQUFDLENBQUM7VUFDRixJQUFJZCxVQUFVLENBQUNnQixPQUFPLENBQUNILEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ25DTixVQUFVLENBQUNVLElBQUksQ0FBQ04sSUFBSSxDQUFDO1VBQ3ZCO1FBQ0YsQ0FBQyxDQUFDO1FBQ0YsT0FBT0osVUFBVTtNQUNuQixDQUFDLE1BQU07UUFDTCxPQUFPRixPQUFPO01BQ2hCO0lBQ0YsQ0FBQztJQTFIQyxJQUFJO01BQ0ZSLElBQUksRUFBSkEsS0FBSTtNQUNKQyxLQUFLLEVBQUxBLE1BQUssR0FBRyxDQUFDLENBQUM7TUFDVkgsUUFBUTtNQUNSdUIsT0FBTztNQUNQbkIsT0FBTyxFQUFQQSxRQUFPLEdBQUcsRUFBRTtNQUNaQyxVQUFVLEVBQVZBLFdBQVUsR0FBRyxFQUFFO01BQ2ZDLFVBQVUsRUFBVkE7SUFDRixDQUFDLEdBQUdYLEtBQUs7SUFDVCxNQUFNO1FBQ0o2QixHQUFHO1FBQ0hDLFNBQVMsRUFBRUMsYUFBYSxHQUFHLENBQUMsQ0FBQztRQUM3Qm5CLFFBQVEsRUFBUkEsU0FBUTtRQUNSb0IsTUFBTTtRQUNOQyxRQUFRO1FBQ1JDLFFBQVEsR0FBRztNQUViLENBQUMsR0FBRzFCLE1BQUs7TUFESjJCLE1BQU0sR0FBQUMsd0JBQUEsQ0FDUDVCLE1BQUssRUFBQTZCLFNBQUE7SUFDVDFCLFdBQVUsR0FBR0EsV0FBVSxHQUFHQSxXQUFVLEdBQUdDLFNBQVEsR0FBRyxTQUFTLEdBQUcsT0FBTztJQUNyRSxJQUFJO01BQUUwQixPQUFPO01BQUVDO0lBQVcsQ0FBQyxHQUFHakQsTUFBTSxDQUFDLENBQUM7SUFDdEMsSUFBSWtELGNBQWMsR0FBR04sUUFBUSxJQUFJLEtBQUssR0FBR0ksT0FBTyxHQUFHQyxVQUFVO0lBRTdELElBQUksQ0FBQ2xDLFFBQVEsRUFBRTtNQUNiLElBQUksRUFBRUUsS0FBSSxJQUFJSyxTQUFRLElBQUlpQixHQUFHLElBQUlELE9BQU8sQ0FBQyxFQUFFO1FBQ3pDLE1BQU0sSUFBSWEsS0FBSyxDQUFDLGlDQUFpQyxDQUFDO01BQ3BEO01BQ0EsSUFBSUMsS0FBSyxHQUFHLElBQUk7TUFDaEIsSUFBSUMsVUFBVSxHQUFBQyxhQUFBO1FBQ1pDLEtBQUssRUFBRSxPQUFPO1FBQ2RDLFNBQVMsRUFBRSxJQUFJO1FBQ2ZoQixTQUFTLEVBQUU7VUFDVGlCLFlBQVksRUFBRSxTQUFBQSxDQUFVdkMsS0FBSyxFQUFFb0IsT0FBTyxFQUFFO1lBQ3RDdkMsS0FBSyxDQUFDMkQsUUFBUSxDQUFDakIsYUFBYSxDQUFDZ0IsWUFBWSxFQUFFTCxLQUFLLEVBQUUsQ0FBQ2xDLEtBQUssRUFBRW9CLE9BQU8sQ0FBQyxDQUFDO1VBQ3JFLENBQUM7VUFDRHFCLElBQUksRUFBRSxTQUFBQSxDQUFVMUMsSUFBSSxFQUFFMkMsU0FBUyxFQUFFMUMsS0FBSyxFQUFFO1lBQ3RDLE1BQU1PLE9BQU8sR0FBRzJCLEtBQUssQ0FBQ1MsVUFBVSxDQUFDNUMsSUFBSSxDQUFDO1lBQ3RDbUMsS0FBSyxDQUFDVSxRQUFRLENBQUM7Y0FBRWxELFVBQVUsRUFBRWEsT0FBTztjQUFFWCxhQUFhLEVBQUVXO1lBQVEsQ0FBQyxDQUFDO1lBQy9EMUIsS0FBSyxDQUFDMkQsUUFBUSxDQUFDakIsYUFBYSxDQUFDa0IsSUFBSSxFQUFFUCxLQUFLLEVBQUUsQ0FBQ25DLElBQUksRUFBRTJDLFNBQVMsRUFBRTFDLEtBQUssQ0FBQyxDQUFDO1VBQ3JFLENBQUM7VUFDRDZDLFdBQVcsRUFBRSxTQUFBQSxDQUFVOUMsSUFBSSxFQUFFMkMsU0FBUyxFQUFFMUMsS0FBSyxFQUFFO1lBQzdDLE1BQU1PLE9BQU8sR0FBRzJCLEtBQUssQ0FBQ1MsVUFBVSxDQUFDNUMsSUFBSSxDQUFDO1lBQ3RDbUMsS0FBSyxDQUFDVSxRQUFRLENBQUM7Y0FBRWxELFVBQVUsRUFBRWEsT0FBTztjQUFFWCxhQUFhLEVBQUVXO1lBQVEsQ0FBQyxDQUFDO1lBQy9EMUIsS0FBSyxDQUFDMkQsUUFBUSxDQUFDakIsYUFBYSxDQUFDc0IsV0FBVyxFQUFFWCxLQUFLLEVBQUUsQ0FDL0NuQyxJQUFJLEVBQ0oyQyxTQUFTLEVBQ1QxQyxLQUFLLENBQ04sQ0FBQztVQUNKO1FBQ0Y7TUFBQyxHQUNFMkIsTUFBTSxDQUNWO01BQ0QsSUFBSSxDQUFDdkIsU0FBUSxJQUFJaUIsR0FBRyxLQUFLdEIsS0FBSSxJQUFJLElBQUksSUFBSXFCLE9BQU8sSUFBSSxJQUFJLEVBQUU7UUFDeEQsSUFBSTBCLFFBQVEsR0FBR3RCLE1BQU07UUFDckIsSUFBSXVCLFVBQVUsR0FBR3RCLFFBQVE7UUFDekIsSUFBSXJCLFNBQVEsRUFBRTtVQUNaLElBQUksT0FBT29CLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDL0JzQixRQUFRLEdBQUcsSUFBSTtZQUNmQyxVQUFVLEdBQUdBLFVBQVUsR0FBR0EsVUFBVSxHQUFHM0MsU0FBUTtVQUNqRDtRQUNGO1FBRUErQixVQUFVLEdBQUFDLGFBQUEsQ0FBQUEsYUFBQSxLQUNMO1VBQ0RZLFFBQVEsRUFBRSxJQUFJO1VBQ2QzQixHQUFHLEVBQUVBLEdBQUcsSUFBSVcsY0FBYyxHQUFHNUIsU0FBUTtVQUFFO1VBQ3ZDb0IsTUFBTSxFQUFFc0IsUUFBUTtVQUNoQnJCLFFBQVEsRUFBRXNCO1FBQ1osQ0FBQyxHQUNFWixVQUFVLENBQ2Q7TUFDSDtNQUNBLElBQUksQ0FBQ25DLEtBQUssR0FBRyxJQUFJcEIsS0FBSyxDQUFDdUQsVUFBVSxDQUFDO0lBQ3BDO0VBQ0Y7RUFFQWMsU0FBU0EsQ0FBQSxFQUFHO0lBQ1YsTUFBTTtNQUFFcEQ7SUFBUyxDQUFDLEdBQUcsSUFBSSxDQUFDTCxLQUFLO0lBQy9CLE1BQU07TUFBRUksYUFBYTtNQUFFRTtJQUFZLENBQUMsR0FBRyxJQUFJLENBQUNvRCxLQUFLO0lBQ2pELElBQUlyRCxRQUFRLEVBQUU7TUFDWixJQUFJLENBQUMrQyxRQUFRLENBQUM7UUFBRS9DLFFBQVEsRUFBRUM7TUFBWSxDQUFDLENBQUM7SUFDMUMsQ0FBQyxNQUFNO01BQ0wsSUFBSSxDQUFDOEMsUUFBUSxDQUFDO1FBQ1psRCxVQUFVLEVBQUVFO01BQ2QsQ0FBQyxDQUFDO0lBQ0o7RUFDRjtFQXNDQXVELE9BQU9BLENBQUEsRUFBRztJQUNSLE9BQU8sSUFBSSxDQUFDRCxLQUFLLENBQUN0RCxhQUFhO0VBQ2pDO0VBRUF3RCxRQUFRQSxDQUFBLEVBQUc7SUFDVCxPQUFPLElBQUksQ0FBQ0YsS0FBSyxDQUFDdkQsV0FBVztFQUMvQjtFQUNBMEQsUUFBUUEsQ0FBQ3RDLEtBQUssRUFBRTtJQUNkLElBQUksQ0FBQzZCLFFBQVEsQ0FBQztNQUNaakQsV0FBVyxFQUFFb0I7SUFDZixDQUFDLENBQUM7RUFDSjtFQUVBdUMsYUFBYUEsQ0FBQ3ZDLEtBQUssRUFBRTtJQUNuQixNQUFNO01BQUVyQjtJQUFXLENBQUMsR0FBRyxJQUFJLENBQUN3RCxLQUFLO0lBQ2pDLElBQUk7TUFBRWxELEtBQUssR0FBRyxDQUFDLENBQUM7TUFBRUc7SUFBVyxDQUFDLEdBQUcsSUFBSSxDQUFDWCxLQUFLO0lBQzNDLE1BQU07TUFBRVk7SUFBUyxDQUFDLEdBQUdKLEtBQUs7SUFDMUJHLFVBQVUsR0FBR0EsVUFBVSxHQUFHQSxVQUFVLEdBQUdDLFFBQVEsR0FBRyxTQUFTLEdBQUcsT0FBTztJQUNyRSxNQUFNRyxPQUFPLEdBQUdyQixjQUFjLENBQUNRLFVBQVUsRUFBRTtNQUFFNkQsUUFBUSxFQUFFcEQ7SUFBVyxDQUFDLENBQUM7SUFDcEUsSUFBSUUsS0FBSyxDQUFDQyxPQUFPLENBQUNTLEtBQUssQ0FBQyxFQUFFO01BQ3hCLElBQUl5QyxHQUFHLEdBQUcsRUFBUztNQUNuQnpDLEtBQUssQ0FBQ0gsR0FBRyxDQUFFNkMsR0FBRyxJQUFLO1FBQ2pCRCxHQUFHLENBQUNyQyxJQUFJLENBQUNaLE9BQU8sQ0FBQ2tELEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO01BQzlCLENBQUMsQ0FBQztNQUNGLE9BQU9ELEdBQUc7SUFDWixDQUFDLE1BQU07TUFDTCxPQUFPakQsT0FBTyxDQUFDUSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0I7RUFDRjtFQUVBMkMsaUJBQWlCQSxDQUFBLEVBQUc7SUFDbEIsTUFBTTtNQUFFM0QsSUFBSTtNQUFFcUIsT0FBTztNQUFFdkI7SUFBUyxDQUFDLEdBQUcsSUFBSSxDQUFDTCxLQUFLO0lBQzlDLElBQUksQ0FBQ0ssUUFBUSxLQUFLRSxJQUFJLElBQUlxQixPQUFPLENBQUMsRUFBRTtNQUNsQyxJQUFJLENBQUN3QixRQUFRLENBQUM7UUFDWmxELFVBQVUsRUFBRUssSUFBSSxHQUFHQSxJQUFJLEdBQUdxQixPQUFPO1FBQ2pDeEIsYUFBYSxFQUFFRyxJQUFJLEdBQUdBLElBQUksR0FBR3FCO01BQy9CLENBQUMsQ0FBQztJQUNKLENBQUMsTUFBTSxJQUFJdkIsUUFBUSxFQUFFO01BQ25CLElBQUksQ0FBQytDLFFBQVEsQ0FBQztRQUNaL0MsUUFBUSxFQUFFQSxRQUFRO1FBQ2xCQyxXQUFXLEVBQUVEO01BQ2YsQ0FBQyxDQUFDO0lBQ0o7RUFDRjtFQUVBOEQsa0JBQWtCQSxDQUFDQyxRQUFRLEVBQUVDLFFBQVEsRUFBRUMsUUFBUSxFQUFFO0lBQy9DLE1BQU07TUFBRS9ELElBQUk7TUFBRXFCLE9BQU87TUFBRXZCO0lBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQ0wsS0FBSztJQUM5QyxNQUFNO01BQUVJLGFBQWE7TUFBRUU7SUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDb0QsS0FBSztJQUNqRCxJQUFJLENBQUNyRCxRQUFRLEtBQUtFLElBQUksSUFBSXFCLE9BQU8sQ0FBQyxFQUFFO01BQ2xDLE1BQU1iLE9BQU8sR0FBR1IsSUFBSSxHQUFHQSxJQUFJLEdBQUdxQixPQUFPO01BQ3JDLElBQUkyQyxJQUFJLENBQUNDLFNBQVMsQ0FBQ3BFLGFBQWEsQ0FBQyxLQUFLbUUsSUFBSSxDQUFDQyxTQUFTLENBQUN6RCxPQUFPLENBQUMsRUFBRTtRQUM3RCxJQUFJLENBQUNxQyxRQUFRLENBQUM7VUFDWmxELFVBQVUsRUFBRWEsT0FBTztVQUNuQlgsYUFBYSxFQUFFVztRQUNqQixDQUFDLENBQUM7TUFDSjtJQUNGLENBQUMsTUFBTSxJQUFJVixRQUFRLElBQUlRLEtBQUssQ0FBQ0MsT0FBTyxDQUFDVCxRQUFRLENBQUMsRUFBRTtNQUM5QyxNQUFNb0Usa0JBQXVCLEdBQUcsRUFBRTtNQUNsQ25FLFdBQVcsQ0FBQ2MsR0FBRyxDQUFFc0QsQ0FBTSxJQUFLO1FBQzFCRCxrQkFBa0IsQ0FBQzlDLElBQUksQ0FBQytDLENBQUMsQ0FBQzFFLEtBQUssQ0FBQztNQUNsQyxDQUFDLENBQUM7TUFDRixNQUFNMkUsYUFBa0IsR0FBRyxFQUFFO01BQzdCdEUsUUFBUSxDQUFDZSxHQUFHLENBQUV3RCxDQUFNLElBQUs7UUFDdkJELGFBQWEsQ0FBQ2hELElBQUksQ0FBQ2lELENBQUMsQ0FBQzVFLEtBQUssQ0FBQztNQUM3QixDQUFDLENBQUM7TUFDRixJQUNFdUUsSUFBSSxDQUFDQyxTQUFTLENBQUNDLGtCQUFrQixDQUFDLEtBQUtGLElBQUksQ0FBQ0MsU0FBUyxDQUFDRyxhQUFhLENBQUMsRUFDcEU7UUFDQSxJQUFJLENBQUN2QixRQUFRLENBQUM7VUFDWi9DLFFBQVEsRUFBRUEsUUFBUTtVQUNsQkMsV0FBVyxFQUFFRDtRQUNmLENBQUMsQ0FBQztNQUNKO0lBQ0YsQ0FBQyxNQUFNLElBQUtrRSxJQUFJLENBQUNDLFNBQVMsQ0FBQ0osUUFBUSxDQUFDMUQsVUFBVSxDQUFDLEtBQUs2RCxJQUFJLENBQUNDLFNBQVMsQ0FBQyxJQUFJLENBQUN4RSxLQUFLLENBQUNVLFVBQVUsQ0FBQyxJQUFNNkQsSUFBSSxDQUFDQyxTQUFTLENBQUNKLFFBQVEsQ0FBQzNELE9BQU8sQ0FBQyxLQUFLOEQsSUFBSSxDQUFDQyxTQUFTLENBQUMsSUFBSSxDQUFDeEUsS0FBSyxDQUFDUyxPQUFPLENBQUUsRUFBRTtNQUN2SyxNQUFNTSxPQUFPLEdBQUcsSUFBSSxDQUFDb0MsVUFBVSxDQUFDL0MsYUFBYSxDQUFDO01BQzlDLElBQUksQ0FBQ2dELFFBQVEsQ0FBQztRQUFFbEQsVUFBVSxFQUFFYSxPQUFPO1FBQUVYLGFBQWEsRUFBRVc7TUFBUSxDQUFDLENBQUM7SUFDaEU7RUFDRjtFQUNBOEQsb0JBQW9CQSxDQUFBLEVBQUc7SUFDckIsSUFBSSxDQUFDekIsUUFBUSxHQUFHLENBQUNNLEtBQUssRUFBRVYsUUFBUSxLQUFLO01BQ25DO0lBQ0YsQ0FBQztFQUNIO0VBQ0E4QixRQUFRQSxDQUFDdkQsS0FBSyxFQUFFO0lBQ2QsTUFBTTtNQUFFbkIsYUFBYTtNQUFFRTtJQUFZLENBQUMsR0FBRyxJQUFJLENBQUNvRCxLQUFLO0lBQ2pELE1BQU07TUFBRXFCLFlBQVksR0FBRyxJQUFJO01BQUVELFFBQVE7TUFBRXpFLFFBQVE7TUFBRUcsS0FBSyxHQUFHLENBQUM7SUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDUixLQUFLO0lBQzFFLElBQUk7TUFBRWdGO0lBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQ2hGLEtBQUs7SUFDL0IsTUFBTTtNQUFFWTtJQUFTLENBQUMsR0FBR0osS0FBSztJQUMxQndFLFVBQVUsR0FBR0EsVUFBVSxHQUFHQSxVQUFVLEdBQUdwRSxRQUFRLEdBQUcsV0FBVyxHQUFHLE9BQU87SUFDdkUsSUFBSW1FLFlBQVksRUFBRTtNQUNoQixJQUFJRSxNQUFNLEdBQUcsRUFBRTtNQUNmLElBQUksQ0FBQzVFLFFBQVEsRUFBRTtRQUNiLElBQUlrQixLQUFLLEVBQUU7VUFDVG5CLGFBQWEsQ0FBQzhFLE9BQU8sQ0FBRTdELElBQUksSUFBSztZQUM5QixJQUFJOEQsS0FBSyxHQUFHLEVBQUU7WUFDZCxJQUFJSCxVQUFVLENBQUM3RCxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUNILE1BQU0sSUFBSSxDQUFDLEVBQUU7Y0FDckNtRSxLQUFLLEdBQUc5RCxJQUFJLENBQUMyRCxVQUFVLENBQUM7WUFDMUIsQ0FBQyxNQUFNO2NBQ0wsTUFBTUksV0FBZ0IsR0FBR0osVUFBVSxDQUFDN0QsS0FBSyxDQUFDLEdBQUcsQ0FBQztjQUM5Q2lFLFdBQVcsQ0FBQ2hFLEdBQUcsQ0FBQyxDQUFDaUUsQ0FBQyxFQUFFNUQsS0FBSyxLQUFLO2dCQUM1QjBELEtBQUssR0FBRzFELEtBQUssSUFBSSxDQUFDLEdBQUcwRCxLQUFLLEdBQUc5RCxJQUFJLENBQUNnRSxDQUFDLENBQUMsR0FBR0YsS0FBSyxHQUFHLEdBQUcsR0FBRzlELElBQUksQ0FBQ2dFLENBQUMsQ0FBQztjQUM5RCxDQUFDLENBQUM7WUFDSjtZQUNBLElBQUlDLElBQUksR0FBRzdGLFdBQVcsQ0FBQzhGLEtBQUssQ0FBQ0osS0FBSyxFQUFFNUQsS0FBSyxDQUFDO1lBQzFDLElBQUkrRCxJQUFJLEVBQUU7Y0FDUkwsTUFBTSxDQUFDdEQsSUFBSSxDQUFDTixJQUFJLENBQUM7WUFDbkI7VUFDRixDQUFDLENBQUM7VUFDRixJQUFJLENBQUMrQixRQUFRLENBQUM7WUFDWmxELFVBQVUsRUFBRStFO1VBQ2QsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxNQUFNO1VBQ0wsSUFBSSxDQUFDN0IsUUFBUSxDQUFDO1lBQ1psRCxVQUFVLEVBQUVFO1VBQ2QsQ0FBQyxDQUFDO1FBQ0o7TUFDRixDQUFDLE1BQU07UUFDTCxJQUFJbUIsS0FBSyxFQUFFO1VBQ1QsSUFBSVYsS0FBSyxDQUFDQyxPQUFPLENBQUNSLFdBQVcsQ0FBQyxFQUFFO1lBQzlCQSxXQUFXLENBQUNjLEdBQUcsQ0FBQyxDQUFDb0UsS0FBVSxFQUFFL0QsS0FBSyxLQUFLO2NBQUEsSUFBQWdFLFlBQUE7Y0FDckMsSUFBSU4sS0FBSyxHQUFHSyxLQUFLLGFBQUxBLEtBQUssZ0JBQUFDLFlBQUEsR0FBTEQsS0FBSyxDQUFFeEYsS0FBSyxjQUFBeUYsWUFBQSx1QkFBWkEsWUFBQSxDQUFjcEYsUUFBUTtjQUNsQyxJQUFJaUYsSUFBSSxHQUFHN0YsV0FBVyxDQUFDOEYsS0FBSyxDQUFDSixLQUFLLEVBQUU1RCxLQUFLLENBQUM7Y0FDMUMsSUFBSStELElBQUksRUFBRTtnQkFDUkwsTUFBTSxDQUFDdEQsSUFBSSxDQUFDNkQsS0FBSyxDQUFDO2NBQ3BCO1lBQ0YsQ0FBQyxDQUFDO1VBQ0o7VUFDQSxJQUFJLENBQUNwQyxRQUFRLENBQUM7WUFDWi9DLFFBQVEsRUFBRTRFO1VBQ1osQ0FBQyxDQUFDO1FBQ0osQ0FBQyxNQUFNO1VBQ0wsSUFBSSxDQUFDN0IsUUFBUSxDQUFDO1lBQ1ovQyxRQUFRLEVBQUVBO1VBQ1osQ0FBQyxDQUFDO1FBQ0o7TUFDRjtJQUNGO0lBQ0F5RSxRQUFRLElBQUlBLFFBQVEsQ0FBQ3ZELEtBQUssQ0FBQztFQUM3QjtFQUNBbUUsWUFBWUEsQ0FBQ0MsVUFBVSxFQUFFO0lBQ3ZCLElBQUk7TUFDRm5GLEtBQUssR0FBRyxDQUFDLENBQUM7TUFDVm9GLFNBQVMsR0FBRyxRQUFRO01BQ3BCWixVQUFVO01BQ1ZyRTtJQUNGLENBQUMsR0FBRyxJQUFJLENBQUNYLEtBQUs7SUFDZCxNQUFNO01BQUVZO0lBQVMsQ0FBQyxHQUFHSixLQUFLO0lBQzFCRyxVQUFVLEdBQUdBLFVBQVUsR0FBR0EsVUFBVSxHQUFHQyxRQUFRLEdBQUcsU0FBUyxHQUFHLE9BQU87SUFDckVvRSxVQUFVLEdBQUdBLFVBQVUsR0FBR0EsVUFBVSxHQUFHcEUsUUFBUSxHQUFHLFdBQVcsR0FBRyxPQUFPO0lBQ3ZFLE9BQU8rRSxVQUFVLENBQUN2RSxHQUFHLENBQUVDLElBQUksSUFBSztNQUM5QixJQUFJRSxLQUFVO01BQ2QsSUFBSVosVUFBVSxDQUFDUSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUNILE1BQU0sSUFBSSxDQUFDLEVBQUU7UUFDckNPLEtBQUssR0FDSHFFLFNBQVMsS0FBSyxRQUFRLEdBQUdDLE1BQU0sQ0FBQ3hFLElBQUksQ0FBQ1YsVUFBVSxDQUFDLENBQUMsR0FBR1UsSUFBSSxDQUFDVixVQUFVLENBQUM7TUFDeEUsQ0FBQyxNQUFNO1FBQ0wsTUFBTU8sV0FBZ0IsR0FBR1AsVUFBVSxDQUFDUSxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQzlDSSxLQUFLLEdBQUcsRUFBRTtRQUNWTCxXQUFXLENBQUNFLEdBQUcsQ0FBQyxDQUFDSSxDQUFDLEVBQUVDLEtBQUssS0FBSztVQUM1QkYsS0FBSyxHQUFHRSxLQUFLLElBQUksQ0FBQyxHQUFHRixLQUFLLEdBQUdGLElBQUksQ0FBQ0csQ0FBQyxDQUFDLEdBQUdELEtBQUssR0FBRyxHQUFHLEdBQUdGLElBQUksQ0FBQ0csQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQztNQUNKO01BQ0EsSUFBSXNFLEdBQUcsR0FBR3pFLElBQUksQ0FBQzBFLEVBQUUsR0FBSTFFLElBQUksQ0FBQzBFLEVBQUUsS0FBSyxXQUFXLEdBQUcxRSxJQUFJLENBQUMwRSxFQUFFLEdBQUd4RSxLQUFLLEdBQUlBLEtBQUs7TUFDdkUsSUFBSTRELEtBQUssR0FBRyxFQUFFO01BQ2QsSUFBSUgsVUFBVSxDQUFDN0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDSCxNQUFNLElBQUksQ0FBQyxFQUFFO1FBQ3JDbUUsS0FBSyxHQUFHOUQsSUFBSSxDQUFDMkQsVUFBVSxDQUFDO01BQzFCLENBQUMsTUFBTTtRQUNMLE1BQU1JLFdBQWdCLEdBQUdKLFVBQVUsQ0FBQzdELEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDOUNpRSxXQUFXLENBQUNoRSxHQUFHLENBQUMsQ0FBQ2lFLENBQUMsRUFBRTVELEtBQUssS0FBSztVQUM1QjBELEtBQUssR0FBRzFELEtBQUssSUFBSSxDQUFDLEdBQUcwRCxLQUFLLEdBQUc5RCxJQUFJLENBQUNnRSxDQUFDLENBQUMsR0FBR0YsS0FBSyxHQUFHLEdBQUcsR0FBRzlELElBQUksQ0FBQ2dFLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUM7TUFDSjtNQUNBLG9CQUNFbkcsS0FBQSxDQUFBOEcsYUFBQSxDQUFDckcsTUFBTTtRQUNMbUcsR0FBRyxFQUFFQSxHQUFJO1FBQ1R2RSxLQUFLLEVBQUVBLEtBQU07UUFDYjRELEtBQUssRUFBRUEsS0FBTTtRQUNiYyxRQUFRLEVBQUU1RSxJQUFJLENBQUM0RSxRQUFRLEdBQUcsSUFBSSxHQUFHO01BQU0sR0FFdENkLEtBQ0ssQ0FBQztJQUViLENBQUMsQ0FBQztFQUNKO0VBQ0FlLGNBQWNBLENBQUEsRUFBRztJQUNmLE1BQU07TUFBRUMsU0FBUyxHQUFHO0lBQUssQ0FBQyxHQUFHLElBQUksQ0FBQ25HLEtBQUs7SUFDdkMsTUFBTTtNQUFFRSxVQUFVO01BQUVHO0lBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQ3FELEtBQUs7SUFDM0MsSUFBSXJELFFBQVEsRUFBRTtNQUNaLG9CQUFPbkIsS0FBQSxDQUFBOEcsYUFBQSxDQUFBOUcsS0FBQSxDQUFBa0gsUUFBQSxRQUFHL0YsUUFBVyxDQUFDO0lBQ3hCLENBQUMsTUFBTTtNQUNMLElBQUlnRyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ25CVixVQUFVLEdBQUcsRUFBRTtNQUNqQnpGLFVBQVUsQ0FBQ2dGLE9BQU8sQ0FBRTdELElBQUksSUFBSztRQUMzQixJQUFJOEQsS0FBSyxHQUFHOUQsSUFBSSxDQUFDaUYsU0FBUztRQUMxQixJQUFJbkIsS0FBSyxJQUFJZ0IsU0FBUyxFQUFFO1VBQ3RCLElBQUksQ0FBQ0UsWUFBWSxDQUFDbEIsS0FBSyxDQUFDLEVBQUVrQixZQUFZLENBQUNsQixLQUFLLENBQUMsR0FBRyxFQUFFO1VBQ2xEa0IsWUFBWSxDQUFDbEIsS0FBSyxDQUFDLENBQUN4RCxJQUFJLENBQUNOLElBQUksQ0FBQztRQUNoQyxDQUFDLE1BQU07VUFDTHNFLFVBQVUsQ0FBQ2hFLElBQUksQ0FBQ04sSUFBSSxDQUFDO1FBQ3ZCO01BQ0YsQ0FBQyxDQUFDO01BQ0YsSUFBSWtGLE1BQU0sR0FBRyxJQUFJLENBQUNiLFlBQVksQ0FBQ0MsVUFBVSxDQUFDO01BQzFDLElBQUlhLFFBQVEsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUNMLFlBQVksQ0FBQyxDQUFDakYsR0FBRyxDQUFFMEUsR0FBRyxJQUFLO1FBQ3BELG9CQUNFNUcsS0FBQSxDQUFBOEcsYUFBQSxDQUFDcEcsUUFBUTtVQUFDa0csR0FBRyxFQUFFQSxHQUFJO1VBQUNYLEtBQUssRUFBRVc7UUFBSSxHQUM1QixJQUFJLENBQUNKLFlBQVksQ0FBQ1csWUFBWSxDQUFDUCxHQUFHLENBQUMsQ0FDNUIsQ0FBQztNQUVmLENBQUMsQ0FBQztNQUNGLG9CQUNFNUcsS0FBQSxDQUFBOEcsYUFBQSxDQUFBOUcsS0FBQSxDQUFBa0gsUUFBQSxRQUNHRyxNQUFNLEVBQ05DLFFBQ0QsQ0FBQztJQUVQO0VBQ0Y7RUFDQUcsUUFBUUEsQ0FBQ3BGLEtBQUssRUFBRUssT0FBTyxFQUFFO0lBQ3ZCLE1BQU07TUFBRStFO0lBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQzNHLEtBQUs7SUFDL0IsSUFBSSxDQUFDb0QsUUFBUSxDQUFDO01BQ1pqRCxXQUFXLEVBQUVvQjtJQUNmLENBQUMsQ0FBQztJQUNGLElBQUlvRixRQUFRLEVBQUU7TUFDWixNQUFNcEcsSUFBSSxHQUFHLElBQUksQ0FBQ3VELGFBQWEsQ0FBQ3ZDLEtBQUssQ0FBQztNQUN0Q29GLFFBQVEsQ0FBQ3BGLEtBQUssRUFBRUssT0FBTyxFQUFFckIsSUFBSSxDQUFDO0lBQ2hDO0VBQ0Y7RUFDQXFHLFFBQVFBLENBQUNyRixLQUFLLEVBQUVLLE9BQU8sRUFBRTtJQUN2QixNQUFNO01BQUVnRjtJQUFTLENBQUMsR0FBRyxJQUFJLENBQUM1RyxLQUFLO0lBRS9CLElBQUk0RyxRQUFRLEVBQUU7TUFDWixNQUFNckcsSUFBSSxHQUFHLElBQUksQ0FBQ3VELGFBQWEsQ0FBQ3ZDLEtBQUssQ0FBQztNQUN0Q3FGLFFBQVEsQ0FBQ3JGLEtBQUssRUFBRUssT0FBTyxFQUFFckIsSUFBSSxDQUFDO0lBQ2hDO0VBQ0Y7RUFDQXNHLHVCQUF1QkEsQ0FBQ0MsSUFBSSxFQUFFO0lBQzVCLElBQUksQ0FBQ0EsSUFBSSxFQUFFO01BQ1QsSUFBSSxDQUFDckQsU0FBUyxDQUFDLENBQUM7SUFDbEI7RUFDRjtFQUNBc0QsTUFBTUEsQ0FBQSxFQUFHO0lBQ1AsTUFBQUMsV0FBQSxHQWVJLElBQUksQ0FBQ2hILEtBQUs7TUFmUjtRQUNKSyxRQUFRO1FBQ1JHLEtBQUs7UUFDTEQsSUFBSTtRQUNKb0csUUFBUTtRQUNSQyxRQUFRO1FBQ1JoRixPQUFPO1FBQ1BvRCxVQUFVO1FBQ1ZyRSxVQUFVO1FBQ1ZzRyxZQUFZO1FBQ1pkLFNBQVMsR0FBRyxJQUFJO1FBQ2hCMUYsT0FBTztRQUNQQyxVQUFVO1FBQ1ZrRjtNQUVGLENBQUMsR0FBQW9CLFdBQUE7TUFESUUsTUFBTSxHQUFBOUUsd0JBQUEsQ0FBQTRFLFdBQUEsRUFBQUcsVUFBQTtJQUVYLElBQUluSCxLQUFLLEdBQUc7TUFDVitFLFlBQVksRUFBRSxLQUFLO01BQ25CcUMsVUFBVSxFQUFFLElBQUk7TUFDaEJDLGdCQUFnQixFQUFFLE9BQU87TUFDekJDLFdBQVcsRUFBRSxLQUFLO01BQ2xCQyxVQUFVLEVBQUU7SUFDZCxDQUFRO0lBQ1IsSUFBSTtNQUFFQyxTQUFTO01BQUVDO0lBQWUsQ0FBQyxHQUFHbkksTUFBTSxDQUFDLENBQUM7SUFDNUMsSUFBSW1JLGNBQWMsRUFBRTtNQUNsQnpILEtBQUssR0FBQTRDLGFBQUE7UUFDSDhFLGlCQUFpQixFQUFFQSxDQUFBLEtBQU1DLFFBQVEsQ0FBQ0MsY0FBYyxDQUFDSCxjQUFjO01BQUMsR0FDN0R6SCxLQUFLLENBQ1Q7SUFDSDtJQUNBLElBQUksQ0FBQ2lILFlBQVksSUFBSU8sU0FBUyxLQUFLUCxZQUFZLEtBQUssSUFBSSxFQUFFO01BQ3hELG9CQUNFL0gsS0FBQSxDQUFBOEcsYUFBQTtRQUFLNkIsU0FBUyxFQUFFckksR0FBRyxDQUFDRCxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxDQUFDUyxLQUFLLENBQUM2SCxTQUFTO01BQUUsZ0JBQzlEM0ksS0FBQSxDQUFBOEcsYUFBQSxDQUFBbkcsT0FBQSxFQUFBaUksUUFBQTtRQUNFdkcsS0FBSyxFQUFFLElBQUksQ0FBQ21DLEtBQUssQ0FBQ3ZELFdBQVk7UUFDOUJ3RyxRQUFRLEVBQUUsSUFBSSxDQUFDQSxRQUFRLENBQUNvQixJQUFJLENBQUMsSUFBSSxDQUFFO1FBQ25DakQsUUFBUSxFQUFFLElBQUksQ0FBQ0EsUUFBUSxDQUFDaUQsSUFBSSxDQUFDLElBQUksQ0FBRTtRQUNuQ25CLFFBQVEsRUFBRSxJQUFJLENBQUNBLFFBQVEsQ0FBQ21CLElBQUksQ0FBQyxJQUFJLENBQUU7UUFDbkNsQix1QkFBdUIsRUFBRSxJQUFJLENBQUNBLHVCQUF1QixDQUFDa0IsSUFBSSxDQUFDLElBQUk7TUFBRSxHQUM3RC9ILEtBQUssRUFDTGtILE1BQU0sR0FFVCxJQUFJLENBQUNoQixjQUFjLENBQUMsQ0FDZixDQUNMLENBQUM7SUFFVixDQUFDLE1BQU07TUFDTCxvQkFDRWhILEtBQUEsQ0FBQThHLGFBQUEsQ0FBQW5HLE9BQUEsRUFBQWlJLFFBQUE7UUFDRXZHLEtBQUssRUFBRSxJQUFJLENBQUNtQyxLQUFLLENBQUN2RCxXQUFZO1FBQzlCMkUsUUFBUSxFQUFFLElBQUksQ0FBQ0EsUUFBUSxDQUFDaUQsSUFBSSxDQUFDLElBQUksQ0FBRTtRQUNuQ3BCLFFBQVEsRUFBRSxJQUFJLENBQUNBLFFBQVEsQ0FBQ29CLElBQUksQ0FBQyxJQUFJLENBQUU7UUFDbkNuQixRQUFRLEVBQUUsSUFBSSxDQUFDQSxRQUFRLENBQUNtQixJQUFJLENBQUMsSUFBSSxDQUFFO1FBQ25DbEIsdUJBQXVCLEVBQUUsSUFBSSxDQUFDQSx1QkFBdUIsQ0FBQ2tCLElBQUksQ0FBQyxJQUFJO01BQUUsR0FDN0QvSCxLQUFLLEVBQ0xrSCxNQUFNLEdBRVQsSUFBSSxDQUFDaEIsY0FBYyxDQUFDLENBQ2YsQ0FBQztJQUViO0VBQ0Y7QUFDRjtBQUFDakcsZUFBQSxDQXRib0JILFNBQVMsWUFDWkgsTUFBTTtBQUFBTSxlQUFBLENBREhILFNBQVMsY0FFVkYsUUFBUSIsImlnbm9yZUxpc3QiOltdfQ==
493
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJTdG9yZSIsInV0aWxzIiwiY29uZmlnIiwic3R5bGVzIiwiY2xzIiwiUGlueWluTWF0Y2giLCJnZXRGbGF0dGVuRGF0YSIsIk9wdGlvbiIsIk9wdEdyb3VwIiwiX1NlbGVjdCIsIk5TQ1NlbGVjdCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJfZGVmaW5lUHJvcGVydHkiLCJkYXRhU291cmNlIiwic2VsZWN0VmFsdWUiLCJhbGxEYXRhU291cmNlIiwiY2hpbGRyZW4iLCJhbGxDaGlsZHJlbiIsImRhdGFTdG9yZSIsImRhdGEiLCJzdG9yZSIsImFkZERhdGEiLCJkZWxldGVEYXRhIiwidmFsdWVGaWVsZCIsInZpZXduYW1lIiwiQXJyYXkiLCJpc0FycmF5IiwibmV3RGF0YSIsImxlbmd0aCIsInNwbGljZURhdGEiLCJ2YWx1ZUZpZWxkcyIsInNwbGl0IiwibWFwIiwiaXRlbSIsImkiLCJ2YWx1ZSIsInYiLCJpbmRleCIsImluZGV4T2YiLCJwdXNoIiwib3B0aW9ucyIsInVybCIsImxpc3RlbmVycyIsImxpc3RlbmVyc1BvcHMiLCJjYWNoZWQiLCJjYWNoZUtleSIsInZpZXd0eXBlIiwic3RvcmVzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwidmlld1VybCIsInZpZXdCaXpVcmwiLCJyZXF1ZXN0Vmlld1VybCIsIkVycm9yIiwiX3RoaXMiLCJzdG9yZVByb3BzIiwiX29iamVjdFNwcmVhZCIsIm1vZGVsIiwiY29tcG9uZW50Iiwib25CZWZvcmVMb2FkIiwiY2FsbGJhY2siLCJsb2FkIiwibW9kZWxEYXRhIiwiZ2V0QWxsRGF0YSIsInNldFN0YXRlIiwiZGF0YUNoYW5nZWQiLCJpc0NhY2hlZCIsImlzQ2FjaGVLZXkiLCJhdXRvTG9hZCIsInJlc2V0RGF0YSIsInN0YXRlIiwiZ2V0RGF0YSIsImdldFZhbHVlIiwic2V0VmFsdWUiLCJnZXRTZWxlY3REYXRhIiwia2V5RmllbGQiLCJyZXMiLCJ2YWwiLCJjb21wb25lbnREaWRNb3VudCIsImNvbXBvbmVudERpZFVwZGF0ZSIsIm5ld1Byb3BzIiwibmV3U3RhdGUiLCJTbmFwc2hvdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0ZUNoaWxkcmVuUHJvcHMiLCJzIiwiY2hpbGRyZW5Qcm9wcyIsImMiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsIm9uU2VhcmNoIiwiZmlsdGVyT3B0aW9uIiwibGFiZWxGaWVsZCIsInJlc3VsdCIsImZvckVhY2giLCJsYWJlbCIsImxhYmVsRmllbGRzIiwibCIsImZsYWciLCJtYXRjaCIsImNoaWxkIiwiX2NoaWxkJHByb3BzIiwicmVuZGVyT3B0aW9uIiwib3B0aW9uRGF0YSIsInZhbHVlVHlwZSIsIk51bWJlciIsImtleSIsImlkIiwiY3JlYXRlRWxlbWVudCIsImRpc2FibGVkIiwicmVuZGVyQ2hpbGRyZW4iLCJzaG93R3JvdXAiLCJGcmFnbWVudCIsIm9wdEdyb3VwRGF0YSIsImdyb3VwTmFtZSIsIm9wdGlvbiIsIm9wdEdyb3VwIiwiT2JqZWN0Iiwia2V5cyIsIm9uQ2hhbmdlIiwib25TZWxlY3QiLCJvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZSIsIm9wZW4iLCJyZW5kZXIiLCJfdGhpcyRwcm9wcyIsImRlZmF1bHRTdHlsZSIsInBhcmFtcyIsIl9leGNsdWRlZDIiLCJzaG93U2VhcmNoIiwib3B0aW9uRmlsdGVyUHJvcCIsInBsYWNlaG9sZGVyIiwiYWxsb3dDbGVhciIsImFudGRTdHlsZSIsIm1vdW50RWxlbWVudElkIiwiZ2V0UG9wdXBDb250YWluZXIiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiY2xhc3NOYW1lIiwiX2V4dGVuZHMiLCJiaW5kIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYmFzZS9zZWxlY3QvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IFNlbGVjdCwgU2VsZWN0UHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgU3RvcmUsIHsgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCBQaW55aW5NYXRjaCBmcm9tIFwicGlueWluLW1hdGNoXCI7XHJcbmltcG9ydCB7IGdldEZsYXR0ZW5EYXRhIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmNvbnN0IHsgT3B0aW9uLCBPcHRHcm91cCB9ID0gU2VsZWN0O1xyXG5cclxuaW50ZXJmYWNlIElTZWxlY3RQcm9wcyBleHRlbmRzIFNlbGVjdFByb3BzPGFueT4ge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBkYXRhPzogQXJyYXk8T2JqZWN0PjsgLy/pu5jorqTmlbDmja5cclxuICBsYWJlbEZpZWxkPzogc3RyaW5nO1xyXG4gIHZhbHVlRmllbGQ/OiBzdHJpbmc7XHJcbiAgZGVmYXVsdFN0eWxlPzogYm9vbGVhbjtcclxuICBzaG93R3JvdXA/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWIhue7hFxyXG4gIGFkZERhdGE/OiBBcnJheTxPYmplY3Q+OyAvL+mFjeWQiHN0b3Jl5L2/55So77yM5LuO5aKe5Yqg6aKd5aSW55qE5pWw5o2uXHJcbiAgZGVsZXRlRGF0YT86IEFycmF5PFN0cmluZz47IC8v6YWN5ZCIc3RvcmXkvb/nlKjvvIzliKDpmaTku47mlbDmja7lupPkuK3ojrflj5bliLDnmoTmjIflrprmlbDmja5cclxuICB2YWx1ZUJyZWFrPzogc3RyaW5nOyAvL+WkmuS4qnZhbHVl5L2/55So55qE5YiG6ZqU56ymXHJcbiAgdmFsdWVUeXBlPzogXCJzdHJpbmdcIiB8IFwibnVtYmVyXCI7XHJcbiAgW3Byb05hbWU6IHN0cmluZ106IGFueTtcclxuICBvbkNoYW5nZT86IGFueTtcclxuICBvblNlbGVjdD86IGFueTtcclxufVxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOU0NTZWxlY3QgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PElTZWxlY3RQcm9wcz4ge1xyXG4gIHN0YXRpYyBPcHRpb24gPSBPcHRpb247XHJcbiAgc3RhdGljIE9wdEdyb3VwID0gT3B0R3JvdXA7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBkYXRhU291cmNlOiBbXSxcclxuICAgIHNlbGVjdFZhbHVlOiBudWxsLFxyXG4gICAgYWxsRGF0YVNvdXJjZTogW10sXHJcbiAgICBjaGlsZHJlbjogbnVsbCxcclxuICAgIGFsbENoaWxkcmVuOiBudWxsLFxyXG4gICAgZGF0YVN0b3JlOltdXHJcbiAgfTtcclxuICBzdG9yZSA9IHt9IGFzIFN0b3JlUHJvcHM7XHJcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICAgIGxldCB7XHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIHN0b3JlID0ge30sXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBvcHRpb25zLFxyXG4gICAgICBhZGREYXRhID0gW10sXHJcbiAgICAgIGRlbGV0ZURhdGEgPSBbXSxcclxuICAgICAgdmFsdWVGaWVsZCxcclxuICAgIH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgdXJsLFxyXG4gICAgICBsaXN0ZW5lcnM6IGxpc3RlbmVyc1BvcHMgPSB7fSxcclxuICAgICAgdmlld25hbWUsXHJcbiAgICAgIGNhY2hlZCxcclxuICAgICAgY2FjaGVLZXksXHJcbiAgICAgIHZpZXd0eXBlID0gXCJzeXNcIixcclxuICAgICAgLi4uc3RvcmVzXHJcbiAgICB9ID0gc3RvcmU7XHJcbiAgICB2YWx1ZUZpZWxkID0gdmFsdWVGaWVsZCA/IHZhbHVlRmllbGQgOiB2aWV3bmFtZSA/IFwiZGljdEtleVwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgbGV0IHsgdmlld1VybCwgdmlld0JpelVybCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgcmVxdWVzdFZpZXdVcmwgPSB2aWV3dHlwZSA9PSBcInN5c1wiID8gdmlld1VybCA6IHZpZXdCaXpVcmw7XHJcblxyXG4gICAgaWYgKCFjaGlsZHJlbikge1xyXG4gICAgICBpZiAoIShkYXRhIHx8IHZpZXduYW1lIHx8IHVybCB8fCBvcHRpb25zKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOOAgXZpZXduYW1l44CBZGF0YeOAgW9wdGlvbnPkuI3og73pg73kuLrnqbrvvIFcIik7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgICAgbGV0IHN0b3JlUHJvcHMgPSB7XHJcbiAgICAgICAgbW9kZWw6IFwibW9kZWxcIixcclxuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgbGlzdGVuZXJzOiB7XHJcbiAgICAgICAgICBvbkJlZm9yZUxvYWQ6IGZ1bmN0aW9uIChzdG9yZSwgb3B0aW9ucykge1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLm9uQmVmb3JlTG9hZCwgX3RoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IGZ1bmN0aW9uIChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld0RhdGEgPSBfdGhpcy5nZXRBbGxEYXRhKGRhdGEpO1xyXG4gICAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IGRhdGFTb3VyY2U6IG5ld0RhdGEsIGFsbERhdGFTb3VyY2U6IG5ld0RhdGEgLGRhdGFTdG9yZTogZGF0YX0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLmxvYWQsIF90aGlzLCBbZGF0YSwgbW9kZWxEYXRhLCBzdG9yZV0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGRhdGFDaGFuZ2VkOiBmdW5jdGlvbiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdEYXRhID0gX3RoaXMuZ2V0QWxsRGF0YShkYXRhKTtcclxuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBkYXRhU291cmNlOiBuZXdEYXRhLCBhbGxEYXRhU291cmNlOiBuZXdEYXRhICxkYXRhU3RvcmU6IGRhdGF9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUG9wcy5kYXRhQ2hhbmdlZCwgX3RoaXMsIFtcclxuICAgICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICAgIG1vZGVsRGF0YSxcclxuICAgICAgICAgICAgICBzdG9yZSxcclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4uc3RvcmVzLFxyXG4gICAgICB9O1xyXG4gICAgICBpZiAoKHZpZXduYW1lIHx8IHVybCkgJiYgZGF0YSA9PSBudWxsICYmIG9wdGlvbnMgPT0gbnVsbCkge1xyXG4gICAgICAgIGxldCBpc0NhY2hlZCA9IGNhY2hlZDtcclxuICAgICAgICBsZXQgaXNDYWNoZUtleSA9IGNhY2hlS2V5O1xyXG4gICAgICAgIGlmICh2aWV3bmFtZSkge1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiBjYWNoZWQgIT09IFwiYm9vbGVhblwiKSB7XHJcbiAgICAgICAgICAgIGlzQ2FjaGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgaXNDYWNoZUtleSA9IGlzQ2FjaGVLZXkgPyBpc0NhY2hlS2V5IDogdmlld25hbWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzdG9yZVByb3BzID0ge1xyXG4gICAgICAgICAgLi4ue1xyXG4gICAgICAgICAgICBhdXRvTG9hZDogdHJ1ZSxcclxuICAgICAgICAgICAgdXJsOiB1cmwgfHwgcmVxdWVzdFZpZXdVcmwgKyB2aWV3bmFtZSwgLy/or7vlrZflhbjvvIx1cmzlm7rlrprvvIx2aWV3bmFtZVxyXG4gICAgICAgICAgICBjYWNoZWQ6IGlzQ2FjaGVkLFxyXG4gICAgICAgICAgICBjYWNoZUtleTogaXNDYWNoZUtleSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi5zdG9yZVByb3BzLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zdG9yZSA9IG5ldyBTdG9yZShzdG9yZVByb3BzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0RGF0YSgpIHtcclxuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGFsbERhdGFTb3VyY2UsIGFsbENoaWxkcmVuIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBjaGlsZHJlbjogYWxsQ2hpbGRyZW4gfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBkYXRhU291cmNlOiBhbGxEYXRhU291cmNlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBnZXRBbGxEYXRhID0gKGRhdGEpID0+IHtcclxuICAgIGxldCB7XHJcbiAgICAgIHN0b3JlID0ge30sXHJcbiAgICAgIGFkZERhdGEgPSBbXSxcclxuICAgICAgZGVsZXRlRGF0YSA9IFtdLFxyXG4gICAgICB2YWx1ZUZpZWxkLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHZpZXduYW1lLFxyXG4gICAgfSA9IHN0b3JlO1xyXG4gICAgdmFsdWVGaWVsZCA9IHZhbHVlRmllbGQgPyB2YWx1ZUZpZWxkIDogdmlld25hbWUgPyBcImRpY3RLZXlcIiA6IFwidmFsdWVcIjtcclxuICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhKSkge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICBsZXQgbmV3RGF0YSA9IFsuLi5kYXRhXTtcclxuICAgIGlmIChhZGREYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgbmV3RGF0YSA9IFsuLi5hZGREYXRhLCAuLi5uZXdEYXRhXTtcclxuICAgIH1cclxuICAgIGlmIChkZWxldGVEYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IHNwbGljZURhdGEgPSBbXTtcclxuICAgICAgY29uc3QgdmFsdWVGaWVsZHM6IGFueSA9IHZhbHVlRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICBuZXdEYXRhLm1hcCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgdmFsdWVGaWVsZHMubWFwKCh2LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgdmFsdWUgPSBpbmRleCA9PSAwID8gdmFsdWUgKyBpdGVtW3ZdIDogdmFsdWUgKyBcIixcIiArIGl0ZW1bdl07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKGRlbGV0ZURhdGEuaW5kZXhPZih2YWx1ZSkgPT0gLTEpIHtcclxuICAgICAgICAgIHNwbGljZURhdGEucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gc3BsaWNlRGF0YTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXdEYXRhO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgZ2V0RGF0YSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLmFsbERhdGFTb3VyY2U7XHJcbiAgfVxyXG5cclxuICBnZXRWYWx1ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdFZhbHVlO1xyXG4gIH1cclxuICBzZXRWYWx1ZSh2YWx1ZSkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdFZhbHVlOiB2YWx1ZSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0RGF0YSh2YWx1ZSkge1xyXG4gICAgY29uc3QgeyBkYXRhU291cmNlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHsgc3RvcmUgPSB7fSwgdmFsdWVGaWVsZCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgdmlld25hbWUgfSA9IHN0b3JlO1xyXG4gICAgdmFsdWVGaWVsZCA9IHZhbHVlRmllbGQgPyB2YWx1ZUZpZWxkIDogdmlld25hbWUgPyBcImRpY3RLZXlcIiA6IFwidmFsdWVcIjtcclxuICAgIGNvbnN0IG5ld0RhdGEgPSBnZXRGbGF0dGVuRGF0YShkYXRhU291cmNlLCB7IGtleUZpZWxkOiB2YWx1ZUZpZWxkIH0pO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgIGxldCByZXMgPSBbXSBhcyBhbnk7XHJcbiAgICAgIHZhbHVlLm1hcCgodmFsKSA9PiB7XHJcbiAgICAgICAgcmVzLnB1c2gobmV3RGF0YVt2YWxdIHx8IHt9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiByZXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbmV3RGF0YVt2YWx1ZV0gfHwge307XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgZGF0YSwgb3B0aW9ucywgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIWNoaWxkcmVuICYmIChkYXRhIHx8IG9wdGlvbnMpKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGRhdGFTb3VyY2U6IGRhdGEgPyBkYXRhIDogb3B0aW9ucyxcclxuICAgICAgICBhbGxEYXRhU291cmNlOiBkYXRhID8gZGF0YSA6IG9wdGlvbnMsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBjaGlsZHJlbjogY2hpbGRyZW4sXHJcbiAgICAgICAgYWxsQ2hpbGRyZW46IGNoaWxkcmVuLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShuZXdQcm9wcywgbmV3U3RhdGUsIFNuYXBzaG90KSB7XHJcbiAgICBjb25zdCB7IGRhdGEsIG9wdGlvbnMsIGNoaWxkcmVuIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBhbGxEYXRhU291cmNlLCBhbGxDaGlsZHJlbixkYXRhU3RvcmUgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBpZiAoIWNoaWxkcmVuICYmIChkYXRhIHx8IG9wdGlvbnMpKSB7XHJcbiAgICAgIGNvbnN0IG5ld0RhdGEgPSBkYXRhID8gZGF0YSA6IG9wdGlvbnM7XHJcbiAgICAgIGlmIChKU09OLnN0cmluZ2lmeShhbGxEYXRhU291cmNlKSAhPT0gSlNPTi5zdHJpbmdpZnkobmV3RGF0YSkpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIGRhdGFTb3VyY2U6IG5ld0RhdGEsXHJcbiAgICAgICAgICBhbGxEYXRhU291cmNlOiBuZXdEYXRhLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNvbnN0IHN0YXRlQ2hpbGRyZW5Qcm9wczogYW55ID0gW107XHJcbiAgICAgIGFsbENoaWxkcmVuLm1hcCgoczogYW55KSA9PiB7XHJcbiAgICAgICAgc3RhdGVDaGlsZHJlblByb3BzLnB1c2gocy5wcm9wcyk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBjb25zdCBjaGlsZHJlblByb3BzOiBhbnkgPSBbXTtcclxuICAgICAgY2hpbGRyZW4ubWFwKChjOiBhbnkpID0+IHtcclxuICAgICAgICBjaGlsZHJlblByb3BzLnB1c2goYy5wcm9wcyk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoc3RhdGVDaGlsZHJlblByb3BzKSAhPT0gSlNPTi5zdHJpbmdpZnkoY2hpbGRyZW5Qcm9wcylcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBjaGlsZHJlbjogY2hpbGRyZW4sXHJcbiAgICAgICAgICBhbGxDaGlsZHJlbjogY2hpbGRyZW4sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoKEpTT04uc3RyaW5naWZ5KG5ld1Byb3BzLmRlbGV0ZURhdGEpICE9PSBKU09OLnN0cmluZ2lmeSh0aGlzLnByb3BzLmRlbGV0ZURhdGEpKSB8fCAoSlNPTi5zdHJpbmdpZnkobmV3UHJvcHMuYWRkRGF0YSkgIT09IEpTT04uc3RyaW5naWZ5KHRoaXMucHJvcHMuYWRkRGF0YSkpKSB7XHJcbiAgICAgIGNvbnN0IG5ld0RhdGEgPSB0aGlzLmdldEFsbERhdGEoZGF0YVN0b3JlKTtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGRhdGFTb3VyY2U6IG5ld0RhdGEsIGFsbERhdGFTb3VyY2U6IG5ld0RhdGEsZGF0YVN0b3JlOiBkYXRhU3RvcmV9KTtcclxuICAgIH1cclxuICB9XHJcbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlID0gKHN0YXRlLCBjYWxsYmFjaykgPT4ge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9O1xyXG4gIH1cclxuICBvblNlYXJjaCh2YWx1ZSkge1xyXG4gICAgY29uc3QgeyBhbGxEYXRhU291cmNlLCBhbGxDaGlsZHJlbiB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgZmlsdGVyT3B0aW9uID0gdHJ1ZSwgb25TZWFyY2gsIGNoaWxkcmVuLCBzdG9yZSA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IHsgbGFiZWxGaWVsZCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgdmlld25hbWUgfSA9IHN0b3JlO1xyXG4gICAgbGFiZWxGaWVsZCA9IGxhYmVsRmllbGQgPyBsYWJlbEZpZWxkIDogdmlld25hbWUgPyBcImRpY3RWYWx1ZVwiIDogXCJsYWJlbFwiO1xyXG4gICAgaWYgKGZpbHRlck9wdGlvbikge1xyXG4gICAgICBsZXQgcmVzdWx0ID0gW107XHJcbiAgICAgIGlmICghY2hpbGRyZW4pIHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgIGFsbERhdGFTb3VyY2UuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgbGFiZWwgPSBcIlwiO1xyXG4gICAgICAgICAgICBpZiAobGFiZWxGaWVsZC5zcGxpdChcIixcIikubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgICAgICBsYWJlbCA9IGl0ZW1bbGFiZWxGaWVsZF07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgbGFiZWxGaWVsZHM6IGFueSA9IGxhYmVsRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgICAgICAgIGxhYmVsRmllbGRzLm1hcCgobCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgIGxhYmVsID0gaW5kZXggPT0gMCA/IGxhYmVsICsgaXRlbVtsXSA6IGxhYmVsICsgXCItXCIgKyBpdGVtW2xdO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBmbGFnID0gUGlueWluTWF0Y2gubWF0Y2gobGFiZWwsIHZhbHVlKTtcclxuICAgICAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgICAgICByZXN1bHQucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgZGF0YVNvdXJjZTogcmVzdWx0LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBkYXRhU291cmNlOiBhbGxEYXRhU291cmNlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYWxsQ2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgIGFsbENoaWxkcmVuLm1hcCgoY2hpbGQ6IGFueSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgbGFiZWwgPSBjaGlsZD8ucHJvcHM/LmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgIGxldCBmbGFnID0gUGlueWluTWF0Y2gubWF0Y2gobGFiZWwsIHZhbHVlKTtcclxuICAgICAgICAgICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgY2hpbGRyZW46IHJlc3VsdCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBvblNlYXJjaCAmJiBvblNlYXJjaCh2YWx1ZSk7XHJcbiAgfVxyXG4gIHJlbmRlck9wdGlvbihvcHRpb25EYXRhKSB7XHJcbiAgICBsZXQge1xyXG4gICAgICBzdG9yZSA9IHt9LFxyXG4gICAgICB2YWx1ZVR5cGUgPSBcInN0cmluZ1wiLFxyXG4gICAgICBsYWJlbEZpZWxkLFxyXG4gICAgICB2YWx1ZUZpZWxkLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHZpZXduYW1lIH0gPSBzdG9yZTtcclxuICAgIHZhbHVlRmllbGQgPSB2YWx1ZUZpZWxkID8gdmFsdWVGaWVsZCA6IHZpZXduYW1lID8gXCJkaWN0S2V5XCIgOiBcInZhbHVlXCI7XHJcbiAgICBsYWJlbEZpZWxkID0gbGFiZWxGaWVsZCA/IGxhYmVsRmllbGQgOiB2aWV3bmFtZSA/IFwiZGljdFZhbHVlXCIgOiBcImxhYmVsXCI7XHJcbiAgICByZXR1cm4gb3B0aW9uRGF0YS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgbGV0IHZhbHVlOiBhbnk7XHJcbiAgICAgIGlmICh2YWx1ZUZpZWxkLnNwbGl0KFwiLFwiKS5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgIHZhbHVlID1cclxuICAgICAgICAgIHZhbHVlVHlwZSA9PT0gXCJudW1iZXJcIiA/IE51bWJlcihpdGVtW3ZhbHVlRmllbGRdKSA6IGl0ZW1bdmFsdWVGaWVsZF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWVGaWVsZHM6IGFueSA9IHZhbHVlRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgIHZhbHVlID0gXCJcIjtcclxuICAgICAgICB2YWx1ZUZpZWxkcy5tYXAoKHYsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGluZGV4ID09IDAgPyB2YWx1ZSArIGl0ZW1bdl0gOiB2YWx1ZSArIFwiLFwiICsgaXRlbVt2XTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBsZXQga2V5ID0gaXRlbS5pZCA/IChpdGVtLmlkICE9PSBcInVuZGVmaW5lZFwiID8gaXRlbS5pZCA6IHZhbHVlKSA6IHZhbHVlO1xyXG4gICAgICBsZXQgbGFiZWwgPSBcIlwiO1xyXG4gICAgICBpZiAobGFiZWxGaWVsZC5zcGxpdChcIixcIikubGVuZ3RoID09IDEpIHtcclxuICAgICAgICBsYWJlbCA9IGl0ZW1bbGFiZWxGaWVsZF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgbGFiZWxGaWVsZHM6IGFueSA9IGxhYmVsRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgIGxhYmVsRmllbGRzLm1hcCgobCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIGxhYmVsID0gaW5kZXggPT0gMCA/IGxhYmVsICsgaXRlbVtsXSA6IGxhYmVsICsgXCItXCIgKyBpdGVtW2xdO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPE9wdGlvblxyXG4gICAgICAgICAga2V5PXtrZXl9XHJcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XHJcbiAgICAgICAgICBsYWJlbD17bGFiZWx9XHJcbiAgICAgICAgICBkaXNhYmxlZD17aXRlbS5kaXNhYmxlZCA/IHRydWUgOiBmYWxzZX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7bGFiZWx9XHJcbiAgICAgICAgPC9PcHRpb24+XHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmVuZGVyQ2hpbGRyZW4oKSB7XHJcbiAgICBjb25zdCB7IHNob3dHcm91cCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGRhdGFTb3VyY2UsIGNoaWxkcmVuIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIHJldHVybiA8PntjaGlsZHJlbn08Lz47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgb3B0R3JvdXBEYXRhID0ge30sXHJcbiAgICAgICAgb3B0aW9uRGF0YSA9IFtdO1xyXG4gICAgICBkYXRhU291cmNlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICBsZXQgbGFiZWwgPSBpdGVtLmdyb3VwTmFtZTtcclxuICAgICAgICBpZiAobGFiZWwgJiYgc2hvd0dyb3VwKSB7XHJcbiAgICAgICAgICBpZiAoIW9wdEdyb3VwRGF0YVtsYWJlbF0pIG9wdEdyb3VwRGF0YVtsYWJlbF0gPSBbXTtcclxuICAgICAgICAgIG9wdEdyb3VwRGF0YVtsYWJlbF0ucHVzaChpdGVtKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb3B0aW9uRGF0YS5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGxldCBvcHRpb24gPSB0aGlzLnJlbmRlck9wdGlvbihvcHRpb25EYXRhKTtcclxuICAgICAgbGV0IG9wdEdyb3VwID0gT2JqZWN0LmtleXMob3B0R3JvdXBEYXRhKS5tYXAoKGtleSkgPT4ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8T3B0R3JvdXAga2V5PXtrZXl9IGxhYmVsPXtrZXl9PlxyXG4gICAgICAgICAgICB7dGhpcy5yZW5kZXJPcHRpb24ob3B0R3JvdXBEYXRhW2tleV0pfVxyXG4gICAgICAgICAgPC9PcHRHcm91cD5cclxuICAgICAgICApO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8PlxyXG4gICAgICAgICAge29wdGlvbn1cclxuICAgICAgICAgIHtvcHRHcm91cH1cclxuICAgICAgICA8Lz5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgb25DaGFuZ2UodmFsdWUsIG9wdGlvbnMpIHtcclxuICAgIGNvbnN0IHsgb25DaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0VmFsdWU6IHZhbHVlLFxyXG4gICAgfSk7XHJcbiAgICBpZiAob25DaGFuZ2UpIHtcclxuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZ2V0U2VsZWN0RGF0YSh2YWx1ZSk7XHJcbiAgICAgIG9uQ2hhbmdlKHZhbHVlLCBvcHRpb25zLCBkYXRhKTtcclxuICAgIH1cclxuICB9XHJcbiAgb25TZWxlY3QodmFsdWUsIG9wdGlvbnMpIHtcclxuICAgIGNvbnN0IHsgb25TZWxlY3QgfSA9IHRoaXMucHJvcHM7XHJcblxyXG4gICAgaWYgKG9uU2VsZWN0KSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldFNlbGVjdERhdGEodmFsdWUpO1xyXG4gICAgICBvblNlbGVjdCh2YWx1ZSwgb3B0aW9ucywgZGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlKG9wZW4pIHtcclxuICAgIGlmICghb3Blbikge1xyXG4gICAgICB0aGlzLnJlc2V0RGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBzdG9yZSxcclxuICAgICAgZGF0YSxcclxuICAgICAgb25DaGFuZ2UsXHJcbiAgICAgIG9uU2VsZWN0LFxyXG4gICAgICBvcHRpb25zLFxyXG4gICAgICBsYWJlbEZpZWxkLFxyXG4gICAgICB2YWx1ZUZpZWxkLFxyXG4gICAgICBkZWZhdWx0U3R5bGUsXHJcbiAgICAgIHNob3dHcm91cCA9IHRydWUsXHJcbiAgICAgIGFkZERhdGEsXHJcbiAgICAgIGRlbGV0ZURhdGEsXHJcbiAgICAgIHZhbHVlVHlwZSxcclxuICAgICAgLi4ucGFyYW1zXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBwcm9wcyA9IHtcclxuICAgICAgZmlsdGVyT3B0aW9uOiBmYWxzZSxcclxuICAgICAgc2hvd1NlYXJjaDogdHJ1ZSxcclxuICAgICAgb3B0aW9uRmlsdGVyUHJvcDogXCJsYWJlbFwiLFxyXG4gICAgICBwbGFjZWhvbGRlcjogXCLor7fpgInmi6lcIixcclxuICAgICAgYWxsb3dDbGVhcjogdHJ1ZSxcclxuICAgIH0gYXMgYW55O1xyXG4gICAgbGV0IHsgYW50ZFN0eWxlLCBtb3VudEVsZW1lbnRJZCB9ID0gY29uZmlnKCk7XHJcbiAgICBpZiAobW91bnRFbGVtZW50SWQpIHtcclxuICAgICAgcHJvcHMgPSB7XHJcbiAgICAgICAgZ2V0UG9wdXBDb250YWluZXI6ICgpID0+IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG1vdW50RWxlbWVudElkKSxcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGlmICgoZGVmYXVsdFN0eWxlIHx8IGFudGRTdHlsZSkgJiYgZGVmYXVsdFN0eWxlID09PSB0cnVlKSB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhzdHlsZXNbXCJuc2Nfc2VsZWN0XCJdLCB0aGlzLnByb3BzLmNsYXNzTmFtZSl9PlxyXG4gICAgICAgICAgPFNlbGVjdFxyXG4gICAgICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZX1cclxuICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMub25DaGFuZ2UuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgb25TZWFyY2g9e3RoaXMub25TZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMub25TZWxlY3QuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgb25Ecm9wZG93blZpc2libGVDaGFuZ2U9e3RoaXMub25Ecm9wZG93blZpc2libGVDaGFuZ2UuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7dGhpcy5yZW5kZXJDaGlsZHJlbigpfVxyXG4gICAgICAgICAgPC9TZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxTZWxlY3RcclxuICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLnNlbGVjdFZhbHVlfVxyXG4gICAgICAgICAgb25TZWFyY2g9e3RoaXMub25TZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICBvblNlbGVjdD17dGhpcy5vblNlbGVjdC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgb25Ecm9wZG93blZpc2libGVDaGFuZ2U9e3RoaXMub25Ecm9wZG93blZpc2libGVDaGFuZ2UuYmluZCh0aGlzKX1cclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3RoaXMucmVuZGVyQ2hpbGRyZW4oKX1cclxuICAgICAgICA8L1NlbGVjdD5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBUSxPQUFPO0FBRTVDLE9BQU9DLEtBQUssTUFBc0IsYUFBYTtBQUMvQyxTQUFTQyxLQUFLLFFBQVEsdUJBQXVCO0FBQzdDLE9BQU9DLE1BQU0sTUFBTSxjQUFjO0FBQ2pDLE9BQU9DLE1BQU0sTUFBTSxjQUFjO0FBQ2pDLE9BQU9DLEdBQUcsTUFBTSxZQUFZO0FBRTVCLE9BQU9DLFdBQVcsTUFBTSxjQUFjO0FBQ3RDLFNBQVNDLGNBQWMsUUFBUSxtQkFBbUI7QUFDbEQsTUFBTTtFQUFFQyxNQUFNO0VBQUVDO0FBQVMsQ0FBQyxHQUFBQyxPQUFTO0FBaUJuQyxlQUFlLE1BQU1DLFNBQVMsU0FBU1gsYUFBYSxDQUFlO0VBWWpFWSxXQUFXQSxDQUFDQyxLQUFLLEVBQUU7SUFDakIsS0FBSyxDQUFDQSxLQUFLLENBQUM7SUFBQ0MsZUFBQSxnQkFWUDtNQUNOQyxVQUFVLEVBQUUsRUFBRTtNQUNkQyxXQUFXLEVBQUUsSUFBSTtNQUNqQkMsYUFBYSxFQUFFLEVBQUU7TUFDakJDLFFBQVEsRUFBRSxJQUFJO01BQ2RDLFdBQVcsRUFBRSxJQUFJO01BQ2pCQyxTQUFTLEVBQUM7SUFDWixDQUFDO0lBQUFOLGVBQUEsZ0JBQ08sQ0FBQyxDQUFDO0lBQUFBLGVBQUEscUJBMkZJTyxJQUFJLElBQUs7TUFDckIsSUFBSTtRQUNGQyxLQUFLLEdBQUcsQ0FBQyxD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