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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js CHANGED
@@ -9,7 +9,7 @@ var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
9
9
  var neetoIcons = require('@bigbinary/neeto-icons');
10
10
  var Container = require('@bigbinary/neeto-molecules/Container');
11
11
  var PageLoader = require('@bigbinary/neeto-molecules/PageLoader');
12
- var SubHeader$2 = require('@bigbinary/neeto-molecules/SubHeader');
12
+ var SubHeaderMolecule = require('@bigbinary/neeto-molecules/SubHeader');
13
13
  var neetoui = require('@bigbinary/neetoui');
14
14
  var ramda = require('ramda');
15
15
  var reactQuery = require('react-query');
@@ -19,11 +19,11 @@ var NeetoHeader = require('@bigbinary/neeto-molecules/Header');
19
19
  var formik$1 = require('@bigbinary/neetoui/formik');
20
20
  var formik = require('formik');
21
21
  var yup = require('yup');
22
- var TableWrapper = require('@bigbinary/neeto-molecules/TableWrapper');
22
+ var classnames = require('classnames');
23
23
  var neetoFiltersFrontend = require('@bigbinary/neeto-filters-frontend');
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);
52
+ var SubHeaderMolecule__default = /*#__PURE__*/_interopDefaultLegacy(SubHeaderMolecule);
53
53
  var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
54
54
  var NeetoHeader__default = /*#__PURE__*/_interopDefaultLegacy(NeetoHeader);
55
55
  var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
