Initial commit

This commit is contained in:
2025-03-07 19:22:02 +01:00
commit 4a98255d83
55743 changed files with 5280367 additions and 0 deletions
@@ -0,0 +1,25 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "Breadcrumb", {
enumerable: true,
get: function() {
return Breadcrumb;
}
});
const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
const _useBreadcrumb = require("./useBreadcrumb");
const _renderBreadcrumb = require("./renderBreadcrumb");
const _useBreadcrumbStylesstyles = require("./useBreadcrumbStyles.styles");
const _useBreadcrumbContextValue = require("./useBreadcrumbContextValue");
const _reactsharedcontexts = require("@fluentui/react-shared-contexts");
const Breadcrumb = /*#__PURE__*/ _react.forwardRef((props, ref)=>{
const state = (0, _useBreadcrumb.useBreadcrumb_unstable)(props, ref);
const contextValues = (0, _useBreadcrumbContextValue.useBreadcrumbContextValues_unstable)(state);
(0, _useBreadcrumbStylesstyles.useBreadcrumbStyles_unstable)(state);
(0, _reactsharedcontexts.useCustomStyleHook_unstable)('useBreadcrumbStyles_unstable')(state);
return (0, _renderBreadcrumb.renderBreadcrumb_unstable)(state, contextValues);
});
Breadcrumb.displayName = 'Breadcrumb';
@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/Breadcrumb/Breadcrumb.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useBreadcrumb_unstable } from './useBreadcrumb';\nimport { renderBreadcrumb_unstable } from './renderBreadcrumb';\nimport { useBreadcrumbStyles_unstable } from './useBreadcrumbStyles.styles';\nimport type { BreadcrumbProps } from './Breadcrumb.types';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\nimport { useBreadcrumbContextValues_unstable } from './useBreadcrumbContextValue';\nimport { useCustomStyleHook_unstable } from '@fluentui/react-shared-contexts';\n\n/**\n * Breadcrumb component - TODO: add more docs\n */\nexport const Breadcrumb: ForwardRefComponent<BreadcrumbProps> = React.forwardRef((props, ref) => {\n const state = useBreadcrumb_unstable(props, ref);\n const contextValues = useBreadcrumbContextValues_unstable(state);\n\n useBreadcrumbStyles_unstable(state);\n useCustomStyleHook_unstable('useBreadcrumbStyles_unstable')(state);\n\n return renderBreadcrumb_unstable(state, contextValues);\n});\n\nBreadcrumb.displayName = 'Breadcrumb';\n"],"names":["Breadcrumb","React","forwardRef","props","ref","state","useBreadcrumb_unstable","contextValues","useBreadcrumbContextValues_unstable","useBreadcrumbStyles_unstable","useCustomStyleHook_unstable","renderBreadcrumb_unstable","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;+BAYaA;;;eAAAA;;;;iEAZU;+BACgB;kCACG;2CACG;2CAGO;qCACR;AAKrC,MAAMA,aAAAA,WAAAA,GAAmDC,OAAMC,UAAU,CAAC,CAACC,OAAOC;IACvF,MAAMC,QAAQC,IAAAA,qCAAAA,EAAuBH,OAAOC;IAC5C,MAAMG,gBAAgBC,IAAAA,8DAAAA,EAAoCH;IAE1DI,IAAAA,uDAAAA,EAA6BJ;IAC7BK,IAAAA,gDAAAA,EAA4B,gCAAgCL;IAE5D,OAAOM,IAAAA,2CAAAA,EAA0BN,OAAOE;AAC1C;AAEAP,WAAWY,WAAW,GAAG"}
@@ -0,0 +1,6 @@
/**
* State used in rendering Breadcrumb
*/ "use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/Breadcrumb/Breadcrumb.types.ts"],"sourcesContent":["import type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\n\n/**\n * Data shared between breadcrumb components\n */\nexport type BreadcrumbContextValues = Required<Pick<BreadcrumbProps, 'size'>>;\n\nexport type BreadcrumbSlots = {\n /**\n * Root element of the component.\n */\n root: Slot<'nav'>;\n /**\n * Ordered list which contains items.\n */\n list?: Slot<'ol'>;\n};\n\n/**\n * Breadcrumb Props\n */\nexport type BreadcrumbProps = ComponentProps<BreadcrumbSlots> & {\n /**\n * Sets the focus behavior for the Breadcrumb.\n *\n * `tab`\n * This behaviour will cycle through all elements inside of the Breadcrumb when pressing the Tab key and then release focus\n * after the last inner element.\n *\n * `arrow`\n * This behaviour will cycle through all elements inside of the Breadcrumb when pressing the Arrow key.\n *\n * @default 'tab'\n */\n focusMode?: 'arrow' | 'tab';\n\n /**\n * Controls size of Breadcrumb items and dividers.\n *\n * @default 'medium'\n */\n size?: 'small' | 'medium' | 'large';\n};\n\n/**\n * State used in rendering Breadcrumb\n */\nexport type BreadcrumbState = ComponentState<BreadcrumbSlots> & Required<Pick<BreadcrumbProps, 'size'>>;\n"],"names":[],"rangeMappings":";;","mappings":"AA4CA;;CAEC"}
@@ -0,0 +1,32 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
BreadcrumbProvider: function() {
return BreadcrumbProvider;
},
breadcrumbDefaultValue: function() {
return breadcrumbDefaultValue;
},
useBreadcrumbContext_unstable: function() {
return useBreadcrumbContext_unstable;
}
});
const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
const BreadcrumbContext = /*#__PURE__*/ _react.createContext(undefined);
const breadcrumbDefaultValue = {
size: 'medium'
};
const BreadcrumbProvider = BreadcrumbContext.Provider;
const useBreadcrumbContext_unstable = ()=>{
var _React_useContext;
return (_React_useContext = _react.useContext(BreadcrumbContext)) !== null && _React_useContext !== void 0 ? _React_useContext : breadcrumbDefaultValue;
};
@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/Breadcrumb/BreadcrumbContext.ts"],"sourcesContent":["import * as React from 'react';\nimport { BreadcrumbContextValues } from './Breadcrumb.types';\n\nconst BreadcrumbContext = React.createContext<BreadcrumbContextValues | undefined>(undefined);\n\n/**\n * @internal\n */\nexport const breadcrumbDefaultValue: BreadcrumbContextValues = {\n size: 'medium',\n};\n\n/**\n * @internal\n */\nexport const BreadcrumbProvider = BreadcrumbContext.Provider;\n\n/**\n * @internal\n */\nexport const useBreadcrumbContext_unstable = () => React.useContext(BreadcrumbContext) ?? breadcrumbDefaultValue;\n"],"names":["BreadcrumbProvider","breadcrumbDefaultValue","useBreadcrumbContext_unstable","BreadcrumbContext","React","createContext","undefined","size","Provider","useContext"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;;;;IAeaA,kBAAAA;eAAAA;;IAPAC,sBAAAA;eAAAA;;IAYAC,6BAAAA;eAAAA;;;;iEApBU;AAGvB,MAAMC,kCAAoBC,OAAMC,aAAa,CAAsCC;AAK5E,MAAML,yBAAkD;IAC7DM,MAAM;AACR;AAKO,MAAMP,qBAAqBG,kBAAkBK,QAAQ;AAKrD,MAAMN,gCAAgC;QAAME;WAAAA,CAAAA,oBAAAA,OAAMK,UAAU,CAACN,kBAAAA,MAAAA,QAAjBC,sBAAAA,KAAAA,IAAAA,oBAAuCH;AAAqB"}
@@ -0,0 +1,41 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
Breadcrumb: function() {
return _Breadcrumb.Breadcrumb;
},
BreadcrumbProvider: function() {
return _BreadcrumbContext.BreadcrumbProvider;
},
breadcrumbClassNames: function() {
return _useBreadcrumbStylesstyles.breadcrumbClassNames;
},
breadcrumbDefaultValue: function() {
return _BreadcrumbContext.breadcrumbDefaultValue;
},
renderBreadcrumb_unstable: function() {
return _renderBreadcrumb.renderBreadcrumb_unstable;
},
useBreadcrumbContext_unstable: function() {
return _BreadcrumbContext.useBreadcrumbContext_unstable;
},
useBreadcrumbStyles_unstable: function() {
return _useBreadcrumbStylesstyles.useBreadcrumbStyles_unstable;
},
useBreadcrumb_unstable: function() {
return _useBreadcrumb.useBreadcrumb_unstable;
}
});
const _Breadcrumb = require("./Breadcrumb");
const _BreadcrumbContext = require("./BreadcrumbContext");
const _renderBreadcrumb = require("./renderBreadcrumb");
const _useBreadcrumb = require("./useBreadcrumb");
const _useBreadcrumbStylesstyles = require("./useBreadcrumbStyles.styles");
@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/Breadcrumb/index.ts"],"sourcesContent":["export { Breadcrumb } from './Breadcrumb';\nexport type { BreadcrumbContextValues, BreadcrumbProps, BreadcrumbSlots, BreadcrumbState } from './Breadcrumb.types';\nexport { BreadcrumbProvider, breadcrumbDefaultValue, useBreadcrumbContext_unstable } from './BreadcrumbContext';\nexport { renderBreadcrumb_unstable } from './renderBreadcrumb';\nexport { useBreadcrumb_unstable } from './useBreadcrumb';\nexport { breadcrumbClassNames, useBreadcrumbStyles_unstable } from './useBreadcrumbStyles.styles';\n"],"names":["Breadcrumb","BreadcrumbProvider","breadcrumbClassNames","breadcrumbDefaultValue","renderBreadcrumb_unstable","useBreadcrumbContext_unstable","useBreadcrumbStyles_unstable","useBreadcrumb_unstable"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;;;;IAASA,UAAU;eAAVA,sBAAU;;IAEVC,kBAAkB;eAAlBA,qCAAkB;;IAGlBC,oBAAoB;eAApBA,+CAAoB;;IAHAC,sBAAsB;eAAtBA,yCAAsB;;IAC1CC,yBAAyB;eAAzBA,2CAAyB;;IADmBC,6BAA6B;eAA7BA,gDAA6B;;IAGnDC,4BAA4B;eAA5BA,uDAA4B;;IADlDC,sBAAsB;eAAtBA,qCAAsB;;;4BAJJ;mCAE+D;kCAChD;+BACH;2CAC4B"}
@@ -0,0 +1,24 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "renderBreadcrumb_unstable", {
enumerable: true,
get: function() {
return renderBreadcrumb_unstable;
}
});
const _jsxruntime = require("@fluentui/react-jsx-runtime/jsx-runtime");
const _reactutilities = require("@fluentui/react-utilities");
const _BreadcrumbContext = require("./BreadcrumbContext");
const renderBreadcrumb_unstable = (state, contextValues)=>{
(0, _reactutilities.assertSlots)(state);
return /*#__PURE__*/ (0, _jsxruntime.jsx)(state.root, {
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_BreadcrumbContext.BreadcrumbProvider, {
value: contextValues,
children: state.list && /*#__PURE__*/ (0, _jsxruntime.jsx)(state.list, {
children: state.root.children
})
})
});
};
@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/Breadcrumb/renderBreadcrumb.tsx"],"sourcesContent":["/** @jsxRuntime automatic */\n/** @jsxImportSource @fluentui/react-jsx-runtime */\n\nimport { assertSlots } from '@fluentui/react-utilities';\nimport { BreadcrumbProvider } from './BreadcrumbContext';\nimport type { BreadcrumbState, BreadcrumbSlots, BreadcrumbContextValues } from './Breadcrumb.types';\n/**\n * Render the final JSX of Breadcrumb\n */\nexport const renderBreadcrumb_unstable = (state: BreadcrumbState, contextValues: BreadcrumbContextValues) => {\n assertSlots<BreadcrumbSlots>(state);\n return (\n <state.root>\n <BreadcrumbProvider value={contextValues}>\n {state.list && <state.list>{state.root.children}</state.list>}\n </BreadcrumbProvider>\n </state.root>\n );\n};\n"],"names":["renderBreadcrumb_unstable","state","contextValues","assertSlots","_jsx","root","BreadcrumbProvider","value","list","children"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;+BASaA;;;eAAAA;;;4BARb;gCAE4B;mCACO;AAK5B,MAAMA,4BAA4B,CAACC,OAAwBC;IAChEC,IAAAA,2BAAAA,EAA6BF;IAC7B,OAAA,WAAA,GACEG,IAAAA,eAAA,EAACH,MAAMI,IAAI,EAAA;kBACT,WAAA,GAAAD,IAAAA,eAAA,EAACE,qCAAAA,EAAAA;YAAmBC,OAAOL;sBACxBD,MAAMO,IAAI,IAAA,WAAA,GAAIJ,IAAAA,eAAA,EAACH,MAAMO,IAAI,EAAA;0BAAEP,MAAMI,IAAI,CAACI,QAAQ;;;;AAIvD"}
@@ -0,0 +1,45 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "useBreadcrumb_unstable", {
enumerable: true,
get: function() {
return useBreadcrumb_unstable;
}
});
const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
const _reactutilities = require("@fluentui/react-utilities");
const _reacttabster = require("@fluentui/react-tabster");
const useBreadcrumb_unstable = (props, ref)=>{
const { focusMode = 'tab', size = 'medium', list, ...rest } = props;
const focusAttributes = (0, _reacttabster.useArrowNavigationGroup)({
circular: true,
axis: 'horizontal',
memorizeCurrent: true
});
var _props_arialabel;
return {
components: {
root: 'nav',
list: 'ol'
},
root: _reactutilities.slot.always((0, _reactutilities.getIntrinsicElementProps)('nav', {
ref,
'aria-label': (_props_arialabel = props['aria-label']) !== null && _props_arialabel !== void 0 ? _props_arialabel : 'breadcrumb',
...focusMode === 'arrow' ? focusAttributes : {},
...rest
}), {
elementType: 'nav'
}),
list: _reactutilities.slot.optional(list, {
renderByDefault: true,
defaultProps: {
role: 'list'
},
elementType: 'ol'
}),
size
};
};
@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/Breadcrumb/useBreadcrumb.ts"],"sourcesContent":["import * as React from 'react';\nimport { getIntrinsicElementProps, slot } from '@fluentui/react-utilities';\nimport type { BreadcrumbProps, BreadcrumbState } from './Breadcrumb.types';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\n\n/**\n * Create the state required to render Breadcrumb.\n *\n * The returned state can be modified with hooks such as useBreadcrumbStyles_unstable,\n * before being passed to renderBreadcrumb_unstable.\n *\n * @param props - props from this instance of Breadcrumb\n * @param ref - reference to root HTMLElement of Breadcrumb\n */\nexport const useBreadcrumb_unstable = (props: BreadcrumbProps, ref: React.Ref<HTMLElement>): BreadcrumbState => {\n const { focusMode = 'tab', size = 'medium', list, ...rest } = props;\n\n const focusAttributes = useArrowNavigationGroup({\n circular: true,\n axis: 'horizontal',\n memorizeCurrent: true,\n });\n\n return {\n components: {\n root: 'nav',\n list: 'ol',\n },\n root: slot.always(\n getIntrinsicElementProps('nav', {\n ref,\n 'aria-label': props['aria-label'] ?? 'breadcrumb',\n ...(focusMode === 'arrow' ? focusAttributes : {}),\n ...rest,\n }),\n { elementType: 'nav' },\n ),\n list: slot.optional(list, { renderByDefault: true, defaultProps: { role: 'list' }, elementType: 'ol' }),\n size,\n };\n};\n"],"names":["useBreadcrumb_unstable","props","ref","focusMode","size","list","rest","focusAttributes","useArrowNavigationGroup","circular","axis","memorizeCurrent","components","root","slot","always","getIntrinsicElementProps","elementType","optional","renderByDefault","defaultProps","role"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;+BAcaA;;;eAAAA;;;;iEAdU;gCACwB;8BAEP;AAWjC,MAAMA,yBAAyB,CAACC,OAAwBC;IAC7D,MAAM,EAAEC,YAAY,KAAK,EAAEC,OAAO,QAAQ,EAAEC,IAAI,EAAE,GAAGC,MAAM,GAAGL;IAE9D,MAAMM,kBAAkBC,IAAAA,qCAAAA,EAAwB;QAC9CC,UAAU;QACVC,MAAM;QACNC,iBAAiB;IACnB;QAUoBV;IARpB,OAAO;QACLW,YAAY;YACVC,MAAM;YACNR,MAAM;QACR;QACAQ,MAAMC,oBAAAA,CAAKC,MAAM,CACfC,IAAAA,wCAAAA,EAAyB,OAAO;YAC9Bd;YACA,cAAcD,CAAAA,mBAAAA,KAAK,CAAC,aAAa,AAAb,MAAa,QAAnBA,qBAAAA,KAAAA,IAAAA,mBAAuB;YACrC,GAAIE,cAAc,UAAUI,kBAAkB,CAAC,CAAC;YAChD,GAAGD,IAAI;QACT,IACA;YAAEW,aAAa;QAAM;QAEvBZ,MAAMS,oBAAAA,CAAKI,QAAQ,CAACb,MAAM;YAAEc,iBAAiB;YAAMC,cAAc;gBAAEC,MAAM;YAAO;YAAGJ,aAAa;QAAK;QACrGb;IACF;AACF"}
@@ -0,0 +1,20 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "useBreadcrumbContextValues_unstable", {
enumerable: true,
get: function() {
return useBreadcrumbContextValues_unstable;
}
});
const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
function useBreadcrumbContextValues_unstable(state) {
const { size } = state;
return _react.useMemo(()=>({
size
}), [
size
]);
}
@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/Breadcrumb/useBreadcrumbContextValue.ts"],"sourcesContent":["import * as React from 'react';\nimport type { BreadcrumbContextValues, BreadcrumbState } from './Breadcrumb.types';\n\nexport function useBreadcrumbContextValues_unstable(state: BreadcrumbState): BreadcrumbContextValues {\n const { size } = state;\n return React.useMemo(() => ({ size }), [size]);\n}\n"],"names":["useBreadcrumbContextValues_unstable","state","size","React","useMemo"],"rangeMappings":";;;;;;;;;;;;;;;;;;;","mappings":";;;;+BAGgBA;;;eAAAA;;;;iEAHO;AAGhB,SAASA,oCAAoCC,KAAsB;IACxE,MAAM,EAAEC,IAAI,EAAE,GAAGD;IACjB,OAAOE,OAAMC,OAAO,CAAC,IAAO,CAAA;YAAEF;QAAK,CAAA,GAAI;QAACA;KAAK;AAC/C"}
@@ -0,0 +1,35 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
breadcrumbClassNames: function() {
return breadcrumbClassNames;
},
useBreadcrumbStyles_unstable: function() {
return useBreadcrumbStyles_unstable;
}
});
const _react = require("@griffel/react");
const breadcrumbClassNames = {
root: 'fui-Breadcrumb',
list: 'fui-Breadcrumb__list'
};
const useListClassName = /*#__PURE__*/ (0, _react.__resetStyles)("rc5rb6b", null, [
".rc5rb6b{list-style-type:none;display:flex;align-items:center;margin:0;padding:0;}"
]);
const useBreadcrumbStyles_unstable = (state)=>{
'use no memo';
const listBaseClassName = useListClassName();
state.root.className = (0, _react.mergeClasses)(breadcrumbClassNames.root, state.root.className);
if (state.list) {
state.list.className = (0, _react.mergeClasses)(listBaseClassName, breadcrumbClassNames.list, state.list.className);
}
return state;
};
@@ -0,0 +1 @@
{"version":3,"sources":["useBreadcrumbStyles.styles.js"],"sourcesContent":["import { makeResetStyles, mergeClasses } from '@griffel/react';\nexport const breadcrumbClassNames = {\n root: 'fui-Breadcrumb',\n list: 'fui-Breadcrumb__list'\n};\nconst useListClassName = makeResetStyles({\n listStyleType: 'none',\n display: 'flex',\n alignItems: 'center',\n margin: 0,\n padding: 0\n});\n/**\n * Apply styling to the Breadcrumb slots based on the state\n */ export const useBreadcrumbStyles_unstable = (state)=>{\n 'use no memo';\n const listBaseClassName = useListClassName();\n state.root.className = mergeClasses(breadcrumbClassNames.root, state.root.className);\n if (state.list) {\n state.list.className = mergeClasses(listBaseClassName, breadcrumbClassNames.list, state.list.className);\n }\n return state;\n};\n"],"names":["breadcrumbClassNames","useBreadcrumbStyles_unstable","root","list","useListClassName","__resetStyles","state","listBaseClassName","className","mergeClasses"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;;;;IACaA,oBAAoB;eAApBA;;IAaIC,4BAA4B;eAA5BA;;;uBAd6B;AACvC,MAAMD,uBAAuB;IAChCE,MAAM;IACNC,MAAM;AACV;AACA,MAAMC,mBAAgB,WAAA,GAAGC,IAAAA,oBAAA,EAAA,WAAA,MAAA;IAAA;CAMxB;AAGU,MAAMJ,+BAAgCK,CAAAA;IAC7C;IACA,MAAMC,oBAAoBH;IAC1BE,MAAMJ,IAAI,CAACM,SAAS,GAAGC,IAAAA,mBAAY,EAACT,qBAAqBE,IAAI,EAAEI,MAAMJ,IAAI,CAACM,SAAS;IACnF,IAAIF,MAAMH,IAAI,EAAE;QACZG,MAAMH,IAAI,CAACK,SAAS,GAAGC,IAAAA,mBAAY,EAACF,mBAAmBP,qBAAqBG,IAAI,EAAEG,MAAMH,IAAI,CAACK,SAAS;IAC1G;IACA,OAAOF;AACX"}