@vacantthinker/firefox-addon-framework-easy 2026.621.800 → 2026.621.1121
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/ContentJs.d.ts +1 -0
- package/dist/ContentJs.d.ts.map +1 -1
- package/dist/ContentJs.js +25 -5
- package/dist/backgroundJs.d.ts.map +1 -1
- package/dist/backgroundJs.js +4 -0
- package/dist/serviceOperationYTB.d.ts +6 -5
- package/dist/serviceOperationYTB.d.ts.map +1 -1
- package/dist/serviceOperationYTB.js +6 -7
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/ContentJs.d.ts
CHANGED
|
@@ -61,6 +61,7 @@ export declare function ctJsHideElements(selectors: string[]): void;
|
|
|
61
61
|
export declare function ctJskeepAlive(tag?: string, enableLog?: boolean): void;
|
|
62
62
|
export declare function ctJsCloseTab(): Promise<void>;
|
|
63
63
|
export declare function ctJsRemoveCurrentTab(): Promise<void>;
|
|
64
|
+
export declare function ctJsFocusCurrentTab(): Promise<void>;
|
|
64
65
|
export declare function ctJsFocusTargetTab(targetTabId: number): Promise<void>;
|
|
65
66
|
export declare function ctJsReloadTargetTab(targetTabId: number): Promise<void>;
|
|
66
67
|
export declare function ctJsInfoToBackground(info: string): Promise<void>;
|
package/dist/ContentJs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentJs.d.ts","sourceRoot":"","sources":["../src/ContentJs.ts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,QAgBtF;AAED;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,MAAM,EAChB,aAAa,GAAE,MAAc,EAC7B,OAAO,GAAE,MAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CAoDf;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOvE;AAED,wBAAsB,wBAAwB,kBAE7C;AAED,wBAAsB,wBAAwB,kBAE7C;AAED,wBAAsB,wBAAwB,kBAE7C;AAED,wBAAsB,uBAAuB,kBAE5C;AAED,wBAAsB,sBAAsB,kBAE3C;AAED,QAAA,MAAM,YAAY;;;;;;
|
|
1
|
+
{"version":3,"file":"ContentJs.d.ts","sourceRoot":"","sources":["../src/ContentJs.ts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,QAgBtF;AAED;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,MAAM,EAChB,aAAa,GAAE,MAAc,EAC7B,OAAO,GAAE,MAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CAoDf;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOvE;AAED,wBAAsB,wBAAwB,kBAE7C;AAED,wBAAsB,wBAAwB,kBAE7C;AAED,wBAAsB,wBAAwB,kBAE7C;AAED,wBAAsB,uBAAuB,kBAE5C;AAED,wBAAsB,sBAAsB,kBAE3C;AAED,QAAA,MAAM,YAAY;;;;;;CAqBR,CAAC;AAEX,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,OAAO,YAAY,iBAGtE;AAID;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKpE;AAGD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBtF;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,iBAE7C;AAED,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,iBAEzD;AAED,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,MAAM,iBAExD;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,QAKnD;AAQD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAW,EAAE,SAAS,UAAO,QAgB/D;AAED,wBAAsB,YAAY,kBAIjC;AAED,wBAAsB,oBAAoB,kBAIzC;AAED,wBAAsB,mBAAmB,kBAIxC;AAED,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,iBAK3D;AAED,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,iBAK5D;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,iBAGtD;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iBAIxE;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,iBAIrD;AAED,wBAAsB,6BAA6B,CAAC,CAAC,SAAS;IAC5D,GAAG,EAAE,MAAM,CAAA;CACZ,EAAE,OAAO,EAAE,CAAC,iBAEZ"}
|
package/dist/ContentJs.js
CHANGED
|
@@ -102,11 +102,26 @@ export async function ctJsRandomSleep501_800() {
|
|
|
102
102
|
await ctJsRandomSleep(501, 800);
|
|
103
103
|
}
|
|
104
104
|
const SLEEP_RANGES = {
|
|
105
|
-
vShort: [
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
105
|
+
vShort: [
|
|
106
|
+
501,
|
|
107
|
+
800
|
|
108
|
+
],
|
|
109
|
+
short: [
|
|
110
|
+
501,
|
|
111
|
+
1000
|
|
112
|
+
],
|
|
113
|
+
medium: [
|
|
114
|
+
1001,
|
|
115
|
+
1500
|
|
116
|
+
],
|
|
117
|
+
long: [
|
|
118
|
+
1501,
|
|
119
|
+
2000
|
|
120
|
+
],
|
|
121
|
+
vLong: [
|
|
122
|
+
2001,
|
|
123
|
+
2500
|
|
124
|
+
],
|
|
110
125
|
};
|
|
111
126
|
export async function ctJsPresetSleep(preset) {
|
|
112
127
|
const [min, max] = SLEEP_RANGES[preset];
|
|
@@ -196,6 +211,11 @@ export async function ctJsRemoveCurrentTab() {
|
|
|
196
211
|
act: 'actRemoveCurrentTab',
|
|
197
212
|
});
|
|
198
213
|
}
|
|
214
|
+
export async function ctJsFocusCurrentTab() {
|
|
215
|
+
await browserRuntimeSendMessage({
|
|
216
|
+
act: 'actFocusCurrentTab',
|
|
217
|
+
});
|
|
218
|
+
}
|
|
199
219
|
export async function ctJsFocusTargetTab(targetTabId) {
|
|
200
220
|
await browserRuntimeSendMessage({
|
|
201
221
|
targetTabId: targetTabId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backgroundJs.d.ts","sourceRoot":"","sources":["../src/backgroundJs.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,wBAAwB,EAA6B,MAAM,SAAS,CAAC;AAI7E,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAErF;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,CAAC,SAAS,MAAM,GAAG,wBAAwB,KACpF,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"backgroundJs.d.ts","sourceRoot":"","sources":["../src/backgroundJs.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,wBAAwB,EAA6B,MAAM,SAAS,CAAC;AAI7E,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAErF;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,CAAC,SAAS,MAAM,GAAG,wBAAwB,KACpF,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,CAoCzB;AAED;;GAEG;AACH,wBAAgB,mCAAmC,CAAC,CAAC,SAAS,MAAM,EAClE,WAAW,EAAE,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,EACnC,MAAM,GAAE,MAAyB,QAsBlC"}
|
package/dist/backgroundJs.js
CHANGED
|
@@ -36,6 +36,10 @@ export function bkJsCreateActionBaseHandlers() {
|
|
|
36
36
|
if (rest)
|
|
37
37
|
await tabOpReload(rest.targetTabId);
|
|
38
38
|
});
|
|
39
|
+
map.set('actFocusCurrentTab', async (_rest, tabId) => {
|
|
40
|
+
if (tabId)
|
|
41
|
+
await tabOpFocus(tabId);
|
|
42
|
+
});
|
|
39
43
|
map.set('actRemoveCurrentTab', async (_rest, tabId) => {
|
|
40
44
|
if (tabId)
|
|
41
45
|
await tabOpRemove(tabId);
|
|
@@ -11,7 +11,7 @@ export interface PlaylistInfoYTB extends PlaylistLinkInfoYTB {
|
|
|
11
11
|
}
|
|
12
12
|
export type VideoQualityYTB = "144" | "240" | "360" | "480" | "720" | "1080" | "1440" | "2160";
|
|
13
13
|
export type ImageQualityYTB = 'maxresdefault' | 'sddefault' | 'hqdefault' | 'mqdefault';
|
|
14
|
-
export declare function serviceGetImageURLYTB(vid: string, imageQuality
|
|
14
|
+
export declare function serviceGetImageURLYTB(vid: string, imageQuality?: ImageQualityYTB): string;
|
|
15
15
|
/**
|
|
16
16
|
* `https://www.youtube.com/watch?v=${vid}`
|
|
17
17
|
* @param vid
|
|
@@ -22,12 +22,13 @@ export interface VideoInfoBase {
|
|
|
22
22
|
videolink: string;
|
|
23
23
|
title: string;
|
|
24
24
|
}
|
|
25
|
-
export declare function serviceGetVideoInfoBaseYTB(videolinkOrigin: string, titleOrigin: string
|
|
26
|
-
export declare function serviceGetVideoInfoYTB(videolinkOrigin: string, titleOrigin: string, imageQuality
|
|
25
|
+
export declare function serviceGetVideoInfoBaseYTB(videolinkOrigin: string, titleOrigin: string): VideoInfoBase | undefined;
|
|
26
|
+
export declare function serviceGetVideoInfoYTB(videolinkOrigin: string, titleOrigin: string, imageQuality?: ImageQualityYTB, videoQuality?: VideoQualityYTB): VideoInfoYTB | undefined;
|
|
27
27
|
export interface VideoInfoYTB extends VideoInfoBase {
|
|
28
28
|
filenameVideo: string;
|
|
29
29
|
filenameImg: string;
|
|
30
30
|
imageUrl: string;
|
|
31
|
+
videoQuality: VideoQualityYTB;
|
|
31
32
|
}
|
|
32
33
|
/**
|
|
33
34
|
* Extracts video ID and creates a clean YouTube URL.
|
|
@@ -37,6 +38,6 @@ export declare function servicePureVideolinkYTB(videolinkOrigin: string): VideoL
|
|
|
37
38
|
/**
|
|
38
39
|
* Extracts playlist ID and creates a clean YouTube playlist URL.
|
|
39
40
|
*/
|
|
40
|
-
declare function servicePurePlaylistVideolinkYTB(playlistLinkOrigin: string): PlaylistLinkInfoYTB | null;
|
|
41
|
-
export
|
|
41
|
+
export declare function servicePurePlaylistVideolinkYTB(playlistLinkOrigin: string): PlaylistLinkInfoYTB | null;
|
|
42
|
+
export {};
|
|
42
43
|
//# sourceMappingURL=serviceOperationYTB.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serviceOperationYTB.d.ts","sourceRoot":"","sources":["../src/serviceOperationYTB.ts"],"names":[],"mappings":"AAEA,UAAU,gBAAgB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IAC1D,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,eAAe,GACvB,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,MAAM,GACN,MAAM,GACN,MAAM,CAAA;AAEV,MAAM,MAAM,eAAe,GACvB,eAAe,GACf,WAAW,GACX,WAAW,GACX,WAAW,CAAA;AAEf,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,YAAY,
|
|
1
|
+
{"version":3,"file":"serviceOperationYTB.d.ts","sourceRoot":"","sources":["../src/serviceOperationYTB.ts"],"names":[],"mappings":"AAEA,UAAU,gBAAgB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IAC1D,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,eAAe,GACvB,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,MAAM,GACN,MAAM,GACN,MAAM,CAAA;AAEV,MAAM,MAAM,eAAe,GACvB,eAAe,GACf,WAAW,GACX,WAAW,GACX,WAAW,CAAA;AAEf,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,YAAY,GAAE,eAAiC,GAC9C,MAAM,CAER;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,0BAA0B,CACxC,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAC3C,aAAa,GAAG,SAAS,CAM3B;AAED,wBAAgB,sBAAsB,CACpC,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAC5C,YAAY,GAAE,eAAiC,EAC/C,YAAY,GAAE,eAAuB,GACpC,YAAY,GAAG,SAAS,CAU1B;AAED,MAAM,WAAW,YAAa,SAAQ,aAAa;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,eAAe,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAmCxF;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,kBAAkB,EAAE,MAAM,GACxE,mBAAmB,GAAG,IAAI,CAqB3B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { serviceRemoveIllegalWord } from "./serviceOpContent";
|
|
2
|
-
export function serviceGetImageURLYTB(vid, imageQuality) {
|
|
2
|
+
export function serviceGetImageURLYTB(vid, imageQuality = "maxresdefault") {
|
|
3
3
|
return `https://i.ytimg.com/vi/${vid}/${imageQuality}.jpg`;
|
|
4
4
|
}
|
|
5
5
|
/**
|
|
@@ -9,7 +9,7 @@ export function serviceGetImageURLYTB(vid, imageQuality) {
|
|
|
9
9
|
export function serviceGetVideolinkByVid(vid) {
|
|
10
10
|
return `https://www.youtube.com/watch?v=${vid}`;
|
|
11
11
|
}
|
|
12
|
-
export function serviceGetVideoInfoBaseYTB(videolinkOrigin, titleOrigin
|
|
12
|
+
export function serviceGetVideoInfoBaseYTB(videolinkOrigin, titleOrigin) {
|
|
13
13
|
const videolinkYTB = servicePureVideolinkYTB(videolinkOrigin);
|
|
14
14
|
if (!videolinkYTB)
|
|
15
15
|
return;
|
|
@@ -17,15 +17,15 @@ export function serviceGetVideoInfoBaseYTB(videolinkOrigin, titleOrigin, imageQu
|
|
|
17
17
|
const title = serviceRemoveIllegalWord(titleOrigin);
|
|
18
18
|
return { vid, videolink, title };
|
|
19
19
|
}
|
|
20
|
-
export function serviceGetVideoInfoYTB(videolinkOrigin, titleOrigin, imageQuality) {
|
|
21
|
-
const infoBase = serviceGetVideoInfoBaseYTB(videolinkOrigin, titleOrigin
|
|
20
|
+
export function serviceGetVideoInfoYTB(videolinkOrigin, titleOrigin, imageQuality = "maxresdefault", videoQuality = "720") {
|
|
21
|
+
const infoBase = serviceGetVideoInfoBaseYTB(videolinkOrigin, titleOrigin);
|
|
22
22
|
if (!infoBase)
|
|
23
23
|
return;
|
|
24
24
|
const { vid, title } = infoBase;
|
|
25
25
|
const filenameVideo = `${title}.mp4`;
|
|
26
26
|
const filenameImg = `${title}.jpg`;
|
|
27
27
|
const imageUrl = serviceGetImageURLYTB(vid, imageQuality);
|
|
28
|
-
return { ...infoBase, filenameVideo, filenameImg, imageUrl };
|
|
28
|
+
return { ...infoBase, filenameVideo, filenameImg, imageUrl, videoQuality };
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
31
|
* Extracts video ID and creates a clean YouTube URL.
|
|
@@ -65,7 +65,7 @@ export function servicePureVideolinkYTB(videolinkOrigin) {
|
|
|
65
65
|
/**
|
|
66
66
|
* Extracts playlist ID and creates a clean YouTube playlist URL.
|
|
67
67
|
*/
|
|
68
|
-
function servicePurePlaylistVideolinkYTB(playlistLinkOrigin) {
|
|
68
|
+
export function servicePurePlaylistVideolinkYTB(playlistLinkOrigin) {
|
|
69
69
|
if (!playlistLinkOrigin) {
|
|
70
70
|
return null;
|
|
71
71
|
}
|
|
@@ -84,4 +84,3 @@ function servicePurePlaylistVideolinkYTB(playlistLinkOrigin) {
|
|
|
84
84
|
return null; // Invalid URL
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
-
export default servicePurePlaylistVideolinkYTB;
|
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DownloadParams } from "./browserDownload";
|
|
2
|
-
export type MessageActionBaseOptions = "actDownloadFile" | "actNotification" | 'actInfo' | "actMarco" | "actRemoveCurrentTab" | "actFocusTargetTab" | "actReloadTargetTab";
|
|
2
|
+
export type MessageActionBaseOptions = "actDownloadFile" | "actNotification" | 'actInfo' | "actMarco" | "actRemoveCurrentTab" | "actFocusCurrentTab" | "actFocusTargetTab" | "actReloadTargetTab";
|
|
3
3
|
export interface MessagePayloadAction {
|
|
4
4
|
act: MessageActionBaseOptions;
|
|
5
5
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAEjD,MAAM,MAAM,wBAAwB,GAChC,iBAAiB,GACjB,iBAAiB,GACjB,SAAS,GACT,UAAU,GACV,qBAAqB,GACrB,mBAAmB,GACnB,oBAAoB,CAAA;AAExB,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,wBAAwB,CAAA;CAC9B;AAED,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAmB,SAAQ,oBAAoB;IAC9D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,uBAAwB,SAAQ,oBAAoB;IACnE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,4BAA4B,GAAG,uBAAuB,CAAC;AACnE,MAAM,MAAM,6BAA6B,GAAG,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAEjD,MAAM,MAAM,wBAAwB,GAChC,iBAAiB,GACjB,iBAAiB,GACjB,SAAS,GACT,UAAU,GACV,qBAAqB,GACrB,oBAAoB,GACpB,mBAAmB,GACnB,oBAAoB,CAAA;AAExB,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,wBAAwB,CAAA;CAC9B;AAED,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAmB,SAAQ,oBAAoB;IAC9D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,uBAAwB,SAAQ,oBAAoB;IACnE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,4BAA4B,GAAG,uBAAuB,CAAC;AACnE,MAAM,MAAM,6BAA6B,GAAG,uBAAuB,CAAC"}
|