node_modules ignore

This commit is contained in:
2025-05-08 23:43:47 +02:00
parent e19d52f172
commit 4574544c9f
65041 changed files with 10593536 additions and 0 deletions

View File

@@ -0,0 +1,115 @@
'use strict';
var jsxRuntime = require('react/jsx-runtime');
var React = require('react');
var designSystem = require('@strapi/design-system');
var PropTypes = require('prop-types');
var reactIntl = require('react-intl');
var index = require('../../contexts/UsersPermissionsContext/index.js');
var getTrad = require('../../utils/getTrad.js');
var index$1 = require('../Permissions/index.js');
var index$2 = require('../Policies/index.js');
var init = require('./init.js');
var reducer = require('./reducer.js');
const UsersPermissions = /*#__PURE__*/ React.forwardRef(({ permissions, routes }, ref)=>{
const { formatMessage } = reactIntl.useIntl();
const [state, dispatch] = React.useReducer(reducer.default, reducer.initialState, (state)=>init(state, permissions, routes));
React.useImperativeHandle(ref, ()=>({
getPermissions () {
return {
permissions: state.modifiedData
};
},
resetForm () {
dispatch({
type: 'ON_RESET'
});
},
setFormAfterSubmit () {
dispatch({
type: 'ON_SUBMIT_SUCCEEDED'
});
}
}));
const handleChange = ({ target: { name, value } })=>dispatch({
type: 'ON_CHANGE',
keys: name.split('.'),
value: value === 'empty__string_value' ? '' : value
});
const handleChangeSelectAll = ({ target: { name, value } })=>dispatch({
type: 'ON_CHANGE_SELECT_ALL',
keys: name.split('.'),
value
});
const handleSelectedAction = (actionToSelect)=>dispatch({
type: 'SELECT_ACTION',
actionToSelect
});
const providerValue = {
...state,
onChange: handleChange,
onChangeSelectAll: handleChangeSelectAll,
onSelectedAction: handleSelectedAction
};
return /*#__PURE__*/ jsxRuntime.jsx(index.UsersPermissionsProvider, {
value: providerValue,
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Grid.Root, {
gap: 0,
shadow: "filterShadow",
hasRadius: true,
background: "neutral0",
children: [
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
col: 7,
paddingTop: 6,
paddingBottom: 6,
paddingLeft: 7,
paddingRight: 7,
direction: "column",
alignItems: "stretch",
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
direction: "column",
alignItems: "stretch",
gap: 6,
children: [
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
direction: "column",
alignItems: "stretch",
gap: 2,
children: [
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
variant: "delta",
tag: "h2",
children: formatMessage({
id: getTrad('Plugins.header.title'),
defaultMessage: 'Permissions'
})
}),
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
tag: "p",
textColor: "neutral600",
children: formatMessage({
id: getTrad('Plugins.header.description'),
defaultMessage: 'Only actions bound by a route are listed below.'
})
})
]
}),
/*#__PURE__*/ jsxRuntime.jsx(index$1, {})
]
})
}),
/*#__PURE__*/ jsxRuntime.jsx(index$2, {})
]
})
});
});
UsersPermissions.propTypes = {
permissions: PropTypes.object.isRequired,
routes: PropTypes.object.isRequired
};
var UsersPermissions$1 = /*#__PURE__*/ React.memo(UsersPermissions);
module.exports = UsersPermissions$1;
//# sourceMappingURL=index.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,113 @@
import { jsx, jsxs } from 'react/jsx-runtime';
import { forwardRef, useReducer, useImperativeHandle, memo } from 'react';
import { Grid, Flex, Typography } from '@strapi/design-system';
import PropTypes from 'prop-types';
import { useIntl } from 'react-intl';
import { UsersPermissionsProvider } from '../../contexts/UsersPermissionsContext/index.mjs';
import getTrad from '../../utils/getTrad.mjs';
import Permissions from '../Permissions/index.mjs';
import Policies from '../Policies/index.mjs';
import init from './init.mjs';
import reducer, { initialState } from './reducer.mjs';
const UsersPermissions = /*#__PURE__*/ forwardRef(({ permissions, routes }, ref)=>{
const { formatMessage } = useIntl();
const [state, dispatch] = useReducer(reducer, initialState, (state)=>init(state, permissions, routes));
useImperativeHandle(ref, ()=>({
getPermissions () {
return {
permissions: state.modifiedData
};
},
resetForm () {
dispatch({
type: 'ON_RESET'
});
},
setFormAfterSubmit () {
dispatch({
type: 'ON_SUBMIT_SUCCEEDED'
});
}
}));
const handleChange = ({ target: { name, value } })=>dispatch({
type: 'ON_CHANGE',
keys: name.split('.'),
value: value === 'empty__string_value' ? '' : value
});
const handleChangeSelectAll = ({ target: { name, value } })=>dispatch({
type: 'ON_CHANGE_SELECT_ALL',
keys: name.split('.'),
value
});
const handleSelectedAction = (actionToSelect)=>dispatch({
type: 'SELECT_ACTION',
actionToSelect
});
const providerValue = {
...state,
onChange: handleChange,
onChangeSelectAll: handleChangeSelectAll,
onSelectedAction: handleSelectedAction
};
return /*#__PURE__*/ jsx(UsersPermissionsProvider, {
value: providerValue,
children: /*#__PURE__*/ jsxs(Grid.Root, {
gap: 0,
shadow: "filterShadow",
hasRadius: true,
background: "neutral0",
children: [
/*#__PURE__*/ jsx(Grid.Item, {
col: 7,
paddingTop: 6,
paddingBottom: 6,
paddingLeft: 7,
paddingRight: 7,
direction: "column",
alignItems: "stretch",
children: /*#__PURE__*/ jsxs(Flex, {
direction: "column",
alignItems: "stretch",
gap: 6,
children: [
/*#__PURE__*/ jsxs(Flex, {
direction: "column",
alignItems: "stretch",
gap: 2,
children: [
/*#__PURE__*/ jsx(Typography, {
variant: "delta",
tag: "h2",
children: formatMessage({
id: getTrad('Plugins.header.title'),
defaultMessage: 'Permissions'
})
}),
/*#__PURE__*/ jsx(Typography, {
tag: "p",
textColor: "neutral600",
children: formatMessage({
id: getTrad('Plugins.header.description'),
defaultMessage: 'Only actions bound by a route are listed below.'
})
})
]
}),
/*#__PURE__*/ jsx(Permissions, {})
]
})
}),
/*#__PURE__*/ jsx(Policies, {})
]
})
});
});
UsersPermissions.propTypes = {
permissions: PropTypes.object.isRequired,
routes: PropTypes.object.isRequired
};
var UsersPermissions$1 = /*#__PURE__*/ memo(UsersPermissions);
export { UsersPermissions$1 as default };
//# sourceMappingURL=index.mjs.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,13 @@
'use strict';
const init = (state, permissions, routes)=>{
return {
...state,
initialData: permissions,
modifiedData: permissions,
routes
};
};
module.exports = init;
//# sourceMappingURL=init.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"init.js","sources":["../../../../admin/src/components/UsersPermissions/init.js"],"sourcesContent":["const init = (state, permissions, routes) => {\n return {\n ...state,\n initialData: permissions,\n modifiedData: permissions,\n routes,\n };\n};\n\nexport default init;\n"],"names":["init","state","permissions","routes","initialData","modifiedData"],"mappings":";;AAAMA,MAAAA,IAAAA,GAAO,CAACC,KAAAA,EAAOC,WAAaC,EAAAA,MAAAA,GAAAA;IAChC,OAAO;AACL,QAAA,GAAGF,KAAK;QACRG,WAAaF,EAAAA,WAAAA;QACbG,YAAcH,EAAAA,WAAAA;AACdC,QAAAA;AACF,KAAA;AACF;;;;"}

