@bigbinary/neeto-team-members-frontend 2.7.3 → 2.8.1

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/dist/index.cjs.js CHANGED
@@ -6,24 +6,24 @@ var initializers = require('@bigbinary/neeto-commons-frontend/initializers');
6
6
  var React = require('react');
7
7
  var pure = require('@bigbinary/neeto-commons-frontend/pure');
8
8
  var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
9
- var neetoIcons = require('@bigbinary/neeto-icons');
10
9
  var Container = require('@bigbinary/neeto-molecules/Container');
11
10
  var PageLoader = require('@bigbinary/neeto-molecules/PageLoader');
12
- var SubHeader$2 = require('@bigbinary/neeto-molecules/SubHeader');
13
- var neetoui = require('@bigbinary/neetoui');
14
11
  var ramda = require('ramda');
15
12
  var reactQuery = require('react-query');
16
13
  var devtools = require('react-query/devtools');
17
14
  var axios = require('axios');
15
+ var neetoIcons = require('@bigbinary/neeto-icons');
18
16
  var NeetoHeader = require('@bigbinary/neeto-molecules/Header');
17
+ var neetoui = require('@bigbinary/neetoui');
19
18
  var formik$1 = require('@bigbinary/neetoui/formik');
20
19
  var formik = require('formik');
21
20
  var yup = require('yup');
22
- var TableWrapper = require('@bigbinary/neeto-molecules/TableWrapper');
21
+ var classnames = require('classnames');
23
22
  var neetoFiltersFrontend = require('@bigbinary/neeto-filters-frontend');
23
+ var SubHeaderMolecule = require('@bigbinary/neeto-molecules/SubHeader');
24
+ var TableWrapper = require('@bigbinary/neeto-molecules/TableWrapper');
24
25
  var reactRouterDom = require('react-router-dom');
25
26
  var require$$0 = require('util');
26
- var classnames = require('classnames');
27
27
  var MenuBar = require('@bigbinary/neeto-molecules/MenuBar');
28
28
 
29
29
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -49,13 +49,13 @@ function _interopNamespace(e) {
49
49
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
50
50
  var Container__default = /*#__PURE__*/_interopDefaultLegacy(Container);
51
51
  var PageLoader__default = /*#__PURE__*/_interopDefaultLegacy(PageLoader);
52
- var SubHeader__default = /*#__PURE__*/_interopDefaultLegacy(SubHeader$2);
53
52
  var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
54
53
  var NeetoHeader__default = /*#__PURE__*/_interopDefaultLegacy(NeetoHeader);
55
54
  var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
55
+ var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
56
+ var SubHeaderMolecule__default = /*#__PURE__*/_interopDefaultLegacy(SubHeaderMolecule);
56
57
  var TableWrapper__default = /*#__PURE__*/_interopDefaultLegacy(TableWrapper);
57
58
  var require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0);
58
- var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
59
59
  var MenuBar__default = /*#__PURE__*/_interopDefaultLegacy(MenuBar);
60
60
 
61
61
  /*! @license DOMPurify 3.0.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.3/LICENSE */
@@ -1802,19 +1802,19 @@ function _iterableToArray(iter) {
1802
1802
  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
1803
1803
  }
1804
1804
 
