@pax2pay/model-banking 0.1.360 → 0.1.361
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/Operation/Changes.ts +55 -6
- package/Operation/Creatable.ts +0 -9
- package/Operation/index.ts +14 -8
- package/dist/Operation/Changes.d.ts +27 -5
- package/dist/Operation/Changes.js +38 -3
- package/dist/Operation/Changes.js.map +1 -1
- package/dist/Operation/Creatable.js +0 -5
- package/dist/Operation/Creatable.js.map +1 -1
- package/dist/Operation/index.d.ts +2 -8
- package/dist/Operation/index.js +10 -0
- package/dist/Operation/index.js.map +1 -1
- package/package.json +1 -1
package/Operation/Changes.ts
CHANGED
|
@@ -4,19 +4,68 @@ import { Balances } from "../Balances"
|
|
|
4
4
|
import { Counterbalance as CounterbalanceOperation } from "../Counterbalance"
|
|
5
5
|
import { Change } from "./Change"
|
|
6
6
|
|
|
7
|
-
export type Changes = Partial<Record<
|
|
8
|
-
|
|
7
|
+
export type Changes = Partial<Record<Changes.Entry.Balance, Change>> & Record<Changes.Entry.Counterbalance, Change>
|
|
9
8
|
export namespace Changes {
|
|
9
|
+
export function available(changes: Changes, currency: isoly.Currency): number {
|
|
10
|
+
return Object.entries(changes).reduce(
|
|
11
|
+
(r, [entry, change]) =>
|
|
12
|
+
isoly.Currency.add(
|
|
13
|
+
currency,
|
|
14
|
+
r,
|
|
15
|
+
Balances.Balance.Entry.is(entry) || Entry.Balance.type.is(entry)
|
|
16
|
+
? (entry == "actual" || entry == "available" ? 1 : -1) *
|
|
17
|
+
(change.type == "subtract" ? -1 : 1) *
|
|
18
|
+
(change.amount ?? 0)
|
|
19
|
+
: 0
|
|
20
|
+
),
|
|
21
|
+
0
|
|
22
|
+
)
|
|
23
|
+
}
|
|
24
|
+
export function reserved(changes: Changes, currency: isoly.Currency): number {
|
|
25
|
+
return Object.entries(changes).reduce(
|
|
26
|
+
(r, [entry, change]) =>
|
|
27
|
+
isoly.Currency.add(
|
|
28
|
+
currency,
|
|
29
|
+
r,
|
|
30
|
+
entry == "actual" ||
|
|
31
|
+
entry == "available" ||
|
|
32
|
+
(!Balances.Balance.Entry.is(entry) && !Entry.Balance.type.is(entry))
|
|
33
|
+
? 0
|
|
34
|
+
: (change.type == "subtract" ? -1 : 1) * (change.amount ?? 0)
|
|
35
|
+
),
|
|
36
|
+
0
|
|
37
|
+
)
|
|
38
|
+
}
|
|
39
|
+
export type Sum = Partial<Record<Changes.Entry.Balance, number>> & Record<Changes.Entry.Counterbalance, number>
|
|
40
|
+
export type MaybeLegacy = Changes | Legacy
|
|
41
|
+
export const type = isly.record<Legacy>(isly.string(), Change.type)
|
|
42
|
+
export type Legacy = Partial<Record<Balances.Balance.Entry, Change>> & Record<Changes.Entry.Counterbalance, Change>
|
|
43
|
+
export namespace Legacy {
|
|
44
|
+
export const type = isly.record<Legacy>(isly.string(), Change.type)
|
|
45
|
+
export const is = type.is
|
|
46
|
+
export const flaw = type.flaw
|
|
47
|
+
export type Entry = Balances.Balance.Entry | Legacy.Entry.Counterbalance
|
|
48
|
+
export namespace Entry {
|
|
49
|
+
export type Balance = typeof Balances.Balance.Entry.values[number]
|
|
50
|
+
export namespace Balance {
|
|
51
|
+
export const type = Balances.Balance.Entry.type
|
|
52
|
+
}
|
|
53
|
+
export type Counterbalance = `${CounterbalanceOperation.Link}-${isoly.DateTime}`
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export type Entry = Changes.Entry.Balance | Changes.Entry.Counterbalance
|
|
10
57
|
export namespace Entry {
|
|
58
|
+
export const type = isly.string<Entry>()
|
|
11
59
|
export type Counterbalance = `${CounterbalanceOperation.Link}-${isoly.DateTime}`
|
|
12
60
|
export function split(counterbalance: Counterbalance): [CounterbalanceOperation.Link, isoly.DateTime] {
|
|
13
61
|
const split = counterbalance.split("-")
|
|
14
62
|
const [realm, supplier, account, hour] = [split[0], split[1], split[2], split.slice(3).join("-")]
|
|
15
63
|
return [`${realm}-${supplier}-${account}`, hour]
|
|
16
64
|
}
|
|
65
|
+
export type Balance = typeof Balance.values[number]
|
|
66
|
+
export namespace Balance {
|
|
67
|
+
export const values = ["available", "incomingReserved", "outgoingReserved", "bufferReserved"] as const
|
|
68
|
+
export const type = isly.string<Balance>(values)
|
|
69
|
+
}
|
|
17
70
|
}
|
|
18
|
-
export type Entry = Balances.Balance.Entry | Entry.Counterbalance
|
|
19
|
-
export const type = isly.record<Changes>(isly.string(), Change.type)
|
|
20
|
-
export const is = type.is
|
|
21
|
-
export const flaw = type.flaw
|
|
22
71
|
}
|
package/Operation/Creatable.ts
CHANGED
|
@@ -49,15 +49,6 @@ export namespace Creatable {
|
|
|
49
49
|
currency,
|
|
50
50
|
type: "refund",
|
|
51
51
|
changes: {
|
|
52
|
-
actual: {
|
|
53
|
-
type: "add",
|
|
54
|
-
amount: isoly.Currency.subtract(
|
|
55
|
-
currency,
|
|
56
|
-
isoly.Currency.add(currency, operationAmount, operationFee),
|
|
57
|
-
Math.abs(charge)
|
|
58
|
-
),
|
|
59
|
-
status: "pending",
|
|
60
|
-
},
|
|
61
52
|
incomingReserved: {
|
|
62
53
|
type: "add",
|
|
63
54
|
amount: isoly.Currency.add(currency, operationAmount, operationFee),
|
package/Operation/index.ts
CHANGED
|
@@ -12,17 +12,23 @@ export interface Operation extends OperationCreatable {
|
|
|
12
12
|
previous?: string
|
|
13
13
|
}
|
|
14
14
|
export namespace Operation {
|
|
15
|
+
export function sum(operations: Operation[]): Changes.Sum {
|
|
16
|
+
const result: Changes.Sum = {}
|
|
17
|
+
for (const operation of operations) {
|
|
18
|
+
Object.entries(operation.changes).forEach(([entry, change]) => {
|
|
19
|
+
result[entry as Changes.Entry.Balance] = isoly.Currency[change.type](
|
|
20
|
+
operation.currency,
|
|
21
|
+
result[entry as Changes.Entry.Balance] ?? 0,
|
|
22
|
+
change.amount
|
|
23
|
+
)
|
|
24
|
+
})
|
|
25
|
+
}
|
|
26
|
+
return result
|
|
27
|
+
}
|
|
15
28
|
export const Signer = OperationSigner
|
|
16
29
|
export type Creatable = OperationCreatable
|
|
17
30
|
export const Creatable = OperationCreatable
|
|
18
|
-
export
|
|
19
|
-
export const Changes = OperationChanges
|
|
20
|
-
export namespace Changes {
|
|
21
|
-
export type Entry = OperationChanges.Entry
|
|
22
|
-
export namespace Entry {
|
|
23
|
-
export type Counterbalance = OperationChanges.Entry.Counterbalance
|
|
24
|
-
}
|
|
25
|
-
}
|
|
31
|
+
export import Changes = OperationChanges
|
|
26
32
|
export const type = OperationCreatable.type.extend<Operation>({
|
|
27
33
|
transaction: isly.string(),
|
|
28
34
|
counter: isly.number(),
|
|
@@ -3,14 +3,36 @@ import { isly } from "isly";
|
|
|
3
3
|
import { Balances } from "../Balances";
|
|
4
4
|
import { Counterbalance as CounterbalanceOperation } from "../Counterbalance";
|
|
5
5
|
import { Change } from "./Change";
|
|
6
|
-
export type Changes = Partial<Record<
|
|
6
|
+
export type Changes = Partial<Record<Changes.Entry.Balance, Change>> & Record<Changes.Entry.Counterbalance, Change>;
|
|
7
7
|
export declare namespace Changes {
|
|
8
|
+
function available(changes: Changes, currency: isoly.Currency): number;
|
|
9
|
+
function reserved(changes: Changes, currency: isoly.Currency): number;
|
|
10
|
+
type Sum = Partial<Record<Changes.Entry.Balance, number>> & Record<Changes.Entry.Counterbalance, number>;
|
|
11
|
+
type MaybeLegacy = Changes | Legacy;
|
|
12
|
+
const type: isly.Type<Legacy>;
|
|
13
|
+
type Legacy = Partial<Record<Balances.Balance.Entry, Change>> & Record<Changes.Entry.Counterbalance, Change>;
|
|
14
|
+
namespace Legacy {
|
|
15
|
+
const type: isly.Type<Legacy>;
|
|
16
|
+
const is: isly.Type.IsFunction<Legacy>;
|
|
17
|
+
const flaw: isly.Type.FlawFunction;
|
|
18
|
+
type Entry = Balances.Balance.Entry | Legacy.Entry.Counterbalance;
|
|
19
|
+
namespace Entry {
|
|
20
|
+
type Balance = typeof Balances.Balance.Entry.values[number];
|
|
21
|
+
namespace Balance {
|
|
22
|
+
const type: isly.Type<"actual" | "incomingReserved" | "outgoingReserved" | "bufferReserved">;
|
|
23
|
+
}
|
|
24
|
+
type Counterbalance = `${CounterbalanceOperation.Link}-${isoly.DateTime}`;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
type Entry = Changes.Entry.Balance | Changes.Entry.Counterbalance;
|
|
8
28
|
namespace Entry {
|
|
29
|
+
const type: isly.Type<Entry>;
|
|
9
30
|
type Counterbalance = `${CounterbalanceOperation.Link}-${isoly.DateTime}`;
|
|
10
31
|
function split(counterbalance: Counterbalance): [CounterbalanceOperation.Link, isoly.DateTime];
|
|
32
|
+
type Balance = typeof Balance.values[number];
|
|
33
|
+
namespace Balance {
|
|
34
|
+
const values: readonly ["available", "incomingReserved", "outgoingReserved", "bufferReserved"];
|
|
35
|
+
const type: isly.Type<"incomingReserved" | "outgoingReserved" | "bufferReserved" | "available">;
|
|
36
|
+
}
|
|
11
37
|
}
|
|
12
|
-
type Entry = Balances.Balance.Entry | Entry.Counterbalance;
|
|
13
|
-
const type: isly.Type<Changes>;
|
|
14
|
-
const is: isly.Type.IsFunction<Changes>;
|
|
15
|
-
const flaw: isly.Type.FlawFunction;
|
|
16
38
|
}
|
|
@@ -1,18 +1,53 @@
|
|
|
1
|
+
import { isoly } from "isoly";
|
|
1
2
|
import { isly } from "isly";
|
|
3
|
+
import { Balances } from "../Balances";
|
|
2
4
|
import { Change } from "./Change";
|
|
3
5
|
export var Changes;
|
|
4
6
|
(function (Changes) {
|
|
7
|
+
function available(changes, currency) {
|
|
8
|
+
return Object.entries(changes).reduce((r, [entry, change]) => isoly.Currency.add(currency, r, Balances.Balance.Entry.is(entry) || Entry.Balance.type.is(entry)
|
|
9
|
+
? (entry == "actual" || entry == "available" ? 1 : -1) *
|
|
10
|
+
(change.type == "subtract" ? -1 : 1) *
|
|
11
|
+
(change.amount ?? 0)
|
|
12
|
+
: 0), 0);
|
|
13
|
+
}
|
|
14
|
+
Changes.available = available;
|
|
15
|
+
function reserved(changes, currency) {
|
|
16
|
+
return Object.entries(changes).reduce((r, [entry, change]) => isoly.Currency.add(currency, r, entry == "actual" ||
|
|
17
|
+
entry == "available" ||
|
|
18
|
+
(!Balances.Balance.Entry.is(entry) && !Entry.Balance.type.is(entry))
|
|
19
|
+
? 0
|
|
20
|
+
: (change.type == "subtract" ? -1 : 1) * (change.amount ?? 0)), 0);
|
|
21
|
+
}
|
|
22
|
+
Changes.reserved = reserved;
|
|
23
|
+
Changes.type = isly.record(isly.string(), Change.type);
|
|
24
|
+
let Legacy;
|
|
25
|
+
(function (Legacy) {
|
|
26
|
+
Legacy.type = isly.record(isly.string(), Change.type);
|
|
27
|
+
Legacy.is = Legacy.type.is;
|
|
28
|
+
Legacy.flaw = Legacy.type.flaw;
|
|
29
|
+
let Entry;
|
|
30
|
+
(function (Entry) {
|
|
31
|
+
let Balance;
|
|
32
|
+
(function (Balance) {
|
|
33
|
+
Balance.type = Balances.Balance.Entry.type;
|
|
34
|
+
})(Balance = Entry.Balance || (Entry.Balance = {}));
|
|
35
|
+
})(Entry = Legacy.Entry || (Legacy.Entry = {}));
|
|
36
|
+
})(Legacy = Changes.Legacy || (Changes.Legacy = {}));
|
|
5
37
|
let Entry;
|
|
6
38
|
(function (Entry) {
|
|
39
|
+
Entry.type = isly.string();
|
|
7
40
|
function split(counterbalance) {
|
|
8
41
|
const split = counterbalance.split("-");
|
|
9
42
|
const [realm, supplier, account, hour] = [split[0], split[1], split[2], split.slice(3).join("-")];
|
|
10
43
|
return [`${realm}-${supplier}-${account}`, hour];
|
|
11
44
|
}
|
|
12
45
|
Entry.split = split;
|
|
46
|
+
let Balance;
|
|
47
|
+
(function (Balance) {
|
|
48
|
+
Balance.values = ["available", "incomingReserved", "outgoingReserved", "bufferReserved"];
|
|
49
|
+
Balance.type = isly.string(Balance.values);
|
|
50
|
+
})(Balance = Entry.Balance || (Entry.Balance = {}));
|
|
13
51
|
})(Entry = Changes.Entry || (Changes.Entry = {}));
|
|
14
|
-
Changes.type = isly.record(isly.string(), Change.type);
|
|
15
|
-
Changes.is = Changes.type.is;
|
|
16
|
-
Changes.flaw = Changes.type.flaw;
|
|
17
52
|
})(Changes || (Changes = {}));
|
|
18
53
|
//# sourceMappingURL=Changes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Changes.js","sourceRoot":"../","sources":["Operation/Changes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Changes.js","sourceRoot":"../","sources":["Operation/Changes.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,11 +38,6 @@ export var Creatable;
|
|
|
38
38
|
currency,
|
|
39
39
|
type: "refund",
|
|
40
40
|
changes: {
|
|
41
|
-
actual: {
|
|
42
|
-
type: "add",
|
|
43
|
-
amount: isoly.Currency.subtract(currency, isoly.Currency.add(currency, operationAmount, operationFee), Math.abs(charge)),
|
|
44
|
-
status: "pending",
|
|
45
|
-
},
|
|
46
41
|
incomingReserved: {
|
|
47
42
|
type: "add",
|
|
48
43
|
amount: isoly.Currency.add(currency, operationAmount, operationFee),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Creatable.js","sourceRoot":"../","sources":["Operation/Creatable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC,MAAM,KAAW,SAAS,
|
|
1
|
+
{"version":3,"file":"Creatable.js","sourceRoot":"../","sources":["Operation/Creatable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC,MAAM,KAAW,SAAS,CA8CzB;AA9CD,WAAiB,SAAS;IACZ,eAAK,GAAG;QACpB,UAAU;QACV,kBAAkB;QAClB,UAAU;QACV,kBAAkB;QAClB,eAAe;QACf,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,cAAc;KACL,CAAA;IAEG,cAAI,GAAG,IAAI,CAAC,MAAM,CAAY;QAC1C,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACjE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1D,OAAO,EAAE,OAAO,CAAC,IAAI;QACrB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,UAAA,KAAK,CAAC;KACxB,CAAC,CAAA;IACW,YAAE,GAAG,UAAA,IAAI,CAAC,EAAE,CAAA;IACZ,cAAI,GAAG,UAAA,IAAI,CAAC,IAAI,CAAA;IAC7B,SAAgB,UAAU,CAAC,OAAe,EAAE,KAAwC,EAAE,MAAc;QAGnG,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;QAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QAC7D,OAAO;YACN,OAAO,EAAE,OAAO;YAChB,QAAQ;YACR,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACR,gBAAgB,EAAE;oBACjB,IAAI,EAAE,KAAK;oBACX,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,YAAY,CAAC;oBACnE,MAAM,EAAE,SAAS;iBACjB;aACD;SACD,CAAA;IACF,CAAC;IAlBe,oBAAU,aAkBzB,CAAA;AACF,CAAC,EA9CgB,SAAS,KAAT,SAAS,QA8CzB"}
|
|
@@ -11,17 +11,11 @@ export interface Operation extends OperationCreatable {
|
|
|
11
11
|
previous?: string;
|
|
12
12
|
}
|
|
13
13
|
export declare namespace Operation {
|
|
14
|
+
function sum(operations: Operation[]): Changes.Sum;
|
|
14
15
|
const Signer: typeof OperationSigner;
|
|
15
16
|
type Creatable = OperationCreatable;
|
|
16
17
|
const Creatable: typeof OperationCreatable;
|
|
17
|
-
|
|
18
|
-
const Changes: typeof OperationChanges;
|
|
19
|
-
namespace Changes {
|
|
20
|
-
type Entry = OperationChanges.Entry;
|
|
21
|
-
namespace Entry {
|
|
22
|
-
type Counterbalance = OperationChanges.Entry.Counterbalance;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
18
|
+
export import Changes = OperationChanges;
|
|
25
19
|
const type: isly.object.ExtendableType<Operation>;
|
|
26
20
|
const is: isly.Type.IsFunction<Operation>;
|
|
27
21
|
const flaw: isly.Type.FlawFunction;
|
package/dist/Operation/index.js
CHANGED
|
@@ -5,6 +5,16 @@ import { Creatable as OperationCreatable } from "./Creatable";
|
|
|
5
5
|
import { Signer as OperationSigner } from "./Signer";
|
|
6
6
|
export var Operation;
|
|
7
7
|
(function (Operation) {
|
|
8
|
+
function sum(operations) {
|
|
9
|
+
const result = {};
|
|
10
|
+
for (const operation of operations) {
|
|
11
|
+
Object.entries(operation.changes).forEach(([entry, change]) => {
|
|
12
|
+
result[entry] = isoly.Currency[change.type](operation.currency, result[entry] ?? 0, change.amount);
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
Operation.sum = sum;
|
|
8
18
|
Operation.Signer = OperationSigner;
|
|
9
19
|
Operation.Creatable = OperationCreatable;
|
|
10
20
|
Operation.Changes = OperationChanges;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Operation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACvD,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,UAAU,CAAA;AASpD,MAAM,KAAW,SAAS,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Operation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACvD,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,UAAU,CAAA;AASpD,MAAM,KAAW,SAAS,CAmCzB;AAnCD,WAAiB,SAAS;IACzB,SAAgB,GAAG,CAAC,UAAuB;QAC1C,MAAM,MAAM,GAAgB,EAAE,CAAA;QAC9B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACpC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE;gBAC7D,MAAM,CAAC,KAA8B,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CACnE,SAAS,CAAC,QAAQ,EAClB,MAAM,CAAC,KAA8B,CAAC,IAAI,CAAC,EAC3C,MAAM,CAAC,MAAM,CACb,CAAA;YACF,CAAC,CAAC,CAAA;QACH,CAAC;QACD,OAAO,MAAM,CAAA;IACd,CAAC;IAZe,aAAG,MAYlB,CAAA;IACY,gBAAM,GAAG,eAAe,CAAA;IAExB,mBAAS,GAAG,kBAAkB,CAAA;IAC7B,iBAAO,GAAG,gBAAgB,CAAA;IAC3B,cAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAY;QAC7D,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE;QAC1B,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE;QACtB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACnC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAClC,CAAC,CAAA;IACW,YAAE,GAAG,UAAA,IAAI,CAAC,EAAE,CAAA;IACZ,cAAI,GAAG,UAAA,IAAI,CAAC,IAAI,CAAA;IAC7B,SAAgB,aAAa,CAAC,WAAmB,EAAE,SAAoB;QACtE,OAAO;YACN,GAAG,SAAS;YACZ,WAAW;YACX,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;SAC7B,CAAA;IACF,CAAC;IAPe,uBAAa,gBAO5B,CAAA;AACF,CAAC,EAnCgB,SAAS,KAAT,SAAS,QAmCzB"}
|