View File

@@ -0,0 +1,11 @@
const init = (state, permissions, routes)=>{
return {
...state,
initialData: permissions,
modifiedData: permissions,
routes
};
};
export { init as default };
//# sourceMappingURL=init.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"init.mjs","sources":["../../../../admin/src/components/UsersPermissions/init.js"],"sourcesContent":["const init = (state, permissions, routes) => {\n return {\n ...state,\n initialData: permissions,\n modifiedData: permissions,\n routes,\n };\n};\n\nexport default init;\n"],"names":["init","state","permissions","routes","initialData","modifiedData"],"mappings":"AAAMA,MAAAA,IAAAA,GAAO,CAACC,KAAAA,EAAOC,WAAaC,EAAAA,MAAAA,GAAAA;IAChC,OAAO;AACL,QAAA,GAAGF,KAAK;QACRG,WAAaF,EAAAA,WAAAA;QACbG,YAAcH,EAAAA,WAAAA;AACdC,QAAAA;AACF,KAAA;AACF;;;;"}

View File

@@ -0,0 +1,73 @@
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var immer = require('immer');
var get = require('lodash/get');
var set = require('lodash/set');
var take = require('lodash/take');
const initialState = {
initialData: {},
modifiedData: {},
routes: {},
selectedAction: '',
policies: []
};
const reducer = (state, action)=>immer.produce(state, (draftState)=>{
switch(action.type){
case 'ON_CHANGE':
{
const keysLength = action.keys.length;
const isChangingCheckbox = action.keys[keysLength - 1] === 'enabled';
if (action.value && isChangingCheckbox) {
const selectedAction = take(action.keys, keysLength - 1).join('.');
draftState.selectedAction = selectedAction;
}
set(draftState, [
'modifiedData',
...action.keys
], action.value);
break;
}
case 'ON_CHANGE_SELECT_ALL':
{
const pathToValue = [
'modifiedData',
...action.keys
];
const oldValues = get(state, pathToValue, {});
const updatedValues = Object.keys(oldValues).reduce((acc, current)=>{
acc[current] = {
...oldValues[current],
enabled: action.value
};
return acc;
}, {});
set(draftState, pathToValue, updatedValues);
break;
}
case 'ON_RESET':
{
draftState.modifiedData = state.initialData;
break;
}
case 'ON_SUBMIT_SUCCEEDED':
{
draftState.initialData = state.modifiedData;
break;
}
case 'SELECT_ACTION':
{
const { actionToSelect } = action;
draftState.selectedAction = actionToSelect === state.selectedAction ? '' : actionToSelect;
break;
}
default:
return draftState;
}
});
exports.default = reducer;
exports.initialState = initialState;
//# sourceMappingURL=reducer.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"reducer.js","sources":["../../../../admin/src/components/UsersPermissions/reducer.js"],"sourcesContent":["/* eslint-disable consistent-return */\nimport { produce } from 'immer';\nimport get from 'lodash/get';\nimport set from 'lodash/set';\nimport take from 'lodash/take';\n\nexport const initialState = {\n initialData: {},\n modifiedData: {},\n routes: {},\n selectedAction: '',\n policies: [],\n};\n\nconst reducer = (state, action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_CHANGE': {\n const keysLength = action.keys.length;\n const isChangingCheckbox = action.keys[keysLength - 1] === 'enabled';\n\n if (action.value && isChangingCheckbox) {\n const selectedAction = take(action.keys, keysLength - 1).join('.');\n draftState.selectedAction = selectedAction;\n }\n\n set(draftState, ['modifiedData', ...action.keys], action.value);\n break;\n }\n case 'ON_CHANGE_SELECT_ALL': {\n const pathToValue = ['modifiedData', ...action.keys];\n const oldValues = get(state, pathToValue, {});\n const updatedValues = Object.keys(oldValues).reduce((acc, current) => {\n acc[current] = { ...oldValues[current], enabled: action.value };\n\n return acc;\n }, {});\n\n set(draftState, pathToValue, updatedValues);\n\n break;\n }\n case 'ON_RESET': {\n draftState.modifiedData = state.initialData;\n break;\n }\n case 'ON_SUBMIT_SUCCEEDED': {\n draftState.initialData = state.modifiedData;\n break;\n }\n\n case 'SELECT_ACTION': {\n const { actionToSelect } = action;\n draftState.selectedAction = actionToSelect === state.selectedAction ? '' : actionToSelect;\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport default reducer;\n"],"names":["initialState","initialData","modifiedData","routes","selectedAction","policies","reducer","state","action","produce","draftState","type","keysLength","keys","length","isChangingCheckbox","value","take","join","set","pathToValue","oldValues","get","updatedValues","Object","reduce","acc","current","enabled","actionToSelect"],"mappings":";;;;;;;;;MAMaA,YAAe,GAAA;AAC1BC,IAAAA,WAAAA,EAAa,EAAC;AACdC,IAAAA,YAAAA,EAAc,EAAC;AACfC,IAAAA,MAAAA,EAAQ,EAAC;IACTC,cAAgB,EAAA,EAAA;AAChBC,IAAAA,QAAAA,EAAU;AACZ;AAEA,MAAMC,UAAU,CAACC,KAAAA,EAAOC,MACtBC,GAAAA,aAAAA,CAAQF,OAAO,CAACG,UAAAA,GAAAA;AACd,QAAA,OAAQF,OAAOG,IAAI;YACjB,KAAK,WAAA;AAAa,gBAAA;AAChB,oBAAA,MAAMC,UAAaJ,GAAAA,MAAAA,CAAOK,IAAI,CAACC,MAAM;AACrC,oBAAA,MAAMC,qBAAqBP,MAAOK,CAAAA,IAAI,CAACD,UAAAA,GAAa,EAAE,KAAK,SAAA;oBAE3D,IAAIJ,MAAAA,CAAOQ,KAAK,IAAID,kBAAoB,EAAA;wBACtC,MAAMX,cAAAA,GAAiBa,KAAKT,MAAOK,CAAAA,IAAI,EAAED,UAAa,GAAA,CAAA,CAAA,CAAGM,IAAI,CAAC,GAAA,CAAA;AAC9DR,wBAAAA,UAAAA,CAAWN,cAAc,GAAGA,cAAAA;AAC9B;AAEAe,oBAAAA,GAAAA,CAAIT,UAAY,EAAA;AAAC,wBAAA,cAAA;AAAmBF,wBAAAA,GAAAA,MAAAA,CAAOK;AAAK,qBAAA,EAAEL,OAAOQ,KAAK,CAAA;AAC9D,oBAAA;AACF;YACA,KAAK,sBAAA;AAAwB,gBAAA;AAC3B,oBAAA,MAAMI,WAAc,GAAA;AAAC,wBAAA,cAAA;AAAmBZ,wBAAAA,GAAAA,MAAAA,CAAOK;AAAK,qBAAA;AACpD,oBAAA,MAAMQ,SAAYC,GAAAA,GAAAA,CAAIf,KAAOa,EAAAA,WAAAA,EAAa,EAAC,CAAA;oBAC3C,MAAMG,aAAAA,GAAgBC,OAAOX,IAAI,CAACQ,WAAWI,MAAM,CAAC,CAACC,GAAKC,EAAAA,OAAAA,GAAAA;wBACxDD,GAAG,CAACC,QAAQ,GAAG;4BAAE,GAAGN,SAAS,CAACM,OAAQ,CAAA;AAAEC,4BAAAA,OAAAA,EAASpB,OAAOQ;AAAM,yBAAA;wBAE9D,OAAOU,GAAAA;AACT,qBAAA,EAAG,EAAC,CAAA;AAEJP,oBAAAA,GAAAA,CAAIT,YAAYU,WAAaG,EAAAA,aAAAA,CAAAA;AAE7B,oBAAA;AACF;YACA,KAAK,UAAA;AAAY,gBAAA;oBACfb,UAAWR,CAAAA,YAAY,GAAGK,KAAAA,CAAMN,WAAW;AAC3C,oBAAA;AACF;YACA,KAAK,qBAAA;AAAuB,gBAAA;oBAC1BS,UAAWT,CAAAA,WAAW,GAAGM,KAAAA,CAAML,YAAY;AAC3C,oBAAA;AACF;YAEA,KAAK,eAAA;AAAiB,gBAAA;oBACpB,MAAM,EAAE2B,cAAc,EAAE,GAAGrB,MAAAA;AAC3BE,oBAAAA,UAAAA,CAAWN,cAAc,GAAGyB,cAAAA,KAAmBtB,KAAMH,CAAAA,cAAc,GAAG,EAAKyB,GAAAA,cAAAA;AAC3E,oBAAA;AACF;AACA,YAAA;gBACE,OAAOnB,UAAAA;AACX;AACF,KAAA;;;;;"}