56
+ var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
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,234 +5681,1633 @@ 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(),
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 MANAGE_MEMBER_PERMISSIONS = ["members.manage_members", "agents.manage_agents"];
7091
+ var DEFAULT_PERMISSION = true;
7092
+ var DEFAULT_PAGE_SIZE = 30;
7093
+ var ADMIN_ROLE_NAME = "Admin";
7094
+ var OWNER_ROLE_NAME = "Owner";
7095
+ var ADMIN_ROLES = [ADMIN_ROLE_NAME, OWNER_ROLE_NAME];
7096
+
7097
+ var queryClient = new reactQuery.QueryClient({
7098
+ queryCache: new reactQuery.QueryCache()
7099
+ });
7100
+
7101
+ var withReactQuery = function withReactQuery(Component) {
7102
+ var QueryWrapper = function QueryWrapper(props) {
7103
+ return /*#__PURE__*/React__default["default"].createElement(reactQuery.QueryClientProvider, {
7104
+ client: queryClient
7105
+ }, /*#__PURE__*/React__default["default"].createElement(Component, props), /*#__PURE__*/React__default["default"].createElement(devtools.ReactQueryDevtools, {
7106
+ initialIsOpen: false,
7107
+ position: "bottom-right"
7108
+ }));
7109
+ };
7110
+ return QueryWrapper;
7111
+ };
7112
+
7113
+ /* eslint-disable @bigbinary/neeto/no-dangling-constants */
7114
+ var BASE_URL = "team_members";
7115
+
7116
+ var fetch$3 = function fetch() {
7117
+ return axios__default["default"].get("".concat(BASE_URL, "/permissions"));
7118
+ };
7119
+ var permissionsApi = {
7120
+ fetch: fetch$3
7121
+ };
7122
+
7123
+ var DEFAULT_STALE_TIME = 300000; // 5 minutes
7124
+
7125
+ var QUERY_KEYS = {
7126
+ PERMISSIONS: "neeto-team-members-permissions",
7127
+ ROLES: "neeto-team-members-roles",
7128
+ GLOBAL_ROLES: "neeto-team-members-global-roles",
7129
+ TEAMS: "neeto-team-members-teams",
7130
+ TEAMS_DEPENDENCIES: "neeto-team-members-teams-dependencies"
7131
+ };
7132
+
7133
+ 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; }
7134
+ 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; }
7135
+ var useFetchPermissions = function useFetchPermissions() {
7136
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7137
+ return reactQuery.useQuery(QUERY_KEYS.PERMISSIONS, permissionsApi.fetch, _objectSpread$c({
7138
+ staleTime: DEFAULT_STALE_TIME,
7139
+ select: function select(response) {
7140
+ return response === null || response === void 0 ? void 0 : response.permissions;
7141
+ }
7142
+ }, options));
7143
+ };
7144
+
7145
+ var fetch$2 = function fetch() {
7146
+ return axios__default["default"].get("".concat(BASE_URL, "/global_roles"));
7147
+ };
7148
+ var globalRolesApi = {
7149
+ fetch: fetch$2
7150
+ };
7151
+
7152
+ var fetch$1 = function fetch() {
7153
+ return axios__default["default"].get("".concat(BASE_URL, "/organization_roles"));
7154
+ };
7155
+ var create$1 = function create(payload) {
7156
+ return axios__default["default"].post("".concat(BASE_URL, "/organization_roles"), payload);
7157
+ };
7158
+ var update$1 = function update(id, payload) {
7159
+ return axios__default["default"].patch("".concat(BASE_URL, "/organization_roles/").concat(id), payload);
7160
+ };
7161
+ var destroy = function destroy(id, payload) {
7162
+ return axios__default["default"]["delete"]("".concat(BASE_URL, "/organization_roles/").concat(id), {
7163
+ data: payload
7164
+ });
7165
+ };
7166
+ var bulkUpdate$1 = function bulkUpdate(payload) {
7167
+ return axios__default["default"].patch("".concat(BASE_URL, "/organization_roles/bulk_update"), payload);
7168
+ };
7169
+ var organizationRolesApi = {
7170
+ bulkUpdate: bulkUpdate$1,
7171
+ create: create$1,
7172
+ destroy: destroy,
7173
+ fetch: fetch$1,
7174
+ update: update$1
7175
+ };
7176
+
7177
+ var _excluded$2 = ["onSuccess"],
7178
+ _excluded2$2 = ["onSuccess"],
7179
+ _excluded3$1 = ["onSuccess"],
7180
+ _excluded4 = ["onSuccess"];
7181
+ 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; }
7182
+ 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; }
7183
+ var useFetchRoles = function useFetchRoles() {
7184
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7185
+ return reactQuery.useQuery(QUERY_KEYS.ROLES, organizationRolesApi.fetch, _objectSpread$b({
7186
+ staleTime: DEFAULT_STALE_TIME,
7187
+ select: function select(response) {
7188
+ return response === null || response === void 0 ? void 0 : response.organizationRoles;
7189
+ }
7190
+ }, options));
7191
+ };
7192
+ var useFetchGlobalRoles = function useFetchGlobalRoles() {
7193
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7194
+ return reactQuery.useQuery(QUERY_KEYS.GLOBAL_ROLES, globalRolesApi.fetch, _objectSpread$b({
7195
+ staleTime: DEFAULT_STALE_TIME
7196
+ }, options));
7197
+ };
7198
+ var useCreateRole = function useCreateRole(_ref) {
7199
+ var _onSuccess = _ref.onSuccess,
7200
+ options = _objectWithoutProperties(_ref, _excluded$2);
7201
+ return reactQuery.useMutation(organizationRolesApi.create, _objectSpread$b({
7202
+ onSuccess: function onSuccess(response) {
7203
+ queryClient.invalidateQueries(QUERY_KEYS.TEAMS_DEPENDENCIES);
7204
+ queryClient.setQueriesData(QUERY_KEYS.ROLES, function (cachedData) {
7205
+ return ramda.modifyPath(["organizationRoles"], ramda.prepend(response.organizationRole), cachedData);
7206
+ });
7207
+ _onSuccess === null || _onSuccess === void 0 ? void 0 : _onSuccess();
7208
+ }
7209
+ }, options));
7210
+ };
7211
+ var useUpdateRole = function useUpdateRole(_ref2) {
7212
+ var _onSuccess2 = _ref2.onSuccess,
7213
+ options = _objectWithoutProperties(_ref2, _excluded2$2);
7214
+ return reactQuery.useMutation(function (_ref3) {
7215
+ var id = _ref3.id,
7216
+ payload = _ref3.payload;
7217
+ return organizationRolesApi.update(id, payload);
7218
+ }, _objectSpread$b({
7219
+ onSuccess: function onSuccess(response) {
7220
+ queryClient.invalidateQueries(QUERY_KEYS.TEAMS);
7221
+ queryClient.invalidateQueries(QUERY_KEYS.TEAMS_DEPENDENCIES);
7222
+ queryClient.setQueriesData(QUERY_KEYS.ROLES, function (cachedData) {
7223
+ return ramda.assocPath(["organizationRoles", ramda.findIndex(ramda.propEq("id", response.organizationRole.id), cachedData.organizationRoles)], response.organizationRole, cachedData);
7224
+ });
7225
+ _onSuccess2 === null || _onSuccess2 === void 0 ? void 0 : _onSuccess2();
7226
+ }
7227
+ }, options));
7228
+ };
7229
+ var useDestroyRole = function useDestroyRole(_ref4) {
7230
+ var _ref4$onSuccess = _ref4.onSuccess,
7231
+ _onSuccess3 = _ref4$onSuccess === void 0 ? pure.noop : _ref4$onSuccess,
7232
+ options = _objectWithoutProperties(_ref4, _excluded3$1);
7233
+ return reactQuery.useMutation(function (_ref5) {
7234
+ var id = _ref5.id,
7235
+ payload = _ref5.payload;
7236
+ return organizationRolesApi.destroy(id, payload);
7237
+ }, _objectSpread$b({
7238
+ onSuccess: function onSuccess(response) {
7239
+ queryClient.invalidateQueries(QUERY_KEYS.TEAMS);
7240
+ queryClient.invalidateQueries(QUERY_KEYS.TEAMS_DEPENDENCIES);
7241
+ queryClient.setQueriesData(QUERY_KEYS.ROLES, function (cachedData) {
7242
+ return ramda.dissocPath(["organizationRoles", ramda.findIndex(ramda.propEq("id", response.id), cachedData.organizationRoles)], cachedData);
7243
+ });
7244
+ _onSuccess3 === null || _onSuccess3 === void 0 ? void 0 : _onSuccess3();
7245
+ }
7246
+ }, options));
7247
+ };
7248
+ var useBulkUpdateRoles = function useBulkUpdateRoles(_ref6) {
7249
+ var _onSuccess4 = _ref6.onSuccess,
7250
+ options = _objectWithoutProperties(_ref6, _excluded4);
7251
+ return reactQuery.useMutation(organizationRolesApi.bulkUpdate, _objectSpread$b({
7252
+ onSuccess: function onSuccess() {
7253
+ queryClient.invalidateQueries(QUERY_KEYS.TEAMS);
7254
+ queryClient.invalidateQueries(QUERY_KEYS.TEAMS_DEPENDENCIES);
7255
+ queryClient.invalidateQueries(QUERY_KEYS.ROLES);
7256
+ _onSuccess4 === null || _onSuccess4 === void 0 ? void 0 : _onSuccess4();
7257
+ }
7258
+ }, options));
7259
+ };
7260
+
7261
+ var renderSearchProps = function renderSearchProps(searchString, setSearchString) {
7262
+ return {
7263
+ "data-cy": "ntm-search-roles-input",
7264
+ onChange: function onChange(_ref) {
7265
+ var value = _ref.target.value;
7266
+ return setSearchString(value);
7267
+ },
7268
+ placeholder: instance.t("common.search_", {
7269
+ what: instance.t("common.role", PLURAL).toLocaleLowerCase()
7270
+ }),
7271
+ value: searchString
7272
+ };
7273
+ };
7274
+ var renderBreadcrumbs = function renderBreadcrumbs(breadcrumbs) {
7275
+ return breadcrumbs !== null && breadcrumbs !== void 0 ? breadcrumbs : [{
7276
+ text: instance.t("metaNames.member", PLURAL),
7277
+ link: "/members"
7278
+ }];
7279
+ };
7280
+
7281
+ var AddRoleButton = function AddRoleButton(_ref) {
7282
+ var _permissions$create, _permissions$create2;
7283
+ var onClick = _ref.onClick,
7284
+ permissions = _ref.permissions;
7285
+ var _useTranslation = useTranslation(),
7286
+ t = _useTranslation.t;
7287
+ return /*#__PURE__*/React__default["default"].createElement(neetoui.Tooltip, {
7288
+ content: t("tooltips.noPermissionToAddRole"),
7289
+ disabled: (_permissions$create = permissions === null || permissions === void 0 ? void 0 : permissions.create) !== null && _permissions$create !== void 0 ? _permissions$create : hasPermission(MANAGE_MEMBER_PERMISSIONS),
7290
+ position: "bottom"
7291
+ }, /*#__PURE__*/React__default["default"].createElement("span", null, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
7292
+ "data-cy": "ntm-add-role-button",
7293
+ disabled: !((_permissions$create2 = permissions === null || permissions === void 0 ? void 0 : permissions.create) !== null && _permissions$create2 !== void 0 ? _permissions$create2 : hasPermission(MANAGE_MEMBER_PERMISSIONS)),
7294
+ label: t("common.addNew_", {
7295
+ what: t("common.role", SINGULAR).toLocaleLowerCase()
7296
+ }),
7297
+ onClick: onClick
7298
+ })));
7299
+ };
7300
+
7301
+ var Header$1 = function Header(_ref) {
7302
+ var _config$permissions$u, _config$permissions, _config$header;
7303
+ var config = _ref.config,
7304
+ handleReset = _ref.handleReset,
7305
+ handleSubmit = _ref.handleSubmit,
7306
+ isDirty = _ref.isDirty,
7307
+ searchString = _ref.searchString,
7308
+ setSearchString = _ref.setSearchString,
7309
+ setIsNewRolePaneOpen = _ref.setIsNewRolePaneOpen;
7310
+ var _useTranslation = useTranslation(),
5912
7311
  t = _useTranslation.t;
5913
7312
  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
7313
  return /*#__PURE__*/React__default["default"].createElement(NeetoHeader__default["default"], {
@@ -5952,7 +7351,7 @@ var Header$1 = function Header(_ref) {
5952
7351
  };
5953
7352
 
5954
7353
  function _arrayWithoutHoles(arr) {
5955
- if (Array.isArray(arr)) return _arrayLikeToArray(arr);
7354
+ if (Array.isArray(arr)) return _arrayLikeToArray$1(arr);
5956
7355
  }
5957
7356
 
5958
7357
  function _nonIterableSpread() {
@@ -5960,7 +7359,7 @@ function _nonIterableSpread() {
5960
7359
  }
5961
7360
 
5962
7361
  function _toConsumableArray(arr) {
5963
- return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
7362
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray$1(arr) || _nonIterableSpread();
5964
7363
  }
5965
7364
 
5966
7365
  var transformObjectToDotNotation = function transformObjectToDotNotation(object) {
@@ -6014,13 +7413,19 @@ var ScrollToErrorField = function ScrollToErrorField(_ref) {
6014
7413
  var ROLE_NAME_MAX_LENGTH = 40;
6015
7414
  var ROLE_DESCRIPTION_MAX_LENGTH = 255;
6016
7415
  var ADD_ROLE_FORM_VALIDATION_SCHEMA = yup.object({
6017
- name: yup.string().trim().max(ROLE_NAME_MAX_LENGTH, instance.t("validations.limitExceeded", {
7416
+ name: yup.string().trim().max(ROLE_NAME_MAX_LENGTH,
7417
+ // @ts-ignore
7418
+ instance.t("validations.limitExceeded", {
6018
7419
  what: instance.t("common.name").toLocaleLowerCase(),
6019
7420
  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", {
7421
+ }))
7422
+ // @ts-ignore
7423
+ .required(instance.t("validations.enterRoleName")),
7424
+ description: yup.string().trim().max(ROLE_DESCRIPTION_MAX_LENGTH,
7425
+ // @ts-ignore
7426
+ instance.t("validations.limitExceeded", {
6022
7427
  what: instance.t("common.description").toLocaleLowerCase(),
6023
- limit: ROLE_NAME_MAX_LENGTH
7428
+ limit: ROLE_DESCRIPTION_MAX_LENGTH
6024
7429
  }))
6025
7430
  });
6026
7431
  var ADD_ROLE_FORM_INITIAL_VALUES = {
@@ -6043,6 +7448,25 @@ var sortPermissionsBySequence = function sortPermissionsBySequence() {
6043
7448
  return first.sequence - second.sequence;
6044
7449
  }) : permissions;
6045
7450
  };
7451
+ var getPermissionGroups = function getPermissionGroups() {
7452
+ var permissions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
7453
+ var sortBySequence = sortPermissionsBySequence(permissions);
7454
+ var groupedPermissions = new Map();
7455
+ sortBySequence.forEach(function (permission) {
7456
+ if (groupedPermissions.has(permission === null || permission === void 0 ? void 0 : permission.category)) {
7457
+ var category = groupedPermissions.get(permission.category);
7458
+ var currentPermissions = category.get("permissions");
7459
+ var _permissions = ramda.append(permission, currentPermissions);
7460
+ category.set("permissions", _permissions);
7461
+ } else {
7462
+ var value = new Map();
7463
+ value.set("permissions", ramda.append(permission, []));
7464
+ value.set("isPermissionVisible", true);
7465
+ groupedPermissions.set(permission === null || permission === void 0 ? void 0 : permission.category, value);
7466
+ }
7467
+ });
7468
+ return groupedPermissions;
7469
+ };
6046
7470
  var getModifiedPermissions = function getModifiedPermissions() {
6047
7471
  var roles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
6048
7472
  var modifiedRoles = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
@@ -6321,61 +7745,212 @@ var ManageRoles = function ManageRoles(_ref) {
6321
7745
  }));
6322
7746
  };
6323
7747
 
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
- })));
7748
+ var DEFAULT_MANAGE_ROLE_VALUES = {
7749
+ isDelete: false,
7750
+ isEdit: false,
7751
+ selectedRole: {}
7752
+ };
7753
+
7754
+ 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; } } }; }
7755
+ 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); }
7756
+ 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; }
7757
+ neetoui.Dropdown.Menu;
7758
+ neetoui.Dropdown.MenuItem;
7759
+ var deepClone = function deepClone(object) {
7760
+ if (!object || true === object) {
7761
+ //this also handles boolean as true and false
7762
+ return object;
7763
+ }
7764
+ var objectType = _typeof$1(object);
7765
+ if ("number" === objectType || "string" === objectType) {
7766
+ // add your immutables here
7767
+ return object;
7768
+ }
7769
+ var result = null;
7770
+ if (Array.isArray(object)) {
7771
+ result = [];
7772
+ } else if (!object.constructor) {
7773
+ result = {};
7774
+ } else {
7775
+ result = new object.constructor();
7776
+ }
7777
+ if (object instanceof Map) {
7778
+ var _iterator = _createForOfIteratorHelper(object.keys()),
7779
+ _step;
7780
+ try {
7781
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
7782
+ var key = _step.value;
7783
+ result.set(key, deepClone(object.get(key)));
7784
+ }
7785
+ } catch (err) {
7786
+ _iterator.e(err);
7787
+ } finally {
7788
+ _iterator.f();
7789
+ }
7790
+ }
7791
+ Object.keys(object).forEach(function (key) {
7792
+ if (Object.prototype.hasOwnProperty.call(object, key)) {
7793
+ result[key] = deepClone(object[key]);
7794
+ }
7795
+ });
7796
+ return result;
6337
7797
  };
