@abapify/adt-plugin-abapgit 0.4.1 → 0.4.4
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/README.md +24 -0
- package/dist/index.d.mts +26 -25
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +23783 -1830
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -7
- package/xsd/acid.xsd +26 -0
- package/xsd/aifc.xsd +25 -0
- package/xsd/amsd.xsd +26 -0
- package/xsd/apis.xsd +26 -0
- package/xsd/aqbg.xsd +25 -0
- package/xsd/aqqu.xsd +25 -0
- package/xsd/aqsg.xsd +25 -0
- package/xsd/area.xsd +29 -0
- package/xsd/asfc.xsd +25 -0
- package/xsd/auth.xsd +26 -0
- package/xsd/avar.xsd +32 -0
- package/xsd/avas.xsd +26 -0
- package/xsd/bdef.xsd +15 -40
- package/xsd/char.xsd +26 -0
- package/xsd/chdo.xsd +25 -0
- package/xsd/cmod.xsd +46 -0
- package/xsd/cmpt.xsd +26 -0
- package/xsd/cus0.xsd +26 -0
- package/xsd/cus1.xsd +26 -0
- package/xsd/cus2.xsd +26 -0
- package/xsd/dcls.xsd +27 -0
- package/xsd/ddls.xsd +27 -0
- package/xsd/ddlx.xsd +32 -0
- package/xsd/dial.xsd +26 -0
- package/xsd/doct.xsd +30 -0
- package/xsd/docv.xsd +26 -0
- package/xsd/drul.xsd +26 -0
- package/xsd/dsys.xsd +30 -0
- package/xsd/ecat.xsd +15 -0
- package/xsd/ecsd.xsd +15 -0
- package/xsd/ecsp.xsd +15 -0
- package/xsd/ectc.xsd +15 -0
- package/xsd/ectd.xsd +15 -0
- package/xsd/ecvo.xsd +15 -0
- package/xsd/enhc.xsd +42 -0
- package/xsd/enho.xsd +34 -0
- package/xsd/enhs.xsd +29 -0
- package/xsd/enqu.xsd +38 -0
- package/xsd/ensc.xsd +27 -0
- package/xsd/fdt0.xsd +15 -0
- package/xsd/form.xsd +27 -0
- package/xsd/ftgl.xsd +26 -0
- package/xsd/fugr.xsd +17 -34
- package/xsd/g4ba.xsd +25 -0
- package/xsd/g4bs.xsd +25 -0
- package/xsd/http.xsd +27 -0
- package/xsd/iamu.xsd +26 -0
- package/xsd/iarp.xsd +23 -0
- package/xsd/iasp.xsd +23 -0
- package/xsd/iatu.xsd +26 -0
- package/xsd/iaxu.xsd +26 -0
- package/xsd/idoc.xsd +26 -0
- package/xsd/iext.xsd +26 -0
- package/xsd/iobj.xsd +34 -0
- package/xsd/iwmo.xsd +25 -0
- package/xsd/iwom.xsd +25 -0
- package/xsd/iwpr.xsd +25 -0
- package/xsd/iwsg.xsd +25 -0
- package/xsd/iwsv.xsd +25 -0
- package/xsd/iwvb.xsd +25 -0
- package/xsd/jobd.xsd +26 -0
- package/xsd/msag.xsd +37 -0
- package/xsd/nrob.xsd +27 -0
- package/xsd/nspc.xsd +27 -0
- package/xsd/oa2p.xsd +26 -0
- package/xsd/odso.xsd +30 -0
- package/xsd/otgr.xsd +26 -0
- package/xsd/para.xsd +27 -0
- package/xsd/pdts.xsd +27 -0
- package/xsd/pers.xsd +26 -0
- package/xsd/pinf.xsd +26 -0
- package/xsd/prag.xsd +26 -0
- package/xsd/prog.xsd +16 -33
- package/xsd/samc.xsd +26 -0
- package/xsd/sapc.xsd +26 -0
- package/xsd/scp1.xsd +25 -0
- package/xsd/scvi.xsd +26 -0
- package/xsd/sfbf.xsd +30 -0
- package/xsd/sfbs.xsd +33 -0
- package/xsd/sfpf.xsd +25 -0
- package/xsd/sfpi.xsd +15 -0
- package/xsd/sfsw.xsd +33 -0
- package/xsd/shi3.xsd +35 -0
- package/xsd/shi5.xsd +26 -0
- package/xsd/shi8.xsd +26 -0
- package/xsd/shlp.xsd +41 -0
- package/xsd/shma.xsd +26 -0
- package/xsd/sicf.xsd +31 -0
- package/xsd/sktd.xsd +26 -0
- package/xsd/sldd.xsd +25 -0
- package/xsd/smim.xsd +29 -0
- package/xsd/smtg.xsd +25 -0
- package/xsd/sobj.xsd +25 -0
- package/xsd/sod1.xsd +26 -0
- package/xsd/sod2.xsd +26 -0
- package/xsd/sots.xsd +26 -0
- package/xsd/splo.xsd +28 -0
- package/xsd/sppf.xsd +25 -0
- package/xsd/sprx.xsd +38 -0
- package/xsd/sqsc.xsd +26 -0
- package/xsd/srfc.xsd +26 -0
- package/xsd/srvb.xsd +16 -43
- package/xsd/srvd.xsd +15 -40
- package/xsd/ssfo.xsd +15 -0
- package/xsd/ssst.xsd +29 -0
- package/xsd/stvi.xsd +26 -0
- package/xsd/styl.xsd +26 -0
- package/xsd/sucu.xsd +38 -0
- package/xsd/susc.xsd +27 -0
- package/xsd/sush.xsd +26 -0
- package/xsd/suso.xsd +27 -0
- package/xsd/sxci.xsd +26 -0
- package/xsd/sxsd.xsd +26 -0
- package/xsd/tdlines.xsd +34 -0
- package/xsd/tobj.xsd +37 -0
- package/xsd/tran.xsd +38 -0
- package/xsd/type.xsd +34 -0
- package/xsd/types/acid.xsd +3 -0
- package/xsd/types/amsd.xsd +16 -0
- package/xsd/types/apis.xsd +15 -0
- package/xsd/types/area.xsd +3 -0
- package/xsd/types/auth.xsd +15 -0
- package/xsd/types/avar.xsd +11 -0
- package/xsd/types/avas.xsd +16 -0
- package/xsd/types/char.xsd +32 -0
- package/xsd/types/chdo.xsd +65 -0
- package/xsd/types/cmod.xsd +24 -0
- package/xsd/types/cmpt.xsd +17 -0
- package/xsd/types/cus0.xsd +32 -0
- package/xsd/types/cus1.xsd +30 -0
- package/xsd/types/cus2.xsd +30 -0
- package/xsd/types/dd25v.xsd +18 -0
- package/xsd/types/dd26v.xsd +22 -0
- package/xsd/types/dd27p.xsd +30 -0
- package/xsd/types/dd28v.xsd +23 -0
- package/xsd/types/dd30v.xsd +20 -0
- package/xsd/types/dd31v.xsd +15 -0
- package/xsd/types/dd32p.xsd +28 -0
- package/xsd/types/dd33v.xsd +22 -0
- package/xsd/types/dial.xsd +37 -0
- package/xsd/types/doct.xsd +41 -0
- package/xsd/types/docv.xsd +33 -0
- package/xsd/types/drul.xsd +17 -0
- package/xsd/types/dsys.xsd +41 -0
- package/xsd/types/enhc.xsd +15 -0
- package/xsd/types/enho.xsd +180 -0
- package/xsd/types/enhs.xsd +63 -0
- package/xsd/types/ensc.xsd +13 -0
- package/xsd/types/form.xsd +123 -0
- package/xsd/types/ftgl.xsd +16 -0
- package/xsd/types/http.xsd +32 -0
- package/xsd/types/iamu.xsd +18 -0
- package/xsd/types/iarp.xsd +22 -0
- package/xsd/types/iasp.xsd +22 -0
- package/xsd/types/iatu.xsd +14 -0
- package/xsd/types/iaxu.xsd +14 -0
- package/xsd/types/idoc.xsd +41 -0
- package/xsd/types/iext.xsd +31 -0
- package/xsd/types/iobj.xsd +58 -0
- package/xsd/types/jobd.xsd +13 -0
- package/xsd/types/nrob.xsd +49 -0
- package/xsd/types/nspc.xsd +20 -0
- package/xsd/types/oa2p.xsd +24 -0
- package/xsd/types/objsl.xsd +15 -0
- package/xsd/types/odso.xsd +42 -0
- package/xsd/types/otgr.xsd +44 -0
- package/xsd/types/para.xsd +17 -0
- package/xsd/types/pdts.xsd +25 -0
- package/xsd/types/pers.xsd +42 -0
- package/xsd/types/pinf.xsd +32 -0
- package/xsd/types/prag.xsd +11 -0
- package/xsd/types/samc.xsd +15 -0
- package/xsd/types/sapc.xsd +15 -0
- package/xsd/types/scp1.xsd +65 -0
- package/xsd/types/scvi.xsd +17 -0
- package/xsd/types/sfbf.xsd +32 -0
- package/xsd/types/sfbs.xsd +43 -0
- package/xsd/types/sfpf.xsd +32 -0
- package/xsd/types/sfsw.xsd +43 -0
- package/xsd/types/shi3.xsd +53 -0
- package/xsd/types/shi5.xsd +30 -0
- package/xsd/types/shi8.xsd +12 -0
- package/xsd/types/shma.xsd +20 -0
- package/xsd/types/sicf.xsd +102 -0
- package/xsd/types/sktd.xsd +24 -0
- package/xsd/types/smim.xsd +12 -0
- package/xsd/types/smtg.xsd +63 -0
- package/xsd/types/sod1.xsd +15 -0
- package/xsd/types/sod2.xsd +15 -0
- package/xsd/types/sots.xsd +40 -0
- package/xsd/types/splo.xsd +28 -0
- package/xsd/types/sprx.xsd +30 -0
- package/xsd/types/sqsc.xsd +71 -0
- package/xsd/types/srfc.xsd +25 -0
- package/xsd/types/ssst.xsd +23 -0
- package/xsd/types/stvi.xsd +16 -0
- package/xsd/types/styl.xsd +84 -0
- package/xsd/types/sucu.xsd +19 -0
- package/xsd/types/susc.xsd +16 -0
- package/xsd/types/sush.xsd +39 -0
- package/xsd/types/suso.xsd +29 -0
- package/xsd/types/sxci.xsd +19 -0
- package/xsd/types/sxsd.xsd +18 -0
- package/xsd/types/t100.xsd +20 -0
- package/xsd/types/t100a.xsd +13 -0
- package/xsd/types/tobj.xsd +55 -0
- package/xsd/types/tstc.xsd +15 -0
- package/xsd/types/tstcc.xsd +15 -0
- package/xsd/types/tstct.xsd +19 -0
- package/xsd/types/typepool.xsd +12 -0
- package/xsd/types/ucsa.xsd +15 -0
- package/xsd/types/udmo.xsd +37 -0
- package/xsd/types/vcls.xsd +36 -0
- package/xsd/types/w3xx.xsd +11 -0
- package/xsd/types/wdca.xsd +25 -0
- package/xsd/types/wdcc.xsd +14 -0
- package/xsd/types/wdya.xsd +18 -0
- package/xsd/types/webi.xsd +31 -0
- package/xsd/types/xinx.xsd +40 -0
- package/xsd/types/xslt.xsd +12 -0
- package/xsd/ucsa.xsd +26 -0
- package/xsd/udmo.xsd +26 -0
- package/xsd/ueno.xsd +25 -0
- package/xsd/vcls.xsd +26 -0
- package/xsd/view.xsd +41 -0
- package/xsd/w3ht.xsd +34 -0
- package/xsd/w3mi.xsd +34 -0
- package/xsd/wapa.xsd +25 -0
- package/xsd/wdca.xsd +25 -0
- package/xsd/wdcc.xsd +37 -0
- package/xsd/wdya.xsd +32 -0
- package/xsd/wdyn.xsd +25 -0
- package/xsd/webi.xsd +26 -0
- package/xsd/xinx.xsd +26 -0
- package/xsd/xslt.xsd +34 -0
package/README.md
CHANGED
|
@@ -4,6 +4,30 @@
|
|
|
4
4
|
|
|
5
5
|
abapGit format plugin for ADT — serializes ABAP objects to Git-compatible XML/ABAP files.
|
|
6
6
|
|
|
7
|
+
## Pure materialization
|
|
8
|
+
|
|
9
|
+
The registered `abapgitFormatPlugin` can produce a desired object tree without
|
|
10
|
+
filesystem, ADT, or Git side effects. Explicit source components override
|
|
11
|
+
mutable ADK source getters, while existing XSD-backed handlers continue to
|
|
12
|
+
produce metadata:
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
const { files } = await abapgitFormatPlugin.materialize({
|
|
16
|
+
object: adkClass,
|
|
17
|
+
objectType: 'CLAS',
|
|
18
|
+
packagePath: ['ZROOT', 'ZROOT_FEATURE'],
|
|
19
|
+
sources: {
|
|
20
|
+
main: selectedMainSource,
|
|
21
|
+
definitions: selectedLocalDefinitions,
|
|
22
|
+
},
|
|
23
|
+
formatOptions: { folderLogic: 'prefix' },
|
|
24
|
+
});
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Paths are rooted below `src/`, ordered deterministically, and annotated with
|
|
28
|
+
their semantic role and source-component identity. Existing filesystem import
|
|
29
|
+
and Git-to-SAP export APIs remain unchanged.
|
|
30
|
+
|
|
7
31
|
## Architecture Overview
|
|
8
32
|
|
|
9
33
|
```
|
package/dist/index.d.mts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { AbapObjectType, AdtPlugin, AdtPlugin as AdtPlugin$1, ExportContext, ExportResult, FormatPlugin, ImportContext, ImportResult } from "@abapify/adt-plugin";
|
|
1
|
+
import { AbapObjectType, AdtPlugin, AdtPlugin as AdtPlugin$1, ExportContext, ExportResult, FormatMaterializationInput, FormatMaterializationResult, FormatPlugin, FormatSerializeOptions, ImportContext, ImportResult, MaterializedFormatFile } from "@abapify/adt-plugin";
|
|
2
2
|
import { AdkObject } from "@abapify/adk";
|
|
3
3
|
import { SchemaLike, TypedSchema } from "@abapify/ts-xsd";
|
|
4
|
-
import { createAbapGitResolver as createFindingResolver } from "@abapify/adt-atc";
|
|
5
|
-
|
|
4
|
+
import { adtUriToAbapGitPath, createAbapGitResolver as createFindingResolver } from "@abapify/adt-atc";
|
|
6
5
|
//#region src/lib/format-plugin.d.ts
|
|
7
6
|
declare const abapgitFormatPlugin: FormatPlugin;
|
|
8
7
|
//#endregion
|
|
@@ -111,8 +110,10 @@ interface ObjectHandler<T extends AdkObject = AdkObject, TSchema extends AbapGit
|
|
|
111
110
|
readonly schema: TSchema;
|
|
112
111
|
/** Map abapGit file suffix to source key */
|
|
113
112
|
readonly suffixToSourceKey?: Record<string, string>;
|
|
113
|
+
/** Whether this handler treats an explicit `sources` map as authoritative. */
|
|
114
|
+
readonly supportsExplicitSources?: boolean;
|
|
114
115
|
/** Serialize object to files (SAP → Git) */
|
|
115
|
-
serialize(object: T): Promise<SerializedFile[]>;
|
|
116
|
+
serialize(object: T, options?: FormatSerializeOptions): Promise<SerializedFile[]>;
|
|
116
117
|
/**
|
|
117
118
|
* Map abapGit values to ADK data (Git → SAP)
|
|
118
119
|
* Return type includes name (required) plus any ADK data fields
|
|
@@ -120,6 +121,14 @@ interface ObjectHandler<T extends AdkObject = AdkObject, TSchema extends AbapGit
|
|
|
120
121
|
fromAbapGit?(values: InferValuesType<TSchema>): Partial<InferAdkData<T>> & {
|
|
121
122
|
name: string;
|
|
122
123
|
};
|
|
124
|
+
/**
|
|
125
|
+
* Map AFF JSON metadata to ADK data (Git → SAP)
|
|
126
|
+
* Used when the metadata file is `.json` (ABAP File Format) instead of legacy `.xml`.
|
|
127
|
+
* Receives the parsed JSON object and returns the full payload including name.
|
|
128
|
+
*/
|
|
129
|
+
fromAffJson?(json: Record<string, unknown>): Partial<InferAdkData<T>> & {
|
|
130
|
+
name: string;
|
|
131
|
+
};
|
|
123
132
|
/**
|
|
124
133
|
* Set source files on ADK object during deserialization (Git → SAP)
|
|
125
134
|
* Symmetric counterpart to getSources
|
|
@@ -145,15 +154,26 @@ declare function isSupported(type: AbapObjectType$1): boolean;
|
|
|
145
154
|
*/
|
|
146
155
|
declare function getSupportedTypes(): AbapObjectType$1[];
|
|
147
156
|
//#endregion
|
|
148
|
-
//#region src/lib/
|
|
157
|
+
//#region src/lib/filename-parser.d.ts
|
|
158
|
+
/**
|
|
159
|
+
* abapGit filename parsing utilities.
|
|
160
|
+
*
|
|
161
|
+
* Extracted into a standalone module so it can be unit-tested without
|
|
162
|
+
* pulling in the full handler/schema dependency chain.
|
|
163
|
+
*/
|
|
149
164
|
/**
|
|
150
165
|
* abapGit file naming convention:
|
|
151
166
|
* - XML metadata: {name}.{type}.xml (e.g., zcl_myclass.clas.xml)
|
|
167
|
+
* - AFF JSON metadata: {name}.{type}.json (e.g., zfoo.bdef.json)
|
|
152
168
|
* - Source code: {name}.{type}.abap (e.g., zcl_myclass.clas.abap)
|
|
153
169
|
* - Source includes: {name}.{type}.{suffix}.abap (e.g., zcl_myclass.clas.testclasses.abap)
|
|
170
|
+
* - AFF source files: {name}.{type}.abdl, {name}.{type}.acds, {name}.{type}.asrvd
|
|
154
171
|
*/
|
|
155
172
|
/**
|
|
156
173
|
* Parse abapGit filename to extract object info
|
|
174
|
+
*
|
|
175
|
+
* Supports both legacy XML metadata (.xml) and AFF JSON metadata (.json),
|
|
176
|
+
* plus source file extensions (.abap, .abdl, .acds, .asrvd).
|
|
157
177
|
*/
|
|
158
178
|
declare function parseAbapGitFilename(filename: string): {
|
|
159
179
|
name: string;
|
|
@@ -162,25 +182,6 @@ declare function parseAbapGitFilename(filename: string): {
|
|
|
162
182
|
extension: string;
|
|
163
183
|
} | null;
|
|
164
184
|
//#endregion
|
|
165
|
-
//#region src/lib/filename/adt-uri-to-path.d.ts
|
|
166
|
-
/**
|
|
167
|
-
* Convert an ADT URI to an on-disk abapGit filename.
|
|
168
|
-
*
|
|
169
|
-
* abapGit stores objects as `<name>.<type>.<ext>` inside `src/`.
|
|
170
|
-
* Classes have additional includes serialised as
|
|
171
|
-
* `<name>.clas.<suffix>.abap`. Function modules become
|
|
172
|
-
* `<group>.fugr.<fm_name>.abap`. Namespaces are rendered as
|
|
173
|
-
* `(namespace)name`.
|
|
174
|
-
*
|
|
175
|
-
* Returns `null` for URIs we don't recognise; callers may warn or fall
|
|
176
|
-
* back to a synthetic path.
|
|
177
|
-
*/
|
|
178
|
-
/**
|
|
179
|
-
* Convert an ADT URI to the abapGit on-disk filename (lower-cased,
|
|
180
|
-
* namespace-aware). Returns `null` when the URI shape is not recognised.
|
|
181
|
-
*/
|
|
182
|
-
declare function adtUriToAbapGitPath(uri: string): string | null;
|
|
183
|
-
//#endregion
|
|
184
185
|
//#region src/lib/handlers/xml-format.d.ts
|
|
185
186
|
/**
|
|
186
187
|
* XML formatting utilities for abapGit serialization.
|
|
@@ -219,5 +220,5 @@ declare function moveNamespaceToAbap(xml: string): string;
|
|
|
219
220
|
*/
|
|
220
221
|
declare function formatAbapGitXml(xml: string): string;
|
|
221
222
|
//#endregion
|
|
222
|
-
export { abapGitPlugin as AbapGitPlugin, abapGitPlugin, abapGitPlugin as default, type AbapObjectType, type AdtPlugin, type ExportContext, type ExportResult, type FolderLogic, type ImportContext, type ImportResult, type ObjectHandler, type SerializedFile, abapgitFormatPlugin, adtUriToAbapGitPath, createFindingResolver, formatAbapGitXml, formatXmlAttributes, getHandler, getSupportedTypes, isSupported, moveNamespaceToAbap, parseAbapGitFilename, parseAbapGitMetadata, resolvePackageFromDir, reverseResolveRootPackage };
|
|
223
|
+
export { abapGitPlugin as AbapGitPlugin, abapGitPlugin, abapGitPlugin as default, type AbapObjectType, type AdtPlugin, type ExportContext, type ExportResult, type FolderLogic, type FormatMaterializationInput, type FormatMaterializationResult, type ImportContext, type ImportResult, type MaterializedFormatFile, type ObjectHandler, type SerializedFile, abapgitFormatPlugin, adtUriToAbapGitPath, createFindingResolver, formatAbapGitXml, formatXmlAttributes, getHandler, getSupportedTypes, isSupported, moveNamespaceToAbap, parseAbapGitFilename, parseAbapGitMetadata, resolvePackageFromDir, reverseResolveRootPackage };
|
|
223
224
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/lib/format-plugin.ts","../src/lib/folder-logic.ts","../src/lib/abapgit.ts","../src/lib/handlers/abapgit-schema.ts","../src/lib/handlers/base.ts","../src/lib/
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/lib/format-plugin.ts","../src/lib/folder-logic.ts","../src/lib/abapgit.ts","../src/lib/handlers/abapgit-schema.ts","../src/lib/handlers/base.ts","../src/lib/filename-parser.ts","../src/lib/handlers/xml-format.ts"],"mappings":";;;;;cAgGa,qBAAqB;;;;;;;;;;;KCvFtB;;;;iBA6CI,qBAAqB;EACnC,aAAa;EACb;;;;;;;;;;;;;;;;iBAsBc,sBACd,iBACA,aAAa,aACb;;;;;;;;;;;;;iBA2Cc,0BACd,oBACA,gBACA,aAAa;;;;;;;;cCwBF,eAAe;;;;;;;;;;UClIX,cACf,OACA,SACA,UAAU,aAAa,oBACf,YAAY,OAAO;;WAElB,SAAS;;;KA2CR,gBAAgB,KAC1B,UAAU,6BAA6B,KAAK;;;;;;;KC/ClC,aAAa,KACvB,UAAU,gBAAgB,UAAU,KAAK;;;;KAsB/B;;;;UAKK;;EAEf;;EAEA;;EAEA,WAAW;;;;;;;;UASI,cACf,UAAU,YAAY,WACtB,gBAAgB,kCAAkC;;WAMzC,MAAM;;WAEN;;WAEA,QAAQ;;WAER,oBAAoB;;WAEpB;;EAET,UACE,QAAQ,GACR,UAAU,yBACT,QAAQ;;;;;EAKX,aACE,QAAQ,gBAAgB,WACvB,QAAQ,aAAa;IAAQ;;;;;;;EAOhC,aAAa,MAAM,0BAA0B,QAAQ,aAAa;IAChE;;;;;;EAOF,YAAY,QAAQ,GAAG,SAAS;;;;;;;;;iBAyBlB,WAAW,MAAM,mBAAiB;;;;;;iBASlC,YAAY,MAAM;;;;iBAOlB,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;iBCjIrB,qBAAqB;EACnC;EACA;EACA;EACA;;;;;;;;;;;;;;;;;;;;;;;;;;iBC+Bc,oBAAoB;;;;;;;iBA8DpB,oBAAoB;;;;;;iBA8BpB,iBAAiB"}
|