@rosen-bridge/scanner
Advanced tools
Comparing version 0.1.6-alpha to 0.1.7-alpha
declare const PROCESSING = "PROCESSING"; | ||
declare const PROCEED = "PROCEED"; | ||
export declare class BlockEntity { | ||
id: number; | ||
height: number; | ||
@@ -5,0 +6,0 @@ hash: string; |
@@ -10,6 +10,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { | ||
}; | ||
import { Column, Entity, PrimaryColumn } from "typeorm"; | ||
import { Column, Entity, PrimaryGeneratedColumn, Unique } from "typeorm"; | ||
const PROCESSING = "PROCESSING"; | ||
const PROCEED = "PROCEED"; | ||
let BlockEntity = class BlockEntity { | ||
id; | ||
height; | ||
@@ -22,6 +23,8 @@ hash; | ||
__decorate([ | ||
PrimaryColumn({ | ||
unique: true, | ||
}), | ||
PrimaryGeneratedColumn(), | ||
__metadata("design:type", Number) | ||
], BlockEntity.prototype, "id", void 0); | ||
__decorate([ | ||
Column(), | ||
__metadata("design:type", Number) | ||
], BlockEntity.prototype, "height", void 0); | ||
@@ -31,3 +34,2 @@ __decorate([ | ||
length: 64, | ||
unique: true | ||
}), | ||
@@ -39,3 +41,2 @@ __metadata("design:type", String) | ||
length: 64, | ||
unique: true | ||
}), | ||
@@ -53,6 +54,9 @@ __metadata("design:type", String) | ||
BlockEntity = __decorate([ | ||
Entity() | ||
Entity(), | ||
Unique(['height', 'scanner']), | ||
Unique(['hash', 'scanner']), | ||
Unique(['parentHash', 'scanner']) | ||
], BlockEntity); | ||
export { BlockEntity }; | ||
export { PROCEED, PROCESSING }; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tFbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvZW50aXRpZXMvYmxvY2tFbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXhELE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQztBQUNoQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUE7QUFHekIsSUFBYSxXQUFXLEdBQXhCLE1BQWEsV0FBVztJQUlwQixNQUFNLENBQVE7SUFNZCxJQUFJLENBQVE7SUFNWixVQUFVLENBQVE7SUFHbEIsTUFBTSxDQUFRO0lBR2QsT0FBTyxDQUFRO0NBQ2xCLENBQUE7QUFuQkc7SUFIQyxhQUFhLENBQUM7UUFDWCxNQUFNLEVBQUUsSUFBSTtLQUNmLENBQUM7OzJDQUNZO0FBTWQ7SUFKQyxNQUFNLENBQUM7UUFDSixNQUFNLEVBQUUsRUFBRTtRQUNWLE1BQU0sRUFBRSxJQUFJO0tBQ2YsQ0FBQzs7eUNBQ1U7QUFNWjtJQUpDLE1BQU0sQ0FBQztRQUNKLE1BQU0sRUFBRSxFQUFFO1FBQ1YsTUFBTSxFQUFFLElBQUk7S0FDZixDQUFDOzsrQ0FDZ0I7QUFHbEI7SUFEQyxNQUFNLEVBQUU7OzJDQUNLO0FBR2Q7SUFEQyxNQUFNLEVBQUU7OzRDQUNNO0FBdEJOLFdBQVc7SUFEdkIsTUFBTSxFQUFFO0dBQ0ksV0FBVyxDQXVCdkI7U0F2QlksV0FBVztBQTBCeEIsT0FBTyxFQUNILE9BQU8sRUFDUCxVQUFVLEVBQ2IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbHVtbiwgRW50aXR5LCBQcmltYXJ5Q29sdW1uIH0gZnJvbSBcInR5cGVvcm1cIjtcblxuY29uc3QgUFJPQ0VTU0lORyA9IFwiUFJPQ0VTU0lOR1wiO1xuY29uc3QgUFJPQ0VFRCA9IFwiUFJPQ0VFRFwiXG5cbkBFbnRpdHkoKVxuZXhwb3J0IGNsYXNzIEJsb2NrRW50aXR5IHtcbiAgICBAUHJpbWFyeUNvbHVtbih7XG4gICAgICAgIHVuaXF1ZTogdHJ1ZSxcbiAgICB9KVxuICAgIGhlaWdodDogbnVtYmVyXG5cbiAgICBAQ29sdW1uKHtcbiAgICAgICAgbGVuZ3RoOiA2NCxcbiAgICAgICAgdW5pcXVlOiB0cnVlXG4gICAgfSlcbiAgICBoYXNoOiBzdHJpbmdcblxuICAgIEBDb2x1bW4oe1xuICAgICAgICBsZW5ndGg6IDY0LFxuICAgICAgICB1bmlxdWU6IHRydWVcbiAgICB9KVxuICAgIHBhcmVudEhhc2g6IHN0cmluZ1xuXG4gICAgQENvbHVtbigpXG4gICAgc3RhdHVzOiBzdHJpbmdcblxuICAgIEBDb2x1bW4oKVxuICAgIHNjYW5uZXI6IHN0cmluZ1xufVxuXG5cbmV4cG9ydCB7XG4gICAgUFJPQ0VFRCxcbiAgICBQUk9DRVNTSU5HXG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tFbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvZW50aXRpZXMvYmxvY2tFbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXpFLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQztBQUNoQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUE7QUFNekIsSUFBYSxXQUFXLEdBQXhCLE1BQWEsV0FBVztJQUVwQixFQUFFLENBQVE7SUFHVixNQUFNLENBQVE7SUFLZCxJQUFJLENBQVE7SUFLWixVQUFVLENBQVE7SUFHbEIsTUFBTSxDQUFRO0lBR2QsT0FBTyxDQUFRO0NBQ2xCLENBQUE7QUFwQkc7SUFEQyxzQkFBc0IsRUFBRTs7dUNBQ2Y7QUFHVjtJQURDLE1BQU0sRUFBRTs7MkNBQ0s7QUFLZDtJQUhDLE1BQU0sQ0FBQztRQUNKLE1BQU0sRUFBRSxFQUFFO0tBQ2IsQ0FBQzs7eUNBQ1U7QUFLWjtJQUhDLE1BQU0sQ0FBQztRQUNKLE1BQU0sRUFBRSxFQUFFO0tBQ2IsQ0FBQzs7K0NBQ2dCO0FBR2xCO0lBREMsTUFBTSxFQUFFOzsyQ0FDSztBQUdkO0lBREMsTUFBTSxFQUFFOzs0Q0FDTTtBQXJCTixXQUFXO0lBSnZCLE1BQU0sRUFBRTtJQUNSLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM3QixNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDM0IsTUFBTSxDQUFDLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQ3JCLFdBQVcsQ0FzQnZCO1NBdEJZLFdBQVc7QUF5QnhCLE9BQU8sRUFDSCxPQUFPLEVBQ1AsVUFBVSxFQUNiLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2x1bW4sIEVudGl0eSwgUHJpbWFyeUdlbmVyYXRlZENvbHVtbiwgVW5pcXVlIH0gZnJvbSBcInR5cGVvcm1cIjtcblxuY29uc3QgUFJPQ0VTU0lORyA9IFwiUFJPQ0VTU0lOR1wiO1xuY29uc3QgUFJPQ0VFRCA9IFwiUFJPQ0VFRFwiXG5cbkBFbnRpdHkoKVxuQFVuaXF1ZShbJ2hlaWdodCcsICdzY2FubmVyJ10pXG5AVW5pcXVlKFsnaGFzaCcsICdzY2FubmVyJ10pXG5AVW5pcXVlKFsncGFyZW50SGFzaCcsICdzY2FubmVyJ10pXG5leHBvcnQgY2xhc3MgQmxvY2tFbnRpdHkge1xuICAgIEBQcmltYXJ5R2VuZXJhdGVkQ29sdW1uKClcbiAgICBpZDogbnVtYmVyXG5cbiAgICBAQ29sdW1uKClcbiAgICBoZWlnaHQ6IG51bWJlclxuXG4gICAgQENvbHVtbih7XG4gICAgICAgIGxlbmd0aDogNjQsXG4gICAgfSlcbiAgICBoYXNoOiBzdHJpbmdcblxuICAgIEBDb2x1bW4oe1xuICAgICAgICBsZW5ndGg6IDY0LFxuICAgIH0pXG4gICAgcGFyZW50SGFzaDogc3RyaW5nXG5cbiAgICBAQ29sdW1uKClcbiAgICBzdGF0dXM6IHN0cmluZ1xuXG4gICAgQENvbHVtbigpXG4gICAgc2Nhbm5lcjogc3RyaW5nXG59XG5cblxuZXhwb3J0IHtcbiAgICBQUk9DRUVELFxuICAgIFBST0NFU1NJTkdcbn1cbiJdfQ== |
@@ -6,2 +6,3 @@ export { ErgoScanner } from './scanner/ergo/ergoScanner'; | ||
export { AbstractExtractor } from './interfaces'; | ||
export { AbstractScanner } from './scanner/abstract'; | ||
//# sourceMappingURL=index.d.ts.map |
@@ -6,2 +6,3 @@ export { ErgoScanner } from './scanner/ergo/ergoScanner'; | ||
export { AbstractExtractor } from './interfaces'; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQ3hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEVyZ29TY2FubmVyIH0gZnJvbSAnLi9zY2FubmVyL2VyZ28vZXJnb1NjYW5uZXInXG5leHBvcnQgeyBDYXJkYW5vS29pb3NTY2FubmVyIH0gZnJvbSAnLi9zY2FubmVyL2NhcmRhbm8vY2FyZGFubydcbmV4cG9ydCB7IG1pZ3JhdGlvbnMgfSBmcm9tICcuL21pZ3JhdGlvbnMnXG5leHBvcnQgeyBCbG9ja0VudGl0eSB9IGZyb20gJy4vZW50aXRpZXMvYmxvY2tFbnRpdHknXG5leHBvcnQgeyBBYnN0cmFjdEV4dHJhY3RvciB9IGZyb20gJy4vaW50ZXJmYWNlcydcbiJdfQ== | ||
export { AbstractScanner } from './scanner/abstract'; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQ3hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBFcmdvU2Nhbm5lciB9IGZyb20gJy4vc2Nhbm5lci9lcmdvL2VyZ29TY2FubmVyJ1xuZXhwb3J0IHsgQ2FyZGFub0tvaW9zU2Nhbm5lciB9IGZyb20gJy4vc2Nhbm5lci9jYXJkYW5vL2NhcmRhbm8nXG5leHBvcnQgeyBtaWdyYXRpb25zIH0gZnJvbSAnLi9taWdyYXRpb25zJ1xuZXhwb3J0IHsgQmxvY2tFbnRpdHkgfSBmcm9tICcuL2VudGl0aWVzL2Jsb2NrRW50aXR5J1xuZXhwb3J0IHsgQWJzdHJhY3RFeHRyYWN0b3IgfSBmcm9tICcuL2ludGVyZmFjZXMnXG5leHBvcnQgeyBBYnN0cmFjdFNjYW5uZXIgfSBmcm9tICcuL3NjYW5uZXIvYWJzdHJhY3QnXG4iXX0= |
export class networkModelMigration1656073919399 { | ||
name = 'networkModelMigration1656073919399'; | ||
async up(queryRunner) { | ||
await queryRunner.query(`CREATE TABLE "block_entity" | ||
( | ||
"height" integer PRIMARY KEY NOT NULL, | ||
"hash" varchar(64) NOT NULL, | ||
"parentHash" varchar(64) NOT NULL, | ||
"status" varchar NOT NULL, | ||
"scanner" varchar NOT NULL, | ||
CONSTRAINT "UQ_height" UNIQUE ("height"), | ||
CONSTRAINT "UQ_hash" UNIQUE ("hash"), | ||
CONSTRAINT "UQ_parentHash" UNIQUE ("parentHash") | ||
)`); | ||
await queryRunner.query(`CREATE TABLE "block_entity" ( | ||
"id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, | ||
"height" integer NOT NULL, | ||
"hash" varchar(64) NOT NULL, | ||
"parentHash" varchar(64) NOT NULL, | ||
"status" varchar NOT NULL, | ||
"scanner" varchar NOT NULL, | ||
CONSTRAINT "UQ_7e20625b11840edf7f120565c3d" UNIQUE ("parentHash", "scanner"), | ||
CONSTRAINT "UQ_b1e24c5950a7c3dd48d92bbfbb2" UNIQUE ("hash", "scanner"), | ||
CONSTRAINT "UQ_521d830047d5fe08988538289dd" UNIQUE ("height", "scanner"))`); | ||
} | ||
@@ -20,2 +19,2 @@ async down(queryRunner) { | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTY1NjA3MzkxOTM5OS1uZXR3b3JrTW9kZWxNaWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvbWlncmF0aW9ucy8xNjU2MDczOTE5Mzk5LW5ldHdvcmtNb2RlbE1pZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sa0NBQWtDO0lBQzNDLElBQUksR0FBRyxvQ0FBb0MsQ0FBQTtJQUVwQyxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQXdCO1FBQ3BDLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQzs7Ozs7Ozs7OztrQkFVZCxDQUNULENBQUM7SUFDTixDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBQyxXQUF3QjtRQUN0QyxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNaWdyYXRpb25JbnRlcmZhY2UsIFF1ZXJ5UnVubmVyIH0gZnJvbSBcInR5cGVvcm1cIjtcblxuZXhwb3J0IGNsYXNzIG5ldHdvcmtNb2RlbE1pZ3JhdGlvbjE2NTYwNzM5MTkzOTkgaW1wbGVtZW50cyBNaWdyYXRpb25JbnRlcmZhY2Uge1xuICAgIG5hbWUgPSAnbmV0d29ya01vZGVsTWlncmF0aW9uMTY1NjA3MzkxOTM5OSdcblxuICAgIHB1YmxpYyBhc3luYyB1cChxdWVyeVJ1bm5lcjogUXVlcnlSdW5uZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYENSRUFURSBUQUJMRSBcImJsb2NrX2VudGl0eVwiIFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXCJoZWlnaHRcIiBpbnRlZ2VyIFBSSU1BUlkgS0VZIE5PVCBOVUxMLCBcbiAgICAgICAgICAgICAgICAgICAgXCJoYXNoXCIgdmFyY2hhcig2NCkgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgICAgIFwicGFyZW50SGFzaFwiIHZhcmNoYXIoNjQpIE5PVCBOVUxMLCBcbiAgICAgICAgICAgICAgICAgICAgXCJzdGF0dXNcIiB2YXJjaGFyIE5PVCBOVUxMLCBcbiAgICAgICAgICAgICAgICAgICAgXCJzY2FubmVyXCIgdmFyY2hhciBOT1QgTlVMTCwgXG4gICAgICAgICAgICAgICAgICAgIENPTlNUUkFJTlQgXCJVUV9oZWlnaHRcIiBVTklRVUUgKFwiaGVpZ2h0XCIpLFxuICAgICAgICAgICAgICAgICAgICBDT05TVFJBSU5UIFwiVVFfaGFzaFwiIFVOSVFVRSAoXCJoYXNoXCIpLFxuICAgICAgICAgICAgICAgICAgICBDT05TVFJBSU5UIFwiVVFfcGFyZW50SGFzaFwiIFVOSVFVRSAoXCJwYXJlbnRIYXNoXCIpXG4gICAgICAgICAgICAgICAgKWBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZG93bihxdWVyeVJ1bm5lcjogUXVlcnlSdW5uZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYERST1AgVEFCTEUgXCJibG9ja19lbnRpdHlcImApO1xuICAgIH1cblxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTY1NjA3MzkxOTM5OS1uZXR3b3JrTW9kZWxNaWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvbWlncmF0aW9ucy8xNjU2MDczOTE5Mzk5LW5ldHdvcmtNb2RlbE1pZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sa0NBQWtDO0lBQzNDLElBQUksR0FBRyxvQ0FBb0MsQ0FBQTtJQUVwQyxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQXdCO1FBQ3BDLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQzs7Ozs7Ozs7O2tIQVNrRixDQUN6RyxDQUFDO0lBQ04sQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBd0I7UUFDdEMsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDekQsQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWlncmF0aW9uSW50ZXJmYWNlLCBRdWVyeVJ1bm5lciB9IGZyb20gXCJ0eXBlb3JtXCI7XG5cbmV4cG9ydCBjbGFzcyBuZXR3b3JrTW9kZWxNaWdyYXRpb24xNjU2MDczOTE5Mzk5IGltcGxlbWVudHMgTWlncmF0aW9uSW50ZXJmYWNlIHtcbiAgICBuYW1lID0gJ25ldHdvcmtNb2RlbE1pZ3JhdGlvbjE2NTYwNzM5MTkzOTknXG5cbiAgICBwdWJsaWMgYXN5bmMgdXAocXVlcnlSdW5uZXI6IFF1ZXJ5UnVubmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnF1ZXJ5KGBDUkVBVEUgVEFCTEUgXCJibG9ja19lbnRpdHlcIiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpZFwiIGludGVnZXIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCBOT1QgTlVMTCwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJoZWlnaHRcIiBpbnRlZ2VyIE5PVCBOVUxMLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImhhc2hcIiB2YXJjaGFyKDY0KSBOT1QgTlVMTCwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwYXJlbnRIYXNoXCIgdmFyY2hhcig2NCkgTk9UIE5VTEwsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwic3RhdHVzXCIgdmFyY2hhciBOT1QgTlVMTCwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJzY2FubmVyXCIgdmFyY2hhciBOT1QgTlVMTCwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RSQUlOVCBcIlVRXzdlMjA2MjViMTE4NDBlZGY3ZjEyMDU2NWMzZFwiIFVOSVFVRSAoXCJwYXJlbnRIYXNoXCIsIFwic2Nhbm5lclwiKSwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RSQUlOVCBcIlVRX2IxZTI0YzU5NTBhN2MzZGQ0OGQ5MmJiZmJiMlwiIFVOSVFVRSAoXCJoYXNoXCIsIFwic2Nhbm5lclwiKSwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RSQUlOVCBcIlVRXzUyMWQ4MzAwNDdkNWZlMDg5ODg1MzgyODlkZFwiIFVOSVFVRSAoXCJoZWlnaHRcIiwgXCJzY2FubmVyXCIpKWBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZG93bihxdWVyeVJ1bm5lcjogUXVlcnlSdW5uZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYERST1AgVEFCTEUgXCJibG9ja19lbnRpdHlcImApO1xuICAgIH1cblxufVxuIl19 |
import { MoreThanOrEqual } from "typeorm"; | ||
import { BlockEntity, PROCEED, PROCESSING } from "../entities/blockEntity"; | ||
import { PROCEED, PROCESSING } from "../entities/blockEntity"; | ||
export class AbstractScanner { | ||
@@ -68,12 +68,38 @@ /** | ||
saveBlock = async (block) => { | ||
const row = new BlockEntity(); | ||
row.height = block.blockHeight; | ||
row.hash = block.hash; | ||
row.parentHash = block.parentHash; | ||
row.status = PROCESSING; | ||
row.scanner = this.name(); | ||
return await this.blockRepository.save(row).catch((exp) => { | ||
try { | ||
const instance = await this.blockRepository.findOneBy({ | ||
height: block.blockHeight | ||
}); | ||
if (!instance) { | ||
const row = { | ||
height: block.blockHeight, | ||
hash: block.hash, | ||
parentHash: block.parentHash, | ||
status: PROCESSING, | ||
scanner: this.name() | ||
}; | ||
await this.blockRepository.insert(row); | ||
} | ||
else { | ||
await this.blockRepository.createQueryBuilder().update() | ||
.set({ | ||
hash: block.hash, | ||
parentHash: block.parentHash, | ||
status: PROCESSING, | ||
scanner: this.name() | ||
}).where({ | ||
height: block.blockHeight, | ||
scanner: this.name() | ||
}).execute(); | ||
} | ||
const res = await this.blockRepository.findOneBy({ | ||
height: block.blockHeight, | ||
scanner: this.name() | ||
}); | ||
return res ? res : false; | ||
} | ||
catch (exp) { | ||
console.error(`An error occurred during save new block: ${exp}`); | ||
return false; | ||
}); | ||
} | ||
}; | ||
@@ -121,6 +147,11 @@ /** | ||
const txs = await this.networkAccess.getBlockTxs(block.hash); | ||
const result = (await Promise.all(this.extractors.map((extractor) => { | ||
return extractor.processTransactions(txs, savedBlock); | ||
}))).reduce((prev, curr) => prev && curr, true); | ||
if (result && await this.updateBlockStatus(block.blockHeight)) { | ||
let success = true; | ||
for (const extractor of this.extractors) { | ||
const extractionResult = await extractor.processTransactions(txs, savedBlock); | ||
if (!extractionResult) { | ||
success = false; | ||
break; | ||
} | ||
} | ||
if (success && await this.updateBlockStatus(block.blockHeight)) { | ||
return savedBlock; | ||
@@ -216,2 +247,2 @@ } | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvc2Nhbm5lci9hYnN0cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLGVBQWUsRUFBYyxNQUFNLFNBQVMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUkzRSxNQUFNLE9BQWdCLGVBQWU7SUFVakM7OztPQUdHO0lBQ0gsaUJBQWlCLEdBQUcsS0FBSyxJQUFzQyxFQUFFO1FBQzdELE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7WUFDOUMsS0FBSyxFQUFFLEVBQUMsTUFBTSxFQUFFLE9BQU8sRUFBQztZQUN4QixLQUFLLEVBQUUsRUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFDO1lBQ3ZCLElBQUksRUFBRSxDQUFDO1NBQ1YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN4QixPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2QjthQUFNO1lBQ0gsT0FBTyxTQUFTLENBQUM7U0FDcEI7SUFDTCxDQUFDLENBQUE7SUFHRDs7Ozs7T0FLRztJQUNILGdCQUFnQixHQUFHLEtBQUssRUFBRSxNQUFjLEVBQUUsU0FBaUIsT0FBTyxFQUFvQyxFQUFFO1FBQ3BHLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7WUFDL0MsTUFBTSxFQUFFLE1BQU07WUFDZCxNQUFNLEVBQUUsTUFBTTtTQUNqQixDQUFDLENBQUM7UUFDSCxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDaEIsT0FBTyxLQUFLLENBQUM7U0FDaEI7YUFBTTtZQUNILE9BQU8sU0FBUyxDQUFDO1NBQ3BCO0lBQ0wsQ0FBQyxDQUFBO0lBR0Q7Ozs7T0FJRztJQUNILGtCQUFrQixHQUFHLEtBQUssRUFBRSxNQUFjLEVBQXlCLEVBQUU7UUFDakUsT0FBTyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDO1lBQ3JDLE1BQU0sRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDO1NBQ2xDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQTtJQUdEOzs7T0FHRztJQUNILFlBQVksR0FBRyxLQUFLLElBQXNCLEVBQUU7UUFDeEMsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN0RCxJQUFJLGNBQWMsS0FBSyxTQUFTLEVBQUU7WUFDOUIsTUFBTSx5QkFBeUIsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ25HLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25FO2FBQU07WUFDSCxPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNMLENBQUMsQ0FBQTtJQUdEOzs7T0FHRztJQUNILFNBQVMsR0FBRyxLQUFLLEVBQUUsS0FBWSxFQUFrQyxFQUFFO1FBQy9ELE1BQU0sR0FBRyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDOUIsR0FBRyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQy9CLEdBQUcsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN0QixHQUFHLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDbEMsR0FBRyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUM7UUFDeEIsR0FBRyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDekIsT0FBTyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3RELE9BQU8sQ0FBQyxLQUFLLENBQUMsNENBQTRDLEdBQUcsRUFBRSxDQUFDLENBQUE7WUFDaEUsT0FBTyxLQUFLLENBQUE7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUE7SUFHRDs7O09BR0c7SUFDSCxpQkFBaUIsR0FBRyxLQUFLLEVBQUUsV0FBbUIsRUFBb0IsRUFBRTtRQUNoRSxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDbkUsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3JCLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsS0FBSyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7UUFDdkIsT0FBTyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEYsQ0FBQyxDQUFBO0lBR0Q7OztPQUdHO0lBQ0gsaUJBQWlCLEdBQUcsQ0FBQyxTQUE2QyxFQUFRLEVBQUU7UUFDeEUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ25HLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ25DO0lBQ0wsQ0FBQyxDQUFBO0lBR0Q7OztPQUdHO0lBQ0gsZUFBZSxHQUFHLENBQUMsU0FBNkMsRUFBUSxFQUFFO1FBQ3RFLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDL0QsT0FBTyxhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ3RELENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUMsQ0FBQTtJQUdEOzs7T0FHRztJQUNILFlBQVksR0FBRyxLQUFLLEVBQUUsS0FBWSxFQUFFLEVBQUU7UUFDbEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9DLElBQUksT0FBTyxVQUFVLEtBQUssU0FBUyxFQUFFO1lBQ2pDLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0QsTUFBTSxNQUFNLEdBQUcsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ2pELENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDVixPQUFPLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFBSSxNQUFNLElBQUksTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQzNELE9BQU8sVUFBVSxDQUFDO1NBQ3JCO2FBQU07WUFDSCxPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNMLENBQUMsQ0FBQTtJQUdEOzs7T0FHRztJQUNILFdBQVcsR0FBRyxLQUFLLEVBQUUsY0FBMkIsRUFBRSxFQUFFO1FBQ2hELE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1FBQ2pFLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxhQUFhLEVBQUU7WUFDckMsT0FBTztTQUNWO1FBQ0QsS0FBSyxJQUFJLE1BQU0sR0FBRyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLElBQUksYUFBYSxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzVFLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoRSxJQUFJLGNBQWMsS0FBSyxTQUFTLEVBQUU7Z0JBQzlCLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxjQUFjLEVBQUUsSUFBSSxFQUFFO29CQUMzQyxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2xELElBQUksT0FBTyxVQUFVLEtBQUssU0FBUyxFQUFFO3dCQUNqQyxNQUFNO3FCQUNUO3lCQUFNO3dCQUNILGNBQWMsR0FBRyxVQUFVLENBQUM7cUJBQy9CO2lCQUNKO3FCQUFNO29CQUNILE1BQU07aUJBQ1Q7YUFDSjtTQUNKO0lBQ0wsQ0FBQyxDQUFBO0lBR0Q7Ozs7T0FJRztJQUNILFlBQVksR0FBRyxLQUFLLEVBQUUsY0FBMkIsRUFBRSxFQUFFO1FBQ2pELElBQUksU0FBUyxHQUFHLGNBQWMsQ0FBQztRQUMvQixJQUFJLGVBQWUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQ3ZDLElBQUksZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2xGLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxJQUFJLElBQUksZ0JBQWdCLENBQUMsVUFBVSxLQUFLLFNBQVMsQ0FBQyxVQUFVLEVBQUU7WUFDckcsSUFBSSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzdELElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDN0QsS0FBSyxNQUFNLFNBQVMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO29CQUNyQyxJQUFJO3dCQUNBLE1BQU0sU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7cUJBQzVDO29CQUFDLE9BQU8sQ0FBQyxFQUFFO3dCQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsbURBQW1ELFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFBO3FCQUM1RjtpQkFDSjtnQkFDRCxlQUFlLEVBQUUsQ0FBQztnQkFDbEIsS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUM1RDtZQUNELElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtnQkFDckIsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDbEIsZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUNyRjtpQkFBTTtnQkFDSCxNQUFNO2FBQ1Q7U0FDSjtRQUNELE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ25ELENBQUMsQ0FBQTtJQUdEOzs7T0FHRztJQUNILE1BQU0sR0FBRyxLQUFLLElBQUksRUFBRTtRQUNoQixJQUFJO1lBQ0EsTUFBTSxjQUFjLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7WUFDeEQsSUFBSSxjQUFjLEtBQUssU0FBUyxFQUFFO2dCQUM5QixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUM1RSxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9CLE9BQU87YUFDVjtZQUNELElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRTtnQkFDNUIsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFBO2FBQ3pDO2lCQUFNO2dCQUNILE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQTthQUMxQztTQUNKO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ2pCO0lBQ0wsQ0FBQyxDQUFBO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWxldGVSZXN1bHQsIE1vcmVUaGFuT3JFcXVhbCwgUmVwb3NpdG9yeSB9IGZyb20gXCJ0eXBlb3JtXCI7XG5pbXBvcnQgeyBCbG9ja0VudGl0eSwgUFJPQ0VFRCwgUFJPQ0VTU0lORyB9IGZyb20gXCIuLi9lbnRpdGllcy9ibG9ja0VudGl0eVwiO1xuaW1wb3J0IHsgQmxvY2ssIEFic3RyYWN0TmV0d29ya0Nvbm5lY3RvciwgQWJzdHJhY3RFeHRyYWN0b3IgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xuXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFNjYW5uZXI8VHJhbnNhY3Rpb25UeXBlPiB7XG4gICAgYWJzdHJhY3QgcmVhZG9ubHkgYmxvY2tSZXBvc2l0b3J5OiBSZXBvc2l0b3J5PEJsb2NrRW50aXR5PjtcbiAgICBhYnN0cmFjdCByZWFkb25seSBpbml0aWFsSGVpZ2h0OiBudW1iZXI7XG4gICAgYWJzdHJhY3QgZXh0cmFjdG9yczogQXJyYXk8QWJzdHJhY3RFeHRyYWN0b3I8VHJhbnNhY3Rpb25UeXBlPj47XG4gICAgYWJzdHJhY3QgbmV0d29ya0FjY2VzczogQWJzdHJhY3ROZXR3b3JrQ29ubmVjdG9yPFRyYW5zYWN0aW9uVHlwZT47XG5cblxuICAgIGFic3RyYWN0IG5hbWU6ICgpID0+IHN0cmluZztcblxuXG4gICAgLyoqXG4gICAgICogZ2V0IGxhc3Qgc2F2ZWQgYmxvY2tcbiAgICAgKiBAcmV0dXJuIFByb21pc2U8QmxvY2tFbnRpdHkgb3IgdW5kZWZpbmVkPlxuICAgICAqL1xuICAgIGdldExhc3RTYXZlZEJsb2NrID0gYXN5bmMgKCk6IFByb21pc2U8QmxvY2tFbnRpdHkgfCB1bmRlZmluZWQ+ID0+IHtcbiAgICAgICAgY29uc3QgbGFzdEJsb2NrID0gYXdhaXQgdGhpcy5ibG9ja1JlcG9zaXRvcnkuZmluZCh7XG4gICAgICAgICAgICB3aGVyZToge3N0YXR1czogUFJPQ0VFRH0sXG4gICAgICAgICAgICBvcmRlcjoge2hlaWdodDogJ0RFU0MnfSxcbiAgICAgICAgICAgIHRha2U6IDFcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChsYXN0QmxvY2subGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbGFzdEJsb2NrWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogZ2V0IGJsb2NrIGhhc2ggYW5kIGhlaWdodFxuICAgICAqIEBwYXJhbSBoZWlnaHRcbiAgICAgKiBAcGFyYW0gc3RhdHVzXG4gICAgICogQHJldHVybiBQcm9taXNlPEJsb2NrRW50aXR5fHVuZGVmaW5lZD5cbiAgICAgKi9cbiAgICBnZXRCbG9ja0F0SGVpZ2h0ID0gYXN5bmMgKGhlaWdodDogbnVtYmVyLCBzdGF0dXM6IHN0cmluZyA9IFBST0NFRUQpOiBQcm9taXNlPEJsb2NrRW50aXR5IHwgdW5kZWZpbmVkPiA9PiB7XG4gICAgICAgIGNvbnN0IGJsb2NrID0gYXdhaXQgdGhpcy5ibG9ja1JlcG9zaXRvcnkuZmluZE9uZUJ5KHtcbiAgICAgICAgICAgIHN0YXR1czogc3RhdHVzLFxuICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoYmxvY2sgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBibG9jaztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIGl0IGRlbGV0ZXMgZXZlcnkgYmxvY2sgdGhhdCBtb3JlIHRoYW4gb3IgZXF1YWwgaGVpZ2h0XG4gICAgICogQHBhcmFtIGhlaWdodFxuICAgICAqIEByZXR1cm4gUHJvbWlzZTxEZWxldGVSZXN1bHQ+XG4gICAgICovXG4gICAgcmVtb3ZlRm9ya2VkQmxvY2tzID0gYXN5bmMgKGhlaWdodDogbnVtYmVyKTogUHJvbWlzZTxEZWxldGVSZXN1bHQ+ID0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYmxvY2tSZXBvc2l0b3J5LmRlbGV0ZSh7XG4gICAgICAgICAgICBoZWlnaHQ6IE1vcmVUaGFuT3JFcXVhbChoZWlnaHQpXG4gICAgICAgIH0pO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgZm9yayBpcyBoYXBwZW4gaW4gdGhlIGJsb2NrY2hhaW4gb3Igbm90XG4gICAgICogQHJldHVybiBQcm9taXNlPEJvb2xlYW4+XG4gICAgICovXG4gICAgaXNGb3JrSGFwcGVuID0gYXN5bmMgKCk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgICAgICBjb25zdCBsYXN0U2F2ZWRCbG9jayA9IGF3YWl0IHRoaXMuZ2V0TGFzdFNhdmVkQmxvY2soKTtcbiAgICAgICAgaWYgKGxhc3RTYXZlZEJsb2NrICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RTYXZlZEJsb2NrRnJvbU5ldHdvcmsgPSBhd2FpdCB0aGlzLm5ldHdvcmtBY2Nlc3MuZ2V0QmxvY2tBdEhlaWdodChsYXN0U2F2ZWRCbG9jay5oZWlnaHQpO1xuICAgICAgICAgICAgcmV0dXJuIChsYXN0U2F2ZWRCbG9ja0Zyb21OZXR3b3JrLmhhc2ggIT09IGxhc3RTYXZlZEJsb2NrLmhhc2gpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBzdG9yZSBhIGJsb2NrIGludG8gZGF0YWJhc2UuXG4gICAgICogQHBhcmFtIGJsb2NrXG4gICAgICovXG4gICAgc2F2ZUJsb2NrID0gYXN5bmMgKGJsb2NrOiBCbG9jayk6IFByb21pc2U8QmxvY2tFbnRpdHkgfCBib29sZWFuPiA9PiB7XG4gICAgICAgIGNvbnN0IHJvdyA9IG5ldyBCbG9ja0VudGl0eSgpO1xuICAgICAgICByb3cuaGVpZ2h0ID0gYmxvY2suYmxvY2tIZWlnaHQ7XG4gICAgICAgIHJvdy5oYXNoID0gYmxvY2suaGFzaDtcbiAgICAgICAgcm93LnBhcmVudEhhc2ggPSBibG9jay5wYXJlbnRIYXNoO1xuICAgICAgICByb3cuc3RhdHVzID0gUFJPQ0VTU0lORztcbiAgICAgICAgcm93LnNjYW5uZXIgPSB0aGlzLm5hbWUoKVxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5ibG9ja1JlcG9zaXRvcnkuc2F2ZShyb3cpLmNhdGNoKChleHApID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBzYXZlIG5ldyBibG9jazogJHtleHB9YClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9KTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBzdGF0dXMgb2YgYSBibG9jayB0byBwcm9jZWVkXG4gICAgICogQHBhcmFtIGJsb2NrSGVpZ2h0OiBoZWlnaHQgb2YgZXhwZWN0ZWQgYmxvY2tcbiAgICAgKi9cbiAgICB1cGRhdGVCbG9ja1N0YXR1cyA9IGFzeW5jIChibG9ja0hlaWdodDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgICAgIGNvbnN0IGJsb2NrID0gYXdhaXQgdGhpcy5nZXRCbG9ja0F0SGVpZ2h0KGJsb2NrSGVpZ2h0LCBQUk9DRVNTSU5HKTtcbiAgICAgICAgaWYgKGJsb2NrID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBibG9jay5zdGF0dXMgPSBQUk9DRUVEO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5ibG9ja1JlcG9zaXRvcnkuc2F2ZShibG9jaykudGhlbigoKSA9PiB0cnVlKS5jYXRjaCgoKSA9PiBmYWxzZSk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiByZWdpc3RlciBhIG5yZSBleHRyYWN0b3IgdG8gc2Nhbm5lci5cbiAgICAgKiBAcGFyYW0gZXh0cmFjdG9yXG4gICAgICovXG4gICAgcmVnaXN0ZXJFeHRyYWN0b3IgPSAoZXh0cmFjdG9yOiBBYnN0cmFjdEV4dHJhY3RvcjxUcmFuc2FjdGlvblR5cGU+KTogdm9pZCA9PiB7XG4gICAgICAgIGlmICh0aGlzLmV4dHJhY3RvcnMuZmlsdGVyKGV4dHJhY3Rvckl0ZW0gPT4gZXh0cmFjdG9ySXRlbS5nZXRJZCgpID09PSBleHRyYWN0b3IuZ2V0SWQoKSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmV4dHJhY3RvcnMucHVzaChleHRyYWN0b3IpO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiByZW1vdmUgYW4gZXh0cmFjdG9yIGZyb20gc2Nhbm5lclxuICAgICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICAgKi9cbiAgICByZW1vdmVFeHRyYWN0b3IgPSAoZXh0cmFjdG9yOiBBYnN0cmFjdEV4dHJhY3RvcjxUcmFuc2FjdGlvblR5cGU+KTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IGV4dHJhY3RvckluZGV4ID0gdGhpcy5leHRyYWN0b3JzLmZpbmRJbmRleCgoZXh0cmFjdG9ySXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGV4dHJhY3Rvckl0ZW0uZ2V0SWQoKSA9PT0gZXh0cmFjdG9yLmdldElkKClcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZXh0cmFjdG9ycy5zcGxpY2UoZXh0cmFjdG9ySW5kZXgsIDEpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogcHJvY2VzcyBhIGJsb2NrIGFuZCBleGVjdXRlIGFsbCBleHRyYWN0b3Igb24gaXQuXG4gICAgICogQHBhcmFtIGJsb2NrXG4gICAgICovXG4gICAgcHJvY2Vzc0Jsb2NrID0gYXN5bmMgKGJsb2NrOiBCbG9jaykgPT4ge1xuICAgICAgICBjb25zdCBzYXZlZEJsb2NrID0gYXdhaXQgdGhpcy5zYXZlQmxvY2soYmxvY2spO1xuICAgICAgICBpZiAodHlwZW9mIHNhdmVkQmxvY2sgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdHhzID0gYXdhaXQgdGhpcy5uZXR3b3JrQWNjZXNzLmdldEJsb2NrVHhzKGJsb2NrLmhhc2gpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSAoYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5leHRyYWN0b3JzLm1hcChcbiAgICAgICAgICAgIChleHRyYWN0b3IpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXh0cmFjdG9yLnByb2Nlc3NUcmFuc2FjdGlvbnModHhzLCBzYXZlZEJsb2NrKTtcbiAgICAgICAgICAgIH0pKSkucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBwcmV2ICYmIGN1cnIsIHRydWUpO1xuICAgICAgICBpZiAocmVzdWx0ICYmIGF3YWl0IHRoaXMudXBkYXRlQmxvY2tTdGF0dXMoYmxvY2suYmxvY2tIZWlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gc2F2ZWRCbG9jaztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogcHJvY2VzcyBmb3J3YXJkIGluIHNjYW5uZXIuIGdldCBibG9ja3MgYW5kIHN0b3JlIGluZm9ybWF0aW9uIGZyb20gdHJhbnNhY3Rpb25zLlxuICAgICAqIEBwYXJhbSBsYXN0U2F2ZWRCbG9jazogbGFzdCBzYXZlZCBibG9jayBlbnRpdHkgaW4gZGF0YWJhc2VcbiAgICAgKi9cbiAgICBzdGVwRm9yd2FyZCA9IGFzeW5jIChsYXN0U2F2ZWRCbG9jazogQmxvY2tFbnRpdHkpID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudEhlaWdodCA9IGF3YWl0IHRoaXMubmV0d29ya0FjY2Vzcy5nZXRDdXJyZW50SGVpZ2h0KClcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbEhlaWdodCA+PSBjdXJyZW50SGVpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaGVpZ2h0ID0gbGFzdFNhdmVkQmxvY2suaGVpZ2h0ICsgMTsgaGVpZ2h0IDw9IGN1cnJlbnRIZWlnaHQ7IGhlaWdodCsrKSB7XG4gICAgICAgICAgICBjb25zdCBibG9jayA9IGF3YWl0IHRoaXMubmV0d29ya0FjY2Vzcy5nZXRCbG9ja0F0SGVpZ2h0KGhlaWdodCk7XG4gICAgICAgICAgICBpZiAobGFzdFNhdmVkQmxvY2sgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmIChibG9jay5wYXJlbnRIYXNoID09PSBsYXN0U2F2ZWRCbG9jaz8uaGFzaCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzYXZlZEJsb2NrID0gYXdhaXQgdGhpcy5wcm9jZXNzQmxvY2soYmxvY2spO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNhdmVkQmxvY2sgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RTYXZlZEJsb2NrID0gc2F2ZWRCbG9jaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogU3RlcCBiYWNrd2FyZCBpbiBibG9ja2NoYWluIGFuZCBmaW5kIGZvcmtwb2ludC5cbiAgICAgKiB0aGVuIHJlbW92ZSBhbGwgZm9ya2VkIGJsb2NrcyBmcm9tIGRhdGFiYXNlXG4gICAgICogQHBhcmFtIGxhc3RTYXZlZEJsb2NrXG4gICAgICovXG4gICAgc3RlcEJhY2t3YXJkID0gYXN5bmMgKGxhc3RTYXZlZEJsb2NrOiBCbG9ja0VudGl0eSkgPT4ge1xuICAgICAgICBsZXQgZm9ya1BvaW50ID0gbGFzdFNhdmVkQmxvY2s7XG4gICAgICAgIGxldCBmb3JrUG9pbnRIZWlnaHQgPSBmb3JrUG9pbnQuaGVpZ2h0O1xuICAgICAgICBsZXQgYmxvY2tGcm9tTmV0d29yayA9IGF3YWl0IHRoaXMubmV0d29ya0FjY2Vzcy5nZXRCbG9ja0F0SGVpZ2h0KGZvcmtQb2ludEhlaWdodCk7XG4gICAgICAgIHdoaWxlIChibG9ja0Zyb21OZXR3b3JrLmhhc2ggIT09IGZvcmtQb2ludC5oYXNoICYmIGJsb2NrRnJvbU5ldHdvcmsucGFyZW50SGFzaCAhPT0gZm9ya1BvaW50LnBhcmVudEhhc2gpIHtcbiAgICAgICAgICAgIGxldCBibG9jayA9IGF3YWl0IHRoaXMuZ2V0QmxvY2tBdEhlaWdodChmb3JrUG9pbnRIZWlnaHQgLSAxKTtcbiAgICAgICAgICAgIGlmIChibG9jayAhPT0gdW5kZWZpbmVkICYmIGZvcmtQb2ludEhlaWdodCA+IHRoaXMuaW5pdGlhbEhlaWdodCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZXh0cmFjdG9yIG9mIHRoaXMuZXh0cmFjdG9ycykge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgZXh0cmFjdG9yLmZvcmtCbG9jayhmb3JrUG9pbnQuaGFzaClcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYEFuIGVycm9yIG9jY3VyZWQgZHVyaW5nIGZvcmsgYmxvY2sgaW4gZXh0cmFjdG9yICR7ZXh0cmFjdG9yLmdldElkKCl9OiAke2V9YClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3JrUG9pbnRIZWlnaHQtLTtcbiAgICAgICAgICAgICAgICBibG9jayA9IGF3YWl0IHRoaXMuZ2V0QmxvY2tBdEhlaWdodChmb3JrUG9pbnRIZWlnaHQgLSAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChibG9jayAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZm9ya1BvaW50ID0gYmxvY2s7XG4gICAgICAgICAgICAgICAgYmxvY2tGcm9tTmV0d29yayA9IGF3YWl0IHRoaXMubmV0d29ya0FjY2Vzcy5nZXRCbG9ja0F0SGVpZ2h0KGZvcmtQb2ludEhlaWdodCAtIDEpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLnJlbW92ZUZvcmtlZEJsb2Nrcyhmb3JrUG9pbnRIZWlnaHQpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogd29ya2VyIGZ1bmN0aW9uIHRoYXQgcnVucyBmb3Igc3luY2luZyB0aGUgZGF0YWJhc2Ugd2l0aCB0aGUgQ2FyZGFubyBibG9ja2NoYWluIGFuZCBjaGVja3MgaWYgd2UgaGF2ZSBhbnkgZm9ya1xuICAgICAqIHNjZW5hcmlvIGluIHRoZSBibG9ja2NoYWluIGFuZCBpbnZhbGlkYXRlIHRoZSBkYXRhYmFzZSB0aWxsIHRoZSBkYXRhYmFzZSBzeW5jZWQgYWdhaW4uXG4gICAgICovXG4gICAgdXBkYXRlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgbGFzdFNhdmVkQmxvY2sgPSAoYXdhaXQgdGhpcy5nZXRMYXN0U2F2ZWRCbG9jaygpKTtcbiAgICAgICAgICAgIGlmIChsYXN0U2F2ZWRCbG9jayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmxvY2sgPSBhd2FpdCB0aGlzLm5ldHdvcmtBY2Nlc3MuZ2V0QmxvY2tBdEhlaWdodCh0aGlzLmluaXRpYWxIZWlnaHQpO1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvY2Vzc0Jsb2NrKGJsb2NrKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWF3YWl0IHRoaXMuaXNGb3JrSGFwcGVuKCkpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnN0ZXBGb3J3YXJkKGxhc3RTYXZlZEJsb2NrKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnN0ZXBCYWNrd2FyZChsYXN0U2F2ZWRCbG9jaylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coZSlcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvc2Nhbm5lci9hYnN0cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLGVBQWUsRUFBYyxNQUFNLFNBQVMsQ0FBQztBQUNwRSxPQUFPLEVBQWUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSTNFLE1BQU0sT0FBZ0IsZUFBZTtJQVVqQzs7O09BR0c7SUFDSCxpQkFBaUIsR0FBRyxLQUFLLElBQXNDLEVBQUU7UUFDN0QsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQztZQUM5QyxLQUFLLEVBQUUsRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFDO1lBQ3hCLEtBQUssRUFBRSxFQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUM7WUFDdkIsSUFBSSxFQUFFLENBQUM7U0FDVixDQUFDLENBQUM7UUFDSCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZCO2FBQU07WUFDSCxPQUFPLFNBQVMsQ0FBQztTQUNwQjtJQUNMLENBQUMsQ0FBQTtJQUdEOzs7OztPQUtHO0lBQ0gsZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLE1BQWMsRUFBRSxTQUFpQixPQUFPLEVBQW9DLEVBQUU7UUFDcEcsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQztZQUMvQyxNQUFNLEVBQUUsTUFBTTtZQUNkLE1BQU0sRUFBRSxNQUFNO1NBQ2pCLENBQUMsQ0FBQztRQUNILElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtZQUNoQixPQUFPLEtBQUssQ0FBQztTQUNoQjthQUFNO1lBQ0gsT0FBTyxTQUFTLENBQUM7U0FDcEI7SUFDTCxDQUFDLENBQUE7SUFHRDs7OztPQUlHO0lBQ0gsa0JBQWtCLEdBQUcs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SUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO2dCQUNyQixTQUFTLEdBQUcsS0FBSyxDQUFDO2dCQUNsQixnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3JGO2lCQUFNO2dCQUNILE1BQU07YUFDVDtTQUNKO1FBQ0QsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbkQsQ0FBQyxDQUFBO0lBR0Q7OztPQUdHO0lBQ0gsTUFBTSxHQUFHLEtBQUssSUFBSSxFQUFFO1FBQ2hCLElBQUk7WUFDQSxNQUFNLGNBQWMsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztZQUN4RCxJQUFJLGNBQWMsS0FBSyxTQUFTLEVBQUU7Z0JBQzlCLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzVFLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDL0IsT0FBTzthQUNWO1lBQ0QsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFO2dCQUM1QixNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUE7YUFDekM7aUJBQU07Z0JBQ0gsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFBO2FBQzFDO1NBQ0o7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDakI7SUFDTCxDQUFDLENBQUE7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlbGV0ZVJlc3VsdCwgTW9yZVRoYW5PckVxdWFsLCBSZXBvc2l0b3J5IH0gZnJvbSBcInR5cGVvcm1cIjtcbmltcG9ydCB7IEJsb2NrRW50aXR5LCBQUk9DRUVELCBQUk9DRVNTSU5HIH0gZnJvbSBcIi4uL2VudGl0aWVzL2Jsb2NrRW50aXR5XCI7XG5pbXBvcnQgeyBCbG9jaywgQWJzdHJhY3ROZXR3b3JrQ29ubmVjdG9yLCBBYnN0cmFjdEV4dHJhY3RvciB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XG5cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0U2Nhbm5lcjxUcmFuc2FjdGlvblR5cGU+IHtcbiAgICBhYnN0cmFjdCByZWFkb25seSBibG9ja1JlcG9zaXRvcnk6IFJlcG9zaXRvcnk8QmxvY2tFbnRpdHk+O1xuICAgIGFic3RyYWN0IHJlYWRvbmx5IGluaXRpYWxIZWlnaHQ6IG51bWJlcjtcbiAgICBhYnN0cmFjdCBleHRyYWN0b3JzOiBBcnJheTxBYnN0cmFjdEV4dHJhY3RvcjxUcmFuc2FjdGlvblR5cGU+PjtcbiAgICBhYnN0cmFjdCBuZXR3b3JrQWNjZXNzOiBBYnN0cmFjdE5ldHdvcmtDb25uZWN0b3I8VHJhbnNhY3Rpb25UeXBlPjtcblxuXG4gICAgYWJzdHJhY3QgbmFtZTogKCkgPT4gc3RyaW5nO1xuXG5cbiAgICAvKipcbiAgICAgKiBnZXQgbGFzdCBzYXZlZCBibG9ja1xuICAgICAqIEByZXR1cm4gUHJvbWlzZTxCbG9ja0VudGl0eSBvciB1bmRlZmluZWQ+XG4gICAgICovXG4gICAgZ2V0TGFzdFNhdmVkQmxvY2sgPSBhc3luYyAoKTogUHJvbWlzZTxCbG9ja0VudGl0eSB8IHVuZGVmaW5lZD4gPT4ge1xuICAgICAgICBjb25zdCBsYXN0QmxvY2sgPSBhd2FpdCB0aGlzLmJsb2NrUmVwb3NpdG9yeS5maW5kKHtcbiAgICAgICAgICAgIHdoZXJlOiB7c3RhdHVzOiBQUk9DRUVEfSxcbiAgICAgICAgICAgIG9yZGVyOiB7aGVpZ2h0OiAnREVTQyd9LFxuICAgICAgICAgICAgdGFrZTogMVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGxhc3RCbG9jay5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBsYXN0QmxvY2tbMF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBnZXQgYmxvY2sgaGFzaCBhbmQgaGVpZ2h0XG4gICAgICogQHBhcmFtIGhlaWdodFxuICAgICAqIEBwYXJhbSBzdGF0dXNcbiAgICAgKiBAcmV0dXJuIFByb21pc2U8QmxvY2tFbnRpdHl8dW5kZWZpbmVkPlxuICAgICAqL1xuICAgIGdldEJsb2NrQXRIZWlnaHQgPSBhc3luYyAoaGVpZ2h0OiBudW1iZXIsIHN0YXR1czogc3RyaW5nID0gUFJPQ0VFRCk6IFByb21pc2U8QmxvY2tFbnRpdHkgfCB1bmRlZmluZWQ+ID0+IHtcbiAgICAgICAgY29uc3QgYmxvY2sgPSBhd2FpdCB0aGlzLmJsb2NrUmVwb3NpdG9yeS5maW5kT25lQnkoe1xuICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMsXG4gICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChibG9jayAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGJsb2NrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogaXQgZGVsZXRlcyBldmVyeSBibG9jayB0aGF0IG1vcmUgdGhhbiBvciBlcXVhbCBoZWlnaHRcbiAgICAgKiBAcGFyYW0gaGVpZ2h0XG4gICAgICogQHJldHVybiBQcm9taXNlPERlbGV0ZVJlc3VsdD5cbiAgICAgKi9cbiAgICByZW1vdmVGb3JrZWRCbG9ja3MgPSBhc3luYyAoaGVpZ2h0OiBudW1iZXIpOiBQcm9taXNlPERlbGV0ZVJlc3VsdD4gPT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5ibG9ja1JlcG9zaXRvcnkuZGVsZXRlKHtcbiAgICAgICAgICAgIGhlaWdodDogTW9yZVRoYW5PckVxdWFsKGhlaWdodClcbiAgICAgICAgfSk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiBmb3JrIGlzIGhhcHBlbiBpbiB0aGUgYmxvY2tjaGFpbiBvciBub3RcbiAgICAgKiBAcmV0dXJuIFByb21pc2U8Qm9vbGVhbj5cbiAgICAgKi9cbiAgICBpc0ZvcmtIYXBwZW4gPSBhc3luYyAoKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgICAgIGNvbnN0IGxhc3RTYXZlZEJsb2NrID0gYXdhaXQgdGhpcy5nZXRMYXN0U2F2ZWRCbG9jaygpO1xuICAgICAgICBpZiAobGFzdFNhdmVkQmxvY2sgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc3QgbGFzdFNhdmVkQmxvY2tGcm9tTmV0d29yayA9IGF3YWl0IHRoaXMubmV0d29ya0FjY2Vzcy5nZXRCbG9ja0F0SGVpZ2h0KGxhc3RTYXZlZEJsb2NrLmhlaWdodCk7XG4gICAgICAgICAgICByZXR1cm4gKGxhc3RTYXZlZEJsb2NrRnJvbU5ldHdvcmsuaGFzaCAhPT0gbGFzdFNhdmVkQmxvY2suaGFzaCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIHN0b3JlIGEgYmxvY2sgaW50byBkYXRhYmFzZS5cbiAgICAgKiBAcGFyYW0gYmxvY2tcbiAgICAgKi9cbiAgICBzYXZlQmxvY2sgPSBhc3luYyAoYmxvY2s6IEJsb2NrKTogUHJvbWlzZTxCbG9ja0VudGl0eSB8IGJvb2xlYW4+ID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gYXdhaXQgdGhpcy5ibG9ja1JlcG9zaXRvcnkuZmluZE9uZUJ5KHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGJsb2NrLmJsb2NrSGVpZ2h0XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgaWYgKCFpbnN0YW5jZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBibG9jay5ibG9ja0hlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgaGFzaDogYmxvY2suaGFzaCxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50SGFzaDogYmxvY2sucGFyZW50SGFzaCxcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBQUk9DRVNTSU5HLFxuICAgICAgICAgICAgICAgICAgICBzY2FubmVyOiB0aGlzLm5hbWUoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmJsb2NrUmVwb3NpdG9yeS5pbnNlcnQocm93KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmJsb2NrUmVwb3NpdG9yeS5jcmVhdGVRdWVyeUJ1aWxkZXIoKS51cGRhdGUoKVxuICAgICAgICAgICAgICAgICAgICAuc2V0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc2g6IGJsb2NrLmhhc2gsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRIYXNoOiBibG9jay5wYXJlbnRIYXNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBQUk9DRVNTSU5HLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2Nhbm5lcjogdGhpcy5uYW1lKClcbiAgICAgICAgICAgICAgICAgICAgfSkud2hlcmUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBibG9jay5ibG9ja0hlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYW5uZXI6IHRoaXMubmFtZSgpXG4gICAgICAgICAgICAgICAgICAgIH0pLmV4ZWN1dGUoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5ibG9ja1JlcG9zaXRvcnkuZmluZE9uZUJ5KHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGJsb2NrLmJsb2NrSGVpZ2h0LFxuICAgICAgICAgICAgICAgIHNjYW5uZXI6IHRoaXMubmFtZSgpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgcmV0dXJuIHJlcyA/IHJlcyA6IGZhbHNlO1xuICAgICAgICB9IGNhdGNoIChleHApIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBzYXZlIG5ldyBibG9jazogJHtleHB9YClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgc3RhdHVzIG9mIGEgYmxvY2sgdG8gcHJvY2VlZFxuICAgICAqIEBwYXJhbSBibG9ja0hlaWdodDogaGVpZ2h0IG9mIGV4cGVjdGVkIGJsb2NrXG4gICAgICovXG4gICAgdXBkYXRlQmxvY2tTdGF0dXMgPSBhc3luYyAoYmxvY2tIZWlnaHQ6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgICAgICBjb25zdCBibG9jayA9IGF3YWl0IHRoaXMuZ2V0QmxvY2tBdEhlaWdodChibG9ja0hlaWdodCwgUFJPQ0VTU0lORyk7XG4gICAgICAgIGlmIChibG9jayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgYmxvY2suc3RhdHVzID0gUFJPQ0VFRDtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYmxvY2tSZXBvc2l0b3J5LnNhdmUoYmxvY2spLnRoZW4oKCkgPT4gdHJ1ZSkuY2F0Y2goKCkgPT4gZmFsc2UpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogcmVnaXN0ZXIgYSBucmUgZXh0cmFjdG9yIHRvIHNjYW5uZXIuXG4gICAgICogQHBhcmFtIGV4dHJhY3RvclxuICAgICAqL1xuICAgIHJlZ2lzdGVyRXh0cmFjdG9yID0gKGV4dHJhY3RvcjogQWJzdHJhY3RFeHRyYWN0b3I8VHJhbnNhY3Rpb25UeXBlPik6IHZvaWQgPT4ge1xuICAgICAgICBpZiAodGhpcy5leHRyYWN0b3JzLmZpbHRlcihleHRyYWN0b3JJdGVtID0+IGV4dHJhY3Rvckl0ZW0uZ2V0SWQoKSA9PT0gZXh0cmFjdG9yLmdldElkKCkpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5leHRyYWN0b3JzLnB1c2goZXh0cmFjdG9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogcmVtb3ZlIGFuIGV4dHJhY3RvciBmcm9tIHNjYW5uZXJcbiAgICAgKiBAcGFyYW0gZXh0cmFjdG9yXG4gICAgICovXG4gICAgcmVtb3ZlRXh0cmFjdG9yID0gKGV4dHJhY3RvcjogQWJzdHJhY3RFeHRyYWN0b3I8VHJhbnNhY3Rpb25UeXBlPik6IHZvaWQgPT4ge1xuICAgICAgICBjb25zdCBleHRyYWN0b3JJbmRleCA9IHRoaXMuZXh0cmFjdG9ycy5maW5kSW5kZXgoKGV4dHJhY3Rvckl0ZW0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBleHRyYWN0b3JJdGVtLmdldElkKCkgPT09IGV4dHJhY3Rvci5nZXRJZCgpXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmV4dHJhY3RvcnMuc3BsaWNlKGV4dHJhY3RvckluZGV4LCAxKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIHByb2Nlc3MgYSBibG9jayBhbmQgZXhlY3V0ZSBhbGwgZXh0cmFjdG9yIG9uIGl0LlxuICAgICAqIEBwYXJhbSBibG9ja1xuICAgICAqL1xuICAgIHByb2Nlc3NCbG9jayA9IGFzeW5jIChibG9jazogQmxvY2spID0+IHtcbiAgICAgICAgY29uc3Qgc2F2ZWRCbG9jayA9IGF3YWl0IHRoaXMuc2F2ZUJsb2NrKGJsb2NrKTtcbiAgICAgICAgaWYgKHR5cGVvZiBzYXZlZEJsb2NrID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHR4cyA9IGF3YWl0IHRoaXMubmV0d29ya0FjY2Vzcy5nZXRCbG9ja1R4cyhibG9jay5oYXNoKTtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSB0cnVlXG4gICAgICAgIGZvcihjb25zdCBleHRyYWN0b3Igb2YgdGhpcy5leHRyYWN0b3JzKXtcbiAgICAgICAgICAgIGNvbnN0IGV4dHJhY3Rpb25SZXN1bHQgPSBhd2FpdCBleHRyYWN0b3IucHJvY2Vzc1RyYW5zYWN0aW9ucyh0eHMsIHNhdmVkQmxvY2spO1xuICAgICAgICAgICAgaWYoIWV4dHJhY3Rpb25SZXN1bHQpe1xuICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc3VjY2VzcyAmJiBhd2FpdCB0aGlzLnVwZGF0ZUJsb2NrU3RhdHVzKGJsb2NrLmJsb2NrSGVpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHNhdmVkQmxvY2s7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIHByb2Nlc3MgZm9yd2FyZCBpbiBzY2FubmVyLiBnZXQgYmxvY2tzIGFuZCBzdG9yZSBpbmZvcm1hdGlvbiBmcm9tIHRyYW5zYWN0aW9ucy5cbiAgICAgKiBAcGFyYW0gbGFzdFNhdmVkQmxvY2s6IGxhc3Qgc2F2ZWQgYmxvY2sgZW50aXR5IGluIGRhdGFiYXNlXG4gICAgICovXG4gICAgc3RlcEZvcndhcmQgPSBhc3luYyAobGFzdFNhdmVkQmxvY2s6IEJsb2NrRW50aXR5KSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRIZWlnaHQgPSBhd2FpdCB0aGlzLm5ldHdvcmtBY2Nlc3MuZ2V0Q3VycmVudEhlaWdodCgpXG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxIZWlnaHQgPj0gY3VycmVudEhlaWdodCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGhlaWdodCA9IGxhc3RTYXZlZEJsb2NrLmhlaWdodCArIDE7IGhlaWdodCA8PSBjdXJyZW50SGVpZ2h0OyBoZWlnaHQrKykge1xuICAgICAgICAgICAgY29uc3QgYmxvY2sgPSBhd2FpdCB0aGlzLm5ldHdvcmtBY2Nlc3MuZ2V0QmxvY2tBdEhlaWdodChoZWlnaHQpO1xuICAgICAgICAgICAgaWYgKGxhc3RTYXZlZEJsb2NrICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoYmxvY2sucGFyZW50SGFzaCA9PT0gbGFzdFNhdmVkQmxvY2s/Lmhhc2gpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2F2ZWRCbG9jayA9IGF3YWl0IHRoaXMucHJvY2Vzc0Jsb2NrKGJsb2NrKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzYXZlZEJsb2NrID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0U2F2ZWRCbG9jayA9IHNhdmVkQmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFN0ZXAgYmFja3dhcmQgaW4gYmxvY2tjaGFpbiBhbmQgZmluZCBmb3JrcG9pbnQuXG4gICAgICogdGhlbiByZW1vdmUgYWxsIGZvcmtlZCBibG9ja3MgZnJvbSBkYXRhYmFzZVxuICAgICAqIEBwYXJhbSBsYXN0U2F2ZWRCbG9ja1xuICAgICAqL1xuICAgIHN0ZXBCYWNrd2FyZCA9IGFzeW5jIChsYXN0U2F2ZWRCbG9jazogQmxvY2tFbnRpdHkpID0+IHtcbiAgICAgICAgbGV0IGZvcmtQb2ludCA9IGxhc3RTYXZlZEJsb2NrO1xuICAgICAgICBsZXQgZm9ya1BvaW50SGVpZ2h0ID0gZm9ya1BvaW50LmhlaWdodDtcbiAgICAgICAgbGV0IGJsb2NrRnJvbU5ldHdvcmsgPSBhd2FpdCB0aGlzLm5ldHdvcmtBY2Nlc3MuZ2V0QmxvY2tBdEhlaWdodChmb3JrUG9pbnRIZWlnaHQpO1xuICAgICAgICB3aGlsZSAoYmxvY2tGcm9tTmV0d29yay5oYXNoICE9PSBmb3JrUG9pbnQuaGFzaCAmJiBibG9ja0Zyb21OZXR3b3JrLnBhcmVudEhhc2ggIT09IGZvcmtQb2ludC5wYXJlbnRIYXNoKSB7XG4gICAgICAgICAgICBsZXQgYmxvY2sgPSBhd2FpdCB0aGlzLmdldEJsb2NrQXRIZWlnaHQoZm9ya1BvaW50SGVpZ2h0IC0gMSk7XG4gICAgICAgICAgICBpZiAoYmxvY2sgIT09IHVuZGVmaW5lZCAmJiBmb3JrUG9pbnRIZWlnaHQgPiB0aGlzLmluaXRpYWxIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGV4dHJhY3RvciBvZiB0aGlzLmV4dHJhY3RvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGV4dHJhY3Rvci5mb3JrQmxvY2soZm9ya1BvaW50Lmhhc2gpXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBBbiBlcnJvciBvY2N1cmVkIGR1cmluZyBmb3JrIGJsb2NrIGluIGV4dHJhY3RvciAke2V4dHJhY3Rvci5nZXRJZCgpfTogJHtlfWApXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9ya1BvaW50SGVpZ2h0LS07XG4gICAgICAgICAgICAgICAgYmxvY2sgPSBhd2FpdCB0aGlzLmdldEJsb2NrQXRIZWlnaHQoZm9ya1BvaW50SGVpZ2h0IC0gMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYmxvY2sgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGZvcmtQb2ludCA9IGJsb2NrO1xuICAgICAgICAgICAgICAgIGJsb2NrRnJvbU5ldHdvcmsgPSBhd2FpdCB0aGlzLm5ldHdvcmtBY2Nlc3MuZ2V0QmxvY2tBdEhlaWdodChmb3JrUG9pbnRIZWlnaHQgLSAxKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5yZW1vdmVGb3JrZWRCbG9ja3MoZm9ya1BvaW50SGVpZ2h0KTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIHdvcmtlciBmdW5jdGlvbiB0aGF0IHJ1bnMgZm9yIHN5bmNpbmcgdGhlIGRhdGFiYXNlIHdpdGggdGhlIENhcmRhbm8gYmxvY2tjaGFpbiBhbmQgY2hlY2tzIGlmIHdlIGhhdmUgYW55IGZvcmtcbiAgICAgKiBzY2VuYXJpbyBpbiB0aGUgYmxvY2tjaGFpbiBhbmQgaW52YWxpZGF0ZSB0aGUgZGF0YWJhc2UgdGlsbCB0aGUgZGF0YWJhc2Ugc3luY2VkIGFnYWluLlxuICAgICAqL1xuICAgIHVwZGF0ZSA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RTYXZlZEJsb2NrID0gKGF3YWl0IHRoaXMuZ2V0TGFzdFNhdmVkQmxvY2soKSk7XG4gICAgICAgICAgICBpZiAobGFzdFNhdmVkQmxvY2sgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrID0gYXdhaXQgdGhpcy5uZXR3b3JrQWNjZXNzLmdldEJsb2NrQXRIZWlnaHQodGhpcy5pbml0aWFsSGVpZ2h0KTtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnByb2Nlc3NCbG9jayhibG9jayk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFhd2FpdCB0aGlzLmlzRm9ya0hhcHBlbigpKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zdGVwRm9yd2FyZChsYXN0U2F2ZWRCbG9jaylcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zdGVwQmFja3dhcmQobGFzdFNhdmVkQmxvY2spXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpXG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ== |
{ | ||
"name": "@rosen-bridge/scanner", | ||
"version": "0.1.6-alpha", | ||
"version": "0.1.7-alpha", | ||
"description": "A Blockchain scanner. currently supports ergo and cardano", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
94615
776