@agilemotion/oui-react-js 2.0.21 → 2.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -13,7 +13,6 @@ var _EventType = _interopRequireDefault(require("../../event/EventType"));
13
13
  var _DynamicJS = _interopRequireDefault(require("../../DynamicJS"));
14
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
15
  const BaseField = props => {
16
- var _props$config$attribu, _props$config$attribu2;
17
16
  const [hasError, setHasError] = _react.default.useState(false);
18
17
  const [errorMessage, setErrorMessage] = _react.default.useState('');
19
18
  const [valueObject, setValueObject] = _react.default.useState({});
@@ -387,7 +386,6 @@ const BaseField = props => {
387
386
  key: config.id,
388
387
  style: {
389
388
  textAlign: 'left',
390
- marginLeft: !_Utils.default.isNull((_props$config$attribu = props.config.attributes) === null || _props$config$attribu === void 0 || (_props$config$attribu = _props$config$attribu.style) === null || _props$config$attribu === void 0 ? void 0 : _props$config$attribu.marginLeft) ? (_props$config$attribu2 = props.config.attributes) === null || _props$config$attribu2 === void 0 || (_props$config$attribu2 = _props$config$attribu2.style) === null || _props$config$attribu2 === void 0 ? void 0 : _props$config$attribu2.marginLeft : props.config.index === 0 ? 0 : '8px',
391
389
  display: !visible || _Utils.default.getComponentAttribute(config, 'hidden', false) === true ? 'none' : 'block'
392
390
  }
393
391
  }, /*#__PURE__*/_react.default.createElement("span", null, props.children({
@@ -411,4 +409,4 @@ const BaseField = props => {
411
409
  }))) : null;
412
410
  };
413
411
  exports.BaseField = BaseField;