6338
- var SubHeader$1 = {
6339
- Left: Left$1
7798
+ var renderRolesTooltipContent = function renderRolesTooltipContent(roleName) {
7799
+ return Object.is(roleName, "Admin") ? t$2("tooltips.adminMustHaveAccess") : t$2("tooltips.noPermissionToEditRoles");
7800
+ };
7801
+ var removeDuplicates = function removeDuplicates(array) {
7802
+ return _toConsumableArray(new Set(array));
7803
+ };
7804
+ var updatePermissionVisibility = function updatePermissionVisibility(categoryName, permissions) {
7805
+ var category = permissions.get(categoryName);
7806
+ var isPermissionVisible = category.get("isPermissionVisible");
7807
+ category.set("isPermissionVisible", !isPermissionVisible);
7808
+ return new Map(permissions.set(categoryName, category));
7809
+ };
7810
+ var filterPermissionsBySearch = function filterPermissionsBySearch(searchTerm, permissionGroups) {
7811
+ var newValue = deepClone(permissionGroups);
7812
+ newValue.forEach(function (value) {
7813
+ var permissions = value.get("permissions");
7814
+ var filteredPermissions = permissions.filter(function (permission) {
7815
+ var _permission$descripti, _permission$descripti2, _permission$descripti3;
7816
+ 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());
7817
+ });
7818
+ value.set("permissions", filteredPermissions);
7819
+ });
7820
+ return newValue;
7821
+ };
7822
+
7823
+ var Row = function Row(_ref) {
7824
+ var _ref$allPermissionsOf = _ref.allPermissionsOfCategory,
7825
+ allPermissionsOfCategory = _ref$allPermissionsOf === void 0 ? null : _ref$allPermissionsOf,
7826
+ config = _ref.config,
7827
+ _ref$permission = _ref.permission,
7828
+ permission = _ref$permission === void 0 ? null : _ref$permission,
7829
+ roles = _ref.roles,
7830
+ setModifiedRoles = _ref.setModifiedRoles;
7831
+ var permissions = (allPermissionsOfCategory === null || allPermissionsOfCategory === void 0 ? void 0 : allPermissionsOfCategory.get("permissions")) || [];
7832
+ var allPermissionIdsOfCategory = ramda.map(ramda.prop("id"), permissions);
7833
+ var handleSubmit = function handleSubmit(role, checked) {
7834
+ var permissionIds = pure.isNotEmpty(allPermissionIdsOfCategory) ? allPermissionIdsOfCategory : [permission === null || permission === void 0 ? void 0 : permission.id];
7835
+ var modifiedRole = ramda.modify("permissionIds", function () {
7836
+ return checked ? removeDuplicates([].concat(_toConsumableArray(role.permissionIds), _toConsumableArray(permissionIds))) : role.permissionIds.filter(function (id) {
7837
+ return !permissionIds.includes(id);
7838
+ });
7839
+ }, role);
7840
+ setModifiedRoles(pure.replaceById(role.id, modifiedRole));
7841
+ };
7842
+ var isCheckboxChecked = function isCheckboxChecked(role) {
7843
+ return !allPermissionsOfCategory ? ramda.includes(permission === null || permission === void 0 ? void 0 : permission.id, role.permissionIds) : allPermissionIdsOfCategory.every(ramda.includes(ramda.__, role.permissionIds));
7844
+ };
7845
+ return /*#__PURE__*/React__default["default"].createElement("div", {
7846
+ className: classnames__default["default"]("ntm-roles-table__row", {
7847
+ "ntm-roles-table__row--highlighted": !!allPermissionsOfCategory
7848
+ })
7849
+ }, roles.map(function (role) {
7850
+ var _config$permissions$u, _config$permissions;
7851
+ return /*#__PURE__*/React__default["default"].createElement("div", {
7852
+ className: "ntm-roles-table__cell",
7853
+ key: role.id
7854
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Tooltip, {
7855
+ content: renderRolesTooltipContent(role.name),
7856
+ position: "top",
7857
+ disabled: ((_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) && !ramda.identical(role.name, "Admin")
7858
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
7859
+ className: "ntm-roles-table-cell__checkbox-wrapper"
7860
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Checkbox, {
7861
+ disabled: true,
7862
+ checked: isCheckboxChecked(role),
7863
+ className: "ntm-roles-table-cell__checkbox",
7864
+ "data-cy": "ntm-roles-table-permission-checkbox",
7865
+ onChange: function onChange(_ref2) {
7866
+ var checked = _ref2.target.checked;
7867
+ return handleSubmit(role, checked);
7868
+ }
7869
+ }))));
7870
+ }));
6340
7871
  };
