@1money/component-ui 0.1.28 → 0.1.29

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.
@@ -15,19 +15,28 @@ import { Flex } from '../../../components/Flex';
15
15
  import { Select } from '../../../components/Select';
16
16
  import { Tag } from '../../../components/Tag';
17
17
  import { TypographyBody } from '../../../components/Typography';
18
+ import enUSBusiness from '../../../locale/en_US/business';
18
19
  import { joinCls } from '../../../utils/classnames';
19
20
  var WRAP_CLS = 'om-payment-method-select';
20
21
  var ICON_SIZE = 20;
21
22
  var DESC_SEPARATOR = ' - ';
22
- var toOption = function toOption(method) {
23
+ var translate = function translate(value, translations) {
24
+ return translations && Object.prototype.hasOwnProperty.call(translations, value) ? translations[value] : value;
25
+ };
26
+ var toOption = function toOption(method, locale) {
23
27
  var _a, _b, _c, _d;
24
28
  var _method$paymentMethod = method.paymentMethodTypeDesc.split(DESC_SEPARATOR),
25
29
  _method$paymentMethod2 = _slicedToArray(_method$paymentMethod, 2),
26
30
  name = _method$paymentMethod2[0],
27
31
  sla = _method$paymentMethod2[1];
28
- var description = ((_a = method.fee) === null || _a === void 0 ? void 0 : _a.transactionTime) ? "".concat(method.fee.transactionTime, " ").concat((_b = method.fee.transactionUnit) !== null && _b !== void 0 ? _b : '').trim() : sla;
32
+ var description = ((_a = method.fee) === null || _a === void 0 ? void 0 : _a.transactionTime) ? "".concat(method.fee.transactionTime, " ").concat(translate((_b = method.fee.transactionUnit) !== null && _b !== void 0 ? _b : '', locale.transactionUnits)).trim() : sla;
33
+ if (description) {
34
+ // Only known settlement phrases and numeric durations are library defaults.
35
+ var duration = description.match(/^(\d+(?:[.-]\d+)*) (.+)$/);
36
+ description = duration ? "".concat(duration[1], " ").concat(translate(duration[2], locale.transactionUnits)) : translate(description, locale.settlementTimes);
37
+ }
29
38
  return {
30
- label: name,
39
+ label: translate(name, locale.methodNames),
31
40
  value: method.paymentMethodType,
32
41
  icon: method.paymentMethodIconUrl,
33
42
  description: description,
@@ -45,10 +54,13 @@ var formatPaymentAmount = function formatPaymentAmount(value, asset, formatter)
45
54
  });
46
55
  return formatter ? formatter(amount, asset) : amount;
47
56
  };
48
- var renderFeeLine = function renderFeeLine(item, formatter) {
49
- return "Deposit fee: ".concat(formatPaymentAmount(item.fee, item.feeAsset, formatter), " | Minimum deposit amount: ").concat(formatPaymentAmount(item.depositAmtMin, item.depositAsset, formatter));
57
+ var renderFeeLine = function renderFeeLine(item, locale, formatter) {
58
+ var _a;
59
+ return ((_a = locale.feeLine) !== null && _a !== void 0 ? _a : enUSBusiness.PaymentMethodSelect.feeLine).replace(/\{(fee|minimum)\}/g, function (_, key) {
60
+ return key === 'fee' ? formatPaymentAmount(item.fee, item.feeAsset, formatter) : formatPaymentAmount(item.depositAmtMin, item.depositAsset, formatter);
61
+ });
50
62
  };
51
- var renderMetaColumn = function renderMetaColumn(item, showFee, formatter) {
63
+ var renderMetaColumn = function renderMetaColumn(item, showFee, locale, formatter) {
52
64
  var hasFee = showFee && (item.fee != null || item.depositAmtMin != null);
53
65
  if (!item.description && !hasFee) return null;
54
66
  return _jsxs(Flex, {
@@ -63,7 +75,7 @@ var renderMetaColumn = function renderMetaColumn(item, showFee, formatter) {
63
75
  }), hasFee && _jsx(TypographyBody, {
64
76
  size: 'sm',
65
77
  color: 'default-secondary',
66
- children: renderFeeLine(item, formatter)
78
+ children: renderFeeLine(item, locale, formatter)
67
79
  })]
68
80
  });
69
81
  };
@@ -88,8 +100,10 @@ var PaymentMethodSelectBase = function PaymentMethodSelectBase(_a) {
88
100
  var label = labelProp !== null && labelProp !== void 0 ? labelProp : locale.label;
89
101
  var placeholder = placeholderProp !== null && placeholderProp !== void 0 ? placeholderProp : locale.placeholder;
90
102
  var mapped = useMemo(function () {
91
- return options.map(toOption);
92
- }, [options]);
103
+ return options.map(function (method) {
104
+ return toOption(method, locale);
105
+ });
106
+ }, [options, locale]);
93
107
  return _jsx(Select, Object.assign({}, rest, {
94
108
  listMaxHeight: listMaxHeight,
95
109
  label: label,
@@ -124,7 +138,7 @@ var PaymentMethodSelectBase = function PaymentMethodSelectBase(_a) {
124
138
  strong: strong,
125
139
  children: item.label
126
140
  })]
127
- }), renderMetaColumn(item, showFee, formatAmount)]
141
+ }), renderMetaColumn(item, showFee, locale, formatAmount)]
128
142
  });
129
143
  },
130
144
  renderOptionContent: function renderOptionContent(option, _ref2) {
@@ -156,7 +170,7 @@ var PaymentMethodSelectBase = function PaymentMethodSelectBase(_a) {
156
170
  label: tag
157
171
  }, "".concat(tag, "-").concat(index));
158
172
  }))]
159
- }), renderMetaColumn(item, showFee, formatAmount)]
173
+ }), renderMetaColumn(item, showFee, locale, formatAmount)]
160
174
  });