414
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9PYnNlcnZhYmxlIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9FdmVudCIsIl9FdmVudFR5cGUiLCJfRHluYW1pY0pTIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQmFzZUZpZWxkIiwicHJvcHMiLCJfcHJvcHMkY29uZmlnJGF0dHJpYnUiLCJfcHJvcHMkY29uZmlnJGF0dHJpYnUyIiwiaGFzRXJyb3IiLCJzZXRIYXNFcnJvciIsIlJlYWN0IiwidXNlU3RhdGUiLCJlcnJvck1lc3NhZ2UiLCJzZXRFcnJvck1lc3NhZ2UiLCJ2YWx1ZU9iamVjdCIsInNldFZhbHVlT2JqZWN0IiwidmFsdWVQcm9wZXJ0eSIsInNldFZhbHVlUHJvcGVydHkiLCJsb2FkaW5nUmVmIiwidXNlUmVmIiwiY29uZmlnIiwic2V0Q29uZmlnIiwidmFsdWUiLCJzZXRWYWx1ZSIsIlV0aWxzIiwiaXNOdWxsIiwidmFsdWVSZWYiLCJzZWxlY3RPcHRpb25zIiwic2V0U2VsZWN0T3B0aW9ucyIsImRpc2FibGVkIiwic2V0RGlzYWJsZWQiLCJ2aXNpYmxlIiwic2V0VmlzaWJsZSIsInJlcXVpcmVkIiwic2V0UmVxdWlyZWQiLCJtaW5EYXRlIiwic2V0TWluRGF0ZSIsIm1heERhdGUiLCJzZXRNYXhEYXRlIiwicmVzZXRTd2l0Y2giLCJzZXRSZXNldFN3aXRjaCIsInZhbGlkYXRlT25DaGFuZ2UiLCJpbml0aWFsVmFsdWVCb3VuZCIsInJlZiIsInZhbGlkIiwibGFzdFZhbGlkYXRpb24iLCJ1c2VFZmZlY3QiLCJjdXJyZW50IiwiYmluZCIsImJvdW5kVmFsdWUiLCJmaWVsZFR5cGUiLCJpZCIsInZhbHVlUGFyc2VyIiwiZm9ybSIsInZhbGlkYXRlUGFyZW50IiwiZGF0YUJpbmRpbmciLCJkb1ZhbGlkYXRpb24iLCJ2YWx1ZXMiLCJjdXJyZW50VmFsdWUiLCJtYXJrZXJzIiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiaXNGb3JtTWFya2Vyc0VuYWJsZWQiLCJsYXN0IiwicGF0aCIsImdldFZhbHVlUGF0aCIsInJlc3VsdCIsInZhbGlkYXRvciIsInNjcmlwdCIsImR5bmFtaWNKUyIsImV4ZWN1dGVTY3JpcHRPYmplY3QiLCJjb25jYXQiLCJtZXNzYWdlIiwidmFsaWRhdGVGaWVsZCIsImZvcmNlTWFya2VyIiwic2V0RmllbGRFcnJvciIsInNldEZpZWxkVmFsaWRpdHkiLCJvblZhbGlkaXR5Q2hhbmdlIiwiaGFuZGxlIiwiYXBpIiwicGFyc2VkQ29uZmlnIiwicGFyc2VDb25maWciLCJ2aWV3SWQiLCJldmVudE1hbmFnZXIiLCJhZGRTdWJzY3JpcHRpb25zIiwiZXZlbnRIYW5kbGluZ0NvbmZpZyIsImFkZFN5c3RlbVN1YnNjcmlwdGlvbnMiLCJldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uIiwiZXZlbnQiLCJFdmVudCIsImZpcmVFdmVudCIsIkV2ZW50VHlwZSIsIkNPTVBPTkVOVF9MT0FEIiwic2NyaXB0VmFsdWUiLCJpc0V4cHJlc3Npb24iLCJleGVjdXRlU2NyaXB0IiwicmVwbGFjZSIsInZhbCIsImluc3RhbmNlVHlwZSIsImhhbmRsZUNoYW5nZSIsInByZXZpb3VzbHlFbmFibGVkIiwiZW5hYmxlRm9ybU1hcmtlcnMiLCJjdiIsImN2Rm9yVmFsaWRhdGlvbiIsImZpZWxkIiwiYWRkRmllbGQiLCJwYXJlbnRJZCIsImJpbmRWYWx1ZVRvRm9ybSIsImVycm9yIiwibGVuZ3RoIiwiY2xlYXJDb21wb25lbnRFdmVudExpc3RlbmVycyIsInJlbW92ZUZpZWxkIiwiaGFuZGxlVmFsdWVDaGFuZ2UiLCJuZXdWYWx1ZSIsInZhbHVlQ2hhbmdlZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzcGxpY2UiLCJuZXdWYWx1ZUVsZW1lbnQiLCJwdXNoIiwic2VsZWN0SXRlbUNoYW5nZSIsImhhbmRsZVNlbGVjdEl0ZW1DaGFuZ2UiLCJzZWxlY3RPcHRpb24iLCJ2YWx1ZUNoYW5nZUhhbmRsZXIiLCJWQUxVRV9DSEFOR0UiLCJ2YWxpZGF0ZSIsInBhcnNlVmFsdWUiLCJpbmJvdW5kIiwicm93cyIsInJvd3NIYW5kbGVyIiwiZ2V0VmFsaWRhdGlvbkdyb3VwIiwiZ3JvdXAiLCJjbGVhciIsImNsZWFySGFuZGxlciIsInNjcm9sbFRvIiwic2Nyb2xsSW50b1ZpZXciLCJiZWhhdmlvciIsImJsb2NrIiwidmFsdWVDaGFuZ2VDYWxsYmFjayIsImhhbmRsZUxvYWRDb21wbGV0ZSIsInJlZnJlc2giLCJyZXF1aXJlZE5ld1ZhbCIsIm51bGxhYmxlIiwiaXNSZXF1aXJlZCIsInJlc2V0Iiwic2V0RmllbGRSZXF1aXJlZCIsIm5ld1ZhbCIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImdldENoaWxkcmVuIiwibG9hZERhdGEiLCJsb2FkRGF0YUhhbmRsZXIiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwia2V5Iiwic3R5bGUiLCJ0ZXh0QWxpZ24iLCJtYXJnaW5MZWZ0IiwiYXR0cmlidXRlcyIsImluZGV4IiwiZGlzcGxheSIsImdldENvbXBvbmVudEF0dHJpYnV0ZSIsImNoaWxkcmVuIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL0Jhc2VGaWVsZC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBVdGlscyBmcm9tICcuLi8uLi9VdGlscyc7XG5pbXBvcnQgZXZlbnRNYW5hZ2VyIGZyb20gJy4uLy4uL2V2ZW50L09ic2VydmFibGUnO1xuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tICcuLi8uLi9BcHBsaWNhdGlvbk1hbmFnZXInO1xuaW1wb3J0IEV2ZW50IGZyb20gJy4uLy4uL2V2ZW50L0V2ZW50JztcbmltcG9ydCBFdmVudFR5cGUgZnJvbSAnLi4vLi4vZXZlbnQvRXZlbnRUeXBlJztcbmltcG9ydCBkeW5hbWljSlMgZnJvbSAnLi4vLi4vRHluYW1pY0pTJztcblxuZXhwb3J0IGNvbnN0IEJhc2VGaWVsZCA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IFtoYXNFcnJvciwgc2V0SGFzRXJyb3JdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtlcnJvck1lc3NhZ2UsIHNldEVycm9yTWVzc2FnZV0gPSBSZWFjdC51c2VTdGF0ZSgnJyk7XG4gICAgY29uc3QgW3ZhbHVlT2JqZWN0LCBzZXRWYWx1ZU9iamVjdF0gPSBSZWFjdC51c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW3ZhbHVlUHJvcGVydHksIHNldFZhbHVlUHJvcGVydHldID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgbG9hZGluZ1JlZiA9IFJlYWN0LnVzZVJlZih0cnVlKTtcbiAgICBjb25zdCBbY29uZmlnLCBzZXRDb25maWddID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgLy8gVE9ETyA6IFJlcGxhY2UgdGhlIHN0YXRlIHZhbHVlIHdpdGggdGhlIHZhbHVlUmVmIGJlbG93LiBUaGUgc3RhdGUgdmFsdWUgaXMgb2NjYXRpb25hbHkgbm90IGF2YWlsYWJsZSBpbiB0aW1lIGZvciBldmVudCBzY3JpcHRzXG4gICAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZSghVXRpbHMuaXNOdWxsKHByb3BzLnZhbHVlKSA/IHByb3BzLnZhbHVlIDogbnVsbCk7XG4gICAgLy8gVE9ETyA6IFJlcGxhY2UgdGhlIHN0YXRlIHZhbHVlIHdpdGggdGhpcyByZWYgZm9yIHRoZSByZWFzb24gbWVuc2lvbmVkIGFib3ZlXG4gICAgY29uc3QgdmFsdWVSZWYgPSBSZWFjdC51c2VSZWYoIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZSkgPyBwcm9wcy52YWx1ZSA6IG51bGwpO1xuICAgIGNvbnN0IFtzZWxlY3RPcHRpb25zLCBzZXRTZWxlY3RPcHRpb25zXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbZGlzYWJsZWQsIHNldERpc2FibGVkXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbdmlzaWJsZSwgc2V0VmlzaWJsZV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3JlcXVpcmVkLCBzZXRSZXF1aXJlZF0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbbWluRGF0ZSwgc2V0TWluRGF0ZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbbWF4RGF0ZSwgc2V0TWF4RGF0ZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbcmVzZXRTd2l0Y2gsIHNldFJlc2V0U3dpdGNoXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCB2YWxpZGF0ZU9uQ2hhbmdlID0gUmVhY3QudXNlUmVmKCk7XG4gICAgY29uc3QgaW5pdGlhbFZhbHVlQm91bmQgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCB2YWxpZCA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gICAgLy8gTWVtbyBvZiB0aGUgbGFzdCAoY3VycmVudFZhbHVlLCByZXF1aXJlZCwgbWFya2VycykgdHVwbGUgKyBpdHMgcmVzdWx0LnZhbGlkLlxuICAgIC8vIGRvVmFsaWRhdGlvbiBzaG9ydC1jaXJjdWl0cyB3aGVuIHRoZSBpbnB1dHMgYXJlIHVuY2hhbmdlZCBzbyByZXBlYXRlZCByZWFkc1xuICAgIC8vIG9mIEAje2Zvcm19LnZhbHVlICh3aGljaCBpdGVyYXRlcyBmaWVsZHMgYW5kIGNhbGxzIHZhbGlkYXRlIG9uIGVhY2ggaW5cbiAgICAvLyBGb3JtLmpzeCBnZXQgdmFsdWUoKSkgZG9uJ3Qga2VlcCBmaXJpbmcgc2V0RXJyb3JNZXNzYWdlL3NldEhhc0Vycm9yIGFuZFxuICAgIC8vIHJlLXJlbmRlci1sb29wIHRoZSB3aG9sZSBmb3JtLlxuICAgIGNvbnN0IGxhc3RWYWxpZGF0aW9uID0gUmVhY3QudXNlUmVmKG51bGwpO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaW5pdGlhbFZhbHVlQm91bmQuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICBiaW5kKCk7XG4gICAgfSwgW3ZhbHVlT2JqZWN0XSk7XG5cbiAgICBmdW5jdGlvbiBiaW5kKCkge1xuICAgICAgICBsZXQgYm91bmRWYWx1ZSA9IHZhbHVlT2JqZWN0W3ZhbHVlUHJvcGVydHldO1xuICAgICAgICBpZiAoYm91bmRWYWx1ZSAmJiAhaW5pdGlhbFZhbHVlQm91bmQuY3VycmVudCkge1xuICAgICAgICAgICAgaW5pdGlhbFZhbHVlQm91bmQuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICBpZiAocHJvcHMuY29uZmlnLmZpZWxkVHlwZSA9PT0gJ1NFTEVDVCcgfHwgcHJvcHMuY29uZmlnLmZpZWxkVHlwZSA9PT0gJ0xPT0tVUCcpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWJvdW5kVmFsdWUgfHwgVXRpbHMuaXNOdWxsKGJvdW5kVmFsdWUuaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZVJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZihwcm9wcy52YWx1ZVBhcnNlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUocHJvcHMudmFsdWVQYXJzZXIoYm91bmRWYWx1ZSwgdHJ1ZSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoYm91bmRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVJlZi5jdXJyZW50ID0gYm91bmRWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmKHByb3BzLnZhbHVlUGFyc2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKHByb3BzLnZhbHVlUGFyc2VyKGJvdW5kVmFsdWUsIHRydWUpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShib3VuZFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YWx1ZVJlZi5jdXJyZW50ID0gYm91bmRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGJpbmQoKTtcbiAgICB9LCBbdmFsdWVPYmplY3RbdmFsdWVQcm9wZXJ0eV1dKTtcblxuICAgIC8vIENoYW5nZSB0aGUgcmVxdWlyZWQgdmFsdWUgYW5kIHJlLXZhbGlkYXRlIGZpZWxkIGlmIG5lY2Vzc2FyeVxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGNvbmZpZykgJiYgdmFsaWRhdGVPbkNoYW5nZS5jdXJyZW50ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBwcm9wcy5mb3JtKClcbiAgICAgICAgICAgICAgICAudmFsaWRhdGVQYXJlbnQoY29uZmlnLmRhdGFCaW5kaW5nIHx8IGNvbmZpZy5pZCwgZG9WYWxpZGF0aW9uKHByb3BzLnZhbHVlcywgdmFsdWUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhbGlkYXRlT25DaGFuZ2UuY3VycmVudCA9IG51bGw7XG4gICAgfSwgW3JlcXVpcmVkXSk7XG5cbiAgICBjb25zdCBkb1ZhbGlkYXRpb24gPSAodmFsdWVzLCBjdXJyZW50VmFsdWUpID0+IHtcbiAgICAgICAgaWYoY29uZmlnKSB7XG4gICAgICAgICAgICBjb25zdCBtYXJrZXJzID0gYXBwbGljYXRpb25NYW5hZ2VyLmlzRm9ybU1hcmtlcnNFbmFibGVkKCk7XG4gICAgICAgICAgICBjb25zdCBsYXN0ID0gbGFzdFZhbGlkYXRpb24uY3VycmVudDtcbiAgICAgICAgICAgIGlmIChsYXN0ICE9PSBudWxsXG4gICAgICAgICAgICAgICAgJiYgbGFzdC5jdXJyZW50VmFsdWUgPT09IGN1cnJlbnRWYWx1ZVxuICAgICAgICAgICAgICAgICYmIGxhc3QucmVxdWlyZWQgPT09IHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgJiYgbGFzdC5tYXJrZXJzID09PSBtYXJrZXJzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxhc3QudmFsaWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBwYXRoID0gcHJvcHMuZm9ybSgpXG4gICAgICAgICAgICAgICAgLmdldFZhbHVlUGF0aChjb25maWcuZGF0YUJpbmRpbmcgfHwgY29uZmlnLmlkKTtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSB7dmFsaWQ6IHRydWV9O1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoY29uZmlnLnZhbGlkYXRvcikgJiYgIVV0aWxzLmlzTnVsbChjb25maWcudmFsaWRhdG9yLnNjcmlwdCkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdE9iamVjdChgJHtjb25maWcuaWR9VmFsaWRhdG9yYCwgY29uZmlnLnZhbGlkYXRvci5zY3JpcHQpO1xuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tZXNzYWdlID0gcmVzdWx0Lm1lc3NhZ2UgPyByZXN1bHQubWVzc2FnZSA6IGNvbmZpZy52YWxpZGF0b3IubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXN1bHQudmFsaWQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBVdGlscy52YWxpZGF0ZUZpZWxkKHBhdGgudmFsdWVQcm9wZXJ0eSwgcmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgIHBhdGgudmFsdWVPYmplY3QsIGN1cnJlbnRWYWx1ZSwgY29uZmlnLnZhbGlkYXRvcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNldEVycm9yTWVzc2FnZShtYXJrZXJzIHx8IHJlc3VsdC5mb3JjZU1hcmtlciA/IHJlc3VsdC5tZXNzYWdlIDogJycpO1xuICAgICAgICAgICAgc2V0SGFzRXJyb3IoIXJlc3VsdC52YWxpZCAmJiAobWFya2VycyB8fCByZXN1bHQuZm9yY2VNYXJrZXIpKTtcbiAgICAgICAgICAgIHZhbGlkLmN1cnJlbnQgPSByZXN1bHQudmFsaWQgJiYgKG1hcmtlcnMgfHwgcmVzdWx0LmZvcmNlTWFya2VyKTtcblxuICAgICAgICAgICAgaWYgKG1hcmtlcnMpIHtcbiAgICAgICAgICAgICAgICBwcm9wcy5mb3JtKClcbiAgICAgICAgICAgICAgICAgICAgLnNldEZpZWxkRXJyb3IoY29uZmlnLmlkLCB0eXBlb2YgcmVzdWx0Lm1lc3NhZ2UgPT09ICd1bmRlZmluZWQnID8gbnVsbCA6IHJlc3VsdC5tZXNzYWdlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGFzdFZhbGlkYXRpb24uY3VycmVudCA9IHsgY3VycmVudFZhbHVlLCByZXF1aXJlZCwgbWFya2VycywgdmFsaWQ6IHJlc3VsdC52YWxpZCB9O1xuXG4gICAgICAgICAgICAvLyBQdWJsaXNoIHRvIHRoZSBmb3JtJ3MgdmFsaWRpdHkgcmVnaXN0ZXIuIFNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGhcbiAgICAgICAgICAgIC8vIGZvciBcImlzIHRoaXMgZmllbGQgdmFsaWQ/XCIg4oCUIGZvcm0udmFsdWUgcmVhZHMgZnJvbSBoZXJlIHdpdGhvdXRcbiAgICAgICAgICAgIC8vIGNhbGxpbmcgYmFjayBpbnRvIHRoZSBmaWVsZCAoa2lsbHMgdGhlIGJpLWRpcmVjdGlvbmFsIGNoYWluKS5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcHMuZm9ybSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgcHJvcHMuZm9ybSgpLnNldEZpZWxkVmFsaWRpdHkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBwcm9wcy5mb3JtKCkuc2V0RmllbGRWYWxpZGl0eShjb25maWcuaWQgfHwgY29uZmlnLmRhdGFCaW5kaW5nLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkOiByZXN1bHQudmFsaWQsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3VsdC5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICBmb3JjZU1hcmtlcjogcmVzdWx0LmZvcmNlTWFya2VyLFxuICAgICAgICAgICAgICAgICAgICBvblZhbGlkaXR5Q2hhbmdlOiAodmFsaWQsIGVycm9yTWVzc2FnZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXBwbGljYXRpb25NYW5hZ2VyLmlzRm9ybU1hcmtlcnNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFcnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRIYXNFcnJvcighdmFsaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQudmFsaWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICB9KTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwoY29uZmlnKSkge1xuICAgICAgICAgICAgbGV0IHBhcnNlZENvbmZpZyA9IFV0aWxzLnBhcnNlQ29uZmlnKHByb3BzLmNvbmZpZywgcHJvcHMudmlld0lkKTtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5hZGRTdWJzY3JpcHRpb25zKHBhcnNlZENvbmZpZy5ldmVudEhhbmRsaW5nQ29uZmlnLCBwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuYWRkU3lzdGVtU3Vic2NyaXB0aW9ucyhwcm9wcy52aWV3SWQsIHBhcnNlZENvbmZpZyk7XG4gICAgICAgICAgICBzZXRDb25maWcocGFyc2VkQ29uZmlnKTtcbiAgICAgICAgICAgIHNldFZpc2libGUoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcudmlzaWJsZSwgcGFyc2VkQ29uZmlnLmlkLCB0cnVlKSk7XG4gICAgICAgICAgICBzZXREaXNhYmxlZChVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcnNlZENvbmZpZy5kaXNhYmxlZCwgcGFyc2VkQ29uZmlnLmlkLCBmYWxzZSkpO1xuXG4gICAgICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsIG51bGwpO1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuQ09NUE9ORU5UX0xPQUQsIGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH0sIFtdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLnZhbHVlcykgJiYgIVV0aWxzLmlzTnVsbChjb25maWcpKSB7XG4gICAgICAgICAgICBsZXQgcGF0aCA9IHByb3BzLmZvcm0oKVxuICAgICAgICAgICAgICAgIC5nZXRWYWx1ZVBhdGgoY29uZmlnLmRhdGFCaW5kaW5nIHx8IGNvbmZpZy5pZCwgcHJvcHMudmFsdWVzKTtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHBhdGgudmFsdWVPYmplY3QpKSB7XG4gICAgICAgICAgICAgICAgc2V0VmFsdWVPYmplY3QocGF0aC52YWx1ZU9iamVjdCk7XG4gICAgICAgICAgICAgICAgc2V0VmFsdWVQcm9wZXJ0eShwYXRoLnZhbHVlUHJvcGVydHkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNjcmlwdFZhbHVlID0gYXBwbGljYXRpb25NYW5hZ2VyLmlzRXhwcmVzc2lvbihwcm9wcy5jb25maWcudmFsdWUpID9cbiAgICAgICAgICAgICAgICAgICAgZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHQocHJvcHMuY29uZmlnLmlkLnJlcGxhY2UoJy4nLCAnXycpICsgJ1ZhbHVlJywgcHJvcHMuY29uZmlnLnZhbHVlKSA6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLmNvbmZpZy52YWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHNjcmlwdFZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdmFsID0gc2NyaXB0VmFsdWUuaW5zdGFuY2VUeXBlID09PSAnVHlwZWRWYWx1ZScgPyBzY3JpcHRWYWx1ZS52YWx1ZSA6IHNjcmlwdFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZU9iamVjdFt2YWx1ZVByb3BlcnR5XSA9IHZhbDtcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUodmFsKTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVSZWYuY3VycmVudCA9IHZhbDtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMuZm9ybSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAuaGFuZGxlQ2hhbmdlKGNvbmZpZy5kYXRhQmluZGluZyB8fCBjb25maWcuaWQsIHZhbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTZWxmLWFubm91bmNlOiB2YWxpZGF0ZSB0aGlzIGZpZWxkIGFnYWluc3QgY3VycmVudCBkYXRhIGFuZCBwdXNoXG4gICAgICAgICAgICAvLyB2ZXJkaWN0IHRvIHRoZSBmb3JtJ3MgdmFsaWRpdHkgcmVnaXN0ZXIgdmlhIHNldEZpZWxkVmFsaWRpdHkgKGluXG4gICAgICAgICAgICAvLyBkb1ZhbGlkYXRpb24pLiBNYXJrZXJzIGFyZSBzdXBwcmVzc2VkIGxvY2FsbHkgc28gaW5pdGlhbC1sb2FkXG4gICAgICAgICAgICAvLyB2YWxpZGF0aW9uIG5ldmVyIGZsYXNoZXMgZXJyb3IgVUkg4oCUIGV2ZW4gaWYgZ2xvYmFsIG1hcmtlcnMgYXJlXG4gICAgICAgICAgICAvLyBhbHJlYWR5IG9uIChlLmcuIGFzeW5jIGRhdGEgYXJyaXZpbmcgYWZ0ZXIgRm9ybSdzIENPTVBPTkVOVF9MT0FEXG4gICAgICAgICAgICAvLyBhbHJlYWR5IHJlLWVuYWJsZWQgbWFya2VycykuIENhY2hlIG1ha2VzIHJlcGVhdCBzZWxmLVxuICAgICAgICAgICAgLy8gYW5ub3VuY2VtZW50cyBjaGVhcCB3aGVuIChjdXJyZW50VmFsdWUsIHJlcXVpcmVkLCBtYXJrZXJzKVxuICAgICAgICAgICAgLy8gdHVwbGUgaXMgdW5jaGFuZ2VkLlxuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNseUVuYWJsZWQgPSBhcHBsaWNhdGlvbk1hbmFnZXIuaXNGb3JtTWFya2Vyc0VuYWJsZWQoKTtcbiAgICAgICAgICAgIGlmIChwcmV2aW91c2x5RW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5lbmFibGVGb3JtTWFya2VycyhmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN2ID0gIVV0aWxzLmlzTnVsbChwYXRoKSAmJiAhVXRpbHMuaXNOdWxsKHBhdGgudmFsdWVPYmplY3QpXG4gICAgICAgICAgICAgICAgICAgID8gcGF0aC52YWx1ZU9iamVjdFtwYXRoLnZhbHVlUHJvcGVydHldXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICAgICAgICAvLyBSdW4gaW5ib3VuZCB2YWx1ZVBhcnNlciBzbyBmaWVsZHMgd2hvc2UgcGFyc2VyIHN5bnRoZXNpc2VzXG4gICAgICAgICAgICAgICAgLy8gYSBkZWZhdWx0IGZvciBudWxsIGlucHV0IChlLmcuIFJhZGlvR3JvdXAg4oaSIGRlZmF1bHRWYWx1ZSlcbiAgICAgICAgICAgICAgICAvLyBhcmUgdmFsaWRhdGVkIGFnYWluc3QgdGhlaXIgc2VtYW50aWMgdmFsdWUsIG5vdCB0aGUgcmF3XG4gICAgICAgICAgICAgICAgLy8gbW9kZWwuIGJpbmQoKSBkb2VzIHRoZSBzYW1lIGZvciBub24tbnVsbCBtb2RlbCB2YWx1ZXMuXG4gICAgICAgICAgICAgICAgY29uc3QgY3ZGb3JWYWxpZGF0aW9uID0gIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZVBhcnNlcilcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcy52YWx1ZVBhcnNlcihjdiwgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgOiBjdjtcbiAgICAgICAgICAgICAgICBkb1ZhbGlkYXRpb24ocHJvcHMudmFsdWVzLCBjdkZvclZhbGlkYXRpb24pO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNseUVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmVuYWJsZUZvcm1NYXJrZXJzKHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIFtwcm9wcy52YWx1ZXMsIGNvbmZpZ10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGxvYWRpbmdSZWYuY3VycmVudCA9PT0gdHJ1ZSAmJiAhVXRpbHMuaXNOdWxsKGNvbmZpZykpIHtcbiAgICAgICAgICAgIGxldCBmaWVsZCA9IHByb3BzLmZvcm0oKVxuICAgICAgICAgICAgICAgIC5hZGRGaWVsZChjb25maWcuaWQgfHwgY29uZmlnLmRhdGFCaW5kaW5nLCBwcm9wcy5oYW5kbGUsIHByb3BzLnBhcmVudElkLCBwcm9wcy5iaW5kVmFsdWVUb0Zvcm0pO1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZmllbGQpICYmICFVdGlscy5pc051bGwoZmllbGQuZXJyb3IpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkLmVycm9yLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0SGFzRXJyb3IodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHNldEVycm9yTWVzc2FnZShmaWVsZC5lcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSW50ZW50aW9uYWxseSBkbyBOT1QgdmFsaWRhdGUgb24gbW91bnQ6IHZhbHVlUmVmLmN1cnJlbnQgaXMgbm90XG4gICAgICAgICAgICAvLyB5ZXQgYm91bmQgZnJvbSB0aGUgZm9ybSdzIG1hc3RlciBkYXRhIGF0IHRoaXMgcG9pbnQg4oCUIGJpbmQoKVxuICAgICAgICAgICAgLy8gcnVucyBpbiBhIGxhdGVyIHJlbmRlciBjeWNsZSB2aWEgdGhlIFt2YWx1ZU9iamVjdF0gdXNlRWZmZWN0LlxuICAgICAgICAgICAgLy8gVmFsaWRhdGluZyBoZXJlIHdvdWxkIG1hcmsgZXZlcnkgZmllbGQtd2l0aC1tYXN0ZXItdmFsdWUgYXNcbiAgICAgICAgICAgIC8vIGludmFsaWQgKGN1cnJlbnRWYWx1ZT1udWxsKSwgcGVybWFuZW50bHkgZmxpcHBpbmcgZm9ybS52YWx1ZSB0b1xuICAgICAgICAgICAgLy8gbnVsbC4gUmVnaXN0ZXIgc3RheXMgZW1wdHkgZm9yIHRoaXMgZmllbGQgdW50aWwgZWl0aGVyIHVzZXJcbiAgICAgICAgICAgIC8vIGludGVyYWN0aW9uIChoYW5kbGVDaGFuZ2Ug4oaSIHZhbGlkYXRlRmllbGQg4oaSIGRvVmFsaWRhdGlvbiDihpJcbiAgICAgICAgICAgIC8vIHNldEZpZWxkVmFsaWRpdHkpIG9yIGFuIGV4cGxpY2l0IGZvcm0uYXBpLnZhbGlkYXRlQWxsKCkgcnVucy5cbiAgICAgICAgICAgIC8vIGZvcm0udmFsdWUgdHJlYXRzIGVtcHR5LXJlZ2lzdGVyIGFzIFwib3B0aW1pc3RpY2FsbHkgdmFsaWRcIiDigJQgc29cbiAgICAgICAgICAgIC8vIGFueSBzYXZlIGZsb3cgTVVTVCBjYWxsIGZvcm0uYXBpLnZhbGlkYXRlQWxsKCkgYmVmb3JlIHJlYWRpbmdcbiAgICAgICAgICAgIC8vIGZvcm0udmFsdWUsIG9yIGludmFsaWQgZGF0YSB3aWxsIHBhc3MgdGhyb3VnaCBzaWxlbnRseS5cbiAgICAgICAgICAgIGxvYWRpbmdSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMuZm9ybSgpKSkge1xuICAgICAgICAgICAgICAgIGV2ZW50TWFuYWdlci5jbGVhckNvbXBvbmVudEV2ZW50TGlzdGVuZXJzKHByb3BzLmhhbmRsZSk7XG4gICAgICAgICAgICAgICAgcHJvcHMuZm9ybSgpXG4gICAgICAgICAgICAgICAgICAgIC5yZW1vdmVGaWVsZChwcm9wcy5jb25maWcuZGF0YUJpbmRpbmcgfHwgcHJvcHMuY29uZmlnLmlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9LCBbXSk7XG5cbiAgICBjb25zdCBoYW5kbGVWYWx1ZUNoYW5nZSA9IChuZXdWYWx1ZSkgPT4ge1xuICAgICAgICBpbml0aWFsVmFsdWVCb3VuZC5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgbGV0IHZhbHVlQ2hhbmdlZCA9IG5ld1ZhbHVlICE9PSB2YWx1ZVJlZi5jdXJyZW50O1xuXG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKG5ld1ZhbHVlKSAmJiAhVXRpbHMuaXNOdWxsKHZhbHVlUmVmLmN1cnJlbnQpKSB7XG4gICAgICAgICAgICBpZiAocHJvcHMuY29uZmlnLmZpZWxkVHlwZSA9PT0gJ1NFTEVDVCcgfHwgcHJvcHMuY29uZmlnLmZpZWxkVHlwZSA9PT0gJ0xPT0tVUCcpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZWQgPSBuZXdWYWx1ZS5pZCAhPT0gdmFsdWVSZWYuY3VycmVudC5pZDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcHMuY29uZmlnLmZpZWxkVHlwZSA9PT0gJ0RBVEUnIHx8IHByb3BzLmNvbmZpZy5maWVsZFR5cGUgPT09ICdUSU1FJykge1xuICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlZCA9IG5ld1ZhbHVlICE9PSB2YWx1ZVJlZi5jdXJyZW50O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZWQgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZVJlZi5jdXJyZW50KSAhPT0gSlNPTi5zdHJpbmdpZnkobmV3VmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb3BzLmNvbmZpZy5maWVsZFR5cGUgPT09ICdHUklEJyAmJiB2YWx1ZU9iamVjdFt2YWx1ZVByb3BlcnR5XSkge1xuICAgICAgICAgICAgdmFsdWVPYmplY3RbdmFsdWVQcm9wZXJ0eV0uc3BsaWNlKDAsIHZhbHVlT2JqZWN0W3ZhbHVlUHJvcGVydHldLmxlbmd0aCk7XG5cbiAgICAgICAgICAgIGlmIChuZXdWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbmV3VmFsdWVFbGVtZW50IG9mIG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlT2JqZWN0W3ZhbHVlUHJvcGVydHldLnB1c2gobmV3VmFsdWVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBpZCA9IHByb3BzLmNvbmZpZy5kYXRhQmluZGluZyA/IHByb3BzLmNvbmZpZy5kYXRhQmluZGluZyA6IHByb3BzLmNvbmZpZy5pZDtcbiAgICAgICAgICAgIHByb3BzLmZvcm0oKVxuICAgICAgICAgICAgICAgIC5oYW5kbGVDaGFuZ2UoIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuZGF0YUJpbmRpbmcpID8gcHJvcHMuY29uZmlnLmRhdGFCaW5kaW5nIDogaWQsIG5ld1ZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZUNoYW5nZWQpIHtcbiAgICAgICAgICAgIGxldCBpZCA9IHByb3BzLmNvbmZpZy5kYXRhQmluZGluZyA/IHByb3BzLmNvbmZpZy5kYXRhQmluZGluZyA6IHByb3BzLmNvbmZpZy5pZDtcbiAgICAgICAgICAgIC8vYXBwbGljYXRpb25NYW5hZ2VyLmVuYWJsZUZvcm1NYXJrZXJzKHRydWUpO1xuICAgICAgICAgICAgaWYgKHByb3BzLmNvbmZpZy5maWVsZFR5cGUgPT09ICdTRUxFQ1QnKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdEl0ZW1DaGFuZ2UgPSBwcm9wcy5mb3JtKClcbiAgICAgICAgICAgICAgICAgICAgLmhhbmRsZVNlbGVjdEl0ZW1DaGFuZ2UoaWQsIHNlbGVjdE9wdGlvbnMsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZShzZWxlY3RJdGVtQ2hhbmdlKTtcbiAgICAgICAgICAgICAgICB2YWx1ZVJlZi5jdXJyZW50ID0gc2VsZWN0SXRlbUNoYW5nZTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHNlbGVjdE9wdGlvbiBvZiBzZWxlY3RPcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RPcHRpb24uaWQgPT09IG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IHNlbGVjdE9wdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgdmFsdWVSZWYuY3VycmVudCA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgICAgIHByb3BzLmZvcm0oKVxuICAgICAgICAgICAgICAgICAgICAuaGFuZGxlQ2hhbmdlKCFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmRhdGFCaW5kaW5nKSA/IHByb3BzLmNvbmZpZy5kYXRhQmluZGluZyA6IGlkLCBuZXdWYWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLnZhbHVlQ2hhbmdlSGFuZGxlcikpIHtcbiAgICAgICAgICAgICAgICBwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIobmV3VmFsdWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLlZBTFVFX0NIQU5HRSwgZXZlbnQpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbGlkYXRlOiAodmFsdWVzLCBjdXJyZW50VmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZG9WYWxpZGF0aW9uKHZhbHVlcywgY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXJzZVZhbHVlOiAodmFsdWUsIGluYm91bmQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZVBhcnNlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLnZhbHVlUGFyc2VyKHZhbHVlLCBpbmJvdW5kKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHZhbGlkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWxpZC5jdXJyZW50O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuY29uZmlnLmlkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCByb3dzKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5yb3dzSGFuZGxlciA/IHByb3BzLnJvd3NIYW5kbGVyKCkgOiBudWxsO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldFZhbGlkYXRpb25Hcm91cDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAhVXRpbHMuaXNOdWxsKGNvbmZpZy52YWxpZGF0b3IpID8gY29uZmlnLnZhbGlkYXRvci5ncm91cCA6IG51bGw7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2xlYXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBoYW5kbGVWYWx1ZUNoYW5nZShudWxsKTtcbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5jbGVhckhhbmRsZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLmNsZWFySGFuZGxlcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzY3JvbGxUbzogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICByZWYuY3VycmVudC5zY3JvbGxJbnRvVmlldyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZWhhdmlvcjogXCJzbW9vdGhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrOiBcImNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwodmFsdWVPYmplY3QpICYmICFVdGlscy5pc051bGwodmFsdWVQcm9wZXJ0eSkgJiYgIVV0aWxzLmlzTnVsbCh2YWx1ZU9iamVjdFt2YWx1ZVByb3BlcnR5XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFVdGlscy5pc051bGwocHJvcHMudmFsdWVQYXJzZXIpID9cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnZhbHVlUGFyc2VyKHZhbHVlT2JqZWN0W3ZhbHVlUHJvcGVydHldLCBmYWxzZSkgOiB2YWx1ZU9iamVjdFt2YWx1ZVByb3BlcnR5XTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZU9iamVjdFt2YWx1ZVByb3BlcnR5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLnZhbHVlUGFyc2VyID8gcHJvcHMudmFsdWVQYXJzZXIodmFsdWUsIGZhbHNlKSA6IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCB2YWx1ZSh2YWwpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVWYWx1ZUNoYW5nZSh2YWwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMudmFsdWVDaGFuZ2VDYWxsYmFjaykpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMudmFsdWVDaGFuZ2VDYWxsYmFjayh2YWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBzZXREaXNhYmxlZChkaXNhYmxlZCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IHZpc2libGUodmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHNldFZpc2libGUodmlzaWJsZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGFuZGxlTG9hZENvbXBsZXRlKCkge1xuICAgICAgICAgICAgICAgIGxvYWRpbmdSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlZnJlc2goKSB7XG4gICAgICAgICAgICAgICAgbGV0IHBhcnNlZENvbmZpZyA9IFV0aWxzLnBhcnNlQ29uZmlnKHByb3BzLmNvbmZpZywgcHJvcHMudmlld0lkKTtcbiAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyc2VkQ29uZmlnLnZpc2libGUsIHBhcnNlZENvbmZpZy5pZCwgdHJ1ZSkpO1xuICAgICAgICAgICAgICAgIHNldERpc2FibGVkKFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyc2VkQ29uZmlnLmRpc2FibGVkLCBwYXJzZWRDb25maWcuaWQpKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVxdWlyZWROZXdWYWwgPSAhVXRpbHMuaXNOdWxsKHBhcnNlZENvbmZpZy52YWxpZGF0b3IpID9cbiAgICAgICAgICAgICAgICAgICAgIVV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyc2VkQ29uZmlnLnZhbGlkYXRvci5udWxsYWJsZSwgcGFyc2VkQ29uZmlnLmlkLCB0cnVlKVxuICAgICAgICAgICAgICAgICAgICB8fCBVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcnNlZENvbmZpZy52YWxpZGF0b3IucmVxdWlyZWQsIHBhcnNlZENvbmZpZy5pZCwgZmFsc2UpIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgdmFsaWRhdGVPbkNoYW5nZS5jdXJyZW50ID0gcmVxdWlyZWQgIT09IG51bGwgJiYgcmVxdWlyZWQgIT09IHJlcXVpcmVkTmV3VmFsICYmIGxvYWRpbmdSZWYuY3VycmVudCA9PT0gZmFsc2U7XG4gICAgICAgICAgICAgICAgc2V0UmVxdWlyZWQocmVxdWlyZWROZXdWYWwpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCByZXF1aXJlZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWlyZWQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IHJlcXVpcmVkKGlzUmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgICBzZXRSZXF1aXJlZChpc1JlcXVpcmVkKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgbWluRGF0ZShtaW5EYXRlKSB7XG4gICAgICAgICAgICAgICAgc2V0TWluRGF0ZShtaW5EYXRlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgbWF4RGF0ZShtYXhEYXRlKSB7XG4gICAgICAgICAgICAgICAgc2V0TWF4RGF0ZShtYXhEYXRlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgc2VsZWN0T3B0aW9ucyhzZWxlY3RPcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0T3B0aW9ucyhzZWxlY3RPcHRpb25zKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNldCgpIHtcbiAgICAgICAgICAgICAgICBzZXRSZXNldFN3aXRjaCghcmVzZXRTd2l0Y2gpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldEZpZWxkUmVxdWlyZWQobmV3VmFsLCB2YWxpZGF0ZSA9IHRydWUpIHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZU9uQ2hhbmdlLmN1cnJlbnQgPSB2YWxpZGF0ZTtcbiAgICAgICAgICAgICAgICBzZXRSZXF1aXJlZChuZXdWYWwpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldENoaWxkcmVuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMuZ2V0Q2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5nZXRDaGlsZHJlbigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2FkRGF0YSgpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHMubG9hZERhdGFIYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLmxvYWREYXRhSGFuZGxlcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNvbmZpZyA/XG4gICAgICAgIDxkaXYgcmVmPXtyZWZ9IGNsYXNzTmFtZT1cImNvbC0qLSpcIiBrZXk9e2NvbmZpZy5pZH0gc3R5bGU9e3tcbiAgICAgICAgICAgIHRleHRBbGlnbjogJ2xlZnQnLFxuICAgICAgICAgICAgbWFyZ2luTGVmdDogIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuYXR0cmlidXRlcz8uc3R5bGU/Lm1hcmdpbkxlZnQpID8gcHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LnN0eWxlPy5tYXJnaW5MZWZ0IDpcbiAgICAgICAgICAgICAgICBwcm9wcy5jb25maWcuaW5kZXggPT09IDAgPyAwIDogJzhweCcsXG4gICAgICAgICAgICBkaXNwbGF5OiAhdmlzaWJsZSB8fCBVdGlscy5nZXRDb21wb25lbnRBdHRyaWJ1dGUoY29uZmlnLCAnaGlkZGVuJywgZmFsc2UpID09PSB0cnVlID8gJ25vbmUnIDogJ2Jsb2NrJ1xuICAgICAgICB9fT5cbiAgICAgICAgPHNwYW4+XG4gICAgICAgIHtwcm9wcy5jaGlsZHJlbih7XG4gICAgICAgICAgICBtaW5EYXRlOiBtaW5EYXRlLFxuICAgICAgICAgICAgbWF4RGF0ZTogbWF4RGF0ZSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiByZXF1aXJlZCxcbiAgICAgICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICAgICAgICAgIHZhbHVlT2JqZWN0OiB2YWx1ZU9iamVjdCxcbiAgICAgICAgICAgIHZhbHVlUHJvcGVydHk6IHZhbHVlUHJvcGVydHksXG4gICAgICAgICAgICBoYW5kbGVWYWx1ZUNoYW5nZTogaGFuZGxlVmFsdWVDaGFuZ2UsXG4gICAgICAgICAgICBzZXRWYWx1ZTogc2V0VmFsdWUsXG4gICAgICAgICAgICBzZXRTZWxlY3RPcHRpb25zOiBzZXRTZWxlY3RPcHRpb25zLFxuICAgICAgICAgICAgc2VsZWN0T3B0aW9uczogc2VsZWN0T3B0aW9ucyxcbiAgICAgICAgICAgIHNldFJlc2V0U3dpdGNoOiBzZXRSZXNldFN3aXRjaCxcbiAgICAgICAgICAgIHJlc2V0U3dpdGNoOiByZXNldFN3aXRjaCxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgIGhhc0Vycm9yOiBoYXNFcnJvcixcbiAgICAgICAgICAgIGRvVmFsaWRhdGlvbjogZG9WYWxpZGF0aW9uLFxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBlcnJvck1lc3NhZ2UsXG4gICAgICAgICAgICBsb2FkaW5nUmVmOiBsb2FkaW5nUmVmXG4gICAgICAgIH0pfVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA6IG51bGw7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQyxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDRCxJQUFBQyxNQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxXQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxtQkFB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
412
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9PYnNlcnZhYmxlIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9FdmVudCIsIl9FdmVudFR5cGUiLCJfRHluYW1pY0pTIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQmFzZUZpZWxkIiwicHJvcHMiLCJoYXNFcnJvciIsInNldEhhc0Vycm9yIiwiUmVhY3QiLCJ1c2VTdGF0ZSIsImVycm9yTWVzc2FnZSIsInNldEVycm9yTWVzc2FnZSIsInZhbHVlT2JqZWN0Iiwic2V0VmFsdWVPYmplY3QiLCJ2YWx1ZVByb3BlcnR5Iiwic2V0VmFsdWVQcm9wZXJ0eSIsImxvYWRpbmdSZWYiLCJ1c2VSZWYiLCJjb25maWciLCJzZXRDb25maWciLCJ2YWx1ZSIsInNldFZhbHVlIiwiVXRpbHMiLCJpc051bGwiLCJ2YWx1ZVJlZiIsInNlbGVjdE9wdGlvbnMiLCJzZXRTZWxlY3RPcHRpb25zIiwiZGlzYWJsZWQiLCJzZXREaXNhYmxlZCIsInZpc2libGUiLCJzZXRWaXNpYmxlIiwicmVxdWlyZWQiLCJzZXRSZXF1aXJlZCIsIm1pbkRhdGUiLCJzZXRNaW5EYXRlIiwibWF4RGF0ZSIsInNldE1heERhdGUiLCJyZXNldFN3aXRjaCIsInNldFJlc2V0U3dpdGNoIiwidmFsaWRhdGVPbkNoYW5nZSIsImluaXRpYWxWYWx1ZUJvdW5kIiwicmVmIiwidmFsaWQiLCJsYXN0VmFsaWRhdGlvbiIsInVzZUVmZmVjdCIsImN1cnJlbnQiLCJiaW5kIiwiYm91bmRWYWx1ZSIsImZpZWxkVHlwZSIsImlkIiwidmFsdWVQYXJzZXIiLCJmb3JtIiwidmFsaWRhdGVQYXJlbnQiLCJkYXRhQmluZGluZyIsImRvVmFsaWRhdGlvbiIsInZhbHVlcyIsImN1cnJlbnRWYWx1ZSIsIm1hcmtlcnMiLCJhcHBsaWNhdGlvbk1hbmFnZXIiLCJpc0Zvcm1NYXJrZXJzRW5hYmxlZCIsImxhc3QiLCJwYXRoIiwiZ2V0VmFsdWVQYXRoIiwicmVzdWx0IiwidmFsaWRhdG9yIiwic2NyaXB0IiwiZHluYW1pY0pTIiwiZXhlY3V0ZVNjcmlwdE9iamVjdCIsImNvbmNhdCIsIm1lc3NhZ2UiLCJ2YWxpZGF0ZUZpZWxkIiwiZm9yY2VNYXJrZXIiLCJzZXRGaWVsZEVycm9yIiwic2V0RmllbGRWYWxpZGl0eSIsIm9uVmFsaWRpdHlDaGFuZ2UiLCJoYW5kbGUiLCJhcGkiLCJwYXJzZWRDb25maWciLCJwYXJzZUNvbmZpZyIsInZpZXdJZCIsImV2ZW50TWFuYWdlciIsImFkZFN1YnNjcmlwdGlvbnMiLCJldmVudEhhbmRsaW5nQ29uZmlnIiwiYWRkU3lzdGVtU3Vic2NyaXB0aW9ucyIsImV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24iLCJldmVudCIsIkV2ZW50IiwiZmlyZUV2ZW50IiwiRXZlbnRUeXBlIiwiQ09NUE9ORU5UX0xPQUQiLCJzY3JpcHRWYWx1ZSIsImlzRXhwcmVzc2lvbiIsImV4ZWN1dGVTY3JpcHQiLCJyZXBsYWNlIiwidmFsIiwiaW5zdGFuY2VUeXBlIiwiaGFuZGxlQ2hhbmdlIiwicHJldmlvdXNseUVuYWJsZWQiLCJlbmFibGVGb3JtTWFya2VycyIsImN2IiwiY3ZGb3JWYWxpZGF0aW9uIiwiZmllbGQiLCJhZGRGaWVsZCIsInBhcmVudElkIiwiYmluZFZhbHVlVG9Gb3JtIiwiZXJyb3IiLCJsZW5ndGgiLCJjbGVhckNvbXBvbmVudEV2ZW50TGlzdGVuZXJzIiwicmVtb3ZlRmllbGQiLCJoYW5kbGVWYWx1ZUNoYW5nZSIsIm5ld1ZhbHVlIiwidmFsdWVDaGFuZ2VkIiwiSlNPTiIsInN0cmluZ2lmeSIsInNwbGljZSIsIm5ld1ZhbHVlRWxlbWVudCIsInB1c2giLCJzZWxlY3RJdGVtQ2hhbmdlIiwiaGFuZGxlU2VsZWN0SXRlbUNoYW5nZSIsInNlbGVjdE9wdGlvbiIsInZhbHVlQ2hhbmdlSGFuZGxlciIsIlZBTFVFX0NIQU5HRSIsInZhbGlkYXRlIiwicGFyc2VWYWx1ZSIsImluYm91bmQiLCJyb3dzIiwicm93c0hhbmRsZXIiLCJnZXRWYWxpZGF0aW9uR3JvdXAiLCJncm91cCIsImNsZWFyIiwiY2xlYXJIYW5kbGVyIiwic2Nyb2xsVG8iLCJzY3JvbGxJbnRvVmlldyIsImJlaGF2aW9yIiwiYmxvY2siLCJ2YWx1ZUNoYW5nZUNhbGxiYWNrIiwiaGFuZGxlTG9hZENvbXBsZXRlIiwicmVmcmVzaCIsInJlcXVpcmVkTmV3VmFsIiwibnVsbGFibGUiLCJpc1JlcXVpcmVkIiwicmVzZXQiLCJzZXRGaWVsZFJlcXVpcmVkIiwibmV3VmFsIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiZ2V0Q2hpbGRyZW4iLCJsb2FkRGF0YSIsImxvYWREYXRhSGFuZGxlciIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJrZXkiLCJzdHlsZSIsInRleHRBbGlnbiIsImRpc3BsYXkiLCJnZXRDb21wb25lbnRBdHRyaWJ1dGUiLCJjaGlsZHJlbiIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9CYXNlRmllbGQuanN4Il0sInNvdXJjZXNDb250ZW50IjpbIu+7v2ltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vLi4vVXRpbHMnO1xuaW1wb3J0IGV2ZW50TWFuYWdlciBmcm9tICcuLi8uLi9ldmVudC9PYnNlcnZhYmxlJztcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSAnLi4vLi4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCBFdmVudCBmcm9tICcuLi8uLi9ldmVudC9FdmVudCc7XG5pbXBvcnQgRXZlbnRUeXBlIGZyb20gJy4uLy4uL2V2ZW50L0V2ZW50VHlwZSc7XG5pbXBvcnQgZHluYW1pY0pTIGZyb20gJy4uLy4uL0R5bmFtaWNKUyc7XG5cbmV4cG9ydCBjb25zdCBCYXNlRmllbGQgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCBbaGFzRXJyb3IsIHNldEhhc0Vycm9yXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbZXJyb3JNZXNzYWdlLCBzZXRFcnJvck1lc3NhZ2VdID0gUmVhY3QudXNlU3RhdGUoJycpO1xuICAgIGNvbnN0IFt2YWx1ZU9iamVjdCwgc2V0VmFsdWVPYmplY3RdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFt2YWx1ZVByb3BlcnR5LCBzZXRWYWx1ZVByb3BlcnR5XSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGxvYWRpbmdSZWYgPSBSZWFjdC51c2VSZWYodHJ1ZSk7XG4gICAgY29uc3QgW2NvbmZpZywgc2V0Q29uZmlnXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIC8vIFRPRE8gOiBSZXBsYWNlIHRoZSBzdGF0ZSB2YWx1ZSB3aXRoIHRoZSB2YWx1ZVJlZiBiZWxvdy4gVGhlIHN0YXRlIHZhbHVlIGlzIG9jY2F0aW9uYWx5IG5vdCBhdmFpbGFibGUgaW4gdGltZSBmb3IgZXZlbnQgc2NyaXB0c1xuICAgIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZSkgPyBwcm9wcy52YWx1ZSA6IG51bGwpO1xuICAgIC8vIFRPRE8gOiBSZXBsYWNlIHRoZSBzdGF0ZSB2YWx1ZSB3aXRoIHRoaXMgcmVmIGZvciB0aGUgcmVhc29uIG1lbnNpb25lZCBhYm92ZVxuICAgIGNvbnN0IHZhbHVlUmVmID0gUmVhY3QudXNlUmVmKCFVdGlscy5pc051bGwocHJvcHMudmFsdWUpID8gcHJvcHMudmFsdWUgOiBudWxsKTtcbiAgICBjb25zdCBbc2VsZWN0T3B0aW9ucywgc2V0U2VsZWN0T3B0aW9uc10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW2Rpc2FibGVkLCBzZXREaXNhYmxlZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3Zpc2libGUsIHNldFZpc2libGVdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtyZXF1aXJlZCwgc2V0UmVxdWlyZWRdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW21pbkRhdGUsIHNldE1pbkRhdGVdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW21heERhdGUsIHNldE1heERhdGVdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3Jlc2V0U3dpdGNoLCBzZXRSZXNldFN3aXRjaF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdmFsaWRhdGVPbkNoYW5nZSA9IFJlYWN0LnVzZVJlZigpO1xuICAgIGNvbnN0IGluaXRpYWxWYWx1ZUJvdW5kID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3QgdmFsaWQgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICAgIC8vIE1lbW8gb2YgdGhlIGxhc3QgKGN1cnJlbnRWYWx1ZSwgcmVxdWlyZWQsIG1hcmtlcnMpIHR1cGxlICsgaXRzIHJlc3VsdC52YWxpZC5cbiAgICAvLyBkb1ZhbGlkYXRpb24gc2hvcnQtY2lyY3VpdHMgd2hlbiB0aGUgaW5wdXRzIGFyZSB1bmNoYW5nZWQgc28gcmVwZWF0ZWQgcmVhZHNcbiAgICAvLyBvZiBAI3tmb3JtfS52YWx1ZSAod2hpY2ggaXRlcmF0ZXMgZmllbGRzIGFuZCBjYWxscyB2YWxpZGF0ZSBvbiBlYWNoIGluXG4gICAgLy8gRm9ybS5qc3ggZ2V0IHZhbHVlKCkpIGRvbid0IGtlZXAgZmlyaW5nIHNldEVycm9yTWVzc2FnZS9zZXRIYXNFcnJvciBhbmRcbiAgICAvLyByZS1yZW5kZXItbG9vcCB0aGUgd2hvbGUgZm9ybS5cbiAgICBjb25zdCBsYXN0VmFsaWRhdGlvbiA9IFJlYWN0LnVzZVJlZihudWxsKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGluaXRpYWxWYWx1ZUJvdW5kLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgYmluZCgpO1xuICAgIH0sIFt2YWx1ZU9iamVjdF0pO1xuXG4gICAgZnVuY3Rpb24gYmluZCgpIHtcbiAgICAgICAgbGV0IGJvdW5kVmFsdWUgPSB2YWx1ZU9iamVjdFt2YWx1ZVByb3BlcnR5XTtcbiAgICAgICAgaWYgKGJvdW5kVmFsdWUgJiYgIWluaXRpYWxWYWx1ZUJvdW5kLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGluaXRpYWxWYWx1ZUJvdW5kLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHByb3BzLmNvbmZpZy5maWVsZFR5cGUgPT09ICdTRUxFQ1QnIHx8IHByb3BzLmNvbmZpZy5maWVsZFR5cGUgPT09ICdMT09LVVAnKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFib3VuZFZhbHVlIHx8IFV0aWxzLmlzTnVsbChib3VuZFZhbHVlLmlkKSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYocHJvcHMudmFsdWVQYXJzZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKHByb3BzLnZhbHVlUGFyc2VyKGJvdW5kVmFsdWUsIHRydWUpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKGJvdW5kVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFsdWVSZWYuY3VycmVudCA9IGJvdW5kVmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZihwcm9wcy52YWx1ZVBhcnNlcikge1xuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShwcm9wcy52YWx1ZVBhcnNlcihib3VuZFZhbHVlLCB0cnVlKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoYm91bmRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFsdWVSZWYuY3VycmVudCA9IGJvdW5kVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBiaW5kKCk7XG4gICAgfSwgW3ZhbHVlT2JqZWN0W3ZhbHVlUHJvcGVydHldXSk7XG5cbiAgICAvLyBDaGFuZ2UgdGhlIHJlcXVpcmVkIHZhbHVlIGFuZCByZS12YWxpZGF0ZSBmaWVsZCBpZiBuZWNlc3NhcnlcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChjb25maWcpICYmIHZhbGlkYXRlT25DaGFuZ2UuY3VycmVudCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcHJvcHMuZm9ybSgpXG4gICAgICAgICAgICAgICAgLnZhbGlkYXRlUGFyZW50KGNvbmZpZy5kYXRhQmluZGluZyB8fCBjb25maWcuaWQsIGRvVmFsaWRhdGlvbihwcm9wcy52YWx1ZXMsIHZhbHVlKSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YWxpZGF0ZU9uQ2hhbmdlLmN1cnJlbnQgPSBudWxsO1xuICAgIH0sIFtyZXF1aXJlZF0pO1xuXG4gICAgY29uc3QgZG9WYWxpZGF0aW9uID0gKHZhbHVlcywgY3VycmVudFZhbHVlKSA9PiB7XG4gICAgICAgIGlmKGNvbmZpZykge1xuICAgICAgICAgICAgY29uc3QgbWFya2VycyA9IGFwcGxpY2F0aW9uTWFuYWdlci5pc0Zvcm1NYXJrZXJzRW5hYmxlZCgpO1xuICAgICAgICAgICAgY29uc3QgbGFzdCA9IGxhc3RWYWxpZGF0aW9uLmN1cnJlbnQ7XG4gICAgICAgICAgICBpZiAobGFzdCAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICYmIGxhc3QuY3VycmVudFZhbHVlID09PSBjdXJyZW50VmFsdWVcbiAgICAgICAgICAgICAgICAmJiBsYXN0LnJlcXVpcmVkID09PSByZXF1aXJlZFxuICAgICAgICAgICAgICAgICYmIGxhc3QubWFya2VycyA9PT0gbWFya2Vycykge1xuICAgICAgICAgICAgICAgIHJldHVybiBsYXN0LnZhbGlkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcGF0aCA9IHByb3BzLmZvcm0oKVxuICAgICAgICAgICAgICAgIC5nZXRWYWx1ZVBhdGgoY29uZmlnLmRhdGFCaW5kaW5nIHx8IGNvbmZpZy5pZCk7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0ge3ZhbGlkOiB0cnVlfTtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGNvbmZpZy52YWxpZGF0b3IpICYmICFVdGlscy5pc051bGwoY29uZmlnLnZhbGlkYXRvci5zY3JpcHQpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHRPYmplY3QoYCR7Y29uZmlnLmlkfVZhbGlkYXRvcmAsIGNvbmZpZy52YWxpZGF0b3Iuc2NyaXB0KTtcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC52YWxpZCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQubWVzc2FnZSA9IHJlc3VsdC5tZXNzYWdlID8gcmVzdWx0Lm1lc3NhZ2UgOiBjb25maWcudmFsaWRhdG9yLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVzdWx0LnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gVXRpbHMudmFsaWRhdGVGaWVsZChwYXRoLnZhbHVlUHJvcGVydHksIHJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICBwYXRoLnZhbHVlT2JqZWN0LCBjdXJyZW50VmFsdWUsIGNvbmZpZy52YWxpZGF0b3IpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZXRFcnJvck1lc3NhZ2UobWFya2VycyB8fCByZXN1bHQuZm9yY2VNYXJrZXIgPyByZXN1bHQubWVzc2FnZSA6ICcnKTtcbiAgICAgICAgICAgIHNldEhhc0Vycm9yKCFyZXN1bHQudmFsaWQgJiYgKG1hcmtlcnMgfHwgcmVzdWx0LmZvcmNlTWFya2VyKSk7XG4gICAgICAgICAgICB2YWxpZC5jdXJyZW50ID0gcmVzdWx0LnZhbGlkICYmIChtYXJrZXJzIHx8IHJlc3VsdC5mb3JjZU1hcmtlcik7XG5cbiAgICAgICAgICAgIGlmIChtYXJrZXJzKSB7XG4gICAgICAgICAgICAgICAgcHJvcHMuZm9ybSgpXG4gICAgICAgICAgICAgICAgICAgIC5zZXRGaWVsZEVycm9yKGNvbmZpZy5pZCwgdHlwZW9mIHJlc3VsdC5tZXNzYWdlID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiByZXN1bHQubWVzc2FnZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxhc3RWYWxpZGF0aW9uLmN1cnJlbnQgPSB7IGN1cnJlbnRWYWx1ZSwgcmVxdWlyZWQsIG1hcmtlcnMsIHZhbGlkOiByZXN1bHQudmFsaWQgfTtcblxuICAgICAgICAgICAgLy8gUHVibGlzaCB0byB0aGUgZm9ybSdzIHZhbGlkaXR5IHJlZ2lzdGVyLiBTaW5nbGUgc291cmNlIG9mIHRydXRoXG4gICAgICAgICAgICAvLyBmb3IgXCJpcyB0aGlzIGZpZWxkIHZhbGlkP1wiIOKAlCBmb3JtLnZhbHVlIHJlYWRzIGZyb20gaGVyZSB3aXRob3V0XG4gICAgICAgICAgICAvLyBjYWxsaW5nIGJhY2sgaW50byB0aGUgZmllbGQgKGtpbGxzIHRoZSBiaS1kaXJlY3Rpb25hbCBjaGFpbikuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3BzLmZvcm0gPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHByb3BzLmZvcm0oKS5zZXRGaWVsZFZhbGlkaXR5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcHJvcHMuZm9ybSgpLnNldEZpZWxkVmFsaWRpdHkoY29uZmlnLmlkIHx8IGNvbmZpZy5kYXRhQmluZGluZywge1xuICAgICAgICAgICAgICAgICAgICB2YWxpZDogcmVzdWx0LnZhbGlkLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXN1bHQubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgZm9yY2VNYXJrZXI6IHJlc3VsdC5mb3JjZU1hcmtlcixcbiAgICAgICAgICAgICAgICAgICAgb25WYWxpZGl0eUNoYW5nZTogKHZhbGlkLCBlcnJvck1lc3NhZ2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGFwcGxpY2F0aW9uTWFuYWdlci5pc0Zvcm1NYXJrZXJzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SGFzRXJyb3IoIXZhbGlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnZhbGlkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBwcm9wcy5oYW5kbGUuYXBpID0gYXBpKCk7XG4gICAgfSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGNvbmZpZykpIHtcbiAgICAgICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuYWRkU3Vic2NyaXB0aW9ucyhwYXJzZWRDb25maWcuZXZlbnRIYW5kbGluZ0NvbmZpZywgcHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmFkZFN5c3RlbVN1YnNjcmlwdGlvbnMocHJvcHMudmlld0lkLCBwYXJzZWRDb25maWcpO1xuICAgICAgICAgICAgc2V0Q29uZmlnKHBhcnNlZENvbmZpZyk7XG4gICAgICAgICAgICBzZXRWaXNpYmxlKFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyc2VkQ29uZmlnLnZpc2libGUsIHBhcnNlZENvbmZpZy5pZCwgdHJ1ZSkpO1xuICAgICAgICAgICAgc2V0RGlzYWJsZWQoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcuZGlzYWJsZWQsIHBhcnNlZENvbmZpZy5pZCwgZmFsc2UpKTtcblxuICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBudWxsKTtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLkNPTVBPTkVOVF9MT0FELCBldmVudCk7XG4gICAgICAgIH1cbiAgICB9LCBbXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZXMpICYmICFVdGlscy5pc051bGwoY29uZmlnKSkge1xuICAgICAgICAgICAgbGV0IHBhdGggPSBwcm9wcy5mb3JtKClcbiAgICAgICAgICAgICAgICAuZ2V0VmFsdWVQYXRoKGNvbmZpZy5kYXRhQmluZGluZyB8fCBjb25maWcuaWQsIHByb3BzLnZhbHVlcyk7XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwYXRoLnZhbHVlT2JqZWN0KSkge1xuICAgICAgICAgICAgICAgIHNldFZhbHVlT2JqZWN0KHBhdGgudmFsdWVPYmplY3QpO1xuICAgICAgICAgICAgICAgIHNldFZhbHVlUHJvcGVydHkocGF0aC52YWx1ZVByb3BlcnR5KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGxldCBzY3JpcHRWYWx1ZSA9IGFwcGxpY2F0aW9uTWFuYWdlci5pc0V4cHJlc3Npb24ocHJvcHMuY29uZmlnLnZhbHVlKSA/XG4gICAgICAgICAgICAgICAgICAgIGR5bmFtaWNKUy5leGVjdXRlU2NyaXB0KHByb3BzLmNvbmZpZy5pZC5yZXBsYWNlKCcuJywgJ18nKSArICdWYWx1ZScsIHByb3BzLmNvbmZpZy52YWx1ZSkgOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcy5jb25maWcudmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChzY3JpcHRWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhbCA9IHNjcmlwdFZhbHVlLmluc3RhbmNlVHlwZSA9PT0gJ1R5cGVkVmFsdWUnID8gc2NyaXB0VmFsdWUudmFsdWUgOiBzY3JpcHRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVPYmplY3RbdmFsdWVQcm9wZXJ0eV0gPSB2YWw7XG4gICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKHZhbCk7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlUmVmLmN1cnJlbnQgPSB2YWw7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLmZvcm0oKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmhhbmRsZUNoYW5nZShjb25maWcuZGF0YUJpbmRpbmcgfHwgY29uZmlnLmlkLCB2YWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU2VsZi1hbm5vdW5jZTogdmFsaWRhdGUgdGhpcyBmaWVsZCBhZ2FpbnN0IGN1cnJlbnQgZGF0YSBhbmQgcHVzaFxuICAgICAgICAgICAgLy8gdmVyZGljdCB0byB0aGUgZm9ybSdzIHZhbGlkaXR5IHJlZ2lzdGVyIHZpYSBzZXRGaWVsZFZhbGlkaXR5IChpblxuICAgICAgICAgICAgLy8gZG9WYWxpZGF0aW9uKS4gTWFya2VycyBhcmUgc3VwcHJlc3NlZCBsb2NhbGx5IHNvIGluaXRpYWwtbG9hZFxuICAgICAgICAgICAgLy8gdmFsaWRhdGlvbiBuZXZlciBmbGFzaGVzIGVycm9yIFVJIOKAlCBldmVuIGlmIGdsb2JhbCBtYXJrZXJzIGFyZVxuICAgICAgICAgICAgLy8gYWxyZWFkeSBvbiAoZS5nLiBhc3luYyBkYXRhIGFycml2aW5nIGFmdGVyIEZvcm0ncyBDT01QT05FTlRfTE9BRFxuICAgICAgICAgICAgLy8gYWxyZWFkeSByZS1lbmFibGVkIG1hcmtlcnMpLiBDYWNoZSBtYWtlcyByZXBlYXQgc2VsZi1cbiAgICAgICAgICAgIC8vIGFubm91bmNlbWVudHMgY2hlYXAgd2hlbiAoY3VycmVudFZhbHVlLCByZXF1aXJlZCwgbWFya2VycylcbiAgICAgICAgICAgIC8vIHR1cGxlIGlzIHVuY2hhbmdlZC5cbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzbHlFbmFibGVkID0gYXBwbGljYXRpb25NYW5hZ2VyLmlzRm9ybU1hcmtlcnNFbmFibGVkKCk7XG4gICAgICAgICAgICBpZiAocHJldmlvdXNseUVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuZW5hYmxlRm9ybU1hcmtlcnMoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdiA9ICFVdGlscy5pc051bGwocGF0aCkgJiYgIVV0aWxzLmlzTnVsbChwYXRoLnZhbHVlT2JqZWN0KVxuICAgICAgICAgICAgICAgICAgICA/IHBhdGgudmFsdWVPYmplY3RbcGF0aC52YWx1ZVByb3BlcnR5XVxuICAgICAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgICAgICAgLy8gUnVuIGluYm91bmQgdmFsdWVQYXJzZXIgc28gZmllbGRzIHdob3NlIHBhcnNlciBzeW50aGVzaXNlc1xuICAgICAgICAgICAgICAgIC8vIGEgZGVmYXVsdCBmb3IgbnVsbCBpbnB1dCAoZS5nLiBSYWRpb0dyb3VwIOKGkiBkZWZhdWx0VmFsdWUpXG4gICAgICAgICAgICAgICAgLy8gYXJlIHZhbGlkYXRlZCBhZ2FpbnN0IHRoZWlyIHNlbWFudGljIHZhbHVlLCBub3QgdGhlIHJhd1xuICAgICAgICAgICAgICAgIC8vIG1vZGVsLiBiaW5kKCkgZG9lcyB0aGUgc2FtZSBmb3Igbm9uLW51bGwgbW9kZWwgdmFsdWVzLlxuICAgICAgICAgICAgICAgIGNvbnN0IGN2Rm9yVmFsaWRhdGlvbiA9ICFVdGlscy5pc051bGwocHJvcHMudmFsdWVQYXJzZXIpXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHMudmFsdWVQYXJzZXIoY3YsIHRydWUpXG4gICAgICAgICAgICAgICAgICAgIDogY3Y7XG4gICAgICAgICAgICAgICAgZG9WYWxpZGF0aW9uKHByb3BzLnZhbHVlcywgY3ZGb3JWYWxpZGF0aW9uKTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzbHlFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5lbmFibGVGb3JtTWFya2Vycyh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbcHJvcHMudmFsdWVzLCBjb25maWddKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChsb2FkaW5nUmVmLmN1cnJlbnQgPT09IHRydWUgJiYgIVV0aWxzLmlzTnVsbChjb25maWcpKSB7XG4gICAgICAgICAgICBsZXQgZmllbGQgPSBwcm9wcy5mb3JtKClcbiAgICAgICAgICAgICAgICAuYWRkRmllbGQoY29uZmlnLmlkIHx8IGNvbmZpZy5kYXRhQmluZGluZywgcHJvcHMuaGFuZGxlLCBwcm9wcy5wYXJlbnRJZCwgcHJvcHMuYmluZFZhbHVlVG9Gb3JtKTtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGZpZWxkKSAmJiAhVXRpbHMuaXNOdWxsKGZpZWxkLmVycm9yKSkge1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZC5lcnJvci5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldEhhc0Vycm9yKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBzZXRFcnJvck1lc3NhZ2UoZmllbGQuZXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEludGVudGlvbmFsbHkgZG8gTk9UIHZhbGlkYXRlIG9uIG1vdW50OiB2YWx1ZVJlZi5jdXJyZW50IGlzIG5vdFxuICAgICAgICAgICAgLy8geWV0IGJvdW5kIGZyb20gdGhlIGZvcm0ncyBtYXN0ZXIgZGF0YSBhdCB0aGlzIHBvaW50IOKAlCBiaW5kKClcbiAgICAgICAgICAgIC8vIHJ1bnMgaW4gYSBsYXRlciByZW5kZXIgY3ljbGUgdmlhIHRoZSBbdmFsdWVPYmplY3RdIHVzZUVmZmVjdC5cbiAgICAgICAgICAgIC8vIFZhbGlkYXRpbmcgaGVyZSB3b3VsZCBtYXJrIGV2ZXJ5IGZpZWxkLXdpdGgtbWFzdGVyLXZhbHVlIGFzXG4gICAgICAgICAgICAvLyBpbnZhbGlkIChjdXJyZW50VmFsdWU9bnVsbCksIHBlcm1hbmVudGx5IGZsaXBwaW5nIGZvcm0udmFsdWUgdG9cbiAgICAgICAgICAgIC8vIG51bGwuIFJlZ2lzdGVyIHN0YXlzIGVtcHR5IGZvciB0aGlzIGZpZWxkIHVudGlsIGVpdGhlciB1c2VyXG4gICAgICAgICAgICAvLyBpbnRlcmFjdGlvbiAoaGFuZGxlQ2hhbmdlIOKGkiB2YWxpZGF0ZUZpZWxkIOKGkiBkb1ZhbGlkYXRpb24g4oaSXG4gICAgICAgICAgICAvLyBzZXRGaWVsZFZhbGlkaXR5KSBvciBhbiBleHBsaWNpdCBmb3JtLmFwaS52YWxpZGF0ZUFsbCgpIHJ1bnMuXG4gICAgICAgICAgICAvLyBmb3JtLnZhbHVlIHRyZWF0cyBlbXB0eS1yZWdpc3RlciBhcyBcIm9wdGltaXN0aWNhbGx5IHZhbGlkXCIg4oCUIHNvXG4gICAgICAgICAgICAvLyBhbnkgc2F2ZSBmbG93IE1VU1QgY2FsbCBmb3JtLmFwaS52YWxpZGF0ZUFsbCgpIGJlZm9yZSByZWFkaW5nXG4gICAgICAgICAgICAvLyBmb3JtLnZhbHVlLCBvciBpbnZhbGlkIGRhdGEgd2lsbCBwYXNzIHRocm91Z2ggc2lsZW50bHkuXG4gICAgICAgICAgICBsb2FkaW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmZvcm0oKSkpIHtcbiAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuY2xlYXJDb21wb25lbnRFdmVudExpc3RlbmVycyhwcm9wcy5oYW5kbGUpO1xuICAgICAgICAgICAgICAgIHByb3BzLmZvcm0oKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlRmllbGQocHJvcHMuY29uZmlnLmRhdGFCaW5kaW5nIHx8IHByb3BzLmNvbmZpZy5pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xuXG4gICAgY29uc3QgaGFuZGxlVmFsdWVDaGFuZ2UgPSAobmV3VmFsdWUpID0+IHtcbiAgICAgICAgaW5pdGlhbFZhbHVlQm91bmQuY3VycmVudCA9IHRydWU7XG4gICAgICAgIGxldCB2YWx1ZUNoYW5nZWQgPSBuZXdWYWx1ZSAhPT0gdmFsdWVSZWYuY3VycmVudDtcblxuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChuZXdWYWx1ZSkgJiYgIVV0aWxzLmlzTnVsbCh2YWx1ZVJlZi5jdXJyZW50KSkge1xuICAgICAgICAgICAgaWYgKHByb3BzLmNvbmZpZy5maWVsZFR5cGUgPT09ICdTRUxFQ1QnIHx8IHByb3BzLmNvbmZpZy5maWVsZFR5cGUgPT09ICdMT09LVVAnKSB7XG4gICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VkID0gbmV3VmFsdWUuaWQgIT09IHZhbHVlUmVmLmN1cnJlbnQuaWQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BzLmNvbmZpZy5maWVsZFR5cGUgPT09ICdEQVRFJyB8fCBwcm9wcy5jb25maWcuZmllbGRUeXBlID09PSAnVElNRScpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZWQgPSBuZXdWYWx1ZSAhPT0gdmFsdWVSZWYuY3VycmVudDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VkID0gSlNPTi5zdHJpbmdpZnkodmFsdWVSZWYuY3VycmVudCkgIT09IEpTT04uc3RyaW5naWZ5KG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcm9wcy5jb25maWcuZmllbGRUeXBlID09PSAnR1JJRCcgJiYgdmFsdWVPYmplY3RbdmFsdWVQcm9wZXJ0eV0pIHtcbiAgICAgICAgICAgIHZhbHVlT2JqZWN0W3ZhbHVlUHJvcGVydHldLnNwbGljZSgwLCB2YWx1ZU9iamVjdFt2YWx1ZVByb3BlcnR5XS5sZW5ndGgpO1xuXG4gICAgICAgICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1ZhbHVlRWxlbWVudCBvZiBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZU9iamVjdFt2YWx1ZVByb3BlcnR5XS5wdXNoKG5ld1ZhbHVlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgaWQgPSBwcm9wcy5jb25maWcuZGF0YUJpbmRpbmcgPyBwcm9wcy5jb25maWcuZGF0YUJpbmRpbmcgOiBwcm9wcy5jb25maWcuaWQ7XG4gICAgICAgICAgICBwcm9wcy5mb3JtKClcbiAgICAgICAgICAgICAgICAuaGFuZGxlQ2hhbmdlKCFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmRhdGFCaW5kaW5nKSA/IHByb3BzLmNvbmZpZy5kYXRhQmluZGluZyA6IGlkLCBuZXdWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWVDaGFuZ2VkKSB7XG4gICAgICAgICAgICBsZXQgaWQgPSBwcm9wcy5jb25maWcuZGF0YUJpbmRpbmcgPyBwcm9wcy5jb25maWcuZGF0YUJpbmRpbmcgOiBwcm9wcy5jb25maWcuaWQ7XG4gICAgICAgICAgICAvL2FwcGxpY2F0aW9uTWFuYWdlci5lbmFibGVGb3JtTWFya2Vycyh0cnVlKTtcbiAgICAgICAgICAgIGlmIChwcm9wcy5jb25maWcuZmllbGRUeXBlID09PSAnU0VMRUNUJykge1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RJdGVtQ2hhbmdlID0gcHJvcHMuZm9ybSgpXG4gICAgICAgICAgICAgICAgICAgIC5oYW5kbGVTZWxlY3RJdGVtQ2hhbmdlKGlkLCBzZWxlY3RPcHRpb25zLCBuZXdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgc2V0VmFsdWUoc2VsZWN0SXRlbUNoYW5nZSk7XG4gICAgICAgICAgICAgICAgdmFsdWVSZWYuY3VycmVudCA9IHNlbGVjdEl0ZW1DaGFuZ2U7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBzZWxlY3RPcHRpb24gb2Ygc2VsZWN0T3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0T3B0aW9uLmlkID09PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBzZWxlY3RPcHRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICAgICAgICAgICAgICAgIHZhbHVlUmVmLmN1cnJlbnQgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgICAgICBwcm9wcy5mb3JtKClcbiAgICAgICAgICAgICAgICAgICAgLmhhbmRsZUNoYW5nZSghVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5kYXRhQmluZGluZykgPyBwcm9wcy5jb25maWcuZGF0YUJpbmRpbmcgOiBpZCwgbmV3VmFsdWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIpKSB7XG4gICAgICAgICAgICAgICAgcHJvcHMudmFsdWVDaGFuZ2VIYW5kbGVyKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBuZXdWYWx1ZSk7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5WQUxVRV9DSEFOR0UsIGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBhcGkgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWxpZGF0ZTogKHZhbHVlcywgY3VycmVudFZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvVmFsaWRhdGlvbih2YWx1ZXMsIGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFyc2VWYWx1ZTogKHZhbHVlLCBpbmJvdW5kKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMudmFsdWVQYXJzZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy52YWx1ZVBhcnNlcih2YWx1ZSwgaW5ib3VuZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCB2YWxpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsaWQuY3VycmVudDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgaWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLmNvbmZpZy5pZDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgcm93cygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMucm93c0hhbmRsZXIgPyBwcm9wcy5yb3dzSGFuZGxlcigpIDogbnVsbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRWYWxpZGF0aW9uR3JvdXA6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIVV0aWxzLmlzTnVsbChjb25maWcudmFsaWRhdG9yKSA/IGNvbmZpZy52YWxpZGF0b3IuZ3JvdXAgOiBudWxsO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVmFsdWVDaGFuZ2UobnVsbCk7XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMuY2xlYXJIYW5kbGVyKSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5jbGVhckhhbmRsZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2Nyb2xsVG86ICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVmLmN1cnJlbnQuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYmVoYXZpb3I6IFwic21vb3RoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jazogXCJjZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHZhbHVlT2JqZWN0KSAmJiAhVXRpbHMuaXNOdWxsKHZhbHVlUHJvcGVydHkpICYmICFVdGlscy5pc051bGwodmFsdWVPYmplY3RbdmFsdWVQcm9wZXJ0eV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAhVXRpbHMuaXNOdWxsKHByb3BzLnZhbHVlUGFyc2VyKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy52YWx1ZVBhcnNlcih2YWx1ZU9iamVjdFt2YWx1ZVByb3BlcnR5XSwgZmFsc2UpIDogdmFsdWVPYmplY3RbdmFsdWVQcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZU9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVPYmplY3RbdmFsdWVQcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy52YWx1ZVBhcnNlciA/IHByb3BzLnZhbHVlUGFyc2VyKHZhbHVlLCBmYWxzZSkgOiB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgdmFsdWUodmFsKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVmFsdWVDaGFuZ2UodmFsKTtcblxuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLnZhbHVlQ2hhbmdlQ2FsbGJhY2spKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLnZhbHVlQ2hhbmdlQ2FsbGJhY2sodmFsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IGRpc2FibGVkKGRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgc2V0RGlzYWJsZWQoZGlzYWJsZWQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCB2aXNpYmxlKHZpc2libGUpIHtcbiAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKHZpc2libGUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhhbmRsZUxvYWRDb21wbGV0ZSgpIHtcbiAgICAgICAgICAgICAgICBsb2FkaW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZWZyZXNoKCkge1xuICAgICAgICAgICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICAgICAgc2V0VmlzaWJsZShVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcnNlZENvbmZpZy52aXNpYmxlLCBwYXJzZWRDb25maWcuaWQsIHRydWUpKTtcbiAgICAgICAgICAgICAgICBzZXREaXNhYmxlZChVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcnNlZENvbmZpZy5kaXNhYmxlZCwgcGFyc2VkQ29uZmlnLmlkKSk7XG4gICAgICAgICAgICAgICAgbGV0IHJlcXVpcmVkTmV3VmFsID0gIVV0aWxzLmlzTnVsbChwYXJzZWRDb25maWcudmFsaWRhdG9yKSA/XG4gICAgICAgICAgICAgICAgICAgICFVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcnNlZENvbmZpZy52YWxpZGF0b3IubnVsbGFibGUsIHBhcnNlZENvbmZpZy5pZCwgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgfHwgVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcudmFsaWRhdG9yLnJlcXVpcmVkLCBwYXJzZWRDb25maWcuaWQsIGZhbHNlKSA6IGZhbHNlO1xuICAgICAgICAgICAgICAgIHZhbGlkYXRlT25DaGFuZ2UuY3VycmVudCA9IHJlcXVpcmVkICE9PSBudWxsICYmIHJlcXVpcmVkICE9PSByZXF1aXJlZE5ld1ZhbCAmJiBsb2FkaW5nUmVmLmN1cnJlbnQgPT09IGZhbHNlO1xuICAgICAgICAgICAgICAgIHNldFJlcXVpcmVkKHJlcXVpcmVkTmV3VmFsKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgcmVxdWlyZWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmVkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCByZXF1aXJlZChpc1JlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgc2V0UmVxdWlyZWQoaXNSZXF1aXJlZCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IG1pbkRhdGUobWluRGF0ZSkge1xuICAgICAgICAgICAgICAgIHNldE1pbkRhdGUobWluRGF0ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IG1heERhdGUobWF4RGF0ZSkge1xuICAgICAgICAgICAgICAgIHNldE1heERhdGUobWF4RGF0ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IHNlbGVjdE9wdGlvbnMoc2VsZWN0T3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdE9wdGlvbnMoc2VsZWN0T3B0aW9ucyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXQoKSB7XG4gICAgICAgICAgICAgICAgc2V0UmVzZXRTd2l0Y2goIXJlc2V0U3dpdGNoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXRGaWVsZFJlcXVpcmVkKG5ld1ZhbCwgdmFsaWRhdGUgPSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgdmFsaWRhdGVPbkNoYW5nZS5jdXJyZW50ID0gdmFsaWRhdGU7XG4gICAgICAgICAgICAgICAgc2V0UmVxdWlyZWQobmV3VmFsKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRDaGlsZHJlbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmdldENoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9hZERhdGEoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmxvYWREYXRhSGFuZGxlcikge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5sb2FkRGF0YUhhbmRsZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIHJldHVybiBjb25maWcgP1xuICAgICAgICA8ZGl2IHJlZj17cmVmfSBjbGFzc05hbWU9XCJjb2wtKi0qXCIga2V5PXtjb25maWcuaWR9IHN0eWxlPXt7XG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdsZWZ0JyxcbiAgICAgICAgICAgIGRpc3BsYXk6ICF2aXNpYmxlIHx8IFV0aWxzLmdldENvbXBvbmVudEF0dHJpYnV0ZShjb25maWcsICdoaWRkZW4nLCBmYWxzZSkgPT09IHRydWUgPyAnbm9uZScgOiAnYmxvY2snXG4gICAgICAgIH19PlxuICAgICAgICA8c3Bhbj5cbiAgICAgICAge3Byb3BzLmNoaWxkcmVuKHtcbiAgICAgICAgICAgIG1pbkRhdGU6IG1pbkRhdGUsXG4gICAgICAgICAgICBtYXhEYXRlOiBtYXhEYXRlLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHJlcXVpcmVkLFxuICAgICAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgICAgICAgdmFsdWVPYmplY3Q6IHZhbHVlT2JqZWN0LFxuICAgICAgICAgICAgdmFsdWVQcm9wZXJ0eTogdmFsdWVQcm9wZXJ0eSxcbiAgICAgICAgICAgIGhhbmRsZVZhbHVlQ2hhbmdlOiBoYW5kbGVWYWx1ZUNoYW5nZSxcbiAgICAgICAgICAgIHNldFZhbHVlOiBzZXRWYWx1ZSxcbiAgICAgICAgICAgIHNldFNlbGVjdE9wdGlvbnM6IHNldFNlbGVjdE9wdGlvbnMsXG4gICAgICAgICAgICBzZWxlY3RPcHRpb25zOiBzZWxlY3RPcHRpb25zLFxuICAgICAgICAgICAgc2V0UmVzZXRTd2l0Y2g6IHNldFJlc2V0U3dpdGNoLFxuICAgICAgICAgICAgcmVzZXRTd2l0Y2g6IHJlc2V0U3dpdGNoLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgaGFzRXJyb3I6IGhhc0Vycm9yLFxuICAgICAgICAgICAgZG9WYWxpZGF0aW9uOiBkb1ZhbGlkYXRpb24sXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2U6IGVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgIGxvYWRpbmdSZWY6IGxvYWRpbmdSZWZcbiAgICAgICAgfSl9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDogbnVsbDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFDLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNELElBQUFDLE1BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFdBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLG1CQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxNQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxVQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxVQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFBd0MsU0FBQUQsdUJBQUFRLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFFakMsTUFBTUcsU0FBUyxHQUFJQyxLQUFLLElBQUs7RUFD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
@@ -6,65 +6,148 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _TextField = _interopRequireDefault(require("@mui/material/TextField"));
9
- var _InputAdornment = _interopRequireDefault(require("@mui/material/InputAdornment"));
10
9
  var _BaseField = require("./BaseField");
