@esotericsoftware/spine-core 4.3.0 → 4.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/BonePose.d.ts +2 -0
- package/dist/BonePose.js +131 -101
- package/dist/ConstraintData.d.ts +9 -0
- package/dist/ConstraintData.js +11 -1
- package/dist/IkConstraint.d.ts +2 -1
- package/dist/IkConstraint.js +13 -13
- package/dist/IkConstraintData.d.ts +1 -11
- package/dist/IkConstraintData.js +2 -13
- package/dist/PathConstraint.d.ts +0 -1
- package/dist/PathConstraint.js +3 -4
- package/dist/PhysicsConstraint.js +14 -2
- package/dist/PhysicsConstraintData.d.ts +6 -1
- package/dist/PhysicsConstraintData.js +13 -2
- package/dist/SkeletonBinary.js +14 -3
- package/dist/SkeletonJson.js +6 -2
- package/dist/Utils.d.ts +2 -0
- package/dist/Utils.js +3 -1
- package/dist/esm/spine-core.min.mjs +2 -2
- package/dist/esm/spine-core.mjs +218 -148
- package/dist/esm/spine-core.mjs.map +3 -3
- package/dist/iife/spine-core.js +218 -148
- package/dist/iife/spine-core.js.map +3 -3
- package/dist/iife/spine-core.min.js +2 -2
- package/package.json +1 -1
package/dist/Utils.d.ts
CHANGED
package/dist/Utils.js
CHANGED
|
@@ -153,6 +153,8 @@ export class Color {
|
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
155
|
export class MathUtils {
|
|
156
|
+
static epsilon = 0.00001;
|
|
157
|
+
static epsilon2 = MathUtils.epsilon * MathUtils.epsilon;
|
|
156
158
|
// biome-ignore lint/suspicious/noApproximativeNumericConstant: reference runtime
|
|
157
159
|
static PI = 3.1415927;
|
|
158
160
|
static PI2 = MathUtils.PI * 2;
|
|
@@ -452,4 +454,4 @@ export class WindowedMean {
|
|
|
452
454
|
return 0;
|
|
453
455
|
}
|
|
454
456
|
}
|
|
455
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvVXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBVS9FLE1BQU0sT0FBTyxNQUFNO0lBQ2xCLEtBQUssR0FBRyxFQUE0QixDQUFDO0lBRXJDLEdBQUcsQ0FBRSxLQUFhO1FBQ2pCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNsQyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxRQUFRLENBQUUsS0FBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsTUFBTSxDQUFFLEtBQWE7UUFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQ25DLENBQUM7SUFFRCxLQUFLO1FBQ0osSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7Q0FDRDtBQUVELE1BQU0sT0FBTyxTQUFTO0lBQ3JCLE9BQU8sR0FBdUIsRUFBRSxDQUFDO0lBQ2pDLElBQUksR0FBRyxDQUFDLENBQUM7SUFFVCxHQUFHLENBQUUsS0FBYTtRQUNqQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNaLE9B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QUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO29CQUMxQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbEIsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDO0lBQ1YsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiogYmlvbWUtaWdub3JlLWFsbCBsaW50L2NvbXBsZXhpdHkvbm9TdGF0aWNPbmx5Q2xhc3M6IHRvbyBtdWNoIHRoaW5ncyB0byB1cGRhdGUgKi9cblxuaW1wb3J0IHR5cGUgeyBTa2VsZXRvbiB9IGZyb20gXCIuL1NrZWxldG9uLmpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaW5nTWFwPFQ+IHtcblx0W2tleTogc3RyaW5nXTogVDtcbn1cblxuZXhwb3J0IGNsYXNzIEludFNldCB7XG5cdGFycmF5ID0gW10gYXMgKG51bWJlciB8IHVuZGVmaW5lZClbXTtcblxuXHRhZGQgKHZhbHVlOiBudW1iZXIpOiBib29sZWFuIHtcblx0XHRjb25zdCBjb250YWlucyA9IHRoaXMuY29udGFpbnModmFsdWUpO1xuXHRcdHRoaXMuYXJyYXlbdmFsdWUgfCAwXSA9IHZhbHVlIHwgMDtcblx0XHRyZXR1cm4gIWNvbnRhaW5zO1xuXHR9XG5cblx0Y29udGFpbnMgKHZhbHVlOiBudW1iZXIpIHtcblx0XHRyZXR1cm4gdGhpcy5hcnJheVt2YWx1ZSB8IDBdICE9PSB1bmRlZmluZWQ7XG5cdH1cblxuXHRyZW1vdmUgKHZhbHVlOiBudW1iZXIpIHtcblx0XHR0aGlzLmFycmF5W3ZhbHVlIHwgMF0gPSB1bmRlZmluZWQ7XG5cdH1cblxuXHRjbGVhciAoKSB7XG5cdFx0dGhpcy5hcnJheS5sZW5ndGggPSAwO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBTdHJpbmdTZXQge1xuXHRlbnRyaWVzOiBTdHJpbmdNYXA8Ym9vbGVhbj4gPSB7fTtcblx0c2l6ZSA9IDA7XG5cblx0YWRkICh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgY29udGFpbnMgPSB0aGlzLmVudHJpZXNbdmFsdWVdO1xuXHRcdHRoaXMuZW50cmllc1t2YWx1ZV0gPSB0cnVlO1xuXHRcdGlmICghY29udGFpbnMpIHtcblx0XHRcdHRoaXMuc2l6ZSsrO1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGFkZEFsbCAodmFsdWVzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IG9sZFNpemUgPSB0aGlzLnNpemU7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSB2YWx1ZXMubGVuZ3RoOyBpIDwgbjsgaSsrKVxuXHRcdFx0dGhpcy5hZGQodmFsdWVzW2ldKTtcblx0XHRyZXR1cm4gb2xkU2l6ZSAhPT0gdGhpcy5zaXplO1xuXHR9XG5cblx0Y29udGFpbnMgKHZhbHVlOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy5lbnRyaWVzW3ZhbHVlXTtcblx0fVxuXG5cdGNsZWFyICgpIHtcblx0XHR0aGlzLmVudHJpZXMgPSB7fTtcblx0XHR0aGlzLnNpemUgPSAwO1xuXHR9XG59XG5cbmV4cG9ydCB0eXBlIE51bWJlckFycmF5TGlrZSA9IEFycmF5PG51bWJlcj4gfCBGbG9hdDMyQXJyYXk7XG5leHBvcnQgdHlwZSBJbnRBcnJheUxpa2UgPSBBcnJheTxudW1iZXI+IHwgSW50MTZBcnJheTtcblxuZXhwb3J0IGludGVyZmFjZSBEaXNwb3NhYmxlIHtcblx0ZGlzcG9zZSAoKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXN0b3JhYmxlIHtcblx0cmVzdG9yZSAoKTogdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIENvbG9yIHtcblx0cHVibGljIHN0YXRpYyBXSElURSA9IG5ldyBDb2xvcigxLCAxLCAxLCAxKTtcblx0cHVibGljIHN0YXRpYyBSRUQgPSBuZXcgQ29sb3IoMSwgMCwgMCwgMSk7XG5cdHB1YmxpYyBzdGF0aWMgR1JFRU4gPSBuZXcgQ29sb3IoMCwgMSwgMCwgMSk7XG5cdHB1YmxpYyBzdGF0aWMgQkxVRSA9IG5ldyBDb2xvcigwLCAwLCAxLCAxKTtcblx0cHVibGljIHN0YXRpYyBNQUdFTlRBID0gbmV3IENvbG9yKDEsIDAsIDEsIDEpO1xuXG5cdGNvbnN0cnVjdG9yIChwdWJsaWMgcjogbnVtYmVyID0gMCwgcHVibGljIGc6IG51bWJlciA9IDAsIHB1YmxpYyBiOiBudW1iZXIgPSAwLCBwdWJsaWMgYTogbnVtYmVyID0gMCkge1xuXHR9XG5cblx0c2V0IChyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyLCBhOiBudW1iZXIpIHtcblx0XHR0aGlzLnIgPSByO1xuXHRcdHRoaXMuZyA9IGc7XG5cdFx0dGhpcy5iID0gYjtcblx0XHR0aGlzLmEgPSBhO1xuXHRcdHJldHVybiB0aGlzLmNsYW1wKCk7XG5cdH1cblxuXHRzZXRGcm9tQ29sb3IgKGM6IENvbG9yKSB7XG5cdFx0dGhpcy5yID0gYy5yO1xuXHRcdHRoaXMuZyA9IGMuZztcblx0XHR0aGlzLmIgPSBjLmI7XG5cdFx0dGhpcy5hID0gYy5hO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0c2V0RnJvbVN0cmluZyAoaGV4OiBzdHJpbmcpIHtcblx0XHRoZXggPSBoZXguY2hhckF0KDApID09PSAnIycgPyBoZXguc3Vic3RyKDEpIDogaGV4O1xuXHRcdHRoaXMuciA9IHBhcnNlSW50KGhleC5zdWJzdHIoMCwgMiksIDE2KSAvIDI1NTtcblx0XHR0aGlzLmcgPSBwYXJzZUludChoZXguc3Vic3RyKDIsIDIpLCAxNikgLyAyNTU7XG5cdFx0dGhpcy5iID0gcGFyc2VJbnQoaGV4LnN1YnN0cig0LCAyKSwgMTYpIC8gMjU1O1xuXHRcdHRoaXMuYSA9IGhleC5sZW5ndGggIT09IDggPyAxIDogcGFyc2VJbnQoaGV4LnN1YnN0cig2LCAyKSwgMTYpIC8gMjU1O1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0YWRkIChyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyLCBhOiBudW1iZXIpIHtcblx0XHR0aGlzLnIgKz0gcjtcblx0XHR0aGlzLmcgKz0gZztcblx0XHR0aGlzLmIgKz0gYjtcblx0XHR0aGlzLmEgKz0gYTtcblx0XHRyZXR1cm4gdGhpcy5jbGFtcCgpO1xuXHR9XG5cblx0Y2xhbXAgKCkge1xuXHRcdGlmICh0aGlzLnIgPCAwKSB0aGlzLnIgPSAwO1xuXHRcdGVsc2UgaWYgKHRoaXMuciA+IDEpIHRoaXMuciA9IDE7XG5cblx0XHRpZiAodGhpcy5nIDwgMCkgdGhpcy5nID0gMDtcblx0XHRlbHNlIGlmICh0aGlzLmcgPiAxKSB0aGlzLmcgPSAxO1xuXG5cdFx0aWYgKHRoaXMuYiA8IDApIHRoaXMuYiA9IDA7XG5cdFx0ZWxzZSBpZiAodGhpcy5iID4gMSkgdGhpcy5iID0gMTtcblxuXHRcdGlmICh0aGlzLmEgPCAwKSB0aGlzLmEgPSAwO1xuXHRcdGVsc2UgaWYgKHRoaXMuYSA+IDEpIHRoaXMuYSA9IDE7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRzdGF0aWMgcmdiYTg4ODhUb0NvbG9yIChjb2xvcjogQ29sb3IsIHZhbHVlOiBudW1iZXIpIHtcblx0XHRjb2xvci5yID0gKCh2YWx1ZSAmIDB4ZmYwMDAwMDApID4+PiAyNCkgLyAyNTU7XG5cdFx0Y29sb3IuZyA9ICgodmFsdWUgJiAweDAwZmYwMDAwKSA+Pj4gMTYpIC8gMjU1O1xuXHRcdGNvbG9yLmIgPSAoKHZhbHVlICYgMHgwMDAwZmYwMCkgPj4+IDgpIC8gMjU1O1xuXHRcdGNvbG9yLmEgPSAoKHZhbHVlICYgMHgwMDAwMDBmZikpIC8gMjU1O1xuXHR9XG5cblx0c3RhdGljIHJnYjg4OFRvQ29sb3IgKGNvbG9yOiBDb2xvciwgdmFsdWU6IG51bWJlcikge1xuXHRcdGNvbG9yLnIgPSAoKHZhbHVlICYgMHgwMGZmMDAwMCkgPj4+IDE2KSAvIDI1NTtcblx0XHRjb2xvci5nID0gKCh2YWx1ZSAmIDB4MDAwMGZmMDApID4+PiA4KSAvIDI1NTtcblx0XHRjb2xvci5iID0gKCh2YWx1ZSAmIDB4MDAwMDAwZmYpKSAvIDI1NTtcblx0fVxuXG5cdHRvUmdiODg4ICgpIHtcblx0XHRjb25zdCBoZXggPSAoeDogbnVtYmVyKSA9PiAoYDAkeyh4ICogMjU1KS50b1N0cmluZygxNil9YCkuc2xpY2UoLTIpO1xuXHRcdHJldHVybiBOdW1iZXIoYDB4JHtoZXgodGhpcy5yKX0ke2hleCh0aGlzLmcpfSR7aGV4KHRoaXMuYil9YCk7XG5cdH1cblxuXHRzdGF0aWMgZnJvbVN0cmluZyAoaGV4OiBzdHJpbmcsIGNvbG9yID0gbmV3IENvbG9yKCkpOiBDb2xvciB7XG5cdFx0cmV0dXJuIGNvbG9yLnNldEZyb21TdHJpbmcoaGV4KTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgTWF0aFV0aWxzIHtcblx0Ly8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0FwcHJveGltYXRpdmVOdW1lcmljQ29uc3RhbnQ6IHJlZmVyZW5jZSBydW50aW1lXG5cdHN0YXRpYyBQSSA9IDMuMTQxNTkyNztcblx0c3RhdGljIFBJMiA9IE1hdGhVdGlscy5QSSAqIDI7XG5cdHN0YXRpYyBpbnZQSTIgPSAxIC8gTWF0aFV0aWxzLlBJMjtcblx0c3RhdGljIHJhZGlhbnNUb0RlZ3JlZXMgPSAxODAgLyBNYXRoVXRpbHMuUEk7XG5cdHN0YXRpYyByYWREZWcgPSBNYXRoVXRpbHMucmFkaWFuc1RvRGVncmVlcztcblx0c3RhdGljIGRlZ3JlZXNUb1JhZGlhbnMgPSBNYXRoVXRpbHMuUEkgLyAxODA7XG5cdHN0YXRpYyBkZWdSYWQgPSBNYXRoVXRpbHMuZGVncmVlc1RvUmFkaWFucztcblxuXHRzdGF0aWMgY2xhbXAgKHZhbHVlOiBudW1iZXIsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcikge1xuXHRcdGlmICh2YWx1ZSA8IG1pbikgcmV0dXJuIG1pbjtcblx0XHRpZiAodmFsdWUgPiBtYXgpIHJldHVybiBtYXg7XG5cdFx0cmV0dXJuIHZhbHVlO1xuXHR9XG5cblx0c3RhdGljIGNvc0RlZyAoZGVncmVlczogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIE1hdGguY29zKGRlZ3JlZXMgKiBNYXRoVXRpbHMuZGVnUmFkKTtcblx0fVxuXG5cdHN0YXRpYyBzaW5EZWcgKGRlZ3JlZXM6IG51bWJlcikge1xuXHRcdHJldHVybiBNYXRoLnNpbihkZWdyZWVzICogTWF0aFV0aWxzLmRlZ1JhZCk7XG5cdH1cblxuXHRzdGF0aWMgYXRhbjJEZWcgKHk6IG51bWJlciwgeDogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIE1hdGguYXRhbjIoeSwgeCkgKiBNYXRoVXRpbHMucmFkRGVnO1xuXHR9XG5cblx0c3RhdGljIHNpZ251bSAodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG5cdFx0cmV0dXJuIHZhbHVlID4gMCA/IDEgOiB2YWx1ZSA8IDAgPyAtMSA6IDA7XG5cdH1cblxuXHRzdGF0aWMgdG9JbnQgKHg6IG51bWJlcikge1xuXHRcdHJldHVybiB4ID4gMCA/IE1hdGguZmxvb3IoeCkgOiBNYXRoLmNlaWwoeCk7XG5cdH1cblxuXHRzdGF0aWMgY2JydCAoeDogbnVtYmVyKSB7XG5cdFx0Y29uc3QgeSA9IE1hdGgucG93KE1hdGguYWJzKHgpLCAxIC8gMyk7XG5cdFx0cmV0dXJuIHggPCAwID8gLXkgOiB5O1xuXHR9XG5cblx0c3RhdGljIHJhbmRvbVRyaWFuZ3VsYXIgKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcik6IG51bWJlciB7XG5cdFx0cmV0dXJuIE1hdGhVdGlscy5yYW5kb21Ucmlhbmd1bGFyV2l0aChtaW4sIG1heCwgKG1pbiArIG1heCkgKiAwLjUpO1xuXHR9XG5cblx0c3RhdGljIHJhbmRvbVRyaWFuZ3VsYXJXaXRoIChtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIG1vZGU6IG51bWJlcik6IG51bWJlciB7XG5cdFx0Y29uc3QgdSA9IE1hdGgucmFuZG9tKCk7XG5cdFx0Y29uc3QgZCA9IG1heCAtIG1pbjtcblx0XHRpZiAodSA8PSAobW9kZSAtIG1pbikgLyBkKSByZXR1cm4gbWluICsgTWF0aC5zcXJ0KHUgKiBkICogKG1vZGUgLSBtaW4pKTtcblx0XHRyZXR1cm4gbWF4IC0gTWF0aC5zcXJ0KCgxIC0gdSkgKiBkICogKG1heCAtIG1vZGUpKTtcblx0fVxuXG5cdHN0YXRpYyBpc1Bvd2VyT2ZUd28gKHZhbHVlOiBudW1iZXIpIHtcblx0XHRyZXR1cm4gdmFsdWUgJiYgKHZhbHVlICYgKHZhbHVlIC0gMSkpID09PSAwO1xuXHR9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJbnRlcnBvbGF0aW9uIHtcblx0c3RhdGljIHJlYWRvbmx5IGxpbmVhcjogSW50ZXJwb2xhdGlvbiA9IG5ldyBjbGFzcyBleHRlbmRzIEludGVycG9sYXRpb24ge1xuXHRcdHByb3RlY3RlZCBhcHBseUludGVybmFsIChhOiBudW1iZXIpOiBudW1iZXIge1xuXHRcdFx0cmV0dXJuIGE7XG5cdFx0fVxuXHR9KCk7XG5cblx0LyoqIEFrYSBcInNtb290aHN0ZXBcIi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IHNtb290aDogSW50ZXJwb2xhdGlvbiA9IG5ldyBjbGFzcyBleHRlbmRzIEludGVycG9sYXRpb24ge1xuXHRcdHByb3RlY3RlZCBhcHBseUludGVybmFsIChhOiBudW1iZXIpOiBudW1iZXIge1xuXHRcdFx0cmV0dXJuIGEgKiBhICogKDMgLSAyICogYSk7XG5cdFx0fVxuXHR9KCk7XG5cblx0LyoqIFNsb3csIHRoZW4gZmFzdC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IHNsb3dGYXN0OiBJbnRlcnBvbGF0aW9uID0gbmV3IGNsYXNzIGV4dGVuZHMgSW50ZXJwb2xhdGlvbiB7XG5cdFx0cHJvdGVjdGVkIGFwcGx5SW50ZXJuYWwgKGE6IG51bWJlcik6IG51bWJlciB7XG5cdFx0XHRyZXR1cm4gYSAqIGE7XG5cdFx0fVxuXHR9KCk7XG5cblx0LyoqIEZhc3QsIHRoZW4gc2xvdy4gKi9cblx0c3RhdGljIHJlYWRvbmx5IGZhc3RTbG93OiBJbnRlcnBvbGF0aW9uID0gbmV3IGNsYXNzIGV4dGVuZHMgSW50ZXJwb2xhdGlvbiB7XG5cdFx0cHJvdGVjdGVkIGFwcGx5SW50ZXJuYWwgKGE6IG51bWJlcik6IG51bWJlciB7XG5cdFx0XHRyZXR1cm4gKGEgLSAxKSAqIChhIC0gMSkgKiAtMSArIDE7XG5cdFx0fVxuXHR9KCk7XG5cblx0c3RhdGljIHJlYWRvbmx5IGNpcmNsZTogSW50ZXJwb2xhdGlvbiA9IG5ldyBjbGFzcyBleHRlbmRzIEludGVycG9sYXRpb24ge1xuXHRcdHByb3RlY3RlZCBhcHBseUludGVybmFsIChhOiBudW1iZXIpOiBudW1iZXIge1xuXHRcdFx0aWYgKGEgPD0gMC41KSB7XG5cdFx0XHRcdGEgKj0gMjtcblx0XHRcdFx0cmV0dXJuICgxIC0gTWF0aC5zcXJ0KDEgLSBhICogYSkpIC8gMjtcblx0XHRcdH1cblx0XHRcdGEtLTtcblx0XHRcdGEgKj0gMjtcblx0XHRcdHJldHVybiAoTWF0aC5zcXJ0KDEgLSBhICogYSkgKyAxKSAvIDI7XG5cdFx0fVxuXHR9KCk7XG5cblx0cHJvdGVjdGVkIGFic3RyYWN0IGFwcGx5SW50ZXJuYWwgKGE6IG51bWJlcik6IG51bWJlcjtcblxuXHRhcHBseSAoYTogbnVtYmVyKTogbnVtYmVyO1xuXHRhcHBseSAoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIGE6IG51bWJlcik6IG51bWJlcjtcblx0YXBwbHkgKHN0YXJ0OiBudW1iZXIsIGVuZD86IG51bWJlciwgYT86IG51bWJlcik6IG51bWJlciB7XG5cdFx0aWYgKGVuZCA9PT0gdW5kZWZpbmVkIHx8IGEgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHRoaXMuYXBwbHlJbnRlcm5hbChzdGFydCk7XG5cdFx0cmV0dXJuIHN0YXJ0ICsgKGVuZCAtIHN0YXJ0KSAqIHRoaXMuYXBwbHlJbnRlcm5hbChhKTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgUG93IGV4dGVuZHMgSW50ZXJwb2xhdGlvbiB7XG5cdHByb3RlY3RlZCBwb3dlciA9IDI7XG5cblx0Y29uc3RydWN0b3IgKHBvd2VyOiBudW1iZXIpIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMucG93ZXIgPSBwb3dlcjtcblx0fVxuXG5cdGFwcGx5SW50ZXJuYWwgKGE6IG51bWJlcik6IG51bWJlciB7XG5cdFx0aWYgKGEgPD0gMC41KSByZXR1cm4gTWF0aC5wb3coYSAqIDIsIHRoaXMucG93ZXIpIC8gMjtcblx0XHRyZXR1cm4gTWF0aC5wb3coKGEgLSAxKSAqIDIsIHRoaXMucG93ZXIpIC8gKHRoaXMucG93ZXIgJSAyID09PSAwID8gLTIgOiAyKSArIDE7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFBvd091dCBleHRlbmRzIFBvdyB7XG5cdGNvbnN0cnVjdG9yIChwb3dlcjogbnVtYmVyKSB7XG5cdFx0c3VwZXIocG93ZXIpO1xuXHR9XG5cblx0YXBwbHlJbnRlcm5hbCAoYTogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gTWF0aC5wb3coYSAtIDEsIHRoaXMucG93ZXIpICogKHRoaXMucG93ZXIgJSAyID09PSAwID8gLTEgOiAxKSArIDE7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFV0aWxzIHtcblx0c3RhdGljIFNVUFBPUlRTX1RZUEVEX0FSUkFZUyA9IHR5cGVvZiAoRmxvYXQzMkFycmF5KSAhPT0gXCJ1bmRlZmluZWRcIjtcblxuXHRzdGF0aWMgYXJyYXlDb3B5PFQ+IChzb3VyY2U6IEFycmF5TGlrZTxUPiwgc291cmNlU3RhcnQ6IG51bWJlciwgZGVzdDogQXJyYXlMaWtlPFQ+LCBkZXN0U3RhcnQ6IG51bWJlciwgbnVtRWxlbWVudHM6IG51bWJlcikge1xuXHRcdGZvciAobGV0IGkgPSBzb3VyY2VTdGFydCwgaiA9IGRlc3RTdGFydDsgaSA8IHNvdXJjZVN0YXJ0ICsgbnVtRWxlbWVudHM7IGkrKywgaisrKSB7XG5cdFx0XHRkZXN0W2pdID0gc291cmNlW2ldO1xuXHRcdH1cblx0fVxuXG5cdHN0YXRpYyBhcnJheUZpbGw8VD4gKGFycmF5OiBBcnJheUxpa2U8VD4sIGZyb21JbmRleDogbnVtYmVyLCB0b0luZGV4OiBudW1iZXIsIHZhbHVlOiBUKSB7XG5cdFx0Zm9yIChsZXQgaSA9IGZyb21JbmRleDsgaSA8IHRvSW5kZXg7IGkrKylcblx0XHRcdGFycmF5W2ldID0gdmFsdWU7XG5cdH1cblxuXHQvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IG9rIGFueSBpbiB0aGlzIGNhc2Vcblx0c3RhdGljIHNldEFycmF5U2l6ZTxUPiAoYXJyYXk6IEFycmF5PFQ+LCBzaXplOiBudW1iZXIsIHZhbHVlOiBhbnkgPSAwKTogQXJyYXk8VD4ge1xuXHRcdGNvbnN0IG9sZFNpemUgPSBhcnJheS5sZW5ndGg7XG5cdFx0aWYgKG9sZFNpemUgPT09IHNpemUpIHJldHVybiBhcnJheTtcblx0XHRhcnJheS5sZW5ndGggPSBzaXplO1xuXHRcdGlmIChvbGRTaXplIDwgc2l6ZSkge1xuXHRcdFx0Zm9yIChsZXQgaSA9IG9sZFNpemU7IGkgPCBzaXplOyBpKyspIGFycmF5W2ldID0gdmFsdWU7XG5cdFx0fVxuXHRcdHJldHVybiBhcnJheTtcblx0fVxuXG5cdC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogb2sgYW55IGluIHRoaXMgY2FzZVxuXHRzdGF0aWMgZW5zdXJlQXJyYXlDYXBhY2l0eTxUPiAoYXJyYXk6IEFycmF5PFQ+LCBzaXplOiBudW1iZXIsIHZhbHVlOiBhbnkgPSAwKTogQXJyYXk8VD4ge1xuXHRcdGlmIChhcnJheS5sZW5ndGggPj0gc2l6ZSkgcmV0dXJuIGFycmF5O1xuXHRcdHJldHVybiBVdGlscy5zZXRBcnJheVNpemUoYXJyYXksIHNpemUsIHZhbHVlKTtcblx0fVxuXG5cdHN0YXRpYyBuZXdBcnJheTxUPiAoc2l6ZTogbnVtYmVyLCBkZWZhdWx0VmFsdWU6IFQpOiBBcnJheTxUPiB7XG5cdFx0Y29uc3QgYXJyYXk6IFRbXSA9IFtdO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSBhcnJheVtpXSA9IGRlZmF1bHRWYWx1ZTtcblx0XHRyZXR1cm4gYXJyYXk7XG5cdH1cblxuXHRzdGF0aWMgbmV3RmxvYXRBcnJheSAoc2l6ZTogbnVtYmVyKTogTnVtYmVyQXJyYXlMaWtlIHtcblx0XHRpZiAoVXRpbHMuU1VQUE9SVFNfVFlQRURfQVJSQVlTKVxuXHRcdFx0cmV0dXJuIG5ldyBGbG9hdDMyQXJyYXkoc2l6ZSlcblx0XHRlbHNlIHtcblx0XHRcdGNvbnN0IGFycmF5OiBudW1iZXJbXSA9IFtdO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykgYXJyYXlbaV0gPSAwO1xuXHRcdFx0cmV0dXJuIGFycmF5O1xuXHRcdH1cblx0fVxuXG5cdHN0YXRpYyBuZXdTaG9ydEFycmF5IChzaXplOiBudW1iZXIpOiBJbnRBcnJheUxpa2Uge1xuXHRcdGlmIChVdGlscy5TVVBQT1JUU19UWVBFRF9BUlJBWVMpXG5cdFx0XHRyZXR1cm4gbmV3IEludDE2QXJyYXkoc2l6ZSlcblx0XHRlbHNlIHtcblx0XHRcdGNvbnN0IGFycmF5OiBudW1iZXJbXSA9IFtdO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykgYXJyYXlbaV0gPSAwO1xuXHRcdFx0cmV0dXJuIGFycmF5O1xuXHRcdH1cblx0fVxuXG5cdHN0YXRpYyB0b0Zsb2F0QXJyYXkgKGFycmF5OiBBcnJheTxudW1iZXI+KTogbnVtYmVyW10gfCBGbG9hdDMyQXJyYXkge1xuXHRcdHJldHVybiBVdGlscy5TVVBQT1JUU19UWVBFRF9BUlJBWVMgPyBuZXcgRmxvYXQzMkFycmF5KGFycmF5KSA6IGFycmF5O1xuXHR9XG5cblx0c3RhdGljIHRvU2luZ2xlUHJlY2lzaW9uICh2YWx1ZTogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIFV0aWxzLlNVUFBPUlRTX1RZUEVEX0FSUkFZUyA/IE1hdGguZnJvdW5kKHZhbHVlKSA6IHZhbHVlO1xuXHR9XG5cblx0Ly8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGZpeCBXZWJLaXQgNjAyIHNwZWNpZmljIGlzc3VlIGRlc2NyaWJlZCBhdCBodHRwczovL2Vzb3Rlcmljc29mdHdhcmUuY29tL2ZvcnVtL2QvMTAxMDktaW9zLTEwLWRpc2FwcGVhcmluZy1ncmFwaGljc1xuXHRzdGF0aWMgd2Via2l0NjAyQnVnZml4SGVscGVyIChhbHBoYTogbnVtYmVyKSB7XG5cdH1cblxuXHRzdGF0aWMgY29udGFpbnM8VD4gKGFycmF5OiBBcnJheTxUPiwgZWxlbWVudDogVCwgaWRlbnRpdHkgPSB0cnVlKSB7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKylcblx0XHRcdGlmIChhcnJheVtpXSA9PT0gZWxlbWVudCkgcmV0dXJuIHRydWU7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Ly8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiBvayBhbnkgaW4gdGhpcyBjYXNlXG5cdHN0YXRpYyBlbnVtVmFsdWUgKHR5cGU6IGFueSwgbmFtZTogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHR5cGVbbmFtZVswXS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxKV07XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIERlYnVnVXRpbHMge1xuXHRzdGF0aWMgbG9nQm9uZXMgKHNrZWxldG9uOiBTa2VsZXRvbikge1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc2tlbGV0b24uYm9uZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGJvbmUgPSBza2VsZXRvbi5ib25lc1tpXS5hcHBsaWVkUG9zZTtcblx0XHRcdGNvbnNvbGUubG9nKGAke2JvbmUuYm9uZS5kYXRhLm5hbWV9LCAke2JvbmUuYX0sICR7Ym9uZS5ifSwgJHtib25lLmN9LCAke2JvbmUuZH0sICR7Ym9uZS53b3JsZFh9LCAke2JvbmUud29ybGRZfWApO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgY2xhc3MgUG9vbDxUPiB7XG5cdHByaXZhdGUgaXRlbXMgPSBbXSBhcyBUW107XG5cdHByaXZhdGUgaW5zdGFudGlhdG9yOiAoKSA9PiBUO1xuXG5cdGNvbnN0cnVjdG9yIChpbnN0YW50aWF0b3I6ICgpID0+IFQpIHtcblx0XHR0aGlzLmluc3RhbnRpYXRvciA9IGluc3RhbnRpYXRvcjtcblx0fVxuXG5cdG9idGFpbiAoKSB7XG5cdFx0Ly8gYmlvbWUtaWdub3JlIGxpbnQvc3R5bGUvbm9Ob25OdWxsQXNzZXJ0aW9uOiBsZW5ndGggY2hlY2tcblx0XHRyZXR1cm4gdGhpcy5pdGVtcy5sZW5ndGggPiAwID8gdGhpcy5pdGVtcy5wb3AoKSEgOiB0aGlzLmluc3RhbnRpYXRvcigpO1xuXHR9XG5cblx0ZnJlZSAoaXRlbTogVCkge1xuXHRcdC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogVCBjYW4gYmUgYW55dGhpbmdcblx0XHQoaXRlbSBhcyBhbnkpLnJlc2V0Py4oKTtcblx0XHR0aGlzLml0ZW1zLnB1c2goaXRlbSk7XG5cdH1cblxuXHRmcmVlQWxsIChpdGVtczogQXJyYXlMaWtlPFQ+KSB7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKylcblx0XHRcdHRoaXMuZnJlZShpdGVtc1tpXSk7XG5cdH1cblxuXHRjbGVhciAoKSB7XG5cdFx0dGhpcy5pdGVtcy5sZW5ndGggPSAwO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBWZWN0b3IyIHtcblx0Y29uc3RydWN0b3IgKHB1YmxpYyB4ID0gMCwgcHVibGljIHkgPSAwKSB7XG5cdH1cblxuXHRzZXQgKHg6IG51bWJlciwgeTogbnVtYmVyKTogVmVjdG9yMiB7XG5cdFx0dGhpcy54ID0geDtcblx0XHR0aGlzLnkgPSB5O1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0bGVuZ3RoICgpIHtcblx0XHRjb25zdCB4ID0gdGhpcy54O1xuXHRcdGNvbnN0IHkgPSB0aGlzLnk7XG5cdFx0cmV0dXJuIE1hdGguc3FydCh4ICogeCArIHkgKiB5KTtcblx0fVxuXG5cdG5vcm1hbGl6ZSAoKSB7XG5cdFx0Y29uc3QgbGVuID0gdGhpcy5sZW5ndGgoKTtcblx0XHRpZiAobGVuICE9PSAwKSB7XG5cdFx0XHR0aGlzLnggLz0gbGVuO1xuXHRcdFx0dGhpcy55IC89IGxlbjtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFRpbWVLZWVwZXIge1xuXHRtYXhEZWx0YSA9IDAuMDY0O1xuXHRmcmFtZXNQZXJTZWNvbmQgPSAwO1xuXHRkZWx0YSA9IDA7XG5cdHRvdGFsVGltZSA9IDA7XG5cblx0cHJpdmF0ZSBsYXN0VGltZSA9IERhdGUubm93KCkgLyAxMDAwO1xuXHRwcml2YXRlIGZyYW1lQ291bnQgPSAwO1xuXHRwcml2YXRlIGZyYW1lVGltZSA9IDA7XG5cblx0dXBkYXRlICgpIHtcblx0XHRjb25zdCBub3cgPSBEYXRlLm5vdygpIC8gMTAwMDtcblx0XHR0aGlzLmRlbHRhID0gbm93IC0gdGhpcy5sYXN0VGltZTtcblx0XHR0aGlzLmZyYW1lVGltZSArPSB0aGlzLmRlbHRhO1xuXHRcdHRoaXMudG90YWxUaW1lICs9IHRoaXMuZGVsdGE7XG5cdFx0aWYgKHRoaXMuZGVsdGEgPiB0aGlzLm1heERlbHRhKSB0aGlzLmRlbHRhID0gdGhpcy5tYXhEZWx0YTtcblx0XHR0aGlzLmxhc3RUaW1lID0gbm93O1xuXG5cdFx0dGhpcy5mcmFtZUNvdW50Kys7XG5cdFx0aWYgKHRoaXMuZnJhbWVUaW1lID4gMSkge1xuXHRcdFx0dGhpcy5mcmFtZXNQZXJTZWNvbmQgPSB0aGlzLmZyYW1lQ291bnQgLyB0aGlzLmZyYW1lVGltZTtcblx0XHRcdHRoaXMuZnJhbWVUaW1lID0gMDtcblx0XHRcdHRoaXMuZnJhbWVDb3VudCA9IDA7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXJyYXlMaWtlPFQ+IHtcblx0bGVuZ3RoOiBudW1iZXI7XG5cdFtuOiBudW1iZXJdOiBUO1xufVxuXG5leHBvcnQgY2xhc3MgV2luZG93ZWRNZWFuIHtcblx0dmFsdWVzOiBBcnJheTxudW1iZXI+O1xuXHRhZGRlZFZhbHVlcyA9IDA7XG5cdGxhc3RWYWx1ZSA9IDA7XG5cdG1lYW4gPSAwO1xuXHRkaXJ0eSA9IHRydWU7XG5cblx0Y29uc3RydWN0b3IgKHdpbmRvd1NpemU6IG51bWJlciA9IDMyKSB7XG5cdFx0dGhpcy52YWx1ZXMgPSBuZXcgQXJyYXk8bnVtYmVyPih3aW5kb3dTaXplKTtcblx0fVxuXG5cdGhhc0Vub3VnaERhdGEgKCkge1xuXHRcdHJldHVybiB0aGlzLmFkZGVkVmFsdWVzID49IHRoaXMudmFsdWVzLmxlbmd0aDtcblx0fVxuXG5cdGFkZFZhbHVlICh2YWx1ZTogbnVtYmVyKSB7XG5cdFx0aWYgKHRoaXMuYWRkZWRWYWx1ZXMgPCB0aGlzLnZhbHVlcy5sZW5ndGgpIHRoaXMuYWRkZWRWYWx1ZXMrKztcblx0XHR0aGlzLnZhbHVlc1t0aGlzLmxhc3RWYWx1ZSsrXSA9IHZhbHVlO1xuXHRcdGlmICh0aGlzLmxhc3RWYWx1ZSA+IHRoaXMudmFsdWVzLmxlbmd0aCAtIDEpIHRoaXMubGFzdFZhbHVlID0gMDtcblx0XHR0aGlzLmRpcnR5ID0gdHJ1ZTtcblx0fVxuXG5cdGdldE1lYW4gKCkge1xuXHRcdGlmICh0aGlzLmhhc0Vub3VnaERhdGEoKSkge1xuXHRcdFx0aWYgKHRoaXMuZGlydHkpIHtcblx0XHRcdFx0bGV0IG1lYW4gPSAwO1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudmFsdWVzLmxlbmd0aDsgaSsrKVxuXHRcdFx0XHRcdG1lYW4gKz0gdGhpcy52YWx1ZXNbaV07XG5cdFx0XHRcdHRoaXMubWVhbiA9IG1lYW4gLyB0aGlzLnZhbHVlcy5sZW5ndGg7XG5cdFx0XHRcdHRoaXMuZGlydHkgPSBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzLm1lYW47XG5cdFx0fVxuXHRcdHJldHVybiAwO1xuXHR9XG59XG4iXX0=
|
|
457
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvVXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBVS9FLE1BQU0sT0FBTyxNQUFNO0lBQ2xCLEtBQUssR0FBRyxFQUE0QixDQUFDO0lBRXJDLEdBQUcsQ0FBRSxLQUFhO1FBQ2pCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNsQyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxRQUFRLENBQUUsS0FBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsTUFBTSxDQUFFLEtBQWE7UUFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQ25DLENBQUM7SUFFRCxLQUFLO1FBQ0osSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7Q0FDRDtBQUVELE1BQU0sT0FBTyxTQUFTO0lBQ3JCLE9BQU8sR0FBdUIsRUFBRSxDQUFDO0lBQ2pDLElBQUksR0FBRyxDQUFDLENBQUM7SUFFVCxHQUFHLENBQUUsS0FBYTtRQUNqQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNaLE9B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LGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDMUIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2hCLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFDYixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO29CQUMxQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbEIsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDO0lBQ1YsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiogYmlvbWUtaWdub3JlLWFsbCBsaW50L2NvbXBsZXhpdHkvbm9TdGF0aWNPbmx5Q2xhc3M6IHRvbyBtdWNoIHRoaW5ncyB0byB1cGRhdGUgKi9cblxuaW1wb3J0IHR5cGUgeyBTa2VsZXRvbiB9IGZyb20gXCIuL1NrZWxldG9uLmpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaW5nTWFwPFQ+IHtcblx0W2tleTogc3RyaW5nXTogVDtcbn1cblxuZXhwb3J0IGNsYXNzIEludFNldCB7XG5cdGFycmF5ID0gW10gYXMgKG51bWJlciB8IHVuZGVmaW5lZClbXTtcblxuXHRhZGQgKHZhbHVlOiBudW1iZXIpOiBib29sZWFuIHtcblx0XHRjb25zdCBjb250YWlucyA9IHRoaXMuY29udGFpbnModmFsdWUpO1xuXHRcdHRoaXMuYXJyYXlbdmFsdWUgfCAwXSA9IHZhbHVlIHwgMDtcblx0XHRyZXR1cm4gIWNvbnRhaW5zO1xuXHR9XG5cblx0Y29udGFpbnMgKHZhbHVlOiBudW1iZXIpIHtcblx0XHRyZXR1cm4gdGhpcy5hcnJheVt2YWx1ZSB8IDBdICE9PSB1bmRlZmluZWQ7XG5cdH1cblxuXHRyZW1vdmUgKHZhbHVlOiBudW1iZXIpIHtcblx0XHR0aGlzLmFycmF5W3ZhbHVlIHwgMF0gPSB1bmRlZmluZWQ7XG5cdH1cblxuXHRjbGVhciAoKSB7XG5cdFx0dGhpcy5hcnJheS5sZW5ndGggPSAwO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBTdHJpbmdTZXQge1xuXHRlbnRyaWVzOiBTdHJpbmdNYXA8Ym9vbGVhbj4gPSB7fTtcblx0c2l6ZSA9IDA7XG5cblx0YWRkICh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgY29udGFpbnMgPSB0aGlzLmVudHJpZXNbdmFsdWVdO1xuXHRcdHRoaXMuZW50cmllc1t2YWx1ZV0gPSB0cnVlO1xuXHRcdGlmICghY29udGFpbnMpIHtcblx0XHRcdHRoaXMuc2l6ZSsrO1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGFkZEFsbCAodmFsdWVzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IG9sZFNpemUgPSB0aGlzLnNpemU7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSB2YWx1ZXMubGVuZ3RoOyBpIDwgbjsgaSsrKVxuXHRcdFx0dGhpcy5hZGQodmFsdWVzW2ldKTtcblx0XHRyZXR1cm4gb2xkU2l6ZSAhPT0gdGhpcy5zaXplO1xuXHR9XG5cblx0Y29udGFpbnMgKHZhbHVlOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy5lbnRyaWVzW3ZhbHVlXTtcblx0fVxuXG5cdGNsZWFyICgpIHtcblx0XHR0aGlzLmVudHJpZXMgPSB7fTtcblx0XHR0aGlzLnNpemUgPSAwO1xuXHR9XG59XG5cbmV4cG9ydCB0eXBlIE51bWJlckFycmF5TGlrZSA9IEFycmF5PG51bWJlcj4gfCBGbG9hdDMyQXJyYXk7XG5leHBvcnQgdHlwZSBJbnRBcnJheUxpa2UgPSBBcnJheTxudW1iZXI+IHwgSW50MTZBcnJheTtcblxuZXhwb3J0IGludGVyZmFjZSBEaXNwb3NhYmxlIHtcblx0ZGlzcG9zZSAoKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXN0b3JhYmxlIHtcblx0cmVzdG9yZSAoKTogdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIENvbG9yIHtcblx0cHVibGljIHN0YXRpYyBXSElURSA9IG5ldyBDb2xvcigxLCAxLCAxLCAxKTtcblx0cHVibGljIHN0YXRpYyBSRUQgPSBuZXcgQ29sb3IoMSwgMCwgMCwgMSk7XG5cdHB1YmxpYyBzdGF0aWMgR1JFRU4gPSBuZXcgQ29sb3IoMCwgMSwgMCwgMSk7XG5cdHB1YmxpYyBzdGF0aWMgQkxVRSA9IG5ldyBDb2xvcigwLCAwLCAxLCAxKTtcblx0cHVibGljIHN0YXRpYyBNQUdFTlRBID0gbmV3IENvbG9yKDEsIDAsIDEsIDEpO1xuXG5cdGNvbnN0cnVjdG9yIChwdWJsaWMgcjogbnVtYmVyID0gMCwgcHVibGljIGc6IG51bWJlciA9IDAsIHB1YmxpYyBiOiBudW1iZXIgPSAwLCBwdWJsaWMgYTogbnVtYmVyID0gMCkge1xuXHR9XG5cblx0c2V0IChyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyLCBhOiBudW1iZXIpIHtcblx0XHR0aGlzLnIgPSByO1xuXHRcdHRoaXMuZyA9IGc7XG5cdFx0dGhpcy5iID0gYjtcblx0XHR0aGlzLmEgPSBhO1xuXHRcdHJldHVybiB0aGlzLmNsYW1wKCk7XG5cdH1cblxuXHRzZXRGcm9tQ29sb3IgKGM6IENvbG9yKSB7XG5cdFx0dGhpcy5yID0gYy5yO1xuXHRcdHRoaXMuZyA9IGMuZztcblx0XHR0aGlzLmIgPSBjLmI7XG5cdFx0dGhpcy5hID0gYy5hO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0c2V0RnJvbVN0cmluZyAoaGV4OiBzdHJpbmcpIHtcblx0XHRoZXggPSBoZXguY2hhckF0KDApID09PSAnIycgPyBoZXguc3Vic3RyKDEpIDogaGV4O1xuXHRcdHRoaXMuciA9IHBhcnNlSW50KGhleC5zdWJzdHIoMCwgMiksIDE2KSAvIDI1NTtcblx0XHR0aGlzLmcgPSBwYXJzZUludChoZXguc3Vic3RyKDIsIDIpLCAxNikgLyAyNTU7XG5cdFx0dGhpcy5iID0gcGFyc2VJbnQoaGV4LnN1YnN0cig0LCAyKSwgMTYpIC8gMjU1O1xuXHRcdHRoaXMuYSA9IGhleC5sZW5ndGggIT09IDggPyAxIDogcGFyc2VJbnQoaGV4LnN1YnN0cig2LCAyKSwgMTYpIC8gMjU1O1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0YWRkIChyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyLCBhOiBudW1iZXIpIHtcblx0XHR0aGlzLnIgKz0gcjtcblx0XHR0aGlzLmcgKz0gZztcblx0XHR0aGlzLmIgKz0gYjtcblx0XHR0aGlzLmEgKz0gYTtcblx0XHRyZXR1cm4gdGhpcy5jbGFtcCgpO1xuXHR9XG5cblx0Y2xhbXAgKCkge1xuXHRcdGlmICh0aGlzLnIgPCAwKSB0aGlzLnIgPSAwO1xuXHRcdGVsc2UgaWYgKHRoaXMuciA+IDEpIHRoaXMuciA9IDE7XG5cblx0XHRpZiAodGhpcy5nIDwgMCkgdGhpcy5nID0gMDtcblx0XHRlbHNlIGlmICh0aGlzLmcgPiAxKSB0aGlzLmcgPSAxO1xuXG5cdFx0aWYgKHRoaXMuYiA8IDApIHRoaXMuYiA9IDA7XG5cdFx0ZWxzZSBpZiAodGhpcy5iID4gMSkgdGhpcy5iID0gMTtcblxuXHRcdGlmICh0aGlzLmEgPCAwKSB0aGlzLmEgPSAwO1xuXHRcdGVsc2UgaWYgKHRoaXMuYSA+IDEpIHRoaXMuYSA9IDE7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRzdGF0aWMgcmdiYTg4ODhUb0NvbG9yIChjb2xvcjogQ29sb3IsIHZhbHVlOiBudW1iZXIpIHtcblx0XHRjb2xvci5yID0gKCh2YWx1ZSAmIDB4ZmYwMDAwMDApID4+PiAyNCkgLyAyNTU7XG5cdFx0Y29sb3IuZyA9ICgodmFsdWUgJiAweDAwZmYwMDAwKSA+Pj4gMTYpIC8gMjU1O1xuXHRcdGNvbG9yLmIgPSAoKHZhbHVlICYgMHgwMDAwZmYwMCkgPj4+IDgpIC8gMjU1O1xuXHRcdGNvbG9yLmEgPSAoKHZhbHVlICYgMHgwMDAwMDBmZikpIC8gMjU1O1xuXHR9XG5cblx0c3RhdGljIHJnYjg4OFRvQ29sb3IgKGNvbG9yOiBDb2xvciwgdmFsdWU6IG51bWJlcikge1xuXHRcdGNvbG9yLnIgPSAoKHZhbHVlICYgMHgwMGZmMDAwMCkgPj4+IDE2KSAvIDI1NTtcblx0XHRjb2xvci5nID0gKCh2YWx1ZSAmIDB4MDAwMGZmMDApID4+PiA4KSAvIDI1NTtcblx0XHRjb2xvci5iID0gKCh2YWx1ZSAmIDB4MDAwMDAwZmYpKSAvIDI1NTtcblx0fVxuXG5cdHRvUmdiODg4ICgpIHtcblx0XHRjb25zdCBoZXggPSAoeDogbnVtYmVyKSA9PiAoYDAkeyh4ICogMjU1KS50b1N0cmluZygxNil9YCkuc2xpY2UoLTIpO1xuXHRcdHJldHVybiBOdW1iZXIoYDB4JHtoZXgodGhpcy5yKX0ke2hleCh0aGlzLmcpfSR7aGV4KHRoaXMuYil9YCk7XG5cdH1cblxuXHRzdGF0aWMgZnJvbVN0cmluZyAoaGV4OiBzdHJpbmcsIGNvbG9yID0gbmV3IENvbG9yKCkpOiBDb2xvciB7XG5cdFx0cmV0dXJuIGNvbG9yLnNldEZyb21TdHJpbmcoaGV4KTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgTWF0aFV0aWxzIHtcblx0c3RhdGljIGVwc2lsb24gPSAwLjAwMDAxO1xuXHRzdGF0aWMgZXBzaWxvbjIgPSBNYXRoVXRpbHMuZXBzaWxvbiAqIE1hdGhVdGlscy5lcHNpbG9uO1xuXHQvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vQXBwcm94aW1hdGl2ZU51bWVyaWNDb25zdGFudDogcmVmZXJlbmNlIHJ1bnRpbWVcblx0c3RhdGljIFBJID0gMy4xNDE1OTI3O1xuXHRzdGF0aWMgUEkyID0gTWF0aFV0aWxzLlBJICogMjtcblx0c3RhdGljIGludlBJMiA9IDEgLyBNYXRoVXRpbHMuUEkyO1xuXHRzdGF0aWMgcmFkaWFuc1RvRGVncmVlcyA9IDE4MCAvIE1hdGhVdGlscy5QSTtcblx0c3RhdGljIHJhZERlZyA9IE1hdGhVdGlscy5yYWRpYW5zVG9EZWdyZWVzO1xuXHRzdGF0aWMgZGVncmVlc1RvUmFkaWFucyA9IE1hdGhVdGlscy5QSSAvIDE4MDtcblx0c3RhdGljIGRlZ1JhZCA9IE1hdGhVdGlscy5kZWdyZWVzVG9SYWRpYW5zO1xuXG5cdHN0YXRpYyBjbGFtcCAodmFsdWU6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyKSB7XG5cdFx0aWYgKHZhbHVlIDwgbWluKSByZXR1cm4gbWluO1xuXHRcdGlmICh2YWx1ZSA+IG1heCkgcmV0dXJuIG1heDtcblx0XHRyZXR1cm4gdmFsdWU7XG5cdH1cblxuXHRzdGF0aWMgY29zRGVnIChkZWdyZWVzOiBudW1iZXIpIHtcblx0XHRyZXR1cm4gTWF0aC5jb3MoZGVncmVlcyAqIE1hdGhVdGlscy5kZWdSYWQpO1xuXHR9XG5cblx0c3RhdGljIHNpbkRlZyAoZGVncmVlczogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIE1hdGguc2luKGRlZ3JlZXMgKiBNYXRoVXRpbHMuZGVnUmFkKTtcblx0fVxuXG5cdHN0YXRpYyBhdGFuMkRlZyAoeTogbnVtYmVyLCB4OiBudW1iZXIpIHtcblx0XHRyZXR1cm4gTWF0aC5hdGFuMih5LCB4KSAqIE1hdGhVdGlscy5yYWREZWc7XG5cdH1cblxuXHRzdGF0aWMgc2lnbnVtICh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdmFsdWUgPiAwID8gMSA6IHZhbHVlIDwgMCA/IC0xIDogMDtcblx0fVxuXG5cdHN0YXRpYyB0b0ludCAoeDogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIHggPiAwID8gTWF0aC5mbG9vcih4KSA6IE1hdGguY2VpbCh4KTtcblx0fVxuXG5cdHN0YXRpYyBjYnJ0ICh4OiBudW1iZXIpIHtcblx0XHRjb25zdCB5ID0gTWF0aC5wb3coTWF0aC5hYnMoeCksIDEgLyAzKTtcblx0XHRyZXR1cm4geCA8IDAgPyAteSA6IHk7XG5cdH1cblxuXHRzdGF0aWMgcmFuZG9tVHJpYW5ndWxhciAobWluOiBudW1iZXIsIG1heDogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gTWF0aFV0aWxzLnJhbmRvbVRyaWFuZ3VsYXJXaXRoKG1pbiwgbWF4LCAobWluICsgbWF4KSAqIDAuNSk7XG5cdH1cblxuXHRzdGF0aWMgcmFuZG9tVHJpYW5ndWxhcldpdGggKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciwgbW9kZTogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRjb25zdCB1ID0gTWF0aC5yYW5kb20oKTtcblx0XHRjb25zdCBkID0gbWF4IC0gbWluO1xuXHRcdGlmICh1IDw9IChtb2RlIC0gbWluKSAvIGQpIHJldHVybiBtaW4gKyBNYXRoLnNxcnQodSAqIGQgKiAobW9kZSAtIG1pbikpO1xuXHRcdHJldHVybiBtYXggLSBNYXRoLnNxcnQoKDEgLSB1KSAqIGQgKiAobWF4IC0gbW9kZSkpO1xuXHR9XG5cblx0c3RhdGljIGlzUG93ZXJPZlR3byAodmFsdWU6IG51bWJlcikge1xuXHRcdHJldHVybiB2YWx1ZSAmJiAodmFsdWUgJiAodmFsdWUgLSAxKSkgPT09IDA7XG5cdH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEludGVycG9sYXRpb24ge1xuXHRzdGF0aWMgcmVhZG9ubHkgbGluZWFyOiBJbnRlcnBvbGF0aW9uID0gbmV3IGNsYXNzIGV4dGVuZHMgSW50ZXJwb2xhdGlvbiB7XG5cdFx0cHJvdGVjdGVkIGFwcGx5SW50ZXJuYWwgKGE6IG51bWJlcik6IG51bWJlciB7XG5cdFx0XHRyZXR1cm4gYTtcblx0XHR9XG5cdH0oKTtcblxuXHQvKiogQWthIFwic21vb3Roc3RlcFwiLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgc21vb3RoOiBJbnRlcnBvbGF0aW9uID0gbmV3IGNsYXNzIGV4dGVuZHMgSW50ZXJwb2xhdGlvbiB7XG5cdFx0cHJvdGVjdGVkIGFwcGx5SW50ZXJuYWwgKGE6IG51bWJlcik6IG51bWJlciB7XG5cdFx0XHRyZXR1cm4gYSAqIGEgKiAoMyAtIDIgKiBhKTtcblx0XHR9XG5cdH0oKTtcblxuXHQvKiogU2xvdywgdGhlbiBmYXN0LiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgc2xvd0Zhc3Q6IEludGVycG9sYXRpb24gPSBuZXcgY2xhc3MgZXh0ZW5kcyBJbnRlcnBvbGF0aW9uIHtcblx0XHRwcm90ZWN0ZWQgYXBwbHlJbnRlcm5hbCAoYTogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRcdHJldHVybiBhICogYTtcblx0XHR9XG5cdH0oKTtcblxuXHQvKiogRmFzdCwgdGhlbiBzbG93LiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgZmFzdFNsb3c6IEludGVycG9sYXRpb24gPSBuZXcgY2xhc3MgZXh0ZW5kcyBJbnRlcnBvbGF0aW9uIHtcblx0XHRwcm90ZWN0ZWQgYXBwbHlJbnRlcm5hbCAoYTogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRcdHJldHVybiAoYSAtIDEpICogKGEgLSAxKSAqIC0xICsgMTtcblx0XHR9XG5cdH0oKTtcblxuXHRzdGF0aWMgcmVhZG9ubHkgY2lyY2xlOiBJbnRlcnBvbGF0aW9uID0gbmV3IGNsYXNzIGV4dGVuZHMgSW50ZXJwb2xhdGlvbiB7XG5cdFx0cHJvdGVjdGVkIGFwcGx5SW50ZXJuYWwgKGE6IG51bWJlcik6IG51bWJlciB7XG5cdFx0XHRpZiAoYSA8PSAwLjUpIHtcblx0XHRcdFx0YSAqPSAyO1xuXHRcdFx0XHRyZXR1cm4gKDEgLSBNYXRoLnNxcnQoMSAtIGEgKiBhKSkgLyAyO1xuXHRcdFx0fVxuXHRcdFx0YS0tO1xuXHRcdFx0YSAqPSAyO1xuXHRcdFx0cmV0dXJuIChNYXRoLnNxcnQoMSAtIGEgKiBhKSArIDEpIC8gMjtcblx0XHR9XG5cdH0oKTtcblxuXHRwcm90ZWN0ZWQgYWJzdHJhY3QgYXBwbHlJbnRlcm5hbCAoYTogbnVtYmVyKTogbnVtYmVyO1xuXG5cdGFwcGx5IChhOiBudW1iZXIpOiBudW1iZXI7XG5cdGFwcGx5IChzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciwgYTogbnVtYmVyKTogbnVtYmVyO1xuXHRhcHBseSAoc3RhcnQ6IG51bWJlciwgZW5kPzogbnVtYmVyLCBhPzogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRpZiAoZW5kID09PSB1bmRlZmluZWQgfHwgYSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdGhpcy5hcHBseUludGVybmFsKHN0YXJ0KTtcblx0XHRyZXR1cm4gc3RhcnQgKyAoZW5kIC0gc3RhcnQpICogdGhpcy5hcHBseUludGVybmFsKGEpO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBQb3cgZXh0ZW5kcyBJbnRlcnBvbGF0aW9uIHtcblx0cHJvdGVjdGVkIHBvd2VyID0gMjtcblxuXHRjb25zdHJ1Y3RvciAocG93ZXI6IG51bWJlcikge1xuXHRcdHN1cGVyKCk7XG5cdFx0dGhpcy5wb3dlciA9IHBvd2VyO1xuXHR9XG5cblx0YXBwbHlJbnRlcm5hbCAoYTogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRpZiAoYSA8PSAwLjUpIHJldHVybiBNYXRoLnBvdyhhICogMiwgdGhpcy5wb3dlcikgLyAyO1xuXHRcdHJldHVybiBNYXRoLnBvdygoYSAtIDEpICogMiwgdGhpcy5wb3dlcikgLyAodGhpcy5wb3dlciAlIDIgPT09IDAgPyAtMiA6IDIpICsgMTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgUG93T3V0IGV4dGVuZHMgUG93IHtcblx0Y29uc3RydWN0b3IgKHBvd2VyOiBudW1iZXIpIHtcblx0XHRzdXBlcihwb3dlcik7XG5cdH1cblxuXHRhcHBseUludGVybmFsIChhOiBudW1iZXIpOiBudW1iZXIge1xuXHRcdHJldHVybiBNYXRoLnBvdyhhIC0gMSwgdGhpcy5wb3dlcikgKiAodGhpcy5wb3dlciAlIDIgPT09IDAgPyAtMSA6IDEpICsgMTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgVXRpbHMge1xuXHRzdGF0aWMgU1VQUE9SVFNfVFlQRURfQVJSQVlTID0gdHlwZW9mIChGbG9hdDMyQXJyYXkpICE9PSBcInVuZGVmaW5lZFwiO1xuXG5cdHN0YXRpYyBhcnJheUNvcHk8VD4gKHNvdXJjZTogQXJyYXlMaWtlPFQ+LCBzb3VyY2VTdGFydDogbnVtYmVyLCBkZXN0OiBBcnJheUxpa2U8VD4sIGRlc3RTdGFydDogbnVtYmVyLCBudW1FbGVtZW50czogbnVtYmVyKSB7XG5cdFx0Zm9yIChsZXQgaSA9IHNvdXJjZVN0YXJ0LCBqID0gZGVzdFN0YXJ0OyBpIDwgc291cmNlU3RhcnQgKyBudW1FbGVtZW50czsgaSsrLCBqKyspIHtcblx0XHRcdGRlc3Rbal0gPSBzb3VyY2VbaV07XG5cdFx0fVxuXHR9XG5cblx0c3RhdGljIGFycmF5RmlsbDxUPiAoYXJyYXk6IEFycmF5TGlrZTxUPiwgZnJvbUluZGV4OiBudW1iZXIsIHRvSW5kZXg6IG51bWJlciwgdmFsdWU6IFQpIHtcblx0XHRmb3IgKGxldCBpID0gZnJvbUluZGV4OyBpIDwgdG9JbmRleDsgaSsrKVxuXHRcdFx0YXJyYXlbaV0gPSB2YWx1ZTtcblx0fVxuXG5cdC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogb2sgYW55IGluIHRoaXMgY2FzZVxuXHRzdGF0aWMgc2V0QXJyYXlTaXplPFQ+IChhcnJheTogQXJyYXk8VD4sIHNpemU6IG51bWJlciwgdmFsdWU6IGFueSA9IDApOiBBcnJheTxUPiB7XG5cdFx0Y29uc3Qgb2xkU2l6ZSA9IGFycmF5Lmxlbmd0aDtcblx0XHRpZiAob2xkU2l6ZSA9PT0gc2l6ZSkgcmV0dXJuIGFycmF5O1xuXHRcdGFycmF5Lmxlbmd0aCA9IHNpemU7XG5cdFx0aWYgKG9sZFNpemUgPCBzaXplKSB7XG5cdFx0XHRmb3IgKGxldCBpID0gb2xkU2l6ZTsgaSA8IHNpemU7IGkrKykgYXJyYXlbaV0gPSB2YWx1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGFycmF5O1xuXHR9XG5cblx0Ly8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiBvayBhbnkgaW4gdGhpcyBjYXNlXG5cdHN0YXRpYyBlbnN1cmVBcnJheUNhcGFjaXR5PFQ+IChhcnJheTogQXJyYXk8VD4sIHNpemU6IG51bWJlciwgdmFsdWU6IGFueSA9IDApOiBBcnJheTxUPiB7XG5cdFx0aWYgKGFycmF5Lmxlbmd0aCA+PSBzaXplKSByZXR1cm4gYXJyYXk7XG5cdFx0cmV0dXJuIFV0aWxzLnNldEFycmF5U2l6ZShhcnJheSwgc2l6ZSwgdmFsdWUpO1xuXHR9XG5cblx0c3RhdGljIG5ld0FycmF5PFQ+IChzaXplOiBudW1iZXIsIGRlZmF1bHRWYWx1ZTogVCk6IEFycmF5PFQ+IHtcblx0XHRjb25zdCBhcnJheTogVFtdID0gW107XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIGFycmF5W2ldID0gZGVmYXVsdFZhbHVlO1xuXHRcdHJldHVybiBhcnJheTtcblx0fVxuXG5cdHN0YXRpYyBuZXdGbG9hdEFycmF5IChzaXplOiBudW1iZXIpOiBOdW1iZXJBcnJheUxpa2Uge1xuXHRcdGlmIChVdGlscy5TVVBQT1JUU19UWVBFRF9BUlJBWVMpXG5cdFx0XHRyZXR1cm4gbmV3IEZsb2F0MzJBcnJheShzaXplKVxuXHRcdGVsc2Uge1xuXHRcdFx0Y29uc3QgYXJyYXk6IG51bWJlcltdID0gW107XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSBhcnJheVtpXSA9IDA7XG5cdFx0XHRyZXR1cm4gYXJyYXk7XG5cdFx0fVxuXHR9XG5cblx0c3RhdGljIG5ld1Nob3J0QXJyYXkgKHNpemU6IG51bWJlcik6IEludEFycmF5TGlrZSB7XG5cdFx0aWYgKFV0aWxzLlNVUFBPUlRTX1RZUEVEX0FSUkFZUylcblx0XHRcdHJldHVybiBuZXcgSW50MTZBcnJheShzaXplKVxuXHRcdGVsc2Uge1xuXHRcdFx0Y29uc3QgYXJyYXk6IG51bWJlcltdID0gW107XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSBhcnJheVtpXSA9IDA7XG5cdFx0XHRyZXR1cm4gYXJyYXk7XG5cdFx0fVxuXHR9XG5cblx0c3RhdGljIHRvRmxvYXRBcnJheSAoYXJyYXk6IEFycmF5PG51bWJlcj4pOiBudW1iZXJbXSB8IEZsb2F0MzJBcnJheSB7XG5cdFx0cmV0dXJuIFV0aWxzLlNVUFBPUlRTX1RZUEVEX0FSUkFZUyA/IG5ldyBGbG9hdDMyQXJyYXkoYXJyYXkpIDogYXJyYXk7XG5cdH1cblxuXHRzdGF0aWMgdG9TaW5nbGVQcmVjaXNpb24gKHZhbHVlOiBudW1iZXIpIHtcblx0XHRyZXR1cm4gVXRpbHMuU1VQUE9SVFNfVFlQRURfQVJSQVlTID8gTWF0aC5mcm91bmQodmFsdWUpIDogdmFsdWU7XG5cdH1cblxuXHQvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZml4IFdlYktpdCA2MDIgc3BlY2lmaWMgaXNzdWUgZGVzY3JpYmVkIGF0IGh0dHBzOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vZm9ydW0vZC8xMDEwOS1pb3MtMTAtZGlzYXBwZWFyaW5nLWdyYXBoaWNzXG5cdHN0YXRpYyB3ZWJraXQ2MDJCdWdmaXhIZWxwZXIgKGFscGhhOiBudW1iZXIpIHtcblx0fVxuXG5cdHN0YXRpYyBjb250YWluczxUPiAoYXJyYXk6IEFycmF5PFQ+LCBlbGVtZW50OiBULCBpZGVudGl0eSA9IHRydWUpIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKVxuXHRcdFx0aWYgKGFycmF5W2ldID09PSBlbGVtZW50KSByZXR1cm4gdHJ1ZTtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IG9rIGFueSBpbiB0aGlzIGNhc2Vcblx0c3RhdGljIGVudW1WYWx1ZSAodHlwZTogYW55LCBuYW1lOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdHlwZVtuYW1lWzBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpXTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgRGVidWdVdGlscyB7XG5cdHN0YXRpYyBsb2dCb25lcyAoc2tlbGV0b246IFNrZWxldG9uKSB7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBza2VsZXRvbi5ib25lcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgYm9uZSA9IHNrZWxldG9uLmJvbmVzW2ldLmFwcGxpZWRQb3NlO1xuXHRcdFx0Y29uc29sZS5sb2coYCR7Ym9uZS5ib25lLmRhdGEubmFtZX0sICR7Ym9uZS5hfSwgJHtib25lLmJ9LCAke2JvbmUuY30sICR7Ym9uZS5kfSwgJHtib25lLndvcmxkWH0sICR7Ym9uZS53b3JsZFl9YCk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBQb29sPFQ+IHtcblx0cHJpdmF0ZSBpdGVtcyA9IFtdIGFzIFRbXTtcblx0cHJpdmF0ZSBpbnN0YW50aWF0b3I6ICgpID0+IFQ7XG5cblx0Y29uc3RydWN0b3IgKGluc3RhbnRpYXRvcjogKCkgPT4gVCkge1xuXHRcdHRoaXMuaW5zdGFudGlhdG9yID0gaW5zdGFudGlhdG9yO1xuXHR9XG5cblx0b2J0YWluICgpIHtcblx0XHQvLyBiaW9tZS1pZ25vcmUgbGludC9zdHlsZS9ub05vbk51bGxBc3NlcnRpb246IGxlbmd0aCBjaGVja1xuXHRcdHJldHVybiB0aGlzLml0ZW1zLmxlbmd0aCA+IDAgPyB0aGlzLml0ZW1zLnBvcCgpISA6IHRoaXMuaW5zdGFudGlhdG9yKCk7XG5cdH1cblxuXHRmcmVlIChpdGVtOiBUKSB7XG5cdFx0Ly8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiBUIGNhbiBiZSBhbnl0aGluZ1xuXHRcdChpdGVtIGFzIGFueSkucmVzZXQ/LigpO1xuXHRcdHRoaXMuaXRlbXMucHVzaChpdGVtKTtcblx0fVxuXG5cdGZyZWVBbGwgKGl0ZW1zOiBBcnJheUxpa2U8VD4pIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKVxuXHRcdFx0dGhpcy5mcmVlKGl0ZW1zW2ldKTtcblx0fVxuXG5cdGNsZWFyICgpIHtcblx0XHR0aGlzLml0ZW1zLmxlbmd0aCA9IDA7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFZlY3RvcjIge1xuXHRjb25zdHJ1Y3RvciAocHVibGljIHggPSAwLCBwdWJsaWMgeSA9IDApIHtcblx0fVxuXG5cdHNldCAoeDogbnVtYmVyLCB5OiBudW1iZXIpOiBWZWN0b3IyIHtcblx0XHR0aGlzLnggPSB4O1xuXHRcdHRoaXMueSA9IHk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRsZW5ndGggKCkge1xuXHRcdGNvbnN0IHggPSB0aGlzLng7XG5cdFx0Y29uc3QgeSA9IHRoaXMueTtcblx0XHRyZXR1cm4gTWF0aC5zcXJ0KHggKiB4ICsgeSAqIHkpO1xuXHR9XG5cblx0bm9ybWFsaXplICgpIHtcblx0XHRjb25zdCBsZW4gPSB0aGlzLmxlbmd0aCgpO1xuXHRcdGlmIChsZW4gIT09IDApIHtcblx0XHRcdHRoaXMueCAvPSBsZW47XG5cdFx0XHR0aGlzLnkgLz0gbGVuO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgVGltZUtlZXBlciB7XG5cdG1heERlbHRhID0gMC4wNjQ7XG5cdGZyYW1lc1BlclNlY29uZCA9IDA7XG5cdGRlbHRhID0gMDtcblx0dG90YWxUaW1lID0gMDtcblxuXHRwcml2YXRlIGxhc3RUaW1lID0gRGF0ZS5ub3coKSAvIDEwMDA7XG5cdHByaXZhdGUgZnJhbWVDb3VudCA9IDA7XG5cdHByaXZhdGUgZnJhbWVUaW1lID0gMDtcblxuXHR1cGRhdGUgKCkge1xuXHRcdGNvbnN0IG5vdyA9IERhdGUubm93KCkgLyAxMDAwO1xuXHRcdHRoaXMuZGVsdGEgPSBub3cgLSB0aGlzLmxhc3RUaW1lO1xuXHRcdHRoaXMuZnJhbWVUaW1lICs9IHRoaXMuZGVsdGE7XG5cdFx0dGhpcy50b3RhbFRpbWUgKz0gdGhpcy5kZWx0YTtcblx0XHRpZiAodGhpcy5kZWx0YSA+IHRoaXMubWF4RGVsdGEpIHRoaXMuZGVsdGEgPSB0aGlzLm1heERlbHRhO1xuXHRcdHRoaXMubGFzdFRpbWUgPSBub3c7XG5cblx0XHR0aGlzLmZyYW1lQ291bnQrKztcblx0XHRpZiAodGhpcy5mcmFtZVRpbWUgPiAxKSB7XG5cdFx0XHR0aGlzLmZyYW1lc1BlclNlY29uZCA9IHRoaXMuZnJhbWVDb3VudCAvIHRoaXMuZnJhbWVUaW1lO1xuXHRcdFx0dGhpcy5mcmFtZVRpbWUgPSAwO1xuXHRcdFx0dGhpcy5mcmFtZUNvdW50ID0gMDtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcnJheUxpa2U8VD4ge1xuXHRsZW5ndGg6IG51bWJlcjtcblx0W246IG51bWJlcl06IFQ7XG59XG5cbmV4cG9ydCBjbGFzcyBXaW5kb3dlZE1lYW4ge1xuXHR2YWx1ZXM6IEFycmF5PG51bWJlcj47XG5cdGFkZGVkVmFsdWVzID0gMDtcblx0bGFzdFZhbHVlID0gMDtcblx0bWVhbiA9IDA7XG5cdGRpcnR5ID0gdHJ1ZTtcblxuXHRjb25zdHJ1Y3RvciAod2luZG93U2l6ZTogbnVtYmVyID0gMzIpIHtcblx0XHR0aGlzLnZhbHVlcyA9IG5ldyBBcnJheTxudW1iZXI+KHdpbmRvd1NpemUpO1xuXHR9XG5cblx0aGFzRW5vdWdoRGF0YSAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuYWRkZWRWYWx1ZXMgPj0gdGhpcy52YWx1ZXMubGVuZ3RoO1xuXHR9XG5cblx0YWRkVmFsdWUgKHZhbHVlOiBudW1iZXIpIHtcblx0XHRpZiAodGhpcy5hZGRlZFZhbHVlcyA8IHRoaXMudmFsdWVzLmxlbmd0aCkgdGhpcy5hZGRlZFZhbHVlcysrO1xuXHRcdHRoaXMudmFsdWVzW3RoaXMubGFzdFZhbHVlKytdID0gdmFsdWU7XG5cdFx0aWYgKHRoaXMubGFzdFZhbHVlID4gdGhpcy52YWx1ZXMubGVuZ3RoIC0gMSkgdGhpcy5sYXN0VmFsdWUgPSAwO1xuXHRcdHRoaXMuZGlydHkgPSB0cnVlO1xuXHR9XG5cblx0Z2V0TWVhbiAoKSB7XG5cdFx0aWYgKHRoaXMuaGFzRW5vdWdoRGF0YSgpKSB7XG5cdFx0XHRpZiAodGhpcy5kaXJ0eSkge1xuXHRcdFx0XHRsZXQgbWVhbiA9IDA7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy52YWx1ZXMubGVuZ3RoOyBpKyspXG5cdFx0XHRcdFx0bWVhbiArPSB0aGlzLnZhbHVlc1tpXTtcblx0XHRcdFx0dGhpcy5tZWFuID0gbWVhbiAvIHRoaXMudmFsdWVzLmxlbmd0aDtcblx0XHRcdFx0dGhpcy5kaXJ0eSA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXMubWVhbjtcblx0XHR9XG5cdFx0cmV0dXJuIDA7XG5cdH1cbn1cbiJdfQ==
|