1805
- function _arrayLikeToArray(arr, len) {
1805
+ function _arrayLikeToArray$1(arr, len) {
1806
1806
  if (len == null || len > arr.length) len = arr.length;
1807
1807
  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
1808
1808
  return arr2;
1809
1809
  }
1810
1810
 
1811
- function _unsupportedIterableToArray(o, minLen) {
1811
+ function _unsupportedIterableToArray$1(o, minLen) {
1812
1812
  if (!o) return;
1813
- if (typeof o === "string") return _arrayLikeToArray(o, minLen);
1813
+ if (typeof o === "string") return _arrayLikeToArray$1(o, minLen);
1814
1814
  var n = Object.prototype.toString.call(o).slice(8, -1);
1815
1815
  if (n === "Object" && o.constructor) n = o.constructor.name;
1816
1816
  if (n === "Map" || n === "Set") return Array.from(o);
1817
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
1817
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen);
1818
1818
  }
1819
1819
 
1820
1820
  function _nonIterableRest() {
@@ -1822,7 +1822,7 @@ function _nonIterableRest() {
1822
1822
  }
1823
1823
 
1824
1824
  function _toArray(arr) {
1825
- return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest();
1825
+ return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray$1(arr) || _nonIterableRest();
1826
1826
  }
1827
1827
 
1828
1828
  function ownKeys$6$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -5254,7 +5254,7 @@ function _iterableToArrayLimit(arr, i) {
5254
5254
  }
5255
5255
 
5256
5256
  function _slicedToArray(arr, i) {
5257
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
5257
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray$1(arr, i) || _nonIterableRest();
5258
5258
  }
5259
5259
 
5260
5260
  function ownKeys$d(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; }
@@ -5681,247 +5681,1644 @@ var hasPermission = function hasPermission() {
5681
5681
  }
5682
5682
  return false;
5683
5683
  };
5684
-
5685
- var SINGULAR = {
5686
- count: 1
5684
+ var isOverflown = function isOverflown(_ref) {
5685
+ var clientWidth = _ref.clientWidth,
5686
+ clientHeight = _ref.clientHeight,
5687
+ scrollWidth = _ref.scrollWidth,
5688
+ scrollHeight = _ref.scrollHeight;
5689
+ return scrollHeight > clientHeight || scrollWidth > clientWidth;
5687
5690
  };
5688
- var PLURAL = {
5689
- count: 2
5691
+ var getScrollBarWidth = function getScrollBarWidth() {
5692
+ var innerElement = document.createElement("p");
5693
+ innerElement.classList.add("ntm-scrollbar__inner");
5694
+ var outerElement = document.createElement("div");
5695
+ outerElement.classList.add("ntm-scrollbar__outer");
5696
+ outerElement.appendChild(innerElement);
5697
+ document.body.appendChild(outerElement);
5698
+ var w1 = innerElement.offsetWidth;
5699
+ outerElement.style.overflow = "scroll";
5700
+ var w2 = innerElement.offsetWidth;
5701
+ if (w1 === w2) w2 = outerElement.clientWidth;
5702
+ document.body.removeChild(outerElement);
5703
+ return w1 - w2;
5690
5704
  };
5691
- var MANAGE_MEMBER_PERMISSIONS = ["members.manage_members", "agents.manage_agents"];
5692
- var DEFAULT_PERMISSION = true;
5693
- var DEFAULT_PAGE_SIZE = 30;
5694
- var ADMIN_ROLE_NAME = "Admin";
5695
- var OWNER_ROLE_NAME = "Owner";
5696
- var ADMIN_ROLES = [ADMIN_ROLE_NAME, OWNER_ROLE_NAME];
5697
5705
 
5698
- var queryClient = new reactQuery.QueryClient({
5699
- queryCache: new reactQuery.QueryCache()
5700
- });
5706
+ var dist = {exports: {}};
5701
5707
 
5702
- var withReactQuery = function withReactQuery(Component) {
5703
- var QueryWrapper = function QueryWrapper(props) {
5704
- return /*#__PURE__*/React__default["default"].createElement(reactQuery.QueryClientProvider, {
5705
- client: queryClient
5706
- }, /*#__PURE__*/React__default["default"].createElement(Component, props), /*#__PURE__*/React__default["default"].createElement(devtools.ReactQueryDevtools, {
5707
- initialIsOpen: false,
5708
- position: "bottom-right"
5709
- }));
5710
- };
5711
- return QueryWrapper;
5712
- };
5708
+ dist.exports;
5713
5709
 
5714
- /* eslint-disable @bigbinary/neeto/no-dangling-constants */
5715
- var BASE_URL = "team_members";
5710
+ (function (module, exports) {
5711
+ (function webpackUniversalModuleDefinition(root, factory) {
5712
+ module.exports = factory(React__default["default"]);
5713
+ })(commonjsGlobal, function(__WEBPACK_EXTERNAL_MODULE_4__) {
5714
+ return /******/ (function(modules) { // webpackBootstrap
5715
+ /******/ // The module cache
5716
+ /******/ var installedModules = {};
5717
+ /******/
5718
+ /******/ // The require function
5719
+ /******/ function __webpack_require__(moduleId) {
5720
+ /******/
5721
+ /******/ // Check if module is in cache
5722
+ /******/ if(installedModules[moduleId]) {
5723
+ /******/ return installedModules[moduleId].exports;
5724
+ /******/ }
5725
+ /******/ // Create a new module (and put it into the cache)
5726
+ /******/ var module = installedModules[moduleId] = {
5727
+ /******/ i: moduleId,
5728
+ /******/ l: false,
5729
+ /******/ exports: {}
5730
+ /******/ };
5731
+ /******/
5732
+ /******/ // Execute the module function
5733
+ /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
5734
+ /******/
5735
+ /******/ // Flag the module as loaded
5736
+ /******/ module.l = true;
5737
+ /******/
5738
+ /******/ // Return the exports of the module
5739
+ /******/ return module.exports;
5740
+ /******/ }
5741
+ /******/
5742
+ /******/
5743
+ /******/ // expose the modules object (__webpack_modules__)
5744
+ /******/ __webpack_require__.m = modules;
5745
+ /******/
5746
+ /******/ // expose the module cache
5747
+ /******/ __webpack_require__.c = installedModules;
5748
+ /******/
5749
+ /******/ // identity function for calling harmony imports with the correct context
5750
+ /******/ __webpack_require__.i = function(value) { return value; };
5751
+ /******/
5752
+ /******/ // define getter function for harmony exports
5753
+ /******/ __webpack_require__.d = function(exports, name, getter) {
5754
+ /******/ if(!__webpack_require__.o(exports, name)) {
5755
+ /******/ Object.defineProperty(exports, name, {
5756
+ /******/ configurable: false,
5757
+ /******/ enumerable: true,
5758
+ /******/ get: getter
5759
+ /******/ });
5760
+ /******/ }
5761
+ /******/ };
5762
+ /******/
5763
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
5764
+ /******/ __webpack_require__.n = function(module) {
5765
+ /******/ var getter = module && module.__esModule ?
5766
+ /******/ function getDefault() { return module['default']; } :
5767
+ /******/ function getModuleExports() { return module; };
5768
+ /******/ __webpack_require__.d(getter, 'a', getter);
5769
+ /******/ return getter;
5770
+ /******/ };
5771
+ /******/
5772
+ /******/ // Object.prototype.hasOwnProperty.call
5773
+ /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
5774
+ /******/
5775
+ /******/ // __webpack_public_path__
5776
+ /******/ __webpack_require__.p = "";
5777
+ /******/
5778
+ /******/ // Load entry module and return exports
5779
+ /******/ return __webpack_require__(__webpack_require__.s = 10);
5780
+ /******/ })
5781
+ /************************************************************************/
5782
+ /******/ ([
5783
+ /* 0 */
5784
+ /***/ (function(module, exports) {
5785
+
5786
+ // shim for using process in browser
5787
+ var process = module.exports = {};
5788
+
5789
+ // cached from whatever global is present so that test runners that stub it
5790
+ // don't break things. But we need to wrap it in a try catch in case it is
5791
+ // wrapped in strict mode code which doesn't define any globals. It's inside a
5792
+ // function because try/catches deoptimize in certain engines.
5793
+
5794
+ var cachedSetTimeout;
5795
+ var cachedClearTimeout;
5796
+
5797
+ function defaultSetTimout() {
5798
+ throw new Error('setTimeout has not been defined');
5799
+ }
5800
+ function defaultClearTimeout () {
5801
+ throw new Error('clearTimeout has not been defined');
5802
+ }
5803
+ (function () {
5804
+ try {
5805
+ if (typeof setTimeout === 'function') {
5806
+ cachedSetTimeout = setTimeout;
5807
+ } else {
5808
+ cachedSetTimeout = defaultSetTimout;
5809
+ }
5810
+ } catch (e) {
5811
+ cachedSetTimeout = defaultSetTimout;
5812
+ }
5813
+ try {
5814
+ if (typeof clearTimeout === 'function') {
5815
+ cachedClearTimeout = clearTimeout;
5816
+ } else {
5817
+ cachedClearTimeout = defaultClearTimeout;
5818
+ }
5819
+ } catch (e) {
5820
+ cachedClearTimeout = defaultClearTimeout;
5821
+ }
5822
+ } ());
5823
+ function runTimeout(fun) {
5824
+ if (cachedSetTimeout === setTimeout) {
5825
+ //normal enviroments in sane situations
5826
+ return setTimeout(fun, 0);
5827
+ }
5828
+ // if setTimeout wasn't available but was latter defined
5829
+ if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
5830
+ cachedSetTimeout = setTimeout;
5831
+ return setTimeout(fun, 0);
5832
+ }
5833
+ try {
5834
+ // when when somebody has screwed with setTimeout but no I.E. maddness
5835
+ return cachedSetTimeout(fun, 0);
5836
+ } catch(e){
5837
+ try {
5838
+ // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
5839
+ return cachedSetTimeout.call(null, fun, 0);
5840
+ } catch(e){
5841
+ // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
5842
+ return cachedSetTimeout.call(this, fun, 0);
5843
+ }
5844
+ }
5716
5845
 
5717
- var fetch$3 = function fetch() {
5718
- return axios__default["default"].get("".concat(BASE_URL, "/permissions"));
5719
- };
5720
- var permissionsApi = {
5721
- fetch: fetch$3
5722
- };
5723
5846
 
5724
- var DEFAULT_STALE_TIME = 300000; // 5 minutes
5847
+ }
5848
+ function runClearTimeout(marker) {
5849
+ if (cachedClearTimeout === clearTimeout) {
5850
+ //normal enviroments in sane situations
5851
+ return clearTimeout(marker);
5852
+ }
5853
+ // if clearTimeout wasn't available but was latter defined
5854
+ if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
5855
+ cachedClearTimeout = clearTimeout;
5856
+ return clearTimeout(marker);
5857
+ }
5858
+ try {
5859
+ // when when somebody has screwed with setTimeout but no I.E. maddness
5860
+ return cachedClearTimeout(marker);
5861
+ } catch (e){
5862
+ try {
5863
+ // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
5864
+ return cachedClearTimeout.call(null, marker);
5865
+ } catch (e){
5866
+ // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
5867
+ // Some versions of I.E. have different rules for clearTimeout vs setTimeout
5868
+ return cachedClearTimeout.call(this, marker);
5869
+ }
5870
+ }
5725
5871
 
5726
- var QUERY_KEYS = {
5727
- PERMISSIONS: "neeto-team-members-permissions",
5728
- ROLES: "neeto-team-members-roles",
5729
- GLOBAL_ROLES: "neeto-team-members-global-roles",
5730
- TEAMS: "neeto-team-members-teams",
5731
- TEAMS_DEPENDENCIES: "neeto-team-members-teams-dependencies"
5732
- };
5733
5872
 
5734
- function ownKeys$c(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
5735
- function _objectSpread$c(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$c(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$c(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
5736
- var useFetchPermissions = function useFetchPermissions() {
5737
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
5738
- return reactQuery.useQuery(QUERY_KEYS.PERMISSIONS, permissionsApi.fetch, _objectSpread$c({
5739
- staleTime: DEFAULT_STALE_TIME,
5740
- select: function select(response) {
5741
- return response === null || response === void 0 ? void 0 : response.permissions;
5742
- }
5743
- }, options));
5744
- };
5745
5873
 
5746
- var fetch$2 = function fetch() {
5747
- return axios__default["default"].get("".concat(BASE_URL, "/global_roles"));
5748
- };
5749
- var globalRolesApi = {
5750
- fetch: fetch$2
5751
- };
5874
+ }
5875
+ var queue = [];
5876
+ var draining = false;
5877
+ var currentQueue;
5878
+ var queueIndex = -1;
5879
+
5880
+ function cleanUpNextTick() {
5881
+ if (!draining || !currentQueue) {
5882
+ return;
5883
+ }
5884
+ draining = false;
5885
+ if (currentQueue.length) {
5886
+ queue = currentQueue.concat(queue);
5887
+ } else {
5888
+ queueIndex = -1;
5889
+ }
5890
+ if (queue.length) {
5891
+ drainQueue();
5892
+ }
5893
+ }
5752
5894
 
5753
- var fetch$1 = function fetch() {
5754
- return axios__default["default"].get("".concat(BASE_URL, "/organization_roles"));
5755
- };
5756
- var create$1 = function create(payload) {
5757
- return axios__default["default"].post("".concat(BASE_URL, "/organization_roles"), payload);
5758
- };
5759
- var update$1 = function update(id, payload) {
5760
- return axios__default["default"].patch("".concat(BASE_URL, "/organization_roles/").concat(id), payload);
5761
- };
5762
- var destroy = function destroy(id, payload) {
5763
- return axios__default["default"]["delete"]("".concat(BASE_URL, "/organization_roles/").concat(id), {
5764
- data: payload
5765
- });
5766
- };
5767
- var bulkUpdate$1 = function bulkUpdate(payload) {
5768
- return axios__default["default"].patch("".concat(BASE_URL, "/organization_roles/bulk_update"), payload);
5769
- };
5770
- var organizationRolesApi = {
5771
- bulkUpdate: bulkUpdate$1,
5772
- create: create$1,
5773
- destroy: destroy,
5774
- fetch: fetch$1,
5775
- update: update$1
5776
- };
5895
+ function drainQueue() {
5896
+ if (draining) {
5897
+ return;
5898
+ }
5899
+ var timeout = runTimeout(cleanUpNextTick);
5900
+ draining = true;
5901
+
5902
+ var len = queue.length;
5903
+ while(len) {
5904
+ currentQueue = queue;
5905
+ queue = [];
5906
+ while (++queueIndex < len) {
5907
+ if (currentQueue) {
5908
+ currentQueue[queueIndex].run();
5909
+ }
5910
+ }
5911
+ queueIndex = -1;
5912
+ len = queue.length;
5913
+ }
5914
+ currentQueue = null;
5915
+ draining = false;
5916
+ runClearTimeout(timeout);
5917
+ }
5777
5918
 
5778
- var _excluded$2 = ["onSuccess"],
5779
- _excluded2$2 = ["onSuccess"],
5780
- _excluded3$1 = ["onSuccess"],
5781
- _excluded4 = ["onSuccess"];
5782
- function ownKeys$b(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
5783
- function _objectSpread$b(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$b(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$b(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
5784
- var useFetchRoles = function useFetchRoles() {
5785
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
5786
- return reactQuery.useQuery(QUERY_KEYS.ROLES, organizationRolesApi.fetch, _objectSpread$b({
5787
- staleTime: DEFAULT_STALE_TIME,
5788
- select: function select(response) {
5789
- return response === null || response === void 0 ? void 0 : response.organizationRoles;
5790
- }
5791
- }, options));
5792
- };
5793
- var useFetchGlobalRoles = function useFetchGlobalRoles() {
5794
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
5795
- return reactQuery.useQuery(QUERY_KEYS.GLOBAL_ROLES, globalRolesApi.fetch, _objectSpread$b({
5796
- staleTime: DEFAULT_STALE_TIME
5797
- }, options));
5798
- };
5799
- var useCreateRole = function useCreateRole(_ref) {
5800
- var _onSuccess = _ref.onSuccess,
5801
- options = _objectWithoutProperties(_ref, _excluded$2);
5802
- return reactQuery.useMutation(organizationRolesApi.create, _objectSpread$b({
5803
- onSuccess: function onSuccess(response) {
5804
- queryClient.invalidateQueries(QUERY_KEYS.TEAMS_DEPENDENCIES);
5805
- queryClient.setQueriesData(QUERY_KEYS.ROLES, function (cachedData) {
5806
- return ramda.modifyPath(["organizationRoles"], ramda.prepend(response.organizationRole), cachedData);
5807
- });
5808
- _onSuccess === null || _onSuccess === void 0 ? void 0 : _onSuccess();
5809
- }
5810
- }, options));
5811
- };
5812
- var useUpdateRole = function useUpdateRole(_ref2) {
5813
- var _onSuccess2 = _ref2.onSuccess,
5814
- options = _objectWithoutProperties(_ref2, _excluded2$2);
5815
- return reactQuery.useMutation(function (_ref3) {
5816
- var id = _ref3.id,
5817
- payload = _ref3.payload;
5818
- return organizationRolesApi.update(id, payload);
5819
- }, _objectSpread$b({
5820
- onSuccess: function onSuccess(response) {
5821
- queryClient.invalidateQueries(QUERY_KEYS.TEAMS);
5822
- queryClient.invalidateQueries(QUERY_KEYS.TEAMS_DEPENDENCIES);
5823
- queryClient.setQueriesData(QUERY_KEYS.ROLES, function (cachedData) {
5824
- return ramda.assocPath(["organizationRoles", ramda.findIndex(ramda.propEq("id", response.organizationRole.id), cachedData.organizationRoles)], response.organizationRole, cachedData);
5825
- });
5826
- _onSuccess2 === null || _onSuccess2 === void 0 ? void 0 : _onSuccess2();
5827
- }
5828
- }, options));
5829
- };
5830
- var useDestroyRole = function useDestroyRole(_ref4) {
5831
- var _ref4$onSuccess = _ref4.onSuccess,
5832
- _onSuccess3 = _ref4$onSuccess === void 0 ? pure.noop : _ref4$onSuccess,
5833
- options = _objectWithoutProperties(_ref4, _excluded3$1);
5834
- return reactQuery.useMutation(function (_ref5) {
5835
- var id = _ref5.id,
5836
- payload = _ref5.payload;
5837
- return organizationRolesApi.destroy(id, payload);
5838
- }, _objectSpread$b({
5839
- onSuccess: function onSuccess(response) {
5840
- queryClient.invalidateQueries(QUERY_KEYS.TEAMS);
5841
- queryClient.invalidateQueries(QUERY_KEYS.TEAMS_DEPENDENCIES);
5842
- queryClient.setQueriesData(QUERY_KEYS.ROLES, function (cachedData) {
5843
- return ramda.dissocPath(["organizationRoles", ramda.findIndex(ramda.propEq("id", response.id), cachedData.organizationRoles)], cachedData);
5844
- });
5845
- _onSuccess3 === null || _onSuccess3 === void 0 ? void 0 : _onSuccess3();
5846
- }
5847
- }, options));
5848
- };
5849
- var useBulkUpdateRoles = function useBulkUpdateRoles(_ref6) {
5850
- var _onSuccess4 = _ref6.onSuccess,
5851
- options = _objectWithoutProperties(_ref6, _excluded4);
5852
- return reactQuery.useMutation(organizationRolesApi.bulkUpdate, _objectSpread$b({
5853
- onSuccess: function onSuccess() {
5854
- queryClient.invalidateQueries(QUERY_KEYS.TEAMS);
5855
- queryClient.invalidateQueries(QUERY_KEYS.TEAMS_DEPENDENCIES);
5856
- queryClient.invalidateQueries(QUERY_KEYS.ROLES);
5857
- _onSuccess4 === null || _onSuccess4 === void 0 ? void 0 : _onSuccess4();
5858
- }
5859
- }, options));
5860
- };
5919
+ process.nextTick = function (fun) {
5920
+ var args = new Array(arguments.length - 1);
5921
+ if (arguments.length > 1) {
5922
+ for (var i = 1; i < arguments.length; i++) {
5923
+ args[i - 1] = arguments[i];
5924
+ }
5925
+ }
5926
+ queue.push(new Item(fun, args));
5927
+ if (queue.length === 1 && !draining) {
5928
+ runTimeout(drainQueue);
5929
+ }
5930
+ };
5861
5931
 
5862
- var renderSearchProps = function renderSearchProps(searchString, setSearchString) {
5863
- return {
5864
- "data-cy": "ntm-search-roles-input",
5865
- onChange: function onChange(_ref) {
5866
- var value = _ref.target.value;
5867
- return setSearchString(value);
5868
- },
5869
- placeholder: instance.t("common.search_", {
5870
- what: instance.t("common.role", PLURAL).toLocaleLowerCase()
5871
- }),
5872
- value: searchString
5873
- };
5874
- };
5875
- var renderBreadcrumbs = function renderBreadcrumbs(breadcrumbs) {
5876
- return breadcrumbs !== null && breadcrumbs !== void 0 ? breadcrumbs : [{
5877
- text: instance.t("metaNames.member", PLURAL),
5878
- link: "/members"
5879
- }];
5880
- };
5932
+ // v8 likes predictible objects
5933
+ function Item(fun, array) {
5934
+ this.fun = fun;
5935
+ this.array = array;
5936
+ }
5937
+ Item.prototype.run = function () {
5938
+ this.fun.apply(null, this.array);
5939
+ };
5940
+ process.title = 'browser';
5941
+ process.browser = true;
5942
+ process.env = {};
5943
+ process.argv = [];
5944
+ process.version = ''; // empty string to avoid regexp issues
5945
+ process.versions = {};
5946
+
5947
+ function noop() {}
5948
+
5949
+ process.on = noop;
5950
+ process.addListener = noop;
5951
+ process.once = noop;
5952
+ process.off = noop;
5953
+ process.removeListener = noop;
5954
+ process.removeAllListeners = noop;
5955
+ process.emit = noop;
5956
+ process.prependListener = noop;
5957
+ process.prependOnceListener = noop;
5958
+
5959
+ process.listeners = function (name) { return [] };
5960
+
5961
+ process.binding = function (name) {
5962
+ throw new Error('process.binding is not supported');
5963
+ };
5881
5964
 
5882
- var AddRoleButton = function AddRoleButton(_ref) {
5883
- var _permissions$create, _permissions$create2;
5884
- var onClick = _ref.onClick,
5885
- permissions = _ref.permissions;
5886
- var _useTranslation = useTranslation(),
5887
- t = _useTranslation.t;
5888
- return /*#__PURE__*/React__default["default"].createElement(neetoui.Tooltip, {
5889
- content: t("tooltips.noPermissionToAddRole"),
5890
- disabled: (_permissions$create = permissions === null || permissions === void 0 ? void 0 : permissions.create) !== null && _permissions$create !== void 0 ? _permissions$create : hasPermission(MANAGE_MEMBER_PERMISSIONS),
5891
- position: "bottom"
5892
- }, /*#__PURE__*/React__default["default"].createElement("span", null, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
5893
- "data-cy": "ntm-add-role-button",
5894
- disabled: !((_permissions$create2 = permissions === null || permissions === void 0 ? void 0 : permissions.create) !== null && _permissions$create2 !== void 0 ? _permissions$create2 : hasPermission(MANAGE_MEMBER_PERMISSIONS)),
5895
- label: t("common.addNew_", {
5896
- what: t("common.role", SINGULAR).toLocaleLowerCase()
5897
- }),
5898
- onClick: onClick
5899
- })));
5900
- };
5965
+ process.cwd = function () { return '/' };
5966
+ process.chdir = function (dir) {
5967
+ throw new Error('process.chdir is not supported');
5968
+ };
5969
+ process.umask = function() { return 0; };
5901
5970
 
5902
- var Header$1 = function Header(_ref) {
5903
- var _config$permissions$u, _config$permissions, _config$header;
5904
- var config = _ref.config,
5905
- handleReset = _ref.handleReset,
5906
- handleSubmit = _ref.handleSubmit,
5907
- isDirty = _ref.isDirty,
5908
- searchString = _ref.searchString,
5909
- setSearchString = _ref.setSearchString,
5910
- setIsNewRolePaneOpen = _ref.setIsNewRolePaneOpen;
5911
- var _useTranslation = useTranslation(),
5912
- t = _useTranslation.t;
5913
- var hasUpdateRolePermission = (_config$permissions$u = config === null || config === void 0 ? void 0 : (_config$permissions = config.permissions) === null || _config$permissions === void 0 ? void 0 : _config$permissions.update) !== null && _config$permissions$u !== void 0 ? _config$permissions$u : hasPermission(MANAGE_MEMBER_PERMISSIONS);
5914
- return /*#__PURE__*/React__default["default"].createElement(NeetoHeader__default["default"], {
5915
- breadcrumbs: renderBreadcrumbs(config === null || config === void 0 ? void 0 : (_config$header = config.header) === null || _config$header === void 0 ? void 0 : _config$header.breadcrumbs),
5916
- className: "ntm-roles-header",
5971
+
5972
+ /***/ }),
5973
+ /* 1 */
5974
+ /***/ (function(module, exports, __webpack_require__) {
5975
+
5976
+
5977
+ /**
5978
+ * Copyright (c) 2013-present, Facebook, Inc.
5979
+ * All rights reserved.
5980
+ *
5981
+ * This source code is licensed under the BSD-style license found in the
5982
+ * LICENSE file in the root directory of this source tree. An additional grant
5983
+ * of patent rights can be found in the PATENTS file in the same directory.
5984
+ *
5985
+ *
5986
+ */
5987
+
5988
+ function makeEmptyFunction(arg) {
5989
+ return function () {
5990
+ return arg;
5991
+ };
5992
+ }
5993
+
5994
+ /**
5995
+ * This function accepts and discards inputs; it has no side effects. This is
5996
+ * primarily useful idiomatically for overridable function endpoints which
5997
+ * always need to be callable, since JS lacks a null-call idiom ala Cocoa.
5998
+ */
5999
+ var emptyFunction = function emptyFunction() {};
6000
+
6001
+ emptyFunction.thatReturns = makeEmptyFunction;
6002
+ emptyFunction.thatReturnsFalse = makeEmptyFunction(false);
6003
+ emptyFunction.thatReturnsTrue = makeEmptyFunction(true);
6004
+ emptyFunction.thatReturnsNull = makeEmptyFunction(null);
6005
+ emptyFunction.thatReturnsThis = function () {
6006
+ return this;
6007
+ };
6008
+ emptyFunction.thatReturnsArgument = function (arg) {
6009
+ return arg;
6010
+ };
6011
+
6012
+ module.exports = emptyFunction;
6013
+
6014
+ /***/ }),
6015
+ /* 2 */
6016
+ /***/ (function(module, exports, __webpack_require__) {
6017
+ /* WEBPACK VAR INJECTION */(function(process) {/**
6018
+ * Copyright (c) 2013-present, Facebook, Inc.
6019
+ * All rights reserved.
6020
+ *
6021
+ * This source code is licensed under the BSD-style license found in the
6022
+ * LICENSE file in the root directory of this source tree. An additional grant
6023
+ * of patent rights can be found in the PATENTS file in the same directory.
6024
+ *
6025
+ */
6026
+
6027
+ function invariant(condition, format, a, b, c, d, e, f) {
6028
+
6029
+ if (!condition) {
6030
+ var error;
6031
+ if (format === undefined) {
6032
+ error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');
6033
+ } else {
6034
+ var args = [a, b, c, d, e, f];
6035
+ var argIndex = 0;
6036
+ error = new Error(format.replace(/%s/g, function () {
6037
+ return args[argIndex++];
6038
+ }));
6039
+ error.name = 'Invariant Violation';
6040
+ }
6041
+
6042
+ error.framesToPop = 1; // we don't care about invariant's own frame
6043
+ throw error;
6044
+ }
6045
+ }
6046
+
6047
+ module.exports = invariant;
6048
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)));
6049
+
6050
+ /***/ }),
6051
+ /* 3 */
6052
+ /***/ (function(module, exports, __webpack_require__) {
6053
+ /**
6054
+ * Copyright 2013-present, Facebook, Inc.
6055
+ * All rights reserved.
6056
+ *
6057
+ * This source code is licensed under the BSD-style license found in the
6058
+ * LICENSE file in the root directory of this source tree. An additional grant
6059
+ * of patent rights can be found in the PATENTS file in the same directory.
6060
+ */
6061
+
6062
+
6063
+
6064
+ var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
6065
+
6066
+ module.exports = ReactPropTypesSecret;
6067
+
6068
+
6069
+ /***/ }),
6070
+ /* 4 */
6071
+ /***/ (function(module, exports) {
6072
+
6073
+ module.exports = __WEBPACK_EXTERNAL_MODULE_4__;
6074
+
6075
+ /***/ }),
6076
+ /* 5 */
6077
+ /***/ (function(module, exports, __webpack_require__) {
6078
+
6079
+
6080
+ Object.defineProperty(exports, "__esModule", {
6081
+ value: true
6082
+ });
6083
+
6084
+ var _react = __webpack_require__(4);
6085
+
6086
+ var _react2 = _interopRequireDefault(_react);
6087
+
6088
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6089
+
6090
+ var ScrollSyncContext = _react2.default.createContext({
6091
+ registerPane: function registerPane() {},
6092
+ unregisterPane: function unregisterPane() {}
6093
+ });
6094
+
6095
+ exports.default = ScrollSyncContext;
6096
+ module.exports = exports['default'];
6097
+
6098
+ /***/ }),
6099
+ /* 6 */
6100
+ /***/ (function(module, exports, __webpack_require__) {
6101
+ /* WEBPACK VAR INJECTION */(function(process) {/**
6102
+ * Copyright 2014-2015, Facebook, Inc.
6103
+ * All rights reserved.
6104
+ *
6105
+ * This source code is licensed under the BSD-style license found in the
6106
+ * LICENSE file in the root directory of this source tree. An additional grant
6107
+ * of patent rights can be found in the PATENTS file in the same directory.
6108
+ *
6109
+ */
6110
+
6111
+
6112
+
6113
+ var emptyFunction = __webpack_require__(1);
6114
+
6115
+ /**
6116
+ * Similar to invariant but only logs a warning if the condition is not met.
6117
+ * This can be used to log issues in development environments in critical
6118
+ * paths. Removing the logging code for production environments will keep the
6119
+ * same logic and follow the same code paths.
6120
+ */
6121
+
6122
+ var warning = emptyFunction;
6123
+
6124
+ module.exports = warning;
6125
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)));
6126
+
6127
+ /***/ }),
6128
+ /* 7 */
6129
+ /***/ (function(module, exports, __webpack_require__) {
6130
+
6131
+ /* WEBPACK VAR INJECTION */(function(process) {/**
6132
+ * Copyright 2013-present, Facebook, Inc.
6133
+ * All rights reserved.
6134
+ *
6135
+ * This source code is licensed under the BSD-style license found in the
6136
+ * LICENSE file in the root directory of this source tree. An additional grant
6137
+ * of patent rights can be found in the PATENTS file in the same directory.
6138
+ */
6139
+
6140
+ {
6141
+ // By explicitly using `prop-types` you are opting into new production behavior.
6142
+ // http://fb.me/prop-types-in-prod
6143
+ module.exports = __webpack_require__(12)();
6144
+ }
6145
+
6146
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)));
6147
+
6148
+ /***/ }),
6149
+ /* 8 */
6150
+ /***/ (function(module, exports, __webpack_require__) {
6151
+
6152
+
6153
+ Object.defineProperty(exports, "__esModule", {
6154
+ value: true
6155
+ });
6156
+
6157
+ var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
6158
+
6159
+ var _react = __webpack_require__(4);
6160
+
6161
+ var _react2 = _interopRequireDefault(_react);
6162
+
6163
+ var _propTypes = __webpack_require__(7);
6164
+
6165
+ var _propTypes2 = _interopRequireDefault(_propTypes);
6166
+
6167
+ var _ScrollSyncContext = __webpack_require__(5);
6168
+
6169
+ var _ScrollSyncContext2 = _interopRequireDefault(_ScrollSyncContext);
6170
+
6171
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6172
+
6173
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6174
+
6175
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
6176
+
6177
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
6178
+
6179
+ /**
6180
+ * ScrollSync provider component
6181
+ *
6182
+ */
6183
+
6184
+ var ScrollSync = function (_Component) {
6185
+ _inherits(ScrollSync, _Component);
6186
+
6187
+ function ScrollSync() {
6188
+ var _ref;
6189
+
6190
+ var _temp, _this, _ret;
6191
+
6192
+ _classCallCheck(this, ScrollSync);
6193
+
6194
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
6195
+ args[_key] = arguments[_key];
6196
+ }
6197
+
6198
+ return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = ScrollSync.__proto__ || Object.getPrototypeOf(ScrollSync)).call.apply(_ref, [this].concat(args))), _this), _this.panes = {}, _this.registerPane = function (node, groups) {
6199
+ groups.forEach(function (group) {
6200
+ if (!_this.panes[group]) {
6201
+ _this.panes[group] = [];
6202
+ }
6203
+
6204
+ if (!_this.findPane(node, group)) {
6205
+ if (_this.panes[group].length > 0) {
6206
+ _this.syncScrollPosition(_this.panes[group][0], node);
6207
+ }
6208
+ _this.panes[group].push(node);
6209
+ }
6210
+ });
6211
+ _this.addEvents(node, groups);
6212
+ }, _this.unregisterPane = function (node, groups) {
6213
+ groups.forEach(function (group) {
6214
+ if (_this.findPane(node, group)) {
6215
+ _this.removeEvents(node);
6216
+ _this.panes[group].splice(_this.panes[group].indexOf(node), 1);
6217
+ }
6218
+ });
6219
+ }, _this.addEvents = function (node, groups) {
6220
+ /* For some reason element.addEventListener doesnt work with document.body */
6221
+ node.onscroll = _this.handlePaneScroll.bind(_this, node, groups); // eslint-disable-line
6222
+ }, _this.removeEvents = function (node) {
6223
+ /* For some reason element.removeEventListener doesnt work with document.body */
6224
+ node.onscroll = null; // eslint-disable-line
6225
+ }, _this.findPane = function (node, group) {
6226
+ if (!_this.panes[group]) {
6227
+ return false;
6228
+ }
6229
+
6230
+ return _this.panes[group].find(function (pane) {
6231
+ return pane === node;
6232
+ });
6233
+ }, _this.handlePaneScroll = function (node, groups) {
6234
+ if (!_this.props.enabled) {
6235
+ return;
6236
+ }
6237
+
6238
+ window.requestAnimationFrame(function () {
6239
+ _this.syncScrollPositions(node, groups);
6240
+ });
6241
+ }, _this.syncScrollPositions = function (scrolledPane, groups) {
6242
+ groups.forEach(function (group) {
6243
+ _this.panes[group].forEach(function (pane) {
6244
+ /* For all panes beside the currently scrolling one */
6245
+ if (scrolledPane !== pane) {
6246
+ /* Remove event listeners from the node that we'll manipulate */
6247
+ _this.removeEvents(pane, group);
6248
+ _this.syncScrollPosition(scrolledPane, pane);
6249
+ /* Re-attach event listeners after we're done scrolling */
6250
+ window.requestAnimationFrame(function () {
6251
+ _this.addEvents(pane, groups);
6252
+ });
6253
+ }
6254
+ });
6255
+ });
6256
+ if (_this.props.onSync) _this.props.onSync(scrolledPane);
6257
+ }, _temp), _possibleConstructorReturn(_this, _ret);
6258
+ }
6259
+
6260
+ _createClass(ScrollSync, [{
6261
+ key: 'getContextValue',
6262
+ value: function getContextValue() {
6263
+ return {
6264
+ registerPane: this.registerPane,
6265
+ unregisterPane: this.unregisterPane
6266
+ };
6267
+ }
6268
+ }, {
6269
+ key: 'syncScrollPosition',
6270
+ value: function syncScrollPosition(scrolledPane, pane) {
6271
+ var scrollTop = scrolledPane.scrollTop,
6272
+ scrollHeight = scrolledPane.scrollHeight,
6273
+ clientHeight = scrolledPane.clientHeight,
6274
+ scrollLeft = scrolledPane.scrollLeft,
6275
+ scrollWidth = scrolledPane.scrollWidth,
6276
+ clientWidth = scrolledPane.clientWidth;
6277
+
6278
+
6279
+ var scrollTopOffset = scrollHeight - clientHeight;
6280
+ var scrollLeftOffset = scrollWidth - clientWidth;
6281
+
6282
+ var _props = this.props,
6283
+ proportional = _props.proportional,
6284
+ vertical = _props.vertical,
6285
+ horizontal = _props.horizontal;
6286
+
6287
+ /* Calculate the actual pane height */
6288
+
6289
+ var paneHeight = pane.scrollHeight - clientHeight;
6290
+ var paneWidth = pane.scrollWidth - clientWidth;
6291
+ /* Adjust the scrollTop position of it accordingly */
6292
+ if (vertical && scrollTopOffset > 0) {
6293
+ pane.scrollTop = proportional ? paneHeight * scrollTop / scrollTopOffset : scrollTop; // eslint-disable-line
6294
+ }
6295
+ if (horizontal && scrollLeftOffset > 0) {
6296
+ pane.scrollLeft = proportional ? paneWidth * scrollLeft / scrollLeftOffset : scrollLeft; // eslint-disable-line
6297
+ }
6298
+ }
6299
+ }, {
6300
+ key: 'render',
6301
+ value: function render() {
6302
+ return _react2.default.createElement(
6303
+ _ScrollSyncContext2.default.Provider,
6304
+ { value: this.getContextValue() },
6305
+ _react2.default.Children.only(this.props.children)
6306
+ );
6307
+ }
6308
+ }]);
6309
+
6310
+ return ScrollSync;
6311
+ }(_react.Component);
6312
+
6313
+ ScrollSync.propTypes = {
6314
+ /**
6315
+ * Callback to be invoked any time synchronization happens
6316
+ *
6317
+ * @param {Element} el The element that has received the scroll event
6318
+ */
6319
+ onSync: _propTypes2.default.func,
6320
+ children: _propTypes2.default.element.isRequired,
6321
+ proportional: _propTypes2.default.bool,
6322
+ vertical: _propTypes2.default.bool,
6323
+ horizontal: _propTypes2.default.bool,
6324
+ enabled: _propTypes2.default.bool
6325
+ };
6326
+ ScrollSync.defaultProps = {
6327
+ proportional: true,
6328
+ vertical: true,
6329
+ horizontal: true,
6330
+ enabled: true
6331
+ };
6332
+ exports.default = ScrollSync;
6333
+ module.exports = exports['default'];
6334
+
6335
+ /***/ }),
6336
+ /* 9 */
6337
+ /***/ (function(module, exports, __webpack_require__) {
6338
+
6339
+
6340
+ Object.defineProperty(exports, "__esModule", {
6341
+ value: true
6342
+ });
6343
+
6344
+ var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
6345
+
6346
+ var _react = __webpack_require__(4);
6347
+
6348
+ var _propTypes = __webpack_require__(7);
6349
+
6350
+ var _propTypes2 = _interopRequireDefault(_propTypes);
6351
+
6352
+ var _ScrollSyncContext = __webpack_require__(5);
6353
+
6354
+ var _ScrollSyncContext2 = _interopRequireDefault(_ScrollSyncContext);
6355
+
6356
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6357
+
6358
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6359
+
6360
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
6361
+
6362
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint react/no-find-dom-node: 0 */
6363
+
6364
+ /**
6365
+ * ScrollSyncPane Component
6366
+ *
6367
+ * Wrap your content in it to keep its scroll position in sync with other panes
6368
+ *
6369
+ * @example ./example.md
6370
+ */
6371
+
6372
+ var ScrollSyncPane = function (_Component) {
6373
+ _inherits(ScrollSyncPane, _Component);
6374
+
6375
+ function ScrollSyncPane(props) {
6376
+ _classCallCheck(this, ScrollSyncPane);
6377
+
6378
+ var _this = _possibleConstructorReturn(this, (ScrollSyncPane.__proto__ || Object.getPrototypeOf(ScrollSyncPane)).call(this, props));
6379
+
6380
+ _this.toArray = function (groups) {
6381
+ return [].concat(groups);
6382
+ };
6383
+
6384
+ _this.updateNode = function () {
6385
+ if (_this.props.attachTo) {
6386
+ _this.node = _this.props.attachTo.current;
6387
+ } else {
6388
+ _this.node = _this.childRef.current;
6389
+ }
6390
+ };
6391
+
6392
+ _this.childRef = (0, _react.createRef)();
6393
+ return _this;
6394
+ }
6395
+
6396
+ _createClass(ScrollSyncPane, [{
6397
+ key: 'componentDidMount',
6398
+ value: function componentDidMount() {
6399
+ if (this.props.enabled) {
6400
+ this.updateNode();
6401
+ if (this.node) {
6402
+ this.context.registerPane(this.node, this.toArray(this.props.group));
6403
+ }
6404
+ }
6405
+ }
6406
+ }, {
6407
+ key: 'componentDidUpdate',
6408
+ value: function componentDidUpdate(prevProps) {
6409
+ if (this.props.attachTo !== prevProps.attachTo) {
6410
+ if (this.node) {
6411
+ this.context.unregisterPane(this.node, this.toArray(prevProps.group));
6412
+ }
6413
+ this.updateNode();
6414
+ if (this.node) {
6415
+ this.context.registerPane(this.node, this.toArray(prevProps.group));
6416
+ }
6417
+ }
6418
+ if (this.node && this.props.enabled !== prevProps.enabled) {
6419
+ if (this.props.enabled) {
6420
+ this.context.registerPane(this.node, this.toArray(prevProps.group));
6421
+ } else {
6422
+ this.context.unregisterPane(this.node, this.toArray(prevProps.group));
6423
+ }
6424
+ }
6425
+ if (this.node && this.props.enabled && this.props.group !== prevProps.group) {
6426
+ this.context.unregisterPane(this.node, this.toArray(prevProps.group));
6427
+ this.context.registerPane(this.node, this.toArray(this.props.group));
6428
+ }
6429
+ }
6430
+ }, {
6431
+ key: 'componentWillUnmount',
6432
+ value: function componentWillUnmount() {
6433
+ if (this.node && this.props.enabled) {
6434
+ this.context.unregisterPane(this.node, this.toArray(this.props.group));
6435
+ }
6436
+ }
6437
+ }, {
6438
+ key: 'render',
6439
+ value: function render() {
6440
+ if (this.props.attachTo) {
6441
+ return this.props.children;
6442
+ }
6443
+ return (0, _react.cloneElement)(_react.Children.only(this.props.children), { ref: this.childRef });
6444
+ }
6445
+ }]);
6446
+
6447
+ return ScrollSyncPane;
6448
+ }(_react.Component);
6449
+
6450
+ ScrollSyncPane.contextType = _ScrollSyncContext2.default;
6451
+ ScrollSyncPane.propTypes = {
6452
+ children: _propTypes2.default.node.isRequired,
6453
+ attachTo: _propTypes2.default.oneOfType([_propTypes2.default.func, _propTypes2.default.shape({ current: _propTypes2.default.any })]),
6454
+ group: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.arrayOf(_propTypes2.default.string)]),
6455
+ enabled: _propTypes2.default.bool
6456
+ };
6457
+ ScrollSyncPane.defaultProps = {
6458
+ group: 'default',
6459
+ enabled: true
6460
+ };
6461
+ exports.default = ScrollSyncPane;
6462
+ module.exports = exports['default'];
6463
+
6464
+ /***/ }),
6465
+ /* 10 */
6466
+ /***/ (function(module, exports, __webpack_require__) {
6467
+
6468
+
6469
+ Object.defineProperty(exports, "__esModule", {
6470
+ value: true
6471
+ });
6472
+
6473
+ var _ScrollSync = __webpack_require__(8);
6474
+
6475
+ Object.defineProperty(exports, 'ScrollSync', {
6476
+ enumerable: true,
6477
+ get: function get() {
6478
+ return _interopRequireDefault(_ScrollSync).default;
6479
+ }
6480
+ });
6481
+
6482
+ var _ScrollSyncPane = __webpack_require__(9);
6483
+
6484
+ Object.defineProperty(exports, 'ScrollSyncPane', {
6485
+ enumerable: true,
6486
+ get: function get() {
6487
+ return _interopRequireDefault(_ScrollSyncPane).default;
6488
+ }
6489
+ });
6490
+
6491
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6492
+
6493
+ /***/ }),
6494
+ /* 11 */
6495
+ /***/ (function(module, exports, __webpack_require__) {
6496
+ /* WEBPACK VAR INJECTION */(function(process) {/**
6497
+ * Copyright 2013-present, Facebook, Inc.
6498
+ * All rights reserved.
6499
+ *
6500
+ * This source code is licensed under the BSD-style license found in the
6501
+ * LICENSE file in the root directory of this source tree. An additional grant
6502
+ * of patent rights can be found in the PATENTS file in the same directory.
6503
+ */
6504
+
6505
+ /**
6506
+ * Assert that the values match with the type specs.
6507
+ * Error messages are memorized and will only be shown once.
6508
+ *
6509
+ * @param {object} typeSpecs Map of name to a ReactPropType
6510
+ * @param {object} values Runtime values that need to be type-checked
6511
+ * @param {string} location e.g. "prop", "context", "child context"
6512
+ * @param {string} componentName Name of the component for error messages.
6513
+ * @param {?Function} getStack Returns the component stack.
6514
+ * @private
6515
+ */
6516
+ function checkPropTypes(typeSpecs, values, location, componentName, getStack) {
6517
+ }
6518
+
6519
+ module.exports = checkPropTypes;
6520
+
6521
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)));
6522
+
6523
+ /***/ }),
6524
+ /* 12 */
6525
+ /***/ (function(module, exports, __webpack_require__) {
6526
+ /**
6527
+ * Copyright 2013-present, Facebook, Inc.
6528
+ * All rights reserved.
6529
+ *
6530
+ * This source code is licensed under the BSD-style license found in the
6531
+ * LICENSE file in the root directory of this source tree. An additional grant
6532
+ * of patent rights can be found in the PATENTS file in the same directory.
6533
+ */
6534
+
6535
+
6536
+
6537
+ var emptyFunction = __webpack_require__(1);
6538
+ var invariant = __webpack_require__(2);
6539
+ var ReactPropTypesSecret = __webpack_require__(3);
6540
+
6541
+ module.exports = function() {
6542
+ function shim(props, propName, componentName, location, propFullName, secret) {
6543
+ if (secret === ReactPropTypesSecret) {
6544
+ // It is still safe when called from React.
6545
+ return;
6546
+ }
6547
+ invariant(
6548
+ false,
6549
+ 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
6550
+ 'Use PropTypes.checkPropTypes() to call them. ' +
6551
+ 'Read more at http://fb.me/use-check-prop-types'
6552
+ );
6553
+ } shim.isRequired = shim;
6554
+ function getShim() {
6555
+ return shim;
6556
+ } // Important!
6557
+ // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.
6558
+ var ReactPropTypes = {
6559
+ array: shim,
6560
+ bool: shim,
6561
+ func: shim,
6562
+ number: shim,
6563
+ object: shim,
6564
+ string: shim,
6565
+ symbol: shim,
6566
+
6567
+ any: shim,
6568
+ arrayOf: getShim,
6569
+ element: shim,
6570
+ instanceOf: getShim,
6571
+ node: shim,
6572
+ objectOf: getShim,
6573
+ oneOf: getShim,
6574
+ oneOfType: getShim,
6575
+ shape: getShim
6576
+ };
6577
+
6578
+ ReactPropTypes.checkPropTypes = emptyFunction;
6579
+ ReactPropTypes.PropTypes = ReactPropTypes;
6580
+
6581
+ return ReactPropTypes;
6582
+ };
6583
+
6584
+
6585
+ /***/ }),
6586
+ /* 13 */
6587
+ /***/ (function(module, exports, __webpack_require__) {
6588
+ /* WEBPACK VAR INJECTION */(function(process) {/**
6589
+ * Copyright 2013-present, Facebook, Inc.
6590
+ * All rights reserved.
6591
+ *
6592
+ * This source code is licensed under the BSD-style license found in the
6593
+ * LICENSE file in the root directory of this source tree. An additional grant
6594
+ * of patent rights can be found in the PATENTS file in the same directory.
6595
+ */
6596
+
6597
+
6598
+
6599
+ var emptyFunction = __webpack_require__(1);
6600
+ var invariant = __webpack_require__(2);
6601
+ var warning = __webpack_require__(6);
6602
+
6603
+ var ReactPropTypesSecret = __webpack_require__(3);
6604
+ var checkPropTypes = __webpack_require__(11);
6605
+
6606
+ module.exports = function(isValidElement, throwOnDirectAccess) {
6607
+ /* global Symbol */
6608
+ var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
6609
+ var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
6610
+
6611
+ /**
6612
+ * Returns the iterator method function contained on the iterable object.
6613
+ *
6614
+ * Be sure to invoke the function with the iterable as context:
6615
+ *
6616
+ * var iteratorFn = getIteratorFn(myIterable);
6617
+ * if (iteratorFn) {
6618
+ * var iterator = iteratorFn.call(myIterable);
6619
+ * ...
6620
+ * }
6621
+ *
6622
+ * @param {?object} maybeIterable
6623
+ * @return {?function}
6624
+ */
6625
+ function getIteratorFn(maybeIterable) {
6626
+ var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
6627
+ if (typeof iteratorFn === 'function') {
6628
+ return iteratorFn;
6629
+ }
6630
+ }
6631
+
6632
+ /**
6633
+ * Collection of methods that allow declaration and validation of props that are
6634
+ * supplied to React components. Example usage:
6635
+ *
6636
+ * var Props = require('ReactPropTypes');
6637
+ * var MyArticle = React.createClass({
6638
+ * propTypes: {
6639
+ * // An optional string prop named "description".
6640
+ * description: Props.string,
6641
+ *
6642
+ * // A required enum prop named "category".
6643
+ * category: Props.oneOf(['News','Photos']).isRequired,
6644
+ *
6645
+ * // A prop named "dialog" that requires an instance of Dialog.
6646
+ * dialog: Props.instanceOf(Dialog).isRequired
6647
+ * },
6648
+ * render: function() { ... }
6649
+ * });
6650
+ *
6651
+ * A more formal specification of how these methods are used:
6652
+ *
6653
+ * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
6654
+ * decl := ReactPropTypes.{type}(.isRequired)?
6655
+ *
6656
+ * Each and every declaration produces a function with the same signature. This
6657
+ * allows the creation of custom validation functions. For example:
6658
+ *
6659
+ * var MyLink = React.createClass({
6660
+ * propTypes: {
6661
+ * // An optional string or URI prop named "href".
6662
+ * href: function(props, propName, componentName) {
6663
+ * var propValue = props[propName];
6664
+ * if (propValue != null && typeof propValue !== 'string' &&
6665
+ * !(propValue instanceof URI)) {
6666
+ * return new Error(
6667
+ * 'Expected a string or an URI for ' + propName + ' in ' +
6668
+ * componentName
6669
+ * );
6670
+ * }
6671
+ * }
6672
+ * },
6673
+ * render: function() {...}
6674
+ * });
6675
+ *
6676
+ * @internal
6677
+ */
6678
+
6679
+ var ANONYMOUS = '<<anonymous>>';
6680
+
6681
+ // Important!
6682
+ // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.
6683
+ var ReactPropTypes = {
6684
+ array: createPrimitiveTypeChecker('array'),
6685
+ bool: createPrimitiveTypeChecker('boolean'),
6686
+ func: createPrimitiveTypeChecker('function'),
6687
+ number: createPrimitiveTypeChecker('number'),
6688
+ object: createPrimitiveTypeChecker('object'),
6689
+ string: createPrimitiveTypeChecker('string'),
6690
+ symbol: createPrimitiveTypeChecker('symbol'),
6691
+
6692
+ any: createAnyTypeChecker(),
6693
+ arrayOf: createArrayOfTypeChecker,
6694
+ element: createElementTypeChecker(),
6695
+ instanceOf: createInstanceTypeChecker,
6696
+ node: createNodeChecker(),
6697
+ objectOf: createObjectOfTypeChecker,
6698
+ oneOf: createEnumTypeChecker,
6699
+ oneOfType: createUnionTypeChecker,
6700
+ shape: createShapeTypeChecker
6701
+ };
6702
+
6703
+ /**
6704
+ * inlined Object.is polyfill to avoid requiring consumers ship their own
6705
+ * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
6706
+ */
6707
+ /*eslint-disable no-self-compare*/
6708
+ function is(x, y) {
6709
+ // SameValue algorithm
6710
+ if (x === y) {
6711
+ // Steps 1-5, 7-10
6712
+ // Steps 6.b-6.e: +0 != -0
6713
+ return x !== 0 || 1 / x === 1 / y;
6714
+ } else {
6715
+ // Step 6.a: NaN == NaN
6716
+ return x !== x && y !== y;
6717
+ }
6718
+ }
6719
+ /*eslint-enable no-self-compare*/
6720
+
6721
+ /**
6722
+ * We use an Error-like object for backward compatibility as people may call
6723
+ * PropTypes directly and inspect their output. However, we don't use real
6724
+ * Errors anymore. We don't inspect their stack anyway, and creating them
6725
+ * is prohibitively expensive if they are created too often, such as what
6726
+ * happens in oneOfType() for any type before the one that matched.
6727
+ */
6728
+ function PropTypeError(message) {
6729
+ this.message = message;
6730
+ this.stack = '';
6731
+ }
6732
+ // Make `instanceof Error` still work for returned errors.
6733
+ PropTypeError.prototype = Error.prototype;
6734
+
6735
+ function createChainableTypeChecker(validate) {
6736
+ function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {
6737
+ componentName = componentName || ANONYMOUS;
6738
+ propFullName = propFullName || propName;
6739
+
6740
+ if (secret !== ReactPropTypesSecret) {
6741
+ if (throwOnDirectAccess) {
6742
+ // New behavior only for users of `prop-types` package
6743
+ invariant(
6744
+ false,
6745
+ 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
6746
+ 'Use `PropTypes.checkPropTypes()` to call them. ' +
6747
+ 'Read more at http://fb.me/use-check-prop-types'
6748
+ );
6749
+ }
6750
+ }
6751
+ if (props[propName] == null) {
6752
+ if (isRequired) {
6753
+ if (props[propName] === null) {
6754
+ return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));
6755
+ }
6756
+ return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));
6757
+ }
6758
+ return null;
6759
+ } else {
6760
+ return validate(props, propName, componentName, location, propFullName);
6761
+ }
6762
+ }
6763
+
6764
+ var chainedCheckType = checkType.bind(null, false);
6765
+ chainedCheckType.isRequired = checkType.bind(null, true);
6766
+
6767
+ return chainedCheckType;
6768
+ }
6769
+
6770
+ function createPrimitiveTypeChecker(expectedType) {
6771
+ function validate(props, propName, componentName, location, propFullName, secret) {
6772
+ var propValue = props[propName];
6773
+ var propType = getPropType(propValue);
6774
+ if (propType !== expectedType) {
6775
+ // `propValue` being instance of, say, date/regexp, pass the 'object'
6776
+ // check, but we can offer a more precise error message here rather than
6777
+ // 'of type `object`'.
6778
+ var preciseType = getPreciseType(propValue);
6779
+
6780
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));
6781
+ }
6782
+ return null;
6783
+ }
6784
+ return createChainableTypeChecker(validate);
6785
+ }
6786
+
6787
+ function createAnyTypeChecker() {
6788
+ return createChainableTypeChecker(emptyFunction.thatReturnsNull);
6789
+ }
6790
+
6791
+ function createArrayOfTypeChecker(typeChecker) {
6792
+ function validate(props, propName, componentName, location, propFullName) {
6793
+ if (typeof typeChecker !== 'function') {
6794
+ return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');
6795
+ }
6796
+ var propValue = props[propName];
6797
+ if (!Array.isArray(propValue)) {
6798
+ var propType = getPropType(propValue);
6799
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
6800
+ }
6801
+ for (var i = 0; i < propValue.length; i++) {
6802
+ var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);
6803
+ if (error instanceof Error) {
6804
+ return error;
6805
+ }
6806
+ }
6807
+ return null;
6808
+ }
6809
+ return createChainableTypeChecker(validate);
6810
+ }
6811
+
6812
+ function createElementTypeChecker() {
6813
+ function validate(props, propName, componentName, location, propFullName) {
6814
+ var propValue = props[propName];
6815
+ if (!isValidElement(propValue)) {
6816
+ var propType = getPropType(propValue);
6817
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));
6818
+ }
6819
+ return null;
6820
+ }
6821
+ return createChainableTypeChecker(validate);
6822
+ }
6823
+
6824
+ function createInstanceTypeChecker(expectedClass) {
6825
+ function validate(props, propName, componentName, location, propFullName) {
6826
+ if (!(props[propName] instanceof expectedClass)) {
6827
+ var expectedClassName = expectedClass.name || ANONYMOUS;
6828
+ var actualClassName = getClassName(props[propName]);
6829
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));
6830
+ }
6831
+ return null;
6832
+ }
6833
+ return createChainableTypeChecker(validate);
6834
+ }
6835
+
6836
+ function createEnumTypeChecker(expectedValues) {
6837
+ if (!Array.isArray(expectedValues)) {
6838
+ return emptyFunction.thatReturnsNull;
6839
+ }
6840
+
6841
+ function validate(props, propName, componentName, location, propFullName) {
6842
+ var propValue = props[propName];
6843
+ for (var i = 0; i < expectedValues.length; i++) {
6844
+ if (is(propValue, expectedValues[i])) {
6845
+ return null;
6846
+ }
6847
+ }
6848
+
6849
+ var valuesString = JSON.stringify(expectedValues);
6850
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));
6851
+ }
6852
+ return createChainableTypeChecker(validate);
6853
+ }
6854
+
6855
+ function createObjectOfTypeChecker(typeChecker) {
6856
+ function validate(props, propName, componentName, location, propFullName) {
6857
+ if (typeof typeChecker !== 'function') {
6858
+ return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');
6859
+ }
6860
+ var propValue = props[propName];
6861
+ var propType = getPropType(propValue);
6862
+ if (propType !== 'object') {
6863
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));
6864
+ }
6865
+ for (var key in propValue) {
6866
+ if (propValue.hasOwnProperty(key)) {
6867
+ var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
6868
+ if (error instanceof Error) {
6869
+ return error;
6870
+ }
6871
+ }
6872
+ }
6873
+ return null;
6874
+ }
6875
+ return createChainableTypeChecker(validate);
6876
+ }
6877
+
6878
+ function createUnionTypeChecker(arrayOfTypeCheckers) {
6879
+ if (!Array.isArray(arrayOfTypeCheckers)) {
6880
+ return emptyFunction.thatReturnsNull;
6881
+ }
6882
+
6883
+ for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
6884
+ var checker = arrayOfTypeCheckers[i];
6885
+ if (typeof checker !== 'function') {
6886
+ warning(
6887
+ false,
6888
+ 'Invalid argument supplid to oneOfType. Expected an array of check functions, but ' +
6889
+ 'received %s at index %s.',
6890
+ getPostfixForTypeWarning(checker),
6891
+ i
6892
+ );
6893
+ return emptyFunction.thatReturnsNull;
6894
+ }
6895
+ }
6896
+
6897
+ function validate(props, propName, componentName, location, propFullName) {
6898
+ for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
6899
+ var checker = arrayOfTypeCheckers[i];
6900
+ if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {
6901
+ return null;
6902
+ }
6903
+ }
6904
+
6905
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));
6906
+ }
6907
+ return createChainableTypeChecker(validate);
6908
+ }
6909
+
6910
+ function createNodeChecker() {
6911
+ function validate(props, propName, componentName, location, propFullName) {
6912
+ if (!isNode(props[propName])) {
6913
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));
6914
+ }
6915
+ return null;
6916
+ }
6917
+ return createChainableTypeChecker(validate);
6918
+ }
6919
+
6920
+ function createShapeTypeChecker(shapeTypes) {
6921
+ function validate(props, propName, componentName, location, propFullName) {
6922
+ var propValue = props[propName];
6923
+ var propType = getPropType(propValue);
6924
+ if (propType !== 'object') {
6925
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
6926
+ }
6927
+ for (var key in shapeTypes) {
6928
+ var checker = shapeTypes[key];
6929
+ if (!checker) {
6930
+ continue;
6931
+ }
6932
+ var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
6933
+ if (error) {
6934
+ return error;
6935
+ }
6936
+ }
6937
+ return null;
6938
+ }
6939
+ return createChainableTypeChecker(validate);
6940
+ }
6941
+
6942
+ function isNode(propValue) {
6943
+ switch (typeof propValue) {
6944
+ case 'number':
6945
+ case 'string':
6946
+ case 'undefined':
6947
+ return true;
6948
+ case 'boolean':
6949
+ return !propValue;
6950
+ case 'object':
6951
+ if (Array.isArray(propValue)) {
6952
+ return propValue.every(isNode);
6953
+ }
6954
+ if (propValue === null || isValidElement(propValue)) {
6955
+ return true;
6956
+ }
6957
+
6958
+ var iteratorFn = getIteratorFn(propValue);
6959
+ if (iteratorFn) {
6960
+ var iterator = iteratorFn.call(propValue);
6961
+ var step;
6962
+ if (iteratorFn !== propValue.entries) {
6963
+ while (!(step = iterator.next()).done) {
6964
+ if (!isNode(step.value)) {
6965
+ return false;
6966
+ }
6967
+ }
6968
+ } else {
6969
+ // Iterator will provide entry [k,v] tuples rather than values.
6970
+ while (!(step = iterator.next()).done) {
6971
+ var entry = step.value;
6972
+ if (entry) {
6973
+ if (!isNode(entry[1])) {
6974
+ return false;
6975
+ }
6976
+ }
6977
+ }
6978
+ }
6979
+ } else {
6980
+ return false;
6981
+ }
6982
+
6983
+ return true;
6984
+ default:
6985
+ return false;
6986
+ }
6987
+ }
6988
+
6989
+ function isSymbol(propType, propValue) {
6990
+ // Native Symbol.
6991
+ if (propType === 'symbol') {
6992
+ return true;
6993
+ }
6994
+
6995
+ // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'
6996
+ if (propValue['@@toStringTag'] === 'Symbol') {
6997
+ return true;
6998
+ }
6999
+
7000
+ // Fallback for non-spec compliant Symbols which are polyfilled.
7001
+ if (typeof Symbol === 'function' && propValue instanceof Symbol) {
7002
+ return true;
7003
+ }
7004
+
7005
+ return false;
7006
+ }
7007
+
7008
+ // Equivalent of `typeof` but with special handling for array and regexp.
7009
+ function getPropType(propValue) {
7010
+ var propType = typeof propValue;
7011
+ if (Array.isArray(propValue)) {
7012
+ return 'array';
7013
+ }
7014
+ if (propValue instanceof RegExp) {
7015
+ // Old webkits (at least until Android 4.0) return 'function' rather than
7016
+ // 'object' for typeof a RegExp. We'll normalize this here so that /bla/
7017
+ // passes PropTypes.object.
7018
+ return 'object';
7019
+ }
7020
+ if (isSymbol(propType, propValue)) {
7021
+ return 'symbol';
7022
+ }
7023
+ return propType;
7024
+ }
7025
+
7026
+ // This handles more types than `getPropType`. Only used for error messages.
7027
+ // See `createPrimitiveTypeChecker`.
7028
+ function getPreciseType(propValue) {
7029
+ if (typeof propValue === 'undefined' || propValue === null) {
7030
+ return '' + propValue;
7031
+ }
7032
+ var propType = getPropType(propValue);
7033
+ if (propType === 'object') {
7034
+ if (propValue instanceof Date) {
7035
+ return 'date';
7036
+ } else if (propValue instanceof RegExp) {
7037
+ return 'regexp';
7038
+ }
7039
+ }
7040
+ return propType;
7041
+ }
7042
+
7043
+ // Returns a string that is postfixed to a warning about an invalid type.
7044
+ // For example, "undefined" or "of type array"
7045
+ function getPostfixForTypeWarning(value) {
7046
+ var type = getPreciseType(value);
7047
+ switch (type) {
7048
+ case 'array':
7049
+ case 'object':
7050
+ return 'an ' + type;
7051
+ case 'boolean':
7052
+ case 'date':
7053
+ case 'regexp':
7054
+ return 'a ' + type;
7055
+ default:
7056
+ return type;
7057
+ }
7058
+ }
7059
+
7060
+ // Returns class name of the object, if any.
7061
+ function getClassName(propValue) {
7062
+ if (!propValue.constructor || !propValue.constructor.name) {
7063
+ return ANONYMOUS;
7064
+ }
7065
+ return propValue.constructor.name;
7066
+ }
7067
+
7068
+ ReactPropTypes.checkPropTypes = checkPropTypes;
7069
+ ReactPropTypes.PropTypes = ReactPropTypes;
7070
+
7071
+ return ReactPropTypes;
7072
+ };
7073
+
7074
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)));
7075
+
7076
+ /***/ })
7077
+ /******/ ]);
7078
+ });
7079
+
7080
+ } (dist, dist.exports));
7081
+
7082
+ var distExports = dist.exports;
7083
+
7084
+ var SINGULAR = {
7085
+ count: 1
7086
+ };
7087
+ var PLURAL = {
7088
+ count: 2
7089
+ };
7090
+ var DEFAULT_PAGE_SIZE = 30;
7091
+ var ADMIN_ROLE_NAME = "Admin";
7092
+ var OWNER_ROLE_NAME = "Owner";
7093
+ var ADMIN_ROLES = [ADMIN_ROLE_NAME, OWNER_ROLE_NAME];
7094
+
7095
+ var queryClient = new reactQuery.QueryClient({
7096
+ queryCache: new reactQuery.QueryCache()
7097
+ });
7098
+
7099
+ var withReactQuery = function withReactQuery(Component) {
7100
+ var QueryWrapper = function QueryWrapper(props) {
7101
+ return /*#__PURE__*/React__default["default"].createElement(reactQuery.QueryClientProvider, {
7102
+ client: queryClient
7103
+ }, /*#__PURE__*/React__default["default"].createElement(Component, props), /*#__PURE__*/React__default["default"].createElement(devtools.ReactQueryDevtools, {
7104
+ initialIsOpen: false,
7105
+ position: "bottom-right"
7106
+ }));
7107
+ };
7108
+ return QueryWrapper;
7109
+ };
7110
+
7111
+ /* eslint-disable @bigbinary/neeto/no-dangling-constants */
7112
+ var BASE_URL = "team_members";
7113
+
7114
+ var fetch$3 = function fetch() {
7115
+ return axios__default["default"].get("".concat(BASE_URL, "/permissions"));
7116
+ };
7117
+ var permissionsApi = {
7118
+ fetch: fetch$3
7119
+ };
7120
+
7121
+ var DEFAULT_STALE_TIME = 300000; // 5 minutes
7122
+
7123
+ var QUERY_KEYS = {
7124
+ PERMISSIONS: "neeto-team-members-permissions",
7125
+ ROLES: "neeto-team-members-roles",
7126
+ GLOBAL_ROLES: "neeto-team-members-global-roles",
7127
+ TEAMS: "neeto-team-members-teams",
7128
+ TEAMS_DEPENDENCIES: "neeto-team-members-teams-dependencies"
7129
+ };
7130
+
7131
+ function ownKeys$c(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
7132
+ function _objectSpread$c(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$c(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$c(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7133
+ var useFetchPermissions = function useFetchPermissions() {
7134
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7135
+ return reactQuery.useQuery(QUERY_KEYS.PERMISSIONS, permissionsApi.fetch, _objectSpread$c({
7136
+ staleTime: DEFAULT_STALE_TIME,
7137
+ select: function select(response) {
7138
+ return response === null || response === void 0 ? void 0 : response.permissions;
7139
+ }
7140
+ }, options));
7141
+ };
7142
+
7143
+ var fetch$2 = function fetch() {
7144
+ return axios__default["default"].get("".concat(BASE_URL, "/global_roles"));
7145
+ };
7146
+ var globalRolesApi = {
7147
+ fetch: fetch$2
7148
+ };
7149
+
7150
+ var fetch$1 = function fetch() {
7151
+ return axios__default["default"].get("".concat(BASE_URL, "/organization_roles"));
7152
+ };
7153
+ var create$1 = function create(payload) {
7154
+ return axios__default["default"].post("".concat(BASE_URL, "/organization_roles"), payload);
7155
+ };
7156
+ var update$1 = function update(id, payload) {
7157
+ return axios__default["default"].patch("".concat(BASE_URL, "/organization_roles/").concat(id), payload);
7158
+ };
7159
+ var destroy = function destroy(id, payload) {
7160
+ return axios__default["default"]["delete"]("".concat(BASE_URL, "/organization_roles/").concat(id), {
7161
+ data: payload
7162
+ });
7163
+ };
7164
+ var bulkUpdate$1 = function bulkUpdate(payload) {
7165
+ return axios__default["default"].patch("".concat(BASE_URL, "/organization_roles/bulk_update"), payload);
7166
+ };
7167
+ var organizationRolesApi = {
7168
+ bulkUpdate: bulkUpdate$1,
7169
+ create: create$1,
7170
+ destroy: destroy,
7171
+ fetch: fetch$1,
7172
+ update: update$1
7173
+ };
7174
+
7175
+ var _excluded$2 = ["onSuccess"],
7176
+ _excluded2$2 = ["onSuccess"],
7177
+ _excluded3$1 = ["onSuccess"],
7178
+ _excluded4 = ["onSuccess"];
7179
+ function ownKeys$b(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
7180
+ function _objectSpread$b(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$b(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$b(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7181
+ var useFetchRoles = function useFetchRoles() {
7182
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7183
+ return reactQuery.useQuery(QUERY_KEYS.ROLES, organizationRolesApi.fetch, _objectSpread$b({
7184
+ staleTime: DEFAULT_STALE_TIME,
7185
+ select: function select(response) {
7186
+ return response === null || response === void 0 ? void 0 : response.organizationRoles;
7187
+ }
7188
+ }, options));
7189
+ };
7190
+ var useFetchGlobalRoles = function useFetchGlobalRoles() {
7191
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7192
+ return reactQuery.useQuery(QUERY_KEYS.GLOBAL_ROLES, globalRolesApi.fetch, _objectSpread$b({
7193
+ staleTime: DEFAULT_STALE_TIME
7194
+ }, options));
7195
+ };
7196
+ var useCreateRole = function useCreateRole(_ref) {
7197
+ var _onSuccess = _ref.onSuccess,
7198
+ options = _objectWithoutProperties(_ref, _excluded$2);
7199
+ return reactQuery.useMutation(organizationRolesApi.create, _objectSpread$b({
7200
+ onSuccess: function onSuccess(response) {
7201
+ queryClient.invalidateQueries(QUERY_KEYS.TEAMS_DEPENDENCIES);
7202
+ queryClient.setQueriesData(QUERY_KEYS.ROLES, function (cachedData) {
7203
+ return ramda.modifyPath(["organizationRoles"], ramda.prepend(response.organizationRole), cachedData);
7204
+ });
7205
+ _onSuccess === null || _onSuccess === void 0 ? void 0 : _onSuccess();
7206
+ }
7207
+ }, options));
7208
+ };
7209
+ var useUpdateRole = function useUpdateRole(_ref2) {
7210
+ var _onSuccess2 = _ref2.onSuccess,
7211
+ options = _objectWithoutProperties(_ref2, _excluded2$2);
7212
+ return reactQuery.useMutation(function (_ref3) {
7213
+ var id = _ref3.id,
7214
+ payload = _ref3.payload;
7215
+ return organizationRolesApi.update(id, payload);
7216
+ }, _objectSpread$b({
7217
+ onSuccess: function onSuccess(response) {
7218
+ queryClient.invalidateQueries(QUERY_KEYS.TEAMS);
7219
+ queryClient.invalidateQueries(QUERY_KEYS.TEAMS_DEPENDENCIES);
7220
+ queryClient.setQueriesData(QUERY_KEYS.ROLES, function (cachedData) {
7221
+ return ramda.assocPath(["organizationRoles", ramda.findIndex(ramda.propEq("id", response.organizationRole.id), cachedData.organizationRoles)], response.organizationRole, cachedData);
7222
+ });
7223
+ _onSuccess2 === null || _onSuccess2 === void 0 ? void 0 : _onSuccess2();
7224
+ }
7225
+ }, options));
7226
+ };
7227
+ var useDestroyRole = function useDestroyRole(_ref4) {
7228
+ var _ref4$onSuccess = _ref4.onSuccess,
7229
+ _onSuccess3 = _ref4$onSuccess === void 0 ? pure.noop : _ref4$onSuccess,
7230
+ options = _objectWithoutProperties(_ref4, _excluded3$1);
7231
+ return reactQuery.useMutation(function (_ref5) {
7232
+ var id = _ref5.id,
7233
+ payload = _ref5.payload;
7234
+ return organizationRolesApi.destroy(id, payload);
7235
+ }, _objectSpread$b({
7236
+ onSuccess: function onSuccess(response) {
7237
+ queryClient.invalidateQueries(QUERY_KEYS.TEAMS);
7238
+ queryClient.invalidateQueries(QUERY_KEYS.TEAMS_DEPENDENCIES);
7239
+ queryClient.setQueriesData(QUERY_KEYS.ROLES, function (cachedData) {
7240
+ return ramda.dissocPath(["organizationRoles", ramda.findIndex(ramda.propEq("id", response.id), cachedData.organizationRoles)], cachedData);
7241
+ });
7242
+ _onSuccess3 === null || _onSuccess3 === void 0 ? void 0 : _onSuccess3();
7243
+ }
7244
+ }, options));
7245
+ };
7246
+ var useBulkUpdateRoles = function useBulkUpdateRoles(_ref6) {
7247
+ var _onSuccess4 = _ref6.onSuccess,
7248
+ options = _objectWithoutProperties(_ref6, _excluded4);
7249
+ return reactQuery.useMutation(organizationRolesApi.bulkUpdate, _objectSpread$b({
7250
+ onSuccess: function onSuccess() {
7251
+ queryClient.invalidateQueries(QUERY_KEYS.TEAMS);
7252
+ queryClient.invalidateQueries(QUERY_KEYS.TEAMS_DEPENDENCIES);
7253
+ queryClient.invalidateQueries(QUERY_KEYS.ROLES);
7254
+ _onSuccess4 === null || _onSuccess4 === void 0 ? void 0 : _onSuccess4();
7255
+ }
7256
+ }, options));
7257
+ };
7258
+
7259
+ var renderSearchProps = function renderSearchProps(searchString, setSearchString) {
7260
+ return {
7261
+ "data-cy": "ntm-search-roles-input",
7262
+ onChange: function onChange(_ref) {
7263
+ var value = _ref.target.value;
7264
+ return setSearchString(value);
7265
+ },
7266
+ placeholder: instance.t("common.search_", {
7267
+ what: instance.t("common.role", PLURAL).toLocaleLowerCase()
7268
+ }),
7269
+ value: searchString
7270
+ };
7271
+ };
7272
+ var renderBreadcrumbs = function renderBreadcrumbs(breadcrumbs) {
7273
+ return breadcrumbs !== null && breadcrumbs !== void 0 ? breadcrumbs : [{
7274
+ text: instance.t("metaNames.member", PLURAL),
7275
+ link: "/members"
7276
+ }];
7277
+ };
7278
+
7279
+ var AddRoleButton = function AddRoleButton(_ref) {
7280
+ var config = _ref.config,
7281
+ onClick = _ref.onClick;
7282
+ var _useTranslation = useTranslation(),
7283
+ t = _useTranslation.t;
7284
+ var isCreatePermissionGranted = config.permissions.create;
7285
+ return /*#__PURE__*/React__default["default"].createElement(neetoui.Tooltip, {
7286
+ content: t("tooltips.noPermissionToAddRole"),
7287
+ disabled: isCreatePermissionGranted,
7288
+ position: "bottom"
7289
+ }, /*#__PURE__*/React__default["default"].createElement("span", null, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
7290
+ "data-cy": "ntm-add-role-button",
7291
+ disabled: !isCreatePermissionGranted,
7292
+ label: t("common.addNew_", {
7293
+ what: t("common.role", SINGULAR).toLocaleLowerCase()
7294
+ }),
7295
+ onClick: onClick
7296
+ })));
7297
+ };
7298
+
7299
+ var Header$1 = function Header(_ref) {
7300
+ var _config$header;
7301
+ var config = _ref.config,
7302
+ handleReset = _ref.handleReset,
7303
+ handleSubmit = _ref.handleSubmit,
7304
+ isDirty = _ref.isDirty,
7305
+ searchString = _ref.searchString,
7306
+ setSearchString = _ref.setSearchString,
7307
+ setIsNewRolePaneOpen = _ref.setIsNewRolePaneOpen;
7308
+ var _useTranslation = useTranslation(),
7309
+ t = _useTranslation.t;
7310
+ var isUpdatePermissionGranted = config.permissions.update;
7311
+ return /*#__PURE__*/React__default["default"].createElement(NeetoHeader__default["default"], {
7312
+ breadcrumbs: renderBreadcrumbs(config === null || config === void 0 ? void 0 : (_config$header = config.header) === null || _config$header === void 0 ? void 0 : _config$header.breadcrumbs),
7313
+ className: "ntm-roles-header",
5917
7314
  searchProps: renderSearchProps(searchString, setSearchString),
5918
7315
  actionBlock: isDirty ? /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Tooltip, {
5919
7316
  content: t("tooltips.noPermissionToEditRoles"),
5920
- disabled: hasUpdateRolePermission,
7317
+ disabled: isUpdatePermissionGranted,
5921
7318
  position: "bottom"
5922
7319
  }, /*#__PURE__*/React__default["default"].createElement("span", null, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
5923
7320
  "data-cy": "ntm-role-submission-button",
5924
- disabled: !hasUpdateRolePermission,
7321
+ disabled: !isUpdatePermissionGranted,
5925
7322
  label: t("buttons.saveChanges"),
5926
7323
  type: "submit",
5927
7324
  onClick: handleSubmit
@@ -5932,7 +7329,7 @@ var Header$1 = function Header(_ref) {
5932
7329
  type: "reset",
5933
7330
  onClick: handleReset
5934
7331
  })) : /*#__PURE__*/React__default["default"].createElement(AddRoleButton, {
5935
- permissions: config === null || config === void 0 ? void 0 : config.permissions,
7332
+ config: config,
5936
7333
  onClick: function onClick() {
5937
7334
  return setIsNewRolePaneOpen(true);
5938
7335
  }
@@ -5952,7 +7349,7 @@ var Header$1 = function Header(_ref) {
5952
7349
  };
5953
7350
 
5954
7351
  function _arrayWithoutHoles(arr) {
5955
- if (Array.isArray(arr)) return _arrayLikeToArray(arr);
7352
+ if (Array.isArray(arr)) return _arrayLikeToArray$1(arr);
5956
7353
  }
5957
7354
 
5958
7355
  function _nonIterableSpread() {
@@ -5960,7 +7357,7 @@ function _nonIterableSpread() {
5960
7357
  }
5961
7358
 
5962
7359
  function _toConsumableArray(arr) {
5963
- return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
7360
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray$1(arr) || _nonIterableSpread();
5964
7361
  }
5965
7362
 
5966
7363
  var transformObjectToDotNotation = function transformObjectToDotNotation(object) {
@@ -6014,13 +7411,19 @@ var ScrollToErrorField = function ScrollToErrorField(_ref) {
6014
7411
  var ROLE_NAME_MAX_LENGTH = 40;
6015
7412
  var ROLE_DESCRIPTION_MAX_LENGTH = 255;
6016
7413
  var ADD_ROLE_FORM_VALIDATION_SCHEMA = yup.object({
6017
- name: yup.string().trim().max(ROLE_NAME_MAX_LENGTH, instance.t("validations.limitExceeded", {
7414
+ name: yup.string().trim().max(ROLE_NAME_MAX_LENGTH,
7415
+ // @ts-ignore
7416
+ instance.t("validations.limitExceeded", {
6018
7417
  what: instance.t("common.name").toLocaleLowerCase(),
6019
7418
  limit: ROLE_NAME_MAX_LENGTH
6020
- })).required(instance.t("validations.enterRoleName")),
6021
- description: yup.string().trim().max(ROLE_DESCRIPTION_MAX_LENGTH, instance.t("validations.limitExceeded", {
7419
+ }))
7420
+ // @ts-ignore
7421
+ .required(instance.t("validations.enterRoleName")),
7422
+ description: yup.string().trim().max(ROLE_DESCRIPTION_MAX_LENGTH,
7423
+ // @ts-ignore
7424
+ instance.t("validations.limitExceeded", {
6022
7425
  what: instance.t("common.description").toLocaleLowerCase(),
6023
- limit: ROLE_NAME_MAX_LENGTH
7426
+ limit: ROLE_DESCRIPTION_MAX_LENGTH
6024
7427
  }))
6025
7428
  });
6026
7429
  var ADD_ROLE_FORM_INITIAL_VALUES = {
@@ -6043,6 +7446,25 @@ var sortPermissionsBySequence = function sortPermissionsBySequence() {
6043
7446
  return first.sequence - second.sequence;
6044
7447
  }) : permissions;
6045
7448
  };
7449
+ var getPermissionGroups = function getPermissionGroups() {
7450
+ var permissions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
7451
+ var sortBySequence = sortPermissionsBySequence(permissions);
7452
+ var groupedPermissions = new Map();
7453
+ sortBySequence.forEach(function (permission) {
7454
+ if (groupedPermissions.has(permission === null || permission === void 0 ? void 0 : permission.category)) {
7455
+ var category = groupedPermissions.get(permission.category);
7456
+ var currentPermissions = category.get("permissions");
7457
+ var _permissions = ramda.append(permission, currentPermissions);
7458
+ category.set("permissions", _permissions);
7459
+ } else {
7460
+ var value = new Map();
7461
+ value.set("permissions", ramda.append(permission, []));
7462
+ value.set("isPermissionVisible", true);
7463
+ groupedPermissions.set(permission === null || permission === void 0 ? void 0 : permission.category, value);
7464
+ }
7465
+ });
7466
+ return groupedPermissions;
7467
+ };
6046
7468
  var getModifiedPermissions = function getModifiedPermissions() {
6047
7469
  var roles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
6048
7470
  var modifiedRoles = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
@@ -6321,61 +7743,213 @@ var ManageRoles = function ManageRoles(_ref) {
6321
7743
  }));
6322
7744
  };
6323
7745
 
6324
- var Left$1 = function Left(_ref) {
6325
- var filteredCount = _ref.filteredCount;
6326
- var _useTranslation = useTranslation(),
6327
- t = _useTranslation.t;
6328
- return /*#__PURE__*/React__default["default"].createElement("div", {
6329
- className: "neeto-ui-flex neeto-ui-items-center neeto-ui-gap-4"
6330
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
6331
- component: "h4",
6332
- "data-cy": "ntm-filtered-members-count",
6333
- style: "h4"
6334
- }, t("helpers.roleWithCount", {
6335
- count: filteredCount
6336
- })));
7746
+ var DEFAULT_MANAGE_ROLE_VALUES = {
7747
+ isDelete: false,
7748
+ isEdit: false,
7749
+ selectedRole: {}
7750
+ };
7751
+
7752
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
7753
+ 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); }
7754
+ 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; }
7755
+ neetoui.Dropdown.Menu;
7756
+ neetoui.Dropdown.MenuItem;
7757
+ var deepClone = function deepClone(object) {
7758
+ if (!object || true === object) {
7759
+ //this also handles boolean as true and false
7760
+ return object;
7761
+ }
7762
+ var objectType = _typeof$1(object);
7763
+ if ("number" === objectType || "string" === objectType) {
7764
+ // add your immutables here
7765
+ return object;
7766
+ }
7767
+ var result = null;
7768
+ if (Array.isArray(object)) {
7769
+ result = [];
7770
+ } else if (!object.constructor) {
7771
+ result = {};
7772
+ } else {
7773
+ result = new object.constructor();
7774
+ }
7775
+ if (object instanceof Map) {
7776
+ var _iterator = _createForOfIteratorHelper(object.keys()),
7777
+ _step;
7778
+ try {
7779
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
7780
+ var key = _step.value;
7781
+ result.set(key, deepClone(object.get(key)));
7782
+ }
7783
+ } catch (err) {
7784
+ _iterator.e(err);
7785
+ } finally {
7786
+ _iterator.f();
7787
+ }
7788
+ }
7789
+ Object.keys(object).forEach(function (key) {
7790
+ if (Object.prototype.hasOwnProperty.call(object, key)) {
7791
+ result[key] = deepClone(object[key]);
7792
+ }
7793
+ });
7794
+ return result;
6337
7795
  };
6338
- var SubHeader$1 = {
6339
- Left: Left$1
7796
+ var renderRolesTooltipContent = function renderRolesTooltipContent(roleName) {
7797
+ return Object.is(roleName, "Admin") ? t$2("tooltips.adminMustHaveAccess") : t$2("tooltips.noPermissionToEditRoles");
7798
+ };
7799
+ var removeDuplicates = function removeDuplicates(array) {
7800
+ return _toConsumableArray(new Set(array));
7801
+ };
7802
+ var updatePermissionVisibility = function updatePermissionVisibility(categoryName, permissions) {
7803
+ var category = permissions.get(categoryName);
7804
+ var isPermissionVisible = category.get("isPermissionVisible");
7805
+ category.set("isPermissionVisible", !isPermissionVisible);
7806
+ return new Map(permissions.set(categoryName, category));
7807
+ };
7808
+ var filterPermissionsBySearch = function filterPermissionsBySearch(searchTerm, permissionGroups) {
7809
+ var newValue = deepClone(permissionGroups);
7810
+ newValue.forEach(function (value) {
7811
+ var permissions = value.get("permissions");
7812
+ var filteredPermissions = permissions.filter(function (permission) {
7813
+ var _permission$descripti, _permission$descripti2, _permission$descripti3;
7814
+ return permission === null || permission === void 0 ? void 0 : (_permission$descripti = permission.description) === null || _permission$descripti === void 0 ? void 0 : (_permission$descripti2 = _permission$descripti.toLowerCase()) === null || _permission$descripti2 === void 0 ? void 0 : (_permission$descripti3 = _permission$descripti2.trim()) === null || _permission$descripti3 === void 0 ? void 0 : _permission$descripti3.includes(searchTerm.toLowerCase().trim());
7815
+ });
7816
+ value.set("permissions", filteredPermissions);
7817
+ });
7818
+ return newValue;
7819
+ };
7820
+
7821
+ var Row = function Row(_ref) {
7822
+ var _ref$allPermissionsOf = _ref.allPermissionsOfCategory,
7823
+ allPermissionsOfCategory = _ref$allPermissionsOf === void 0 ? null : _ref$allPermissionsOf,
7824
+ config = _ref.config,
7825
+ _ref$permission = _ref.permission,
7826
+ permission = _ref$permission === void 0 ? null : _ref$permission,
7827
+ roles = _ref.roles,
7828
+ setModifiedRoles = _ref.setModifiedRoles;
7829
+ var isUpdatePermissionGranted = config.permissions.update;
7830
+ var permissions = (allPermissionsOfCategory === null || allPermissionsOfCategory === void 0 ? void 0 : allPermissionsOfCategory.get("permissions")) || [];
7831
+ var allPermissionIdsOfCategory = ramda.map(ramda.prop("id"), permissions);
7832
+ var handleSubmit = function handleSubmit(role, checked) {
7833
+ var permissionIds = pure.isNotEmpty(allPermissionIdsOfCategory) ? allPermissionIdsOfCategory : [permission === null || permission === void 0 ? void 0 : permission.id];
7834
+ var modifiedRole = ramda.modify("permissionIds", function () {
7835
+ return checked ? removeDuplicates([].concat(_toConsumableArray(role.permissionIds), _toConsumableArray(permissionIds))) : role.permissionIds.filter(function (id) {
7836
+ return !permissionIds.includes(id);
7837
+ });
7838
+ }, role);
7839
+ setModifiedRoles(pure.replaceById(role.id, modifiedRole));
7840
+ };
7841
+ var isCheckboxChecked = function isCheckboxChecked(role) {
7842
+ return !allPermissionsOfCategory ? ramda.includes(permission === null || permission === void 0 ? void 0 : permission.id, role.permissionIds) : allPermissionIdsOfCategory.every(ramda.includes(ramda.__, role.permissionIds));
7843
+ };
7844
+ return /*#__PURE__*/React__default["default"].createElement("div", {
7845
+ className: classnames__default["default"]("ntm-roles-table__row", {
7846
+ "ntm-roles-table__row--highlighted": !!allPermissionsOfCategory
7847
+ })
7848
+ }, roles.map(function (role) {
7849
+ return /*#__PURE__*/React__default["default"].createElement("div", {
7850
+ className: "ntm-roles-table__cell",
7851
+ key: role.id
7852
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Tooltip, {
7853
+ content: renderRolesTooltipContent(role.name),
7854
+ position: "top",
7855
+ disabled: isUpdatePermissionGranted && !ramda.identical(role.name, "Admin")
7856
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
7857
+ className: "ntm-roles-table-cell__checkbox-wrapper"
7858
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Checkbox, {
7859
+ disabled: true,
7860
+ checked: isCheckboxChecked(role),
7861
+ className: "ntm-roles-table-cell__checkbox",
7862
+ "data-cy": "ntm-roles-table-permission-checkbox",
7863
+ onChange: function onChange(_ref2) {
7864
+ var checked = _ref2.target.checked;
7865
+ return handleSubmit(role, checked);
7866
+ }
7867
+ }))));
7868
+ }));
6340
7869
  };
6341
7870
 
6342
7871
  var Menu$4 = neetoui.Dropdown.Menu,
6343
7872
  MenuItem$3 = neetoui.Dropdown.MenuItem;
6344
- var getColumns = function getColumns(_ref) {
6345
- var onEdit = _ref.onEdit,
6346
- onDelete = _ref.onDelete;
6347
- return [{
6348
- title: t$2("common.name"),
6349
- dataIndex: "name",
6350
- key: "id",
6351
- render: function render(_, role) {
6352
- return /*#__PURE__*/React__default["default"].createElement("span", {
6353
- className: "ntm-roles-table__name-column"
6354
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
6355
- label: role.name,
6356
- style: "link",
6357
- onClick: function onClick() {
6358
- return onEdit(role);
6359
- }
6360
- }), /*#__PURE__*/React__default["default"].createElement(neetoui.Dropdown, {
6361
- buttonStyle: "text",
6362
- icon: neetoIcons.MenuHorizontal,
6363
- strategy: "fixed"
6364
- }, /*#__PURE__*/React__default["default"].createElement(Menu$4, null, /*#__PURE__*/React__default["default"].createElement(MenuItem$3.Button, {
6365
- onClick: function onClick() {
6366
- return onEdit(role);
6367
- }
6368
- }, t$2("common.edit")), role.kind === "custom" && /*#__PURE__*/React__default["default"].createElement(MenuItem$3.Button, {
6369
- onClick: function onClick() {
6370
- return onDelete(role);
6371
- }
6372
- }, t$2("common.delete")))));
6373
- },
6374
- width: 300
6375
- }, {
6376
- title: t$2("common.description"),
6377
- dataIndex: "description"
6378
- }];
7873
+ var TableHeader = function TableHeader(_ref) {
7874
+ var config = _ref.config,
7875
+ roles = _ref.roles,
7876
+ setManageRole = _ref.setManageRole,
7877
+ setIsScrollPresent = _ref.setIsScrollPresent;
7878
+ var _useTranslation = useTranslation(),
7879
+ t = _useTranslation.t;
7880
+ var isUpdatePermissionGranted = config.permissions.update;
7881
+ var isDeletePermissionGranted = config.permissions["delete"];
7882
+ var scrollSyncElement = React.useRef(null);
7883
+ var getOverflowStatus = React.useCallback(function () {
7884
+ if (scrollSyncElement.current) {
7885
+ var headerElement = scrollSyncElement.current.node;
7886
+ var isScrollBarPresent = isOverflown(headerElement);
7887
+ setIsScrollPresent(isScrollBarPresent);
7888
+ }
7889
+ }, [setIsScrollPresent]);
7890
+ React.useEffect(function () {
7891
+ return getOverflowStatus();
7892
+ }, [getOverflowStatus, scrollSyncElement, roles]);
7893
+ return /*#__PURE__*/React__default["default"].createElement(distExports.ScrollSyncPane, {
7894
+ group: "horizontal",
7895
+ ref: scrollSyncElement
7896
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
7897
+ className: "ntm-roles-table__header"
7898
+ }, roles === null || roles === void 0 ? void 0 : roles.map(function (role, index) {
7899
+ var isSystemRole = ramda.identical("system", role.kind);
7900
+ var isAdminRole = ADMIN_ROLES.includes(role.name) && isSystemRole;
7901
+ return /*#__PURE__*/React__default["default"].createElement("div", {
7902
+ className: "ntm-roles-table__cell",
7903
+ key: "ntm-roles-".concat(index)
7904
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
7905
+ className: "ntm-roles-table-header-cell__container"
7906
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
7907
+ className: "ntm-roles-table-header__role-name",
7908
+ "data-cy": "ntm-roles-table-header-role-title",
7909
+ lineHeight: "normal",
7910
+ style: "h4",
7911
+ weight: "semibold"
7912
+ }, role.name), !isAdminRole && /*#__PURE__*/React__default["default"].createElement(neetoui.Dropdown, {
7913
+ autoWidth: true,
7914
+ buttonStyle: "text",
7915
+ icon: neetoIcons.MenuHorizontal,
7916
+ buttonProps: {
7917
+ className: "ntm-roles-table-header__dropdown",
7918
+ "data-cy": "ntm-roles-table-header-role-dropdown-button"
7919
+ }
7920
+ }, /*#__PURE__*/React__default["default"].createElement(Menu$4, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Tooltip, {
7921
+ content: t("tooltips.noPermissionToEditRoles"),
7922
+ position: "left",
7923
+ disabled: isUpdatePermissionGranted
7924
+ }, /*#__PURE__*/React__default["default"].createElement("span", null, /*#__PURE__*/React__default["default"].createElement(MenuItem$3.Button, {
7925
+ className: "ntm-dropdown__button",
7926
+ "data-cy": "ntm-roles-table-edit-role-button",
7927
+ size: "small",
7928
+ style: "text",
7929
+ disabled: !isUpdatePermissionGranted,
7930
+ onClick: function onClick() {
7931
+ return setManageRole({
7932
+ isEdit: true,
7933
+ selectedRole: role
7934
+ });
7935
+ }
7936
+ }, t("common.edit")))), !isSystemRole && /*#__PURE__*/React__default["default"].createElement(neetoui.Tooltip, {
7937
+ content: t("tooltips.noPermissionToRemoveRoles"),
7938
+ position: "left",
7939
+ disabled: isDeletePermissionGranted
7940
+ }, /*#__PURE__*/React__default["default"].createElement("span", null, /*#__PURE__*/React__default["default"].createElement(MenuItem$3.Button, {
7941
+ className: "ntm-dropdown__button",
7942
+ "data-cy": "ntm-roles-table-delete-role-button",
7943
+ size: "small",
7944
+ disabled: !isDeletePermissionGranted,
7945
+ onClick: function onClick() {
7946
+ return setManageRole({
7947
+ isDelete: true,
7948
+ selectedRole: role
7949
+ });
7950
+ }
7951
+ }, t("common.delete"))))))));
7952
+ })));
6379
7953
  };
6380
7954
 
6381
7955
  var Delete = function Delete(_ref) {
@@ -6423,43 +7997,237 @@ var Delete = function Delete(_ref) {
6423
7997
  });
6424
7998
  };
6425
7999
 
8000
+ var Columns = function Columns(_ref) {
8001
+ var config = _ref.config,
8002
+ filteredGroupPermissions = _ref.filteredGroupPermissions,
8003
+ filteredRoles = _ref.filteredRoles,
8004
+ permissions = _ref.permissions,
8005
+ roles = _ref.roles,
8006
+ setModifiedRoles = _ref.setModifiedRoles,
8007
+ setIsScrollPresent = _ref.setIsScrollPresent;
8008
+ var _useState = React.useState(DEFAULT_MANAGE_ROLE_VALUES),
8009
+ _useState2 = _slicedToArray(_useState, 2),
8010
+ manageRole = _useState2[0],
8011
+ setManageRole = _useState2[1];
8012
+ var categories = Array.from(filteredGroupPermissions === null || filteredGroupPermissions === void 0 ? void 0 : filteredGroupPermissions.keys());
8013
+ var onClose = function onClose() {
8014
+ return setManageRole(DEFAULT_MANAGE_ROLE_VALUES);
8015
+ };
8016
+ return /*#__PURE__*/React__default["default"].createElement("div", {
8017
+ className: "ntm-roles-table__columns"
8018
+ }, /*#__PURE__*/React__default["default"].createElement(TableHeader, {
8019
+ config: config,
8020
+ roles: filteredRoles,
8021
+ setIsScrollPresent: setIsScrollPresent,
8022
+ setManageRole: setManageRole
8023
+ }), /*#__PURE__*/React__default["default"].createElement(distExports.ScrollSyncPane, {
8024
+ group: ["horizontal", "vertical"]
8025
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
8026
+ className: "ntm-roles-table__rows"
8027
+ }, categories.map(function (category, index) {
8028
+ var groupedPermissions = filteredGroupPermissions.get(category);
8029
+ var isPermissionVisible = groupedPermissions.get("isPermissionVisible");
8030
+ var permissions = groupedPermissions.get("permissions");
8031
+ return /*#__PURE__*/React__default["default"].createElement("div", {
8032
+ key: index
8033
+ }, /*#__PURE__*/React__default["default"].createElement(Row, {
8034
+ allPermissionsOfCategory: groupedPermissions,
8035
+ config: config,
8036
+ roles: filteredRoles,
8037
+ setModifiedRoles: setModifiedRoles
8038
+ }), isPermissionVisible && permissions.map(function (permission) {
8039
+ return /*#__PURE__*/React__default["default"].createElement(Row, {
8040
+ config: config,
8041
+ key: permission.id,
8042
+ permission: permission,
8043
+ roles: filteredRoles,
8044
+ setModifiedRoles: setModifiedRoles
8045
+ });
8046
+ }));
8047
+ }))), /*#__PURE__*/React__default["default"].createElement(ManageRoles, {
8048
+ config: config,
8049
+ isOpen: manageRole.isEdit,
8050
+ permissions: permissions,
8051
+ selectedRole: manageRole.selectedRole,
8052
+ onClose: onClose
8053
+ }), /*#__PURE__*/React__default["default"].createElement(Delete, {
8054
+ isOpen: manageRole.isDelete,
8055
+ roles: roles,
8056
+ selectedRole: manageRole.selectedRole,
8057
+ onClose: onClose
8058
+ }));
8059
+ };
8060
+
8061
+ var ToggleDropdown = function ToggleDropdown(_ref) {
8062
+ var isVisible = _ref.isVisible,
8063
+ onClick = _ref.onClick;
8064
+ return isVisible ? /*#__PURE__*/React__default["default"].createElement(neetoIcons.Up, {
8065
+ className: "ntm-roles-table-sidebar__drop-down-button",
8066
+ "data-cy": "ntm-permission-category-hide-button",
8067
+ size: 16,
8068
+ strokeWidth: 2,
8069
+ onClick: onClick
8070
+ }) : /*#__PURE__*/React__default["default"].createElement(neetoIcons.Down, {
8071
+ className: "ntm-roles-table-sidebar__drop-down-button",
8072
+ "data-cy": "ntm-permission-category-show-button",
8073
+ size: 16,
8074
+ strokeWidth: 2,
8075
+ onClick: onClick
8076
+ });
8077
+ };
8078
+
8079
+ var ROLES_TABLE_CELL_HEIGHT_VARIABLE = "--ntm-roles-table-cell-height";
8080
+
8081
+ var getCurrentTableCellHeight = function getCurrentTableCellHeight() {
8082
+ return parseInt(getComputedStyle(document.documentElement).getPropertyValue(ROLES_TABLE_CELL_HEIGHT_VARIABLE), 10);
8083
+ };
8084
+ var renderDescription = function renderDescription(permissions) {
8085
+ return permissions === null || permissions === void 0 ? void 0 : permissions.map(function (_ref) {
8086
+ var id = _ref.id,
8087
+ description = _ref.description;
8088
+ return /*#__PURE__*/React__default["default"].createElement("div", {
8089
+ className: "ntm-roles-table-sidebar__list-item",
8090
+ key: id
8091
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
8092
+ "data-cy": "ntm-permission-category-description",
8093
+ lineHeight: "normal",
8094
+ style: "body2"
8095
+ }, description));
8096
+ });
8097
+ };
8098
+ var getSearchWrapperStyle = function getSearchWrapperStyle() {
8099
+ var scrollBarWidth = getScrollBarWidth();
8100
+ document.documentElement.style.setProperty("--ntm-roles-table-default-scroll", "".concat(scrollBarWidth, "px"));
8101
+ return {
8102
+ marginBottom: "".concat(scrollBarWidth, "px")
8103
+ };
8104
+ };
8105
+ var assignRolesTableCellHeight = function assignRolesTableCellHeight() {
8106
+ var sidebarItems = _toConsumableArray(document.getElementsByClassName("ntm-roles-table-sidebar__list-item"));
8107
+ var clientHeights = ramda.pluck("clientHeight", sidebarItems);
8108
+ var maxClientHeight = Math.max.apply(Math, _toConsumableArray(clientHeights));
8109
+ var currentTableCellHeight = getCurrentTableCellHeight();
8110
+ if (maxClientHeight > currentTableCellHeight) {
8111
+ document.documentElement.style.setProperty(ROLES_TABLE_CELL_HEIGHT_VARIABLE, "".concat(maxClientHeight, "px"));
8112
+ }
8113
+ };
8114
+
8115
+ var Sidebar = function Sidebar(_ref) {
8116
+ var searchTerm = _ref.searchTerm,
8117
+ setSearchTerm = _ref.setSearchTerm,
8118
+ filteredGroupPermissions = _ref.filteredGroupPermissions,
8119
+ toggleDropdown = _ref.toggleDropdown,
8120
+ isScrollPresent = _ref.isScrollPresent;
8121
+ var _useTranslation = useTranslation(),
8122
+ t = _useTranslation.t;
8123
+ var categories = Array.from(filteredGroupPermissions.keys());
8124
+ var searchWrapperStyle = isScrollPresent ? getSearchWrapperStyle() : {};
8125
+ React.useLayoutEffect(function () {
8126
+ assignRolesTableCellHeight();
8127
+ }, []);
8128
+ return /*#__PURE__*/React__default["default"].createElement("div", {
8129
+ className: "ntm-roles-table__sidebar"
8130
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
8131
+ className: "ntm-roles-table-sidebar__search",
8132
+ style: searchWrapperStyle
8133
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Input, {
8134
+ "data-cy": "ntm-search-permissions-input",
8135
+ prefix: /*#__PURE__*/React__default["default"].createElement(neetoIcons.Search, null),
8136
+ type: "search",
8137
+ value: searchTerm,
8138
+ placeholder: t("common.search_", {
8139
+ what: t("common.permission", PLURAL).toLocaleLowerCase()
8140
+ }),
8141
+ onChange: function onChange(_ref2) {
8142
+ var value = _ref2.target.value;
8143
+ return setSearchTerm(value);
8144
+ }
8145
+ })), /*#__PURE__*/React__default["default"].createElement(distExports.ScrollSyncPane, {
8146
+ group: "vertical"
8147
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
8148
+ className: "ntm-roles-table-sidebar__list"
8149
+ }, categories.map(function (category, index) {
8150
+ var groupedPermissions = filteredGroupPermissions.get(category);
8151
+ var isPermissionVisible = groupedPermissions.get("isPermissionVisible");
8152
+ var permissions = groupedPermissions.get("permissions");
8153
+ return /*#__PURE__*/React__default["default"].createElement("div", {
8154
+ key: index
8155
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
8156
+ className: "ntm-roles-table-sidebar__list-item ntm-roles-table-sidebar__list-item--highlighted cursor-pointer",
8157
+ onClick: function onClick() {
8158
+ return toggleDropdown(category);
8159
+ }
8160
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
8161
+ "data-cy": "ntm-permission-category-title",
8162
+ lineHeight: "normal",
8163
+ style: "h4",
8164
+ weight: "semibold"
8165
+ }, category), /*#__PURE__*/React__default["default"].createElement(ToggleDropdown, {
8166
+ isVisible: isPermissionVisible,
8167
+ onClick: function onClick() {
8168
+ return toggleDropdown(category);
8169
+ }
8170
+ })), isPermissionVisible && renderDescription(permissions));
8171
+ }))));
8172
+ };
8173
+
6426
8174
  var Table = function Table(_ref) {
6427
- var _config$permissions$c, _config$permissions;
6428
8175
  var config = _ref.config,
6429
8176
  filteredRoles = _ref.filteredRoles,
6430
8177
  roles = _ref.roles,
8178
+ permissionGroups = _ref.permissionGroups,
6431
8179
  permissions = _ref.permissions,
8180
+ setModifiedRoles = _ref.setModifiedRoles,
6432
8181
  setIsNewRolePaneOpen = _ref.setIsNewRolePaneOpen;
6433
8182
  var _useTranslation = useTranslation(),
6434
8183
  t = _useTranslation.t;
6435
- var _useState = React.useState(),
8184
+ var isCreatePermissionGranted = config.permissions.create;
8185
+ var _useState = React.useState(""),
6436
8186
  _useState2 = _slicedToArray(_useState, 2),
6437
- selectedRole = _useState2[0],
6438
- setSelectedRole = _useState2[1];
6439
- var _useState3 = React.useState(false),
8187
+ searchTerm = _useState2[0],
8188
+ setSearchTerm = _useState2[1];
8189
+ var _useState3 = React.useState(permissionGroups),
6440
8190
  _useState4 = _slicedToArray(_useState3, 2),
6441
- isDeleteAlertOpen = _useState4[0],
6442
- setIsDeleteAlertOpen = _useState4[1];
8191
+ filteredGroupPermissions = _useState4[0],
8192
+ setFilteredGroupPermissions = _useState4[1];
6443
8193
  var _useState5 = React.useState(false),
6444
8194
  _useState6 = _slicedToArray(_useState5, 2),
6445
- isEditPaneOpen = _useState6[0],
6446
- setIsEditPaneOpen = _useState6[1];
6447
- var _useState7 = React.useState(1),
8195
+ isScrollPresent = _useState6[0],
8196
+ setIsScrollPresent = _useState6[1];
8197
+ var _useState7 = React.useState(),
6448
8198
  _useState8 = _slicedToArray(_useState7, 2),
6449
- pageNumber = _useState8[0],
6450
- setPageNumber = _useState8[1];
6451
- var handlePageChange = function handlePageChange(pageNumber) {
6452
- return setPageNumber(pageNumber);
8199
+ selectedRole = _useState8[0],
8200
+ setSelectedRole = _useState8[1];
8201
+ var _useState9 = React.useState(false),
8202
+ _useState10 = _slicedToArray(_useState9, 2),
8203
+ isDeleteAlertOpen = _useState10[0],
8204
+ setIsDeleteAlertOpen = _useState10[1];
8205
+ var _useState11 = React.useState(false),
8206
+ _useState12 = _slicedToArray(_useState11, 2),
8207
+ isEditPaneOpen = _useState12[0],
8208
+ setIsEditPaneOpen = _useState12[1];
8209
+ var toggleDropdown = function toggleDropdown(category) {
8210
+ var permissions = updatePermissionVisibility(category, filteredGroupPermissions);
8211
+ setFilteredGroupPermissions(permissions);
6453
8212
  };
6454
- var isAddRoleDisabled = !((_config$permissions$c = (_config$permissions = config.permissions) === null || _config$permissions === void 0 ? void 0 : _config$permissions.create) !== null && _config$permissions$c !== void 0 ? _config$permissions$c : hasPermission(MANAGE_MEMBER_PERMISSIONS));
6455
- return /*#__PURE__*/React__default["default"].createElement(TableWrapper__default["default"], {
6456
- hasPagination: (filteredRoles === null || filteredRoles === void 0 ? void 0 : filteredRoles.length) > DEFAULT_PAGE_SIZE
6457
- }, ramda.isEmpty(filteredRoles) ? /*#__PURE__*/React__default["default"].createElement("div", {
8213
+ React.useEffect(function () {
8214
+ var newValue = filterPermissionsBySearch(searchTerm, permissionGroups);
8215
+ setFilteredGroupPermissions(newValue);
8216
+ }, [permissionGroups, searchTerm]);
8217
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
8218
+ className: "ntm-roles-table__wrapper"
8219
+ }, /*#__PURE__*/React__default["default"].createElement(Sidebar, {
8220
+ filteredGroupPermissions: filteredGroupPermissions,
8221
+ isScrollPresent: isScrollPresent,
8222
+ searchTerm: searchTerm,
8223
+ setSearchTerm: setSearchTerm,
8224
+ toggleDropdown: toggleDropdown
8225
+ }), ramda.isEmpty(filteredRoles) ? /*#__PURE__*/React__default["default"].createElement("div", {
6458
8226
  className: "ntm-empty-state"
6459
8227
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.NoData, {
6460
8228
  primaryButtonProps: {
6461
8229
  "data-cy": "ntm-add-role-button",
6462
- disabled: isAddRoleDisabled,
8230
+ disabled: !isCreatePermissionGranted,
6463
8231
  label: t("common.addNew_", {
6464
8232
  what: t("common.role", SINGULAR).toLocaleLowerCase()
6465
8233
  }),
@@ -6470,23 +8238,15 @@ var Table = function Table(_ref) {
6470
8238
  title: t("common.notFound_", {
6471
8239
  what: t("common.role", PLURAL).toLocaleLowerCase()
6472
8240
  })
6473
- })) : /*#__PURE__*/React__default["default"].createElement(neetoui.Table, {
6474
- fixedHeight: true,
6475
- currentPageNumber: pageNumber,
6476
- defaultPageSize: DEFAULT_PAGE_SIZE,
6477
- handlePageChange: handlePageChange,
6478
- rowData: filteredRoles,
6479
- columnData: getColumns({
6480
- onEdit: function onEdit(role) {
6481
- setSelectedRole(role);
6482
- setIsEditPaneOpen(true);
6483
- },
6484
- onDelete: function onDelete(role) {
6485
- setSelectedRole(role);
6486
- setIsDeleteAlertOpen(true);
6487
- }
6488
- })
6489
- }), /*#__PURE__*/React__default["default"].createElement(ManageRoles, {
8241
+ })) : /*#__PURE__*/React__default["default"].createElement(Columns, {
8242
+ config: config,
8243
+ filteredGroupPermissions: filteredGroupPermissions,
8244
+ filteredRoles: filteredRoles,
8245
+ permissions: permissions,
8246
+ roles: roles,
8247
+ setIsScrollPresent: setIsScrollPresent,
8248
+ setModifiedRoles: setModifiedRoles
8249
+ })), /*#__PURE__*/React__default["default"].createElement(ManageRoles, {
6490
8250
  config: config,
6491
8251
  isOpen: isEditPaneOpen,
6492
8252
  permissions: permissions,
@@ -6507,10 +8267,11 @@ var Table = function Table(_ref) {
6507
8267
  };
6508
8268
 
6509
8269
  var Roles = function Roles(_ref) {
6510
- var _config$permissions$v, _config$permissions, _config$permissions$v2, _config$permissions2, _config$permissions$u, _config$permissions3;
6511
8270
  var config = _ref.config;
6512
- var _useTranslation = useTranslation(),
6513
- t = _useTranslation.t;
8271
+ var _useTranslation = useTranslation();
8272
+ _useTranslation.t;
8273
+ var isViewPermissionGranted = config.permissions.view;
8274
+ var isUpdatePermissionGranted = config.permissions.update;
6514
8275
  var _useState = React.useState(""),
6515
8276
  _useState2 = _slicedToArray(_useState, 2),
6516
8277
  searchString = _useState2[0],
@@ -6527,17 +8288,17 @@ var Roles = function Roles(_ref) {
6527
8288
  onSuccess: function onSuccess(roles) {
6528
8289
  return setModifiedRoles(roles);
6529
8290
  },
6530
- enabled: (_config$permissions$v = config === null || config === void 0 ? void 0 : (_config$permissions = config.permissions) === null || _config$permissions === void 0 ? void 0 : _config$permissions.view) !== null && _config$permissions$v !== void 0 ? _config$permissions$v : DEFAULT_PERMISSION
8291
+ enabled: isViewPermissionGranted
6531
8292
  }),
6532
8293
  roles = _useFetchRoles.data,
6533
8294
  isRolesLoading = _useFetchRoles.isLoading;
6534
8295
  var _useFetchPermissions = useFetchPermissions({
6535
- enabled: (_config$permissions$v2 = config === null || config === void 0 ? void 0 : (_config$permissions2 = config.permissions) === null || _config$permissions2 === void 0 ? void 0 : _config$permissions2.view) !== null && _config$permissions$v2 !== void 0 ? _config$permissions$v2 : DEFAULT_PERMISSION
8296
+ enabled: isViewPermissionGranted
6536
8297
  }),
6537
8298
  permissionData = _useFetchPermissions.data,
6538
8299
  isPermissionsLoading = _useFetchPermissions.isLoading;
6539
8300
  var _useBulkUpdateRoles = useBulkUpdateRoles({
6540
- enabled: (_config$permissions$u = config === null || config === void 0 ? void 0 : (_config$permissions3 = config.permissions) === null || _config$permissions3 === void 0 ? void 0 : _config$permissions3.update) !== null && _config$permissions$u !== void 0 ? _config$permissions$u : DEFAULT_PERMISSION
8301
+ enabled: isUpdatePermissionGranted
6541
8302
  }),
6542
8303
  bulkUpdate = _useBulkUpdateRoles.mutate;
6543
8304
  var _useState7 = React.useState(roles),
@@ -6546,6 +8307,7 @@ var Roles = function Roles(_ref) {
6546
8307
  setModifiedRoles = _useState8[1];
6547
8308
  var isDirty = pure.isPresent(getModifiedPermissions(roles, modifiedRoles));
6548
8309
  var permissions = sortPermissionsBySequence(permissionData);
8310
+ var permissionGroups = getPermissionGroups(permissions);
6549
8311
  React.useEffect(function () {
6550
8312
  setFilteredRoles(ramda.filter(function (_ref2) {
6551
8313
  var name = _ref2.name;
@@ -6568,7 +8330,9 @@ var Roles = function Roles(_ref) {
6568
8330
  className: "ntm-members-page-loader"
6569
8331
  }, /*#__PURE__*/React__default["default"].createElement(PageLoader__default["default"], null));
6570
8332
  }
6571
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(Container__default["default"], null, /*#__PURE__*/React__default["default"].createElement(Header$1, {
8333
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(distExports.ScrollSync, null, /*#__PURE__*/React__default["default"].createElement(Container__default["default"], {
8334
+ isHeaderFixed: true
8335
+ }, /*#__PURE__*/React__default["default"].createElement(Header$1, {
6572
8336
  config: config,
6573
8337
  handleReset: handleReset,
6574
8338
  handleSubmit: handleSubmit,
@@ -6576,26 +8340,14 @@ var Roles = function Roles(_ref) {
6576
8340
  searchString: searchString,
6577
8341
  setIsNewRolePaneOpen: setIsNewRolePaneOpen,
6578
8342
  setSearchString: setSearchString
6579
- }), /*#__PURE__*/React__default["default"].createElement(SubHeader__default["default"], {
6580
- leftActionBlock: /*#__PURE__*/React__default["default"].createElement(SubHeader$1.Left, {
6581
- filteredCount: filteredRoles === null || filteredRoles === void 0 ? void 0 : filteredRoles.length
6582
- })
6583
8343
  }), /*#__PURE__*/React__default["default"].createElement(Table, {
6584
8344
  config: config,
6585
8345
  filteredRoles: filteredRoles,
6586
8346
  permissions: permissions,
6587
8347
  roles: roles,
8348
+ permissionGroups: permissionGroups,
6588
8349
  setIsNewRolePaneOpen: setIsNewRolePaneOpen,
6589
8350
  setModifiedRoles: setModifiedRoles
6590
- }), (config === null || config === void 0 ? void 0 : config.helpUrl) && /*#__PURE__*/React__default["default"].createElement("div", {
6591
- className: "ntm-roles-help-url-wrapper"
6592
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
6593
- "data-cy": "ntm-roles-permission-more-info-button",
6594
- href: config.helpUrl,
6595
- icon: neetoIcons.ExternalLink,
6596
- label: t("helpers.visitToKnowMoreAboutPermissions"),
6597
- style: "link",
6598
- target: "_blank"
6599
8351
  }))), /*#__PURE__*/React__default["default"].createElement(ManageRoles, {
6600
8352
  config: config,
6601
8353
  isOpen: isNewRolePaneOpen,
@@ -6675,6 +8427,16 @@ var hasSymbols$1 = function hasNativeSymbols() {
6675
8427
  return hasSymbolSham();
6676
8428
  };
6677
8429
 
8430
+ var test = {
8431
+ foo: {}
8432
+ };
8433
+
8434
+ var $Object = Object;
8435
+
8436
+ var hasProto$1 = function hasProto() {
8437
+ return { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);
8438
+ };
8439
+
6678
8440
  /* eslint no-invalid-this: 1 */
6679
8441
 
6680
8442
  var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';
@@ -6777,18 +8539,23 @@ var ThrowTypeError = $gOPD
6777
8539
  : throwTypeError;
6778
8540
 
6779
8541
  var hasSymbols = hasSymbols$1();
8542
+ var hasProto = hasProto$1();
6780
8543
 
6781
- var getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto
8544
+ var getProto = Object.getPrototypeOf || (
8545
+ hasProto
8546
+ ? function (x) { return x.__proto__; } // eslint-disable-line no-proto
8547
+ : null
8548
+ );
6782
8549
 
6783
8550
  var needsEval = {};
6784
8551
 
6785
- var TypedArray = typeof Uint8Array === 'undefined' ? undefined$1 : getProto(Uint8Array);
8552
+ var TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined$1 : getProto(Uint8Array);
6786
8553
 
6787
8554
  var INTRINSICS = {
6788
8555
  '%AggregateError%': typeof AggregateError === 'undefined' ? undefined$1 : AggregateError,
6789
8556
  '%Array%': Array,
6790
8557
  '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined$1 : ArrayBuffer,
6791
- '%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined$1,
8558
+ '%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined$1,
6792
8559
  '%AsyncFromSyncIteratorPrototype%': undefined$1,
6793
8560
  '%AsyncFunction%': needsEval,
6794
8561
  '%AsyncGenerator%': needsEval,
@@ -6818,10 +8585,10 @@ var INTRINSICS = {
6818
8585
  '%Int32Array%': typeof Int32Array === 'undefined' ? undefined$1 : Int32Array,
6819
8586
  '%isFinite%': isFinite,
6820
8587
  '%isNaN%': isNaN,
6821
- '%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined$1,
8588
+ '%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined$1,
6822
8589
  '%JSON%': typeof JSON === 'object' ? JSON : undefined$1,
6823
8590
  '%Map%': typeof Map === 'undefined' ? undefined$1 : Map,
6824
- '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined$1 : getProto(new Map()[Symbol.iterator]()),
8591
+ '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined$1 : getProto(new Map()[Symbol.iterator]()),
6825
8592
  '%Math%': Math,
6826
8593
  '%Number%': Number,
6827
8594
  '%Object%': Object,
@@ -6834,10 +8601,10 @@ var INTRINSICS = {
6834
8601
  '%Reflect%': typeof Reflect === 'undefined' ? undefined$1 : Reflect,
6835
8602
  '%RegExp%': RegExp,
6836
8603
  '%Set%': typeof Set === 'undefined' ? undefined$1 : Set,
6837
- '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined$1 : getProto(new Set()[Symbol.iterator]()),
8604
+ '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined$1 : getProto(new Set()[Symbol.iterator]()),
6838
8605
  '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined$1 : SharedArrayBuffer,
6839
8606
  '%String%': String,
6840
- '%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined$1,
8607
+ '%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined$1,
6841
8608
  '%Symbol%': hasSymbols ? Symbol : undefined$1,
6842
8609
  '%SyntaxError%': $SyntaxError,
6843
8610
  '%ThrowTypeError%': ThrowTypeError,
@@ -6853,12 +8620,14 @@ var INTRINSICS = {
6853
8620
  '%WeakSet%': typeof WeakSet === 'undefined' ? undefined$1 : WeakSet
6854
8621
  };
6855
8622
 
6856
- try {
6857
- null.error; // eslint-disable-line no-unused-expressions
6858
- } catch (e) {
6859
- // https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229
6860
- var errorProto = getProto(getProto(e));
6861
- INTRINSICS['%Error.prototype%'] = errorProto;
8623
+ if (getProto) {
8624
+ try {
8625
+ null.error; // eslint-disable-line no-unused-expressions
8626
+ } catch (e) {
8627
+ // https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229
8628
+ var errorProto = getProto(getProto(e));
8629
+ INTRINSICS['%Error.prototype%'] = errorProto;
8630
+ }
6862
8631
  }
6863
8632
 
6864
8633
  var doEval = function doEval(name) {
@@ -6876,7 +8645,7 @@ var doEval = function doEval(name) {
6876
8645
  }
6877
8646
  } else if (name === '%AsyncIteratorPrototype%') {
6878
8647
  var gen = doEval('%AsyncGenerator%');
6879
- if (gen) {
8648
+ if (gen && getProto) {
6880
8649
  value = getProto(gen.prototype);
6881
8650
  }
6882
8651
  }
@@ -8429,7 +10198,8 @@ var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('&#10003;')
8429
10198
  var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')
8430
10199
 
8431
10200
  var parseValues = function parseQueryStringValues(str, options) {
8432
- var obj = {};
10201
+ var obj = { __proto__: null };
10202
+
8433
10203
  var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str;
8434
10204
  var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;
8435
10205
  var parts = cleanStr.split(options.delimiter, limit);
@@ -9362,10 +11132,6 @@ var renderNameColumn = function renderNameColumn(_ref) {
9362
11132
  label: active ? MEMBER_FILTER.ACTIVE.label : MEMBER_FILTER.DEACTIVATED.label
9363
11133
  })), renderDropdownButton(tableData, handleUpdateRole, handleUpdateStatus, permissions));
9364
11134
  };
9365
- var isDropDownButtonDisabled = function isDropDownButtonDisabled(permissions) {
9366
- var _permissions$update;
9367
- return !((_permissions$update = permissions === null || permissions === void 0 ? void 0 : permissions.update) !== null && _permissions$update !== void 0 ? _permissions$update : hasPermission(MANAGE_MEMBER_PERMISSIONS));
9368
- };
9369
11135
  var renderDropdownButton = function renderDropdownButton(_ref2, handleUpdateRole, handleUpdateStatus, permissions) {
9370
11136
  var active = _ref2.active,
9371
11137
  displayName = _ref2.displayName,
@@ -9383,12 +11149,12 @@ var renderDropdownButton = function renderDropdownButton(_ref2, handleUpdateRole
9383
11149
  "data-cy": "ntm-members-table-row-dropdown-button",
9384
11150
  tooltipProps: {
9385
11151
  content: instance.t("tooltips.noPermissionToEditMembers"),
9386
- disabled: !isDropDownButtonDisabled(permissions),
11152
+ disabled: permissions.update,
9387
11153
  position: "top"
9388
11154
  }
9389
11155
  },
9390
11156
  buttonStyle: "text",
9391
- disabled: isDropDownButtonDisabled(permissions),
11157
+ disabled: !permissions.update,
9392
11158
  icon: neetoIcons.MenuHorizontal,
9393
11159
  strategy: "fixed"
9394
11160
  }, /*#__PURE__*/React__default["default"].createElement(Menu$3, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Tooltip, {
@@ -9515,7 +11281,7 @@ var getColumnData = function getColumnData(_ref7) {
9515
11281
  displayStatusTag: displayStatusTag,
9516
11282
  handleUpdateRole: handleUpdateRole,
9517
11283
  handleUpdateStatus: handleUpdateStatus,
9518
- permissions: config === null || config === void 0 ? void 0 : config.permissions
11284
+ permissions: config.permissions
9519
11285
  });
9520
11286
  var otherColumns = (_config$otherColumns = config === null || config === void 0 ? void 0 : config.otherColumns) !== null && _config$otherColumns !== void 0 ? _config$otherColumns : [];
9521
11287
  var columns = defaultColumns.map(function (column) {
@@ -10187,17 +11953,16 @@ var MANAGE_ROLES_BUTTON_LABEL = instance.t("common.manage_", {
10187
11953
  });
10188
11954
 
10189
11955
  var Header = function Header(_ref) {
10190
- var _permissions$create, _config$header;
11956
+ var _config$header;
10191
11957
  var config = _ref.config,
10192
11958
  metaName = _ref.metaName,
10193
11959
  _ref$onClick = _ref.onClick,
10194
11960
  onClick = _ref$onClick === void 0 ? pure.noop : _ref$onClick,
10195
- permissions = _ref.permissions,
10196
11961
  rolesButtonProps = _ref.rolesButtonProps;
10197
11962
  var _useTranslation = useTranslation(),
10198
11963
  t = _useTranslation.t;
11964
+ var isCreatePermissionGranted = config.permissions.create;
10199
11965
  var isRolesButtonVisible = !!rolesButtonProps;
10200
- var hasCreatePermission = (_permissions$create = permissions === null || permissions === void 0 ? void 0 : permissions.create) !== null && _permissions$create !== void 0 ? _permissions$create : hasPermission(MANAGE_MEMBER_PERMISSIONS);
10201
11966
  var isOtherActionBlockVisible = !!(config !== null && config !== void 0 && (_config$header = config.header) !== null && _config$header !== void 0 && _config$header.otherActionBlock);
10202
11967
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, isOtherActionBlockVisible && config.header.otherActionBlock(), isRolesButtonVisible ? /*#__PURE__*/React__default["default"].createElement(neetoui.Button, _extends({
10203
11968
  "data-cy": "ntm-manage-roles-button",
@@ -10205,11 +11970,11 @@ var Header = function Header(_ref) {
10205
11970
  style: "secondary"
10206
11971
  }, rolesButtonProps)) : null, /*#__PURE__*/React__default["default"].createElement(neetoui.Tooltip, {
10207
11972
  content: t("tooltips.noPermissionToAddMember"),
10208
- disabled: hasCreatePermission,
11973
+ disabled: isCreatePermissionGranted,
10209
11974
  position: "bottom"
10210
11975
  }, /*#__PURE__*/React__default["default"].createElement("span", null, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
10211
11976
  "data-cy": "ntm-add-member-button",
10212
- disabled: !hasCreatePermission,
11977
+ disabled: !isCreatePermissionGranted,
10213
11978
  label: t("common.addNew_", {
10214
11979
  what: metaName(SINGULAR).toLocaleLowerCase()
10215
11980
  }),
@@ -10328,7 +12093,7 @@ var RolesDropdown = function RolesDropdown(_ref) {
10328
12093
  var Menu$1 = neetoui.Dropdown.Menu,
10329
12094
  MenuItem = neetoui.Dropdown.MenuItem;
10330
12095
  var Left = function Left(_ref) {
10331
- var _selectedRows$keys$le, _selectedRows$keys, _config$permissions$u, _config$permissions, _selectedRows$active, _config$hiddenBulkAct, _config$otherBulkActi;
12096
+ var _selectedRows$keys$le, _selectedRows$keys, _selectedRows$active, _config$hiddenBulkAct, _config$otherBulkActi;
10332
12097
  var config = _ref.config,
10333
12098
  filteredCount = _ref.filteredCount,
10334
12099
  metaName = _ref.metaName,
@@ -10337,6 +12102,7 @@ var Left = function Left(_ref) {
10337
12102
  setSelectedRows = _ref.setSelectedRows;
10338
12103
  var _useTranslation = useTranslation(),
10339
12104
  t = _useTranslation.t;
12105
+ var isUpdatePermissionGranted = config.permissions.update;
10340
12106
  var _useState = React.useState(""),
10341
12107
  _useState2 = _slicedToArray(_useState, 2),
10342
12108
  alertType = _useState2[0],
@@ -10353,7 +12119,6 @@ var Left = function Left(_ref) {
10353
12119
  }).toLocaleLowerCase(),
10354
12120
  totalCount: filteredCount
10355
12121
  };
10356
- var hasUpdatePermission = (_config$permissions$u = config === null || config === void 0 ? void 0 : (_config$permissions = config.permissions) === null || _config$permissions === void 0 ? void 0 : _config$permissions.update) !== null && _config$permissions$u !== void 0 ? _config$permissions$u : DEFAULT_PERMISSION;
10357
12122
  var hasDeactivateMembers = selectedRows === null || selectedRows === void 0 ? void 0 : (_selectedRows$active = selectedRows.active) === null || _selectedRows$active === void 0 ? void 0 : _selectedRows$active.some(function (active) {
10358
12123
  return !active;
10359
12124
  });
@@ -10433,28 +12198,28 @@ var Left = function Left(_ref) {
10433
12198
  i18nKey: hasSelectedRows ? "helpers.selectedMembersCount" : "helpers.metaNameWithCount_"
10434
12199
  })), hasSelectedRows && /*#__PURE__*/React__default["default"].createElement(neetoui.Tooltip, {
10435
12200
  content: t("tooltips.noPermissionToEditMembers"),
10436
- disabled: hasUpdatePermission,
12201
+ disabled: isUpdatePermissionGranted,
10437
12202
  position: "top"
10438
12203
  }, /*#__PURE__*/React__default["default"].createElement("span", null, /*#__PURE__*/React__default["default"].createElement(neetoui.Dropdown, {
10439
12204
  buttonStyle: "secondary",
10440
12205
  "data-cy": "ntm-members-take-action-dropdown-button",
10441
- disabled: !hasUpdatePermission,
12206
+ disabled: !isUpdatePermissionGranted,
10442
12207
  label: t("common.takeAction")
10443
12208
  }, /*#__PURE__*/React__default["default"].createElement(Menu$1, null, getDeactivatedButtonVisible(selectedRows, config) && /*#__PURE__*/React__default["default"].createElement(MenuItem.Button, {
10444
12209
  "data-cy": "ntm-deactivate-members-button",
10445
- disabled: !hasUpdatePermission,
12210
+ disabled: !isUpdatePermissionGranted,
10446
12211
  onClick: function onClick() {
10447
12212
  return setAlertType("deactivate");
10448
12213
  }
10449
12214
  }, t("common.deactivate")), getActivateButtonVisible(selectedRows, config) && /*#__PURE__*/React__default["default"].createElement(MenuItem.Button, {
10450
12215
  "data-cy": "ntm-activate-members-button",
10451
- disabled: !hasUpdatePermission,
12216
+ disabled: !isUpdatePermissionGranted,
10452
12217
  onClick: function onClick() {
10453
12218
  return setAlertType("activate");
10454
12219
  }
10455
12220
  }, t("common.activate")), !(config !== null && config !== void 0 && (_config$hiddenBulkAct = config.hiddenBulkActions) !== null && _config$hiddenBulkAct !== void 0 && _config$hiddenBulkAct.includes("role")) && /*#__PURE__*/React__default["default"].createElement(RolesDropdown, {
10456
12221
  disabled: hasDeactivateMembers,
10457
- hasUpdatePermission: hasUpdatePermission,
12222
+ hasUpdatePermission: isUpdatePermissionGranted,
10458
12223
  roles: roles,
10459
12224
  setAlertType: setAlertType,
10460
12225
  setBulkUpdateRole: setBulkUpdateRole
@@ -10487,7 +12252,7 @@ var Right = function Right(_ref2) {
10487
12252
  isFiltersPaneOpen = _ref2.isFiltersPaneOpen;
10488
12253
  var _useTranslation2 = useTranslation(),
10489
12254
  t = _useTranslation2.t;
10490
- return /*#__PURE__*/React__default["default"].createElement(SubHeader__default["default"].RightBlock, {
12255
+ return /*#__PURE__*/React__default["default"].createElement(SubHeaderMolecule__default["default"].RightBlock, {
10491
12256
  columnsButtonProps: {
10492
12257
  columnData: columns,
10493
12258
  fixedColumns: FIXED_COLUMNS,
@@ -10988,7 +12753,7 @@ var RolesRadioGroup = function RolesRadioGroup(_ref) {
10988
12753
  function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
10989
12754
  function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
10990
12755
  var ManageMember = function ManageMember(_ref) {
10991
- var _config$permissions$v, _config$permissions, _manageMemberComponen;
12756
+ var _manageMemberComponen;
10992
12757
  var config = _ref.config,
10993
12758
  onComplete = _ref.onComplete,
10994
12759
  _ref$roles = _ref.roles,
@@ -10999,6 +12764,7 @@ var ManageMember = function ManageMember(_ref) {
10999
12764
  componentConfig = _ref$componentConfig === void 0 ? {} : _ref$componentConfig;
11000
12765
  var _useTranslation = useTranslation(),
11001
12766
  t = _useTranslation.t;
12767
+ var isViewPermissionGranted = config.permissions.view;
11002
12768
  var _useState = React.useState(false),
11003
12769
  _useState2 = _slicedToArray(_useState, 2),
11004
12770
  hasSubmitted = _useState2[0],
@@ -11017,8 +12783,7 @@ var ManageMember = function ManageMember(_ref) {
11017
12783
  initialFocusRef: inputReference
11018
12784
  }, componentConfig);
11019
12785
  var Component = MEMBERS_FORM_COMPONENT_MAPPER[manageMemberComponentConfig.type || "pane"];
11020
- var isPermissionsGranted = (_config$permissions$v = config === null || config === void 0 ? void 0 : (_config$permissions = config.permissions) === null || _config$permissions === void 0 ? void 0 : _config$permissions.view) !== null && _config$permissions$v !== void 0 ? _config$permissions$v : DEFAULT_PERMISSION;
11021
- var haveToFetchRoles = ramda.isEmpty(roles) && isPermissionsGranted;
12786
+ var haveToFetchRoles = ramda.isEmpty(roles) && isViewPermissionGranted;
11022
12787
  var isEditForm = !!selectedMember;
11023
12788
  var isLastPage = currentPage === FORM_PAGES.CONFIRMATION || isEditForm;
11024
12789
  var _useFetchRoles = useFetchRoles({
@@ -11035,7 +12800,7 @@ var ManageMember = function ManageMember(_ref) {
11035
12800
  select: function select(response) {
11036
12801
  return ramda.groupBy(ramda.prop("appName"), response !== null && response !== void 0 ? response : []);
11037
12802
  },
11038
- enabled: !selectedMember && isPermissionsGranted
12803
+ enabled: !selectedMember && isViewPermissionGranted
11039
12804
  }),
11040
12805
  _useFetchGlobalRoles$ = _useFetchGlobalRoles.data,
11041
12806
  globalRoles = _useFetchGlobalRoles$ === void 0 ? {} : _useFetchGlobalRoles$,
@@ -11069,7 +12834,9 @@ var ManageMember = function ManageMember(_ref) {
11069
12834
  };
11070
12835
  var isSubmitting = isCreatingMember || isUpdatingMember || isRolesLoading || isGlobalRolesLoading;
11071
12836
  var handleAddMember = function handleAddMember(values) {
11072
- selectedMember ? updateMember({
12837
+ selectedMember
12838
+ // @ts-ignore
12839
+ ? updateMember({
11073
12840
  id: selectedMember.id,
11074
12841
  payload: renderPayload(values, selectedMember)
11075
12842
  }) : createMember(renderPayload(values));
@@ -11218,11 +12985,13 @@ var Menu = function Menu(_ref) {
11218
12985
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
11219
12986
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
11220
12987
  var TeamMembers = function TeamMembers(_ref) {
11221
- var _config$permissions$c, _config$permissions, _config$permissions$v, _config$permissions2, _config$permissions$v2, _config$permissions3, _config$fetchApiRespo, _config$table, _config$table$onDropd, _config$header;
12988
+ var _config$fetchApiRespo, _config$table, _config$table$onDropd, _config$header;
11222
12989
  var config = _ref.config;
11223
12990
  var _useTranslation = useTranslation(),
11224
12991
  t = _useTranslation.t;
11225
12992
  var history = reactRouterDom.useHistory();
12993
+ var isViewPermissionGranted = config.permissions.view;
12994
+ var isCreatePermissionGranted = config.permissions.create;
11226
12995
  var metaName = getMetaName((config === null || config === void 0 ? void 0 : config.metaName) || "member");
11227
12996
  var _useState = React.useState([]),
11228
12997
  _useState2 = _slicedToArray(_useState, 2),
@@ -11232,7 +13001,6 @@ var TeamMembers = function TeamMembers(_ref) {
11232
13001
  _useState4 = _slicedToArray(_useState3, 2),
11233
13002
  isFiltersPaneOpen = _useState4[0],
11234
13003
  setIsFiltersPaneOpen = _useState4[1];
11235
- var hasCreatePermission = (_config$permissions$c = config === null || config === void 0 ? void 0 : (_config$permissions = config.permissions) === null || _config$permissions === void 0 ? void 0 : _config$permissions.create) !== null && _config$permissions$c !== void 0 ? _config$permissions$c : hasPermission(MANAGE_MEMBER_PERMISSIONS);
11236
13004
  React.useEffect(function () {
11237
13005
  if (!localStorage.getItem("TEAM_MEMBERS_TABLE_HIDDEN_COLUMNS")) {
11238
13006
  localStorage.setItem("TEAM_MEMBERS_TABLE_HIDDEN_COLUMNS", JSON.stringify(["inviteStatus"]));
@@ -11250,7 +13018,7 @@ var TeamMembers = function TeamMembers(_ref) {
11250
13018
  search: debouncedSearch.trim(),
11251
13019
  category: filters.category.toLowerCase()
11252
13020
  }), {
11253
- enabled: (_config$permissions$v = config === null || config === void 0 ? void 0 : (_config$permissions2 = config.permissions) === null || _config$permissions2 === void 0 ? void 0 : _config$permissions2.view) !== null && _config$permissions$v !== void 0 ? _config$permissions$v : DEFAULT_PERMISSION
13021
+ enabled: isViewPermissionGranted
11254
13022
  }),
11255
13023
  team = _useFetchMembers.data,
11256
13024
  isMembersLoading = _useFetchMembers.isLoading,
@@ -11260,7 +13028,7 @@ var TeamMembers = function TeamMembers(_ref) {
11260
13028
  var _response$organizatio;
11261
13029
  return ramda.reverse((_response$organizatio = response === null || response === void 0 ? void 0 : response.organizationRoles) !== null && _response$organizatio !== void 0 ? _response$organizatio : []);
11262
13030
  },
11263
- enabled: (_config$permissions$v2 = config === null || config === void 0 ? void 0 : (_config$permissions3 = config.permissions) === null || _config$permissions3 === void 0 ? void 0 : _config$permissions3.view) !== null && _config$permissions$v2 !== void 0 ? _config$permissions$v2 : DEFAULT_PERMISSION
13031
+ enabled: isViewPermissionGranted
11264
13032
  }),
11265
13033
  roles = _useFetchRoles.data,
11266
13034
  isRolesLoading = _useFetchRoles.isLoading;
@@ -11345,7 +13113,6 @@ var TeamMembers = function TeamMembers(_ref) {
11345
13113
  actionBlock: /*#__PURE__*/React__default["default"].createElement(Header, {
11346
13114
  config: config,
11347
13115
  metaName: metaName,
11348
- permissions: config === null || config === void 0 ? void 0 : config.permissions,
11349
13116
  rolesButtonProps: config.rolesButtonProps,
11350
13117
  onClick: function onClick() {
11351
13118
  return setIsOpen(ramda.assoc("manageMember", true));
@@ -11359,7 +13126,7 @@ var TeamMembers = function TeamMembers(_ref) {
11359
13126
  });
11360
13127
  },
11361
13128
  title: renderHeaderTitle(MEMBER_FILTER[filters.category].value, metaName)
11362
- }, config === null || config === void 0 ? void 0 : (_config$header = config.header) === null || _config$header === void 0 ? void 0 : _config$header.otherProps)), /*#__PURE__*/React__default["default"].createElement(SubHeader__default["default"], {
13129
+ }, config === null || config === void 0 ? void 0 : (_config$header = config.header) === null || _config$header === void 0 ? void 0 : _config$header.otherProps)), /*#__PURE__*/React__default["default"].createElement(SubHeaderMolecule__default["default"], {
11363
13130
  leftActionBlock: /*#__PURE__*/React__default["default"].createElement(SubHeader.Left, {
11364
13131
  config: config,
11365
13132
  filteredCount: team === null || team === void 0 ? void 0 : team.membersCount,
@@ -11402,7 +13169,7 @@ var TeamMembers = function TeamMembers(_ref) {
11402
13169
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.NoData, {
11403
13170
  primaryButtonProps: {
11404
13171
  "data-cy": "ntm-add-member-button",
11405
- disabled: !hasCreatePermission,
13172
+ disabled: !isCreatePermissionGranted,
11406
13173
  label: t("common.addNew_", {
11407
13174
  what: metaName(SINGULAR).toLocaleLowerCase()
11408
13175
  }),
@@ -11446,7 +13213,7 @@ var index = reactUtils.withTitle(withReactQuery(TeamMembers), instance.t("metaNa
11446
13213
 
11447
13214
  var e=[],t=[];function n(n,r){if(n&&"undefined"!=typeof document){var a,s=!0===r.prepend?"prepend":"append",d=!0===r.singleTag,i="string"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName("head")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c();}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n));}function c(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a="prepend"===s?"afterbegin":"beforeend";return i.insertAdjacentElement(a,e),e}}
11448
13215
 
11449
- var css = ".ntm-empty-state{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.ntm-members{overflow:auto;width:100%}.ntm-members-wrapper{display:flex}.ntm-members-page-loader{height:100vh;width:100%}.ntm-members-table__wrapper{display:flex;gap:.75rem;justify-content:space-between;width:100%}.ntm-members-table__column{align-items:center;display:flex;gap:.5rem}.ntm-members-form__header{margin-bottom:.5rem}.ntm-members-form__body{padding-bottom:1rem;width:100%}.ntm-members-form__body>*+*{margin-top:1.5rem}.ntm-members-form__footer{display:flex;gap:.5rem}.ntm-manage-members__header{align-items:flex-start;display:flex}.ntm-manage-members__header>*+*{margin-left:.5rem}.ntm-manage-members__app-roles{align-items:center;display:flex;justify-content:space-between;padding:.5rem 0;width:100%}.ntm-manage-members-app-roles__select-wrapper{max-width:250px;width:50%}.ntm-manage-members-effective-app-roles{align-items:center;display:flex;justify-content:space-between;padding:.25rem 0}.ntm-manage-members-effective-app-roles__role-name{max-width:300px;width:67%}.ntm-members-radio-group,.ntm-members-radio-group .neeto-ui-radio__container--stacked{width:100%}.ntm-members-radio-group__label{padding-right:4px}.ntm-members-radio-group__icon{cursor:pointer}.ntm-members-form-radio-item__wrapper{cursor:pointer;padding:8px 0!important;width:100%}.ntm-members-form-radio-item__wrapper:first-child{padding-top:0!important}.ntm-members-form-radio-item__label{margin-bottom:0!important}.ntm-members-form-radio-item__description,.ntm-product-roles-table th{color:rgb(var(--neeto-ui-gray-700))}.ntm-product-roles-table th{font-size:var(--neeto-ui-text-xs);font-weight:var(--neeto-ui-font-bold);text-transform:uppercase;vertical-align:middle}.ntm-product-roles-table td,.ntm-product-roles-table th{border:1px solid rgb(var(--neeto-ui-gray-300));padding:8px;text-align:left}.ntm-manage-members__checkbox-align-start.neeto-ui-checkbox__wrapper .neeto-ui-checkbox__container{align-items:flex-start}.ntm-manage-members__checkbox-align-start.neeto-ui-checkbox__wrapper .neeto-ui-checkbox[type=checkbox]{margin-top:4px}.ntm-roles-table__wrapper{display:flex;height:calc(100vh - var(--neeto-ui-main-header-with-breadcrumbs-height));padding:0 1.5rem;width:100%}.ntm-roles-table__name-column{display:flex;justify-content:space-between;width:100%}.ntm-roles-pane__body{margin-bottom:1.5rem;width:100%}.ntm-roles-pane__body-wrapper>*+*{margin-top:1rem}.ntm-roles-pane__body>*+*{margin-top:1.5rem}.ntm-roles-pane__footer{display:flex;gap:.5rem}.ntm-roles-permission-category-card{border:1px solid rgb(var(--neeto-ui-gray-400));border-radius:var(--neeto-ui-rounded);padding:10px 20px}.ntm-roles-permission-category-card>.ntm-roles-permission__card:after{display:none}.ntm-roles-permission__heading{color:rgb(var(--neeto-ui-gray-500));text-transform:uppercase}.ntm-roles-permission__card{background-color:rgb(var(--neeto-ui-white));display:flex;flex-direction:column;gap:.75rem;padding:.4rem 0;position:relative}.ntm-roles-permission__card:after{background-color:rgb(var(--neeto-ui-gray-300));content:\"\";height:1px;left:-15px;position:absolute;top:14px;width:10px}.ntm-roles-permission__card--description{flex-grow:1}.ntm-roles-permission__card--checkbox{padding:0 .5rem}.ntm-roles-permission__card .neeto-ui-checkbox__wrapper .neeto-ui-checkbox__container{align-items:flex-start}.ntm-roles-permission__card .neeto-ui-checkbox__wrapper .neeto-ui-checkbox__container .neeto-ui-checkbox[type=checkbox]:disabled+.neeto-ui-label{cursor:not-allowed;opacity:.5}.ntm-roles-permission__sub-blocks{position:relative}.ntm-roles-permission__sub-blocks:before{background-color:rgb(var(--neeto-ui-gray-300));content:\"\";height:calc(100% - 14px);left:8px;position:absolute;top:0;width:1px}.ntm-roles-permission__sub-blocks:empty{display:none}.ntm-roles-help-url-wrapper{align-items:center;display:flex;justify-content:center;padding:1rem 0;width:100%}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9zdHlsZXNoZWV0cy9jb21wb25lbnRzL19lbXB0eS1zdGF0ZS5zY3NzIiwic3JjL3N0eWxlc2hlZXRzL2FwcGxpY2F0aW9uLnNjc3MiLCJzcmMvc3R5bGVzaGVldHMvcGFnZXMvX21lbWJlcnMuc2NzcyIsInNyYy9zdHlsZXNoZWV0cy9wYWdlcy9fcm9sZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFJRSxrQkFBQSxDQURBLFlBQUEsQ0FEQSxXQUFBLENBR0Esc0JBQUEsQ0FKQSxVQ0tGLENDTkEsYUFDRSxhQUFBLENBQ0EsVURTRixDQ1BFLHFCQUNFLFlEU0osQ0NORSx5QkFFRSxZQUFBLENBREEsVURTSixDQ0pJLDRCQUVFLFlBQUEsQ0FFQSxVQUFBLENBREEsNkJBQUEsQ0FGQSxVRFNOLENDSkksMkJBRUUsa0JBQUEsQ0FEQSxZQUFBLENBRUEsU0RNTixDQ0RJLDBCQUNFLG1CREdOLENDQUksd0JBRUUsbUJBQUEsQ0FEQSxVREdOLENDRE0sNEJBQ0UsaUJER1IsQ0NDSSwwQkFDRSxZQUFBLENBQ0EsU0RDTixDQ0lBLDRCQUVFLHNCQUFBLENBREEsWURBRixDQ0dFLGdDQUNFLGlCRERKLENDS0EsK0JBRUUsa0JBQUEsQ0FEQSxZQUFBLENBRUEsNkJBQUEsQ0FFQSxlQUFBLENBREEsVURERixDQ0tBLDhDQUVFLGVBQUEsQ0FEQSxTRERGLENDS0Esd0NBRUUsa0JBQUEsQ0FEQSxZQUFBLENBRUEsNkJBQUEsQ0FDQSxnQkRGRixDQ0tBLG1EQUVFLGVBQUEsQ0FEQSxTRERGLENDT0Usc0ZBQ0UsVURESixDQ0lFLGdDQUNFLGlCREZKLENDS0UsK0JBQ0UsY0RISixDQ1FFLHNDQUVFLGNBQUEsQ0FDQSx1QkFBQSxDQUZBLFVESEosQ0NNSSxrREFDRSx1QkRKTixDQ1FFLG9DQUNFLHlCRE5KLENDZUUsc0VBTEUsbUNEQ0osQ0NJRSw0QkFFRSxpQ0FBQSxDQUVBLHFDQUFBLENBQ0Esd0JBQUEsQ0FGQSxxQkRQSixDQ1dFLHdEQUVFLDhDQUFBLENBRUEsV0FBQSxDQURBLGVEUkosQ0NjRSxtR0FDRSxzQkRYSixDQ2FFLHVHQUNFLGNEWEosQ0U3SEEsMEJBR0UsWUFBQSxDQURBLHdFQUFBLENBRUEsZ0JBQUEsQ0FIQSxVRm1JRixDRTdIQSw4QkFFRSxZQUFBLENBQ0EsNkJBQUEsQ0FGQSxVRmtJRixDRTVIRSxzQkFFRSxvQkFBQSxDQURBLFVGZ0lKLENFN0hJLGtDQUNFLGVGK0hOLENFNUhJLDBCQUNFLGlCRjhITixDRTFIRSx3QkFDRSxZQUFBLENBQ0EsU0Y0SEosQ0V4SEEsb0NBR0UsOENBQUEsQ0FEQSxxQ0FBQSxDQURBLGlCRjZIRixDRXpISSxzRUFDRSxZRjJITixDRXJIRSwrQkFDRSxtQ0FBQSxDQUNBLHdCRndISixDRXJIRSw0QkFDRSwyQ0FBQSxDQUdBLFlBQUEsQ0FDQSxxQkFBQSxDQUNBLFVBQUEsQ0FDQSxlQUFBLENBTEEsaUJGMkhKLENFcEhJLGtDQUNFLDhDQUFBLENBQ0EsVUFBQSxDQUNBLFVBQUEsQ0FDQSxVQUFBLENBQ0EsaUJBQUEsQ0FDQSxRQUFBLENBQ0EsVUZzSE4sQ0VuSEkseUNBQ0UsV0ZxSE4sQ0VsSEksc0NBQ0UsZUZvSE4sQ0VqSEksc0ZBQ0Usc0JGbUhOLENFakhNLGlKQUVFLGtCQUFBLENBREEsVUZvSFIsQ0U5R0Usa0NBQ0UsaUJGZ0hKLENFOUdJLHlDQUNFLDhDQUFBLENBRUEsVUFBQSxDQUNBLHdCQUFBLENBQ0EsUUFBQSxDQUNBLGlCQUFBLENBSkEsS0FBQSxDQUtBLFNGZ0hOLENFN0dJLHdDQUNFLFlGK0dOLENFMUdBLDRCQUdFLGtCQUFBLENBRkEsWUFBQSxDQUdBLHNCQUFBLENBQ0EsY0FBQSxDQUhBLFVGZ0hGIiwic291cmNlc0NvbnRlbnQiOlsiLm50bS1lbXB0eS1zdGF0ZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuIiwiLm50bS1lbXB0eS1zdGF0ZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4ubnRtLW1lbWJlcnMge1xuICBvdmVyZmxvdzogYXV0bztcbiAgd2lkdGg6IDEwMCU7XG59XG4ubnRtLW1lbWJlcnMtd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG4ubnRtLW1lbWJlcnMtcGFnZS1sb2FkZXIge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDB2aDtcbn1cbi5udG0tbWVtYmVycy10YWJsZV9fd3JhcHBlciB7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGdhcDogMC43NXJlbTtcbn1cbi5udG0tbWVtYmVycy10YWJsZV9fY29sdW1uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjVyZW07XG59XG4ubnRtLW1lbWJlcnMtZm9ybV9faGVhZGVyIHtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xufVxuLm50bS1tZW1iZXJzLWZvcm1fX2JvZHkge1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1ib3R0b206IDFyZW07XG59XG4ubnRtLW1lbWJlcnMtZm9ybV9fYm9keSA+ICogKyAqIHtcbiAgbWFyZ2luLXRvcDogMS41cmVtO1xufVxuLm50bS1tZW1iZXJzLWZvcm1fX2Zvb3RlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogMC41cmVtO1xufVxuXG4ubnRtLW1hbmFnZS1tZW1iZXJzX19oZWFkZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbn1cbi5udG0tbWFuYWdlLW1lbWJlcnNfX2hlYWRlciA+ICogKyAqIHtcbiAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcbn1cblxuLm50bS1tYW5hZ2UtbWVtYmVyc19fYXBwLXJvbGVzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMC41cmVtIDA7XG59XG5cbi5udG0tbWFuYWdlLW1lbWJlcnMtYXBwLXJvbGVzX19zZWxlY3Qtd3JhcHBlciB7XG4gIHdpZHRoOiA1MCU7XG4gIG1heC13aWR0aDogMjUwcHg7XG59XG5cbi5udG0tbWFuYWdlLW1lbWJlcnMtZWZmZWN0aXZlLWFwcC1yb2xlcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgcGFkZGluZzogMC4yNXJlbSAwO1xufVxuXG4ubnRtLW1hbmFnZS1tZW1iZXJzLWVmZmVjdGl2ZS1hcHAtcm9sZXNfX3JvbGUtbmFtZSB7XG4gIHdpZHRoOiA2NyU7XG4gIG1heC13aWR0aDogMzAwcHg7XG59XG5cbi5udG0tbWVtYmVycy1yYWRpby1ncm91cCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLm50bS1tZW1iZXJzLXJhZGlvLWdyb3VwIC5uZWV0by11aS1yYWRpb19fY29udGFpbmVyLS1zdGFja2VkIHtcbiAgd2lkdGg6IDEwMCU7XG59XG4ubnRtLW1lbWJlcnMtcmFkaW8tZ3JvdXBfX2xhYmVsIHtcbiAgcGFkZGluZy1yaWdodDogNHB4O1xufVxuLm50bS1tZW1iZXJzLXJhZGlvLWdyb3VwX19pY29uIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubnRtLW1lbWJlcnMtZm9ybS1yYWRpby1pdGVtX193cmFwcGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgcGFkZGluZzogOHB4IDBweCAhaW1wb3J0YW50O1xufVxuLm50bS1tZW1iZXJzLWZvcm0tcmFkaW8taXRlbV9fd3JhcHBlcjpmaXJzdC1jaGlsZCB7XG4gIHBhZGRpbmctdG9wOiAwcHggIWltcG9ydGFudDtcbn1cbi5udG0tbWVtYmVycy1mb3JtLXJhZGlvLWl0ZW1fX2xhYmVsIHtcbiAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xufVxuLm50bS1tZW1iZXJzLWZvcm0tcmFkaW8taXRlbV9fZGVzY3JpcHRpb24ge1xuICBjb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktNzAwKSk7XG59XG5cbi5udG0tcHJvZHVjdC1yb2xlcy10YWJsZSB0aCB7XG4gIGNvbG9yOiByZ2IodmFyKC0tbmVldG8tdWktZ3JheS03MDApKTtcbiAgZm9udC1zaXplOiB2YXIoLS1uZWV0by11aS10ZXh0LXhzKTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLW5lZXRvLXVpLWZvbnQtYm9sZCk7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG4ubnRtLXByb2R1Y3Qtcm9sZXMtdGFibGUgdGQsXG4ubnRtLXByb2R1Y3Qtcm9sZXMtdGFibGUgdGgge1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2IodmFyKC0tbmVldG8tdWktZ3JheS0zMDApKTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgcGFkZGluZzogOHB4O1xufVxuXG4ubnRtLW1hbmFnZS1tZW1iZXJzX19jaGVja2JveC1hbGlnbi1zdGFydC5uZWV0by11aS1jaGVja2JveF9fd3JhcHBlciAubmVldG8tdWktY2hlY2tib3hfX2NvbnRhaW5lciB7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xufVxuLm50bS1tYW5hZ2UtbWVtYmVyc19fY2hlY2tib3gtYWxpZ24tc3RhcnQubmVldG8tdWktY2hlY2tib3hfX3dyYXBwZXIgLm5lZXRvLXVpLWNoZWNrYm94W3R5cGU9Y2hlY2tib3hdIHtcbiAgbWFyZ2luLXRvcDogNHB4O1xufVxuXG4ubnRtLXJvbGVzLXRhYmxlX193cmFwcGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogY2FsYygxMDB2aCAtIHZhcigtLW5lZXRvLXVpLW1haW4taGVhZGVyLXdpdGgtYnJlYWRjcnVtYnMtaGVpZ2h0KSk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmc6IDAgMS41cmVtO1xufVxuXG4ubnRtLXJvbGVzLXRhYmxlX19uYW1lLWNvbHVtbiB7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbi5udG0tcm9sZXMtcGFuZV9fYm9keSB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG59XG4ubnRtLXJvbGVzLXBhbmVfX2JvZHktd3JhcHBlciA+ICogKyAqIHtcbiAgbWFyZ2luLXRvcDogMXJlbTtcbn1cbi5udG0tcm9sZXMtcGFuZV9fYm9keSA+ICogKyAqIHtcbiAgbWFyZ2luLXRvcDogMS41cmVtO1xufVxuLm50bS1yb2xlcy1wYW5lX19mb290ZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDAuNXJlbTtcbn1cblxuLm50bS1yb2xlcy1wZXJtaXNzaW9uLWNhdGVnb3J5LWNhcmQge1xuICBwYWRkaW5nOiAxMHB4IDIwcHg7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLW5lZXRvLXVpLXJvdW5kZWQpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2IodmFyKC0tbmVldG8tdWktZ3JheS00MDApKTtcbn1cbi5udG0tcm9sZXMtcGVybWlzc2lvbi1jYXRlZ29yeS1jYXJkID4gLm50bS1yb2xlcy1wZXJtaXNzaW9uX19jYXJkOjphZnRlciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5udG0tcm9sZXMtcGVybWlzc2lvbl9faGVhZGluZyB7XG4gIGNvbG9yOiByZ2IodmFyKC0tbmVldG8tdWktZ3JheS01MDApKTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cbi5udG0tcm9sZXMtcGVybWlzc2lvbl9fY2FyZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS13aGl0ZSkpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMC43NXJlbTtcbiAgcGFkZGluZzogMC40cmVtIDA7XG59XG4ubnRtLXJvbGVzLXBlcm1pc3Npb25fX2NhcmQ6OmFmdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktMzAwKSk7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGhlaWdodDogMXB4O1xuICBsZWZ0OiAtMTVweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDE0cHg7XG4gIHdpZHRoOiAxMHB4O1xufVxuLm50bS1yb2xlcy1wZXJtaXNzaW9uX19jYXJkLS1kZXNjcmlwdGlvbiB7XG4gIGZsZXgtZ3JvdzogMTtcbn1cbi5udG0tcm9sZXMtcGVybWlzc2lvbl9fY2FyZC0tY2hlY2tib3gge1xuICBwYWRkaW5nOiAwIDAuNXJlbTtcbn1cbi5udG0tcm9sZXMtcGVybWlzc2lvbl9fY2FyZCAubmVldG8tdWktY2hlY2tib3hfX3dyYXBwZXIgLm5lZXRvLXVpLWNoZWNrYm94X19jb250YWluZXIge1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbn1cbi5udG0tcm9sZXMtcGVybWlzc2lvbl9fY2FyZCAubmVldG8tdWktY2hlY2tib3hfX3dyYXBwZXIgLm5lZXRvLXVpLWNoZWNrYm94X19jb250YWluZXIgLm5lZXRvLXVpLWNoZWNrYm94W3R5cGU9Y2hlY2tib3hdOmRpc2FibGVkICsgLm5lZXRvLXVpLWxhYmVsIHtcbiAgb3BhY2l0eTogMC41O1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuLm50bS1yb2xlcy1wZXJtaXNzaW9uX19zdWItYmxvY2tzIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm50bS1yb2xlcy1wZXJtaXNzaW9uX19zdWItYmxvY2tzOjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tbmVldG8tdWktZ3JheS0zMDApKTtcbiAgdG9wOiAwO1xuICBjb250ZW50OiBcIlwiO1xuICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDE0cHgpO1xuICBsZWZ0OiA4cHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcbn1cbi5udG0tcm9sZXMtcGVybWlzc2lvbl9fc3ViLWJsb2NrczplbXB0eSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5udG0tcm9sZXMtaGVscC11cmwtd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZzogMXJlbSAwO1xufSIsIi5udG0tbWVtYmVycyB7XG4gIG92ZXJmbG93OiBhdXRvO1xuICB3aWR0aDogMTAwJTtcblxuICAmLXdyYXBwZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH1cblxuICAmLXBhZ2UtbG9hZGVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICB9XG5cbiAgJi10YWJsZSB7XG4gICAgJl9fd3JhcHBlciB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICBnYXA6IDAuNzVyZW07XG4gICAgfVxuICAgICZfX2NvbHVtbiB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogMC41cmVtO1xuICAgIH1cbiAgfVxuXG4gICYtZm9ybSB7XG4gICAgJl9faGVhZGVyIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgICB9XG5cbiAgICAmX19ib2R5IHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgcGFkZGluZy1ib3R0b206IDFyZW07XG4gICAgICAmID4gKiArICoge1xuICAgICAgICBtYXJnaW4tdG9wOiAxLjVyZW07XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fZm9vdGVyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBnYXA6IDAuNXJlbTtcbiAgICB9XG4gIH1cbn1cblxuLm50bS1tYW5hZ2UtbWVtYmVyc19faGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cbiAgJiA+ICogKyAqIHtcbiAgICBtYXJnaW4tbGVmdDogMC41cmVtO1xuICB9XG59XG5cbi5udG0tbWFuYWdlLW1lbWJlcnNfX2FwcC1yb2xlcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDAuNXJlbSAwO1xufVxuXG4ubnRtLW1hbmFnZS1tZW1iZXJzLWFwcC1yb2xlc19fc2VsZWN0LXdyYXBwZXIge1xuICB3aWR0aDogNTAlO1xuICBtYXgtd2lkdGg6IDI1MHB4O1xufVxuXG4ubnRtLW1hbmFnZS1tZW1iZXJzLWVmZmVjdGl2ZS1hcHAtcm9sZXMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHBhZGRpbmc6IDAuMjVyZW0gMDtcbn1cblxuLm50bS1tYW5hZ2UtbWVtYmVycy1lZmZlY3RpdmUtYXBwLXJvbGVzX19yb2xlLW5hbWUge1xuICB3aWR0aDogNjclO1xuICBtYXgtd2lkdGg6IDMwMHB4O1xufVxuXG4ubnRtLW1lbWJlcnMtcmFkaW8tZ3JvdXAge1xuICB3aWR0aDogMTAwJTtcbiAgLm5lZXRvLXVpLXJhZGlvX19jb250YWluZXItLXN0YWNrZWQge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgJl9fbGFiZWwge1xuICAgIHBhZGRpbmctcmlnaHQ6IDRweDtcbiAgfVxuXG4gICZfX2ljb24ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxufVxuXG4ubnRtLW1lbWJlcnMtZm9ybS1yYWRpby1pdGVtIHtcbiAgJl9fd3JhcHBlciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHBhZGRpbmc6IDhweCAwcHggIWltcG9ydGFudDtcbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmctdG9wOiAwcHggIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAmX19sYWJlbCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuICB9XG5cbiAgJl9fZGVzY3JpcHRpb24ge1xuICAgIGNvbG9yOiByZ2IodmFyKC0tbmVldG8tdWktZ3JheS03MDApKTtcbiAgfVxufVxuXG4ubnRtLXByb2R1Y3Qtcm9sZXMtdGFibGUge1xuICB0aCB7XG4gICAgY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTcwMCkpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tbmVldG8tdWktdGV4dC14cyk7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tbmVldG8tdWktZm9udC1ib2xkKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB9XG4gIHRkLFxuICB0aCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktMzAwKSk7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBwYWRkaW5nOiA4cHg7XG4gIH1cbn1cblxuLm50bS1tYW5hZ2UtbWVtYmVyc19fY2hlY2tib3gtYWxpZ24tc3RhcnQubmVldG8tdWktY2hlY2tib3hfX3dyYXBwZXIge1xuICAubmVldG8tdWktY2hlY2tib3hfX2NvbnRhaW5lciB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIH1cbiAgLm5lZXRvLXVpLWNoZWNrYm94W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgbWFyZ2luLXRvcDogNHB4O1xuICB9XG59XG4iLCIubnRtLXJvbGVzLXRhYmxlX193cmFwcGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogY2FsYygxMDB2aCAtICN7dmFyKC0tbmVldG8tdWktbWFpbi1oZWFkZXItd2l0aC1icmVhZGNydW1icy1oZWlnaHQpfSk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmc6IDAgMS41cmVtO1xufVxuXG4ubnRtLXJvbGVzLXRhYmxlX19uYW1lLWNvbHVtbiB7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbi5udG0tcm9sZXMtcGFuZSB7XG4gICZfX2JvZHkge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcblxuICAgICYtd3JhcHBlciA+ICogKyAqIHtcbiAgICAgIG1hcmdpbi10b3A6IDFyZW07XG4gICAgfVxuXG4gICAgJiA+ICogKyAqIHtcbiAgICAgIG1hcmdpbi10b3A6IDEuNXJlbTtcbiAgICB9XG4gIH1cblxuICAmX19mb290ZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiAwLjVyZW07XG4gIH1cbn1cblxuLm50bS1yb2xlcy1wZXJtaXNzaW9uLWNhdGVnb3J5LWNhcmQge1xuICBwYWRkaW5nOiAxMHB4IDIwcHg7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLW5lZXRvLXVpLXJvdW5kZWQpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2IodmFyKC0tbmVldG8tdWktZ3JheS00MDApKTtcbiAgJiA+IC5udG0tcm9sZXMtcGVybWlzc2lvbl9fY2FyZCB7XG4gICAgJjo6YWZ0ZXIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLm50bS1yb2xlcy1wZXJtaXNzaW9uIHtcbiAgJl9faGVhZGluZyB7XG4gICAgY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTUwMCkpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIH1cblxuICAmX19jYXJkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tbmVldG8tdWktd2hpdGUpKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAwLjc1cmVtO1xuICAgIHBhZGRpbmc6IDAuNHJlbSAwO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktMzAwKSk7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICBsZWZ0OiAtMTVweDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMTRweDtcbiAgICAgIHdpZHRoOiAxMHB4O1xuICAgIH1cblxuICAgICYtLWRlc2NyaXB0aW9uIHtcbiAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICB9XG5cbiAgICAmLS1jaGVja2JveCB7XG4gICAgICBwYWRkaW5nOiAwIDAuNXJlbTtcbiAgICB9XG5cbiAgICAubmVldG8tdWktY2hlY2tib3hfX3dyYXBwZXIgLm5lZXRvLXVpLWNoZWNrYm94X19jb250YWluZXIge1xuICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cbiAgICAgIC5uZWV0by11aS1jaGVja2JveFt0eXBlPVwiY2hlY2tib3hcIl06ZGlzYWJsZWQgKyAubmVldG8tdWktbGFiZWwge1xuICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJl9fc3ViLWJsb2NrcyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTMwMCkpO1xuICAgICAgdG9wOiAwO1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gMTRweCk7XG4gICAgICBsZWZ0OiA4cHg7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDogMXB4O1xuICAgIH1cblxuICAgICY6ZW1wdHkge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLm50bS1yb2xlcy1oZWxwLXVybC13cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDEwMCU7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nOiAxcmVtIDA7XG59XG4iXX0= */";
13216
+ var css = ":root{--ntm-roles-table-default-scroll:15px;--ntm-roles-table-cell-height:68px;--ntm-roles-sidebar-width:396px;--ntm-roles-table-header-height:72px}.ntm-scrollbar__inner{height:200px;width:100%}.ntm-scrollbar__outer{height:150px;left:0;overflow:\"hidden\";position:\"absolute\";top:0;visibility:\"hidden\";width:200px}.ntm-empty-state{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.ntm-members{overflow:auto;width:100%}.ntm-members-wrapper{display:flex}.ntm-members-page-loader{height:100vh;width:100%}.ntm-members-table__wrapper{display:flex;gap:.75rem;justify-content:space-between;width:100%}.ntm-members-table__column{align-items:center;display:flex;gap:.5rem}.ntm-members-form__header{margin-bottom:.5rem}.ntm-members-form__body{padding-bottom:1rem;width:100%}.ntm-members-form__body>*+*{margin-top:1.5rem}.ntm-members-form__footer{display:flex;gap:.5rem}.ntm-manage-members__header{align-items:flex-start;display:flex}.ntm-manage-members__header>*+*{margin-left:.5rem}.ntm-manage-members__app-roles{align-items:center;display:flex;justify-content:space-between;padding:.5rem 0;width:100%}.ntm-manage-members-app-roles__select-wrapper{max-width:250px;width:50%}.ntm-manage-members-effective-app-roles{align-items:center;display:flex;justify-content:space-between;padding:.25rem 0}.ntm-manage-members-effective-app-roles__role-name{max-width:300px;width:67%}.ntm-members-radio-group,.ntm-members-radio-group .neeto-ui-radio__container--stacked{width:100%}.ntm-members-radio-group__label{padding-right:4px}.ntm-members-radio-group__icon{cursor:pointer}.ntm-members-form-radio-item__wrapper{cursor:pointer;padding:8px 0!important;width:100%}.ntm-members-form-radio-item__wrapper:first-child{padding-top:0!important}.ntm-members-form-radio-item__label{margin-bottom:0!important}.ntm-members-form-radio-item__description,.ntm-product-roles-table th{color:rgb(var(--neeto-ui-gray-700))}.ntm-product-roles-table th{font-size:var(--neeto-ui-text-xs);font-weight:var(--neeto-ui-font-bold);text-transform:uppercase;vertical-align:middle}.ntm-product-roles-table td,.ntm-product-roles-table th{border:1px solid rgb(var(--neeto-ui-gray-300));padding:8px;text-align:left}.ntm-manage-members__checkbox-align-start.neeto-ui-checkbox__wrapper .neeto-ui-checkbox__container{align-items:flex-start}.ntm-manage-members__checkbox-align-start.neeto-ui-checkbox__wrapper .neeto-ui-checkbox[type=checkbox]{margin-top:4px}.ntm-roles-table__wrapper{display:flex;height:calc(100vh - var(--neeto-ui-main-header-with-breadcrumbs-height));padding:0 1.5rem;width:100%}.ntm-roles-table__sidebar{border-left:thin solid rgb(var(--neeto-ui-gray-300));border-right:thin solid rgb(var(--neeto-ui-gray-300));border-top:thin solid rgb(var(--neeto-ui-gray-300));min-width:396px;min-width:var(--ntm-roles-sidebar-width);width:396px;width:var(--ntm-roles-sidebar-width)}.ntm-roles-table-sidebar__search{height:72px;height:var(--ntm-roles-table-header-height);padding:20px 24px}.ntm-roles-table-sidebar__list{height:calc(100vh - var(--neeto-ui-main-header-with-breadcrumbs-height) - 87px);height:calc(100vh - var(--neeto-ui-main-header-with-breadcrumbs-height) - var(\n --ntm-roles-table-header-height\n ) - var(--ntm-roles-table-default-scroll));overflow-y:auto}.ntm-roles-table-sidebar__list-item{align-items:center;display:flex;justify-content:space-between;min-height:68px;min-height:var(--ntm-roles-table-cell-height);padding:12px 24px}.ntm-roles-table-sidebar__list-item.ntm-roles-table-sidebar__list-item--highlighted{background-color:rgb(var(--neeto-ui-primary-100));padding:12px 24px}.ntm-roles-table-sidebar__list-item:not(.ntm-roles-table-sidebar__list-item--highlighted),.ntm-roles-table__columns{border-bottom:thin solid rgb(var(--neeto-ui-gray-300))}.ntm-roles-table__columns{border-top:thin solid rgb(var(--neeto-ui-gray-300));overflow:hidden;width:calc(100vw - var(--neeto-ui-sidebar-width) - 420px);width:calc(100vw - var(--neeto-ui-sidebar-width) - var(--ntm-roles-sidebar-width) - 24px)}.ntm-roles-table__cell{align-items:center;border-right:thin solid rgb(var(--neeto-ui-gray-300));display:flex;height:68px;height:var(--ntm-roles-table-cell-height);justify-content:center;min-width:200px;padding:12px 8px;width:100%}.ntm-roles-table-cell__checkbox-wrapper{height:1rem;margin:auto;position:absolute;width:1rem;z-index:10}.ntm-roles-table-cell__checkbox{z-index:10}.ntm-roles-table__header{align-items:center;display:flex;overflow-x:auto}.ntm-roles-table__header .ntm-roles-table__cell{height:72px;height:var(--ntm-roles-table-header-height)}.ntm-roles-table-header-cell__container{align-items:center;display:flex;justify-content:space-between;overflow:hidden;width:100%}.ntm-roles-table-header__dropdown{flex-shrink:0;margin:3px}.ntm-roles-table-header__role-name{overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap;width:100%}.ntm-roles-table__rows{height:calc(100vh - var(--neeto-ui-main-header-with-breadcrumbs-height) - 87px);height:calc(100vh - var(--neeto-ui-main-header-with-breadcrumbs-height) - var(\n --ntm-roles-table-header-height\n ) - var(--ntm-roles-table-default-scroll));overflow-y:auto;scrollbar-width:none;width:100%}.ntm-roles-table__rows::-webkit-scrollbar{height:0;width:0}.ntm-roles-table__rows::-webkit-scrollbar-thumb{background:rgb(var(--neeto-ui-gray-300));border-radius:50px}.ntm-roles-table__rows::-webkit-scrollbar-thumb:hover{border-radius:50px}.ntm-roles-table__rows::-webkit-scrollbar-track{background:rgb(var(--neeto-ui-gray-300))}.ntm-roles-table__row{align-items:center;display:flex}.ntm-roles-table__row .ntm-roles-table__cell{overflow:hidden;position:relative}.ntm-roles-table__row .ntm-roles-table__cell p{min-width:340px;opacity:0;width:340px}.ntm-roles-table__row.ntm-roles-table__row--highlighted .ntm-roles-table__cell{background-color:rgb(var(--neeto-ui-primary-100))}.ntm-roles-table__row:not(.ntm-roles-table__row--highlighted) .ntm-roles-table__cell{border-bottom:thin solid rgb(var(--neeto-ui-gray-300))}.ntm-roles-table-sidebar__drop-down-button{color:rgb(var(--neeto-ui-gray-600));cursor:pointer}.ntm-roles-modal__body>*+*{margin-top:1rem}.ntm-roles-modal__footer{display:flex;gap:.5rem}.ntm-roles-pane__body{margin-bottom:1.5rem;width:100%}.ntm-roles-pane__body-wrapper>*+*{margin-top:1rem}.ntm-roles-pane__body>*+*{margin-top:1.5rem}.ntm-roles-pane__footer{display:flex;gap:.5rem}.ntm-roles-permission__heading{color:rgb(var(--neeto-ui-gray-500));text-transform:uppercase}.ntm-roles-permission__card{background-color:rgb(var(--neeto-ui-white));display:flex;flex-direction:column;gap:.75rem;padding:.4rem 0;position:relative}.ntm-roles-permission__card:after{background-color:rgb(var(--neeto-ui-gray-300));content:\"\";height:1px;left:-15px;position:absolute;top:14px;width:10px}.ntm-roles-permission__card--description{flex-grow:1}.ntm-roles-permission__card--checkbox{padding:0 .5rem}.ntm-roles-permission__card .neeto-ui-checkbox__wrapper .neeto-ui-checkbox__container{align-items:flex-start}.ntm-roles-permission__card .neeto-ui-checkbox__wrapper .neeto-ui-checkbox__container .neeto-ui-checkbox[type=checkbox]:disabled+.neeto-ui-label{cursor:not-allowed;opacity:.5}.ntm-roles-permission__sub-blocks{position:relative}.ntm-roles-permission__sub-blocks:before{background-color:rgb(var(--neeto-ui-gray-300));content:\"\";height:calc(100% - 14px);left:8px;position:absolute;top:0;width:1px}.ntm-roles-permission__sub-blocks:empty{display:none}.ntm-roles-permission-category-card{border:1px solid rgb(var(--neeto-ui-gray-400));border-radius:var(--neeto-ui-rounded);padding:10px 20px}.ntm-roles-permission-category-card>.ntm-roles-permission__card:after{display:none}.ntm-roles-help-url-wrapper{align-items:center;display:flex;justify-content:center;padding:1rem 0;width:100%}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9zdHlsZXNoZWV0cy9hYnN0cmFjdHMvX3Jvb3Quc2NzcyIsInNyYy9zdHlsZXNoZWV0cy9hcHBsaWNhdGlvbi5zY3NzIiwic3JjL3N0eWxlc2hlZXRzL2Jhc2UvX2Jhc2Uuc2NzcyIsInNyYy9zdHlsZXNoZWV0cy9jb21wb25lbnRzL19lbXB0eS1zdGF0ZS5zY3NzIiwic3JjL3N0eWxlc2hlZXRzL3BhZ2VzL19tZW1iZXJzLnNjc3MiLCJzcmMvc3R5bGVzaGVldHMvcGFnZXMvX3JvbGVzLnNjc3MiLCJzcmMvc3R5bGVzaGVldHMvYWJzdHJhY3RzL19taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUNFLHFDQUFBLENBQ0Esa0NBQUEsQ0FDQSwrQkFBQSxDQUNBLG9DQ0NGLENDSkUsc0JBRUUsWUFBQSxDQURBLFVEUUosQ0NKRSxzQkFLRSxZQUFBLENBRkEsTUFBQSxDQUdBLGlCQUFBLENBTEEsbUJBQUEsQ0FDQSxLQUFBLENBS0EsbUJBQUEsQ0FIQSxXRFNKLENFbkJBLGlCQUlFLGtCQUFBLENBREEsWUFBQSxDQURBLFdBQUEsQ0FHQSxzQkFBQSxDQUpBLFVGMEJGLENHM0JBLGFBQ0UsYUFBQSxDQUNBLFVIOEJGLENHNUJFLHFCQUNFLFlIOEJKLENHM0JFLHlCQUVFLFlBQUEsQ0FEQSxVSDhCSixDR3pCSSw0QkFFRSxZQUFBLENBRUEsVUFBQSxDQURBLDZCQUFBLENBRkEsVUg4Qk4sQ0d6QkksMkJBRUUsa0JBQUEsQ0FEQSxZQUFBLENBRUEsU0gyQk4sQ0d0QkksMEJBQ0UsbUJId0JOLENHckJJLHdCQUVFLG1CQUFBLENBREEsVUh3Qk4sQ0d0Qk0sNEJBQ0UsaUJId0JSLENHcEJJLDBCQUNFLFlBQUEsQ0FDQSxTSHNCTixDR2pCQSw0QkFFRSxzQkFBQSxDQURBLFlIcUJGLENHbEJFLGdDQUNFLGlCSG9CSixDR2hCQSwrQkFFRSxrQkFBQSxDQURBLFlBQUEsQ0FFQSw2QkFBQSxDQUVBLGVBQUEsQ0FEQSxVSG9CRixDR2hCQSw4Q0FFRSxlQUFBLENBREEsU0hvQkYsQ0doQkEsd0NBRUUsa0JBQUEsQ0FEQSxZQUFBLENBRUEsNkJBQUEsQ0FDQSxnQkhtQkYsQ0doQkEsbURBRUUsZUFBQSxDQURBLFNIb0JGLENHZEUsc0ZBQ0UsVUhvQkosQ0dqQkUsZ0NBQ0UsaUJIbUJKLENHaEJFLCtCQUNFLGNIa0JKLENHYkUsc0NBRUUsY0FBQSxDQUNBLHVCQUFBLENBRkEsVUhrQkosQ0dmSSxrREFDRSx1QkhpQk4sQ0diRSxvQ0FDRSx5QkhlSixDR05FLHNFQUxFLG1DSHNCSixDR2pCRSw0QkFFRSxpQ0FBQSxDQUVBLHFDQUFBLENBQ0Esd0JBQUEsQ0FGQSxxQkhjSixDR1ZFLHdEQUVFLDhDQUFBLENBRUEsV0FBQSxDQURBLGVIYUosQ0dQRSxtR0FDRSxzQkhVSixDR1JFLHVHQUNFLGNIVUosQ0lsSkEsMEJBR0UsWUFBQSxDQURBLHdFQUFBLENBRUEsZ0JBQUEsQ0FIQSxVSndKRixDSWxKQSwwQkFJRSxvREFBQSxDQURBLHFEQUFBLENBRUEsbURBQUEsQ0FIQSxlQUFBLENBQUEsd0NBQUEsQ0FEQSxXQUFBLENBQUEsb0NKeUpGLENJbEpBLGlDQUVFLFdBQUEsQ0FBQSwyQ0FBQSxDQURBLGlCSnNKRixDSWxKQSwrQkFDRSwrRUFBQSxDQUFBOztnREFBQSxDQUtBLGVKcUpGLENJbEpBLG9DQUdFLGtCQUFBLENBRkEsWUFBQSxDQUNBLDZCQUFBLENBR0EsZUFBQSxDQUFBLDZDQUFBLENBREEsaUJKc0pGLENJbkpFLG9GQUNFLGlEQUFBLENBQ0EsaUJKcUpKLENJN0lBLG9IQUpJLHNESjZKSixDSXpKQSwwQkFLRSxtREFBQSxDQURBLGVBQUEsQ0FIQSx5REFBQSxDQUFBLHlGSndKRixDSWhKQSx1QkFRRSxrQkFBQSxDQUVBLHFEQUFBLENBSkEsWUFBQSxDQUhBLFdBQUEsQ0FBQSx5Q0FBQSxDQUlBLHNCQUFBLENBTEEsZUFBQSxDQUVBLGdCQUFBLENBSEEsVUowSkYsQ0k5SUEsd0NBRUUsV0FBQSxDQUVBLFdBQUEsQ0FIQSxpQkFBQSxDQUVBLFVBQUEsQ0FFQSxVSmlKRixDSTlJQSxnQ0FDRSxVSmlKRixDSTlJQSx5QkFFRSxrQkFBQSxDQURBLFlBQUEsQ0FFQSxlSmlKRixDSS9JRSxnREFDRSxXQUFBLENBQUEsMkNKaUpKLENJN0lBLHdDQUdFLGtCQUFBLENBRkEsWUFBQSxDQUNBLDZCQUFBLENBR0EsZUFBQSxDQURBLFVKaUpGLENJN0lBLGtDQUVFLGFBQUEsQ0FEQSxVSmlKRixDSTdJQSxtQ0FDRSxlQUFBLENBR0EsaUJBQUEsQ0FGQSxzQkFBQSxDQUNBLGtCQUFBLENBRUEsVUpnSkYsQ0k3SUEsdUJBRUUsK0VBQUEsQ0FBQTs7Z0RBQUEsQ0FLQSxlQUFBLENDakhBLG9CQUFBLENEMkdBLFVKdUpGLENLaFFFLDBDQUVFLFFEK0dBLENDaEhBLE9MbVFKLENLL1BFLGdEQUNFLHdDRDRHQSxDQzNHQSxrQkxpUUosQ0s5UEUsc0RBQ0Usa0JMZ1FKLENLN1BFLGdEQUNFLHdDTCtQSixDSXZKQSxzQkFFRSxrQkFBQSxDQURBLFlKMkpGLENJeEpFLDZDQUNFLGVBQUEsQ0FDQSxpQkowSkosQ0l2SkksK0NBR0UsZUFBQSxDQUZBLFNBQUEsQ0FDQSxXSjBKTixDSXBKSSwrRUFDRSxpREpzSk4sQ0lqSkkscUZBQ0Usc0RKbUpOLENJOUlBLDJDQUNFLG1DQUFBLENBQ0EsY0ppSkYsQ0k3SUUsMkJBQ0UsZUpnSkosQ0k3SUUseUJBQ0UsWUFBQSxDQUNBLFNKK0lKLENJMUlFLHNCQUVFLG9CQUFBLENBREEsVUo4SUosQ0kzSUksa0NBQ0UsZUo2SU4sQ0kxSUksMEJBQ0UsaUJKNElOLENJeElFLHdCQUNFLFlBQUEsQ0FDQSxTSjBJSixDSXJJRSwrQkFDRSxtQ0FBQSxDQUNBLHdCSndJSixDSXJJRSw0QkFDRSwyQ0FBQSxDQUdBLFlBQUEsQ0FDQSxxQkFBQSxDQUNBLFVBQUEsQ0FDQSxlQUFBLENBTEEsaUJKMklKLENJcElJLGtDQUNFLDhDQUFBLENBQ0EsVUFBQSxDQUNBLFVBQUEsQ0FDQSxVQUFBLENBQ0EsaUJBQUEsQ0FDQSxRQUFBLENBQ0EsVUpzSU4sQ0luSUkseUNBQ0UsV0pxSU4sQ0lsSUksc0NBQ0UsZUpvSU4sQ0lqSUksc0ZBQ0Usc0JKbUlOLENJaklNLGlKQUVFLGtCQUFBLENBREEsVUpvSVIsQ0k5SEUsa0NBQ0UsaUJKZ0lKLENJOUhJLHlDQUNFLDhDQUFBLENBRUEsVUFBQSxDQUNBLHdCQUFBLENBQ0EsUUFBQSxDQUNBLGlCQUFBLENBSkEsS0FBQSxDQUtBLFNKZ0lOLENJN0hJLHdDQUNFLFlKK0hOLENJMUhBLG9DQUdFLDhDQUFBLENBREEscUNBQUEsQ0FEQSxpQkorSEYsQ0kzSEksc0VBQ0UsWUo2SE4sQ0l4SEEsNEJBR0Usa0JBQUEsQ0FGQSxZQUFBLENBR0Esc0JBQUEsQ0FDQSxjQUFBLENBSEEsVUo4SEYiLCJzb3VyY2VzQ29udGVudCI6WyI6cm9vdCB7XG4gIC0tbnRtLXJvbGVzLXRhYmxlLWRlZmF1bHQtc2Nyb2xsOiAxNXB4O1xuICAtLW50bS1yb2xlcy10YWJsZS1jZWxsLWhlaWdodDogNjhweDtcbiAgLS1udG0tcm9sZXMtc2lkZWJhci13aWR0aDogMzk2cHg7XG4gIC0tbnRtLXJvbGVzLXRhYmxlLWhlYWRlci1oZWlnaHQ6IDcycHg7XG59XG4iLCI6cm9vdCB7XG4gIC0tbnRtLXJvbGVzLXRhYmxlLWRlZmF1bHQtc2Nyb2xsOiAxNXB4O1xuICAtLW50bS1yb2xlcy10YWJsZS1jZWxsLWhlaWdodDogNjhweDtcbiAgLS1udG0tcm9sZXMtc2lkZWJhci13aWR0aDogMzk2cHg7XG4gIC0tbnRtLXJvbGVzLXRhYmxlLWhlYWRlci1oZWlnaHQ6IDcycHg7XG59XG5cbi5udG0tc2Nyb2xsYmFyX19pbm5lciB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDIwMHB4O1xufVxuLm50bS1zY3JvbGxiYXJfX291dGVyIHtcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIjtcbiAgdG9wOiAwcHg7XG4gIGxlZnQ6IDBweDtcbiAgd2lkdGg6IDIwMHB4O1xuICBoZWlnaHQ6IDE1MHB4O1xuICBvdmVyZmxvdzogXCJoaWRkZW5cIjtcbiAgdmlzaWJpbGl0eTogXCJoaWRkZW5cIjtcbn1cblxuLm50bS1lbXB0eS1zdGF0ZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4ubnRtLW1lbWJlcnMge1xuICBvdmVyZmxvdzogYXV0bztcbiAgd2lkdGg6IDEwMCU7XG59XG4ubnRtLW1lbWJlcnMtd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG4ubnRtLW1lbWJlcnMtcGFnZS1sb2FkZXIge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDB2aDtcbn1cbi5udG0tbWVtYmVycy10YWJsZV9fd3JhcHBlciB7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGdhcDogMC43NXJlbTtcbn1cbi5udG0tbWVtYmVycy10YWJsZV9fY29sdW1uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjVyZW07XG59XG4ubnRtLW1lbWJlcnMtZm9ybV9faGVhZGVyIHtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xufVxuLm50bS1tZW1iZXJzLWZvcm1fX2JvZHkge1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1ib3R0b206IDFyZW07XG59XG4ubnRtLW1lbWJlcnMtZm9ybV9fYm9keSA+ICogKyAqIHtcbiAgbWFyZ2luLXRvcDogMS41cmVtO1xufVxuLm50bS1tZW1iZXJzLWZvcm1fX2Zvb3RlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogMC41cmVtO1xufVxuXG4ubnRtLW1hbmFnZS1tZW1iZXJzX19oZWFkZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbn1cbi5udG0tbWFuYWdlLW1lbWJlcnNfX2hlYWRlciA+ICogKyAqIHtcbiAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcbn1cblxuLm50bS1tYW5hZ2UtbWVtYmVyc19fYXBwLXJvbGVzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMC41cmVtIDA7XG59XG5cbi5udG0tbWFuYWdlLW1lbWJlcnMtYXBwLXJvbGVzX19zZWxlY3Qtd3JhcHBlciB7XG4gIHdpZHRoOiA1MCU7XG4gIG1heC13aWR0aDogMjUwcHg7XG59XG5cbi5udG0tbWFuYWdlLW1lbWJlcnMtZWZmZWN0aXZlLWFwcC1yb2xlcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgcGFkZGluZzogMC4yNXJlbSAwO1xufVxuXG4ubnRtLW1hbmFnZS1tZW1iZXJzLWVmZmVjdGl2ZS1hcHAtcm9sZXNfX3JvbGUtbmFtZSB7XG4gIHdpZHRoOiA2NyU7XG4gIG1heC13aWR0aDogMzAwcHg7XG59XG5cbi5udG0tbWVtYmVycy1yYWRpby1ncm91cCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLm50bS1tZW1iZXJzLXJhZGlvLWdyb3VwIC5uZWV0by11aS1yYWRpb19fY29udGFpbmVyLS1zdGFja2VkIHtcbiAgd2lkdGg6IDEwMCU7XG59XG4ubnRtLW1lbWJlcnMtcmFkaW8tZ3JvdXBfX2xhYmVsIHtcbiAgcGFkZGluZy1yaWdodDogNHB4O1xufVxuLm50bS1tZW1iZXJzLXJhZGlvLWdyb3VwX19pY29uIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubnRtLW1lbWJlcnMtZm9ybS1yYWRpby1pdGVtX193cmFwcGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgcGFkZGluZzogOHB4IDBweCAhaW1wb3J0YW50O1xufVxuLm50bS1tZW1iZXJzLWZvcm0tcmFkaW8taXRlbV9fd3JhcHBlcjpmaXJzdC1jaGlsZCB7XG4gIHBhZGRpbmctdG9wOiAwcHggIWltcG9ydGFudDtcbn1cbi5udG0tbWVtYmVycy1mb3JtLXJhZGlvLWl0ZW1fX2xhYmVsIHtcbiAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xufVxuLm50bS1tZW1iZXJzLWZvcm0tcmFkaW8taXRlbV9fZGVzY3JpcHRpb24ge1xuICBjb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktNzAwKSk7XG59XG5cbi5udG0tcHJvZHVjdC1yb2xlcy10YWJsZSB0aCB7XG4gIGNvbG9yOiByZ2IodmFyKC0tbmVldG8tdWktZ3JheS03MDApKTtcbiAgZm9udC1zaXplOiB2YXIoLS1uZWV0by11aS10ZXh0LXhzKTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLW5lZXRvLXVpLWZvbnQtYm9sZCk7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG4ubnRtLXByb2R1Y3Qtcm9sZXMtdGFibGUgdGQsXG4ubnRtLXByb2R1Y3Qtcm9sZXMtdGFibGUgdGgge1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2IodmFyKC0tbmVldG8tdWktZ3JheS0zMDApKTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgcGFkZGluZzogOHB4O1xufVxuXG4ubnRtLW1hbmFnZS1tZW1iZXJzX19jaGVja2JveC1hbGlnbi1zdGFydC5uZWV0by11aS1jaGVja2JveF9fd3JhcHBlciAubmVldG8tdWktY2hlY2tib3hfX2NvbnRhaW5lciB7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xufVxuLm50bS1tYW5hZ2UtbWVtYmVyc19fY2hlY2tib3gtYWxpZ24tc3RhcnQubmVldG8tdWktY2hlY2tib3hfX3dyYXBwZXIgLm5lZXRvLXVpLWNoZWNrYm94W3R5cGU9Y2hlY2tib3hdIHtcbiAgbWFyZ2luLXRvcDogNHB4O1xufVxuXG4ubnRtLXJvbGVzLXRhYmxlX193cmFwcGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogY2FsYygxMDB2aCAtIHZhcigtLW5lZXRvLXVpLW1haW4taGVhZGVyLXdpdGgtYnJlYWRjcnVtYnMtaGVpZ2h0KSk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmc6IDAgMS41cmVtO1xufVxuXG4ubnRtLXJvbGVzLXRhYmxlX19zaWRlYmFyIHtcbiAgd2lkdGg6IHZhcigtLW50bS1yb2xlcy1zaWRlYmFyLXdpZHRoKTtcbiAgbWluLXdpZHRoOiB2YXIoLS1udG0tcm9sZXMtc2lkZWJhci13aWR0aCk7XG4gIGJvcmRlci1yaWdodDogdGhpbiBzb2xpZCByZ2IodmFyKC0tbmVldG8tdWktZ3JheS0zMDApKTtcbiAgYm9yZGVyLWxlZnQ6IHRoaW4gc29saWQgcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktMzAwKSk7XG4gIGJvcmRlci10b3A6IHRoaW4gc29saWQgcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktMzAwKSk7XG59XG5cbi5udG0tcm9sZXMtdGFibGUtc2lkZWJhcl9fc2VhcmNoIHtcbiAgcGFkZGluZzogMjBweCAyNHB4O1xuICBoZWlnaHQ6IHZhcigtLW50bS1yb2xlcy10YWJsZS1oZWFkZXItaGVpZ2h0KTtcbn1cblxuLm50bS1yb2xlcy10YWJsZS1zaWRlYmFyX19saXN0IHtcbiAgaGVpZ2h0OiBjYWxjKFxuICAgIDEwMHZoIC0gdmFyKC0tbmVldG8tdWktbWFpbi1oZWFkZXItd2l0aC1icmVhZGNydW1icy1oZWlnaHQpIC0gdmFyKFxuICAgICAgICAtLW50bS1yb2xlcy10YWJsZS1oZWFkZXItaGVpZ2h0XG4gICAgICApIC0gdmFyKC0tbnRtLXJvbGVzLXRhYmxlLWRlZmF1bHQtc2Nyb2xsKVxuICApO1xuICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG4ubnRtLXJvbGVzLXRhYmxlLXNpZGViYXJfX2xpc3QtaXRlbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMTJweCAyNHB4O1xuICBtaW4taGVpZ2h0OiB2YXIoLS1udG0tcm9sZXMtdGFibGUtY2VsbC1oZWlnaHQpO1xufVxuLm50bS1yb2xlcy10YWJsZS1zaWRlYmFyX19saXN0LWl0ZW0ubnRtLXJvbGVzLXRhYmxlLXNpZGViYXJfX2xpc3QtaXRlbS0taGlnaGxpZ2h0ZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tbmVldG8tdWktcHJpbWFyeS0xMDApKTtcbiAgcGFkZGluZzogMTJweCAyNHB4O1xufVxuLm50bS1yb2xlcy10YWJsZS1zaWRlYmFyX19saXN0LWl0ZW06bm90KC5udG0tcm9sZXMtdGFibGUtc2lkZWJhcl9fbGlzdC1pdGVtLS1oaWdobGlnaHRlZCkge1xuICBib3JkZXItYm90dG9tOiB0aGluIHNvbGlkIHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTMwMCkpO1xufVxuXG4ubnRtLXJvbGVzLXRhYmxlX19jb2x1bW5zIHtcbiAgd2lkdGg6IGNhbGMoXG4gICAgMTAwdncgLSB2YXIoLS1uZWV0by11aS1zaWRlYmFyLXdpZHRoKSAtIHZhcigtLW50bS1yb2xlcy1zaWRlYmFyLXdpZHRoKSAtIDI0cHhcbiAgKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyLXRvcDogdGhpbiBzb2xpZCByZ2IodmFyKC0tbmVldG8tdWktZ3JheS0zMDApKTtcbiAgYm9yZGVyLWJvdHRvbTogdGhpbiBzb2xpZCByZ2IodmFyKC0tbmVldG8tdWktZ3JheS0zMDApKTtcbn1cblxuLm50bS1yb2xlcy10YWJsZV9fY2VsbCB7XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6IDIwMHB4O1xuICBoZWlnaHQ6IHZhcigtLW50bS1yb2xlcy10YWJsZS1jZWxsLWhlaWdodCk7XG4gIHBhZGRpbmc6IDEycHggOHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYm9yZGVyLXJpZ2h0OiB0aGluIHNvbGlkIHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTMwMCkpO1xufVxuXG4ubnRtLXJvbGVzLXRhYmxlLWNlbGxfX2NoZWNrYm94LXdyYXBwZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGhlaWdodDogMXJlbTtcbiAgd2lkdGg6IDFyZW07XG4gIG1hcmdpbjogYXV0bztcbiAgei1pbmRleDogMTA7XG59XG5cbi5udG0tcm9sZXMtdGFibGUtY2VsbF9fY2hlY2tib3gge1xuICB6LWluZGV4OiAxMDtcbn1cblxuLm50bS1yb2xlcy10YWJsZV9faGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgb3ZlcmZsb3cteDogYXV0bztcbn1cbi5udG0tcm9sZXMtdGFibGVfX2hlYWRlciAubnRtLXJvbGVzLXRhYmxlX19jZWxsIHtcbiAgaGVpZ2h0OiB2YXIoLS1udG0tcm9sZXMtdGFibGUtaGVhZGVyLWhlaWdodCk7XG59XG5cbi5udG0tcm9sZXMtdGFibGUtaGVhZGVyLWNlbGxfX2NvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgd2lkdGg6IDEwMCU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5udG0tcm9sZXMtdGFibGUtaGVhZGVyX19kcm9wZG93biB7XG4gIG1hcmdpbjogM3B4O1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLm50bS1yb2xlcy10YWJsZS1oZWFkZXJfX3JvbGUtbmFtZSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ubnRtLXJvbGVzLXRhYmxlX19yb3dzIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogY2FsYyhcbiAgICAxMDB2aCAtIHZhcigtLW5lZXRvLXVpLW1haW4taGVhZGVyLXdpdGgtYnJlYWRjcnVtYnMtaGVpZ2h0KSAtIHZhcihcbiAgICAgICAgLS1udG0tcm9sZXMtdGFibGUtaGVhZGVyLWhlaWdodFxuICAgICAgKSAtIHZhcigtLW50bS1yb2xlcy10YWJsZS1kZWZhdWx0LXNjcm9sbClcbiAgKTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgc2Nyb2xsYmFyLXdpZHRoOiBub25lO1xufVxuLm50bS1yb2xlcy10YWJsZV9fcm93czo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICB3aWR0aDogMHB4O1xuICBoZWlnaHQ6IDBweDtcbn1cbi5udG0tcm9sZXMtdGFibGVfX3Jvd3M6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktMzAwKSk7XG4gIGJvcmRlci1yYWRpdXM6IDUwcHg7XG59XG4ubnRtLXJvbGVzLXRhYmxlX19yb3dzOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gIGJvcmRlci1yYWRpdXM6IDUwcHg7XG59XG4ubnRtLXJvbGVzLXRhYmxlX19yb3dzOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTMwMCkpO1xufVxuXG4ubnRtLXJvbGVzLXRhYmxlX19yb3cge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLm50bS1yb2xlcy10YWJsZV9fcm93IC5udG0tcm9sZXMtdGFibGVfX2NlbGwge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4ubnRtLXJvbGVzLXRhYmxlX19yb3cgLm50bS1yb2xlcy10YWJsZV9fY2VsbCBwIHtcbiAgb3BhY2l0eTogMDtcbiAgd2lkdGg6IDM0MHB4O1xuICBtaW4td2lkdGg6IDM0MHB4O1xufVxuLm50bS1yb2xlcy10YWJsZV9fcm93Lm50bS1yb2xlcy10YWJsZV9fcm93LS1oaWdobGlnaHRlZCAubnRtLXJvbGVzLXRhYmxlX19jZWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLXByaW1hcnktMTAwKSk7XG59XG4ubnRtLXJvbGVzLXRhYmxlX19yb3c6bm90KC5udG0tcm9sZXMtdGFibGVfX3Jvdy0taGlnaGxpZ2h0ZWQpIC5udG0tcm9sZXMtdGFibGVfX2NlbGwge1xuICBib3JkZXItYm90dG9tOiB0aGluIHNvbGlkIHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTMwMCkpO1xufVxuXG4ubnRtLXJvbGVzLXRhYmxlLXNpZGViYXJfX2Ryb3AtZG93bi1idXR0b24ge1xuICBjb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktNjAwKSk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLm50bS1yb2xlcy1tb2RhbF9fYm9keSA+ICogKyAqIHtcbiAgbWFyZ2luLXRvcDogMXJlbTtcbn1cbi5udG0tcm9sZXMtbW9kYWxfX2Zvb3RlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogMC41cmVtO1xufVxuXG4ubnRtLXJvbGVzLXBhbmVfX2JvZHkge1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xufVxuLm50bS1yb2xlcy1wYW5lX19ib2R5LXdyYXBwZXIgPiAqICsgKiB7XG4gIG1hcmdpbi10b3A6IDFyZW07XG59XG4ubnRtLXJvbGVzLXBhbmVfX2JvZHkgPiAqICsgKiB7XG4gIG1hcmdpbi10b3A6IDEuNXJlbTtcbn1cbi5udG0tcm9sZXMtcGFuZV9fZm9vdGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiAwLjVyZW07XG59XG5cbi5udG0tcm9sZXMtcGVybWlzc2lvbl9faGVhZGluZyB7XG4gIGNvbG9yOiByZ2IodmFyKC0tbmVldG8tdWktZ3JheS01MDApKTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cbi5udG0tcm9sZXMtcGVybWlzc2lvbl9fY2FyZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS13aGl0ZSkpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMC43NXJlbTtcbiAgcGFkZGluZzogMC40cmVtIDA7XG59XG4ubnRtLXJvbGVzLXBlcm1pc3Npb25fX2NhcmQ6OmFmdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktMzAwKSk7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGhlaWdodDogMXB4O1xuICBsZWZ0OiAtMTVweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDE0cHg7XG4gIHdpZHRoOiAxMHB4O1xufVxuLm50bS1yb2xlcy1wZXJtaXNzaW9uX19jYXJkLS1kZXNjcmlwdGlvbiB7XG4gIGZsZXgtZ3JvdzogMTtcbn1cbi5udG0tcm9sZXMtcGVybWlzc2lvbl9fY2FyZC0tY2hlY2tib3gge1xuICBwYWRkaW5nOiAwIDAuNXJlbTtcbn1cbi5udG0tcm9sZXMtcGVybWlzc2lvbl9fY2FyZCAubmVldG8tdWktY2hlY2tib3hfX3dyYXBwZXIgLm5lZXRvLXVpLWNoZWNrYm94X19jb250YWluZXIge1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbn1cbi5udG0tcm9sZXMtcGVybWlzc2lvbl9fY2FyZCAubmVldG8tdWktY2hlY2tib3hfX3dyYXBwZXIgLm5lZXRvLXVpLWNoZWNrYm94X19jb250YWluZXIgLm5lZXRvLXVpLWNoZWNrYm94W3R5cGU9Y2hlY2tib3hdOmRpc2FibGVkICsgLm5lZXRvLXVpLWxhYmVsIHtcbiAgb3BhY2l0eTogMC41O1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuLm50bS1yb2xlcy1wZXJtaXNzaW9uX19zdWItYmxvY2tzIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm50bS1yb2xlcy1wZXJtaXNzaW9uX19zdWItYmxvY2tzOjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tbmVldG8tdWktZ3JheS0zMDApKTtcbiAgdG9wOiAwO1xuICBjb250ZW50OiBcIlwiO1xuICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDE0cHgpO1xuICBsZWZ0OiA4cHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcbn1cbi5udG0tcm9sZXMtcGVybWlzc2lvbl9fc3ViLWJsb2NrczplbXB0eSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5udG0tcm9sZXMtcGVybWlzc2lvbi1jYXRlZ29yeS1jYXJkIHtcbiAgcGFkZGluZzogMTBweCAyMHB4O1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1uZWV0by11aS1yb3VuZGVkKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktNDAwKSk7XG59XG4ubnRtLXJvbGVzLXBlcm1pc3Npb24tY2F0ZWdvcnktY2FyZCA+IC5udG0tcm9sZXMtcGVybWlzc2lvbl9fY2FyZDo6YWZ0ZXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4ubnRtLXJvbGVzLWhlbHAtdXJsLXdyYXBwZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHBhZGRpbmc6IDFyZW0gMDtcbn0iLCIubnRtLXNjcm9sbGJhciB7XG4gICZfX2lubmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDIwMHB4O1xuICB9XG5cbiAgJl9fb3V0ZXIge1xuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCI7XG4gICAgdG9wOiAwcHg7XG4gICAgbGVmdDogMHB4O1xuICAgIHdpZHRoOiAyMDBweDtcbiAgICBoZWlnaHQ6IDE1MHB4O1xuICAgIG92ZXJmbG93OiBcImhpZGRlblwiO1xuICAgIHZpc2liaWxpdHk6IFwiaGlkZGVuXCI7XG4gIH1cbn1cbiIsIi5udG0tZW1wdHktc3RhdGUge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbiIsIi5udG0tbWVtYmVycyB7XG4gIG92ZXJmbG93OiBhdXRvO1xuICB3aWR0aDogMTAwJTtcblxuICAmLXdyYXBwZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH1cblxuICAmLXBhZ2UtbG9hZGVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICB9XG5cbiAgJi10YWJsZSB7XG4gICAgJl9fd3JhcHBlciB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICBnYXA6IDAuNzVyZW07XG4gICAgfVxuICAgICZfX2NvbHVtbiB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogMC41cmVtO1xuICAgIH1cbiAgfVxuXG4gICYtZm9ybSB7XG4gICAgJl9faGVhZGVyIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgICB9XG5cbiAgICAmX19ib2R5IHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgcGFkZGluZy1ib3R0b206IDFyZW07XG4gICAgICAmID4gKiArICoge1xuICAgICAgICBtYXJnaW4tdG9wOiAxLjVyZW07XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fZm9vdGVyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBnYXA6IDAuNXJlbTtcbiAgICB9XG4gIH1cbn1cblxuLm50bS1tYW5hZ2UtbWVtYmVyc19faGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cbiAgJiA+ICogKyAqIHtcbiAgICBtYXJnaW4tbGVmdDogMC41cmVtO1xuICB9XG59XG5cbi5udG0tbWFuYWdlLW1lbWJlcnNfX2FwcC1yb2xlcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDAuNXJlbSAwO1xufVxuXG4ubnRtLW1hbmFnZS1tZW1iZXJzLWFwcC1yb2xlc19fc2VsZWN0LXdyYXBwZXIge1xuICB3aWR0aDogNTAlO1xuICBtYXgtd2lkdGg6IDI1MHB4O1xufVxuXG4ubnRtLW1hbmFnZS1tZW1iZXJzLWVmZmVjdGl2ZS1hcHAtcm9sZXMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHBhZGRpbmc6IDAuMjVyZW0gMDtcbn1cblxuLm50bS1tYW5hZ2UtbWVtYmVycy1lZmZlY3RpdmUtYXBwLXJvbGVzX19yb2xlLW5hbWUge1xuICB3aWR0aDogNjclO1xuICBtYXgtd2lkdGg6IDMwMHB4O1xufVxuXG4ubnRtLW1lbWJlcnMtcmFkaW8tZ3JvdXAge1xuICB3aWR0aDogMTAwJTtcbiAgLm5lZXRvLXVpLXJhZGlvX19jb250YWluZXItLXN0YWNrZWQge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgJl9fbGFiZWwge1xuICAgIHBhZGRpbmctcmlnaHQ6IDRweDtcbiAgfVxuXG4gICZfX2ljb24ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxufVxuXG4ubnRtLW1lbWJlcnMtZm9ybS1yYWRpby1pdGVtIHtcbiAgJl9fd3JhcHBlciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHBhZGRpbmc6IDhweCAwcHggIWltcG9ydGFudDtcbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmctdG9wOiAwcHggIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAmX19sYWJlbCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuICB9XG5cbiAgJl9fZGVzY3JpcHRpb24ge1xuICAgIGNvbG9yOiByZ2IodmFyKC0tbmVldG8tdWktZ3JheS03MDApKTtcbiAgfVxufVxuXG4ubnRtLXByb2R1Y3Qtcm9sZXMtdGFibGUge1xuICB0aCB7XG4gICAgY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTcwMCkpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tbmVldG8tdWktdGV4dC14cyk7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tbmVldG8tdWktZm9udC1ib2xkKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB9XG4gIHRkLFxuICB0aCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktMzAwKSk7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBwYWRkaW5nOiA4cHg7XG4gIH1cbn1cblxuLm50bS1tYW5hZ2UtbWVtYmVyc19fY2hlY2tib3gtYWxpZ24tc3RhcnQubmVldG8tdWktY2hlY2tib3hfX3dyYXBwZXIge1xuICAubmVldG8tdWktY2hlY2tib3hfX2NvbnRhaW5lciB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIH1cbiAgLm5lZXRvLXVpLWNoZWNrYm94W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgbWFyZ2luLXRvcDogNHB4O1xuICB9XG59XG4iLCIubnRtLXJvbGVzLXRhYmxlX193cmFwcGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogY2FsYygxMDB2aCAtICN7dmFyKC0tbmVldG8tdWktbWFpbi1oZWFkZXItd2l0aC1icmVhZGNydW1icy1oZWlnaHQpfSk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmc6IDAgMS41cmVtO1xufVxuXG4ubnRtLXJvbGVzLXRhYmxlX19zaWRlYmFyIHtcbiAgd2lkdGg6IHZhcigtLW50bS1yb2xlcy1zaWRlYmFyLXdpZHRoKTtcbiAgbWluLXdpZHRoOiB2YXIoLS1udG0tcm9sZXMtc2lkZWJhci13aWR0aCk7XG4gIGJvcmRlci1yaWdodDogdGhpbiBzb2xpZCByZ2IodmFyKC0tbmVldG8tdWktZ3JheS0zMDApKTtcbiAgYm9yZGVyLWxlZnQ6IHRoaW4gc29saWQgcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktMzAwKSk7XG4gIGJvcmRlci10b3A6IHRoaW4gc29saWQgcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktMzAwKSk7XG59XG5cbi5udG0tcm9sZXMtdGFibGUtc2lkZWJhcl9fc2VhcmNoIHtcbiAgcGFkZGluZzogMjBweCAyNHB4O1xuICBoZWlnaHQ6IHZhcigtLW50bS1yb2xlcy10YWJsZS1oZWFkZXItaGVpZ2h0KTtcbn1cblxuLm50bS1yb2xlcy10YWJsZS1zaWRlYmFyX19saXN0IHtcbiAgaGVpZ2h0OiBjYWxjKFxuICAgIDEwMHZoIC0gI3t2YXIoLS1uZWV0by11aS1tYWluLWhlYWRlci13aXRoLWJyZWFkY3J1bWJzLWhlaWdodCl9IC0gdmFyKFxuICAgICAgICAtLW50bS1yb2xlcy10YWJsZS1oZWFkZXItaGVpZ2h0XG4gICAgICApIC0gdmFyKC0tbnRtLXJvbGVzLXRhYmxlLWRlZmF1bHQtc2Nyb2xsKVxuICApO1xuICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG4ubnRtLXJvbGVzLXRhYmxlLXNpZGViYXJfX2xpc3QtaXRlbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMTJweCAyNHB4O1xuICBtaW4taGVpZ2h0OiB2YXIoLS1udG0tcm9sZXMtdGFibGUtY2VsbC1oZWlnaHQpO1xuXG4gICYubnRtLXJvbGVzLXRhYmxlLXNpZGViYXJfX2xpc3QtaXRlbS0taGlnaGxpZ2h0ZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1wcmltYXJ5LTEwMCkpO1xuICAgIHBhZGRpbmc6IDEycHggMjRweDtcbiAgfVxuXG4gICY6bm90KC5udG0tcm9sZXMtdGFibGUtc2lkZWJhcl9fbGlzdC1pdGVtLS1oaWdobGlnaHRlZCkge1xuICAgIGJvcmRlci1ib3R0b206IHRoaW4gc29saWQgcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktMzAwKSk7XG4gIH1cbn1cblxuLm50bS1yb2xlcy10YWJsZV9fY29sdW1ucyB7XG4gIHdpZHRoOiBjYWxjKFxuICAgIDEwMHZ3IC0gI3t2YXIoLS1uZWV0by11aS1zaWRlYmFyLXdpZHRoKX0gLSB2YXIoLS1udG0tcm9sZXMtc2lkZWJhci13aWR0aCkgLSAyNHB4XG4gICk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJvcmRlci10b3A6IHRoaW4gc29saWQgcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktMzAwKSk7XG4gIGJvcmRlci1ib3R0b206IHRoaW4gc29saWQgcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktMzAwKSk7XG59XG5cbi5udG0tcm9sZXMtdGFibGVfX2NlbGwge1xuICB3aWR0aDogMTAwJTtcbiAgbWluLXdpZHRoOiAyMDBweDtcbiAgaGVpZ2h0OiB2YXIoLS1udG0tcm9sZXMtdGFibGUtY2VsbC1oZWlnaHQpO1xuICBwYWRkaW5nOiAxMnB4IDhweDtcblxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICBib3JkZXItcmlnaHQ6IHRoaW4gc29saWQgcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktMzAwKSk7XG59XG5cbi5udG0tcm9sZXMtdGFibGUtY2VsbF9fY2hlY2tib3gtd3JhcHBlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaGVpZ2h0OiAxcmVtO1xuICB3aWR0aDogMXJlbTtcbiAgbWFyZ2luOiBhdXRvO1xuICB6LWluZGV4OiAxMDtcbn1cblxuLm50bS1yb2xlcy10YWJsZS1jZWxsX19jaGVja2JveCB7XG4gIHotaW5kZXg6IDEwO1xufVxuXG4ubnRtLXJvbGVzLXRhYmxlX19oZWFkZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBvdmVyZmxvdy14OiBhdXRvO1xuXG4gIC5udG0tcm9sZXMtdGFibGVfX2NlbGwge1xuICAgIGhlaWdodDogdmFyKC0tbnRtLXJvbGVzLXRhYmxlLWhlYWRlci1oZWlnaHQpO1xuICB9XG59XG5cbi5udG0tcm9sZXMtdGFibGUtaGVhZGVyLWNlbGxfX2NvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgd2lkdGg6IDEwMCU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5udG0tcm9sZXMtdGFibGUtaGVhZGVyX19kcm9wZG93biB7XG4gIG1hcmdpbjogM3B4O1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLm50bS1yb2xlcy10YWJsZS1oZWFkZXJfX3JvbGUtbmFtZSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ubnRtLXJvbGVzLXRhYmxlX19yb3dzIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogY2FsYyhcbiAgICAxMDB2aCAtICN7dmFyKC0tbmVldG8tdWktbWFpbi1oZWFkZXItd2l0aC1icmVhZGNydW1icy1oZWlnaHQpfSAtIHZhcihcbiAgICAgICAgLS1udG0tcm9sZXMtdGFibGUtaGVhZGVyLWhlaWdodFxuICAgICAgKSAtIHZhcigtLW50bS1yb2xlcy10YWJsZS1kZWZhdWx0LXNjcm9sbClcbiAgKTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgQGluY2x1ZGUgc2Nyb2xsYmFycyhcbiAgICAwcHgsXG4gICAgcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktMzAwKSksXG4gICAgcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktMzAwKSlcbiAgKTtcbn1cblxuLm50bS1yb2xlcy10YWJsZV9fcm93IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAubnRtLXJvbGVzLXRhYmxlX19jZWxsIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIC8vIEhpZGRlbiAtIEp1c3QgZm9yIGhlaWdodCByZWZlcmVuY2VcbiAgICBwIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB3aWR0aDogMzQwcHg7XG4gICAgICBtaW4td2lkdGg6IDM0MHB4O1xuICAgIH1cbiAgfVxuXG4gICYubnRtLXJvbGVzLXRhYmxlX19yb3ctLWhpZ2hsaWdodGVkIHtcbiAgICAubnRtLXJvbGVzLXRhYmxlX19jZWxsIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1wcmltYXJ5LTEwMCkpO1xuICAgIH1cbiAgfVxuXG4gICY6bm90KC5udG0tcm9sZXMtdGFibGVfX3Jvdy0taGlnaGxpZ2h0ZWQpIHtcbiAgICAubnRtLXJvbGVzLXRhYmxlX19jZWxsIHtcbiAgICAgIGJvcmRlci1ib3R0b206IHRoaW4gc29saWQgcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktMzAwKSk7XG4gICAgfVxuICB9XG59XG5cbi5udG0tcm9sZXMtdGFibGUtc2lkZWJhcl9fZHJvcC1kb3duLWJ1dHRvbiB7XG4gIGNvbG9yOiByZ2IodmFyKC0tbmVldG8tdWktZ3JheS02MDApKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubnRtLXJvbGVzLW1vZGFsIHtcbiAgJl9fYm9keSA+ICogKyAqIHtcbiAgICBtYXJnaW4tdG9wOiAxcmVtO1xuICB9XG5cbiAgJl9fZm9vdGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogMC41cmVtO1xuICB9XG59XG5cbi5udG0tcm9sZXMtcGFuZSB7XG4gICZfX2JvZHkge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcblxuICAgICYtd3JhcHBlciA+ICogKyAqIHtcbiAgICAgIG1hcmdpbi10b3A6IDFyZW07XG4gICAgfVxuXG4gICAgJiA+ICogKyAqIHtcbiAgICAgIG1hcmdpbi10b3A6IDEuNXJlbTtcbiAgICB9XG4gIH1cblxuICAmX19mb290ZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiAwLjVyZW07XG4gIH1cbn1cblxuLm50bS1yb2xlcy1wZXJtaXNzaW9uIHtcbiAgJl9faGVhZGluZyB7XG4gICAgY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTUwMCkpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIH1cblxuICAmX19jYXJkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tbmVldG8tdWktd2hpdGUpKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAwLjc1cmVtO1xuICAgIHBhZGRpbmc6IDAuNHJlbSAwO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktMzAwKSk7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICBsZWZ0OiAtMTVweDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMTRweDtcbiAgICAgIHdpZHRoOiAxMHB4O1xuICAgIH1cblxuICAgICYtLWRlc2NyaXB0aW9uIHtcbiAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICB9XG5cbiAgICAmLS1jaGVja2JveCB7XG4gICAgICBwYWRkaW5nOiAwIDAuNXJlbTtcbiAgICB9XG5cbiAgICAubmVldG8tdWktY2hlY2tib3hfX3dyYXBwZXIgLm5lZXRvLXVpLWNoZWNrYm94X19jb250YWluZXIge1xuICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cbiAgICAgIC5uZWV0by11aS1jaGVja2JveFt0eXBlPVwiY2hlY2tib3hcIl06ZGlzYWJsZWQgKyAubmVldG8tdWktbGFiZWwge1xuICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJl9fc3ViLWJsb2NrcyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTMwMCkpO1xuICAgICAgdG9wOiAwO1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gMTRweCk7XG4gICAgICBsZWZ0OiA4cHg7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDogMXB4O1xuICAgIH1cblxuICAgICY6ZW1wdHkge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLm50bS1yb2xlcy1wZXJtaXNzaW9uLWNhdGVnb3J5LWNhcmQge1xuICBwYWRkaW5nOiAxMHB4IDIwcHg7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLW5lZXRvLXVpLXJvdW5kZWQpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2IodmFyKC0tbmVldG8tdWktZ3JheS00MDApKTtcbiAgJiA+IC5udG0tcm9sZXMtcGVybWlzc2lvbl9fY2FyZCB7XG4gICAgJjo6YWZ0ZXIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLm50bS1yb2xlcy1oZWxwLXVybC13cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDEwMCU7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nOiAxcmVtIDA7XG59XG4iLCJAbWl4aW4gc2Nyb2xsYmFycyhcbiAgJHNpemUsXG4gICRmb3JlZ3JvdW5kLWNvbG9yOiAkbmVldG8tdWktZ3JheS0zMDAsXG4gICRiYWNrZ3JvdW5kLWNvbG9yOiBcInRyYW5zcGFyZW50XCJcbikge1xuICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG5cbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiAkc2l6ZTtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICB9XG5cbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6ICRmb3JlZ3JvdW5kLWNvbG9yO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7XG4gIH1cblxuICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gICAgYm9yZGVyLXJhZGl1czogNTBweDtcbiAgfVxuXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxufVxuIl19 */";
11450
13217
  n(css,{});
11451
13218
 
11452
13219
  exports.ManageMember = ManageMember;