6341
7872
 
6342
7873
  var Menu$4 = neetoui.Dropdown.Menu,
6343
7874
  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
- }];
7875
+ var TableHeader = function TableHeader(_ref) {
7876
+ var config = _ref.config,
7877
+ roles = _ref.roles,
7878
+ setManageRole = _ref.setManageRole,
7879
+ setIsScrollPresent = _ref.setIsScrollPresent;
7880
+ var _useTranslation = useTranslation(),
7881
+ t = _useTranslation.t;
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 _config$permissions$u, _config$permissions, _config$permissions$u2, _config$permissions2, _config$permissions$d, _config$permissions3, _config$permissions$d2, _config$permissions4;
7900
+ var isSystemRole = ramda.identical("system", role.kind);
7901
+ var isAdminRole = ADMIN_ROLES.includes(role.name) && isSystemRole;
7902
+ return /*#__PURE__*/React__default["default"].createElement("div", {
7903
+ className: "ntm-roles-table__cell",
7904
+ key: "ntm-roles-".concat(index)
7905
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
7906
+ className: "ntm-roles-table-header-cell__container"
7907
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
7908
+ className: "ntm-roles-table-header__role-name",
7909
+ "data-cy": "ntm-roles-table-header-role-title",
7910
+ lineHeight: "normal",
7911
+ style: "h4",
7912
+ weight: "semibold"
7913
+ }, role.name), !isAdminRole && /*#__PURE__*/React__default["default"].createElement(neetoui.Dropdown, {
7914
+ autoWidth: true,
7915
+ buttonStyle: "text",
7916
+ icon: neetoIcons.MenuHorizontal,
7917
+ buttonProps: {
7918
+ className: "ntm-roles-table-header__dropdown",
7919
+ "data-cy": "ntm-roles-table-header-role-dropdown-button"
7920
+ }
7921
+ }, /*#__PURE__*/React__default["default"].createElement(Menu$4, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Tooltip, {
7922
+ content: t("tooltips.noPermissionToEditRoles"),
7923
+ position: "left",
7924
+ disabled: (_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
7925
+ }, /*#__PURE__*/React__default["default"].createElement("span", null, /*#__PURE__*/React__default["default"].createElement(MenuItem$3.Button, {
7926
+ className: "ntm-dropdown__button",
7927
+ "data-cy": "ntm-roles-table-edit-role-button",
7928
+ size: "small",
7929
+ style: "text",
7930
+ disabled: !((_config$permissions$u2 = config === null || config === void 0 ? void 0 : (_config$permissions2 = config.permissions) === null || _config$permissions2 === void 0 ? void 0 : _config$permissions2.update) !== null && _config$permissions$u2 !== void 0 ? _config$permissions$u2 : DEFAULT_PERMISSION),
7931
+ onClick: function onClick() {
7932
+ return setManageRole({
7933
+ isEdit: true,
7934
+ selectedRole: role
7935
+ });
7936
+ }
7937
+ }, t("common.edit")))), !isSystemRole && /*#__PURE__*/React__default["default"].createElement(neetoui.Tooltip, {
7938
+ content: t("tooltips.noPermissionToRemoveRoles"),
7939
+ position: "left",
7940
+ disabled: (_config$permissions$d = config === null || config === void 0 ? void 0 : (_config$permissions3 = config.permissions) === null || _config$permissions3 === void 0 ? void 0 : _config$permissions3["delete"]) !== null && _config$permissions$d !== void 0 ? _config$permissions$d : DEFAULT_PERMISSION
7941
+ }, /*#__PURE__*/React__default["default"].createElement("span", null, /*#__PURE__*/React__default["default"].createElement(MenuItem$3.Button, {
7942
+ className: "ntm-dropdown__button",
7943
+ "data-cy": "ntm-roles-table-delete-role-button",
7944
+ size: "small",
7945
+ disabled: !((_config$permissions$d2 = config === null || config === void 0 ? void 0 : (_config$permissions4 = config.permissions) === null || _config$permissions4 === void 0 ? void 0 : _config$permissions4["delete"]) !== null && _config$permissions$d2 !== void 0 ? _config$permissions$d2 : DEFAULT_PERMISSION),
7946
+ onClick: function onClick() {
7947
+ return setManageRole({
7948
+ isDelete: true,
7949
+ selectedRole: role
7950
+ });
7951
+ }
7952
+ }, t("common.delete"))))))));
7953
+ })));
6379
7954
  };
