@rosen-bridge/watcher-data-extractor 12.3.0 → 13.0.0-7b38188a
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/CHANGELOG.md +20 -0
- package/dist/actions/collateralAction.d.ts +15 -66
- package/dist/actions/collateralAction.d.ts.map +1 -1
- package/dist/actions/collateralAction.js +21 -181
- package/dist/actions/commitmentAction.d.ts +3 -3
- package/dist/actions/commitmentAction.d.ts.map +1 -1
- package/dist/actions/commitmentAction.js +2 -2
- package/dist/actions/eventTriggerAction.d.ts +3 -4
- package/dist/actions/eventTriggerAction.d.ts.map +1 -1
- package/dist/actions/eventTriggerAction.js +11 -13
- package/dist/actions/permitAction.d.ts +3 -3
- package/dist/actions/permitAction.d.ts.map +1 -1
- package/dist/actions/permitAction.js +1 -1
- package/dist/entities/collateralEntity.d.ts +3 -11
- package/dist/entities/collateralEntity.d.ts.map +1 -1
- package/dist/entities/collateralEntity.js +7 -52
- package/dist/entities/eventTriggerEntity.d.ts +2 -2
- package/dist/entities/eventTriggerEntity.d.ts.map +1 -1
- package/dist/entities/eventTriggerEntity.js +3 -3
- package/dist/extractor/collateralExtractor.d.ts +17 -72
- package/dist/extractor/collateralExtractor.d.ts.map +1 -1
- package/dist/extractor/collateralExtractor.js +48 -212
- package/dist/extractor/commitmentExtractor.d.ts +3 -3
- package/dist/extractor/commitmentExtractor.d.ts.map +1 -1
- package/dist/extractor/commitmentExtractor.js +3 -3
- package/dist/extractor/eventTriggerExtractor.d.ts +3 -3
- package/dist/extractor/eventTriggerExtractor.d.ts.map +1 -1
- package/dist/extractor/eventTriggerExtractor.js +9 -9
- package/dist/extractor/permitExtractor.d.ts +3 -3
- package/dist/extractor/permitExtractor.d.ts.map +1 -1
- package/dist/extractor/permitExtractor.js +3 -3
- package/dist/interfaces/extractedCollateral.d.ts +3 -7
- package/dist/interfaces/extractedCollateral.d.ts.map +1 -1
- package/dist/interfaces/extractedCollateral.js +1 -1
- package/dist/interfaces/extractedEventTrigger.d.ts +1 -1
- package/dist/interfaces/extractedEventTrigger.d.ts.map +1 -1
- package/dist/interfaces/extractedEventTrigger.js +1 -1
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +9 -1
- package/dist/migrations/postgres/1758958886549-migration.d.ts +7 -0
- package/dist/migrations/postgres/1758958886549-migration.d.ts.map +1 -0
- package/dist/migrations/postgres/1758958886549-migration.js +30 -0
- package/dist/migrations/postgres/1766843825000-migration.d.ts +7 -0
- package/dist/migrations/postgres/1766843825000-migration.d.ts.map +1 -0
- package/dist/migrations/postgres/1766843825000-migration.js +42 -0
- package/dist/migrations/sqlite/1762768664031-migration.d.ts +7 -0
- package/dist/migrations/sqlite/1762768664031-migration.d.ts.map +1 -0
- package/dist/migrations/sqlite/1762768664031-migration.js +204 -0
- package/dist/migrations/sqlite/1766843824000-migration.d.ts +7 -0
- package/dist/migrations/sqlite/1766843824000-migration.d.ts.map +1 -0
- package/dist/migrations/sqlite/1766843824000-migration.js +109 -0
- package/package.json +8 -7
|
@@ -1,236 +1,72 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
1
|
+
import { Buffer } from 'buffer';
|
|
2
|
+
import * as wasm from 'ergo-lib-wasm-nodejs';
|
|
3
|
+
import { AbstractErgoBoxExtractor, } from '@rosen-bridge/abstract-extractor';
|
|
4
|
+
import JsonBI from '@rosen-bridge/json-bigint';
|
|
5
5
|
import CollateralAction from '../actions/collateralAction';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export class CollateralExtractor extends AbstractExtractor {
|
|
6
|
+
export class CollateralExtractor extends AbstractErgoBoxExtractor {
|
|
7
|
+
actions;
|
|
9
8
|
id;
|
|
10
|
-
awcNft;
|
|
11
|
-
address;
|
|
12
|
-
dataSource;
|
|
13
|
-
logger;
|
|
14
9
|
ergoTree;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
super();
|
|
10
|
+
awcNft;
|
|
11
|
+
constructor(dataSource, id, awcNft, initializeOptions, logger) {
|
|
12
|
+
super(initializeOptions, logger);
|
|
19
13
|
this.id = id;
|
|
20
|
-
this.
|
|
21
|
-
this.address = address;
|
|
22
|
-
this.dataSource = dataSource;
|
|
23
|
-
this.logger = logger;
|
|
24
|
-
this.ergoTree = ergoLib.Address.from_base58(this.address)
|
|
14
|
+
this.ergoTree = wasm.Address.from_base58(initializeOptions.address)
|
|
25
15
|
.to_ergo_tree()
|
|
26
16
|
.to_base16_bytes();
|
|
27
|
-
this.
|
|
28
|
-
this.
|
|
17
|
+
this.awcNft = awcNft;
|
|
18
|
+
this.actions = new CollateralAction(dataSource, this.logger.child('CollateralAction'));
|
|
29
19
|
}
|
|
30
20
|
/**
|
|
31
|
-
* get
|
|
32
|
-
*
|
|
33
|
-
* @return {string}
|
|
21
|
+
* get Id for current extractor
|
|
34
22
|
*/
|
|
35
|
-
getId = () => this.id
|
|
23
|
+
getId = () => `${this.id}`;
|
|
36
24
|
/**
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* @
|
|
40
|
-
* @param {Block} block block id for transactions as hex encoded
|
|
41
|
-
* @return {Promise<boolean>} Promise<boolean> if no error occurred return
|
|
42
|
-
* true. otherwise, return false
|
|
25
|
+
* check proper data format in the box
|
|
26
|
+
* @param box
|
|
27
|
+
* @return true if the box has the required data and false otherwise
|
|
43
28
|
*/
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
for (const tx of txs) {
|
|
49
|
-
const outputBox = tx.outputs.at(1);
|
|
50
|
-
if (outputBox == undefined) {
|
|
51
|
-
continue;
|
|
52
|
-
}
|
|
53
|
-
if (!this.isCollateralBox(outputBox)) {
|
|
54
|
-
continue;
|
|
55
|
-
}
|
|
56
|
-
const extractedCollateral = this.toExtractedCollateral(outputBox, block.hash, block.height);
|
|
57
|
-
if (extractedCollateral)
|
|
58
|
-
boxes.push(extractedCollateral);
|
|
59
|
-
const inputCollateral = tx.inputs.at(1);
|
|
60
|
-
if (inputCollateral != undefined) {
|
|
61
|
-
spentInfos.push({ txId: tx.id, boxId: inputCollateral.boxId });
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
if (boxes.length > 0)
|
|
65
|
-
await this.action.storeCollaterals(boxes, block, this.getId());
|
|
66
|
-
await this.action.spendCollaterals(spentInfos, block, this.getId());
|
|
67
|
-
}
|
|
68
|
-
catch (e) {
|
|
69
|
-
this.logger.error(`Error in storing collaterals of the block ${block}: ${e}`);
|
|
29
|
+
hasBoxData = (box) => {
|
|
30
|
+
if (box.ergoTree !== this.ergoTree ||
|
|
31
|
+
box.assets.length === 0 ||
|
|
32
|
+
box.assets[0].tokenId !== this.awcNft) {
|
|
70
33
|
return false;
|
|
71
34
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
isCollateralBox = (outputBox) => {
|
|
83
|
-
const awcNft = outputBox.assets?.at(0)?.tokenId;
|
|
84
|
-
return (awcNft != undefined &&
|
|
85
|
-
awcNft === this.awcNft &&
|
|
86
|
-
outputBox.ergoTree === this.ergoTree);
|
|
87
|
-
};
|
|
88
|
-
/**
|
|
89
|
-
* Delete all collaterals corresponding to the passed block and extractor and
|
|
90
|
-
* update all collaterals spent in the specified block
|
|
91
|
-
*
|
|
92
|
-
* @param {string} hash
|
|
93
|
-
* @return {Promise<void>}
|
|
94
|
-
* @memberof CollateralExtractor
|
|
95
|
-
*/
|
|
96
|
-
forkBlock = async (hash) => {
|
|
97
|
-
await this.action.deleteBlock(hash, this.getId());
|
|
98
|
-
};
|
|
99
|
-
/**
|
|
100
|
-
* Initializes the database with older collaterals
|
|
101
|
-
*
|
|
102
|
-
* @param {number} initialHeight
|
|
103
|
-
* @return {Promise<void>}
|
|
104
|
-
* @memberof CollateralExtractor
|
|
105
|
-
*/
|
|
106
|
-
initializeBoxes = async (initialBlock) => {
|
|
107
|
-
const unspentCollaterals = await this.getAllUnspentCollaterals(initialBlock.height);
|
|
108
|
-
this.logger.debug(`unspent collateral box info with following IDs gotten form Ergo network: [${unspentCollaterals
|
|
109
|
-
.map((box) => box.boxId)
|
|
110
|
-
.join(', ')}]`);
|
|
111
|
-
const storedUnspentCollateralBoxIds = await this.action.getUnspentCollateralBoxIds(this.getId());
|
|
112
|
-
const unspentCollateralBoxIds = new Set(unspentCollaterals.map((box) => box.boxId));
|
|
113
|
-
await this.tidyUpStoredCollaterals(initialBlock.height, storedUnspentCollateralBoxIds.filter((boxId) => !unspentCollateralBoxIds.has(boxId)));
|
|
114
|
-
for (const collateral of unspentCollaterals) {
|
|
115
|
-
if (storedUnspentCollateralBoxIds.includes(collateral.boxId)) {
|
|
116
|
-
this.logger.debug(`updating unspent collateral with boxId=[${collateral.boxId}] at initialization phase`);
|
|
117
|
-
await this.action.updateCollateral(collateral, this.getId());
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
this.logger.debug(`inserting unspent collateral with boxId=[${collateral.boxId}] to database at initialization phase`);
|
|
121
|
-
await this.action.insertCollateral(collateral, this.getId());
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
};
|
|
125
|
-
/**
|
|
126
|
-
* removes or updates stored collateral boxes before initializing boxes
|
|
127
|
-
*
|
|
128
|
-
* @private
|
|
129
|
-
* @param {number} initialHeight
|
|
130
|
-
* @param {string[]} collateralBoxIds
|
|
131
|
-
* @return {Promise<void>}
|
|
132
|
-
* @memberof CollateralExtractor
|
|
133
|
-
*/
|
|
134
|
-
async tidyUpStoredCollaterals(initialHeight, collateralBoxIds) {
|
|
135
|
-
for (const boxId of collateralBoxIds) {
|
|
136
|
-
let boxInfo;
|
|
137
|
-
try {
|
|
138
|
-
boxInfo = await this.explorerApi.v1.getApiV1BoxesP1(boxId);
|
|
139
|
-
}
|
|
140
|
-
catch (e) {
|
|
141
|
-
if (e.response?.status === 404) {
|
|
142
|
-
await this.action.deleteCollateral(boxId, this.getId());
|
|
143
|
-
continue;
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
throw new Error(`something went wrong when trying to get box=[${boxId}] from Ergo network: ${e.message}`);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
if (boxInfo?.spentTransactionId != null) {
|
|
150
|
-
try {
|
|
151
|
-
const transactionInfo = await this.explorerApi.v1.getApiV1TransactionsP1(boxInfo.spentTransactionId);
|
|
152
|
-
if (transactionInfo.inclusionHeight < initialHeight) {
|
|
153
|
-
this.logger.debug(`collateral with boxId=[${boxId}] is spent and is being updated with spendHeight=[${transactionInfo.inclusionHeight}] and spendBlock=[${transactionInfo.blockId}]`);
|
|
154
|
-
await this.action.updateCollateral({
|
|
155
|
-
boxId: boxId,
|
|
156
|
-
spendHeight: transactionInfo.inclusionHeight,
|
|
157
|
-
spendBlock: transactionInfo.blockId,
|
|
158
|
-
spendTxId: transactionInfo.id,
|
|
159
|
-
}, this.getId());
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
catch (e) {
|
|
163
|
-
throw new Error(`something went wrong when trying to get transaction=[${boxInfo.spentTransactionId}] from Ergo network: ${e?.message}`);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
35
|
+
// Check if R4 and R5 registers exist and are valid
|
|
36
|
+
try {
|
|
37
|
+
const ergoBox = wasm.ErgoBox.from_json(JsonBI.stringify(box));
|
|
38
|
+
const r4 = ergoBox
|
|
39
|
+
.register_value(wasm.NonMandatoryRegisterId.R4)
|
|
40
|
+
?.to_byte_array();
|
|
41
|
+
const r5 = ergoBox
|
|
42
|
+
.register_value(wasm.NonMandatoryRegisterId.R5)
|
|
43
|
+
?.to_i64();
|
|
44
|
+
return r4 != null && r5 != null;
|
|
166
45
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
* gets all unspent collaterals from Ergo explorer api
|
|
170
|
-
*
|
|
171
|
-
* @private
|
|
172
|
-
* @param {number} initialHeight
|
|
173
|
-
* @return {Promise<Array<ExtractedCollateral>>}
|
|
174
|
-
* @memberof CollateralExtractor
|
|
175
|
-
*/
|
|
176
|
-
getAllUnspentCollaterals = async (initialHeight) => {
|
|
177
|
-
const extractedBoxes = [];
|
|
178
|
-
let offset = 0;
|
|
179
|
-
let total = 1;
|
|
180
|
-
while (offset < total) {
|
|
181
|
-
const boxes = await this.explorerApi.v1.getApiV1BoxesUnspentByergotreeP1(this.ergoTree, { offset: offset, limit: DefaultApiLimit });
|
|
182
|
-
if (!boxes.items) {
|
|
183
|
-
throw new Error('Explorer api output items should not be undefined.');
|
|
184
|
-
}
|
|
185
|
-
extractedBoxes.push(...boxes.items
|
|
186
|
-
.filter((box) => box.creationHeight &&
|
|
187
|
-
box.creationHeight < initialHeight &&
|
|
188
|
-
this.isCollateralBox(box))
|
|
189
|
-
.map((box) => this.toExtractedCollateral(box, box.blockId, box.settlementHeight))
|
|
190
|
-
.filter((data) => data != undefined));
|
|
191
|
-
total = boxes.total;
|
|
192
|
-
offset += DefaultApiLimit;
|
|
46
|
+
catch {
|
|
47
|
+
return false;
|
|
193
48
|
}
|
|
194
|
-
return extractedBoxes;
|
|
195
49
|
};
|
|
196
50
|
/**
|
|
197
|
-
*
|
|
198
|
-
*
|
|
199
|
-
* @
|
|
200
|
-
* @param {(OutputInfo | OutputBox)} box
|
|
201
|
-
* @return {ExtractedCollateral}
|
|
202
|
-
* @memberof CollateralExtractor
|
|
51
|
+
* extract box data to proper format (not including spending information)
|
|
52
|
+
* @param box
|
|
53
|
+
* @return extracted data in proper format
|
|
203
54
|
*/
|
|
204
|
-
|
|
205
|
-
const
|
|
206
|
-
const r4 =
|
|
207
|
-
.register_value(
|
|
55
|
+
extractBoxData = (box) => {
|
|
56
|
+
const ergoBox = wasm.ErgoBox.from_json(JsonBI.stringify(box));
|
|
57
|
+
const r4 = ergoBox
|
|
58
|
+
.register_value(wasm.NonMandatoryRegisterId.R4)
|
|
208
59
|
?.to_byte_array();
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
}
|
|
213
|
-
const wid = uint8ArrayToHex(r4);
|
|
214
|
-
this.logger.debug(`Extracted WID=[${wid}] from R4 register of box=[${box.boxId}]`);
|
|
215
|
-
const r5 = ergoOutputBox
|
|
216
|
-
.register_value(ergoLib.NonMandatoryRegisterId.R5)
|
|
217
|
-
?.to_i64()
|
|
218
|
-
.to_str();
|
|
219
|
-
if (r5 == undefined) {
|
|
220
|
-
this.logger.warn(`collateral box with boxId=[${box.boxId}] has an invalid R5 register`);
|
|
221
|
-
return undefined;
|
|
222
|
-
}
|
|
223
|
-
const rwtCount = BigInt(r5);
|
|
224
|
-
this.logger.debug(`Extracted rwtCount=[${rwtCount}] from R5 register of box=[${box.boxId}]`);
|
|
60
|
+
const wid = Buffer.from(r4).toString('hex');
|
|
61
|
+
const r5 = ergoBox.register_value(wasm.NonMandatoryRegisterId.R5)?.to_i64();
|
|
62
|
+
const rwtCount = BigInt(r5.to_str());
|
|
225
63
|
return {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
wid: wid,
|
|
229
|
-
rwtCount: rwtCount,
|
|
64
|
+
identifier: ergoBox.box_id().to_str(),
|
|
65
|
+
serialized: Buffer.from(ergoBox.sigma_serialize_bytes()).toString('base64'),
|
|
230
66
|
txId: box.transactionId,
|
|
231
|
-
|
|
232
|
-
|
|
67
|
+
wid,
|
|
68
|
+
rwtCount,
|
|
233
69
|
};
|
|
234
70
|
};
|
|
235
71
|
}
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGF0ZXJhbEV4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9leHRyYWN0b3IvY29sbGF0ZXJhbEV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBRWhELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFRNUUsT0FBTyx5QkFBaUMsTUFBTSw4QkFBOEIsQ0FBQztBQUU3RSxPQUFPLGdCQUFnQixNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbkQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGlCQUE4QjtJQU1sRDtJQUNBO0lBQ0E7SUFDQTtJQUVBO0lBVkYsUUFBUSxDQUFTO0lBQ3pCLE1BQU0sQ0FBbUI7SUFDMUIsV0FBVyxDQUFDO0lBRXBCLFlBQ21CLEVBQVUsRUFDVixNQUFjLEVBQ2QsT0FBZSxFQUNmLFVBQXNCLEVBQ3ZDLFdBQW1CLEVBQ0YsU0FBeUIsSUFBSSxXQUFXLEVBQUU7UUFFM0QsS0FBSyxFQUFFLENBQUM7UUFQUyxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQ1YsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBRXRCLFdBQU0sR0FBTixNQUFNLENBQW9DO1FBRzNELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUN0RCxZQUFZLEVBQUU7YUFDZCxlQUFlLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMs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bSAnZXJnby1saWItd2FzbS1ub2RlanMnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdEV4dHJhY3RvciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtZXh0cmFjdG9yJztcbmltcG9ydCB7IEFic3RyYWN0TG9nZ2VyLCBEdW1teUxvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2V4dGVuZGVkLXR5cGVvcm0nO1xuaW1wb3J0IHtcbiAgQmxvY2ssXG4gIEJsb2NrSW5mbyxcbiAgT3V0cHV0Qm94LFxuICBUcmFuc2FjdGlvbixcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9zY2FubmVyLWludGVyZmFjZXMnO1xuaW1wb3J0IGVyZ29FeHBsb3JlckNsaWVudEZhY3RvcnksIHsgVjEgfSBmcm9tICdAcm9zZW4tY2xpZW50cy9lcmdvLWV4cGxvcmVyJztcblxuaW1wb3J0IENvbGxhdGVyYWxBY3Rpb24gZnJvbSAnLi4vYWN0aW9ucy9jb2xsYXRlcmFsQWN0aW9uJztcbmltcG9ydCB7IERlZmF1bHRBcGlMaW1pdCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBFeHRyYWN0ZWRDb2xsYXRlcmFsIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9leHRyYWN0ZWRDb2xsYXRlcmFsJztcbmltcG9ydCB7IFNwZW5kSW5mbyB9IGZyb20gJy4uL2ludGVyZmFjZXMvdHlwZXMnO1xuaW1wb3J0IHsgSnNvbkJJLCB1aW50OEFycmF5VG9IZXggfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBDb2xsYXRlcmFsRXh0cmFjdG9yIGV4dGVuZHMgQWJzdHJhY3RFeHRyYWN0b3I8VHJhbnNhY3Rpb24+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBlcmdvVHJlZTogc3RyaW5nO1xuICByZWFkb25seSBhY3Rpb246IENvbGxhdGVyYWxBY3Rpb247XG4gIHByaXZhdGUgZXhwbG9yZXJBcGk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBpZDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXdjTmZ0OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhZGRyZXNzOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkYXRhU291cmNlOiBEYXRhU291cmNlLFxuICAgIGV4cGxvcmVyVXJsOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IEFic3RyYWN0TG9nZ2VyID0gbmV3IER1bW15TG9nZ2VyKCksXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lcmdvVHJlZSA9IGVyZ29MaWIuQWRkcmVzcy5mcm9tX2Jhc2U1OCh0aGlzLmFkZHJlc3MpXG4gICAgICAudG9fZXJnb190cmVlKClcbiAgICAgIC50b19iYXNlMTZfYnl0ZXMoKTtcbiAgICB0aGlzLmFjdGlvbiA9IG5ldyBDb2xsYXRlcmFsQWN0aW9uKHRoaXMuZGF0YVNvdXJjZSwgdGhpcy5sb2dnZXIpO1xuICAgIHRoaXMuZXhwbG9yZXJBcGkgPSBlcmdvRXhwbG9yZXJDbGllbnRGYWN0b3J5KGV4cGxvcmVyVXJsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgaWQgZm9yIGV4dHJhY3Rvci4gVGhpcyBpZCBtdXN0IGJlIHVuaXF1ZSBvdmVyIGFsbCBleHRyYWN0b3JzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICBnZXRJZCA9ICgpOiBzdHJpbmcgPT4gdGhpcy5pZDtcblxuICAvKipcbiAgICogcHJvY2VzcyBhIGxpc3Qgb2YgdHJhbnNhY3Rpb25zIGFuZCBzdG9yZSBjb2xsYXRlcmFsIGJveCBkZXRhaWxzXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25bXX0gdHhzIGxpc3Qgb2YgdHJhbnNhY3Rpb24gZm9yIGJsb2NrXG4gICAqIEBwYXJhbSB7QmxvY2t9IGJsb2NrIGJsb2NrIGlkIGZvciB0cmFuc2FjdGlvbnMgYXMgaGV4IGVuY29kZWRcbiAgICogQHJldHVybiB7UHJvbWlzZTxib29sZWFuPn0gUHJvbWlzZTxib29sZWFuPiBpZiBubyBlcnJvciBvY2N1cnJlZCByZXR1cm5cbiAgICogdHJ1ZS4gb3RoZXJ3aXNlLCByZXR1cm4gZmFsc2VcbiAgICovXG4gIHByb2Nlc3NUcmFuc2FjdGlvbnMgPSBhc3luYyAoXG4gICAgdHhzOiBUcmFuc2FjdGlvbltdLFxuICAgIGJsb2NrOiBCbG9jayxcbiAgKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJveGVzOiBBcnJheTxFeHRyYWN0ZWRDb2xsYXRlcmFsPiA9IFtdO1xuICAgICAgY29uc3Qgc3BlbnRJbmZvczogQXJyYXk8U3BlbmRJbmZvPiA9IFtdO1xuICAgICAgZm9yIChjb25zdCB0eCBvZiB0eHMpIHtcbiAgICAgICAgY29uc3Qgb3V0cHV0Qm94ID0gdHgub3V0cHV0cy5hdCgxKTtcbiAgICAgICAgaWYgKG91dHB1dEJveCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5pc0NvbGxhdGVyYWxCb3gob3V0cHV0Qm94KSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV4dHJhY3RlZENvbGxhdGVyYWwgPSB0aGlzLnRvRXh0cmFjdGVkQ29sbGF0ZXJhbChcbiAgICAgICAgICBvdXRwdXRCb3gsXG4gICAgICAgICAgYmxvY2suaGFzaCxcbiAgICAgICAgICBibG9jay5oZWlnaHQsXG4gICAgICAgICk7XG4gICAgICAgIGlmIChleHRyYWN0ZWRDb2xsYXRlcmFsKSBib3hlcy5wdXNoKGV4dHJhY3RlZENvbGxhdGVyYWwpO1xuXG4gICAgICAgIGNvbnN0IGlucHV0Q29sbGF0ZXJhbCA9IHR4LmlucHV0cy5hdCgxKTtcbiAgICAgICAgaWYgKGlucHV0Q29sbGF0ZXJhbCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzcGVudEluZm9zLnB1c2goeyB0eElkOiB0eC5pZCwgYm94SWQ6IGlucHV0Q29sbGF0ZXJhbC5ib3hJZCB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGJveGVzLmxlbmd0aCA+IDApXG4gICAgICAgIGF3YWl0IHRoaXMuYWN0aW9uLnN0b3JlQ29sbGF0ZXJhbHMoYm94ZXMsIGJsb2NrLCB0aGlzLmdldElkKCkpO1xuICAgICAgYXdhaXQgdGhpcy5hY3Rpb24uc3BlbmRDb2xsYXRlcmFscyhzcGVudEluZm9zLCBibG9jaywgdGhpcy5nZXRJZCgpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgYEVycm9yIGluIHN0b3JpbmcgY29sbGF0ZXJhbHMgb2YgdGhlIGJsb2NrICR7YmxvY2t9OiAke2V9YCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgLyoqXG4gICAqIGNoZWNrcyBpZiB0aGUgcGFzc2VkIGJveCBpcyBhIGNvbGxhdGVyYWwgYm94XG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T3V0cHV0Qm94fSBvdXRwdXRCb3hcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIENvbGxhdGVyYWxFeHRyYWN0b3JcbiAgICovXG4gIHByaXZhdGUgaXNDb2xsYXRlcmFsQm94ID0gKG91dHB1dEJveDogVjEuT3V0cHV0SW5mbyB8IE91dHB1dEJveCk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IGF3Y05mdCA9IG91dHB1dEJveC5hc3NldHM/LmF0KDApPy50b2tlbklkO1xuICAgIHJldHVybiAoXG4gICAgICBhd2NOZnQgIT0gdW5kZWZpbmVkICYmXG4gICAgICBhd2NOZnQgPT09IHRoaXMuYXdjTmZ0ICYmXG4gICAgICBvdXRwdXRCb3guZXJnb1RyZWUgPT09IHRoaXMuZXJnb1RyZWVcbiAgICApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBEZWxldGUgYWxsIGNvbGxhdGVyYWxzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHBhc3NlZCBibG9jayBhbmQgZXh0cmFjdG9yIGFuZFxuICAgKiB1cGRhdGUgYWxsIGNvbGxhdGVyYWxzIHNwZW50IGluIHRoZSBzcGVjaWZpZWQgYmxvY2tcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGhhc2hcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn1cbiAgICogQG1lbWJlcm9mIENvbGxhdGVyYWxFeHRyYWN0b3JcbiAgICovXG4gIGZvcmtCbG9jayA9IGFzeW5jIChoYXNoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBhd2FpdCB0aGlzLmFjdGlvbi5kZWxldGVCbG9jayhoYXNoLCB0aGlzLmdldElkKCkpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgZGF0YWJhc2Ugd2l0aCBvbGRlciBjb2xsYXRlcmFsc1xuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5pdGlhbEhlaWdodFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fVxuICAgKiBAbWVtYmVyb2YgQ29sbGF0ZXJhbEV4dHJhY3RvclxuICAgKi9cbiAgaW5pdGlhbGl6ZUJveGVzID0gYXN5bmMgKGluaXRpYWxCbG9jazogQmxvY2tJbmZvKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3QgdW5zcGVudENvbGxhdGVyYWxzID0gYXdhaXQgdGhpcy5nZXRBbGxVbnNwZW50Q29sbGF0ZXJhbHMoXG4gICAgICBpbml0aWFsQmxvY2suaGVpZ2h0LFxuICAgICk7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICBgdW5zcGVudCBjb2xsYXRlcmFsIGJveCBpbmZvIHdpdGggZm9sbG93aW5nIElEcyBnb3R0ZW4gZm9ybSBFcmdvIG5ldHdvcms6IFske3Vuc3BlbnRDb2xsYXRlcmFsc1xuICAgICAgICAubWFwKChib3gpID0+IGJveC5ib3hJZClcbiAgICAgICAgLmpvaW4oJywgJyl9XWAsXG4gICAgKTtcblxuICAgIGNvbnN0IHN0b3JlZFVuc3BlbnRDb2xsYXRlcmFsQm94SWRzID1cbiAgICAgIGF3YWl0IHRoaXMuYWN0aW9uLmdldFVuc3BlbnRDb2xsYXRlcmFsQm94SWRzKHRoaXMuZ2V0SWQoKSk7XG4gICAgY29uc3QgdW5zcGVudENvbGxhdGVyYWxCb3hJZHMgPSBuZXcgU2V0KFxuICAgICAgdW5zcGVudENvbGxhdGVyYWxzLm1hcCgoYm94KSA9PiBib3guYm94SWQpLFxuICAgICk7XG4gICAgYXdhaXQgdGhpcy50aWR5VXBTdG9yZWRDb2xsYXRlcmFscyhcbiAgICAgIGluaXRpYWxCbG9jay5oZWlnaHQsXG4gICAgICBzdG9yZWRVbnNwZW50Q29sbGF0ZXJhbEJveElkcy5maWx0ZXIoXG4gICAgICAgIChib3hJZCkgPT4gIXVuc3BlbnRDb2xsYXRlcmFsQm94SWRzLmhhcyhib3hJZCksXG4gICAgICApLFxuICAgICk7XG5cbiAgICBmb3IgKGNvbnN0IGNvbGxhdGVyYWwgb2YgdW5zcGVudENvbGxhdGVyYWxzKSB7XG4gICAgICBpZiAoc3RvcmVkVW5zcGVudENvbGxhdGVyYWxCb3hJZHMuaW5jbHVkZXMoY29sbGF0ZXJhbC5ib3hJZCkpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYHVwZGF0aW5nIHVuc3BlbnQgY29sbGF0ZXJhbCB3aXRoIGJveElkPVske2NvbGxhdGVyYWwuYm94SWR9XSBhdCBpbml0aWFsaXphdGlvbiBwaGFzZWAsXG4gICAgICAgICk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWN0aW9uLnVwZGF0ZUNvbGxhdGVyYWwoY29sbGF0ZXJhbCwgdGhpcy5nZXRJZCgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGBpbnNlcnRpbmcgdW5zcGVudCBjb2xsYXRlcmFsIHdpdGggYm94SWQ9WyR7Y29sbGF0ZXJhbC5ib3hJZH1dIHRvIGRhdGFiYXNlIGF0IGluaXRpYWxpemF0aW9uIHBoYXNlYCxcbiAgICAgICAgKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hY3Rpb24uaW5zZXJ0Q29sbGF0ZXJhbChjb2xsYXRlcmFsLCB0aGlzLmdldElkKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogcmVtb3ZlcyBvciB1cGRhdGVzIHN0b3JlZCBjb2xsYXRlcmFsIGJveGVzIGJlZm9yZSBpbml0aWFsaXppbmcgYm94ZXNcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluaXRpYWxIZWlnaHRcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gY29sbGF0ZXJhbEJveElkc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fVxuICAgKiBAbWVtYmVyb2YgQ29sbGF0ZXJhbEV4dHJhY3RvclxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyB0aWR5VXBTdG9yZWRDb2xsYXRlcmFscyhcbiAgICBpbml0aWFsSGVpZ2h0OiBudW1iZXIsXG4gICAgY29sbGF0ZXJhbEJveElkczogc3RyaW5nW10sXG4gICkge1xuICAgIGZvciAoY29uc3QgYm94SWQgb2YgY29sbGF0ZXJhbEJveElkcykge1xuICAgICAgbGV0IGJveEluZm86IFYxLk91dHB1dEluZm87XG4gICAgICB0cnkge1xuICAgICAgICBib3hJbmZvID0gYXdhaXQgdGhpcy5leHBsb3JlckFwaS52MS5nZXRBcGlWMUJveGVzUDEoYm94SWQpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoKGUgYXMgeyByZXNwb25zZTogeyBzdGF0dXM6IG51bWJlciB9IH0pLnJlc3BvbnNlPy5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuYWN0aW9uLmRlbGV0ZUNvbGxhdGVyYWwoYm94SWQsIHRoaXMuZ2V0SWQoKSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYHNvbWV0aGluZyB3ZW50IHdyb25nIHdoZW4gdHJ5aW5nIHRvIGdldCBib3g9WyR7Ym94SWR9XSBmcm9tIEVyZ28gbmV0d29yazogJHtcbiAgICAgICAgICAgICAgKGUgYXMgRXJyb3IpLm1lc3NhZ2VcbiAgICAgICAgICAgIH1gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGJveEluZm8/LnNwZW50VHJhbnNhY3Rpb25JZCAhPSBudWxsKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgdHJhbnNhY3Rpb25JbmZvOiBWMS5UcmFuc2FjdGlvbkluZm8gPVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5leHBsb3JlckFwaS52MS5nZXRBcGlWMVRyYW5zYWN0aW9uc1AxKFxuICAgICAgICAgICAgICBib3hJbmZvLnNwZW50VHJhbnNhY3Rpb25JZCxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAodHJhbnNhY3Rpb25JbmZvLmluY2x1c2lvbkhlaWdodCA8IGluaXRpYWxIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgICBgY29sbGF0ZXJhbCB3aXRoIGJveElkPVske2JveElkfV0gaXMgc3BlbnQgYW5kIGlzIGJlaW5nIHVwZGF0ZWQgd2l0aCBzcGVuZEhlaWdodD1bJHt0cmFuc2FjdGlvbkluZm8uaW5jbHVzaW9uSGVpZ2h0fV0gYW5kIHNwZW5kQmxvY2s9WyR7dHJhbnNhY3Rpb25JbmZvLmJsb2NrSWR9XWAsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmFjdGlvbi51cGRhdGVDb2xsYXRlcmFsKFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYm94SWQ6IGJveElkLFxuICAgICAgICAgICAgICAgIHNwZW5kSGVpZ2h0OiB0cmFuc2FjdGlvbkluZm8uaW5jbHVzaW9uSGVpZ2h0LFxuICAgICAgICAgICAgICAgIHNwZW5kQmxvY2s6IHRyYW5zYWN0aW9uSW5mby5ibG9ja0lkLFxuICAgICAgICAgICAgICAgIHNwZW5kVHhJZDogdHJhbnNhY3Rpb25JbmZvLmlkLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0aGlzLmdldElkKCksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBzb21ldGhpbmcgd2VudCB3cm9uZyB3aGVuIHRyeWluZyB0byBnZXQgdHJhbnNhY3Rpb249WyR7XG4gICAgICAgICAgICAgIGJveEluZm8uc3BlbnRUcmFuc2FjdGlvbklkXG4gICAgICAgICAgICB9XSBmcm9tIEVyZ28gbmV0d29yazogJHsoZSBhcyBFcnJvcik/Lm1lc3NhZ2V9YCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGdldHMgYWxsIHVuc3BlbnQgY29sbGF0ZXJhbHMgZnJvbSBFcmdvIGV4cGxvcmVyIGFwaVxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5pdGlhbEhlaWdodFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPEFycmF5PEV4dHJhY3RlZENvbGxhdGVyYWw+Pn1cbiAgICogQG1lbWJlcm9mIENvbGxhdGVyYWxFeHRyYWN0b3JcbiAgICovXG4gIHByaXZhdGUgZ2V0QWxsVW5zcGVudENvbGxhdGVyYWxzID0gYXN5bmMgKFxuICAgIGluaXRpYWxIZWlnaHQ6IG51bWJlcixcbiAgKTogUHJvbWlzZTxBcnJheTxFeHRyYWN0ZWRDb2xsYXRlcmFsPj4gPT4ge1xuICAgIGNvbnN0IGV4dHJhY3RlZEJveGVzOiBBcnJheTxFeHRyYWN0ZWRDb2xsYXRlcmFsPiA9IFtdO1xuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIGxldCB0b3RhbCA9IDE7XG4gICAgd2hpbGUgKG9mZnNldCA8IHRvdGFsKSB7XG4gICAgICBjb25zdCBib3hlcyA9IGF3YWl0IHRoaXMuZXhwbG9yZXJBcGkudjEuZ2V0QXBpVjFCb3hlc1Vuc3BlbnRCeWVyZ290cmVlUDEoXG4gICAgICAgIHRoaXMuZXJnb1RyZWUsXG4gICAgICAgIHsgb2Zmc2V0OiBvZmZzZXQsIGxpbWl0OiBEZWZhdWx0QXBpTGltaXQgfSxcbiAgICAgICk7XG5cbiAgICAgIGlmICghYm94ZXMuaXRlbXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBsb3JlciBhcGkgb3V0cHV0IGl0ZW1zIHNob3VsZCBub3QgYmUgdW5kZWZpbmVkLicpO1xuICAgICAgfVxuXG4gICAgICBleHRyYWN0ZWRCb3hlcy5wdXNoKFxuICAgICAgICAuLi5ib3hlcy5pdGVtc1xuICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAoYm94KSA9PlxuICAgICAgICAgICAgICBib3guY3JlYXRpb25IZWlnaHQgJiZcbiAgICAgICAgICAgICAgYm94LmNyZWF0aW9uSGVpZ2h0IDwgaW5pdGlhbEhlaWdodCAmJlxuICAgICAgICAgICAgICB0aGlzLmlzQ29sbGF0ZXJhbEJveChib3gpLFxuICAgICAgICAgIClcbiAgICAgICAgICAubWFwKChib3gpID0+XG4gICAgICAgICAgICB0aGlzLnRvRXh0cmFjdGVkQ29sbGF0ZXJhbChib3gsIGJveC5ibG9ja0lkLCBib3guc2V0dGxlbWVudEhlaWdodCksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5maWx0ZXIoKGRhdGEpOiBkYXRhIGlzIEV4dHJhY3RlZENvbGxhdGVyYWwgPT4gZGF0YSAhPSB1bmRlZmluZWQpLFxuICAgICAgKTtcbiAgICAgIHRvdGFsID0gYm94ZXMudG90YWw7XG4gICAgICBvZmZzZXQgKz0gRGVmYXVsdEFwaUxpbWl0O1xuICAgIH1cbiAgICByZXR1cm4gZXh0cmFjdGVkQm94ZXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIGNvbnZlcnRzIG91dHB1dCBib3ggaW5mb3JtYXRpb24gdG8gYW4gRXh0cmFjdGVkQ29sbGF0ZXJhbCBvYmplY3RcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHsoT3V0cHV0SW5mbyB8IE91dHB1dEJveCl9IGJveFxuICAgKiBAcmV0dXJuIHtFeHRyYWN0ZWRDb2xsYXRlcmFsfVxuICAgKiBAbWVtYmVyb2YgQ29sbGF0ZXJhbEV4dHJhY3RvclxuICAgKi9cbiAgcHJpdmF0ZSB0b0V4dHJhY3RlZENvbGxhdGVyYWwgPSAoXG4gICAgYm94OiBWMS5PdXRwdXRJbmZvIHwgT3V0cHV0Qm94LFxuICAgIGJsb2NrSWQ6IHN0cmluZyxcbiAgICBibG9ja0hlaWdodDogbnVtYmVyLFxuICApOiBFeHRyYWN0ZWRDb2xsYXRlcmFsIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBlcmdvT3V0cHV0Qm94ID0gZXJnb0xpYi5FcmdvQm94LmZyb21fanNvbihKc29uQkkuc3RyaW5naWZ5KGJveCkpO1xuXG4gICAgY29uc3QgcjQgPSBlcmdvT3V0cHV0Qm94XG4gICAgICAucmVnaXN0ZXJfdmFsdWUoZXJnb0xpYi5Ob25NYW5kYXRvcnlSZWdpc3RlcklkLlI0KVxuICAgICAgPy50b19ieXRlX2FycmF5KCk7XG4gICAgaWYgKHI0ID09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgYGNvbGxhdGVyYWwgYm94IHdpdGggYm94SWQ9WyR7Ym94LmJveElkfV0gaGFzIGFuIGludmFsaWQgUjQgcmVnaXN0ZXJgLFxuICAgICAgKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IHdpZCA9IHVpbnQ4QXJyYXlUb0hleChyNCk7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICBgRXh0cmFjdGVkIFdJRD1bJHt3aWR9XSBmcm9tIFI0IHJlZ2lzdGVyIG9mIGJveD1bJHtib3guYm94SWR9XWAsXG4gICAgKTtcblxuICAgIGNvbnN0IHI1ID0gZXJnb091dHB1dEJveFxuICAgICAgLnJlZ2lzdGVyX3ZhbHVlKGVyZ29MaWIuTm9uTWFuZGF0b3J5UmVnaXN0ZXJJZC5SNSlcbiAgICAgID8udG9faTY0KClcbiAgICAgIC50b19zdHIoKTtcblxuICAgIGlmIChyNSA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubG9nZ2VyLndhcm4oXG4gICAgICAgIGBjb2xsYXRlcmFsIGJveCB3aXRoIGJveElkPVske2JveC5ib3hJZH1dIGhhcyBhbiBpbnZhbGlkIFI1IHJlZ2lzdGVyYCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCByd3RDb3VudCA9IEJpZ0ludChyNSk7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICBgRXh0cmFjdGVkIHJ3dENvdW50PVske3J3dENvdW50fV0gZnJvbSBSNSByZWdpc3RlciBvZiBib3g9WyR7Ym94LmJveElkfV1gLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYm94SWQ6IGJveC5ib3hJZCxcbiAgICAgIGJveFNlcmlhbGl6ZWQ6IEJ1ZmZlci5mcm9tKFxuICAgICAgICBlcmdvT3V0cHV0Qm94LnNpZ21hX3NlcmlhbGl6ZV9ieXRlcygpLFxuICAgICAgKS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgICB3aWQ6IHdpZCxcbiAgICAgIHJ3dENvdW50OiByd3RDb3VudCxcbiAgICAgIHR4SWQ6IGJveC50cmFuc2FjdGlvbklkLFxuICAgICAgYmxvY2s6IGJsb2NrSWQsXG4gICAgICBoZWlnaHQ6IGJsb2NrSGVpZ2h0LFxuICAgIH07XG4gIH07XG59XG4iXX0=
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGF0ZXJhbEV4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9leHRyYWN0b3IvY29sbGF0ZXJhbEV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sS0FBSyxJQUFJLE1BQU0sc0JBQXNCLENBQUM7QUFFN0MsT0FBTyxFQUNMLHdCQUF3QixHQUV6QixNQUFNLGtDQUFrQyxDQUFDO0FBRzFDLE9BQU8sTUFBTSxNQUFNLDJCQUEyQixDQUFDO0FBRy9DLE9BQU8sZ0JBQWdCLE1BQU0sNkJBQTZCLENBQUM7QUFJM0QsTUFBTSxPQUFPLG1CQUFvQixTQUFRLHdCQUd4QztJQUNVLE9BQU8sQ0FBbUI7SUFDbEIsRUFBRSxDQUFTO0lBQ1gsUUFBUSxDQUFTO0lBQ2pCLE1BQU0sQ0FBUztJQUVoQyxZQUNFLFVBQXNCLEVBQ3RCLEVBQVUsRUFDVixNQUFjLEVBQ2QsaUJBQW9DLEVBQ3BDLE1BQXVCO1FBRXZCLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDO2FBQ2hFLFlBQVksRUFBRTthQUNkLGVBQWUsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxnQkFBZ0IsQ0FDakMsVUFBVSxFQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQ3RDLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7SUFFM0I7Ozs7T0FJRztJQUNILFVBQVUsR0FBRyxDQUFDLEdBQWMsRUFBVyxFQUFFO1FBQ3ZDLElBQ0UsR0FBRyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUTtZQUM5QixHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ3ZCLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQ3JDLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxtREFBbUQ7UUFDbkQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzlELE1BQU0sRUFBRSxHQUFHLE9BQU87aUJBQ2YsY0FBYyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUM7Z0JBQy9DLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDcEIsTUFBTSxFQUFFLEdBQUcsT0FBTztpQkFDZixjQUFjLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQztnQkFDL0MsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNiLE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDO1FBQ2xDLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDLENBQUM7SUFFRjs7OztPQUlHO0lBQ0gsY0FBYyxHQUFHLENBQUMsR0FBYyxFQUFtQyxFQUFFO1FBQ25FLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUU5RCxNQUFNLEVBQUUsR0FBRyxPQUFPO2FBQ2YsY0FBYyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUM7WUFDL0MsRUFBRSxhQUFhLEVBQUUsQ0FBQztRQUNwQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU3QyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUM1RSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsRUFBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFFdEMsT0FBTztZQUNMLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFO1lBQ3JDLFVBQVUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUMvRCxRQUFRLENBQ1Q7WUFDRCxJQUFJLEVBQUUsR0FBRyxDQUFDLGFBQWE7WUFDdkIsR0FBRztZQUNILFFBQVE7U0FDVCxDQUFDO0lBQ0osQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuaW1wb3J0ICogYXMgd2FzbSBmcm9tICdlcmdvLWxpYi13YXNtLW5vZGVqcyc7XG5cbmltcG9ydCB7XG4gIEFic3RyYWN0RXJnb0JveEV4dHJhY3RvcixcbiAgSW5pdGlhbGl6ZU9wdGlvbnMsXG59IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtZXh0cmFjdG9yJztcbmltcG9ydCB7IEFic3RyYWN0TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvZXh0ZW5kZWQtdHlwZW9ybSc7XG5pbXBvcnQgSnNvbkJJIGZyb20gJ0Byb3Nlbi1icmlkZ2UvanNvbi1iaWdpbnQnO1xuaW1wb3J0IHsgT3V0cHV0Qm94IH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9zY2FubmVyLWludGVyZmFjZXMnO1xuXG5pbXBvcnQgQ29sbGF0ZXJhbEFjdGlvbiBmcm9tICcuLi9hY3Rpb25zL2NvbGxhdGVyYWxBY3Rpb24nO1xuaW1wb3J0IENvbGxhdGVyYWxFbnRpdHkgZnJvbSAnLi4vZW50aXRpZXMvY29sbGF0ZXJhbEVudGl0eSc7XG5pbXBvcnQgeyBFeHRyYWN0ZWRDb2xsYXRlcmFsIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9leHRyYWN0ZWRDb2xsYXRlcmFsJztcblxuZXhwb3J0IGNsYXNzIENvbGxhdGVyYWxFeHRyYWN0b3IgZXh0ZW5kcyBBYnN0cmFjdEVyZ29Cb3hFeHRyYWN0b3I8XG4gIEV4dHJhY3RlZENvbGxhdGVyYWwsXG4gIENvbGxhdGVyYWxFbnRpdHlcbj4ge1xuICByZWFkb25seSBhY3Rpb25zOiBDb2xsYXRlcmFsQWN0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXJnb1RyZWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBhd2NOZnQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBkYXRhU291cmNlOiBEYXRhU291cmNlLFxuICAgIGlkOiBzdHJpbmcsXG4gICAgYXdjTmZ0OiBzdHJpbmcsXG4gICAgaW5pdGlhbGl6ZU9wdGlvbnM6IEluaXRpYWxpemVPcHRpb25zLFxuICAgIGxvZ2dlcj86IEFic3RyYWN0TG9nZ2VyLFxuICApIHtcbiAgICBzdXBlcihpbml0aWFsaXplT3B0aW9ucywgbG9nZ2VyKTtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5lcmdvVHJlZSA9IHdhc20uQWRkcmVzcy5mcm9tX2Jhc2U1OChpbml0aWFsaXplT3B0aW9ucy5hZGRyZXNzKVxuICAgICAgLnRvX2VyZ29fdHJlZSgpXG4gICAgICAudG9fYmFzZTE2X2J5dGVzKCk7XG4gICAgdGhpcy5hd2NOZnQgPSBhd2NOZnQ7XG4gICAgdGhpcy5hY3Rpb25zID0gbmV3IENvbGxhdGVyYWxBY3Rpb24oXG4gICAgICBkYXRhU291cmNlLFxuICAgICAgdGhpcy5sb2dnZXIuY2hpbGQoJ0NvbGxhdGVyYWxBY3Rpb24nKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBJZCBmb3IgY3VycmVudCBleHRyYWN0b3JcbiAgICovXG4gIGdldElkID0gKCkgPT4gYCR7dGhpcy5pZH1gO1xuXG4gIC8qKlxuICAgKiBjaGVjayBwcm9wZXIgZGF0YSBmb3JtYXQgaW4gdGhlIGJveFxuICAgKiBAcGFyYW0gYm94XG4gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgYm94IGhhcyB0aGUgcmVxdWlyZWQgZGF0YSBhbmQgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICBoYXNCb3hEYXRhID0gKGJveDogT3V0cHV0Qm94KTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKFxuICAgICAgYm94LmVyZ29UcmVlICE9PSB0aGlzLmVyZ29UcmVlIHx8XG4gICAgICBib3guYXNzZXRzLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgYm94LmFzc2V0c1swXS50b2tlbklkICE9PSB0aGlzLmF3Y05mdFxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIFI0IGFuZCBSNSByZWdpc3RlcnMgZXhpc3QgYW5kIGFyZSB2YWxpZFxuICAgIHRyeSB7XG4gICAgICBjb25zdCBlcmdvQm94ID0gd2FzbS5FcmdvQm94LmZyb21fanNvbihKc29uQkkuc3RyaW5naWZ5KGJveCkpO1xuICAgICAgY29uc3QgcjQgPSBlcmdvQm94XG4gICAgICAgIC5yZWdpc3Rlcl92YWx1ZSh3YXNtLk5vbk1hbmRhdG9yeVJlZ2lzdGVySWQuUjQpXG4gICAgICAgID8udG9fYnl0ZV9hcnJheSgpO1xuICAgICAgY29uc3QgcjUgPSBlcmdvQm94XG4gICAgICAgIC5yZWdpc3Rlcl92YWx1ZSh3YXNtLk5vbk1hbmRhdG9yeVJlZ2lzdGVySWQuUjUpXG4gICAgICAgID8udG9faTY0KCk7XG4gICAgICByZXR1cm4gcjQgIT0gbnVsbCAmJiByNSAhPSBudWxsO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogZXh0cmFjdCBib3ggZGF0YSB0byBwcm9wZXIgZm9ybWF0IChub3QgaW5jbHVkaW5nIHNwZW5kaW5nIGluZm9ybWF0aW9uKVxuICAgKiBAcGFyYW0gYm94XG4gICAqIEByZXR1cm4gZXh0cmFjdGVkIGRhdGEgaW4gcHJvcGVyIGZvcm1hdFxuICAgKi9cbiAgZXh0cmFjdEJveERhdGEgPSAoYm94OiBPdXRwdXRCb3gpOiBFeHRyYWN0ZWRDb2xsYXRlcmFsIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBlcmdvQm94ID0gd2FzbS5FcmdvQm94LmZyb21fanNvbihKc29uQkkuc3RyaW5naWZ5KGJveCkpO1xuXG4gICAgY29uc3QgcjQgPSBlcmdvQm94XG4gICAgICAucmVnaXN0ZXJfdmFsdWUod2FzbS5Ob25NYW5kYXRvcnlSZWdpc3RlcklkLlI0KVxuICAgICAgPy50b19ieXRlX2FycmF5KCk7XG4gICAgY29uc3Qgd2lkID0gQnVmZmVyLmZyb20ocjQhKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgICBjb25zdCByNSA9IGVyZ29Cb3gucmVnaXN0ZXJfdmFsdWUod2FzbS5Ob25NYW5kYXRvcnlSZWdpc3RlcklkLlI1KT8udG9faTY0KCk7XG4gICAgY29uc3Qgcnd0Q291bnQgPSBCaWdJbnQocjUhLnRvX3N0cigpKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpZGVudGlmaWVyOiBlcmdvQm94LmJveF9pZCgpLnRvX3N0cigpLFxuICAgICAgc2VyaWFsaXplZDogQnVmZmVyLmZyb20oZXJnb0JveC5zaWdtYV9zZXJpYWxpemVfYnl0ZXMoKSkudG9TdHJpbmcoXG4gICAgICAgICdiYXNlNjQnLFxuICAgICAgKSxcbiAgICAgIHR4SWQ6IGJveC50cmFuc2FjdGlvbklkLFxuICAgICAgd2lkLFxuICAgICAgcnd0Q291bnQsXG4gICAgfTtcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AbstractExtractor } from '@rosen-bridge/abstract-extractor';
|
|
2
2
|
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
3
3
|
import { DataSource } from '@rosen-bridge/extended-typeorm';
|
|
4
|
-
import {
|
|
4
|
+
import { BlockInfo, Transaction } from '@rosen-bridge/scanner-interfaces';
|
|
5
5
|
import { TokenMap } from '@rosen-bridge/tokens';
|
|
6
6
|
declare class CommitmentExtractor extends AbstractExtractor<Transaction> {
|
|
7
7
|
readonly logger: AbstractLogger;
|
|
@@ -22,7 +22,7 @@ declare class CommitmentExtractor extends AbstractExtractor<Transaction> {
|
|
|
22
22
|
* @param txs
|
|
23
23
|
* @param block
|
|
24
24
|
*/
|
|
25
|
-
processTransactions: (txs: Array<Transaction>, block:
|
|
25
|
+
processTransactions: (txs: Array<Transaction>, block: BlockInfo) => Promise<boolean>;
|
|
26
26
|
/**
|
|
27
27
|
* fork one block and remove all stored information for this block
|
|
28
28
|
* @param hash: block hash
|
|
@@ -32,7 +32,7 @@ declare class CommitmentExtractor extends AbstractExtractor<Transaction> {
|
|
|
32
32
|
* Extractor box initialization
|
|
33
33
|
* No action needed for commitment extractor
|
|
34
34
|
*/
|
|
35
|
-
|
|
35
|
+
initializeData: () => Promise<void>;
|
|
36
36
|
}
|
|
37
37
|
export default CommitmentExtractor;
|
|
38
38
|
//# sourceMappingURL=commitmentExtractor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commitmentExtractor.d.ts","sourceRoot":"","sources":["../../lib/extractor/commitmentExtractor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"commitmentExtractor.d.ts","sourceRoot":"","sources":["../../lib/extractor/commitmentExtractor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAOhD,cAAM,mBAAoB,SAAQ,iBAAiB,CAAC,WAAW,CAAC;IAC9D,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAgB;IACrD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;gBAGlC,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EACxB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,QAAQ,EAChB,MAAM,CAAC,EAAE,cAAc;IAiBzB;;OAEG;IACH,KAAK,eAAiB;IAEtB;;;;;OAKG;IACH,mBAAmB,GACjB,KAAK,KAAK,CAAC,WAAW,CAAC,EACvB,OAAO,SAAS,KACf,OAAO,CAAC,OAAO,CAAC,CAmFjB;IAEF;;;OAGG;IACH,SAAS,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAE7C;IAEF;;;OAGG;IACH,cAAc,sBAEZ;CACH;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -18,7 +18,7 @@ class CommitmentExtractor extends AbstractExtractor {
|
|
|
18
18
|
this.commitmentsErgoTrees = addresses.map((address) => wasm.Address.from_base58(address).to_ergo_tree().to_base16_bytes());
|
|
19
19
|
this.RWTId = RWTId;
|
|
20
20
|
this.logger = logger ? logger : new DummyLogger();
|
|
21
|
-
this.actions = new CommitmentAction(dataSource, this.logger);
|
|
21
|
+
this.actions = new CommitmentAction(dataSource, this.logger.child('CommitmentAction'));
|
|
22
22
|
this.tokenMap = tokens;
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
@@ -110,9 +110,9 @@ class CommitmentExtractor extends AbstractExtractor {
|
|
|
110
110
|
* Extractor box initialization
|
|
111
111
|
* No action needed for commitment extractor
|
|
112
112
|
*/
|
|
113
|
-
|
|
113
|
+
initializeData = async () => {
|
|
114
114
|
return;
|
|
115
115
|
};
|
|
116
116
|
}
|
|
117
117
|
export default CommitmentExtractor;
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWl0bWVudEV4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9leHRyYWN0b3IvY29tbWl0bWVudEV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLHNCQUFzQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFLNUUsT0FBTyxnQkFBZ0IsTUFBTSw2QkFBNkIsQ0FBQztBQUczRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWxDLE1BQU0sbUJBQW9CLFNBQVEsaUJBQThCO0lBQ3JELE1BQU0sQ0FBaUI7SUFDaEMsRUFBRSxDQUFTO0lBQ00sVUFBVSxDQUFhO0lBQ3ZCLG9CQUFvQixDQUFnQjtJQUNwQyxLQUFLLENBQVM7SUFDZCxPQUFPLENBQW1CO0lBQzFCLFFBQVEsQ0FBVztJQUVwQyxZQUNFLEVBQVUsRUFDVixTQUF3QixFQUN4QixLQUFhLEVBQ2IsVUFBc0IsRUFDdEIsTUFBZ0IsRUFDaEIsTUFBdUI7UUFFdkIsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsZUFBZSxFQUFFLENBQ25FLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENB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Q0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdCLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLHdDQUF3QyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQ3RELENBQUM7Z0JBQ0YsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ1osQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBRUY7OztPQUdHO0lBQ0gsU0FBUyxHQUFHLEtBQUssRUFBRSxJQUFZLEVBQWlCLEVBQUU7UUFDaEQsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQyxDQUFDO0lBRUY7OztPQUdHO0lBQ0gsZUFBZSxHQUFHLEtBQUssSUFBSSxFQUFFO1FBQzNCLE9BQU87SUFDVCxDQUFDLENBQUM7Q0FDSDtBQUVELGVBQWUsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB3YXNtIGZyb20gJ2VyZ28tbGliLXdhc20tbm9kZWpzJztcblxuaW1wb3J0IHsgQWJzdHJhY3RFeHRyYWN0b3IgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWV4dHJhY3Rvcic7XG5pbXBvcnQgeyBBYnN0cmFjdExvZ2dlciwgRHVtbXlMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWxvZ2dlcic7XG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9leHRlbmRlZC10eXBlb3JtJztcbmltcG9ydCB7IEJsb2NrLCBUcmFuc2FjdGlvbiB9IGZyb20gJ0Byb3Nlbi1icmlkZ2Uvc2Nhbm5lci1pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRva2VuTWFwIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS90b2tlbnMnO1xuXG5pbXBvcnQgQ29tbWl0bWVudEFjdGlvbiBmcm9tICcuLi9hY3Rpb25zL2NvbW1pdG1lbnRBY3Rpb24nO1xuaW1wb3J0IHsgZXh0cmFjdGVkQ29tbWl0bWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZXh0cmFjdGVkQ29tbWl0bWVudCc7XG5pbXBvcnQgeyBTcGVuZEluZm8gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3R5cGVzJztcbmltcG9ydCB7IEpzb25CSSB9IGZyb20gJy4uL3V0aWxzJztcblxuY2xhc3MgQ29tbWl0bWVudEV4dHJhY3RvciBleHRlbmRzIEFic3RyYWN0RXh0cmFjdG9yPFRyYW5zYWN0aW9uPiB7XG4gIHJlYWRvbmx5IGxvZ2dlcjogQWJzdHJhY3RMb2dnZXI7XG4gIGlkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0YVNvdXJjZTogRGF0YVNvdXJjZTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb21taXRtZW50c0VyZ29UcmVlczogQXJyYXk8c3RyaW5nPjtcbiAgcHJpdmF0ZSByZWFkb25seSBSV1RJZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbnM6IENvbW1pdG1lbnRBY3Rpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgdG9rZW5NYXA6IFRva2VuTWFwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgYWRkcmVzc2VzOiBBcnJheTxzdHJpbmc+LFxuICAgIFJXVElkOiBzdHJpbmcsXG4gICAgZGF0YVNvdXJjZTogRGF0YVNvdXJjZSxcbiAgICB0b2tlbnM6IFRva2VuTWFwLFxuICAgIGxvZ2dlcj86IEFic3RyYWN0TG9nZ2VyLFxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBkYXRhU291cmNlO1xuICAgIHRoaXMuY29tbWl0bWVudHNFcmdvVHJlZXMgPSBhZGRyZXNzZXMubWFwKChhZGRyZXNzKSA9PlxuICAgICAgd2FzbS5BZGRyZXNzLmZyb21fYmFzZTU4KGFkZHJlc3MpLnRvX2VyZ29fdHJlZSgpLnRvX2Jhc2UxNl9ieXRlcygpLFxuICAgICk7XG4gICAgdGhpcy5SV1RJZCA9IFJXVElkO1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyID8gbG9nZ2VyIDogbmV3IER1bW15TG9nZ2VyKCk7XG4gICAgdGhpcy5hY3Rpb25zID0gbmV3IENvbW1pdG1lbnRBY3Rpb24oZGF0YVNvdXJjZSwgdGhpcy5sb2dnZXIpO1xuICAgIHRoaXMudG9rZW5NYXAgPSB0b2tlbnM7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IElkIGZvciBjdXJyZW50IGV4dHJhY3RvclxuICAgKi9cbiAgZ2V0SWQgPSAoKSA9PiB0aGlzLmlkO1xuXG4gIC8qKlxuICAgKiBnZXRzIGJsb2NrIGlkIGFuZCB0cmFuc2FjdGlvbnMgY29ycmVzcG9uZGluZyB0byB0aGUgYmxvY2sgYW5kIHNhdmVzIGlmIHRoZXkgYXJlIHZhbGlkIHJvc2VuXG4gICAqICB0cmFuc2FjdGlvbnMgYW5kIGluIGNhc2Ugb2Ygc3VjY2VzcyByZXR1cm4gdHJ1ZSBhbmQgaW4gY2FzZSBvZiBmYWlsdXJlIHJldHVybnMgZmFsc2VcbiAgICogQHBhcmFtIHR4c1xuICAgKiBAcGFyYW0gYmxvY2tcbiAgICovXG4gIHByb2Nlc3NUcmFuc2FjdGlvbnMgPSAoXG4gICAgdHhzOiBBcnJheTxUcmFuc2FjdGlvbj4sXG4gICAgYmxvY2s6IEJsb2NrLFxuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY29tbWl0bWVudHM6IEFycmF5PGV4dHJhY3RlZENvbW1pdG1lbnQ+ID0gW107XG4gICAgICAgIGNvbnN0IHNwZW5kSWRzOiBBcnJheTxTcGVuZEluZm8+ID0gW107XG4gICAgICAgIHR4cy5mb3JFYWNoKCh0cmFuc2FjdGlvbikgPT4ge1xuICAgICAgICAgIC8vIHByb2Nlc3Mgb3V0cHV0c1xuICAgICAgICAgIGZvciAoY29uc3Qgb3V0cHV0IG9mIHRyYW5zYWN0aW9uLm91dHB1dHMpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgb3V0cHV0LmFzc2V0cyAmJlxuICAgICAgICAgICAgICBvdXRwdXQuYWRkaXRpb25hbFJlZ2lzdGVycyAmJlxuICAgICAgICAgICAgICBvdXRwdXQuYXNzZXRzLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgb3V0cHV0LmFzc2V0c1swXS50b2tlbklkID09PSB0aGlzLlJXVElkICYmXG4gICAgICAgICAgICAgIHRoaXMuY29tbWl0bWVudHNFcmdvVHJlZXMuaW5kZXhPZihvdXRwdXQuZXJnb1RyZWUpICE9PSAtMVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVjb2RlZEJveCA9IHdhc20uRXJnb0JveC5mcm9tX2pzb24oXG4gICAgICAgICAgICAgICAgICBKc29uQkkuc3RyaW5naWZ5KG91dHB1dCksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBSNCA9IGRlY29kZWRCb3gucmVnaXN0ZXJfdmFsdWUoXG4gICAgICAgICAgICAgICAgICB3YXNtLk5vbk1hbmRhdG9yeVJlZ2lzdGVySWQuUjQsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBSNSA9IGRlY29kZWRCb3gucmVnaXN0ZXJfdmFsdWUoXG4gICAgICAgICAgICAgICAgICB3YXNtLk5vbk1hbmRhdG9yeVJlZ2lzdGVySWQuUjUsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBSNiA9IGRlY29kZWRCb3gucmVnaXN0ZXJfdmFsdWUoXG4gICAgICAgICAgICAgICAgICB3YXNtLk5vbk1hbmRhdG9yeVJlZ2lzdGVySWQuUjYsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoUjQgJiYgUjUgJiYgUjYpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IFI0VmFsdWUgPSBSNC50b19ieXRlX2FycmF5KCk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBSNVZhbHVlID0gUjUudG9fYnl0ZV9hcnJheSgpO1xuICAgICAgICAgICAgICAgICAgY29uc3QgUjZWYWx1ZSA9IFI2LnRvX2J5dGVfYXJyYXkoKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IFdJRCA9IEJ1ZmZlci5mcm9tKFI0VmFsdWUpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RJZCA9IEJ1ZmZlci5mcm9tKFI1VmFsdWUpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50RGlnZXN0ID0gQnVmZmVyLmZyb20oUjZWYWx1ZSkudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgICAgICAgICAgICAgY29tbWl0bWVudHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHR4SWQ6IHRyYW5zYWN0aW9uLmlkLFxuICAgICAgICAgICAgICAgICAgICBXSUQ6IFdJRCxcbiAgICAgICAgICAgICAgICAgICAgY29tbWl0bWVudDogZXZlbnREaWdlc3QsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50SWQ6IHJlcXVlc3RJZCxcbiAgICAgICAgICAgICAgICAgICAgYm94SWQ6IG91dHB1dC5ib3hJZCxcbiAgICAgICAgICAgICAgICAgICAgYm94U2VyaWFsaXplZDogQnVmZmVyLmZyb20oXG4gICAgICAgICAgICAgICAgICAgICAgZGVjb2RlZEJveC5zaWdtYV9zZXJpYWxpemVfYnl0ZXMoKSxcbiAgICAgICAgICAgICAgICAgICAgKS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgICAgICAgICAgICAgICAgIHJ3dENvdW50OiB0aGlzLnRva2VuTWFwXG4gICAgICAgICAgICAgICAgICAgICAgLndyYXBBbW91bnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlJXVElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgQmlnSW50KG91dHB1dC5hc3NldHNbMF0uYW1vdW50KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdlcmdvJyxcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgLmFtb3VudC50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAvLyBlbXB0eVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIHByb2Nlc3MgaW5wdXRzXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0cmFuc2FjdGlvbi5pbnB1dHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHNwZW5kSWRzLnB1c2goe1xuICAgICAgICAgICAgICBib3hJZDogdHJhbnNhY3Rpb24uaW5wdXRzW2ldLmJveElkLFxuICAgICAgICAgICAgICB0eElkOiB0cmFuc2FjdGlvbi5pZCxcbiAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBwcm9jZXNzIHNhdmUgY29tbWl0bWVudHNcbiAgICAgICAgdGhpcy5hY3Rpb25zXG4gICAgICAgICAgLnN0b3JlQ29tbWl0bWVudHMoY29tbWl0bWVudHMsIGJsb2NrLCB0aGlzLmlkKVxuICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWN0aW9ucy5zcGVuZENvbW1pdG1lbnRzKHNwZW5kSWRzLCBibG9jaywgdGhpcy5pZCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZSkgPT4gcmVqZWN0KGUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgYEVycm9yIGluIHNvcmluZyBwZXJtaXRzIG9mIHRoZSBibG9jayAke2Jsb2NrfTogJHtlfWAsXG4gICAgICAgICk7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICAvKipcbiAgICogZm9yayBvbmUgYmxvY2sgYW5kIHJlbW92ZSBhbGwgc3RvcmVkIGluZm9ybWF0aW9uIGZvciB0aGlzIGJsb2NrXG4gICAqIEBwYXJhbSBoYXNoOiBibG9jayBoYXNoXG4gICAqL1xuICBmb3JrQmxvY2sgPSBhc3luYyAoaGFzaDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgYXdhaXQgdGhpcy5hY3Rpb25zLmRlbGV0ZUJsb2NrKGhhc2gsIHRoaXMuZ2V0SWQoKSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEV4dHJhY3RvciBib3ggaW5pdGlhbGl6YXRpb25cbiAgICogTm8gYWN0aW9uIG5lZWRlZCBmb3IgY29tbWl0bWVudCBleHRyYWN0b3JcbiAgICovXG4gIGluaXRpYWxpemVCb3hlcyA9IGFzeW5jICgpID0+IHtcbiAgICByZXR1cm47XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbW1pdG1lbnRFeHRyYWN0b3I7XG4iXX0=
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWl0bWVudEV4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9leHRyYWN0b3IvY29tbWl0bWVudEV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLHNCQUFzQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFLNUUsT0FBTyxnQkFBZ0IsTUFBTSw2QkFBNkIsQ0FBQztBQUczRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWxDLE1BQU0sbUJBQW9CLFNBQVEsaUJBQThCO0lBQ3JELE1BQU0sQ0FBaUI7SUFDaEMsRUFBRSxDQUFTO0lBQ00sVUFBVSxDQUFhO0lBQ3ZCLG9CQUFvQixDQUFnQjtJQUNwQyxLQUFLLENBQVM7SUFDZCxPQUFPLENBQW1CO0lBQzFCLFFBQVEsQ0FBVztJQUVwQyxZQUNFLEVBQVUsRUFDVixTQUF3QixFQUN4QixLQUFhLEVBQ2IsVUFBc0IsRUFDdEIsTUFBZ0IsRUFDaEIsTUFBdUI7UUFFdkIsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsZUFBZSxFQUFFLENBQ25FLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENB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QUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0IsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2Ysd0NBQXdDLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FDdEQsQ0FBQztnQkFDRixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDWixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7SUFFRjs7O09BR0c7SUFDSCxTQUFTLEdBQUcsS0FBSyxFQUFFLElBQVksRUFBaUIsRUFBRTtRQUNoRCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDLENBQUM7SUFFRjs7O09BR0c7SUFDSCxjQUFjLEdBQUcsS0FBSyxJQUFJLEVBQUU7UUFDMUIsT0FBTztJQUNULENBQUMsQ0FBQztDQUNIO0FBRUQsZUFBZSxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHdhc20gZnJvbSAnZXJnby1saWItd2FzbS1ub2RlanMnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdEV4dHJhY3RvciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtZXh0cmFjdG9yJztcbmltcG9ydCB7IEFic3RyYWN0TG9nZ2VyLCBEdW1teUxvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2V4dGVuZGVkLXR5cGVvcm0nO1xuaW1wb3J0IHsgQmxvY2tJbmZvLCBUcmFuc2FjdGlvbiB9IGZyb20gJ0Byb3Nlbi1icmlkZ2Uvc2Nhbm5lci1pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRva2VuTWFwIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS90b2tlbnMnO1xuXG5pbXBvcnQgQ29tbWl0bWVudEFjdGlvbiBmcm9tICcuLi9hY3Rpb25zL2NvbW1pdG1lbnRBY3Rpb24nO1xuaW1wb3J0IHsgZXh0cmFjdGVkQ29tbWl0bWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZXh0cmFjdGVkQ29tbWl0bWVudCc7XG5pbXBvcnQgeyBTcGVuZEluZm8gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3R5cGVzJztcbmltcG9ydCB7IEpzb25CSSB9IGZyb20gJy4uL3V0aWxzJztcblxuY2xhc3MgQ29tbWl0bWVudEV4dHJhY3RvciBleHRlbmRzIEFic3RyYWN0RXh0cmFjdG9yPFRyYW5zYWN0aW9uPiB7XG4gIHJlYWRvbmx5IGxvZ2dlcjogQWJzdHJhY3RMb2dnZXI7XG4gIGlkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0YVNvdXJjZTogRGF0YVNvdXJjZTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb21taXRtZW50c0VyZ29UcmVlczogQXJyYXk8c3RyaW5nPjtcbiAgcHJpdmF0ZSByZWFkb25seSBSV1RJZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbnM6IENvbW1pdG1lbnRBY3Rpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgdG9rZW5NYXA6IFRva2VuTWFwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgYWRkcmVzc2VzOiBBcnJheTxzdHJpbmc+LFxuICAgIFJXVElkOiBzdHJpbmcsXG4gICAgZGF0YVNvdXJjZTogRGF0YVNvdXJjZSxcbiAgICB0b2tlbnM6IFRva2VuTWFwLFxuICAgIGxvZ2dlcj86IEFic3RyYWN0TG9nZ2VyLFxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBkYXRhU291cmNlO1xuICAgIHRoaXMuY29tbWl0bWVudHNFcmdvVHJlZXMgPSBhZGRyZXNzZXMubWFwKChhZGRyZXNzKSA9PlxuICAgICAgd2FzbS5BZGRyZXNzLmZyb21fYmFzZTU4KGFkZHJlc3MpLnRvX2VyZ29fdHJlZSgpLnRvX2Jhc2UxNl9ieXRlcygpLFxuICAgICk7XG4gICAgdGhpcy5SV1RJZCA9IFJXVElkO1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyID8gbG9nZ2VyIDogbmV3IER1bW15TG9nZ2VyKCk7XG4gICAgdGhpcy5hY3Rpb25zID0gbmV3IENvbW1pdG1lbnRBY3Rpb24oXG4gICAgICBkYXRhU291cmNlLFxuICAgICAgdGhpcy5sb2dnZXIuY2hpbGQoJ0NvbW1pdG1lbnRBY3Rpb24nKSxcbiAgICApO1xuICAgIHRoaXMudG9rZW5NYXAgPSB0b2tlbnM7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IElkIGZvciBjdXJyZW50IGV4dHJhY3RvclxuICAgKi9cbiAgZ2V0SWQgPSAoKSA9PiB0aGlzLmlkO1xuXG4gIC8qKlxuICAgKiBnZXRzIGJsb2NrIGlkIGFuZCB0cmFuc2FjdGlvbnMgY29ycmVzcG9uZGluZyB0byB0aGUgYmxvY2sgYW5kIHNhdmVzIGlmIHRoZXkgYXJlIHZhbGlkIHJvc2VuXG4gICAqICB0cmFuc2FjdGlvbnMgYW5kIGluIGNhc2Ugb2Ygc3VjY2VzcyByZXR1cm4gdHJ1ZSBhbmQgaW4gY2FzZSBvZiBmYWlsdXJlIHJldHVybnMgZmFsc2VcbiAgICogQHBhcmFtIHR4c1xuICAgKiBAcGFyYW0gYmxvY2tcbiAgICovXG4gIHByb2Nlc3NUcmFuc2FjdGlvbnMgPSAoXG4gICAgdHhzOiBBcnJheTxUcmFuc2FjdGlvbj4sXG4gICAgYmxvY2s6IEJsb2NrSW5mbyxcbiAgKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbW1pdG1lbnRzOiBBcnJheTxleHRyYWN0ZWRDb21taXRtZW50PiA9IFtdO1xuICAgICAgICBjb25zdCBzcGVuZElkczogQXJyYXk8U3BlbmRJbmZvPiA9IFtdO1xuICAgICAgICB0eHMuZm9yRWFjaCgodHJhbnNhY3Rpb24pID0+IHtcbiAgICAgICAgICAvLyBwcm9jZXNzIG91dHB1dHNcbiAgICAgICAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiB0cmFuc2FjdGlvbi5vdXRwdXRzKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIG91dHB1dC5hc3NldHMgJiZcbiAgICAgICAgICAgICAgb3V0cHV0LmFkZGl0aW9uYWxSZWdpc3RlcnMgJiZcbiAgICAgICAgICAgICAgb3V0cHV0LmFzc2V0cy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgIG91dHB1dC5hc3NldHNbMF0udG9rZW5JZCA9PT0gdGhpcy5SV1RJZCAmJlxuICAgICAgICAgICAgICB0aGlzLmNvbW1pdG1lbnRzRXJnb1RyZWVzLmluZGV4T2Yob3V0cHV0LmVyZ29UcmVlKSAhPT0gLTFcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlY29kZWRCb3ggPSB3YXNtLkVyZ29Cb3guZnJvbV9qc29uKFxuICAgICAgICAgICAgICAgICAgSnNvbkJJLnN0cmluZ2lmeShvdXRwdXQpLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgUjQgPSBkZWNvZGVkQm94LnJlZ2lzdGVyX3ZhbHVlKFxuICAgICAgICAgICAgICAgICAgd2FzbS5Ob25NYW5kYXRvcnlSZWdpc3RlcklkLlI0LFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgUjUgPSBkZWNvZGVkQm94LnJlZ2lzdGVyX3ZhbHVlKFxuICAgICAgICAgICAgICAgICAgd2FzbS5Ob25NYW5kYXRvcnlSZWdpc3RlcklkLlI1LFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgUjYgPSBkZWNvZGVkQm94LnJlZ2lzdGVyX3ZhbHVlKFxuICAgICAgICAgICAgICAgICAgd2FzbS5Ob25NYW5kYXRvcnlSZWdpc3RlcklkLlI2LFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKFI0ICYmIFI1ICYmIFI2KSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBSNFZhbHVlID0gUjQudG9fYnl0ZV9hcnJheSgpO1xuICAgICAgICAgICAgICAgICAgY29uc3QgUjVWYWx1ZSA9IFI1LnRvX2J5dGVfYXJyYXkoKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IFI2VmFsdWUgPSBSNi50b19ieXRlX2FycmF5KCk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBXSUQgPSBCdWZmZXIuZnJvbShSNFZhbHVlKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0SWQgPSBCdWZmZXIuZnJvbShSNVZhbHVlKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBldmVudERpZ2VzdCA9IEJ1ZmZlci5mcm9tKFI2VmFsdWUpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgICAgICAgICAgICAgIGNvbW1pdG1lbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICB0eElkOiB0cmFuc2FjdGlvbi5pZCxcbiAgICAgICAgICAgICAgICAgICAgV0lEOiBXSUQsXG4gICAgICAgICAgICAgICAgICAgIGNvbW1pdG1lbnQ6IGV2ZW50RGlnZXN0LFxuICAgICAgICAgICAgICAgICAgICBldmVudElkOiByZXF1ZXN0SWQsXG4gICAgICAgICAgICAgICAgICAgIGJveElkOiBvdXRwdXQuYm94SWQsXG4gICAgICAgICAgICAgICAgICAgIGJveFNlcmlhbGl6ZWQ6IEJ1ZmZlci5mcm9tKFxuICAgICAgICAgICAgICAgICAgICAgIGRlY29kZWRCb3guc2lnbWFfc2VyaWFsaXplX2J5dGVzKCksXG4gICAgICAgICAgICAgICAgICAgICkudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgICAgICAgICAgICAgICByd3RDb3VudDogdGhpcy50b2tlbk1hcFxuICAgICAgICAgICAgICAgICAgICAgIC53cmFwQW1vdW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5SV1RJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIEJpZ0ludChvdXRwdXQuYXNzZXRzWzBdLmFtb3VudCksXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXJnbycsXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIC5hbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgLy8gZW1wdHlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBwcm9jZXNzIGlucHV0c1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHJhbnNhY3Rpb24uaW5wdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBzcGVuZElkcy5wdXNoKHtcbiAgICAgICAgICAgICAgYm94SWQ6IHRyYW5zYWN0aW9uLmlucHV0c1tpXS5ib3hJZCxcbiAgICAgICAgICAgICAgdHhJZDogdHJhbnNhY3Rpb24uaWQsXG4gICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gcHJvY2VzcyBzYXZlIGNvbW1pdG1lbnRzXG4gICAgICAgIHRoaXMuYWN0aW9uc1xuICAgICAgICAgIC5zdG9yZUNvbW1pdG1lbnRzKGNvbW1pdG1lbnRzLCBibG9jaywgdGhpcy5pZClcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFjdGlvbnMuc3BlbmRDb21taXRtZW50cyhzcGVuZElkcywgYmxvY2ssIHRoaXMuaWQpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGUpID0+IHJlamVjdChlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICAgIGBFcnJvciBpbiBzb3JpbmcgcGVybWl0cyBvZiB0aGUgYmxvY2sgJHtibG9ja306ICR7ZX1gLFxuICAgICAgICApO1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIGZvcmsgb25lIGJsb2NrIGFuZCByZW1vdmUgYWxsIHN0b3JlZCBpbmZvcm1hdGlvbiBmb3IgdGhpcyBibG9ja1xuICAgKiBAcGFyYW0gaGFzaDogYmxvY2sgaGFzaFxuICAgKi9cbiAgZm9ya0Jsb2NrID0gYXN5bmMgKGhhc2g6IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGF3YWl0IHRoaXMuYWN0aW9ucy5kZWxldGVCbG9jayhoYXNoLCB0aGlzLmdldElkKCkpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBFeHRyYWN0b3IgYm94IGluaXRpYWxpemF0aW9uXG4gICAqIE5vIGFjdGlvbiBuZWVkZWQgZm9yIGNvbW1pdG1lbnQgZXh0cmFjdG9yXG4gICAqL1xuICBpbml0aWFsaXplRGF0YSA9IGFzeW5jICgpID0+IHtcbiAgICByZXR1cm47XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbW1pdG1lbnRFeHRyYWN0b3I7XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AbstractErgoBoxExtractor } from '@rosen-bridge/abstract-extractor';
|
|
2
2
|
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
3
3
|
import { DataSource } from '@rosen-bridge/extended-typeorm';
|
|
4
4
|
import { BlockInfo, ErgoNetworkType, OutputBox, Transaction } from '@rosen-bridge/scanner-interfaces';
|
|
@@ -6,7 +6,7 @@ import EventTriggerAction from '../actions/eventTriggerAction';
|
|
|
6
6
|
import EventTriggerEntity from '../entities/eventTriggerEntity';
|
|
7
7
|
import { ExtractedEventTrigger } from '../interfaces/extractedEventTrigger';
|
|
8
8
|
import { EventResult } from '../types';
|
|
9
|
-
declare class EventTriggerExtractor extends
|
|
9
|
+
declare class EventTriggerExtractor extends AbstractErgoBoxExtractor<ExtractedEventTrigger, EventTriggerEntity> {
|
|
10
10
|
id: string;
|
|
11
11
|
protected readonly actions: EventTriggerAction;
|
|
12
12
|
private readonly eventTriggerErgoTree;
|
|
@@ -28,7 +28,7 @@ declare class EventTriggerExtractor extends AbstractInitializableErgoExtractor<E
|
|
|
28
28
|
* @param box
|
|
29
29
|
* @return true if the box has the required data and false otherwise
|
|
30
30
|
*/
|
|
31
|
-
|
|
31
|
+
hasBoxData: (box: OutputBox) => boolean;
|
|
32
32
|
/**
|
|
33
33
|
* extract box data to proper format (not including spending information)
|
|
34
34
|
* @param box
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventTriggerExtractor.d.ts","sourceRoot":"","sources":["../../lib/extractor/eventTriggerExtractor.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"eventTriggerExtractor.d.ts","sourceRoot":"","sources":["../../lib/extractor/eventTriggerExtractor.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,wBAAwB,EAGzB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EACL,SAAS,EACT,eAAe,EACf,SAAS,EACT,WAAW,EACZ,MAAM,kCAAkC,CAAC;AAE1C,OAAO,kBAAkB,MAAM,+BAA+B,CAAC;AAC/D,OAAO,kBAAkB,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,cAAM,qBAAsB,SAAQ,wBAAwB,CAC1D,qBAAqB,EACrB,kBAAkB,CACnB;IACC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IAC/C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;gBAG3B,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,eAAe,EACrB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,cAAc,EACvB,UAAU,UAAO;IAoBnB;;OAEG;IACH,KAAK,eAAiB;IAEtB;;;;;;;;;OASG;IACH,UAAU,GAAI,KAAK,SAAS,KAAG,OAAO,CA2BpC;IAEF;;;;OAIG;IACH,cAAc,GACZ,KAAK,SAAS,KACb,IAAI,CAAC,qBAAqB,EAAE,YAAY,GAAG,aAAa,CAAC,GAAG,SAAS,CAwDtE;IAEF;;;;;OAKG;IACH,mBAAmB,GACjB,KAAK,KAAK,CAAC,WAAW,CAAC,EACvB,OAAO,SAAS,KACf,OAAO,CAAC,OAAO,CAAC,CAyDjB;IAEF;;;;;OAKG;IACH,SAAS,CAAC,kBAAkB,GAAI,aAAa,WAAW;;;MA0CtD;CACH;AAED,eAAe,qBAAqB,CAAC"}
|