@zaamx/netme-pos 0.0.10 → 0.0.12
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/.medusa/server/src/admin/index.js +1341 -10
- package/.medusa/server/src/admin/index.mjs +1344 -13
- package/.medusa/server/src/api/admin/payment-options/[id]/route.js +70 -0
- package/.medusa/server/src/api/admin/payment-options/route.js +84 -0
- package/.medusa/server/src/api/admin/pos-permissions/[id]/route.js +71 -0
- package/.medusa/server/src/api/admin/pos-permissions/options/route.js +20 -0
- package/package.json +1 -1
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
exports.POST = POST;
|
|
5
|
+
exports.DELETE = DELETE;
|
|
6
|
+
const zod_1 = require("@medusajs/framework/zod");
|
|
7
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
8
|
+
const payment_options_1 = require("../../../../modules/payment-options");
|
|
9
|
+
const UpdatePaymentOptionSchema = zod_1.z.object({
|
|
10
|
+
payment_method: zod_1.z.string().optional(),
|
|
11
|
+
amount: zod_1.z.coerce.number().optional(),
|
|
12
|
+
status: zod_1.z.string().optional(),
|
|
13
|
+
institution: zod_1.z.string().optional(),
|
|
14
|
+
receipt_file: zod_1.z.string().optional(),
|
|
15
|
+
concept: zod_1.z.string().optional(),
|
|
16
|
+
reference_code: zod_1.z.string().optional(),
|
|
17
|
+
depositor_name: zod_1.z.string().optional(),
|
|
18
|
+
terminal_reference: zod_1.z.string().optional(),
|
|
19
|
+
ticket_amount: zod_1.z.coerce.number().optional(),
|
|
20
|
+
authorizer: zod_1.z.string().optional(),
|
|
21
|
+
});
|
|
22
|
+
async function GET(req, res) {
|
|
23
|
+
const { id } = req.params;
|
|
24
|
+
const service = req.scope.resolve(payment_options_1.PAYMENT_OPTION_MODULE);
|
|
25
|
+
try {
|
|
26
|
+
const payment_option = await service.retrievePaymentOption(id);
|
|
27
|
+
res.json({ payment_option });
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
res.status(404).json({ message: "Payment option not found." });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
async function POST(req, res) {
|
|
34
|
+
const { id } = req.params;
|
|
35
|
+
const service = req.scope.resolve(payment_options_1.PAYMENT_OPTION_MODULE);
|
|
36
|
+
const validated = UpdatePaymentOptionSchema.parse(req.body);
|
|
37
|
+
try {
|
|
38
|
+
const payment_option = await service.updatePaymentOptions({
|
|
39
|
+
id,
|
|
40
|
+
...validated,
|
|
41
|
+
});
|
|
42
|
+
res.json({ payment_option });
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
res.status(404).json({ message: error.message });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
async function DELETE(req, res) {
|
|
49
|
+
const { id } = req.params;
|
|
50
|
+
const service = req.scope.resolve(payment_options_1.PAYMENT_OPTION_MODULE);
|
|
51
|
+
const link = req.scope.resolve(utils_1.ContainerRegistrationKeys.LINK);
|
|
52
|
+
// Load first so we know the linked payment for cleanup.
|
|
53
|
+
const existing = await service.retrievePaymentOption(id).catch(() => null);
|
|
54
|
+
if (!existing) {
|
|
55
|
+
res.status(404).json({ message: "Payment option not found." });
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
// Best-effort: drop the payment <-> payment_option link if it exists.
|
|
59
|
+
if (existing.payment_id) {
|
|
60
|
+
await link
|
|
61
|
+
.dismiss({
|
|
62
|
+
[utils_1.Modules.PAYMENT]: { payment_id: existing.payment_id },
|
|
63
|
+
[payment_options_1.PAYMENT_OPTION_MODULE]: { payment_option_id: id },
|
|
64
|
+
})
|
|
65
|
+
.catch(() => { });
|
|
66
|
+
}
|
|
67
|
+
await service.deletePaymentOptions(id);
|
|
68
|
+
res.json({ id, object: "payment_option", deleted: true });
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3BheW1lbnQtb3B0aW9ucy9baWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBMkJBLGtCQVVDO0FBRUQsb0JBZUM7QUFFRCx3QkF5QkM7QUF6RUQsaURBQTJDO0FBQzNDLHFEQUE4RTtBQUU5RSx5RUFBMkU7QUFFM0UsTUFBTSx5QkFBeUIsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3pDLGNBQWMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3JDLE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNwQyxNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM3QixXQUFXLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNsQyxZQUFZLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNuQyxPQUFPLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM5QixjQUFjLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNyQyxjQUFjLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNyQyxrQkFBa0IsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3pDLGFBQWEsRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUMzQyxVQUFVLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUNsQyxDQUFDLENBQUE7QUFFSyxLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtCLEVB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
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const payment_options_1 = require("../../../modules/payment-options");
|
|
6
|
+
async function GET(req, res) {
|
|
7
|
+
const service = req.scope.resolve(payment_options_1.PAYMENT_OPTION_MODULE);
|
|
8
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
9
|
+
const { limit: limitRaw, offset: offsetRaw, q, status, payment_method, } = req.query;
|
|
10
|
+
const limit = limitRaw ? parseInt(limitRaw, 10) : 15;
|
|
11
|
+
const offset = offsetRaw ? parseInt(offsetRaw, 10) : 0;
|
|
12
|
+
const term = q?.trim();
|
|
13
|
+
const filters = {};
|
|
14
|
+
if (status) {
|
|
15
|
+
filters.status = status;
|
|
16
|
+
}
|
|
17
|
+
if (payment_method) {
|
|
18
|
+
filters.payment_method = payment_method;
|
|
19
|
+
}
|
|
20
|
+
if (term) {
|
|
21
|
+
const like = `%${term}%`;
|
|
22
|
+
const or = [
|
|
23
|
+
{ reference_code: { $ilike: like } },
|
|
24
|
+
{ concept: { $ilike: like } },
|
|
25
|
+
{ depositor_name: { $ilike: like } },
|
|
26
|
+
{ payment_method: { $ilike: like } },
|
|
27
|
+
{ authorizer: { $ilike: like } },
|
|
28
|
+
{ institution: { $ilike: like } },
|
|
29
|
+
{ payment_id: { $ilike: like } },
|
|
30
|
+
];
|
|
31
|
+
// If the term is a pure number, treat it as an order display id and match
|
|
32
|
+
// the payment options linked to that order's payment(s).
|
|
33
|
+
if (/^\d+$/.test(term)) {
|
|
34
|
+
const { data: orders } = await query.graph({
|
|
35
|
+
entity: "order",
|
|
36
|
+
filters: { display_id: parseInt(term, 10) },
|
|
37
|
+
fields: ["id", "payment_collections.payments.id"],
|
|
38
|
+
});
|
|
39
|
+
const paymentIds = orders.flatMap((o) => (o.payment_collections ?? []).flatMap((pc) => (pc.payments ?? []).map((p) => p?.id).filter(Boolean)));
|
|
40
|
+
if (paymentIds.length) {
|
|
41
|
+
or.push({ payment_id: { $in: paymentIds } });
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
filters.$or = or;
|
|
45
|
+
}
|
|
46
|
+
const [payment_options, count] = await service.listAndCountPaymentOptions(filters, {
|
|
47
|
+
skip: offset,
|
|
48
|
+
take: limit,
|
|
49
|
+
order: { created_at: "DESC" },
|
|
50
|
+
});
|
|
51
|
+
// Enrich the page with the linked order's display id.
|
|
52
|
+
const paymentIds = [
|
|
53
|
+
...new Set(payment_options.map((po) => po.payment_id).filter(Boolean)),
|
|
54
|
+
];
|
|
55
|
+
let orderByPaymentId = {};
|
|
56
|
+
if (paymentIds.length) {
|
|
57
|
+
const { data: payments } = await query.graph({
|
|
58
|
+
entity: "payment",
|
|
59
|
+
filters: { id: paymentIds },
|
|
60
|
+
fields: [
|
|
61
|
+
"id",
|
|
62
|
+
"payment_collection.order.id",
|
|
63
|
+
"payment_collection.order.display_id",
|
|
64
|
+
],
|
|
65
|
+
});
|
|
66
|
+
orderByPaymentId = payments.reduce((acc, p) => {
|
|
67
|
+
const order = p?.payment_collection?.order;
|
|
68
|
+
if (order) {
|
|
69
|
+
acc[p.id] = { id: order.id, display_id: order.display_id };
|
|
70
|
+
}
|
|
71
|
+
return acc;
|
|
72
|
+
}, {});
|
|
73
|
+
}
|
|
74
|
+
const enriched = payment_options.map((po) => {
|
|
75
|
+
const order = po.payment_id ? orderByPaymentId[po.payment_id] : undefined;
|
|
76
|
+
return {
|
|
77
|
+
...po,
|
|
78
|
+
order_id: order?.id ?? null,
|
|
79
|
+
order_display_id: order?.display_id ?? null,
|
|
80
|
+
};
|
|
81
|
+
});
|
|
82
|
+
res.json({ payment_options: enriched, count, limit, offset });
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3BheW1lbnQtb3B0aW9ucy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWdCQSxrQkEwR0M7QUE5R0QscURBQXFFO0FBRXJFLHNFQUF3RTtBQUVqRSxLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDL0QsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsdUNBQXFCLENBQXlCLENBQUE7SUFDaEYsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFaEUsTUFBTSxFQUNKLEtBQUssRUFBRSxRQUFRLEVBQ2YsTUFBTSxFQUFFLFNBQVMsRUFDakIsQ0FBQyxFQUNELE1BQU0sRUFDTixjQUFjLEdBQ2YsR0FBRyxHQUFHLENBQUMsS0FBMkMsQ0FBQTtJQUVuRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUNwRCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN0RCxNQUFNLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUE7SUFFdEIsTUFBTSxPQUFPLEdBQXdCLEVBQUUsQ0FBQTtJQUN2QyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1gsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7SUFDekIsQ0FBQztJQUNELElBQUksY0FBYyxFQUFFLENBQUM7UUFDbkIsT0FBTyxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUE7SUFDekMsQ0FBQztJ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
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
exports.POST = POST;
|
|
5
|
+
const zod_1 = require("@medusajs/framework/zod");
|
|
6
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
7
|
+
const PosPermissionsSchema = zod_1.z.object({
|
|
8
|
+
pos_stock_location_ids: zod_1.z.array(zod_1.z.string()).nullable().optional(),
|
|
9
|
+
pos_sales_channel_ids: zod_1.z.array(zod_1.z.string()).nullable().optional(),
|
|
10
|
+
pos_region_ids: zod_1.z.array(zod_1.z.string()).nullable().optional(),
|
|
11
|
+
pos_shipping_option_ids: zod_1.z.array(zod_1.z.string()).nullable().optional(),
|
|
12
|
+
pos_default_region_id: zod_1.z.string().nullable().optional(),
|
|
13
|
+
pos_default_sales_channel_id: zod_1.z.string().nullable().optional(),
|
|
14
|
+
pos_default_stock_location_id: zod_1.z.string().nullable().optional(),
|
|
15
|
+
pos_role: zod_1.z.enum(["cashier", "supervisor", "manager"]).nullable().optional(),
|
|
16
|
+
pos_capabilities: zod_1.z.record(zod_1.z.string(), zod_1.z.boolean()).nullable().optional(),
|
|
17
|
+
});
|
|
18
|
+
const isPosOperator = (user) => Boolean(user?.metadata?.is_pos_operator);
|
|
19
|
+
async function GET(req, res) {
|
|
20
|
+
const { id } = req.params;
|
|
21
|
+
const userModuleService = req.scope.resolve(utils_1.Modules.USER);
|
|
22
|
+
const user = await userModuleService.retrieveUser(id).catch(() => null);
|
|
23
|
+
if (!user || !isPosOperator(user)) {
|
|
24
|
+
res.status(404).json({ message: "Operator not found." });
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
res.json({
|
|
28
|
+
operator: {
|
|
29
|
+
id: user.id,
|
|
30
|
+
email: user.email,
|
|
31
|
+
first_name: user.first_name,
|
|
32
|
+
last_name: user.last_name,
|
|
33
|
+
metadata: user.metadata ?? {},
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
async function POST(req, res) {
|
|
38
|
+
const { id } = req.params;
|
|
39
|
+
const userModuleService = req.scope.resolve(utils_1.Modules.USER);
|
|
40
|
+
const user = await userModuleService.retrieveUser(id).catch(() => null);
|
|
41
|
+
if (!user || !isPosOperator(user)) {
|
|
42
|
+
res.status(404).json({ message: "Operator not found." });
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const validated = PosPermissionsSchema.parse(req.body);
|
|
46
|
+
// The user module shallow-merges metadata (mergeMetadata): keys we omit are
|
|
47
|
+
// preserved, and a key is removed only when its value is an empty string "".
|
|
48
|
+
// So we build a patch where "remove" (null / empty capabilities) maps to "".
|
|
49
|
+
const patch = {};
|
|
50
|
+
for (const [key, value] of Object.entries(validated)) {
|
|
51
|
+
if (value === undefined) {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
const isEmptyObject = value !== null &&
|
|
55
|
+
typeof value === "object" &&
|
|
56
|
+
!Array.isArray(value) &&
|
|
57
|
+
Object.keys(value).length === 0;
|
|
58
|
+
patch[key] = value === null || isEmptyObject ? "" : value;
|
|
59
|
+
}
|
|
60
|
+
const updated = await userModuleService.updateUsers({ id, metadata: patch });
|
|
61
|
+
res.json({
|
|
62
|
+
operator: {
|
|
63
|
+
id: updated.id,
|
|
64
|
+
email: updated.email,
|
|
65
|
+
first_name: updated.first_name,
|
|
66
|
+
last_name: updated.last_name,
|
|
67
|
+
metadata: updated.metadata ?? {},
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3Bvcy1wZXJtaXNzaW9ucy9baWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZ0NBLGtCQW1CQztBQUVELG9CQTJDQztBQXBGRCxpREFBMkM7QUFDM0MscURBQW1EO0FBRW5ELE1BQU0sb0JBQW9CLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNwQyxzQkFBc0IsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNqRSxxQkFBcUIsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNoRSxjQUFjLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDekQsdUJBQXVCLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDbEUscUJBQXFCLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUN2RCw0QkFBNEIsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzlELDZCQUE2QixFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDL0QsUUFBUSxFQUFFLE9BQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMs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
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
async function GET(req, res) {
|
|
6
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
7
|
+
const [stockLocations, salesChannels, regions, shippingOptions] = await Promise.all([
|
|
8
|
+
query.graph({ entity: "stock_location", fields: ["id", "name"] }),
|
|
9
|
+
query.graph({ entity: "sales_channel", fields: ["id", "name"] }),
|
|
10
|
+
query.graph({ entity: "region", fields: ["id", "name", "currency_code"] }),
|
|
11
|
+
query.graph({ entity: "shipping_option", fields: ["id", "name"] }),
|
|
12
|
+
]);
|
|
13
|
+
res.json({
|
|
14
|
+
stock_locations: stockLocations.data,
|
|
15
|
+
sales_channels: salesChannels.data,
|
|
16
|
+
regions: regions.data,
|
|
17
|
+
shipping_options: shippingOptions.data,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3Bvcy1wZXJtaXNzaW9ucy9vcHRpb25zL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBV0Esa0JBaUJDO0FBbkJELHFEQUFxRTtBQUU5RCxLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDL0QsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFaEUsTUFBTSxDQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQyxHQUM3RCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFDaEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNqRSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNoRSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLGVBQWUsQ0FBQyxFQUFFLENBQUM7UUFDMUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztLQUNuRSxDQUFDLENBQUE7SUFFSixHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ1AsZUFBZSxFQUFFLGNBQWMsQ0FBQyxJQUFJO1FBQ3BDLGNBQWMsRUFBRSxhQUFhLENBQUMsSUFBSTtRQUNsQyxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUk7UUFDckIsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLElBQUk7S0FDdkMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyJ9
|