@refinedev/core 4.14.1 → 4.15.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/CHANGELOG.md +30 -0
- package/dist/components/containers/refine/index.d.ts +23 -23
- package/dist/components/gh-banner/index.d.ts +1 -0
- package/dist/components/gh-banner/index.d.ts.map +1 -1
- package/dist/definitions/helpers/generateDocumentTitle/index.d.ts +9 -0
- package/dist/definitions/helpers/generateDocumentTitle/index.d.ts.map +1 -0
- package/dist/definitions/helpers/index.d.ts +1 -0
- package/dist/definitions/helpers/index.d.ts.map +1 -1
- package/dist/esm/index.js +6 -6
- package/dist/esm/index.js.map +1 -1
- package/dist/iife/index.js +6 -6
- package/dist/iife/index.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/containers/refine/index.tsx +23 -23
- package/src/definitions/helpers/generateDocumentTitle/index.ts +48 -0
- package/src/definitions/helpers/index.ts +1 -0
- package/src/hooks/data/useCustom.ts +4 -4
- package/src/hooks/data/useDelete.ts +3 -3
- package/src/hooks/data/useInfiniteList.ts +2 -2
- package/src/hooks/data/useList.ts +2 -2
- package/src/hooks/data/useMany.ts +5 -5
- package/src/hooks/data/useOne.ts +4 -4
- package/src/index.tsx +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,35 @@
|
|
|
1
1
|
# @pankod/refine-core
|
|
2
2
|
|
|
3
|
+
## 4.15.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#4313](https://github.com/refinedev/refine/pull/4313) [`28fe67047a0`](https://github.com/refinedev/refine/commit/28fe67047a084dff37fbdbee6a132f85f9413657) Thanks [@abdellah711](https://github.com/abdellah711)! - feat: implement `generateDefaultDocumentTitle` function
|
|
8
|
+
|
|
9
|
+
This function generates a default document title based on the current route by following these rules (`resource` in this case is "Post"):
|
|
10
|
+
|
|
11
|
+
- list -> `Posts | refine`
|
|
12
|
+
- edit -> `#{id} Edit Post | refine`
|
|
13
|
+
- show -> `#{id} Show Post | refine`
|
|
14
|
+
- create -> `Create new Post | refine`
|
|
15
|
+
- default (not a `resource`) -> `refine`
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- [#4381](https://github.com/refinedev/refine/pull/4381) [`500cf2becc2`](https://github.com/refinedev/refine/commit/500cf2becc242e01d93a5576957f003851190873) Thanks [@yildirayunlu](https://github.com/yildirayunlu)! - feat: export `TranslationContext`
|
|
20
|
+
|
|
21
|
+
## 4.14.3
|
|
22
|
+
|
|
23
|
+
### Patch Changes
|
|
24
|
+
|
|
25
|
+
- [#4279](https://github.com/refinedev/refine/pull/4279) [`3e4c977b8d3`](https://github.com/refinedev/refine/commit/3e4c977b8d3cbe17f4f460f22204c3880a40bb13) Thanks [@yildirayunlu](https://github.com/yildirayunlu)! - fix: queryKey method params for `useDelete`, `useDeleteMany` and`useUpdate` hooks
|
|
26
|
+
|
|
27
|
+
## 4.14.2
|
|
28
|
+
|
|
29
|
+
### Patch Changes
|
|
30
|
+
|
|
31
|
+
- [#4279](https://github.com/refinedev/refine/pull/4279) [`3e4c977b8d3`](https://github.com/refinedev/refine/commit/3e4c977b8d3cbe17f4f460f22204c3880a40bb13) Thanks [@yildirayunlu](https://github.com/yildirayunlu)! - fix: queryKey method params for `useDelete`, `useDeleteMany` and`useUpdate` hooks
|
|
32
|
+
|
|
3
33
|
## 4.14.1
|
|
4
34
|
|
|
5
35
|
### Patch Changes
|
|
@@ -7,129 +7,129 @@ export interface RefineProps {
|
|
|
7
7
|
/**
|
|
8
8
|
* `resources` is the predefined interaction points for a refine app. A resource represents an entity in an endpoint in the API.
|
|
9
9
|
* While this is not a required property, it is used in resource detection and creation of routes for the app.
|
|
10
|
-
* @type [`ResourceProps[]`](/docs/api-reference/core/components/refine-config/#resources)
|
|
10
|
+
* @type [`ResourceProps[]`](https://refine.dev/docs/api-reference/core/components/refine-config/#resources)
|
|
11
11
|
*/
|
|
12
12
|
resources?: ResourceProps[];
|
|
13
13
|
/**
|
|
14
14
|
* **refine** needs some router functions to create resource pages, handle navigation, etc. This provider allows you to use the router library you want
|
|
15
|
-
* @type [`IRouterProvider`](/docs/api-reference/core/providers/router-provider/)
|
|
15
|
+
* @type [`IRouterProvider`](https://refine.dev/docs/api-reference/core/providers/router-provider/)
|
|
16
16
|
* @deprecated This property is deprecated and was the legacy way of routing. Please use `routerProvider` with new router bindings instead.
|
|
17
17
|
*/
|
|
18
18
|
legacyRouterProvider?: IRouterProvider;
|
|
19
19
|
/**
|
|
20
20
|
* Router bindings for **refine**. A simple interface for **refine** to interact with your router in a flexible way.
|
|
21
|
-
* @type [`RouterBindings`](/docs/api-reference/core/bindings/router/)
|
|
21
|
+
* @type [`RouterBindings`](https://refine.dev/docs/api-reference/core/bindings/router/)
|
|
22
22
|
*/
|
|
23
23
|
routerProvider?: RouterBindings;
|
|
24
24
|
/**
|
|
25
25
|
* A `dataProvider` is the place where a refine app communicates with an API. Data providers also act as adapters for refine, making it possible for it to consume different API's and data services.
|
|
26
|
-
* @type [`IDataContextProvider` | `IDataMultipleContextProvider`](/docs/api-reference/core/providers/data-provider/)
|
|
26
|
+
* @type [`IDataContextProvider` | `IDataMultipleContextProvider`](https://refine.dev/docs/api-reference/core/providers/data-provider/)
|
|
27
27
|
*/
|
|
28
28
|
dataProvider: IDataContextProvider | IDataMultipleContextProvider;
|
|
29
29
|
/**
|
|
30
30
|
* `authProvider` handles authentication logic like login, logout flow and checking user credentials. It is an object with methods that refine uses when necessary.
|
|
31
|
-
* @type [`AuthBindings`](/docs/api-reference/core/providers/auth-provider/)
|
|
31
|
+
* @type [`AuthBindings`](https://refine.dev/docs/api-reference/core/providers/auth-provider/)
|
|
32
32
|
*/
|
|
33
33
|
authProvider?: AuthBindings;
|
|
34
34
|
/**
|
|
35
35
|
* `legacyAuthProvider` handles authentication logic like login, logout flow and checking user credentials. It is an object with methods that refine uses when necessary.
|
|
36
|
-
* @type [`AuthProvider`](/docs/api-reference/core/providers/auth-provider/)
|
|
36
|
+
* @type [`AuthProvider`](https://refine.dev/docs/api-reference/core/providers/auth-provider/)
|
|
37
37
|
* @deprecated `legacyAuthProvider` is deprecated with refine@4, use `authProvider` instead.
|
|
38
38
|
*/
|
|
39
39
|
legacyAuthProvider?: LegacyAuthProvider;
|
|
40
40
|
/**
|
|
41
41
|
* **refine** lets you add Realtime support to your app via `liveProvider`. It can be used to update and show data in Realtime throughout your app.
|
|
42
|
-
* @type [`ILiveContext`](/docs/api-reference/core/providers/live-provider/)
|
|
42
|
+
* @type [`ILiveContext`](https://refine.dev/docs/api-reference/core/providers/live-provider/)
|
|
43
43
|
*/
|
|
44
44
|
liveProvider?: ILiveContext;
|
|
45
45
|
/**
|
|
46
46
|
* `notificationProvider` handles notification logics. It is an object with methods that refine uses when necessary.
|
|
47
|
-
* @type [`NotificationProvider` | `(() => NotificationProvider)`](/docs/api-reference/core/providers/notification-provider/)
|
|
47
|
+
* @type [`NotificationProvider` | `(() => NotificationProvider)`](https://refine.dev/docs/api-reference/core/providers/notification-provider/)
|
|
48
48
|
*/
|
|
49
49
|
notificationProvider?: NotificationProvider | (() => NotificationProvider);
|
|
50
50
|
/**
|
|
51
51
|
* `accessControlProvider` is the entry point for implementing access control for refine apps.
|
|
52
|
-
* @type [`AccessControlProvider`](/docs/api-reference/core/providers/accessControl-provider/)
|
|
52
|
+
* @type [`AccessControlProvider`](https://refine.dev/docs/api-reference/core/providers/accessControl-provider/)
|
|
53
53
|
*/
|
|
54
54
|
accessControlProvider?: AccessControlProvider;
|
|
55
55
|
/**
|
|
56
56
|
* **refine** allows you to track changes in your data and keep track of who made the changes.
|
|
57
|
-
* @type [`AuditLogProvider`](/docs/api-reference/core/providers/audit-log-provider#overview)
|
|
57
|
+
* @type [`AuditLogProvider`](https://refine.dev/docs/api-reference/core/providers/audit-log-provider#overview)
|
|
58
58
|
*/
|
|
59
59
|
auditLogProvider?: AuditLogProvider;
|
|
60
60
|
/**
|
|
61
61
|
* `i18nProvider` property lets you add i18n support to your app. Making you able to use any i18n framework.
|
|
62
|
-
* @type [`i18nProvider`](/docs/api-reference/core/providers/i18n-provider/)
|
|
62
|
+
* @type [`i18nProvider`](https://refine.dev/docs/api-reference/core/providers/i18n-provider/)
|
|
63
63
|
*/
|
|
64
64
|
i18nProvider?: I18nProvider;
|
|
65
65
|
/**
|
|
66
66
|
* A custom error component.
|
|
67
|
-
* @type [`ReactNode`](/docs/api-reference/core/components/refine-config/#catchall)
|
|
67
|
+
* @type [`ReactNode`](https://refine.dev/docs/api-reference/core/components/refine-config/#catchall)
|
|
68
68
|
* @deprecated Please use the `catchAll` element in your routes instead.
|
|
69
69
|
*/
|
|
70
70
|
catchAll?: React.ReactNode;
|
|
71
71
|
/**
|
|
72
72
|
* Custom login component can be passed to the `LoginPage` property.
|
|
73
|
-
* @type [`React.FC`](/docs/api-reference/core/components/refine-config/#loginpage)
|
|
73
|
+
* @type [`React.FC`](https://refine.dev/docs/api-reference/core/components/refine-config/#loginpage)
|
|
74
74
|
* @deprecated Please use the `LoginPage` component in your routes instead.
|
|
75
75
|
*/
|
|
76
76
|
LoginPage?: React.FC;
|
|
77
77
|
/**
|
|
78
78
|
* A custom dashboard page can be passed to the `DashboardPage` prop which is accessible on root route.
|
|
79
|
-
* @type [`React.FC<DashboardPageProps>`](/docs/api-reference/core/components/refine-config/#dashboardpage)
|
|
79
|
+
* @type [`React.FC<DashboardPageProps>`](https://refine.dev/docs/api-reference/core/components/refine-config/#dashboardpage)
|
|
80
80
|
* @deprecated Please use the `DashboardPage` component in your routes instead.
|
|
81
81
|
*/
|
|
82
82
|
DashboardPage?: React.FC<DashboardPageProps>;
|
|
83
83
|
/**
|
|
84
84
|
* Custom ready page component can be set by passing to `ReadyPage` property.
|
|
85
|
-
* @type [`React.FC`](/docs/api-reference/core/components/refine-config/#readypage)
|
|
85
|
+
* @type [`React.FC`](https://refine.dev/docs/api-reference/core/components/refine-config/#readypage)
|
|
86
86
|
* @deprecated This component is only used with the legacy router and will be removed in the future.
|
|
87
87
|
*/
|
|
88
88
|
ReadyPage?: React.FC;
|
|
89
89
|
/**
|
|
90
90
|
* Default layout can be customized by passing the `Layout` property.
|
|
91
|
-
* @type [`React.FC<LayoutProps>`](/docs/api-reference/core/components/refine-config/#layout)
|
|
91
|
+
* @type [`React.FC<LayoutProps>`](https://refine.dev/docs/api-reference/core/components/refine-config/#layout)
|
|
92
92
|
* @deprecated Please use the `Layout` component as a children instead of a prop.
|
|
93
93
|
*/
|
|
94
94
|
Layout?: React.FC<LayoutProps>;
|
|
95
95
|
/**
|
|
96
96
|
* The default sidebar can be customized by using refine hooks and passing custom components to `Sider` property.
|
|
97
|
-
* @type [`React.FC`](/docs/api-reference/core/components/refine-config/#sider)
|
|
97
|
+
* @type [`React.FC`](https://refine.dev/docs/api-reference/core/components/refine-config/#sider)
|
|
98
98
|
* @deprecated Please pass the `Sider` component to your `Layout` component.
|
|
99
99
|
*/
|
|
100
100
|
Sider?: React.FC;
|
|
101
101
|
/**
|
|
102
102
|
* The default app header can be customized by passing the `Header` property.
|
|
103
|
-
* @type [`React.FC`](/docs/api-reference/core/components/refine-config/#header)
|
|
103
|
+
* @type [`React.FC`](https://refine.dev/docs/api-reference/core/components/refine-config/#header)
|
|
104
104
|
* @deprecated Please pass the `Header` component to your `Layout` component.
|
|
105
105
|
*/
|
|
106
106
|
Header?: React.FC;
|
|
107
107
|
/**
|
|
108
108
|
*The default app footer can be customized by passing the `Footer` property.
|
|
109
|
-
* @type [`React.FC`](/docs/api-reference/core/components/refine-config/#footer)
|
|
109
|
+
* @type [`React.FC`](https://refine.dev/docs/api-reference/core/components/refine-config/#footer)
|
|
110
110
|
* @deprecated Please pass the `Footer` component to your `Layout` component.
|
|
111
111
|
*/
|
|
112
112
|
Footer?: React.FC;
|
|
113
113
|
/**
|
|
114
114
|
* The component wanted to be placed out of app layout structure can be set by passing to `OffLayoutArea` prop.
|
|
115
|
-
* @type [`React.FC`](/docs/api-reference/core/components/refine-config/#offlayoutarea)
|
|
115
|
+
* @type [`React.FC`](https://refine.dev/docs/api-reference/core/components/refine-config/#offlayoutarea)
|
|
116
116
|
* @deprecated Please use your `OffLayoutArea` component as a children instead of a prop.
|
|
117
117
|
*/
|
|
118
118
|
OffLayoutArea?: React.FC;
|
|
119
119
|
/**
|
|
120
120
|
* TThe app title can be set by passing the `Title` property.
|
|
121
|
-
* @type [`React.FC<TitleProps>`](/docs/api-reference/core/components/refine-config/#title)
|
|
121
|
+
* @type [`React.FC<TitleProps>`](https://refine.dev/docs/api-reference/core/components/refine-config/#title)
|
|
122
122
|
* @deprecated Please pass the `Title` component to your `Layout` component.
|
|
123
123
|
*/
|
|
124
124
|
Title?: React.FC<TitleProps>;
|
|
125
125
|
/**
|
|
126
126
|
* Callback to handle all live events.
|
|
127
|
-
* @type [`(event: LiveEvent) => void`](/docs/api-reference/core/providers/live-provider/#onliveevent)
|
|
127
|
+
* @type [`(event: LiveEvent) => void`](https://refine.dev/docs/api-reference/core/providers/live-provider/#onliveevent)
|
|
128
128
|
*/
|
|
129
129
|
onLiveEvent?: LiveModeProps["onLiveEvent"];
|
|
130
130
|
/**
|
|
131
131
|
* `options` is used to configure the app.
|
|
132
|
-
* @type [`IRefineOptions`](/docs/api-reference/core/components/refine-config/#options
|
|
132
|
+
* @type [`IRefineOptions`](https://refine.dev/docs/api-reference/core/components/refine-config/#options)
|
|
133
133
|
* */
|
|
134
134
|
options?: IRefineOptions;
|
|
135
135
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/gh-banner/index.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,mBA4ExB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/gh-banner/index.tsx"],"names":[],"mappings":";AAGA,eAAO,MAAM,YAAY,mBA4ExB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IResourceItem } from "@contexts/resource";
|
|
2
|
+
/**
|
|
3
|
+
* Generates document title for the given resource and action.
|
|
4
|
+
*/
|
|
5
|
+
export declare function generateDefaultDocumentTitle(translate: {
|
|
6
|
+
(key: string, options?: any, defaultMessage?: string | undefined): string;
|
|
7
|
+
(key: string, defaultMessage?: string | undefined): string;
|
|
8
|
+
}, resource?: IResourceItem, action?: string, id?: string): string;
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/definitions/helpers/generateDocumentTitle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAInD;;GAEG;AACH,wBAAgB,4BAA4B,CACxC,SAAS,EAAE;IACP,CACI,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,GAAG,EACb,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,GACpC,MAAM,CAAC;IACV,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;CAC9D,EACD,QAAQ,CAAC,EAAE,aAAa,EACxB,MAAM,CAAC,EAAE,MAAM,EACf,EAAE,CAAC,EAAE,MAAM,UA6Bd"}
|
|
@@ -21,4 +21,5 @@ export { composeRoute } from "./router/compose-route";
|
|
|
21
21
|
export { useActiveAuthProvider } from "./useActiveAuthProvider";
|
|
22
22
|
export { handlePaginationParams } from "./handlePaginationParams";
|
|
23
23
|
export { useMediaQuery } from "./useMediaQuery";
|
|
24
|
+
export { generateDefaultDocumentTitle } from './generateDocumentTitle';
|
|
24
25
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/definitions/helpers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EACH,gBAAgB,EAChB,oBAAoB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/definitions/helpers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EACH,gBAAgB,EAChB,oBAAoB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAA"}
|