6380
7955
 
6381
7956
  var Delete = function Delete(_ref) {
@@ -6423,38 +7998,233 @@ var Delete = function Delete(_ref) {
6423
7998
  });
6424
7999
  };
6425
8000
 
8001
+ var Columns = function Columns(_ref) {
8002
+ var config = _ref.config,
8003
+ filteredGroupPermissions = _ref.filteredGroupPermissions,
8004
+ filteredRoles = _ref.filteredRoles,
8005
+ permissions = _ref.permissions,
8006
+ roles = _ref.roles,
8007
+ setModifiedRoles = _ref.setModifiedRoles,
8008
+ setIsScrollPresent = _ref.setIsScrollPresent;
8009
+ var _useState = React.useState(DEFAULT_MANAGE_ROLE_VALUES),
8010
+ _useState2 = _slicedToArray(_useState, 2),
8011
+ manageRole = _useState2[0],
8012
+ setManageRole = _useState2[1];
8013
+ var categories = Array.from(filteredGroupPermissions === null || filteredGroupPermissions === void 0 ? void 0 : filteredGroupPermissions.keys());
8014
+ var onClose = function onClose() {
8015
+ return setManageRole(DEFAULT_MANAGE_ROLE_VALUES);
8016
+ };
8017
+ return /*#__PURE__*/React__default["default"].createElement("div", {
8018
+ className: "ntm-roles-table__columns"
8019
+ }, /*#__PURE__*/React__default["default"].createElement(TableHeader, {
8020
+ config: config,
8021
+ roles: filteredRoles,
8022
+ setIsScrollPresent: setIsScrollPresent,
8023
+ setManageRole: setManageRole
8024
+ }), /*#__PURE__*/React__default["default"].createElement(distExports.ScrollSyncPane, {
8025
+ group: ["horizontal", "vertical"]
8026
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
8027
+ className: "ntm-roles-table__rows"
8028
+ }, categories.map(function (category, index) {
8029
+ var groupedPermissions = filteredGroupPermissions.get(category);
8030
+ var isPermissionVisible = groupedPermissions.get("isPermissionVisible");
8031
+ var permissions = groupedPermissions.get("permissions");
8032
+ return /*#__PURE__*/React__default["default"].createElement("div", {
8033
+ key: index
8034
+ }, /*#__PURE__*/React__default["default"].createElement(Row, {
8035
+ allPermissionsOfCategory: groupedPermissions,
8036
+ config: config,
8037
+ roles: filteredRoles,
8038
+ setModifiedRoles: setModifiedRoles
8039
+ }), isPermissionVisible && permissions.map(function (permission) {
8040
+ return /*#__PURE__*/React__default["default"].createElement(Row, {
8041
+ config: config,
8042
+ key: permission.id,
8043
+ permission: permission,
8044
+ roles: filteredRoles,
8045
+ setModifiedRoles: setModifiedRoles
8046
+ });
8047
+ }));
8048
+ }))), /*#__PURE__*/React__default["default"].createElement(ManageRoles, {
8049
+ config: config,
8050
+ isOpen: manageRole.isEdit,
8051
+ permissions: permissions,
8052
+ selectedRole: manageRole.selectedRole,
8053
+ onClose: onClose
8054
+ }), /*#__PURE__*/React__default["default"].createElement(Delete, {
8055
+ isOpen: manageRole.isDelete,
8056
+ roles: roles,
8057
+ selectedRole: manageRole.selectedRole,
8058
+ onClose: onClose
8059
+ }));
8060
+ };
8061
+
8062
+ var ToggleDropdown = function ToggleDropdown(_ref) {
8063
+ var isVisible = _ref.isVisible,
8064
+ onClick = _ref.onClick;
8065
+ return isVisible ? /*#__PURE__*/React__default["default"].createElement(neetoIcons.Up, {
8066
+ className: "ntm-roles-table-sidebar__drop-down-button",
8067
+ "data-cy": "ntm-permission-category-hide-button",
8068
+ size: 16,
8069
+ strokeWidth: 2,
8070
+ onClick: onClick
8071
+ }) : /*#__PURE__*/React__default["default"].createElement(neetoIcons.Down, {
8072
+ className: "ntm-roles-table-sidebar__drop-down-button",
8073
+ "data-cy": "ntm-permission-category-show-button",
8074
+ size: 16,
8075
+ strokeWidth: 2,
8076
+ onClick: onClick
8077
+ });
8078
+ };
8079
+
8080
+ var ROLES_TABLE_CELL_HEIGHT_VARIABLE = "--ntm-roles-table-cell-height";
8081
+
8082
+ var getCurrentTableCellHeight = function getCurrentTableCellHeight() {
8083
+ return parseInt(getComputedStyle(document.documentElement).getPropertyValue(ROLES_TABLE_CELL_HEIGHT_VARIABLE), 10);
8084
+ };
8085
+ var renderDescription = function renderDescription(permissions) {
8086
+ return permissions === null || permissions === void 0 ? void 0 : permissions.map(function (_ref) {
8087
+ var id = _ref.id,
8088
+ description = _ref.description;
8089
+ return /*#__PURE__*/React__default["default"].createElement("div", {
8090
+ className: "ntm-roles-table-sidebar__list-item",
8091
+ key: id
8092
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
8093
+ "data-cy": "ntm-permission-category-description",
8094
+ lineHeight: "normal",
8095
+ style: "body2"
8096
+ }, description));
8097
+ });
8098
+ };
8099
+ var getSearchWrapperStyle = function getSearchWrapperStyle() {
8100
+ var scrollBarWidth = getScrollBarWidth();
8101
+ document.documentElement.style.setProperty("--ntm-roles-table-default-scroll", "".concat(scrollBarWidth, "px"));
8102
+ return {
8103
+ marginBottom: "".concat(scrollBarWidth, "px")
8104
+ };
8105
+ };
8106
+ var assignRolesTableCellHeight = function assignRolesTableCellHeight() {
8107
+ var sidebarItems = _toConsumableArray(document.getElementsByClassName("ntm-roles-table-sidebar__list-item"));
8108
+ var clientHeights = ramda.pluck("clientHeight", sidebarItems);
8109
+ var maxClientHeight = Math.max.apply(Math, _toConsumableArray(clientHeights));
8110
+ var currentTableCellHeight = getCurrentTableCellHeight();
8111
+ if (maxClientHeight > currentTableCellHeight) {
8112
+ document.documentElement.style.setProperty(ROLES_TABLE_CELL_HEIGHT_VARIABLE, "".concat(maxClientHeight, "px"));
8113
+ }
8114
+ };
8115
+
8116
+ var Sidebar = function Sidebar(_ref) {
8117
+ var searchTerm = _ref.searchTerm,
8118
+ setSearchTerm = _ref.setSearchTerm,
8119
+ filteredGroupPermissions = _ref.filteredGroupPermissions,
8120
+ toggleDropdown = _ref.toggleDropdown,
8121
+ isScrollPresent = _ref.isScrollPresent;
8122
+ var _useTranslation = useTranslation(),
8123
+ t = _useTranslation.t;
8124
+ var categories = Array.from(filteredGroupPermissions.keys());
8125
+ var searchWrapperStyle = isScrollPresent ? getSearchWrapperStyle() : {};
8126
+ React.useLayoutEffect(function () {
8127
+ assignRolesTableCellHeight();
8128
+ }, []);
8129
+ return /*#__PURE__*/React__default["default"].createElement("div", {
8130
+ className: "ntm-roles-table__sidebar"
8131
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
8132
+ className: "ntm-roles-table-sidebar__search",
8133
+ style: searchWrapperStyle
8134
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Input, {
8135
+ "data-cy": "ntm-search-permissions-input",
8136
+ prefix: /*#__PURE__*/React__default["default"].createElement(neetoIcons.Search, null),
8137
+ type: "search",
8138
+ value: searchTerm,
8139
+ placeholder: t("common.search_", {
8140
+ what: t("common.permission", PLURAL).toLocaleLowerCase()
8141
+ }),
8142
+ onChange: function onChange(_ref2) {
8143
+ var value = _ref2.target.value;
8144
+ return setSearchTerm(value);
8145
+ }
8146
+ })), /*#__PURE__*/React__default["default"].createElement(distExports.ScrollSyncPane, {
8147
+ group: "vertical"
8148
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
8149
+ className: "ntm-roles-table-sidebar__list"
8150
+ }, categories.map(function (category, index) {
8151
+ var groupedPermissions = filteredGroupPermissions.get(category);
8152
+ var isPermissionVisible = groupedPermissions.get("isPermissionVisible");
8153
+ var permissions = groupedPermissions.get("permissions");
8154
+ return /*#__PURE__*/React__default["default"].createElement("div", {
8155
+ key: index
8156
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
8157
+ className: "ntm-roles-table-sidebar__list-item ntm-roles-table-sidebar__list-item--highlighted cursor-pointer",
8158
+ onClick: function onClick() {
8159
+ return toggleDropdown(category);
8160
+ }
8161
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
8162
+ "data-cy": "ntm-permission-category-title",
8163
+ lineHeight: "normal",
8164
+ style: "h4",
8165
+ weight: "semibold"
8166
+ }, category), /*#__PURE__*/React__default["default"].createElement(ToggleDropdown, {
8167
+ isVisible: isPermissionVisible,
8168
+ onClick: function onClick() {
8169
+ return toggleDropdown(category);
8170
+ }
8171
+ })), isPermissionVisible && renderDescription(permissions));
8172
+ }))));
8173
+ };
8174
+
6426
8175
  var Table = function Table(_ref) {
6427
8176
  var _config$permissions$c, _config$permissions;
6428
8177
  var config = _ref.config,
6429
8178
  filteredRoles = _ref.filteredRoles,
6430
8179
  roles = _ref.roles,
8180
+ permissionGroups = _ref.permissionGroups,
6431
8181
  permissions = _ref.permissions,
8182
+ setModifiedRoles = _ref.setModifiedRoles,
6432
8183
  setIsNewRolePaneOpen = _ref.setIsNewRolePaneOpen;
6433
8184
  var _useTranslation = useTranslation(),
6434
8185
  t = _useTranslation.t;
6435
- var _useState = React.useState(),
8186
+ var _useState = React.useState(""),
6436
8187
  _useState2 = _slicedToArray(_useState, 2),
6437
- selectedRole = _useState2[0],
6438
- setSelectedRole = _useState2[1];
6439
- var _useState3 = React.useState(false),
8188
+ searchTerm = _useState2[0],
8189
+ setSearchTerm = _useState2[1];
8190
+ var _useState3 = React.useState(permissionGroups),
6440
8191
  _useState4 = _slicedToArray(_useState3, 2),
6441
- isDeleteAlertOpen = _useState4[0],
6442
- setIsDeleteAlertOpen = _useState4[1];
8192
+ filteredGroupPermissions = _useState4[0],
8193
+ setFilteredGroupPermissions = _useState4[1];
6443
8194
  var _useState5 = React.useState(false),
6444
8195
  _useState6 = _slicedToArray(_useState5, 2),
6445
- isEditPaneOpen = _useState6[0],
6446
- setIsEditPaneOpen = _useState6[1];
6447
- var _useState7 = React.useState(1),
8196
+ isScrollPresent = _useState6[0],
8197
+ setIsScrollPresent = _useState6[1];
8198
+ var _useState7 = React.useState(),
6448
8199
  _useState8 = _slicedToArray(_useState7, 2),
6449
- pageNumber = _useState8[0],
6450
- setPageNumber = _useState8[1];
6451
- var handlePageChange = function handlePageChange(pageNumber) {
6452
- return setPageNumber(pageNumber);
6453
- };
8200
+ selectedRole = _useState8[0],
8201
+ setSelectedRole = _useState8[1];
8202
+ var _useState9 = React.useState(false),
8203
+ _useState10 = _slicedToArray(_useState9, 2),
8204
+ isDeleteAlertOpen = _useState10[0],
8205
+ setIsDeleteAlertOpen = _useState10[1];
8206
+ var _useState11 = React.useState(false),
8207
+ _useState12 = _slicedToArray(_useState11, 2),
8208
+ isEditPaneOpen = _useState12[0],
8209
+ setIsEditPaneOpen = _useState12[1];
6454
8210
  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", {
8211
+ var toggleDropdown = function toggleDropdown(category) {
8212
+ var permissions = updatePermissionVisibility(category, filteredGroupPermissions);
8213
+ setFilteredGroupPermissions(permissions);
8214
+ };
8215
+ React.useEffect(function () {
8216
+ var newValue = filterPermissionsBySearch(searchTerm, permissionGroups);
8217
+ setFilteredGroupPermissions(newValue);
8218
+ }, [permissionGroups, searchTerm]);
8219
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
8220
+ className: "ntm-roles-table__wrapper"
8221
+ }, /*#__PURE__*/React__default["default"].createElement(Sidebar, {
8222
+ filteredGroupPermissions: filteredGroupPermissions,
8223
+ isScrollPresent: isScrollPresent,
8224
+ searchTerm: searchTerm,
8225
+ setSearchTerm: setSearchTerm,
8226
+ toggleDropdown: toggleDropdown
8227
+ }), ramda.isEmpty(filteredRoles) ? /*#__PURE__*/React__default["default"].createElement("div", {
6458
8228
  className: "ntm-empty-state"
6459
8229
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.NoData, {
6460
8230
  primaryButtonProps: {
@@ -6470,23 +8240,15 @@ var Table = function Table(_ref) {
6470
8240
  title: t("common.notFound_", {
6471
8241
  what: t("common.role", PLURAL).toLocaleLowerCase()
6472
8242
  })
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, {
8243
+ })) : /*#__PURE__*/React__default["default"].createElement(Columns, {
8244
+ config: config,
8245
+ filteredGroupPermissions: filteredGroupPermissions,
8246
+ filteredRoles: filteredRoles,
8247
+ permissions: permissions,
8248
+ roles: roles,
8249
+ setIsScrollPresent: setIsScrollPresent,
8250
+ setModifiedRoles: setModifiedRoles
8251
+ })), /*#__PURE__*/React__default["default"].createElement(ManageRoles, {
6490
8252
  config: config,
6491
8253
  isOpen: isEditPaneOpen,
6492
8254
  permissions: permissions,
@@ -6509,8 +8271,8 @@ var Table = function Table(_ref) {
6509
8271
  var Roles = function Roles(_ref) {
6510
8272
  var _config$permissions$v, _config$permissions, _config$permissions$v2, _config$permissions2, _config$permissions$u, _config$permissions3;
6511
8273
  var config = _ref.config;
6512
- var _useTranslation = useTranslation(),
6513
- t = _useTranslation.t;
8274
+ var _useTranslation = useTranslation();
8275
+ _useTranslation.t;
6514
8276
  var _useState = React.useState(""),
6515
8277
  _useState2 = _slicedToArray(_useState, 2),
6516
8278
  searchString = _useState2[0],
@@ -6546,6 +8308,7 @@ var Roles = function Roles(_ref) {
6546
8308
  setModifiedRoles = _useState8[1];
6547
8309
  var isDirty = pure.isPresent(getModifiedPermissions(roles, modifiedRoles));
6548
8310
  var permissions = sortPermissionsBySequence(permissionData);
8311
+ var permissionGroups = getPermissionGroups(permissions);
6549
8312
  React.useEffect(function () {
6550
8313
  setFilteredRoles(ramda.filter(function (_ref2) {
6551
8314
  var name = _ref2.name;
@@ -6568,7 +8331,9 @@ var Roles = function Roles(_ref) {
6568
8331
  className: "ntm-members-page-loader"
6569
8332
  }, /*#__PURE__*/React__default["default"].createElement(PageLoader__default["default"], null));
6570
8333
  }
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, {
8334
+ 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"], {
8335
+ isHeaderFixed: true
8336
+ }, /*#__PURE__*/React__default["default"].createElement(Header$1, {
6572
8337
  config: config,
6573
8338
  handleReset: handleReset,
6574
8339
  handleSubmit: handleSubmit,
@@ -6576,26 +8341,14 @@ var Roles = function Roles(_ref) {
6576
8341
  searchString: searchString,
6577
8342
  setIsNewRolePaneOpen: setIsNewRolePaneOpen,
6578
8343
  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
8344
  }), /*#__PURE__*/React__default["default"].createElement(Table, {
6584
8345
  config: config,
6585
8346
  filteredRoles: filteredRoles,
6586
8347
  permissions: permissions,
6587
8348
  roles: roles,
8349
+ permissionGroups: permissionGroups,
6588
8350
  setIsNewRolePaneOpen: setIsNewRolePaneOpen,
6589
8351
  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
8352
  }))), /*#__PURE__*/React__default["default"].createElement(ManageRoles, {
6600
8353
  config: config,
6601
8354
  isOpen: isNewRolePaneOpen,
@@ -6675,6 +8428,16 @@ var hasSymbols$1 = function hasNativeSymbols() {
6675
8428
  return hasSymbolSham();
6676
8429
  };
6677
8430
 
8431
+ var test = {
8432
+ foo: {}
8433
+ };
8434
+
8435
+ var $Object = Object;
8436
+
8437
+ var hasProto$1 = function hasProto() {
8438
+ return { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);
8439
+ };
8440
+
6678
8441
  /* eslint no-invalid-this: 1 */
6679
8442
 
6680
8443
  var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';
@@ -6777,18 +8540,23 @@ var ThrowTypeError = $gOPD
6777
8540
  : throwTypeError;
6778
8541
 
6779
8542
  var hasSymbols = hasSymbols$1();
8543
+ var hasProto = hasProto$1();
6780
8544
 
6781
- var getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto
8545
+ var getProto = Object.getPrototypeOf || (
8546
+ hasProto
8547
+ ? function (x) { return x.__proto__; } // eslint-disable-line no-proto
8548
+ : null
8549
+ );
6782
8550
 
6783
8551
  var needsEval = {};
6784
8552
 
6785
- var TypedArray = typeof Uint8Array === 'undefined' ? undefined$1 : getProto(Uint8Array);
8553
+ var TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined$1 : getProto(Uint8Array);
6786
8554
 
6787
8555
  var INTRINSICS = {
6788
8556
  '%AggregateError%': typeof AggregateError === 'undefined' ? undefined$1 : AggregateError,
6789
8557
  '%Array%': Array,
6790
8558
  '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined$1 : ArrayBuffer,
6791
- '%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined$1,
8559
+ '%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined$1,
6792
8560
  '%AsyncFromSyncIteratorPrototype%': undefined$1,
6793
8561
  '%AsyncFunction%': needsEval,
6794
8562
  '%AsyncGenerator%': needsEval,
@@ -6818,10 +8586,10 @@ var INTRINSICS = {
6818
8586
  '%Int32Array%': typeof Int32Array === 'undefined' ? undefined$1 : Int32Array,
6819
8587
  '%isFinite%': isFinite,
6820
8588
  '%isNaN%': isNaN,
6821
- '%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined$1,
8589
+ '%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined$1,
6822
8590
  '%JSON%': typeof JSON === 'object' ? JSON : undefined$1,
6823
8591
  '%Map%': typeof Map === 'undefined' ? undefined$1 : Map,
6824
- '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined$1 : getProto(new Map()[Symbol.iterator]()),
8592
+ '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined$1 : getProto(new Map()[Symbol.iterator]()),
6825
8593
  '%Math%': Math,
6826
8594
  '%Number%': Number,
6827
8595
  '%Object%': Object,
@@ -6834,10 +8602,10 @@ var INTRINSICS = {
6834
8602
  '%Reflect%': typeof Reflect === 'undefined' ? undefined$1 : Reflect,
6835
8603
  '%RegExp%': RegExp,
6836
8604
  '%Set%': typeof Set === 'undefined' ? undefined$1 : Set,
6837
- '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined$1 : getProto(new Set()[Symbol.iterator]()),
8605
+ '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined$1 : getProto(new Set()[Symbol.iterator]()),
6838
8606
  '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined$1 : SharedArrayBuffer,
6839
8607
  '%String%': String,
6840
- '%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined$1,
8608
+ '%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined$1,
6841
8609
  '%Symbol%': hasSymbols ? Symbol : undefined$1,
6842
8610
  '%SyntaxError%': $SyntaxError,
6843
8611
  '%ThrowTypeError%': ThrowTypeError,
@@ -6853,12 +8621,14 @@ var INTRINSICS = {
6853
8621
  '%WeakSet%': typeof WeakSet === 'undefined' ? undefined$1 : WeakSet
6854
8622
  };
6855
8623
 
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;
8624
+ if (getProto) {
8625
+ try {
8626
+ null.error; // eslint-disable-line no-unused-expressions
8627
+ } catch (e) {
8628
+ // https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229
8629
+ var errorProto = getProto(getProto(e));
8630
+ INTRINSICS['%Error.prototype%'] = errorProto;
8631
+ }
6862
8632
  }
6863
8633
 
6864
8634
  var doEval = function doEval(name) {
@@ -6876,7 +8646,7 @@ var doEval = function doEval(name) {
6876
8646
  }
6877
8647
  } else if (name === '%AsyncIteratorPrototype%') {
6878
8648
  var gen = doEval('%AsyncGenerator%');
6879
- if (gen) {
8649
+ if (gen && getProto) {
6880
8650
  value = getProto(gen.prototype);
6881
8651
  }
6882
8652
  }
@@ -8429,7 +10199,8 @@ var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('&#10003;')
8429
10199
  var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')
8430
10200
 
8431
10201
  var parseValues = function parseQueryStringValues(str, options) {
8432
- var obj = {};
10202
+ var obj = { __proto__: null };
10203
+
8433
10204
  var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str;
8434
10205
  var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;
8435
10206
  var parts = cleanStr.split(options.delimiter, limit);
@@ -10487,7 +12258,7 @@ var Right = function Right(_ref2) {
10487
12258
  isFiltersPaneOpen = _ref2.isFiltersPaneOpen;
10488
12259
  var _useTranslation2 = useTranslation(),
10489
12260
  t = _useTranslation2.t;
10490
- return /*#__PURE__*/React__default["default"].createElement(SubHeader__default["default"].RightBlock, {
12261
+ return /*#__PURE__*/React__default["default"].createElement(SubHeaderMolecule__default["default"].RightBlock, {
10491
12262
  columnsButtonProps: {
10492
12263
  columnData: columns,
10493
12264
  fixedColumns: FIXED_COLUMNS,
@@ -11359,7 +13130,7 @@ var TeamMembers = function TeamMembers(_ref) {
11359
13130
  });
11360
13131
  },
11361
13132
  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"], {
13133
+ }, 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
13134
  leftActionBlock: /*#__PURE__*/React__default["default"].createElement(SubHeader.Left, {
11364
13135
  config: config,
11365
13136
  filteredCount: team === null || team === void 0 ? void 0 : team.membersCount,
@@ -11446,7 +13217,7 @@ var index = reactUtils.withTitle(withReactQuery(TeamMembers), instance.t("metaNa
11446
13217
 
11447
13218
  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
13219
 
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= */";
13220
+ 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
13221
  n(css,{});
11451
13222
 
11452
13223
  exports.ManageMember = ManageMember;