ecash-lib 1.2.0 → 1.2.1-rc

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.
@@ -0,0 +1 @@
1
+ {"parent":"b316d46f-5ea0-4e98-884a-bfbf9cc1d0f8","pid":2715843,"argv":["/home/joey/.nvm/versions/node/v20.11.0/bin/node","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/node_modules/mocha/lib/cli/cli.js","./src/ecc.test.ts","./src/hash.test.ts","./src/op.test.ts","./src/script.test.ts","./src/sigHashType.test.ts","./src/tx.test.ts","./src/unsignedTx.test.ts","./src/io/bytes.test.ts","./src/io/varsize.test.ts","./src/io/writerbytes.test.ts","./src/io/writerlength.test.ts","--reporter","mocha-junit-reporter","--reporter-option","mochaFile=test_results/ecash-lib-junit.xml","--reporter-option","testsuitesTitle=Ecash Lib Unit Tests","--reporter-option","rootSuiteTitle=Ecash Lib","--no-config","--no-package","--diff","--extension","js","--extension","cjs","--extension","mjs","--slow","75","--timeout","2000","--ui","bdd","--watch-ignore","node_modules","--watch-ignore",".git"],"execArgv":["--import=tsx"],"cwd":"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib","time":1714065308447,"ppid":2715833,"coverageFilename":"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/.nyc_output/0fc40ca6-d52c-45eb-b31b-2601ce70b887.json","externalId":"","uuid":"0fc40ca6-d52c-45eb-b31b-2601ce70b887","files":[]}
@@ -0,0 +1 @@
1
+ {"parent":null,"pid":2715808,"argv":["/home/joey/.nvm/versions/node/v20.11.0/bin/node","/home/joey/.nvm/versions/node/v20.11.0/bin/npm","test","--","--reporter","mocha-junit-reporter","--reporter-options","mochaFile=test_results/ecash-lib-junit.xml","--reporter-options","testsuitesTitle=Ecash Lib Unit Tests","--reporter-options","rootSuiteTitle=Ecash Lib"],"execArgv":[],"cwd":"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib","time":1714065307741,"ppid":2715758,"coverageFilename":"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/.nyc_output/ac5be6db-4e40-41f8-8b84-7598d4747e57.json","externalId":"","uuid":"ac5be6db-4e40-41f8-8b84-7598d4747e57","files":[]}
@@ -0,0 +1 @@
1
+ {"parent":"ac5be6db-4e40-41f8-8b84-7598d4747e57","pid":2715833,"argv":["/home/joey/.nvm/versions/node/v20.11.0/bin/node","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/node_modules/.bin/mocha","--import=tsx","./src/ecc.test.ts","./src/hash.test.ts","./src/op.test.ts","./src/script.test.ts","./src/sigHashType.test.ts","./src/tx.test.ts","./src/unsignedTx.test.ts","./src/io/bytes.test.ts","./src/io/varsize.test.ts","./src/io/writerbytes.test.ts","./src/io/writerlength.test.ts","--reporter","mocha-junit-reporter","--reporter-options","mochaFile=test_results/ecash-lib-junit.xml","--reporter-options","testsuitesTitle=Ecash Lib Unit Tests","--reporter-options","rootSuiteTitle=Ecash Lib"],"execArgv":[],"cwd":"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib","time":1714065308079,"ppid":2715832,"coverageFilename":"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/.nyc_output/b316d46f-5ea0-4e98-884a-bfbf9cc1d0f8.json","externalId":"","uuid":"b316d46f-5ea0-4e98-884a-bfbf9cc1d0f8","files":[]}
@@ -0,0 +1 @@
1
+ {"parent":null,"pid":2715758,"argv":["/home/joey/.nvm/versions/node/v20.11.0/bin/node","/home/joey/.nvm/versions/node/v20.11.0/bin/nyc","--reporter=text","--reporter=lcov","--reporter=teamcity","npm","test","--","--reporter","mocha-junit-reporter","--reporter-options","mochaFile=test_results/ecash-lib-junit.xml","--reporter-options","testsuitesTitle=Ecash Lib Unit Tests","--reporter-options","rootSuiteTitle=Ecash Lib"],"execArgv":[],"cwd":"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib","time":1714065305953,"ppid":2715321,"coverageFilename":"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/.nyc_output/f965566b-9422-4874-b45e-9eefda9c769c.json","externalId":"","uuid":"f965566b-9422-4874-b45e-9eefda9c769c","files":["/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/ffi/ecash_lib_wasm.js","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/ecc.js","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/hash.js","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/index.js","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/io/bytes.js","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/io/hex.js","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/io/int.js","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/io/str.js","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/io/varsize.js","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/io/writer.js","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/io/writerbytes.js","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/io/writerlength.js","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/op.js","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/opcode.js","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/script.js","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/sigHashType.js","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/token/alp.js","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/token/common.js","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/token/empp.js","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/tx.js","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/txBuilder.js","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/unsignedTx.js","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/eslint.config.js","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/ecc.ts","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/ffi/ecash_lib_wasm.js","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/hash.ts","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/index.ts","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/io/bytes.ts","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/io/hex.ts","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/io/int.ts","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/io/str.ts","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/io/varsize.ts","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/io/writer.ts","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/io/writerbytes.ts","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/io/writerlength.ts","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/op.ts","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/opcode.ts","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/script.ts","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/sigHashType.ts","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/token/alp.ts","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/token/common.ts","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/token/empp.ts","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/tx.ts","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/txBuilder.ts","/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/unsignedTx.ts"]}
@@ -0,0 +1 @@
1
+ {"processes":{"0fc40ca6-d52c-45eb-b31b-2601ce70b887":{"parent":"b316d46f-5ea0-4e98-884a-bfbf9cc1d0f8","children":[]},"ac5be6db-4e40-41f8-8b84-7598d4747e57":{"parent":null,"children":["b316d46f-5ea0-4e98-884a-bfbf9cc1d0f8"]},"b316d46f-5ea0-4e98-884a-bfbf9cc1d0f8":{"parent":"ac5be6db-4e40-41f8-8b84-7598d4747e57","children":["0fc40ca6-d52c-45eb-b31b-2601ce70b887"]},"f965566b-9422-4874-b45e-9eefda9c769c":{"parent":null,"children":[]}},"files":{"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/ffi/ecash_lib_wasm.js":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/ecc.js":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/hash.js":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/index.js":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/io/bytes.js":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/io/hex.js":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/io/int.js":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/io/str.js":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/io/varsize.js":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/io/writer.js":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/io/writerbytes.js":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/io/writerlength.js":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/op.js":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/opcode.js":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/script.js":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/sigHashType.js":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/token/alp.js":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/token/common.js":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/token/empp.js":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/tx.js":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/txBuilder.js":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/dist/src/unsignedTx.js":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/eslint.config.js":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/ecc.ts":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/ffi/ecash_lib_wasm.js":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/hash.ts":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/index.ts":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/io/bytes.ts":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/io/hex.ts":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/io/int.ts":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/io/str.ts":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/io/varsize.ts":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/io/writer.ts":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/io/writerbytes.ts":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/io/writerlength.ts":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/op.ts":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/opcode.ts":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/script.ts":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/sigHashType.ts":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/token/alp.ts":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/token/common.ts":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/token/empp.ts":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/tx.ts":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/txBuilder.ts":["f965566b-9422-4874-b45e-9eefda9c769c"],"/home/joey/github/abc/bitcoin-abc/modules/ecash-lib/src/unsignedTx.ts":["f965566b-9422-4874-b45e-9eefda9c769c"]},"externalIds":{}}
package/README.md CHANGED
@@ -106,3 +106,4 @@ console.log(toHex(rawTx));
106
106
  - 1.0.1 - Include `ecashaddrjs` and `chronik-client` installations from `npmjs` instead of local, to prevent need for peer dependencies [D17215](https://reviews.bitcoinabc.org/D17215)
107
107
  - 1.1.0 - Add support for the original pre-UAHF Bitcoin signatures, so we can sign transactions for other blockchains like BTC/DOGE/... [D17255](https://reviews.bitcoinabc.org/D17255)
108
108
  - 1.2.0 - Add `Address` class for cashaddr and legacy addresses. [D17269](https://reviews.bitcoinabc.org/D17269)
109
+ - 1.2.1 - Patch type check causing txBuilder txs using change to fail in NodeJS environments [D17461](https://reviews.bitcoinabc.org/D17461)
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Handle cashaddr methods
3
+ * Improve and extend existing functionality of the ecashaddrjs lib
4
+ *
5
+ * Spec
6
+ * https://github.com/bitcoincashorg/bitcoincash.org/blob/master/spec/cashaddr.md
7
+ */
8
+ export type AddressType = 'p2pkh' | 'p2sh';
9
+ export declare const ADDRESS_TYPES: AddressType[];
10
+ export declare const VALID_HASH_SIZES: number[];
11
+ /**
12
+ * Converts an array of integers made up of 'from' bits into an
13
+ * array of integers made up of 'to' bits. The output array is
14
+ * zero-padded if necessary, unless strict mode is true.
15
+ * Original by Pieter Wuille: https://github.com/sipa/bech32.
16
+ *
17
+ * @param data Array of integers made up of 'from' bits.
18
+ * @param from Length in bits of elements in the input array.
19
+ * @param to Length in bits of elements in the output array.
20
+ * @param strictMode Require the conversion to be completed without padding.
21
+ */
22
+ export declare const convertBits: (data: Uint8Array, from: number, to: number, strictMode?: boolean) => Uint8Array;
23
+ export declare const getHashSize: (versionByte: number) => number;
24
+ /**
25
+ * Base 32 encoding / decoding
26
+ */
27
+ export declare const BASE32_CHARSET: string;
28
+ /**
29
+ * Encodes the given array of 5-bit integers as a base32-encoded string.
30
+ * @param data Array of integers between 0 and 31 inclusive.
31
+ */
32
+ export declare const encodeBase32: (data: Uint8Array) => string;
33
+ export declare const decodeBase32: (string: string) => Uint8Array;
34
+ /**
35
+ * Encode a hash as a p2pkh or p2sh cashaddr
36
+ * defaults to p2pkh "ecash"-prefixed cashaddr
37
+ */
38
+ export declare const toCashAddress: (hash: string | Uint8Array, prefix?: string, type?: AddressType) => string;
39
+ interface DecodedAddress {
40
+ prefix: string;
41
+ type: AddressType;
42
+ hash: string;
43
+ }
44
+ export declare const decodeCashAddress: (address: string) => DecodedAddress;
45
+ /**
46
+ * Get type and hash from an outputScript
47
+ *
48
+ * Supported outputScripts:
49
+ *
50
+ * p2pkh: 76a914<hash>88ac
51
+ * p2sh: a914<hash>87
52
+ *
53
+ * Validates for supported outputScript and hash length
54
+ */
55
+ export declare const getTypeAndHashFromOutputScript: (outputScript: string) => {
56
+ type: AddressType;
57
+ hash: string;
58
+ };
59
+ export declare const outputScriptToAddress: (outputScript: string, prefix?: string) => string;
60
+ export declare const ECASH_PREFIXES_MAINNET: string[];
61
+ export declare const toLegacyAddress: (cashaddress: string) => string;
62
+ type NetworkType = 'mainnet' | 'testnet';
63
+ export interface DecodedLegacyAddress {
64
+ type: AddressType;
65
+ hash: string;
66
+ network: NetworkType;
67
+ }
68
+ export declare const decodeLegacyAddress: (address: string) => DecodedLegacyAddress;
69
+ /**
70
+ * Encode a legacy address given type and hash
71
+ * For now, this is a stub method that supports only BTC p2pkh and p2sh
72
+ */
73
+ export declare const encodeLegacyAddress: (hash: Uint8Array, type: 'p2pkh' | 'p2sh', network?: NetworkType) => string;
74
+ export declare const isValidCashAddress: (cashaddress: string, optionalPrefix?: boolean | string) => boolean;
75
+ export declare const encodeOutputScript: (type: AddressType, hash: string) => string;
76
+ export declare const getOutputScriptFromAddress: (address: string) => string;
77
+ export {};
78
+ //# sourceMappingURL=cashaddr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cashaddr.d.ts","sourceRoot":"","sources":["../../src/address/cashaddr.ts"],"names":[],"mappings":"AAQA;;;;;;GAMG;AAEH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;AAC3C,eAAO,MAAM,aAAa,EAAE,WAAW,EAAsB,CAAC;AAG9D,eAAO,MAAM,gBAAgB,UAAmC,CAAC;AAiEjE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,SACd,UAAU,QACV,MAAM,MACR,MAAM,eACE,OAAO,KACpB,UAqCF,CAAC;AAsDF,eAAO,MAAM,WAAW,gBAAiB,MAAM,KAAG,MAqBjD,CAAC;AAiBF;;GAEG;AAGH,eAAO,MAAM,cAAc,EAAE,MAA2C,CAAC;AAsCzE;;;GAGG;AACH,eAAO,MAAM,YAAY,SAAU,UAAU,KAAG,MAa/C,CAAC;AAGF,eAAO,MAAM,YAAY,WAAY,MAAM,KAAG,UAc7C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,SAChB,MAAM,GAAG,UAAU,0BAEnB,WAAW,WAmCpB,CAAC;AAEF,UAAU,cAAc;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,iBAAiB,YAAa,MAAM,KAAG,cAmDnD,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,8BAA8B,iBACzB,MAAM;UACb,WAAW;UAAQ,MAAM;CA4CnC,CAAC;AAGF,eAAO,MAAM,qBAAqB,iBAChB,MAAM,sBAErB,MAMF,CAAC;AAEF,eAAO,MAAM,sBAAsB,UAAsB,CAAC;AAG1D,eAAO,MAAM,eAAe,gBAAiB,MAAM,KAAG,MAyCrD,CAAC;AAEF,KAAK,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AACzC,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,WAAW,CAAC;CACxB;AAuBD,eAAO,MAAM,mBAAmB,YAAa,MAAM,KAAG,oBA4CrD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,SACtB,UAAU,QACV,OAAO,GAAG,MAAM,YACb,WAAW,WAOvB,CAAC;AAIF,eAAO,MAAM,kBAAkB,gBACd,MAAM,mBACH,OAAO,GAAG,MAAM,KACjC,OAUF,CAAC;AAEF,eAAO,MAAM,kBAAkB,SAAU,WAAW,QAAQ,MAAM,KAAG,MAQpE,CAAC;AAEF,eAAO,MAAM,0BAA0B,YAAa,MAAM,KAAG,MAS5D,CAAC"}