11
10
  var _Utils = _interopRequireDefault(require("../../Utils"));
12
- var _reactRedux = require("react-redux");
13
11
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
12
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
15
13
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
16
14
  const CurrencyFieldWrapper = /*#__PURE__*/_react.default.memo(props => {
17
- var _props$config$attribu, _props$config$attribu2, _props$config$attribu3, _props$config$attribu4, _props$config$attribu5, _props$config$attribu6;
15
+ var _props$config$attribu, _props$config$attribu2, _props$config$attribu3, _props$config$attribu4, _props$config$attribu5;
18
16
  const base = props.base;
19
17
  const width = !_Utils.default.isNull((_props$config$attribu = props.config.attributes) === null || _props$config$attribu === void 0 || (_props$config$attribu = _props$config$attribu.style) === null || _props$config$attribu === void 0 ? void 0 : _props$config$attribu.width) ? props.config.attributes.style.width : "100%";
20
18
  const maxWidth = !_Utils.default.isNull((_props$config$attribu2 = props.config.attributes) === null || _props$config$attribu2 === void 0 || (_props$config$attribu2 = _props$config$attribu2.style) === null || _props$config$attribu2 === void 0 ? void 0 : _props$config$attribu2.maxWidth) ? props.config.attributes.style.maxWidth : null;
21
19
  const minWidth = !_Utils.default.isNull((_props$config$attribu3 = props.config.attributes) === null || _props$config$attribu3 === void 0 || (_props$config$attribu3 = _props$config$attribu3.style) === null || _props$config$attribu3 === void 0 ? void 0 : _props$config$attribu3.minWidth) ? props.config.attributes.style.minWidth : "232px";
22
20
  const height = !_Utils.default.isNull((_props$config$attribu4 = props.config.attributes) === null || _props$config$attribu4 === void 0 || (_props$config$attribu4 = _props$config$attribu4.style) === null || _props$config$attribu4 === void 0 ? void 0 : _props$config$attribu4.height) ? props.config.attributes.style.height : null;
23
- const currency = !_Utils.default.isNull((_props$config$attribu5 = props.config.attributes) === null || _props$config$attribu5 === void 0 ? void 0 : _props$config$attribu5.currency) ? props.config.attributes.currency : "ZAR";
24
- const currencySymbol = !_Utils.default.isNull((_props$config$attribu6 = props.config.attributes) === null || _props$config$attribu6 === void 0 ? void 0 : _props$config$attribu6.currencySymbol) ? props.config.attributes.currencySymbol : "R";
21
+ const currencySymbol = !_Utils.default.isNull((_props$config$attribu5 = props.config.attributes) === null || _props$config$attribu5 === void 0 ? void 0 : _props$config$attribu5.currencySymbol) ? props.config.attributes.currencySymbol : "R";
25
22
  const textRef = (0, _react.useRef)(null);
23
+ const caretRef = (0, _react.useRef)(null);
26
24
  const [displayValue, setDisplayValue] = (0, _react.useState)("");
27
- const formatter = new Intl.NumberFormat("en-ZA", {
28
- style: "currency",
29
- currency: currency,
30
- minimumFractionDigits: 2,
31
- maximumFractionDigits: 2
32
- });
33
- function formatNumberWithCommas(input) {
34
- return input.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
35
- }
36
- (0, _react.useEffect)(() => {
37
- if (base.value === null || base.value === undefined) {
38
- setDisplayValue("");
25
+ const [focused, setFocused] = (0, _react.useState)(false);
26
+
27
+ // Sanitised "significant" characters of a string: digits and a single dot.
28
+ const significant = s => s.replace(/[^\d.]/g, "");
29
+
30
+ // Group + symbol a sanitised numeric string while preserving a trailing dot
31
+ // and partial decimals so it can mask live as the user types. e.g.
32
+ // "2000000" -> "R2,000,000"
33
+ // "2000000." -> "R2,000,000."
34
+ // "2000000.7" -> "R2,000,000.7"
35
+ const maskCurrency = (raw, negative) => {
36
+ if (raw === "") {
37
+ return "";
38
+ }
39
+ const hasDot = raw.indexOf(".") !== -1;
40
+ let intPart = hasDot ? raw.slice(0, raw.indexOf(".")) : raw;
41
+ const decPart = hasDot ? raw.slice(raw.indexOf(".") + 1) : null;
42
+ let groupedInt;
43
+ if (intPart === "") {
44
+ groupedInt = "0"; // ".5" reads as "0.5"
39
45
  } else {
40
- setDisplayValue(currencySymbol + formatNumberWithCommas(base.value));
46
+ groupedInt = intPart.replace(/^0+(?=\d)/, ""); // drop leading zeros
47
+ groupedInt = groupedInt.replace(/\B(?=(\d{3})+(?!\d))/g, ","); // thousands grouping
48
+ }
49
+ let result = currencySymbol + (negative ? "-" : "") + groupedInt;
50
+ if (hasDot) {
51
+ result += "." + decPart;
52
+ }
53
+ return result;
54
+ };
55
+
56
+ // Canonical, two-decimal display used on blur / external value changes:
57
+ // "R2,000,000.75".
58
+ const formatCurrency = value => {
59
+ const num = Number(value);
60
+ if (value === null || value === undefined || value === "" || isNaN(num)) {
61
+ return "";
62
+ }
63
+ return currencySymbol + num.toLocaleString("en-US", {
64
+ minimumFractionDigits: 2,
65
+ maximumFractionDigits: 2
66
+ });
67
+ };
68
+
69
+ // Keep the display in sync with the model only when not actively editing,
70
+ // so a value change never clobbers what the user is typing.
71
+ (0, _react.useEffect)(() => {
72
+ if (!focused) {
73
+ setDisplayValue(formatCurrency(base.value));
74
+ }
75
+ }, [base.value, focused]);
76
+
77
+ // Restore the caret after a live-mask re-render, counting significant chars
78
+ // so inserted/removed commas don't make the cursor jump.
79
+ (0, _react.useLayoutEffect)(() => {
80
+ if (focused && caretRef.current != null && textRef.current) {
81
+ const pos = caretRef.current;
82
+ try {
83
+ textRef.current.setSelectionRange(pos, pos);
84
+ } catch (e) {
85
+ // input not yet a text type / not focusable — ignore
86
+ }
87
+ caretRef.current = null;
41
88
  }
42
- }, [base.value]);
89
+ });
43
90
  const handleInputChange = event => {
44
- const raw = event.target.value.replace(/[^\d.-]/g, "");
45
- const parts = raw.split('.');
46
- if (parts.length === 2 && parts[1].length > 2 || _Utils.default.isNull(raw.match("^\\d+(\\.\\d{0,2})?$"))) {
47
- event.preventDefault();
48
- } else {
49
- const numeric = parseFloat(raw);
50
- if (!isNaN(numeric)) {
51
- base.handleValueChange(numeric);
52
- } else {
53
- base.handleValueChange(0);
91
+ const input = event.target;
92
+ const newRawValue = input.value;
93
+ const caret = input.selectionStart != null ? input.selectionStart : newRawValue.length;
94
+ const negative = newRawValue.trimStart().startsWith("-");
95
+
96
+ // Digits/dot to the LEFT of the caret — drives where the caret lands
97
+ // again after re-masking.
98
+ let leftSignificant = significant(newRawValue.slice(0, caret)).length;
99
+
100
+ // Sanitise: digits + a single dot, at most two decimals.
101
+ let raw = significant(newRawValue);
102
+ const firstDot = raw.indexOf(".");
103
+ if (firstDot !== -1) {
104
+ raw = raw.slice(0, firstDot + 1) + raw.slice(firstDot + 1).replace(/\./g, "");
105
+ const parts = raw.split(".");
106
+ raw = parts[0] + "." + (parts[1] || "").slice(0, 2);
107
+ }
108
+
109
+ // Backspacing over a grouping comma removes only the separator, leaving
110
+ // the significant chars unchanged. Treat that as "delete the digit
111
+ // before the comma" so backspace feels natural.
112
+ const oldRaw = significant(displayValue);
113
+ if (raw === oldRaw && newRawValue.length < displayValue.length && leftSignificant > 0) {
114
+ raw = raw.slice(0, leftSignificant - 1) + raw.slice(leftSignificant);
115
+ leftSignificant -= 1;
116
+ }
117
+ const masked = maskCurrency(raw, negative);
118
+ setDisplayValue(masked);
119
+
120
+ // Where to put the caret: advance through the masked string until we've
121
+ // passed the same number of significant chars that were left of it.
122
+ let pos = 0;
123
+ let seen = 0;
124
+ while (pos < masked.length && seen < leftSignificant) {
125
+ if (/[\d.]/.test(masked[pos])) {
126
+ seen += 1;
54
127
  }
55
- setDisplayValue(event.target.value);
128
+ pos += 1;
129
+ }
130
+ caretRef.current = pos;
131
+
132
+ // Push the numeric value to the model.
133
+ if (raw === "" || raw === ".") {
134
+ base.handleValueChange(null);
135
+ return;
56
136
  }
137
+ const numeric = parseFloat((negative ? "-" : "") + raw);
138
+ base.handleValueChange(isNaN(numeric) ? null : numeric);
139
+ };
140
+ const handleFocus = () => {
141
+ setFocused(true);
57
142
  };
58
143
  const handleBlur = () => {
59
- if (base.value) {
60
- setDisplayValue(formatter.format(base.value));
61
- } else {
62
- setDisplayValue("");
63
- }
144
+ setFocused(false);
145
+ caretRef.current = null;
146
+ setDisplayValue(formatCurrency(base.value));
64
147
  };
65
148
  return /*#__PURE__*/_react.default.createElement(_TextField.default, {
66
149
  id: props.id,
67
- type: props.type,
150
+ type: "text",
68
151
  required: base.required,
69
152
  inputRef: textRef,
70
153
  label: !_Utils.default.isNull(props.config.attributes) ? props.config.attributes['label'] : null,
@@ -84,6 +167,7 @@ const CurrencyFieldWrapper = /*#__PURE__*/_react.default.memo(props => {
84
167
  variant: "outlined",
85
168
  value: displayValue,
86
169
  onChange: handleInputChange,
170
+ onFocus: handleFocus,
87
171
  onBlur: handleBlur
88
172
  });
89
173
  });
@@ -106,4 +190,4 @@ const CurrencyField = /*#__PURE__*/_react.default.memo(props => {
106
190
  }, props)));
107
191
  });
108
192
  var _default = exports.default = CurrencyField;
109
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVGV4dEZpZWxkIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9JbnB1dEFkb3JubWVudCIsIl9CYXNlRmllbGQiLCJfVXRpbHMiLCJfcmVhY3RSZWR1eCIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJoYXMiLCJnZXQiLCJzZXQiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9leHRlbmRzIiwiYXNzaWduIiwiYmluZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFwcGx5IiwiQ3VycmVuY3lGaWVsZFdyYXBwZXIiLCJSZWFjdCIsIm1lbW8iLCJwcm9wcyIsIl9wcm9wcyRjb25maWckYXR0cmlidSIsIl9wcm9wcyRjb25maWckYXR0cmlidTIiLCJfcHJvcHMkY29uZmlnJGF0dHJpYnUzIiwiX3Byb3BzJGNvbmZpZyRhdHRyaWJ1NCIsIl9wcm9wcyRjb25maWckYXR0cmlidTUiLCJfcHJvcHMkY29uZmlnJGF0dHJpYnU2IiwiYmFzZSIsIndpZHRoIiwiVXRpbHMiLCJpc051bGwiLCJjb25maWciLCJhdHRyaWJ1dGVzIiwic3R5bGUiLCJtYXhXaWR0aCIsIm1pbldpZHRoIiwiaGVpZ2h0IiwiY3VycmVuY3kiLCJjdXJyZW5jeVN5bWJvbCIsInRleHRSZWYiLCJ1c2VSZWYiLCJkaXNwbGF5VmFsdWUiLCJzZXREaXNwbGF5VmFsdWUiLCJ1c2VTdGF0ZSIsImZvcm1hdHRlciIsIkludGwiLCJOdW1iZXJGb3JtYXQiLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiLCJmb3JtYXROdW1iZXJXaXRoQ29tbWFzIiwiaW5wdXQiLCJ0b1N0cmluZyIsInJlcGxhY2UiLCJ1c2VFZmZlY3QiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsImhhbmRsZUlucHV0Q2hhbmdlIiwiZXZlbnQiLCJyYXciLCJ0YXJnZXQiLCJwYXJ0cyIsInNwbGl0IiwibWF0Y2giLCJwcmV2ZW50RGVmYXVsdCIsIm51bWVyaWMiLCJwYXJzZUZsb2F0IiwiaXNOYU4iLCJoYW5kbGVWYWx1ZUNoYW5nZSIsImhhbmRsZUJsdXIiLCJmb3JtYXQiLCJjcmVhdGVFbGVtZW50IiwiaWQiLCJ0eXBlIiwicmVxdWlyZWQiLCJpbnB1dFJlZiIsImxhYmVsIiwib25LZXlVcCIsImtleUhhbmRsZXIiLCJlcnJvciIsImhhc0Vycm9yIiwiaGVscGVyVGV4dCIsImVycm9yTWVzc2FnZSIsIm1hcmdpbiIsImRpc2FibGVkIiwic2l6ZSIsImNvbG9yIiwidmFyaWFudCIsIm9uQ2hhbmdlIiwib25CbHVyIiwiQ3VycmVuY3lGaWVsZCIsIkJhc2VGaWVsZCIsImhhbmRsZSIsInZhbHVlUGFyc2VyIiwiaW5ib3VuZCIsIm51bVZhbHVlIiwiTWF0aCIsInJvdW5kIiwiTnVtYmVyIiwiRVBTSUxPTiIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL0N1cnJlbmN5RmllbGQuanN4Il0sInNvdXJjZXNDb250ZW50IjpbIu+7v2ltcG9ydCBSZWFjdCwge3VzZVJlZiwgdXNlU3RhdGUsIHVzZUVmZmVjdH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFRleHRGaWVsZENvbXBvbmVudCBmcm9tICdAbXVpL21hdGVyaWFsL1RleHRGaWVsZCc7XG5pbXBvcnQgSW5wdXRBZG9ybm1lbnQgZnJvbSAnQG11aS9tYXRlcmlhbC9JbnB1dEFkb3JubWVudCc7XG5pbXBvcnQge0Jhc2VGaWVsZH0gZnJvbSBcIi4vQmFzZUZpZWxkXCI7XG5pbXBvcnQgVXRpbHMgZnJvbSBcIi4uLy4uL1V0aWxzXCI7XG5pbXBvcnQgeyB1c2VTZWxlY3RvciB9IGZyb20gJ3JlYWN0LXJlZHV4JztcblxuY29uc3QgQ3VycmVuY3lGaWVsZFdyYXBwZXIgPSBSZWFjdC5tZW1vKChwcm9wcykgPT4ge1xuICAgIGNvbnN0IGJhc2UgPSBwcm9wcy5iYXNlO1xuICAgIGNvbnN0IHdpZHRoID0gIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuYXR0cmlidXRlcz8uc3R5bGU/LndpZHRoKSA/IHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzLnN0eWxlLndpZHRoIDogXCIxMDAlXCI7XG4gICAgY29uc3QgbWF4V2lkdGggPSAhVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzPy5zdHlsZT8ubWF4V2lkdGgpID8gcHJvcHMuY29uZmlnLmF0dHJpYnV0ZXMuc3R5bGUubWF4V2lkdGggOiBudWxsO1xuICAgIGNvbnN0IG1pbldpZHRoID0gIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuYXR0cmlidXRlcz8uc3R5bGU/Lm1pbldpZHRoKSA/IHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzLnN0eWxlLm1pbldpZHRoIDogXCIyMzJweFwiO1xuICAgIGNvbnN0IGhlaWdodCA9ICFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LnN0eWxlPy5oZWlnaHQpID8gcHJvcHMuY29uZmlnLmF0dHJpYnV0ZXMuc3R5bGUuaGVpZ2h0IDogbnVsbDtcbiAgICBjb25zdCBjdXJyZW5jeSA9ICFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LmN1cnJlbmN5KSA/IHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzLmN1cnJlbmN5IDogXCJaQVJcIjtcbiAgICBjb25zdCBjdXJyZW5jeVN5bWJvbCA9ICFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LmN1cnJlbmN5U3ltYm9sKSA/IHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzLmN1cnJlbmN5U3ltYm9sIDogXCJSXCI7XG4gICAgY29uc3QgdGV4dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBbZGlzcGxheVZhbHVlLCBzZXREaXNwbGF5VmFsdWVdID0gdXNlU3RhdGUoXCJcIik7XG5cbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoXCJlbi1aQVwiLCB7XG4gICAgICAgIHN0eWxlOiBcImN1cnJlbmN5XCIsXG4gICAgICAgIGN1cnJlbmN5OiBjdXJyZW5jeSxcbiAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBmb3JtYXROdW1iZXJXaXRoQ29tbWFzKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dC50b1N0cmluZygpLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKTtcbiAgICB9XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoYmFzZS52YWx1ZSA9PT0gbnVsbCB8fCBiYXNlLnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHNldERpc3BsYXlWYWx1ZShcIlwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldERpc3BsYXlWYWx1ZShjdXJyZW5jeVN5bWJvbCArIGZvcm1hdE51bWJlcldpdGhDb21tYXMoYmFzZS52YWx1ZSkpO1xuICAgICAgICB9XG4gICAgfSwgW2Jhc2UudmFsdWVdKTtcblxuICAgIGNvbnN0IGhhbmRsZUlucHV0Q2hhbmdlID0gKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHJhdyA9IGV2ZW50LnRhcmdldC52YWx1ZS5yZXBsYWNlKC9bXlxcZC4tXS9nLCBcIlwiKTtcblxuICAgICAgICBjb25zdCBwYXJ0cyA9IHJhdy5zcGxpdCgnLicpO1xuICAgICAgICBpZiAoKHBhcnRzLmxlbmd0aCA9PT0gMiAmJiBwYXJ0c1sxXS5sZW5ndGggPiAyKSB8fCBVdGlscy5pc051bGwocmF3Lm1hdGNoKFwiXlxcXFxkKyhcXFxcLlxcXFxkezAsMn0pPyRcIikpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbnVtZXJpYyA9IHBhcnNlRmxvYXQocmF3KTtcbiAgICAgICAgICAgIGlmICghaXNOYU4obnVtZXJpYykpIHtcbiAgICAgICAgICAgICAgICBiYXNlLmhhbmRsZVZhbHVlQ2hhbmdlKG51bWVyaWMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBiYXNlLmhhbmRsZVZhbHVlQ2hhbmdlKDApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZXREaXNwbGF5VmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVCbHVyID0gKCkgPT4ge1xuICAgICAgICBpZiAoYmFzZS52YWx1ZSkge1xuICAgICAgICAgICAgc2V0RGlzcGxheVZhbHVlKGZvcm1hdHRlci5mb3JtYXQoYmFzZS52YWx1ZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2V0RGlzcGxheVZhbHVlKFwiXCIpO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPFRleHRGaWVsZENvbXBvbmVudFxuICAgICAgICAgICAgaWQ9e3Byb3BzLmlkfVxuICAgICAgICAgICAgdHlwZT17cHJvcHMudHlwZX1cbiAgICAgICAgICAgIHJlcXVpcmVkPXtiYXNlLnJlcXVpcmVkfVxuICAgICAgICAgICAgaW5wdXRSZWY9e3RleHRSZWZ9XG4gICAgICAgICAgICBsYWJlbD17IVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuYXR0cmlidXRlcykgPyBwcm9wcy5jb25maWcuYXR0cmlidXRlc1snbGFiZWwnXSA6IG51bGx9XG4gICAgICAgICAgICBvbktleVVwPXtwcm9wcy5rZXlIYW5kbGVyfVxuICAgICAgICAgICAgZXJyb3I9e2Jhc2UuaGFzRXJyb3J9XG4gICAgICAgICAgICBoZWxwZXJUZXh0PXtiYXNlLmVycm9yTWVzc2FnZX1cbiAgICAgICAgICAgIG1hcmdpbj1cImRlbnNlXCJcbiAgICAgICAgICAgIGRpc2FibGVkPXtiYXNlLmRpc2FibGVkfVxuICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgbWluV2lkdGg6IG1pbldpZHRoLFxuICAgICAgICAgICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgICAgICAgICBtYXhXaWR0aDogbWF4V2lkdGgsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdzZWNvbmRhcnknXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgIHZhbHVlPXtkaXNwbGF5VmFsdWV9XG4gICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlSW5wdXRDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgIC8+XG4gICAgKTtcbn0pO1xuXG5jb25zdCBDdXJyZW5jeUZpZWxkID0gUmVhY3QubWVtbygocHJvcHMpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgICA8QmFzZUZpZWxkXG4gICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgICAgICBoYW5kbGU9e3Byb3BzLmhhbmRsZX1cbiAgICAgICAgICAgIHZhbHVlUGFyc2VyPXsodmFsdWUsIGluYm91bmQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGluYm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbnVtVmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlzTmFOKG51bVZhbHVlKSA/IG51bGwgOiBNYXRoLnJvdW5kKChudW1WYWx1ZSArIE51bWJlci5FUFNJTE9OKSAqIDEwMCkgLyAxMDA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICAgIHtiYXNlID0+XG4gICAgICAgICAgICAgICAgPEN1cnJlbmN5RmllbGRXcmFwcGVyXG4gICAgICAgICAgICAgICAgICAgIGJhc2U9e2Jhc2V9XG4gICAgICAgICAgICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9DdXJyZW5jeUZpZWxkV3JhcHBlcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9CYXNlRmllbGQ+XG4gICAgKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBDdXJyZW5jeUZpZWxkO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQyxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDRCxJQUFBQyxVQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxlQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxVQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxNQUFBLEdBQUFILHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTSxXQUFBLEdBQUFOLE9BQUE7QUFBMEMsU0FBQUUsdUJBQUFLLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFBQSxTQUFBUix3QkFBQVEsQ0FBQSxFQUFBRyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQVosdUJBQUEsWUFBQUEsQ0FBQVEsQ0FBQSxFQUFBRyxDQUFBLFNBQUFBLENBQUEsSUFBQUgsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsU0FBQUQsQ0FBQSxNQUFBTyxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLFFBQUFSLE9BQUEsRUFBQUYsQ0FBQSxpQkFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FBQSxTQUFBUyxDQUFBLE1BQUFGLENBQUEsR0FBQUosQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsUUFBQUUsQ0FBQSxDQUFBSSxHQUFBLENBQUFYLENBQUEsVUFBQU8sQ0FBQSxDQUFBSyxHQUFBLENBQUFaLENBQUEsR0FBQU8sQ0FBQSxDQUFBTSxHQUFBLENBQUFiLENBQUEsRUFBQVMsQ0FBQSxnQkFBQU4sQ0FBQSxJQUFBSCxDQUFBLGdCQUFBRyxDQUFBLE9BQUFXLGNBQUEsQ0FBQUMsSUFBQSxDQUFBZixDQUFBLEVBQUFHLENBQUEsT0FBQUssQ0FBQSxJQUFBRCxDQUFBLEdBQUFTLE1BQUEsQ0FBQUMsY0FBQSxLQUFBRCxNQUFBLENBQUFFLHdCQUFBLENBQUFsQixDQUFBLEVBQUFHLENBQUEsT0FBQUssQ0FBQSxDQUFBSSxHQUFBLElBQUFKLENBQUEsQ0FBQUssR0FBQSxJQUFBTixDQUFBLENBQUFFLENBQUEsRUFBQU4sQ0FBQSxFQUFBSyxDQUFBLElBQUFDLENBQUEsQ0FBQU4sQ0FBQSxJQUFBSCxDQUFBLENBQUFHLENBQUEsV0FBQU0sQ0FBQSxLQUFBVCxDQUFBLEVBQUFHLENBQUE7QUFBQSxTQUFBZ0IsU0FBQSxXQUFBQSxRQUFBLEdBQUFILE1BQUEsQ0FBQUksTUFBQSxHQUFBSixNQUFBLENBQUFJLE1BQUEsQ0FBQUMsSUFBQSxlQUFBZixDQUFBLGFBQUFOLENBQUEsTUFBQUEsQ0FBQSxHQUFBc0IsU0FBQSxDQUFBQyxNQUFBLEVBQUF2QixDQUFBLFVBQUFHLENBQUEsR0FBQW1CLFNBQUEsQ0FBQXRCLENBQUEsWUFBQUssQ0FBQSxJQUFBRixDQUFBLE9BQUFXLGNBQUEsQ0FBQUMsSUFBQSxDQUFBWixDQUFBLEVBQUFFLENBQUEsTUFBQUMsQ0FBQSxDQUFBRCxDQUFBLElBQUFGLENBQUEsQ0FBQUUsQ0FBQSxhQUFBQyxDQUFBLEtBQUFhLFFBQUEsQ0FBQUssS0FBQSxPQUFBRixTQUFBO0FBRTFDLE1BQU1HLG9CQUFvQixnQkFBR0MsY0FBSyxDQUFDQyxJQUFJLENBQUVDLEtBQUssSUFBSztFQUFBLElBQUFDLHFCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBO0VBQy9DLE1BQU1DLElBQUksR0FBR1AsS0FBSyxDQUFDTyxJQUFJO0VBQ3ZCLE1BQU1DLEtBQUssR0FBRyxDQUFDQyxjQUFLLENBQUNDLE1BQU0sRUFBQVQscUJBQUEsR0FBQ0QsS0FBSyxDQUFDVyxNQUFNLENBQUNDLFVBQVUsY0FBQVgscUJBQUEsZ0JBQUFBLHFCQUFBLEdBQXZCQSxxQkFBQSxDQUF5QlksS0FBSyxjQUFBWixxQkFBQSx1QkFBOUJBLHFCQUFBLENBQWdDTyxLQUFLLENBQUMsR0FBR1IsS0FBSyxDQUFDVyxNQUFNLENBQUNDLFVBQVUsQ0FBQ0MsS0FBSyxDQUFDTCxLQUFLLEdBQUcsTUFBTTtFQUNqSCxNQUFNTSxRQUFRLEdBQUcsQ0FBQ0wsY0FBSyxDQUFDQyxNQUFNLEVBQUFSLHNCQUFBLEdBQUNGLEtBQUssQ0FBQ1csTUFBTSxDQUFDQyxVQUFVLGNBQUFWLHNCQUFBLGdCQUFBQSxzQkFBQSxHQUF2QkEsc0JBQUEsQ0FBeUJXLEtBQUssY0FBQVgsc0JBQUEsdUJBQTlCQSxzQkFBQSxDQUFnQ1ksUUFBUSxDQUFDLEdBQUdkLEtBQUssQ0FBQ1csTUFBTSxDQUFDQyxVQUFVLENBQUNDLEtBQUssQ0FBQ0MsUUFBUSxHQUFHLElBQUk7RUFDeEgsTUFBTUMsUUFBUSxHQUFHLENBQUNOLGNBQUssQ0FBQ0MsTUFBTSxFQUFBUCxzQkFBQSxHQUFDSCxLQUFLLENBQUNXLE1BQU0sQ0FBQ0MsVUFBVSxjQUFBVCxzQkFBQSxnQkFBQUEsc0JBQUEsR0FBdkJBLHNCQUFBLENBQXlCVSxLQUFLLGNBQUFWLHNCQUFBLHVCQUE5QkEsc0JBQUEsQ0FBZ0NZLFFBQVEsQ0FBQyxHQUFHZixLQUFLLENBQUNXLE1BQU0sQ0FBQ0MsVUFBVSxDQUFDQyxLQUFLLENBQUNFLFFBQVEsR0FBRyxPQUFPO0VBQzNILE1BQU1DLE1BQU0sR0FBRyxDQUFDUCxjQUFLLENBQUNDLE1BQU0sRUFBQU4sc0JBQUEsR0FBQ0osS0FBSyxDQUFDVyxNQUFNLENBQUNDLFVBQVUsY0FBQVIsc0JBQUEsZ0JBQUFBLHNCQUFBLEdBQXZCQSxzQkFBQSxDQUF5QlMsS0FBSyxjQUFBVCxzQkFBQSx1QkFBOUJBLHNCQUFBLENBQWdDWSxNQUFNLENBQUMsR0FBR2hCLEtBQUssQ0FBQ1csTUFBTSxDQUFDQyxVQUFVLENBQUNDLEtBQUssQ0FBQ0csTUFBTSxHQUFHLElBQUk7RUFDbEgsTUFBTUMsUUFBUSxHQUFHLENBQUNSLGNBQUssQ0FBQ0MsTUFBTSxFQUFBTCxzQkFBQSxHQUFDTCxLQUFLLENBQUNXLE1BQU0sQ0FBQ0MsVUFBVSxjQUFBUCxzQkFBQSx1QkFBdkJBLHNCQUFBLENBQXlCWSxRQUFRLENBQUMsR0FBR2pCLEtBQUssQ0FBQ1csTUFBTSxDQUFDQyxVQUFVLENBQUNLLFFBQVEsR0FBRyxLQUFLO0VBQzVHLE1BQU1DLGNBQWMsR0FBRyxDQUFDVCxjQUFLLENBQUNDLE1BQU0sRUFBQUosc0JBQUEsR0FBQ04sS0FBSyxDQUFDVyxNQUFNLENBQUNDLFVBQVUsY0FBQU4sc0JBQUEsdUJBQXZCQSxzQkFBQSxDQUF5QlksY0FBYyxDQUFDLEdBQUdsQixLQUFLLENBQUNXLE1BQU0sQ0FBQ0MsVUFBVSxDQUFDTSxjQUFjLEdBQUcsR0FBRztFQUM1SCxNQUFNQyxPQUFPLEdBQUcsSUFBQUMsYUFBTSxFQUFDLElBQUksQ0FBQztFQUM1QixNQUFNLENBQUNDLFlBQVksRUFBRUMsZUFBZSxDQUFDLEdBQUcsSUFBQUMsZUFBUSxFQUFDLEVBQUUsQ0FBQztFQUVwRCxNQUFNQyxTQUFTLEdBQUcsSUFBSUMsSUFBSSxDQUFDQyxZQUFZLENBQUMsT0FBTyxFQUFFO0lBQzdDYixLQUFLLEVBQUUsVUFBVTtJQUNqQkksUUFBUSxFQUFFQSxRQUFRO0lBQ2xCVSxxQkFBcUIsRUFBRSxDQUFDO0lBQ3hCQyxxQkFBcUIsRUFBRTtFQUMzQixDQUFDLENBQUM7RUFFRixTQUFTQyxzQkFBc0JBLENBQUNDLEtBQUssRUFBRTtJQUNuQyxPQUFPQSxLQUFLLENBQUNDLFFBQVEsQ0FBQyxDQUFDLENBQUNDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLENBQUM7RUFDakU7RUFFQSxJQUFBQyxnQkFBUyxFQUFDLE1BQU07SUFDWixJQUFJMUIsSUFBSSxDQUFDMkIsS0FBSyxLQUFLLElBQUksSUFBSTNCLElBQUksQ0FBQzJCLEtBQUssS0FBS0MsU0FBUyxFQUFFO01BQ2pEYixlQUFlLENBQUMsRUFBRSxDQUFDO0lBQ3ZCLENBQUMsTUFBTTtNQUNIQSxlQUFlLENBQUNKLGNBQWMsR0FBR1csc0JBQXNCLENBQUN0QixJQUFJLENBQUMyQixLQUFLLENBQUMsQ0FBQztJQUN4RTtFQUNKLENBQUMsRUFBRSxDQUFDM0IsSUFBSSxDQUFDMkIsS0FBSyxDQUFDLENBQUM7RUFFaEIsTUFBTUUsaUJBQWlCLEdBQUlDLEtBQUssSUFBSztJQUNqQyxNQUFNQyxHQUFHLEdBQUdELEtBQUssQ0FBQ0UsTUFBTSxDQUFDTCxLQUFLLENBQUNGLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO0lBRXRELE1BQU1RLEtBQUssR0FBR0YsR0FBRyxDQUFDRyxLQUFLLENBQUMsR0FBRyxDQUFDO0lBQzVCLElBQUtELEtBQUssQ0FBQzdDLE1BQU0sS0FBSyxDQUFDLElBQUk2QyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM3QyxNQUFNLEdBQUcsQ0FBQyxJQUFLYyxjQUFLLENBQUNDLE1BQU0sQ0FBQzRCLEdBQUcsQ0FBQ0ksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUMsRUFBRTtNQUNoR0wsS0FBSyxDQUFDTSxjQUFjLENBQUMsQ0FBQztJQUMxQixDQUFDLE1BQU07TUFDSCxNQUFNQyxPQUFPLEdBQUdDLFVBQVUsQ0FBQ1AsR0FBRyxDQUFDO01BQy9CLElBQUksQ0FBQ1EsS0FBSyxDQUFDRixPQUFPLENBQUMsRUFBRTtRQUNqQnJDLElBQUksQ0FBQ3dDLGlCQUFpQixDQUFDSCxPQUFPLENBQUM7TUFDbkMsQ0FBQyxNQUFNO1FBQ0hyQyxJQUFJLENBQUN3QyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7TUFDN0I7TUFFQXpCLGVBQWUsQ0FBQ2UsS0FBSyxDQUFDRSxNQUFNLENBQUNMLEtBQUssQ0FBQztJQUN2QztFQUNKLENBQUM7RUFFRCxNQUFNYyxVQUFVLEdBQUdBLENBQUEsS0FBTTtJQUNyQixJQUFJekMsSUFBSSxDQUFDMkIsS0FBSyxFQUFFO01BQ1paLGVBQWUsQ0FBQ0UsU0FBUyxDQUFDeUIsTUFBTSxDQUFDMUMsSUFBSSxDQUFDMkIsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQyxNQUFNO01BQ0haLGVBQWUsQ0FBQyxFQUFFLENBQUM7SUFDdkI7RUFFSixDQUFDO0VBRUQsb0JBQ0kzRCxNQUFBLENBQUFXLE9BQUEsQ0FBQTRFLGFBQUEsQ0FBQ3BGLFVBQUEsQ0FBQVEsT0FBa0I7SUFDZjZFLEVBQUUsRUFBRW5ELEtBQUssQ0FBQ21ELEVBQUc7SUFDYkMsSUFBSSxFQUFFcEQsS0FBSyxDQUFDb0QsSUFBSztJQUNqQkMsUUFBUSxFQUFFOUMsSUFBSSxDQUFDOEMsUUFBUztJQUN4QkMsUUFBUSxFQUFFbkMsT0FBUTtJQUNsQm9DLEtBQUssRUFBRSxDQUFDOUMsY0FBSyxDQUFDQyxNQUFNLENBQUNWLEtBQUssQ0FBQ1csTUFBTSxDQUFDQyxVQUFVLENBQUMsR0FBR1osS0FBSyxDQUFDVyxNQUFNLENBQUNDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFLO0lBQ3hGNEMsT0FBTyxFQUFFeEQsS0FBSyxDQUFDeUQsVUFBVztJQUMxQkMsS0FBSyxFQUFFbkQsSUFBSSxDQUFDb0QsUUFBUztJQUNyQkMsVUFBVSxFQUFFckQsSUFBSSxDQUFDc0QsWUFBYTtJQUM5QkMsTUFBTSxFQUFDLE9BQU87SUFDZEMsUUFBUSxFQUFFeEQsSUFBSSxDQUFDd0QsUUFBUztJQUN4QkMsSUFBSSxFQUFDLE9BQU87SUFDWm5ELEtBQUssRUFBRTtNQUNIRSxRQUFRLEVBQUVBLFFBQVE7TUFDbEJQLEtBQUssRUFBRUEsS0FBSztNQUNaTSxRQUFRLEVBQUVBLFFBQVE7TUFDbEJFLE1BQU0sRUFBRUEsTUFBTTtNQUNkaUQsS0FBSyxFQUFFO0lBQ1gsQ0FBRTtJQUNGQyxPQUFPLEVBQUMsVUFBVTtJQUNsQmhDLEtBQUssRUFBRWIsWUFBYTtJQUNwQjhDLFFBQVEsRUFBRS9CLGlCQUFrQjtJQUM1QmdDLE1BQU0sRUFBRXBCO0VBQVcsQ0FDdEIsQ0FBQztBQUVWLENBQUMsQ0FBQztBQUVGLE1BQU1xQixhQUFhLGdCQUFHdkUsY0FBSyxDQUFDQyxJQUFJLENBQUVDLEtBQUssSUFBSztFQUN4QyxvQkFDSXJDLE1BQUEsQ0FBQVcsT0FBQSxDQUFBNEUsYUFBQSxDQUFDakYsVUFBQSxDQUFBcUcsU0FBUyxFQUFBL0UsUUFBQSxLQUNGUyxLQUFLO0lBQ1R1RSxNQUFNLEVBQUV2RSxLQUFLLENBQUN1RSxNQUFPO0lBQ3JCQyxXQUFXLEVBQUVBLENBQUN0QyxLQUFLLEVBQUV1QyxPQUFPLEtBQUs7TUFDN0IsSUFBSXZDLEtBQUssS0FBSyxJQUFJLElBQUlBLEtBQUssS0FBS0MsU0FBUyxJQUFJRCxLQUFLLEtBQUssRUFBRSxFQUFFO1FBQ3ZELE9BQU8sSUFBSTtNQUNmO01BRUEsSUFBSXVDLE9BQU8sRUFBRTtRQUNULE1BQU1DLFFBQVEsR0FBRzdCLFVBQVUsQ0FBQ1gsS0FBSyxDQUFDO1FBQ2xDLE9BQU9ZLEtBQUssQ0FBQzRCLFFBQVEsQ0FBQyxHQUFHLElBQUksR0FBR0MsSUFBSSxDQUFDQyxLQUFLLENBQUMsQ0FBQ0YsUUFBUSxHQUFHRyxNQUFNLENBQUNDLE9BQU8sSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHO01BQ3ZGLENBQUMsTUFBTTtRQUNILE9BQU81QyxLQUFLO01BQ2hCO0lBQ0o7RUFBRSxJQUVEM0IsSUFBSSxpQkFDRDVDLE1BQUEsQ0FBQVcsT0FBQSxDQUFBNEUsYUFBQSxDQUFDckQsb0JBQW9CLEVBQUFOLFFBQUE7SUFDakJnQixJQUFJLEVBQUVBO0VBQUssR0FDUFAsS0FBSyxDQUVTLENBRW5CLENBQUM7QUFFcEIsQ0FBQyxDQUFDO0FBQUMsSUFBQStFLFFBQUEsR0FBQUMsT0FBQSxDQUFBMUcsT0FBQSxHQUVZK0YsYUFBYSIsImlnbm9yZUxpc3QiOltdfQ==
193
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVGV4dEZpZWxkIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9CYXNlRmllbGQiLCJfVXRpbHMiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJfZXh0ZW5kcyIsImFzc2lnbiIsImJpbmQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcHBseSIsIkN1cnJlbmN5RmllbGRXcmFwcGVyIiwiUmVhY3QiLCJtZW1vIiwicHJvcHMiLCJfcHJvcHMkY29uZmlnJGF0dHJpYnUiLCJfcHJvcHMkY29uZmlnJGF0dHJpYnUyIiwiX3Byb3BzJGNvbmZpZyRhdHRyaWJ1MyIsIl9wcm9wcyRjb25maWckYXR0cmlidTQiLCJfcHJvcHMkY29uZmlnJGF0dHJpYnU1IiwiYmFzZSIsIndpZHRoIiwiVXRpbHMiLCJpc051bGwiLCJjb25maWciLCJhdHRyaWJ1dGVzIiwic3R5bGUiLCJtYXhXaWR0aCIsIm1pbldpZHRoIiwiaGVpZ2h0IiwiY3VycmVuY3lTeW1ib2wiLCJ0ZXh0UmVmIiwidXNlUmVmIiwiY2FyZXRSZWYiLCJkaXNwbGF5VmFsdWUiLCJzZXREaXNwbGF5VmFsdWUiLCJ1c2VTdGF0ZSIsImZvY3VzZWQiLCJzZXRGb2N1c2VkIiwic2lnbmlmaWNhbnQiLCJzIiwicmVwbGFjZSIsIm1hc2tDdXJyZW5jeSIsInJhdyIsIm5lZ2F0aXZlIiwiaGFzRG90IiwiaW5kZXhPZiIsImludFBhcnQiLCJzbGljZSIsImRlY1BhcnQiLCJncm91cGVkSW50IiwicmVzdWx0IiwiZm9ybWF0Q3VycmVuY3kiLCJ2YWx1ZSIsIm51bSIsIk51bWJlciIsInVuZGVmaW5lZCIsImlzTmFOIiwidG9Mb2NhbGVTdHJpbmciLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiLCJ1c2VFZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJjdXJyZW50IiwicG9zIiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJoYW5kbGVJbnB1dENoYW5nZSIsImV2ZW50IiwiaW5wdXQiLCJ0YXJnZXQiLCJuZXdSYXdWYWx1ZSIsImNhcmV0Iiwic2VsZWN0aW9uU3RhcnQiLCJ0cmltU3RhcnQiLCJzdGFydHNXaXRoIiwibGVmdFNpZ25pZmljYW50IiwiZmlyc3REb3QiLCJwYXJ0cyIsInNwbGl0Iiwib2xkUmF3IiwibWFza2VkIiwic2VlbiIsInRlc3QiLCJoYW5kbGVWYWx1ZUNoYW5nZSIsIm51bWVyaWMiLCJwYXJzZUZsb2F0IiwiaGFuZGxlRm9jdXMiLCJoYW5kbGVCbHVyIiwiY3JlYXRlRWxlbWVudCIsImlkIiwidHlwZSIsInJlcXVpcmVkIiwiaW5wdXRSZWYiLCJsYWJlbCIsIm9uS2V5VXAiLCJrZXlIYW5kbGVyIiwiZXJyb3IiLCJoYXNFcnJvciIsImhlbHBlclRleHQiLCJlcnJvck1lc3NhZ2UiLCJtYXJnaW4iLCJkaXNhYmxlZCIsInNpemUiLCJjb2xvciIsInZhcmlhbnQiLCJvbkNoYW5nZSIsIm9uRm9jdXMiLCJvbkJsdXIiLCJDdXJyZW5jeUZpZWxkIiwiQmFzZUZpZWxkIiwiaGFuZGxlIiwidmFsdWVQYXJzZXIiLCJpbmJvdW5kIiwibnVtVmFsdWUiLCJNYXRoIiwicm91bmQiLCJFUFNJTE9OIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vQ3VycmVuY3lGaWVsZC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7dXNlUmVmLCB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VMYXlvdXRFZmZlY3R9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBUZXh0RmllbGRDb21wb25lbnQgZnJvbSAnQG11aS9tYXRlcmlhbC9UZXh0RmllbGQnO1xuaW1wb3J0IHtCYXNlRmllbGR9IGZyb20gXCIuL0Jhc2VGaWVsZFwiO1xuaW1wb3J0IFV0aWxzIGZyb20gXCIuLi8uLi9VdGlsc1wiO1xuXG5jb25zdCBDdXJyZW5jeUZpZWxkV3JhcHBlciA9IFJlYWN0Lm1lbW8oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgYmFzZSA9IHByb3BzLmJhc2U7XG4gICAgY29uc3Qgd2lkdGggPSAhVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzPy5zdHlsZT8ud2lkdGgpID8gcHJvcHMuY29uZmlnLmF0dHJpYnV0ZXMuc3R5bGUud2lkdGggOiBcIjEwMCVcIjtcbiAgICBjb25zdCBtYXhXaWR0aCA9ICFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LnN0eWxlPy5tYXhXaWR0aCkgPyBwcm9wcy5jb25maWcuYXR0cmlidXRlcy5zdHlsZS5tYXhXaWR0aCA6IG51bGw7XG4gICAgY29uc3QgbWluV2lkdGggPSAhVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzPy5zdHlsZT8ubWluV2lkdGgpID8gcHJvcHMuY29uZmlnLmF0dHJpYnV0ZXMuc3R5bGUubWluV2lkdGggOiBcIjIzMnB4XCI7XG4gICAgY29uc3QgaGVpZ2h0ID0gIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuYXR0cmlidXRlcz8uc3R5bGU/LmhlaWdodCkgPyBwcm9wcy5jb25maWcuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQgOiBudWxsO1xuICAgIGNvbnN0IGN1cnJlbmN5U3ltYm9sID0gIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuYXR0cmlidXRlcz8uY3VycmVuY3lTeW1ib2wpID8gcHJvcHMuY29uZmlnLmF0dHJpYnV0ZXMuY3VycmVuY3lTeW1ib2wgOiBcIlJcIjtcbiAgICBjb25zdCB0ZXh0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNhcmV0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IFtkaXNwbGF5VmFsdWUsIHNldERpc3BsYXlWYWx1ZV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgICBjb25zdCBbZm9jdXNlZCwgc2V0Rm9jdXNlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgICAvLyBTYW5pdGlzZWQgXCJzaWduaWZpY2FudFwiIGNoYXJhY3RlcnMgb2YgYSBzdHJpbmc6IGRpZ2l0cyBhbmQgYSBzaW5nbGUgZG90LlxuICAgIGNvbnN0IHNpZ25pZmljYW50ID0gKHMpID0+IHMucmVwbGFjZSgvW15cXGQuXS9nLCBcIlwiKTtcblxuICAgIC8vIEdyb3VwICsgc3ltYm9sIGEgc2FuaXRpc2VkIG51bWVyaWMgc3RyaW5nIHdoaWxlIHByZXNlcnZpbmcgYSB0cmFpbGluZyBkb3RcbiAgICAvLyBhbmQgcGFydGlhbCBkZWNpbWFscyBzbyBpdCBjYW4gbWFzayBsaXZlIGFzIHRoZSB1c2VyIHR5cGVzLiBlLmcuXG4gICAgLy8gXCIyMDAwMDAwXCIgICAtPiBcIlIyLDAwMCwwMDBcIlxuICAgIC8vIFwiMjAwMDAwMC5cIiAgLT4gXCJSMiwwMDAsMDAwLlwiXG4gICAgLy8gXCIyMDAwMDAwLjdcIiAtPiBcIlIyLDAwMCwwMDAuN1wiXG4gICAgY29uc3QgbWFza0N1cnJlbmN5ID0gKHJhdywgbmVnYXRpdmUpID0+IHtcbiAgICAgICAgaWYgKHJhdyA9PT0gXCJcIikge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGFzRG90ID0gcmF3LmluZGV4T2YoXCIuXCIpICE9PSAtMTtcbiAgICAgICAgbGV0IGludFBhcnQgPSBoYXNEb3QgPyByYXcuc2xpY2UoMCwgcmF3LmluZGV4T2YoXCIuXCIpKSA6IHJhdztcbiAgICAgICAgY29uc3QgZGVjUGFydCA9IGhhc0RvdCA/IHJhdy5zbGljZShyYXcuaW5kZXhPZihcIi5cIikgKyAxKSA6IG51bGw7XG5cbiAgICAgICAgbGV0IGdyb3VwZWRJbnQ7XG4gICAgICAgIGlmIChpbnRQYXJ0ID09PSBcIlwiKSB7XG4gICAgICAgICAgICBncm91cGVkSW50ID0gXCIwXCI7IC8vIFwiLjVcIiByZWFkcyBhcyBcIjAuNVwiXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBncm91cGVkSW50ID0gaW50UGFydC5yZXBsYWNlKC9eMCsoPz1cXGQpLywgXCJcIik7ICAgICAgICAgICAgICAgICAvLyBkcm9wIGxlYWRpbmcgemVyb3NcbiAgICAgICAgICAgIGdyb3VwZWRJbnQgPSBncm91cGVkSW50LnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKTsgLy8gdGhvdXNhbmRzIGdyb3VwaW5nXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcmVzdWx0ID0gY3VycmVuY3lTeW1ib2wgKyAobmVnYXRpdmUgPyBcIi1cIiA6IFwiXCIpICsgZ3JvdXBlZEludDtcbiAgICAgICAgaWYgKGhhc0RvdCkge1xuICAgICAgICAgICAgcmVzdWx0ICs9IFwiLlwiICsgZGVjUGFydDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICAvLyBDYW5vbmljYWwsIHR3by1kZWNpbWFsIGRpc3BsYXkgdXNlZCBvbiBibHVyIC8gZXh0ZXJuYWwgdmFsdWUgY2hhbmdlczpcbiAgICAvLyBcIlIyLDAwMCwwMDAuNzVcIi5cbiAgICBjb25zdCBmb3JtYXRDdXJyZW5jeSA9ICh2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCBudW0gPSBOdW1iZXIodmFsdWUpO1xuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gXCJcIiB8fCBpc05hTihudW0pKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3VycmVuY3lTeW1ib2wgKyBudW0udG9Mb2NhbGVTdHJpbmcoXCJlbi1VU1wiLCB7XG4gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvLyBLZWVwIHRoZSBkaXNwbGF5IGluIHN5bmMgd2l0aCB0aGUgbW9kZWwgb25seSB3aGVuIG5vdCBhY3RpdmVseSBlZGl0aW5nLFxuICAgIC8vIHNvIGEgdmFsdWUgY2hhbmdlIG5ldmVyIGNsb2JiZXJzIHdoYXQgdGhlIHVzZXIgaXMgdHlwaW5nLlxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghZm9jdXNlZCkge1xuICAgICAgICAgICAgc2V0RGlzcGxheVZhbHVlKGZvcm1hdEN1cnJlbmN5KGJhc2UudmFsdWUpKTtcbiAgICAgICAgfVxuICAgIH0sIFtiYXNlLnZhbHVlLCBmb2N1c2VkXSk7XG5cbiAgICAvLyBSZXN0b3JlIHRoZSBjYXJldCBhZnRlciBhIGxpdmUtbWFzayByZS1yZW5kZXIsIGNvdW50aW5nIHNpZ25pZmljYW50IGNoYXJzXG4gICAgLy8gc28gaW5zZXJ0ZWQvcmVtb3ZlZCBjb21tYXMgZG9uJ3QgbWFrZSB0aGUgY3Vyc29yIGp1bXAuXG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGZvY3VzZWQgJiYgY2FyZXRSZWYuY3VycmVudCAhPSBudWxsICYmIHRleHRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgY29uc3QgcG9zID0gY2FyZXRSZWYuY3VycmVudDtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGV4dFJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKHBvcywgcG9zKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAvLyBpbnB1dCBub3QgeWV0IGEgdGV4dCB0eXBlIC8gbm90IGZvY3VzYWJsZSDigJQgaWdub3JlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXJldFJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgaGFuZGxlSW5wdXRDaGFuZ2UgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgIGNvbnN0IG5ld1Jhd1ZhbHVlID0gaW5wdXQudmFsdWU7XG4gICAgICAgIGNvbnN0IGNhcmV0ID0gaW5wdXQuc2VsZWN0aW9uU3RhcnQgIT0gbnVsbCA/IGlucHV0LnNlbGVjdGlvblN0YXJ0IDogbmV3UmF3VmFsdWUubGVuZ3RoO1xuXG4gICAgICAgIGNvbnN0IG5lZ2F0aXZlID0gbmV3UmF3VmFsdWUudHJpbVN0YXJ0KCkuc3RhcnRzV2l0aChcIi1cIik7XG5cbiAgICAgICAgLy8gRGlnaXRzL2RvdCB0byB0aGUgTEVGVCBvZiB0aGUgY2FyZXQg4oCUIGRyaXZlcyB3aGVyZSB0aGUgY2FyZXQgbGFuZHNcbiAgICAgICAgLy8gYWdhaW4gYWZ0ZXIgcmUtbWFza2luZy5cbiAgICAgICAgbGV0IGxlZnRTaWduaWZpY2FudCA9IHNpZ25pZmljYW50KG5ld1Jhd1ZhbHVlLnNsaWNlKDAsIGNhcmV0KSkubGVuZ3RoO1xuXG4gICAgICAgIC8vIFNhbml0aXNlOiBkaWdpdHMgKyBhIHNpbmdsZSBkb3QsIGF0IG1vc3QgdHdvIGRlY2ltYWxzLlxuICAgICAgICBsZXQgcmF3ID0gc2lnbmlmaWNhbnQobmV3UmF3VmFsdWUpO1xuICAgICAgICBjb25zdCBmaXJzdERvdCA9IHJhdy5pbmRleE9mKFwiLlwiKTtcbiAgICAgICAgaWYgKGZpcnN0RG90ICE9PSAtMSkge1xuICAgICAgICAgICAgcmF3ID0gcmF3LnNsaWNlKDAsIGZpcnN0RG90ICsgMSkgKyByYXcuc2xpY2UoZmlyc3REb3QgKyAxKS5yZXBsYWNlKC9cXC4vZywgXCJcIik7XG4gICAgICAgICAgICBjb25zdCBwYXJ0cyA9IHJhdy5zcGxpdChcIi5cIik7XG4gICAgICAgICAgICByYXcgPSBwYXJ0c1swXSArIFwiLlwiICsgKHBhcnRzWzFdIHx8IFwiXCIpLnNsaWNlKDAsIDIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmFja3NwYWNpbmcgb3ZlciBhIGdyb3VwaW5nIGNvbW1hIHJlbW92ZXMgb25seSB0aGUgc2VwYXJhdG9yLCBsZWF2aW5nXG4gICAgICAgIC8vIHRoZSBzaWduaWZpY2FudCBjaGFycyB1bmNoYW5nZWQuIFRyZWF0IHRoYXQgYXMgXCJkZWxldGUgdGhlIGRpZ2l0XG4gICAgICAgIC8vIGJlZm9yZSB0aGUgY29tbWFcIiBzbyBiYWNrc3BhY2UgZmVlbHMgbmF0dXJhbC5cbiAgICAgICAgY29uc3Qgb2xkUmF3ID0gc2lnbmlmaWNhbnQoZGlzcGxheVZhbHVlKTtcbiAgICAgICAgaWYgKHJhdyA9PT0gb2xkUmF3ICYmIG5ld1Jhd1ZhbHVlLmxlbmd0aCA8IGRpc3BsYXlWYWx1ZS5sZW5ndGggJiYgbGVmdFNpZ25pZmljYW50ID4gMCkge1xuICAgICAgICAgICAgcmF3ID0gcmF3LnNsaWNlKDAsIGxlZnRTaWduaWZpY2FudCAtIDEpICsgcmF3LnNsaWNlKGxlZnRTaWduaWZpY2FudCk7XG4gICAgICAgICAgICBsZWZ0U2lnbmlmaWNhbnQgLT0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1hc2tlZCA9IG1hc2tDdXJyZW5jeShyYXcsIG5lZ2F0aXZlKTtcbiAgICAgICAgc2V0RGlzcGxheVZhbHVlKG1hc2tlZCk7XG5cbiAgICAgICAgLy8gV2hlcmUgdG8gcHV0IHRoZSBjYXJldDogYWR2YW5jZSB0aHJvdWdoIHRoZSBtYXNrZWQgc3RyaW5nIHVudGlsIHdlJ3ZlXG4gICAgICAgIC8vIHBhc3NlZCB0aGUgc2FtZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgY2hhcnMgdGhhdCB3ZXJlIGxlZnQgb2YgaXQuXG4gICAgICAgIGxldCBwb3MgPSAwO1xuICAgICAgICBsZXQgc2VlbiA9IDA7XG4gICAgICAgIHdoaWxlIChwb3MgPCBtYXNrZWQubGVuZ3RoICYmIHNlZW4gPCBsZWZ0U2lnbmlmaWNhbnQpIHtcbiAgICAgICAgICAgIGlmICgvW1xcZC5dLy50ZXN0KG1hc2tlZFtwb3NdKSkge1xuICAgICAgICAgICAgICAgIHNlZW4gKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBvcyArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGNhcmV0UmVmLmN1cnJlbnQgPSBwb3M7XG5cbiAgICAgICAgLy8gUHVzaCB0aGUgbnVtZXJpYyB2YWx1ZSB0byB0aGUgbW9kZWwuXG4gICAgICAgIGlmIChyYXcgPT09IFwiXCIgfHwgcmF3ID09PSBcIi5cIikge1xuICAgICAgICAgICAgYmFzZS5oYW5kbGVWYWx1ZUNoYW5nZShudWxsKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBudW1lcmljID0gcGFyc2VGbG9hdCgobmVnYXRpdmUgPyBcIi1cIiA6IFwiXCIpICsgcmF3KTtcbiAgICAgICAgYmFzZS5oYW5kbGVWYWx1ZUNoYW5nZShpc05hTihudW1lcmljKSA/IG51bGwgOiBudW1lcmljKTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgICAgIHNldEZvY3VzZWQodHJ1ZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUJsdXIgPSAoKSA9PiB7XG4gICAgICAgIHNldEZvY3VzZWQoZmFsc2UpO1xuICAgICAgICBjYXJldFJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgc2V0RGlzcGxheVZhbHVlKGZvcm1hdEN1cnJlbmN5KGJhc2UudmFsdWUpKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPFRleHRGaWVsZENvbXBvbmVudFxuICAgICAgICAgICAgaWQ9e3Byb3BzLmlkfVxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgcmVxdWlyZWQ9e2Jhc2UucmVxdWlyZWR9XG4gICAgICAgICAgICBpbnB1dFJlZj17dGV4dFJlZn1cbiAgICAgICAgICAgIGxhYmVsPXshVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzKSA/IHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzWydsYWJlbCddIDogbnVsbH1cbiAgICAgICAgICAgIG9uS2V5VXA9e3Byb3BzLmtleUhhbmRsZXJ9XG4gICAgICAgICAgICBlcnJvcj17YmFzZS5oYXNFcnJvcn1cbiAgICAgICAgICAgIGhlbHBlclRleHQ9e2Jhc2UuZXJyb3JNZXNzYWdlfVxuICAgICAgICAgICAgbWFyZ2luPVwiZGVuc2VcIlxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Jhc2UuZGlzYWJsZWR9XG4gICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogbWluV2lkdGgsXG4gICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgICAgICAgIG1heFdpZHRoOiBtYXhXaWR0aCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ3NlY29uZGFyeSdcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgICAgdmFsdWU9e2Rpc3BsYXlWYWx1ZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVJbnB1dENoYW5nZX1cbiAgICAgICAgICAgIG9uRm9jdXM9e2hhbmRsZUZvY3VzfVxuICAgICAgICAgICAgb25CbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAvPlxuICAgICk7XG59KTtcblxuY29uc3QgQ3VycmVuY3lGaWVsZCA9IFJlYWN0Lm1lbW8oKHByb3BzKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPEJhc2VGaWVsZFxuICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgaGFuZGxlPXtwcm9wcy5oYW5kbGV9XG4gICAgICAgICAgICB2YWx1ZVBhcnNlcj17KHZhbHVlLCBpbmJvdW5kKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChpbmJvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG51bVZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpc05hTihudW1WYWx1ZSkgPyBudWxsIDogTWF0aC5yb3VuZCgobnVtVmFsdWUgKyBOdW1iZXIuRVBTSUxPTikgKiAxMDApIC8gMTAwO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgICB7YmFzZSA9PlxuICAgICAgICAgICAgICAgIDxDdXJyZW5jeUZpZWxkV3JhcHBlclxuICAgICAgICAgICAgICAgICAgICBiYXNlPXtiYXNlfVxuICAgICAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvQ3VycmVuY3lGaWVsZFdyYXBwZXI+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvQmFzZUZpZWxkPlxuICAgICk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VycmVuY3lGaWVsZDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsVUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBQWdDLFNBQUFFLHVCQUFBRyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFB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