View File

@@ -0,0 +1,68 @@
import { produce } from 'immer';
import get from 'lodash/get';
import set from 'lodash/set';
import take from 'lodash/take';
const initialState = {
initialData: {},
modifiedData: {},
routes: {},
selectedAction: '',
policies: []
};
const reducer = (state, action)=>produce(state, (draftState)=>{
switch(action.type){
case 'ON_CHANGE':
{
const keysLength = action.keys.length;
const isChangingCheckbox = action.keys[keysLength - 1] === 'enabled';
if (action.value && isChangingCheckbox) {
const selectedAction = take(action.keys, keysLength - 1).join('.');
draftState.selectedAction = selectedAction;
}
set(draftState, [
'modifiedData',
...action.keys
], action.value);
break;
}
case 'ON_CHANGE_SELECT_ALL':
{
const pathToValue = [
'modifiedData',
...action.keys
];
const oldValues = get(state, pathToValue, {});
const updatedValues = Object.keys(oldValues).reduce((acc, current)=>{
acc[current] = {
...oldValues[current],
enabled: action.value
};
return acc;
}, {});
set(draftState, pathToValue, updatedValues);
break;
}
case 'ON_RESET':
{
draftState.modifiedData = state.initialData;
break;
}
case 'ON_SUBMIT_SUCCEEDED':
{
draftState.initialData = state.modifiedData;
break;
}
case 'SELECT_ACTION':
{
const { actionToSelect } = action;
draftState.selectedAction = actionToSelect === state.selectedAction ? '' : actionToSelect;
break;
}
default:
return draftState;
}
});
export { reducer as default, initialState };
//# sourceMappingURL=reducer.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"reducer.mjs","sources":["../../../../admin/src/components/UsersPermissions/reducer.js"],"sourcesContent":["/* eslint-disable consistent-return */\nimport { produce } from 'immer';\nimport get from 'lodash/get';\nimport set from 'lodash/set';\nimport take from 'lodash/take';\n\nexport const initialState = {\n initialData: {},\n modifiedData: {},\n routes: {},\n selectedAction: '',\n policies: [],\n};\n\nconst reducer = (state, action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_CHANGE': {\n const keysLength = action.keys.length;\n const isChangingCheckbox = action.keys[keysLength - 1] === 'enabled';\n\n if (action.value && isChangingCheckbox) {\n const selectedAction = take(action.keys, keysLength - 1).join('.');\n draftState.selectedAction = selectedAction;\n }\n\n set(draftState, ['modifiedData', ...action.keys], action.value);\n break;\n }\n case 'ON_CHANGE_SELECT_ALL': {\n const pathToValue = ['modifiedData', ...action.keys];\n const oldValues = get(state, pathToValue, {});\n const updatedValues = Object.keys(oldValues).reduce((acc, current) => {\n acc[current] = { ...oldValues[current], enabled: action.value };\n\n return acc;\n }, {});\n\n set(draftState, pathToValue, updatedValues);\n\n break;\n }\n case 'ON_RESET': {\n draftState.modifiedData = state.initialData;\n break;\n }\n case 'ON_SUBMIT_SUCCEEDED': {\n draftState.initialData = state.modifiedData;\n break;\n }\n\n case 'SELECT_ACTION': {\n const { actionToSelect } = action;\n draftState.selectedAction = actionToSelect === state.selectedAction ? '' : actionToSelect;\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport default reducer;\n"],"names":["initialState","initialData","modifiedData","routes","selectedAction","policies","reducer","state","action","produce","draftState","type","keysLength","keys","length","isChangingCheckbox","value","take","join","set","pathToValue","oldValues","get","updatedValues","Object","reduce","acc","current","enabled","actionToSelect"],"mappings":";;;;;MAMaA,YAAe,GAAA;AAC1BC,IAAAA,WAAAA,EAAa,EAAC;AACdC,IAAAA,YAAAA,EAAc,EAAC;AACfC,IAAAA,MAAAA,EAAQ,EAAC;IACTC,cAAgB,EAAA,EAAA;AAChBC,IAAAA,QAAAA,EAAU;AACZ;AAEA,MAAMC,UAAU,CAACC,KAAAA,EAAOC,MACtBC,GAAAA,OAAAA,CAAQF,OAAO,CAACG,UAAAA,GAAAA;AACd,QAAA,OAAQF,OAAOG,IAAI;YACjB,KAAK,WAAA;AAAa,gBAAA;AAChB,oBAAA,MAAMC,UAAaJ,GAAAA,MAAAA,CAAOK,IAAI,CAACC,MAAM;AACrC,oBAAA,MAAMC,qBAAqBP,MAAOK,CAAAA,IAAI,CAACD,UAAAA,GAAa,EAAE,KAAK,SAAA;oBAE3D,IAAIJ,MAAAA,CAAOQ,KAAK,IAAID,kBAAoB,EAAA;wBACtC,MAAMX,cAAAA,GAAiBa,KAAKT,MAAOK,CAAAA,IAAI,EAAED,UAAa,GAAA,CAAA,CAAA,CAAGM,IAAI,CAAC,GAAA,CAAA;AAC9DR,wBAAAA,UAAAA,CAAWN,cAAc,GAAGA,cAAAA;AAC9B;AAEAe,oBAAAA,GAAAA,CAAIT,UAAY,EAAA;AAAC,wBAAA,cAAA;AAAmBF,wBAAAA,GAAAA,MAAAA,CAAOK;AAAK,qBAAA,EAAEL,OAAOQ,KAAK,CAAA;AAC9D,oBAAA;AACF;YACA,KAAK,sBAAA;AAAwB,gBAAA;AAC3B,oBAAA,MAAMI,WAAc,GAAA;AAAC,wBAAA,cAAA;AAAmBZ,wBAAAA,GAAAA,MAAAA,CAAOK;AAAK,qBAAA;AACpD,oBAAA,MAAMQ,SAAYC,GAAAA,GAAAA,CAAIf,KAAOa,EAAAA,WAAAA,EAAa,EAAC,CAAA;oBAC3C,MAAMG,aAAAA,GAAgBC,OAAOX,IAAI,CAACQ,WAAWI,MAAM,CAAC,CAACC,GAAKC,EAAAA,OAAAA,GAAAA;wBACxDD,GAAG,CAACC,QAAQ,GAAG;4BAAE,GAAGN,SAAS,CAACM,OAAQ,CAAA;AAAEC,4BAAAA,OAAAA,EAASpB,OAAOQ;AAAM,yBAAA;wBAE9D,OAAOU,GAAAA;AACT,qBAAA,EAAG,EAAC,CAAA;AAEJP,oBAAAA,GAAAA,CAAIT,YAAYU,WAAaG,EAAAA,aAAAA,CAAAA;AAE7B,oBAAA;AACF;YACA,KAAK,UAAA;AAAY,gBAAA;oBACfb,UAAWR,CAAAA,YAAY,GAAGK,KAAAA,CAAMN,WAAW;AAC3C,oBAAA;AACF;YACA,KAAK,qBAAA;AAAuB,gBAAA;oBAC1BS,UAAWT,CAAAA,WAAW,GAAGM,KAAAA,CAAML,YAAY;AAC3C,oBAAA;AACF;YAEA,KAAK,eAAA;AAAiB,gBAAA;oBACpB,MAAM,EAAE2B,cAAc,EAAE,GAAGrB,MAAAA;AAC3BE,oBAAAA,UAAAA,CAAWN,cAAc,GAAGyB,cAAAA,KAAmBtB,KAAMH,CAAAA,cAAc,GAAG,EAAKyB,GAAAA,cAAAA;AAC3E,oBAAA;AACF;AACA,YAAA;gBACE,OAAOnB,UAAAA;AACX;AACF,KAAA;;;;"}