@argentic/chest-sdk 0.4.0 → 0.5.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/README.md +508 -80
- package/client/index.ts +11 -7
- package/client/src/api.ts +19 -18
- package/client/src/database.ts +6 -1
- package/client/src/errors.ts +50 -0
- package/client/src/eventrules.ts +117 -0
- package/client/src/events.ts +181 -39
- package/client/src/files.ts +37 -7
- package/client/src/member.ts +15 -9
- package/client/src/members.ts +34 -16
- package/client/src/notifications.ts +84 -27
- package/client/src/realtime-client.ts +516 -0
- package/client/src/realtime.ts +118 -0
- package/client/src/sealed.ts +158 -0
- package/client/src/signed.ts +8 -4
- package/client/src/testing-realtime.ts +361 -0
- package/client/src/testing.ts +391 -94
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -7
- package/dist/index.js.map +1 -1
- package/dist/src/api.d.ts +2 -1
- package/dist/src/api.d.ts.map +1 -1
- package/dist/src/api.js +18 -16
- package/dist/src/api.js.map +1 -1
- package/dist/src/database.d.ts.map +1 -1
- package/dist/src/database.js +5 -1
- package/dist/src/database.js.map +1 -1
- package/dist/src/errors.d.ts +18 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +44 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/eventrules.d.ts +23 -0
- package/dist/src/eventrules.d.ts.map +1 -0
- package/dist/src/eventrules.js +107 -0
- package/dist/src/eventrules.js.map +1 -0
- package/dist/src/events.d.ts +31 -6
- package/dist/src/events.d.ts.map +1 -1
- package/dist/src/events.js +130 -26
- package/dist/src/events.js.map +1 -1
- package/dist/src/files.d.ts +1 -0
- package/dist/src/files.d.ts.map +1 -1
- package/dist/src/files.js +34 -3
- package/dist/src/files.js.map +1 -1
- package/dist/src/member.d.ts +1 -1
- package/dist/src/member.d.ts.map +1 -1
- package/dist/src/member.js +9 -6
- package/dist/src/member.js.map +1 -1
- package/dist/src/members.d.ts +9 -2
- package/dist/src/members.d.ts.map +1 -1
- package/dist/src/members.js +29 -13
- package/dist/src/members.js.map +1 -1
- package/dist/src/notifications.d.ts +12 -1
- package/dist/src/notifications.d.ts.map +1 -1
- package/dist/src/notifications.js +60 -19
- package/dist/src/notifications.js.map +1 -1
- package/dist/src/realtime-client.d.ts +45 -0
- package/dist/src/realtime-client.d.ts.map +1 -0
- package/dist/src/realtime-client.js +453 -0
- package/dist/src/realtime-client.js.map +1 -0
- package/dist/src/realtime.d.ts +22 -0
- package/dist/src/realtime.d.ts.map +1 -0
- package/dist/src/realtime.js +99 -0
- package/dist/src/realtime.js.map +1 -0
- package/dist/src/sealed.d.ts +20 -0
- package/dist/src/sealed.d.ts.map +1 -0
- package/dist/src/sealed.js +121 -0
- package/dist/src/sealed.js.map +1 -0
- package/dist/src/signed.d.ts.map +1 -1
- package/dist/src/signed.js +6 -2
- package/dist/src/signed.js.map +1 -1
- package/dist/src/testing-realtime.d.ts +54 -0
- package/dist/src/testing-realtime.d.ts.map +1 -0
- package/dist/src/testing-realtime.js +376 -0
- package/dist/src/testing-realtime.js.map +1 -0
- package/dist/src/testing.d.ts +40 -3
- package/dist/src/testing.d.ts.map +1 -1
- package/dist/src/testing.js +368 -81
- package/dist/src/testing.js.map +1 -1
- package/package.json +23 -4
|
@@ -1,8 +1,18 @@
|
|
|
1
|
-
export type
|
|
1
|
+
export type Words = {
|
|
2
2
|
title: string;
|
|
3
3
|
body?: string;
|
|
4
|
+
};
|
|
5
|
+
export type Notice = Words & {
|
|
4
6
|
path?: string;
|
|
5
7
|
key?: string;
|
|
8
|
+
translations?: Record<string, Words>;
|
|
9
|
+
};
|
|
10
|
+
export type Audience = {
|
|
11
|
+
to?: {
|
|
12
|
+
groups?: string[];
|
|
13
|
+
roles?: string[];
|
|
14
|
+
};
|
|
15
|
+
except?: Iterable<string>;
|
|
6
16
|
};
|
|
7
17
|
export type Delivery = {
|
|
8
18
|
delivered: string[];
|
|
@@ -17,6 +27,7 @@ export type BadgeWrite = {
|
|
|
17
27
|
skipped: string[];
|
|
18
28
|
};
|
|
19
29
|
export declare function notify(memberIds: Iterable<string>, notice: Notice): Promise<Delivery>;
|
|
30
|
+
export declare function broadcast(notice: Notice, audience?: Audience): Promise<void>;
|
|
20
31
|
export declare function withdraw(key: string, memberIds?: Iterable<string>): Promise<void>;
|
|
21
32
|
export declare const badge: {
|
|
22
33
|
set(memberId: string, count: number): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../client/src/notifications.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../client/src/notifications.ts"],"names":[],"mappings":"AAoCA,MAAM,MAAM,KAAK,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAMrD,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,CAAC;AAKnG,MAAM,MAAM,QAAQ,GAAG;IAAE,EAAE,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC;AAGnG,MAAM,MAAM,QAAQ,GAAG;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAElE,MAAM,MAAM,UAAU,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAG7D,MAAM,MAAM,UAAU,GAAG;IAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAsF9D,wBAAsB,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAM3F;AAMD,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAetF;AAKD,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAIvF;AAID,eAAO,MAAM,KAAK;IAGV,GAAG,WAAW,MAAM,SAAS,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOtD,OAAO,SAAS,QAAQ,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;CAajE,CAAC"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { ask as chest, json, refusal } from "./api.js";
|
|
2
2
|
import { ChestError, Unavailable } from "./errors.js";
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import { rolePattern } from "./eventrules.js";
|
|
4
|
+
import { groupIdPattern, languagePattern, memberIdPattern } from "./member.js";
|
|
5
|
+
// The bounds of a Chest on a call's texts and counts, and the roles a tool
|
|
6
|
+
// declares. No count bounds the members a call names: the Chest takes as
|
|
7
|
+
// many as its team holds, and refuses a body beyond (invalid_body).
|
|
8
|
+
const maxTitle = 80, maxBody = 280, maxPath = 512, maxCount = 9999, toolRoles = 16;
|
|
6
9
|
const keyPattern = /^[a-z0-9._:-]{1,64}$/u;
|
|
7
10
|
// What the Chest removes from a title before keeping it: control characters
|
|
8
11
|
// and the characters that reorder text.
|
|
@@ -25,11 +28,11 @@ function checkId(id) {
|
|
|
25
28
|
throw new ChestError("invalid_id", 400, "invalid member identifier");
|
|
26
29
|
return id;
|
|
27
30
|
}
|
|
28
|
-
// checkIds reads
|
|
31
|
+
// checkIds reads member identifiers, one at least, as given.
|
|
29
32
|
function checkIds(ids) {
|
|
30
33
|
const all = [...ids];
|
|
31
|
-
if (all.length < 1
|
|
32
|
-
throw new ChestError("invalid_body", 400, "
|
|
34
|
+
if (all.length < 1)
|
|
35
|
+
throw new ChestError("invalid_body", 400, "one member identifier at least");
|
|
33
36
|
return all.map(checkId);
|
|
34
37
|
}
|
|
35
38
|
function checkKey(key) {
|
|
@@ -64,25 +67,63 @@ function partition(answer, first, second, asked) {
|
|
|
64
67
|
throw new Unavailable();
|
|
65
68
|
return [[...one], [...two]];
|
|
66
69
|
}
|
|
67
|
-
//
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
// new text, new time, first and unread again.
|
|
71
|
-
export async function notify(memberIds, notice) {
|
|
72
|
-
const members = checkIds(memberIds);
|
|
73
|
-
const { title, body, path, key } = notice;
|
|
70
|
+
// checkWords reads a title and a body as the Chest bounds them.
|
|
71
|
+
function checkWords(words) {
|
|
72
|
+
const { title, body } = (words ?? {});
|
|
74
73
|
if (typeof title !== "string" || length(title) < 1 || length(title) > maxTitle || title.replace(removed, "").trim() === "")
|
|
75
74
|
throw new ChestError("invalid_title", 400, "a title is 1 to 80 characters");
|
|
76
75
|
if (body !== undefined && (typeof body !== "string" || length(body) > maxBody))
|
|
77
76
|
throw new ChestError("invalid_text", 400, "a body is 280 characters at most");
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
return { title, ...(body ? { body } : {}) };
|
|
78
|
+
}
|
|
79
|
+
// command is a notice as the Chest reads it.
|
|
80
|
+
function command(notice) {
|
|
81
|
+
const { path, key, translations } = notice;
|
|
82
|
+
const other = {};
|
|
83
|
+
for (const [language, words] of Object.entries(translations ?? {})) {
|
|
84
|
+
if (!languagePattern.test(language))
|
|
85
|
+
throw new ChestError("invalid_language", 400, "a language is a tag such as fr");
|
|
86
|
+
other[language] = checkWords(words);
|
|
87
|
+
}
|
|
88
|
+
return { ...checkWords(notice), ...(path !== undefined ? { path: checkPath(path) } : {}), ...(key !== undefined ? { key: checkKey(key) } : {}), ...(translations !== undefined ? { translations: other } : {}) };
|
|
89
|
+
}
|
|
90
|
+
// notify puts one item in the inbox of each member who has the tool, among
|
|
91
|
+
// the identifiers given (each counted once), in their language. A link to
|
|
92
|
+
// path, on the tool's team host, opens it. With a key, the member's item of
|
|
93
|
+
// that key is replaced: new text, new time, first and unread again.
|
|
94
|
+
export async function notify(memberIds, notice) {
|
|
95
|
+
const members = checkIds(memberIds);
|
|
96
|
+
const response = await ask("POST", "/notifications", { members, ...command(notice) });
|
|
80
97
|
await expect(response, 200);
|
|
81
98
|
const [delivered, skipped] = partition(await json(response), "delivered", "skipped", members);
|
|
82
99
|
return { delivered, skipped };
|
|
83
100
|
}
|
|
101
|
+
// broadcast puts one item, in their language, in the inbox of every member
|
|
102
|
+
// who has the tool now — or of those the audience names —, the Chest
|
|
103
|
+
// resolving who they are: the tool needs not see its members. It never says
|
|
104
|
+
// how many received it. Each recipient counts in the quotas, all or none.
|
|
105
|
+
export async function broadcast(notice, audience = {}) {
|
|
106
|
+
const { to } = audience;
|
|
107
|
+
let target;
|
|
108
|
+
if (to !== undefined) {
|
|
109
|
+
const groups = to.groups === undefined ? undefined : [...to.groups], roles = to.roles === undefined ? undefined : [...to.roles];
|
|
110
|
+
if (!groups?.length && !roles?.length)
|
|
111
|
+
throw new ChestError("invalid_body", 400, "to names groups or roles: leave it out for everyone");
|
|
112
|
+
if ((roles?.length ?? 0) > toolRoles)
|
|
113
|
+
throw new ChestError("invalid_body", 400, "16 roles at most: those the tool declares");
|
|
114
|
+
if (groups && !groups.every(g => typeof g === "string" && groupIdPattern.test(g)))
|
|
115
|
+
throw new ChestError("invalid_id", 400, "invalid group identifier");
|
|
116
|
+
if (roles && !roles.every(r => typeof r === "string" && rolePattern.test(r)))
|
|
117
|
+
throw new ChestError("invalid_role", 400, "invalid role");
|
|
118
|
+
target = { ...(groups?.length ? { groups } : {}), ...(roles?.length ? { roles } : {}) };
|
|
119
|
+
}
|
|
120
|
+
const except = audience.except === undefined ? undefined : [...audience.except];
|
|
121
|
+
except?.forEach(checkId);
|
|
122
|
+
const response = await ask("POST", "/notifications/broadcast", { ...command(notice), ...(target ? { to: target } : {}), ...(except?.length ? { except } : {}) });
|
|
123
|
+
await expect(response, 204);
|
|
124
|
+
}
|
|
84
125
|
// withdraw removes the items of that key, from every member or from those
|
|
85
|
-
// named
|
|
126
|
+
// named: the thing they were about is done. It never says what
|
|
86
127
|
// existed.
|
|
87
128
|
export async function withdraw(key, memberIds) {
|
|
88
129
|
const command = { key: checkKey(key), ...(memberIds !== undefined ? { members: checkIds(memberIds) } : {}) };
|
|
@@ -100,11 +141,11 @@ export const badge = {
|
|
|
100
141
|
await expect(response, 200);
|
|
101
142
|
return partition(await json(response), "set", "skipped", [memberId])[0].length === 1;
|
|
102
143
|
},
|
|
103
|
-
// setMany sets
|
|
144
|
+
// setMany sets badges, one at least, a member at most once.
|
|
104
145
|
async setMany(counts) {
|
|
105
146
|
const all = [...counts];
|
|
106
|
-
if (all.length < 1
|
|
107
|
-
throw new ChestError("invalid_body", 400, "
|
|
147
|
+
if (all.length < 1)
|
|
148
|
+
throw new ChestError("invalid_body", 400, "one badge at least");
|
|
108
149
|
const badges = all.map(b => {
|
|
109
150
|
if (b === null || typeof b !== "object")
|
|
110
151
|
throw new ChestError("invalid_body", 400, "a badge is {memberId, count}");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../client/src/notifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,IAAI,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../client/src/notifications.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export type Present = {
|
|
2
|
+
id: string;
|
|
3
|
+
state: Record<string, unknown>;
|
|
4
|
+
};
|
|
5
|
+
export type ClosedReason = "access_removed" | "signed_out";
|
|
6
|
+
export type EventInfo = {
|
|
7
|
+
pos?: number;
|
|
8
|
+
partial?: true;
|
|
9
|
+
};
|
|
10
|
+
export type Listener = (payload: unknown, info: EventInfo) => void;
|
|
11
|
+
export type PeerListener = (payload: unknown, from: string) => void;
|
|
12
|
+
export type RefusedListener = (code: string) => void;
|
|
13
|
+
export declare const peerEventPattern: RegExp;
|
|
14
|
+
export interface Channel {
|
|
15
|
+
on(event: string, listener: Listener): () => void;
|
|
16
|
+
onJoined(listener: (joined: {
|
|
17
|
+
replayed: boolean;
|
|
18
|
+
}) => void): () => void;
|
|
19
|
+
onResync(listener: () => void): () => void;
|
|
20
|
+
onKicked(listener: () => void): () => void;
|
|
21
|
+
onRefused(listener: RefusedListener): () => void;
|
|
22
|
+
peers: {
|
|
23
|
+
on(event: string, listener: PeerListener): () => void;
|
|
24
|
+
send(event: string, payload?: unknown): void;
|
|
25
|
+
};
|
|
26
|
+
presence: {
|
|
27
|
+
track(state: Record<string, unknown>): void;
|
|
28
|
+
list(): Present[];
|
|
29
|
+
on(listener: (list: Present[]) => void): () => void;
|
|
30
|
+
};
|
|
31
|
+
leave(): void;
|
|
32
|
+
}
|
|
33
|
+
export interface Live {
|
|
34
|
+
channel(name: string): Channel;
|
|
35
|
+
focus(name: string | null): void;
|
|
36
|
+
on(event: "direct", listener: (event: string, payload: unknown) => void): () => void;
|
|
37
|
+
on(event: "status", listener: (connected: boolean) => void): () => void;
|
|
38
|
+
on(event: "closed", listener: (reason: ClosedReason) => void): () => void;
|
|
39
|
+
readonly member: string | undefined;
|
|
40
|
+
close(): void;
|
|
41
|
+
}
|
|
42
|
+
export declare function connect(options?: {
|
|
43
|
+
url?: string;
|
|
44
|
+
}): Live;
|
|
45
|
+
//# sourceMappingURL=realtime-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime-client.d.ts","sourceRoot":"","sources":["../../client/src/realtime-client.ts"],"names":[],"mappings":"AA+CA,MAAM,MAAM,OAAO,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AAErE,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG,YAAY,CAAC;AAI3D,MAAM,MAAM,SAAS,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAGzD,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;AAGnE,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAGpE,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAKrD,eAAO,MAAM,gBAAgB,QAAwB,CAAC;AAEtD,MAAM,WAAW,OAAO;IAKtB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,IAAI,CAAC;IAIlD,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAExE,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IAE3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IAE3C,SAAS,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,IAAI,CAAC;IAGjD,KAAK,EAAE;QAEL,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,MAAM,IAAI,CAAC;QAKtD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;KAC9C,CAAC;IACF,QAAQ,EAAE;QAGR,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;QAG5C,IAAI,IAAI,OAAO,EAAE,CAAC;QAElB,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;KACrD,CAAC;IACF,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,IAAI;IAEnB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAK/B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAIjC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACrF,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACxE,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAE1E,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,KAAK,IAAI,IAAI,CAAC;CACf;AAoDD,wBAAgB,OAAO,CAAC,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,IAAI,CAiV5D"}
|