@zaamx/netme-pos 0.0.15 → 0.0.18

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.
Files changed (35) hide show
  1. package/.medusa/server/src/admin/index.js +216 -216
  2. package/.medusa/server/src/admin/index.mjs +220 -220
  3. package/.medusa/server/src/api/admin/orders/sales/pending-by-location/route.js +152 -0
  4. package/.medusa/server/src/api/admin/orders/sales/route.js +398 -0
  5. package/.medusa/server/src/api/middlewares.js +168 -1
  6. package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/convert-to-order/route.js +37 -0
  7. package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/confirm/route.js +20 -0
  8. package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/items/[action_id]/route.js +74 -0
  9. package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/items/item/[item_id]/route.js +41 -0
  10. package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/items/route.js +31 -0
  11. package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/promotions/route.js +31 -0
  12. package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/request/route.js +16 -0
  13. package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/route.js +32 -0
  14. package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/shipping-methods/[action_id]/route.js +32 -0
  15. package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/shipping-methods/method/[method_id]/route.js +30 -0
  16. package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/shipping-methods/route.js +19 -0
  17. package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/route.js +63 -0
  18. package/.medusa/server/src/api/store/netme-pos/draft-orders/guards.js +77 -0
  19. package/.medusa/server/src/api/store/netme-pos/draft-orders/helpers.js +19 -0
  20. package/.medusa/server/src/api/store/netme-pos/draft-orders/pricing.js +136 -0
  21. package/.medusa/server/src/api/store/netme-pos/draft-orders/query-config.js +60 -0
  22. package/.medusa/server/src/api/store/netme-pos/draft-orders/route.js +140 -0
  23. package/.medusa/server/src/api/store/netme-pos/draft-orders/validators.js +217 -0
  24. package/.medusa/server/src/api/store/netme-pos/fulfillment-validators.js +74 -0
  25. package/.medusa/server/src/api/store/netme-pos/payment-collections/[id]/mark-as-paid/route.js +34 -0
  26. package/.medusa/server/src/api/store/netme-pos/payment-collections/[id]/payment-sessions/route.js +28 -0
  27. package/.medusa/server/src/api/store/netme-pos/payment-collections/guards.js +27 -0
  28. package/.medusa/server/src/api/store/netme-pos/products/[id]/route.js +10 -0
  29. package/.medusa/server/src/api/store/netme-pos/products/route.js +14 -0
  30. package/.medusa/server/src/api/store/netme-pos/scope.js +106 -0
  31. package/.medusa/server/src/api/store/netme-pos/shipping-options/route.js +100 -0
  32. package/.medusa/server/src/api/store/netme-pos/stock-locations/route.js +45 -0
  33. package/.medusa/server/src/links/agent-draft-order.js +31 -0
  34. package/.medusa/server/src/workflows/ensure-agent-can-act-for/index.js +36 -0
  35. package/package.json +1 -1
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StoreUpdateDraftOrderActionShippingMethod = exports.StoreUpdateDraftOrderShippingMethod = exports.StoreAddDraftOrderShippingMethod = exports.StoreDraftOrderPromotions = exports.StoreUpdateDraftOrderActionItem = exports.StoreUpdateDraftOrderItem = exports.StoreAddDraftOrderItems = exports.StoreUpdateDraftOrder = exports.StoreCreateDraftOrder = exports.StoreGetDraftOrdersParams = exports.StoreGetDraftOrderParams = void 0;
4
+ const zod_1 = require("@medusajs/framework/zod");
5
+ /**
6
+ * [STORE] validators for `/store/netme-pos/draft-orders`.
7
+ *
8
+ * They replicate the admin draft-orders schemas (2.14.2) with the store
9
+ * hardening from the spec (docs/store-draft-orders-spec.md §7):
10
+ * - NO price fields anywhere: `unit_price`, `compare_at_unit_price`,
11
+ * `custom_amount`, `amount` are not accepted (prices resolve server-side).
12
+ * - NO `email` / `status` / `sales_channel_id` / `currency_code` on create
13
+ * (derived server-side), NO `customer_id` on update (no reassigning).
14
+ * - `.strict()` everywhere so unexpected fields are rejected, not ignored.
15
+ *
16
+ * The tiny builder helpers (`createSelectParams`, `createFindParams`,
17
+ * `createOperatorMap`, `applyAndAndOrOperators`, `AddressPayload`) are ported
18
+ * from Medusa's non-exported internals, same as
19
+ * `src/api/admin/netme-pos/products/validators.ts` does.
20
+ */
21
+ // ---------------------------------------------------------------------------
22
+ // Ported builder helpers (api/utils/validators.ts + common-validators)
23
+ // ---------------------------------------------------------------------------
24
+ const createSelectParams = () => zod_1.z.object({
25
+ fields: zod_1.z.string().optional(),
26
+ });
27
+ const createFindParams = ({ offset, limit, order, } = {}) => {
28
+ return createSelectParams().merge(zod_1.z.object({
29
+ offset: zod_1.z.preprocess((val) => (val && typeof val === "string" ? parseInt(val) : val), zod_1.z
30
+ .number()
31
+ .optional()
32
+ .default(offset ?? 0)),
33
+ limit: zod_1.z.preprocess((val) => (val && typeof val === "string" ? parseInt(val) : val), zod_1.z
34
+ .number()
35
+ .optional()
36
+ .default(limit ?? 20)),
37
+ order: order
38
+ ? zod_1.z.string().optional().default(order)
39
+ : zod_1.z.string().optional(),
40
+ }));
41
+ };
42
+ const createOperatorMap = (type, valueParser) => {
43
+ if (!type) {
44
+ type = zod_1.z.string();
45
+ }
46
+ let simpleType = type.optional();
47
+ if (valueParser) {
48
+ simpleType = zod_1.z.preprocess(valueParser, type).optional();
49
+ }
50
+ const arrayType = zod_1.z.array(type).optional();
51
+ const unionType = zod_1.z.union([simpleType, arrayType]).optional();
52
+ return zod_1.z.union([
53
+ unionType,
54
+ zod_1.z.object({
55
+ $eq: unionType,
56
+ $ne: unionType,
57
+ $in: arrayType,
58
+ $nin: arrayType,
59
+ $like: simpleType,
60
+ $ilike: simpleType,
61
+ $re: simpleType,
62
+ $contains: simpleType,
63
+ $gt: simpleType,
64
+ $gte: simpleType,
65
+ $lt: simpleType,
66
+ $lte: simpleType,
67
+ }),
68
+ ]);
69
+ };
70
+ const applyAndAndOrOperators = (schema) => {
71
+ return schema.merge(zod_1.z.object({
72
+ $and: zod_1.z.lazy(() => schema.array()).optional(),
73
+ $or: zod_1.z.lazy(() => schema.array()).optional(),
74
+ }));
75
+ };
76
+ const AddressPayload = zod_1.z
77
+ .object({
78
+ first_name: zod_1.z.string().nullish(),
79
+ last_name: zod_1.z.string().nullish(),
80
+ phone: zod_1.z.string().nullish(),
81
+ company: zod_1.z.string().nullish(),
82
+ address_1: zod_1.z.string().nullish(),
83
+ address_2: zod_1.z.string().nullish(),
84
+ city: zod_1.z.string().nullish(),
85
+ country_code: zod_1.z.string().nullish(),
86
+ province: zod_1.z.string().nullish(),
87
+ postal_code: zod_1.z.string().nullish(),
88
+ metadata: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).nullish(),
89
+ })
90
+ .strict();
91
+ // ---------------------------------------------------------------------------
92
+ // Query params
93
+ // ---------------------------------------------------------------------------
94
+ exports.StoreGetDraftOrderParams = createSelectParams().merge(zod_1.z.object({
95
+ version: zod_1.z.preprocess((val) => (val && typeof val === "string" ? parseInt(val) : val), zod_1.z.number().optional()),
96
+ }));
97
+ const StoreGetDraftOrdersParamsFields = zod_1.z.object({
98
+ id: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
99
+ created_at: createOperatorMap().optional(),
100
+ updated_at: createOperatorMap().optional(),
101
+ q: zod_1.z.string().optional(),
102
+ region_id: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
103
+ // Filter by TARGET customer among the agent's own drafts. The agent scoping
104
+ // itself is enforced server-side in the route (link table), never here.
105
+ customer_id: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
106
+ });
107
+ exports.StoreGetDraftOrdersParams = createFindParams({
108
+ limit: 50,
109
+ offset: 0,
110
+ })
111
+ .merge(StoreGetDraftOrdersParamsFields)
112
+ .merge(applyAndAndOrOperators(StoreGetDraftOrdersParamsFields));
113
+ // ---------------------------------------------------------------------------
114
+ // Bodies (§7) — hardened ports of the admin validators
115
+ // ---------------------------------------------------------------------------
116
+ /**
117
+ * §7.1 — create. The draft is created EMPTY (items go through
118
+ * `/:id/edit/items` inside an edit cycle, where prices resolve server-side).
119
+ * `email`, `currency_code`, `sales_channel_id` and `status` derive server-side.
120
+ */
121
+ exports.StoreCreateDraftOrder = zod_1.z
122
+ .object({
123
+ /** Target customer the order is for (drives group pricing). */
124
+ customer_id: zod_1.z.string(),
125
+ region_id: zod_1.z.string(),
126
+ billing_address: zod_1.z.union([AddressPayload, zod_1.z.string()]).optional(),
127
+ shipping_address: zod_1.z.union([AddressPayload, zod_1.z.string()]).optional(),
128
+ promo_codes: zod_1.z.array(zod_1.z.string()).optional(),
129
+ locale: zod_1.z.string().optional(),
130
+ metadata: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).nullish(),
131
+ })
132
+ .strict();
133
+ /** §7.4 — update. No `email` / `customer_id` / `sales_channel_id`. */
134
+ exports.StoreUpdateDraftOrder = zod_1.z
135
+ .object({
136
+ shipping_address: AddressPayload.optional(),
137
+ billing_address: AddressPayload.optional(),
138
+ metadata: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).nullish(),
139
+ locale: zod_1.z.string().optional(),
140
+ })
141
+ .strict();
142
+ /**
143
+ * Bundle declaration (§5): the client declares ONLY structure + metadata.
144
+ * Prices come from the server (parent = resolved package price, child = 0).
145
+ */
146
+ const StoreDraftOrderItemBundle = zod_1.z
147
+ .object({
148
+ role: zod_1.z.enum(["parent", "child"]),
149
+ /** uuid generated by the client; links parent ↔ children. */
150
+ bundle_id: zod_1.z.string(),
151
+ bundle_type: zod_1.z.string().optional(),
152
+ bundle_meta: zod_1.z.unknown().optional(),
153
+ bundle_sticks_price: zod_1.z.number().optional(),
154
+ })
155
+ .strict();
156
+ /** §7.11 — add items. No `unit_price` / `compare_at_unit_price` / `title`. */
157
+ exports.StoreAddDraftOrderItems = zod_1.z
158
+ .object({
159
+ items: zod_1.z
160
+ .array(zod_1.z
161
+ .object({
162
+ variant_id: zod_1.z.string(),
163
+ quantity: zod_1.z.number().int().positive(),
164
+ allow_backorder: zod_1.z.boolean().optional(),
165
+ bundle: StoreDraftOrderItemBundle.optional(),
166
+ metadata: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional(),
167
+ })
168
+ .strict())
169
+ .min(1),
170
+ })
171
+ .strict();
172
+ /** §7.12 — update an existing item (quantity). No prices. */
173
+ exports.StoreUpdateDraftOrderItem = zod_1.z
174
+ .object({
175
+ quantity: zod_1.z.number().int().positive(),
176
+ internal_note: zod_1.z.string().optional(),
177
+ metadata: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).nullish(),
178
+ })
179
+ .strict();
180
+ /** §7.13 — update a pending (change-set) item. No prices. */
181
+ exports.StoreUpdateDraftOrderActionItem = zod_1.z
182
+ .object({
183
+ quantity: zod_1.z.number().int().positive(),
184
+ internal_note: zod_1.z.string().optional(),
185
+ })
186
+ .strict();
187
+ /** §7.14 — add/remove promotions (same as admin). */
188
+ exports.StoreDraftOrderPromotions = zod_1.z
189
+ .object({
190
+ promo_codes: zod_1.z.array(zod_1.z.string()),
191
+ })
192
+ .strict();
193
+ /** §7.15 — add shipping method. No `custom_amount` (amount = shipping option). */
194
+ exports.StoreAddDraftOrderShippingMethod = zod_1.z
195
+ .object({
196
+ shipping_option_id: zod_1.z.string(),
197
+ description: zod_1.z.string().optional(),
198
+ metadata: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional(),
199
+ })
200
+ .strict();
201
+ /** §7.16 — update an existing shipping method. No `custom_amount`. */
202
+ exports.StoreUpdateDraftOrderShippingMethod = zod_1.z
203
+ .object({
204
+ shipping_option_id: zod_1.z.string().optional(),
205
+ internal_note: zod_1.z.string().nullish(),
206
+ })
207
+ .strict();
208
+ /** §7.17 — update a pending (change-set) shipping method. No `custom_amount`. */
209
+ exports.StoreUpdateDraftOrderActionShippingMethod = zod_1.z
210
+ .object({
211
+ shipping_option_id: zod_1.z.string(),
212
+ description: zod_1.z.string().nullish(),
213
+ internal_note: zod_1.z.string().nullish(),
214
+ metadata: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).nullish(),
215
+ })
216
+ .strict();
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvc3RvcmUvbmV0bWUtcG9zL2RyYWZ0LW9yZGVycy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUEyQztBQUUzQzs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCw4RUFBOEU7QUFDOUUsdUVBQXVFO0FBQ3ZFLDhFQUE4RTtBQUU5RSxNQUFNLGtCQUFrQixHQUFHLEdBQUcsRUFBRSxDQUM5QixPQUFDLENBQUMsTUFBTSxDQUFDO0lBQ1AsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDOUIsQ0FBQyxDQUFBO0FBRUosTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEVBQ3hCLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxNQUtILEVBQUUsRUFBRSxFQUFFO0lBQ1IsT0FBTyxrQkFBa0IsRUFBRSxDQUFDLEtBQUssQ0FDL0IsT0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNQLE1BQU0sRUFBRSxPQUFDLENBQUMsVUFBVSxDQUNsQixDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUMvRCxPQUFDO2FBQ0UsTUFBTSxFQUFFO2FBQ1IsUUFBUSxFQUFFO2FBQ1YsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FDeEI7UUFDRCxLQUFLLEVBQUUsT0FBQyxDQUFDLFVBQVUsQ0FDakIsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0Qs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
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listShippingOptionsQueryConfig = exports.listStockLocationsQueryConfig = exports.defaultShippingOptionFields = exports.defaultStockLocationFields = exports.StoreGetShippingOptionsParams = exports.StoreGetStockLocationsParams = void 0;
4
+ const zod_1 = require("@medusajs/framework/zod");
5
+ /**
6
+ * Query params + query configs for the agent's stock-location and
7
+ * shipping-option listings. They mirror the core admin list routes
8
+ * (`GET /admin/stock-locations`, `GET /admin/shipping-options`, Medusa 2.14.2)
9
+ * so the POS front components can be reused as-is: same params, same default
10
+ * fields, same response shape.
11
+ */
12
+ const stringOrArray = zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional();
13
+ const findParams = zod_1.z.object({
14
+ fields: zod_1.z.string().optional(),
15
+ offset: zod_1.z.preprocess((val) => (val && typeof val === "string" ? parseInt(val) : val), zod_1.z.number().optional().default(0)),
16
+ limit: zod_1.z.preprocess((val) => (val && typeof val === "string" ? parseInt(val) : val), zod_1.z.number().optional().default(50)),
17
+ order: zod_1.z.string().optional(),
18
+ });
19
+ exports.StoreGetStockLocationsParams = findParams.merge(zod_1.z.object({
20
+ id: stringOrArray,
21
+ name: stringOrArray,
22
+ q: zod_1.z.string().optional(),
23
+ }));
24
+ exports.StoreGetShippingOptionsParams = findParams.merge(zod_1.z.object({
25
+ id: stringOrArray,
26
+ q: zod_1.z.string().optional(),
27
+ stock_location_id: stringOrArray,
28
+ shipping_profile_id: stringOrArray,
29
+ provider_id: stringOrArray,
30
+ }));
31
+ /** Copy of `defaultAdminStockLocationFields` (core 2.14.2). */
32
+ exports.defaultStockLocationFields = [
33
+ "id",
34
+ "name",
35
+ "metadata",
36
+ "created_at",
37
+ "updated_at",
38
+ "address.id",
39
+ "address.address_1",
40
+ "address.address_2",
41
+ "address.city",
42
+ "address.country_code",
43
+ "address.phone",
44
+ "address.province",
45
+ "address.postal_code",
46
+ "address.metadata",
47
+ ];
48
+ /** Copy of `defaultAdminShippingOptionFields` (core 2.14.2). */
49
+ exports.defaultShippingOptionFields = [
50
+ "id",
51
+ "name",
52
+ "price_type",
53
+ "data",
54
+ "provider_id",
55
+ "metadata",
56
+ "created_at",
57
+ "updated_at",
58
+ "*rules",
59
+ "*type",
60
+ "*prices",
61
+ "*prices.price_rules",
62
+ "*service_zone",
63
+ "*shipping_profile",
64
+ "*provider",
65
+ ];
66
+ exports.listStockLocationsQueryConfig = {
67
+ defaults: exports.defaultStockLocationFields,
68
+ isList: true,
69
+ };
70
+ exports.listShippingOptionsQueryConfig = {
71
+ defaults: exports.defaultShippingOptionFields,
72
+ isList: true,
73
+ };
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVsZmlsbG1lbnQtdmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvc3RvcmUvbmV0bWUtcG9zL2Z1bGZpbGxtZW50LXZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQTJDO0FBRTNDOzs7Ozs7R0FNRztBQUVILE1BQU0sYUFBYSxHQUFHLE9BQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUE7QUFFM0UsTUFBTSxVQUFVLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMxQixNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM3QixNQUFNLEVBQUUsT0FBQyxDQUFDLFVBQVUsQ0FDbEIsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0QsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FDakM7SUFDRCxLQUFLLEVBQUUsT0FBQyxDQUFDLFVBQVUsQ0FDakIsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0QsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FDbEM7SUFDRCxLQUFLLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUM3QixDQUFDLENBQUE7QUFFVyxRQUFBLDRCQUE0QixHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQzFELE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDUCxFQUFFLEVBQUUsYUFBYTtJQUNqQixJQUFJLEVBQUUsYUFBYTtJQUNuQixDQUFDLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUN6QixDQUFDLENBQ0gsQ0FBQTtBQUVZLFFBQUEsNkJBQTZCLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FDM0QsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNQLEVBQUUsRUFBRSxhQUFhO0lBQ2pCLENBQUMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3hCLGlCQUFpQixFQUFFLGFBQWE7SUFDaEMsbUJBQW1CLEVBQUUsYUFBYTtJQUNsQyxXQUFXLEVBQUUsYUFBYTtDQUMzQixDQUFDLENBQ0gsQ0FBQTtBQUVELCtEQUErRDtBQUNsRCxRQUFBLDBCQUEwQixHQUFHO0lBQ3hDLElBQUk7SUFDSixNQUFNO0lBQ04sVUFBVTtJQUNWLFlBQVk7SUFDWixZQUFZO0lBQ1osWUFBWTtJQUNaLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsY0FBYztJQUNkLHNCQUFzQjtJQUN0QixlQUFlO0lBQ2Ysa0JBQWtCO0lBQ2xCLHFCQUFxQjtJQUNyQixrQkFBa0I7Q0FDbkIsQ0FBQTtBQUVELGdFQUFnRTtBQUNuRCxRQUFBLDJCQUEyQixHQUFHO0lBQ3pDLElBQUk7SUFDSixNQUFNO0lBQ04sWUFBWTtJQUNaLE1BQU07SUFDTixhQUFhO0lBQ2IsVUFBVTtJQUNWLFlBQVk7SUFDWixZQUFZO0lBQ1osUUFBUTtJQUNSLE9BQU87SUFDUCxTQUFTO0lBQ1QscUJBQXFCO0lBQ3JCLGVBQWU7SUFDZixtQkFBbUI7SUFDbkIsV0FBVztDQUNaLENBQUE7QUFFWSxRQUFBLDZCQUE2QixHQUFHO0lBQzNDLFFBQVEsRUFBRSxrQ0FBMEI7SUFDcEMsTUFBTSxFQUFFLElBQUk7Q0FDYixDQUFBO0FBRVksUUFBQSw4QkFBOEIsR0FBRztJQUM1QyxRQUFRLEVBQUUsbUNBQTJCO0lBQ3JDLE1BQU0sRUFBRSxJQUFJO0NBQ2IsQ0FBQSJ9
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = POST;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const zod_1 = require("@medusajs/framework/zod");
6
+ const authorize_payment_collection_1 = require("../../../../../../workflows/authorize-payment-collection");
7
+ const guards_1 = require("../../guards");
8
+ /**
9
+ * Store clone of `POST /admin/netme-pos/payment-collections/:id/mark-as-paid`
10
+ * (spec §10 option A): authorize a draft order's payment collection with
11
+ * `pp_system_default` WITHOUT capturing, authenticated as the AGENT customer.
12
+ *
13
+ * ⚠️ Wallet order of operations: settle here BEFORE `convert-to-order`, or the
14
+ * draft's credit line is lost on conversion.
15
+ */
16
+ const MarkAsPaidSchema = zod_1.z.object({
17
+ order_id: zod_1.z.string(),
18
+ });
19
+ async function POST(req, res) {
20
+ const { id } = req.params;
21
+ const validated = MarkAsPaidSchema.parse(req.body);
22
+ const { order_id: ownedOrderId } = await (0, guards_1.assertAgentPaymentCollection)(req, id);
23
+ if (validated.order_id !== ownedOrderId) {
24
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Payment collection with id ${id} was not found`);
25
+ }
26
+ const { result } = await (0, authorize_payment_collection_1.authorizePaymentCollectionWorkflow)(req.scope).run({
27
+ input: {
28
+ payment_collection_id: id,
29
+ order_id: validated.order_id,
30
+ },
31
+ });
32
+ res.status(200).json({ payment: result });
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL25ldG1lLXBvcy9wYXltZW50LWNvbGxlY3Rpb25zL1tpZF0vbWFyay1hcy1wYWlkL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBc0JBLG9CQXVCQztBQXpDRCxxREFBdUQ7QUFDdkQsaURBQTJDO0FBQzNDLDJHQUE2RztBQUM3Ryx5Q0FBMkQ7QUFFM0Q7Ozs7Ozs7R0FPRztBQUVILE1BQU0sZ0JBQWdCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNoQyxRQUFRLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtDQUNyQixDQUFDLENBQUE7QUFFSyxLQUFLLFVBQVUsSUFBSSxDQUN4QixHQUErQixFQUMvQixHQUFtQjtJQUVuQixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUN6QixNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRWxELE1BQU0sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLEdBQUcsTUFBTSxJQUFBLHFDQUE0QixFQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUM5RSxJQUFJLFNBQVMsQ0FBQyxRQUFRLEtBQUssWUFBWSxFQUFFLENBQUM7UUFDeEMsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFDM0IsOEJBQThCLEVBQUUsZ0JBQWdCLENBQ2pELENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSxpRUFBa0MsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3pFLEtBQUssRUFBRTtZQUNMLHFCQUFxQixFQUFFLEVBQUU7WUFDekIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRO1NBQzdCO0tBQ0YsQ0FBQyxDQUFBO0lBRUYsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQTtBQUMzQyxDQUFDIn0=
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = POST;
4
+ const zod_1 = require("@medusajs/framework/zod");
5
+ const core_flows_1 = require("@medusajs/medusa/core-flows");
6
+ const guards_1 = require("../../guards");
7
+ /**
8
+ * Store clone of `POST /admin/netme-pos/payment-collections/:id/payment-sessions`
9
+ * (spec §10 option A): initialize a payment session on a draft order's payment
10
+ * collection, authenticated as the AGENT customer that owns the draft.
11
+ */
12
+ const CreateSessionSchema = zod_1.z.object({
13
+ provider_id: zod_1.z.string(),
14
+ });
15
+ async function POST(req, res) {
16
+ const { id } = req.params;
17
+ const validated = CreateSessionSchema.parse(req.body);
18
+ await (0, guards_1.assertAgentPaymentCollection)(req, id);
19
+ const { result } = await (0, core_flows_1.createPaymentSessionsWorkflow)(req.scope).run({
20
+ input: {
21
+ payment_collection_id: id,
22
+ provider_id: validated.provider_id,
23
+ },
24
+ });
25
+ // Mimics the store API response structure (same as the admin clone):
26
+ res.status(200).json({ payment_collection: result });
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL25ldG1lLXBvcy9wYXltZW50LWNvbGxlY3Rpb25zL1tpZF0vcGF5bWVudC1zZXNzaW9ucy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWtCQSxvQkFrQkM7QUFoQ0QsaURBQTJDO0FBQzNDLDREQUEyRTtBQUMzRSx5Q0FBMkQ7QUFFM0Q7Ozs7R0FJRztBQUVILE1BQU0sbUJBQW1CLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNuQyxXQUFXLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtDQUN4QixDQUFDLENBQUE7QUFFSyxLQUFLLFVBQVUsSUFBSSxDQUN4QixHQUErQixFQUMvQixHQUFtQjtJQUVuQixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUN6QixNQUFNLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRXJELE1BQU0sSUFBQSxxQ0FBNEIsRUFBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFFM0MsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSwwQ0FBNkIsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3BFLEtBQUssRUFBRTtZQUNMLHFCQUFxQixFQUFFLEVBQUU7WUFDekIsV0FBVyxFQUFFLFNBQVMsQ0FBQyxXQUFXO1NBQ25DO0tBQ0YsQ0FBQyxDQUFBO0lBRUYscUVBQXFFO0lBQ3JFLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQTtBQUN0RCxDQUFDIn0=
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertAgentPaymentCollection = assertAgentPaymentCollection;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const guards_1 = require("../draft-orders/guards");
6
+ /**
7
+ * Payment guard (spec §10): the payment collection must belong to a DRAFT
8
+ * order owned by the authenticated AGENT customer. 404 on any mismatch
9
+ * (never leak existence).
10
+ */
11
+ async function assertAgentPaymentCollection(req, paymentCollectionId) {
12
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
13
+ const { data: paymentCollections } = await query.graph({
14
+ entity: "payment_collection",
15
+ filters: { id: paymentCollectionId },
16
+ fields: ["id", "order.id"],
17
+ });
18
+ const orderId = paymentCollections[0]?.order?.id;
19
+ const order = orderId
20
+ ? await (0, guards_1.findAgentDraftOrder)(req.scope, req.auth_context.actor_id, orderId)
21
+ : null;
22
+ if (!order) {
23
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Payment collection with id ${paymentCollectionId} was not found`);
24
+ }
25
+ return { order_id: order.id };
26
+ }
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhcmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwaS9zdG9yZS9uZXRtZS1wb3MvcGF5bWVudC1jb2xsZWN0aW9ucy9ndWFyZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFZQSxvRUF5QkM7QUFwQ0QscURBR2tDO0FBQ2xDLG1EQUE0RDtBQUU1RDs7OztHQUlHO0FBQ0ksS0FBSyxVQUFVLDRCQUE0QixDQUNoRCxHQUErQixFQUMvQixtQkFBMkI7SUFFM0IsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFaEUsTUFBTSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNyRCxNQUFNLEVBQUUsb0JBQW9CO1FBQzVCLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxtQkFBbUIsRUFBRTtRQUNwQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDO0tBQzNCLENBQUMsQ0FBQTtJQUVGLE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUE7SUFDaEQsTUFBTSxLQUFLLEdBQUcsT0FBTztRQUNuQixDQUFDLENBQUMsTUFBTSxJQUFBLDRCQUFtQixFQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFFUixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUMzQiw4QkFBOEIsbUJBQW1CLGdCQUFnQixDQUNsRSxDQUFBO0lBQ0gsQ0FBQztJQUVELE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFBO0FBQy9CLENBQUMifQ==
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ /**
5
+ * `GET /store/netme-pos/products/:id` — single product for the agent, same
6
+ * handler and pricing context as `GET /admin/netme-pos/products/:id`.
7
+ */
8
+ var route_1 = require("../../../../admin/netme-pos/products/[id]/route");
9
+ Object.defineProperty(exports, "GET", { enumerable: true, get: function () { return route_1.GET; } });
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL25ldG1lLXBvcy9wcm9kdWN0cy9baWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7R0FHRztBQUNILHlFQUFxRTtBQUE1RCw0RkFBQSxHQUFHLE9BQUEifQ==
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ /**
5
+ * `GET /store/netme-pos/products` — the agent's catalog.
6
+ *
7
+ * Same handler as `GET /admin/netme-pos/products` (prices for `?customer=`
8
+ * via that customer's groups, inventory per `?stock_location_id=`). The store
9
+ * middleware chain adds customer auth, scopes to the publishable key's sales
10
+ * channels and forces `published` (see `src/api/middlewares.ts`).
11
+ */
12
+ var route_1 = require("../../../admin/netme-pos/products/route");
13
+ Object.defineProperty(exports, "GET", { enumerable: true, get: function () { return route_1.GET; } });
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL25ldG1lLXBvcy9wcm9kdWN0cy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7OztHQU9HO0FBQ0gsaUVBQTZEO0FBQXBELDRGQUFBLEdBQUcsT0FBQSJ9
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertStockLocationInScope = exports.listStockLocationsForChannels = exports.getKeySalesChannelIds = void 0;
4
+ exports.scopeProductsToPublishableKey = scopeProductsToPublishableKey;
5
+ exports.forcePublishedStatus = forcePublishedStatus;
6
+ const utils_1 = require("@medusajs/framework/utils");
7
+ /**
8
+ * Store scoping for the agent's catalog / locations / shipping routes.
9
+ *
10
+ * In the admin POS the operator picks the sales channel and stock location. In
11
+ * the store the sales channel comes from the publishable key, so everything the
12
+ * agent can see (products, stock locations, shipping options) is limited to the
13
+ * key's sales channels.
14
+ */
15
+ const getKeySalesChannelIds = (req) => {
16
+ const ids = req.publishable_key_context?.sales_channel_ids ?? [];
17
+ if (!ids.length) {
18
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "The publishable key is not associated with any sales channel");
19
+ }
20
+ return ids;
21
+ };
22
+ exports.getKeySalesChannelIds = getKeySalesChannelIds;
23
+ /** Stock locations linked to the given sales channels (deduplicated). */
24
+ const listStockLocationsForChannels = async (scope, salesChannelIds) => {
25
+ const query = scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
26
+ const { data: channels } = await query.graph({
27
+ entity: "sales_channel",
28
+ filters: { id: salesChannelIds },
29
+ fields: [
30
+ "id",
31
+ "stock_locations.id",
32
+ "stock_locations.name",
33
+ "stock_locations.address.*",
34
+ "stock_locations.fulfillment_sets.type",
35
+ ],
36
+ });
37
+ const byId = new Map();
38
+ for (const channel of channels) {
39
+ for (const location of channel.stock_locations ?? []) {
40
+ if (!location?.id || byId.has(location.id)) {
41
+ continue;
42
+ }
43
+ byId.set(location.id, {
44
+ id: location.id,
45
+ name: location.name,
46
+ address: location.address ?? null,
47
+ fulfillment_types: [
48
+ ...new Set((location.fulfillment_sets ?? [])
49
+ .map((fs) => fs?.type)
50
+ .filter(Boolean)),
51
+ ],
52
+ });
53
+ }
54
+ }
55
+ return [...byId.values()].sort((a, b) => a.name.localeCompare(b.name));
56
+ };
57
+ exports.listStockLocationsForChannels = listStockLocationsForChannels;
58
+ /** 404 unless the location belongs to the publishable key's sales channels. */
59
+ const assertStockLocationInScope = async (req, stockLocationId) => {
60
+ const locations = await (0, exports.listStockLocationsForChannels)(req.scope, (0, exports.getKeySalesChannelIds)(req));
61
+ const location = locations.find((l) => l.id === stockLocationId);
62
+ if (!location) {
63
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Stock location with id ${stockLocationId} was not found`);
64
+ }
65
+ return location;
66
+ };
67
+ exports.assertStockLocationInScope = assertStockLocationInScope;
68
+ /**
69
+ * Products middleware: restricts `sales_channel_id` to the publishable key's
70
+ * channels (intersecting with any channel the client asked for) and validates
71
+ * an optional `stock_location_id` against those channels.
72
+ *
73
+ * Writes both `filterableFields` (product filter) and `validatedQuery` (read by
74
+ * the inventory scope helper of the shared products handler).
75
+ */
76
+ async function scopeProductsToPublishableKey(req, _res, next) {
77
+ try {
78
+ const keyChannels = (0, exports.getKeySalesChannelIds)(req);
79
+ const validated = (req.validatedQuery ?? {});
80
+ const requested = validated.sales_channel_id;
81
+ let channels = keyChannels;
82
+ if (requested) {
83
+ const asked = Array.isArray(requested) ? requested : [requested];
84
+ channels = keyChannels.filter((id) => asked.includes(id));
85
+ if (!channels.length) {
86
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Requested sales channel is not associated with the publishable key");
87
+ }
88
+ }
89
+ const scoped = channels.length === 1 ? channels[0] : channels;
90
+ req.filterableFields.sales_channel_id = scoped;
91
+ validated.sales_channel_id = scoped;
92
+ if (validated.stock_location_id) {
93
+ await (0, exports.assertStockLocationInScope)(req, validated.stock_location_id);
94
+ }
95
+ return next();
96
+ }
97
+ catch (e) {
98
+ return next(e);
99
+ }
100
+ }
101
+ /** Store never exposes unpublished products (the admin clone lets `?status=` through). */
102
+ function forcePublishedStatus(req, _res, next) {
103
+ req.filterableFields.status = utils_1.ProductStatus.PUBLISHED;
104
+ return next();
105
+ }
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL25ldG1lLXBvcy9zY29wZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE2R0Esc0VBa0NDO0FBR0Qsb0RBT0M7QUFuSkQscURBSWtDO0FBRWxDOzs7Ozs7O0dBT0c7QUFFSSxNQUFNLHFCQUFxQixHQUFHLENBQUMsR0FBa0IsRUFBWSxFQUFFO0lBQ3BFLE1BQU0sR0FBRyxHQUFJLEdBQVcsQ0FBQyx1QkFBdUIsRUFBRSxpQkFBaUIsSUFBSSxFQUFFLENBQUE7SUFDekUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5Qiw4REFBOEQsQ0FDL0QsQ0FBQTtJQUNILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUMsQ0FBQTtBQVRZLFFBQUEscUJBQXFCLHlCQVNqQztBQVNELHlFQUF5RTtBQUNsRSxNQUFNLDZCQUE2QixHQUFHLEtBQUssRUFDaEQsS0FBc0IsRUFDdEIsZUFBeUIsRUFDTyxFQUFFO0lBQ2xDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFNUQsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDM0MsTUFBTSxFQUFFLGVBQWU7UUFDdkIsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRTtRQUNoQyxNQUFNLEVBQUU7WUFDTixJQUFJO1lBQ0osb0JBQW9CO1lBQ3BCLHNCQUFzQjtZQUN0QiwyQkFBMkI7WUFDM0IsdUNBQXVDO1NBQ3hDO0tBQ0YsQ0FBQyxDQUFBO0lBRUYsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUE7SUFD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