@1money/component-ui 0.1.16 → 0.1.18
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.
- package/es/business/Filter/Account/Account.js +5 -2
- package/es/business/Filter/Account/interface.d.ts +7 -0
- package/es/business/Filter/DateRange/DateRange.js +30 -13
- package/es/business/Filter/DateRange/style/DateRange.css +80 -9
- package/es/components/Calendar/Calendar.js +14 -10
- package/es/components/Calendar/style/Calendar.css +14 -0
- package/es/components/Dialog/hooks.d.ts +1 -2
- package/es/components/Dialog/hooks.js +2 -21
- package/es/components/Drawer/hooks/useDialogFocus.d.ts +1 -2
- package/es/components/Drawer/hooks/useDialogFocus.js +2 -22
- package/es/components/Input/Mask/Mask.js +2 -6
- package/es/components/Input/Search/Search.js +2 -2
- package/es/components/Pagination/Pagination.js +9 -5
- package/es/components/Pagination/constants.d.ts +1 -0
- package/es/components/Pagination/constants.js +2 -1
- package/es/components/Pagination/interface.d.ts +4 -0
- package/es/components/Pagination/style/Pagination.css +12 -0
- package/es/components/Select/Select.js +15 -4
- package/es/components/Select/SelectSearchControl.d.ts +2 -1
- package/es/components/Select/SelectSearchControl.js +15 -1
- package/es/components/Select/style/Select.css +11 -0
- package/es/components/Select/utils.js +27 -3
- package/es/components/Table/internal/kernel/Table.js +14 -14
- package/es/components/Table/internal/kernel/utils/getScrollBarSize.js +12 -2
- package/es/components/Table/style/Table.css +6 -0
- package/es/components/Tooltip/Tooltip.js +9 -2
- package/es/components/Tooltip/style/Tooltip.css +2 -0
- package/es/components/Typography/constants.d.ts +0 -1
- package/es/components/Typography/constants.js +1 -2
- package/es/components/Typography/useTypographyEnhancements.js +5 -7
- package/es/hooks/useDialogFocus.d.ts +2 -0
- package/es/hooks/useDialogFocus.js +22 -0
- package/es/index.css +1 -1
- package/es/locale/en_US/business.js +2 -1
- package/es/locale/interface.d.ts +1 -0
- package/es/locale/pt_BR/business.js +2 -1
- package/es/locale/zh_CN/business.js +2 -1
- package/lib/business/Filter/Account/Account.js +5 -2
- package/lib/business/Filter/Account/interface.d.ts +7 -0
- package/lib/business/Filter/DateRange/DateRange.js +29 -12
- package/lib/business/Filter/DateRange/style/DateRange.css +80 -9
- package/lib/components/Calendar/Calendar.js +14 -10
- package/lib/components/Calendar/style/Calendar.css +14 -0
- package/lib/components/Dialog/hooks.d.ts +1 -2
- package/lib/components/Dialog/hooks.js +10 -22
- package/lib/components/Drawer/hooks/useDialogFocus.d.ts +1 -2
- package/lib/components/Drawer/hooks/useDialogFocus.js +8 -23
- package/lib/components/Input/Mask/Mask.js +2 -6
- package/lib/components/Input/Search/Search.js +2 -2
- package/lib/components/Pagination/Pagination.js +9 -5
- package/lib/components/Pagination/constants.d.ts +1 -0
- package/lib/components/Pagination/constants.js +2 -1
- package/lib/components/Pagination/interface.d.ts +4 -0
- package/lib/components/Pagination/style/Pagination.css +12 -0
- package/lib/components/Select/Select.js +14 -3
- package/lib/components/Select/SelectSearchControl.d.ts +2 -1
- package/lib/components/Select/SelectSearchControl.js +15 -1
- package/lib/components/Select/style/Select.css +11 -0
- package/lib/components/Select/utils.js +27 -3
- package/lib/components/Table/internal/kernel/Table.js +14 -14
- package/lib/components/Table/internal/kernel/utils/getScrollBarSize.js +12 -2
- package/lib/components/Table/style/Table.css +6 -0
- package/lib/components/Tooltip/Tooltip.js +9 -2
- package/lib/components/Tooltip/style/Tooltip.css +2 -0
- package/lib/components/Typography/constants.d.ts +0 -1
- package/lib/components/Typography/constants.js +2 -3
- package/lib/components/Typography/useTypographyEnhancements.js +4 -6
- package/lib/hooks/useDialogFocus.d.ts +2 -0
- package/lib/hooks/useDialogFocus.js +28 -0
- package/lib/index.css +1 -1
- package/lib/locale/en_US/business.js +2 -1
- package/lib/locale/interface.d.ts +1 -0
- package/lib/locale/pt_BR/business.js +2 -1
- package/lib/locale/zh_CN/business.js +2 -1
- package/package.json +1 -12
- package/scripts/mcp-server/README.md +5 -0
- package/scripts/mcp-server/examples.generated.json +18 -0
- package/scripts/mcp-server/index.generated.json +28 -0
- package/scripts/mcp-server/index.mjs +2 -1
- package/scripts/mcp-server/tools/get-symbol.mjs +5 -25
- package/scripts/mcp-server/tools/resolve-import.mjs +5 -19
- package/scripts/mcp-server/tools/symbol-lookups.mjs +29 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef, memo } from 'react';
|
|
3
|
+
import { useLocale } from '../ConfigProvider';
|
|
3
4
|
import { Icons } from '../Icons';
|
|
4
5
|
import { joinCls } from '../../utils/classnames';
|
|
5
6
|
var SelectSearchControlBase = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
@@ -10,7 +11,9 @@ var SelectSearchControlBase = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
10
11
|
activeDescendant = _ref.activeDescendant,
|
|
11
12
|
onBlur = _ref.onBlur,
|
|
12
13
|
_onChange = _ref.onChange,
|
|
14
|
+
onClear = _ref.onClear,
|
|
13
15
|
onKeyDown = _ref.onKeyDown;
|
|
16
|
+
var locale = useLocale('Input');
|
|
14
17
|
var iconSize = size === 'large' ? 20 : 16;
|
|
15
18
|
return _jsxs("div", {
|
|
16
19
|
className: classes('search', joinCls(classes("search-".concat(size)))),
|
|
@@ -34,10 +37,21 @@ var SelectSearchControlBase = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
34
37
|
onChange: function onChange(event) {
|
|
35
38
|
return _onChange(event.target.value, event);
|
|
36
39
|
}
|
|
40
|
+
}), value.length > 0 && _jsx("button", {
|
|
41
|
+
type: "button",
|
|
42
|
+
className: classes('search-clear', classes('search-icon')),
|
|
43
|
+
"aria-label": locale.clearSearchAria,
|
|
44
|
+
onBlur: onBlur,
|
|
45
|
+
onClick: onClear,
|
|
46
|
+
children: _jsx(Icons, {
|
|
47
|
+
name: "cross",
|
|
48
|
+
size: iconSize,
|
|
49
|
+
color: "currentColor"
|
|
50
|
+
})
|
|
37
51
|
})]
|
|
38
52
|
});
|
|
39
53
|
});
|
|
40
54
|
SelectSearchControlBase.displayName = 'SelectSearchControl';
|
|
41
55
|
export var SelectSearchControl = /*#__PURE__*/memo(SelectSearchControlBase);
|
|
42
56
|
export default SelectSearchControl;
|
|
43
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdFNlYXJjaENvbnRyb2wuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1NlbGVjdC9TZWxlY3RTZWFyY2hDb250cm9sLnRzeCJdLCJuYW1lcyI6WyJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiZm9yd2FyZFJlZiIsIm1lbW8iLCJ1c2VMb2NhbGUiLCJJY29ucyIsImpvaW5DbHMiLCJTZWxlY3RTZWFyY2hDb250cm9sQmFzZSIsIl9yZWYiLCJyZWYiLCJjbGFzc2VzIiwic2l6ZSIsInBsYWNlaG9sZGVyIiwidmFsdWUiLCJhY3RpdmVEZXNjZW5kYW50Iiwib25CbHVyIiwib25DaGFuZ2UiLCJvbkNsZWFyIiwib25LZXlEb3duIiwibG9jYWxlIiwiaWNvblNpemUiLCJjbGFzc05hbWUiLCJjb25jYXQiLCJjaGlsZHJlbiIsIm5hbWUiLCJjb2xvciIsInR5cGUiLCJldmVudCIsInRhcmdldCIsImxlbmd0aCIsImNsZWFyU2VhcmNoQXJpYSIsIm9uQ2xpY2siLCJkaXNwbGF5TmFtZSIsIlNlbGVjdFNlYXJjaENvbnRyb2wiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLEdBQUcsSUFBSUMsSUFBSSxFQUFFQyxJQUFJLElBQUlDLEtBQUssUUFBUSxtQkFBbUI7QUNBOUQsU0FBU0MsVUFBVSxFQUFFQyxJQUFJLFFBQVEsT0FBTztBQUN4QyxTQUFTQyxTQUFTLFFBQVEsbUJBQW1CO0FBQzdDLFNBQVNDLEtBQUssUUFBUSxVQUFVO0FBQ2hDLFNBQVNDLE9BQU8sUUFBUSx3QkFBd0I7QUFxQmhELElBQU1DLHVCQUF1QixnQkFBR0wsVUFBVSxDQUN4QyxVQUFBTSxJQUFBLEVBWUVDLEdBQUcsRUFDRDtFQUFBLElBWEFDLE9BQU8sR0FBQUYsSUFBQSxDQUFQRSxPQUFPO0lBQ1BDLElBQUksR0FBQUgsSUFBQSxDQUFKRyxJQUFJO0lBQ0pDLFdBQVcsR0FBQUosSUFBQSxDQUFYSSxXQUFXO0lBQ1hDLEtBQUssR0FBQUwsSUFBQSxDQUFMSyxLQUFLO0lBQ0xDLGdCQUFnQixHQUFBTixJQUFBLENBQWhCTSxnQkFBZ0I7SUFDaEJDLE1BQU0sR0FBQVAsSUFBQSxDQUFOTyxNQUFNO0lBQ05DLFNBQVEsR0FBQVIsSUFBQSxDQUFSUSxRQUFRO0lBQ1JDLE9BQU8sR0FBQVQsSUFBQSxDQUFQUyxPQUFPO0lBQ1BDLFNBQVMsR0FBQVYsSUFBQSxDQUFUVSxTQUFTO0VBSVgsSUFBTUMsTUFBTSxHQUFHZixTQUFTLENBQUMsT0FBTyxDQUFDO0VBQ2pDLElBQU1nQixRQUFRLEdBQUdULElBQUksS0FBSyxPQUFPLEdBQUcsRUFBRSxHQUFHLEVBQUU7RUFFM0MsT0FDRVYsS0FBQSxDQUFBLEtBQUEsRUFBQTtJQUFLb0IsU0FBUyxFQUFFWCxPQUFPLENBQUMsUUFBUSxFQUFFSixPQUFPLENBQUNJLE9BQU8sV0FBQVksTUFBQSxDQUFXWCxJQUFJLENBQUUsQ0FBQyxDQUFDLENBQUM7SUFBQVksUUFBQSxFQUFBLENBQ25FeEIsSUFBQSxDQUFBLE1BQUEsRUFBQTtNQUFNc0IsU0FBUyxFQUFFWCxPQUFPLENBQUMsYUFBYSxDQUFDO01BQUFhLFFBQUEsRUFDckN4QixJQUFBLENBQUNNLEtBQUssRUFBQTtRQUFDbUIsSUFBSSxFQUFDLFFBQVE7UUFBQ2IsSUFBSSxFQUFFUyxRQUFRO1FBQUVLLEtBQUssRUFBQztNQUFjLENBQUE7SUFBRyxDQUFBLENBQ3ZELEVBQ1AxQixJQUFBLENBQUEsT0FBQSxFQUFBO01BQ0VVLEdBQUcsRUFBRUEsR0FBRztNQUNSaUIsSUFBSSxFQUFDLE1BQU07TUFDWGIsS0FBSyxFQUFFQSxLQUFLO01BQ1pELFdBQVcsRUFBRUEsV0FBVztNQUFBLFlBQUEsRUFDWkEsV0FBVztNQUFBLHVCQUFBLEVBQ0FFLGdCQUFnQjtNQUN2Q08sU0FBUyxFQUFFWCxPQUFPLENBQUMsY0FBYyxFQUFFSixPQUFPLENBQUNJLE9BQU8saUJBQUFZLE1BQUEsQ0FBaUJYLElBQUksQ0FBRSxDQUFDLENBQUMsQ0FBQztNQUM1RUksTUFBTSxFQUFFQSxNQUFNO01BQ2RHLFNBQVMsRUFBRUEsU0FBUztNQUNwQkYsUUFBUSxFQUFFLFNBQVZBLFFBQVFBLENBQUdXLEtBQUs7UUFBQSxPQUFLWCxTQUFRLENBQUNXLEtBQUssQ0FBQ0MsTUFBTSxDQUFDZixLQUFLLEVBQUVjLEtBQUssQ0FBQztNQUFBO0lBQUEsQ0FBQSxDQUN4RCxFQUNEZCxLQUFLLENBQUNnQixNQUFNLEdBQUcsQ0FBQyxJQUNmOUIsSUFBQSxDQUFBLFFBQUEsRUFBQTtNQUNFMkIsSUFBSSxFQUFDLFFBQVE7TUFDYkwsU0FBUyxFQUFFWCxPQUFPLENBQUMsY0FBYyxFQUFFQSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7TUFBQSxZQUFBLEVBQzlDUyxNQUFNLENBQUNXLGVBQWU7TUFDbENmLE1BQU0sRUFBRUEsTUFBTTtNQUNkZ0IsT0FBTyxFQUFFZCxPQUFPO01BQUFNLFFBQUEsRUFFaEJ4QixJQUFBLENBQUNNLEtBQUssRUFBQTtRQUFDbUIsSUFBSSxFQUFDLE9BQU87UUFBQ2IsSUFBSSxFQUFFUyxRQUFRO1FBQUVLLEtBQUssRUFBQztNQUFjLENBQUE7SUFBRyxDQUFBLENBRTlEO0VBQUEsQ0FBQSxDQUNHO0FBRVYsQ0FBQyxDQUNGO0FBRURsQix1QkFBdUIsQ0FBQ3lCLFdBQVcsR0FBRyxxQkFBcUI7QUFFM0QsT0FBTyxJQUFNQyxtQkFBbUIsZ0JBQUc5QixJQUFJLENBQUNJLHVCQUF1QixDQUFDO0FBRWhFLGVBQWUwQixtQkFBbUIiLCJmaWxlIjoiY29tcG9uZW50cy9TZWxlY3QvU2VsZWN0U2VhcmNoQ29udHJvbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCBtZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlTG9jYWxlIH0gZnJvbSAnLi4vQ29uZmlnUHJvdmlkZXInO1xuaW1wb3J0IHsgSWNvbnMgfSBmcm9tICcuLi9JY29ucyc7XG5pbXBvcnQgeyBqb2luQ2xzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5jb25zdCBTZWxlY3RTZWFyY2hDb250cm9sQmFzZSA9IGZvcndhcmRSZWYoKHsgY2xhc3Nlcywgc2l6ZSwgcGxhY2Vob2xkZXIsIHZhbHVlLCBhY3RpdmVEZXNjZW5kYW50LCBvbkJsdXIsIG9uQ2hhbmdlLCBvbkNsZWFyLCBvbktleURvd24sIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IGxvY2FsZSA9IHVzZUxvY2FsZSgnSW5wdXQnKTtcbiAgICBjb25zdCBpY29uU2l6ZSA9IHNpemUgPT09ICdsYXJnZScgPyAyMCA6IDE2O1xuICAgIHJldHVybiAoX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3NlYXJjaCcsIGpvaW5DbHMoY2xhc3Nlcyhgc2VhcmNoLSR7c2l6ZX1gKSkpLCBjaGlsZHJlbjogW19qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdzZWFyY2gtaWNvbicpLCBjaGlsZHJlbjogX2pzeChJY29ucywgeyBuYW1lOiBcInNlYXJjaFwiLCBzaXplOiBpY29uU2l6ZSwgY29sb3I6IFwiY3VycmVudENvbG9yXCIgfSkgfSksIF9qc3goXCJpbnB1dFwiLCB7IHJlZjogcmVmLCB0eXBlOiBcInRleHRcIiwgdmFsdWU6IHZhbHVlLCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIFwiYXJpYS1sYWJlbFwiOiBwbGFjZWhvbGRlciwgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIjogYWN0aXZlRGVzY2VuZGFudCwgY2xhc3NOYW1lOiBjbGFzc2VzKCdzZWFyY2gtaW5wdXQnLCBqb2luQ2xzKGNsYXNzZXMoYHNlYXJjaC1pbnB1dC0ke3NpemV9YCkpKSwgb25CbHVyOiBvbkJsdXIsIG9uS2V5RG93bjogb25LZXlEb3duLCBvbkNoYW5nZTogKGV2ZW50KSA9PiBvbkNoYW5nZShldmVudC50YXJnZXQudmFsdWUsIGV2ZW50KSB9KSwgdmFsdWUubGVuZ3RoID4gMCAmJiAoX2pzeChcImJ1dHRvblwiLCB7IHR5cGU6IFwiYnV0dG9uXCIsIGNsYXNzTmFtZTogY2xhc3Nlcygnc2VhcmNoLWNsZWFyJywgY2xhc3Nlcygnc2VhcmNoLWljb24nKSksIFwiYXJpYS1sYWJlbFwiOiBsb2NhbGUuY2xlYXJTZWFyY2hBcmlhLCBvbkJsdXI6IG9uQmx1ciwgb25DbGljazogb25DbGVhciwgY2hpbGRyZW46IF9qc3goSWNvbnMsIHsgbmFtZTogXCJjcm9zc1wiLCBzaXplOiBpY29uU2l6ZSwgY29sb3I6IFwiY3VycmVudENvbG9yXCIgfSkgfSkpXSB9KSk7XG59KTtcblNlbGVjdFNlYXJjaENvbnRyb2xCYXNlLmRpc3BsYXlOYW1lID0gJ1NlbGVjdFNlYXJjaENvbnRyb2wnO1xuZXhwb3J0IGNvbnN0IFNlbGVjdFNlYXJjaENvbnRyb2wgPSBtZW1vKFNlbGVjdFNlYXJjaENvbnRyb2xCYXNlKTtcbmV4cG9ydCBkZWZhdWx0IFNlbGVjdFNlYXJjaENvbnRyb2w7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -354,6 +354,17 @@
|
|
|
354
354
|
justify-content: center;
|
|
355
355
|
color: var(--om-icon-default, #131313);
|
|
356
356
|
}
|
|
357
|
+
.om-component-ui-select-search-clear {
|
|
358
|
+
padding: 0;
|
|
359
|
+
cursor: pointer;
|
|
360
|
+
background: transparent;
|
|
361
|
+
border: 0;
|
|
362
|
+
border-radius: var(--om-radius-100, 4px);
|
|
363
|
+
}
|
|
364
|
+
.om-component-ui-select-search-clear:focus-visible {
|
|
365
|
+
outline: 2px solid var(--om-border-brand, #073387);
|
|
366
|
+
outline-offset: 2px;
|
|
367
|
+
}
|
|
357
368
|
.om-component-ui-select-search-input {
|
|
358
369
|
flex: 1 1 auto;
|
|
359
370
|
min-width: 0;
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
3
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
4
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
2
5
|
export function normalizeSize(size) {
|
|
3
6
|
if (size === 'small' || size === 'extra-small') return size;
|
|
4
7
|
return 'large';
|
|
@@ -42,8 +45,28 @@ function findOptionByValue(options, value) {
|
|
|
42
45
|
}
|
|
43
46
|
export function getSelectedOptions(options, value, multiple) {
|
|
44
47
|
if (isSelectMultipleValue(value, multiple)) {
|
|
48
|
+
if (value.length === 0) return [];
|
|
49
|
+
var optionsByValue = new Map();
|
|
50
|
+
var _iterator = _createForOfIteratorHelper(options),
|
|
51
|
+
_step;
|
|
52
|
+
try {
|
|
53
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
54
|
+
var option = _step.value;
|
|
55
|
+
var optionValue = option.value;
|
|
56
|
+
// `find` used strict equality: NaN never matched, and duplicate values
|
|
57
|
+
// resolved to the first option. Map alone would change both rules.
|
|
58
|
+
if (!Number.isNaN(optionValue) && !optionsByValue.has(optionValue)) {
|
|
59
|
+
optionsByValue.set(optionValue, option);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
} catch (err) {
|
|
63
|
+
_iterator.e(err);
|
|
64
|
+
} finally {
|
|
65
|
+
_iterator.f();
|
|
66
|
+
}
|
|
45
67
|
return value.map(function (item) {
|
|
46
|
-
|
|
68
|
+
var _a;
|
|
69
|
+
return (_a = optionsByValue.get(item)) !== null && _a !== void 0 ? _a : null;
|
|
47
70
|
}).filter(function (option) {
|
|
48
71
|
return option !== null;
|
|
49
72
|
});
|
|
@@ -130,8 +153,9 @@ export function getMultipleValue(value) {
|
|
|
130
153
|
return Array.isArray(value) ? value : [];
|
|
131
154
|
}
|
|
132
155
|
export function getOptionsByValues(options, values) {
|
|
156
|
+
var selectedValues = new Set(values);
|
|
133
157
|
return options.filter(function (option) {
|
|
134
|
-
return
|
|
158
|
+
return selectedValues.has(option.value);
|
|
135
159
|
});
|
|
136
160
|
}
|
|
137
161
|
export function toggleMultipleValue(currentValue, optionValue) {
|
|
@@ -151,4 +175,4 @@ export function removeMultipleValue(currentValue, optionValue) {
|
|
|
151
175
|
export function isOptionSelected(value, multiple, optionValue) {
|
|
152
176
|
return isSelectMultipleValue(value, multiple) ? value.includes(optionValue) : value === optionValue;
|
|
153
177
|
}
|
|
154
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L3V0aWxzLnRzIiwiY29tcG9uZW50cy9TZWxlY3QvdXRpbHMuanMiXSwibmFtZXMiOlsibm9ybWFsaXplU2l6ZSIsInNpemUiLCJGT05UX1NJWkVfQllfU0VMRUNUX1NJWkUiLCJsYXJnZSIsInNtYWxsIiwiZ2V0Rm9udFNpemUiLCJleHRyYWN0T3B0aW9uVGV4dCIsIm9wdGlvbiIsImxhYmVsIiwiU3RyaW5nIiwidmFsdWUiLCJleHRyYWN0Tm9kZVRleHQiLCJpc1NlbGVjdE11bHRpcGxlVmFsdWUiLCJtdWx0aXBsZSIsIkFycmF5IiwiaXNBcnJheSIsImlzU2VsZWN0T3B0aW9uR3JvdXAiLCJvcHRpb25zIiwiZmluZE9wdGlvbkJ5VmFsdWUiLCJfYSIsImZpbmQiLCJnZXRTZWxlY3RlZE9wdGlvbnMiLCJtYXAiLCJpdGVtIiwiZmlsdGVyIiwidW5kZWZpbmVkIiwibWF0Y2hlZCIsImdldE9wdGlvblRhZ0xhYmVsIiwibm9ybWFsaXplT3B0aW9uR3JvdXBzIiwiZ3JvdXBzIiwidW5ncm91cGVkT3B0aW9ucyIsInVuZ3JvdXBlZEdyb3VwSW5kZXgiLCJwdXNoVW5ncm91cGVkT3B0aW9ucyIsImxlbmd0aCIsInB1c2giLCJrZXkiLCJjb25jYXQiLCJmb3JFYWNoIiwiaW5kZXgiLCJmbGF0dGVuT3B0aW9uR3JvdXBzIiwiZmxhdE1hcCIsImdyb3VwIiwiZ2V0T3B0aW9uU2VhcmNoVGV4dCIsImRlc2NyaXB0aW9uIiwic2VhcmNoVGV4dCIsIkJvb2xlYW4iLCJqb2luIiwidHJpbSIsIm1hdGNoZXNPcHRpb25TZWFyY2giLCJzZWFyY2hWYWx1ZSIsImZpbHRlck9wdGlvbiIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJmaWx0ZXJPcHRpb25Hcm91cHMiLCJub3JtYWxpemVkU2VhcmNoVmFsdWUiLCJyZWR1Y2UiLCJyZXN1bHQiLCJncm91cExhYmVsVGV4dCIsIm1hdGNoZWRPcHRpb25zIiwiT2JqZWN0IiwiYXNzaWduIiwiZ2V0TXVsdGlwbGVWYWx1ZSIsImdldE9wdGlvbnNCeVZhbHVlcyIsInZhbHVlcyIsInRvZ2dsZU11bHRpcGxlVmFsdWUiLCJjdXJyZW50VmFsdWUiLCJvcHRpb25WYWx1ZSIsIl90b0NvbnN1bWFibGVBcnJheSIsInJlbW92ZU11bHRpcGxlVmFsdWUiLCJpc09wdGlvblNlbGVjdGVkIl0sIm1hcHBpbmdzIjoiO0FBbUJBLE9BQU0sU0FBVUEsYUFBYUEsQ0FBQ0MsSUFBMEIsRUFBQTtFQUN0RCxJQUFJQSxJQUFJLEtBQUssT0FBTyxJQUFJQSxJQUFJLEtBQUssYUFBYSxFQUFFLE9BQU9BLElBQUk7RUFDM0QsT0FBTyxPQUFPO0FBQ2hCO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1DLHdCQUF3QixHQUEyQztFQUN2RUMsS0FBSyxFQUFFLElBQUk7RUFDWEMsS0FBSyxFQUFFLElBQUk7RUFDWCxhQUFhLEVBQUU7QUNsQmpCLENEbUJDO0FBRUQsT0FBTSxTQUFVQyxXQUFXQSxDQUFDSixJQUFnQixFQUFBO0VBQzFDLE9BQU9DLHdCQUF3QixDQUFDRCxJQUFJLENBQUM7QUFDdkM7QUFFQSxPQUFNLFNBQVVLLGlCQUFpQkEsQ0FBQ0MsTUFBb0IsRUFBQTtFQUNwRCxJQUFJLE9BQU9BLE1BQU0sQ0FBQ0MsS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPRCxNQUFNLENBQUNDLEtBQUssS0FBSyxRQUFRLEVBQUU7SUFDeEUsT0FBT0MsTUFBTSxDQUFDRixNQUFNLENBQUNDLEtBQUssQ0FBQztFQUM3QjtFQUVBLE9BQU9DLE1BQU0sQ0FBQ0YsTUFBTSxDQUFDRyxLQUFLLENBQUM7QUFDN0I7QUFFQSxTQUFTQyxlQUFlQSxDQUFDRCxLQUEyRCxFQUFBO0VBQ2xGLElBQUksT0FBT0EsS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPQSxLQUFLLEtBQUssUUFBUSxFQUFFO0lBQzFELE9BQU9ELE1BQU0sQ0FBQ0MsS0FBSyxDQUFDO0VBQ3RCO0VBRUEsT0FBTyxFQUFFO0FBQ1g7QUFFQSxP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dXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVTaXplKHNpemUpIHtcbiAgICBpZiAoc2l6ZSA9PT0gJ3NtYWxsJyB8fCBzaXplID09PSAnZXh0cmEtc21hbGwnKVxuICAgICAgICByZXR1cm4gc2l6ZTtcbiAgICByZXR1cm4gJ2xhcmdlJztcbn1cbi8vIGBleHRyYS1zbWFsbGAgaXMgYSAzMnB4IHRyaWdnZXIgdGhhdCByZW5kZXJzIGl0cyB2YWx1ZSBhdCBgYm9keSBzbWAgKDEycHgpIHNvXG4vLyB0aGUgY29sbGFwc2VkIHRyaWdnZXIgbWF0Y2hlcyB0aGUgMTJweCBvcHRpb24gcm93cyB0aGUgRmlsdGVyIGRyb3Bkb3duc1xuLy8gKE9wdGlvbkZpbHRlci9EYXRlUmFuZ2UvQXNzZXQvQWNjb3VudCkgcmVuZGVyIGluIHRoZSBvcGVuIHBhbmVsLiBUaGlzIHNpemVcbi8vIGFsc28gZmxvd3MgaW50byBgcmVuZGVyVmFsdWVNZXRhLmZvbnRTaXplYCwga2VlcGluZyBjdXN0b20gdHJpZ2dlci9vcHRpb25cbi8vIGNvbnRlbnQgYWxpZ25lZCB3aXRoIHRoZSB0cmlnZ2VyIHR5cG9ncmFwaHkuXG5jb25zdCBGT05UX1NJWkVfQllfU0VMRUNUX1NJWkUgPSB7XG4gICAgbGFyZ2U6ICdsZycsXG4gICAgc21hbGw6ICdtZCcsXG4gICAgJ2V4dHJhLXNtYWxsJzogJ3NtJyxcbn07XG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9udFNpemUoc2l6ZSkge1xuICAgIHJldHVybiBGT05UX1NJWkVfQllfU0VMRUNUX1NJWkVbc2l6ZV07XG59XG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdE9wdGlvblRleHQob3B0aW9uKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb24ubGFiZWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBvcHRpb24ubGFiZWwgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcob3B0aW9uLmxhYmVsKTtcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyhvcHRpb24udmFsdWUpO1xufVxuZnVuY3Rpb24gZXh0cmFjdE5vZGVUZXh0KHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzU2VsZWN0TXVsdGlwbGVWYWx1ZSh2YWx1ZSwgbXVsdGlwbGUpIHtcbiAgICByZXR1cm4gbXVsdGlwbGUgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTZWxlY3RPcHRpb25Hcm91cChvcHRpb24pIHtcbiAgICByZXR1cm4gJ29wdGlvbnMnIGluIG9wdGlvbiAmJiBBcnJheS5pc0FycmF5KG9wdGlvbi5vcHRpb25zKTtcbn1cbmZ1bmN0aW9uIGZpbmRPcHRpb25CeVZhbHVlKG9wdGlvbnMsIHZhbHVlKSB7XG4gICAgdmFyIF9hO1xuICAgIHJldHVybiAoX2EgPSBvcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSB2YWx1ZSkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG51bGw7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VsZWN0ZWRPcHRpb25zKG9wdGlvbnMsIHZhbHVlLCBtdWx0aXBsZSkge1xuICAgIGlmIChpc1NlbGVjdE11bHRpcGxlVmFsdWUodmFsdWUsIG11bHRpcGxlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IGZpbmRPcHRpb25CeVZhbHVlKG9wdGlvbnMsIGl0ZW0pKVxuICAgICAgICAgICAgLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24gIT09IG51bGwpO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgbWF0Y2hlZCA9IGZpbmRPcHRpb25CeVZhbHVlKG9wdGlvbnMsIHZhbHVlKTtcbiAgICByZXR1cm4gbWF0Y2hlZCA/IFttYXRjaGVkXSA6IFtdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE9wdGlvblRhZ0xhYmVsKG9wdGlvbikge1xuICAgIHJldHVybiBleHRyYWN0T3B0aW9uVGV4dChvcHRpb24pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZU9wdGlvbkdyb3VwcyhvcHRpb25zKSB7XG4gICAgY29uc3QgZ3JvdXBzID0gW107XG4gICAgbGV0IHVuZ3JvdXBlZE9wdGlvbnMgPSBbXTtcbiAgICBsZXQgdW5ncm91cGVkR3JvdXBJbmRleCA9IDA7XG4gICAgY29uc3QgcHVzaFVuZ3JvdXBlZE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgICAgIGlmICh1bmdyb3VwZWRPcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGdyb3Vwcy5wdXNoKHtcbiAgICAgICAgICAgIGtleTogYHVuZ3JvdXBlZC0ke3VuZ3JvdXBlZEdyb3VwSW5kZXh9YCxcbiAgICAgICAgICAgIG9wdGlvbnM6IHVuZ3JvdXBlZE9wdGlvbnMsXG4gICAgICAgIH0pO1xuICAgICAgICB1bmdyb3VwZWRPcHRpb25zID0gW107XG4gICAgICAgIHVuZ3JvdXBlZEdyb3VwSW5kZXggKz0gMTtcbiAgICB9O1xuICAgIG9wdGlvbnMuZm9yRWFjaCgob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoaXNTZWxlY3RPcHRpb25Hcm91cChvcHRpb24pKSB7XG4gICAgICAgICAgICBwdXNoVW5ncm91cGVkT3B0aW9ucygpO1xuICAgICAgICAgICAgZ3JvdXBzLnB1c2goe1xuICAgICAgICAgICAgICAgIGtleTogb3B0aW9uLmtleSA/IFN0cmluZyhvcHRpb24ua2V5KSA6IGBncm91cC0ke2luZGV4fWAsXG4gICAgICAgICAgICAgICAgbGFiZWw6IG9wdGlvbi5sYWJlbCxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBvcHRpb24ub3B0aW9ucyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHVuZ3JvdXBlZE9wdGlvbnMucHVzaChvcHRpb24pO1xuICAgIH0pO1xuICAgIHB1c2hVbmdyb3VwZWRPcHRpb25zKCk7XG4gICAgcmV0dXJuIGdyb3Vwcztcbn1cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuT3B0aW9uR3JvdXBzKGdyb3Vwcykge1xuICAgIHJldHVybiBncm91cHMuZmxhdE1hcCgoZ3JvdXApID0+IGdyb3VwLm9wdGlvbnMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE9wdGlvblNlYXJjaFRleHQob3B0aW9uKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgZXh0cmFjdE9wdGlvblRleHQob3B0aW9uKSxcbiAgICAgICAgZXh0cmFjdE5vZGVUZXh0KG9wdGlvbi5kZXNjcmlwdGlvbiksXG4gICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0LFxuICAgICAgICBTdHJpbmcob3B0aW9uLnZhbHVlKSxcbiAgICBdXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgLmpvaW4oJyAnKVxuICAgICAgICAudHJpbSgpO1xufVxuZnVuY3Rpb24gbWF0Y2hlc09wdGlvblNlYXJjaChzZWFyY2hWYWx1ZSwgb3B0aW9uLCBmaWx0ZXJPcHRpb24pIHtcbiAgICBpZiAoIXNlYXJjaFZhbHVlLnRyaW0oKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlck9wdGlvbikge1xuICAgICAgICByZXR1cm4gZmlsdGVyT3B0aW9uKHNlYXJjaFZhbHVlLCBvcHRpb24pO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0T3B0aW9uU2VhcmNoVGV4dChvcHRpb24pLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlck9wdGlvbkdyb3Vwcyhncm91cHMsIHNlYXJjaFZhbHVlLCBmaWx0ZXJPcHRpb24pIHtcbiAgICBpZiAoIXNlYXJjaFZhbHVlLnRyaW0oKSkge1xuICAgICAgICByZXR1cm4gZ3JvdXBzO1xuICAgIH1cbiAgICBjb25zdCBub3JtYWxpemVkU2VhcmNoVmFsdWUgPSBzZWFyY2hWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gZ3JvdXBzLnJlZHVjZSgocmVzdWx0LCBncm91cCkgPT4ge1xuICAgICAgICBjb25zdCBncm91cExhYmVsVGV4dCA9IGV4dHJhY3ROb2RlVGV4dChncm91cC5sYWJlbCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3QgbWF0Y2hlZE9wdGlvbnMgPSBncm91cExhYmVsVGV4dC5pbmNsdWRlcyhub3JtYWxpemVkU2VhcmNoVmFsdWUpXG4gICAgICAgICAgICA/IGdyb3VwLm9wdGlvbnNcbiAgICAgICAgICAgIDogZ3JvdXAub3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4gbWF0Y2hlc09wdGlvblNlYXJjaChzZWFyY2hWYWx1ZSwgb3B0aW9uLCBmaWx0ZXJPcHRpb24pKTtcbiAgICAgICAgaWYgKG1hdGNoZWRPcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQucHVzaChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGdyb3VwKSwgeyBvcHRpb25zOiBtYXRjaGVkT3B0aW9ucyB9KSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSwgW10pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE11bHRpcGxlVmFsdWUodmFsdWUpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE9wdGlvbnNCeVZhbHVlcyhvcHRpb25zLCB2YWx1ZXMpIHtcbiAgICByZXR1cm4gb3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4gdmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZU11bHRpcGxlVmFsdWUoY3VycmVudFZhbHVlLCBvcHRpb25WYWx1ZSkge1xuICAgIGNvbnN0IHZhbHVlcyA9IGdldE11bHRpcGxlVmFsdWUoY3VycmVudFZhbHVlKTtcbiAgICBpZiAodmFsdWVzLmluY2x1ZGVzKG9wdGlvblZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWVzLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPT0gb3B0aW9uVmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gWy4uLnZhbHVlcywgb3B0aW9uVmFsdWVdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZU11bHRpcGxlVmFsdWUoY3VycmVudFZhbHVlLCBvcHRpb25WYWx1ZSkge1xuICAgIHJldHVybiBnZXRNdWx0aXBsZVZhbHVlKGN1cnJlbnRWYWx1ZSkuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9PSBvcHRpb25WYWx1ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNPcHRpb25TZWxlY3RlZCh2YWx1ZSwgbXVsdGlwbGUsIG9wdGlvblZhbHVlKSB7XG4gICAgcmV0dXJuIGlzU2VsZWN0TXVsdGlwbGVWYWx1ZSh2YWx1ZSwgbXVsdGlwbGUpXG4gICAgICAgID8gdmFsdWUuaW5jbHVkZXMob3B0aW9uVmFsdWUpXG4gICAgICAgIDogdmFsdWUgPT09IG9wdGlvblZhbHVlO1xufSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
178
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L3V0aWxzLnRzIiwiY29tcG9uZW50cy9TZWxlY3QvdXRpbHMuanMiXSwibmFtZXMiOlsibm9ybWFsaXplU2l6ZSIsInNpemUiLCJGT05UX1NJWkVfQllfU0VMRUNUX1NJWkUiLCJsYXJnZSIsInNtYWxsIiwiZ2V0Rm9udFNpemUiLCJleHRyYWN0T3B0aW9uVGV4dCIsIm9wdGlvbiIsImxhYmVsIiwiU3RyaW5nIiwidmFsdWUiLCJleHRyYWN0Tm9kZVRleHQiLCJpc1NlbGVjdE11bHRpcGxlVmFsdWUiLCJtdWx0aXBsZSIsIkFycmF5IiwiaXNBcnJheSIsImlzU2VsZWN0T3B0aW9uR3JvdXAiLCJvcHRpb25zIiwiZmluZE9wdGlvbkJ5VmFsdWUiLCJfYSIsImZpbmQiLCJnZXRTZWxlY3RlZE9wdGlvbnMiLCJsZW5ndGgiLCJvcHRpb25zQnlWYWx1ZSIsIk1hcCIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJvcHRpb25WYWx1ZSIsIk51bWJlciIsImlzTmFOIiwiaGFzIiwic2V0IiwiZXJyIiwiZSIsImYiLCJtYXAiLCJpdGVtIiwiZ2V0IiwiZmlsdGVyIiwidW5kZWZpbmVkIiwibWF0Y2hlZCIsImdldE9wdGlvblRhZ0xhYmVsIiwibm9ybWFsaXplT3B0aW9uR3JvdXBzIiwiZ3JvdXBzIiwidW5ncm91cGVkT3B0aW9ucyIsInVuZ3JvdXBlZEdyb3VwSW5kZXgiLCJwdXNoVW5ncm91cGVkT3B0aW9ucyIsInB1c2giLCJrZXkiLCJjb25jYXQiLCJmb3JFYWNoIiwiaW5kZXgiLCJmbGF0dGVuT3B0aW9uR3JvdXBzIiwiZmxhdE1hcCIsImdyb3VwIiwiZ2V0T3B0aW9uU2VhcmNoVGV4dCIsImRlc2NyaXB0aW9uIiwic2VhcmNoVGV4dCIsIkJvb2xlYW4iLCJqb2luIiwidHJpbSIsIm1hdGNoZXNPcHRpb25TZWFyY2giLCJzZWFyY2hWYWx1ZSIsImZpbHRlck9wdGlvbiIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJmaWx0ZXJPcHRpb25Hcm91cHMiLCJub3JtYWxpemVkU2VhcmNoVmFsdWUiLCJyZWR1Y2UiLCJyZXN1bHQiLCJncm91cExhYmVsVGV4dCIsIm1hdGNoZWRPcHRpb25zIiwiT2JqZWN0IiwiYXNzaWduIiwiZ2V0TXVsdGlwbGVWYWx1ZSIsImdldE9wdGlvbnNCeVZhbHVlcyIsInZhbHVlcyIsInNlbGVjdGVkVmFsdWVzIiwiU2V0IiwidG9nZ2xlTXVsdGlwbGVWYWx1ZSIsImN1cnJlbnRWYWx1ZSIsIl90b0NvbnN1bWFibGVBcnJheSIsInJlbW92ZU11bHRpcGxlVmFsdWUiLCJpc09wdGlvblNlbGVjdGVkIl0sIm1hcHBpbmdzIjoiOzs7O0FBbUJBLE9BQU0sU0FBVUEsYUFBYUEsQ0FBQ0MsSUFBMEIsRUFBQTtFQUN0RCxJQUFJQSxJQUFJLEtBQUssT0FBTyxJQUFJQSxJQUFJLEtBQUssYUFBYSxFQUFFLE9BQU9BLElBQUk7RUFDM0QsT0FBTyxPQUFPO0FBQ2hCO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1DLHdCQUF3QixHQUEyQztFQUN2RUMsS0FBSyxFQUFFLElBQUk7RUFDWEMsS0FBSyxFQUFFLElBQUk7RUFDWCxhQUFhLEVBQUU7QUNsQmpCLENEbUJDO0FBRUQsT0FBTSxTQUFVQyxXQUFXQSxDQUFDSixJQUFnQixFQUFBO0VBQzFDLE9BQU9DLHdCQUF3QixDQUFDRCxJQUFJLENBQUM7QUFDdkM7QUFFQSxPQUFNLFNBQVVLLGlCQUFpQkEsQ0FBQ0MsTUFBb0IsRUFBQTtFQUNwRCxJQUFJLE9BQU9BLE1BQU0sQ0FBQ0MsS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPRCxNQUFNLENBQUNDLEtBQUssS0FBSyxRQUFRLEVBQUU7SUFDeEUsT0FBT0MsTUFBTSxDQUFDRixNQUFNLENBQUNDLEtBQUssQ0FBQztFQUM3QjtFQUVBLE9BQU9DLE1BQU0sQ0FBQ0YsTUFBTSxDQUFDRyxLQUFLLENBQUM7QUFDN0I7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L3V0aWxzLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJleHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplU2l6ZShzaXplKSB7XG4gICAgaWYgKHNpemUgPT09ICdzbWFsbCcgfHwgc2l6ZSA9PT0gJ2V4dHJhLXNtYWxsJylcbiAgICAgICAgcmV0dXJuIHNpemU7XG4gICAgcmV0dXJuICdsYXJnZSc7XG59XG4vLyBgZXh0cmEtc21hbGxgIGlzIGEgMzJweCB0cmlnZ2VyIHRoYXQgcmVuZGVycyBpdHMgdmFsdWUgYXQgYGJvZHkgc21gICgxMnB4KSBzb1xuLy8gdGhlIGNvbGxhcHNlZCB0cmlnZ2VyIG1hdGNoZXMgdGhlIDEycHggb3B0aW9uIHJvd3MgdGhlIEZpbHRlciBkcm9wZG93bnNcbi8vIChPcHRpb25GaWx0ZXIvRGF0ZVJhbmdlL0Fzc2V0L0FjY291bnQpIHJlbmRlciBpbiB0aGUgb3BlbiBwYW5lbC4gVGhpcyBzaXplXG4vLyBhbHNvIGZsb3dzIGludG8gYHJlbmRlclZhbHVlTWV0YS5mb250U2l6ZWAsIGtlZXBpbmcgY3VzdG9tIHRyaWdnZXIvb3B0aW9uXG4vLyBjb250ZW50IGFsaWduZWQgd2l0aCB0aGUgdHJpZ2dlciB0eXBvZ3JhcGh5LlxuY29uc3QgRk9OVF9TSVpFX0JZX1NFTEVDVF9TSVpFID0ge1xuICAgIGxhcmdlOiAnbGcnLFxuICAgIHNtYWxsOiAnbWQnLFxuICAgICdleHRyYS1zbWFsbCc6ICdzbScsXG59O1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZvbnRTaXplKHNpemUpIHtcbiAgICByZXR1cm4gRk9OVF9TSVpFX0JZX1NFTEVDVF9TSVpFW3NpemVdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RPcHRpb25UZXh0KG9wdGlvbikge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9uLmxhYmVsID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygb3B0aW9uLmxhYmVsID09PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gU3RyaW5nKG9wdGlvbi5sYWJlbCk7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcob3B0aW9uLnZhbHVlKTtcbn1cbmZ1bmN0aW9uIGV4dHJhY3ROb2RlVGV4dCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiAnJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1NlbGVjdE11bHRpcGxlVmFsdWUodmFsdWUsIG11bHRpcGxlKSB7XG4gICAgcmV0dXJuIG11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkodmFsdWUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzU2VsZWN0T3B0aW9uR3JvdXAob3B0aW9uKSB7XG4gICAgcmV0dXJuICdvcHRpb25zJyBpbiBvcHRpb24gJiYgQXJyYXkuaXNBcnJheShvcHRpb24ub3B0aW9ucyk7XG59XG5mdW5jdGlvbiBmaW5kT3B0aW9uQnlWYWx1ZShvcHRpb25zLCB2YWx1ZSkge1xuICAgIHZhciBfYTtcbiAgICByZXR1cm4gKF9hID0gb3B0aW9ucy5maW5kKChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbGVjdGVkT3B0aW9ucyhvcHRpb25zLCB2YWx1ZSwgbXVsdGlwbGUpIHtcbiAgICBpZiAoaXNTZWxlY3RNdWx0aXBsZVZhbHVlKHZhbHVlLCBtdWx0aXBsZSkpIHtcbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgY29uc3Qgb3B0aW9uc0J5VmFsdWUgPSBuZXcgTWFwKCk7XG4gICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvblZhbHVlID0gb3B0aW9uLnZhbHVlO1xuICAgICAgICAgICAgLy8gYGZpbmRgIHVzZWQgc3RyaWN0IGVxdWFsaXR5OiBOYU4gbmV2ZXIgbWF0Y2hlZCwgYW5kIGR1cGxpY2F0ZSB2YWx1ZXNcbiAgICAgICAgICAgIC8vIHJlc29sdmVkIHRvIHRoZSBmaXJzdCBvcHRpb24uIE1hcCBhbG9uZSB3b3VsZCBjaGFuZ2UgYm90aCBydWxlcy5cbiAgICAgICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG9wdGlvblZhbHVlKSAmJiAhb3B0aW9uc0J5VmFsdWUuaGFzKG9wdGlvblZhbHVlKSkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnNCeVZhbHVlLnNldChvcHRpb25WYWx1ZSwgb3B0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IHsgdmFyIF9hOyByZXR1cm4gKF9hID0gb3B0aW9uc0J5VmFsdWUuZ2V0KGl0ZW0pKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsOyB9KVxuICAgICAgICAgICAgLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24gIT09IG51bGwpO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgbWF0Y2hlZCA9IGZpbmRPcHRpb25CeVZhbHVlKG9wdGlvbnMsIHZhbHVlKTtcbiAgICByZXR1cm4gbWF0Y2hlZCA/IFttYXRjaGVkXSA6IFtdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE9wdGlvblRhZ0xhYmVsKG9wdGlvbikge1xuICAgIHJldHVybiBleHRyYWN0T3B0aW9uVGV4dChvcHRpb24pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZU9wdGlvbkdyb3VwcyhvcHRpb25zKSB7XG4gICAgY29uc3QgZ3JvdXBzID0gW107XG4gICAgbGV0IHVuZ3JvdXBlZE9wdGlvbnMgPSBbXTtcbiAgICBsZXQgdW5ncm91cGVkR3JvdXBJbmRleCA9IDA7XG4gICAgY29uc3QgcHVzaFVuZ3JvdXBlZE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgICAgIGlmICh1bmdyb3VwZWRPcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGdyb3Vwcy5wdXNoKHtcbiAgICAgICAgICAgIGtleTogYHVuZ3JvdXBlZC0ke3VuZ3JvdXBlZEdyb3VwSW5kZXh9YCxcbiAgICAgICAgICAgIG9wdGlvbnM6IHVuZ3JvdXBlZE9wdGlvbnMsXG4gICAgICAgIH0pO1xuICAgICAgICB1bmdyb3VwZWRPcHRpb25zID0gW107XG4gICAgICAgIHVuZ3JvdXBlZEdyb3VwSW5kZXggKz0gMTtcbiAgICB9O1xuICAgIG9wdGlvbnMuZm9yRWFjaCgob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoaXNTZWxlY3RPcHRpb25Hcm91cChvcHRpb24pKSB7XG4gICAgICAgICAgICBwdXNoVW5ncm91cGVkT3B0aW9ucygpO1xuICAgICAgICAgICAgZ3JvdXBzLnB1c2goe1xuICAgICAgICAgICAgICAgIGtleTogb3B0aW9uLmtleSA/IFN0cmluZyhvcHRpb24ua2V5KSA6IGBncm91cC0ke2luZGV4fWAsXG4gICAgICAgICAgICAgICAgbGFiZWw6IG9wdGlvbi5sYWJlbCxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBvcHRpb24ub3B0aW9ucyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHVuZ3JvdXBlZE9wdGlvbnMucHVzaChvcHRpb24pO1xuICAgIH0pO1xuICAgIHB1c2hVbmdyb3VwZWRPcHRpb25zKCk7XG4gICAgcmV0dXJuIGdyb3Vwcztcbn1cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuT3B0aW9uR3JvdXBzKGdyb3Vwcykge1xuICAgIHJldHVybiBncm91cHMuZmxhdE1hcCgoZ3JvdXApID0+IGdyb3VwLm9wdGlvbnMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE9wdGlvblNlYXJjaFRleHQob3B0aW9uKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgZXh0cmFjdE9wdGlvblRleHQob3B0aW9uKSxcbiAgICAgICAgZXh0cmFjdE5vZGVUZXh0KG9wdGlvbi5kZXNjcmlwdGlvbiksXG4gICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0LFxuICAgICAgICBTdHJpbmcob3B0aW9uLnZhbHVlKSxcbiAgICBdXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgLmpvaW4oJyAnKVxuICAgICAgICAudHJpbSgpO1xufVxuZnVuY3Rpb24gbWF0Y2hlc09wdGlvblNlYXJjaChzZWFyY2hWYWx1ZSwgb3B0aW9uLCBmaWx0ZXJPcHRpb24pIHtcbiAgICBpZiAoIXNlYXJjaFZhbHVlLnRyaW0oKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlck9wdGlvbikge1xuICAgICAgICByZXR1cm4gZmlsdGVyT3B0aW9uKHNlYXJjaFZhbHVlLCBvcHRpb24pO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0T3B0aW9uU2VhcmNoVGV4dChvcHRpb24pLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlck9wdGlvbkdyb3Vwcyhncm91cHMsIHNlYXJjaFZhbHVlLCBmaWx0ZXJPcHRpb24pIHtcbiAgICBpZiAoIXNlYXJjaFZhbHVlLnRyaW0oKSkge1xuICAgICAgICByZXR1cm4gZ3JvdXBzO1xuICAgIH1cbiAgICBjb25zdCBub3JtYWxpemVkU2VhcmNoVmFsdWUgPSBzZWFyY2hWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gZ3JvdXBzLnJlZHVjZSgocmVzdWx0LCBncm91cCkgPT4ge1xuICAgICAgICBjb25zdCBncm91cExhYmVsVGV4dCA9IGV4dHJhY3ROb2RlVGV4dChncm91cC5sYWJlbCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3QgbWF0Y2hlZE9wdGlvbnMgPSBncm91cExhYmVsVGV4dC5pbmNsdWRlcyhub3JtYWxpemVkU2VhcmNoVmFsdWUpXG4gICAgICAgICAgICA/IGdyb3VwLm9wdGlvbnNcbiAgICAgICAgICAgIDogZ3JvdXAub3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4gbWF0Y2hlc09wdGlvblNlYXJjaChzZWFyY2hWYWx1ZSwgb3B0aW9uLCBmaWx0ZXJPcHRpb24pKTtcbiAgICAgICAgaWYgKG1hdGNoZWRPcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQucHVzaChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGdyb3VwKSwgeyBvcHRpb25zOiBtYXRjaGVkT3B0aW9ucyB9KSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSwgW10pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE11bHRpcGxlVmFsdWUodmFsdWUpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE9wdGlvbnNCeVZhbHVlcyhvcHRpb25zLCB2YWx1ZXMpIHtcbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlcyA9IG5ldyBTZXQodmFsdWVzKTtcbiAgICByZXR1cm4gb3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4gc2VsZWN0ZWRWYWx1ZXMuaGFzKG9wdGlvbi52YWx1ZSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZU11bHRpcGxlVmFsdWUoY3VycmVudFZhbHVlLCBvcHRpb25WYWx1ZSkge1xuICAgIGNvbnN0IHZhbHVlcyA9IGdldE11bHRpcGxlVmFsdWUoY3VycmVudFZhbHVlKTtcbiAgICBpZiAodmFsdWVzLmluY2x1ZGVzKG9wdGlvblZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWVzLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPT0gb3B0aW9uVmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gWy4uLnZhbHVlcywgb3B0aW9uVmFsdWVdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZU11bHRpcGxlVmFsdWUoY3VycmVudFZhbHVlLCBvcHRpb25WYWx1ZSkge1xuICAgIHJldHVybiBnZXRNdWx0aXBsZVZhbHVlKGN1cnJlbnRWYWx1ZSkuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9PSBvcHRpb25WYWx1ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNPcHRpb25TZWxlY3RlZCh2YWx1ZSwgbXVsdGlwbGUsIG9wdGlvblZhbHVlKSB7XG4gICAgcmV0dXJuIGlzU2VsZWN0TXVsdGlwbGVWYWx1ZSh2YWx1ZSwgbXVsdGlwbGUpXG4gICAgICAgID8gdmFsdWUuaW5jbHVkZXMob3B0aW9uVmFsdWUpXG4gICAgICAgIDogdmFsdWUgPT09IG9wdGlvblZhbHVlO1xufSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -346,8 +346,18 @@ var Table = function Table(tableProps, ref) {
|
|
|
346
346
|
setShadowEnd(false);
|
|
347
347
|
}
|
|
348
348
|
};
|
|
349
|
+
var _React$useState1 = React.useState(0),
|
|
350
|
+
_React$useState10 = _slicedToArray(_React$useState1, 2),
|
|
351
|
+
scrollbarSize = _React$useState10[0],
|
|
352
|
+
setScrollbarSize = _React$useState10[1];
|
|
353
|
+
var syncScrollbarSize = function syncScrollbarSize() {
|
|
354
|
+
if (tailor && useInternalHooks) return;
|
|
355
|
+
var target = scrollBodyRef.current instanceof Element ? scrollBodyRef.current : scrollBodyContainerRef.current;
|
|
356
|
+
setScrollbarSize(getTargetScrollBarSize(target).width);
|
|
357
|
+
};
|
|
349
358
|
var onFullTableResize = function onFullTableResize(offsetWidth) {
|
|
350
359
|
var _a, _b, _c;
|
|
360
|
+
syncScrollbarSize();
|
|
351
361
|
(_a = stickyRef.current) === null || _a === void 0 ? void 0 : _a.checkScrollBarVisible();
|
|
352
362
|
var mergedWidth = (_c = offsetWidth !== null && offsetWidth !== void 0 ? offsetWidth : (_b = fullTableRef.current) === null || _b === void 0 ? void 0 : _b.offsetWidth) !== null && _c !== void 0 ? _c : 0;
|
|
353
363
|
if (useInternalHooks && getContainerWidth && fullTableRef.current) {
|
|
@@ -376,19 +386,9 @@ var Table = function Table(tableProps, ref) {
|
|
|
376
386
|
mounted.current = true;
|
|
377
387
|
}, []);
|
|
378
388
|
// ===================== Effects ======================
|
|
379
|
-
var _React$useState1 = React.useState(0),
|
|
380
|
-
_React$useState10 = _slicedToArray(_React$useState1, 2),
|
|
381
|
-
scrollbarSize = _React$useState10[0],
|
|
382
|
-
setScrollbarSize = _React$useState10[1];
|
|
383
389
|
useLayoutEffect(function () {
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
setScrollbarSize(getTargetScrollBarSize(scrollBodyRef.current).width);
|
|
387
|
-
} else {
|
|
388
|
-
setScrollbarSize(getTargetScrollBarSize(scrollBodyContainerRef.current).width);
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
}, []);
|
|
390
|
+
syncScrollbarSize();
|
|
391
|
+
}, [hasData, fixHeader, isSticky, mergedData.length]);
|
|
392
392
|
// ================== INTERNAL HOOKS ==================
|
|
393
393
|
React.useEffect(function () {
|
|
394
394
|
if (useInternalHooks && internalRefs) {
|
|
@@ -591,7 +591,7 @@ var Table = function Table(tableProps, ref) {
|
|
|
591
591
|
children: footer(mergedData)
|
|
592
592
|
})]
|
|
593
593
|
}));
|
|
594
|
-
if (horizonScroll) {
|
|
594
|
+
if (horizonScroll || fixHeader || isSticky) {
|
|
595
595
|
fullTable = _jsx(ResizeObserver, {
|
|
596
596
|
onResize: function onResize(_ref6) {
|
|
597
597
|
var offsetWidth = _ref6.offsetWidth;
|
|
@@ -683,4 +683,4 @@ ImmutableTable.Column = Column;
|
|
|
683
683
|
ImmutableTable.ColumnGroup = ColumnGroup;
|
|
684
684
|
ImmutableTable.Summary = FooterComponents;
|
|
685
685
|
export default ImmutableTable;
|
|
686
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvaW50ZXJuYWwva2VybmVsL1RhYmxlLmpzIiwiY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9zcmMvY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9rZXJuZWwvVGFibGUudHN4Il0sIm5hbWVzIjpbImpzeCIsIl9qc3giLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImpzeHMiLCJfanN4cyIsImNsc3giLCJSZXNpemVPYnNlcnZlciIsImdldFRhcmdldFNjcm9sbEJhclNpemUiLCJ1c2VFdmVudCIsInBpY2tBdHRycyIsImdldFZhbHVlIiwid2FybmluZyIsIlJlYWN0IiwiQm9keSIsIkNvbEdyb3VwIiwiRVhQQU5EX0NPTFVNTiIsIklOVEVSTkFMX0hPT0tTIiwiVGFibGVDb250ZXh0IiwibWFrZUltbXV0YWJsZSIsIkZpeGVkSG9sZGVyIiwiRm9vdGVyIiwiRm9vdGVyQ29tcG9uZW50cyIsIlN1bW1hcnkiLCJIZWFkZXIiLCJ1c2VDb2x1bW5zIiwidXNlRXhwYW5kIiwidXNlRml4ZWRJbmZvIiwidXNlVGltZW91dExvY2siLCJ1c2VIb3ZlciIsInVzZVN0aWNreSIsInVzZVN0aWNreU9mZnNldHMiLCJQYW5lbCIsIlN0aWNreVNjcm9sbEJhciIsIkNvbHVtbiIsIkNvbHVtbkdyb3VwIiwiZ2V0Q29sdW1uc0tleSIsInZhbGlkYXRlVmFsdWUiLCJ2YWxpZE51bWJlclZhbHVlIiwiZ2V0RE9NIiwiaXNFcXVhbCIsInVzZUxheW91dEVmZmVjdCIsIkRFRkFVTFRfUFJFRklYIiwiRU1QVFlfREFUQSIsIkVNUFRZX1NDUk9MTF9UQVJHRVQiLCJkZWZhdWx0RW1wdHkiLCJUYWJsZSIsInRhYmxlUHJvcHMiLCJyZWYiLCJfY2xzeCIsIl9hIiwiX2IiLCJwcm9wcyIsIk9iamVjdCIsImFzc2lnbiIsInJvd0tleSIsInByZWZpeENscyIsImVtcHR5VGV4dCIsImNsYXNzTmFtZSIsInJvd0NsYXNzTmFtZSIsInN0eWxlIiwiY2xhc3NOYW1lcyIsInN0eWxlcyIsImRhdGEiLCJzY3JvbGwiLCJ0YWJsZUxheW91dCIsImRpcmVjdGlvbiIsInRpdGxlIiwiZm9vdGVyIiwic3VtbWFyeSIsImNhcHRpb24iLCJpZCIsInNob3dIZWFkZXIiLCJjb21wb25lbnRzIiwib25Sb3ciLCJvbkhlYWRlclJvdyIsIm1lYXN1cmVSb3dSZW5kZXIiLCJvblNjcm9sbCIsImludGVybmFsSG9va3MiLCJ0cmFuc2Zvcm1Db2x1bW5zIiwiaW50ZXJuYWxSZWZzIiwidGFpbG9yIiwiZ2V0Q29udGFpbmVyV2lkdGgiLCJzdGlja3kiLCJfcHJvcHMkcm93SG92ZXJhYmxlIiwicm93SG92ZXJhYmxlIiwibWVyZ2VkRGF0YSIsImhhc0RhdGEiLCJsZW5ndGgiLCJ1c2VJbnRlcm5hbEhvb2tzIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiZm9yRWFjaCIsIm5hbWUiLCJ1bmRlZmluZWQiLCJjb25jYXQiLCJnZXRDb21wb25lbnQiLCJ1c2VDYWxsYmFjayIsInBhdGgiLCJkZWZhdWx0Q29tcG9uZW50IiwiZ2V0Um93S2V5IiwidXNlTWVtbyIsInJlY29yZCIsImtleSIsImN1c3RvbWl6ZVNjcm9sbEJvZHkiLCJfdXNlSG92ZXIiLCJfdXNlSG92ZXIyIiwiX3NsaWNlZFRvQXJyYXkiLCJzdGFydFJvdyIsImVuZFJvdyIsIm9uSG92ZXIiLCJfdXNlRXhwYW5kIiwiX3VzZUV4cGFuZDIiLCJleHBhbmRhYmxlQ29uZmlnIiwiZXhwYW5kYWJsZVR5cGUiLCJtZXJnZWRFeHBhbmRlZEtleXMiLCJtZXJnZWRFeHBhbmRJY29uIiwibWVyZ2VkQ2hpbGRyZW5Db2x1bW5OYW1lIiwib25UcmlnZ2VyRXhwYW5kIiwic2Nyb2xsWCIsIngiLCJfUmVhY3QkdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl9SZWFjdCR1c2VTdGF0ZTIiLCJjb21wb25lbnRXaWR0aCIsInNldENvbXBvbmVudFdpZHRoIiwiX3VzZUNvbHVtbnMiLCJleHBhbmRhYmxlIiwiZXhwYW5kZWRSb3dSZW5kZXIiLCJjb2x1bW5UaXRsZSIsImV4cGFuZGVkS2V5cyIsImV4cGFuZEljb24iLCJleHBhbmRJY29uQ29sdW1uSW5kZXgiLCJzY3JvbGxXaWR0aCIsImNsaWVudFdpZHRoIiwiX3VzZUNvbHVtbnMyIiwiY29sdW1ucyIsImZsYXR0ZW5Db2x1bW5zIiwiZmxhdHRlblNjcm9sbFgiLCJtZXJnZWRTY3JvbGxYIiwiY29sdW1uQ29udGV4dCIsImZ1bGxUYWJsZVJlZiIsInVzZVJlZiIsInNjcm9sbEhlYWRlclJlZiIsInNjcm9sbEJvZHlSZWYiLCJzY3JvbGxCb2R5Q29udGFpbmVyUmVmIiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsIm5hdGl2ZUVsZW1lbnQiLCJjdXJyZW50Iiwic2Nyb2xsVG8iLCJjb25maWciLCJIVE1MRWxlbWVudCIsImluZGV4IiwidG9wIiwib2Zmc2V0IiwibWVyZ2VkS2V5IiwidGFyZ2V0RWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJzY3JvbGxJbnRvVmlldyIsImVsZW1lbnRUb3AiLCJvZmZzZXRUb3AiLCJzY3JvbGxTdW1tYXJ5UmVmIiwiX1JlYWN0JHVzZVN0YXRlMyIsIl9SZWFjdCR1c2VTdGF0ZTQiLCJzaGFkb3dTdGFydCIsInNldFNoYWRvd1N0YXJ0IiwiX1JlYWN0JHVzZVN0YXRlNSIsIl9SZWFjdCR1c2VTdGF0ZTYiLCJzaGFkb3dFbmQiLCJzZXRTaGFkb3dFbmQiLCJfUmVhY3QkdXNlU3RhdGU3IiwiTWFwIiwiX1JlYWN0JHVzZVN0YXRlOCIsImNvbHNXaWR0aHMiLCJ1cGRhdGVDb2xzV2lkdGhzIiwiY29sc0tleXMiLCJwdXJlQ29sV2lkdGhzIiwibWFwIiwiY29sdW1uS2V5IiwiZ2V0IiwiY29sV2lkdGhzIiwiam9pbiIsInN0aWNreU9mZnNldHMiLCJmaXhIZWFkZXIiLCJ5IiwiaG9yaXpvblNjcm9sbCIsIkJvb2xlYW4iLCJmaXhlZCIsImZpeENvbHVtbiIsInNvbWUiLCJfcmVmIiwic3RpY2t5UmVmIiwiX3VzZVN0aWNreSIsImlzU3RpY2t5Iiwib2Zmc2V0SGVhZGVyIiwib2Zmc2V0U3VtbWFyeSIsIm9mZnNldFNjcm9sbCIsInN0aWNreUNsYXNzTmFtZSIsImNvbnRhaW5lciIsInN1bW1hcnlOb2RlIiwiZml4Rm9vdGVyIiwiaXNWYWxpZEVsZW1lbnQiLCJ0eXBlIiwic2Nyb2xsWFN0eWxlIiwic2Nyb2xsWVN0eWxlIiwic2Nyb2xsVGFibGVTdHlsZSIsIm92ZXJmbG93WSIsIm1heEhlaWdodCIsIm92ZXJmbG93WCIsIndpZHRoIiwibWluV2lkdGgiLCJvbkNvbHVtblJlc2l6ZSIsIndpZHRocyIsIm5ld1dpZHRocyIsInNldCIsIl91c2VUaW1lb3V0TG9jayIsIl91c2VUaW1lb3V0TG9jazIiLCJzZXRTY3JvbGxUYXJnZXQiLCJnZXRTY3JvbGxUYXJnZXQiLCJmb3JjZVNjcm9sbCIsInNjcm9sbExlZnQiLCJ0YXJnZXQiLCJzZXRUaW1lb3V0IiwiX1JlYWN0JHVzZVN0YXRlOSIsIl9SZWFjdCR1c2VTdGF0ZTAiLCJzY3JvbGxJbmZvIiwic2V0U2Nyb2xsSW5mbyIsIm9uSW50ZXJuYWxTY3JvbGwiLCJfcmVmMiIsImN1cnJlbnRUYXJnZXQiLCJtZXJnZWRTY3JvbGxMZWZ0IiwiY29tcGFyZVRhcmdldCIsInNldFNjcm9sbExlZnQiLCJtZWFzdXJlVGFyZ2V0IiwiYWJzU2Nyb2xsU3RhcnQiLCJNYXRoIiwiYWJzIiwib3JpIiwibmV4dFNjcm9sbEluZm8iLCJvbkJvZHlTY3JvbGwiLCJlIiwidHJpZ2dlck9uU2Nyb2xsIiwib25GdWxsVGFibGVSZXNpemUiLCJvZmZzZXRXaWR0aCIsIl9jIiwiY2hlY2tTY3JvbGxCYXJWaXNpYmxlIiwibWVyZ2VkV2lkdGgiLCJtb3VudGVkIiwidXNlRWZmZWN0IiwiX1JlYWN0JHVzZVN0YXRlMSIsIl9SZWFjdCR1c2VTdGF0ZTEwIiwic2Nyb2xsYmFyU2l6ZSIsInNldFNjcm9sbGJhclNpemUiLCJFbGVtZW50IiwiYm9keSIsInJlbmRlckZpeGVkSGVhZGVyVGFibGUiLCJmaXhlZEhvbGRlclBhc3NQcm9wcyIsImNoaWxkcmVuIiwicmVuZGVyRml4ZWRGb290ZXJUYWJsZSIsIlRhYmxlQ29tcG9uZW50IiwibWVyZ2VkVGFibGVMYXlvdXQiLCJfcmVmMyIsImVsbGlwc2lzIiwiZ3JvdXBUYWJsZU5vZGUiLCJoZWFkZXJQcm9wcyIsImNvbHVtQ291bnQiLCJlbXB0eU5vZGUiLCJib2R5VGFibGUiLCJtZWFzdXJlQ29sdW1uV2lkdGgiLCJib2R5Q29sR3JvdXAiLCJfcmVmNCIsImNhcHRpb25FbGVtZW50IiwiZGF0YVByb3BzIiwiYXJpYVByb3BzIiwiYXJpYSIsImJvZHlDb250ZW50IiwiX3JlZjUiLCJjb2xXaWR0aCIsIk51bWJlciIsImlzTmFOIiwiZml4ZWRIb2xkZXJQcm9wcyIsIm5vRGF0YSIsIm1heENvbnRlbnRTY3JvbGwiLCJzdGlja3lUb3BPZmZzZXQiLCJjb2xHcm91cCIsInN0aWNreUJvdHRvbU9mZnNldCIsImNvbnRlbnQiLCJ0YWJsZVN0eWxlIiwiZnVsbFRhYmxlIiwiX2RlZmluZVByb3BlcnR5Iiwic2VjdGlvbiIsIm9uUmVzaXplIiwiX3JlZjYiLCJmaXhlZEluZm9MaXN0IiwiVGFibGVDb250ZXh0VmFsdWUiLCJleHBhbmRlZFJvd0NsYXNzTmFtZSIsImV4cGFuZFJvd0J5Q2xpY2siLCJleHBhbmRlZFJvd09mZnNldCIsImluZGVudFNpemUiLCJhbGxDb2x1bW5zRml4ZWRMZWZ0IiwiZXZlcnkiLCJjb2wiLCJob3ZlclN0YXJ0Um93IiwiaG92ZXJFbmRSb3ciLCJyb3dFeHBhbmRhYmxlIiwiY2hpbGRyZW5Db2x1bW5OYW1lIiwiUHJvdmlkZXIiLCJ2YWx1ZSIsIlJlZlRhYmxlIiwiZm9yd2FyZFJlZiIsImRpc3BsYXlOYW1lIiwiZ2VuVGFibGUiLCJzaG91bGRUcmlnZ2VyUmVuZGVyIiwiSW1tdXRhYmxlVGFibGUiXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBU0EsR0FBRyxJQUFJQyxJQUFJLEVBQUVDLFFBQVEsSUFBSUMsU0FBUyxFQUFFQyxJQUFJLElBQUlDLEtBQUssUUFBUSxtQkFBbUI7QUM0QnJGLFNBQVNDLElBQUks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QVEsQ0FBQ0UsV0FBVyxHQUFHLE9BQU87QUFDaEM7QUFFQSxPQUFPLElBQU1DLFFBQVEsR0FBRyxTQUFYQSxRQUFRQSxDQUFJQyxtQkFBdUQsRUFBSTtFQUNsRixPQUFPdFMsYUFBYSxDQUFDa1MsUUFBUSxFQUFFSSxtQkFBbUIsQ0FBQztBQUNyRCxDQUFDO0FBRUQsSUFBTUMsY0FBYyxHQUFHRixRQUFRLENBQUEsQ0FBRTtBQVVoQ0UsY0FBcUMsQ0FBQzFTLGFBQWEsR0FBR0EsYUFBYTtBQUVuRTBTLGNBQXFDLENBQUN6UyxjQUFjLEdBQUdBLGNBQWM7QUFFckV5UyxjQUFxQyxDQUFDeFIsTUFBTSxHQUFHQSxNQUFNO0FBRXJEd1IsY0FBcUMsQ0FBQ3ZSLFdBQVcsR0FBR0EsV0FBVztBQUUvRHVSLGNBQXFDLENBQUNuUyxPQUFPLEdBQUdELGdCQUFnQjtBQUVqRSxlQUFlb1MsY0FBb0MiLCJmaWxlIjoiY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9rZXJuZWwvVGFibGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwgRnJhZ21lbnQgYXMgX0ZyYWdtZW50LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBjbHN4IH0gZnJvbSAnY2xzeCc7XG5pbXBvcnQgUmVzaXplT2JzZXJ2ZXIgZnJvbSAnLi4vLi4vLi4vUmVzaXplT2JzZXJ2ZXInO1xuaW1wb3J0IHsgZ2V0VGFyZ2V0U2Nyb2xsQmFyU2l6ZSB9IGZyb20gJy4vdXRpbHMvZ2V0U2Nyb2xsQmFyU2l6ZSc7XG5pbXBvcnQgdXNlRXZlbnQgZnJvbSAnQDFtb25leS9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCBwaWNrQXR0cnMgZnJvbSAnLi91dGlscy9waWNrQXR0cnMnO1xuaW1wb3J0IGdldFZhbHVlIGZyb20gJy4vdXRpbHMvZ2V0JztcbmltcG9ydCB3YXJuaW5nIGZyb20gJy4vdXRpbHMvd2FybmluZyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQm9keSBmcm9tICcuL0JvZHknO1xuaW1wb3J0IENvbEdyb3VwIGZyb20gJy4vQ29sR3JvdXAnO1xuaW1wb3J0IHsgRVhQQU5EX0NPTFVNTiwgSU5URVJOQUxfSE9PS1MgfSBmcm9tICcuL2NvbnN0YW50JztcbmltcG9ydCBUYWJsZUNvbnRleHQsIHsgbWFrZUltbXV0YWJsZSB9IGZyb20gJy4vY29udGV4dC9UYWJsZUNvbnRleHQnO1xuaW1wb3J0IEZpeGVkSG9sZGVyIGZyb20gJy4vRml4ZWRIb2xkZXInO1xuaW1wb3J0IEZvb3RlciwgeyBGb290ZXJDb21wb25lbnRzIH0gZnJvbSAnLi9Gb290ZXInO1xuaW1wb3J0IFN1bW1hcnkgZnJvbSAnLi9Gb290ZXIvU3VtbWFyeSc7XG5pbXBvcnQgSGVhZGVyIGZyb20gJy4vSGVhZGVyL0hlYWRlcic7XG5pbXBvcnQgdXNlQ29sdW1ucyBmcm9tICcuL2hvb2tzL3VzZUNvbHVtbnMnO1xuaW1wb3J0IHVzZUV4cGFuZCBmcm9tICcuL2hvb2tzL3VzZUV4cGFuZCc7XG5pbXBvcnQgdXNlRml4ZWRJbmZvIGZyb20gJy4vaG9va3MvdXNlRml4ZWRJbmZvJztcbmltcG9ydCB7IHVzZVRpbWVvdXRMb2NrIH0gZnJvbSAnLi9ob29rcy91c2VGcmFtZSc7XG5pbXBvcnQgdXNlSG92ZXIgZnJvbSAnLi9ob29rcy91c2VIb3Zlcic7XG5pbXBvcnQgdXNlU3RpY2t5IGZyb20gJy4vaG9va3MvdXNlU3RpY2t5JztcbmltcG9ydCB1c2VTdGlja3lPZmZzZXRzIGZyb20gJy4vaG9va3MvdXNlU3RpY2t5T2Zmc2V0cyc7XG5pbXBvcnQgUGFuZWwgZnJvbSAnLi9QYW5lbCc7XG5pbXBvcnQgU3RpY2t5U2Nyb2xsQmFyIGZyb20gJy4vc3RpY2t5U2Nyb2xsQmFyJztcbmltcG9ydCBDb2x1bW4gZnJvbSAnLi9zdWdhci9Db2x1bW4nO1xuaW1wb3J0IENvbHVtbkdyb3VwIGZyb20gJy4vc3VnYXIvQ29sdW1uR3JvdXAnO1xuaW1wb3J0IHsgZ2V0Q29sdW1uc0tleSwgdmFsaWRhdGVWYWx1ZSwgdmFsaWROdW1iZXJWYWx1ZSB9IGZyb20gJy4vdXRpbHMvdmFsdWVVdGlsJztcbmltcG9ydCB7IGdldERPTSB9IGZyb20gJy4uLy4uLy4uL1Jlc2l6ZU9ic2VydmVyL3V0aWxzL3JlYWN0VXRpbCc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICcuL3NlbGVjdG9yLWNvbnRleHQvaXNFcXVhbCc7XG5pbXBvcnQgdXNlTGF5b3V0RWZmZWN0IGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlTGF5b3V0RWZmZWN0JztcbmV4cG9ydCBjb25zdCBERUZBVUxUX1BSRUZJWCA9ICdvbS10YWJsZSc7XG4vLyBVc2VkIGZvciBjb25kaXRpb25zIGNhY2hlXG5jb25zdCBFTVBUWV9EQVRBID0gW107XG4vLyBVc2VkIGZvciBjdXN0b21pemUgc2Nyb2xsXG5jb25zdCBFTVBUWV9TQ1JPTExfVEFSR0VUID0ge307XG5mdW5jdGlvbiBkZWZhdWx0RW1wdHkoKSB7XG4gICAgcmV0dXJuICdObyBEYXRhJztcbn1cbmNvbnN0IFRhYmxlID0gKHRhYmxlUHJvcHMsIHJlZikgPT4ge1xuICAgIHZhciBfYSwgX2I7XG4gICAgY29uc3QgcHJvcHMgPSBPYmplY3QuYXNzaWduKHsgcm93S2V5OiAna2V5JywgcHJlZml4Q2xzOiBERUZBVUxUX1BSRUZJWCwgZW1wdHlUZXh0OiBkZWZhdWx0RW1wdHkgfSwgdGFibGVQcm9wcyk7XG4gICAgY29uc3QgeyBwcmVmaXhDbHMsIGNsYXNzTmFtZSwgcm93Q2xhc3NOYW1lLCBzdHlsZSwgY2xhc3NOYW1lcywgc3R5bGVzLCBkYXRhLCByb3dLZXksIHNjcm9sbCwgdGFibGVMYXlvdXQsIGRpcmVjdGlvbiwgXG4gICAgLy8gQWRkaXRpb25hbCBQYXJ0XG4gICAgdGl0bGUsIGZvb3Rlciwgc3VtbWFyeSwgY2FwdGlvbiwgXG4gICAgLy8gQ3VzdG9taXplXG4gICAgaWQsIHNob3dIZWFkZXIsIGNvbXBvbmVudHMsIGVtcHR5VGV4dCwgb25Sb3csIG9uSGVhZGVyUm93LCBcbiAgICAvLyBNZWFzdXJlIFJvd1xuICAgIG1lYXN1cmVSb3dSZW5kZXIsIFxuICAgIC8vIEV2ZW50c1xuICAgIG9uU2Nyb2xsLCBcbiAgICAvLyBJbnRlcm5hbFxuICAgIGludGVybmFsSG9va3MsIHRyYW5zZm9ybUNvbHVtbnMsIGludGVybmFsUmVmcywgdGFpbG9yLCBnZXRDb250YWluZXJXaWR0aCwgc3RpY2t5LCByb3dIb3ZlcmFibGUgPSB0cnVlLCB9ID0gcHJvcHM7XG4gICAgY29uc3QgbWVyZ2VkRGF0YSA9IGRhdGEgfHwgRU1QVFlfREFUQTtcbiAgICBjb25zdCBoYXNEYXRhID0gISFtZXJnZWREYXRhLmxlbmd0aDtcbiAgICBjb25zdCB1c2VJbnRlcm5hbEhvb2tzID0gaW50ZXJuYWxIb29rcyA9PT0gSU5URVJOQUxfSE9PS1M7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09IFdhcm5pbmcgPT09PT09PT09PT09PT09PT09PT09PVxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIFtcbiAgICAgICAgICAgICdvblJvd0NsaWNrJyxcbiAgICAgICAgICAgICdvblJvd0RvdWJsZUNsaWNrJyxcbiAgICAgICAgICAgICdvblJvd0NvbnRleHRNZW51JyxcbiAgICAgICAgICAgICdvblJvd01vdXNlRW50ZXInLFxuICAgICAgICAgICAgJ29uUm93TW91c2VMZWF2ZScsXG4gICAgICAgIF0uZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICAgIHdhcm5pbmcocHJvcHNbbmFtZV0gPT09IHVuZGVmaW5lZCwgYFxcYCR7bmFtZX1cXGAgaXMgcmVtb3ZlZCwgcGxlYXNlIHVzZSBcXGBvblJvd1xcYCBpbnN0ZWFkLmApO1xuICAgICAgICB9KTtcbiAgICAgICAgd2FybmluZyghKCdnZXRCb2R5V3JhcHBlcicgaW4gcHJvcHMpLCAnYGdldEJvZHlXcmFwcGVyYCBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIGN1c3RvbSBgY29tcG9uZW50c2AgaW5zdGVhZC4nKTtcbiAgICB9XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT0gQ3VzdG9taXplID09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IGdldENvbXBvbmVudCA9IFJlYWN0LnVzZUNhbGxiYWNrKChwYXRoLCBkZWZhdWx0Q29tcG9uZW50KSA9PiBnZXRWYWx1ZShjb21wb25lbnRzLCBwYXRoKSB8fCBkZWZhdWx0Q29tcG9uZW50LCBbY29tcG9uZW50c10pO1xuICAgIGNvbnN0IGdldFJvd0tleSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHJvd0tleSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIHJvd0tleTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHJlY29yZCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gcmVjb3JkICYmIHJlY29yZFtyb3dLZXldO1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICB3YXJuaW5nKGtleSAhPT0gdW5kZWZpbmVkLCAnRWFjaCByZWNvcmQgaW4gdGFibGUgc2hvdWxkIGhhdmUgYSB1bmlxdWUgYGtleWAgcHJvcCwgb3Igc2V0IGByb3dLZXlgIHRvIGFuIHVuaXF1ZSBwcmltYXJ5IGtleS4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgIH07XG4gICAgfSwgW3Jvd0tleV0pO1xuICAgIGNvbnN0IGN1c3RvbWl6ZVNjcm9sbEJvZHkgPSBnZXRDb21wb25lbnQoWydib2R5J10pO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT0gSG92ZXIgPT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBbc3RhcnRSb3csIGVuZFJvdywgb25Ib3Zlcl0gPSB1c2VIb3ZlcigpO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT0gRXhwYW5kID09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBbZXhwYW5kYWJsZUNvbmZpZywgZXhwYW5kYWJsZVR5cGUsIG1lcmdlZEV4cGFuZGVkS2V5cywgbWVyZ2VkRXhwYW5kSWNvbiwgbWVyZ2VkQ2hpbGRyZW5Db2x1bW5OYW1lLCBvblRyaWdnZXJFeHBhbmQsXSA9IHVzZUV4cGFuZChwcm9wcywgbWVyZ2VkRGF0YSwgZ2V0Um93S2V5KTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09IENvbHVtbiA9PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3Qgc2Nyb2xsWCA9IHNjcm9sbCA9PT0gbnVsbCB8fCBzY3JvbGwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNjcm9sbC54O1xuICAgIGNvbnN0IFtjb21wb25lbnRXaWR0aCwgc2V0Q29tcG9uZW50V2lkdGhdID0gUmVhY3QudXNlU3RhdGUoMCk7XG4gICAgY29uc3QgW2NvbHVtbnMsIGZsYXR0ZW5Db2x1bW5zLCBmbGF0dGVuU2Nyb2xsWF0gPSB1c2VDb2x1bW5zKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBwcm9wcyksIGV4cGFuZGFibGVDb25maWcpLCB7IGV4cGFuZGFibGU6ICEhZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRlZFJvd1JlbmRlciwgY29sdW1uVGl0bGU6IGV4cGFuZGFibGVDb25maWcuY29sdW1uVGl0bGUsIGV4cGFuZGVkS2V5czogbWVyZ2VkRXhwYW5kZWRLZXlzLCBnZXRSb3dLZXksXG4gICAgICAgIG9uVHJpZ2dlckV4cGFuZCwgZXhwYW5kSWNvbjogbWVyZ2VkRXhwYW5kSWNvbiwgZXhwYW5kSWNvbkNvbHVtbkluZGV4OiBleHBhbmRhYmxlQ29uZmlnLmV4cGFuZEljb25Db2x1bW5JbmRleCwgZGlyZWN0aW9uLCBzY3JvbGxXaWR0aDogdXNlSW50ZXJuYWxIb29rcyAmJiB0YWlsb3IgJiYgdHlwZW9mIHNjcm9sbFggPT09ICdudW1iZXInID8gc2Nyb2xsWCA6IG51bGwsIGNsaWVudFdpZHRoOiBjb21wb25lbnRXaWR0aCB9KSwgdXNlSW50ZXJuYWxIb29rcyA/IHRyYW5zZm9ybUNvbHVtbnMgOiBudWxsKTtcbiAgICBjb25zdCBtZXJnZWRTY3JvbGxYID0gZmxhdHRlblNjcm9sbFggIT09IG51bGwgJiYgZmxhdHRlblNjcm9sbFggIT09IHZvaWQgMCA/IGZsYXR0ZW5TY3JvbGxYIDogc2Nyb2xsWDtcbiAgICBjb25zdCBjb2x1bW5Db250ZXh0ID0gUmVhY3QudXNlTWVtbygoKSA9PiAoeyBjb2x1bW5zLCBmbGF0dGVuQ29sdW1ucyB9KSwgW2NvbHVtbnMsIGZsYXR0ZW5Db2x1bW5zXSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT0gUmVmcyA9PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IGZ1bGxUYWJsZVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCBzY3JvbGxIZWFkZXJSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3Qgc2Nyb2xsQm9keVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCBzY3JvbGxCb2R5Q29udGFpbmVyUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIFJlYWN0LnVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYXRpdmVFbGVtZW50OiBmdWxsVGFibGVSZWYuY3VycmVudCxcbiAgICAgICAgICAgIHNjcm9sbFRvOiBjb25maWcgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgaWYgKHNjcm9sbEJvZHlSZWYuY3VycmVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE5hdGl2ZSBzY3JvbGxcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBpbmRleCwgdG9wLCBrZXksIG9mZnNldCB9ID0gY29uZmlnO1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWROdW1iZXJWYWx1ZSh0b3ApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJbiB0b3AgbW9kZSwgb2Zmc2V0IGlzIGlnbm9yZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIChfYSA9IHNjcm9sbEJvZHlSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNjcm9sbFRvKHsgdG9wIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVyZ2VkS2V5ID0ga2V5ICE9PSBudWxsICYmIGtleSAhPT0gdm9pZCAwID8ga2V5IDogZ2V0Um93S2V5KG1lcmdlZERhdGFbaW5kZXhdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSBzY3JvbGxCb2R5UmVmLmN1cnJlbnQucXVlcnlTZWxlY3RvcihgW2RhdGEtcm93LWtleT1cIiR7bWVyZ2VkS2V5fVwiXWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9mZnNldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBObyBvZmZzZXQsIHVzZSBzY3JvbGxJbnRvVmlldyBmb3IgZGVmYXVsdCBiZWhhdmlvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRFbGVtZW50LnNjcm9sbEludG9WaWV3KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXaXRoIG9mZnNldCwgdXNlIGVsZW1lbnQncyBvZmZzZXRUb3AgKyBvZmZzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudFRvcCA9IHRhcmdldEVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxCb2R5UmVmLmN1cnJlbnQuc2Nyb2xsVG8oeyB0b3A6IGVsZW1lbnRUb3AgKyBvZmZzZXQgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChfYiA9IHNjcm9sbEJvZHlSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnNjcm9sbFRvKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFBhc3MgdG8gcHJveHlcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsQm9keVJlZi5jdXJyZW50LnNjcm9sbFRvKGNvbmZpZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9KTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09IFNjcm9sbCA9PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3Qgc2Nyb2xsU3VtbWFyeVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCBbc2hhZG93U3RhcnQsIHNldFNoYWRvd1N0YXJ0XSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbc2hhZG93RW5kLCBzZXRTaGFkb3dFbmRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtjb2xzV2lkdGhzLCB1cGRhdGVDb2xzV2lkdGhzXSA9IFJlYWN0LnVzZVN0YXRlKG5ldyBNYXAoKSk7XG4gICAgLy8gQ29udmVydCBtYXAgdG8gbnVtYmVyIHdpZHRoXG4gICAgY29uc3QgY29sc0tleXMgPSBnZXRDb2x1bW5zS2V5KGZsYXR0ZW5Db2x1bW5zKTtcbiAgICBjb25zdCBwdXJlQ29sV2lkdGhzID0gY29sc0tleXMubWFwKGNvbHVtbktleSA9PiBjb2xzV2lkdGhzLmdldChjb2x1bW5LZXkpKTtcbiAgICBjb25zdCBjb2xXaWR0aHMgPSBSZWFjdC51c2VNZW1vKCgpID0+IHB1cmVDb2xXaWR0aHMsIFtwdXJlQ29sV2lkdGhzLmpvaW4oJ18nKV0pO1xuICAgIGNvbnN0IHN0aWNreU9mZnNldHMgPSB1c2VTdGlja3lPZmZzZXRzKGNvbFdpZHRocywgZmxhdHRlbkNvbHVtbnMpO1xuICAgIGNvbnN0IGZpeEhlYWRlciA9IHNjcm9sbCAmJiB2YWxpZGF0ZVZhbHVlKHNjcm9sbC55KTtcbiAgICBjb25zdCBob3Jpem9uU2Nyb2xsID0gKHNjcm9sbCAmJiB2YWxpZGF0ZVZhbHVlKG1lcmdlZFNjcm9sbFgpKSB8fCBCb29sZWFuKGV4cGFuZGFibGVDb25maWcuZml4ZWQpO1xuICAgIGNvbnN0IGZpeENvbHVtbiA9IGhvcml6b25TY3JvbGwgJiYgZmxhdHRlbkNvbHVtbnMuc29tZSgoeyBmaXhlZCB9KSA9PiBmaXhlZCk7XG4gICAgLy8gU3RpY2t5XG4gICAgY29uc3Qgc3RpY2t5UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHsgaXNTdGlja3ksIG9mZnNldEhlYWRlciwgb2Zmc2V0U3VtbWFyeSwgb2Zmc2V0U2Nyb2xsLCBzdGlja3lDbGFzc05hbWUsIGNvbnRhaW5lciB9ID0gdXNlU3RpY2t5KHN0aWNreSwgcHJlZml4Q2xzKTtcbiAgICAvLyBGb290ZXIgKEZpeCBmb290ZXIgbXVzdCBmaXhlZCBoZWFkZXIpXG4gICAgY29uc3Qgc3VtbWFyeU5vZGUgPSBSZWFjdC51c2VNZW1vKCgpID0+IHN1bW1hcnkgPT09IG51bGwgfHwgc3VtbWFyeSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3VtbWFyeShtZXJnZWREYXRhKSwgW3N1bW1hcnksIG1lcmdlZERhdGFdKTtcbiAgICBjb25zdCBmaXhGb290ZXIgPSAoZml4SGVhZGVyIHx8IGlzU3RpY2t5KSAmJlxuICAgICAgICBSZWFjdC5pc1ZhbGlkRWxlbWVudChzdW1tYXJ5Tm9kZSkgJiZcbiAgICAgICAgc3VtbWFyeU5vZGUudHlwZSA9PT0gU3VtbWFyeSAmJlxuICAgICAgICBzdW1tYXJ5Tm9kZS5wcm9wcy5maXhlZDtcbiAgICAvLyBTY3JvbGxcbiAgICBsZXQgc2Nyb2xsWFN0eWxlO1xuICAgIGxldCBzY3JvbGxZU3R5bGU7XG4gICAgbGV0IHNjcm9sbFRhYmxlU3R5bGU7XG4gICAgaWYgKGZpeEhlYWRlcikge1xuICAgICAgICBzY3JvbGxZU3R5bGUgPSB7XG4gICAgICAgICAgICBvdmVyZmxvd1k6IGhhc0RhdGEgPyAnc2Nyb2xsJyA6ICdhdXRvJyxcbiAgICAgICAgICAgIG1heEhlaWdodDogc2Nyb2xsLnksXG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmIChob3Jpem9uU2Nyb2xsKSB7XG4gICAgICAgIHNjcm9sbFhTdHlsZSA9IHsgb3ZlcmZsb3dYOiAnYXV0bycgfTtcbiAgICAgICAgLy8gV2hlbiBubyB2ZXJ0aWNhbCBzY3JvbGxiYXIsIHNob3VsZCBoaWRlIGl0XG4gICAgICAgIGlmICghZml4SGVhZGVyKSB7XG4gICAgICAgICAgICBzY3JvbGxZU3R5bGUgPSB7IG92ZXJmbG93WTogJ2hpZGRlbicgfTtcbiAgICAgICAgfVxuICAgICAgICBzY3JvbGxUYWJsZVN0eWxlID0ge1xuICAgICAgICAgICAgd2lkdGg6IG1lcmdlZFNjcm9sbFggPT09IHRydWUgPyAnYXV0bycgOiBtZXJnZWRTY3JvbGxYLFxuICAgICAgICAgICAgbWluV2lkdGg6ICcxMDAlJyxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY29uc3Qgb25Db2x1bW5SZXNpemUgPSBSZWFjdC51c2VDYWxsYmFjaygoY29sdW1uS2V5LCB3aWR0aCkgPT4ge1xuICAgICAgICB1cGRhdGVDb2xzV2lkdGhzKHdpZHRocyA9PiB7XG4gICAgICAgICAgICBpZiAod2lkdGhzLmdldChjb2x1bW5LZXkpICE9PSB3aWR0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1dpZHRocyA9IG5ldyBNYXAod2lkdGhzKTtcbiAgICAgICAgICAgICAgICBuZXdXaWR0aHMuc2V0KGNvbHVtbktleSwgd2lkdGgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXdXaWR0aHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gd2lkdGhzO1xuICAgICAgICB9KTtcbiAgICB9LCBbXSk7XG4gICAgY29uc3QgW3NldFNjcm9sbFRhcmdldCwgZ2V0U2Nyb2xsVGFyZ2V0XSA9IHVzZVRpbWVvdXRMb2NrKG51bGwpO1xuICAgIGZ1bmN0aW9uIGZvcmNlU2Nyb2xsKHNjcm9sbExlZnQsIHRhcmdldCkge1xuICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0YXJnZXQoc2Nyb2xsTGVmdCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGFyZ2V0LnNjcm9sbExlZnQgIT09IHNjcm9sbExlZnQpIHtcbiAgICAgICAgICAgIHRhcmdldC5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdDtcbiAgICAgICAgICAgIC8vIERlbGF5IHRvIGZvcmNlIHNjcm9sbCBwb3NpdGlvbiBpZiBub3Qgc3luY1xuICAgICAgICAgICAgaWYgKHRhcmdldC5zY3JvbGxMZWZ0ICE9PSBzY3JvbGxMZWZ0KSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdDtcbiAgICAgICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBbc2Nyb2xsSW5mbywgc2V0U2Nyb2xsSW5mb10gPSBSZWFjdC51c2VTdGF0ZShbMCwgMF0pO1xuICAgIGNvbnN0IG9uSW50ZXJuYWxTY3JvbGwgPSB1c2VFdmVudCgoeyBjdXJyZW50VGFyZ2V0LCBzY3JvbGxMZWZ0IH0pID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBtZXJnZWRTY3JvbGxMZWZ0ID0gdHlwZW9mIHNjcm9sbExlZnQgPT09ICdudW1iZXInID8gc2Nyb2xsTGVmdCA6IGN1cnJlbnRUYXJnZXQuc2Nyb2xsTGVmdDtcbiAgICAgICAgY29uc3QgY29tcGFyZVRhcmdldCA9IGN1cnJlbnRUYXJnZXQgfHwgRU1QVFlfU0NST0xMX1RBUkdFVDtcbiAgICAgICAgaWYgKCFnZXRTY3JvbGxUYXJnZXQoKSB8fCBnZXRTY3JvbGxUYXJnZXQoKSA9PT0gY29tcGFyZVRhcmdldCkge1xuICAgICAgICAgICAgc2V0U2Nyb2xsVGFyZ2V0KGNvbXBhcmVUYXJnZXQpO1xuICAgICAgICAgICAgZm9yY2VTY3JvbGwobWVyZ2VkU2Nyb2xsTGVmdCwgc2Nyb2xsSGVhZGVyUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgZm9yY2VTY3JvbGwobWVyZ2VkU2Nyb2xsTGVmdCwgc2Nyb2xsQm9keVJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgIGZvcmNlU2Nyb2xsKG1lcmdlZFNjcm9sbExlZnQsIHNjcm9sbFN1bW1hcnlSZWYuY3VycmVudCk7XG4gICAgICAgICAgICBmb3JjZVNjcm9sbChtZXJnZWRTY3JvbGxMZWZ0LCAoX2EgPSBzdGlja3lSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNldFNjcm9sbExlZnQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1lYXN1cmVUYXJnZXQgPSBjdXJyZW50VGFyZ2V0IHx8IHNjcm9sbEhlYWRlclJlZi5jdXJyZW50O1xuICAgICAgICBpZiAobWVhc3VyZVRhcmdldCkge1xuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsV2lkdGggPSBcbiAgICAgICAgICAgIC8vIFNob3VsZCB1c2UgbWVyZ2VkU2Nyb2xsWCBpbiB2aXJ0dWFsIHRhYmxlKHVzZUludGVybmFsSG9va3MgJiYgdGFpbG9yID09PSB0cnVlKVxuICAgICAgICAgICAgdXNlSW50ZXJuYWxIb29rcyAmJiB0YWlsb3IgJiYgdHlwZW9mIG1lcmdlZFNjcm9sbFggPT09ICdudW1iZXInXG4gICAgICAgICAgICAgICAgPyBtZXJnZWRTY3JvbGxYXG4gICAgICAgICAgICAgICAgOiBtZWFzdXJlVGFyZ2V0LnNjcm9sbFdpZHRoO1xuICAgICAgICAgICAgY29uc3QgY2xpZW50V2lkdGggPSBtZWFzdXJlVGFyZ2V0LmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgY29uc3QgYWJzU2Nyb2xsU3RhcnQgPSBNYXRoLmFicyhtZXJnZWRTY3JvbGxMZWZ0KTtcbiAgICAgICAgICAgIHNldFNjcm9sbEluZm8ob3JpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0U2Nyb2xsSW5mbyA9IFthYnNTY3JvbGxTdGFydCwgc2Nyb2xsV2lkdGggLSBjbGllbnRXaWR0aF07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRXF1YWwob3JpLCBuZXh0U2Nyb2xsSW5mbykgPyBvcmkgOiBuZXh0U2Nyb2xsSW5mbztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gVGhlcmUgaXMgbm8gc3BhY2UgdG8gc2Nyb2xsXG4gICAgICAgICAgICBpZiAoc2Nyb2xsV2lkdGggPT09IGNsaWVudFdpZHRoKSB7XG4gICAgICAgICAgICAgICAgc2V0U2hhZG93U3RhcnQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHNldFNoYWRvd0VuZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0U2hhZG93U3RhcnQoYWJzU2Nyb2xsU3RhcnQgPiAwKTtcbiAgICAgICAgICAgIHNldFNoYWRvd0VuZChhYnNTY3JvbGxTdGFydCA8IHNjcm9sbFdpZHRoIC0gY2xpZW50V2lkdGggLSAxKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IG9uQm9keVNjcm9sbCA9IHVzZUV2ZW50KChlKSA9PiB7XG4gICAgICAgIG9uSW50ZXJuYWxTY3JvbGwoZSk7XG4gICAgICAgIG9uU2Nyb2xsID09PSBudWxsIHx8IG9uU2Nyb2xsID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblNjcm9sbChlKTtcbiAgICB9KTtcbiAgICBjb25zdCB0cmlnZ2VyT25TY3JvbGwgPSAoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKGhvcml6b25TY3JvbGwgJiYgc2Nyb2xsQm9keVJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBvbkludGVybmFsU2Nyb2xsKHtcbiAgICAgICAgICAgICAgICBjdXJyZW50VGFyZ2V0OiBnZXRET00oc2Nyb2xsQm9keVJlZi5jdXJyZW50KSxcbiAgICAgICAgICAgICAgICBzY3JvbGxMZWZ0OiAoX2EgPSBzY3JvbGxCb2R5UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zY3JvbGxMZWZ0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzZXRTaGFkb3dTdGFydChmYWxzZSk7XG4gICAgICAgICAgICBzZXRTaGFkb3dFbmQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBvbkZ1bGxUYWJsZVJlc2l6ZSA9IChvZmZzZXRXaWR0aCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgKF9hID0gc3RpY2t5UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jaGVja1Njcm9sbEJhclZpc2libGUoKTtcbiAgICAgICAgbGV0IG1lcmdlZFdpZHRoID0gKF9jID0gb2Zmc2V0V2lkdGggIT09IG51bGwgJiYgb2Zmc2V0V2lkdGggIT09IHZvaWQgMCA/IG9mZnNldFdpZHRoIDogKF9iID0gZnVsbFRhYmxlUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogMDtcbiAgICAgICAgaWYgKHVzZUludGVybmFsSG9va3MgJiYgZ2V0Q29udGFpbmVyV2lkdGggJiYgZnVsbFRhYmxlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIG1lcmdlZFdpZHRoID0gZ2V0Q29udGFpbmVyV2lkdGgoZnVsbFRhYmxlUmVmLmN1cnJlbnQsIG1lcmdlZFdpZHRoKSB8fCBtZXJnZWRXaWR0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWVyZ2VkV2lkdGggIT09IGNvbXBvbmVudFdpZHRoKSB7XG4gICAgICAgICAgICB0cmlnZ2VyT25TY3JvbGwoKTtcbiAgICAgICAgICAgIHNldENvbXBvbmVudFdpZHRoKG1lcmdlZFdpZHRoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGhvcml6b25TY3JvbGwpIHtcbiAgICAgICAgICAgIG9uRnVsbFRhYmxlUmVzaXplKCk7XG4gICAgICAgIH1cbiAgICB9LCBbaG9yaXpvblNjcm9sbF0pO1xuICAgIC8vIFN5bmMgc2Nyb2xsIGJhciB3aGVuIGluaXQgb3IgYGhvcml6b25TY3JvbGxgLCBgZGF0YWAgYW5kIGBjb2x1bW5zLmxlbmd0aGAgY2hhbmdlZFxuICAgIGNvbnN0IG1vdW50ZWQgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIC8vIG9uRnVsbFRhYmxlUmVzaXplIHdpbGwgYmUgdHJpZ2dlciBvbmNlIHdoZW4gUmVzaXplT2JzZXJ2ZXIgaXMgbW91bnRlZFxuICAgICAgICAvLyBUaGlzIHdpbGwgcmVkdWNlIG9uZSBkdXBsaWNhdGVkIHRyaWdnZXJPblNjcm9sbCB0aW1lXG4gICAgICAgIGlmIChtb3VudGVkLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHRyaWdnZXJPblNjcm9sbCgpO1xuICAgICAgICB9XG4gICAgfSwgW2hvcml6b25TY3JvbGwsIGRhdGEsIGNvbHVtbnMubGVuZ3RoXSk7XG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgbW91bnRlZC5jdXJyZW50ID0gdHJ1ZTtcbiAgICB9LCBbXSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09IEVmZmVjdHMgPT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IFtzY3JvbGxiYXJTaXplLCBzZXRTY3JvbGxiYXJTaXplXSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghdGFpbG9yIHx8ICF1c2VJbnRlcm5hbEhvb2tzKSB7XG4gICAgICAgICAgICBpZiAoc2Nyb2xsQm9keVJlZi5jdXJyZW50IGluc3RhbmNlb2YgRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHNldFNjcm9sbGJhclNpemUoZ2V0VGFyZ2V0U2Nyb2xsQmFyU2l6ZShzY3JvbGxCb2R5UmVmLmN1cnJlbnQpLndpZHRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNldFNjcm9sbGJhclNpemUoZ2V0VGFyZ2V0U2Nyb2xsQmFyU2l6ZShzY3JvbGxCb2R5Q29udGFpbmVyUmVmLmN1cnJlbnQpLndpZHRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIFtdKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT0gSU5URVJOQUwgSE9PS1MgPT09PT09PT09PT09PT09PT09XG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHVzZUludGVybmFsSG9va3MgJiYgaW50ZXJuYWxSZWZzKSB7XG4gICAgICAgICAgICBpbnRlcm5hbFJlZnMuYm9keS5jdXJyZW50ID0gc2Nyb2xsQm9keVJlZi5jdXJyZW50O1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gPT0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PSBSZW5kZXI6IEZ1bmMgPT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IHJlbmRlckZpeGVkSGVhZGVyVGFibGUgPSBSZWFjdC51c2VDYWxsYmFjayhmaXhlZEhvbGRlclBhc3NQcm9wcyA9PiAoX2pzeHMoX0ZyYWdtZW50LCB7IGNoaWxkcmVuOiBbX2pzeChIZWFkZXIsIE9iamVjdC5hc3NpZ24oe30sIGZpeGVkSG9sZGVyUGFzc1Byb3BzKSksIGZpeEZvb3RlciA9PT0gJ3RvcCcgJiYgX2pzeChGb290ZXIsIE9iamVjdC5hc3NpZ24oe30sIGZpeGVkSG9sZGVyUGFzc1Byb3BzLCB7IGNoaWxkcmVuOiBzdW1tYXJ5Tm9kZSB9KSldIH0pKSwgW2ZpeEZvb3Rlciwgc3VtbWFyeU5vZGVdKTtcbiAgICBjb25zdCByZW5kZXJGaXhlZEZvb3RlclRhYmxlID0gUmVhY3QudXNlQ2FsbGJhY2soZml4ZWRIb2xkZXJQYXNzUHJvcHMgPT4gX2pzeChGb290ZXIsIE9iamVjdC5hc3NpZ24oe30sIGZpeGVkSG9sZGVyUGFzc1Byb3BzLCB7IGNoaWxkcmVuOiBzdW1tYXJ5Tm9kZSB9KSksIFtzdW1tYXJ5Tm9kZV0pO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT0gUmVuZGVyOiBOb2RlID09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBUYWJsZUNvbXBvbmVudCA9IGdldENvbXBvbmVudChbJ3RhYmxlJ10sICd0YWJsZScpO1xuICAgIC8vIFRhYmxlIGxheW91dFxuICAgIGNvbnN0IG1lcmdlZFRhYmxlTGF5b3V0ID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmICh0YWJsZUxheW91dCkge1xuICAgICAgICAgICAgcmV0dXJuIHRhYmxlTGF5b3V0O1xuICAgICAgICB9XG4gICAgICAgIC8vIFdoZW4gc2Nyb2xsLnggaXMgbWF4LWNvbnRlbnQsIG5vIG5lZWQgdG8gZml4IHRhYmxlIGxheW91dFxuICAgICAgICAvLyBpdCdzIHdpZHRoIHNob3VsZCBzdHJldGNoIG91dCB0byBmaXQgY29udGVudFxuICAgICAgICBpZiAoZml4Q29sdW1uKSB7XG4gICAgICAgICAgICByZXR1cm4gbWVyZ2VkU2Nyb2xsWCA9PT0gJ21heC1jb250ZW50JyA/ICdhdXRvJyA6ICdmaXhlZCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpeEhlYWRlciB8fCBpc1N0aWNreSB8fCBmbGF0dGVuQ29sdW1ucy5zb21lKCh7IGVsbGlwc2lzIH0pID0+IGVsbGlwc2lzKSkge1xuICAgICAgICAgICAgcmV0dXJuICdmaXhlZCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICdhdXRvJztcbiAgICB9LCBbZml4SGVhZGVyLCBmaXhDb2x1bW4sIGZsYXR0ZW5Db2x1bW5zLCB0YWJsZUxheW91dCwgaXNTdGlja3ldKTtcbiAgICBsZXQgZ3JvdXBUYWJsZU5vZGU7XG4gICAgLy8gSGVhZGVyIHByb3BzXG4gICAgY29uc3QgaGVhZGVyUHJvcHMgPSB7XG4gICAgICAgIGNvbFdpZHRocyxcbiAgICAgICAgY29sdW1Db3VudDogZmxhdHRlbkNvbHVtbnMubGVuZ3RoLFxuICAgICAgICBzdGlja3lPZmZzZXRzLFxuICAgICAgICBvbkhlYWRlclJvdyxcbiAgICAgICAgZml4SGVhZGVyLFxuICAgICAgICBzY3JvbGwsXG4gICAgfTtcbiAgICAvLyBFbXB0eVxuICAgIGNvbnN0IGVtcHR5Tm9kZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAoaGFzRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBlbXB0eVRleHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiBlbXB0eVRleHQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZW1wdHlUZXh0O1xuICAgIH0sIFtoYXNEYXRhLCBlbXB0eVRleHRdKTtcbiAgICAvLyBCb2R5XG4gICAgY29uc3QgYm9keVRhYmxlID0gKF9qc3goQm9keSwgeyBkYXRhOiBtZXJnZWREYXRhLCBtZWFzdXJlQ29sdW1uV2lkdGg6IGZpeEhlYWRlciB8fCBob3Jpem9uU2Nyb2xsIHx8IGlzU3RpY2t5IH0pKTtcbiAgICBjb25zdCBib2R5Q29sR3JvdXAgPSAoX2pzeChDb2xHcm91cCwgeyBjb2xXaWR0aHM6IGZsYXR0ZW5Db2x1bW5zLm1hcCgoeyB3aWR0aCB9KSA9PiB3aWR0aCksIGNvbHVtbnM6IGZsYXR0ZW5Db2x1bW5zIH0pKTtcbiAgICBjb25zdCBjYXB0aW9uRWxlbWVudCA9IGNhcHRpb24gIT09IG51bGwgJiYgY2FwdGlvbiAhPT0gdW5kZWZpbmVkID8gKF9qc3goXCJjYXB0aW9uXCIsIHsgY2xhc3NOYW1lOiBgJHtwcmVmaXhDbHN9LWNhcHRpb25gLCBjaGlsZHJlbjogY2FwdGlvbiB9KSkgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZGF0YVByb3BzID0gcGlja0F0dHJzKHByb3BzLCB7IGRhdGE6IHRydWUgfSk7XG4gICAgY29uc3QgYXJpYVByb3BzID0gcGlja0F0dHJzKHByb3BzLCB7IGFyaWE6IHRydWUgfSk7XG4gICAgaWYgKGZpeEhlYWRlciB8fCBpc1N0aWNreSkge1xuICAgICAgICAvLyA+Pj4+Pj4gRml4ZWQgSGVhZGVyXG4gICAgICAgIGxldCBib2R5Q29udGVudDtcbiAgICAgICAgaWYgKHR5cGVvZiBjdXN0b21pemVTY3JvbGxCb2R5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBib2R5Q29udGVudCA9IGN1c3RvbWl6ZVNjcm9sbEJvZHkobWVyZ2VkRGF0YSwge1xuICAgICAgICAgICAgICAgIHNjcm9sbGJhclNpemUsXG4gICAgICAgICAgICAgICAgcmVmOiBzY3JvbGxCb2R5UmVmLFxuICAgICAgICAgICAgICAgIG9uU2Nyb2xsOiBvbkludGVybmFsU2Nyb2xsLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBoZWFkZXJQcm9wcy5jb2xXaWR0aHMgPSBmbGF0dGVuQ29sdW1ucy5tYXAoKHsgd2lkdGggfSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb2xXaWR0aCA9IGluZGV4ID09PSBmbGF0dGVuQ29sdW1ucy5sZW5ndGggLSAxID8gd2lkdGggLSBzY3JvbGxiYXJTaXplIDogd2lkdGg7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb2xXaWR0aCA9PT0gJ251bWJlcicgJiYgIU51bWJlci5pc05hTihjb2xXaWR0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbFdpZHRoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICB3YXJuaW5nKHByb3BzLmNvbHVtbnMubGVuZ3RoID09PSAwLCAnV2hlbiB1c2UgYGNvbXBvbmVudHMuYm9keWAgd2l0aCByZW5kZXIgcHJvcHMuIEVhY2ggY29sdW1uIHNob3VsZCBoYXZlIGEgZml4ZWQgYHdpZHRoYCB2YWx1ZS4nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGJvZHlDb250ZW50ID0gKF9qc3goXCJkaXZcIiwgeyBzdHlsZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzY3JvbGxYU3R5bGUpLCBzY3JvbGxZU3R5bGUpLCBvblNjcm9sbDogb25Cb2R5U2Nyb2xsLCByZWY6IHNjcm9sbEJvZHlSZWYsIGNsYXNzTmFtZTogYCR7cHJlZml4Q2xzfS1ib2R5YCwgY2hpbGRyZW46IF9qc3hzKFRhYmxlQ29tcG9uZW50LCBPYmplY3QuYXNzaWduKHsgc3R5bGU6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc2Nyb2xsVGFibGVTdHlsZSksIHsgdGFibGVMYXlvdXQ6IG1lcmdlZFRhYmxlTGF5b3V0IH0pIH0sIGFyaWFQcm9wcywgeyBjaGlsZHJlbjogW2NhcHRpb25FbGVtZW50LCBib2R5Q29sR3JvdXAsIGJvZHlUYWJsZSwgIWZpeEZvb3RlciAmJiBzdW1tYXJ5Tm9kZSAmJiAoX2pzeChGb290ZXIsIHsgc3RpY2t5T2Zmc2V0czogc3RpY2t5T2Zmc2V0cywgZmxhdHRlbkNvbHVtbnM6IGZsYXR0ZW5Db2x1bW5zLCBjaGlsZHJlbjogc3VtbWFyeU5vZGUgfSkpXSB9KSkgfSkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIEZpeGVkIGhvbGRlciBzaGFyZSB0aGUgcHJvcHNcbiAgICAgICAgY29uc3QgZml4ZWRIb2xkZXJQcm9wcyA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHsgbm9EYXRhOiAhbWVyZ2VkRGF0YS5sZW5ndGgsIG1heENvbnRlbnRTY3JvbGw6IGhvcml6b25TY3JvbGwgJiYgbWVyZ2VkU2Nyb2xsWCA9PT0gJ21heC1jb250ZW50JyB9LCBoZWFkZXJQcm9wcyksIGNvbHVtbkNvbnRleHQpLCB7IGRpcmVjdGlvbixcbiAgICAgICAgICAgIHN0aWNreUNsYXNzTmFtZSwgc2Nyb2xsWDogbWVyZ2VkU2Nyb2xsWCwgdGFibGVMYXlvdXQ6IG1lcmdlZFRhYmxlTGF5b3V0LCBvblNjcm9sbDogb25JbnRlcm5hbFNjcm9sbCB9KTtcbiAgICAgICAgZ3JvdXBUYWJsZU5vZGUgPSAoX2pzeHMoX0ZyYWdtZW50LCB7IGNoaWxkcmVuOiBbc2hvd0hlYWRlciAhPT0gZmFsc2UgJiYgKF9qc3goRml4ZWRIb2xkZXIsIE9iamVjdC5hc3NpZ24oe30sIGZpeGVkSG9sZGVyUHJvcHMsIHsgc3RpY2t5VG9wT2Zmc2V0OiBvZmZzZXRIZWFkZXIsIGNsYXNzTmFtZTogYCR7cHJlZml4Q2xzfS1oZWFkZXJgLCByZWY6IHNjcm9sbEhlYWRlclJlZiwgY29sR3JvdXA6IGJvZHlDb2xHcm91cCwgY2hpbGRyZW46IHJlbmRlckZpeGVkSGVhZGVyVGFibGUgfSkpKSwgYm9keUNvbnRlbnQsIGZpeEZvb3RlciAmJiBmaXhGb290ZXIgIT09ICd0b3AnICYmIChfanN4KEZpeGVkSG9sZGVyLCBPYmplY3QuYXNzaWduKHt9LCBmaXhlZEhvbGRlclByb3BzLCB7IHN0aWNreUJvdHRvbU9mZnNldDogb2Zmc2V0U3VtbWFyeSwgY2xhc3NOYW1lOiBgJHtwcmVmaXhDbHN9LXN1bW1hcnlgLCByZWY6IHNjcm9sbFN1bW1hcnlSZWYsIGNvbEdyb3VwOiBib2R5Q29sR3JvdXAsIGNoaWxkcmVuOiByZW5kZXJGaXhlZEZvb3RlclRhYmxlIH0pKSksIGlzU3RpY2t5ICYmIHNjcm9sbEJvZHlSZWYuY3VycmVudCAmJiBzY3JvbGxCb2R5UmVmLmN1cnJlbnQgaW5zdGFuY2VvZiBFbGVtZW50ICYmIChfanN4KFN0aWNreVNjcm9sbEJhciwgeyByZWY6IHN0aWNreVJlZiwgb2Zmc2V0U2Nyb2xsOiBvZmZzZXRTY3JvbGwsIHNjcm9sbEJvZHlSZWY6IHNjcm9sbEJvZHlSZWYsIG9uU2Nyb2xsOiBvbkludGVybmFsU2Nyb2xsLCBjb250YWluZXI6IGNvbnRhaW5lciwgZGlyZWN0aW9uOiBkaXJlY3Rpb24gfSkpXSB9KSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICAvLyA+Pj4+Pj4gVW5pcXVlIHRhYmxlXG4gICAgICAgIGdyb3VwVGFibGVOb2RlID0gKF9qc3goXCJkaXZcIiwgeyBzdHlsZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHNjcm9sbFhTdHlsZSksIHNjcm9sbFlTdHlsZSksIHN0eWxlcyA9PT0gbnVsbCB8fCBzdHlsZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0eWxlcy5jb250ZW50KSwgY2xhc3NOYW1lOiBjbHN4KGAke3ByZWZpeENsc30tY29udGVudGAsIGNsYXNzTmFtZXMgPT09IG51bGwgfHwgY2xhc3NOYW1lcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2xhc3NOYW1lcy5jb250ZW50KSwgb25TY3JvbGw6IG9uSW50ZXJuYWxTY3JvbGwsIHJlZjogc2Nyb2xsQm9keVJlZiwgY2hpbGRyZW46IF9qc3hzKFRhYmxlQ29tcG9uZW50LCBPYmplY3QuYXNzaWduKHsgc3R5bGU6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc2Nyb2xsVGFibGVTdHlsZSksIHsgdGFibGVMYXlvdXQ6IG1lcmdlZFRhYmxlTGF5b3V0IH0pIH0sIGFyaWFQcm9wcywgeyBjaGlsZHJlbjogW2NhcHRpb25FbGVtZW50LCBib2R5Q29sR3JvdXAsIHNob3dIZWFkZXIgIT09IGZhbHNlICYmIF9qc3goSGVhZGVyLCBPYmplY3QuYXNzaWduKHt9LCBoZWFkZXJQcm9wcywgY29sdW1uQ29udGV4dCkpLCBib2R5VGFibGUsIHN1bW1hcnlOb2RlICYmIChfanN4KEZvb3RlciwgeyBzdGlja3lPZmZzZXRzOiBzdGlja3lPZmZzZXRzLCBmbGF0dGVuQ29sdW1uczogZmxhdHRlbkNvbHVtbnMsIGNoaWxkcmVuOiBzdW1tYXJ5Tm9kZSB9KSldIH0pKSB9KSk7XG4gICAgfVxuICAgIGNvbnN0IHRhYmxlU3R5bGUgPSBPYmplY3QuYXNzaWduKHt9LCBzdHlsZSk7XG4gICAgLy8gQWRkIGNzcyB2YXIgZm9yIHN0aWNreSBoZWFkZXIgYHpJbmRleGAgY2FsY1xuICAgIGlmIChpc1N0aWNreSkge1xuICAgICAgICB0YWJsZVN0eWxlWyctLWNvbHVtbnMtY291bnQnXSA9IGZsYXR0ZW5Db2x1bW5zLmxlbmd0aDtcbiAgICB9XG4gICAgbGV0IGZ1bGxUYWJsZSA9IChfanN4cyhcImRpdlwiLCBPYmplY3QuYXNzaWduKHsgY2xhc3NOYW1lOiBjbHN4KHByZWZpeENscywgY2xhc3NOYW1lLCB7XG4gICAgICAgICAgICBbYCR7cHJlZml4Q2xzfS1ydGxgXTogZGlyZWN0aW9uID09PSAncnRsJyxcbiAgICAgICAgICAgIFtgJHtwcmVmaXhDbHN9LWZpeC1zdGFydC1zaGFkb3dgXTogaG9yaXpvblNjcm9sbCxcbiAgICAgICAgICAgIFtgJHtwcmVmaXhDbHN9LWZpeC1lbmQtc2hhZG93YF06IGhvcml6b25TY3JvbGwsXG4gICAgICAgICAgICBbYCR7cHJlZml4Q2xzfS1maXgtc3RhcnQtc2hhZG93LXNob3dgXTogaG9yaXpvblNjcm9sbCAmJiBzaGFkb3dTdGFydCxcbiAgICAgICAgICAgIFtgJHtwcmVmaXhDbHN9LWZpeC1lbmQtc2hhZG93LXNob3dgXTogaG9yaXpvblNjcm9sbCAmJiBzaGFkb3dFbmQsXG4gICAgICAgICAgICBbYCR7cHJlZml4Q2xzfS1sYXlvdXQtZml4ZWRgXTogdGFibGVMYXlvdXQgPT09ICdmaXhlZCcsXG4gICAgICAgICAgICBbYCR7cHJlZml4Q2xzfS1maXhlZC1oZWFkZXJgXTogZml4SGVhZGVyLFxuICAgICAgICAgICAgLyoqIE5vIHVzZWQgYnV0IGZvciBjb21wYXRpYmxlICovXG4gICAgICAgICAgICBbYCR7cHJlZml4Q2xzfS1maXhlZC1jb2x1bW5gXTogZml4Q29sdW1uLFxuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30tc2Nyb2xsLWhvcml6b250YWxgXTogaG9yaXpvblNjcm9sbCxcbiAgICAgICAgICAgIFtgJHtwcmVmaXhDbHN9LWhhcy1maXgtc3RhcnRgXTogKF9hID0gZmxhdHRlbkNvbHVtbnNbMF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5maXhlZCxcbiAgICAgICAgICAgIFtgJHtwcmVmaXhDbHN9LWhhcy1maXgtZW5kYF06ICgoX2IgPSBmbGF0dGVuQ29sdW1uc1tmbGF0dGVuQ29sdW1ucy5sZW5ndGggLSAxXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmZpeGVkKSA9PT0gJ2VuZCcsXG4gICAgICAgIH0pLCBzdHlsZTogdGFibGVTdHlsZSwgaWQ6IGlkLCByZWY6IGZ1bGxUYWJsZVJlZiB9LCBkYXRhUHJvcHMsIHsgY2hpbGRyZW46IFt0aXRsZSAmJiAoX2pzeChQYW5lbCwgeyBjbGFzc05hbWU6IGNsc3goYCR7cHJlZml4Q2xzfS10aXRsZWAsIGNsYXNzTmFtZXMgPT09IG51bGwgfHwgY2xhc3NOYW1lcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2xhc3NOYW1lcy50aXRsZSksIHN0eWxlOiBzdHlsZXMgPT09IG51bGwgfHwgc3R5bGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHlsZXMudGl0bGUsIGNoaWxkcmVuOiB0aXRsZShtZXJnZWREYXRhKSB9KSksIF9qc3goXCJkaXZcIiwgeyByZWY6IHNjcm9sbEJvZHlDb250YWluZXJSZWYsIGNsYXNzTmFtZTogY2xzeChgJHtwcmVmaXhDbHN9LWNvbnRhaW5lcmAsIGNsYXNzTmFtZXMgPT09IG51bGwgfHwgY2xhc3NOYW1lcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2xhc3NOYW1lcy5zZWN0aW9uKSwgc3R5bGU6IHN0eWxlcyA9PT0gbnVsbCB8fCBzdHlsZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0eWxlcy5zZWN0aW9uLCBjaGlsZHJlbjogZ3JvdXBUYWJsZU5vZGUgfSksIGZvb3RlciAmJiAoX2pzeChQYW5lbCwgeyBjbGFzc05hbWU6IGNsc3goYCR7cHJlZml4Q2xzfS1mb290ZXJgLCBjbGFzc05hbWVzID09PSBudWxsIHx8IGNsYXNzTmFtZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNsYXNzTmFtZXMuZm9vdGVyKSwgc3R5bGU6IHN0eWxlcyA9PT0gbnVsbCB8fCBzdHlsZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0eWxlcy5mb290ZXIsIGNoaWxkcmVuOiBmb290ZXIobWVyZ2VkRGF0YSkgfSkpXSB9KSkpO1xuICAgIGlmIChob3Jpem9uU2Nyb2xsKSB7XG4gICAgICAgIGZ1bGxUYWJsZSA9IChfanN4KFJlc2l6ZU9ic2VydmVyLCB7IG9uUmVzaXplOiAoeyBvZmZzZXRXaWR0aCB9KSA9PiBvbkZ1bGxUYWJsZVJlc2l6ZShvZmZzZXRXaWR0aCksIGNoaWxkcmVuOiBmdWxsVGFibGUgfSkpO1xuICAgIH1cbiAgICBjb25zdCBmaXhlZEluZm9MaXN0ID0gdXNlRml4ZWRJbmZvKGZsYXR0ZW5Db2x1bW5zLCBzdGlja3lPZmZzZXRzKTtcbiAgICBjb25zdCBUYWJsZUNvbnRleHRWYWx1ZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICAgICAgLy8gU2Nyb2xsXG4gICAgICAgIHNjcm9sbFg6IG1lcmdlZFNjcm9sbFgsXG4gICAgICAgIHNjcm9sbEluZm8sXG4gICAgICAgIGNsYXNzTmFtZXMsXG4gICAgICAgIHN0eWxlcyxcbiAgICAgICAgLy8gVGFibGVcbiAgICAgICAgcHJlZml4Q2xzLFxuICAgICAgICBnZXRDb21wb25lbnQsXG4gICAgICAgIHNjcm9sbGJhclNpemUsXG4gICAgICAgIGRpcmVjdGlvbixcbiAgICAgICAgZml4ZWRJbmZvTGlzdCxcbiAgICAgICAgaXNTdGlja3ksXG4gICAgICAgIGNvbXBvbmVudFdpZHRoLFxuICAgICAgICBmaXhIZWFkZXIsXG4gICAgICAgIGZpeENvbHVtbixcbiAgICAgICAgaG9yaXpvblNjcm9sbCxcbiAgICAgICAgLy8gQm9keVxuICAgICAgICB0YWJsZUxheW91dDogbWVyZ2VkVGFibGVMYXlvdXQsXG4gICAgICAgIHJvd0NsYXNzTmFtZSxcbiAgICAgICAgZXhwYW5kZWRSb3dDbGFzc05hbWU6IGV4cGFuZGFibGVDb25maWcuZXhwYW5kZWRSb3dDbGFzc05hbWUsXG4gICAgICAgIGV4cGFuZEljb246IG1lcmdlZEV4cGFuZEljb24sXG4gICAgICAgIGV4cGFuZGFibGVUeXBlLFxuICAgICAgICBleHBhbmRSb3dCeUNsaWNrOiBleHBhbmRhYmxlQ29uZmlnLmV4cGFuZFJvd0J5Q2xpY2ssXG4gICAgICAgIGV4cGFuZGVkUm93UmVuZGVyOiBleHBhbmRhYmxlQ29uZmlnLmV4cGFuZGVkUm93UmVuZGVyLFxuICAgICAgICBleHBhbmRlZFJvd09mZnNldDogZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRlZFJvd09mZnNldCxcbiAgICAgICAgb25UcmlnZ2VyRXhwYW5kLFxuICAgICAgICBleHBhbmRJY29uQ29sdW1uSW5kZXg6IGV4cGFuZGFibGVDb25maWcuZXhwYW5kSWNvbkNvbHVtbkluZGV4LFxuICAgICAgICBpbmRlbnRTaXplOiBleHBhbmRhYmxlQ29uZmlnLmluZGVudFNpemUsXG4gICAgICAgIGFsbENvbHVtbnNGaXhlZExlZnQ6IGZsYXR0ZW5Db2x1bW5zLmV2ZXJ5KGNvbCA9PiBjb2wuZml4ZWQgPT09ICdzdGFydCcpLFxuICAgICAgICBlbXB0eU5vZGUsXG4gICAgICAgIC8vIENvbHVtblxuICAgICAgICBjb2x1bW5zLFxuICAgICAgICBmbGF0dGVuQ29sdW1ucyxcbiAgICAgICAgb25Db2x1bW5SZXNpemUsXG4gICAgICAgIGNvbFdpZHRocyxcbiAgICAgICAgLy8gUm93XG4gICAgICAgIGhvdmVyU3RhcnRSb3c6IHN0YXJ0Um93LFxuICAgICAgICBob3ZlckVuZFJvdzogZW5kUm93LFxuICAgICAgICBvbkhvdmVyLFxuICAgICAgICByb3dFeHBhbmRhYmxlOiBleHBhbmRhYmxlQ29uZmlnLnJvd0V4cGFuZGFibGUsXG4gICAgICAgIG9uUm93LFxuICAgICAgICBnZXRSb3dLZXksXG4gICAgICAgIGV4cGFuZGVkS2V5czogbWVyZ2VkRXhwYW5kZWRLZXlzLFxuICAgICAgICBjaGlsZHJlbkNvbHVtbk5hbWU6IG1lcmdlZENoaWxkcmVuQ29sdW1uTmFtZSxcbiAgICAgICAgcm93SG92ZXJhYmxlLFxuICAgICAgICAvLyBNZWFzdXJlIFJvd1xuICAgICAgICBtZWFzdXJlUm93UmVuZGVyLFxuICAgIH0pLCBbXG4gICAgICAgIC8vIFNjcm9sbFxuICAgICAgICBtZXJnZWRTY3JvbGxYLFxuICAgICAgICBzY3JvbGxJbmZvLFxuICAgICAgICBjbGFzc05hbWVzLFxuICAgICAgICBzdHlsZXMsXG4gICAgICAgIC8vIFRhYmxlXG4gICAgICAgIHByZWZpeENscyxcbiAgICAgICAgZ2V0Q29tcG9uZW50LFxuICAgICAgICBzY3JvbGxiYXJTaXplLFxuICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgIGZpeGVkSW5mb0xpc3QsXG4gICAgICAgIGlzU3RpY2t5LFxuICAgICAgICBjb21wb25lbnRXaWR0aCxcbiAgICAgICAgZml4SGVhZGVyLFxuICAgICAgICBmaXhDb2x1bW4sXG4gICAgICAgIGhvcml6b25TY3JvbGwsXG4gICAgICAgIC8vIEJvZHlcbiAgICAgICAgbWVyZ2VkVGFibGVMYXlvdXQsXG4gICAgICAgIHJvd0NsYXNzTmFtZSxcbiAgICAgICAgZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRlZFJvd0NsYXNzTmFtZSxcbiAgICAgICAgbWVyZ2VkRXhwYW5kSWNvbixcbiAgICAgICAgZXhwYW5kYWJsZVR5cGUsXG4gICAgICAgIGV4cGFuZGFibGVDb25maWcuZXhwYW5kUm93QnlDbGljayxcbiAgICAgICAgZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRlZFJvd1JlbmRlcixcbiAgICAgICAgZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRlZFJvd09mZnNldCxcbiAgICAgICAgb25UcmlnZ2VyRXhwYW5kLFxuICAgICAgICBleHBhbmRhYmxlQ29uZmlnLmV4cGFuZEljb25Db2x1bW5JbmRleCxcbiAgICAgICAgZXhwYW5kYWJsZUNvbmZpZy5pbmRlbnRTaXplLFxuICAgICAgICBlbXB0eU5vZGUsXG4gICAgICAgIC8vIENvbHVtblxuICAgICAgICBjb2x1bW5zLFxuICAgICAgICBmbGF0dGVuQ29sdW1ucyxcbiAgICAgICAgb25Db2x1bW5SZXNpemUsXG4gICAgICAgIGNvbFdpZHRocyxcbiAgICAgICAgLy8gUm93XG4gICAgICAgIHN0YXJ0Um93LFxuICAgICAgICBlbmRSb3csXG4gICAgICAgIG9uSG92ZXIsXG4gICAgICAgIGV4cGFuZGFibGVDb25maWcucm93RXhwYW5kYWJsZSxcbiAgICAgICAgb25Sb3csXG4gICAgICAgIGdldFJvd0tleSxcbiAgICAgICAgbWVyZ2VkRXhwYW5kZWRLZXlzLFxuICAgICAgICBtZXJnZWRDaGlsZHJlbkNvbHVtbk5hbWUsXG4gICAgICAgIHJvd0hvdmVyYWJsZSxcbiAgICAgICAgbWVhc3VyZVJvd1JlbmRlcixcbiAgICBdKTtcbiAgICByZXR1cm4gX2pzeChUYWJsZUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IFRhYmxlQ29udGV4dFZhbHVlLCBjaGlsZHJlbjogZnVsbFRhYmxlIH0pO1xufTtcbmNvbnN0IFJlZlRhYmxlID0gUmVhY3QuZm9yd2FyZFJlZihUYWJsZSk7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIFJlZlRhYmxlLmRpc3BsYXlOYW1lID0gJ1RhYmxlJztcbn1cbmV4cG9ydCBjb25zdCBnZW5UYWJsZSA9IChzaG91bGRUcmlnZ2VyUmVuZGVyKSA9PiB7XG4gICAgcmV0dXJuIG1ha2VJbW11dGFibGUoUmVmVGFibGUsIHNob3VsZFRyaWdnZXJSZW5kZXIpO1xufTtcbmNvbnN0IEltbXV0YWJsZVRhYmxlID0gZ2VuVGFibGUoKTtcbkltbXV0YWJsZVRhYmxlLkVYUEFORF9DT0xVTU4gPSBFWFBBTkRfQ09MVU1OO1xuSW1tdXRhYmxlVGFibGUuSU5URVJOQUxfSE9PS1MgPSBJTlRFUk5BTF9IT09LUztcbkltbXV0YWJsZVRhYmxlLkNvbHVtbiA9IENvbHVtbjtcbkltbXV0YWJsZVRhYmxlLkNvbHVtbkdyb3VwID0gQ29sdW1uR3JvdXA7XG5JbW11dGFibGVUYWJsZS5TdW1tYXJ5ID0gRm9vdGVyQ29tcG9uZW50cztcbmV4cG9ydCBkZWZhdWx0IEltbXV0YWJsZVRhYmxlOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
686
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvaW50ZXJuYWwva2VybmVsL1RhYmxlLmpzIiwiY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9zcmMvY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9rZXJuZWwvVGFibGUudHN4Il0sIm5hbWVzIjpbImpzeCIsIl9qc3giLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImpzeHMiLCJfanN4cyIsImNsc3giLCJSZXNpemVPYnNlcnZlciIsImdldFRhcmdldFNjcm9sbEJhclNpemUiLCJ1c2VFdmVudCIsInBpY2tBdHRycyIsImdldFZhbHVlIiwid2FybmluZyIsIlJlYWN0IiwiQm9keSIsIkNvbEdyb3VwIiwiRVhQQU5EX0NPTFVNTiIsIklOVEVSTkFMX0hPT0tTIiwiVGFibGVDb250ZXh0IiwibWFrZUltbXV0YWJsZSIsIkZpeGVkSG9sZGVyIiwiRm9vdGVyIiwiRm9vdGVyQ29tcG9uZW50cyIsIlN1bW1hcnkiLCJIZWFkZXIiLCJ1c2VDb2x1bW5zIiwidXNlRXhwYW5kIiwidXNlRml4ZWRJbmZvIiwidXNlVGltZW91dExvY2siLCJ1c2VIb3ZlciIsInVzZVN0aWNreSIsInVzZVN0aWNreU9mZnNldHMiLCJQYW5lbCIsIlN0aWNreVNjcm9sbEJhciIsIkNvbHVtbiIsIkNvbHVtbkdyb3VwIiwiZ2V0Q29sdW1uc0tleSIsInZhbGlkYXRlVmFsdWUiLCJ2YWxpZE51bWJlclZhbHVlIiwiZ2V0RE9NIiwiaXNFcXVhbCIsInVzZUxheW91dEVmZmVjdCIsIkRFRkFVTFRfUFJFRklYIiwiRU1QVFlfREFUQSIsIkVNUFRZX1NDUk9MTF9UQVJHRVQiLCJkZWZhdWx0RW1wdHkiLCJUYWJsZSIsInRhYmxlUHJvcHMiLCJyZWYiLCJfY2xzeCIsIl9hIiwiX2IiLCJwcm9wcyIsIk9iamVjdCIsImFzc2lnbiIsInJvd0tleSIsInByZWZpeENscyIsImVtcHR5VGV4dCIsImNsYXNzTmFtZSIsInJvd0NsYXNzTmFtZSIsInN0eWxlIiwiY2xhc3NOYW1lcyIsInN0eWxlcyIsImRhdGEiLCJzY3JvbGwiLCJ0YWJsZUxheW91dCIsImRpcmVjdGlvbiIsInRpdGxlIiwiZm9vdGVyIiwic3VtbWFyeSIsImNhcHRpb24iLCJpZCIsInNob3dIZWFkZXIiLCJjb21wb25lbnRzIiwib25Sb3ciLCJvbkhlYWRlclJvdyIsIm1lYXN1cmVSb3dSZW5kZXIiLCJvblNjcm9sbCIsImludGVybmFsSG9va3MiLCJ0cmFuc2Zvcm1Db2x1bW5zIiwiaW50ZXJuYWxSZWZzIiwidGFpbG9yIiwiZ2V0Q29udGFpbmVyV2lkdGgiLCJzdGlja3kiLCJfcHJvcHMkcm93SG92ZXJhYmxlIiwicm93SG92ZXJhYmxlIiwibWVyZ2VkRGF0YSIsImhhc0RhdGEiLCJsZW5ndGgiLCJ1c2VJbnRlcm5hbEhvb2tzIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiZm9yRWFjaCIsIm5hbWUiLCJ1bmRlZmluZWQiLCJjb25jYXQiLCJnZXRDb21wb25lbnQiLCJ1c2VDYWxsYmFjayIsInBhdGgiLCJkZWZhdWx0Q29tcG9uZW50IiwiZ2V0Um93S2V5IiwidXNlTWVtbyIsInJlY29yZCIsImtleSIsImN1c3RvbWl6ZVNjcm9sbEJvZHkiLCJfdXNlSG92ZXIiLCJfdXNlSG92ZXIyIiwiX3NsaWNlZFRvQXJyYXkiLCJzdGFydFJvdyIsImVuZFJvdyIsIm9uSG92ZXIiLCJfdXNlRXhwYW5kIiwiX3VzZUV4cGFuZDIiLCJleHBhbmRhYmxlQ29uZmlnIiwiZXhwYW5kYWJsZVR5cGUiLCJtZXJnZWRFeHBhbmRlZEtleXMiLCJtZXJnZWRFeHBhbmRJY29uIiwibWVyZ2VkQ2hpbGRyZW5Db2x1bW5OYW1lIiwib25UcmlnZ2VyRXhwYW5kIiwic2Nyb2xsWCIsIngiLCJfUmVhY3QkdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl9SZWFjdCR1c2VTdGF0ZTIiLCJjb21wb25lbnRXaWR0aCIsInNldENvbXBvbmVudFdpZHRoIiwiX3VzZUNvbHVtbnMiLCJleHBhbmRhYmxlIiwiZXhwYW5kZWRSb3dSZW5kZXIiLCJjb2x1bW5UaXRsZSIsImV4cGFuZGVkS2V5cyIsImV4cGFuZEljb24iLCJleHBhbmRJY29uQ29sdW1uSW5kZXgiLCJzY3JvbGxXaWR0aCIsImNsaWVudFdpZHRoIiwiX3VzZUNvbHVtbnMyIiwiY29sdW1ucyIsImZsYXR0ZW5Db2x1bW5zIiwiZmxhdHRlblNjcm9sbFgiLCJtZXJnZWRTY3JvbGxYIiwiY29sdW1uQ29udGV4dCIsImZ1bGxUYWJsZVJlZiIsInVzZVJlZiIsInNjcm9sbEhlYWRlclJlZiIsInNjcm9sbEJvZHlSZWYiLCJzY3JvbGxCb2R5Q29udGFpbmVyUmVmIiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsIm5hdGl2ZUVsZW1lbnQiLCJjdXJyZW50Iiwic2Nyb2xsVG8iLCJjb25maWciLCJIVE1MRWxlbWVudCIsImluZGV4IiwidG9wIiwib2Zmc2V0IiwibWVyZ2VkS2V5IiwidGFyZ2V0RWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJzY3JvbGxJbnRvVmlldyIsImVsZW1lbnRUb3AiLCJvZmZzZXRUb3AiLCJzY3JvbGxTdW1tYXJ5UmVmIiwiX1JlYWN0JHVzZVN0YXRlMyIsIl9SZWFjdCR1c2VTdGF0ZTQiLCJzaGFkb3dTdGFydCIsInNldFNoYWRvd1N0YXJ0IiwiX1JlYWN0JHVzZVN0YXRlNSIsIl9SZWFjdCR1c2VTdGF0ZTYiLCJzaGFkb3dFbmQiLCJzZXRTaGFkb3dFbmQiLCJfUmVhY3QkdXNlU3RhdGU3IiwiTWFwIiwiX1JlYWN0JHVzZVN0YXRlOCIsImNvbHNXaWR0aHMiLCJ1cGRhdGVDb2xzV2lkdGhzIiwiY29sc0tleXMiLCJwdXJlQ29sV2lkdGhzIiwibWFwIiwiY29sdW1uS2V5IiwiZ2V0IiwiY29sV2lkdGhzIiwiam9pbiIsInN0aWNreU9mZnNldHMiLCJmaXhIZWFkZXIiLCJ5IiwiaG9yaXpvblNjcm9sbCIsIkJvb2xlYW4iLCJmaXhlZCIsImZpeENvbHVtbiIsInNvbWUiLCJfcmVmIiwic3RpY2t5UmVmIiwiX3VzZVN0aWNreSIsImlzU3RpY2t5Iiwib2Zmc2V0SGVhZGVyIiwib2Zmc2V0U3VtbWFyeSIsIm9mZnNldFNjcm9sbCIsInN0aWNreUNsYXNzTmFtZSIsImNvbnRhaW5lciIsInN1bW1hcnlOb2RlIiwiZml4Rm9vdGVyIiwiaXNWYWxpZEVsZW1lbnQiLCJ0eXBlIiwic2Nyb2xsWFN0eWxlIiwic2Nyb2xsWVN0eWxlIiwic2Nyb2xsVGFibGVTdHlsZSIsIm92ZXJmbG93WSIsIm1heEhlaWdodCIsIm92ZXJmbG93WCIsIndpZHRoIiwibWluV2lkdGgiLCJvbkNvbHVtblJlc2l6ZSIsIndpZHRocyIsIm5ld1dpZHRocyIsInNldCIsIl91c2VUaW1lb3V0TG9jayIsIl91c2VUaW1lb3V0TG9jazIiLCJzZXRTY3JvbGxUYXJnZXQiLCJnZXRTY3JvbGxUYXJnZXQiLCJmb3JjZVNjcm9sbCIsInNjcm9sbExlZnQiLCJ0YXJnZXQiLCJzZXRUaW1lb3V0IiwiX1JlYWN0JHVzZVN0YXRlOSIsIl9SZWFjdCR1c2VTdGF0ZTAiLCJzY3JvbGxJbmZvIiwic2V0U2Nyb2xsSW5mbyIsIm9uSW50ZXJuYWxTY3JvbGwiLCJfcmVmMiIsImN1cnJlbnRUYXJnZXQiLCJtZXJnZWRTY3JvbGxMZWZ0IiwiY29tcGFyZVRhcmdldCIsInNldFNjcm9sbExlZnQiLCJtZWFzdXJlVGFyZ2V0IiwiYWJzU2Nyb2xsU3RhcnQiLCJNYXRoIiwiYWJzIiwib3JpIiwibmV4dFNjcm9sbEluZm8iLCJvbkJvZHlTY3JvbGwiLCJlIiwidHJpZ2dlck9uU2Nyb2xsIiwiX1JlYWN0JHVzZVN0YXRlMSIsIl9SZWFjdCR1c2VTdGF0ZTEwIiwic2Nyb2xsYmFyU2l6ZSIsInNldFNjcm9sbGJhclNpemUiLCJzeW5jU2Nyb2xsYmFyU2l6ZSIsIkVsZW1lbnQiLCJvbkZ1bGxUYWJsZVJlc2l6ZSIsIm9mZnNldFdpZHRoIiwiX2MiLCJjaGVja1Njcm9sbEJhclZpc2libGUiLCJtZXJnZWRXaWR0aCIsIm1vdW50ZWQiLCJ1c2VFZmZlY3QiLCJib2R5IiwicmVuZGVyRml4ZWRIZWFkZXJUYWJsZSIsImZpeGVkSG9sZGVyUGFzc1Byb3BzIiwiY2hpbGRyZW4iLCJyZW5kZXJGaXhlZEZvb3RlclRhYmxlIiwiVGFibGVDb21wb25lbnQiLCJtZXJnZWRUYWJsZUxheW91dCIsIl9yZWYzIiwiZWxsaXBzaXMiLCJncm91cFRhYmxlTm9kZSIsImhlYWRlclByb3BzIiwiY29sdW1Db3VudCIsImVtcHR5Tm9kZSIsImJvZHlUYWJsZSIsIm1lYXN1cmVDb2x1bW5XaWR0aCIsImJvZHlDb2xHcm91cCIsIl9yZWY0IiwiY2FwdGlvbkVsZW1lbnQiLCJkYXRhUHJvcHMiLCJhcmlhUHJvcHMiLCJhcmlhIiwiYm9keUNvbnRlbnQiLCJfcmVmNSIsImNvbFdpZHRoIiwiTnVtYmVyIiwiaXNOYU4iLCJmaXhlZEhvbGRlclByb3BzIiwibm9EYXRhIiwibWF4Q29udGVudFNjcm9sbCIsInN0aWNreVRvcE9mZnNldCIsImNvbEdyb3VwIiwic3RpY2t5Qm90dG9tT2Zmc2V0IiwiY29udGVudCIsInRhYmxlU3R5bGUiLCJmdWxsVGFibGUiLCJfZGVmaW5lUHJvcGVydHkiLCJzZWN0aW9uIiwib25SZXNpemUiLCJfcmVmNiIsImZpeGVkSW5mb0xpc3QiLCJUYWJsZUNvbnRleHRWYWx1ZSIsImV4cGFuZGVkUm93Q2xhc3NOYW1lIiwiZXhwYW5kUm93QnlDbGljayIsImV4cGFuZGVkUm93T2Zmc2V0IiwiaW5kZW50U2l6ZSIsImFsbENvbHVtbnNGaXhlZExlZnQiLCJldmVyeSIsImNvbCIsImhvdmVyU3RhcnRSb3ciLCJob3ZlckVuZFJvdyIsInJvd0V4cGFuZGFibGUiLCJjaGlsZHJlbkNvbHVtbk5hbWUiLCJQcm92aWRlciIsInZhbHVlIiwiUmVmVGFibGUiLCJmb3J3YXJkUmVmIiwiZGlzcGxheU5hbWUiLCJnZW5UYWJsZSIsInNob3VsZFRyaWdnZXJSZW5kZXIiLCJJbW11dGFibGVUYWJsZSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxTQUFTQSxHQUFHLElBQUlDLElBQUksRUFBRUMsUUFBUSxJQUFJQyxTQUFTLEVBQUVDLElBQUksSUFBSUMsS0FBSyxRQUFRLG1CQUFt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LENBQXlCO0FBQzdGLENBQUM7QUFNRCxJQUFNb0IsUUFBUSxnQkFBR3pTLEtBQUssQ0FBQzBTLFVBQVUsQ0FBQ3pRLEtBQUssQ0FBd0I7QUFFL0QsSUFBSTRDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyxRQUFRLEtBQUssWUFBWSxFQUFFO0VBQ3pDME4sUUFBUSxDQUFDRSxXQUFXLEdBQUcsT0FBTztBQUNoQztBQUVBLE9BQU8sSUFBTUMsUUFBUSxHQUFHLFNBQVhBLFFBQVFBLENBQUlDLG1CQUF1RCxFQUFJO0VBQ2xGLE9BQU92UyxhQUFhLENBQUNtUyxRQUFRLEVBQUVJLG1CQUFtQixDQUFDO0FBQ3JELENBQUM7QUFFRCxJQUFNQyxjQUFjLEdBQUdGLFFBQVEsQ0FBQSxDQUFFO0FBVWhDRSxjQUFxQyxDQUFDM1MsYUFBYSxHQUFHQSxhQUFhO0FBRW5FMlMsY0FBcUMsQ0FBQzFTLGNBQWMsR0FBR0EsY0FBYztBQUVyRTBTLGNBQXFDLENBQUN6UixNQUFNLEdBQUdBLE1BQU07QUFFckR5UixjQUFxQyxDQUFDeFIsV0FBVyxHQUFHQSxXQUFXO0FBRS9Ed1IsY0FBcUMsQ0FBQ3BTLE9BQU8sR0FBR0QsZ0JBQWdCO0FBRWpFLGVBQWVxUyxjQUFvQyIsImZpbGUiOiJjb21wb25lbnRzL1RhYmxlL2ludGVybmFsL2tlcm5lbC9UYWJsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBGcmFnbWVudCBhcyBfRnJhZ21lbnQsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGNsc3ggfSBmcm9tICdjbHN4JztcbmltcG9ydCBSZXNpemVPYnNlcnZlciBmcm9tICcuLi8uLi8uLi9SZXNpemVPYnNlcnZlcic7XG5pbXBvcnQgeyBnZXRUYXJnZXRTY3JvbGxCYXJTaXplIH0gZnJvbSAnLi91dGlscy9nZXRTY3JvbGxCYXJTaXplJztcbmltcG9ydCB1c2VFdmVudCBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHBpY2tBdHRycyBmcm9tICcuL3V0aWxzL3BpY2tBdHRycyc7XG5pbXBvcnQgZ2V0VmFsdWUgZnJvbSAnLi91dGlscy9nZXQnO1xuaW1wb3J0IHdhcm5pbmcgZnJvbSAnLi91dGlscy93YXJuaW5nJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCb2R5IGZyb20gJy4vQm9keSc7XG5pbXBvcnQgQ29sR3JvdXAgZnJvbSAnLi9Db2xHcm91cCc7XG5pbXBvcnQgeyBFWFBBTkRfQ09MVU1OLCBJTlRFUk5BTF9IT09LUyB9IGZyb20gJy4vY29uc3RhbnQnO1xuaW1wb3J0IFRhYmxlQ29udGV4dCwgeyBtYWtlSW1tdXRhYmxlIH0gZnJvbSAnLi9jb250ZXh0L1RhYmxlQ29udGV4dCc7XG5pbXBvcnQgRml4ZWRIb2xkZXIgZnJvbSAnLi9GaXhlZEhvbGRlcic7XG5pbXBvcnQgRm9vdGVyLCB7IEZvb3RlckNvbXBvbmVudHMgfSBmcm9tICcuL0Zvb3Rlcic7XG5pbXBvcnQgU3VtbWFyeSBmcm9tICcuL0Zvb3Rlci9TdW1tYXJ5JztcbmltcG9ydCBIZWFkZXIgZnJvbSAnLi9IZWFkZXIvSGVhZGVyJztcbmltcG9ydCB1c2VDb2x1bW5zIGZyb20gJy4vaG9va3MvdXNlQ29sdW1ucyc7XG5pbXBvcnQgdXNlRXhwYW5kIGZyb20gJy4vaG9va3MvdXNlRXhwYW5kJztcbmltcG9ydCB1c2VGaXhlZEluZm8gZnJvbSAnLi9ob29rcy91c2VGaXhlZEluZm8nO1xuaW1wb3J0IHsgdXNlVGltZW91dExvY2sgfSBmcm9tICcuL2hvb2tzL3VzZUZyYW1lJztcbmltcG9ydCB1c2VIb3ZlciBmcm9tICcuL2hvb2tzL3VzZUhvdmVyJztcbmltcG9ydCB1c2VTdGlja3kgZnJvbSAnLi9ob29rcy91c2VTdGlja3knO1xuaW1wb3J0IHVzZVN0aWNreU9mZnNldHMgZnJvbSAnLi9ob29rcy91c2VTdGlja3lPZmZzZXRzJztcbmltcG9ydCBQYW5lbCBmcm9tICcuL1BhbmVsJztcbmltcG9ydCBTdGlja3lTY3JvbGxCYXIgZnJvbSAnLi9zdGlja3lTY3JvbGxCYXInO1xuaW1wb3J0IENvbHVtbiBmcm9tICcuL3N1Z2FyL0NvbHVtbic7XG5pbXBvcnQgQ29sdW1uR3JvdXAgZnJvbSAnLi9zdWdhci9Db2x1bW5Hcm91cCc7XG5pbXBvcnQgeyBnZXRDb2x1bW5zS2V5LCB2YWxpZGF0ZVZhbHVlLCB2YWxpZE51bWJlclZhbHVlIH0gZnJvbSAnLi91dGlscy92YWx1ZVV0aWwnO1xuaW1wb3J0IHsgZ2V0RE9NIH0gZnJvbSAnLi4vLi4vLi4vUmVzaXplT2JzZXJ2ZXIvdXRpbHMvcmVhY3RVdGlsJztcbmltcG9ydCBpc0VxdWFsIGZyb20gJy4vc2VsZWN0b3ItY29udGV4dC9pc0VxdWFsJztcbmltcG9ydCB1c2VMYXlvdXRFZmZlY3QgZnJvbSAnQDFtb25leS9ob29rcy91c2VMYXlvdXRFZmZlY3QnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUFJFRklYID0gJ29tLXRhYmxlJztcbi8vIFVzZWQgZm9yIGNvbmRpdGlvbnMgY2FjaGVcbmNvbnN0IEVNUFRZX0RBVEEgPSBbXTtcbi8vIFVzZWQgZm9yIGN1c3RvbWl6ZSBzY3JvbGxcbmNvbnN0IEVNUFRZX1NDUk9MTF9UQVJHRVQgPSB7fTtcbmZ1bmN0aW9uIGRlZmF1bHRFbXB0eSgpIHtcbiAgICByZXR1cm4gJ05vIERhdGEnO1xufVxuY29uc3QgVGFibGUgPSAodGFibGVQcm9wcywgcmVmKSA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBjb25zdCBwcm9wcyA9IE9iamVjdC5hc3NpZ24oeyByb3dLZXk6ICdrZXknLCBwcmVmaXhDbHM6IERFRkFVTFRfUFJFRklYLCBlbXB0eVRleHQ6IGRlZmF1bHRFbXB0eSB9LCB0YWJsZVByb3BzKTtcbiAgICBjb25zdCB7IHByZWZpeENscywgY2xhc3NOYW1lLCByb3dDbGFzc05hbWUsIHN0eWxlLCBjbGFzc05hbWVzLCBzdHlsZXMsIGRhdGEsIHJvd0tleSwgc2Nyb2xsLCB0YWJsZUxheW91dCwgZGlyZWN0aW9uLCBcbiAgICAvLyBBZGRpdGlvbmFsIFBhcnRcbiAgICB0aXRsZSwgZm9vdGVyLCBzdW1tYXJ5LCBjYXB0aW9uLCBcbiAgICAvLyBDdXN0b21pemVcbiAgICBpZCwgc2hvd0hlYWRlciwgY29tcG9uZW50cywgZW1wdHlUZXh0LCBvblJvdywgb25IZWFkZXJSb3csIFxuICAgIC8vIE1lYXN1cmUgUm93XG4gICAgbWVhc3VyZVJvd1JlbmRlciwgXG4gICAgLy8gRXZlbnRzXG4gICAgb25TY3JvbGwsIFxuICAgIC8vIEludGVybmFsXG4gICAgaW50ZXJuYWxIb29rcywgdHJhbnNmb3JtQ29sdW1ucywgaW50ZXJuYWxSZWZzLCB0YWlsb3IsIGdldENvbnRhaW5lcldpZHRoLCBzdGlja3ksIHJvd0hvdmVyYWJsZSA9IHRydWUsIH0gPSBwcm9wcztcbiAgICBjb25zdCBtZXJnZWREYXRhID0gZGF0YSB8fCBFTVBUWV9EQVRBO1xuICAgIGNvbnN0IGhhc0RhdGEgPSAhIW1lcmdlZERhdGEubGVuZ3RoO1xuICAgIGNvbnN0IHVzZUludGVybmFsSG9va3MgPSBpbnRlcm5hbEhvb2tzID09PSBJTlRFUk5BTF9IT09LUztcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT0gV2FybmluZyA9PT09PT09PT09PT09PT09PT09PT09XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgW1xuICAgICAgICAgICAgJ29uUm93Q2xpY2snLFxuICAgICAgICAgICAgJ29uUm93RG91YmxlQ2xpY2snLFxuICAgICAgICAgICAgJ29uUm93Q29udGV4dE1lbnUnLFxuICAgICAgICAgICAgJ29uUm93TW91c2VFbnRlcicsXG4gICAgICAgICAgICAnb25Sb3dNb3VzZUxlYXZlJyxcbiAgICAgICAgXS5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgICAgICAgd2FybmluZyhwcm9wc1tuYW1lXSA9PT0gdW5kZWZpbmVkLCBgXFxgJHtuYW1lfVxcYCBpcyByZW1vdmVkLCBwbGVhc2UgdXNlIFxcYG9uUm93XFxgIGluc3RlYWQuYCk7XG4gICAgICAgIH0pO1xuICAgICAgICB3YXJuaW5nKCEoJ2dldEJvZHlXcmFwcGVyJyBpbiBwcm9wcyksICdgZ2V0Qm9keVdyYXBwZXJgIGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgY3VzdG9tIGBjb21wb25lbnRzYCBpbnN0ZWFkLicpO1xuICAgIH1cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PSBDdXN0b21pemUgPT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgZ2V0Q29tcG9uZW50ID0gUmVhY3QudXNlQ2FsbGJhY2soKHBhdGgsIGRlZmF1bHRDb21wb25lbnQpID0+IGdldFZhbHVlKGNvbXBvbmVudHMsIHBhdGgpIHx8IGRlZmF1bHRDb21wb25lbnQsIFtjb21wb25lbnRzXSk7XG4gICAgY29uc3QgZ2V0Um93S2V5ID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2Ygcm93S2V5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gcm93S2V5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAocmVjb3JkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSByZWNvcmQgJiYgcmVjb3JkW3Jvd0tleV07XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICAgIHdhcm5pbmcoa2V5ICE9PSB1bmRlZmluZWQsICdFYWNoIHJlY29yZCBpbiB0YWJsZSBzaG91bGQgaGF2ZSBhIHVuaXF1ZSBga2V5YCBwcm9wLCBvciBzZXQgYHJvd0tleWAgdG8gYW4gdW5pcXVlIHByaW1hcnkga2V5LicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgfTtcbiAgICB9LCBbcm93S2V5XSk7XG4gICAgY29uc3QgY3VzdG9taXplU2Nyb2xsQm9keSA9IGdldENvbXBvbmVudChbJ2JvZHknXSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PSBIb3ZlciA9PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IFtzdGFydFJvdywgZW5kUm93LCBvbkhvdmVyXSA9IHVzZUhvdmVyKCk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PSBFeHBhbmQgPT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IFtleHBhbmRhYmxlQ29uZmlnLCBleHBhbmRhYmxlVHlwZSwgbWVyZ2VkRXhwYW5kZWRLZXlzLCBtZXJnZWRFeHBhbmRJY29uLCBtZXJnZWRDaGlsZHJlbkNvbHVtbk5hbWUsIG9uVHJpZ2dlckV4cGFuZCxdID0gdXNlRXhwYW5kKHByb3BzLCBtZXJnZWREYXRhLCBnZXRSb3dLZXkpO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT0gQ29sdW1uID09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBzY3JvbGxYID0gc2Nyb2xsID09PSBudWxsIHx8IHNjcm9sbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2Nyb2xsLng7XG4gICAgY29uc3QgW2NvbXBvbmVudFdpZHRoLCBzZXRDb21wb25lbnRXaWR0aF0gPSBSZWFjdC51c2VTdGF0ZSgwKTtcbiAgICBjb25zdCBbY29sdW1ucywgZmxhdHRlbkNvbHVtbnMsIGZsYXR0ZW5TY3JvbGxYXSA9IHVzZUNvbHVtbnMoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHByb3BzKSwgZXhwYW5kYWJsZUNvbmZpZyksIHsgZXhwYW5kYWJsZTogISFleHBhbmRhYmxlQ29uZmlnLmV4cGFuZGVkUm93UmVuZGVyLCBjb2x1bW5UaXRsZTogZXhwYW5kYWJsZUNvbmZpZy5jb2x1bW5UaXRsZSwgZXhwYW5kZWRLZXlzOiBtZXJnZWRFeHBhbmRlZEtleXMsIGdldFJvd0tleSxcbiAgICAgICAgb25UcmlnZ2VyRXhwYW5kLCBleHBhbmRJY29uOiBtZXJnZWRFeHBhbmRJY29uLCBleHBhbmRJY29uQ29sdW1uSW5kZXg6IGV4cGFuZGFibGVDb25maWcuZXhwYW5kSWNvbkNvbHVtbkluZGV4LCBkaXJlY3Rpb24sIHNjcm9sbFdpZHRoOiB1c2VJbnRlcm5hbEhvb2tzICYmIHRhaWxvciAmJiB0eXBlb2Ygc2Nyb2xsWCA9PT0gJ251bWJlcicgPyBzY3JvbGxYIDogbnVsbCwgY2xpZW50V2lkdGg6IGNvbXBvbmVudFdpZHRoIH0pLCB1c2VJbnRlcm5hbEhvb2tzID8gdHJhbnNmb3JtQ29sdW1ucyA6IG51bGwpO1xuICAgIGNvbnN0IG1lcmdlZFNjcm9sbFggPSBmbGF0dGVuU2Nyb2xsWCAhPT0gbnVsbCAmJiBmbGF0dGVuU2Nyb2xsWCAhPT0gdm9pZCAwID8gZmxhdHRlblNjcm9sbFggOiBzY3JvbGxYO1xuICAgIGNvbnN0IGNvbHVtbkNvbnRleHQgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7IGNvbHVtbnMsIGZsYXR0ZW5Db2x1bW5zIH0pLCBbY29sdW1ucywgZmxhdHRlbkNvbHVtbnNdKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PSBSZWZzID09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgZnVsbFRhYmxlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHNjcm9sbEhlYWRlclJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCBzY3JvbGxCb2R5UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHNjcm9sbEJvZHlDb250YWluZXJSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgUmVhY3QudXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hdGl2ZUVsZW1lbnQ6IGZ1bGxUYWJsZVJlZi5jdXJyZW50LFxuICAgICAgICAgICAgc2Nyb2xsVG86IGNvbmZpZyA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsQm9keVJlZi5jdXJyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTmF0aXZlIHNjcm9sbFxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGluZGV4LCB0b3AsIGtleSwgb2Zmc2V0IH0gPSBjb25maWc7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWxpZE51bWJlclZhbHVlKHRvcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluIHRvcCBtb2RlLCBvZmZzZXQgaXMgaWdub3JlZFxuICAgICAgICAgICAgICAgICAgICAgICAgKF9hID0gc2Nyb2xsQm9keVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc2Nyb2xsVG8oeyB0b3AgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXJnZWRLZXkgPSBrZXkgIT09IG51bGwgJiYga2V5ICE9PSB2b2lkIDAgPyBrZXkgOiBnZXRSb3dLZXkobWVyZ2VkRGF0YVtpbmRleF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IHNjcm9sbEJvZHlSZWYuY3VycmVudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1yb3cta2V5PVwiJHttZXJnZWRLZXl9XCJdYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0RWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vIG9mZnNldCwgdXNlIHNjcm9sbEludG9WaWV3IGZvciBkZWZhdWx0IGJlaGF2aW9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdpdGggb2Zmc2V0LCB1c2UgZWxlbWVudCdzIG9mZnNldFRvcCArIG9mZnNldFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50VG9wID0gdGFyZ2V0RWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbEJvZHlSZWYuY3VycmVudC5zY3JvbGxUbyh7IHRvcDogZWxlbWVudFRvcCArIG9mZnNldCB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKF9iID0gc2Nyb2xsQm9keVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Iuc2Nyb2xsVG8pIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gUGFzcyB0byBwcm94eVxuICAgICAgICAgICAgICAgICAgICBzY3JvbGxCb2R5UmVmLmN1cnJlbnQuc2Nyb2xsVG8oY29uZmlnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH0pO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT0gU2Nyb2xsID09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBzY3JvbGxTdW1tYXJ5UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IFtzaGFkb3dTdGFydCwgc2V0U2hhZG93U3RhcnRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtzaGFkb3dFbmQsIHNldFNoYWRvd0VuZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2NvbHNXaWR0aHMsIHVwZGF0ZUNvbHNXaWR0aHNdID0gUmVhY3QudXNlU3RhdGUobmV3IE1hcCgpKTtcbiAgICAvLyBDb252ZXJ0IG1hcCB0byBudW1iZXIgd2lkdGhcbiAgICBjb25zdCBjb2xzS2V5cyA9IGdldENvbHVtbnNLZXkoZmxhdHRlbkNvbHVtbnMpO1xuICAgIGNvbnN0IHB1cmVDb2xXaWR0aHMgPSBjb2xzS2V5cy5tYXAoY29sdW1uS2V5ID0+IGNvbHNXaWR0aHMuZ2V0KGNvbHVtbktleSkpO1xuICAgIGNvbnN0IGNvbFdpZHRocyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gcHVyZUNvbFdpZHRocywgW3B1cmVDb2xXaWR0aHMuam9pbignXycpXSk7XG4gICAgY29uc3Qgc3RpY2t5T2Zmc2V0cyA9IHVzZVN0aWNreU9mZnNldHMoY29sV2lkdGhzLCBmbGF0dGVuQ29sdW1ucyk7XG4gICAgY29uc3QgZml4SGVhZGVyID0gc2Nyb2xsICYmIHZhbGlkYXRlVmFsdWUoc2Nyb2xsLnkpO1xuICAgIGNvbnN0IGhvcml6b25TY3JvbGwgPSAoc2Nyb2xsICYmIHZhbGlkYXRlVmFsdWUobWVyZ2VkU2Nyb2xsWCkpIHx8IEJvb2xlYW4oZXhwYW5kYWJsZUNvbmZpZy5maXhlZCk7XG4gICAgY29uc3QgZml4Q29sdW1uID0gaG9yaXpvblNjcm9sbCAmJiBmbGF0dGVuQ29sdW1ucy5zb21lKCh7IGZpeGVkIH0pID0+IGZpeGVkKTtcbiAgICAvLyBTdGlja3lcbiAgICBjb25zdCBzdGlja3lSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3QgeyBpc1N0aWNreSwgb2Zmc2V0SGVhZGVyLCBvZmZzZXRTdW1tYXJ5LCBvZmZzZXRTY3JvbGwsIHN0aWNreUNsYXNzTmFtZSwgY29udGFpbmVyIH0gPSB1c2VTdGlja3koc3RpY2t5LCBwcmVmaXhDbHMpO1xuICAgIC8vIEZvb3RlciAoRml4IGZvb3RlciBtdXN0IGZpeGVkIGhlYWRlcilcbiAgICBjb25zdCBzdW1tYXJ5Tm9kZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gc3VtbWFyeSA9PT0gbnVsbCB8fCBzdW1tYXJ5ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdW1tYXJ5KG1lcmdlZERhdGEpLCBbc3VtbWFyeSwgbWVyZ2VkRGF0YV0pO1xuICAgIGNvbnN0IGZpeEZvb3RlciA9IChmaXhIZWFkZXIgfHwgaXNTdGlja3kpICYmXG4gICAgICAgIFJlYWN0LmlzVmFsaWRFbGVtZW50KHN1bW1hcnlOb2RlKSAmJlxuICAgICAgICBzdW1tYXJ5Tm9kZS50eXBlID09PSBTdW1tYXJ5ICYmXG4gICAgICAgIHN1bW1hcnlOb2RlLnByb3BzLmZpeGVkO1xuICAgIC8vIFNjcm9sbFxuICAgIGxldCBzY3JvbGxYU3R5bGU7XG4gICAgbGV0IHNjcm9sbFlTdHlsZTtcbiAgICBsZXQgc2Nyb2xsVGFibGVTdHlsZTtcbiAgICBpZiAoZml4SGVhZGVyKSB7XG4gICAgICAgIHNjcm9sbFlTdHlsZSA9IHtcbiAgICAgICAgICAgIG92ZXJmbG93WTogaGFzRGF0YSA/ICdzY3JvbGwnIDogJ2F1dG8nLFxuICAgICAgICAgICAgbWF4SGVpZ2h0OiBzY3JvbGwueSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGhvcml6b25TY3JvbGwpIHtcbiAgICAgICAgc2Nyb2xsWFN0eWxlID0geyBvdmVyZmxvd1g6ICdhdXRvJyB9O1xuICAgICAgICAvLyBXaGVuIG5vIHZlcnRpY2FsIHNjcm9sbGJhciwgc2hvdWxkIGhpZGUgaXRcbiAgICAgICAgaWYgKCFmaXhIZWFkZXIpIHtcbiAgICAgICAgICAgIHNjcm9sbFlTdHlsZSA9IHsgb3ZlcmZsb3dZOiAnaGlkZGVuJyB9O1xuICAgICAgICB9XG4gICAgICAgIHNjcm9sbFRhYmxlU3R5bGUgPSB7XG4gICAgICAgICAgICB3aWR0aDogbWVyZ2VkU2Nyb2xsWCA9PT0gdHJ1ZSA/ICdhdXRvJyA6IG1lcmdlZFNjcm9sbFgsXG4gICAgICAgICAgICBtaW5XaWR0aDogJzEwMCUnLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBvbkNvbHVtblJlc2l6ZSA9IFJlYWN0LnVzZUNhbGxiYWNrKChjb2x1bW5LZXksIHdpZHRoKSA9PiB7XG4gICAgICAgIHVwZGF0ZUNvbHNXaWR0aHMod2lkdGhzID0+IHtcbiAgICAgICAgICAgIGlmICh3aWR0aHMuZ2V0KGNvbHVtbktleSkgIT09IHdpZHRoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3V2lkdGhzID0gbmV3IE1hcCh3aWR0aHMpO1xuICAgICAgICAgICAgICAgIG5ld1dpZHRocy5zZXQoY29sdW1uS2V5LCB3aWR0aCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ld1dpZHRocztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB3aWR0aHM7XG4gICAgICAgIH0pO1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBbc2V0U2Nyb2xsVGFyZ2V0LCBnZXRTY3JvbGxUYXJnZXRdID0gdXNlVGltZW91dExvY2sobnVsbCk7XG4gICAgZnVuY3Rpb24gZm9yY2VTY3JvbGwoc2Nyb2xsTGVmdCwgdGFyZ2V0KSB7XG4gICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB0YXJnZXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRhcmdldChzY3JvbGxMZWZ0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0YXJnZXQuc2Nyb2xsTGVmdCAhPT0gc2Nyb2xsTGVmdCkge1xuICAgICAgICAgICAgdGFyZ2V0LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xuICAgICAgICAgICAgLy8gRGVsYXkgdG8gZm9yY2Ugc2Nyb2xsIHBvc2l0aW9uIGlmIG5vdCBzeW5jXG4gICAgICAgICAgICBpZiAodGFyZ2V0LnNjcm9sbExlZnQgIT09IHNjcm9sbExlZnQpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xuICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IFtzY3JvbGxJbmZvLCBzZXRTY3JvbGxJbmZvXSA9IFJlYWN0LnVzZVN0YXRlKFswLCAwXSk7XG4gICAgY29uc3Qgb25JbnRlcm5hbFNjcm9sbCA9IHVzZUV2ZW50KCh7IGN1cnJlbnRUYXJnZXQsIHNjcm9sbExlZnQgfSkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IG1lcmdlZFNjcm9sbExlZnQgPSB0eXBlb2Ygc2Nyb2xsTGVmdCA9PT0gJ251bWJlcicgPyBzY3JvbGxMZWZ0IDogY3VycmVudFRhcmdldC5zY3JvbGxMZWZ0O1xuICAgICAgICBjb25zdCBjb21wYXJlVGFyZ2V0ID0gY3VycmVudFRhcmdldCB8fCBFTVBUWV9TQ1JPTExfVEFSR0VUO1xuICAgICAgICBpZiAoIWdldFNjcm9sbFRhcmdldCgpIHx8IGdldFNjcm9sbFRhcmdldCgpID09PSBjb21wYXJlVGFyZ2V0KSB7XG4gICAgICAgICAgICBzZXRTY3JvbGxUYXJnZXQoY29tcGFyZVRhcmdldCk7XG4gICAgICAgICAgICBmb3JjZVNjcm9sbChtZXJnZWRTY3JvbGxMZWZ0LCBzY3JvbGxIZWFkZXJSZWYuY3VycmVudCk7XG4gICAgICAgICAgICBmb3JjZVNjcm9sbChtZXJnZWRTY3JvbGxMZWZ0LCBzY3JvbGxCb2R5UmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgZm9yY2VTY3JvbGwobWVyZ2VkU2Nyb2xsTGVmdCwgc2Nyb2xsU3VtbWFyeVJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgIGZvcmNlU2Nyb2xsKG1lcmdlZFNjcm9sbExlZnQsIChfYSA9IHN0aWNreVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc2V0U2Nyb2xsTGVmdCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWVhc3VyZVRhcmdldCA9IGN1cnJlbnRUYXJnZXQgfHwgc2Nyb2xsSGVhZGVyUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmIChtZWFzdXJlVGFyZ2V0KSB7XG4gICAgICAgICAgICBjb25zdCBzY3JvbGxXaWR0aCA9IFxuICAgICAgICAgICAgLy8gU2hvdWxkIHVzZSBtZXJnZWRTY3JvbGxYIGluIHZpcnR1YWwgdGFibGUodXNlSW50ZXJuYWxIb29rcyAmJiB0YWlsb3IgPT09IHRydWUpXG4gICAgICAgICAgICB1c2VJbnRlcm5hbEhvb2tzICYmIHRhaWxvciAmJiB0eXBlb2YgbWVyZ2VkU2Nyb2xsWCA9PT0gJ251bWJlcidcbiAgICAgICAgICAgICAgICA/IG1lcmdlZFNjcm9sbFhcbiAgICAgICAgICAgICAgICA6IG1lYXN1cmVUYXJnZXQuc2Nyb2xsV2lkdGg7XG4gICAgICAgICAgICBjb25zdCBjbGllbnRXaWR0aCA9IG1lYXN1cmVUYXJnZXQuY2xpZW50V2lkdGg7XG4gICAgICAgICAgICBjb25zdCBhYnNTY3JvbGxTdGFydCA9IE1hdGguYWJzKG1lcmdlZFNjcm9sbExlZnQpO1xuICAgICAgICAgICAgc2V0U2Nyb2xsSW5mbyhvcmkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRTY3JvbGxJbmZvID0gW2Fic1Njcm9sbFN0YXJ0LCBzY3JvbGxXaWR0aCAtIGNsaWVudFdpZHRoXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNFcXVhbChvcmksIG5leHRTY3JvbGxJbmZvKSA/IG9yaSA6IG5leHRTY3JvbGxJbmZvO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBUaGVyZSBpcyBubyBzcGFjZSB0byBzY3JvbGxcbiAgICAgICAgICAgIGlmIChzY3JvbGxXaWR0aCA9PT0gY2xpZW50V2lkdGgpIHtcbiAgICAgICAgICAgICAgICBzZXRTaGFkb3dTdGFydChmYWxzZSk7XG4gICAgICAgICAgICAgICAgc2V0U2hhZG93RW5kKGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRTaGFkb3dTdGFydChhYnNTY3JvbGxTdGFydCA+IDApO1xuICAgICAgICAgICAgc2V0U2hhZG93RW5kKGFic1Njcm9sbFN0YXJ0IDwgc2Nyb2xsV2lkdGggLSBjbGllbnRXaWR0aCAtIDEpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3Qgb25Cb2R5U2Nyb2xsID0gdXNlRXZlbnQoKGUpID0+IHtcbiAgICAgICAgb25JbnRlcm5hbFNjcm9sbChlKTtcbiAgICAgICAgb25TY3JvbGwgPT09IG51bGwgfHwgb25TY3JvbGwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uU2Nyb2xsKGUpO1xuICAgIH0pO1xuICAgIGNvbnN0IHRyaWdnZXJPblNjcm9sbCA9ICgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoaG9yaXpvblNjcm9sbCAmJiBzY3JvbGxCb2R5UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIG9uSW50ZXJuYWxTY3JvbGwoe1xuICAgICAgICAgICAgICAgIGN1cnJlbnRUYXJnZXQ6IGdldERPTShzY3JvbGxCb2R5UmVmLmN1cnJlbnQpLFxuICAgICAgICAgICAgICAgIHNjcm9sbExlZnQ6IChfYSA9IHNjcm9sbEJvZHlSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNjcm9sbExlZnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNldFNoYWRvd1N0YXJ0KGZhbHNlKTtcbiAgICAgICAgICAgIHNldFNoYWRvd0VuZChmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IFtzY3JvbGxiYXJTaXplLCBzZXRTY3JvbGxiYXJTaXplXSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICAgIGNvbnN0IHN5bmNTY3JvbGxiYXJTaXplID0gKCkgPT4ge1xuICAgICAgICBpZiAodGFpbG9yICYmIHVzZUludGVybmFsSG9va3MpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IHNjcm9sbEJvZHlSZWYuY3VycmVudCBpbnN0YW5jZW9mIEVsZW1lbnRcbiAgICAgICAgICAgID8gc2Nyb2xsQm9keVJlZi5jdXJyZW50XG4gICAgICAgICAgICA6IHNjcm9sbEJvZHlDb250YWluZXJSZWYuY3VycmVudDtcbiAgICAgICAgc2V0U2Nyb2xsYmFyU2l6ZShnZXRUYXJnZXRTY3JvbGxCYXJTaXplKHRhcmdldCkud2lkdGgpO1xuICAgIH07XG4gICAgY29uc3Qgb25GdWxsVGFibGVSZXNpemUgPSAob2Zmc2V0V2lkdGgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIHN5bmNTY3JvbGxiYXJTaXplKCk7XG4gICAgICAgIChfYSA9IHN0aWNreVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2hlY2tTY3JvbGxCYXJWaXNpYmxlKCk7XG4gICAgICAgIGxldCBtZXJnZWRXaWR0aCA9IChfYyA9IG9mZnNldFdpZHRoICE9PSBudWxsICYmIG9mZnNldFdpZHRoICE9PSB2b2lkIDAgPyBvZmZzZXRXaWR0aCA6IChfYiA9IGZ1bGxUYWJsZVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Iub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDA7XG4gICAgICAgIGlmICh1c2VJbnRlcm5hbEhvb2tzICYmIGdldENvbnRhaW5lcldpZHRoICYmIGZ1bGxUYWJsZVJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBtZXJnZWRXaWR0aCA9IGdldENvbnRhaW5lcldpZHRoKGZ1bGxUYWJsZVJlZi5jdXJyZW50LCBtZXJnZWRXaWR0aCkgfHwgbWVyZ2VkV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1lcmdlZFdpZHRoICE9PSBjb21wb25lbnRXaWR0aCkge1xuICAgICAgICAgICAgdHJpZ2dlck9uU2Nyb2xsKCk7XG4gICAgICAgICAgICBzZXRDb21wb25lbnRXaWR0aChtZXJnZWRXaWR0aCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChob3Jpem9uU2Nyb2xsKSB7XG4gICAgICAgICAgICBvbkZ1bGxUYWJsZVJlc2l6ZSgpO1xuICAgICAgICB9XG4gICAgfSwgW2hvcml6b25TY3JvbGxdKTtcbiAgICAvLyBTeW5jIHNjcm9sbCBiYXIgd2hlbiBpbml0IG9yIGBob3Jpem9uU2Nyb2xsYCwgYGRhdGFgIGFuZCBgY29sdW1ucy5sZW5ndGhgIGNoYW5nZWRcbiAgICBjb25zdCBtb3VudGVkID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAvLyBvbkZ1bGxUYWJsZVJlc2l6ZSB3aWxsIGJlIHRyaWdnZXIgb25jZSB3aGVuIFJlc2l6ZU9ic2VydmVyIGlzIG1vdW50ZWRcbiAgICAgICAgLy8gVGhpcyB3aWxsIHJlZHVjZSBvbmUgZHVwbGljYXRlZCB0cmlnZ2VyT25TY3JvbGwgdGltZVxuICAgICAgICBpZiAobW91bnRlZC5jdXJyZW50KSB7XG4gICAgICAgICAgICB0cmlnZ2VyT25TY3JvbGwoKTtcbiAgICAgICAgfVxuICAgIH0sIFtob3Jpem9uU2Nyb2xsLCBkYXRhLCBjb2x1bW5zLmxlbmd0aF0pO1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIG1vdW50ZWQuY3VycmVudCA9IHRydWU7XG4gICAgfSwgW10pO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PSBFZmZlY3RzID09PT09PT09PT09PT09PT09PT09PT1cbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzeW5jU2Nyb2xsYmFyU2l6ZSgpO1xuICAgIH0sIFtoYXNEYXRhLCBmaXhIZWFkZXIsIGlzU3RpY2t5LCBtZXJnZWREYXRhLmxlbmd0aF0pO1xuICAgIC8vID09PT09PT09PT09PT09PT09PSBJTlRFUk5BTCBIT09LUyA9PT09PT09PT09PT09PT09PT1cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAodXNlSW50ZXJuYWxIb29rcyAmJiBpbnRlcm5hbFJlZnMpIHtcbiAgICAgICAgICAgIGludGVybmFsUmVmcy5ib2R5LmN1cnJlbnQgPSBzY3JvbGxCb2R5UmVmLmN1cnJlbnQ7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyA9PSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT1cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09IFJlbmRlcjogRnVuYyA9PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgcmVuZGVyRml4ZWRIZWFkZXJUYWJsZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZpeGVkSG9sZGVyUGFzc1Byb3BzID0+IChfanN4cyhfRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtfanN4KEhlYWRlciwgT2JqZWN0LmFzc2lnbih7fSwgZml4ZWRIb2xkZXJQYXNzUHJvcHMpKSwgZml4Rm9vdGVyID09PSAndG9wJyAmJiBfanN4KEZvb3RlciwgT2JqZWN0LmFzc2lnbih7fSwgZml4ZWRIb2xkZXJQYXNzUHJvcHMsIHsgY2hpbGRyZW46IHN1bW1hcnlOb2RlIH0pKV0gfSkpLCBbZml4Rm9vdGVyLCBzdW1tYXJ5Tm9kZV0pO1xuICAgIGNvbnN0IHJlbmRlckZpeGVkRm9vdGVyVGFibGUgPSBSZWFjdC51c2VDYWxsYmFjayhmaXhlZEhvbGRlclBhc3NQcm9wcyA9PiBfanN4KEZvb3RlciwgT2JqZWN0LmFzc2lnbih7fSwgZml4ZWRIb2xkZXJQYXNzUHJvcHMsIHsgY2hpbGRyZW46IHN1bW1hcnlOb2RlIH0pKSwgW3N1bW1hcnlOb2RlXSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PSBSZW5kZXI6IE5vZGUgPT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IFRhYmxlQ29tcG9uZW50ID0gZ2V0Q29tcG9uZW50KFsndGFibGUnXSwgJ3RhYmxlJyk7XG4gICAgLy8gVGFibGUgbGF5b3V0XG4gICAgY29uc3QgbWVyZ2VkVGFibGVMYXlvdXQgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKHRhYmxlTGF5b3V0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGFibGVMYXlvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gV2hlbiBzY3JvbGwueCBpcyBtYXgtY29udGVudCwgbm8gbmVlZCB0byBmaXggdGFibGUgbGF5b3V0XG4gICAgICAgIC8vIGl0J3Mgd2lkdGggc2hvdWxkIHN0cmV0Y2ggb3V0IHRvIGZpdCBjb250ZW50XG4gICAgICAgIGlmIChmaXhDb2x1bW4pIHtcbiAgICAgICAgICAgIHJldHVybiBtZXJnZWRTY3JvbGxYID09PSAnbWF4LWNvbnRlbnQnID8gJ2F1dG8nIDogJ2ZpeGVkJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoZml4SGVhZGVyIHx8IGlzU3RpY2t5IHx8IGZsYXR0ZW5Db2x1bW5zLnNvbWUoKHsgZWxsaXBzaXMgfSkgPT4gZWxsaXBzaXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2ZpeGVkJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ2F1dG8nO1xuICAgIH0sIFtmaXhIZWFkZXIsIGZpeENvbHVtbiwgZmxhdHRlbkNvbHVtbnMsIHRhYmxlTGF5b3V0LCBpc1N0aWNreV0pO1xuICAgIGxldCBncm91cFRhYmxlTm9kZTtcbiAgICAvLyBIZWFkZXIgcHJvcHNcbiAgICBjb25zdCBoZWFkZXJQcm9wcyA9IHtcbiAgICAgICAgY29sV2lkdGhzLFxuICAgICAgICBjb2x1bUNvdW50OiBmbGF0dGVuQ29sdW1ucy5sZW5ndGgsXG4gICAgICAgIHN0aWNreU9mZnNldHMsXG4gICAgICAgIG9uSGVhZGVyUm93LFxuICAgICAgICBmaXhIZWFkZXIsXG4gICAgICAgIHNjcm9sbCxcbiAgICB9O1xuICAgIC8vIEVtcHR5XG4gICAgY29uc3QgZW1wdHlOb2RlID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmIChoYXNEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGVtcHR5VGV4dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIGVtcHR5VGV4dCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbXB0eVRleHQ7XG4gICAgfSwgW2hhc0RhdGEsIGVtcHR5VGV4dF0pO1xuICAgIC8vIEJvZHlcbiAgICBjb25zdCBib2R5VGFibGUgPSAoX2pzeChCb2R5LCB7IGRhdGE6IG1lcmdlZERhdGEsIG1lYXN1cmVDb2x1bW5XaWR0aDogZml4SGVhZGVyIHx8IGhvcml6b25TY3JvbGwgfHwgaXNTdGlja3kgfSkpO1xuICAgIGNvbnN0IGJvZHlDb2xHcm91cCA9IChfanN4KENvbEdyb3VwLCB7IGNvbFdpZHRoczogZmxhdHRlbkNvbHVtbnMubWFwKCh7IHdpZHRoIH0pID0+IHdpZHRoKSwgY29sdW1uczogZmxhdHRlbkNvbHVtbnMgfSkpO1xuICAgIGNvbnN0IGNhcHRpb25FbGVtZW50ID0gY2FwdGlvbiAhPT0gbnVsbCAmJiBjYXB0aW9uICE9PSB1bmRlZmluZWQgPyAoX2pzeChcImNhcHRpb25cIiwgeyBjbGFzc05hbWU6IGAke3ByZWZpeENsc30tY2FwdGlvbmAsIGNoaWxkcmVuOiBjYXB0aW9uIH0pKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBkYXRhUHJvcHMgPSBwaWNrQXR0cnMocHJvcHMsIHsgZGF0YTogdHJ1ZSB9KTtcbiAgICBjb25zdCBhcmlhUHJvcHMgPSBwaWNrQXR0cnMocHJvcHMsIHsgYXJpYTogdHJ1ZSB9KTtcbiAgICBpZiAoZml4SGVhZGVyIHx8IGlzU3RpY2t5KSB7XG4gICAgICAgIC8vID4+Pj4+PiBGaXhlZCBIZWFkZXJcbiAgICAgICAgbGV0IGJvZHlDb250ZW50O1xuICAgICAgICBpZiAodHlwZW9mIGN1c3RvbWl6ZVNjcm9sbEJvZHkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGJvZHlDb250ZW50ID0gY3VzdG9taXplU2Nyb2xsQm9keShtZXJnZWREYXRhLCB7XG4gICAgICAgICAgICAgICAgc2Nyb2xsYmFyU2l6ZSxcbiAgICAgICAgICAgICAgICByZWY6IHNjcm9sbEJvZHlSZWYsXG4gICAgICAgICAgICAgICAgb25TY3JvbGw6IG9uSW50ZXJuYWxTY3JvbGwsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGhlYWRlclByb3BzLmNvbFdpZHRocyA9IGZsYXR0ZW5Db2x1bW5zLm1hcCgoeyB3aWR0aCB9LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbFdpZHRoID0gaW5kZXggPT09IGZsYXR0ZW5Db2x1bW5zLmxlbmd0aCAtIDEgPyB3aWR0aCAtIHNjcm9sbGJhclNpemUgOiB3aWR0aDtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbFdpZHRoID09PSAnbnVtYmVyJyAmJiAhTnVtYmVyLmlzTmFOKGNvbFdpZHRoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29sV2lkdGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHdhcm5pbmcocHJvcHMuY29sdW1ucy5sZW5ndGggPT09IDAsICdXaGVuIHVzZSBgY29tcG9uZW50cy5ib2R5YCB3aXRoIHJlbmRlciBwcm9wcy4gRWFjaCBjb2x1bW4gc2hvdWxkIGhhdmUgYSBmaXhlZCBgd2lkdGhgIHZhbHVlLicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYm9keUNvbnRlbnQgPSAoX2pzeChcImRpdlwiLCB7IHN0eWxlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHNjcm9sbFhTdHlsZSksIHNjcm9sbFlTdHlsZSksIG9uU2Nyb2xsOiBvbkJvZHlTY3JvbGwsIHJlZjogc2Nyb2xsQm9keVJlZiwgY2xhc3NOYW1lOiBgJHtwcmVmaXhDbHN9LWJvZHlgLCBjaGlsZHJlbjogX2pzeHMoVGFibGVDb21wb25lbnQsIE9iamVjdC5hc3NpZ24oeyBzdHlsZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzY3JvbGxUYWJsZVN0eWxlKSwgeyB0YWJsZUxheW91dDogbWVyZ2VkVGFibGVMYXlvdXQgfSkgfSwgYXJpYVByb3BzLCB7IGNoaWxkcmVuOiBbY2FwdGlvbkVsZW1lbnQsIGJvZHlDb2xHcm91cCwgYm9keVRhYmxlLCAhZml4Rm9vdGVyICYmIHN1bW1hcnlOb2RlICYmIChfanN4KEZvb3RlciwgeyBzdGlja3lPZmZzZXRzOiBzdGlja3lPZmZzZXRzLCBmbGF0dGVuQ29sdW1uczogZmxhdHRlbkNvbHVtbnMsIGNoaWxkcmVuOiBzdW1tYXJ5Tm9kZSB9KSldIH0pKSB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRml4ZWQgaG9sZGVyIHNoYXJlIHRoZSBwcm9wc1xuICAgICAgICBjb25zdCBmaXhlZEhvbGRlclByb3BzID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oeyBub0RhdGE6ICFtZXJnZWREYXRhLmxlbmd0aCwgbWF4Q29udGVudFNjcm9sbDogaG9yaXpvblNjcm9sbCAmJiBtZXJnZWRTY3JvbGxYID09PSAnbWF4LWNvbnRlbnQnIH0sIGhlYWRlclByb3BzKSwgY29sdW1uQ29udGV4dCksIHsgZGlyZWN0aW9uLFxuICAgICAgICAgICAgc3RpY2t5Q2xhc3NOYW1lLCBzY3JvbGxYOiBtZXJnZWRTY3JvbGxYLCB0YWJsZUxheW91dDogbWVyZ2VkVGFibGVMYXlvdXQsIG9uU2Nyb2xsOiBvbkludGVybmFsU2Nyb2xsIH0pO1xuICAgICAgICBncm91cFRhYmxlTm9kZSA9IChfanN4cyhfRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtzaG93SGVhZGVyICE9PSBmYWxzZSAmJiAoX2pzeChGaXhlZEhvbGRlciwgT2JqZWN0LmFzc2lnbih7fSwgZml4ZWRIb2xkZXJQcm9wcywgeyBzdGlja3lUb3BPZmZzZXQ6IG9mZnNldEhlYWRlciwgY2xhc3NOYW1lOiBgJHtwcmVmaXhDbHN9LWhlYWRlcmAsIHJlZjogc2Nyb2xsSGVhZGVyUmVmLCBjb2xHcm91cDogYm9keUNvbEdyb3VwLCBjaGlsZHJlbjogcmVuZGVyRml4ZWRIZWFkZXJUYWJsZSB9KSkpLCBib2R5Q29udGVudCwgZml4Rm9vdGVyICYmIGZpeEZvb3RlciAhPT0gJ3RvcCcgJiYgKF9qc3goRml4ZWRIb2xkZXIsIE9iamVjdC5hc3NpZ24oe30sIGZpeGVkSG9sZGVyUHJvcHMsIHsgc3RpY2t5Qm90dG9tT2Zmc2V0OiBvZmZzZXRTdW1tYXJ5LCBjbGFzc05hbWU6IGAke3ByZWZpeENsc30tc3VtbWFyeWAsIHJlZjogc2Nyb2xsU3VtbWFyeVJlZiwgY29sR3JvdXA6IGJvZHlDb2xHcm91cCwgY2hpbGRyZW46IHJlbmRlckZpeGVkRm9vdGVyVGFibGUgfSkpKSwgaXNTdGlja3kgJiYgc2Nyb2xsQm9keVJlZi5jdXJyZW50ICYmIHNjcm9sbEJvZHlSZWYuY3VycmVudCBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgKF9qc3goU3RpY2t5U2Nyb2xsQmFyLCB7IHJlZjogc3RpY2t5UmVmLCBvZmZzZXRTY3JvbGw6IG9mZnNldFNjcm9sbCwgc2Nyb2xsQm9keVJlZjogc2Nyb2xsQm9keVJlZiwgb25TY3JvbGw6IG9uSW50ZXJuYWxTY3JvbGwsIGNvbnRhaW5lcjogY29udGFpbmVyLCBkaXJlY3Rpb246IGRpcmVjdGlvbiB9KSldIH0pKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vID4+Pj4+PiBVbmlxdWUgdGFibGVcbiAgICAgICAgZ3JvdXBUYWJsZU5vZGUgPSAoX2pzeChcImRpdlwiLCB7IHN0eWxlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc2Nyb2xsWFN0eWxlKSwgc2Nyb2xsWVN0eWxlKSwgc3R5bGVzID09PSBudWxsIHx8IHN0eWxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGVzLmNvbnRlbnQpLCBjbGFzc05hbWU6IGNsc3goYCR7cHJlZml4Q2xzfS1jb250ZW50YCwgY2xhc3NOYW1lcyA9PT0gbnVsbCB8fCBjbGFzc05hbWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjbGFzc05hbWVzLmNvbnRlbnQpLCBvblNjcm9sbDogb25JbnRlcm5hbFNjcm9sbCwgcmVmOiBzY3JvbGxCb2R5UmVmLCBjaGlsZHJlbjogX2pzeHMoVGFibGVDb21wb25lbnQsIE9iamVjdC5hc3NpZ24oeyBzdHlsZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzY3JvbGxUYWJsZVN0eWxlKSwgeyB0YWJsZUxheW91dDogbWVyZ2VkVGFibGVMYXlvdXQgfSkgfSwgYXJpYVByb3BzLCB7IGNoaWxkcmVuOiBbY2FwdGlvbkVsZW1lbnQsIGJvZHlDb2xHcm91cCwgc2hvd0hlYWRlciAhPT0gZmFsc2UgJiYgX2pzeChIZWFkZXIsIE9iamVjdC5hc3NpZ24oe30sIGhlYWRlclByb3BzLCBjb2x1bW5Db250ZXh0KSksIGJvZHlUYWJsZSwgc3VtbWFyeU5vZGUgJiYgKF9qc3goRm9vdGVyLCB7IHN0aWNreU9mZnNldHM6IHN0aWNreU9mZnNldHMsIGZsYXR0ZW5Db2x1bW5zOiBmbGF0dGVuQ29sdW1ucywgY2hpbGRyZW46IHN1bW1hcnlOb2RlIH0pKV0gfSkpIH0pKTtcbiAgICB9XG4gICAgY29uc3QgdGFibGVTdHlsZSA9IE9iamVjdC5hc3NpZ24oe30sIHN0eWxlKTtcbiAgICAvLyBBZGQgY3NzIHZhciBmb3Igc3RpY2t5IGhlYWRlciBgekluZGV4YCBjYWxjXG4gICAgaWYgKGlzU3RpY2t5KSB7XG4gICAgICAgIHRhYmxlU3R5bGVbJy0tY29sdW1ucy1jb3VudCddID0gZmxhdHRlbkNvbHVtbnMubGVuZ3RoO1xuICAgIH1cbiAgICBsZXQgZnVsbFRhYmxlID0gKF9qc3hzKFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oeyBjbGFzc05hbWU6IGNsc3gocHJlZml4Q2xzLCBjbGFzc05hbWUsIHtcbiAgICAgICAgICAgIFtgJHtwcmVmaXhDbHN9LXJ0bGBdOiBkaXJlY3Rpb24gPT09ICdydGwnLFxuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30tZml4LXN0YXJ0LXNoYWRvd2BdOiBob3Jpem9uU2Nyb2xsLFxuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30tZml4LWVuZC1zaGFkb3dgXTogaG9yaXpvblNjcm9sbCxcbiAgICAgICAgICAgIFtgJHtwcmVmaXhDbHN9LWZpeC1zdGFydC1zaGFkb3ctc2hvd2BdOiBob3Jpem9uU2Nyb2xsICYmIHNoYWRvd1N0YXJ0LFxuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30tZml4LWVuZC1zaGFkb3ctc2hvd2BdOiBob3Jpem9uU2Nyb2xsICYmIHNoYWRvd0VuZCxcbiAgICAgICAgICAgIFtgJHtwcmVmaXhDbHN9LWxheW91dC1maXhlZGBdOiB0YWJsZUxheW91dCA9PT0gJ2ZpeGVkJyxcbiAgICAgICAgICAgIFtgJHtwcmVmaXhDbHN9LWZpeGVkLWhlYWRlcmBdOiBmaXhIZWFkZXIsXG4gICAgICAgICAgICAvKiogTm8gdXNlZCBidXQgZm9yIGNvbXBhdGlibGUgKi9cbiAgICAgICAgICAgIFtgJHtwcmVmaXhDbHN9LWZpeGVkLWNvbHVtbmBdOiBmaXhDb2x1bW4sXG4gICAgICAgICAgICBbYCR7cHJlZml4Q2xzfS1zY3JvbGwtaG9yaXpvbnRhbGBdOiBob3Jpem9uU2Nyb2xsLFxuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30taGFzLWZpeC1zdGFydGBdOiAoX2EgPSBmbGF0dGVuQ29sdW1uc1swXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZpeGVkLFxuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30taGFzLWZpeC1lbmRgXTogKChfYiA9IGZsYXR0ZW5Db2x1bW5zW2ZsYXR0ZW5Db2x1bW5zLmxlbmd0aCAtIDFdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZml4ZWQpID09PSAnZW5kJyxcbiAgICAgICAgfSksIHN0eWxlOiB0YWJsZVN0eWxlLCBpZDogaWQsIHJlZjogZnVsbFRhYmxlUmVmIH0sIGRhdGFQcm9wcywgeyBjaGlsZHJlbjogW3RpdGxlICYmIChfanN4KFBhbmVsLCB7IGNsYXNzTmFtZTogY2xzeChgJHtwcmVmaXhDbHN9LXRpdGxlYCwgY2xhc3NOYW1lcyA9PT0gbnVsbCB8fCBjbGFzc05hbWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjbGFzc05hbWVzLnRpdGxlKSwgc3R5bGU6IHN0eWxlcyA9PT0gbnVsbCB8fCBzdHlsZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0eWxlcy50aXRsZSwgY2hpbGRyZW46IHRpdGxlKG1lcmdlZERhdGEpIH0pKSwgX2pzeChcImRpdlwiLCB7IHJlZjogc2Nyb2xsQm9keUNvbnRhaW5lclJlZiwgY2xhc3NOYW1lOiBjbHN4KGAke3ByZWZpeENsc30tY29udGFpbmVyYCwgY2xhc3NOYW1lcyA9PT0gbnVsbCB8fCBjbGFzc05hbWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjbGFzc05hbWVzLnNlY3Rpb24pLCBzdHlsZTogc3R5bGVzID09PSBudWxsIHx8IHN0eWxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGVzLnNlY3Rpb24sIGNoaWxkcmVuOiBncm91cFRhYmxlTm9kZSB9KSwgZm9vdGVyICYmIChfanN4KFBhbmVsLCB7IGNsYXNzTmFtZTogY2xzeChgJHtwcmVmaXhDbHN9LWZvb3RlcmAsIGNsYXNzTmFtZXMgPT09IG51bGwgfHwgY2xhc3NOYW1lcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2xhc3NOYW1lcy5mb290ZXIpLCBzdHlsZTogc3R5bGVzID09PSBudWxsIHx8IHN0eWxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGVzLmZvb3RlciwgY2hpbGRyZW46IGZvb3RlcihtZXJnZWREYXRhKSB9KSldIH0pKSk7XG4gICAgaWYgKGhvcml6b25TY3JvbGwgfHwgZml4SGVhZGVyIHx8IGlzU3RpY2t5KSB7XG4gICAgICAgIGZ1bGxUYWJsZSA9IChfanN4KFJlc2l6ZU9ic2VydmVyLCB7IG9uUmVzaXplOiAoeyBvZmZzZXRXaWR0aCB9KSA9PiBvbkZ1bGxUYWJsZVJlc2l6ZShvZmZzZXRXaWR0aCksIGNoaWxkcmVuOiBmdWxsVGFibGUgfSkpO1xuICAgIH1cbiAgICBjb25zdCBmaXhlZEluZm9MaXN0ID0gdXNlRml4ZWRJbmZvKGZsYXR0ZW5Db2x1bW5zLCBzdGlja3lPZmZzZXRzKTtcbiAgICBjb25zdCBUYWJsZUNvbnRleHRWYWx1ZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICAgICAgLy8gU2Nyb2xsXG4gICAgICAgIHNjcm9sbFg6IG1lcmdlZFNjcm9sbFgsXG4gICAgICAgIHNjcm9sbEluZm8sXG4gICAgICAgIGNsYXNzTmFtZXMsXG4gICAgICAgIHN0eWxlcyxcbiAgICAgICAgLy8gVGFibGVcbiAgICAgICAgcHJlZml4Q2xzLFxuICAgICAgICBnZXRDb21wb25lbnQsXG4gICAgICAgIHNjcm9sbGJhclNpemUsXG4gICAgICAgIGRpcmVjdGlvbixcbiAgICAgICAgZml4ZWRJbmZvTGlzdCxcbiAgICAgICAgaXNTdGlja3ksXG4gICAgICAgIGNvbXBvbmVudFdpZHRoLFxuICAgICAgICBmaXhIZWFkZXIsXG4gICAgICAgIGZpeENvbHVtbixcbiAgICAgICAgaG9yaXpvblNjcm9sbCxcbiAgICAgICAgLy8gQm9keVxuICAgICAgICB0YWJsZUxheW91dDogbWVyZ2VkVGFibGVMYXlvdXQsXG4gICAgICAgIHJvd0NsYXNzTmFtZSxcbiAgICAgICAgZXhwYW5kZWRSb3dDbGFzc05hbWU6IGV4cGFuZGFibGVDb25maWcuZXhwYW5kZWRSb3dDbGFzc05hbWUsXG4gICAgICAgIGV4cGFuZEljb246IG1lcmdlZEV4cGFuZEljb24sXG4gICAgICAgIGV4cGFuZGFibGVUeXBlLFxuICAgICAgICBleHBhbmRSb3dCeUNsaWNrOiBleHBhbmRhYmxlQ29uZmlnLmV4cGFuZFJvd0J5Q2xpY2ssXG4gICAgICAgIGV4cGFuZGVkUm93UmVuZGVyOiBleHBhbmRhYmxlQ29uZmlnLmV4cGFuZGVkUm93UmVuZGVyLFxuICAgICAgICBleHBhbmRlZFJvd09mZnNldDogZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRlZFJvd09mZnNldCxcbiAgICAgICAgb25UcmlnZ2VyRXhwYW5kLFxuICAgICAgICBleHBhbmRJY29uQ29sdW1uSW5kZXg6IGV4cGFuZGFibGVDb25maWcuZXhwYW5kSWNvbkNvbHVtbkluZGV4LFxuICAgICAgICBpbmRlbnRTaXplOiBleHBhbmRhYmxlQ29uZmlnLmluZGVudFNpemUsXG4gICAgICAgIGFsbENvbHVtbnNGaXhlZExlZnQ6IGZsYXR0ZW5Db2x1bW5zLmV2ZXJ5KGNvbCA9PiBjb2wuZml4ZWQgPT09ICdzdGFydCcpLFxuICAgICAgICBlbXB0eU5vZGUsXG4gICAgICAgIC8vIENvbHVtblxuICAgICAgICBjb2x1bW5zLFxuICAgICAgICBmbGF0dGVuQ29sdW1ucyxcbiAgICAgICAgb25Db2x1bW5SZXNpemUsXG4gICAgICAgIGNvbFdpZHRocyxcbiAgICAgICAgLy8gUm93XG4gICAgICAgIGhvdmVyU3RhcnRSb3c6IHN0YXJ0Um93LFxuICAgICAgICBob3ZlckVuZFJvdzogZW5kUm93LFxuICAgICAgICBvbkhvdmVyLFxuICAgICAgICByb3dFeHBhbmRhYmxlOiBleHBhbmRhYmxlQ29uZmlnLnJvd0V4cGFuZGFibGUsXG4gICAgICAgIG9uUm93LFxuICAgICAgICBnZXRSb3dLZXksXG4gICAgICAgIGV4cGFuZGVkS2V5czogbWVyZ2VkRXhwYW5kZWRLZXlzLFxuICAgICAgICBjaGlsZHJlbkNvbHVtbk5hbWU6IG1lcmdlZENoaWxkcmVuQ29sdW1uTmFtZSxcbiAgICAgICAgcm93SG92ZXJhYmxlLFxuICAgICAgICAvLyBNZWFzdXJlIFJvd1xuICAgICAgICBtZWFzdXJlUm93UmVuZGVyLFxuICAgIH0pLCBbXG4gICAgICAgIC8vIFNjcm9sbFxuICAgICAgICBtZXJnZWRTY3JvbGxYLFxuICAgICAgICBzY3JvbGxJbmZvLFxuICAgICAgICBjbGFzc05hbWVzLFxuICAgICAgICBzdHlsZXMsXG4gICAgICAgIC8vIFRhYmxlXG4gICAgICAgIHByZWZpeENscyxcbiAgICAgICAgZ2V0Q29tcG9uZW50LFxuICAgICAgICBzY3JvbGxiYXJTaXplLFxuICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgIGZpeGVkSW5mb0xpc3QsXG4gICAgICAgIGlzU3RpY2t5LFxuICAgICAgICBjb21wb25lbnRXaWR0aCxcbiAgICAgICAgZml4SGVhZGVyLFxuICAgICAgICBmaXhDb2x1bW4sXG4gICAgICAgIGhvcml6b25TY3JvbGwsXG4gICAgICAgIC8vIEJvZHlcbiAgICAgICAgbWVyZ2VkVGFibGVMYXlvdXQsXG4gICAgICAgIHJvd0NsYXNzTmFtZSxcbiAgICAgICAgZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRlZFJvd0NsYXNzTmFtZSxcbiAgICAgICAgbWVyZ2VkRXhwYW5kSWNvbixcbiAgICAgICAgZXhwYW5kYWJsZVR5cGUsXG4gICAgICAgIGV4cGFuZGFibGVDb25maWcuZXhwYW5kUm93QnlDbGljayxcbiAgICAgICAgZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRlZFJvd1JlbmRlcixcbiAgICAgICAgZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRlZFJvd09mZnNldCxcbiAgICAgICAgb25UcmlnZ2VyRXhwYW5kLFxuICAgICAgICBleHBhbmRhYmxlQ29uZmlnLmV4cGFuZEljb25Db2x1bW5JbmRleCxcbiAgICAgICAgZXhwYW5kYWJsZUNvbmZpZy5pbmRlbnRTaXplLFxuICAgICAgICBlbXB0eU5vZGUsXG4gICAgICAgIC8vIENvbHVtblxuICAgICAgICBjb2x1bW5zLFxuICAgICAgICBmbGF0dGVuQ29sdW1ucyxcbiAgICAgICAgb25Db2x1bW5SZXNpemUsXG4gICAgICAgIGNvbFdpZHRocyxcbiAgICAgICAgLy8gUm93XG4gICAgICAgIHN0YXJ0Um93LFxuICAgICAgICBlbmRSb3csXG4gICAgICAgIG9uSG92ZXIsXG4gICAgICAgIGV4cGFuZGFibGVDb25maWcucm93RXhwYW5kYWJsZSxcbiAgICAgICAgb25Sb3csXG4gICAgICAgIGdldFJvd0tleSxcbiAgICAgICAgbWVyZ2VkRXhwYW5kZWRLZXlzLFxuICAgICAgICBtZXJnZWRDaGlsZHJlbkNvbHVtbk5hbWUsXG4gICAgICAgIHJvd0hvdmVyYWJsZSxcbiAgICAgICAgbWVhc3VyZVJvd1JlbmRlcixcbiAgICBdKTtcbiAgICByZXR1cm4gX2pzeChUYWJsZUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IFRhYmxlQ29udGV4dFZhbHVlLCBjaGlsZHJlbjogZnVsbFRhYmxlIH0pO1xufTtcbmNvbnN0IFJlZlRhYmxlID0gUmVhY3QuZm9yd2FyZFJlZihUYWJsZSk7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIFJlZlRhYmxlLmRpc3BsYXlOYW1lID0gJ1RhYmxlJztcbn1cbmV4cG9ydCBjb25zdCBnZW5UYWJsZSA9IChzaG91bGRUcmlnZ2VyUmVuZGVyKSA9PiB7XG4gICAgcmV0dXJuIG1ha2VJbW11dGFibGUoUmVmVGFibGUsIHNob3VsZFRyaWdnZXJSZW5kZXIpO1xufTtcbmNvbnN0IEltbXV0YWJsZVRhYmxlID0gZ2VuVGFibGUoKTtcbkltbXV0YWJsZVRhYmxlLkVYUEFORF9DT0xVTU4gPSBFWFBBTkRfQ09MVU1OO1xuSW1tdXRhYmxlVGFibGUuSU5URVJOQUxfSE9PS1MgPSBJTlRFUk5BTF9IT09LUztcbkltbXV0YWJsZVRhYmxlLkNvbHVtbiA9IENvbHVtbjtcbkltbXV0YWJsZVRhYmxlLkNvbHVtbkdyb3VwID0gQ29sdW1uR3JvdXA7XG5JbW11dGFibGVUYWJsZS5TdW1tYXJ5ID0gRm9vdGVyQ29tcG9uZW50cztcbmV4cG9ydCBkZWZhdWx0IEltbXV0YWJsZVRhYmxlOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|