nsc-react-component 2.12.2 → 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 +92 -58
- 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/form/Form.js
CHANGED
|
@@ -1,43 +1,16 @@
|
|
|
1
|
-
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
2
|
-
|
|
3
1
|
import "antd/es/form/style/css";
|
|
4
2
|
import _Form from "antd/es/form";
|
|
5
3
|
import "antd/es/message/style/css";
|
|
6
4
|
import _message from "antd/es/message";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
function
|
|
10
|
-
|
|
11
|
-
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; }
|
|
12
|
-
|
|
13
|
-
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; }
|
|
14
|
-
|
|
5
|
+
const _excluded = ["data", "encryptFields"];
|
|
6
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
7
|
+
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; }
|
|
8
|
+
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; }
|
|
15
9
|
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; }
|
|
16
|
-
|
|
17
10
|
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; }
|
|
18
|
-
|
|
19
|
-
function
|
|
20
|
-
|
|
21
|
-
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); } }
|
|
22
|
-
|
|
23
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
24
|
-
|
|
25
|
-
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); }
|
|
26
|
-
|
|
27
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
28
|
-
|
|
29
|
-
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); }; }
|
|
30
|
-
|
|
31
|
-
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
|
|
32
|
-
|
|
33
|
-
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
34
|
-
|
|
35
|
-
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; } }
|
|
36
|
-
|
|
37
|
-
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
38
|
-
|
|
39
|
-
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; }
|
|
40
|
-
|
|
11
|
+
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; }
|
|
12
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
13
|
+
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); }
|
|
41
14
|
/*
|
|
42
15
|
* @Descripttion:表单组件
|
|
43
16
|
* @version:
|
|
@@ -52,32 +25,20 @@ import { request } from "@bj-nsc/msn/lib/utils";
|
|
|
52
25
|
import omit from "omit.js";
|
|
53
26
|
import Spin from "../spin";
|
|
54
27
|
import { utils } from "@bj-nsc/msn/lib/utils";
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
function NscForm(props) {
|
|
62
|
-
var _this2;
|
|
63
|
-
|
|
64
|
-
_classCallCheck(this, NscForm);
|
|
65
|
-
|
|
66
|
-
_this2 = _super.call(this, props);
|
|
67
|
-
|
|
68
|
-
_defineProperty(_assertThisInitialized(_this2), "formRef", /*#__PURE__*/React.createRef());
|
|
69
|
-
|
|
70
|
-
_defineProperty(_assertThisInitialized(_this2), "state", {
|
|
28
|
+
class NscForm extends PureComponent {
|
|
29
|
+
constructor(props) {
|
|
30
|
+
super(props);
|
|
31
|
+
_defineProperty(this, "formRef", /*#__PURE__*/React.createRef());
|
|
32
|
+
_defineProperty(this, "state", {
|
|
71
33
|
formVisible: false,
|
|
72
34
|
formModalProps: {},
|
|
73
35
|
formDrawerProps: {},
|
|
74
36
|
isChange: false,
|
|
75
37
|
expand: false
|
|
76
38
|
});
|
|
77
|
-
|
|
78
|
-
_defineProperty(_assertThisInitialized(_this2), "option", {
|
|
39
|
+
_defineProperty(this, "option", {
|
|
79
40
|
//回调作用域
|
|
80
|
-
scope:
|
|
41
|
+
scope: this,
|
|
81
42
|
//open传递过来的页面参数
|
|
82
43
|
params: {},
|
|
83
44
|
//显示之前回调
|
|
@@ -89,402 +50,328 @@ var NscForm = /*#__PURE__*/function (_PureComponent) {
|
|
|
89
50
|
//显示之后回调
|
|
90
51
|
afterRender: null
|
|
91
52
|
});
|
|
92
|
-
|
|
93
|
-
return _this2;
|
|
94
53
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
}, {
|
|
114
|
-
key: "getFieldsError",
|
|
115
|
-
value: function getFieldsError() {
|
|
116
|
-
var _this$formRef$current3;
|
|
117
|
-
|
|
118
|
-
return (_this$formRef$current3 = this.formRef.current) === null || _this$formRef$current3 === void 0 ? void 0 : _this$formRef$current3.getFieldsError();
|
|
119
|
-
} //获取一组字段名对应的值,会按照对应结构返回
|
|
120
|
-
|
|
121
|
-
}, {
|
|
122
|
-
key: "getFieldsValue",
|
|
123
|
-
value: function getFieldsValue() {
|
|
124
|
-
var _this$formRef$current4;
|
|
125
|
-
|
|
126
|
-
return (_this$formRef$current4 = this.formRef.current) === null || _this$formRef$current4 === void 0 ? void 0 : _this$formRef$current4.getFieldsValue();
|
|
127
|
-
} //获取对应字段名的值
|
|
128
|
-
|
|
129
|
-
}, {
|
|
130
|
-
key: "getFieldValue",
|
|
131
|
-
value: function getFieldValue(name) {
|
|
132
|
-
var _this$formRef$current5;
|
|
133
|
-
|
|
134
|
-
return (_this$formRef$current5 = this.formRef.current) === null || _this$formRef$current5 === void 0 ? void 0 : _this$formRef$current5.getFieldValue(name);
|
|
135
|
-
} //检查一组字段是否被用户操作过
|
|
136
|
-
|
|
137
|
-
}, {
|
|
138
|
-
key: "isFieldsTouched",
|
|
139
|
-
value: function isFieldsTouched() {
|
|
140
|
-
var _this$formRef$current6;
|
|
141
|
-
|
|
142
|
-
return (_this$formRef$current6 = this.formRef.current) === null || _this$formRef$current6 === void 0 ? void 0 : _this$formRef$current6.isFieldsTouched();
|
|
143
|
-
} //检查对应字段是否被用户操作过
|
|
144
|
-
|
|
145
|
-
}, {
|
|
146
|
-
key: "isFieldTouched",
|
|
147
|
-
value: function isFieldTouched(name) {
|
|
148
|
-
var _this$formRef$current7;
|
|
149
|
-
|
|
150
|
-
return (_this$formRef$current7 = this.formRef.current) === null || _this$formRef$current7 === void 0 ? void 0 : _this$formRef$current7.isFieldTouched(name);
|
|
151
|
-
} //检查一组字段是否正在校验
|
|
152
|
-
|
|
153
|
-
}, {
|
|
154
|
-
key: "isFieldValidating",
|
|
155
|
-
value: function isFieldValidating(name) {
|
|
156
|
-
var _this$formRef$current8;
|
|
157
|
-
|
|
158
|
-
return (_this$formRef$current8 = this.formRef.current) === null || _this$formRef$current8 === void 0 ? void 0 : _this$formRef$current8.isFieldValidating(name);
|
|
159
|
-
} //重置一组字段到
|
|
160
|
-
|
|
161
|
-
}, {
|
|
162
|
-
key: "resetFields",
|
|
163
|
-
value: function resetFields() {
|
|
164
|
-
var _this$formRef$current9;
|
|
165
|
-
|
|
166
|
-
(_this$formRef$current9 = this.formRef.current) === null || _this$formRef$current9 === void 0 ? void 0 : _this$formRef$current9.resetFields();
|
|
167
|
-
}
|
|
168
|
-
}, {
|
|
169
|
-
key: "scrollToField",
|
|
170
|
-
value: function scrollToField(name, options) {
|
|
171
|
-
var _this$formRef$current10;
|
|
172
|
-
|
|
173
|
-
(_this$formRef$current10 = this.formRef.current) === null || _this$formRef$current10 === void 0 ? void 0 : _this$formRef$current10.scrollToField(name, options);
|
|
174
|
-
}
|
|
175
|
-
}, {
|
|
176
|
-
key: "setFields",
|
|
177
|
-
value: function setFields(filds) {
|
|
178
|
-
var _this$formRef$current11;
|
|
179
|
-
|
|
180
|
-
(_this$formRef$current11 = this.formRef.current) === null || _this$formRef$current11 === void 0 ? void 0 : _this$formRef$current11.setFields(filds);
|
|
181
|
-
}
|
|
182
|
-
}, {
|
|
183
|
-
key: "setFieldsValue",
|
|
184
|
-
value: function setFieldsValue(values) {
|
|
185
|
-
var _this$formRef$current12;
|
|
186
|
-
|
|
187
|
-
(_this$formRef$current12 = this.formRef.current) === null || _this$formRef$current12 === void 0 ? void 0 : _this$formRef$current12.setFieldsValue(values);
|
|
188
|
-
}
|
|
189
|
-
}, {
|
|
190
|
-
key: "submit",
|
|
191
|
-
value: function submit() {
|
|
192
|
-
var _this$formRef$current13;
|
|
193
|
-
|
|
194
|
-
(_this$formRef$current13 = this.formRef.current) === null || _this$formRef$current13 === void 0 ? void 0 : _this$formRef$current13.submit();
|
|
195
|
-
}
|
|
196
|
-
}, {
|
|
197
|
-
key: "onSubmit",
|
|
198
|
-
value: function onSubmit(url, options, callback, msg) {
|
|
199
|
-
var _this$props = this.props,
|
|
200
|
-
propsUrl = _this$props.url,
|
|
201
|
-
_this$props$encryptFi = _this$props.encryptFields,
|
|
202
|
-
encryptPropps = _this$props$encryptFi === void 0 ? [] : _this$props$encryptFi;
|
|
203
|
-
|
|
204
|
-
if (!url && !propsUrl) {
|
|
205
|
-
throw new Error("没有上传的url!");
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
var _options$method = options.method,
|
|
209
|
-
method = _options$method === void 0 ? "post" : _options$method;
|
|
210
|
-
var requestUrl = url ? url : propsUrl;
|
|
211
|
-
var requestData = this.formRef.current.getFieldsValue();
|
|
212
|
-
var requestEncrypt = encryptPropps;
|
|
213
|
-
var requestParam = {
|
|
214
|
-
method: method,
|
|
215
|
-
data: requestData
|
|
216
|
-
};
|
|
217
|
-
|
|
218
|
-
if (options) {
|
|
219
|
-
var data = options.data,
|
|
220
|
-
encryptFields = options.encryptFields,
|
|
221
|
-
params = _objectWithoutProperties(options, _excluded);
|
|
222
|
-
|
|
223
|
-
requestParam = _objectSpread(_objectSpread({}, requestParam), params);
|
|
224
|
-
|
|
225
|
-
if (data) {
|
|
226
|
-
delete requestParam.data;
|
|
227
|
-
|
|
228
|
-
if (method.toLowerCase() == "get") {
|
|
229
|
-
requestParam = _objectSpread(_objectSpread(_objectSpread({}, requestParam), params), {}, {
|
|
230
|
-
params: data
|
|
231
|
-
});
|
|
232
|
-
} else {
|
|
233
|
-
requestParam = _objectSpread(_objectSpread(_objectSpread({}, requestParam), params), {}, {
|
|
234
|
-
data: data
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
if (encryptFields) {
|
|
240
|
-
requestEncrypt = encryptFields;
|
|
54
|
+
static getDerivedStateFromProps(nextProps, prevState) {
|
|
55
|
+
const {
|
|
56
|
+
modalProps,
|
|
57
|
+
drawerProps,
|
|
58
|
+
showModel
|
|
59
|
+
} = nextProps;
|
|
60
|
+
const {
|
|
61
|
+
formModalProps,
|
|
62
|
+
formDrawerProps
|
|
63
|
+
} = prevState;
|
|
64
|
+
if (showModel == "modal") {
|
|
65
|
+
// JSON.stringify(formModalProps) !== JSON.stringify(modalProps)
|
|
66
|
+
if (!Object.is(formModalProps, modalProps)) {
|
|
67
|
+
let newState = {
|
|
68
|
+
formDrawerProps: modalProps
|
|
69
|
+
};
|
|
70
|
+
if ((modalProps === null || modalProps === void 0 ? void 0 : modalProps.visible) !== null && (modalProps === null || modalProps === void 0 ? void 0 : modalProps.visible) !== undefined) {
|
|
71
|
+
newState.formVisible = modalProps === null || modalProps === void 0 ? void 0 : modalProps.visible;
|
|
241
72
|
}
|
|
73
|
+
return newState;
|
|
242
74
|
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
if (msg) {
|
|
252
|
-
if (code === 200) {
|
|
253
|
-
_message.success("提交成功");
|
|
254
|
-
} else {
|
|
255
|
-
_message.error("提交失败");
|
|
256
|
-
}
|
|
75
|
+
} else if (showModel == "drawer") {
|
|
76
|
+
// JSON.stringify(formDrawerProps) !== JSON.stringify(drawerProps)
|
|
77
|
+
if (!Object.is(formDrawerProps, drawerProps)) {
|
|
78
|
+
let newState = {
|
|
79
|
+
formDrawerProps: drawerProps
|
|
80
|
+
};
|
|
81
|
+
if ((drawerProps === null || drawerProps === void 0 ? void 0 : drawerProps.visible) !== null && (drawerProps === null || drawerProps === void 0 ? void 0 : drawerProps.visible) !== undefined) {
|
|
82
|
+
newState.formVisible = drawerProps === null || drawerProps === void 0 ? void 0 : drawerProps.visible;
|
|
257
83
|
}
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
}).catch(function (error) {
|
|
261
|
-
console.log("error", error);
|
|
262
|
-
});
|
|
263
|
-
}
|
|
264
|
-
}, {
|
|
265
|
-
key: "validateFields",
|
|
266
|
-
value: function validateFields(name) {
|
|
267
|
-
return this.formRef.current.validateFields(name);
|
|
84
|
+
return newState;
|
|
85
|
+
}
|
|
268
86
|
}
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
value: function hide(e) {
|
|
272
|
-
var _this$props2 = this.props,
|
|
273
|
-
showModel = _this$props2.showModel,
|
|
274
|
-
_this$props2$modalPro = _this$props2.modalProps,
|
|
275
|
-
modalProps = _this$props2$modalPro === void 0 ? {} : _this$props2$modalPro,
|
|
276
|
-
_this$props2$drawerPr = _this$props2.drawerProps,
|
|
277
|
-
drawerProps = _this$props2$drawerPr === void 0 ? {} : _this$props2$drawerPr;
|
|
278
|
-
|
|
279
|
-
var _this = this;
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
280
89
|
|
|
281
|
-
|
|
282
|
-
|
|
90
|
+
//获取对应字段名的错误信息
|
|
91
|
+
getFieldError(name) {
|
|
92
|
+
var _this$formRef$current;
|
|
93
|
+
return (_this$formRef$current = this.formRef.current) === null || _this$formRef$current === void 0 ? void 0 : _this$formRef$current.getFieldError(name);
|
|
94
|
+
}
|
|
283
95
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
_this.hideForm();
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
}, {
|
|
293
|
-
key: "hideForm",
|
|
294
|
-
value: function hideForm() {
|
|
295
|
-
var _this3 = this;
|
|
96
|
+
//获取对应字段实例
|
|
97
|
+
getFieldInstance(name) {
|
|
98
|
+
var _this$formRef$current2;
|
|
99
|
+
return (_this$formRef$current2 = this.formRef.current) === null || _this$formRef$current2 === void 0 ? void 0 : _this$formRef$current2.getFieldInstance(name);
|
|
100
|
+
}
|
|
296
101
|
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
if (resetValue) {
|
|
303
|
-
var _this3$formRef$curren;
|
|
102
|
+
//获取一组字段名对应的错误信息,返回为数组形式
|
|
103
|
+
getFieldsError() {
|
|
104
|
+
var _this$formRef$current3;
|
|
105
|
+
return (_this$formRef$current3 = this.formRef.current) === null || _this$formRef$current3 === void 0 ? void 0 : _this$formRef$current3.getFieldsError();
|
|
106
|
+
}
|
|
304
107
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
}
|
|
310
|
-
key: "showForm",
|
|
311
|
-
value: function showForm(value) {
|
|
312
|
-
var _this4 = this;
|
|
108
|
+
//获取一组字段名对应的值,会按照对应结构返回
|
|
109
|
+
getFieldsValue() {
|
|
110
|
+
var _this$formRef$current4;
|
|
111
|
+
return (_this$formRef$current4 = this.formRef.current) === null || _this$formRef$current4 === void 0 ? void 0 : _this$formRef$current4.getFieldsValue();
|
|
112
|
+
}
|
|
313
113
|
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
var _this4$formRef$curren;
|
|
114
|
+
//获取对应字段名的值
|
|
115
|
+
getFieldValue(name) {
|
|
116
|
+
var _this$formRef$current5;
|
|
117
|
+
return (_this$formRef$current5 = this.formRef.current) === null || _this$formRef$current5 === void 0 ? void 0 : _this$formRef$current5.getFieldValue(name);
|
|
118
|
+
}
|
|
320
119
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
}, {
|
|
327
|
-
key: "cloneElement",
|
|
328
|
-
value: function cloneElement(item) {
|
|
329
|
-
var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
120
|
+
//检查一组字段是否被用户操作过
|
|
121
|
+
isFieldsTouched() {
|
|
122
|
+
var _this$formRef$current6;
|
|
123
|
+
return (_this$formRef$current6 = this.formRef.current) === null || _this$formRef$current6 === void 0 ? void 0 : _this$formRef$current6.isFieldsTouched();
|
|
124
|
+
}
|
|
330
125
|
|
|
331
|
-
|
|
126
|
+
//检查对应字段是否被用户操作过
|
|
127
|
+
isFieldTouched(name) {
|
|
128
|
+
var _this$formRef$current7;
|
|
129
|
+
return (_this$formRef$current7 = this.formRef.current) === null || _this$formRef$current7 === void 0 ? void 0 : _this$formRef$current7.isFieldTouched(name);
|
|
130
|
+
}
|
|
332
131
|
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
132
|
+
//检查一组字段是否正在校验
|
|
133
|
+
isFieldValidating(name) {
|
|
134
|
+
var _this$formRef$current8;
|
|
135
|
+
return (_this$formRef$current8 = this.formRef.current) === null || _this$formRef$current8 === void 0 ? void 0 : _this$formRef$current8.isFieldValidating(name);
|
|
136
|
+
}
|
|
336
137
|
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
138
|
+
//重置一组字段到
|
|
139
|
+
resetFields() {
|
|
140
|
+
var _this$formRef$current9;
|
|
141
|
+
(_this$formRef$current9 = this.formRef.current) === null || _this$formRef$current9 === void 0 || _this$formRef$current9.resetFields();
|
|
142
|
+
}
|
|
143
|
+
scrollToField(name, options) {
|
|
144
|
+
var _this$formRef$current10;
|
|
145
|
+
(_this$formRef$current10 = this.formRef.current) === null || _this$formRef$current10 === void 0 || _this$formRef$current10.scrollToField(name, options);
|
|
146
|
+
}
|
|
147
|
+
setFields(filds) {
|
|
148
|
+
var _this$formRef$current11;
|
|
149
|
+
(_this$formRef$current11 = this.formRef.current) === null || _this$formRef$current11 === void 0 || _this$formRef$current11.setFields(filds);
|
|
150
|
+
}
|
|
151
|
+
setFieldsValue(values) {
|
|
152
|
+
var _this$formRef$current12;
|
|
153
|
+
(_this$formRef$current12 = this.formRef.current) === null || _this$formRef$current12 === void 0 || _this$formRef$current12.setFieldsValue(values);
|
|
154
|
+
}
|
|
155
|
+
submit() {
|
|
156
|
+
var _this$formRef$current13;
|
|
157
|
+
(_this$formRef$current13 = this.formRef.current) === null || _this$formRef$current13 === void 0 || _this$formRef$current13.submit();
|
|
158
|
+
}
|
|
159
|
+
onSubmit(url, options, callback, msg) {
|
|
160
|
+
const {
|
|
161
|
+
url: propsUrl,
|
|
162
|
+
encryptFields: encryptPropps = []
|
|
163
|
+
} = this.props;
|
|
164
|
+
if (!url && !propsUrl) {
|
|
165
|
+
throw new Error("没有上传的url!");
|
|
166
|
+
}
|
|
167
|
+
const {
|
|
168
|
+
method = "post"
|
|
169
|
+
} = options;
|
|
170
|
+
let requestUrl = url ? url : propsUrl;
|
|
171
|
+
let requestData = this.formRef.current.getFieldsValue();
|
|
172
|
+
let requestEncrypt = encryptPropps;
|
|
173
|
+
let requestParam = {
|
|
174
|
+
method: method,
|
|
175
|
+
data: requestData
|
|
176
|
+
};
|
|
177
|
+
if (options) {
|
|
178
|
+
const {
|
|
179
|
+
data,
|
|
180
|
+
encryptFields
|
|
181
|
+
} = options,
|
|
182
|
+
params = _objectWithoutProperties(options, _excluded);
|
|
183
|
+
requestParam = _objectSpread(_objectSpread({}, requestParam), params);
|
|
184
|
+
if (data) {
|
|
185
|
+
delete requestParam.data;
|
|
186
|
+
if (method.toLowerCase() == "get") {
|
|
187
|
+
requestParam = _objectSpread(_objectSpread(_objectSpread({}, requestParam), params), {}, {
|
|
188
|
+
params: data
|
|
189
|
+
});
|
|
190
|
+
} else {
|
|
191
|
+
requestParam = _objectSpread(_objectSpread(_objectSpread({}, requestParam), params), {}, {
|
|
192
|
+
data: data
|
|
193
|
+
});
|
|
346
194
|
}
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
return null;
|
|
195
|
+
}
|
|
196
|
+
if (encryptFields) {
|
|
197
|
+
requestEncrypt = encryptFields;
|
|
351
198
|
}
|
|
352
199
|
}
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
showModel = _this$props3.showModel,
|
|
367
|
-
_this$props3$drawerPr = _this$props3.drawerProps,
|
|
368
|
-
drawerProps = _this$props3$drawerPr === void 0 ? {} : _this$props3$drawerPr,
|
|
369
|
-
_this$props3$modalPro = _this$props3.modalProps,
|
|
370
|
-
modalProps = _this$props3$modalPro === void 0 ? {} : _this$props3$modalPro,
|
|
371
|
-
_this$props3$loading = _this$props3.loading,
|
|
372
|
-
loading = _this$props3$loading === void 0 ? false : _this$props3$loading,
|
|
373
|
-
_this$props3$changeVa = _this$props3.changeValid,
|
|
374
|
-
changeValid = _this$props3$changeVa === void 0 ? true : _this$props3$changeVa;
|
|
375
|
-
var formVisible = this.state.formVisible;
|
|
376
|
-
var layout = {
|
|
377
|
-
labelCol: {
|
|
378
|
-
span: 4
|
|
379
|
-
},
|
|
380
|
-
wrapperCol: {
|
|
381
|
-
span: 20
|
|
200
|
+
request(requestUrl, _objectSpread(_objectSpread({
|
|
201
|
+
autoPrefix: true
|
|
202
|
+
}, requestParam), {}, {
|
|
203
|
+
encryptFields: requestEncrypt
|
|
204
|
+
})).then(function (res) {
|
|
205
|
+
const {
|
|
206
|
+
code
|
|
207
|
+
} = res;
|
|
208
|
+
if (msg) {
|
|
209
|
+
if (code === 200) {
|
|
210
|
+
_message.success("提交成功");
|
|
211
|
+
} else {
|
|
212
|
+
_message.error("提交失败");
|
|
382
213
|
}
|
|
383
|
-
};
|
|
384
|
-
|
|
385
|
-
if (showModel) {
|
|
386
|
-
var newModalProps = omit(modalProps, ["visible"]);
|
|
387
|
-
newModalProps = _objectSpread({}, newModalProps);
|
|
388
|
-
var newDrawerProps = omit(drawerProps, ["visible"]);
|
|
389
|
-
var defaultprops = {
|
|
390
|
-
maskClosable: !this.state.isChange,
|
|
391
|
-
formExpand: {
|
|
392
|
-
expand: true,
|
|
393
|
-
valid: changeValid,
|
|
394
|
-
change: this.state.isChange
|
|
395
|
-
},
|
|
396
|
-
type: showModel
|
|
397
|
-
};
|
|
398
|
-
|
|
399
|
-
var modalprops = _objectSpread({}, defaultprops);
|
|
400
|
-
|
|
401
|
-
modalprops = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, defaultprops), newModalProps), newDrawerProps), {}, {
|
|
402
|
-
onCancel: this.hide.bind(this) // onClose: this.hide.bind(this),
|
|
403
|
-
|
|
404
|
-
});
|
|
405
|
-
return /*#__PURE__*/React.createElement(Modal, _extends({
|
|
406
|
-
visible: formVisible
|
|
407
|
-
}, modalprops), loading ? /*#__PURE__*/React.createElement(Spin, {
|
|
408
|
-
spinning: loading
|
|
409
|
-
}, /*#__PURE__*/React.createElement(_Form, _extends({
|
|
410
|
-
ref: this.formRef,
|
|
411
|
-
validateTrigger: ["onBlur", "onChange"],
|
|
412
|
-
draggable: true
|
|
413
|
-
}, layout, props, {
|
|
414
|
-
onValuesChange: this.onValuesChange.bind(this),
|
|
415
|
-
preserve: false
|
|
416
|
-
}))) : /*#__PURE__*/React.createElement(_Form, _extends({
|
|
417
|
-
ref: this.formRef,
|
|
418
|
-
validateTrigger: ["onBlur", "onChange"]
|
|
419
|
-
}, layout, props, {
|
|
420
|
-
onValuesChange: this.onValuesChange.bind(this),
|
|
421
|
-
preserve: false
|
|
422
|
-
})));
|
|
423
|
-
} else {
|
|
424
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, loading ? /*#__PURE__*/React.createElement(Spin, {
|
|
425
|
-
spinning: loading
|
|
426
|
-
}, /*#__PURE__*/React.createElement(_Form, _extends({
|
|
427
|
-
ref: this.formRef,
|
|
428
|
-
validateTrigger: ["onBlur", "onChange"]
|
|
429
|
-
}, layout, props, {
|
|
430
|
-
onValuesChange: this.onValuesChange.bind(this)
|
|
431
|
-
}))) : /*#__PURE__*/React.createElement(_Form, _extends({
|
|
432
|
-
ref: this.formRef,
|
|
433
|
-
validateTrigger: ["onBlur", "onChange"]
|
|
434
|
-
}, layout, props, {
|
|
435
|
-
onValuesChange: this.onValuesChange.bind(this)
|
|
436
|
-
})));
|
|
437
214
|
}
|
|
215
|
+
callback && callback(res);
|
|
216
|
+
}).catch(function (error) {
|
|
217
|
+
console.log("error", error);
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
validateFields(name) {
|
|
221
|
+
return this.formRef.current.validateFields(name);
|
|
222
|
+
}
|
|
223
|
+
hide(e) {
|
|
224
|
+
const {
|
|
225
|
+
showModel,
|
|
226
|
+
modalProps = {},
|
|
227
|
+
drawerProps = {}
|
|
228
|
+
} = this.props;
|
|
229
|
+
let _this = this;
|
|
230
|
+
const {
|
|
231
|
+
onCancel
|
|
232
|
+
} = modalProps;
|
|
233
|
+
const {
|
|
234
|
+
onClose
|
|
235
|
+
} = drawerProps;
|
|
236
|
+
if (showModel == "drawer" && onClose) {
|
|
237
|
+
onClose(e);
|
|
238
|
+
} else if (showModel == "modal" && onCancel) {
|
|
239
|
+
onCancel(e);
|
|
240
|
+
} else {
|
|
241
|
+
_this.hideForm();
|
|
438
242
|
}
|
|
439
|
-
}
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
243
|
+
}
|
|
244
|
+
hideForm() {
|
|
245
|
+
let resetValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
246
|
+
this.setState({
|
|
247
|
+
formVisible: false,
|
|
248
|
+
isChange: false
|
|
249
|
+
}, () => {
|
|
250
|
+
if (resetValue) {
|
|
251
|
+
var _this$formRef$current14;
|
|
252
|
+
(_this$formRef$current14 = this.formRef.current) === null || _this$formRef$current14 === void 0 || _this$formRef$current14.resetFields();
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
showForm(value) {
|
|
257
|
+
let option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
258
|
+
this.setState({
|
|
259
|
+
formVisible: true,
|
|
260
|
+
isChange: false
|
|
261
|
+
}, () => {
|
|
262
|
+
var _this$formRef$current15;
|
|
263
|
+
(_this$formRef$current15 = this.formRef.current) === null || _this$formRef$current15 === void 0 || _this$formRef$current15.setFieldsValue(value);
|
|
264
|
+
const {
|
|
265
|
+
afterRender
|
|
266
|
+
} = option;
|
|
267
|
+
utils.callback(afterRender, this);
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
cloneElement(item) {
|
|
271
|
+
let index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
272
|
+
let _this = this;
|
|
273
|
+
if (typeof item == "string") return item;
|
|
274
|
+
let props = {};
|
|
275
|
+
props.key = index;
|
|
276
|
+
try {
|
|
277
|
+
if (item.props && item.props.children) {
|
|
278
|
+
if (Array.isArray(item.props.children)) {
|
|
279
|
+
props.children = React.Children.map(item.props.children, function (child, index) {
|
|
280
|
+
return _this.cloneElement(child, index);
|
|
281
|
+
});
|
|
282
|
+
} else {
|
|
283
|
+
props.children = this.cloneElement(item.props.children, 0);
|
|
479
284
|
}
|
|
480
285
|
}
|
|
481
|
-
|
|
286
|
+
return /*#__PURE__*/React.cloneElement(item, props);
|
|
287
|
+
} catch (e) {
|
|
482
288
|
return null;
|
|
483
289
|
}
|
|
484
|
-
}
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
290
|
+
}
|
|
291
|
+
onValuesChange(val, allVal) {
|
|
292
|
+
const {
|
|
293
|
+
onValuesChange
|
|
294
|
+
} = this.props;
|
|
295
|
+
this.setState({
|
|
296
|
+
isChange: true
|
|
297
|
+
});
|
|
298
|
+
onValuesChange && onValuesChange(val, allVal);
|
|
299
|
+
}
|
|
300
|
+
renderPanel(newChildren, props) {
|
|
301
|
+
const {
|
|
302
|
+
showModel,
|
|
303
|
+
drawerProps = {},
|
|
304
|
+
modalProps = {},
|
|
305
|
+
loading = false,
|
|
306
|
+
changeValid = true
|
|
307
|
+
} = this.props;
|
|
308
|
+
const {
|
|
309
|
+
formVisible
|
|
310
|
+
} = this.state;
|
|
311
|
+
const layout = {
|
|
312
|
+
labelCol: {
|
|
313
|
+
span: 4
|
|
314
|
+
},
|
|
315
|
+
wrapperCol: {
|
|
316
|
+
span: 20
|
|
317
|
+
}
|
|
318
|
+
};
|
|
319
|
+
if (showModel) {
|
|
320
|
+
let newModalProps = omit(modalProps, ["visible"]);
|
|
321
|
+
newModalProps = _objectSpread({}, newModalProps);
|
|
322
|
+
let newDrawerProps = omit(drawerProps, ["visible"]);
|
|
323
|
+
let defaultprops = {
|
|
324
|
+
maskClosable: !this.state.isChange,
|
|
325
|
+
formExpand: {
|
|
326
|
+
expand: true,
|
|
327
|
+
valid: changeValid,
|
|
328
|
+
change: this.state.isChange
|
|
329
|
+
},
|
|
330
|
+
type: showModel
|
|
331
|
+
};
|
|
332
|
+
let modalprops = _objectSpread({}, defaultprops);
|
|
333
|
+
modalprops = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, defaultprops), newModalProps), newDrawerProps), {}, {
|
|
334
|
+
onCancel: this.hide.bind(this)
|
|
335
|
+
// onClose: this.hide.bind(this),
|
|
336
|
+
});
|
|
337
|
+
return /*#__PURE__*/React.createElement(Modal, _extends({
|
|
338
|
+
visible: formVisible
|
|
339
|
+
}, modalprops), loading ? /*#__PURE__*/React.createElement(Spin, {
|
|
340
|
+
spinning: loading
|
|
341
|
+
}, /*#__PURE__*/React.createElement(_Form, _extends({
|
|
342
|
+
ref: this.formRef,
|
|
343
|
+
validateTrigger: ["onBlur", "onChange"],
|
|
344
|
+
draggable: true
|
|
345
|
+
}, layout, props, {
|
|
346
|
+
onValuesChange: this.onValuesChange.bind(this),
|
|
347
|
+
preserve: false
|
|
348
|
+
}))) : /*#__PURE__*/React.createElement(_Form, _extends({
|
|
349
|
+
ref: this.formRef,
|
|
350
|
+
validateTrigger: ["onBlur", "onChange"]
|
|
351
|
+
}, layout, props, {
|
|
352
|
+
onValuesChange: this.onValuesChange.bind(this),
|
|
353
|
+
preserve: false
|
|
354
|
+
})));
|
|
355
|
+
} else {
|
|
356
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, loading ? /*#__PURE__*/React.createElement(Spin, {
|
|
357
|
+
spinning: loading
|
|
358
|
+
}, /*#__PURE__*/React.createElement(_Form, _extends({
|
|
359
|
+
ref: this.formRef,
|
|
360
|
+
validateTrigger: ["onBlur", "onChange"]
|
|
361
|
+
}, layout, props, {
|
|
362
|
+
onValuesChange: this.onValuesChange.bind(this)
|
|
363
|
+
}))) : /*#__PURE__*/React.createElement(_Form, _extends({
|
|
364
|
+
ref: this.formRef,
|
|
365
|
+
validateTrigger: ["onBlur", "onChange"]
|
|
366
|
+
}, layout, props, {
|
|
367
|
+
onValuesChange: this.onValuesChange.bind(this)
|
|
368
|
+
})));
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
render() {
|
|
372
|
+
const props = omit(this.props, ["form", "showModel", "modalProps", "drawerProps", "url", "encryptFields", "changeValid"]);
|
|
373
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, this.renderPanel(props.children, props));
|
|
374
|
+
}
|
|
375
|
+
}
|
|
489
376
|
export default NscForm;
|
|
490
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvZm9ybS9Gb3JtLnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJNb2RhbCIsInJlcXVlc3QiLCJvbWl0IiwiU3BpbiIsInV0aWxzIiwiTnNjRm9ybSIsInByb3BzIiwiY3JlYXRlUmVmIiwiZm9ybVZpc2libGUiLCJmb3JtTW9kYWxQcm9wcyIsImZvcm1EcmF3ZXJQcm9wcyIsImlzQ2hhbmdlIiwiZXhwYW5kIiwic2NvcGUiLCJwYXJhbXMiLCJiZWZvcmVSZW5kZXIiLCJjYWxsYmFja0JlZm9yZUNsb3NlIiwiY2FsbGJhY2siLCJhZnRlclJlbmRlciIsIm5hbWUiLCJmb3JtUmVmIiwiY3VycmVudCIsImdldEZpZWxkRXJyb3IiLCJnZXRGaWVsZEluc3RhbmNlIiwiZ2V0RmllbGRzRXJyb3IiLCJnZXRGaWVsZHNWYWx1ZSIsImdldEZpZWxkVmFsdWUiLCJpc0ZpZWxkc1RvdWNoZWQiLCJpc0ZpZWxkVG91Y2hlZCIsImlzRmllbGRWYWxpZGF0aW5nIiwicmVzZXRGaWVsZHMiLCJvcHRpb25zIiwic2Nyb2xsVG9GaWVsZCIsImZpbGRzIiwic2V0RmllbGRzIiwidmFsdWVzIiwic2V0RmllbGRzVmFsdWUiLCJzdWJtaXQiLCJ1cmwiLCJtc2ciLCJwcm9wc1VybCIsImVuY3J5cHRGaWVsZHMiLCJlbmNyeXB0UHJvcHBzIiwiRXJyb3IiLCJtZXRob2QiLCJyZXF1ZXN0VXJsIiwicmVxdWVzdERhdGEiLCJyZXF1ZXN0RW5jcnlwdCIsInJlcXVlc3RQYXJhbSIsImRhdGEiLCJ0b0xvd2VyQ2FzZSIsImF1dG9QcmVmaXgiLCJ0aGVuIiwicmVzIiwiY29kZSIsInN1Y2Nlc3MiLCJlcnJvciIsImNhdGNoIiwiY29uc29sZSIsImxvZyIsInZhbGlkYXRlRmllbGRzIiwiZSIsInNob3dNb2RlbCIsIm1vZGFsUHJvcHMiLCJkcmF3ZXJQcm9wcyIsIl90aGlzIiwib25DYW5jZWwiLCJvbkNsb3NlIiwiaGlkZUZvcm0iLCJyZXNldFZhbHVlIiwic2V0U3RhdGUiLCJ2YWx1ZSIsIm9wdGlvbiIsIml0ZW0iLCJpbmRleCIsImtleSIsImNoaWxkcmVuIiwiQXJyYXkiLCJpc0FycmF5IiwiQ2hpbGRyZW4iLCJtYXAiLCJjaGlsZCIsImNsb25lRWxlbWVudCIsInZhbCIsImFsbFZhbCIsIm9uVmFsdWVzQ2hhbmdlIiwibmV3Q2hpbGRyZW4iLCJsb2FkaW5nIiwiY2hhbmdlVmFsaWQiLCJzdGF0ZSIsImxheW91dCIsImxhYmVsQ29sIiwic3BhbiIsIndyYXBwZXJDb2wiLCJuZXdNb2RhbFByb3BzIiwibmV3RHJhd2VyUHJvcHMiLCJkZWZhdWx0cHJvcHMiLCJtYXNrQ2xvc2FibGUiLCJmb3JtRXhwYW5kIiwidmFsaWQiLCJjaGFuZ2UiLCJ0eXBlIiwibW9kYWxwcm9wcyIsImhpZGUiLCJiaW5kIiwicmVuZGVyUGFuZWwiLCJuZXh0UHJvcHMiLCJwcmV2U3RhdGUiLCJPYmplY3QiLCJpcyIsIm5ld1N0YXRlIiwidmlzaWJsZSIsInVuZGVmaW5lZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPQSxLQUFQLElBQWdCQyxhQUFoQixRQUFxQyxPQUFyQztBQUVBLE9BQU9DLEtBQVAsTUFBa0IsVUFBbEI7QUFFQSxTQUFTQyxPQUFULFFBQXdCLHVCQUF4QjtBQUNBLE9BQU9DLElBQVAsTUFBaUIsU0FBakI7QUFFQSxPQUFPQyxJQUFQLE1BQWlCLFNBQWpCO0FBQ0EsU0FBU0MsS0FBVCxRQUFzQix1QkFBdEI7O0lBZU1DLE87Ozs7O0FBdUJKLG1CQUFZQyxLQUFaLEVBQW1CO0FBQUE7O0FBQUE7O0FBQ2pCLCtCQUFNQSxLQUFOOztBQURpQiw0RUF0QlRSLEtBQUssQ0FBQ1MsU0FBTixFQXNCUzs7QUFBQSw2REFyQlg7QUFDTkMsTUFBQUEsV0FBVyxFQUFFLEtBRFA7QUFFTkMsTUFB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QUEsZUFBZSxFQUFFcUQ7QUFESixXQUFmOztBQUdBLGNBQUksQ0FBQUEsVUFBVSxTQUFWLElBQUFBLFVBQVUsV0FBVixZQUFBQSxVQUFVLENBQUVnRCxPQUFaLE1BQXdCLElBQXhCLElBQWdDLENBQUFoRCxVQUFVLFNBQVYsSUFBQUEsVUFBVSxXQUFWLFlBQUFBLFVBQVUsQ0FBRWdELE9BQVosTUFBd0JDLFNBQTVELEVBQXVFO0FBQ3JFRixZQUFBQSxRQUFRLENBQUN0RyxXQUFULEdBQXVCdUQsVUFBdkIsYUFBdUJBLFVBQXZCLHVCQUF1QkEsVUFBVSxDQUFFZ0QsT0FBbkM7QUFDRDs7QUFDRCxpQkFBT0QsUUFBUDtBQUNEO0FBQ0YsT0FYRCxNQVdPLElBQUloRCxTQUFTLElBQUksUUFBakIsRUFBMkI7QUFDaEM7QUFDQSxZQUFJLENBQUM4QyxNQUFNLENBQUNDLEVBQVAsQ0FBVW5HLGVBQVYsRUFBMkJzRCxXQUEzQixDQUFMLEVBQThDO0FBQzVDLGNBQUk4QyxTQUFRLEdBQUc7QUFDYnBHLFlBQUFBLGVBQWUsRUFBRXNEO0FBREosV0FBZjs7QUFHQSxjQUNFLENBQUFBLFdBQVcsU0FBWCxJQUFBQSxXQUFXLFdBQVgsWUFBQUEsV0FBVyxDQUFFK0MsT0FBYixNQUF5QixJQUF6QixJQUNBLENBQUEvQyxXQUFXLFNBQVgsSUFBQUEsV0FBVyxXQUFYLFlBQUFBLFdBQVcsQ0FBRStDLE9BQWIsTUFBeUJDLFNBRjNCLEVBR0U7QUFDQUYsWUFBQUEsU0FBUSxDQUFDdEcsV0FBVCxHQUF1QndELFdBQXZCLGFBQXVCQSxXQUF2Qix1QkFBdUJBLFdBQVcsQ0FBRStDLE9BQXBDO0FBQ0Q7O0FBQ0QsaUJBQU9ELFNBQVA7QUFDRDtBQUNGOztBQUNELGFBQU8sSUFBUDtBQUNEOzs7O0VBekRtQi9HLGE7O0FBNFZ0QixlQUFlTSxPQUFmIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQERlc2NyaXB0dGlvbjrooajljZXnu4Tku7ZcclxuICogQHZlcnNpb246XHJcbiAqIEBBdXRob3I6IHJ4emh1XHJcbiAqIEBEYXRlOiAyMDIxLTA0LTA5IDA5OjE4OjM0XHJcbiAqIEBMYXN0RWRpdG9yczogcnh6aHVcclxuICogQExhc3RFZGl0VGltZTogMjAyMS0wNC0yMyAxNToyMzo1NFxyXG4gKi9cclxuaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRm9ybSwgRm9ybVByb3BzLCBEcmF3ZXIsIERyYXdlclByb3BzLCBtZXNzYWdlIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi9tb2RhbFwiO1xyXG5pbXBvcnQgeyBGb3JtSW5zdGFuY2UgfSBmcm9tIFwiYW50ZC9saWIvZm9ybVwiO1xyXG5pbXBvcnQgeyByZXF1ZXN0IH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQgb21pdCBmcm9tIFwib21pdC5qc1wiO1xyXG5pbXBvcnQgeyBOc2NNb2RhbFBvcnBzIH0gZnJvbSBcIi4uL21vZGFsXCI7XHJcbmltcG9ydCBTcGluIGZyb20gXCIuLi9zcGluXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtUHJvcHMgZXh0ZW5kcyBGb3JtUHJvcHMge1xyXG4gIHNob3dNb2RlbD86IFwibW9kYWxcIiB8IFwiZHJhd2VyXCIgfCBcImF1dG9cIjtcclxuICBtb2RhbFByb3BzPzogTnNjTW9kYWxQb3JwcztcclxuICBkcmF3ZXJQcm9wcz86IERyYXdlclByb3BzICYge1xyXG4gICAgb25Paz86IGFueTtcclxuICAgIG9rQnV0dG9uUHJvcHM/OiBPYmplY3Q7XHJcbiAgICBmb3JtRXhwYW5kPzogT2JqZWN0O1xyXG4gIH07XHJcbiAgdXJsPzogc3RyaW5nO1xyXG4gIGVuY3J5cHRGaWVsZHM/OiBBcnJheTxTdHJpbmc+O1xyXG4gIGNoYW5nZVZhbGlkPzogYm9vbGVhbjsgLy/mlbDmja7kv67mlLnlhbPpl63moKHpqoxcclxuICBsb2FkaW5nPzogYm9vbGVhbjsgLy/ooajljZXliqDovb3nirbmgIFcclxufVxyXG5cclxuY2xhc3MgTnNjRm9ybSBleHRlbmRzIFB1cmVDb21wb25lbnQ8SUZvcm1Qcm9wcz4ge1xyXG4gIGZvcm1SZWYgPSBSZWFjdC5jcmVhdGVSZWY8Rm9ybUluc3RhbmNlPigpO1xyXG4gIHN0YXRlID0ge1xyXG4gICAgZm9ybVZpc2libGU6IGZhbHNlLFxyXG4gICAgZm9ybU1vZGFsUHJvcHM6IHt9LFxyXG4gICAgZm9ybURyYXdlclByb3BzOiB7fSxcclxuICAgIGlzQ2hhbmdlOiBmYWxzZSxcclxuICAgIGV4cGFuZDogZmFsc2UsXHJcbiAgfTtcclxuICBvcHRpb246IGFueSA9IHtcclxuICAgIC8v5Zue6LCD5L2c55So5Z+fXHJcbiAgICBzY29wZTogdGhpcyxcclxuICAgIC8vb3BlbuS8oOmAkui/h+adpeeahOmhtemdouWPguaVsFxyXG4gICAgcGFyYW1zOiB7fSxcclxuICAgIC8v5pi+56S65LmL5YmN5Zue6LCDXHJcbiAgICBiZWZvcmVSZW5kZXI6IG51bGwsXHJcbiAgICAvL+WFs+mXreS5i+WJjeWbnuiwg++8jOWmguaenHJldHVybiBmYWxzZe+8jOS4lOeql+WPo+S4jeWFs+mXrVxyXG4gICAgY2FsbGJhY2tCZWZvcmVDbG9zZTogbnVsbCxcclxuICAgIC8v5YWz6Zet5ZCO5Zue6LCD77yM5byC5q2l5pON5L2cXHJcbiAgICBjYWxsYmFjazogbnVsbCxcclxuICAgIC8v5pi+56S65LmL5ZCO5Zue6LCDXHJcbiAgICBhZnRlclJlbmRlcjogbnVsbCxcclxuICB9O1xyXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKG5leHRQcm9wcywgcHJldlN0YXRlKSB7XHJcbiAgICBjb25zdCB7IG1vZGFsUHJvcHMsIGRyYXdlclByb3BzLCBzaG93TW9kZWwgfSA9IG5leHRQcm9wcztcclxuICAgIGNvbnN0IHsgZm9ybU1vZGFsUHJvcHMsIGZvcm1EcmF3ZXJQcm9wcyB9ID0gcHJldlN0YXRlO1xyXG4gICAgaWYgKHNob3dNb2RlbCA9PSBcIm1vZGFsXCIpIHtcclxuICAgICAgLy8gSlNPTi5zdHJpbmdpZnkoZm9ybU1vZGFsUHJvcHMpICE9PSBKU09OLnN0cmluZ2lmeShtb2RhbFByb3BzKVxyXG4gICAgICBpZiAoIU9iamVjdC5pcyhmb3JtTW9kYWxQcm9wcywgbW9kYWxQcm9wcykpIHtcclxuICAgICAgICBsZXQgbmV3U3RhdGUgPSB7XHJcbiAgICAgICAgICBmb3JtRHJhd2VyUHJvcHM6IG1vZGFsUHJvcHMsXHJcbiAgICAgICAgfSBhcyBhbnk7XHJcbiAgICAgICAgaWYgKG1vZGFsUHJvcHM/LnZpc2libGUgIT09IG51bGwgJiYgbW9kYWxQcm9wcz8udmlzaWJsZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBuZXdTdGF0ZS5mb3JtVmlzaWJsZSA9IG1vZGFsUHJvcHM/LnZpc2libGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXdTdGF0ZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChzaG93TW9kZWwgPT0gXCJkcmF3ZXJcIikge1xyXG4gICAgICAvLyBKU09OLnN0cmluZ2lmeShmb3JtRHJhd2VyUHJvcHMpICE9PSBKU09OLnN0cmluZ2lmeShkcmF3ZXJQcm9wcylcclxuICAgICAgaWYgKCFPYmplY3QuaXMoZm9ybURyYXdlclByb3BzLCBkcmF3ZXJQcm9wcykpIHtcclxuICAgICAgICBsZXQgbmV3U3RhdGUgPSB7XHJcbiAgICAgICAgICBmb3JtRHJhd2VyUHJvcHM6IGRyYXdlclByb3BzLFxyXG4gICAgICAgIH0gYXMgYW55O1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGRyYXdlclByb3BzPy52aXNpYmxlICE9PSBudWxsICYmXHJcbiAgICAgICAgICBkcmF3ZXJQcm9wcz8udmlzaWJsZSAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBuZXdTdGF0ZS5mb3JtVmlzaWJsZSA9IGRyYXdlclByb3BzPy52aXNpYmxlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3U3RhdGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy/ojrflj5blr7nlupTlrZfmrrXlkI3nmoTplJnor6/kv6Hmga9cclxuICBnZXRGaWVsZEVycm9yKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRFcnJvcihuYW1lKTtcclxuICB9XHJcblxyXG4gIC8v6I635Y+W5a+55bqU5a2X5q615a6e5L6LXHJcbiAgZ2V0RmllbGRJbnN0YW5jZShuYW1lKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkSW5zdGFuY2UobmFtZSk7XHJcbiAgfVxyXG5cclxuICAvL+iOt+WPluS4gOe7hOWtl+auteWQjeWvueW6lOeahOmUmeivr+S/oeaBr++8jOi/lOWbnuS4uuaVsOe7hOW9ouW8j1xyXG4gIGdldEZpZWxkc0Vycm9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZHNFcnJvcigpO1xyXG4gIH1cclxuXHJcbiAgLy/ojrflj5bkuIDnu4TlrZfmrrXlkI3lr7nlupTnmoTlgLzvvIzkvJrmjInnhaflr7nlupTnu5PmnoTov5Tlm55cclxuICBnZXRGaWVsZHNWYWx1ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIC8v6I635Y+W5a+55bqU5a2X5q615ZCN55qE5YC8XHJcbiAgZ2V0RmllbGRWYWx1ZShuYW1lKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkVmFsdWUobmFtZSk7XHJcbiAgfVxyXG5cclxuICAvL+ajgOafpeS4gOe7hOWtl+auteaYr+WQpuiiq+eUqOaIt+aTjeS9nOi/h1xyXG4gIGlzRmllbGRzVG91Y2hlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudD8uaXNGaWVsZHNUb3VjaGVkKCk7XHJcbiAgfVxyXG5cclxuICAvL+ajgOafpeWvueW6lOWtl+auteaYr+WQpuiiq+eUqOaIt+aTjeS9nOi/h1xyXG4gIGlzRmllbGRUb3VjaGVkKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudD8uaXNGaWVsZFRvdWNoZWQobmFtZSk7XHJcbiAgfVxyXG5cclxuICAvL+ajgOafpeS4gOe7hOWtl+auteaYr+WQpuato+WcqOagoemqjFxyXG4gIGlzRmllbGRWYWxpZGF0aW5nKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudD8uaXNGaWVsZFZhbGlkYXRpbmcobmFtZSk7XHJcbiAgfVxyXG5cclxuICAvL+mHjee9ruS4gOe7hOWtl+auteWIsFxyXG4gIHJlc2V0RmllbGRzKCkge1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgfVxyXG5cclxuICBzY3JvbGxUb0ZpZWxkKG5hbWUsIG9wdGlvbnMpIHtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zY3JvbGxUb0ZpZWxkKG5hbWUsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgc2V0RmllbGRzKGZpbGRzKSB7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzKGZpbGRzKTtcclxuICB9XHJcblxyXG4gIHNldEZpZWxkc1ZhbHVlKHZhbHVlcykge1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNldEZpZWxkc1ZhbHVlKHZhbHVlcyk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXQoKSB7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc3VibWl0KCk7XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdChcclxuICAgIHVybD86IHN0cmluZyxcclxuICAgIG9wdGlvbnM/OiBhbnksXHJcbiAgICBjYWxsYmFjaz86IChyZXM/OiBhbnkpID0+IHZvaWQsXHJcbiAgICBtc2c/OiBib29sZWFuXHJcbiAgKSB7XHJcbiAgICBjb25zdCB7IHVybDogcHJvcHNVcmwsIGVuY3J5cHRGaWVsZHM6IGVuY3J5cHRQcm9wcHMgPSBbXSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghdXJsICYmICFwcm9wc1VybCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCLmsqHmnInkuIrkvKDnmoR1cmwhXCIpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBtZXRob2QgPSBcInBvc3RcIiB9ID0gb3B0aW9ucztcclxuICAgIGxldCByZXF1ZXN0VXJsID0gdXJsID8gdXJsIDogcHJvcHNVcmw7XHJcbiAgICBsZXQgcmVxdWVzdERhdGEgPSB0aGlzLmZvcm1SZWYuY3VycmVudC5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gICAgbGV0IHJlcXVlc3RFbmNyeXB0ID0gZW5jcnlwdFByb3BwcztcclxuICAgIGxldCByZXF1ZXN0UGFyYW0gPSB7IG1ldGhvZDogbWV0aG9kLCBkYXRhOiByZXF1ZXN0RGF0YSB9IGFzIHsgZGF0YTogYW55IH07XHJcbiAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICBjb25zdCB7IGRhdGEsIGVuY3J5cHRGaWVsZHMsIC4uLnBhcmFtcyB9ID0gb3B0aW9ucztcclxuICAgICAgcmVxdWVzdFBhcmFtID0geyAuLi5yZXF1ZXN0UGFyYW0sIC4uLnBhcmFtcyB9O1xyXG4gICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgIGRlbGV0ZSByZXF1ZXN0UGFyYW0uZGF0YTtcclxuICAgICAgICBpZiAobWV0aG9kLnRvTG93ZXJDYXNlKCkgPT0gXCJnZXRcIikge1xyXG4gICAgICAgICAgcmVxdWVzdFBhcmFtID0geyAuLi5yZXF1ZXN0UGFyYW0sIC4uLnBhcmFtcywgcGFyYW1zOiBkYXRhIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlcXVlc3RQYXJhbSA9IHsgLi4ucmVxdWVzdFBhcmFtLCAuLi5wYXJhbXMsIGRhdGE6IGRhdGEgfTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGVuY3J5cHRGaWVsZHMpIHtcclxuICAgICAgICByZXF1ZXN0RW5jcnlwdCA9IGVuY3J5cHRGaWVsZHM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXF1ZXN0KHJlcXVlc3RVcmwsIHtcclxuICAgICAgYXV0b1ByZWZpeDogdHJ1ZSxcclxuICAgICAgLi4ucmVxdWVzdFBhcmFtLFxyXG4gICAgICBlbmNyeXB0RmllbGRzOiByZXF1ZXN0RW5jcnlwdCxcclxuICAgIH0pXHJcbiAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXM6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHsgY29kZSB9ID0gcmVzO1xyXG4gICAgICAgIGlmIChtc2cpIHtcclxuICAgICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKFwi5o+Q5Lqk5oiQ5YqfXCIpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbWVzc2FnZS5lcnJvcihcIuaPkOS6pOWksei0pVwiKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2socmVzKTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVGaWVsZHMobmFtZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVJlZi5jdXJyZW50LnZhbGlkYXRlRmllbGRzKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgaGlkZShlKSB7XHJcbiAgICBjb25zdCB7IHNob3dNb2RlbCwgbW9kYWxQcm9wcyA9IHt9LCBkcmF3ZXJQcm9wcyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGNvbnN0IHsgb25DYW5jZWwgfSA9IG1vZGFsUHJvcHM7XHJcbiAgICBjb25zdCB7IG9uQ2xvc2UgfSA9IGRyYXdlclByb3BzO1xyXG4gICAgaWYgKHNob3dNb2RlbCA9PSBcImRyYXdlclwiICYmIG9uQ2xvc2UpIHtcclxuICAgICAgb25DbG9zZShlKTtcclxuICAgIH0gZWxzZSBpZiAoc2hvd01vZGVsID09IFwibW9kYWxcIiAmJiBvbkNhbmNlbCkge1xyXG4gICAgICBvbkNhbmNlbChlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIF90aGlzLmhpZGVGb3JtKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoaWRlRm9ybShyZXNldFZhbHVlID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAge1xyXG4gICAgICAgIGZvcm1WaXNpYmxlOiBmYWxzZSxcclxuICAgICAgICBpc0NoYW5nZTogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICBpZiAocmVzZXRWYWx1ZSkge1xyXG4gICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc2hvd0Zvcm0odmFsdWU/OiBhbnksIG9wdGlvbjogYW55ID0ge30pIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgIHtcclxuICAgICAgICBmb3JtVmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICBpc0NoYW5nZTogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUodmFsdWUpO1xyXG4gICAgICAgIGNvbnN0IHsgYWZ0ZXJSZW5kZXIgfSA9IG9wdGlvbjtcclxuICAgICAgICB1dGlscy5jYWxsYmFjayhhZnRlclJlbmRlciwgdGhpcyk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjbG9uZUVsZW1lbnQoaXRlbSwgaW5kZXggPSAwKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgaWYgKHR5cGVvZiBpdGVtID09IFwic3RyaW5nXCIpIHJldHVybiBpdGVtO1xyXG4gICAgbGV0IHByb3BzID0ge30gYXMgeyBrZXk6IG51bWJlcjsgY2hpbGRyZW46IGFueSB9O1xyXG4gICAgcHJvcHMua2V5ID0gaW5kZXg7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoaXRlbS5wcm9wcyAmJiBpdGVtLnByb3BzLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbS5wcm9wcy5jaGlsZHJlbikpIHtcclxuICAgICAgICAgIHByb3BzLmNoaWxkcmVuID0gUmVhY3QuQ2hpbGRyZW4ubWFwKFxyXG4gICAgICAgICAgICBpdGVtLnByb3BzLmNoaWxkcmVuLFxyXG4gICAgICAgICAgICBmdW5jdGlvbiAoY2hpbGQsIGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmNsb25lRWxlbWVudChjaGlsZCwgaW5kZXgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBwcm9wcy5jaGlsZHJlbiA9IHRoaXMuY2xvbmVFbGVtZW50KGl0ZW0ucHJvcHMuY2hpbGRyZW4sIDApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGl0ZW0sIHByb3BzKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uVmFsdWVzQ2hhbmdlKHZhbCwgYWxsVmFsKSB7XHJcbiAgICBjb25zdCB7IG9uVmFsdWVzQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGlzQ2hhbmdlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBvblZhbHVlc0NoYW5nZSAmJiBvblZhbHVlc0NoYW5nZSh2YWwsIGFsbFZhbCk7XHJcbiAgfVxyXG4gIHJlbmRlclBhbmVsKG5ld0NoaWxkcmVuLCBwcm9wcykge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzaG93TW9kZWwsXHJcbiAgICAgIGRyYXdlclByb3BzID0ge30sXHJcbiAgICAgIG1vZGFsUHJvcHMgPSB7fSxcclxuICAgICAgbG9hZGluZyA9IGZhbHNlLFxyXG4gICAgICBjaGFuZ2VWYWxpZCA9IHRydWUsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgZm9ybVZpc2libGUgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBsYXlvdXQgPSB7XHJcbiAgICAgIGxhYmVsQ29sOiB7IHNwYW46IDQgfSxcclxuICAgICAgd3JhcHBlckNvbDogeyBzcGFuOiAyMCB9LFxyXG4gICAgfTtcclxuICAgIGlmIChzaG93TW9kZWwpIHtcclxuICAgICAgbGV0IG5ld01vZGFsUHJvcHMgPSBvbWl0KG1vZGFsUHJvcHMsIFtcInZpc2libGVcIl0pO1xyXG4gICAgICBuZXdNb2RhbFByb3BzID0geyAuLi5uZXdNb2RhbFByb3BzIH07XHJcbiAgICAgIGxldCBuZXdEcmF3ZXJQcm9wcyA9IG9taXQoZHJhd2VyUHJvcHMsIFtcInZpc2libGVcIl0pO1xyXG4gICAgICBsZXQgZGVmYXVsdHByb3BzID0ge1xyXG4gICAgICAgIG1hc2tDbG9zYWJsZTogIXRoaXMuc3RhdGUuaXNDaGFuZ2UsXHJcbiAgICAgICAgZm9ybUV4cGFuZDoge1xyXG4gICAgICAgICAgZXhwYW5kOiB0cnVlLFxyXG4gICAgICAgICAgdmFsaWQ6IGNoYW5nZVZhbGlkLFxyXG4gICAgICAgICAgY2hhbmdlOiB0aGlzLnN0YXRlLmlzQ2hhbmdlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHlwZTogc2hvd01vZGVsLFxyXG4gICAgICB9IGFzIGFueTtcclxuICAgICAgbGV0IG1vZGFscHJvcHMgPSB7IC4uLmRlZmF1bHRwcm9wcyB9O1xyXG4gICAgICBtb2RhbHByb3BzID0ge1xyXG4gICAgICAgIC4uLmRlZmF1bHRwcm9wcyxcclxuICAgICAgICAuLi5uZXdNb2RhbFByb3BzLFxyXG4gICAgICAgIC4uLm5ld0RyYXdlclByb3BzLFxyXG4gICAgICAgIG9uQ2FuY2VsOiB0aGlzLmhpZGUuYmluZCh0aGlzKSxcclxuICAgICAgICAvLyBvbkNsb3NlOiB0aGlzLmhpZGUuYmluZCh0aGlzKSxcclxuICAgICAgfTtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8TW9kYWwgdmlzaWJsZT17Zm9ybVZpc2libGV9IHsuLi5tb2RhbHByb3BzfT5cclxuICAgICAgICAgIHtsb2FkaW5nID8gKFxyXG4gICAgICAgICAgICA8U3BpbiBzcGlubmluZz17bG9hZGluZ30+XHJcbiAgICAgICAgICAgICAgPEZvcm1cclxuICAgICAgICAgICAgICAgIHJlZj17dGhpcy5mb3JtUmVmfVxyXG4gICAgICAgICAgICAgICAgdmFsaWRhdGVUcmlnZ2VyPXtbXCJvbkJsdXJcIiwgXCJvbkNoYW5nZVwiXX1cclxuICAgICAgICAgICAgICAgIGRyYWdnYWJsZT17dHJ1ZX1cclxuICAgICAgICAgICAgICAgIHsuLi5sYXlvdXR9XHJcbiAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICAgICAgICBvblZhbHVlc0NoYW5nZT17dGhpcy5vblZhbHVlc0NoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgcHJlc2VydmU9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvU3Bpbj5cclxuICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgIDxGb3JtXHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGVUcmlnZ2VyPXtbXCJvbkJsdXJcIiwgXCJvbkNoYW5nZVwiXX1cclxuICAgICAgICAgICAgICB7Li4ubGF5b3V0fVxyXG4gICAgICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgICAgICBvblZhbHVlc0NoYW5nZT17dGhpcy5vblZhbHVlc0NoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgIHByZXNlcnZlPXtmYWxzZX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgPC9Nb2RhbD5cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPD5cclxuICAgICAgICAgIHtsb2FkaW5nID8gKFxyXG4gICAgICAgICAgICA8U3BpbiBzcGlubmluZz17bG9hZGluZ30+XHJcbiAgICAgICAgICAgICAgPEZvcm1cclxuICAgICAgICAgICAgICAgIHJlZj17dGhpcy5mb3JtUmVmfVxyXG4gICAgICAgICAgICAgICAgdmFsaWRhdGVUcmlnZ2VyPXtbXCJvbkJsdXJcIiwgXCJvbkNoYW5nZVwiXX1cclxuICAgICAgICAgICAgICAgIHsuLi5sYXlvdXR9XHJcbiAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICAgICAgICBvblZhbHVlc0NoYW5nZT17dGhpcy5vblZhbHVlc0NoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvU3Bpbj5cclxuICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgIDxGb3JtXHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGVUcmlnZ2VyPXtbXCJvbkJsdXJcIiwgXCJvbkNoYW5nZVwiXX1cclxuICAgICAgICAgICAgICB7Li4ubGF5b3V0fVxyXG4gICAgICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgICAgICBvblZhbHVlc0NoYW5nZT17dGhpcy5vblZhbHVlc0NoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8Lz5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3QgcHJvcHMgPSBvbWl0KHRoaXMucHJvcHMsIFtcclxuICAgICAgXCJmb3JtXCIsXHJcbiAgICAgIFwic2hvd01vZGVsXCIsXHJcbiAgICAgIFwibW9kYWxQcm9wc1wiLFxyXG4gICAgICBcImRyYXdlclByb3BzXCIsXHJcbiAgICAgIFwidXJsXCIsXHJcbiAgICAgIFwiZW5jcnlwdEZpZWxkc1wiLFxyXG4gICAgICBcImNoYW5nZVZhbGlkXCIsXHJcbiAgICBdKTtcclxuXHJcbiAgICByZXR1cm4gPD57dGhpcy5yZW5kZXJQYW5lbChwcm9wcy5jaGlsZHJlbiwgcHJvcHMpfTwvPjtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgTnNjRm9ybTtcclxuIl19
|
|
377
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJNb2RhbCIsInJlcXVlc3QiLCJvbWl0IiwiU3BpbiIsInV0aWxzIiwiTnNjRm9ybSIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJfZGVmaW5lUHJvcGVydHkiLCJjcmVhdGVSZWYiLCJmb3JtVmlzaWJsZSIsImZvcm1Nb2RhbFByb3BzIiwiZm9ybURyYXdlclByb3BzIiwiaXNDaGFuZ2UiLCJleHBhbmQiLCJzY29wZSIsInBhcmFtcyIsImJlZm9yZVJlbmRlciIsImNhbGxiYWNrQmVmb3JlQ2xvc2UiLCJjYWxsYmFjayIsImFmdGVyUmVuZGVyIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwibmV4dFByb3BzIiwicHJldlN0YXRlIiwibW9kYWxQcm9wcyIsImRyYXdlclByb3BzIiwic2hvd01vZGVsIiwiT2JqZWN0IiwiaXMiLCJuZXdTdGF0ZSIsInZpc2libGUiLCJ1bmRlZmluZWQiLCJnZXRGaWVsZEVycm9yIiwibmFtZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudCIsImZvcm1SZWYiLCJjdXJyZW50IiwiZ2V0RmllbGRJbnN0YW5jZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDIiLCJnZXRGaWVsZHNFcnJvciIsIl90aGlzJGZvcm1SZWYkY3VycmVudDMiLCJnZXRGaWVsZHNWYWx1ZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDQiLCJnZXRGaWVsZFZhbHVlIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NSIsImlzRmllbGRzVG91Y2hlZCIsIl90aGlzJGZvcm1SZWYkY3VycmVudDYiLCJpc0ZpZWxkVG91Y2hlZCIsIl90aGlzJGZvcm1SZWYkY3VycmVudDciLCJpc0ZpZWxkVmFsaWRhdGluZyIsIl90aGlzJGZvcm1SZWYkY3VycmVudDgiLCJyZXNldEZpZWxkcyIsIl90aGlzJGZvcm1SZWYkY3VycmVudDkiLCJzY3JvbGxUb0ZpZWxkIiwib3B0aW9ucyIsIl90aGlzJGZvcm1SZWYkY3VycmVudDEwIiwic2V0RmllbGRzIiwiZmlsZHMiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQxMSIsInNldEZpZWxkc1ZhbHVlIiwidmFsdWVzIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50MTIiLCJzdWJtaXQiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQxMyIsIm9uU3VibWl0IiwidXJsIiwibXNnIiwicHJvcHNVcmwiLCJlbmNyeXB0RmllbGRzIiwiZW5jcnlwdFByb3BwcyIsIkVycm9yIiwibWV0aG9kIiwicmVxdWVzdFVybCIsInJlcXVlc3REYXRhIiwicmVxdWVzdEVuY3J5cHQiLCJyZXF1ZXN0UGFyYW0iLCJkYXRhIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiX29iamVjdFNwcmVhZCIsInRvTG93ZXJDYXNlIiwiYXV0b1ByZWZpeCIsInRoZW4iLCJyZXMiLCJjb2RlIiwiX21lc3NhZ2UiLCJzdWNjZXNzIiwiZXJyb3IiLCJjYXRjaCIsImNvbnNvbGUiLCJsb2ciLCJ2YWxpZGF0ZUZpZWxkcyIsImhpZGUiLCJlIiwiX3RoaXMiLCJvbkNhbmNlbCIsIm9uQ2xvc2UiLCJoaWRlRm9ybSIsInJlc2V0VmFsdWUiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzZXRTdGF0ZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDE0Iiwic2hvd0Zvcm0iLCJ2YWx1ZSIsIm9wdGlvbiIsIl90aGlzJGZvcm1SZWYkY3VycmVudDE1IiwiY2xvbmVFbGVtZW50IiwiaXRlbSIsImluZGV4Iiwia2V5IiwiY2hpbGRyZW4iLCJBcnJheSIsImlzQXJyYXkiLCJDaGlsZHJlbiIsIm1hcCIsImNoaWxkIiwib25WYWx1ZXNDaGFuZ2UiLCJ2YWwiLCJhbGxWYWwiLCJyZW5kZXJQYW5lbCIsIm5ld0NoaWxkcmVuIiwibG9hZGluZyIsImNoYW5nZVZhbGlkIiwic3RhdGUiLCJsYXlvdXQiLCJsYWJlbENvbCIsInNwYW4iLCJ3cmFwcGVyQ29sIiwibmV3TW9kYWxQcm9wcyIsIm5ld0RyYXdlclByb3BzIiwiZGVmYXVsdHByb3BzIiwibWFza0Nsb3NhYmxlIiwiZm9ybUV4cGFuZCIsInZhbGlkIiwiY2hhbmdlIiwidHlwZSIsIm1vZGFscHJvcHMiLCJiaW5kIiwiY3JlYXRlRWxlbWVudCIsIl9leHRlbmRzIiwic3Bpbm5pbmciLCJfRm9ybSIsInJlZiIsInZhbGlkYXRlVHJpZ2dlciIsImRyYWdnYWJsZSIsInByZXNlcnZlIiwiRnJhZ21lbnQiLCJyZW5kZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9iYXNlL2Zvcm0vRm9ybS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQERlc2NyaXB0dGlvbjrooajljZXnu4Tku7ZcclxuICogQHZlcnNpb246XHJcbiAqIEBBdXRob3I6IHJ4emh1XHJcbiAqIEBEYXRlOiAyMDIxLTA0LTA5IDA5OjE4OjM0XHJcbiAqIEBMYXN0RWRpdG9yczogcnh6aHVcclxuICogQExhc3RFZGl0VGltZTogMjAyMS0wNC0yMyAxNToyMzo1NFxyXG4gKi9cclxuaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRm9ybSwgRm9ybVByb3BzLCBEcmF3ZXIsIERyYXdlclByb3BzLCBtZXNzYWdlIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi9tb2RhbFwiO1xyXG5pbXBvcnQgeyBGb3JtSW5zdGFuY2UgfSBmcm9tIFwiYW50ZC9saWIvZm9ybVwiO1xyXG5pbXBvcnQgeyByZXF1ZXN0IH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQgb21pdCBmcm9tIFwib21pdC5qc1wiO1xyXG5pbXBvcnQgeyBOc2NNb2RhbFBvcnBzIH0gZnJvbSBcIi4uL21vZGFsXCI7XHJcbmltcG9ydCBTcGluIGZyb20gXCIuLi9zcGluXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtUHJvcHMgZXh0ZW5kcyBGb3JtUHJvcHMge1xyXG4gIHNob3dNb2RlbD86IFwibW9kYWxcIiB8IFwiZHJhd2VyXCIgfCBcImF1dG9cIjtcclxuICBtb2RhbFByb3BzPzogTnNjTW9kYWxQb3JwcztcclxuICBkcmF3ZXJQcm9wcz86IERyYXdlclByb3BzICYge1xyXG4gICAgb25Paz86IGFueTtcclxuICAgIG9rQnV0dG9uUHJvcHM/OiBPYmplY3Q7XHJcbiAgICBmb3JtRXhwYW5kPzogT2JqZWN0O1xyXG4gIH07XHJcbiAgdXJsPzogc3RyaW5nO1xyXG4gIGVuY3J5cHRGaWVsZHM/OiBBcnJheTxTdHJpbmc+O1xyXG4gIGNoYW5nZVZhbGlkPzogYm9vbGVhbjsgLy/mlbDmja7kv67mlLnlhbPpl63moKHpqoxcclxuICBsb2FkaW5nPzogYm9vbGVhbjsgLy/ooajljZXliqDovb3nirbmgIFcclxufVxyXG5cclxuY2xhc3MgTnNjRm9ybSBleHRlbmRzIFB1cmVDb21wb25lbnQ8SUZvcm1Qcm9wcz4ge1xyXG4gIGZvcm1SZWYgPSBSZWFjdC5jcmVhdGVSZWY8Rm9ybUluc3RhbmNlPigpO1xyXG4gIHN0YXRlID0ge1xyXG4gICAgZm9ybVZpc2libGU6IGZhbHNlLFxyXG4gICAgZm9ybU1vZGFsUHJvcHM6IHt9LFxyXG4gICAgZm9ybURyYXdlclByb3BzOiB7fSxcclxuICAgIGlzQ2hhbmdlOiBmYWxzZSxcclxuICAgIGV4cGFuZDogZmFsc2UsXHJcbiAgfTtcclxuICBvcHRpb246IGFueSA9IHtcclxuICAgIC8v5Zue6LCD5L2c55So5Z+fXHJcbiAgICBzY29wZTogdGhpcyxcclxuICAgIC8vb3BlbuS8oOmAkui/h+adpeeahOmhtemdouWPguaVsFxyXG4gICAgcGFyYW1zOiB7fSxcclxuICAgIC8v5pi+56S65LmL5YmN5Zue6LCDXHJcbiAgICBiZWZvcmVSZW5kZXI6IG51bGwsXHJcbiAgICAvL+WFs+mXreS5i+WJjeWbnuiwg++8jOWmguaenHJldHVybiBmYWxzZe+8jOS4lOeql+WPo+S4jeWFs+mXrVxyXG4gICAgY2FsbGJhY2tCZWZvcmVDbG9zZTogbnVsbCxcclxuICAgIC8v5YWz6Zet5ZCO5Zue6LCD77yM5byC5q2l5pON5L2cXHJcbiAgICBjYWxsYmFjazogbnVsbCxcclxuICAgIC8v5pi+56S65LmL5ZCO5Zue6LCDXHJcbiAgICBhZnRlclJlbmRlcjogbnVsbCxcclxuICB9O1xyXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKG5leHRQcm9wcywgcHJldlN0YXRlKSB7XHJcbiAgICBjb25zdCB7IG1vZGFsUHJvcHMsIGRyYXdlclByb3BzLCBzaG93TW9kZWwgfSA9IG5leHRQcm9wcztcclxuICAgIGNvbnN0IHsgZm9ybU1vZGFsUHJvcHMsIGZvcm1EcmF3ZXJQcm9wcyB9ID0gcHJldlN0YXRlO1xyXG4gICAgaWYgKHNob3dNb2RlbCA9PSBcIm1vZGFsXCIpIHtcclxuICAgICAgLy8gSlNPTi5zdHJpbmdpZnkoZm9ybU1vZGFsUHJvcHMpICE9PSBKU09OLnN0cmluZ2lmeShtb2RhbFByb3BzKVxyXG4gICAgICBpZiAoIU9iamVjdC5pcyhmb3JtTW9kYWxQcm9wcywgbW9kYWxQcm9wcykpIHtcclxuICAgICAgICBsZXQgbmV3U3RhdGUgPSB7XHJcbiAgICAgICAgICBmb3JtRHJhd2VyUHJvcHM6IG1vZGFsUHJvcHMsXHJcbiAgICAgICAgfSBhcyBhbnk7XHJcbiAgICAgICAgaWYgKG1vZGFsUHJvcHM/LnZpc2libGUgIT09IG51bGwgJiYgbW9kYWxQcm9wcz8udmlzaWJsZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBuZXdTdGF0ZS5mb3JtVmlzaWJsZSA9IG1vZGFsUHJvcHM/LnZpc2libGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXdTdGF0ZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChzaG93TW9kZWwgPT0gXCJkcmF3ZXJcIikge1xyXG4gICAgICAvLyBKU09OLnN0cmluZ2lmeShmb3JtRHJhd2VyUHJvcHMpICE9PSBKU09OLnN0cmluZ2lmeShkcmF3ZXJQcm9wcylcclxuICAgICAgaWYgKCFPYmplY3QuaXMoZm9ybURyYXdlclByb3BzLCBkcmF3ZXJQcm9wcykpIHtcclxuICAgICAgICBsZXQgbmV3U3RhdGUgPSB7XHJcbiAgICAgICAgICBmb3JtRHJhd2VyUHJvcHM6IGRyYXdlclByb3BzLFxyXG4gICAgICAgIH0gYXMgYW55O1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGRyYXdlclByb3BzPy52aXNpYmxlICE9PSBudWxsICYmXHJcbiAgICAgICAgICBkcmF3ZXJQcm9wcz8udmlzaWJsZSAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBuZXdTdGF0ZS5mb3JtVmlzaWJsZSA9IGRyYXdlclByb3BzPy52aXNpYmxlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3U3RhdGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy/ojrflj5blr7nlupTlrZfmrrXlkI3nmoTplJnor6/kv6Hmga9cclxuICBnZXRGaWVsZEVycm9yKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRFcnJvcihuYW1lKTtcclxuICB9XHJcblxyXG4gIC8v6I635Y+W5a+55bqU5a2X5q615a6e5L6LXHJcbiAgZ2V0RmllbGRJbnN0YW5jZShuYW1lKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkSW5zdGFuY2UobmFtZSk7XHJcbiAgfVxyXG5cclxuICAvL+iOt+WPluS4gOe7hOWtl+auteWQjeWvueW6lOeahOmUmeivr+S/oeaBr++8jOi/lOWbnuS4uuaVsOe7hOW9ouW8j1xyXG4gIGdldEZpZWxkc0Vycm9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZHNFcnJvcigpO1xyXG4gIH1cclxuXHJcbiAgLy/ojrflj5bkuIDnu4TlrZfmrrXlkI3lr7nlupTnmoTlgLzvvIzkvJrmjInnhaflr7nlupTnu5PmnoTov5Tlm55cclxuICBnZXRGaWVsZHNWYWx1ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIC8v6I635Y+W5a+55bqU5a2X5q615ZCN55qE5YC8XHJcbiAgZ2V0RmllbGRWYWx1ZShuYW1lKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkVmFsdWUobmFtZSk7XHJcbiAgfVxyXG5cclxuICAvL+ajgOafpeS4gOe7hOWtl+auteaYr+WQpuiiq+eUqOaIt+aTjeS9nOi/h1xyXG4gIGlzRmllbGRzVG91Y2hlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudD8uaXNGaWVsZHNUb3VjaGVkKCk7XHJcbiAgfVxyXG5cclxuICAvL+ajgOafpeWvueW6lOWtl+auteaYr+WQpuiiq+eUqOaIt+aTjeS9nOi/h1xyXG4gIGlzRmllbGRUb3VjaGVkKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudD8uaXNGaWVsZFRvdWNoZWQobmFtZSk7XHJcbiAgfVxyXG5cclxuICAvL+ajgOafpeS4gOe7hOWtl+auteaYr+WQpuato+WcqOagoemqjFxyXG4gIGlzRmllbGRWYWxpZGF0aW5nKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudD8uaXNGaWVsZFZhbGlkYXRpbmcobmFtZSk7XHJcbiAgfVxyXG5cclxuICAvL+mHjee9ruS4gOe7hOWtl+auteWIsFxyXG4gIHJlc2V0RmllbGRzKCkge1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgfVxyXG5cclxuICBzY3JvbGxUb0ZpZWxkKG5hbWUsIG9wdGlvbnMpIHtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zY3JvbGxUb0ZpZWxkKG5hbWUsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgc2V0RmllbGRzKGZpbGRzKSB7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzKGZpbGRzKTtcclxuICB9XHJcblxyXG4gIHNldEZpZWxkc1ZhbHVlKHZhbHVlcykge1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNldEZpZWxkc1ZhbHVlKHZhbHVlcyk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXQoKSB7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc3VibWl0KCk7XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdChcclxuICAgIHVybD86IHN0cmluZyxcclxuICAgIG9wdGlvbnM/OiBhbnksXHJcbiAgICBjYWxsYmFjaz86IChyZXM/OiBhbnkpID0+IHZvaWQsXHJcbiAgICBtc2c/OiBib29sZWFuXHJcbiAgKSB7XHJcbiAgICBjb25zdCB7IHVybDogcHJvcHNVcmwsIGVuY3J5cHRGaWVsZHM6IGVuY3J5cHRQcm9wcHMgPSBbXSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghdXJsICYmICFwcm9wc1VybCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCLmsqHmnInkuIrkvKDnmoR1cmwhXCIpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBtZXRob2QgPSBcInBvc3RcIiB9ID0gb3B0aW9ucztcclxuICAgIGxldCByZXF1ZXN0VXJsID0gdXJsID8gdXJsIDogcHJvcHNVcmw7XHJcbiAgICBsZXQgcmVxdWVzdERhdGEgPSB0aGlzLmZvcm1SZWYuY3VycmVudC5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gICAgbGV0IHJlcXVlc3RFbmNyeXB0ID0gZW5jcnlwdFByb3BwcztcclxuICAgIGxldCByZXF1ZXN0UGFyYW0gPSB7IG1ldGhvZDogbWV0aG9kLCBkYXRhOiByZXF1ZXN0RGF0YSB9IGFzIHsgZGF0YTogYW55IH07XHJcbiAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICBjb25zdCB7IGRhdGEsIGVuY3J5cHRGaWVsZHMsIC4uLnBhcmFtcyB9ID0gb3B0aW9ucztcclxuICAgICAgcmVxdWVzdFBhcmFtID0geyAuLi5yZXF1ZXN0UGFyYW0sIC4uLnBhcmFtcyB9O1xyXG4gICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgIGRlbGV0ZSByZXF1ZXN0UGFyYW0uZGF0YTtcclxuICAgICAgICBpZiAobWV0aG9kLnRvTG93ZXJDYXNlKCkgPT0gXCJnZXRcIikge1xyXG4gICAgICAgICAgcmVxdWVzdFBhcmFtID0geyAuLi5yZXF1ZXN0UGFyYW0sIC4uLnBhcmFtcywgcGFyYW1zOiBkYXRhIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlcXVlc3RQYXJhbSA9IHsgLi4ucmVxdWVzdFBhcmFtLCAuLi5wYXJhbXMsIGRhdGE6IGRhdGEgfTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGVuY3J5cHRGaWVsZHMpIHtcclxuICAgICAgICByZXF1ZXN0RW5jcnlwdCA9IGVuY3J5cHRGaWVsZHM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXF1ZXN0KHJlcXVlc3RVcmwsIHtcclxuICAgICAgYXV0b1ByZWZpeDogdHJ1ZSxcclxuICAgICAgLi4ucmVxdWVzdFBhcmFtLFxyXG4gICAgICBlbmNyeXB0RmllbGRzOiByZXF1ZXN0RW5jcnlwdCxcclxuICAgIH0pXHJcbiAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXM6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHsgY29kZSB9ID0gcmVzO1xyXG4gICAgICAgIGlmIChtc2cpIHtcclxuICAgICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKFwi5o+Q5Lqk5oiQ5YqfXCIpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbWVzc2FnZS5lcnJvcihcIuaPkOS6pOWksei0pVwiKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2socmVzKTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVGaWVsZHMobmFtZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVJlZi5jdXJyZW50LnZhbGlkYXRlRmllbGRzKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgaGlkZShlKSB7XHJcbiAgICBjb25zdCB7IHNob3dNb2RlbCwgbW9kYWxQcm9wcyA9IHt9LCBkcmF3ZXJQcm9wcyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGNvbnN0IHsgb25DYW5jZWwgfSA9IG1vZGFsUHJvcHM7XHJcbiAgICBjb25zdCB7IG9uQ2xvc2UgfSA9IGRyYXdlclByb3BzO1xyXG4gICAgaWYgKHNob3dNb2RlbCA9PSBcImRyYXdlclwiICYmIG9uQ2xvc2UpIHtcclxuICAgICAgb25DbG9zZShlKTtcclxuICAgIH0gZWxzZSBpZiAoc2hvd01vZGVsID09IFwibW9kYWxcIiAmJiBvbkNhbmNlbCkge1xyXG4gICAgICBvbkNhbmNlbChlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIF90aGlzLmhpZGVGb3JtKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoaWRlRm9ybShyZXNldFZhbHVlID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAge1xyXG4gICAgICAgIGZvcm1WaXNpYmxlOiBmYWxzZSxcclxuICAgICAgICBpc0NoYW5nZTogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICBpZiAocmVzZXRWYWx1ZSkge1xyXG4gICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc2hvd0Zvcm0odmFsdWU/OiBhbnksIG9wdGlvbjogYW55ID0ge30pIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgIHtcclxuICAgICAgICBmb3JtVmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICBpc0NoYW5nZTogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUodmFsdWUpO1xyXG4gICAgICAgIGNvbnN0IHsgYWZ0ZXJSZW5kZXIgfSA9IG9wdGlvbjtcclxuICAgICAgICB1dGlscy5jYWxsYmFjayhhZnRlclJlbmRlciwgdGhpcyk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjbG9uZUVsZW1lbnQoaXRlbSwgaW5kZXggPSAwKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgaWYgKHR5cGVvZiBpdGVtID09IFwic3RyaW5nXCIpIHJldHVybiBpdGVtO1xyXG4gICAgbGV0IHByb3BzID0ge30gYXMgeyBrZXk6IG51bWJlcjsgY2hpbGRyZW46IGFueSB9O1xyXG4gICAgcHJvcHMua2V5ID0gaW5kZXg7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoaXRlbS5wcm9wcyAmJiBpdGVtLnByb3BzLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbS5wcm9wcy5jaGlsZHJlbikpIHtcclxuICAgICAgICAgIHByb3BzLmNoaWxkcmVuID0gUmVhY3QuQ2hpbGRyZW4ubWFwKFxyXG4gICAgICAgICAgICBpdGVtLnByb3BzLmNoaWxkcmVuLFxyXG4gICAgICAgICAgICBmdW5jdGlvbiAoY2hpbGQsIGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmNsb25lRWxlbWVudChjaGlsZCwgaW5kZXgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBwcm9wcy5jaGlsZHJlbiA9IHRoaXMuY2xvbmVFbGVtZW50KGl0ZW0ucHJvcHMuY2hpbGRyZW4sIDApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGl0ZW0sIHByb3BzKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uVmFsdWVzQ2hhbmdlKHZhbCwgYWxsVmFsKSB7XHJcbiAgICBjb25zdCB7IG9uVmFsdWVzQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGlzQ2hhbmdlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBvblZhbHVlc0NoYW5nZSAmJiBvblZhbHVlc0NoYW5nZSh2YWwsIGFsbFZhbCk7XHJcbiAgfVxyXG4gIHJlbmRlclBhbmVsKG5ld0NoaWxkcmVuLCBwcm9wcykge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzaG93TW9kZWwsXHJcbiAgICAgIGRyYXdlclByb3BzID0ge30sXHJcbiAgICAgIG1vZGFsUHJvcHMgPSB7fSxcclxuICAgICAgbG9hZGluZyA9IGZhbHNlLFxyXG4gICAgICBjaGFuZ2VWYWxpZCA9IHRydWUsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgZm9ybVZpc2libGUgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBsYXlvdXQgPSB7XHJcbiAgICAgIGxhYmVsQ29sOiB7IHNwYW46IDQgfSxcclxuICAgICAgd3JhcHBlckNvbDogeyBzcGFuOiAyMCB9LFxyXG4gICAgfTtcclxuICAgIGlmIChzaG93TW9kZWwpIHtcclxuICAgICAgbGV0IG5ld01vZGFsUHJvcHMgPSBvbWl0KG1vZGFsUHJvcHMsIFtcInZpc2libGVcIl0pO1xyXG4gICAgICBuZXdNb2RhbFByb3BzID0geyAuLi5uZXdNb2RhbFByb3BzIH07XHJcbiAgICAgIGxldCBuZXdEcmF3ZXJQcm9wcyA9IG9taXQoZHJhd2VyUHJvcHMsIFtcInZpc2libGVcIl0pO1xyXG4gICAgICBsZXQgZGVmYXVsdHByb3BzID0ge1xyXG4gICAgICAgIG1hc2tDbG9zYWJsZTogIXRoaXMuc3RhdGUuaXNDaGFuZ2UsXHJcbiAgICAgICAgZm9ybUV4cGFuZDoge1xyXG4gICAgICAgICAgZXhwYW5kOiB0cnVlLFxyXG4gICAgICAgICAgdmFsaWQ6IGNoYW5nZVZhbGlkLFxyXG4gICAgICAgICAgY2hhbmdlOiB0aGlzLnN0YXRlLmlzQ2hhbmdlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHlwZTogc2hvd01vZGVsLFxyXG4gICAgICB9IGFzIGFueTtcclxuICAgICAgbGV0IG1vZGFscHJvcHMgPSB7IC4uLmRlZmF1bHRwcm9wcyB9O1xyXG4gICAgICBtb2RhbHByb3BzID0ge1xyXG4gICAgICAgIC4uLmRlZmF1bHRwcm9wcyxcclxuICAgICAgICAuLi5uZXdNb2RhbFByb3BzLFxyXG4gICAgICAgIC4uLm5ld0RyYXdlclByb3BzLFxyXG4gICAgICAgIG9uQ2FuY2VsOiB0aGlzLmhpZGUuYmluZCh0aGlzKSxcclxuICAgICAgICAvLyBvbkNsb3NlOiB0aGlzLmhpZGUuYmluZCh0aGlzKSxcclxuICAgICAgfTtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8TW9kYWwgdmlzaWJsZT17Zm9ybVZpc2libGV9IHsuLi5tb2RhbHByb3BzfT5cclxuICAgICAgICAgIHtsb2FkaW5nID8gKFxyXG4gICAgICAgICAgICA8U3BpbiBzcGlubmluZz17bG9hZGluZ30+XHJcbiAgICAgICAgICAgICAgPEZvcm1cclxuICAgICAgICAgICAgICAgIHJlZj17dGhpcy5mb3JtUmVmfVxyXG4gICAgICAgICAgICAgICAgdmFsaWRhdGVUcmlnZ2VyPXtbXCJvbkJsdXJcIiwgXCJvbkNoYW5nZVwiXX1cclxuICAgICAgICAgICAgICAgIGRyYWdnYWJsZT17dHJ1ZX1cclxuICAgICAgICAgICAgICAgIHsuLi5sYXlvdXR9XHJcbiAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICAgICAgICBvblZhbHVlc0NoYW5nZT17dGhpcy5vblZhbHVlc0NoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgcHJlc2VydmU9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvU3Bpbj5cclxuICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgIDxGb3JtXHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGVUcmlnZ2VyPXtbXCJvbkJsdXJcIiwgXCJvbkNoYW5nZVwiXX1cclxuICAgICAgICAgICAgICB7Li4ubGF5b3V0fVxyXG4gICAgICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgICAgICBvblZhbHVlc0NoYW5nZT17dGhpcy5vblZhbHVlc0NoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgIHByZXNlcnZlPXtmYWxzZX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgPC9Nb2RhbD5cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPD5cclxuICAgICAgICAgIHtsb2FkaW5nID8gKFxyXG4gICAgICAgICAgICA8U3BpbiBzcGlubmluZz17bG9hZGluZ30+XHJcbiAgICAgICAgICAgICAgPEZvcm1cclxuICAgICAgICAgICAgICAgIHJlZj17dGhpcy5mb3JtUmVmfVxyXG4gICAgICAgICAgICAgICAgdmFsaWRhdGVUcmlnZ2VyPXtbXCJvbkJsdXJcIiwgXCJvbkNoYW5nZVwiXX1cclxuICAgICAgICAgICAgICAgIHsuLi5sYXlvdXR9XHJcbiAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICAgICAgICBvblZhbHVlc0NoYW5nZT17dGhpcy5vblZhbHVlc0NoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvU3Bpbj5cclxuICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgIDxGb3JtXHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGVUcmlnZ2VyPXtbXCJvbkJsdXJcIiwgXCJvbkNoYW5nZVwiXX1cclxuICAgICAgICAgICAgICB7Li4ubGF5b3V0fVxyXG4gICAgICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgICAgICBvblZhbHVlc0NoYW5nZT17dGhpcy5vblZhbHVlc0NoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8Lz5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3QgcHJvcHMgPSBvbWl0KHRoaXMucHJvcHMsIFtcclxuICAgICAgXCJmb3JtXCIsXHJcbiAgICAgIFwic2hvd01vZGVsXCIsXHJcbiAgICAgIFwibW9kYWxQcm9wc1wiLFxyXG4gICAgICBcImRyYXdlclByb3BzXCIsXHJcbiAgICAgIFwidXJsXCIsXHJcbiAgICAgIFwiZW5jcnlwdEZpZWxkc1wiLFxyXG4gICAgICBcImNoYW5nZVZhbGlkXCIsXHJcbiAgICBdKTtcclxuXHJcbiAgICByZXR1cm4gPD57dGhpcy5yZW5kZXJQYW5lbChwcm9wcy5jaGlsZHJlbiwgcHJvcHMpfTwvPjtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgTnNjRm9ybTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU9BLEtBQUssSUFBSUMsYUFBYSxRQUFRLE9BQU87QUFFNUMsT0FB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SUFBSSxDQUFDNUcsT0FBUTtRQUNsQjZHLGVBQWUsRUFBRSxDQUFDLFFBQVEsRUFBRSxVQUFVO01BQUUsR0FDcENuQixNQUFNLEVBQ050SCxLQUFLO1FBQ1Q4RyxjQUFjLEVBQUUsSUFBSSxDQUFDQSxjQUFjLENBQUNxQixJQUFJLENBQUMsSUFBSSxDQUFFO1FBQy9DUSxRQUFRLEVBQUU7TUFBTSxFQUNqQixDQUVFLENBQUM7SUFFWixDQUFDLE1BQU07TUFDTCxvQkFDRXBKLEtBQUEsQ0FBQTZJLGFBQUEsQ0FBQTdJLEtBQUEsQ0FBQXFKLFFBQUEsUUFDR3pCLE9BQU8sZ0JBQ041SCxLQUFBLENBQUE2SSxhQUFBLENBQUN4SSxJQUFJO1FBQUMwSSxRQUFRLEVBQUVuQjtNQUFRLGdCQUN0QjVILEtBQUEsQ0FBQTZJLGFBQUEsQ0FBQUcsS0FBQSxFQUFBRixRQUFBO1FBQ0VHLEdBQUcsRUFBRSxJQUFJLENBQUM1RyxPQUFRO1FBQ2xCNkcsZUFBZSxFQUFFLENBQUMsUUFBUSxFQUFFLFVBQVU7TUFBRSxHQUNwQ25CLE1BQU0sRUFDTnRILEtBQUs7UUFDVDhHLGNBQWMsRUFBRSxJQUFJLENBQUNBLGNBQWMsQ0FBQ3FCLElBQUksQ0FBQyxJQUFJO01BQUUsRUFDaEQsQ0FDRyxDQUFDLGdCQUVQNUksS0FBQSxDQUFBNkksYUFBQSxDQUFBRyxLQUFBLEVBQUFGLFFBQUE7UUFDRUcsR0FBRyxFQUFFLElBQUksQ0FBQzVHLE9BQVE7UUFDbEI2RyxlQUFlLEVBQUUsQ0FBQyxRQUFRLEVBQUUsVUFBVTtNQUFFLEdBQ3BDbkIsTUFBTSxFQUNOdEgsS0FBSztRQUNUOEcsY0FBYyxFQUFFLElBQUksQ0FBQ0EsY0FBYyxDQUFDcUIsSUFBSSxDQUFDLElBQUk7TUFBRSxFQUNoRCxDQUVILENBQUM7SUFFUDtFQUNGO0VBQ0FVLE1BQU1BLENBQUEsRUFBRztJQUNQLE1BQU03SSxLQUFLLEdBQUdMLElBQUksQ0FBQyxJQUFJLENBQUNLLEtBQUssRUFBRSxDQUM3QixNQUFNLEVBQ04sV0FBVyxFQUNYLFlBQVksRUFDWixhQUFhLEVBQ2IsS0FBSyxFQUNMLGVBQWUsRUFDZixhQUFhLENBQ2QsQ0FBQztJQUVGLG9CQUFPVCxLQUFBLENBQUE2SSxhQUFBLENBQUE3SSxLQUFBLENBQUFxSixRQUFBLFFBQUcsSUFBSSxDQUFDM0IsV0FBVyxDQUFDakgsS0FBSyxDQUFDd0csUUFBUSxFQUFFeEcsS0FBSyxDQUFJLENBQUM7RUFDdkQ7QUFDRjtBQUNBLGVBQWVGLE9BQU8iLCJpZ25vcmVMaXN0IjpbXX0=
|