nsc-react-component 2.12.1 → 2.13.0
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/lib/Interface.js +1 -1
- package/lib/Interface.js.map +1 -0
- package/lib/base/affix/index.js +5 -46
- package/lib/base/affix/index.js.map +1 -0
- package/lib/base/alert/index.js +5 -46
- package/lib/base/alert/index.js.map +1 -0
- package/lib/base/anchor/index.js +8 -49
- package/lib/base/anchor/index.js.map +1 -0
- package/lib/base/avatar/index.js +8 -49
- package/lib/base/avatar/index.js.map +1 -0
- package/lib/base/backTop/index.js +5 -46
- package/lib/base/backTop/index.js.map +1 -0
- package/lib/base/badge/index.js +8 -49
- package/lib/base/badge/index.js.map +1 -0
- package/lib/base/breadcrumb/index.js +5 -46
- package/lib/base/breadcrumb/index.js.map +1 -0
- package/lib/base/button/index.d.ts +1 -1
- package/lib/base/button/index.js +93 -134
- package/lib/base/button/index.js.map +1 -0
- package/lib/base/calendar/index.js +5 -46
- package/lib/base/calendar/index.js.map +1 -0
- package/lib/base/card/index.js +8 -50
- package/lib/base/card/index.js.map +1 -0
- package/lib/base/carousel/index.js +5 -46
- package/lib/base/carousel/index.js.map +1 -0
- package/lib/base/cascader/index.d.ts +3 -3
- package/lib/base/cascader/index.js +150 -221
- package/lib/base/cascader/index.js.map +1 -0
- package/lib/base/chart/index.d.ts +2 -2
- package/lib/base/chart/index.js +178 -287
- package/lib/base/chart/index.js.map +1 -0
- package/lib/base/checkbox/CheckboxGroup.d.ts +3 -3
- package/lib/base/checkbox/CheckboxGroup.js +165 -258
- package/lib/base/checkbox/CheckboxGroup.js.map +1 -0
- package/lib/base/checkbox/index.d.ts +2 -2
- package/lib/base/checkbox/index.js +8 -48
- package/lib/base/checkbox/index.js.map +1 -0
- package/lib/base/collapse/index.js +8 -49
- package/lib/base/collapse/index.js.map +1 -0
- package/lib/base/comment/index.js +5 -46
- package/lib/base/comment/index.js.map +1 -0
- package/lib/base/common/BodyRow/index.js +48 -102
- package/lib/base/common/BodyRow/index.js.map +1 -0
- package/lib/base/common/EllipseCell/index.d.ts +1 -1
- package/lib/base/common/EllipseCell/index.js +16 -57
- package/lib/base/common/EllipseCell/index.js.map +1 -0
- package/lib/base/common/FileIcon.d.ts +2 -2
- package/lib/base/common/FileIcon.js +86 -132
- package/lib/base/common/FileIcon.js.map +1 -0
- package/lib/base/common/Icon.d.ts +2 -2
- package/lib/base/common/Icon.js +42 -96
- package/lib/base/common/Icon.js.map +1 -0
- package/lib/base/common/IconData.js +2 -2
- package/lib/base/common/IconData.js.map +1 -0
- package/lib/base/common/IconFont.d.ts +2 -2
- package/lib/base/common/IconFont.js +6 -8
- package/lib/base/common/IconFont.js.map +1 -0
- package/lib/base/common/NoAuthority.d.ts +2 -2
- package/lib/base/common/NoAuthority.js +13 -53
- package/lib/base/common/NoAuthority.js.map +1 -0
- package/lib/base/common/NoData.d.ts +2 -2
- package/lib/base/common/NoData.js +34 -74
- package/lib/base/common/NoData.js.map +1 -0
- package/lib/base/common/NoMessage.d.ts +2 -2
- package/lib/base/common/NoMessage.js +30 -70
- package/lib/base/common/NoMessage.js.map +1 -0
- package/lib/base/common/NoNetWork.d.ts +2 -2
- package/lib/base/common/NoNetWork.js +30 -70
- package/lib/base/common/NoNetWork.js.map +1 -0
- package/lib/base/common/Page404.d.ts +2 -2
- package/lib/base/common/Page404.js +30 -70
- package/lib/base/common/Page404.js.map +1 -0
- package/lib/base/common/PageRequest.js +91 -154
- package/lib/base/common/PageRequest.js.map +1 -0
- package/lib/base/common/TreePanel.d.ts +1 -1
- package/lib/base/common/TreePanel.js +133 -212
- package/lib/base/common/TreePanel.js.map +1 -0
- package/lib/base/common/iconfontalibaba.js +15 -22
- package/lib/base/common/iconfontalibaba.js.map +1 -0
- package/lib/base/common/withZhLocale.d.ts +1 -1
- package/lib/base/common/withZhLocale.js +3 -7
- package/lib/base/common/withZhLocale.js.map +1 -0
- package/lib/base/configProvider/index.js +8 -49
- package/lib/base/configProvider/index.js.map +1 -0
- package/lib/base/datepick/Rangepicker.d.ts +3 -3
- package/lib/base/datepick/Rangepicker.js +229 -325
- package/lib/base/datepick/Rangepicker.js.map +1 -0
- package/lib/base/datepick/index.d.ts +2 -2
- package/lib/base/datepick/index.js +56 -113
- package/lib/base/datepick/index.js.map +1 -0
- package/lib/base/descriptions/index.js +8 -49
- package/lib/base/descriptions/index.js.map +1 -0
- package/lib/base/divider/index.js +5 -46
- package/lib/base/divider/index.js.map +1 -0
- package/lib/base/download/index.js +42 -84
- package/lib/base/download/index.js.map +1 -0
- package/lib/base/drawer/index.js +14 -57
- package/lib/base/drawer/index.js.map +1 -0
- package/lib/base/dropdown/index.js +19 -65
- package/lib/base/dropdown/index.js.map +1 -0
- package/lib/base/editor/index.d.ts +1 -1
- package/lib/base/editor/index.js +83 -128
- package/lib/base/editor/index.js.map +1 -0
- package/lib/base/errorboundary/index.js +19 -63
- package/lib/base/errorboundary/index.js.map +1 -0
- package/lib/base/form/Form.d.ts +2 -2
- package/lib/base/form/Form.js +314 -427
- package/lib/base/form/Form.js.map +1 -0
- package/lib/base/form/filed/Cascader.d.ts +2 -2
- package/lib/base/form/filed/Cascader.js +6 -45
- package/lib/base/form/filed/Cascader.js.map +1 -0
- package/lib/base/form/filed/Checkbox.d.ts +2 -2
- package/lib/base/form/filed/Checkbox.js +6 -45
- package/lib/base/form/filed/Checkbox.js.map +1 -0
- package/lib/base/form/filed/DatePicker.d.ts +2 -2
- package/lib/base/form/filed/DatePicker.js +6 -45
- package/lib/base/form/filed/DatePicker.js.map +1 -0
- package/lib/base/form/filed/FormItem.d.ts +2 -2
- package/lib/base/form/filed/FormItem.js +65 -127
- package/lib/base/form/filed/FormItem.js.map +1 -0
- package/lib/base/form/filed/Input.d.ts +2 -2
- package/lib/base/form/filed/Input.js +14 -51
- package/lib/base/form/filed/Input.js.map +1 -0
- package/lib/base/form/filed/InputEamil.d.ts +2 -2
- package/lib/base/form/filed/InputEamil.js +5 -44
- package/lib/base/form/filed/InputEamil.js.map +1 -0
- package/lib/base/form/filed/InputNumber.d.ts +2 -2
- package/lib/base/form/filed/InputNumber.js +5 -44
- package/lib/base/form/filed/InputNumber.js.map +1 -0
- package/lib/base/form/filed/InputPassword.d.ts +2 -2
- package/lib/base/form/filed/InputPassword.js +5 -44
- package/lib/base/form/filed/InputPassword.js.map +1 -0
- package/lib/base/form/filed/Item.d.ts +3 -3
- package/lib/base/form/filed/Item.js +91 -163
- package/lib/base/form/filed/Item.js.map +1 -0
- package/lib/base/form/filed/Radio.d.ts +2 -2
- package/lib/base/form/filed/Radio.js +7 -45
- package/lib/base/form/filed/Radio.js.map +1 -0
- package/lib/base/form/filed/RangerPicker.d.ts +2 -2
- package/lib/base/form/filed/RangerPicker.js +6 -45
- package/lib/base/form/filed/RangerPicker.js.map +1 -0
- package/lib/base/form/filed/Rate.d.ts +2 -2
- package/lib/base/form/filed/Rate.js +6 -46
- package/lib/base/form/filed/Rate.js.map +1 -0
- package/lib/base/form/filed/Select.d.ts +2 -2
- package/lib/base/form/filed/Select.js +9 -49
- package/lib/base/form/filed/Select.js.map +1 -0
- package/lib/base/form/filed/Slider.d.ts +2 -2
- package/lib/base/form/filed/Slider.js +6 -46
- package/lib/base/form/filed/Slider.js.map +1 -0
- package/lib/base/form/filed/Switch.d.ts +2 -2
- package/lib/base/form/filed/Switch.js +6 -46
- package/lib/base/form/filed/Switch.js.map +1 -0
- package/lib/base/form/filed/TagSelect.d.ts +2 -2
- package/lib/base/form/filed/TagSelect.js +6 -45
- package/lib/base/form/filed/TagSelect.js.map +1 -0
- package/lib/base/form/filed/TextArea.d.ts +2 -2
- package/lib/base/form/filed/TextArea.js +5 -44
- package/lib/base/form/filed/TextArea.js.map +1 -0
- package/lib/base/form/filed/Upload.d.ts +2 -2
- package/lib/base/form/filed/Upload.js +9 -45
- package/lib/base/form/filed/Upload.js.map +1 -0
- package/lib/base/form/index.js +17 -58
- package/lib/base/form/index.js.map +1 -0
- package/lib/base/grid/Col.js +5 -46
- package/lib/base/grid/Col.js.map +1 -0
- package/lib/base/grid/Row.js +5 -46
- package/lib/base/grid/Row.js.map +1 -0
- package/lib/base/grid/index.js +1 -1
- package/lib/base/grid/index.js.map +1 -0
- package/lib/base/iframe/index.d.ts +1 -1
- package/lib/base/iframe/index.js +44 -93
- package/lib/base/iframe/index.js.map +1 -0
- package/lib/base/image/index.js +163 -261
- package/lib/base/image/index.js.map +1 -0
- package/lib/base/input/Email.d.ts +2 -2
- package/lib/base/input/Email.js +55 -103
- package/lib/base/input/Email.js.map +1 -0
- package/lib/base/input/Number.d.ts +1 -1
- package/lib/base/input/Number.js +48 -104
- package/lib/base/input/Number.js.map +1 -0
- package/lib/base/input/Password.d.ts +1 -1
- package/lib/base/input/Password.js +48 -104
- package/lib/base/input/Password.js.map +1 -0
- package/lib/base/input/Search.d.ts +1 -1
- package/lib/base/input/Search.js +46 -102
- package/lib/base/input/Search.js.map +1 -0
- package/lib/base/input/TextArea.d.ts +1 -1
- package/lib/base/input/TextArea.js +64 -123
- package/lib/base/input/TextArea.js.map +1 -0
- package/lib/base/input/index.d.ts +2 -2
- package/lib/base/input/index.js +121 -195
- package/lib/base/input/index.js.map +1 -0
- package/lib/base/layout/index.js +14 -56
- package/lib/base/layout/index.js.map +1 -0
- package/lib/base/list/index.js +8 -49
- package/lib/base/list/index.js.map +1 -0
- package/lib/base/menu/index.d.ts +5 -5
- package/lib/base/menu/index.js +100 -164
- package/lib/base/menu/index.js.map +1 -0
- package/lib/base/message/index.js +5 -47
- package/lib/base/message/index.js.map +1 -0
- package/lib/base/modal/Confirm.js +14 -18
- package/lib/base/modal/Confirm.js.map +1 -0
- package/lib/base/modal/index.d.ts +1 -1
- package/lib/base/modal/index.js +274 -359
- package/lib/base/modal/index.js.map +1 -0
- package/lib/base/notification/index.js +5 -47
- package/lib/base/notification/index.js.map +1 -0
- package/lib/base/pageHeader/index.js +5 -46
- package/lib/base/pageHeader/index.js.map +1 -0
- package/lib/base/pagination/index.js +5 -46
- package/lib/base/pagination/index.js.map +1 -0
- package/lib/base/pdfviwer/index.d.ts +1 -1
- package/lib/base/pdfviwer/index.js +67 -92
- package/lib/base/pdfviwer/index.js.map +1 -0
- package/lib/base/popconfirm/index.js +5 -46
- package/lib/base/popconfirm/index.js.map +1 -0
- package/lib/base/popover/index.js +19 -65
- package/lib/base/popover/index.js.map +1 -0
- package/lib/base/progress/index.js +5 -46
- package/lib/base/progress/index.js.map +1 -0
- package/lib/base/radio/RadioGroup.d.ts +1 -1
- package/lib/base/radio/RadioGroup.js +198 -295
- package/lib/base/radio/RadioGroup.js.map +1 -0
- package/lib/base/radio/index.d.ts +1 -1
- package/lib/base/radio/index.js +8 -50
- package/lib/base/radio/index.js.map +1 -0
- package/lib/base/result/index.js +5 -46
- package/lib/base/result/index.js.map +1 -0
- package/lib/base/select/index.d.ts +4 -4
- package/lib/base/select/index.js +358 -475
- package/lib/base/select/index.js.map +1 -0
- package/lib/base/skeleton/index.js +5 -46
- package/lib/base/skeleton/index.js.map +1 -0
- package/lib/base/space/index.js +5 -46
- package/lib/base/space/index.js.map +1 -0
- package/lib/base/spin/index.js +5 -46
- package/lib/base/spin/index.js.map +1 -0
- package/lib/base/statistic/index.js +8 -49
- package/lib/base/statistic/index.js.map +1 -0
- package/lib/base/steps/index.js +8 -49
- package/lib/base/steps/index.js.map +1 -0
- package/lib/base/switch/index.js +5 -46
- package/lib/base/switch/index.js.map +1 -0
- package/lib/base/table/index.d.ts +8 -8
- package/lib/base/table/index.js +743 -927
- package/lib/base/table/index.js.map +1 -0
- package/lib/base/tabs/Tabpane.d.ts +1 -1
- package/lib/base/tabs/Tabpane.js +22 -58
- package/lib/base/tabs/Tabpane.js.map +1 -0
- package/lib/base/tabs/index.d.ts +1 -1
- package/lib/base/tabs/index.js +110 -156
- package/lib/base/tabs/index.js.map +1 -0
- package/lib/base/tagSelect/TagSelect.d.ts +3 -3
- package/lib/base/tagSelect/TagSelect.js +124 -213
- package/lib/base/tagSelect/TagSelect.js.map +1 -0
- package/lib/base/tagSelect/index.d.ts +3 -3
- package/lib/base/tagSelect/index.js +90 -145
- package/lib/base/tagSelect/index.js.map +1 -0
- package/lib/base/timeline/index.js +8 -49
- package/lib/base/timeline/index.js.map +1 -0
- package/lib/base/tooltip/index.js +19 -65
- package/lib/base/tooltip/index.js.map +1 -0
- package/lib/base/transfer/index.js +5 -46
- package/lib/base/transfer/index.js.map +1 -0
- package/lib/base/tree/TreeSearch.d.ts +3 -3
- package/lib/base/tree/TreeSearch.js +119 -186
- package/lib/base/tree/TreeSearch.js.map +1 -0
- package/lib/base/tree/index.d.ts +2 -2
- package/lib/base/tree/index.js +169 -241
- package/lib/base/tree/index.js.map +1 -0
- package/lib/base/treeselect/index.js +5 -46
- package/lib/base/treeselect/index.js.map +1 -0
- package/lib/base/typography/index.js +5 -46
- package/lib/base/typography/index.js.map +1 -0
- package/lib/base/upload/Dragger.js +370 -605
- package/lib/base/upload/Dragger.js.map +1 -0
- package/lib/base/upload/Upload.js +352 -529
- package/lib/base/upload/Upload.js.map +1 -0
- package/lib/base/upload/index copy.d.ts +1 -1
- package/lib/base/upload/index copy.js +315 -431
- package/lib/base/upload/index copy.js.map +1 -0
- package/lib/base/upload/index.js +367 -640
- package/lib/base/upload/index.js.map +1 -0
- package/lib/config.d.ts +2 -0
- package/lib/config.js +7 -9
- package/lib/config.js.map +1 -0
- package/lib/constants.js +2 -2
- package/lib/constants.js.map +1 -0
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -0
- package/lib/page/BasePage/Form.d.ts +1 -1
- package/lib/page/BasePage/Form.js +253 -360
- package/lib/page/BasePage/Form.js.map +1 -0
- package/lib/page/BasePage/index.d.ts +9 -4
- package/lib/page/BasePage/index.js +864 -962
- package/lib/page/BasePage/index.js.map +1 -0
- package/lib/page/BasePage/index.module copy.less +144 -0
- package/lib/page/BasePage/index.module.less +95 -55
- package/lib/page/HeaderSearch/index.d.ts +1 -1
- package/lib/page/HeaderSearch/index.js +196 -272
- package/lib/page/HeaderSearch/index.js.map +1 -0
- package/lib/page/PasswordCheck/index.d.ts +1 -1
- package/lib/page/PasswordCheck/index.js +53 -109
- package/lib/page/PasswordCheck/index.js.map +1 -0
- package/lib/treeUtils.js +45 -58
- package/lib/treeUtils.js.map +1 -0
- package/lib/utils.d.ts +2 -2
- package/lib/utils.js +48 -61
- package/lib/utils.js.map +1 -0
- package/package.json +1 -1
package/lib/base/chart/index.js
CHANGED
|
@@ -1,356 +1,247 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
6
|
-
|
|
7
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
8
|
-
|
|
9
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
10
|
-
|
|
11
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
12
|
-
|
|
13
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
14
|
-
|
|
15
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
16
|
-
|
|
17
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
18
|
-
|
|
19
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
20
|
-
|
|
1
|
+
const _excluded = ["url", "listeners"];
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
21
4
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
22
|
-
|
|
23
5
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
24
|
-
|
|
25
|
-
function
|
|
26
|
-
|
|
27
|
-
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
28
|
-
|
|
29
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
30
|
-
|
|
31
|
-
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
32
|
-
|
|
33
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
34
|
-
|
|
35
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
36
|
-
|
|
37
|
-
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
|
|
38
|
-
|
|
39
|
-
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
40
|
-
|
|
41
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
42
|
-
|
|
43
|
-
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
44
|
-
|
|
45
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
46
|
-
|
|
6
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
7
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
8
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
47
9
|
import React, { PureComponent } from "react";
|
|
48
10
|
import * as echarts from "echarts";
|
|
49
11
|
import Store from "@bj-nsc/msn";
|
|
50
12
|
import { utils } from "@bj-nsc/msn/lib/utils";
|
|
51
13
|
import { px2vw } from "../../utils";
|
|
52
14
|
import { isArray, isObject } from "@bj-nsc/functions";
|
|
53
|
-
|
|
54
15
|
//data示例
|
|
55
|
-
|
|
56
16
|
/**
|
|
57
17
|
数组:
|
|
58
18
|
data=[{name:'1月',value:20},{name:'2月',value:10},{name:'3月',value:25}]
|
|
59
19
|
对象
|
|
60
20
|
data={name:['1月','2月','3月'],value:[20,30,40]}
|
|
61
21
|
*/
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
_classCallCheck(this, NscChart);
|
|
71
|
-
|
|
72
|
-
_this2 = _super.call(this, props);
|
|
73
|
-
|
|
74
|
-
_defineProperty(_assertThisInitialized(_this2), "chartRef", /*#__PURE__*/React.createRef());
|
|
75
|
-
|
|
76
|
-
_defineProperty(_assertThisInitialized(_this2), "myChart", null);
|
|
77
|
-
|
|
78
|
-
_defineProperty(_assertThisInitialized(_this2), "store", {});
|
|
79
|
-
|
|
80
|
-
_defineProperty(_assertThisInitialized(_this2), "state", {
|
|
22
|
+
class NscChart extends PureComponent {
|
|
23
|
+
constructor(props) {
|
|
24
|
+
super(props);
|
|
25
|
+
_defineProperty(this, "chartRef", /*#__PURE__*/React.createRef());
|
|
26
|
+
_defineProperty(this, "myChart", null);
|
|
27
|
+
_defineProperty(this, "store", {});
|
|
28
|
+
_defineProperty(this, "state", {
|
|
81
29
|
dataSource: null
|
|
82
30
|
});
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
listenersPops = _store$listeners === void 0 ? {} : _store$listeners,
|
|
97
|
-
stores = _objectWithoutProperties(store, _excluded);
|
|
98
|
-
|
|
31
|
+
_defineProperty(this, "isFirst", true);
|
|
32
|
+
const {
|
|
33
|
+
data,
|
|
34
|
+
store = {},
|
|
35
|
+
children,
|
|
36
|
+
option: options,
|
|
37
|
+
autoLoad = true
|
|
38
|
+
} = props;
|
|
39
|
+
const {
|
|
40
|
+
url,
|
|
41
|
+
listeners: listenersPops = {}
|
|
42
|
+
} = store,
|
|
43
|
+
stores = _objectWithoutProperties(store, _excluded);
|
|
99
44
|
if (!children) {
|
|
100
45
|
if (!(data || url || options)) {
|
|
101
46
|
throw new Error("url、data、option不能都为空!");
|
|
102
47
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
var storeProps = _objectSpread({
|
|
48
|
+
let _this = this;
|
|
49
|
+
let storeProps = _objectSpread({
|
|
107
50
|
model: "model",
|
|
108
|
-
component:
|
|
51
|
+
component: this,
|
|
109
52
|
listeners: {
|
|
110
|
-
onBeforeLoad: function
|
|
53
|
+
onBeforeLoad: function (store, options) {
|
|
111
54
|
utils.callback(listenersPops.onBeforeLoad, _this, [store, options]);
|
|
112
55
|
},
|
|
113
|
-
load: function
|
|
56
|
+
load: function (data, modelData, store) {
|
|
114
57
|
_this.setState({
|
|
115
58
|
dataSource: modelData
|
|
116
|
-
},
|
|
59
|
+
}, () => {
|
|
117
60
|
if (_this.isFirst && autoLoad) {
|
|
118
61
|
_this.init();
|
|
119
|
-
|
|
120
62
|
_this.isFirst = false;
|
|
121
63
|
}
|
|
122
64
|
});
|
|
123
|
-
|
|
124
65
|
utils.callback(listenersPops.load, _this, [data, modelData, store]);
|
|
125
66
|
},
|
|
126
|
-
dataChanged: function
|
|
67
|
+
dataChanged: function (data, modelData, store) {
|
|
127
68
|
_this.setState({
|
|
128
69
|
dataSource: modelData
|
|
129
|
-
},
|
|
70
|
+
}, () => {
|
|
130
71
|
if (autoLoad) {
|
|
131
72
|
_this.init();
|
|
132
73
|
}
|
|
133
74
|
});
|
|
134
|
-
|
|
135
75
|
utils.callback(listenersPops.dataChanged, _this, [data, modelData, store]);
|
|
136
76
|
}
|
|
137
77
|
}
|
|
138
78
|
}, stores);
|
|
139
|
-
|
|
140
79
|
if (url && data == null) {
|
|
141
80
|
storeProps = _objectSpread(_objectSpread({}, {
|
|
142
81
|
autoLoad: true,
|
|
143
82
|
url: url
|
|
144
83
|
}), storeProps);
|
|
145
84
|
}
|
|
146
|
-
|
|
147
|
-
_this2.store = new Store(storeProps);
|
|
85
|
+
this.store = new Store(storeProps);
|
|
148
86
|
}
|
|
149
|
-
|
|
150
|
-
return _this2;
|
|
151
87
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
88
|
+
componentDidMount() {
|
|
89
|
+
const {
|
|
90
|
+
data,
|
|
91
|
+
autoLoad = true,
|
|
92
|
+
store,
|
|
93
|
+
option
|
|
94
|
+
} = this.props;
|
|
95
|
+
if (data && autoLoad) {
|
|
96
|
+
this.init();
|
|
97
|
+
} else if (!data && !(store !== null && store !== void 0 && store.url) && option) {
|
|
98
|
+
this.init();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
componentDidUpdate(prevProps, prevState, snapshot) {
|
|
102
|
+
const {
|
|
103
|
+
autoLoad = true
|
|
104
|
+
} = this.props;
|
|
105
|
+
if (autoLoad) {
|
|
106
|
+
if (JSON.stringify(prevProps.data) !== JSON.stringify(this.props.data)) {
|
|
164
107
|
this.init();
|
|
165
|
-
} else if (
|
|
108
|
+
} else if (JSON.stringify(prevProps.option) !== JSON.stringify(this.props.option)) {
|
|
109
|
+
console.log("aaa");
|
|
166
110
|
this.init();
|
|
167
111
|
}
|
|
168
112
|
}
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
key: "componentWillUnmount",
|
|
196
|
-
value: function componentWillUnmount() {
|
|
197
|
-
window.removeEventListener("resize", this.handleChartResize.bind(this));
|
|
198
|
-
}
|
|
199
|
-
}, {
|
|
200
|
-
key: "isReplace",
|
|
201
|
-
value: function isReplace(v) {
|
|
202
|
-
return /^{.*}$/gi.test(v);
|
|
203
|
-
}
|
|
204
|
-
}, {
|
|
205
|
-
key: "replace",
|
|
206
|
-
value: function replace(v) {
|
|
207
|
-
return v.substring(1, v.length - 1);
|
|
208
|
-
}
|
|
209
|
-
}, {
|
|
210
|
-
key: "dataConversion",
|
|
211
|
-
value: function dataConversion(data, datas, dataMap) {
|
|
212
|
-
var _this3 = this;
|
|
213
|
-
|
|
214
|
-
var result;
|
|
215
|
-
|
|
216
|
-
if (data) {
|
|
217
|
-
if (this.isString(data) && this.isReplace(data)) {
|
|
218
|
-
result = dataMap[this.replace(data)];
|
|
219
|
-
} else if (isArray(data)) {
|
|
220
|
-
data.map(function (item) {
|
|
221
|
-
var v = item.value;
|
|
222
|
-
|
|
223
|
-
if (v && _this3.isReplace(v)) {
|
|
224
|
-
item.value = _this3.dataConversion(v, datas, dataMap);
|
|
225
|
-
}
|
|
226
|
-
});
|
|
227
|
-
result = data;
|
|
228
|
-
} else if (isObject(data)) {
|
|
229
|
-
result = [];
|
|
230
|
-
|
|
231
|
-
if (isArray(datas)) {
|
|
232
|
-
datas.map(function (item) {
|
|
233
|
-
var tempObj = {};
|
|
234
|
-
|
|
235
|
-
for (var key in item) {
|
|
236
|
-
var v = item[key];
|
|
237
|
-
|
|
238
|
-
if (_this3.isReplace(v)) {
|
|
239
|
-
tempObj[key] = item[_this3.replace(v)];
|
|
240
|
-
} else {
|
|
241
|
-
tempObj[key] = v;
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
result.push(tempObj);
|
|
246
|
-
});
|
|
113
|
+
}
|
|
114
|
+
reSetChart() {
|
|
115
|
+
this.init();
|
|
116
|
+
}
|
|
117
|
+
isString(v) {
|
|
118
|
+
return typeof v === "string";
|
|
119
|
+
}
|
|
120
|
+
componentWillUnmount() {
|
|
121
|
+
window.removeEventListener("resize", this.handleChartResize.bind(this));
|
|
122
|
+
}
|
|
123
|
+
isReplace(v) {
|
|
124
|
+
return /^{.*}$/gi.test(v);
|
|
125
|
+
}
|
|
126
|
+
replace(v) {
|
|
127
|
+
return v.substring(1, v.length - 1);
|
|
128
|
+
}
|
|
129
|
+
dataConversion(data, datas, dataMap) {
|
|
130
|
+
let result;
|
|
131
|
+
if (data) {
|
|
132
|
+
if (this.isString(data) && this.isReplace(data)) {
|
|
133
|
+
result = dataMap[this.replace(data)];
|
|
134
|
+
} else if (isArray(data)) {
|
|
135
|
+
data.map(item => {
|
|
136
|
+
let v = item.value;
|
|
137
|
+
if (v && this.isReplace(v)) {
|
|
138
|
+
item.value = this.dataConversion(v, datas, dataMap);
|
|
247
139
|
}
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
tempObj = _toConsumableArray(obj);
|
|
263
|
-
tempObj.map(function (item) {
|
|
264
|
-
if (item.data) {
|
|
265
|
-
item.data = _this4.dataConversion(item.data, datas, dataMap);
|
|
140
|
+
});
|
|
141
|
+
result = data;
|
|
142
|
+
} else if (isObject(data)) {
|
|
143
|
+
result = [];
|
|
144
|
+
if (isArray(datas)) {
|
|
145
|
+
datas.map(item => {
|
|
146
|
+
var tempObj = {};
|
|
147
|
+
for (let key in item) {
|
|
148
|
+
let v = item[key];
|
|
149
|
+
if (this.isReplace(v)) {
|
|
150
|
+
tempObj[key] = item[this.replace(v)];
|
|
151
|
+
} else {
|
|
152
|
+
tempObj[key] = v;
|
|
153
|
+
}
|
|
266
154
|
}
|
|
155
|
+
result.push(tempObj);
|
|
267
156
|
});
|
|
268
|
-
} else if (this.isString(obj)) {
|
|
269
|
-
tempObj = obj;
|
|
270
|
-
tempObj.data = this.dataConversion(tempObj, datas, dataMap);
|
|
271
|
-
} else if (isObject(obj)) {
|
|
272
|
-
tempObj = _objectSpread({}, obj);
|
|
273
|
-
tempObj.data = this.dataConversion(tempObj.data, datas, dataMap);
|
|
274
157
|
}
|
|
275
158
|
}
|
|
276
|
-
|
|
277
|
-
return tempObj;
|
|
278
159
|
}
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
var dataSource = this.state.dataSource;
|
|
290
|
-
var dataMap = {};
|
|
291
|
-
var newDatas = data || dataSource;
|
|
292
|
-
|
|
293
|
-
var newOption = _objectSpread({}, option);
|
|
294
|
-
|
|
295
|
-
if (isArray(newDatas)) {
|
|
296
|
-
newDatas.map(function (item) {
|
|
297
|
-
for (var key in item) {
|
|
298
|
-
if (dataMap[key] == null) {
|
|
299
|
-
dataMap[key] = [];
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
dataMap[key].push(item[key]);
|
|
160
|
+
return result;
|
|
161
|
+
}
|
|
162
|
+
objectConversion(obj, datas, dataMap) {
|
|
163
|
+
let tempObj;
|
|
164
|
+
if (obj) {
|
|
165
|
+
if (isArray(obj)) {
|
|
166
|
+
tempObj = [...obj];
|
|
167
|
+
tempObj.map(item => {
|
|
168
|
+
if (item.data) {
|
|
169
|
+
item.data = this.dataConversion(item.data, datas, dataMap);
|
|
303
170
|
}
|
|
304
171
|
});
|
|
305
|
-
} else if (
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
newOption.series = this.objectConversion(newOption.series, newDatas, dataMap);
|
|
312
|
-
var myChart = this.myChart = echarts.init(this.chartRef.current); //初始化echarts,通过ref属性获取dom
|
|
313
|
-
|
|
314
|
-
myChart.clear();
|
|
315
|
-
myChart.off("click");
|
|
316
|
-
myChart === null || myChart === void 0 ? void 0 : (_myChart$getZr = myChart.getZr()) === null || _myChart$getZr === void 0 ? void 0 : _myChart$getZr.off("click");
|
|
317
|
-
myChart.setOption(newOption);
|
|
318
|
-
myChart.on("click", function (params) {
|
|
319
|
-
OnClick && OnClick(params, myChart);
|
|
320
|
-
});
|
|
321
|
-
myChart === null || myChart === void 0 ? void 0 : (_myChart$getZr2 = myChart.getZr()) === null || _myChart$getZr2 === void 0 ? void 0 : _myChart$getZr2.on("click", function (params) {
|
|
322
|
-
OnZrClick && OnZrClick(params, myChart);
|
|
323
|
-
});
|
|
324
|
-
myChart.resize();
|
|
325
|
-
window.addEventListener("resize", this.handleChartResize.bind(this));
|
|
326
|
-
}
|
|
327
|
-
}, {
|
|
328
|
-
key: "handleChartResize",
|
|
329
|
-
value: function handleChartResize() {
|
|
330
|
-
if (this.myChart) {
|
|
331
|
-
this.myChart.resize();
|
|
172
|
+
} else if (this.isString(obj)) {
|
|
173
|
+
tempObj = obj;
|
|
174
|
+
tempObj.data = this.dataConversion(tempObj, datas, dataMap);
|
|
175
|
+
} else if (isObject(obj)) {
|
|
176
|
+
tempObj = _objectSpread({}, obj);
|
|
177
|
+
tempObj.data = this.dataConversion(tempObj.data, datas, dataMap);
|
|
332
178
|
}
|
|
333
179
|
}
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
180
|
+
return tempObj;
|
|
181
|
+
}
|
|
182
|
+
init() {
|
|
183
|
+
var _myChart$getZr, _myChart$getZr2;
|
|
184
|
+
const {
|
|
185
|
+
option,
|
|
186
|
+
data,
|
|
187
|
+
OnClick,
|
|
188
|
+
OnZrClick
|
|
189
|
+
} = this.props;
|
|
190
|
+
const {
|
|
191
|
+
dataSource
|
|
192
|
+
} = this.state;
|
|
193
|
+
let dataMap = {};
|
|
194
|
+
const newDatas = data || dataSource;
|
|
195
|
+
let newOption = _objectSpread({}, option);
|
|
196
|
+
if (isArray(newDatas)) {
|
|
197
|
+
newDatas.map(item => {
|
|
198
|
+
for (let key in item) {
|
|
199
|
+
if (dataMap[key] == null) {
|
|
200
|
+
dataMap[key] = [];
|
|
201
|
+
}
|
|
202
|
+
dataMap[key].push(item[key]);
|
|
203
|
+
}
|
|
348
204
|
});
|
|
205
|
+
} else if (isObject(newDatas)) {
|
|
206
|
+
dataMap = newDatas;
|
|
349
207
|
}
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
208
|
+
newOption.xAxis = this.objectConversion(newOption.xAxis, newDatas, dataMap);
|
|
209
|
+
newOption.yAxis = this.objectConversion(newOption.yAxis, newDatas, dataMap);
|
|
210
|
+
newOption.series = this.objectConversion(newOption.series, newDatas, dataMap);
|
|
211
|
+
const myChart = this.myChart = echarts.init(this.chartRef.current); //初始化echarts,通过ref属性获取dom
|
|
212
|
+
myChart.clear();
|
|
213
|
+
myChart.off("click");
|
|
214
|
+
myChart === null || myChart === void 0 || (_myChart$getZr = myChart.getZr()) === null || _myChart$getZr === void 0 || _myChart$getZr.off("click");
|
|
215
|
+
myChart.setOption(newOption);
|
|
216
|
+
myChart.on("click", function (params) {
|
|
217
|
+
OnClick && OnClick(params, myChart);
|
|
218
|
+
});
|
|
219
|
+
myChart === null || myChart === void 0 || (_myChart$getZr2 = myChart.getZr()) === null || _myChart$getZr2 === void 0 || _myChart$getZr2.on("click", params => {
|
|
220
|
+
OnZrClick && OnZrClick(params, myChart);
|
|
221
|
+
});
|
|
222
|
+
myChart.resize();
|
|
223
|
+
window.addEventListener("resize", this.handleChartResize.bind(this));
|
|
224
|
+
}
|
|
225
|
+
handleChartResize() {
|
|
226
|
+
if (this.myChart) {
|
|
227
|
+
this.myChart.resize();
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
render() {
|
|
231
|
+
const {
|
|
232
|
+
width,
|
|
233
|
+
height
|
|
234
|
+
} = this.props;
|
|
235
|
+
const boxStyle = {
|
|
236
|
+
width: typeof width == "number" ? px2vw(width) : width,
|
|
237
|
+
height: typeof height == "number" ? px2vw(height) : height
|
|
238
|
+
};
|
|
239
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
240
|
+
style: boxStyle,
|
|
241
|
+
ref: this.chartRef,
|
|
242
|
+
id: "nsc_charts"
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
}
|
|
355
246
|
export default NscChart;
|
|
356
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvY2hhcnQvaW5kZXgudHN4Il0sIm5hbWVzIjpbIlJlYWN0IiwiUHVyZUNvbXBvbmVudCIsImVjaGFydHMiLCJTdG9yZSIsInV0aWxzIiwicHgydnciLCJpc0FycmF5IiwiaXNPYmplY3QiLCJOc2NDaGFydCIsInByb3BzIiwiY3JlYXRlUmVmIiwiZGF0YVNvdXJjZSIsImRhdGEiLCJzdG9yZSIsImNoaWxkcmVuIiwib3B0aW9ucyIsIm9wdGlvbiIsImF1dG9Mb2FkIiwidXJsIiwibGlzdGVuZXJzIiwibGlzdGVuZXJzUG9wcyIsInN0b3JlcyIsIkVycm9yIiwiX3RoaXMiLCJzdG9yZVByb3BzIiwibW9kZWwiLCJjb21wb25lbnQiLCJvbkJlZm9yZUxvYWQiLCJjYWxsYmFjayIsImxvYWQiLCJtb2RlbERhdGEiLCJzZXRTdGF0ZSIsImlzRmlyc3QiLCJpbml0IiwiZGF0YUNoYW5nZWQiLCJwcmV2UHJvcHMiLCJwcmV2U3RhdGUiLCJzbmFwc2hvdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJjb25zb2xlIiwibG9nIiwidiIsIndpbmRvdyIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVDaGFydFJlc2l6ZSIsImJpbmQiLCJ0ZXN0Iiwic3Vic3RyaW5nIiwibGVuZ3RoIiwiZGF0YXMiLCJkYXRhTWFwIiwicmVzdWx0IiwiaXNTdHJpbmciLCJpc1JlcGxhY2UiLCJyZXBsYWNlIiwibWFwIiwiaXRlbSIsInZhbHVlIiwiZGF0YUNvbnZlcnNpb24iLCJ0ZW1wT2JqIiwia2V5IiwicHVzaCIsIm9iaiIsIk9uQ2xpY2siLCJPblpyQ2xpY2siLCJzdGF0ZSIsIm5ld0RhdGFzIiwibmV3T3B0aW9uIiwieEF4aXMiLCJvYmplY3RDb252ZXJzaW9uIiwieUF4aXMiLCJzZXJpZXMiLCJteUNoYXJ0IiwiY2hhcnRSZWYiLCJjdXJyZW50IiwiY2xlYXIiLCJvZmYiLCJnZXRaciIsInNldE9wdGlvbiIsIm9uIiwicGFyYW1z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dkIsQ0FBNEIsSUFBNUIsQ0FBbEM7QUFDRDs7O1dBRUQsNkJBQW9CO0FBQ2xCLFVBQUksS0FBSzJCLE9BQVQsRUFBa0I7QUFDaEIsYUFBS0EsT0FBTCxDQUFhUyxNQUFiO0FBQ0Q7QUFDRjs7O1dBRUQsa0JBQVM7QUFDUCx5QkFBMEIsS0FBS3pFLEtBQS9CO0FBQUEsVUFBUTJFLEtBQVIsZ0JBQVFBLEtBQVI7QUFBQSxVQUFlQyxNQUFmLGdCQUFlQSxNQUFmO0FBQ0EsVUFBTUMsUUFBUSxHQUFHO0FBQ2ZGLFFBQUFBLEtBQUssRUFBRSxPQUFPQSxLQUFQLElBQWdCLFFBQWhCLEdBQTJCL0UsS0FBSyxDQUFDK0UsS0FBRCxDQUFoQyxHQUEwQ0EsS0FEbEM7QUFFZkMsUUFBQUEsTUFBTSxFQUFFLE9BQU9BLE1BQVAsSUFBaUIsUUFBakIsR0FBNEJoRixLQUFLLENBQUNnRixNQUFELENBQWpDLEdBQTRDQTtBQUZyQyxPQUFqQjtBQUlBLDBCQUFPO0FBQUssUUFBQSxLQUFLLEVBQUVDLFFBQVo7QUFBc0IsUUFBQSxHQUFHLEVBQUUsS0FBS1osUUFBaEM7QUFBMEMsUUFBQSxFQUFFLEVBQUM7QUFBN0MsUUFBUDtBQUNEOzs7O0VBM05vQnpFLGE7O0FBOE52QixlQUFlTyxRQUFmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tIFwiZWNoYXJ0c1wiO1xyXG5pbXBvcnQgeyBFQ2hhcnRzIH0gZnJvbSBcImVjaGFydHMvbGliL2VjaGFydHNcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCB7IHB4MnZ3IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCB7IGlzQXJyYXksIGlzT2JqZWN0IH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmludGVyZmFjZSBDaGFydFByb3BzIHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgb3B0aW9uOiBhbnk7XHJcbiAgZGF0YT86IEFycmF5PE9iamVjdD4gfCBPYmplY3Q7XHJcbiAgd2lkdGg6IG51bWJlciB8IHN0cmluZzsgLy/lm77ooajlrr3luqZcclxuICBoZWlnaHQ6IG51bWJlciB8IHN0cmluZzsgLy/lm77ooajplb/luqZcclxuICBhdXRvTG9hZD86IGJvb2xlYW47IC8v5pWw5o2u5pS55Y+Y77yM6Ieq5Yqo5Yi35paw5Zu+6KGoLOm7mOiupHRydWVcclxuICBPbkNsaWNrPzogKHBhcmFtczogYW55LCBlPzogYW55KSA9PiB2b2lkOyAvL+WbvuihqOeCueWHu+S6i+S7tlxyXG4gIE9uWnJDbGljaz86IChwYXJhbXM6IGFueSwgZT86IGFueSkgPT4gdm9pZDsgLy/lm77ooajngrnlh7vkuovku7ZcclxuICBbcHJvTmFtZXM6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuLy9kYXRh56S65L6LXHJcbi8qKlxyXG4g5pWw57uE77yaXHJcbiBkYXRhPVt7bmFtZTonMeaciCcsdmFsdWU6MjB9LHtuYW1lOicy5pyIJyx2YWx1ZToxMH0se25hbWU6JzPmnIgnLHZhbHVlOjI1fV1cclxuIOWvueixoVxyXG4gZGF0YT17bmFtZTpbJzHmnIgnLCcy5pyIJywnM+aciCddLHZhbHVlOlsyMCwzMCw0MF19XHJcbiAqL1xyXG5jbGFzcyBOc2NDaGFydCBleHRlbmRzIFB1cmVDb21wb25lbnQ8Q2hhcnRQcm9wcz4ge1xyXG4gIGNoYXJ0UmVmID0gUmVhY3QuY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xyXG4gIG15Q2hhcnQ6IEVDaGFydHMgfCBudWxsID0gbnVsbDtcclxuICBzdG9yZSA9IHt9IGFzIFN0b3JlUHJvcHM7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBkYXRhU291cmNlOiBudWxsLFxyXG4gIH07XHJcbiAgaXNGaXJzdCA9IHRydWU7XHJcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICAgIGNvbnN0IHtcclxuICAgICAgZGF0YSxcclxuICAgICAgc3RvcmUgPSB7fSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIG9wdGlvbjogb3B0aW9ucyxcclxuICAgICAgYXV0b0xvYWQgPSB0cnVlLFxyXG4gICAgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgeyB1cmwsIGxpc3RlbmVyczogbGlzdGVuZXJzUG9wcyA9IHt9LCAuLi5zdG9yZXMgfSA9IHN0b3JlO1xyXG4gICAgaWYgKCFjaGlsZHJlbikge1xyXG4gICAgICBpZiAoIShkYXRhIHx8IHVybCB8fCBvcHRpb25zKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOOAgWRhdGHjgIFvcHRpb27kuI3og73pg73kuLrnqbrvvIFcIik7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgICAgbGV0IHN0b3JlUHJvcHMgPSB7XHJcbiAgICAgICAgbW9kZWw6IFwibW9kZWxcIixcclxuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgbGlzdGVuZXJzOiB7XHJcbiAgICAgICAgICBvbkJlZm9yZUxvYWQ6IGZ1bmN0aW9uIChzdG9yZSwgb3B0aW9ucykge1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLm9uQmVmb3JlTG9hZCwgX3RoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IGZ1bmN0aW9uIChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSB7XHJcbiAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhIH0sICgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoX3RoaXMuaXNGaXJzdCAmJiBhdXRvTG9hZCkge1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuaW5pdCgpO1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuaXNGaXJzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1BvcHMubG9hZCwgX3RoaXMsIFtkYXRhLCBtb2RlbERhdGEsIHN0b3JlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZGF0YUNoYW5nZWQ6IGZ1bmN0aW9uIChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSB7XHJcbiAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhIH0sICgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoYXV0b0xvYWQpIHtcclxuICAgICAgICAgICAgICAgIF90aGlzLmluaXQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLmRhdGFDaGFuZ2VkLCBfdGhpcywgW1xyXG4gICAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgICAgbW9kZWxEYXRhLFxyXG4gICAgICAgICAgICAgIHN0b3JlLFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi5zdG9yZXMsXHJcbiAgICAgIH07XHJcbiAgICAgIGlmICh1cmwgJiYgZGF0YSA9PSBudWxsKSB7XHJcbiAgICAgICAgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICAgIC4uLntcclxuICAgICAgICAgICAgYXV0b0xvYWQ6IHRydWUsXHJcbiAgICAgICAgICAgIHVybDogdXJsLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnN0b3JlUHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFN0b3JlKHN0b3JlUHJvcHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IGRhdGEsIGF1dG9Mb2FkID0gdHJ1ZSwgc3RvcmUsIG9wdGlvbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChkYXRhICYmIGF1dG9Mb2FkKSB7XHJcbiAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgfSBlbHNlIGlmICghZGF0YSAmJiAhc3RvcmU/LnVybCAmJiBvcHRpb24pIHtcclxuICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRVcGRhdGUoXHJcbiAgICBwcmV2UHJvcHM6IFJlYWRvbmx5PENoYXJ0UHJvcHM+LFxyXG4gICAgcHJldlN0YXRlOiBSZWFkb25seTx7fT4sXHJcbiAgICBzbmFwc2hvdD86IGFueVxyXG4gICk6IHZvaWQge1xyXG4gICAgY29uc3QgeyBhdXRvTG9hZCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoYXV0b0xvYWQpIHtcclxuICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KHByZXZQcm9wcy5kYXRhKSAhPT0gSlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wcy5kYXRhKSkge1xyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHByZXZQcm9wcy5vcHRpb24pICE9PSBKU09OLnN0cmluZ2lmeSh0aGlzLnByb3BzLm9wdGlvbilcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJhYWFcIik7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlU2V0Q2hhcnQoKSB7XHJcbiAgICB0aGlzLmluaXQoKTtcclxuICB9XHJcbiAgaXNTdHJpbmcodikge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2ID09PSBcInN0cmluZ1wiO1xyXG4gIH1cclxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMuaGFuZGxlQ2hhcnRSZXNpemUuYmluZCh0aGlzKSk7XHJcbiAgfVxyXG5cclxuICBpc1JlcGxhY2Uodikge1xyXG4gICAgcmV0dXJuIC9eey4qfSQvZ2kudGVzdCh2KTtcclxuICB9XHJcbiAgcmVwbGFjZSh2KSB7XHJcbiAgICByZXR1cm4gdi5zdWJzdHJpbmcoMSwgdi5sZW5ndGggLSAxKTtcclxuICB9XHJcblxyXG4gIGRhdGFDb252ZXJzaW9uKGRhdGEsIGRhdGFzLCBkYXRhTWFwKSB7XHJcbiAgICBsZXQgcmVzdWx0O1xyXG4gICAgaWYgKGRhdGEpIHtcclxuICAgICAgaWYgKHRoaXMuaXNTdHJpbmcoZGF0YSkgJiYgdGhpcy5pc1JlcGxhY2UoZGF0YSkpIHtcclxuICAgICAgICByZXN1bHQgPSBkYXRhTWFwW3RoaXMucmVwbGFjZShkYXRhKV07XHJcbiAgICAgIH0gZWxzZSBpZiAoaXNBcnJheShkYXRhKSkge1xyXG4gICAgICAgIGRhdGEubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBsZXQgdiA9IGl0ZW0udmFsdWU7XHJcbiAgICAgICAgICBpZiAodiAmJiB0aGlzLmlzUmVwbGFjZSh2KSkge1xyXG4gICAgICAgICAgICBpdGVtLnZhbHVlID0gdGhpcy5kYXRhQ29udmVyc2lvbih2LCBkYXRhcywgZGF0YU1hcCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmVzdWx0ID0gZGF0YTtcclxuICAgICAgfSBlbHNlIGlmIChpc09iamVjdChkYXRhKSkge1xyXG4gICAgICAgIHJlc3VsdCA9IFtdO1xyXG4gICAgICAgIGlmIChpc0FycmF5KGRhdGFzKSkge1xyXG4gICAgICAgICAgZGF0YXMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIHZhciB0ZW1wT2JqID0ge307XHJcbiAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBpdGVtKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHYgPSBpdGVtW2tleV07XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaXNSZXBsYWNlKHYpKSB7XHJcbiAgICAgICAgICAgICAgICB0ZW1wT2JqW2tleV0gPSBpdGVtW3RoaXMucmVwbGFjZSh2KV07XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRlbXBPYmpba2V5XSA9IHY7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRlbXBPYmopO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuICBvYmplY3RDb252ZXJzaW9uKG9iaiwgZGF0YXMsIGRhdGFNYXApIHtcclxuICAgIGxldCB0ZW1wT2JqOiBhbnk7XHJcbiAgICBpZiAob2JqKSB7XHJcbiAgICAgIGlmIChpc0FycmF5KG9iaikpIHtcclxuICAgICAgICB0ZW1wT2JqID0gWy4uLm9ial07XHJcbiAgICAgICAgdGVtcE9iai5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGlmIChpdGVtLmRhdGEpIHtcclxuICAgICAgICAgICAgaXRlbS5kYXRhID0gdGhpcy5kYXRhQ29udmVyc2lvbihpdGVtLmRhdGEsIGRhdGFzLCBkYXRhTWFwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzU3RyaW5nKG9iaikpIHtcclxuICAgICAgICB0ZW1wT2JqID0gb2JqO1xyXG4gICAgICAgIHRlbXBPYmouZGF0YSA9IHRoaXMuZGF0YUNvbnZlcnNpb24odGVtcE9iaiwgZGF0YXMsIGRhdGFNYXApO1xyXG4gICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KG9iaikpIHtcclxuICAgICAgICB0ZW1wT2JqID0geyAuLi5vYmogfTtcclxuICAgICAgICB0ZW1wT2JqLmRhdGEgPSB0aGlzLmRhdGFDb252ZXJzaW9uKHRlbXBPYmouZGF0YSwgZGF0YXMsIGRhdGFNYXApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGVtcE9iajtcclxuICB9XHJcbiAgaW5pdCgpIHtcclxuICAgIGNvbnN0IHsgb3B0aW9uLCBkYXRhLCBPbkNsaWNrLCBPblpyQ2xpY2sgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGRhdGFTb3VyY2UgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgZGF0YU1hcDogYW55ID0ge307XHJcbiAgICBjb25zdCBuZXdEYXRhcyA9IGRhdGEgfHwgZGF0YVNvdXJjZTtcclxuICAgIGxldCBuZXdPcHRpb246IGFueSA9IHsgLi4ub3B0aW9uIH07XHJcbiAgICBpZiAoaXNBcnJheShuZXdEYXRhcykpIHtcclxuICAgICAgbmV3RGF0YXMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQga2V5IGluIGl0ZW0pIHtcclxuICAgICAgICAgIGlmIChkYXRhTWFwW2tleV0gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBkYXRhTWFwW2tleV0gPSBbXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRhdGFNYXBba2V5XS5wdXNoKGl0ZW1ba2V5XSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoaXNPYmplY3QobmV3RGF0YXMpKSB7XHJcbiAgICAgIGRhdGFNYXAgPSBuZXdEYXRhcztcclxuICAgIH1cclxuICAgIG5ld09wdGlvbi54QXhpcyA9IHRoaXMub2JqZWN0Q29udmVyc2lvbihuZXdPcHRpb24ueEF4aXMsIG5ld0RhdGFzLCBkYXRhTWFwKTtcclxuICAgIG5ld09wdGlvbi55QXhpcyA9IHRoaXMub2JqZWN0Q29udmVyc2lvbihuZXdPcHRpb24ueUF4aXMsIG5ld0RhdGFzLCBkYXRhTWFwKTtcclxuICAgIG5ld09wdGlvbi5zZXJpZXMgPSB0aGlzLm9iamVjdENvbnZlcnNpb24oXHJcbiAgICAgIG5ld09wdGlvbi5zZXJpZXMsXHJcbiAgICAgIG5ld0RhdGFzLFxyXG4gICAgICBkYXRhTWFwXHJcbiAgICApO1xyXG4gICAgY29uc3QgbXlDaGFydCA9ICh0aGlzLm15Q2hhcnQgPSBlY2hhcnRzLmluaXQoXHJcbiAgICAgIHRoaXMuY2hhcnRSZWYuY3VycmVudCBhcyBIVE1MRGl2RWxlbWVudFxyXG4gICAgKSk7IC8v5Yid5aeL5YyWZWNoYXJ0c++8jOmAmui/h3JlZuWxnuaAp+iOt+WPlmRvbVxyXG4gICAgbXlDaGFydC5jbGVhcigpO1xyXG4gICAgbXlDaGFydC5vZmYoXCJjbGlja1wiKTtcclxuICAgIG15Q2hhcnQ/LmdldFpyKCk/Lm9mZihcImNsaWNrXCIpO1xyXG4gICAgbXlDaGFydC5zZXRPcHRpb24obmV3T3B0aW9uKTtcclxuICAgIG15Q2hhcnQub24oXCJjbGlja1wiLCBmdW5jdGlvbiAocGFyYW1zKSB7XHJcbiAgICAgIE9uQ2xpY2sgJiYgT25DbGljayhwYXJhbXMsIG15Q2hhcnQpO1xyXG4gICAgfSk7XHJcbiAgICBteUNoYXJ0Py5nZXRacigpPy5vbihcImNsaWNrXCIsIChwYXJhbXMpID0+IHtcclxuICAgICAgT25ackNsaWNrICYmIE9uWnJDbGljayhwYXJhbXMsIG15Q2hhcnQpO1xyXG4gICAgfSk7XHJcbiAgICBteUNoYXJ0LnJlc2l6ZSgpO1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy5oYW5kbGVDaGFydFJlc2l6ZS5iaW5kKHRoaXMpKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUNoYXJ0UmVzaXplKCkge1xyXG4gICAgaWYgKHRoaXMubXlDaGFydCkge1xyXG4gICAgICB0aGlzLm15Q2hhcnQucmVzaXplKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBib3hTdHlsZSA9IHtcclxuICAgICAgd2lkdGg6IHR5cGVvZiB3aWR0aCA9PSBcIm51bWJlclwiID8gcHgydncod2lkdGgpIDogd2lkdGgsXHJcbiAgICAgIGhlaWdodDogdHlwZW9mIGhlaWdodCA9PSBcIm51bWJlclwiID8gcHgydncoaGVpZ2h0KSA6IGhlaWdodCxcclxuICAgIH07XHJcbiAgICByZXR1cm4gPGRpdiBzdHlsZT17Ym94U3R5bGV9IHJlZj17dGhpcy5jaGFydFJlZn0gaWQ9XCJuc2NfY2hhcnRzXCI+PC9kaXY+O1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgTnNjQ2hhcnQ7XHJcbiJdfQ==
|
|
247
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJlY2hhcnRzIiwiU3RvcmUiLCJ1dGlscyIsInB4MnZ3IiwiaXNBcnJheSIsImlzT2JqZWN0IiwiTnNjQ2hhcnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwiZGF0YVNvdXJjZSIsImRhdGEiLCJzdG9yZSIsImNoaWxkcmVuIiwib3B0aW9uIiwib3B0aW9ucyIsImF1dG9Mb2FkIiwidXJsIiwibGlzdGVuZXJzIiwibGlzdGVuZXJzUG9wcyIsInN0b3JlcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIkVycm9yIiwiX3RoaXMiLCJzdG9yZVByb3BzIiwiX29iamVjdFNwcmVhZCIsIm1vZGVsIiwiY29tcG9uZW50Iiwib25CZWZvcmVMb2FkIiwiY2FsbGJhY2siLCJsb2FkIiwibW9kZWxEYXRhIiwic2V0U3RhdGUiLCJpc0ZpcnN0IiwiaW5pdCIsImRhdGFDaGFuZ2VkIiwiY29tcG9uZW50RGlkTW91bnQiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJwcmV2U3RhdGUiLCJzbmFwc2hvdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJjb25zb2xlIiwibG9nIiwicmVTZXRDaGFydCIsImlzU3RyaW5nIiwidiIsImNvbXBvbmVudFdpbGxVbm1vdW50Iiwid2luZG93IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZUNoYXJ0UmVzaXplIiwiYmluZCIsImlzUmVwbGFjZSIsInRlc3QiLCJyZXBsYWNlIiwic3Vic3RyaW5nIiwibGVuZ3RoIiwiZGF0YUNvbnZlcnNpb24iLCJkYXRhcyIsImRhdGFNYXAiLCJyZXN1bHQiLCJtYXAiLCJpdGVtIiwidmFsdWUiLCJ0ZW1wT2JqIiwia2V5IiwicHVzaCIsIm9iamVjdENvbnZlcnNpb24iLCJvYmoiLCJfbXlDaGFydCRnZXRaciIsIl9teUNoYXJ0JGdldFpyMiIsIk9uQ2xpY2siLCJPblpyQ2xpY2siLCJzdGF0ZSIsIm5ld0RhdGFzIiwibmV3T3B0aW9uIiwieEF4aXMiLCJ5QXhpcyIsInNlcmllcyIsIm15Q2hhcnQiLCJjaGFydFJlZiIsImN1cnJlbnQiLCJjbGVhciIsIm9mZiIsImdldFpyIiwic2V0T3B0aW9uIiwib24iLCJwYXJhbXMiLCJyZXNpemUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVuZGVyIiwid2lkdGgiLCJoZWlnaHQiLCJib3hTdHlsZSIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsInJlZiIsImlkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYmFzZS9jaGFydC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tIFwiZWNoYXJ0c1wiO1xyXG5pbXBvcnQgeyBFQ2hhcnRzIH0gZnJvbSBcImVjaGFydHMvbGliL2VjaGFydHNcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCB7IHB4MnZ3IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCB7IGlzQXJyYXksIGlzT2JqZWN0IH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmludGVyZmFjZSBDaGFydFByb3BzIHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgb3B0aW9uOiBhbnk7XHJcbiAgZGF0YT86IEFycmF5PE9iamVjdD4gfCBPYmplY3Q7XHJcbiAgd2lkdGg6IG51bWJlciB8IHN0cmluZzsgLy/lm77ooajlrr3luqZcclxuICBoZWlnaHQ6IG51bWJlciB8IHN0cmluZzsgLy/lm77ooajplb/luqZcclxuICBhdXRvTG9hZD86IGJvb2xlYW47IC8v5pWw5o2u5pS55Y+Y77yM6Ieq5Yqo5Yi35paw5Zu+6KGoLOm7mOiupHRydWVcclxuICBPbkNsaWNrPzogKHBhcmFtczogYW55LCBlPzogYW55KSA9PiB2b2lkOyAvL+WbvuihqOeCueWHu+S6i+S7tlxyXG4gIE9uWnJDbGljaz86IChwYXJhbXM6IGFueSwgZT86IGFueSkgPT4gdm9pZDsgLy/lm77ooajngrnlh7vkuovku7ZcclxuICBbcHJvTmFtZXM6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuLy9kYXRh56S65L6LXHJcbi8qKlxyXG4g5pWw57uE77yaXHJcbiBkYXRhPVt7bmFtZTonMeaciCcsdmFsdWU6MjB9LHtuYW1lOicy5pyIJyx2YWx1ZToxMH0se25hbWU6JzPmnIgnLHZhbHVlOjI1fV1cclxuIOWvueixoVxyXG4gZGF0YT17bmFtZTpbJzHmnIgnLCcy5pyIJywnM+aciCddLHZhbHVlOlsyMCwzMCw0MF19XHJcbiAqL1xyXG5jbGFzcyBOc2NDaGFydCBleHRlbmRzIFB1cmVDb21wb25lbnQ8Q2hhcnRQcm9wcz4ge1xyXG4gIGNoYXJ0UmVmID0gUmVhY3QuY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xyXG4gIG15Q2hhcnQ6IEVDaGFydHMgfCBudWxsID0gbnVsbDtcclxuICBzdG9yZSA9IHt9IGFzIFN0b3JlUHJvcHM7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBkYXRhU291cmNlOiBudWxsLFxyXG4gIH07XHJcbiAgaXNGaXJzdCA9IHRydWU7XHJcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICAgIGNvbnN0IHtcclxuICAgICAgZGF0YSxcclxuICAgICAgc3RvcmUgPSB7fSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIG9wdGlvbjogb3B0aW9ucyxcclxuICAgICAgYXV0b0xvYWQgPSB0cnVlLFxyXG4gICAgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgeyB1cmwsIGxpc3RlbmVyczogbGlzdGVuZXJzUG9wcyA9IHt9LCAuLi5zdG9yZXMgfSA9IHN0b3JlO1xyXG4gICAgaWYgKCFjaGlsZHJlbikge1xyXG4gICAgICBpZiAoIShkYXRhIHx8IHVybCB8fCBvcHRpb25zKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOOAgWRhdGHjgIFvcHRpb27kuI3og73pg73kuLrnqbrvvIFcIik7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgICAgbGV0IHN0b3JlUHJvcHMgPSB7XHJcbiAgICAgICAgbW9kZWw6IFwibW9kZWxcIixcclxuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgbGlzdGVuZXJzOiB7XHJcbiAgICAgICAgICBvbkJlZm9yZUxvYWQ6IGZ1bmN0aW9uIChzdG9yZSwgb3B0aW9ucykge1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLm9uQmVmb3JlTG9hZCwgX3RoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IGZ1bmN0aW9uIChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSB7XHJcbiAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhIH0sICgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoX3RoaXMuaXNGaXJzdCAmJiBhdXRvTG9hZCkge1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuaW5pdCgpO1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuaXNGaXJzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1BvcHMubG9hZCwgX3RoaXMsIFtkYXRhLCBtb2RlbERhdGEsIHN0b3JlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZGF0YUNoYW5nZWQ6IGZ1bmN0aW9uIChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSB7XHJcbiAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhIH0sICgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoYXV0b0xvYWQpIHtcclxuICAgICAgICAgICAgICAgIF90aGlzLmluaXQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLmRhdGFDaGFuZ2VkLCBfdGhpcywgW1xyXG4gICAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgICAgbW9kZWxEYXRhLFxyXG4gICAgICAgICAgICAgIHN0b3JlLFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi5zdG9yZXMsXHJcbiAgICAgIH07XHJcbiAgICAgIGlmICh1cmwgJiYgZGF0YSA9PSBudWxsKSB7XHJcbiAgICAgICAgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICAgIC4uLntcclxuICAgICAgICAgICAgYXV0b0xvYWQ6IHRydWUsXHJcbiAgICAgICAgICAgIHVybDogdXJsLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnN0b3JlUHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFN0b3JlKHN0b3JlUHJvcHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IGRhdGEsIGF1dG9Mb2FkID0gdHJ1ZSwgc3RvcmUsIG9wdGlvbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChkYXRhICYmIGF1dG9Mb2FkKSB7XHJcbiAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgfSBlbHNlIGlmICghZGF0YSAmJiAhc3RvcmU/LnVybCAmJiBvcHRpb24pIHtcclxuICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRVcGRhdGUoXHJcbiAgICBwcmV2UHJvcHM6IFJlYWRvbmx5PENoYXJ0UHJvcHM+LFxyXG4gICAgcHJldlN0YXRlOiBSZWFkb25seTx7fT4sXHJcbiAgICBzbmFwc2hvdD86IGFueVxyXG4gICk6IHZvaWQge1xyXG4gICAgY29uc3QgeyBhdXRvTG9hZCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoYXV0b0xvYWQpIHtcclxuICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KHByZXZQcm9wcy5kYXRhKSAhPT0gSlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wcy5kYXRhKSkge1xyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHByZXZQcm9wcy5vcHRpb24pICE9PSBKU09OLnN0cmluZ2lmeSh0aGlzLnByb3BzLm9wdGlvbilcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJhYWFcIik7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlU2V0Q2hhcnQoKSB7XHJcbiAgICB0aGlzLmluaXQoKTtcclxuICB9XHJcbiAgaXNTdHJpbmcodikge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2ID09PSBcInN0cmluZ1wiO1xyXG4gIH1cclxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMuaGFuZGxlQ2hhcnRSZXNpemUuYmluZCh0aGlzKSk7XHJcbiAgfVxyXG5cclxuICBpc1JlcGxhY2Uodikge1xyXG4gICAgcmV0dXJuIC9eey4qfSQvZ2kudGVzdCh2KTtcclxuICB9XHJcbiAgcmVwbGFjZSh2KSB7XHJcbiAgICByZXR1cm4gdi5zdWJzdHJpbmcoMSwgdi5sZW5ndGggLSAxKTtcclxuICB9XHJcblxyXG4gIGRhdGFDb252ZXJzaW9uKGRhdGEsIGRhdGFzLCBkYXRhTWFwKSB7XHJcbiAgICBsZXQgcmVzdWx0O1xyXG4gICAgaWYgKGRhdGEpIHtcclxuICAgICAgaWYgKHRoaXMuaXNTdHJpbmcoZGF0YSkgJiYgdGhpcy5pc1JlcGxhY2UoZGF0YSkpIHtcclxuICAgICAgICByZXN1bHQgPSBkYXRhTWFwW3RoaXMucmVwbGFjZShkYXRhKV07XHJcbiAgICAgIH0gZWxzZSBpZiAoaXNBcnJheShkYXRhKSkge1xyXG4gICAgICAgIGRhdGEubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBsZXQgdiA9IGl0ZW0udmFsdWU7XHJcbiAgICAgICAgICBpZiAodiAmJiB0aGlzLmlzUmVwbGFjZSh2KSkge1xyXG4gICAgICAgICAgICBpdGVtLnZhbHVlID0gdGhpcy5kYXRhQ29udmVyc2lvbih2LCBkYXRhcywgZGF0YU1hcCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmVzdWx0ID0gZGF0YTtcclxuICAgICAgfSBlbHNlIGlmIChpc09iamVjdChkYXRhKSkge1xyXG4gICAgICAgIHJlc3VsdCA9IFtdO1xyXG4gICAgICAgIGlmIChpc0FycmF5KGRhdGFzKSkge1xyXG4gICAgICAgICAgZGF0YXMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIHZhciB0ZW1wT2JqID0ge307XHJcbiAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBpdGVtKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHYgPSBpdGVtW2tleV07XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaXNSZXBsYWNlKHYpKSB7XHJcbiAgICAgICAgICAgICAgICB0ZW1wT2JqW2tleV0gPSBpdGVtW3RoaXMucmVwbGFjZSh2KV07XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRlbXBPYmpba2V5XSA9IHY7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRlbXBPYmopO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuICBvYmplY3RDb252ZXJzaW9uKG9iaiwgZGF0YXMsIGRhdGFNYXApIHtcclxuICAgIGxldCB0ZW1wT2JqOiBhbnk7XHJcbiAgICBpZiAob2JqKSB7XHJcbiAgICAgIGlmIChpc0FycmF5KG9iaikpIHtcclxuICAgICAgICB0ZW1wT2JqID0gWy4uLm9ial07XHJcbiAgICAgICAgdGVtcE9iai5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGlmIChpdGVtLmRhdGEpIHtcclxuICAgICAgICAgICAgaXRlbS5kYXRhID0gdGhpcy5kYXRhQ29udmVyc2lvbihpdGVtLmRhdGEsIGRhdGFzLCBkYXRhTWFwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzU3RyaW5nKG9iaikpIHtcclxuICAgICAgICB0ZW1wT2JqID0gb2JqO1xyXG4gICAgICAgIHRlbXBPYmouZGF0YSA9IHRoaXMuZGF0YUNvbnZlcnNpb24odGVtcE9iaiwgZGF0YXMsIGRhdGFNYXApO1xyXG4gICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KG9iaikpIHtcclxuICAgICAgICB0ZW1wT2JqID0geyAuLi5vYmogfTtcclxuICAgICAgICB0ZW1wT2JqLmRhdGEgPSB0aGlzLmRhdGFDb252ZXJzaW9uKHRlbXBPYmouZGF0YSwgZGF0YXMsIGRhdGFNYXApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGVtcE9iajtcclxuICB9XHJcbiAgaW5pdCgpIHtcclxuICAgIGNvbnN0IHsgb3B0aW9uLCBkYXRhLCBPbkNsaWNrLCBPblpyQ2xpY2sgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGRhdGFTb3VyY2UgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgZGF0YU1hcDogYW55ID0ge307XHJcbiAgICBjb25zdCBuZXdEYXRhcyA9IGRhdGEgfHwgZGF0YVNvdXJjZTtcclxuICAgIGxldCBuZXdPcHRpb246IGFueSA9IHsgLi4ub3B0aW9uIH07XHJcbiAgICBpZiAoaXNBcnJheShuZXdEYXRhcykpIHtcclxuICAgICAgbmV3RGF0YXMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQga2V5IGluIGl0ZW0pIHtcclxuICAgICAgICAgIGlmIChkYXRhTWFwW2tleV0gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBkYXRhTWFwW2tleV0gPSBbXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRhdGFNYXBba2V5XS5wdXNoKGl0ZW1ba2V5XSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoaXNPYmplY3QobmV3RGF0YXMpKSB7XHJcbiAgICAgIGRhdGFNYXAgPSBuZXdEYXRhcztcclxuICAgIH1cclxuICAgIG5ld09wdGlvbi54QXhpcyA9IHRoaXMub2JqZWN0Q29udmVyc2lvbihuZXdPcHRpb24ueEF4aXMsIG5ld0RhdGFzLCBkYXRhTWFwKTtcclxuICAgIG5ld09wdGlvbi55QXhpcyA9IHRoaXMub2JqZWN0Q29udmVyc2lvbihuZXdPcHRpb24ueUF4aXMsIG5ld0RhdGFzLCBkYXRhTWFwKTtcclxuICAgIG5ld09wdGlvbi5zZXJpZXMgPSB0aGlzLm9iamVjdENvbnZlcnNpb24oXHJcbiAgICAgIG5ld09wdGlvbi5zZXJpZXMsXHJcbiAgICAgIG5ld0RhdGFzLFxyXG4gICAgICBkYXRhTWFwXHJcbiAgICApO1xyXG4gICAgY29uc3QgbXlDaGFydCA9ICh0aGlzLm15Q2hhcnQgPSBlY2hhcnRzLmluaXQoXHJcbiAgICAgIHRoaXMuY2hhcnRSZWYuY3VycmVudCBhcyBIVE1MRGl2RWxlbWVudFxyXG4gICAgKSk7IC8v5Yid5aeL5YyWZWNoYXJ0c++8jOmAmui/h3JlZuWxnuaAp+iOt+WPlmRvbVxyXG4gICAgbXlDaGFydC5jbGVhcigpO1xyXG4gICAgbXlDaGFydC5vZmYoXCJjbGlja1wiKTtcclxuICAgIG15Q2hhcnQ/LmdldFpyKCk/Lm9mZihcImNsaWNrXCIpO1xyXG4gICAgbXlDaGFydC5zZXRPcHRpb24obmV3T3B0aW9uKTtcclxuICAgIG15Q2hhcnQub24oXCJjbGlja1wiLCBmdW5jdGlvbiAocGFyYW1zKSB7XHJcbiAgICAgIE9uQ2xpY2sgJiYgT25DbGljayhwYXJhbXMsIG15Q2hhcnQpO1xyXG4gICAgfSk7XHJcbiAgICBteUNoYXJ0Py5nZXRacigpPy5vbihcImNsaWNrXCIsIChwYXJhbXMpID0+IHtcclxuICAgICAgT25ackNsaWNrICYmIE9uWnJDbGljayhwYXJhbXMsIG15Q2hhcnQpO1xyXG4gICAgfSk7XHJcbiAgICBteUNoYXJ0LnJlc2l6ZSgpO1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy5oYW5kbGVDaGFydFJlc2l6ZS5iaW5kKHRoaXMpKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUNoYXJ0UmVzaXplKCkge1xyXG4gICAgaWYgKHRoaXMubXlDaGFydCkge1xyXG4gICAgICB0aGlzLm15Q2hhcnQucmVzaXplKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBib3hTdHlsZSA9IHtcclxuICAgICAgd2lkdGg6IHR5cGVvZiB3aWR0aCA9PSBcIm51bWJlclwiID8gcHgydncod2lkdGgpIDogd2lkdGgsXHJcbiAgICAgIGhlaWdodDogdHlwZW9mIGhlaWdodCA9PSBcIm51bWJlclwiID8gcHgydncoaGVpZ2h0KSA6IGhlaWdodCxcclxuICAgIH07XHJcbiAgICByZXR1cm4gPGRpdiBzdHlsZT17Ym94U3R5bGV9IHJlZj17dGhpcy5jaGFydFJlZn0gaWQ9XCJuc2NfY2hhcnRzXCI+PC9kaXY+O1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgTnNjQ2hh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
|