@rosen-bridge/rosen-extractor 3.5.0 → 4.0.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/dist/lib/getRosenData/evm/EvmRosenExtractor.d.ts +16 -0
- package/dist/lib/getRosenData/evm/EvmRosenExtractor.d.ts.map +1 -0
- package/dist/lib/getRosenData/evm/EvmRosenExtractor.js +31 -0
- package/dist/lib/getRosenData/evm/EvmRpcRosenExtractor.d.ts +7 -7
- package/dist/lib/getRosenData/evm/EvmRpcRosenExtractor.d.ts.map +1 -1
- package/dist/lib/getRosenData/evm/EvmRpcRosenExtractor.js +14 -9
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +2 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { RosenData } from '../abstract/types';
|
|
2
|
+
import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
|
|
3
|
+
import { RosenTokens } from '@rosen-bridge/tokens';
|
|
4
|
+
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
5
|
+
import { EvmRpcRosenExtractor } from './EvmRpcRosenExtractor';
|
|
6
|
+
export declare class EvmRosenExtractor extends AbstractRosenDataExtractor<string> {
|
|
7
|
+
protected rpcExtractor: EvmRpcRosenExtractor;
|
|
8
|
+
protected chain: string;
|
|
9
|
+
constructor(lockAddress: string, tokens: RosenTokens, chain: string, nativeToken: string, logger?: AbstractLogger);
|
|
10
|
+
/**
|
|
11
|
+
* extracts RosenData from given lock transaction in ethers Transaction format
|
|
12
|
+
* @param serializedTransaction signed serialized transaction in ethers Transaction format
|
|
13
|
+
*/
|
|
14
|
+
get: (serializedTransaction: string) => RosenData | undefined;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=EvmRosenExtractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EvmRosenExtractor.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/evm/EvmRosenExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,0BAA0B,MAAM,wCAAwC,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,qBAAa,iBAAkB,SAAQ,0BAA0B,CAAC,MAAM,CAAC;IACvE,SAAS,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAC7C,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;gBAGtB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,cAAc;IAazB;;;OAGG;IACH,GAAG,0BAA2B,MAAM,KAAG,SAAS,GAAG,SAAS,CAc1D;CACH"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
|
|
2
|
+
import { Transaction } from 'ethers';
|
|
3
|
+
import { EvmRpcRosenExtractor } from './EvmRpcRosenExtractor';
|
|
4
|
+
export class EvmRosenExtractor extends AbstractRosenDataExtractor {
|
|
5
|
+
rpcExtractor;
|
|
6
|
+
chain;
|
|
7
|
+
constructor(lockAddress, tokens, chain, nativeToken, logger) {
|
|
8
|
+
super(lockAddress, tokens, logger);
|
|
9
|
+
this.chain = chain;
|
|
10
|
+
this.rpcExtractor = new EvmRpcRosenExtractor(lockAddress, tokens, chain, nativeToken, logger);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* extracts RosenData from given lock transaction in ethers Transaction format
|
|
14
|
+
* @param serializedTransaction signed serialized transaction in ethers Transaction format
|
|
15
|
+
*/
|
|
16
|
+
get = (serializedTransaction) => {
|
|
17
|
+
let transaction;
|
|
18
|
+
try {
|
|
19
|
+
transaction = Transaction.from(serializedTransaction);
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
this.logger.debug(`An error occurred while deserializing ${this.chain} tx to extract rosen data: ${e}`);
|
|
23
|
+
if (e instanceof Error && e.stack) {
|
|
24
|
+
this.logger.debug(e.stack);
|
|
25
|
+
}
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
return this.rpcExtractor.get(transaction);
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZtUm9zZW5FeHRyYWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvZ2V0Um9zZW5EYXRhL2V2bS9Fdm1Sb3NlbkV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLDBCQUEwQixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHckMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFOUQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLDBCQUFrQztJQUM3RCxZQUFZLENBQXVCO0lBQ25DLEtBQUssQ0FBUztJQUV4QixZQUNFLFdBQW1CLEVBQ25CLE1BQW1CLEVBQ25CLEtBQWEsRUFDYixXQUFtQixFQUNuQixNQUF1QjtRQUV2QixLQUFLLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksb0JBQW9CLENBQzFDLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLFdBQVcsRUFDWCxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxHQUFHLEdBQUcsQ0FBQyxxQkFBNkIsRUFBeUIsRUFBRTtRQUM3RCxJQUFJLFdBQXdCLENBQUM7UUFDN0IsSUFBSTtZQUNGLFdBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDdkQ7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLHlDQUF5QyxJQUFJLENBQUMsS0FBSyw4QkFBOEIsQ0FBQyxFQUFFLENBQ3JGLENBQUM7WUFDRixJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtnQkFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzVCO1lBQ0QsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFDRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm9zZW5EYXRhIH0gZnJvbSAnLi4vYWJzdHJhY3QvdHlwZXMnO1xuaW1wb3J0IEFic3RyYWN0Um9zZW5EYXRhRXh0cmFjdG9yIGZyb20gJy4uL2Fic3RyYWN0L0Fic3RyYWN0Um9zZW5EYXRhRXh0cmFjdG9yJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnZXRoZXJzJztcbmltcG9ydCB7IFJvc2VuVG9rZW5zIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS90b2tlbnMnO1xuaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWxvZ2dlcic7XG5pbXBvcnQgeyBFdm1ScGNSb3NlbkV4dHJhY3RvciB9IGZyb20gJy4vRXZtUnBjUm9zZW5FeHRyYWN0b3InO1xuXG5leHBvcnQgY2xhc3MgRXZtUm9zZW5FeHRyYWN0b3IgZXh0ZW5kcyBBYnN0cmFjdFJvc2VuRGF0YUV4dHJhY3RvcjxzdHJpbmc+IHtcbiAgcHJvdGVjdGVkIHJwY0V4dHJhY3RvcjogRXZtUnBjUm9zZW5FeHRyYWN0b3I7XG4gIHByb3RlY3RlZCBjaGFpbjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGxvY2tBZGRyZXNzOiBzdHJpbmcsXG4gICAgdG9rZW5zOiBSb3NlblRva2VucyxcbiAgICBjaGFpbjogc3RyaW5nLFxuICAgIG5hdGl2ZVRva2VuOiBzdHJpbmcsXG4gICAgbG9nZ2VyPzogQWJzdHJhY3RMb2dnZXJcbiAgKSB7XG4gICAgc3VwZXIobG9ja0FkZHJlc3MsIHRva2VucywgbG9nZ2VyKTtcbiAgICB0aGlzLmNoYWluID0gY2hhaW47XG4gICAgdGhpcy5ycGNFeHRyYWN0b3IgPSBuZXcgRXZtUnBjUm9zZW5FeHRyYWN0b3IoXG4gICAgICBsb2NrQWRkcmVzcyxcbiAgICAgIHRva2VucyxcbiAgICAgIGNoYWluLFxuICAgICAgbmF0aXZlVG9rZW4sXG4gICAgICBsb2dnZXJcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIGV4dHJhY3RzIFJvc2VuRGF0YSBmcm9tIGdpdmVuIGxvY2sgdHJhbnNhY3Rpb24gaW4gZXRoZXJzIFRyYW5zYWN0aW9uIGZvcm1hdFxuICAgKiBAcGFyYW0gc2VyaWFsaXplZFRyYW5zYWN0aW9uIHNpZ25lZCBzZXJpYWxpemVkIHRyYW5zYWN0aW9uIGluIGV0aGVycyBUcmFuc2FjdGlvbiBmb3JtYXRcbiAgICovXG4gIGdldCA9IChzZXJpYWxpemVkVHJhbnNhY3Rpb246IHN0cmluZyk6IFJvc2VuRGF0YSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgbGV0IHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbjtcbiAgICB0cnkge1xuICAgICAgdHJhbnNhY3Rpb24gPSBUcmFuc2FjdGlvbi5mcm9tKHNlcmlhbGl6ZWRUcmFuc2FjdGlvbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBkZXNlcmlhbGl6aW5nICR7dGhpcy5jaGFpbn0gdHggdG8gZXh0cmFjdCByb3NlbiBkYXRhOiAke2V9YFxuICAgICAgKTtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5zdGFjaykge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhlLnN0YWNrKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJwY0V4dHJhY3Rvci5nZXQodHJhbnNhY3Rpb24pO1xuICB9O1xufVxuIl19
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { RosenData } from '../abstract/types';
|
|
2
2
|
import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
|
|
3
|
-
import {
|
|
3
|
+
import { Transaction } from 'ethers';
|
|
4
4
|
import { RosenTokens } from '@rosen-bridge/tokens';
|
|
5
5
|
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
6
|
-
export declare class EvmRpcRosenExtractor extends AbstractRosenDataExtractor<
|
|
6
|
+
export declare class EvmRpcRosenExtractor extends AbstractRosenDataExtractor<Transaction> {
|
|
7
7
|
protected chain: string;
|
|
8
8
|
protected nativeToken: string;
|
|
9
9
|
constructor(lockAddress: string, tokens: RosenTokens, chain: string, nativeToken: string, logger?: AbstractLogger);
|
|
10
10
|
/**
|
|
11
|
-
* extracts RosenData from given lock transaction in
|
|
12
|
-
*
|
|
11
|
+
* extracts RosenData from given lock transaction in ethers Transaction object
|
|
12
|
+
* checks:
|
|
13
13
|
* Native token transfer:
|
|
14
14
|
* 1. `to` must be the lock address
|
|
15
15
|
* 2. the entire calldata must represent a valid CallDataRosenData
|
|
@@ -18,9 +18,9 @@ export declare class EvmRpcRosenExtractor extends AbstractRosenDataExtractor<Tra
|
|
|
18
18
|
* 2. first four bytes of the call data indicate `transfer` function call: a9059cbb
|
|
19
19
|
* 3. bytes from 5 to 37 must be the lock address
|
|
20
20
|
* 4. bytes from 37 to 69 show the amount
|
|
21
|
-
* 5. bytes after 69 must
|
|
22
|
-
* @param transaction the lock transaction in
|
|
21
|
+
* 5. bytes after 69 must represent a valid CallDataRosenData
|
|
22
|
+
* @param transaction the lock transaction in ethers Transaction object
|
|
23
23
|
*/
|
|
24
|
-
get: (transaction:
|
|
24
|
+
get: (transaction: Transaction) => RosenData | undefined;
|
|
25
25
|
}
|
|
26
26
|
//# sourceMappingURL=EvmRpcRosenExtractor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EvmRpcRosenExtractor.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/evm/EvmRpcRosenExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,0BAA0B,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"EvmRpcRosenExtractor.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/evm/EvmRpcRosenExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,0BAA0B,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,WAAW,EAAmB,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG/D,qBAAa,oBAAqB,SAAQ,0BAA0B,CAAC,WAAW,CAAC;IAC/E,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;gBAG5B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,cAAc;IAOzB;;;;;;;;;;;;;OAaG;IACH,GAAG,gBAAiB,WAAW,KAAG,SAAS,GAAG,SAAS,CA+GrD;CACH"}
|
|
@@ -9,8 +9,8 @@ export class EvmRpcRosenExtractor extends AbstractRosenDataExtractor {
|
|
|
9
9
|
this.nativeToken = nativeToken;
|
|
10
10
|
}
|
|
11
11
|
/**
|
|
12
|
-
* extracts RosenData from given lock transaction in
|
|
13
|
-
*
|
|
12
|
+
* extracts RosenData from given lock transaction in ethers Transaction object
|
|
13
|
+
* checks:
|
|
14
14
|
* Native token transfer:
|
|
15
15
|
* 1. `to` must be the lock address
|
|
16
16
|
* 2. the entire calldata must represent a valid CallDataRosenData
|
|
@@ -19,12 +19,17 @@ export class EvmRpcRosenExtractor extends AbstractRosenDataExtractor {
|
|
|
19
19
|
* 2. first four bytes of the call data indicate `transfer` function call: a9059cbb
|
|
20
20
|
* 3. bytes from 5 to 37 must be the lock address
|
|
21
21
|
* 4. bytes from 37 to 69 show the amount
|
|
22
|
-
* 5. bytes after 69 must
|
|
23
|
-
* @param transaction the lock transaction in
|
|
22
|
+
* 5. bytes after 69 must represent a valid CallDataRosenData
|
|
23
|
+
* @param transaction the lock transaction in ethers Transaction object
|
|
24
24
|
*/
|
|
25
25
|
get = (transaction) => {
|
|
26
26
|
const baseError = `No rosen data found for tx [${transaction.hash}]`;
|
|
27
27
|
try {
|
|
28
|
+
if (transaction.from == null || transaction.hash == null) {
|
|
29
|
+
this.logger.debug(baseError +
|
|
30
|
+
`transaction 'from' ([${transaction.from}]) or 'hash' ([${transaction.hash}]) is unexpected (probably unsigned transaction is passed)`);
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
28
33
|
if (transaction.to == null) {
|
|
29
34
|
this.logger.debug(baseError + `: 'to' address is empty.`);
|
|
30
35
|
return undefined;
|
|
@@ -36,7 +41,7 @@ export class EvmRpcRosenExtractor extends AbstractRosenDataExtractor {
|
|
|
36
41
|
let tokenAddress;
|
|
37
42
|
let amount;
|
|
38
43
|
let sourceTokenId, targetTokenId;
|
|
39
|
-
if (transaction.to == this.lockAddress) {
|
|
44
|
+
if (transaction.to.toLowerCase() == this.lockAddress) {
|
|
40
45
|
// transaction must be a native token transfer
|
|
41
46
|
rosenDataRaw = callData;
|
|
42
47
|
tokenAddress = this.nativeToken;
|
|
@@ -67,7 +72,7 @@ export class EvmRpcRosenExtractor extends AbstractRosenDataExtractor {
|
|
|
67
72
|
}
|
|
68
73
|
amount = BigInt('0x' + callData.slice(72, 72 + 64)).toString();
|
|
69
74
|
rosenDataRaw = callData.substring(72 + 64);
|
|
70
|
-
tokenAddress = transaction.to;
|
|
75
|
+
tokenAddress = transaction.to.toLowerCase();
|
|
71
76
|
const tokens = this.tokens.search(this.chain, {
|
|
72
77
|
[this.tokens.getIdKey(this.chain)]: tokenAddress,
|
|
73
78
|
});
|
|
@@ -77,7 +82,7 @@ export class EvmRpcRosenExtractor extends AbstractRosenDataExtractor {
|
|
|
77
82
|
return undefined;
|
|
78
83
|
}
|
|
79
84
|
token = tokens[0];
|
|
80
|
-
sourceTokenId = tokenAddress;
|
|
85
|
+
sourceTokenId = tokenAddress.toLowerCase();
|
|
81
86
|
}
|
|
82
87
|
try {
|
|
83
88
|
rosenData = parseRosenData(rosenDataRaw);
|
|
@@ -99,7 +104,7 @@ export class EvmRpcRosenExtractor extends AbstractRosenDataExtractor {
|
|
|
99
104
|
toAddress: rosenData.toAddress,
|
|
100
105
|
bridgeFee: rosenData.bridgeFee,
|
|
101
106
|
networkFee: rosenData.networkFee,
|
|
102
|
-
fromAddress: transaction.from,
|
|
107
|
+
fromAddress: transaction.from.toLowerCase(),
|
|
103
108
|
sourceChainTokenId: sourceTokenId,
|
|
104
109
|
amount: amount,
|
|
105
110
|
targetChainTokenId: targetTokenId,
|
|
@@ -115,4 +120,4 @@ export class EvmRpcRosenExtractor extends AbstractRosenDataExtractor {
|
|
|
115
120
|
}
|
|
116
121
|
};
|
|
117
122
|
}
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZtUnBjUm9zZW5FeHRyYWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvZ2V0Um9zZW5EYXRhL2V2bS9Fdm1ScGNSb3NlbkV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLDBCQUEwQixNQUFNLHdDQUF3QyxDQUFDO0FBSWhGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFekMsTUFBTSxPQUFPLG9CQUFxQixTQUFRLDBCQUErQztJQUM3RSxLQUFLLENBQVM7SUFDZCxXQUFXLENBQVM7SUFFOUIsWUFDRSxXQUFtQixFQUNuQixNQUFtQixFQUNuQixLQUFhLEVBQ2IsV0FBbUIsRUFDbkIsTUFBdUI7UUFFdkIsS0FBSyxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSCxHQUFHLEdBQUcsQ0FBQyxXQUFnQyxFQUF5QixFQUFFO1FBQ2hFLE1BQU0sU0FBUyxHQUFHLCtCQUErQixXQUFXLENBQUMsSUFBSSxHQUFHLENBQUM7UUFDckUsSUFBSTtZQUNGLElBQUksV0FBVyxDQUFDLEVBQUUsSUFBSSxJQUFJLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRywwQkFBMEIsQ0FBQyxDQUFDO2dCQUMxRCxPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUNELElBQUksU0FBUyxDQUFDO1lBQ2QsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0MsSUFBSSxLQUFzQyxDQUFDO1lBQzNDLElBQUksWUFBWSxDQUFDO1lBQ2pCLElBQUksWUFBWSxDQUFDO1lB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YnN0cmFjdC90eXBlcyc7XG5pbXBvcnQgQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3IgZnJvbSAnLi4vYWJzdHJhY3QvQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3InO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25SZXNwb25zZSB9IGZyb20gJ2V0aGVycyc7XG5pbXBvcnQgeyBSb3NlblRva2VucywgUm9zZW5DaGFpblRva2VuIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS90b2tlbnMnO1xuaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWxvZ2dlcic7XG5pbXBvcnQgeyBwYXJzZVJvc2VuRGF0YSB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgRXZtUnBjUm9zZW5FeHRyYWN0b3IgZXh0ZW5kcyBBYnN0cmFjdFJvc2VuRGF0YUV4dHJhY3RvcjxUcmFuc2FjdGlvblJlc3BvbnNlPiB7XG4gIHByb3RlY3RlZCBjaGFpbjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgbmF0aXZlVG9rZW46IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBsb2NrQWRkcmVzczogc3RyaW5nLFxuICAgIHRva2VuczogUm9zZW5Ub2tlbnMsXG4gICAgY2hhaW46IHN0cmluZyxcbiAgICBuYXRpdmVUb2tlbjogc3RyaW5nLFxuICAgIGxvZ2dlcj86IEFic3RyYWN0TG9nZ2VyXG4gICkge1xuICAgIHN1cGVyKGxvY2tBZGRyZXNzLCB0b2tlbnMsIGxvZ2dlcik7XG4gICAgdGhpcy5jaGFpbiA9IGNoYWluO1xuICAgIHRoaXMubmF0aXZlVG9rZW4gPSBuYXRpdmVUb2tlbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBleHRyYWN0cyBSb3NlbkRhdGEgZnJvbSBnaXZlbiBsb2NrIHRyYW5zYWN0aW9uIGluIFJQQyBmb3JtYXRcbiAgICogY2hla3M6XG4gICAqICAgICBOYXRpdmUgdG9rZW4gdHJhbnNmZXI6XG4gICAqICAgICAgICAgMS4gYHRvYCBtdXN0IGJlIHRoZSBsb2NrIGFkZHJlc3NcbiAgICogICAgICAgICAyLiB0aGUgZW50aXJlIGNhbGxkYXRhIG11c3QgcmVwcmVzZW50IGEgdmFsaWQgQ2FsbERhdGFSb3NlbkRhdGFcbiAgICogICAgIEVSQzIwIHRyYW5zZmVyOlxuICAgKiAgICAgICAgIDEuIGB0b2AgYWRkcmVzcyBpcyBvbmUgb2YgdGhlIHN1cHBvcnRlZCBhc3NldHNcbiAgICogICAgICAgICAyLiBmaXJzdCBmb3VyIGJ5dGVzIG9mIHRoZSBjYWxsIGRhdGEgaW5kaWNhdGUgYHRyYW5zZmVyYCBmdW5jdGlvbiBjYWxsOiBhOTA1OWNiYlxuICAgKiAgICAgICAgIDMuIGJ5dGVzIGZyb20gNSB0byAzNyBtdXN0IGJlIHRoZSBsb2NrIGFkZHJlc3NcbiAgICogICAgICAgICA0LiBieXRlcyBmcm9tIDM3IHRvIDY5IHNob3cgdGhlIGFtb3VudFxuICAgKiAgICAgICAgIDUuIGJ5dGVzIGFmdGVyIDY5IG11c3QgcmVwcmVzbnQgYSB2YWxpZCBDYWxsRGF0YVJvc2VuRGF0YVxuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb24gdGhlIGxvY2sgdHJhbnNhY3Rpb24gaW4gUlBDIGZvcm1hdFxuICAgKi9cbiAgZ2V0ID0gKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvblJlc3BvbnNlKTogUm9zZW5EYXRhIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBiYXNlRXJyb3IgPSBgTm8gcm9zZW4gZGF0YSBmb3VuZCBmb3IgdHggWyR7dHJhbnNhY3Rpb24uaGFzaH1dYDtcbiAgICB0cnkge1xuICAgICAgaWYgKHRyYW5zYWN0aW9uLnRvID09IG51bGwpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYmFzZUVycm9yICsgYDogJ3RvJyBhZGRyZXNzIGlzIGVtcHR5LmApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgbGV0IHJvc2VuRGF0YTtcbiAgICAgIGNvbnN0IGNhbGxEYXRhID0gdHJhbnNhY3Rpb24uZGF0YS5zdWJzdHJpbmcoMik7XG4gICAgICBsZXQgdG9rZW46IFJlY29yZDxzdHJpbmcsIFJvc2VuQ2hhaW5Ub2tlbj47XG4gICAgICBsZXQgcm9zZW5EYXRhUmF3O1xuICAgICAgbGV0IHRva2VuQWRkcmVzcztcbiAgICAgIGxldCBhbW91bnQ7XG4gICAgICBsZXQgc291cmNlVG9rZW5JZCwgdGFyZ2V0VG9rZW5JZDtcblxuICAgICAgaWYgKHRyYW5zYWN0aW9uLnRvID09IHRoaXMubG9ja0FkZHJlc3MpIHtcbiAgICAgICAgLy8gdHJhbnNhY3Rpb24gbXVzdCBiZSBhIG5hdGl2ZSB0b2tlbiB0cmFuc2ZlclxuICAgICAgICByb3NlbkRhdGFSYXcgPSBjYWxsRGF0YTtcbiAgICAgICAgdG9rZW5BZGRyZXNzID0gdGhpcy5uYXRpdmVUb2tlbjtcbiAgICAgICAgYW1vdW50ID0gdHJhbnNhY3Rpb24udmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgdG9rZW5zID0gdGhpcy50b2tlbnMuc2VhcmNoKHRoaXMuY2hhaW4sIHtcbiAgICAgICAgICBbdGhpcy50b2tlbnMuZ2V0SWRLZXkodGhpcy5jaGFpbildOiB0aGlzLm5hdGl2ZVRva2VuLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRva2Vucy5sZW5ndGggPT0gMSkge1xuICAgICAgICAgIHNvdXJjZVRva2VuSWQgPSB0aGlzLm5hdGl2ZVRva2VuO1xuICAgICAgICAgIHRva2VuID0gdG9rZW5zWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYmFzZUVycm9yICtcbiAgICAgICAgICAgICAgYDogbmF0aXZlIHRva2VuIFske3RoaXMubmF0aXZlVG9rZW59XSBpcyBub3QgYXZhaWxhYmxlIGluIHNvdXJjZSBjaGlhbidzIHRva2VucyBtYXAuYFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdHJhbnNhY3Rpb24gbXVzdCBiZSBhbiBFUkMtMjAgdG9rZW4gdHJhbnNmZXJcbiAgICAgICAgaWYgKGNhbGxEYXRhLnN1YnN0cmluZygwLCA4KSAhPSAnYTkwNTljYmInKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICBiYXNlRXJyb3IgKyBgOiBOb3QgYSB2YWxpZCBFUkMyMCB0cmFuc2ZlciB0cmFuc2FjdGlvbi5gXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICBCaWdJbnQoJzB4JyArIGNhbGxEYXRhLnN1YnN0cmluZyg4LCA3MikpLnRvU3RyaW5nKDE2KSAhPVxuICAgICAgICAgIHRoaXMubG9ja0FkZHJlc3Muc3Vic3RyaW5nKDIpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYmFzZUVycm9yICsgYDogJ3RvJyBhZGRyZXNzIGlzIG5vdCB0aGUgbG9jayBhZGRyZXNzLmBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgYW1vdW50ID0gQmlnSW50KCcweCcgKyBjYWxsRGF0YS5zbGljZSg3MiwgNzIgKyA2NCkpLnRvU3RyaW5nKCk7XG4gICAgICAgIHJvc2VuRGF0YVJhdyA9IGNhbGxEYXRhLnN1YnN0cmluZyg3MiArIDY0KTtcbiAgICAgICAgdG9rZW5BZGRyZXNzID0gdHJhbnNhY3Rpb24udG87XG4gICAgICAgIGNvbnN0IHRva2VucyA9IHRoaXMudG9rZW5zLnNlYXJjaCh0aGlzLmNoYWluLCB7XG4gICAgICAgICAgW3RoaXMudG9rZW5zLmdldElkS2V5KHRoaXMuY2hhaW4pXTogdG9rZW5BZGRyZXNzLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRva2Vucy5sZW5ndGggIT0gMSkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYmFzZUVycm9yICtcbiAgICAgICAgICAgICAgYDogdG9rZW4gWyR7dG9rZW5BZGRyZXNzfV0gaXMgbm90IHN1cHBvcnRlZCBvbiBjaGFpbjogWyR7dGhpcy5jaGFpbn1dLmBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgdG9rZW4gPSB0b2tlbnNbMF07XG4gICAgICAgIHNvdXJjZVRva2VuSWQgPSB0b2tlbkFkZHJlc3M7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICByb3NlbkRhdGEgPSBwYXJzZVJvc2VuRGF0YShyb3NlbkRhdGFSYXcpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBiYXNlRXJyb3IgKyBgOiBGYWlsZWQgdG8gZXh0cmFjdCBkYXRhIGZyb20gY2FsbCBkYXRhOiAke2V9YFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICB0YXJnZXRUb2tlbklkID0gdGhpcy50b2tlbnMuZ2V0SUQodG9rZW4sIHJvc2VuRGF0YS50b0NoYWluKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYmFzZUVycm9yICtcbiAgICAgICAgICAgIGA6IHRva2VuIFske3Rva2VuQWRkcmVzc31dIGlzIG5vdCBzdXBwb3J0ZWQgb24gY2hhaW46IFske3Jvc2VuRGF0YS50b0NoYWlufV0uYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdG9DaGFpbjogcm9zZW5EYXRhLnRvQ2hhaW4sXG4gICAgICAgIHRvQWRkcmVzczogcm9zZW5EYXRhLnRvQWRkcmVzcyxcbiAgICAgICAgYnJpZGdlRmVlOiByb3NlbkRhdGEuYnJpZGdlRmVlLFxuICAgICAgICBuZXR3b3JrRmVlOiByb3NlbkRhdGEubmV0d29ya0ZlZSxcbiAgICAgICAgZnJvbUFkZHJlc3M6IHRyYW5zYWN0aW9uLmZyb20sXG4gICAgICAgIHNvdXJjZUNoYWluVG9rZW5JZDogc291cmNlVG9rZW5JZCxcbiAgICAgICAgYW1vdW50OiBhbW91bnQsXG4gICAgICAgIHRhcmdldENoYWluVG9rZW5JZDogdGFyZ2V0VG9rZW5JZCxcbiAgICAgICAgc291cmNlVHhJZDogdHJhbnNhY3Rpb24uaGFzaCxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBnZXR0aW5nIEVWTSByb3NlbiBkYXRhIGZyb20gUlBDOiAke2V9YFxuICAgICAgKTtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5zdGFjaykge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhlLnN0YWNrKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9O1xufVxuIl19
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZtUnBjUm9zZW5FeHRyYWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvZ2V0Um9zZW5EYXRhL2V2bS9Fdm1ScGNSb3NlbkV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLDBCQUEwQixNQUFNLHdDQUF3QyxDQUFDO0FBSWhGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFekMsTUFBTSxPQUFPLG9CQUFxQixTQUFRLDBCQUF1QztJQUNyRSxLQUFLLENBQVM7SUFDZCxXQUFXLENBQVM7SUFFOUIsWUFDRSxXQUFtQixFQUNuQixNQUFtQixFQUNuQixLQUFhLEVBQ2IsV0FBbUIsRUFDbkIsTUFBdUI7UUFFdkIsS0FBSyxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSCxHQUFHLEdBQUcsQ0FBQyxXQUF3QixFQUF5QixFQUFFO1FBQ3hELE1BQU0sU0FBUyxHQUFHLCtCQUErQixXQUFXLENBQUMsSUFBSSxHQUFHLENBQUM7UUFDckUsSUFBSTtZQUNGLElBQUksV0FBVyxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksV0FBVyxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUU7Z0JBQ3hELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLFNBQVM7b0JBQ1Asd0JBQXdCLFdBQVcsQ0FBQyxJQUFJLGtCQUFrQixXQUFXLENBQUMsSUFBSSw0REFBNEQsQ0FDekksQ0FBQztnQkFDRixPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUNELElBQUksV0FBVyxDQUFDLEVBQUUsSUFBSSxJQUFJLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFD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QUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2YsNERBQTRELENBQUMsRUFBRSxDQUNoRSxDQUFDO1lBQ0YsSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM1QjtZQUNELE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3NlbkRhdGEgfSBmcm9tICcuLi9hYnN0cmFjdC90eXBlcyc7XG5pbXBvcnQgQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3IgZnJvbSAnLi4vYWJzdHJhY3QvQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3InO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICdldGhlcnMnO1xuaW1wb3J0IHsgUm9zZW5Ub2tlbnMsIFJvc2VuQ2hhaW5Ub2tlbiB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvdG9rZW5zJztcbmltcG9ydCB7IEFic3RyYWN0TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IHsgcGFyc2VSb3NlbkRhdGEgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIEV2bVJwY1Jvc2VuRXh0cmFjdG9yIGV4dGVuZHMgQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3I8VHJhbnNhY3Rpb24+IHtcbiAgcHJvdGVjdGVkIGNoYWluOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBuYXRpdmVUb2tlbjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGxvY2tBZGRyZXNzOiBzdHJpbmcsXG4gICAgdG9rZW5zOiBSb3NlblRva2VucyxcbiAgICBjaGFpbjogc3RyaW5nLFxuICAgIG5hdGl2ZVRva2VuOiBzdHJpbmcsXG4gICAgbG9nZ2VyPzogQWJzdHJhY3RMb2dnZXJcbiAgKSB7XG4gICAgc3VwZXIobG9ja0FkZHJlc3MsIHRva2VucywgbG9nZ2VyKTtcbiAgICB0aGlzLmNoYWluID0gY2hhaW47XG4gICAgdGhpcy5uYXRpdmVUb2tlbiA9IG5hdGl2ZVRva2VuO1xuICB9XG5cbiAgLyoqXG4gICAqIGV4dHJhY3RzIFJvc2VuRGF0YSBmcm9tIGdpdmVuIGxvY2sgdHJhbnNhY3Rpb24gaW4gZXRoZXJzIFRyYW5zYWN0aW9uIG9iamVjdFxuICAgKiBjaGVja3M6XG4gICAqICAgICBOYXRpdmUgdG9rZW4gdHJhbnNmZXI6XG4gICAqICAgICAgICAgMS4gYHRvYCBtdXN0IGJlIHRoZSBsb2NrIGFkZHJlc3NcbiAgICogICAgICAgICAyLiB0aGUgZW50aXJlIGNhbGxkYXRhIG11c3QgcmVwcmVzZW50IGEgdmFsaWQgQ2FsbERhdGFSb3NlbkRhdGFcbiAgICogICAgIEVSQzIwIHRyYW5zZmVyOlxuICAgKiAgICAgICAgIDEuIGB0b2AgYWRkcmVzcyBpcyBvbmUgb2YgdGhlIHN1cHBvcnRlZCBhc3NldHNcbiAgICogICAgICAgICAyLiBmaXJzdCBmb3VyIGJ5dGVzIG9mIHRoZSBjYWxsIGRhdGEgaW5kaWNhdGUgYHRyYW5zZmVyYCBmdW5jdGlvbiBjYWxsOiBhOTA1OWNiYlxuICAgKiAgICAgICAgIDMuIGJ5dGVzIGZyb20gNSB0byAzNyBtdXN0IGJlIHRoZSBsb2NrIGFkZHJlc3NcbiAgICogICAgICAgICA0LiBieXRlcyBmcm9tIDM3IHRvIDY5IHNob3cgdGhlIGFtb3VudFxuICAgKiAgICAgICAgIDUuIGJ5dGVzIGFmdGVyIDY5IG11c3QgcmVwcmVzZW50IGEgdmFsaWQgQ2FsbERhdGFSb3NlbkRhdGFcbiAgICogQHBhcmFtIHRyYW5zYWN0aW9uIHRoZSBsb2NrIHRyYW5zYWN0aW9uIGluIGV0aGVycyBUcmFuc2FjdGlvbiBvYmplY3RcbiAgICovXG4gIGdldCA9ICh0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiBSb3NlbkRhdGEgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IGJhc2VFcnJvciA9IGBObyByb3NlbiBkYXRhIGZvdW5kIGZvciB0eCBbJHt0cmFuc2FjdGlvbi5oYXNofV1gO1xuICAgIHRyeSB7XG4gICAgICBpZiAodHJhbnNhY3Rpb24uZnJvbSA9PSBudWxsIHx8IHRyYW5zYWN0aW9uLmhhc2ggPT0gbnVsbCkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBiYXNlRXJyb3IgK1xuICAgICAgICAgICAgYHRyYW5zYWN0aW9uICdmcm9tJyAoWyR7dHJhbnNhY3Rpb24uZnJvbX1dKSBvciAnaGFzaCcgKFske3RyYW5zYWN0aW9uLmhhc2h9XSkgaXMgdW5leHBlY3RlZCAocHJvYmFibHkgdW5zaWduZWQgdHJhbnNhY3Rpb24gaXMgcGFzc2VkKWBcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGlmICh0cmFuc2FjdGlvbi50byA9PSBudWxsKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGJhc2VFcnJvciArIGA6ICd0bycgYWRkcmVzcyBpcyBlbXB0eS5gKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGxldCByb3NlbkRhdGE7XG4gICAgICBjb25zdCBjYWxsRGF0YSA9IHRyYW5zYWN0aW9uLmRhdGEuc3Vic3RyaW5nKDIpO1xuICAgICAgbGV0IHRva2VuOiBSZWNvcmQ8c3RyaW5nLCBSb3NlbkNoYWluVG9rZW4+O1xuICAgICAgbGV0IHJvc2VuRGF0YVJhdztcbiAgICAgIGxldCB0b2tlbkFkZHJlc3M7XG4gICAgICBsZXQgYW1vdW50O1xuICAgICAgbGV0IHNvdXJjZVRva2VuSWQsIHRhcmdldFRva2VuSWQ7XG5cbiAgICAgIGlmICh0cmFuc2FjdGlvbi50by50b0xvd2VyQ2FzZSgpID09IHRoaXMubG9ja0FkZHJlc3MpIHtcbiAgICAgICAgLy8gdHJhbnNhY3Rpb24gbXVzdCBiZSBhIG5hdGl2ZSB0b2tlbiB0cmFuc2ZlclxuICAgICAgICByb3NlbkRhdGFSYXcgPSBjYWxsRGF0YTtcbiAgICAgICAgdG9rZW5BZGRyZXNzID0gdGhpcy5uYXRpdmVUb2tlbjtcbiAgICAgICAgYW1vdW50ID0gdHJhbnNhY3Rpb24udmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgdG9rZW5zID0gdGhpcy50b2tlbnMuc2VhcmNoKHRoaXMuY2hhaW4sIHtcbiAgICAgICAgICBbdGhpcy50b2tlbnMuZ2V0SWRLZXkodGhpcy5jaGFpbildOiB0aGlzLm5hdGl2ZVRva2VuLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRva2Vucy5sZW5ndGggPT0gMSkge1xuICAgICAgICAgIHNvdXJjZVRva2VuSWQgPSB0aGlzLm5hdGl2ZVRva2VuO1xuICAgICAgICAgIHRva2VuID0gdG9rZW5zWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYmFzZUVycm9yICtcbiAgICAgICAgICAgICAgYDogbmF0aXZlIHRva2VuIFske3RoaXMubmF0aXZlVG9rZW59XSBpcyBub3QgYXZhaWxhYmxlIGluIHNvdXJjZSBjaGlhbidzIHRva2VucyBtYXAuYFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdHJhbnNhY3Rpb24gbXVzdCBiZSBhbiBFUkMtMjAgdG9rZW4gdHJhbnNmZXJcbiAgICAgICAgaWYgKGNhbGxEYXRhLnN1YnN0cmluZygwLCA4KSAhPSAnYTkwNTljYmInKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICBiYXNlRXJyb3IgKyBgOiBOb3QgYSB2YWxpZCBFUkMyMCB0cmFuc2ZlciB0cmFuc2FjdGlvbi5gXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICBCaWdJbnQoJzB4JyArIGNhbGxEYXRhLnN1YnN0cmluZyg4LCA3MikpLnRvU3RyaW5nKDE2KSAhPVxuICAgICAgICAgIHRoaXMubG9ja0FkZHJlc3Muc3Vic3RyaW5nKDIpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYmFzZUVycm9yICsgYDogJ3RvJyBhZGRyZXNzIGlzIG5vdCB0aGUgbG9jayBhZGRyZXNzLmBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgYW1vdW50ID0gQmlnSW50KCcweCcgKyBjYWxsRGF0YS5zbGljZSg3MiwgNzIgKyA2NCkpLnRvU3RyaW5nKCk7XG4gICAgICAgIHJvc2VuRGF0YVJhdyA9IGNhbGxEYXRhLnN1YnN0cmluZyg3MiArIDY0KTtcbiAgICAgICAgdG9rZW5BZGRyZXNzID0gdHJhbnNhY3Rpb24udG8udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3QgdG9rZW5zID0gdGhpcy50b2tlbnMuc2VhcmNoKHRoaXMuY2hhaW4sIHtcbiAgICAgICAgICBbdGhpcy50b2tlbnMuZ2V0SWRLZXkodGhpcy5jaGFpbildOiB0b2tlbkFkZHJlc3MsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodG9rZW5zLmxlbmd0aCAhPSAxKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICBiYXNlRXJyb3IgK1xuICAgICAgICAgICAgICBgOiB0b2tlbiBbJHt0b2tlbkFkZHJlc3N9XSBpcyBub3Qgc3VwcG9ydGVkIG9uIGNoYWluOiBbJHt0aGlzLmNoYWlufV0uYFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB0b2tlbiA9IHRva2Vuc1swXTtcbiAgICAgICAgc291cmNlVG9rZW5JZCA9IHRva2VuQWRkcmVzcy50b0xvd2VyQ2FzZSgpO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgcm9zZW5EYXRhID0gcGFyc2VSb3NlbkRhdGEocm9zZW5EYXRhUmF3KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYmFzZUVycm9yICsgYDogRmFpbGVkIHRvIGV4dHJhY3QgZGF0YSBmcm9tIGNhbGwgZGF0YTogJHtlfWBcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgdGFyZ2V0VG9rZW5JZCA9IHRoaXMudG9rZW5zLmdldElEKHRva2VuLCByb3NlbkRhdGEudG9DaGFpbik7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGJhc2VFcnJvciArXG4gICAgICAgICAgICBgOiB0b2tlbiBbJHt0b2tlbkFkZHJlc3N9XSBpcyBub3Qgc3VwcG9ydGVkIG9uIGNoYWluOiBbJHtyb3NlbkRhdGEudG9DaGFpbn1dLmBcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRvQ2hhaW46IHJvc2VuRGF0YS50b0NoYWluLFxuICAgICAgICB0b0FkZHJlc3M6IHJvc2VuRGF0YS50b0FkZHJlc3MsXG4gICAgICAgIGJyaWRnZUZlZTogcm9zZW5EYXRhLmJyaWRnZUZlZSxcbiAgICAgICAgbmV0d29ya0ZlZTogcm9zZW5EYXRhLm5ldHdvcmtGZWUsXG4gICAgICAgIGZyb21BZGRyZXNzOiB0cmFuc2FjdGlvbi5mcm9tLnRvTG93ZXJDYXNlKCksXG4gICAgICAgIHNvdXJjZUNoYWluVG9rZW5JZDogc291cmNlVG9rZW5JZCxcbiAgICAgICAgYW1vdW50OiBhbW91bnQsXG4gICAgICAgIHRhcmdldENoYWluVG9rZW5JZDogdGFyZ2V0VG9rZW5JZCxcbiAgICAgICAgc291cmNlVHhJZDogdHJhbnNhY3Rpb24uaGFzaCxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBnZXR0aW5nIEVWTSByb3NlbiBkYXRhIGZyb20gUlBDOiAke2V9YFxuICAgICAgKTtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5zdGFjaykge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhlLnN0YWNrKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9O1xufVxuIl19
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { default as AbstractRosenDataExtractor } from './getRosenData/abstract/AbstractRosenDataExtractor';
|
|
2
2
|
export { BitcoinEsploraRosenExtractor } from './getRosenData/bitcoin/BitcoinEsploraRosenExtractor';
|
|
3
3
|
export { EvmRpcRosenExtractor } from './getRosenData/evm/EvmRpcRosenExtractor';
|
|
4
|
+
export { EvmRosenExtractor } from './getRosenData/evm/EvmRosenExtractor';
|
|
4
5
|
export { BitcoinRosenExtractor } from './getRosenData/bitcoin/BitcoinRosenExtractor';
|
|
5
6
|
export { CardanoKoiosRosenExtractor } from './getRosenData/cardano/CardanoKoiosRosenExtractor';
|
|
6
7
|
export { CardanoOgmiosRosenExtractor } from './getRosenData/cardano/CardanoOgmiosRosenExtractor';
|
package/dist/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,oDAAoD,CAAC;AAC3G,OAAO,EAAE,4BAA4B,EAAE,MAAM,qDAAqD,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,EAAE,2BAA2B,EAAE,MAAM,oDAAoD,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,+BAA+B,EAAE,MAAM,wDAAwD,CAAC;AACzG,OAAO,EAAE,4BAA4B,EAAE,MAAM,qDAAqD,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,oDAAoD,CAAC;AAC3G,OAAO,EAAE,4BAA4B,EAAE,MAAM,qDAAqD,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,EAAE,2BAA2B,EAAE,MAAM,oDAAoD,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,+BAA+B,EAAE,MAAM,wDAAwD,CAAC;AACzG,OAAO,EAAE,4BAA4B,EAAE,MAAM,qDAAqD,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC"}
|
package/dist/lib/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { default as AbstractRosenDataExtractor } from './getRosenData/abstract/AbstractRosenDataExtractor';
|
|
2
2
|
export { BitcoinEsploraRosenExtractor } from './getRosenData/bitcoin/BitcoinEsploraRosenExtractor';
|
|
3
3
|
export { EvmRpcRosenExtractor } from './getRosenData/evm/EvmRpcRosenExtractor';
|
|
4
|
+
export { EvmRosenExtractor } from './getRosenData/evm/EvmRosenExtractor';
|
|
4
5
|
export { BitcoinRosenExtractor } from './getRosenData/bitcoin/BitcoinRosenExtractor';
|
|
5
6
|
export { CardanoKoiosRosenExtractor } from './getRosenData/cardano/CardanoKoiosRosenExtractor';
|
|
6
7
|
export { CardanoOgmiosRosenExtractor } from './getRosenData/cardano/CardanoOgmiosRosenExtractor';
|
|
@@ -9,4 +10,4 @@ export { CardanoBlockFrostRosenExtractor } from './getRosenData/cardano/CardanoB
|
|
|
9
10
|
export { CardanoGraphQLRosenExtractor } from './getRosenData/cardano/CardanoGraphQLRosenExtractor';
|
|
10
11
|
export { ErgoRosenExtractor } from './getRosenData/ergo/ErgoRosenExtractor';
|
|
11
12
|
export { ErgoNodeRosenExtractor } from './getRosenData/ergo/ErgoNodeRosenExtractor';
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sSUFBSSwwQkFBMEIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCBhcyBBYnN0cmFjdFJvc2VuRGF0YUV4dHJhY3RvciB9IGZyb20gJy4vZ2V0Um9zZW5EYXRhL2Fic3RyYWN0L0Fic3RyYWN0Um9zZW5EYXRhRXh0cmFjdG9yJztcbmV4cG9ydCB7IEJpdGNvaW5Fc3Bsb3JhUm9zZW5FeHRyYWN0b3IgfSBmcm9tICcuL2dldFJvc2VuRGF0YS9iaXRjb2luL0JpdGNvaW5Fc3Bsb3JhUm9zZW5FeHRyYWN0b3InO1xuZXhwb3J0IHsgRXZtUnBjUm9zZW5FeHRyYWN0b3IgfSBmcm9tICcuL2dldFJvc2VuRGF0YS9ldm0vRXZtUnBjUm9zZW5FeHRyYWN0b3InO1xuZXhwb3J0IHsgRXZtUm9zZW5FeHRyYWN0b3IgfSBmcm9tICcuL2dldFJvc2VuRGF0YS9ldm0vRXZtUm9zZW5FeHRyYWN0b3InO1xuZXhwb3J0IHsgQml0Y29pblJvc2VuRXh0cmFjdG9yIH0gZnJvbSAnLi9nZXRSb3NlbkRhdGEvYml0Y29pbi9CaXRjb2luUm9zZW5FeHRyYWN0b3InO1xuZXhwb3J0IHsgQ2FyZGFub0tvaW9zUm9zZW5FeHRyYWN0b3IgfSBmcm9tICcuL2dldFJvc2VuRGF0YS9jYXJkYW5vL0NhcmRhbm9Lb2lvc1Jvc2VuRXh0cmFjdG9yJztcbmV4cG9ydCB7IENhcmRhbm9PZ21pb3NSb3NlbkV4dHJhY3RvciB9IGZyb20gJy4vZ2V0Um9zZW5EYXRhL2NhcmRhbm8vQ2FyZGFub09nbWlvc1Jvc2VuRXh0cmFjdG9yJztcbmV4cG9ydCB7IENhcmRhbm9Sb3NlbkV4dHJhY3RvciB9IGZyb20gJy4vZ2V0Um9zZW5EYXRhL2NhcmRhbm8vQ2FyZGFub1Jvc2VuRXh0cmFjdG9yJztcbmV4cG9ydCB7IENhcmRhbm9CbG9ja0Zyb3N0Um9zZW5FeHRyYWN0b3IgfSBmcm9tICcuL2dldFJvc2VuRGF0YS9jYXJkYW5vL0NhcmRhbm9CbG9ja0Zyb3N0Um9zZW5FeHRyYWN0b3InO1xuZXhwb3J0IHsgQ2FyZGFub0dyYXBoUUxSb3NlbkV4dHJhY3RvciB9IGZyb20gJy4vZ2V0Um9zZW5EYXRhL2NhcmRhbm8vQ2FyZGFub0dyYXBoUUxSb3NlbkV4dHJhY3Rvcic7XG5leHBvcnQgeyBFcmdvUm9zZW5FeHRyYWN0b3IgfSBmcm9tICcuL2dldFJvc2VuRGF0YS9lcmdvL0VyZ29Sb3NlbkV4dHJhY3Rvcic7XG5leHBvcnQgeyBFcmdvTm9kZVJvc2VuRXh0cmFjdG9yIH0gZnJvbSAnLi9nZXRSb3NlbkRhdGEvZXJnby9FcmdvTm9kZVJvc2VuRXh0cmFjdG9yJztcbmV4cG9ydCB7IFJvc2VuRGF0YSB9IGZyb20gJy4vZ2V0Um9zZW5EYXRhL2Fic3RyYWN0L3R5cGVzJztcbiJdfQ==
|