nsc-react-component 2.0.15 → 2.0.16
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/{affix → base/affix}/index.d.ts +0 -0
- package/lib/{affix → base/affix}/index.js +1 -1
- package/lib/{alert → base/alert}/index.d.ts +0 -0
- package/lib/{alert → base/alert}/index.js +1 -1
- package/lib/{anchor → base/anchor}/index.d.ts +0 -0
- package/lib/{anchor → base/anchor}/index.js +1 -1
- package/lib/{avatar → base/avatar}/index.d.ts +0 -0
- package/lib/{avatar → base/avatar}/index.js +1 -1
- package/lib/{backTop → base/backTop}/index.d.ts +0 -0
- package/lib/{backTop → base/backTop}/index.js +1 -1
- package/lib/{badge → base/badge}/index.d.ts +0 -0
- package/lib/{badge → base/badge}/index.js +1 -1
- package/lib/{breadcrumb → base/breadcrumb}/index.d.ts +0 -0
- package/lib/{breadcrumb → base/breadcrumb}/index.js +1 -1
- package/lib/{button → base/button}/index.d.ts +0 -0
- package/lib/{button → base/button}/index.js +2 -2
- package/lib/{button → base/button}/index.less +0 -0
- package/lib/{calendar → base/calendar}/index.d.ts +0 -0
- package/lib/{calendar → base/calendar}/index.js +1 -1
- package/lib/{card → base/card}/index.d.ts +0 -0
- package/lib/{card → base/card}/index.js +1 -1
- package/lib/{carousel → base/carousel}/index.d.ts +0 -0
- package/lib/{carousel → base/carousel}/index.js +1 -1
- package/lib/{cascader → base/cascader}/index.d.ts +0 -0
- package/lib/base/cascader/index.js +268 -0
- package/lib/{chart → base/chart}/index.d.ts +0 -0
- package/lib/base/chart/index.js +353 -0
- package/lib/{checkbox → base/checkbox}/CheckboxGroup.d.ts +0 -0
- package/lib/base/checkbox/CheckboxGroup.js +340 -0
- package/lib/{checkbox → base/checkbox}/index.d.ts +0 -0
- package/lib/{checkbox → base/checkbox}/index.js +1 -1
- package/lib/{collapse → base/collapse}/index.d.ts +0 -0
- package/lib/{collapse → base/collapse}/index.js +1 -1
- package/lib/{comment → base/comment}/index.d.ts +0 -0
- package/lib/{comment → base/comment}/index.js +1 -1
- package/lib/{common → base/common}/BodyRow/index.d.ts +0 -0
- package/lib/{common → base/common}/BodyRow/index.js +1 -1
- package/lib/{common → base/common}/BodyRow/index.less +0 -0
- package/lib/{common → base/common}/Icon.d.ts +0 -0
- package/lib/{common → base/common}/Icon.js +1 -1
- package/lib/{common → base/common}/IconFont.d.ts +0 -0
- package/lib/base/common/IconFont.js +17 -0
- package/lib/{common → base/common}/NoAuthority.d.ts +0 -0
- package/lib/{common → base/common}/NoAuthority.js +1 -1
- package/lib/{common → base/common}/NoData.d.ts +0 -0
- package/lib/{common → base/common}/NoData.js +1 -1
- package/lib/{common → base/common}/NoData.less +0 -0
- package/lib/{common → base/common}/NoMessage.d.ts +0 -0
- package/lib/{common → base/common}/NoMessage.js +1 -1
- package/lib/{common → base/common}/NoNetWork.d.ts +0 -0
- package/lib/{common → base/common}/NoNetWork.js +1 -1
- package/lib/{common → base/common}/Page404.d.ts +0 -0
- package/lib/{common → base/common}/Page404.js +1 -1
- package/lib/{common → base/common}/PageRequest.d.ts +0 -0
- package/lib/{common → base/common}/PageRequest.js +1 -1
- package/lib/{common → base/common}/TreePanel.d.ts +2 -1
- package/lib/base/common/TreePanel.js +290 -0
- package/lib/{common → base/common}/img/NoAuthority.png +0 -0
- package/lib/{common → base/common}/img/NoData.png +0 -0
- package/lib/{common → base/common}/img/NoMessage.png +0 -0
- package/lib/{common → base/common}/img/NoNetWork.png +0 -0
- package/lib/{common → base/common}/img/Page404.png +0 -0
- package/lib/{common → base/common}/withZhLocale.d.ts +0 -0
- package/lib/base/common/withZhLocale.js +20 -0
- package/lib/{configProvider → base/configProvider}/index.d.ts +0 -0
- package/lib/{configProvider → base/configProvider}/index.js +1 -1
- package/lib/{datepick → base/datepick}/Rangepicker.d.ts +0 -0
- package/lib/base/datepick/Rangepicker.js +553 -0
- package/lib/{datepick → base/datepick}/index.d.ts +0 -0
- package/lib/{datepick → base/datepick}/index.js +1 -1
- package/lib/{datepick → base/datepick}/index.less +0 -0
- package/lib/{descriptions → base/descriptions}/index.d.ts +0 -0
- package/lib/{descriptions → base/descriptions}/index.js +1 -1
- package/lib/{divider → base/divider}/index.d.ts +0 -0
- package/lib/{divider → base/divider}/index.js +1 -1
- package/lib/{drawer → base/drawer}/index.d.ts +0 -0
- package/lib/{drawer → base/drawer}/index.js +1 -1
- package/lib/{dropdown → base/dropdown}/index.d.ts +0 -0
- package/lib/{dropdown → base/dropdown}/index.js +1 -1
- package/lib/{form → base/form}/Form.d.ts +0 -0
- package/lib/base/form/Form.js +415 -0
- package/lib/{form → base/form}/filed/Cascader.d.ts +0 -0
- package/lib/{form → base/form}/filed/Cascader.js +1 -1
- package/lib/{form → base/form}/filed/Checkbox.d.ts +0 -0
- package/lib/{form → base/form}/filed/Checkbox.js +1 -1
- package/lib/{form → base/form}/filed/DatePicker.d.ts +0 -0
- package/lib/{form → base/form}/filed/DatePicker.js +1 -1
- package/lib/{form → base/form}/filed/FormItem.d.ts +0 -0
- package/lib/{form → base/form}/filed/FormItem.js +1 -1
- package/lib/{form → base/form}/filed/Input.d.ts +0 -0
- package/lib/{form → base/form}/filed/Input.js +1 -1
- package/lib/{form → base/form}/filed/InputEamil.d.ts +0 -0
- package/lib/{form → base/form}/filed/InputEamil.js +1 -1
- package/lib/{form → base/form}/filed/InputNumber.d.ts +0 -0
- package/lib/{form → base/form}/filed/InputNumber.js +1 -1
- package/lib/{form → base/form}/filed/InputPassword.d.ts +0 -0
- package/lib/{form → base/form}/filed/InputPassword.js +1 -1
- package/lib/{form → base/form}/filed/Item.d.ts +0 -0
- package/lib/base/form/filed/Item.js +161 -0
- package/lib/{form → base/form}/filed/Radio.d.ts +0 -0
- package/lib/{form → base/form}/filed/Radio.js +1 -1
- package/lib/{form → base/form}/filed/RangerPicker.d.ts +0 -0
- package/lib/{form → base/form}/filed/RangerPicker.js +1 -1
- package/lib/{form → base/form}/filed/Rate.d.ts +0 -0
- package/lib/{form → base/form}/filed/Rate.js +1 -1
- package/lib/{form → base/form}/filed/Select.d.ts +0 -0
- package/lib/{form → base/form}/filed/Select.js +1 -1
- package/lib/{form → base/form}/filed/Slider.d.ts +0 -0
- package/lib/{form → base/form}/filed/Slider.js +1 -1
- package/lib/{form → base/form}/filed/Switch.d.ts +0 -0
- package/lib/{form → base/form}/filed/Switch.js +1 -1
- package/lib/{form → base/form}/filed/TagSelect.d.ts +0 -0
- package/lib/{form → base/form}/filed/TagSelect.js +1 -1
- package/lib/{form → base/form}/filed/TextArea.d.ts +0 -0
- package/lib/{form → base/form}/filed/TextArea.js +1 -1
- package/lib/{form → base/form}/filed/Upload.d.ts +0 -0
- package/lib/{form → base/form}/filed/Upload.js +1 -1
- package/lib/{form → base/form}/index.d.ts +0 -0
- package/lib/{form → base/form}/index.js +1 -1
- package/lib/{grid → base/grid}/Col.d.ts +0 -0
- package/lib/{grid → base/grid}/Col.js +1 -1
- package/lib/{grid → base/grid}/Row.d.ts +0 -0
- package/lib/{grid → base/grid}/Row.js +1 -1
- package/lib/{grid → base/grid}/index.d.ts +0 -0
- package/lib/{grid → base/grid}/index.js +0 -0
- package/lib/{image → base/image}/index.d.ts +0 -0
- package/lib/{image → base/image}/index.js +1 -1
- package/lib/{input → base/input}/Email.d.ts +0 -0
- package/lib/{input → base/input}/Email.js +1 -1
- package/lib/{input → base/input}/Number.d.ts +0 -0
- package/lib/{input → base/input}/Number.js +1 -1
- package/lib/{input → base/input}/Password.d.ts +0 -3
- package/lib/{input → base/input}/Password.js +1 -1
- package/lib/{input → base/input}/Search.d.ts +0 -3
- package/lib/{input → base/input}/Search.js +1 -1
- package/lib/{input → base/input}/TextArea.d.ts +0 -3
- package/lib/{input → base/input}/TextArea.js +1 -1
- package/lib/{input → base/input}/index.d.ts +0 -0
- package/lib/base/input/index.js +242 -0
- package/lib/{input → base/input}/index.less +0 -0
- package/lib/{layout → base/layout}/index.d.ts +0 -0
- package/lib/{layout → base/layout}/index.js +1 -1
- package/lib/{list → base/list}/index.d.ts +0 -0
- package/lib/{list → base/list}/index.js +1 -1
- package/lib/{menu → base/menu}/index.d.ts +0 -0
- package/lib/base/menu/index.js +247 -0
- package/lib/{message → base/message}/index.d.ts +0 -0
- package/lib/{message → base/message}/index.js +1 -1
- package/lib/{modal → base/modal}/index.d.ts +0 -0
- package/lib/{modal → base/modal}/index.js +1 -1
- package/lib/{notification → base/notification}/index.d.ts +0 -0
- package/lib/{notification → base/notification}/index.js +1 -1
- package/lib/{pageHeader → base/pageHeader}/index.d.ts +0 -0
- package/lib/{pageHeader → base/pageHeader}/index.js +1 -1
- package/lib/{pagination → base/pagination}/index.d.ts +0 -0
- package/lib/{pagination → base/pagination}/index.js +1 -1
- package/lib/{popconfirm → base/popconfirm}/index.d.ts +0 -0
- package/lib/{popconfirm → base/popconfirm}/index.js +1 -1
- package/lib/{popover → base/popover}/index.d.ts +0 -0
- package/lib/{popover → base/popover}/index.js +1 -1
- package/lib/{progress → base/progress}/index.d.ts +0 -0
- package/lib/{progress → base/progress}/index.js +1 -1
- package/lib/{radio → base/radio}/RadioGroup.d.ts +0 -0
- package/lib/base/radio/RadioGroup.js +378 -0
- package/lib/{radio → base/radio}/index.d.ts +0 -0
- package/lib/{radio → base/radio}/index.js +1 -1
- package/lib/{result → base/result}/index.d.ts +0 -0
- package/lib/{result → base/result}/index.js +1 -1
- package/lib/{select → base/select}/index.d.ts +0 -0
- package/lib/base/select/index.js +529 -0
- package/lib/{select → base/select}/index.less +0 -0
- package/lib/{skeleton → base/skeleton}/index.d.ts +0 -0
- package/lib/{skeleton → base/skeleton}/index.js +1 -1
- package/lib/{space → base/space}/index.d.ts +0 -0
- package/lib/{space → base/space}/index.js +1 -1
- package/lib/{spin → base/spin}/index.d.ts +0 -0
- package/lib/{spin → base/spin}/index.js +1 -1
- package/lib/{statistic → base/statistic}/index.d.ts +0 -0
- package/lib/{statistic → base/statistic}/index.js +1 -1
- package/lib/{steps → base/steps}/index.d.ts +0 -0
- package/lib/{steps → base/steps}/index.js +1 -1
- package/lib/{table → base/table}/index.d.ts +10 -2
- package/lib/base/table/index.js +902 -0
- package/lib/{table → base/table}/index.module.less +22 -0
- package/lib/{table → base/table}/resize.module.less +0 -0
- package/lib/{tabs → base/tabs}/Tabpane.d.ts +0 -0
- package/lib/{tabs → base/tabs}/Tabpane.js +1 -1
- package/lib/{tabs → base/tabs}/index.d.ts +0 -0
- package/lib/{tabs → base/tabs}/index.js +1 -1
- package/lib/{tagSelect → base/tagSelect}/TagSelect.d.ts +0 -0
- package/lib/base/tagSelect/TagSelect.js +268 -0
- package/lib/{tagSelect → base/tagSelect}/index.d.ts +0 -0
- package/lib/base/tagSelect/index.js +188 -0
- package/lib/{tagSelect → base/tagSelect}/index.less +0 -0
- package/lib/{timeline → base/timeline}/index.d.ts +0 -0
- package/lib/{timeline → base/timeline}/index.js +1 -1
- package/lib/{tooltip → base/tooltip}/index.d.ts +0 -0
- package/lib/{tooltip → base/tooltip}/index.js +1 -1
- package/lib/{tree → base/tree}/TreeSearch.d.ts +0 -0
- package/lib/base/tree/TreeSearch.js +273 -0
- package/lib/{tree → base/tree}/index.d.ts +0 -0
- package/lib/base/tree/index.js +307 -0
- package/lib/{tree → base/tree}/index.less +0 -0
- package/lib/{typography → base/typography}/index.d.ts +0 -0
- package/lib/{typography → base/typography}/index.js +1 -1
- package/lib/index.d.ts +63 -63
- package/lib/index.js +63 -63
- package/lib/{pageComponents → page}/BasePage/Form.d.ts +0 -0
- package/lib/page/BasePage/Form.js +244 -0
- package/lib/{pageComponents → page}/BasePage/index.d.ts +0 -0
- package/lib/page/BasePage/index.js +639 -0
- package/lib/{pageComponents → page}/BasePage/index.module.less +0 -0
- package/lib/utils.d.ts +1 -0
- package/lib/utils.js +15 -8
- package/package.json +1 -1
- package/lib/cascader/index.js +0 -268
- package/lib/chart/index.js +0 -353
- package/lib/checkbox/CheckboxGroup.js +0 -340
- package/lib/common/IconFont.js +0 -17
- package/lib/common/TreePanel.js +0 -303
- package/lib/common/withZhLocale.js +0 -20
- package/lib/datepick/Rangepicker.js +0 -553
- package/lib/form/Form.js +0 -415
- package/lib/form/filed/Item.js +0 -161
- package/lib/input/index.js +0 -242
- package/lib/menu/index.js +0 -247
- package/lib/pageComponents/BasePage/Form.js +0 -244
- package/lib/pageComponents/BasePage/index.js +0 -658
- package/lib/radio/RadioGroup.js +0 -378
- package/lib/select/index.js +0 -529
- package/lib/table/index.js +0 -756
- package/lib/tagSelect/TagSelect.js +0 -268
- package/lib/tagSelect/index.js +0 -188
- package/lib/tree/TreeSearch.js +0 -274
- package/lib/tree/index.js +0 -293
package/lib/select/index.js
DELETED
|
@@ -1,529 +0,0 @@
|
|
|
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
|
-
import "antd/es/select/style/css";
|
|
4
|
-
import _Select from "antd/es/select";
|
|
5
|
-
var _excluded = ["url", "listeners", "viewname", "cached", "cacheKey", "viewtype"],
|
|
6
|
-
_excluded2 = ["children", "store", "data", "onChange", "options", "labelField", "valueField", "defaultStyle", "showGroup", "addData", "deleteData", "valueType"];
|
|
7
|
-
|
|
8
|
-
function _extends() { _extends = Object.assign || 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); }
|
|
9
|
-
|
|
10
|
-
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; }
|
|
11
|
-
|
|
12
|
-
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; }
|
|
13
|
-
|
|
14
|
-
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
15
|
-
|
|
16
|
-
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."); }
|
|
17
|
-
|
|
18
|
-
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); }
|
|
19
|
-
|
|
20
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
21
|
-
|
|
22
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
23
|
-
|
|
24
|
-
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; }
|
|
25
|
-
|
|
26
|
-
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; }
|
|
27
|
-
|
|
28
|
-
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; }
|
|
29
|
-
|
|
30
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
31
|
-
|
|
32
|
-
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); } }
|
|
33
|
-
|
|
34
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
35
|
-
|
|
36
|
-
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); }
|
|
37
|
-
|
|
38
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
39
|
-
|
|
40
|
-
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); }; }
|
|
41
|
-
|
|
42
|
-
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
|
|
43
|
-
|
|
44
|
-
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
45
|
-
|
|
46
|
-
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; } }
|
|
47
|
-
|
|
48
|
-
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
49
|
-
|
|
50
|
-
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; }
|
|
51
|
-
|
|
52
|
-
import React, { PureComponent } from "react";
|
|
53
|
-
import Store from "@bj-nsc/msn";
|
|
54
|
-
import { utils } from "@bj-nsc/msn/lib/utils";
|
|
55
|
-
import config from "../config";
|
|
56
|
-
import styles from "./index.less";
|
|
57
|
-
import cls from "classnames";
|
|
58
|
-
import PinyinMatch from "pinyin-match";
|
|
59
|
-
var Option = _Select.Option,
|
|
60
|
-
OptGroup = _Select.OptGroup;
|
|
61
|
-
|
|
62
|
-
var NSCSelect = /*#__PURE__*/function (_PureComponent) {
|
|
63
|
-
_inherits(NSCSelect, _PureComponent);
|
|
64
|
-
|
|
65
|
-
var _super = _createSuper(NSCSelect);
|
|
66
|
-
|
|
67
|
-
function NSCSelect(props) {
|
|
68
|
-
var _this2;
|
|
69
|
-
|
|
70
|
-
_classCallCheck(this, NSCSelect);
|
|
71
|
-
|
|
72
|
-
_this2 = _super.call(this, props);
|
|
73
|
-
|
|
74
|
-
_defineProperty(_assertThisInitialized(_this2), "state", {
|
|
75
|
-
dataSource: [],
|
|
76
|
-
selectValue: null,
|
|
77
|
-
allDataSource: [],
|
|
78
|
-
children: null,
|
|
79
|
-
allChildren: null
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
_defineProperty(_assertThisInitialized(_this2), "store", {});
|
|
83
|
-
|
|
84
|
-
var data = props.data,
|
|
85
|
-
_props$store = props.store,
|
|
86
|
-
store = _props$store === void 0 ? {} : _props$store,
|
|
87
|
-
children = props.children,
|
|
88
|
-
options = props.options,
|
|
89
|
-
_props$addData = props.addData,
|
|
90
|
-
addData = _props$addData === void 0 ? [] : _props$addData,
|
|
91
|
-
_props$deleteData = props.deleteData,
|
|
92
|
-
deleteData = _props$deleteData === void 0 ? [] : _props$deleteData;
|
|
93
|
-
|
|
94
|
-
var url = store.url,
|
|
95
|
-
_store$listeners = store.listeners,
|
|
96
|
-
listenersPops = _store$listeners === void 0 ? {} : _store$listeners,
|
|
97
|
-
viewname = store.viewname,
|
|
98
|
-
cached = store.cached,
|
|
99
|
-
cacheKey = store.cacheKey,
|
|
100
|
-
_store$viewtype = store.viewtype,
|
|
101
|
-
viewtype = _store$viewtype === void 0 ? "system" : _store$viewtype,
|
|
102
|
-
stores = _objectWithoutProperties(store, _excluded);
|
|
103
|
-
|
|
104
|
-
var valueField = viewname ? "dictKey" : "value";
|
|
105
|
-
|
|
106
|
-
var _config = config(),
|
|
107
|
-
viewUrl = _config.viewUrl,
|
|
108
|
-
viewBizUrl = _config.viewBizUrl;
|
|
109
|
-
|
|
110
|
-
var requestViewUrl = viewtype == "system" ? viewUrl : viewBizUrl;
|
|
111
|
-
|
|
112
|
-
var getAllData = function getAllData(data) {
|
|
113
|
-
if (!Array.isArray(data)) {
|
|
114
|
-
return [];
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
var newData = _toConsumableArray(data);
|
|
118
|
-
|
|
119
|
-
if (addData.length > 0) {
|
|
120
|
-
newData = [].concat(_toConsumableArray(addData), _toConsumableArray(newData));
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
if (deleteData.length > 0) {
|
|
124
|
-
var spliceData = [];
|
|
125
|
-
var valueFields = valueField.split(",");
|
|
126
|
-
newData.map(function (item, i) {
|
|
127
|
-
var value = "";
|
|
128
|
-
valueFields.map(function (v, index) {
|
|
129
|
-
value = index == 0 ? value + item[v] : value + "," + item[v];
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
if (deleteData.indexOf(value) == -1) {
|
|
133
|
-
spliceData.push(item);
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
return spliceData;
|
|
137
|
-
} else {
|
|
138
|
-
return newData;
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
|
|
142
|
-
if (!children) {
|
|
143
|
-
if (!(data || viewname || url || options)) {
|
|
144
|
-
throw new Error("url、viewname、data、options不能都为空!");
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
var _this = _assertThisInitialized(_this2);
|
|
148
|
-
|
|
149
|
-
var storeProps = _objectSpread({
|
|
150
|
-
model: "model",
|
|
151
|
-
component: _assertThisInitialized(_this2),
|
|
152
|
-
listeners: {
|
|
153
|
-
onBeforeLoad: function onBeforeLoad(store, options) {
|
|
154
|
-
utils.callback(listenersPops.onBeforeLoad, _this, [store, options]);
|
|
155
|
-
},
|
|
156
|
-
load: function load(data, modelData, store) {
|
|
157
|
-
var newData = getAllData(data);
|
|
158
|
-
|
|
159
|
-
_this.setState({
|
|
160
|
-
dataSource: newData,
|
|
161
|
-
allDataSource: newData
|
|
162
|
-
});
|
|
163
|
-
|
|
164
|
-
utils.callback(listenersPops.load, _this, [data, modelData, store]);
|
|
165
|
-
},
|
|
166
|
-
dataChanged: function dataChanged(data, modelData, store) {
|
|
167
|
-
var newData = getAllData(data);
|
|
168
|
-
|
|
169
|
-
_this.setState({
|
|
170
|
-
dataSource: newData,
|
|
171
|
-
allDataSource: newData
|
|
172
|
-
});
|
|
173
|
-
|
|
174
|
-
utils.callback(listenersPops.dataChanged, _this, [data, modelData, store]);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}, stores);
|
|
178
|
-
|
|
179
|
-
if ((viewname || url) && data == null && options == null) {
|
|
180
|
-
var isCached = cached;
|
|
181
|
-
var isCacheKey = cacheKey;
|
|
182
|
-
|
|
183
|
-
if (viewname) {
|
|
184
|
-
if (typeof cached !== "boolean") {
|
|
185
|
-
isCached = true;
|
|
186
|
-
isCacheKey = isCacheKey ? isCacheKey : viewname;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
storeProps = _objectSpread(_objectSpread({}, {
|
|
191
|
-
autoLoad: true,
|
|
192
|
-
url: url || requestViewUrl + viewname,
|
|
193
|
-
//读字典,url固定,viewname
|
|
194
|
-
cached: isCached,
|
|
195
|
-
cacheKey: isCacheKey
|
|
196
|
-
}), storeProps);
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
_this2.store = new Store(storeProps);
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
return _this2;
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
_createClass(NSCSelect, [{
|
|
206
|
-
key: "resetData",
|
|
207
|
-
value: function resetData() {
|
|
208
|
-
var children = this.props.children;
|
|
209
|
-
var _this$state = this.state,
|
|
210
|
-
allDataSource = _this$state.allDataSource,
|
|
211
|
-
allChildren = _this$state.allChildren;
|
|
212
|
-
|
|
213
|
-
if (children) {
|
|
214
|
-
this.setState({
|
|
215
|
-
children: allChildren
|
|
216
|
-
});
|
|
217
|
-
} else {
|
|
218
|
-
this.setState({
|
|
219
|
-
dataSource: allDataSource
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
}, {
|
|
224
|
-
key: "getData",
|
|
225
|
-
value: function getData() {
|
|
226
|
-
return this.state.allDataSource;
|
|
227
|
-
}
|
|
228
|
-
}, {
|
|
229
|
-
key: "getValue",
|
|
230
|
-
value: function getValue() {
|
|
231
|
-
return this.state.selectValue;
|
|
232
|
-
}
|
|
233
|
-
}, {
|
|
234
|
-
key: "setValue",
|
|
235
|
-
value: function setValue(value) {
|
|
236
|
-
this.setState({
|
|
237
|
-
selectValue: value
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
}, {
|
|
241
|
-
key: "componentDidMount",
|
|
242
|
-
value: function componentDidMount() {
|
|
243
|
-
var _this$props = this.props,
|
|
244
|
-
data = _this$props.data,
|
|
245
|
-
options = _this$props.options,
|
|
246
|
-
children = _this$props.children;
|
|
247
|
-
|
|
248
|
-
if (!children && (data || options)) {
|
|
249
|
-
this.setState({
|
|
250
|
-
dataSource: data ? data : options,
|
|
251
|
-
allDataSource: data ? data : options
|
|
252
|
-
});
|
|
253
|
-
} else if (children) {
|
|
254
|
-
this.setState({
|
|
255
|
-
children: children,
|
|
256
|
-
allChildren: children
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
}, {
|
|
261
|
-
key: "componentDidUpdate",
|
|
262
|
-
value: function componentDidUpdate(newProps, newState, Snapshot) {
|
|
263
|
-
var _this$props2 = this.props,
|
|
264
|
-
data = _this$props2.data,
|
|
265
|
-
options = _this$props2.options,
|
|
266
|
-
children = _this$props2.children;
|
|
267
|
-
var _this$state2 = this.state,
|
|
268
|
-
allDataSource = _this$state2.allDataSource,
|
|
269
|
-
allChildren = _this$state2.allChildren;
|
|
270
|
-
|
|
271
|
-
if (!children && (data || options)) {
|
|
272
|
-
var newData = data ? data : options;
|
|
273
|
-
|
|
274
|
-
if (JSON.stringify(allDataSource) !== JSON.stringify(newData)) {
|
|
275
|
-
this.setState({
|
|
276
|
-
dataSource: newData,
|
|
277
|
-
allDataSource: newData
|
|
278
|
-
});
|
|
279
|
-
}
|
|
280
|
-
} else if (children && Array.isArray(children)) {
|
|
281
|
-
var stateChildrenProps = [];
|
|
282
|
-
allChildren.map(function (s) {
|
|
283
|
-
stateChildrenProps.push(s.props);
|
|
284
|
-
});
|
|
285
|
-
var childrenProps = [];
|
|
286
|
-
children.map(function (c) {
|
|
287
|
-
childrenProps.push(c.props);
|
|
288
|
-
});
|
|
289
|
-
|
|
290
|
-
if (JSON.stringify(stateChildrenProps) !== JSON.stringify(childrenProps)) {
|
|
291
|
-
this.setState({
|
|
292
|
-
children: children,
|
|
293
|
-
allChildren: children
|
|
294
|
-
});
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
}, {
|
|
299
|
-
key: "onSearch",
|
|
300
|
-
value: function onSearch(value) {
|
|
301
|
-
var _this$state3 = this.state,
|
|
302
|
-
allDataSource = _this$state3.allDataSource,
|
|
303
|
-
allChildren = _this$state3.allChildren;
|
|
304
|
-
var _this$props3 = this.props,
|
|
305
|
-
_this$props3$filterOp = _this$props3.filterOption,
|
|
306
|
-
filterOption = _this$props3$filterOp === void 0 ? true : _this$props3$filterOp,
|
|
307
|
-
onSearch = _this$props3.onSearch,
|
|
308
|
-
children = _this$props3.children,
|
|
309
|
-
_this$props3$store = _this$props3.store,
|
|
310
|
-
store = _this$props3$store === void 0 ? {} : _this$props3$store;
|
|
311
|
-
var viewname = store.viewname;
|
|
312
|
-
var labelField = viewname ? "dictValue" : "label";
|
|
313
|
-
|
|
314
|
-
if (filterOption) {
|
|
315
|
-
var result = [];
|
|
316
|
-
|
|
317
|
-
if (!children) {
|
|
318
|
-
if (value) {
|
|
319
|
-
allDataSource.forEach(function (item) {
|
|
320
|
-
var label = "";
|
|
321
|
-
|
|
322
|
-
if (labelField.split(",").length == 1) {
|
|
323
|
-
label = item[labelField];
|
|
324
|
-
} else {
|
|
325
|
-
var labelFields = labelField.split(",");
|
|
326
|
-
labelFields.map(function (l, index) {
|
|
327
|
-
label = index == 0 ? label + item[l] : label + "-" + item[l];
|
|
328
|
-
});
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
var flag = PinyinMatch.match(label, value);
|
|
332
|
-
|
|
333
|
-
if (flag) {
|
|
334
|
-
result.push(item);
|
|
335
|
-
}
|
|
336
|
-
});
|
|
337
|
-
this.setState({
|
|
338
|
-
dataSource: result
|
|
339
|
-
});
|
|
340
|
-
} else {
|
|
341
|
-
this.setState({
|
|
342
|
-
dataSource: allDataSource
|
|
343
|
-
});
|
|
344
|
-
}
|
|
345
|
-
} else {
|
|
346
|
-
if (value) {
|
|
347
|
-
if (Array.isArray(allChildren)) {
|
|
348
|
-
allChildren.map(function (child, index) {
|
|
349
|
-
var _child$props;
|
|
350
|
-
|
|
351
|
-
var label = child === null || child === void 0 ? void 0 : (_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.children;
|
|
352
|
-
var flag = PinyinMatch.match(label, value);
|
|
353
|
-
|
|
354
|
-
if (flag) {
|
|
355
|
-
result.push(child);
|
|
356
|
-
}
|
|
357
|
-
});
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
this.setState({
|
|
361
|
-
children: result
|
|
362
|
-
});
|
|
363
|
-
} else {
|
|
364
|
-
this.setState({
|
|
365
|
-
children: children
|
|
366
|
-
});
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
onSearch && onSearch(value);
|
|
372
|
-
}
|
|
373
|
-
}, {
|
|
374
|
-
key: "renderOption",
|
|
375
|
-
value: function renderOption(optionData) {
|
|
376
|
-
var _this$props4 = this.props,
|
|
377
|
-
_this$props4$store = _this$props4.store,
|
|
378
|
-
store = _this$props4$store === void 0 ? {} : _this$props4$store,
|
|
379
|
-
_this$props4$valueTyp = _this$props4.valueType,
|
|
380
|
-
valueType = _this$props4$valueTyp === void 0 ? "string" : _this$props4$valueTyp;
|
|
381
|
-
var viewname = store.viewname;
|
|
382
|
-
var valueField = viewname ? "dictKey" : "value";
|
|
383
|
-
var labelField = viewname ? "dictValue" : "label";
|
|
384
|
-
return optionData.map(function (item) {
|
|
385
|
-
var value;
|
|
386
|
-
|
|
387
|
-
if (valueField.split(",").length == 1) {
|
|
388
|
-
value = valueType === "number" ? Number(item[valueField]) : item[valueField] + "";
|
|
389
|
-
} else {
|
|
390
|
-
var valueFields = valueField.split(",");
|
|
391
|
-
valueFields.map(function (v, index) {
|
|
392
|
-
value = index == 0 ? value + item[v] : value + "," + item[v];
|
|
393
|
-
});
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
var key = item.id ? item.id !== "undefined" ? item.id : value : value;
|
|
397
|
-
var label = "";
|
|
398
|
-
|
|
399
|
-
if (labelField.split(",").length == 1) {
|
|
400
|
-
label = item[labelField];
|
|
401
|
-
} else {
|
|
402
|
-
var labelFields = labelField.split(",");
|
|
403
|
-
labelFields.map(function (l, index) {
|
|
404
|
-
label = index == 0 ? label + item[l] : label + "-" + item[l];
|
|
405
|
-
});
|
|
406
|
-
}
|
|
407
|
-
|
|
408
|
-
return /*#__PURE__*/React.createElement(Option, {
|
|
409
|
-
key: key,
|
|
410
|
-
value: value,
|
|
411
|
-
label: label,
|
|
412
|
-
disabled: item.disabled ? true : false
|
|
413
|
-
}, label);
|
|
414
|
-
});
|
|
415
|
-
}
|
|
416
|
-
}, {
|
|
417
|
-
key: "renderChildren",
|
|
418
|
-
value: function renderChildren() {
|
|
419
|
-
var _this3 = this;
|
|
420
|
-
|
|
421
|
-
var _this$props$showGroup = this.props.showGroup,
|
|
422
|
-
showGroup = _this$props$showGroup === void 0 ? true : _this$props$showGroup;
|
|
423
|
-
var _this$state4 = this.state,
|
|
424
|
-
dataSource = _this$state4.dataSource,
|
|
425
|
-
children = _this$state4.children;
|
|
426
|
-
|
|
427
|
-
if (children) {
|
|
428
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, children);
|
|
429
|
-
} else {
|
|
430
|
-
var optGroupData = {},
|
|
431
|
-
optionData = [];
|
|
432
|
-
dataSource.forEach(function (item) {
|
|
433
|
-
var label = item.groupName;
|
|
434
|
-
|
|
435
|
-
if (label && showGroup) {
|
|
436
|
-
if (!optGroupData[label]) optGroupData[label] = [];
|
|
437
|
-
optGroupData[label].push(item);
|
|
438
|
-
} else {
|
|
439
|
-
optionData.push(item);
|
|
440
|
-
}
|
|
441
|
-
});
|
|
442
|
-
var option = this.renderOption(optionData);
|
|
443
|
-
var optGroup = Object.keys(optGroupData).map(function (key) {
|
|
444
|
-
return /*#__PURE__*/React.createElement(OptGroup, {
|
|
445
|
-
key: key,
|
|
446
|
-
label: key
|
|
447
|
-
}, _this3.renderOption(optGroupData[key]));
|
|
448
|
-
});
|
|
449
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, option, optGroup);
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
}, {
|
|
453
|
-
key: "onChange",
|
|
454
|
-
value: function onChange(value, options) {
|
|
455
|
-
var onChange = this.props.onChange;
|
|
456
|
-
this.setState({
|
|
457
|
-
selectValue: value
|
|
458
|
-
});
|
|
459
|
-
|
|
460
|
-
if (onChange) {
|
|
461
|
-
onChange(value, options);
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
}, {
|
|
465
|
-
key: "onDropdownVisibleChange",
|
|
466
|
-
value: function onDropdownVisibleChange(open) {
|
|
467
|
-
if (!open) {
|
|
468
|
-
this.resetData();
|
|
469
|
-
}
|
|
470
|
-
}
|
|
471
|
-
}, {
|
|
472
|
-
key: "render",
|
|
473
|
-
value: function render() {
|
|
474
|
-
var _this$props5 = this.props,
|
|
475
|
-
children = _this$props5.children,
|
|
476
|
-
store = _this$props5.store,
|
|
477
|
-
data = _this$props5.data,
|
|
478
|
-
onChange = _this$props5.onChange,
|
|
479
|
-
options = _this$props5.options,
|
|
480
|
-
labelField = _this$props5.labelField,
|
|
481
|
-
valueField = _this$props5.valueField,
|
|
482
|
-
defaultStyle = _this$props5.defaultStyle,
|
|
483
|
-
_this$props5$showGrou = _this$props5.showGroup,
|
|
484
|
-
showGroup = _this$props5$showGrou === void 0 ? true : _this$props5$showGrou,
|
|
485
|
-
addData = _this$props5.addData,
|
|
486
|
-
deleteData = _this$props5.deleteData,
|
|
487
|
-
valueType = _this$props5.valueType,
|
|
488
|
-
params = _objectWithoutProperties(_this$props5, _excluded2);
|
|
489
|
-
|
|
490
|
-
var props = {
|
|
491
|
-
filterOption: false,
|
|
492
|
-
showSearch: true,
|
|
493
|
-
optionFilterProp: "label",
|
|
494
|
-
placeholder: "请选择",
|
|
495
|
-
allowClear: true
|
|
496
|
-
};
|
|
497
|
-
|
|
498
|
-
var _config2 = config(),
|
|
499
|
-
antdStyle = _config2.antdStyle;
|
|
500
|
-
|
|
501
|
-
if ((defaultStyle || antdStyle) && defaultStyle === true) {
|
|
502
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
503
|
-
className: cls(styles["nsc_select"], this.props.className)
|
|
504
|
-
}, /*#__PURE__*/React.createElement(_Select, _extends({
|
|
505
|
-
value: this.state.selectValue,
|
|
506
|
-
onChange: this.onChange.bind(this),
|
|
507
|
-
onSearch: this.onSearch.bind(this),
|
|
508
|
-
onDropdownVisibleChange: this.onDropdownVisibleChange.bind(this)
|
|
509
|
-
}, props, params), this.renderChildren()));
|
|
510
|
-
} else {
|
|
511
|
-
return /*#__PURE__*/React.createElement(_Select, _extends({
|
|
512
|
-
value: this.state.selectValue,
|
|
513
|
-
onSearch: this.onSearch.bind(this),
|
|
514
|
-
onChange: this.onChange.bind(this),
|
|
515
|
-
onDropdownVisibleChange: this.onDropdownVisibleChange.bind(this)
|
|
516
|
-
}, props, params), this.renderChildren());
|
|
517
|
-
}
|
|
518
|
-
}
|
|
519
|
-
}]);
|
|
520
|
-
|
|
521
|
-
return NSCSelect;
|
|
522
|
-
}(PureComponent);
|
|
523
|
-
|
|
524
|
-
_defineProperty(NSCSelect, "Option", Option);
|
|
525
|
-
|
|
526
|
-
_defineProperty(NSCSelect, "OptGroup", OptGroup);
|
|
527
|
-
|
|
528
|
-
export { NSCSelect as default };
|
|
529
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3NlbGVjdC9pbmRleC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiU3RvcmUiLCJ1dGlscyIsImNvbmZpZyIsInN0eWxlcyIsImNscyIsIlBpbnlpbk1hdGNoIiwiT3B0aW9uIiwiT3B0R3JvdXAiLCJOU0NTZWxlY3QiLCJwcm9wcyIsImRhdGFTb3VyY2UiLCJzZWxlY3RWYWx1ZSIsImFsbERhdGFTb3VyY2UiLCJjaGlsZHJlbiIsImFsbENoaWxkcmVuIiwiZGF0YSIsInN0b3JlIiwib3B0aW9ucyIsImFkZERhdGEiLCJkZWxldGVEYXRhIiwidXJsIiwibGlzdGVuZXJzIiwibGlzdGVuZXJzUG9wcyIsInZpZXduYW1lIiwiY2FjaGVkIiwiY2FjaGVLZXkiLCJ2aWV3dHlwZSIsInN0b3JlcyIsInZhbHVlRmllbGQiLCJ2aWV3VXJsIiwidmlld0JpelVybCIsInJlcXVlc3RWaWV3VXJsIiwiZ2V0QWxsRGF0YSIsIkFycmF5IiwiaXNBcnJheSIsIm5ld0RhdGEiLCJsZW5ndGgiLCJzcGxpY2VEYXRhIiwidmFsdWVGaWVsZHMiLCJzcGxpdCIsIm1hcCIsIml0ZW0iLCJpIiwidmFsdWUiLCJ2IiwiaW5kZXgiLCJpbmRleE9mIiwicHVzaCIsIkVycm9yIiwiX3RoaXMiLCJzdG9yZVByb3BzIiwibW9kZWwiLCJjb21wb25lbnQiLCJvbkJlZm9yZUxvYWQiLCJjYWxsYmFjayIsImxvYWQiLCJtb2RlbERhdGEiLCJzZXRTdGF0ZSIsImRhdGFDaGFuZ2VkIiwiaXNDYWNoZWQiLCJpc0NhY2hlS2V5IiwiYXV0b0xvYWQiLCJzdGF0ZSIsIm5ld1Byb3BzIiwibmV3U3RhdGUiLCJTbmFwc2hvdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0ZUNoaWxkcmVuUHJvcHMiLCJzIiwiY2hpbGRyZW5Qcm9wcyIsImMiLCJmaWx0ZXJPcHRpb24iLCJvblNlYXJjaCIsImxhYmVsRmllbGQiLCJyZXN1bHQiLCJmb3JFYWNoIiwibGFiZWwiLCJsYWJlbEZpZWxkcyIsImwiLCJmbGFnIiwibWF0Y2giLCJjaGlsZCIsIm9wdGlvbkRhdGEiLCJ2YWx1ZVR5cGUiLCJOdW1iZXIiLCJrZXkiLCJpZCIsImRpc2FibGVkIiwic2hvd0dyb3VwIiwib3B0R3JvdXBEYXRhIiwiZ3JvdXBOYW1lIiwib3B0aW9uIiwicmVuZGVyT3B0aW9uIiwib3B0R3JvdXAiLCJPYmplY3QiLCJrZXlzIiwib25DaGFuZ2UiLCJvcGVuIiwicmVzZXREYXRhIiwiZGVmYXVsdFN0eWxlIiwicGFyYW1zIiwic2hvd1NlYXJjaCIsIm9wdGlvbkZpbHRlclByb3AiLCJwbGFjZWhvbGRlciIsImFsbG93Q2xlYXIiLCJhbnRkU3R5bGUiLCJjbGFzc05hbWUiLCJiaW5kIiwib25Ecm9wZG93blZpc2libGVDaGFuZ2UiLCJyZW5kZXJDaGlsZHJlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBT0EsS0FBUCxJQUFnQkMsYUFBaEIsUUFBcUMsT0FBckM7QUFFQSxPQUFPQyxLQUFQLE1BQWtDLGFBQWxDO0FBQ0EsU0FBU0MsS0FBVCxRQUFzQix1QkFBdEI7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLFdBQW5CO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixjQUFuQjtBQUNBLE9BQU9DLEdBQVAsTUFBZ0IsWUFBaEI7QUFFQSxPQUFPQyxXQUFQLE1BQXdCLGNBQXhCO0FBQ0EsSUFBUUMsTUFBUixXQUFRQSxNQUFSO0FBQUEsSUFBZ0JDLFFBQWhCLFdBQWdCQSxRQUFoQjs7SUFlcUJDLFM7Ozs7O0FBV25CLHFCQUFZQyxLQUFaLEVBQW1CO0FBQUE7O0FBQUE7O0FBQ2pCLCtCQUFNQSxLQUFOOztBQURpQiw2REFSWDtBQUNOQyxNQUFBQSxVQUFVLEVBQUUsRUFETjtBQUVOQyxNQUFBQSxXQUFXLEVBQUUsSUFGUDtBQUdOQyxNQUFBQSxhQUFhLEVBQUUsRUFIVDtBQUlOQyxNQUFBQSxRQUFRLEVBQUUs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dXJlQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IFNlbGVjdCwgU2VsZWN0UHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgU3RvcmUsIHsgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vY29uZmlnXCI7XHJcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCBQaW55aW5NYXRjaCBmcm9tIFwicGlueWluLW1hdGNoXCI7XHJcbmNvbnN0IHsgT3B0aW9uLCBPcHRHcm91cCB9ID0gU2VsZWN0O1xyXG5cclxuaW50ZXJmYWNlIElTZWxlY3RQcm9wcyBleHRlbmRzIFNlbGVjdFByb3BzPGFueT4ge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBkYXRhPzogQXJyYXk8T2JqZWN0PjsgLy/pu5jorqTmlbDmja5cclxuICBsYWJlbEZpZWxkPzogc3RyaW5nO1xyXG4gIHZhbHVlRmllbGQ/OiBzdHJpbmc7XHJcbiAgZGVmYXVsdFN0eWxlPzogYm9vbGVhbjtcclxuICBzaG93R3JvdXA/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWIhue7hFxyXG4gIGFkZERhdGE/OiBBcnJheTxPYmplY3Q+OyAvL+mFjeWQiHN0b3Jl5L2/55So77yM5LuO5aKe5Yqg6aKd5aSW55qE5pWw5o2uXHJcbiAgZGVsZXRlRGF0YT86IEFycmF5PFN0cmluZz47IC8v6YWN5ZCIc3RvcmXkvb/nlKjvvIzliKDpmaTku47mlbDmja7lupPkuK3ojrflj5bliLDnmoTmjIflrprmlbDmja5cclxuICB2YWx1ZUJyZWFrPzogc3RyaW5nOyAvL+WkmuS4qnZhbHVl5L2/55So55qE5YiG6ZqU56ymXHJcbiAgdmFsdWVUeXBlPzogXCJzdHJpbmdcIiB8IFwibnVtYmVyXCI7XHJcbiAgW3Byb05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOU0NTZWxlY3QgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PElTZWxlY3RQcm9wcz4ge1xyXG4gIHN0YXRpYyBPcHRpb24gPSBPcHRpb247XHJcbiAgc3RhdGljIE9wdEdyb3VwID0gT3B0R3JvdXA7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBkYXRhU291cmNlOiBbXSxcclxuICAgIHNlbGVjdFZhbHVlOiBudWxsLFxyXG4gICAgYWxsRGF0YVNvdXJjZTogW10sXHJcbiAgICBjaGlsZHJlbjogbnVsbCxcclxuICAgIGFsbENoaWxkcmVuOiBudWxsLFxyXG4gIH07XHJcbiAgc3RvcmUgPSB7fSBhcyBTdG9yZVByb3BzO1xyXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIHN0b3JlID0ge30sXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBvcHRpb25zLFxyXG4gICAgICBhZGREYXRhID0gW10sXHJcbiAgICAgIGRlbGV0ZURhdGEgPSBbXSxcclxuICAgIH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgdXJsLFxyXG4gICAgICBsaXN0ZW5lcnM6IGxpc3RlbmVyc1BvcHMgPSB7fSxcclxuICAgICAgdmlld25hbWUsXHJcbiAgICAgIGNhY2hlZCxcclxuICAgICAgY2FjaGVLZXksXHJcbiAgICAgIHZpZXd0eXBlID0gXCJzeXN0ZW1cIixcclxuICAgICAgLi4uc3RvcmVzXHJcbiAgICB9ID0gc3RvcmU7XHJcbiAgICBjb25zdCB2YWx1ZUZpZWxkID0gdmlld25hbWUgPyBcImRpY3RLZXlcIiA6IFwidmFsdWVcIjtcclxuICAgIGxldCB7IHZpZXdVcmwsIHZpZXdCaXpVcmwgfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHJlcXVlc3RWaWV3VXJsID0gdmlld3R5cGUgPT0gXCJzeXN0ZW1cIiA/IHZpZXdVcmwgOiB2aWV3Qml6VXJsO1xyXG4gICAgY29uc3QgZ2V0QWxsRGF0YSA9IChkYXRhKSA9PiB7XHJcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhKSkge1xyXG4gICAgICAgIHJldHVybiBbXTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgbmV3RGF0YSA9IFsuLi5kYXRhXTtcclxuICAgICAgaWYgKGFkZERhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIG5ld0RhdGEgPSBbLi4uYWRkRGF0YSwgLi4ubmV3RGF0YV07XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGRlbGV0ZURhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGxldCBzcGxpY2VEYXRhID0gW107XHJcbiAgICAgICAgY29uc3QgdmFsdWVGaWVsZHM6IGFueSA9IHZhbHVlRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgIG5ld0RhdGEubWFwKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgICBsZXQgdmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgdmFsdWVGaWVsZHMubWFwKCh2LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IGluZGV4ID09IDAgPyB2YWx1ZSArIGl0ZW1bdl0gOiB2YWx1ZSArIFwiLFwiICsgaXRlbVt2XTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaWYgKGRlbGV0ZURhdGEuaW5kZXhPZih2YWx1ZSkgPT0gLTEpIHtcclxuICAgICAgICAgICAgc3BsaWNlRGF0YS5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBzcGxpY2VEYXRhO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBuZXdEYXRhO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgaWYgKCFjaGlsZHJlbikge1xyXG4gICAgICBpZiAoIShkYXRhIHx8IHZpZXduYW1lIHx8IHVybCB8fCBvcHRpb25zKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOOAgXZpZXduYW1l44CBZGF0YeOAgW9wdGlvbnPkuI3og73pg73kuLrnqbrvvIFcIik7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgICAgbGV0IHN0b3JlUHJvcHMgPSB7XHJcbiAgICAgICAgbW9kZWw6IFwibW9kZWxcIixcclxuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgbGlzdGVuZXJzOiB7XHJcbiAgICAgICAgICBvbkJlZm9yZUxvYWQ6IGZ1bmN0aW9uIChzdG9yZSwgb3B0aW9ucykge1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLm9uQmVmb3JlTG9hZCwgX3RoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IGZ1bmN0aW9uIChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld0RhdGEgPSBnZXRBbGxEYXRhKGRhdGEpO1xyXG4gICAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IGRhdGFTb3VyY2U6IG5ld0RhdGEsIGFsbERhdGFTb3VyY2U6IG5ld0RhdGEgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1BvcHMubG9hZCwgX3RoaXMsIFtkYXRhLCBtb2RlbERhdGEsIHN0b3JlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZGF0YUNoYW5nZWQ6IGZ1bmN0aW9uIChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld0RhdGEgPSBnZXRBbGxEYXRhKGRhdGEpO1xyXG4gICAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IGRhdGFTb3VyY2U6IG5ld0RhdGEsIGFsbERhdGFTb3VyY2U6IG5ld0RhdGEgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1BvcHMuZGF0YUNoYW5nZWQsIF90aGlzLCBbXHJcbiAgICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgICBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgc3RvcmUsXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnN0b3JlcyxcclxuICAgICAgfTtcclxuICAgICAgaWYgKCh2aWV3bmFtZSB8fCB1cmwpICYmIGRhdGEgPT0gbnVsbCAmJiBvcHRpb25zID09IG51bGwpIHtcclxuICAgICAgICBsZXQgaXNDYWNoZWQgPSBjYWNoZWQ7XHJcbiAgICAgICAgbGV0IGlzQ2FjaGVLZXkgPSBjYWNoZUtleTtcclxuICAgICAgICBpZiAodmlld25hbWUpIHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgY2FjaGVkICE9PSBcImJvb2xlYW5cIikge1xyXG4gICAgICAgICAgICBpc0NhY2hlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGlzQ2FjaGVLZXkgPSBpc0NhY2hlS2V5ID8gaXNDYWNoZUtleSA6IHZpZXduYW1lO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICAgIC4uLntcclxuICAgICAgICAgICAgYXV0b0xvYWQ6IHRydWUsXHJcbiAgICAgICAgICAgIHVybDogdXJsIHx8IHJlcXVlc3RWaWV3VXJsICsgdmlld25hbWUsIC8v6K+75a2X5YW477yMdXJs5Zu65a6a77yMdmlld25hbWVcclxuICAgICAgICAgICAgY2FjaGVkOiBpc0NhY2hlZCxcclxuICAgICAgICAgICAgY2FjaGVLZXk6IGlzQ2FjaGVLZXksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4uc3RvcmVQcm9wcyxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3RvcmUgPSBuZXcgU3RvcmUoc3RvcmVQcm9wcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldERhdGEoKSB7XHJcbiAgICBjb25zdCB7IGNoaWxkcmVuIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBhbGxEYXRhU291cmNlLCBhbGxDaGlsZHJlbiB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGlmIChjaGlsZHJlbikge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY2hpbGRyZW46IGFsbENoaWxkcmVuIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZGF0YVNvdXJjZTogYWxsRGF0YVNvdXJjZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXREYXRhKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuYWxsRGF0YVNvdXJjZTtcclxuICB9XHJcblxyXG4gIGdldFZhbHVlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XHJcbiAgfVxyXG4gIHNldFZhbHVlKHZhbHVlKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0VmFsdWU6IHZhbHVlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgZGF0YSwgb3B0aW9ucywgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIWNoaWxkcmVuICYmIChkYXRhIHx8IG9wdGlvbnMpKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGRhdGFTb3VyY2U6IGRhdGEgPyBkYXRhIDogb3B0aW9ucyxcclxuICAgICAgICBhbGxEYXRhU291cmNlOiBkYXRhID8gZGF0YSA6IG9wdGlvbnMsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBjaGlsZHJlbjogY2hpbGRyZW4sXHJcbiAgICAgICAgYWxsQ2hpbGRyZW46IGNoaWxkcmVuLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKG5ld1Byb3BzLCBuZXdTdGF0ZSwgU25hcHNob3QpIHtcclxuICAgIGNvbnN0IHsgZGF0YSwgb3B0aW9ucywgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGFsbERhdGFTb3VyY2UsIGFsbENoaWxkcmVuIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgaWYgKCFjaGlsZHJlbiAmJiAoZGF0YSB8fCBvcHRpb25zKSkge1xyXG4gICAgICBjb25zdCBuZXdEYXRhID0gZGF0YSA/IGRhdGEgOiBvcHRpb25zO1xyXG4gICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoYWxsRGF0YVNvdXJjZSkgIT09IEpTT04uc3RyaW5naWZ5KG5ld0RhdGEpKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBkYXRhU291cmNlOiBuZXdEYXRhLFxyXG4gICAgICAgICAgYWxsRGF0YVNvdXJjZTogbmV3RGF0YSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjb25zdCBzdGF0ZUNoaWxkcmVuUHJvcHM6IGFueSA9IFtdO1xyXG4gICAgICBhbGxDaGlsZHJlbi5tYXAoKHM6IGFueSkgPT4ge1xyXG4gICAgICAgIHN0YXRlQ2hpbGRyZW5Qcm9wcy5wdXNoKHMucHJvcHMpO1xyXG4gICAgICB9KTtcclxuICAgICAgY29uc3QgY2hpbGRyZW5Qcm9wczogYW55ID0gW107XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoYzogYW55KSA9PiB7XHJcbiAgICAgICAgY2hpbGRyZW5Qcm9wcy5wdXNoKGMucHJvcHMpO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHN0YXRlQ2hpbGRyZW5Qcm9wcykgIT09IEpTT04uc3RyaW5naWZ5KGNoaWxkcmVuUHJvcHMpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLFxyXG4gICAgICAgICAgYWxsQ2hpbGRyZW46IGNoaWxkcmVuLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uU2VhcmNoKHZhbHVlKSB7XHJcbiAgICBjb25zdCB7IGFsbERhdGFTb3VyY2UsIGFsbENoaWxkcmVuIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBmaWx0ZXJPcHRpb24gPSB0cnVlLCBvblNlYXJjaCwgY2hpbGRyZW4sIHN0b3JlID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHZpZXduYW1lIH0gPSBzdG9yZTtcclxuICAgIGxldCBsYWJlbEZpZWxkID0gdmlld25hbWUgPyBcImRpY3RWYWx1ZVwiIDogXCJsYWJlbFwiO1xyXG4gICAgaWYgKGZpbHRlck9wdGlvbikge1xyXG4gICAgICBsZXQgcmVzdWx0ID0gW107XHJcbiAgICAgIGlmICghY2hpbGRyZW4pIHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgIGFsbERhdGFTb3VyY2UuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgbGFiZWwgPSBcIlwiO1xyXG4gICAgICAgICAgICBpZiAobGFiZWxGaWVsZC5zcGxpdChcIixcIikubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgICAgICBsYWJlbCA9IGl0ZW1bbGFiZWxGaWVsZF07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgbGFiZWxGaWVsZHM6IGFueSA9IGxhYmVsRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgICAgICAgIGxhYmVsRmllbGRzLm1hcCgobCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgIGxhYmVsID0gaW5kZXggPT0gMCA/IGxhYmVsICsgaXRlbVtsXSA6IGxhYmVsICsgXCItXCIgKyBpdGVtW2xdO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBmbGFnID0gUGlueWluTWF0Y2gubWF0Y2gobGFiZWwsIHZhbHVlKTtcclxuICAgICAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgICAgICByZXN1bHQucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgZGF0YVNvdXJjZTogcmVzdWx0LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBkYXRhU291cmNlOiBhbGxEYXRhU291cmNlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYWxsQ2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgIGFsbENoaWxkcmVuLm1hcCgoY2hpbGQ6IGFueSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgbGFiZWwgPSBjaGlsZD8ucHJvcHM/LmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgIGxldCBmbGFnID0gUGlueWluTWF0Y2gubWF0Y2gobGFiZWwsIHZhbHVlKTtcclxuICAgICAgICAgICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgY2hpbGRyZW46IHJlc3VsdCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBvblNlYXJjaCAmJiBvblNlYXJjaCh2YWx1ZSk7XHJcbiAgfVxyXG4gIHJlbmRlck9wdGlvbihvcHRpb25EYXRhKSB7XHJcbiAgICBsZXQgeyBzdG9yZSA9IHt9LCB2YWx1ZVR5cGUgPSBcInN0cmluZ1wiIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyB2aWV3bmFtZSB9ID0gc3RvcmU7XHJcbiAgICBjb25zdCB2YWx1ZUZpZWxkID0gdmlld25hbWUgPyBcImRpY3RLZXlcIiA6IFwidmFsdWVcIjtcclxuICAgIGNvbnN0IGxhYmVsRmllbGQgPSB2aWV3bmFtZSA/IFwiZGljdFZhbHVlXCIgOiBcImxhYmVsXCI7XHJcbiAgICByZXR1cm4gb3B0aW9uRGF0YS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgbGV0IHZhbHVlOiBhbnk7XHJcbiAgICAgIGlmICh2YWx1ZUZpZWxkLnNwbGl0KFwiLFwiKS5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgIHZhbHVlID1cclxuICAgICAgICAgIHZhbHVlVHlwZSA9PT0gXCJudW1iZXJcIlxyXG4gICAgICAgICAgICA/IE51bWJlcihpdGVtW3ZhbHVlRmllbGRdKVxyXG4gICAgICAgICAgICA6IGl0ZW1bdmFsdWVGaWVsZF0gKyBcIlwiO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlRmllbGRzOiBhbnkgPSB2YWx1ZUZpZWxkLnNwbGl0KFwiLFwiKTtcclxuICAgICAgICB2YWx1ZUZpZWxkcy5tYXAoKHYsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGluZGV4ID09IDAgPyB2YWx1ZSArIGl0ZW1bdl0gOiB2YWx1ZSArIFwiLFwiICsgaXRlbVt2XTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBsZXQga2V5ID0gaXRlbS5pZCA/IChpdGVtLmlkICE9PSBcInVuZGVmaW5lZFwiID8gaXRlbS5pZCA6IHZhbHVlKSA6IHZhbHVlO1xyXG4gICAgICBsZXQgbGFiZWwgPSBcIlwiO1xyXG4gICAgICBpZiAobGFiZWxGaWVsZC5zcGxpdChcIixcIikubGVuZ3RoID09IDEpIHtcclxuICAgICAgICBsYWJlbCA9IGl0ZW1bbGFiZWxGaWVsZF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgbGFiZWxGaWVsZHM6IGFueSA9IGxhYmVsRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgIGxhYmVsRmllbGRzLm1hcCgobCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIGxhYmVsID0gaW5kZXggPT0gMCA/IGxhYmVsICsgaXRlbVtsXSA6IGxhYmVsICsgXCItXCIgKyBpdGVtW2xdO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPE9wdGlvblxyXG4gICAgICAgICAga2V5PXtrZXl9XHJcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XHJcbiAgICAgICAgICBsYWJlbD17bGFiZWx9XHJcbiAgICAgICAgICBkaXNhYmxlZD17aXRlbS5kaXNhYmxlZCA/IHRydWUgOiBmYWxzZX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7bGFiZWx9XHJcbiAgICAgICAgPC9PcHRpb24+XHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmVuZGVyQ2hpbGRyZW4oKSB7XHJcbiAgICBjb25zdCB7IHNob3dHcm91cCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGRhdGFTb3VyY2UsIGNoaWxkcmVuIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIHJldHVybiA8PntjaGlsZHJlbn08Lz47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgb3B0R3JvdXBEYXRhID0ge30sXHJcbiAgICAgICAgb3B0aW9uRGF0YSA9IFtdO1xyXG4gICAgICBkYXRhU291cmNlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICBsZXQgbGFiZWwgPSBpdGVtLmdyb3VwTmFtZTtcclxuICAgICAgICBpZiAobGFiZWwgJiYgc2hvd0dyb3VwKSB7XHJcbiAgICAgICAgICBpZiAoIW9wdEdyb3VwRGF0YVtsYWJlbF0pIG9wdEdyb3VwRGF0YVtsYWJlbF0gPSBbXTtcclxuICAgICAgICAgIG9wdEdyb3VwRGF0YVtsYWJlbF0ucHVzaChpdGVtKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb3B0aW9uRGF0YS5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGxldCBvcHRpb24gPSB0aGlzLnJlbmRlck9wdGlvbihvcHRpb25EYXRhKTtcclxuICAgICAgbGV0IG9wdEdyb3VwID0gT2JqZWN0LmtleXMob3B0R3JvdXBEYXRhKS5tYXAoKGtleSkgPT4ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8T3B0R3JvdXAga2V5PXtrZXl9IGxhYmVsPXtrZXl9PlxyXG4gICAgICAgICAgICB7dGhpcy5yZW5kZXJPcHRpb24ob3B0R3JvdXBEYXRhW2tleV0pfVxyXG4gICAgICAgICAgPC9PcHRHcm91cD5cclxuICAgICAgICApO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8PlxyXG4gICAgICAgICAge29wdGlvbn1cclxuICAgICAgICAgIHtvcHRHcm91cH1cclxuICAgICAgICA8Lz5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgb25DaGFuZ2UodmFsdWUsIG9wdGlvbnMpIHtcclxuICAgIGNvbnN0IHsgb25DaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0VmFsdWU6IHZhbHVlLFxyXG4gICAgfSk7XHJcbiAgICBpZiAob25DaGFuZ2UpIHtcclxuICAgICAgb25DaGFuZ2UodmFsdWUsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG4gIH1cclxuICBvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZShvcGVuKSB7XHJcbiAgICBpZiAoIW9wZW4pIHtcclxuICAgICAgdGhpcy5yZXNldERhdGEoKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgc3RvcmUsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIG9uQ2hhbmdlLFxyXG4gICAgICBvcHRpb25zLFxyXG4gICAgICBsYWJlbEZpZWxkLFxyXG4gICAgICB2YWx1ZUZpZWxkLFxyXG4gICAgICBkZWZhdWx0U3R5bGUsXHJcbiAgICAgIHNob3dHcm91cCA9IHRydWUsXHJcbiAgICAgIGFkZERhdGEsXHJcbiAgICAgIGRlbGV0ZURhdGEsXHJcbiAgICAgIHZhbHVlVHlwZSxcclxuICAgICAgLi4ucGFyYW1zXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHByb3BzID0ge1xyXG4gICAgICBmaWx0ZXJPcHRpb246IGZhbHNlLFxyXG4gICAgICBzaG93U2VhcmNoOiB0cnVlLFxyXG4gICAgICBvcHRpb25GaWx0ZXJQcm9wOiBcImxhYmVsXCIsXHJcbiAgICAgIHBsYWNlaG9sZGVyOiBcIuivt+mAieaLqVwiLFxyXG4gICAgICBhbGxvd0NsZWFyOiB0cnVlLFxyXG4gICAgfTtcclxuICAgIGxldCB7IGFudGRTdHlsZSB9ID0gY29uZmlnKCk7XHJcbiAgICBpZiAoKGRlZmF1bHRTdHlsZSB8fCBhbnRkU3R5bGUpICYmIGRlZmF1bHRTdHlsZSA9PT0gdHJ1ZSkge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoc3R5bGVzW1wibnNjX3NlbGVjdFwiXSwgdGhpcy5wcm9wcy5jbGFzc05hbWUpfT5cclxuICAgICAgICAgIDxTZWxlY3RcclxuICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUuc2VsZWN0VmFsdWV9XHJcbiAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgIG9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlPXt0aGlzLm9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3RoaXMucmVuZGVyQ2hpbGRyZW4oKX1cclxuICAgICAgICAgIDwvU2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8U2VsZWN0XHJcbiAgICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZX1cclxuICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICBvbkNoYW5nZT17dGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgb25Ecm9wZG93blZpc2libGVDaGFuZ2U9e3RoaXMub25Ecm9wZG93blZpc2libGVDaGFuZ2UuYmluZCh0aGlzKX1cclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3RoaXMucmVuZGVyQ2hpbGRyZW4oKX1cclxuICAgICAgICA8L1NlbGVjdD5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|