@rosen-bridge/abstract-extractor 0.3.0 → 1.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/CHANGELOG.md +20 -0
- package/dist/ergo/AbstractErgoExtractor.d.ts +31 -8
- package/dist/ergo/AbstractErgoExtractor.d.ts.map +1 -1
- package/dist/ergo/AbstractErgoExtractor.js +73 -8
- package/dist/ergo/AbstractErgoExtractorAction.d.ts +38 -10
- package/dist/ergo/AbstractErgoExtractorAction.d.ts.map +1 -1
- package/dist/ergo/AbstractErgoExtractorAction.js +134 -1
- package/dist/ergo/AbstractErgoExtractorEntity.d.ts +11 -0
- package/dist/ergo/AbstractErgoExtractorEntity.d.ts.map +1 -0
- package/dist/ergo/AbstractErgoExtractorEntity.js +57 -0
- package/dist/ergo/index.d.ts +1 -0
- package/dist/ergo/index.d.ts.map +1 -1
- package/dist/ergo/index.js +2 -1
- package/dist/ergo/initializable/AbstractInitializable.d.ts +4 -3
- package/dist/ergo/initializable/AbstractInitializable.d.ts.map +1 -1
- package/dist/ergo/initializable/AbstractInitializable.js +9 -5
- package/dist/ergo/initializable/AbstractInitializableAction.d.ts +7 -2
- package/dist/ergo/initializable/AbstractInitializableAction.d.ts.map +1 -1
- package/dist/ergo/initializable/AbstractInitializableAction.js +11 -1
- package/dist/ergo/interfaces.d.ts +21 -7
- package/dist/ergo/interfaces.d.ts.map +1 -1
- package/dist/ergo/interfaces.js +8 -1
- package/lib/ergo/AbstractErgoExtractor.ts +107 -23
- package/lib/ergo/AbstractErgoExtractorAction.ts +187 -18
- package/lib/ergo/AbstractErgoExtractorEntity.ts +28 -0
- package/lib/ergo/index.ts +1 -0
- package/lib/ergo/initializable/AbstractInitializable.ts +22 -9
- package/lib/ergo/initializable/AbstractInitializableAction.ts +19 -3
- package/lib/ergo/interfaces.ts +25 -7
- package/package.json +6 -2
- package/tests/{AbstractExtractor.mock.ts → AbstractErgoExtractor.mock.ts} +12 -7
- package/tests/AbstractErgoExtractor.spec.ts +281 -0
- package/tests/AbstractErgoExtractorAction.mock.ts +45 -0
- package/tests/AbstractErgoExtractorAction.spec.ts +269 -0
- package/tests/initializable/AbstractInitializable.mock.ts +15 -8
- package/tests/initializable/AbstractInitializable.spec.ts +37 -5
- package/tests/initializable/AbstractInitializableAction.mock.ts +45 -0
- package/tests/initializable/AbstractInitializableAction.spec.ts +65 -0
- package/tests/testData.ts +38 -2
- package/tests/testUtils.ts +22 -0
- package/tsconfig.build.tsbuildinfo +1 -1
- package/dist/ergo/initializable/InitializableByAddress.d.ts +0 -19
- package/dist/ergo/initializable/InitializableByAddress.d.ts.map +0 -1
- package/dist/ergo/initializable/InitializableByAddress.js +0 -30
- package/dist/ergo/initializable/InitializableByToken.d.ts +0 -19
- package/dist/ergo/initializable/InitializableByToken.d.ts.map +0 -1
- package/dist/ergo/initializable/InitializableByToken.js +0 -30
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/tests/AbstractExtractor.spec.ts +0 -106
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
2
|
-
import { ErgoExtractedData, ErgoNetworkType, ErgoBox } from '../interfaces';
|
|
3
|
-
import { AbstractInitializableErgoExtractor } from './AbstractInitializable';
|
|
4
|
-
export declare abstract class AbstractInitializableByAddressErgoExtractor<ExtractedData extends ErgoExtractedData> extends AbstractInitializableErgoExtractor<ExtractedData> {
|
|
5
|
-
private address;
|
|
6
|
-
private network;
|
|
7
|
-
constructor(type: ErgoNetworkType, url: string, address: string, initialize?: boolean, logger?: AbstractLogger);
|
|
8
|
-
/**
|
|
9
|
-
* return boxes by token id from the specified network source
|
|
10
|
-
* @param offset
|
|
11
|
-
* @param limit
|
|
12
|
-
* @return boxes in batch
|
|
13
|
-
*/
|
|
14
|
-
getBoxesWithOffsetLimit: (offset: number, limit: number) => Promise<{
|
|
15
|
-
boxes: ErgoBox[];
|
|
16
|
-
hasNextBatch: boolean;
|
|
17
|
-
}>;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=InitializableByAddress.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InitializableByAddress.d.ts","sourceRoot":"","sources":["../../../lib/ergo/initializable/InitializableByAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,kCAAkC,EAAE,MAAM,yBAAyB,CAAC;AAK7E,8BAAsB,2CAA2C,CAC/D,aAAa,SAAS,iBAAiB,CACvC,SAAQ,kCAAkC,CAAC,aAAa,CAAC;IACzD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAkB;gBAG/B,IAAI,EAAE,eAAe,EACrB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,OAAO,EACpB,MAAM,CAAC,EAAE,cAAc;IAWzB;;;;;OAKG;IACH,uBAAuB,WACb,MAAM,SACP,MAAM,KACZ,QAAQ;QAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC,CAErD;CACH"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { ErgoNetworkType } from '../interfaces';
|
|
2
|
-
import { AbstractInitializableErgoExtractor } from './AbstractInitializable';
|
|
3
|
-
import { ExplorerNetwork } from '../network/ExplorerNetwork';
|
|
4
|
-
import { NodeNetwork } from '../network/NodeNetwork';
|
|
5
|
-
export class AbstractInitializableByAddressErgoExtractor extends AbstractInitializableErgoExtractor {
|
|
6
|
-
address;
|
|
7
|
-
network;
|
|
8
|
-
constructor(type, url, address, initialize, logger) {
|
|
9
|
-
super(initialize, logger);
|
|
10
|
-
this.address = address;
|
|
11
|
-
if (type == ErgoNetworkType.Explorer) {
|
|
12
|
-
this.network = new ExplorerNetwork(url);
|
|
13
|
-
}
|
|
14
|
-
else if (type == ErgoNetworkType.Node) {
|
|
15
|
-
this.network = new NodeNetwork(url);
|
|
16
|
-
}
|
|
17
|
-
else
|
|
18
|
-
throw new Error(`Network type ${type} is not supported`);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* return boxes by token id from the specified network source
|
|
22
|
-
* @param offset
|
|
23
|
-
* @param limit
|
|
24
|
-
* @return boxes in batch
|
|
25
|
-
*/
|
|
26
|
-
getBoxesWithOffsetLimit = (offset, limit) => {
|
|
27
|
-
return this.network.getBoxesByAddress(this.address, offset, limit);
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5pdGlhbGl6YWJsZUJ5QWRkcmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9lcmdvL2luaXRpYWxpemFibGUvSW5pdGlhbGl6YWJsZUJ5QWRkcmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQXFCLGVBQWUsRUFBVyxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR3JELE1BQU0sT0FBZ0IsMkNBRXBCLFNBQVEsa0NBQWlEO0lBQ2pELE9BQU8sQ0FBUztJQUNoQixPQUFPLENBQWtCO0lBRWpDLFlBQ0UsSUFBcUIsRUFDckIsR0FBVyxFQUNYLE9BQWUsRUFDZixVQUFvQixFQUNwQixNQUF1QjtRQUV2QixLQUFLLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksSUFBSSxJQUFJLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLENBQUM7YUFBTSxJQUFJLElBQUksSUFBSSxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxDQUFDOztZQUFNLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLElBQUksbUJBQW1CLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCx1QkFBdUIsR0FBRyxDQUN4QixNQUFjLEVBQ2QsS0FBYSxFQUN5QyxFQUFFO1FBQ3hELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyRSxDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuXG5pbXBvcnQgeyBFcmdvRXh0cmFjdGVkRGF0YSwgRXJnb05ldHdvcmtUeXBlLCBFcmdvQm94IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBYnN0cmFjdEluaXRpYWxpemFibGVFcmdvRXh0cmFjdG9yIH0gZnJvbSAnLi9BYnN0cmFjdEluaXRpYWxpemFibGUnO1xuaW1wb3J0IHsgRXhwbG9yZXJOZXR3b3JrIH0gZnJvbSAnLi4vbmV0d29yay9FeHBsb3Jlck5ldHdvcmsnO1xuaW1wb3J0IHsgTm9kZU5ldHdvcmsgfSBmcm9tICcuLi9uZXR3b3JrL05vZGVOZXR3b3JrJztcbmltcG9ydCB7IEFic3RyYWN0TmV0d29yayB9IGZyb20gJy4uL25ldHdvcmsvQWJzdHJhY3ROZXR3b3JrJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0SW5pdGlhbGl6YWJsZUJ5QWRkcmVzc0VyZ29FeHRyYWN0b3I8XG4gIEV4dHJhY3RlZERhdGEgZXh0ZW5kcyBFcmdvRXh0cmFjdGVkRGF0YVxuPiBleHRlbmRzIEFic3RyYWN0SW5pdGlhbGl6YWJsZUVyZ29FeHRyYWN0b3I8RXh0cmFjdGVkRGF0YT4ge1xuICBwcml2YXRlIGFkZHJlc3M6IHN0cmluZztcbiAgcHJpdmF0ZSBuZXR3b3JrOiBBYnN0cmFjdE5ldHdvcms7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgdHlwZTogRXJnb05ldHdvcmtUeXBlLFxuICAgIHVybDogc3RyaW5nLFxuICAgIGFkZHJlc3M6IHN0cmluZyxcbiAgICBpbml0aWFsaXplPzogYm9vbGVhbixcbiAgICBsb2dnZXI/OiBBYnN0cmFjdExvZ2dlclxuICApIHtcbiAgICBzdXBlcihpbml0aWFsaXplLCBsb2dnZXIpO1xuICAgIHRoaXMuYWRkcmVzcyA9IGFkZHJlc3M7XG4gICAgaWYgKHR5cGUgPT0gRXJnb05ldHdvcmtUeXBlLkV4cGxvcmVyKSB7XG4gICAgICB0aGlzLm5ldHdvcmsgPSBuZXcgRXhwbG9yZXJOZXR3b3JrKHVybCk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09IEVyZ29OZXR3b3JrVHlwZS5Ob2RlKSB7XG4gICAgICB0aGlzLm5ldHdvcmsgPSBuZXcgTm9kZU5ldHdvcmsodXJsKTtcbiAgICB9IGVsc2UgdGhyb3cgbmV3IEVycm9yKGBOZXR3b3JrIHR5cGUgJHt0eXBlfSBpcyBub3Qgc3VwcG9ydGVkYCk7XG4gIH1cblxuICAvKipcbiAgICogcmV0dXJuIGJveGVzIGJ5IHRva2VuIGlkIGZyb20gdGhlIHNwZWNpZmllZCBuZXR3b3JrIHNvdXJjZVxuICAgKiBAcGFyYW0gb2Zmc2V0XG4gICAqIEBwYXJhbSBsaW1pdFxuICAgKiBAcmV0dXJuIGJveGVzIGluIGJhdGNoXG4gICAqL1xuICBnZXRCb3hlc1dpdGhPZmZzZXRMaW1pdCA9IChcbiAgICBvZmZzZXQ6IG51bWJlcixcbiAgICBsaW1pdDogbnVtYmVyXG4gICk6IFByb21pc2U8eyBib3hlczogRXJnb0JveFtdOyBoYXNOZXh0QmF0Y2g6IGJvb2xlYW4gfT4gPT4ge1xuICAgIHJldHVybiB0aGlzLm5ldHdvcmsuZ2V0Qm94ZXNCeUFkZHJlc3ModGhpcy5hZGRyZXNzLCBvZmZzZXQsIGxpbWl0KTtcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
2
|
-
import { ErgoExtractedData, ErgoNetworkType, ErgoBox } from '../interfaces';
|
|
3
|
-
import { AbstractInitializableErgoExtractor } from './AbstractInitializable';
|
|
4
|
-
export declare abstract class AbstractInitializableByTokenErgoExtractor<ExtractedData extends ErgoExtractedData> extends AbstractInitializableErgoExtractor<ExtractedData> {
|
|
5
|
-
private tokenId;
|
|
6
|
-
private network;
|
|
7
|
-
constructor(type: ErgoNetworkType, url: string, tokenId: string, initialize?: boolean, logger?: AbstractLogger);
|
|
8
|
-
/**
|
|
9
|
-
* return boxes by token id from the specified network source
|
|
10
|
-
* @param offset
|
|
11
|
-
* @param limit
|
|
12
|
-
* @return boxes in batch
|
|
13
|
-
*/
|
|
14
|
-
getBoxesWithOffsetLimit: (offset: number, limit: number) => Promise<{
|
|
15
|
-
boxes: ErgoBox[];
|
|
16
|
-
hasNextBatch: boolean;
|
|
17
|
-
}>;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=InitializableByToken.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InitializableByToken.d.ts","sourceRoot":"","sources":["../../../lib/ergo/initializable/InitializableByToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,kCAAkC,EAAE,MAAM,yBAAyB,CAAC;AAK7E,8BAAsB,yCAAyC,CAC7D,aAAa,SAAS,iBAAiB,CACvC,SAAQ,kCAAkC,CAAC,aAAa,CAAC;IACzD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAkB;gBAG/B,IAAI,EAAE,eAAe,EACrB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,OAAO,EACpB,MAAM,CAAC,EAAE,cAAc;IAWzB;;;;;OAKG;IACH,uBAAuB,WACb,MAAM,SACP,MAAM,KACZ,QAAQ;QAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC,CAErD;CACH"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { ErgoNetworkType } from '../interfaces';
|
|
2
|
-
import { AbstractInitializableErgoExtractor } from './AbstractInitializable';
|
|
3
|
-
import { ExplorerNetwork } from '../network/ExplorerNetwork';
|
|
4
|
-
import { NodeNetwork } from '../network/NodeNetwork';
|
|
5
|
-
export class AbstractInitializableByTokenErgoExtractor extends AbstractInitializableErgoExtractor {
|
|
6
|
-
tokenId;
|
|
7
|
-
network;
|
|
8
|
-
constructor(type, url, tokenId, initialize, logger) {
|
|
9
|
-
super(initialize, logger);
|
|
10
|
-
this.tokenId = tokenId;
|
|
11
|
-
if (type == ErgoNetworkType.Explorer) {
|
|
12
|
-
this.network = new ExplorerNetwork(url);
|
|
13
|
-
}
|
|
14
|
-
else if (type == ErgoNetworkType.Node) {
|
|
15
|
-
this.network = new NodeNetwork(url);
|
|
16
|
-
}
|
|
17
|
-
else
|
|
18
|
-
throw new Error(`Network type ${type} is not supported`);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* return boxes by token id from the specified network source
|
|
22
|
-
* @param offset
|
|
23
|
-
* @param limit
|
|
24
|
-
* @return boxes in batch
|
|
25
|
-
*/
|
|
26
|
-
getBoxesWithOffsetLimit = (offset, limit) => {
|
|
27
|
-
return this.network.getBoxesByTokenId(this.tokenId, offset, limit);
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5pdGlhbGl6YWJsZUJ5VG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXJnby9pbml0aWFsaXphYmxlL0luaXRpYWxpemFibGVCeVRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBcUIsZUFBZSxFQUFXLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHckQsTUFBTSxPQUFnQix5Q0FFcEIsU0FBUSxrQ0FBaUQ7SUFDakQsT0FBTyxDQUFTO0lBQ2hCLE9BQU8sQ0FBa0I7SUFFakMsWUFDRSxJQUFxQixFQUNyQixHQUFXLEVBQ1gsT0FBZSxFQUNmLFVBQW9CLEVBQ3BCLE1BQXVCO1FBRXZCLEtBQUssQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxJQUFJLElBQUksZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUMsQ0FBQzthQUFNLElBQUksSUFBSSxJQUFJLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7O1lBQU0sTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHVCQUF1QixHQUFHLENBQ3hCLE1BQWMsRUFDZCxLQUFhLEVBQ3lDLEVBQUU7UUFDeEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JFLENBQUMsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWxvZ2dlcic7XG5cbmltcG9ydCB7IEVyZ29FeHRyYWN0ZWREYXRhLCBFcmdvTmV0d29ya1R5cGUsIEVyZ29Cb3ggfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFic3RyYWN0SW5pdGlhbGl6YWJsZUVyZ29FeHRyYWN0b3IgfSBmcm9tICcuL0Fic3RyYWN0SW5pdGlhbGl6YWJsZSc7XG5pbXBvcnQgeyBFeHBsb3Jlck5ldHdvcmsgfSBmcm9tICcuLi9uZXR3b3JrL0V4cGxvcmVyTmV0d29yayc7XG5pbXBvcnQgeyBOb2RlTmV0d29yayB9IGZyb20gJy4uL25ldHdvcmsvTm9kZU5ldHdvcmsnO1xuaW1wb3J0IHsgQWJzdHJhY3ROZXR3b3JrIH0gZnJvbSAnLi4vbmV0d29yay9BYnN0cmFjdE5ldHdvcmsnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RJbml0aWFsaXphYmxlQnlUb2tlbkVyZ29FeHRyYWN0b3I8XG4gIEV4dHJhY3RlZERhdGEgZXh0ZW5kcyBFcmdvRXh0cmFjdGVkRGF0YVxuPiBleHRlbmRzIEFic3RyYWN0SW5pdGlhbGl6YWJsZUVyZ29FeHRyYWN0b3I8RXh0cmFjdGVkRGF0YT4ge1xuICBwcml2YXRlIHRva2VuSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBuZXR3b3JrOiBBYnN0cmFjdE5ldHdvcms7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgdHlwZTogRXJnb05ldHdvcmtUeXBlLFxuICAgIHVybDogc3RyaW5nLFxuICAgIHRva2VuSWQ6IHN0cmluZyxcbiAgICBpbml0aWFsaXplPzogYm9vbGVhbixcbiAgICBsb2dnZXI/OiBBYnN0cmFjdExvZ2dlclxuICApIHtcbiAgICBzdXBlcihpbml0aWFsaXplLCBsb2dnZXIpO1xuICAgIHRoaXMudG9rZW5JZCA9IHRva2VuSWQ7XG4gICAgaWYgKHR5cGUgPT0gRXJnb05ldHdvcmtUeXBlLkV4cGxvcmVyKSB7XG4gICAgICB0aGlzLm5ldHdvcmsgPSBuZXcgRXhwbG9yZXJOZXR3b3JrKHVybCk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09IEVyZ29OZXR3b3JrVHlwZS5Ob2RlKSB7XG4gICAgICB0aGlzLm5ldHdvcmsgPSBuZXcgTm9kZU5ldHdvcmsodXJsKTtcbiAgICB9IGVsc2UgdGhyb3cgbmV3IEVycm9yKGBOZXR3b3JrIHR5cGUgJHt0eXBlfSBpcyBub3Qgc3VwcG9ydGVkYCk7XG4gIH1cblxuICAvKipcbiAgICogcmV0dXJuIGJveGVzIGJ5IHRva2VuIGlkIGZyb20gdGhlIHNwZWNpZmllZCBuZXR3b3JrIHNvdXJjZVxuICAgKiBAcGFyYW0gb2Zmc2V0XG4gICAqIEBwYXJhbSBsaW1pdFxuICAgKiBAcmV0dXJuIGJveGVzIGluIGJhdGNoXG4gICAqL1xuICBnZXRCb3hlc1dpdGhPZmZzZXRMaW1pdCA9IChcbiAgICBvZmZzZXQ6IG51bWJlcixcbiAgICBsaW1pdDogbnVtYmVyXG4gICk6IFByb21pc2U8eyBib3hlczogRXJnb0JveFtdOyBoYXNOZXh0QmF0Y2g6IGJvb2xlYW4gfT4gPT4ge1xuICAgIHJldHVybiB0aGlzLm5ldHdvcmsuZ2V0Qm94ZXNCeVRva2VuSWQodGhpcy50b2tlbklkLCBvZmZzZXQsIGxpbWl0KTtcbiAgfTtcbn1cbiJdfQ==
|