161
175
  }
162
176
  }));
@@ -166,4 +180,4 @@ export var PaymentMethodSelect = /*#__PURE__*/memo(PaymentMethodSelectBase);
166
180
  // memo() wipes the inferred name, so without this the Item silently skips
167
181
  // value/onChange injection unless the call site happens to pass a placeholder.
168
182
  PaymentMethodSelect.displayName = 'PaymentMethodSelect';
169
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL1NlbGVjdC9QYXltZW50TWV0aG9kL1BheW1lbnRNZXRob2RTZWxlY3QuanMiLCJidXNpbmVzcy9TZWxlY3Qvc3JjL2J1c2luZXNzL1NlbGVjdC9QYXltZW50TWV0aG9kL1BheW1lbnRNZXRob2RTZWxlY3QudHN4Il0sIm5hbWVzIjpbIl9fcmVzdCIsInMiLCJlIiwidCIsInAiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaSIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIm1lbW8iLCJ1c2VNZW1vIiwibnVtZXJpY0Zvcm1hdHRlciIsInVzZUxvY2FsZSIsIkZsZXgiLCJTZWxlY3QiLCJUYWciLCJUeXBvZ3JhcGh5Qm9keSIsImpvaW5DbHMiLCJXUkFQX0NMUyIsIklDT05fU0laRSIsIkRFU0NfU0VQQVJBVE9SIiwidG9PcHRpb24iLCJtZXRob2QiLCJfYSIsIl9iIiwiX2MiLCJfZCIsIl9tZXRob2QkcGF5bWVudE1ldGhvZCIsInBheW1lbnRNZXRob2RUeXBlRGVzYyIsInNwbGl0IiwiX21ldGhvZCRwYXltZW50TWV0aG9kMiIsIl9zbGljZWRUb0FycmF5IiwibmFtZSIsInNsYSIsImRlc2NyaXB0aW9uIiwiZmVlIiwidHJhbnNhY3Rpb25UaW1lIiwiY29uY2F0IiwidHJhbnNhY3Rpb25Vbml0IiwidHJpbSIsImxhYmVsIiwidmFsdWUiLCJwYXltZW50TWV0aG9kVHlwZSIsImljb24iLCJwYXltZW50TWV0aG9kSWNvblVybCIsInRyYW5zYWN0aW9uRmVlIiwiZGVwb3NpdEFtdE1pbiIsImRlcG9zaXRBc3NldCIsImZlZUFzc2V0IiwidHJhbnNhY3Rpb25GZWVBc3NldCIsInRhZ3MiLCJmb3JtYXRQYXltZW50QW1vdW50IiwiYXNzZXQiLCJmb3JtYXR0ZXIiLCJhbW91bnQiLCJ0aG91c2FuZFNlcGFyYXRvciIsInByZWZpeCIsInJlbmRlckZlZUxpbmUiLCJpdGVtIiwicmVuZGVyTWV0YUNvbHVtbiIsInNob3dGZWUiLCJoYXNGZWUiLCJ2ZXJ0aWNhbCIsImFsaWduIiwiZ2FwIiwiY2hpbGRyZW4iLCJzaXplIiwic3Ryb25nIiwiY29sb3IiLCJQYXltZW50TWV0aG9kU2VsZWN0QmFzZSIsIm9wdGlvbnMiLCJjbGFzc05hbWUiLCJsYWJlbFByb3AiLCJfYSRuYW1lIiwicGxhY2Vob2xkZXJQcm9wIiwicGxhY2Vob2xkZXIiLCJfYSRzdHJvbmciLCJfYSRzaG93RmVlIiwiZm9ybWF0QW1vdW50IiwiX2Ekc2hvd1RhZ3MiLCJzaG93VGFncyIsIl9hJGxpc3RNYXhIZWlnaHQiLCJsaXN0TWF4SGVpZ2h0IiwicmVzdCIsImxvY2FsZSIsIm1hcHBlZCIsIm1hcCIsImFzc2lnbiIsInJlbmRlclZhbHVlIiwib3B0aW9uIiwiX3JlZiIsImZvbnRTaXplIiwiQXJyYXkiLCJpc0FycmF5IiwianVzdGlmeSIsInN0eWxlIiwid2lkdGgiLCJzcmMiLCJhbHQiLCJTdHJpbmciLCJoZWlnaHQiLCJyZW5kZXJPcHRpb25Db250ZW50IiwiX3JlZjIiLCJ0YWciLCJpbmRleCIsIlBheW1lbnRNZXRob2RTZWxlY3QiLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5ncyI6IjtBQUFBLElBQUlBLE1BQU0sR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxNQUFNLElBQUssVUFBVUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFDbEQsSUFBSUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNWLEtBQUssSUFBSUMsQ0FBQyxJQUFJSCxDQUFDLEVBQUUsSUFBSUksTUFBTSxDQUFDQyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDUCxDQUFDLEVBQUVHLENBQUMsQ0FBQyxJQUFJRixDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUMvRUQsQ0FBQyxDQUFDQyxDQUFDLENBQUMsR0FBR0gs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QVMsQ0FBQSxDQUVwQixFQUNEYixJQUFBLENBQUNVLGNBQWMsRUFBQTtZQUFDa0QsSUFBSSxFQUFFeUIsUUFBUTtZQUFFeEIsTUFBTSxFQUFFQSxNQUFNO1lBQUFGLFFBQUEsRUFDM0NQLElBQUksQ0FBQ2xCO1VBQUssQ0FBQSxDQUNJLEVBQ2hCd0MsUUFBUSxLQUNQLENBQUF4RCxFQUFBLEdBQUFrQyxJQUFJLENBQUNSLElBQUksTUFBQSxJQUFBLElBQUExQixFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsQ0FBRThELEdBQUcsQ0FBQyxVQUFDaUIsR0FBRyxFQUFFQyxLQUFLO1lBQUEsT0FDeEJsRyxJQUFBLENBQUNTLEdBQUcsRUFBQTtjQUF5QnFELEtBQUssRUFBQyxTQUFTO2NBQUM1QixLQUFLLEVBQUUrRDtZQUFHLENBQUEsS0FBQWxFLE1BQUEsQ0FBMUNrRSxHQUFHLE9BQUFsRSxNQUFBLENBQUltRSxLQUFLLENBQUUsQ0FBZ0M7VUFBQSxDQUM1RCxDQUFDLENBQUE7UUFBQSxDQUFBLENBQ0MsRUFDTjdDLGdCQUFnQixDQUFDRCxJQUFJLEVBQUVFLE9BQU8sRUFBRWtCLFlBQVksQ0FBQztNQUFBLENBQUEsQ0FDekM7SUFFWDtFQUFDLENBQUEsQ0FBQSxDQUNEO0FBRU4sQ0FBQztBQUVELE9BQU8sSUFBTTJCLG1CQUFtQixnQkFBR2hHLElBQUksQ0FBQzRELHVCQUF1QixDQUFDO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBb0MsbUJBQW1CLENBQUNDLFdBQVcsR0FBRyxxQkFBcUIiLCJmaWxlIjoiYnVzaW5lc3MvU2VsZWN0L1BheW1lbnRNZXRob2QvUGF5bWVudE1ldGhvZFNlbGVjdC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgbnVtZXJpY0Zvcm1hdHRlciB9IGZyb20gJ3JlYWN0LW51bWJlci1mb3JtYXQnO1xuaW1wb3J0IHsgdXNlTG9jYWxlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9Db25maWdQcm92aWRlcic7XG5pbXBvcnQgeyBGbGV4IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9GbGV4JztcbmltcG9ydCB7IFNlbGVjdCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvU2VsZWN0JztcbmltcG9ydCB7IFRhZyB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvVGFnJztcbmltcG9ydCB7IFR5cG9ncmFwaHlCb2R5IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9UeXBvZ3JhcGh5JztcbmltcG9ydCB7IGpvaW5DbHMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmNvbnN0IFdSQVBfQ0xTID0gJ29tLXBheW1lbnQtbWV0aG9kLXNlbGVjdCc7XG5jb25zdCBJQ09OX1NJWkUgPSAyMDtcbmNvbnN0IERFU0NfU0VQQVJBVE9SID0gJyAtICc7XG5jb25zdCB0b09wdGlvbiA9IChtZXRob2QpID0+IHtcbiAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgY29uc3QgW25hbWUsIHNsYV0gPSBtZXRob2QucGF5bWVudE1ldGhvZFR5cGVEZXNjLnNwbGl0KERFU0NfU0VQQVJBVE9SKTtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9ICgoX2EgPSBtZXRob2QuZmVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudHJhbnNhY3Rpb25UaW1lKVxuICAgICAgICA/IGAke21ldGhvZC5mZWUudHJhbnNhY3Rpb25UaW1lfSAkeyhfYiA9IG1ldGhvZC5mZWUudHJhbnNhY3Rpb25Vbml0KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJ31gLnRyaW0oKVxuICAgICAgICA6IHNsYTtcbiAgICByZXR1cm4ge1xuICAgICAgICBsYWJlbDogbmFtZSxcbiAgICAgICAgdmFsdWU6IG1ldGhvZC5wYXltZW50TWV0aG9kVHlwZSxcbiAgICAgICAgaWNvbjogbWV0aG9kLnBheW1lbnRNZXRob2RJY29uVXJsLFxuICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgZmVlOiAoX2MgPSBtZXRob2QuZmVlKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MudHJhbnNhY3Rpb25GZWUsXG4gICAgICAgIGRlcG9zaXRBbXRNaW46IG1ldGhvZC5kZXBvc2l0QW10TWluLFxuICAgICAgICBkZXBvc2l0QXNzZXQ6IG1ldGhvZC5kZXBvc2l0QXNzZXQsXG4gICAgICAgIGZlZUFzc2V0OiAoX2QgPSBtZXRob2QuZmVlKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QudHJhbnNhY3Rpb25GZWVBc3NldCxcbiAgICAgICAgdGFnczogbWV0aG9kLnRhZ3MsXG4gICAgfTtcbn07XG5jb25zdCBmb3JtYXRQYXltZW50QW1vdW50ID0gKHZhbHVlLCBhc3NldCwgZm9ybWF0dGVyKSA9PiB7XG4gICAgY29uc3QgYW1vdW50ID0gbnVtZXJpY0Zvcm1hdHRlcih2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdm9pZCAwID8gdmFsdWUgOiAnJywge1xuICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogJywnLFxuICAgICAgICBwcmVmaXg6IGZvcm1hdHRlciA/ICcnIDogJyQnLFxuICAgIH0pO1xuICAgIHJldHVybiBmb3JtYXR0ZXIgPyBmb3JtYXR0ZXIoYW1vdW50LCBhc3NldCkgOiBhbW91bnQ7XG59O1xuY29uc3QgcmVuZGVyRmVlTGluZSA9IChpdGVtLCBmb3JtYXR0ZXIpID0+IGBEZXBvc2l0IGZlZTogJHtmb3JtYXRQYXltZW50QW1vdW50KGl0ZW0uZmVlLCBpdGVtLmZlZUFzc2V0LCBmb3JtYXR0ZXIpfSB8IE1pbmltdW0gZGVwb3NpdCBhbW91bnQ6ICR7Zm9ybWF0UGF5bWVudEFtb3VudChpdGVtLmRlcG9zaXRBbXRNaW4sIGl0ZW0uZGVwb3NpdEFzc2V0LCBmb3JtYXR0ZXIpfWA7XG5jb25zdCByZW5kZXJNZXRhQ29sdW1uID0gKGl0ZW0sIHNob3dGZWUsIGZvcm1hdHRlcikgPT4ge1xuICAgIGNvbnN0IGhhc0ZlZSA9IHNob3dGZWUgJiYgKGl0ZW0uZmVlICE9IG51bGwgfHwgaXRlbS5kZXBvc2l0QW10TWluICE9IG51bGwpO1xuICAgIGlmICghaXRlbS5kZXNjcmlwdGlvbiAmJiAhaGFzRmVlKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gKF9qc3hzKEZsZXgsIHsgdmVydGljYWw6IHRydWUsIGFsaWduOiAnZW5kJywgZ2FwOiAwLCBjaGlsZHJlbjogW2l0ZW0uZGVzY3JpcHRpb24gJiYgKF9qc3goVHlwb2dyYXBoeUJvZHksIHsgc2l6ZTogJ3NtJywgc3Ryb25nOiB0cnVlLCBjb2xvcjogJ2RlZmF1bHQtc2Vjb25kYXJ5JywgY2hpbGRyZW46IGl0ZW0uZGVzY3JpcHRpb24gfSkpLCBoYXNGZWUgJiYgKF9qc3goVHlwb2dyYXBoeUJvZHksIHsgc2l6ZTogJ3NtJywgY29sb3I6ICdkZWZhdWx0LXNlY29uZGFyeScsIGNoaWxkcmVuOiByZW5kZXJGZWVMaW5lKGl0ZW0sIGZvcm1hdHRlcikgfSkpXSB9KSk7XG59O1xuY29uc3QgUGF5bWVudE1ldGhvZFNlbGVjdEJhc2UgPSAoX2EpID0+IHtcbiAgICB2YXIgeyBvcHRpb25zLCBjbGFzc05hbWUsIGxhYmVsOiBsYWJlbFByb3AsIG5hbWUgPSAncGF5bWVudE1ldGhvZCcsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlclByb3AsIHN0cm9uZyA9IHRydWUsIHNob3dGZWUgPSB0cnVlLCBmb3JtYXRBbW91bnQsIHNob3dUYWdzID0gdHJ1ZSwgbGlzdE1heEhlaWdodCA9ICdhdXRvJyB9ID0gX2EsIHJlc3QgPSBfX3Jlc3QoX2EsIFtcIm9wdGlvbnNcIiwgXCJjbGFzc05hbWVcIiwgXCJsYWJlbFwiLCBcIm5hbWVcIiwgXCJwbGFjZWhvbGRlclwiLCBcInN0cm9uZ1wiLCBcInNob3dGZWVcIiwgXCJmb3JtYXRBbW91bnRcIiwgXCJzaG93VGFnc1wiLCBcImxpc3RNYXhIZWlnaHRcIl0pO1xuICAgIGNvbnN0IGxvY2FsZSA9IHVzZUxvY2FsZSgnUGF5bWVudE1ldGhvZFNlbGVjdCcpO1xuICAgIGNvbnN0IGxhYmVsID0gbGFiZWxQcm9wICE9PSBudWxsICYmIGxhYmVsUHJvcCAhPT0gdm9pZCAwID8gbGFiZWxQcm9wIDogbG9jYWxlLmxhYmVsO1xuICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXJQcm9wICE9PSBudWxsICYmIHBsYWNlaG9sZGVyUHJvcCAhPT0gdm9pZCAwID8gcGxhY2Vob2xkZXJQcm9wIDogbG9jYWxlLnBsYWNlaG9sZGVyO1xuICAgIGNvbnN0IG1hcHBlZCA9IHVzZU1lbW8oKCkgPT4gb3B0aW9ucy5tYXAodG9PcHRpb24pLCBbb3B0aW9uc10pO1xuICAgIHJldHVybiAoX2pzeChTZWxlY3QsIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgbGlzdE1heEhlaWdodDogbGlzdE1heEhlaWdodCwgbGFiZWw6IGxhYmVsLCBuYW1lOiBuYW1lLCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIGNsYXNzTmFtZTogam9pbkNscyhXUkFQX0NMUywgY2xhc3NOYW1lKSwgb3B0aW9uczogbWFwcGVkLCByZW5kZXJWYWx1ZTogKG9wdGlvbiwgeyBmb250U2l6ZSB9KSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbiB8fCBBcnJheS5pc0FycmF5KG9wdGlvbikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGxhY2Vob2xkZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gb3B0aW9uO1xuICAgICAgICAgICAgcmV0dXJuIChfanN4cyhGbGV4LCB7IGFsaWduOiAnY2VudGVyJywganVzdGlmeTogJ3NwYWNlLWJldHdlZW4nLCBnYXA6IDgsIHN0eWxlOiB7IHdpZHRoOiAnMTAwJScgfSwgY2hpbGRyZW46IFtfanN4cyhGbGV4LCB7IGFsaWduOiAnY2VudGVyJywgZ2FwOiA4LCBjaGlsZHJlbjogW2l0ZW0uaWNvbiAmJiAoX2pzeChcImltZ1wiLCB7IHNyYzogaXRlbS5pY29uLCBhbHQ6IFN0cmluZygoX2EgPSBpdGVtLnZhbHVlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyksIHdpZHRoOiBJQ09OX1NJWkUsIGhlaWdodDogSUNPTl9TSVpFIH0pKSwgX2pzeChUeXBvZ3JhcGh5Qm9keSwgeyBzaXplOiBmb250U2l6ZSwgc3Ryb25nOiBzdHJvbmcsIGNoaWxkcmVuOiBpdGVtLmxhYmVsIH0pXSB9KSwgcmVuZGVyTWV0YUNvbHVtbihpdGVtLCBzaG93RmVlLCBmb3JtYXRBbW91bnQpXSB9KSk7XG4gICAgICAgIH0sIHJlbmRlck9wdGlvbkNvbnRlbnQ6IChvcHRpb24sIHsgZm9udFNpemUgfSkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBvcHRpb247XG4gICAgICAgICAgICByZXR1cm4gKF9qc3hzKEZsZXgsIHsgYWxpZ246ICdjZW50ZXInLCBqdXN0aWZ5OiAnc3BhY2UtYmV0d2VlbicsIGdhcDogOCwgc3R5bGU6IHsgd2lkdGg6ICcxMDAlJyB9LCBjaGlsZHJlbjogW19qc3hzKEZsZXgsIHsgYWxpZ246ICdjZW50ZXInLCBnYXA6IDgsIGNoaWxkcmVuOiBbaXRlbS5pY29uICYmIChfanN4KFwiaW1nXCIsIHsgc3JjOiBpdGVtLmljb24sIGFsdDogU3RyaW5nKChfYSA9IGl0ZW0udmFsdWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnKSwgd2lkdGg6IElDT05fU0laRSwgaGVpZ2h0OiBJQ09OX1NJWkUgfSkpLCBfanN4KFR5cG9ncmFwaHlCb2R5LCB7IHNpemU6IGZvbnRTaXplLCBzdHJvbmc6IHN0cm9uZywgY2hpbGRyZW46IGl0ZW0ubGFiZWwgfSksIHNob3dUYWdzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX2IgPSBpdGVtLnRhZ3MpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5tYXAoKHRhZywgaW5kZXgpID0+IChfanN4KFRhZywgeyBjb2xvcjogJ3N1Y2Nlc3MnLCBsYWJlbDogdGFnIH0sIGAke3RhZ30tJHtpbmRleH1gKSkpKV0gfSksIHJlbmRlck1ldGFDb2x1bW4oaXRlbSwgc2hvd0ZlZSwgZm9ybWF0QW1vdW50KV0gfSkpO1xuICAgICAgICB9IH0pKSk7XG59O1xuZXhwb3J0IGNvbnN0IFBheW1lbnRNZXRob2RTZWxlY3QgPSBtZW1vKFBheW1lbnRNZXRob2RTZWxlY3RCYXNlKTtcbi8vIFByb0Zvcm0uSXRlbSByZWNvZ25pemVzIGZvcm0gY29udHJvbHMgYnkgZGlzcGxheU5hbWUgKEZPUk1fQ09NUE9ORU5UX05BTUVTKTtcbi8vIG1lbW8oKSB3aXBlcyB0aGUgaW5mZXJyZWQgbmFtZSwgc28gd2l0aG91dCB0aGlzIHRoZSBJdGVtIHNpbGVudGx5IHNraXBzXG4vLyB2YWx1ZS9vbkNoYW5nZSBpbmplY3Rpb24gdW5sZXNzIHRoZSBjYWxsIHNpdGUgaGFwcGVucyB0byBwYXNzIGEgcGxhY2Vob2xkZXIuXG5QYXltZW50TWV0aG9kU2VsZWN0LmRpc3BsYXlOYW1lID0gJ1BheW1lbnRNZXRob2RTZWxlY3QnOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
183
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL1NlbGVjdC9QYXltZW50TWV0aG9kL1BheW1lbnRNZXRob2RTZWxlY3QuanMiLCJidXNpbmVzcy9TZWxlY3Qvc3JjL2J1c2luZXNzL1NlbGVjdC9QYXltZW50TWV0aG9kL1BheW1lbnRNZXRob2RTZWxlY3QudHN4Il0sIm5hbWVzIjpbIl9fcmVzdCIsInMiLCJlIiwidCIsInAiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaSIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIm1lbW8iLCJ1c2VNZW1vIiwibnVtZXJpY0Zvcm1hdHRlciIsInVzZUxvY2FsZSIsIkZsZXgiLCJTZWxlY3QiLCJUYWciLCJUeXBvZ3JhcGh5Qm9keSIsImVuVVNCdXNpbmVzcyIsImpvaW5DbHMiLCJXUkFQX0NMUyIsIklDT05fU0laRSIsIkRFU0NfU0VQQVJBVE9SIiwidHJhbnNsYXRlIiwidmFsdWUiLCJ0cmFuc2xhdGlvbnMiLCJ0b09wdGlvbiIsIm1ldGhvZCIsImxvY2FsZSIsIl9hIiwiX2IiLCJfYyIsIl9kIiwiX21ldGhvZCRwYXltZW50TWV0aG9kIiwicGF5bWVudE1ldGhvZFR5cGVEZXNjIiwic3BsaXQiLCJfbWV0aG9kJHBheW1lbnRNZXRob2QyIiwiX3NsaWNlZFRvQXJyYXkiLCJuYW1lIiwic2xhIiwiZGVzY3JpcHRpb24iLCJmZWUiLCJ0cmFuc2FjdGlvblRpbWUiLCJjb25jYXQiLCJ0cmFuc2FjdGlvblVuaXQiLCJ0cmFuc2FjdGlvblVuaXRzIiwidHJpbSIsImR1cmF0aW9uIiwibWF0Y2giLCJzZXR0bGVtZW50VGltZXMiLCJsYWJlbCIsIm1ldGhvZE5hbWVzIiwicGF5bWVudE1ldGhvZFR5cGUiLCJpY29uIiwicGF5bWVudE1ldGhvZEljb25VcmwiLCJ0cmFuc2FjdGlvbkZlZSIsImRlcG9zaXRBbXRNaW4iLCJkZXBvc2l0QXNzZXQiLCJmZWVBc3NldCIsInRyYW5zYWN0aW9uRmVlQXNzZXQiLCJ0YWdzIiwiZm9ybWF0UGF5bWVudEFtb3VudCIsImFzc2V0IiwiZm9ybWF0dGVyIiwiYW1vdW50IiwidGhvdXNhbmRTZXBhcmF0b3IiLCJwcmVmaXgiLCJyZW5kZXJGZWVMaW5lIiwiaXRlbSIsImZlZUxpbmUiLCJQYXltZW50TWV0aG9kU2VsZWN0IiwicmVwbGFjZSIsIl8iLCJrZXkiLCJyZW5kZXJNZXRhQ29sdW1uIiwic2hvd0ZlZSIsImhhc0ZlZSIsInZlcnRpY2FsIiwiYWxpZ24iLCJnYXAiLCJjaGlsZHJlbiIsInNpemUiLCJzdHJvbmciLCJjb2xvciIsIlBheW1lbnRNZXRob2RTZWxlY3RCYXNlIiwib3B0aW9ucyIsImNsYXNzTmFtZSIsImxhYmVsUHJvcCIsIl9hJG5hbWUiLCJwbGFjZWhvbGRlclByb3AiLCJwbGFjZWhvbGRlciIsIl9hJHN0cm9uZyIsIl9hJHNob3dGZWUiLCJmb3JtYXRBbW91bnQiLCJfYSRzaG93VGFncyIsInNob3dUYWdzIiwiX2EkbGlzdE1heEhlaWdodCIsImxpc3RNYXhIZWlnaHQiLCJyZXN0IiwibWFwcGVkIiwibWFwIiwiYXNzaWduIiwicmVuZGVyVmFsdWUiLCJvcHRpb24iLCJfcmVmIiwiZm9udFNpemUiLCJBcnJheSIsImlzQXJyYXkiLCJqdXN0aWZ5Iiwic3R5bGUiLCJ3aWR0aCIsInNyYyIsImFsdCIsIlN0cmluZyIsImhlaWdodCIsInJlbmRlck9wdGlvbkNvbnRlbnQiLCJfcmVmMiIsInRhZyIsImluZGV4IiwiZGlzcGxheU5hbWUiXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFJQSxNQUFNLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgsQ0FBQyxFQUFFLElBQUlJLE1BQU0s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L1BheW1lbnRNZXRob2RTZWxlY3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IG51bWVyaWNGb3JtYXR0ZXIgfSBmcm9tICdyZWFjdC1udW1iZXItZm9ybWF0JztcbmltcG9ydCB7IHVzZUxvY2FsZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvQ29uZmlnUHJvdmlkZXInO1xuaW1wb3J0IHsgRmxleCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvRmxleCc7XG5pbXBvcnQgeyBTZWxlY3QgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL1NlbGVjdCc7XG5pbXBvcnQgeyBUYWcgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL1RhZyc7XG5pbXBvcnQgeyBUeXBvZ3JhcGh5Qm9keSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvVHlwb2dyYXBoeSc7XG5pbXBvcnQgZW5VU0J1c2luZXNzIGZyb20gJy4uLy4uLy4uL2xvY2FsZS9lbl9VUy9idXNpbmVzcyc7XG5pbXBvcnQgeyBqb2luQ2xzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5jb25zdCBXUkFQX0NMUyA9ICdvbS1wYXltZW50LW1ldGhvZC1zZWxlY3QnO1xuY29uc3QgSUNPTl9TSVpFID0gMjA7XG5jb25zdCBERVNDX1NFUEFSQVRPUiA9ICcgLSAnO1xuY29uc3QgdHJhbnNsYXRlID0gKHZhbHVlLCB0cmFuc2xhdGlvbnMpID0+IHRyYW5zbGF0aW9ucyAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHJhbnNsYXRpb25zLCB2YWx1ZSkgPyB0cmFuc2xhdGlvbnNbdmFsdWVdIDogdmFsdWU7XG5jb25zdCB0b09wdGlvbiA9IChtZXRob2QsIGxvY2FsZSkgPT4ge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICBjb25zdCBbbmFtZSwgc2xhXSA9IG1ldGhvZC5wYXltZW50TWV0aG9kVHlwZURlc2Muc3BsaXQoREVTQ19TRVBBUkFUT1IpO1xuICAgIGxldCBkZXNjcmlwdGlvbiA9ICgoX2EgPSBtZXRob2QuZmVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudHJhbnNhY3Rpb25UaW1lKVxuICAgICAgICA/IGAke21ldGhvZC5mZWUudHJhbnNhY3Rpb25UaW1lfSAke3RyYW5zbGF0ZSgoX2IgPSBtZXRob2QuZmVlLnRyYW5zYWN0aW9uVW5pdCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJycsIGxvY2FsZS50cmFuc2FjdGlvblVuaXRzKX1gLnRyaW0oKVxuICAgICAgICA6IHNsYTtcbiAgICBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICAgICAgLy8gT25seSBrbm93biBzZXR0bGVtZW50IHBocmFzZXMgYW5kIG51bWVyaWMgZHVyYXRpb25zIGFyZSBsaWJyYXJ5IGRlZmF1bHRzLlxuICAgICAgICBjb25zdCBkdXJhdGlvbiA9IGRlc2NyaXB0aW9uLm1hdGNoKC9eKFxcZCsoPzpbLi1dXFxkKykqKSAoLispJC8pO1xuICAgICAgICBkZXNjcmlwdGlvbiA9IGR1cmF0aW9uXG4gICAgICAgICAgICA/IGAke2R1cmF0aW9uWzFdfSAke3RyYW5zbGF0ZShkdXJhdGlvblsyXSwgbG9jYWxlLnRyYW5zYWN0aW9uVW5pdHMpfWBcbiAgICAgICAgICAgIDogdHJhbnNsYXRlKGRlc2NyaXB0aW9uLCBsb2NhbGUuc2V0dGxlbWVudFRpbWVzKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbGFiZWw6IHRyYW5zbGF0ZShuYW1lLCBsb2NhbGUubWV0aG9kTmFtZXMpLFxuICAgICAgICB2YWx1ZTogbWV0aG9kLnBheW1lbnRNZXRob2RUeXBlLFxuICAgICAgICBpY29uOiBtZXRob2QucGF5bWVudE1ldGhvZEljb25VcmwsXG4gICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICBmZWU6IChfYyA9IG1ldGhvZC5mZWUpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy50cmFuc2FjdGlvbkZlZSxcbiAgICAgICAgZGVwb3NpdEFtdE1pbjogbWV0aG9kLmRlcG9zaXRBbXRNaW4sXG4gICAgICAgIGRlcG9zaXRBc3NldDogbWV0aG9kLmRlcG9zaXRBc3NldCxcbiAgICAgICAgZmVlQXNzZXQ6IChfZCA9IG1ldGhvZC5mZWUpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC50cmFuc2FjdGlvbkZlZUFzc2V0LFxuICAgICAgICB0YWdzOiBtZXRob2QudGFncyxcbiAgICB9O1xufTtcbmNvbnN0IGZvcm1hdFBheW1lbnRBbW91bnQgPSAodmFsdWUsIGFzc2V0LCBmb3JtYXR0ZXIpID0+IHtcbiAgICBjb25zdCBhbW91bnQgPSBudW1lcmljRm9ybWF0dGVyKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB2b2lkIDAgPyB2YWx1ZSA6ICcnLCB7XG4gICAgICAgIHRob3VzYW5kU2VwYXJhdG9yOiAnLCcsXG4gICAgICAgIHByZWZpeDogZm9ybWF0dGVyID8gJycgOiAnJCcsXG4gICAgfSk7XG4gICAgcmV0dXJuIGZvcm1hdHRlciA/IGZvcm1hdHRlcihhbW91bnQsIGFzc2V0KSA6IGFtb3VudDtcbn07XG5jb25zdCByZW5kZXJGZWVMaW5lID0gKGl0ZW0sIGxvY2FsZSwgZm9ybWF0dGVyKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIHJldHVybiAoKF9hID0gbG9jYWxlLmZlZUxpbmUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGVuVVNCdXNpbmVzcy5QYXltZW50TWV0aG9kU2VsZWN0LmZlZUxpbmUpLnJlcGxhY2UoL1xceyhmZWV8bWluaW11bSlcXH0vZywgKF8sIGtleSkgPT4ga2V5ID09PSAnZmVlJyA/IGZvcm1hdFBheW1lbnRBbW91bnQoaXRlbS5mZWUsIGl0ZW0uZmVlQXNzZXQsIGZvcm1hdHRlcikgOiBmb3JtYXRQYXltZW50QW1vdW50KGl0ZW0uZGVwb3NpdEFtdE1pbiwgaXRlbS5kZXBvc2l0QXNzZXQsIGZvcm1hdHRlcikpO1xufTtcbmNvbnN0IHJlbmRlck1ldGFDb2x1bW4gPSAoaXRlbSwgc2hvd0ZlZSwgbG9jYWxlLCBmb3JtYXR0ZXIpID0+IHtcbiAgICBjb25zdCBoYXNGZWUgPSBzaG93RmVlICYmIChpdGVtLmZlZSAhPSBudWxsIHx8IGl0ZW0uZGVwb3NpdEFtdE1pbiAhPSBudWxsKTtcbiAgICBpZiAoIWl0ZW0uZGVzY3JpcHRpb24gJiYgIWhhc0ZlZSlcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIChfanN4cyhGbGV4LCB7IHZlcnRpY2FsOiB0cnVlLCBhbGlnbjogJ2VuZCcsIGdhcDogMCwgY2hpbGRyZW46IFtpdGVtLmRlc2NyaXB0aW9uICYmIChfanN4KFR5cG9ncmFwaHlCb2R5LCB7IHNpemU6ICdzbScsIHN0cm9uZzogdHJ1ZSwgY29sb3I6ICdkZWZhdWx0LXNlY29uZGFyeScsIGNoaWxkcmVuOiBpdGVtLmRlc2NyaXB0aW9uIH0pKSwgaGFzRmVlICYmIChfanN4KFR5cG9ncmFwaHlCb2R5LCB7IHNpemU6ICdzbScsIGNvbG9yOiAnZGVmYXVsdC1zZWNvbmRhcnknLCBjaGlsZHJlbjogcmVuZGVyRmVlTGluZShpdGVtLCBsb2NhbGUsIGZvcm1hdHRlcikgfSkpXSB9KSk7XG59O1xuY29uc3QgUGF5bWVudE1ldGhvZFNlbGVjdEJhc2UgPSAoX2EpID0+IHtcbiAgICB2YXIgeyBvcHRpb25zLCBjbGFzc05hbWUsIGxhYmVsOiBsYWJlbFByb3AsIG5hbWUgPSAncGF5bWVudE1ldGhvZCcsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlclByb3AsIHN0cm9uZyA9IHRydWUsIHNob3dGZWUgPSB0cnVlLCBmb3JtYXRBbW91bnQsIHNob3dUYWdzID0gdHJ1ZSwgbGlzdE1heEhlaWdodCA9ICdhdXRvJyB9ID0gX2EsIHJlc3QgPSBfX3Jlc3QoX2EsIFtcIm9wdGlvbnNcIiwgXCJjbGFzc05hbWVcIiwgXCJsYWJlbFwiLCBcIm5hbWVcIiwgXCJwbGFjZWhvbGRlclwiLCBcInN0cm9uZ1wiLCBcInNob3dGZWVcIiwgXCJmb3JtYXRBbW91bnRcIiwgXCJzaG93VGFnc1wiLCBcImxpc3RNYXhIZWlnaHRcIl0pO1xuICAgIGNvbnN0IGxvY2FsZSA9IHVzZUxvY2FsZSgnUGF5bWVudE1ldGhvZFNlbGVjdCcpO1xuICAgIGNvbnN0IGxhYmVsID0gbGFiZWxQcm9wICE9PSBudWxsICYmIGxhYmVsUHJvcCAhPT0gdm9pZCAwID8gbGFiZWxQcm9wIDogbG9jYWxlLmxhYmVsO1xuICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXJQcm9wICE9PSBudWxsICYmIHBsYWNlaG9sZGVyUHJvcCAhPT0gdm9pZCAwID8gcGxhY2Vob2xkZXJQcm9wIDogbG9jYWxlLnBsYWNlaG9sZGVyO1xuICAgIGNvbnN0IG1hcHBlZCA9IHVzZU1lbW8oKCkgPT4gb3B0aW9ucy5tYXAobWV0aG9kID0+IHRvT3B0aW9uKG1ldGhvZCwgbG9jYWxlKSksIFtvcHRpb25zLCBsb2NhbGVdKTtcbiAgICByZXR1cm4gKF9qc3goU2VsZWN0LCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IGxpc3RNYXhIZWlnaHQ6IGxpc3RNYXhIZWlnaHQsIGxhYmVsOiBsYWJlbCwgbmFtZTogbmFtZSwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCBjbGFzc05hbWU6IGpvaW5DbHMoV1JBUF9DTFMsIGNsYXNzTmFtZSksIG9wdGlvbnM6IG1hcHBlZCwgcmVuZGVyVmFsdWU6IChvcHRpb24sIHsgZm9udFNpemUgfSkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgaWYgKCFvcHRpb24gfHwgQXJyYXkuaXNBcnJheShvcHRpb24pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBsYWNlaG9sZGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaXRlbSA9IG9wdGlvbjtcbiAgICAgICAgICAgIHJldHVybiAoX2pzeHMoRmxleCwgeyBhbGlnbjogJ2NlbnRlcicsIGp1c3RpZnk6ICdzcGFjZS1iZXR3ZWVuJywgZ2FwOiA4LCBzdHlsZTogeyB3aWR0aDogJzEwMCUnIH0sIGNoaWxkcmVuOiBbX2pzeHMoRmxleCwgeyBhbGlnbjogJ2NlbnRlcicsIGdhcDogOCwgY2hpbGRyZW46IFtpdGVtLmljb24gJiYgKF9qc3goXCJpbWdcIiwgeyBzcmM6IGl0ZW0uaWNvbiwgYWx0OiBTdHJpbmcoKF9hID0gaXRlbS52YWx1ZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLCB3aWR0aDogSUNPTl9TSVpFLCBoZWlnaHQ6IElDT05fU0laRSB9KSksIF9qc3goVHlwb2dyYXBoeUJvZHksIHsgc2l6ZTogZm9udFNpemUsIHN0cm9uZzogc3Ryb25nLCBjaGlsZHJlbjogaXRlbS5sYWJlbCB9KV0gfSksIHJlbmRlck1ldGFDb2x1bW4oaXRlbSwgc2hvd0ZlZSwgbG9jYWxlLCBmb3JtYXRBbW91bnQpXSB9KSk7XG4gICAgICAgIH0sIHJlbmRlck9wdGlvbkNvbnRlbnQ6IChvcHRpb24sIHsgZm9udFNpemUgfSkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBvcHRpb247XG4gICAgICAgICAgICByZXR1cm4gKF9qc3hzKEZsZXgsIHsgYWxpZ246ICdjZW50ZXInLCBqdXN0aWZ5OiAnc3BhY2UtYmV0d2VlbicsIGdhcDogOCwgc3R5bGU6IHsgd2lkdGg6ICcxMDAlJyB9LCBjaGlsZHJlbjogW19qc3hzKEZsZXgsIHsgYWxpZ246ICdjZW50ZXInLCBnYXA6IDgsIGNoaWxkcmVuOiBbaXRlbS5pY29uICYmIChfanN4KFwiaW1nXCIsIHsgc3JjOiBpdGVtLmljb24sIGFsdDogU3RyaW5nKChfYSA9IGl0ZW0udmFsdWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnKSwgd2lkdGg6IElDT05fU0laRSwgaGVpZ2h0OiBJQ09OX1NJWkUgfSkpLCBfanN4KFR5cG9ncmFwaHlCb2R5LCB7IHNpemU6IGZvbnRTaXplLCBzdHJvbmc6IHN0cm9uZywgY2hpbGRyZW46IGl0ZW0ubGFiZWwgfSksIHNob3dUYWdzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX2IgPSBpdGVtLnRhZ3MpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5tYXAoKHRhZywgaW5kZXgpID0+IChfanN4KFRhZywgeyBjb2xvcjogJ3N1Y2Nlc3MnLCBsYWJlbDogdGFnIH0sIGAke3RhZ30tJHtpbmRleH1gKSkpKV0gfSksIHJlbmRlck1ldGFDb2x1bW4oaXRlbSwgc2hvd0ZlZSwgbG9jYWxlLCBmb3JtYXRBbW91bnQpXSB9KSk7XG4gICAgICAgIH0gfSkpKTtcbn07XG5leHBvcnQgY29uc3QgUGF5bWVudE1ldGhvZFNlbGVjdCA9IG1lbW8oUGF5bWVudE1ldGhvZFNlbGVjdEJhc2UpO1xuLy8gUHJvRm9ybS5JdGVtIHJlY29nbml6ZXMgZm9ybSBjb250cm9scyBieSBkaXNwbGF5TmFtZSAoRk9STV9DT01QT05FTlRfTkFNRVMpO1xuLy8gbWVtbygpIHdpcGVzIHRoZSBpbmZlcnJlZCBuYW1lLCBzbyB3aXRob3V0IHRoaXMgdGhlIEl0ZW0gc2lsZW50bHkgc2tpcHNcbi8vIHZhbHVlL29uQ2hhbmdlIGluamVjdGlvbiB1bmxlc3MgdGhlIGNhbGwgc2l0ZSBoYXBwZW5zIHRvIHBhc3MgYSBwbGFjZWhvbGRlci5cblBheW1lbnRNZXRob2RTZWxlY3QuZGlzcGxheU5hbWUgPSAnUGF5bWVudE1ldGhvZFNlbGVjdCc7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9