@esotericsoftware/spine-core 4.3.2 → 4.3.4

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.
@@ -432,6 +432,9 @@ export class SkeletonClipping {
432
432
  offset += polygonSize;
433
433
  }
434
434
  }
435
+ this.clippedVerticesTyped = this._clippedVerticesTyped.subarray(0, this.clippedVerticesLength);
436
+ this.clippedUVsTyped = this._clippedUVsTyped.subarray(0, this.clippedUVsLength);
437
+ this.clippedTrianglesTyped = this._clippedTrianglesTyped.subarray(0, this.clippedTrianglesLength);
435
438
  return true;
436
439
  }
437
440
  const clipOutput = this.clipOutput;
@@ -798,4 +801,4 @@ export class SkeletonClipping {
798
801
  polygon.length = s - 2;
799
802
  }
800
803
  }
801
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25DbGlwcGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Ta2VsZXRvbkNsaXBwaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUsvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFvQyxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFckUsTUFBTSxPQUFPLGdCQUFnQjtJQUNwQixZQUFZLEdBQXdCLElBQUksQ0FBQztJQUN6QyxlQUFlLEdBQUcsRUFBYyxDQUFDO0lBQ2pDLGdCQUFnQixHQUFlLEVBQUUsQ0FBQztJQUNsQyxVQUFVLEdBQUcsRUFBYyxDQUFDO0lBQ3BDLGVBQWUsR0FBRyxFQUFjLENBQUM7SUFFakMscUVBQXFFO0lBQ3JFLFVBQVUsR0FBRyxFQUFjLENBQUM7SUFFNUIsZ0JBQWdCLEdBQUcsRUFBYyxDQUFDO0lBQ2xDLGVBQWUsR0FBRyxFQUFjLENBQUM7SUFFakMscUJBQXFCLEdBQWlCLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdELGdCQUFnQixHQUFpQixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RCxzQkFBc0IsR0FBZ0IsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUQsb0JBQW9CLEdBQWlCLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELGVBQWUsR0FBaUIsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQscUJBQXFCLEdBQWdCLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELHFCQUFxQixHQUFHLENBQUMsQ0FBQztJQUMxQixnQkFBZ0IsR0FBRyxDQUFDLENBQUM7SUFDckIsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0lBRW5CLE9BQU8sR0FBRyxFQUFjLENBQUM7SUFD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d0JBQ2YsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3JCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDckIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDaEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBRWhCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNoQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDaEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3JCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDckIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDaEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQ2pCLENBQUM7eUJBQU0sQ0FBQzt3QkFDUCxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDZixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDZixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ25CLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDbkIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUNwQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBRXBCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNoQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDaEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3JCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDckIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDaEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ2hCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDcEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUNwQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ3BCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFFcEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ2hCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNoQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3JCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDckIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3JCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNoQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDaEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUNwQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ3BCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDcEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO29CQUNyQixDQUFDO29CQUVELENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7b0JBQzVCLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUN2RCxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO29CQUNkLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ3hCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ3hCLEtBQUssSUFBSSxDQUFDLENBQUM7b0JBQ1gsTUFBTTtnQkFDUCxDQUFDO1lBQ0YsQ0FBQztRQUNGLENBQUM7UUFDRCxPQUFPLGVBQWUsSUFBSSxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVNLHFCQUFxQixDQUFFLFFBQXlCLEVBQUUsV0FBbUIsRUFBRSxTQUF3QyxFQUFFLGVBQXVCLEVBQUUsR0FBb0IsRUFBRSxNQUFNLEdBQUcsQ0FBQztRQUNoTCxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDakQsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQ3ZDLElBQUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1FBQ25ELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO1FBRWhDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsZUFBZSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztnQkFDOUIsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDLFdBQVcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pFLElBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNCLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDckMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO2dCQUM5QixNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxRQUFRLENBQUMsV0FBVyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDekUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMzQixNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztnQkFDOUIsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDLFdBQVcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pFLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDM0IsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFB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R0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQy9CLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNyQyxJQUFJLElBQUksS0FBSyxHQUFHLEtBQUssR0FBRyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ3RDLE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQ3BGLEtBQUssR0FBRyxLQUFLLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztZQUM1QixJQUFJLEdBQUcsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDMUIsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNkLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDZCxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ2QsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3BDLE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENB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LENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHR5cGUgeyBDbGlwcGluZ0F0dGFjaG1lbnQgfSBmcm9tIFwiLi9hdHRhY2htZW50cy9DbGlwcGluZ0F0dGFjaG1lbnQuanNcIjtcbmltcG9ydCB0eXBlIHsgU2tlbGV0b24gfSBmcm9tIFwiLi9Ta2VsZXRvbi5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTbG90IH0gZnJvbSBcIi4vU2xvdC5qc1wiO1xuaW1wb3J0IHsgVHJpYW5ndWxhdG9yIH0gZnJvbSBcIi4vVHJpYW5ndWxhdG9yLmpzXCI7XG5pbXBvcnQgeyB0eXBlIENvbG9yLCB0eXBlIE51bWJlckFycmF5TGlrZSwgVXRpbHMgfSBmcm9tIFwiLi9VdGlscy5qc1wiO1xuXG5leHBvcnQgY2xhc3MgU2tlbGV0b25DbGlwcGluZyB7XG5cdHByaXZhdGUgdHJpYW5ndWxhdG9yOiBUcmlhbmd1bGF0b3IgfCBudWxsID0gbnVsbDtcblx0cHJpdmF0ZSBjbGlwcGluZ1BvbHlnb24gPSBbXSBhcyBudW1iZXJbXTtcblx0cHJpdmF0ZSBjbGlwcGluZ1BvbHlnb25zOiBudW1iZXJbXVtdID0gW107XG5cdHByaXZhdGUgY2xpcE91dHB1dCA9IFtdIGFzIG51bWJlcltdO1xuXHRjbGlwcGVkVmVydGljZXMgPSBbXSBhcyBudW1iZXJbXTtcblxuXHQvKiogQW4gZW1wdHkgYXJyYXkgdW5sZXNzIHtAbGluayBjbGlwVHJpYW5nbGVzVW5wYWNrZWR9IHdhcyB1c2VkLiAqKi9cblx0Y2xpcHBlZFVWcyA9IFtdIGFzIG51bWJlcltdO1xuXG5cdGNsaXBwZWRUcmlhbmdsZXMgPSBbXSBhcyBudW1iZXJbXTtcblx0aW52ZXJzZVZlcnRpY2VzID0gW10gYXMgbnVtYmVyW107XG5cblx0X2NsaXBwZWRWZXJ0aWNlc1R5cGVkOiBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KDEwMjQpO1xuXHRfY2xpcHBlZFVWc1R5cGVkOiBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KDEwMjQpO1xuXHRfY2xpcHBlZFRyaWFuZ2xlc1R5cGVkOiBVaW50MTZBcnJheSA9IG5ldyBVaW50MTZBcnJheSgxMDI0KTtcblx0Y2xpcHBlZFZlcnRpY2VzVHlwZWQ6IEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoMCk7XG5cdGNsaXBwZWRVVnNUeXBlZDogRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSgwKTtcblx0Y2xpcHBlZFRyaWFuZ2xlc1R5cGVkOiBVaW50MTZBcnJheSA9IG5ldyBVaW50MTZBcnJheSgwKTtcblx0Y2xpcHBlZFZlcnRpY2VzTGVuZ3RoID0gMDtcblx0Y2xpcHBlZFVWc0xlbmd0aCA9IDA7XG5cdGNsaXBwZWRUcmlhbmdsZXNMZW5ndGggPSAwO1xuXG5cdHByaXZhdGUgc2NyYXRjaCA9IFtdIGFzIG51bWJlcltdO1xuXHRwcml2YXRlIGludmVyc2UgPSBmYWxzZTtcblxuXHRwcml2YXRlIGNsaXBBdHRhY2htZW50OiBDbGlwcGluZ0F0dGFjaG1lbnQgfCBudWxsID0gbnVsbDtcblxuXHRjbGlwU3RhcnQgKHNrZWxldG9uOiBTa2VsZXRvbiwgc2xvdDogU2xvdCwgY2xpcDogQ2xpcHBpbmdBdHRhY2htZW50KTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuY2xpcEF0dGFjaG1lbnQpIHJldHVybjtcblx0XHRjb25zdCBuID0gY2xpcC53b3JsZFZlcnRpY2VzTGVuZ3RoO1xuXHRcdHRoaXMuY2xpcEF0dGFjaG1lbnQgPSBjbGlwO1xuXHRcdHRoaXMuaW52ZXJzZSA9IGNsaXAuaW52ZXJzZTtcblxuXHRcdGNvbnN0IHZlcnRpY2VzID0gVXRpbHMuc2V0QXJyYXlTaXplKHRoaXMuY2xpcHBpbmdQb2x5Z29uLCBuKTtcblx0XHRjbGlwLmNvbXB1dGVXb3JsZFZlcnRpY2VzKHNrZWxldG9uLCBzbG90LCAwLCBuLCB2ZXJ0aWNlcywgMCwgMik7XG5cdFx0Y29uc3QgY2xpcHBpbmdQb2x5Z29uID0gdGhpcy5jbGlwcGluZ1BvbHlnb247XG5cdFx0Y29uc3QgY29udmV4ID0gdGhpcy5tYWtlQ2xvY2t3aXNlKGNsaXBwaW5nUG9seWdvbik7XG5cblx0XHRpZiAoY29udmV4IHx8IHRoaXMuaW52ZXJzZSB8fCBjbGlwLmNvbnZleCkge1xuXHRcdFx0aWYgKCFjb252ZXgpIHRoaXMubWFrZUNvbnZleChjbGlwcGluZ1BvbHlnb24pO1xuXHRcdFx0dGhpcy5jbGlwcGluZ1BvbHlnb24ucHVzaChjbGlwcGluZ1BvbHlnb25bMF0sIGNsaXBwaW5nUG9seWdvblsxXSk7XG5cdFx0XHR0aGlzLmNsaXBwaW5nUG9seWdvbnMucHVzaChjbGlwcGluZ1BvbHlnb24pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAodGhpcy50cmlhbmd1bGF0b3IgPT09IG51bGwpIHRoaXMudHJpYW5ndWxhdG9yID0gbmV3IFRyaWFuZ3VsYXRvcigpO1xuXHRcdFx0dGhpcy5jbGlwcGluZ1BvbHlnb25zLnB1c2goLi4udGhpcy50cmlhbmd1bGF0b3IuZGVjb21wb3NlKGNsaXBwaW5nUG9seWdvbiwgdGhpcy50cmlhbmd1bGF0b3IudHJpYW5ndWxhdGUoY2xpcHBpbmdQb2x5Z29uKSkpO1xuXHRcdH1cblx0fVxuXG5cdGNsaXBFbmQgKHNsb3Q/OiBTbG90KSB7XG5cdFx0aWYgKCF0aGlzLmNsaXBBdHRhY2htZW50KSByZXR1cm47XG5cdFx0aWYgKHNsb3QgJiYgdGhpcy5jbGlwQXR0YWNobWVudC5lbmRTbG90ICE9PSBzbG90LmRhdGEpIHJldHVybjtcblx0XHR0aGlzLmNsaXBBdHRhY2htZW50ID0gbnVsbDtcblx0XHR0aGlzLmNsaXBwaW5nUG9seWdvbnMubGVuZ3RoID0gMDtcblx0fVxuXG5cdGlzQ2xpcHBpbmcgKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmNsaXBBdHRhY2htZW50ICE9IG51bGw7XG5cdH1cblxuXHRjbGlwVHJpYW5nbGVzICh2ZXJ0aWNlczogTnVtYmVyQXJyYXlMaWtlLCB0cmlhbmdsZXM6IE51bWJlckFycmF5TGlrZSwgdHJpYW5nbGVzTGVuZ3RoOiBudW1iZXIpOiBib29sZWFuO1xuXHRjbGlwVHJpYW5nbGVzICh2ZXJ0aWNlczogTnVtYmVyQXJyYXlMaWtlLCB0cmlhbmdsZXM6IE51bWJlckFycmF5TGlrZSwgdHJpYW5nbGVzTGVuZ3RoOiBudW1iZXIsXG5cdFx0dXZzOiBOdW1iZXJBcnJheUxpa2UsIGxpZ2h0OiBDb2xvciwgZGFyazogQ29sb3IsIHR3b0NvbG9yOiBib29sZWFuLCBzdHJpZGU6IG51bWJlcik6IGJvb2xlYW47XG5cdGNsaXBUcmlhbmdsZXMgKHZlcnRpY2VzOiBOdW1iZXJBcnJheUxpa2UsIHRyaWFuZ2xlczogTnVtYmVyQXJyYXlMaWtlLCB0cmlhbmdsZXNMZW5ndGg6IG51bWJlcixcblx0XHR1dnM/OiBOdW1iZXJBcnJheUxpa2UsIGxpZ2h0PzogQ29sb3IsIGRhcms/OiBDb2xvciwgdHdvQ29sb3I/OiBib29sZWFuLCBzdHJpZGU/OiBudW1iZXIpOiBib29sZWFuIHtcblxuXHRcdHJldHVybiAodXZzICYmIGxpZ2h0ICYmIGRhcmsgJiYgdHlwZW9mIHR3b0NvbG9yID09PSAnYm9vbGVhbicgJiYgdHlwZW9mIHN0cmlkZSA9PT0gJ251bWJlcicpXG5cdFx0XHQ/IHRoaXMuY2xpcFRyaWFuZ2xlc1JlbmRlcih2ZXJ0aWNlcywgdHJpYW5nbGVzLCB0cmlhbmdsZXNMZW5ndGgsIHV2cywgbGlnaHQsIGRhcmssIHR3b0NvbG9yLCBzdHJpZGUpXG5cdFx0XHQ6IHRoaXMuY2xpcFRyaWFuZ2xlc05vUmVuZGVyKHZlcnRpY2VzLCB0cmlhbmdsZXMsIHRyaWFuZ2xlc0xlbmd0aCk7XG5cdH1cblxuXHRwcml2YXRlIGNsaXBUcmlhbmdsZXNOb1JlbmRlciAodmVydGljZXM6IE51bWJlckFycmF5TGlrZSwgdHJpYW5nbGVzOiBOdW1iZXJBcnJheUxpa2UsIHRyaWFuZ2xlc0xlbmd0aDogbnVtYmVyKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgY2xpcHBlZFZlcnRpY2VzID0gdGhpcy5jbGlwcGVkVmVydGljZXM7XG5cdFx0Y2xpcHBlZFZlcnRpY2VzLmxlbmd0aCA9IDA7XG5cdFx0Y29uc3QgY2xpcHBlZFRyaWFuZ2xlcyA9IHRoaXMuY2xpcHBlZFRyaWFuZ2xlcztcblx0XHRjbGlwcGVkVHJpYW5nbGVzLmxlbmd0aCA9IDA7XG5cdFx0bGV0IGluZGV4ID0gMDtcblxuXHRcdGlmICh0aGlzLmludmVyc2UpIHtcblx0XHRcdGNvbnN0IHBvbHlnb24gPSB0aGlzLmNsaXBwaW5nUG9seWdvbnNbMF07XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRyaWFuZ2xlc0xlbmd0aDsgaSArPSAzKSB7XG5cdFx0XHRcdGxldCB0ID0gdHJpYW5nbGVzW2ldIDw8IDE7XG5cdFx0XHRcdGNvbnN0IHgxID0gdmVydGljZXNbdF0sIHkxID0gdmVydGljZXNbdCArIDFdO1xuXHRcdFx0XHR0ID0gdHJpYW5nbGVzW2kgKyAxXSA8PCAxO1xuXHRcdFx0XHRjb25zdCB4MiA9IHZlcnRpY2VzW3RdLCB5MiA9IHZlcnRpY2VzW3QgKyAxXTtcblx0XHRcdFx0dCA9IHRyaWFuZ2xlc1tpICsgMl0gPDwgMTtcblx0XHRcdFx0Y29uc3QgeDMgPSB2ZXJ0aWNlc1t0XSwgeTMgPSB2ZXJ0aWNlc1t0ICsgMV07XG5cdFx0XHRcdHRoaXMuY2xpcEludmVyc2UoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgcG9seWdvbik7XG5cblx0XHRcdFx0Y29uc3QgaXYgPSB0aGlzLmludmVyc2VWZXJ0aWNlcztcblx0XHRcdFx0Zm9yIChsZXQgb2Zmc2V0ID0gMCwgbm4gPSB0aGlzLmludmVyc2VWZXJ0aWNlcy5sZW5ndGg7IG9mZnNldCA8IG5uOykge1xuXHRcdFx0XHRcdGNvbnN0IHBvbHlnb25TaXplID0gaXZbb2Zmc2V0KytdO1xuXHRcdFx0XHRcdGxldCB2ZXJ0ZXhDb3VudCA9IHBvbHlnb25TaXplID4+IDEsIHMgPSBjbGlwcGVkVmVydGljZXMubGVuZ3RoO1xuXG5cdFx0XHRcdFx0Y29uc3QgY3YgPSBVdGlscy5zZXRBcnJheVNpemUoY2xpcHBlZFZlcnRpY2VzLCBzICsgcG9seWdvblNpemUpO1xuXHRcdFx0XHRcdFV0aWxzLmFycmF5Q29weShpdiwgb2Zmc2V0LCBjdiwgcywgcG9seWdvblNpemUpO1xuXG5cdFx0XHRcdFx0cyA9IGNsaXBwZWRUcmlhbmdsZXMubGVuZ3RoO1xuXHRcdFx0XHRcdGNvbnN0IGN0ID0gVXRpbHMuc2V0QXJyYXlTaXplKGNsaXBwZWRUcmlhbmdsZXMsIHMgKyAzICogKHZlcnRleENvdW50IC0gMikpO1xuXHRcdFx0XHRcdGZvciAobGV0IGlpID0gMTsgaWkgPCB2ZXJ0ZXhDb3VudCAtIDE7IGlpKyssIHMgKz0gMykge1xuXHRcdFx0XHRcdFx0Y3Rbc10gPSBpbmRleDtcblx0XHRcdFx0XHRcdGN0W3MgKyAxXSA9IGluZGV4ICsgaWk7XG5cdFx0XHRcdFx0XHRjdFtzICsgMl0gPSBpbmRleCArIGlpICsgMTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aW5kZXggKz0gdmVydGV4Q291bnQ7XG5cdFx0XHRcdFx0b2Zmc2V0ICs9IHBvbHlnb25TaXplO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRjb25zdCBjbGlwT3V0cHV0ID0gdGhpcy5jbGlwT3V0cHV0O1xuXHRcdGNvbnN0IHBvbHlnb25zID0gdGhpcy5jbGlwcGluZ1BvbHlnb25zO1xuXHRcdGNvbnN0IHBvbHlnb25zQ291bnQgPSBwb2x5Z29ucy5sZW5ndGg7XG5cdFx0bGV0IGNsaXBPdXRwdXRJdGVtcyA9IG51bGw7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0cmlhbmdsZXNMZW5ndGg7IGkgKz0gMykge1xuXHRcdFx0bGV0IHQgPSB0cmlhbmdsZXNbaV0gPDwgMTtcblx0XHRcdGNvbnN0IHgxID0gdmVydGljZXNbdF0sIHkxID0gdmVydGljZXNbdCArIDFdO1xuXHRcdFx0dCA9IHRyaWFuZ2xlc1tpICsgMV0gPDwgMTtcblx0XHRcdGNvbnN0IHgyID0gdmVydGljZXNbdF0sIHkyID0gdmVydGljZXNbdCArIDFdO1xuXHRcdFx0dCA9IHRyaWFuZ2xlc1tpICsgMl0gPDwgMTtcblx0XHRcdGNvbnN0IHgzID0gdmVydGljZXNbdF0sIHkzID0gdmVydGljZXNbdCArIDFdO1xuXHRcdFx0Zm9yIChsZXQgcCA9IDA7IHAgPCBwb2x5Z29uc0NvdW50OyBwKyspIHtcblx0XHRcdFx0bGV0IHMgPSBjbGlwcGVkVmVydGljZXMubGVuZ3RoO1xuXHRcdFx0XHRpZiAodGhpcy5jbGlwKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHBvbHlnb25zW3BdKSkge1xuXHRcdFx0XHRcdGNsaXBPdXRwdXRJdGVtcyA9IHRoaXMuY2xpcE91dHB1dDtcblx0XHRcdFx0XHRjb25zdCBjbGlwT3V0cHV0TGVuZ3RoID0gY2xpcE91dHB1dC5sZW5ndGg7XG5cdFx0XHRcdFx0aWYgKGNsaXBPdXRwdXRMZW5ndGggPT09IDApIGNvbnRpbnVlO1xuXHRcdFx0XHRcdGxldCBjbGlwT3V0cHV0Q291bnQgPSBjbGlwT3V0cHV0TGVuZ3RoID4+IDE7XG5cblx0XHRcdFx0XHRjb25zdCBjdiA9IFV0aWxzLnNldEFycmF5U2l6ZShjbGlwcGVkVmVydGljZXMsIHMgKyBjbGlwT3V0cHV0TGVuZ3RoKTtcblx0XHRcdFx0XHRVdGlscy5hcnJheUNvcHkoY2xpcE91dHB1dEl0ZW1zLCAwLCBjdiwgcywgY2xpcE91dHB1dExlbmd0aCk7XG5cblx0XHRcdFx0XHRzID0gY2xpcHBlZFRyaWFuZ2xlcy5sZW5ndGg7XG5cdFx0XHRcdFx0Y29uc3QgY3QgPSBVdGlscy5zZXRBcnJheVNpemUoY2xpcHBlZFRyaWFuZ2xlcywgcyArIDMgKiAoY2xpcE91dHB1dENvdW50IC0gMikpO1xuXHRcdFx0XHRcdGNsaXBPdXRwdXRDb3VudC0tO1xuXHRcdFx0XHRcdGZvciAobGV0IGlpID0gMTsgaWkgPCBjbGlwT3V0cHV0Q291bnQ7IGlpKyssIHMgKz0gMykge1xuXHRcdFx0XHRcdFx0Y3Rbc10gPSBpbmRleDtcblx0XHRcdFx0XHRcdGN0W3MgKyAxXSA9IChpbmRleCArIGlpKTtcblx0XHRcdFx0XHRcdGN0W3MgKyAyXSA9IChpbmRleCArIGlpICsgMSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGluZGV4ICs9IGNsaXBPdXRwdXRDb3VudDtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb25zdCBjdiA9IFV0aWxzLnNldEFycmF5U2l6ZShjbGlwcGVkVmVydGljZXMsIHMgKyAzICogMik7XG5cdFx0XHRcdFx0Y3Zbc10gPSB4MTtcblx0XHRcdFx0XHRjdltzICsgMV0gPSB5MTtcblx0XHRcdFx0XHRjdltzICsgMl0gPSB4Mjtcblx0XHRcdFx0XHRjdltzICsgM10gPSB5Mjtcblx0XHRcdFx0XHRjdltzICsgNF0gPSB4Mztcblx0XHRcdFx0XHRjdltzICsgNV0gPSB5MztcblxuXHRcdFx0XHRcdHMgPSBjbGlwcGVkVHJpYW5nbGVzLmxlbmd0aDtcblx0XHRcdFx0XHRjb25zdCBjdCA9IFV0aWxzLnNldEFycmF5U2l6ZShjbGlwcGVkVHJpYW5nbGVzLCBzICsgMyk7XG5cdFx0XHRcdFx0Y3Rbc10gPSBpbmRleDtcblx0XHRcdFx0XHRjdFtzICsgMV0gPSAoaW5kZXggKyAxKTtcblx0XHRcdFx0XHRjdFtzICsgMl0gPSAoaW5kZXggKyAyKTtcblx0XHRcdFx0XHRpbmRleCArPSAzO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBjbGlwT3V0cHV0SXRlbXMgIT0gbnVsbDtcblx0fVxuXG5cdHByaXZhdGUgY2xpcFRyaWFuZ2xlc1JlbmRlciAodmVydGljZXM6IE51bWJlckFycmF5TGlrZSwgdHJpYW5nbGVzOiBOdW1iZXJBcnJheUxpa2UsIHRyaWFuZ2xlc0xlbmd0aDogbnVtYmVyLCB1dnM6IE51bWJlckFycmF5TGlrZSwgbGlnaHQ6IENvbG9yLCBkYXJrOiBDb2xvcixcblx0XHR0d29Db2xvcjogYm9vbGVhbiwgc3RyaWRlOiBudW1iZXIpOiBib29sZWFuIHtcblx0XHRjb25zdCBjbGlwcGVkVmVydGljZXMgPSB0aGlzLmNsaXBwZWRWZXJ0aWNlcztcblx0XHRjbGlwcGVkVmVydGljZXMubGVuZ3RoID0gMDtcblx0XHRjb25zdCBjbGlwcGVkVHJpYW5nbGVzID0gdGhpcy5jbGlwcGVkVHJpYW5nbGVzO1xuXHRcdGNsaXBwZWRUcmlhbmdsZXMubGVuZ3RoID0gMDtcblx0XHRsZXQgaW5kZXggPSAwO1xuXG5cdFx0aWYgKHRoaXMuaW52ZXJzZSkge1xuXHRcdFx0Y29uc3QgcG9seWdvbiA9IHRoaXMuY2xpcHBpbmdQb2x5Z29uc1swXTtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdHJpYW5nbGVzTGVuZ3RoOyBpICs9IDMpIHtcblx0XHRcdFx0bGV0IHQwID0gdHJpYW5nbGVzW2ldLCB0MSA9IHRyaWFuZ2xlc1tpICsgMV0sIHQyID0gdHJpYW5nbGVzW2kgKyAyXTtcblx0XHRcdFx0Y29uc3QgeDEgPSB2ZXJ0aWNlc1t0MCAqIHN0cmlkZV0sIHkxID0gdmVydGljZXNbdDAgKiBzdHJpZGUgKyAxXTtcblx0XHRcdFx0Y29uc3QgeDIgPSB2ZXJ0aWNlc1t0MSAqIHN0cmlkZV0sIHkyID0gdmVydGljZXNbdDEgKiBzdHJpZGUgKyAxXTtcblx0XHRcdFx0Y29uc3QgeDMgPSB2ZXJ0aWNlc1t0MiAqIHN0cmlkZV0sIHkzID0gdmVydGljZXNbdDIgKiBzdHJpZGUgKyAxXTtcblx0XHRcdFx0dGhpcy5jbGlwSW52ZXJzZSh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCBwb2x5Z29uKTtcblx0XHRcdFx0Y29uc3Qgbm4gPSB0aGlzLmludmVyc2VWZXJ0aWNlcy5sZW5ndGg7XG5cdFx0XHRcdGlmIChubiA9PT0gMCkgY29udGludWU7XG5cblx0XHRcdFx0Y29uc3QgdTEgPSB1dnNbdDAgPDw9IDFdLCB2MSA9IHV2c1t0MCArIDFdO1xuXHRcdFx0XHRjb25zdCB1MiA9IHV2c1t0MSA8PD0gMV0sIHYyID0gdXZzW3QxICsgMV07XG5cdFx0XHRcdGNvbnN0IHUzID0gdXZzW3QyIDw8PSAxXSwgdjMgPSB1dnNbdDIgKyAxXTtcblx0XHRcdFx0Y29uc3QgZDAgPSB5MiAtIHkzLCBkMSA9IHgzIC0geDIsIGQyID0geDEgLSB4MywgZDQgPSB5MyAtIHkxLCBkID0gMSAvIChkMCAqIGQyICsgZDEgKiAoeTEgLSB5MykpO1xuXHRcdFx0XHRjb25zdCBpdiA9IHRoaXMuaW52ZXJzZVZlcnRpY2VzO1xuXHRcdFx0XHRmb3IgKGxldCBvZmZzZXQgPSAwOyBvZmZzZXQgPCBubjspIHtcblx0XHRcdFx0XHRjb25zdCBwb2x5Z29uU2l6ZSA9IGl2W29mZnNldCsrXTtcblx0XHRcdFx0XHRjb25zdCB2ZXJ0ZXhDb3VudCA9IHBvbHlnb25TaXplID4+IDE7XG5cblx0XHRcdFx0XHRsZXQgcyA9IGNsaXBwZWRWZXJ0aWNlcy5sZW5ndGg7XG5cdFx0XHRcdFx0Y29uc3QgY3YgPSBVdGlscy5zZXRBcnJheVNpemUoY2xpcHBlZFZlcnRpY2VzLCBzICsgdmVydGV4Q291bnQgKiBzdHJpZGUpO1xuXHRcdFx0XHRcdGZvciAobGV0IGlpID0gMDsgaWkgPCBwb2x5Z29uU2l6ZTsgaWkgKz0gMiwgcyArPSBzdHJpZGUpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHggPSBpdltvZmZzZXQgKyBpaV0sIHkgPSBpdltvZmZzZXQgKyBpaSArIDFdO1xuXHRcdFx0XHRcdFx0Y3Zbc10gPSB4O1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDFdID0geTtcblx0XHRcdFx0XHRcdGN2W3MgKyAyXSA9IGxpZ2h0LnI7XG5cdFx0XHRcdFx0XHRjdltzICsgM10gPSBsaWdodC5nO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDRdID0gbGlnaHQuYjtcblx0XHRcdFx0XHRcdGN2W3MgKyA1XSA9IGxpZ2h0LmE7XG5cdFx0XHRcdFx0XHRjb25zdCBjMCA9IHggLSB4MywgYzEgPSB5IC0geTMsIGEgPSAoZDAgKiBjMCArIGQxICogYzEpICogZCwgYiA9IChkNCAqIGMwICsgZDIgKiBjMSkgKiBkLCBjID0gMSAtIGEgLSBiO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDZdID0gdTEgKiBhICsgdTIgKiBiICsgdTMgKiBjO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDddID0gdjEgKiBhICsgdjIgKiBiICsgdjMgKiBjO1xuXHRcdFx0XHRcdFx0aWYgKHR3b0NvbG9yKSB7XG5cdFx0XHRcdFx0XHRcdGN2W3MgKyA4XSA9IGRhcmsucjtcblx0XHRcdFx0XHRcdFx0Y3ZbcyArIDldID0gZGFyay5nO1xuXHRcdFx0XHRcdFx0XHRjdltzICsgMTBdID0gZGFyay5iO1xuXHRcdFx0XHRcdFx0XHRjdltzICsgMTFdID0gZGFyay5hO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHMgPSBjbGlwcGVkVHJpYW5nbGVzLmxlbmd0aDtcblx0XHRcdFx0XHRjb25zdCBjdCA9IFV0aWxzLnNldEFycmF5U2l6ZShjbGlwcGVkVHJpYW5nbGVzLCBzICsgMyAqICh2ZXJ0ZXhDb3VudCAtIDIpKTtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDE7IGlpIDwgdmVydGV4Q291bnQgLSAxOyBpaSsrLCBzICs9IDMpIHtcblx0XHRcdFx0XHRcdGN0W3NdID0gaW5kZXg7XG5cdFx0XHRcdFx0XHRjdFtzICsgMV0gPSBpbmRleCArIGlpO1xuXHRcdFx0XHRcdFx0Y3RbcyArIDJdID0gaW5kZXggKyBpaSArIDE7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGluZGV4ICs9IHZlcnRleENvdW50O1xuXHRcdFx0XHRcdG9mZnNldCArPSBwb2x5Z29uU2l6ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cblx0XHRjb25zdCBjbGlwT3V0cHV0ID0gdGhpcy5jbGlwT3V0cHV0O1xuXHRcdGNvbnN0IHBvbHlnb25zID0gdGhpcy5jbGlwcGluZ1BvbHlnb25zO1xuXHRcdGNvbnN0IHBvbHlnb25zQ291bnQgPSB0aGlzLmNsaXBwaW5nUG9seWdvbnMubGVuZ3RoO1xuXHRcdGxldCBjbGlwT3V0cHV0SXRlbXMgPSBudWxsO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdHJpYW5nbGVzTGVuZ3RoOyBpICs9IDMpIHtcblx0XHRcdGxldCB0ID0gdHJpYW5nbGVzW2ldO1xuXHRcdFx0Y29uc3QgeDEgPSB2ZXJ0aWNlc1t0ICogc3RyaWRlXSwgeTEgPSB2ZXJ0aWNlc1t0ICogc3RyaWRlICsgMV07XG5cdFx0XHRjb25zdCB1MSA9IHV2c1t0IDw8IDFdLCB2MSA9IHV2c1sodCA8PCAxKSArIDFdO1xuXHRcdFx0dCA9IHRyaWFuZ2xlc1tpICsgMV07XG5cdFx0XHRjb25zdCB4MiA9IHZlcnRpY2VzW3QgKiBzdHJpZGVdLCB5MiA9IHZlcnRpY2VzW3QgKiBzdHJpZGUgKyAxXTtcblx0XHRcdGNvbnN0IHUyID0gdXZzW3QgPDwgMV0sIHYyID0gdXZzWyh0IDw8IDEpICsgMV07XG5cdFx0XHR0ID0gdHJpYW5nbGVzW2kgKyAyXTtcblx0XHRcdGNvbnN0IHgzID0gdmVydGljZXNbdCAqIHN0cmlkZV0sIHkzID0gdmVydGljZXNbdCAqIHN0cmlkZSArIDFdO1xuXHRcdFx0Y29uc3QgdTMgPSB1dnNbdCA8PCAxXSwgdjMgPSB1dnNbKHQgPDwgMSkgKyAxXTtcblx0XHRcdGNvbnN0IGQwID0geTIgLSB5MywgZDEgPSB4MyAtIHgyLCBkMiA9IHgxIC0geDMsIGQ0ID0geTMgLSB5MSwgZCA9IDEgLyAoZDAgKiBkMiArIGQxICogKHkxIC0geTMpKTtcblx0XHRcdGZvciAobGV0IHAgPSAwOyBwIDwgcG9seWdvbnNDb3VudDsgcCsrKSB7XG5cdFx0XHRcdGxldCBzID0gY2xpcHBlZFZlcnRpY2VzLmxlbmd0aDtcblx0XHRcdFx0aWYgKHRoaXMuY2xpcCh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCBwb2x5Z29uc1twXSkpIHtcblx0XHRcdFx0XHRjbGlwT3V0cHV0SXRlbXMgPSB0aGlzLmNsaXBPdXRwdXQ7XG5cdFx0XHRcdFx0Y29uc3QgY2xpcE91dHB1dExlbmd0aCA9IGNsaXBPdXRwdXQubGVuZ3RoO1xuXHRcdFx0XHRcdGlmIChjbGlwT3V0cHV0TGVuZ3RoID09PSAwKSBjb250aW51ZTtcblx0XHRcdFx0XHRsZXQgY2xpcE91dHB1dENvdW50ID0gY2xpcE91dHB1dExlbmd0aCA+PiAxO1xuXG5cdFx0XHRcdFx0Y29uc3QgY3YgPSBVdGlscy5zZXRBcnJheVNpemUoY2xpcHBlZFZlcnRpY2VzLCBzICsgY2xpcE91dHB1dENvdW50ICogc3RyaWRlKTtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgY2xpcE91dHB1dExlbmd0aDsgaWkgKz0gMiwgcyArPSBzdHJpZGUpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHggPSBjbGlwT3V0cHV0SXRlbXNbaWldLCB5ID0gY2xpcE91dHB1dEl0ZW1zW2lpICsgMV07XG5cdFx0XHRcdFx0XHRjdltzXSA9IHg7XG5cdFx0XHRcdFx0XHRjdltzICsgMV0gPSB5O1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDJdID0gbGlnaHQucjtcblx0XHRcdFx0XHRcdGN2W3MgKyAzXSA9IGxpZ2h0Lmc7XG5cdFx0XHRcdFx0XHRjdltzICsgNF0gPSBsaWdodC5iO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDVdID0gbGlnaHQuYTtcblx0XHRcdFx0XHRcdGNvbnN0IGMwID0geCAtIHgzLCBjMSA9IHkgLSB5MywgYSA9IChkMCAqIGMwICsgZDEgKiBjMSkgKiBkLCBiID0gKGQ0ICogYzAgKyBkMiAqIGMxKSAqIGQsIGMgPSAxIC0gYSAtIGI7XG5cdFx0XHRcdFx0XHRjdltzICsgNl0gPSB1MSAqIGEgKyB1MiAqIGIgKyB1MyAqIGM7XG5cdFx0XHRcdFx0XHRjdltzICsgN10gPSB2MSAqIGEgKyB2MiAqIGIgKyB2MyAqIGM7XG5cdFx0XHRcdFx0XHRpZiAodHdvQ29sb3IpIHtcblx0XHRcdFx0XHRcdFx0Y3ZbcyArIDhdID0gZGFyay5yO1xuXHRcdFx0XHRcdFx0XHRjdltzICsgOV0gPSBkYXJrLmc7XG5cdFx0XHRcdFx0XHRcdGN2W3MgKyAxMF0gPSBkYXJrLmI7XG5cdFx0XHRcdFx0XHRcdGN2W3MgKyAxMV0gPSBkYXJrLmE7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cyA9IGNsaXBwZWRUcmlhbmdsZXMubGVuZ3RoO1xuXHRcdFx0XHRcdGNvbnN0IGN0ID0gVXRpbHMuc2V0QXJyYXlTaXplKGNsaXBwZWRUcmlhbmdsZXMsIHMgKyAzICogKGNsaXBPdXRwdXRDb3VudCAtIDIpKTtcblx0XHRcdFx0XHRjbGlwT3V0cHV0Q291bnQtLTtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDE7IGlpIDwgY2xpcE91dHB1dENvdW50OyBpaSsrLCBzICs9IDMpIHtcblx0XHRcdFx0XHRcdGN0W3NdID0gaW5kZXg7XG5cdFx0XHRcdFx0XHRjdFtzICsgMV0gPSAoaW5kZXggKyBpaSk7XG5cdFx0XHRcdFx0XHRjdFtzICsgMl0gPSAoaW5kZXggKyBpaSArIDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpbmRleCArPSBjbGlwT3V0cHV0Q291bnQgKyAxO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnN0IGN2ID0gVXRpbHMuc2V0QXJyYXlTaXplKGNsaXBwZWRWZXJ0aWNlcywgcyArIDMgKiBzdHJpZGUpO1xuXHRcdFx0XHRcdGN2W3NdID0geDE7XG5cdFx0XHRcdFx0Y3ZbcyArIDFdID0geTE7XG5cdFx0XHRcdFx0Y3ZbcyArIDJdID0gbGlnaHQucjtcblx0XHRcdFx0XHRjdltzICsgM10gPSBsaWdodC5nO1xuXHRcdFx0XHRcdGN2W3MgKyA0XSA9IGxpZ2h0LmI7XG5cdFx0XHRcdFx0Y3ZbcyArIDVdID0gbGlnaHQuYTtcblx0XHRcdFx0XHRpZiAoIXR3b0NvbG9yKSB7XG5cdFx0XHRcdFx0XHRjdltzICsgNl0gPSB1MTtcblx0XHRcdFx0XHRcdGN2W3MgKyA3XSA9IHYxO1xuXG5cdFx0XHRcdFx0XHRjdltzICsgOF0gPSB4Mjtcblx0XHRcdFx0XHRcdGN2W3MgKyA5XSA9IHkyO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDEwXSA9IGxpZ2h0LnI7XG5cdFx0XHRcdFx0XHRjdltzICsgMTFdID0gbGlnaHQuZztcblx0XHRcdFx0XHRcdGN2W3MgKyAxMl0gPSBsaWdodC5iO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDEzXSA9IGxpZ2h0LmE7XG5cdFx0XHRcdFx0XHRjdltzICsgMTRdID0gdTI7XG5cdFx0XHRcdFx0XHRjdltzICsgMTVdID0gdjI7XG5cblx0XHRcdFx0XHRcdGN2W3MgKyAxNl0gPSB4Mztcblx0XHRcdFx0XHRcdGN2W3MgKyAxN10gPSB5Mztcblx0XHRcdFx0XHRcdGN2W3MgKyAxOF0gPSBsaWdodC5yO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDE5XSA9IGxpZ2h0Lmc7XG5cdFx0XHRcdFx0XHRjdltzICsgMjBdID0gbGlnaHQuYjtcblx0XHRcdFx0XHRcdGN2W3MgKyAyMV0gPSBsaWdodC5hO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDIyXSA9IHUzO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDIzXSA9IHYzO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRjdltzICsgNl0gPSB1MTtcblx0XHRcdFx0XHRcdGN2W3MgKyA3XSA9IHYxO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDhdID0gZGFyay5yO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDldID0gZGFyay5nO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDEwXSA9IGRhcmsuYjtcblx0XHRcdFx0XHRcdGN2W3MgKyAxMV0gPSBkYXJrLmE7XG5cblx0XHRcdFx0XHRcdGN2W3MgKyAxMl0gPSB4Mjtcblx0XHRcdFx0XHRcdGN2W3MgKyAxM10gPSB5Mjtcblx0XHRcdFx0XHRcdGN2W3MgKyAxNF0gPSBsaWdodC5yO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDE1XSA9IGxpZ2h0Lmc7XG5cdFx0XHRcdFx0XHRjdltzICsgMTZdID0gbGlnaHQuYjtcblx0XHRcdFx0XHRcdGN2W3MgKyAxN10gPSBsaWdodC5hO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDE4XSA9IHUyO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDE5XSA9IHYyO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDIwXSA9IGRhcmsucjtcblx0XHRcdFx0XHRcdGN2W3MgKyAyMV0gPSBkYXJrLmc7XG5cdFx0XHRcdFx0XHRjdltzICsgMjJdID0gZGFyay5iO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDIzXSA9IGRhcmsuYTtcblxuXHRcdFx0XHRcdFx0Y3ZbcyArIDI0XSA9IHgzO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDI1XSA9IHkzO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDI2XSA9IGxpZ2h0LnI7XG5cdFx0XHRcdFx0XHRjdltzICsgMjddID0gbGlnaHQuZztcblx0XHRcdFx0XHRcdGN2W3MgKyAyOF0gPSBsaWdodC5iO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDI5XSA9IGxpZ2h0LmE7XG5cdFx0XHRcdFx0XHRjdltzICsgMzBdID0gdTM7XG5cdFx0XHRcdFx0XHRjdltzICsgMzFdID0gdjM7XG5cdFx0XHRcdFx0XHRjdltzICsgMzJdID0gZGFyay5yO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDMzXSA9IGRhcmsuZztcblx0XHRcdFx0XHRcdGN2W3MgKyAzNF0gPSBkYXJrLmI7XG5cdFx0XHRcdFx0XHRjdltzICsgMzVdID0gZGFyay5hO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHMgPSBjbGlwcGVkVHJpYW5nbGVzLmxlbmd0aDtcblx0XHRcdFx0XHRjb25zdCBjdCA9IFV0aWxzLnNldEFycmF5U2l6ZShjbGlwcGVkVHJpYW5nbGVzLCBzICsgMyk7XG5cdFx0XHRcdFx0Y3Rbc10gPSBpbmRleDtcblx0XHRcdFx0XHRjdFtzICsgMV0gPSAoaW5kZXggKyAxKTtcblx0XHRcdFx0XHRjdFtzICsgMl0gPSAoaW5kZXggKyAyKTtcblx0XHRcdFx0XHRpbmRleCArPSAzO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBjbGlwT3V0cHV0SXRlbXMgIT0gbnVsbDtcblx0fVxuXG5cdHB1YmxpYyBjbGlwVHJpYW5nbGVzVW5wYWNrZWQgKHZlcnRpY2VzOiBOdW1iZXJBcnJheUxpa2UsIHZlcnRleFN0YXJ0OiBudW1iZXIsIHRyaWFuZ2xlczogTnVtYmVyQXJyYXlMaWtlIHwgVWludDE2QXJyYXksIHRyaWFuZ2xlc0xlbmd0aDogbnVtYmVyLCB1dnM6IE51bWJlckFycmF5TGlrZSwgc3RyaWRlID0gMik6IGJvb2xlYW4ge1xuXHRcdGxldCBjbGlwcGVkVmVydGljZXMgPSB0aGlzLl9jbGlwcGVkVmVydGljZXNUeXBlZDtcblx0XHRsZXQgY2xpcHBlZFVWcyA9IHRoaXMuX2NsaXBwZWRVVnNUeXBlZDtcblx0XHRsZXQgY2xpcHBlZFRyaWFuZ2xlcyA9IHRoaXMuX2NsaXBwZWRUcmlhbmdsZXNUeXBlZDtcblx0XHRsZXQgaW5kZXggPSAwO1xuXHRcdHRoaXMuY2xpcHBlZFZlcnRpY2VzTGVuZ3RoID0gMDtcblx0XHR0aGlzLmNsaXBwZWRVVnNMZW5ndGggPSAwO1xuXHRcdHRoaXMuY2xpcHBlZFRyaWFuZ2xlc0xlbmd0aCA9IDA7XG5cblx0XHRpZiAodGhpcy5pbnZlcnNlKSB7XG5cdFx0XHRjb25zdCBwb2x5Z29uID0gdGhpcy5jbGlwcGluZ1BvbHlnb25zWzBdO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0cmlhbmdsZXNMZW5ndGg7IGkgKz0gMykge1xuXHRcdFx0XHRsZXQgdiA9IHRyaWFuZ2xlc1tpXSAqIHN0cmlkZTtcblx0XHRcdFx0Y29uc3QgeDEgPSB2ZXJ0aWNlc1t2ZXJ0ZXhTdGFydCArIHZdLCB5MSA9IHZlcnRpY2VzW3ZlcnRleFN0YXJ0ICsgdiArIDFdO1xuXHRcdFx0XHRsZXQgdXYgPSB0cmlhbmdsZXNbaV0gPDwgMTtcblx0XHRcdFx0Y29uc3QgdTEgPSB1dnNbdXZdLCB2MSA9IHV2c1t1diArIDFdO1xuXHRcdFx0XHR2ID0gdHJpYW5nbGVzW2kgKyAxXSAqIHN0cmlkZTtcblx0XHRcdFx0Y29uc3QgeDIgPSB2ZXJ0aWNlc1t2ZXJ0ZXhTdGFydCArIHZdLCB5MiA9IHZlcnRpY2VzW3ZlcnRleFN0YXJ0ICsgdiArIDFdO1xuXHRcdFx0XHR1diA9IHRyaWFuZ2xlc1tpICsgMV0gPDwgMTtcblx0XHRcdFx0Y29uc3QgdTIgPSB1dnNbdXZdLCB2MiA9IHV2c1t1diArIDFdO1xuXHRcdFx0XHR2ID0gdHJpYW5nbGVzW2kgKyAyXSAqIHN0cmlkZTtcblx0XHRcdFx0Y29uc3QgeDMgPSB2ZXJ0aWNlc1t2ZXJ0ZXhTdGFydCArIHZdLCB5MyA9IHZlcnRpY2VzW3ZlcnRleFN0YXJ0ICsgdiArIDFdO1xuXHRcdFx0XHR1diA9IHRyaWFuZ2xlc1tpICsgMl0gPDwgMTtcblx0XHRcdFx0Y29uc3QgdTMgPSB1dnNbdXZdLCB2MyA9IHV2c1t1diArIDFdO1xuXHRcdFx0XHR0aGlzLmNsaXBJbnZlcnNlKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHBvbHlnb24pO1xuXHRcdFx0XHRjb25zdCBubiA9IHRoaXMuaW52ZXJzZVZlcnRpY2VzLmxlbmd0aDtcblx0XHRcdFx0aWYgKG5uID09PSAwKSBjb250aW51ZTtcblxuXHRcdFx0XHRjb25zdCBkMCA9IHkyIC0geTMsIGQxID0geDMgLSB4MiwgZDIgPSB4MSAtIHgzLCBkNCA9IHkzIC0geTEsIGQgPSAxIC8gKGQwICogZDIgKyBkMSAqICh5MSAtIHkzKSk7XG5cdFx0XHRcdGNvbnN0IGl2ID0gdGhpcy5pbnZlcnNlVmVydGljZXM7XG5cdFx0XHRcdGZvciAobGV0IG9mZnNldCA9IDA7IG9mZnNldCA8IG5uOykge1xuXHRcdFx0XHRcdGNvbnN0IHBvbHlnb25TaXplID0gaXZbb2Zmc2V0KytdO1xuXHRcdFx0XHRcdGNvbnN0IHZlcnRleENvdW50ID0gcG9seWdvblNpemUgPj4gMTtcblxuXHRcdFx0XHRcdGxldCBzID0gdGhpcy5jbGlwcGVkVmVydGljZXNMZW5ndGg7XG5cdFx0XHRcdFx0Y29uc3QgbmV3TGVuZ3RoID0gcyArIHZlcnRleENvdW50ICogc3RyaWRlO1xuXHRcdFx0XHRcdGNvbnN0IG5ld1VWTGVuZ3RoID0gdGhpcy5jbGlwcGVkVVZzTGVuZ3RoICsgdmVydGV4Q291bnQgKiAyO1xuXHRcdFx0XHRcdGlmIChjbGlwcGVkVmVydGljZXMubGVuZ3RoIDwgbmV3TGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9jbGlwcGVkVmVydGljZXNUeXBlZCA9IG5ldyBGbG9hdDMyQXJyYXkobmV3TGVuZ3RoICogMik7XG5cdFx0XHRcdFx0XHR0aGlzLl9jbGlwcGVkVmVydGljZXNUeXBlZC5zZXQoY2xpcHBlZFZlcnRpY2VzLnN1YmFycmF5KDAsIHMpKTtcblx0XHRcdFx0XHRcdGNsaXBwZWRWZXJ0aWNlcyA9IHRoaXMuX2NsaXBwZWRWZXJ0aWNlc1R5cGVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoY2xpcHBlZFVWcy5sZW5ndGggPCBuZXdVVkxlbmd0aCkge1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFVWc1R5cGVkID0gbmV3IEZsb2F0MzJBcnJheShuZXdVVkxlbmd0aCAqIDIpO1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFVWc1R5cGVkLnNldChjbGlwcGVkVVZzLnN1YmFycmF5KDAsIHRoaXMuY2xpcHBlZFVWc0xlbmd0aCkpO1xuXHRcdFx0XHRcdFx0Y2xpcHBlZFVWcyA9IHRoaXMuX2NsaXBwZWRVVnNUeXBlZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5jbGlwcGVkVmVydGljZXNMZW5ndGggPSBuZXdMZW5ndGg7XG5cdFx0XHRcdFx0dGhpcy5jbGlwcGVkVVZzTGVuZ3RoID0gbmV3VVZMZW5ndGg7XG5cblx0XHRcdFx0XHRjb25zdCBjdiA9IHRoaXMuX2NsaXBwZWRWZXJ0aWNlc1R5cGVkO1xuXHRcdFx0XHRcdGNvbnN0IGN1ID0gdGhpcy5fY2xpcHBlZFVWc1R5cGVkO1xuXHRcdFx0XHRcdGxldCB1dkluZGV4ID0gbmV3VVZMZW5ndGggLSB2ZXJ0ZXhDb3VudCAqIDI7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IHBvbHlnb25TaXplOyBpaSArPSAyLCBzICs9IHN0cmlkZSwgdXZJbmRleCArPSAyKSB7XG5cdFx0XHRcdFx0XHRjb25zdCB4ID0gaXZbb2Zmc2V0ICsgaWldLCB5ID0gaXZbb2Zmc2V0ICsgaWkgKyAxXTtcblx0XHRcdFx0XHRcdGN2W3NdID0geDtcblx0XHRcdFx0XHRcdGN2W3MgKyAxXSA9IHk7XG5cdFx0XHRcdFx0XHRjb25zdCBjMCA9IHggLSB4MywgYzEgPSB5IC0geTMsIGEgPSAoZDAgKiBjMCArIGQxICogYzEpICogZCwgYiA9IChkNCAqIGMwICsgZDIgKiBjMSkgKiBkLCBjID0gMSAtIGEgLSBiO1xuXHRcdFx0XHRcdFx0Y3VbdXZJbmRleF0gPSB1MSAqIGEgKyB1MiAqIGIgKyB1MyAqIGM7XG5cdFx0XHRcdFx0XHRjdVt1dkluZGV4ICsgMV0gPSB2MSAqIGEgKyB2MiAqIGIgKyB2MyAqIGM7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cyA9IHRoaXMuY2xpcHBlZFRyaWFuZ2xlc0xlbmd0aDtcblx0XHRcdFx0XHRjb25zdCBuZXdMZW5ndGhUcmlhbmdsZXMgPSBzICsgMyAqICh2ZXJ0ZXhDb3VudCAtIDIpO1xuXHRcdFx0XHRcdGlmIChjbGlwcGVkVHJpYW5nbGVzLmxlbmd0aCA8IG5ld0xlbmd0aFRyaWFuZ2xlcykge1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFRyaWFuZ2xlc1R5cGVkID0gbmV3IFVpbnQxNkFycmF5KG5ld0xlbmd0aFRyaWFuZ2xlcyAqIDIpO1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFRyaWFuZ2xlc1R5cGVkLnNldChjbGlwcGVkVHJpYW5nbGVzLnN1YmFycmF5KDAsIHMpKTtcblx0XHRcdFx0XHRcdGNsaXBwZWRUcmlhbmdsZXMgPSB0aGlzLl9jbGlwcGVkVHJpYW5nbGVzVHlwZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuY2xpcHBlZFRyaWFuZ2xlc0xlbmd0aCA9IG5ld0xlbmd0aFRyaWFuZ2xlcztcblx0XHRcdFx0XHRjb25zdCBjdCA9IGNsaXBwZWRUcmlhbmdsZXM7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAxOyBpaSA8IHZlcnRleENvdW50IC0gMTsgaWkrKywgcyArPSAzKSB7XG5cdFx0XHRcdFx0XHRjdFtzXSA9IGluZGV4O1xuXHRcdFx0XHRcdFx0Y3RbcyArIDFdID0gaW5kZXggKyBpaTtcblx0XHRcdFx0XHRcdGN0W3MgKyAyXSA9IGluZGV4ICsgaWkgKyAxO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpbmRleCArPSB2ZXJ0ZXhDb3VudDtcblx0XHRcdFx0XHRvZmZzZXQgKz0gcG9seWdvblNpemU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdGNvbnN0IGNsaXBPdXRwdXQgPSB0aGlzLmNsaXBPdXRwdXQ7XG5cdFx0Y29uc3QgcG9seWdvbnMgPSB0aGlzLmNsaXBwaW5nUG9seWdvbnM7XG5cdFx0Y29uc3QgcG9seWdvbnNDb3VudCA9IHRoaXMuY2xpcHBpbmdQb2x5Z29ucy5sZW5ndGg7XG5cdFx0bGV0IGNsaXBPdXRwdXRJdGVtcyA9IG51bGw7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0cmlhbmdsZXNMZW5ndGg7IGkgKz0gMykge1xuXHRcdFx0bGV0IHQgPSB0cmlhbmdsZXNbaV07XG5cdFx0XHRsZXQgdiA9IHQgKiBzdHJpZGU7XG5cdFx0XHRjb25zdCB4MSA9IHZlcnRpY2VzW3ZlcnRleFN0YXJ0ICsgdl0sIHkxID0gdmVydGljZXNbdmVydGV4U3RhcnQgKyB2ICsgMV07XG5cdFx0XHRsZXQgdXYgPSB0IDw8IDE7XG5cdFx0XHRjb25zdCB1MSA9IHV2c1t1dl0sIHYxID0gdXZzW3V2ICsgMV07XG5cdFx0XHR0ID0gdHJpYW5nbGVzW2kgKyAxXTtcblx0XHRcdHYgPSB0ICogc3RyaWRlO1xuXHRcdFx0Y29uc3QgeDIgPSB2ZXJ0aWNlc1t2ZXJ0ZXhTdGFydCArIHZdLCB5MiA9IHZlcnRpY2VzW3ZlcnRleFN0YXJ0ICsgdiArIDFdO1xuXHRcdFx0dXYgPSB0IDw8IDE7XG5cdFx0XHRjb25zdCB1MiA9IHV2c1t1dl0sIHYyID0gdXZzW3V2ICsgMV07XG5cdFx0XHR0ID0gdHJpYW5nbGVzW2kgKyAyXTtcblx0XHRcdHYgPSB0ICogc3RyaWRlO1xuXHRcdFx0Y29uc3QgeDMgPSB2ZXJ0aWNlc1t2ZXJ0ZXhTdGFydCArIHZdLCB5MyA9IHZlcnRpY2VzW3ZlcnRleFN0YXJ0ICsgdiArIDFdO1xuXHRcdFx0dXYgPSB0IDw8IDE7XG5cdFx0XHRjb25zdCB1MyA9IHV2c1t1dl0sIHYzID0gdXZzW3V2ICsgMV07XG5cdFx0XHRjb25zdCBkMCA9IHkyIC0geTMsIGQxID0geDMgLSB4MiwgZDIgPSB4MSAtIHgzLCBkNCA9IHkzIC0geTEsIGQgPSAxIC8gKGQwICogZDIgKyBkMSAqICh5MSAtIHkzKSk7XG5cblx0XHRcdGZvciAobGV0IHAgPSAwOyBwIDwgcG9seWdvbnNDb3VudDsgcCsrKSB7XG5cdFx0XHRcdGxldCBzID0gdGhpcy5jbGlwcGVkVmVydGljZXNMZW5ndGg7XG5cdFx0XHRcdGlmICh0aGlzLmNsaXAoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgcG9seWdvbnNbcF0pKSB7XG5cdFx0XHRcdFx0Y2xpcE91dHB1dEl0ZW1zID0gY2xpcE91dHB1dDtcblx0XHRcdFx0XHRjb25zdCBjbGlwT3V0cHV0TGVuZ3RoID0gY2xpcE91dHB1dC5sZW5ndGg7XG5cdFx0XHRcdFx0aWYgKGNsaXBPdXRwdXRMZW5ndGggPT09IDApIGNvbnRpbnVlO1xuXHRcdFx0XHRcdGxldCBjbGlwT3V0cHV0Q291bnQgPSBjbGlwT3V0cHV0TGVuZ3RoID4+IDE7XG5cblx0XHRcdFx0XHRjb25zdCBuZXdMZW5ndGggPSBzICsgY2xpcE91dHB1dENvdW50ICogc3RyaWRlO1xuXHRcdFx0XHRcdGlmIChjbGlwcGVkVmVydGljZXMubGVuZ3RoIDwgbmV3TGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9jbGlwcGVkVmVydGljZXNUeXBlZCA9IG5ldyBGbG9hdDMyQXJyYXkobmV3TGVuZ3RoICogMik7XG5cdFx0XHRcdFx0XHR0aGlzLl9jbGlwcGVkVmVydGljZXNUeXBlZC5zZXQoY2xpcHBlZFZlcnRpY2VzLnN1YmFycmF5KDAsIHMpKTtcblx0XHRcdFx0XHRcdHRoaXMuX2NsaXBwZWRVVnNUeXBlZCA9IG5ldyBGbG9hdDMyQXJyYXkoKHRoaXMuY2xpcHBlZFVWc0xlbmd0aCArIGNsaXBPdXRwdXRDb3VudCAqIDIpICogMik7XG5cdFx0XHRcdFx0XHR0aGlzLl9jbGlwcGVkVVZzVHlwZWQuc2V0KGNsaXBwZWRVVnMuc3ViYXJyYXkoMCwgdGhpcy5jbGlwcGVkVVZzTGVuZ3RoKSk7XG5cdFx0XHRcdFx0XHRjbGlwcGVkVmVydGljZXMgPSB0aGlzLl9jbGlwcGVkVmVydGljZXNUeXBlZDtcblx0XHRcdFx0XHRcdGNsaXBwZWRVVnMgPSB0aGlzLl9jbGlwcGVkVVZzVHlwZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IGN2ID0gY2xpcHBlZFZlcnRpY2VzO1xuXHRcdFx0XHRcdGNvbnN0IGN1ID0gY2xpcHBlZFVWcztcblx0XHRcdFx0XHR0aGlzLmNsaXBwZWRWZXJ0aWNlc0xlbmd0aCA9IG5ld0xlbmd0aDtcblxuXHRcdFx0XHRcdGxldCB1dkluZGV4ID0gdGhpcy5jbGlwcGVkVVZzTGVuZ3RoO1xuXHRcdFx0XHRcdHRoaXMuY2xpcHBlZFVWc0xlbmd0aCA9IHV2SW5kZXggKyBjbGlwT3V0cHV0Q291bnQgKiAyO1xuXHRcdFx0XHRcdGZvciAobGV0IGlpID0gMDsgaWkgPCBjbGlwT3V0cHV0TGVuZ3RoOyBpaSArPSAyLCBzICs9IHN0cmlkZSwgdXZJbmRleCArPSAyKSB7XG5cdFx0XHRcdFx0XHRjb25zdCB4ID0gY2xpcE91dHB1dEl0ZW1zW2lpXSwgeSA9IGNsaXBPdXRwdXRJdGVtc1tpaSArIDFdO1xuXHRcdFx0XHRcdFx0Y3Zbc10gPSB4O1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDFdID0geTtcblxuXHRcdFx0XHRcdFx0Y29uc3QgYzAgPSB4IC0geDMsIGMxID0geSAtIHkzLCBhID0gKGQwICogYzAgKyBkMSAqIGMxKSAqIGQsIGIgPSAoZDQgKiBjMCArIGQyICogYzEpICogZCwgYyA9IDEgLSBhIC0gYjtcblx0XHRcdFx0XHRcdGN1W3V2SW5kZXhdID0gdTEgKiBhICsgdTIgKiBiICsgdTMgKiBjO1xuXHRcdFx0XHRcdFx0Y3VbdXZJbmRleCArIDFdID0gdjEgKiBhICsgdjIgKiBiICsgdjMgKiBjO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHMgPSB0aGlzLmNsaXBwZWRUcmlhbmdsZXNMZW5ndGg7XG5cdFx0XHRcdFx0Y29uc3QgbmV3TGVuZ3RoVHJpYW5nbGVzID0gcyArIDMgKiAoY2xpcE91dHB1dENvdW50IC0gMilcblx0XHRcdFx0XHRpZiAoY2xpcHBlZFRyaWFuZ2xlcy5sZW5ndGggPCBuZXdMZW5ndGhUcmlhbmdsZXMpIHtcblx0XHRcdFx0XHRcdHRoaXMuX2NsaXBwZWRUcmlhbmdsZXNUeXBlZCA9IG5ldyBVaW50MTZBcnJheShuZXdMZW5ndGhUcmlhbmdsZXMgKiAyKTtcblx0XHRcdFx0XHRcdHRoaXMuX2NsaXBwZWRUcmlhbmdsZXNUeXBlZC5zZXQoY2xpcHBlZFRyaWFuZ2xlcy5zdWJhcnJheSgwLCBzKSk7XG5cdFx0XHRcdFx0XHRjbGlwcGVkVHJpYW5nbGVzID0gdGhpcy5fY2xpcHBlZFRyaWFuZ2xlc1R5cGVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLmNsaXBwZWRUcmlhbmdsZXNMZW5ndGggPSBuZXdMZW5ndGhUcmlhbmdsZXM7XG5cdFx0XHRcdFx0Y29uc3QgY3QgPSBjbGlwcGVkVHJpYW5nbGVzO1xuXHRcdFx0XHRcdGNsaXBPdXRwdXRDb3VudC0tO1xuXHRcdFx0XHRcdGZvciAobGV0IGlpID0gMTsgaWkgPCBjbGlwT3V0cHV0Q291bnQ7IGlpKyssIHMgKz0gMykge1xuXHRcdFx0XHRcdFx0Y3Rbc10gPSBpbmRleDtcblx0XHRcdFx0XHRcdGN0W3MgKyAxXSA9IChpbmRleCArIGlpKTtcblx0XHRcdFx0XHRcdGN0W3MgKyAyXSA9IChpbmRleCArIGlpICsgMSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGluZGV4ICs9IGNsaXBPdXRwdXRDb3VudCArIDE7XG5cblx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdGxldCBuZXdMZW5ndGggPSBzICsgMyAqIHN0cmlkZTtcblx0XHRcdFx0XHRpZiAoY2xpcHBlZFZlcnRpY2VzLmxlbmd0aCA8IG5ld0xlbmd0aCkge1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFZlcnRpY2VzVHlwZWQgPSBuZXcgRmxvYXQzMkFycmF5KG5ld0xlbmd0aCAqIDIpO1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFZlcnRpY2VzVHlwZWQuc2V0KGNsaXBwZWRWZXJ0aWNlcy5zdWJhcnJheSgwLCBzKSk7XG5cdFx0XHRcdFx0XHRjbGlwcGVkVmVydGljZXMgPSB0aGlzLl9jbGlwcGVkVmVydGljZXNUeXBlZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2xpcHBlZFZlcnRpY2VzW3NdID0geDE7XG5cdFx0XHRcdFx0Y2xpcHBlZFZlcnRpY2VzW3MgKyAxXSA9IHkxO1xuXHRcdFx0XHRcdGNsaXBwZWRWZXJ0aWNlc1tzICsgc3RyaWRlXSA9IHgyO1xuXHRcdFx0XHRcdGNsaXBwZWRWZXJ0aWNlc1tzICsgc3RyaWRlICsgMV0gPSB5Mjtcblx0XHRcdFx0XHRjbGlwcGVkVmVydGljZXNbcyArIHN0cmlkZSAqIDJdID0geDM7XG5cdFx0XHRcdFx0Y2xpcHBlZFZlcnRpY2VzW3MgKyBzdHJpZGUgKiAyICsgMV0gPSB5MztcblxuXHRcdFx0XHRcdGNvbnN0IHV2TGVuZ3RoID0gdGhpcy5jbGlwcGVkVVZzTGVuZ3RoICsgMyAqIDI7XG5cdFx0XHRcdFx0aWYgKGNsaXBwZWRVVnMubGVuZ3RoIDwgdXZMZW5ndGgpIHtcblx0XHRcdFx0XHRcdHRoaXMuX2NsaXBwZWRVVnNUeXBlZCA9IG5ldyBGbG9hdDMyQXJyYXkodXZMZW5ndGggKiAyKTtcblx0XHRcdFx0XHRcdHRoaXMuX2NsaXBwZWRVVnNUeXBlZC5zZXQoY2xpcHBlZFVWcy5zdWJhcnJheSgwLCB0aGlzLmNsaXBwZWRVVnNMZW5ndGgpKTtcblx0XHRcdFx0XHRcdGNsaXBwZWRVVnMgPSB0aGlzLl9jbGlwcGVkVVZzVHlwZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IHV2SW5kZXggPSB0aGlzLmNsaXBwZWRVVnNMZW5ndGg7XG5cdFx0XHRcdFx0Y2xpcHBlZFVWc1t1dkluZGV4XSA9IHUxO1xuXHRcdFx0XHRcdGNsaXBwZWRVVnNbdXZJbmRleCArIDFdID0gdjE7XG5cdFx0XHRcdFx0Y2xpcHBlZFVWc1t1dkluZGV4ICsgMl0gPSB1Mjtcblx0XHRcdFx0XHRjbGlwcGVkVVZzW3V2SW5kZXggKyAzXSA9IHYyO1xuXHRcdFx0XHRcdGNsaXBwZWRVVnNbdXZJbmRleCArIDRdID0gdTM7XG5cdFx0XHRcdFx0Y2xpcHBlZFVWc1t1dkluZGV4ICsgNV0gPSB2MztcblxuXHRcdFx0XHRcdHRoaXMuY2xpcHBlZFZlcnRpY2VzTGVuZ3RoID0gbmV3TGVuZ3RoO1xuXHRcdFx0XHRcdHRoaXMuY2xpcHBlZFVWc0xlbmd0aCA9IHV2TGVuZ3RoO1xuXG5cdFx0XHRcdFx0cyA9IHRoaXMuY2xpcHBlZFRyaWFuZ2xlc0xlbmd0aDtcblx0XHRcdFx0XHRuZXdMZW5ndGggPSBzICsgMztcblx0XHRcdFx0XHRpZiAoY2xpcHBlZFRyaWFuZ2xlcy5sZW5ndGggPCBuZXdMZW5ndGgpIHtcblx0XHRcdFx0XHRcdHRoaXMuX2NsaXBwZWRUcmlhbmdsZXNUeXBlZCA9IG5ldyBVaW50MTZBcnJheShuZXdMZW5ndGggKiAyKTtcblx0XHRcdFx0XHRcdHRoaXMuX2NsaXBwZWRUcmlhbmdsZXNUeXBlZC5zZXQoY2xpcHBlZFRyaWFuZ2xlcy5zdWJhcnJheSgwLCBzKSk7XG5cdFx0XHRcdFx0XHRjbGlwcGVkVHJpYW5nbGVzID0gdGhpcy5fY2xpcHBlZFRyaWFuZ2xlc1R5cGVkO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNvbnN0IGN0ID0gY2xpcHBlZFRyaWFuZ2xlcztcblx0XHRcdFx0XHRjdFtzXSA9IGluZGV4O1xuXHRcdFx0XHRcdGN0W3MgKyAxXSA9IChpbmRleCArIDEpO1xuXHRcdFx0XHRcdGN0W3MgKyAyXSA9IChpbmRleCArIDIpO1xuXHRcdFx0XHRcdGluZGV4ICs9IDM7XG5cblx0XHRcdFx0XHR0aGlzLmNsaXBwZWRUcmlhbmdsZXNMZW5ndGggPSBuZXdMZW5ndGg7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHR0aGlzLmNsaXBwZWRWZXJ0aWNlc1R5cGVkID0gdGhpcy5fY2xpcHBlZFZlcnRpY2VzVHlwZWQuc3ViYXJyYXkoMCwgdGhpcy5jbGlwcGVkVmVydGljZXNMZW5ndGgpXG5cdFx0dGhpcy5jbGlwcGVkVVZzVHlwZWQgPSB0aGlzLl9jbGlwcGVkVVZzVHlwZWQuc3ViYXJyYXkoMCwgdGhpcy5jbGlwcGVkVVZzTGVuZ3RoKVxuXHRcdHRoaXMuY2xpcHBlZFRyaWFuZ2xlc1R5cGVkID0gdGhpcy5fY2xpcHBlZFRyaWFuZ2xlc1R5cGVkLnN1YmFycmF5KDAsIHRoaXMuY2xpcHBlZFRyaWFuZ2xlc0xlbmd0aClcblx0XHRyZXR1cm4gY2xpcE91dHB1dEl0ZW1zICE9PSBudWxsO1xuXHR9XG5cblx0cHJpdmF0ZSBjbGlwICh4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyLCB4MzogbnVtYmVyLCB5MzogbnVtYmVyLCBwb2x5Z29uOiBudW1iZXJbXSkge1xuXHRcdGNvbnN0IG9yaWdpbmFsT3V0cHV0ID0gdGhpcy5jbGlwT3V0cHV0O1xuXHRcdGxldCBjbGlwcGVkID0gZmFsc2U7XG5cblx0XHQvLyBBdm9pZCBjb3B5IGF0IHRoZSBlbmQuXG5cdFx0bGV0IGlucHV0OiBudW1iZXJbXSwgb3V0cHV0OiBudW1iZXJbXTtcblx0XHRpZiAocG9seWdvbi5sZW5ndGggJSA0ID49IDIpIHtcblx0XHRcdGlucHV0ID0gdGhpcy5jbGlwT3V0cHV0O1xuXHRcdFx0b3V0cHV0ID0gdGhpcy5zY3JhdGNoO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpbnB1dCA9IHRoaXMuc2NyYXRjaDtcblx0XHRcdG91dHB1dCA9IHRoaXMuY2xpcE91dHB1dDtcblx0XHR9XG5cblx0XHRjb25zdCB2ID0gcG9seWdvbjtcblx0XHRpbnB1dC5sZW5ndGggPSA4O1xuXHRcdGNvbnN0IGl2ID0gaW5wdXQ7XG5cdFx0aXZbMF0gPSB4MTtcblx0XHRpdlsxXSA9IHkxO1xuXHRcdGl2WzJdID0geDI7XG5cdFx0aXZbM10gPSB5Mjtcblx0XHRpdls0XSA9IHgzO1xuXHRcdGl2WzVdID0geTM7XG5cdFx0aXZbNl0gPSB4MTtcblx0XHRpdls3XSA9IHkxO1xuXHRcdG91dHB1dC5sZW5ndGggPSAwO1xuXG5cdFx0Y29uc3QgbGFzdCA9IHBvbHlnb24ubGVuZ3RoIC0gNDtcblx0XHRmb3IgKGxldCBpID0gMDsgOyBpICs9IDIpIHtcblx0XHRcdGNvbnN0IGVkZ2VYID0gdltpXSwgZWRnZVkgPSB2W2kgKyAxXSwgZXggPSBlZGdlWCAtIHZbaSArIDJdLCBleSA9IGVkZ2VZIC0gdltpICsgM107XG5cdFx0XHRjb25zdCBvdXRwdXRTdGFydCA9IG91dHB1dC5sZW5ndGg7XG5cdFx0XHRjb25zdCBpdiA9IGlucHV0O1xuXHRcdFx0Zm9yIChsZXQgaWkgPSAwLCBubiA9IGlucHV0Lmxlbmd0aCAtIDI7IGlpIDwgbm47KSB7XG5cdFx0XHRcdHgxID0gaXZbaWldO1xuXHRcdFx0XHR5MSA9IGl2W2lpICsgMV07XG5cdFx0XHRcdGlpICs9IDI7XG5cdFx0XHRcdHgyID0gaXZbaWldO1xuXHRcdFx0XHR5MiA9IGl2W2lpICsgMV07XG5cdFx0XHRcdGNvbnN0IHMyID0gZXkgKiAoZWRnZVggLSB4MikgPiBleCAqIChlZGdlWSAtIHkyKTtcblx0XHRcdFx0Y29uc3QgczEgPSBleSAqIChlZGdlWCAtIHgxKSAtIGV4ICogKGVkZ2VZIC0geTEpO1xuXHRcdFx0XHRpZiAoczEgPiAwKSB7XG5cdFx0XHRcdFx0aWYgKHMyKSAvLyB2MSBpbiwgdjIgaW5cblx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKHgyLCB5Mik7XG5cdFx0XHRcdFx0ZWxzZSB7IC8vIHYxIGluLCB2MiBvdXRcblx0XHRcdFx0XHRcdGNvbnN0IGl4ID0geDIgLSB4MSwgaXkgPSB5MiAtIHkxLCB0ID0gczEgLyAoaXggKiBleSAtIGl5ICogZXgpO1xuXHRcdFx0XHRcdFx0aWYgKHQgPj0gMCAmJiB0IDw9IDEpIHtcblx0XHRcdFx0XHRcdFx0b3V0cHV0LnB1c2goeDEgKyBpeCAqIHQsIHkxICsgaXkgKiB0KTtcblx0XHRcdFx0XHRcdFx0Y2xpcHBlZCA9IHRydWU7XG5cdFx0XHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRcdFx0b3V0cHV0LnB1c2goeDIsIHkyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSBpZiAoczIpIHsgLy8gdjEgb3V0LCB2MiBpblxuXHRcdFx0XHRcdGNvbnN0IGl4ID0geDIgLSB4MSwgaXkgPSB5MiAtIHkxLCB0ID0gczEgLyAoaXggKiBleSAtIGl5ICogZXgpO1xuXHRcdFx0XHRcdGlmICh0ID49IDAgJiYgdCA8PSAxKSB7XG5cdFx0XHRcdFx0XHRvdXRwdXQucHVzaCh4MSArIGl4ICogdCwgeTEgKyBpeSAqIHQsIHgyLCB5Mik7XG5cdFx0XHRcdFx0XHRjbGlwcGVkID0gdHJ1ZTtcblx0XHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKHgyLCB5Mik7XG5cdFx0XHRcdH0gZWxzZSAvLyB2MSBvdXQsIHYyIG91dFxuXHRcdFx0XHRcdGNsaXBwZWQgPSB0cnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAob3V0cHV0U3RhcnQgPT09IG91dHB1dC5sZW5ndGgpIHsgLy8gQWxsIG91dHNpZGUuXG5cdFx0XHRcdG9yaWdpbmFsT3V0cHV0Lmxlbmd0aCA9IDA7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRvdXRwdXQucHVzaChvdXRwdXRbMF0sIG91dHB1dFsxXSk7XG5cblx0XHRcdGlmIChpID09PSBsYXN0KSBicmVhaztcblx0XHRcdGNvbnN0IHRlbXAgPSBvdXRwdXQ7XG5cdFx0XHRvdXRwdXQgPSBpbnB1dDtcblx0XHRcdG91dHB1dC5sZW5ndGggPSAwO1xuXHRcdFx0aW5wdXQgPSB0ZW1wO1xuXHRcdH1cblxuXHRcdGlmIChvcmlnaW5hbE91dHB1dCAhPT0gb3V0cHV0KSB7XG5cdFx0XHRvcmlnaW5hbE91dHB1dC5sZW5ndGggPSAwO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBvdXRwdXQubGVuZ3RoIC0gMjsgaSA8IG47IGkrKylcblx0XHRcdFx0b3JpZ2luYWxPdXRwdXRbaV0gPSBvdXRwdXRbaV07XG5cdFx0fSBlbHNlXG5cdFx0XHRvcmlnaW5hbE91dHB1dC5sZW5ndGggPSBvcmlnaW5hbE91dHB1dC5sZW5ndGggLSAyO1xuXG5cdFx0cmV0dXJuIGNsaXBwZWQ7XG5cdH1cblxuXHRwcml2YXRlIGNsaXBJbnZlcnNlICh4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyLCB4MzogbnVtYmVyLCB5MzogbnVtYmVyLCBwb2x5Z29uOiBudW1iZXJbXSk6IHZvaWQge1xuXHRcdHRoaXMuaW52ZXJzZVZlcnRpY2VzLmxlbmd0aCA9IDA7XG5cdFx0Y29uc3Qgdkxhc3QgPSBwb2x5Z29uLmxlbmd0aCAtIDQ7XG5cblx0XHRsZXQgaW5wdXQ6IG51bWJlcltdLCBvdXRwdXQ6IG51bWJlcltdOyAvLyBBdm9pZCBjb3B5IGF0IHRoZSBlbmQuXG5cdFx0aWYgKHBvbHlnb24ubGVuZ3RoICUgNCA+PSAyKSB7XG5cdFx0XHRpbnB1dCA9IHRoaXMuY2xpcE91dHB1dDtcblx0XHRcdG91dHB1dCA9IHRoaXMuc2NyYXRjaDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aW5wdXQgPSB0aGlzLnNjcmF0Y2g7XG5cdFx0XHRvdXRwdXQgPSB0aGlzLmNsaXBPdXRwdXQ7XG5cdFx0fVxuXG5cdFx0aW5wdXQubGVuZ3RoID0gODtcblx0XHRsZXQgdiA9IHBvbHlnb24sIGl2ID0gaW5wdXQ7XG5cdFx0aXZbMF0gPSB4MTtcblx0XHRpdlsxXSA9IHkxO1xuXHRcdGl2WzJdID0geDI7XG5cdFx0aXZbM10gPSB5Mjtcblx0XHRpdls0XSA9IHgzO1xuXHRcdGl2WzVdID0geTM7XG5cdFx0aXZbNl0gPSB4MTtcblx0XHRpdls3XSA9IHkxO1xuXHRcdG91dHB1dC5sZW5ndGggPSAwO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IDsgaSArPSAyKSB7XG5cdFx0XHRjb25zdCBlZGdlWCA9IHZbaV0sIGVkZ2VZID0gdltpICsgMV0sIGV4ID0gZWRnZVggLSB2W2kgKyAyXSwgZXkgPSBlZGdlWSAtIHZbaSArIDNdO1xuXHRcdFx0Y29uc3Qgb3V0cHV0U3RhcnQgPSBvdXRwdXQubGVuZ3RoLCBmcmFnbWVudFN0YXJ0ID0gdGhpcy5pbnZlcnNlVmVydGljZXMubGVuZ3RoO1xuXHRcdFx0dGhpcy5pbnZlcnNlVmVydGljZXMucHVzaCgwKTtcblx0XHRcdGl2ID0gaW5wdXQ7XG5cdFx0XHRmb3IgKGxldCBpaSA9IDAsIG5uID0gaW5wdXQubGVuZ3RoIC0gMjsgaWkgPCBubjspIHtcblx0XHRcdFx0eDEgPSBpdltpaV07XG5cdFx0XHRcdHkxID0gaXZbaWkgKyAxXTtcblx0XHRcdFx0aWkgKz0gMjtcblx0XHRcdFx0eDIgPSBpdltpaV07XG5cdFx0XHRcdHkyID0gaXZbaWkgKyAxXTtcblx0XHRcdFx0Y29uc3QgczIgPSBleSAqIChlZGdlWCAtIHgyKSA+IGV4ICogKGVkZ2VZIC0geTIpO1xuXHRcdFx0XHRjb25zdCBzMSA9IGV5ICogKGVkZ2VYIC0geDEpIC0gZXggKiAoZWRnZVkgLSB5MSk7XG5cdFx0XHRcdGlmIChzMSA+IDApIHtcblx0XHRcdFx0XHRpZiAoczIpIC8vIHYxIGluLCB2MiBpblxuXHRcdFx0XHRcdFx0b3V0cHV0LnB1c2goeDIsIHkyKTtcblx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdC8vIHYxIGluLCB2MiBvdXRcblx0XHRcdFx0XHRcdGNvbnN0IGl4ID0geDIgLSB4MSwgaXkgPSB5MiAtIHkxLCB0ID0gczEgLyAoaXggKiBleSAtIGl5ICogZXgpO1xuXHRcdFx0XHRcdFx0aWYgKHQgPj0gMCAmJiB0IDw9IDEpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgY3ggPSB4MSArIGl4ICogdCwgY3kgPSB5MSArIGl5ICogdDtcblx0XHRcdFx0XHRcdFx0b3V0cHV0LnB1c2goY3gsIGN5KTtcblx0XHRcdFx0XHRcdFx0dGhpcy5pbnZlcnNlVmVydGljZXMucHVzaChjeCwgY3ksIHgyLCB5Mik7XG5cdFx0XHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRcdFx0b3V0cHV0LnB1c2goeDIsIHkyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSBpZiAoczIpIHsgLy8gdjEgb3V0LCB2MiBpblxuXHRcdFx0XHRcdGNvbnN0IGR4ID0geDIgLSB4MSwgZHkgPSB5MiAtIHkxLCB0ID0gczEgLyAoZHggKiBleSAtIGR5ICogZXgpO1xuXHRcdFx0XHRcdGlmICh0ID49IDAgJiYgdCA8PSAxKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBjeCA9IHgxICsgZHggKiB0LCBjeSA9IHkxICsgZHkgKiB0O1xuXHRcdFx0XHRcdFx0dGhpcy5pbnZlcnNlVmVydGljZXMucHVzaChjeCwgY3kpO1xuXHRcdFx0XHRcdFx0b3V0cHV0LnB1c2goY3gsIGN5LCB4MiwgeTIpO1xuXHRcdFx0XHRcdH0gZWxzZVxuXHRcdFx0XHRcdFx0b3V0cHV0LnB1c2goeDIsIHkyKTtcblx0XHRcdFx0fSBlbHNlIC8vIHYxIG91dCwgdjIgb3V0XG5cdFx0XHRcdFx0dGhpcy5pbnZlcnNlVmVydGljZXMucHVzaCh4MiwgeTIpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBmcmFnbWVudFNpemUgPSB0aGlzLmludmVyc2VWZXJ0aWNlcy5sZW5ndGggLSBmcmFnbWVudFN0YXJ0IC0gMTtcblx0XHRcdGlmIChmcmFnbWVudFNpemUgPj0gNilcblx0XHRcdFx0dGhpcy5pbnZlcnNlVmVydGljZXNbZnJhZ21lbnRTdGFydF0gPSBmcmFnbWVudFNpemU7XG5cdFx0XHRlbHNlXG5cdFx0XHRcdHRoaXMuaW52ZXJzZVZlcnRpY2VzLmxlbmd0aCA9IGZyYWdtZW50U3RhcnQ7IC8vIERlZ2VuZXJhdGUuXG5cblx0XHRcdGlmIChvdXRwdXRTdGFydCA9PT0gb3V0cHV0Lmxlbmd0aCkgYnJlYWs7IC8vIEFsbCBvdXRzaWRlLlxuXG5cdFx0XHRvdXRwdXQucHVzaChvdXRwdXRbMF0sIG91dHB1dFsxXSk7XG5cblx0XHRcdGlmIChpID09PSB2TGFzdCkgYnJlYWs7XG5cdFx0XHRjb25zdCB0ZW1wID0gb3V0cHV0O1xuXHRcdFx0b3V0cHV0ID0gaW5wdXQ7XG5cdFx0XHRvdXRwdXQubGVuZ3RoID0gMDtcblx0XHRcdGlucHV0ID0gdGVtcDtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIG1ha2VDbG9ja3dpc2UgKHBvbHlnb246IG51bWJlcltdKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgdiA9IHBvbHlnb247XG5cdFx0Y29uc3QgbiA9IHBvbHlnb24ubGVuZ3RoO1xuXHRcdGxldCBub0NXID0gdHJ1ZSwgbm9DQ1cgPSB0cnVlO1xuXHRcdGxldCBhcmVhID0gMCwgcHJldlggPSB2W24gLSAyXSwgcHJldlkgPSB2W24gLSAxXSwgY3VyclggPSB2WzBdLCBjdXJyWSA9IHZbMV07XG5cdFx0Zm9yIChsZXQgaSA9IDI7IGkgPCBuOyBpICs9IDIpIHtcblx0XHRcdGNvbnN0IG5leHRYID0gdltpXSwgbmV4dFkgPSB2W2kgKyAxXTtcblx0XHRcdGFyZWEgKz0gY3VyclggKiBuZXh0WSAtIG5leHRYICogY3Vyclk7XG5cdFx0XHRjb25zdCBjcm9zcyA9IChjdXJyWCAtIHByZXZYKSAqIChuZXh0WSAtIGN1cnJZKSAtIChjdXJyWSAtIHByZXZZKSAqIChuZXh0WCAtIGN1cnJYKTtcblx0XHRcdG5vQ0NXID0gbm9DQ1cgJiYgY3Jvc3MgPD0gMDtcblx0XHRcdG5vQ1cgPSBub0NXICYmIGNyb3NzID49IDA7XG5cdFx0XHRwcmV2WCA9IGN1cnJYO1xuXHRcdFx0cHJldlkgPSBjdXJyWTtcblx0XHRcdGN1cnJYID0gbmV4dFg7XG5cdFx0XHRjdXJyWSA9IG5leHRZO1xuXHRcdH1cblx0XHRhcmVhICs9IGN1cnJYICogdlsxXSAtIHZbMF0gKiBjdXJyWTtcblx0XHRjb25zdCBjcm9zcyA9IChjdXJyWCAtIHByZXZYKSAqICh2WzFdIC0gY3VyclkpIC0gKGN1cnJZIC0gcHJldlkpICogKHZbMF0gLSBjdXJyWCk7XG5cdFx0bm9DQ1cgPSBub0NDVyAmJiBjcm9zcyA8PSAwO1xuXHRcdG5vQ1cgPSBub0NXICYmIGNyb3NzID49IDA7XG5cdFx0aWYgKGFyZWEgPj0gMCkge1xuXHRcdFx0Zm9yIChsZXQgaSA9IDAsIGxhc3RYID0gbiAtIDIsIGhhbGYgPSBuID4+IDE7IGkgPCBoYWxmOyBpICs9IDIpIHtcblx0XHRcdFx0Y29uc3QgeCA9IHZbaV0sIHkgPSB2W2kgKyAxXTtcblx0XHRcdFx0Y29uc3Qgb3RoZXIgPSBsYXN0WCAtIGk7XG5cdFx0XHRcdHZbaV0gPSB2W290aGVyXTtcblx0XHRcdFx0dltpICsgMV0gPSB2W290aGVyICsgMV07XG5cdFx0XHRcdHZbb3RoZXJdID0geDtcblx0XHRcdFx0dltvdGhlciArIDFdID0geTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBub0NXO1xuXHRcdH1cblx0XHRyZXR1cm4gbm9DQ1c7XG5cdH1cblxuXHRwcml2YXRlIG1ha2VDb252ZXggKHBvbHlnb246IG51bWJlcltdKTogdm9pZCB7XG5cdFx0Y29uc3QgbiA9IHBvbHlnb24ubGVuZ3RoO1xuXHRcdGNvbnN0IHYgPSBwb2x5Z29uO1xuXHRcdHRoaXMuY2xpcE91dHB1dC5sZW5ndGggPSBuO1xuXHRcdGNvbnN0IHNvcnRlZCA9IHRoaXMuY2xpcE91dHB1dDtcblx0XHRzb3J0ZWRbMF0gPSB2WzBdO1xuXHRcdHNvcnRlZFsxXSA9IHZbMV07XG5cdFx0Zm9yIChsZXQgaSA9IDI7IGkgPCBuOyBpICs9IDIpIHtcblx0XHRcdGNvbnN0IHggPSB2W2ldLCB5ID0gdltpICsgMV07XG5cdFx0XHRsZXQgcCA9IGkgLSAyO1xuXHRcdFx0Zm9yICg7IHAgPj0gMCAmJiAoc29ydGVkW3BdID4geCB8fCAoc29ydGVkW3BdID09PSB4ICYmIHNvcnRlZFtwICsgMV0gPiB5KSk7IHAgLT0gMikge1xuXHRcdFx0XHRzb3J0ZWRbcCArIDJdID0gc29ydGVkW3BdO1xuXHRcdFx0XHRzb3J0ZWRbcCArIDNdID0gc29ydGVkW3AgKyAxXTtcblx0XHRcdH1cblx0XHRcdHNvcnRlZFtwICsgMl0gPSB4O1xuXHRcdFx0c29ydGVkW3AgKyAzXSA9IHk7XG5cdFx0fVxuXHRcdHZbMF0gPSBzb3J0ZWRbMF07XG5cdFx0dlsxXSA9IHNvcnRlZFsxXTtcblx0XHR2WzJdID0gc29ydGVkWzJdO1xuXHRcdHZbM10gPSBzb3J0ZWRbM107XG5cdFx0bGV0IHMgPSA0O1xuXHRcdGZvciAobGV0IGkgPSA0OyBpIDwgbjsgaSArPSAyLCBzICs9IDIpIHtcblx0XHRcdGNvbnN0IHggPSBzb3J0ZWRbaV0sIHkgPSBzb3J0ZWRbaSArIDFdO1xuXHRcdFx0d2hpbGUgKCh2W3MgLSAyXSAtIHZbcyAtIDRdKSAqICh5IC0gdltzIC0gM10pIC0gKHZbcyAtIDFdIC0gdltzIC0gM10pICogKHggLSB2W3MgLSA0XSkgPj0gMCkge1xuXHRcdFx0XHRzIC09IDI7XG5cdFx0XHRcdGlmIChzID09PSAyKSBicmVhaztcblx0XHRcdH1cblx0XHRcdHZbc10gPSB4O1xuXHRcdFx0dltzICsgMV0gPSB5O1xuXHRcdH1cblx0XHR2W3NdID0gc29ydGVkW24gLSA0XTtcblx0XHR2W3MgKyAxXSA9IHNvcnRlZFtuIC0gM107XG5cdFx0Y29uc3QgdCA9IHM7XG5cdFx0cyArPSAyO1xuXHRcdGZvciAobGV0IGkgPSBuIC0gNjsgaSA+PSAwOyBpIC09IDIsIHMgKz0gMikge1xuXHRcdFx0Y29uc3QgeCA9IHNvcnRlZFtpXSwgeSA9IHNvcnRlZFtpICsgMV07XG5cdFx0XHR3aGlsZSAoKHZbcyAtIDJdIC0gdltzIC0gNF0pICogKHkgLSB2W3MgLSAzXSkgLSAodltzIC0gMV0gLSB2W3MgLSAzXSkgKiAoeCAtIHZbcyAtIDRdKSA+PSAwKSB7XG5cdFx0XHRcdHMgLT0gMjtcblx0XHRcdFx0aWYgKHMgPT09IHQpIGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0dltzXSA9IHg7XG5cdFx0XHR2W3MgKyAxXSA9IHk7XG5cdFx0fVxuXHRcdHBvbHlnb24ubGVuZ3RoID0gcyAtIDI7XG5cdH1cbn1cbiJdfQ==
804
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25DbGlwcGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Ta2VsZXRvbkNsaXBwaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUsvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFvQyxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFckUsTUFBTSxPQUFPLGdCQUFnQjtJQUNwQixZQUFZLEdBQXdCLElBQUksQ0FBQztJQUN6QyxlQUFlLEdBQUcsRUFBYyxDQUFDO0lBQ2pDLGdCQUFnQixHQUFlLEVBQUUsQ0FBQztJQUNsQyxVQUFVLEdBQUcsRUFBYyxDQUFDO0lBQ3BDLGVBQWUsR0FBRyxFQUFjLENBQUM7SUFFakMscUVBQXFFO0lBQ3JFLFVBQVUsR0FBRyxFQUFjLENBQUM7SUFFNUIsZ0JBQWdCLEdBQUcsRUFBYyxDQUFDO0lBQ2xDLGVBQWUsR0FBRyxFQUFjLENBQUM7SUFFakMscUJBQXFCLEdBQWlCLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdELGdCQUFnQixHQUFpQixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RCxzQkFBc0IsR0FBZ0IsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUQsb0JBQW9CLEdBQWlCLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELGVBQWUsR0FBaUIsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQscUJBQXFCLEdBQWdCLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELHFCQUFxQixHQUFHLENBQUMsQ0FBQztJQUMxQixnQkFBZ0IsR0FBRyxDQUFDLENBQUM7SUFDckIsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0lBRW5CLE9BQU8sR0FBRyxFQUFjLENBQUM7SUFD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d0JBQ2YsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3JCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDckIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDaEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBRWhCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNoQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDaEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3JCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDckIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDaEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQ2pCLENBQUM7eUJBQU0sQ0FBQzt3QkFDUCxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDZixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDZixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ25CLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDbkIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUNwQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBRXBCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNoQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDaEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3JCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDckIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDaEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ2hCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDcEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUNwQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFH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Q0FBQztnQkFDOUIsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDLFdBQVcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pFLElBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNCLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDckMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO2dCQUM5QixNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxRQUFRLENBQUMsV0FBVyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDekUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMzQixNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztnQkFDOUIsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDLFdBQVcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pFLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDM0IsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFB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QUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM3RixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNQLElBQUksQ0FBQyxLQUFLLENBQUM7b0JBQUUsTUFBTTtZQUNwQixDQUFDO1lBQ0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNULENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QixDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEFwcmlsIDUsIDIwMjUuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyNSwgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZVxuICogb3Igb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB0eXBlIHsgQ2xpcHBpbmdBdHRhY2htZW50IH0gZnJvbSBcIi4vYXR0YWNobWVudHMvQ2xpcHBpbmdBdHRhY2htZW50LmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNrZWxldG9uIH0gZnJvbSBcIi4vU2tlbGV0b24uanNcIjtcbmltcG9ydCB0eXBlIHsgU2xvdCB9IGZyb20gXCIuL1Nsb3QuanNcIjtcbmltcG9ydCB7IFRyaWFuZ3VsYXRvciB9IGZyb20gXCIuL1RyaWFuZ3VsYXRvci5qc1wiO1xuaW1wb3J0IHsgdHlwZSBDb2xvciwgdHlwZSBOdW1iZXJBcnJheUxpa2UsIFV0aWxzIH0gZnJvbSBcIi4vVXRpbHMuanNcIjtcblxuZXhwb3J0IGNsYXNzIFNrZWxldG9uQ2xpcHBpbmcge1xuXHRwcml2YXRlIHRyaWFuZ3VsYXRvcjogVHJpYW5ndWxhdG9yIHwgbnVsbCA9IG51bGw7XG5cdHByaXZhdGUgY2xpcHBpbmdQb2x5Z29uID0gW10gYXMgbnVtYmVyW107XG5cdHByaXZhdGUgY2xpcHBpbmdQb2x5Z29uczogbnVtYmVyW11bXSA9IFtdO1xuXHRwcml2YXRlIGNsaXBPdXRwdXQgPSBbXSBhcyBudW1iZXJbXTtcblx0Y2xpcHBlZFZlcnRpY2VzID0gW10gYXMgbnVtYmVyW107XG5cblx0LyoqIEFuIGVtcHR5IGFycmF5IHVubGVzcyB7QGxpbmsgY2xpcFRyaWFuZ2xlc1VucGFja2VkfSB3YXMgdXNlZC4gKiovXG5cdGNsaXBwZWRVVnMgPSBbXSBhcyBudW1iZXJbXTtcblxuXHRjbGlwcGVkVHJpYW5nbGVzID0gW10gYXMgbnVtYmVyW107XG5cdGludmVyc2VWZXJ0aWNlcyA9IFtdIGFzIG51bWJlcltdO1xuXG5cdF9jbGlwcGVkVmVydGljZXNUeXBlZDogRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSgxMDI0KTtcblx0X2NsaXBwZWRVVnNUeXBlZDogRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSgxMDI0KTtcblx0X2NsaXBwZWRUcmlhbmdsZXNUeXBlZDogVWludDE2QXJyYXkgPSBuZXcgVWludDE2QXJyYXkoMTAyNCk7XG5cdGNsaXBwZWRWZXJ0aWNlc1R5cGVkOiBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KDApO1xuXHRjbGlwcGVkVVZzVHlwZWQ6IEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoMCk7XG5cdGNsaXBwZWRUcmlhbmdsZXNUeXBlZDogVWludDE2QXJyYXkgPSBuZXcgVWludDE2QXJyYXkoMCk7XG5cdGNsaXBwZWRWZXJ0aWNlc0xlbmd0aCA9IDA7XG5cdGNsaXBwZWRVVnNMZW5ndGggPSAwO1xuXHRjbGlwcGVkVHJpYW5nbGVzTGVuZ3RoID0gMDtcblxuXHRwcml2YXRlIHNjcmF0Y2ggPSBbXSBhcyBudW1iZXJbXTtcblx0cHJpdmF0ZSBpbnZlcnNlID0gZmFsc2U7XG5cblx0cHJpdmF0ZSBjbGlwQXR0YWNobWVudDogQ2xpcHBpbmdBdHRhY2htZW50IHwgbnVsbCA9IG51bGw7XG5cblx0Y2xpcFN0YXJ0IChza2VsZXRvbjogU2tlbGV0b24sIHNsb3Q6IFNsb3QsIGNsaXA6IENsaXBwaW5nQXR0YWNobWVudCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmNsaXBBdHRhY2htZW50KSByZXR1cm47XG5cdFx0Y29uc3QgbiA9IGNsaXAud29ybGRWZXJ0aWNlc0xlbmd0aDtcblx0XHR0aGlzLmNsaXBBdHRhY2htZW50ID0gY2xpcDtcblx0XHR0aGlzLmludmVyc2UgPSBjbGlwLmludmVyc2U7XG5cblx0XHRjb25zdCB2ZXJ0aWNlcyA9IFV0aWxzLnNldEFycmF5U2l6ZSh0aGlzLmNsaXBwaW5nUG9seWdvbiwgbik7XG5cdFx0Y2xpcC5jb21wdXRlV29ybGRWZXJ0aWNlcyhza2VsZXRvbiwgc2xvdCwgMCwgbiwgdmVydGljZXMsIDAsIDIpO1xuXHRcdGNvbnN0IGNsaXBwaW5nUG9seWdvbiA9IHRoaXMuY2xpcHBpbmdQb2x5Z29uO1xuXHRcdGNvbnN0IGNvbnZleCA9IHRoaXMubWFrZUNsb2Nrd2lzZShjbGlwcGluZ1BvbHlnb24pO1xuXG5cdFx0aWYgKGNvbnZleCB8fCB0aGlzLmludmVyc2UgfHwgY2xpcC5jb252ZXgpIHtcblx0XHRcdGlmICghY29udmV4KSB0aGlzLm1ha2VDb252ZXgoY2xpcHBpbmdQb2x5Z29uKTtcblx0XHRcdHRoaXMuY2xpcHBpbmdQb2x5Z29uLnB1c2goY2xpcHBpbmdQb2x5Z29uWzBdLCBjbGlwcGluZ1BvbHlnb25bMV0pO1xuXHRcdFx0dGhpcy5jbGlwcGluZ1BvbHlnb25zLnB1c2goY2xpcHBpbmdQb2x5Z29uKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKHRoaXMudHJpYW5ndWxhdG9yID09PSBudWxsKSB0aGlzLnRyaWFuZ3VsYXRvciA9IG5ldyBUcmlhbmd1bGF0b3IoKTtcblx0XHRcdHRoaXMuY2xpcHBpbmdQb2x5Z29ucy5wdXNoKC4uLnRoaXMudHJpYW5ndWxhdG9yLmRlY29tcG9zZShjbGlwcGluZ1BvbHlnb24sIHRoaXMudHJpYW5ndWxhdG9yLnRyaWFuZ3VsYXRlKGNsaXBwaW5nUG9seWdvbikpKTtcblx0XHR9XG5cdH1cblxuXHRjbGlwRW5kIChzbG90PzogU2xvdCkge1xuXHRcdGlmICghdGhpcy5jbGlwQXR0YWNobWVudCkgcmV0dXJuO1xuXHRcdGlmIChzbG90ICYmIHRoaXMuY2xpcEF0dGFjaG1lbnQuZW5kU2xvdCAhPT0gc2xvdC5kYXRhKSByZXR1cm47XG5cdFx0dGhpcy5jbGlwQXR0YWNobWVudCA9IG51bGw7XG5cdFx0dGhpcy5jbGlwcGluZ1BvbHlnb25zLmxlbmd0aCA9IDA7XG5cdH1cblxuXHRpc0NsaXBwaW5nICgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5jbGlwQXR0YWNobWVudCAhPSBudWxsO1xuXHR9XG5cblx0Y2xpcFRyaWFuZ2xlcyAodmVydGljZXM6IE51bWJlckFycmF5TGlrZSwgdHJpYW5nbGVzOiBOdW1iZXJBcnJheUxpa2UsIHRyaWFuZ2xlc0xlbmd0aDogbnVtYmVyKTogYm9vbGVhbjtcblx0Y2xpcFRyaWFuZ2xlcyAodmVydGljZXM6IE51bWJlckFycmF5TGlrZSwgdHJpYW5nbGVzOiBOdW1iZXJBcnJheUxpa2UsIHRyaWFuZ2xlc0xlbmd0aDogbnVtYmVyLFxuXHRcdHV2czogTnVtYmVyQXJyYXlMaWtlLCBsaWdodDogQ29sb3IsIGRhcms6IENvbG9yLCB0d29Db2xvcjogYm9vbGVhbiwgc3RyaWRlOiBudW1iZXIpOiBib29sZWFuO1xuXHRjbGlwVHJpYW5nbGVzICh2ZXJ0aWNlczogTnVtYmVyQXJyYXlMaWtlLCB0cmlhbmdsZXM6IE51bWJlckFycmF5TGlrZSwgdHJpYW5nbGVzTGVuZ3RoOiBudW1iZXIsXG5cdFx0dXZzPzogTnVtYmVyQXJyYXlMaWtlLCBsaWdodD86IENvbG9yLCBkYXJrPzogQ29sb3IsIHR3b0NvbG9yPzogYm9vbGVhbiwgc3RyaWRlPzogbnVtYmVyKTogYm9vbGVhbiB7XG5cblx0XHRyZXR1cm4gKHV2cyAmJiBsaWdodCAmJiBkYXJrICYmIHR5cGVvZiB0d29Db2xvciA9PT0gJ2Jvb2xlYW4nICYmIHR5cGVvZiBzdHJpZGUgPT09ICdudW1iZXInKVxuXHRcdFx0PyB0aGlzLmNsaXBUcmlhbmdsZXNSZW5kZXIodmVydGljZXMsIHRyaWFuZ2xlcywgdHJpYW5nbGVzTGVuZ3RoLCB1dnMsIGxpZ2h0LCBkYXJrLCB0d29Db2xvciwgc3RyaWRlKVxuXHRcdFx0OiB0aGlzLmNsaXBUcmlhbmdsZXNOb1JlbmRlcih2ZXJ0aWNlcywgdHJpYW5nbGVzLCB0cmlhbmdsZXNMZW5ndGgpO1xuXHR9XG5cblx0cHJpdmF0ZSBjbGlwVHJpYW5nbGVzTm9SZW5kZXIgKHZlcnRpY2VzOiBOdW1iZXJBcnJheUxpa2UsIHRyaWFuZ2xlczogTnVtYmVyQXJyYXlMaWtlLCB0cmlhbmdsZXNMZW5ndGg6IG51bWJlcik6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IGNsaXBwZWRWZXJ0aWNlcyA9IHRoaXMuY2xpcHBlZFZlcnRpY2VzO1xuXHRcdGNsaXBwZWRWZXJ0aWNlcy5sZW5ndGggPSAwO1xuXHRcdGNvbnN0IGNsaXBwZWRUcmlhbmdsZXMgPSB0aGlzLmNsaXBwZWRUcmlhbmdsZXM7XG5cdFx0Y2xpcHBlZFRyaWFuZ2xlcy5sZW5ndGggPSAwO1xuXHRcdGxldCBpbmRleCA9IDA7XG5cblx0XHRpZiAodGhpcy5pbnZlcnNlKSB7XG5cdFx0XHRjb25zdCBwb2x5Z29uID0gdGhpcy5jbGlwcGluZ1BvbHlnb25zWzBdO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0cmlhbmdsZXNMZW5ndGg7IGkgKz0gMykge1xuXHRcdFx0XHRsZXQgdCA9IHRyaWFuZ2xlc1tpXSA8PCAxO1xuXHRcdFx0XHRjb25zdCB4MSA9IHZlcnRpY2VzW3RdLCB5MSA9IHZlcnRpY2VzW3QgKyAxXTtcblx0XHRcdFx0dCA9IHRyaWFuZ2xlc1tpICsgMV0gPDwgMTtcblx0XHRcdFx0Y29uc3QgeDIgPSB2ZXJ0aWNlc1t0XSwgeTIgPSB2ZXJ0aWNlc1t0ICsgMV07XG5cdFx0XHRcdHQgPSB0cmlhbmdsZXNbaSArIDJdIDw8IDE7XG5cdFx0XHRcdGNvbnN0IHgzID0gdmVydGljZXNbdF0sIHkzID0gdmVydGljZXNbdCArIDFdO1xuXHRcdFx0XHR0aGlzLmNsaXBJbnZlcnNlKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHBvbHlnb24pO1xuXG5cdFx0XHRcdGNvbnN0IGl2ID0gdGhpcy5pbnZlcnNlVmVydGljZXM7XG5cdFx0XHRcdGZvciAobGV0IG9mZnNldCA9IDAsIG5uID0gdGhpcy5pbnZlcnNlVmVydGljZXMubGVuZ3RoOyBvZmZzZXQgPCBubjspIHtcblx0XHRcdFx0XHRjb25zdCBwb2x5Z29uU2l6ZSA9IGl2W29mZnNldCsrXTtcblx0XHRcdFx0XHRsZXQgdmVydGV4Q291bnQgPSBwb2x5Z29uU2l6ZSA+PiAxLCBzID0gY2xpcHBlZFZlcnRpY2VzLmxlbmd0aDtcblxuXHRcdFx0XHRcdGNvbnN0IGN2ID0gVXRpbHMuc2V0QXJyYXlTaXplKGNsaXBwZWRWZXJ0aWNlcywgcyArIHBvbHlnb25TaXplKTtcblx0XHRcdFx0XHRVdGlscy5hcnJheUNvcHkoaXYsIG9mZnNldCwgY3YsIHMsIHBvbHlnb25TaXplKTtcblxuXHRcdFx0XHRcdHMgPSBjbGlwcGVkVHJpYW5nbGVzLmxlbmd0aDtcblx0XHRcdFx0XHRjb25zdCBjdCA9IFV0aWxzLnNldEFycmF5U2l6ZShjbGlwcGVkVHJpYW5nbGVzLCBzICsgMyAqICh2ZXJ0ZXhDb3VudCAtIDIpKTtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDE7IGlpIDwgdmVydGV4Q291bnQgLSAxOyBpaSsrLCBzICs9IDMpIHtcblx0XHRcdFx0XHRcdGN0W3NdID0gaW5kZXg7XG5cdFx0XHRcdFx0XHRjdFtzICsgMV0gPSBpbmRleCArIGlpO1xuXHRcdFx0XHRcdFx0Y3RbcyArIDJdID0gaW5kZXggKyBpaSArIDE7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGluZGV4ICs9IHZlcnRleENvdW50O1xuXHRcdFx0XHRcdG9mZnNldCArPSBwb2x5Z29uU2l6ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0Y29uc3QgY2xpcE91dHB1dCA9IHRoaXMuY2xpcE91dHB1dDtcblx0XHRjb25zdCBwb2x5Z29ucyA9IHRoaXMuY2xpcHBpbmdQb2x5Z29ucztcblx0XHRjb25zdCBwb2x5Z29uc0NvdW50ID0gcG9seWdvbnMubGVuZ3RoO1xuXHRcdGxldCBjbGlwT3V0cHV0SXRlbXMgPSBudWxsO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdHJpYW5nbGVzTGVuZ3RoOyBpICs9IDMpIHtcblx0XHRcdGxldCB0ID0gdHJpYW5nbGVzW2ldIDw8IDE7XG5cdFx0XHRjb25zdCB4MSA9IHZlcnRpY2VzW3RdLCB5MSA9IHZlcnRpY2VzW3QgKyAxXTtcblx0XHRcdHQgPSB0cmlhbmdsZXNbaSArIDFdIDw8IDE7XG5cdFx0XHRjb25zdCB4MiA9IHZlcnRpY2VzW3RdLCB5MiA9IHZlcnRpY2VzW3QgKyAxXTtcblx0XHRcdHQgPSB0cmlhbmdsZXNbaSArIDJdIDw8IDE7XG5cdFx0XHRjb25zdCB4MyA9IHZlcnRpY2VzW3RdLCB5MyA9IHZlcnRpY2VzW3QgKyAxXTtcblx0XHRcdGZvciAobGV0IHAgPSAwOyBwIDwgcG9seWdvbnNDb3VudDsgcCsrKSB7XG5cdFx0XHRcdGxldCBzID0gY2xpcHBlZFZlcnRpY2VzLmxlbmd0aDtcblx0XHRcdFx0aWYgKHRoaXMuY2xpcCh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCBwb2x5Z29uc1twXSkpIHtcblx0XHRcdFx0XHRjbGlwT3V0cHV0SXRlbXMgPSB0aGlzLmNsaXBPdXRwdXQ7XG5cdFx0XHRcdFx0Y29uc3QgY2xpcE91dHB1dExlbmd0aCA9IGNsaXBPdXRwdXQubGVuZ3RoO1xuXHRcdFx0XHRcdGlmIChjbGlwT3V0cHV0TGVuZ3RoID09PSAwKSBjb250aW51ZTtcblx0XHRcdFx0XHRsZXQgY2xpcE91dHB1dENvdW50ID0gY2xpcE91dHB1dExlbmd0aCA+PiAxO1xuXG5cdFx0XHRcdFx0Y29uc3QgY3YgPSBVdGlscy5zZXRBcnJheVNpemUoY2xpcHBlZFZlcnRpY2VzLCBzICsgY2xpcE91dHB1dExlbmd0aCk7XG5cdFx0XHRcdFx0VXRpbHMuYXJyYXlDb3B5KGNsaXBPdXRwdXRJdGVtcywgMCwgY3YsIHMsIGNsaXBPdXRwdXRMZW5ndGgpO1xuXG5cdFx0XHRcdFx0cyA9IGNsaXBwZWRUcmlhbmdsZXMubGVuZ3RoO1xuXHRcdFx0XHRcdGNvbnN0IGN0ID0gVXRpbHMuc2V0QXJyYXlTaXplKGNsaXBwZWRUcmlhbmdsZXMsIHMgKyAzICogKGNsaXBPdXRwdXRDb3VudCAtIDIpKTtcblx0XHRcdFx0XHRjbGlwT3V0cHV0Q291bnQtLTtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDE7IGlpIDwgY2xpcE91dHB1dENvdW50OyBpaSsrLCBzICs9IDMpIHtcblx0XHRcdFx0XHRcdGN0W3NdID0gaW5kZXg7XG5cdFx0XHRcdFx0XHRjdFtzICsgMV0gPSAoaW5kZXggKyBpaSk7XG5cdFx0XHRcdFx0XHRjdFtzICsgMl0gPSAoaW5kZXggKyBpaSArIDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpbmRleCArPSBjbGlwT3V0cHV0Q291bnQ7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29uc3QgY3YgPSBVdGlscy5zZXRBcnJheVNpemUoY2xpcHBlZFZlcnRpY2VzLCBzICsgMyAqIDIpO1xuXHRcdFx0XHRcdGN2W3NdID0geDE7XG5cdFx0XHRcdFx0Y3ZbcyArIDFdID0geTE7XG5cdFx0XHRcdFx0Y3ZbcyArIDJdID0geDI7XG5cdFx0XHRcdFx0Y3ZbcyArIDNdID0geTI7XG5cdFx0XHRcdFx0Y3ZbcyArIDRdID0geDM7XG5cdFx0XHRcdFx0Y3ZbcyArIDVdID0geTM7XG5cblx0XHRcdFx0XHRzID0gY2xpcHBlZFRyaWFuZ2xlcy5sZW5ndGg7XG5cdFx0XHRcdFx0Y29uc3QgY3QgPSBVdGlscy5zZXRBcnJheVNpemUoY2xpcHBlZFRyaWFuZ2xlcywgcyArIDMpO1xuXHRcdFx0XHRcdGN0W3NdID0gaW5kZXg7XG5cdFx0XHRcdFx0Y3RbcyArIDFdID0gKGluZGV4ICsgMSk7XG5cdFx0XHRcdFx0Y3RbcyArIDJdID0gKGluZGV4ICsgMik7XG5cdFx0XHRcdFx0aW5kZXggKz0gMztcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gY2xpcE91dHB1dEl0ZW1zICE9IG51bGw7XG5cdH1cblxuXHRwcml2YXRlIGNsaXBUcmlhbmdsZXNSZW5kZXIgKHZlcnRpY2VzOiBOdW1iZXJBcnJheUxpa2UsIHRyaWFuZ2xlczogTnVtYmVyQXJyYXlMaWtlLCB0cmlhbmdsZXNMZW5ndGg6IG51bWJlciwgdXZzOiBOdW1iZXJBcnJheUxpa2UsIGxpZ2h0OiBDb2xvciwgZGFyazogQ29sb3IsXG5cdFx0dHdvQ29sb3I6IGJvb2xlYW4sIHN0cmlkZTogbnVtYmVyKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgY2xpcHBlZFZlcnRpY2VzID0gdGhpcy5jbGlwcGVkVmVydGljZXM7XG5cdFx0Y2xpcHBlZFZlcnRpY2VzLmxlbmd0aCA9IDA7XG5cdFx0Y29uc3QgY2xpcHBlZFRyaWFuZ2xlcyA9IHRoaXMuY2xpcHBlZFRyaWFuZ2xlcztcblx0XHRjbGlwcGVkVHJpYW5nbGVzLmxlbmd0aCA9IDA7XG5cdFx0bGV0IGluZGV4ID0gMDtcblxuXHRcdGlmICh0aGlzLmludmVyc2UpIHtcblx0XHRcdGNvbnN0IHBvbHlnb24gPSB0aGlzLmNsaXBwaW5nUG9seWdvbnNbMF07XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRyaWFuZ2xlc0xlbmd0aDsgaSArPSAzKSB7XG5cdFx0XHRcdGxldCB0MCA9IHRyaWFuZ2xlc1tpXSwgdDEgPSB0cmlhbmdsZXNbaSArIDFdLCB0MiA9IHRyaWFuZ2xlc1tpICsgMl07XG5cdFx0XHRcdGNvbnN0IHgxID0gdmVydGljZXNbdDAgKiBzdHJpZGVdLCB5MSA9IHZlcnRpY2VzW3QwICogc3RyaWRlICsgMV07XG5cdFx0XHRcdGNvbnN0IHgyID0gdmVydGljZXNbdDEgKiBzdHJpZGVdLCB5MiA9IHZlcnRpY2VzW3QxICogc3RyaWRlICsgMV07XG5cdFx0XHRcdGNvbnN0IHgzID0gdmVydGljZXNbdDIgKiBzdHJpZGVdLCB5MyA9IHZlcnRpY2VzW3QyICogc3RyaWRlICsgMV07XG5cdFx0XHRcdHRoaXMuY2xpcEludmVyc2UoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgcG9seWdvbik7XG5cdFx0XHRcdGNvbnN0IG5uID0gdGhpcy5pbnZlcnNlVmVydGljZXMubGVuZ3RoO1xuXHRcdFx0XHRpZiAobm4gPT09IDApIGNvbnRpbnVlO1xuXG5cdFx0XHRcdGNvbnN0IHUxID0gdXZzW3QwIDw8PSAxXSwgdjEgPSB1dnNbdDAgKyAxXTtcblx0XHRcdFx0Y29uc3QgdTIgPSB1dnNbdDEgPDw9IDFdLCB2MiA9IHV2c1t0MSArIDFdO1xuXHRcdFx0XHRjb25zdCB1MyA9IHV2c1t0MiA8PD0gMV0sIHYzID0gdXZzW3QyICsgMV07XG5cdFx0XHRcdGNvbnN0IGQwID0geTIgLSB5MywgZDEgPSB4MyAtIHgyLCBkMiA9IHgxIC0geDMsIGQ0ID0geTMgLSB5MSwgZCA9IDEgLyAoZDAgKiBkMiArIGQxICogKHkxIC0geTMpKTtcblx0XHRcdFx0Y29uc3QgaXYgPSB0aGlzLmludmVyc2VWZXJ0aWNlcztcblx0XHRcdFx0Zm9yIChsZXQgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgbm47KSB7XG5cdFx0XHRcdFx0Y29uc3QgcG9seWdvblNpemUgPSBpdltvZmZzZXQrK107XG5cdFx0XHRcdFx0Y29uc3QgdmVydGV4Q291bnQgPSBwb2x5Z29uU2l6ZSA+PiAxO1xuXG5cdFx0XHRcdFx0bGV0IHMgPSBjbGlwcGVkVmVydGljZXMubGVuZ3RoO1xuXHRcdFx0XHRcdGNvbnN0IGN2ID0gVXRpbHMuc2V0QXJyYXlTaXplKGNsaXBwZWRWZXJ0aWNlcywgcyArIHZlcnRleENvdW50ICogc3RyaWRlKTtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgcG9seWdvblNpemU7IGlpICs9IDIsIHMgKz0gc3RyaWRlKSB7XG5cdFx0XHRcdFx0XHRjb25zdCB4ID0gaXZbb2Zmc2V0ICsgaWldLCB5ID0gaXZbb2Zmc2V0ICsgaWkgKyAxXTtcblx0XHRcdFx0XHRcdGN2W3NdID0geDtcblx0XHRcdFx0XHRcdGN2W3MgKyAxXSA9IHk7XG5cdFx0XHRcdFx0XHRjdltzICsgMl0gPSBsaWdodC5yO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDNdID0gbGlnaHQuZztcblx0XHRcdFx0XHRcdGN2W3MgKyA0XSA9IGxpZ2h0LmI7XG5cdFx0XHRcdFx0XHRjdltzICsgNV0gPSBsaWdodC5hO1xuXHRcdFx0XHRcdFx0Y29uc3QgYzAgPSB4IC0geDMsIGMxID0geSAtIHkzLCBhID0gKGQwICogYzAgKyBkMSAqIGMxKSAqIGQsIGIgPSAoZDQgKiBjMCArIGQyICogYzEpICogZCwgYyA9IDEgLSBhIC0gYjtcblx0XHRcdFx0XHRcdGN2W3MgKyA2XSA9IHUxICogYSArIHUyICogYiArIHUzICogYztcblx0XHRcdFx0XHRcdGN2W3MgKyA3XSA9IHYxICogYSArIHYyICogYiArIHYzICogYztcblx0XHRcdFx0XHRcdGlmICh0d29Db2xvcikge1xuXHRcdFx0XHRcdFx0XHRjdltzICsgOF0gPSBkYXJrLnI7XG5cdFx0XHRcdFx0XHRcdGN2W3MgKyA5XSA9IGRhcmsuZztcblx0XHRcdFx0XHRcdFx0Y3ZbcyArIDEwXSA9IGRhcmsuYjtcblx0XHRcdFx0XHRcdFx0Y3ZbcyArIDExXSA9IGRhcmsuYTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRzID0gY2xpcHBlZFRyaWFuZ2xlcy5sZW5ndGg7XG5cdFx0XHRcdFx0Y29uc3QgY3QgPSBVdGlscy5zZXRBcnJheVNpemUoY2xpcHBlZFRyaWFuZ2xlcywgcyArIDMgKiAodmVydGV4Q291bnQgLSAyKSk7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAxOyBpaSA8IHZlcnRleENvdW50IC0gMTsgaWkrKywgcyArPSAzKSB7XG5cdFx0XHRcdFx0XHRjdFtzXSA9IGluZGV4O1xuXHRcdFx0XHRcdFx0Y3RbcyArIDFdID0gaW5kZXggKyBpaTtcblx0XHRcdFx0XHRcdGN0W3MgKyAyXSA9IGluZGV4ICsgaWkgKyAxO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpbmRleCArPSB2ZXJ0ZXhDb3VudDtcblx0XHRcdFx0XHRvZmZzZXQgKz0gcG9seWdvblNpemU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXG5cdFx0Y29uc3QgY2xpcE91dHB1dCA9IHRoaXMuY2xpcE91dHB1dDtcblx0XHRjb25zdCBwb2x5Z29ucyA9IHRoaXMuY2xpcHBpbmdQb2x5Z29ucztcblx0XHRjb25zdCBwb2x5Z29uc0NvdW50ID0gdGhpcy5jbGlwcGluZ1BvbHlnb25zLmxlbmd0aDtcblx0XHRsZXQgY2xpcE91dHB1dEl0ZW1zID0gbnVsbDtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRyaWFuZ2xlc0xlbmd0aDsgaSArPSAzKSB7XG5cdFx0XHRsZXQgdCA9IHRyaWFuZ2xlc1tpXTtcblx0XHRcdGNvbnN0IHgxID0gdmVydGljZXNbdCAqIHN0cmlkZV0sIHkxID0gdmVydGljZXNbdCAqIHN0cmlkZSArIDFdO1xuXHRcdFx0Y29uc3QgdTEgPSB1dnNbdCA8PCAxXSwgdjEgPSB1dnNbKHQgPDwgMSkgKyAxXTtcblx0XHRcdHQgPSB0cmlhbmdsZXNbaSArIDFdO1xuXHRcdFx0Y29uc3QgeDIgPSB2ZXJ0aWNlc1t0ICogc3RyaWRlXSwgeTIgPSB2ZXJ0aWNlc1t0ICogc3RyaWRlICsgMV07XG5cdFx0XHRjb25zdCB1MiA9IHV2c1t0IDw8IDFdLCB2MiA9IHV2c1sodCA8PCAxKSArIDFdO1xuXHRcdFx0dCA9IHRyaWFuZ2xlc1tpICsgMl07XG5cdFx0XHRjb25zdCB4MyA9IHZlcnRpY2VzW3QgKiBzdHJpZGVdLCB5MyA9IHZlcnRpY2VzW3QgKiBzdHJpZGUgKyAxXTtcblx0XHRcdGNvbnN0IHUzID0gdXZzW3QgPDwgMV0sIHYzID0gdXZzWyh0IDw8IDEpICsgMV07XG5cdFx0XHRjb25zdCBkMCA9IHkyIC0geTMsIGQxID0geDMgLSB4MiwgZDIgPSB4MSAtIHgzLCBkNCA9IHkzIC0geTEsIGQgPSAxIC8gKGQwICogZDIgKyBkMSAqICh5MSAtIHkzKSk7XG5cdFx0XHRmb3IgKGxldCBwID0gMDsgcCA8IHBvbHlnb25zQ291bnQ7IHArKykge1xuXHRcdFx0XHRsZXQgcyA9IGNsaXBwZWRWZXJ0aWNlcy5sZW5ndGg7XG5cdFx0XHRcdGlmICh0aGlzLmNsaXAoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgcG9seWdvbnNbcF0pKSB7XG5cdFx0XHRcdFx0Y2xpcE91dHB1dEl0ZW1zID0gdGhpcy5jbGlwT3V0cHV0O1xuXHRcdFx0XHRcdGNvbnN0IGNsaXBPdXRwdXRMZW5ndGggPSBjbGlwT3V0cHV0Lmxlbmd0aDtcblx0XHRcdFx0XHRpZiAoY2xpcE91dHB1dExlbmd0aCA9PT0gMCkgY29udGludWU7XG5cdFx0XHRcdFx0bGV0IGNsaXBPdXRwdXRDb3VudCA9IGNsaXBPdXRwdXRMZW5ndGggPj4gMTtcblxuXHRcdFx0XHRcdGNvbnN0IGN2ID0gVXRpbHMuc2V0QXJyYXlTaXplKGNsaXBwZWRWZXJ0aWNlcywgcyArIGNsaXBPdXRwdXRDb3VudCAqIHN0cmlkZSk7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IGNsaXBPdXRwdXRMZW5ndGg7IGlpICs9IDIsIHMgKz0gc3RyaWRlKSB7XG5cdFx0XHRcdFx0XHRjb25zdCB4ID0gY2xpcE91dHB1dEl0ZW1zW2lpXSwgeSA9IGNsaXBPdXRwdXRJdGVtc1tpaSArIDFdO1xuXHRcdFx0XHRcdFx0Y3Zbc10gPSB4O1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDFdID0geTtcblx0XHRcdFx0XHRcdGN2W3MgKyAyXSA9IGxpZ2h0LnI7XG5cdFx0XHRcdFx0XHRjdltzICsgM10gPSBsaWdodC5nO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDRdID0gbGlnaHQuYjtcblx0XHRcdFx0XHRcdGN2W3MgKyA1XSA9IGxpZ2h0LmE7XG5cdFx0XHRcdFx0XHRjb25zdCBjMCA9IHggLSB4MywgYzEgPSB5IC0geTMsIGEgPSAoZDAgKiBjMCArIGQxICogYzEpICogZCwgYiA9IChkNCAqIGMwICsgZDIgKiBjMSkgKiBkLCBjID0gMSAtIGEgLSBiO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDZdID0gdTEgKiBhICsgdTIgKiBiICsgdTMgKiBjO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDddID0gdjEgKiBhICsgdjIgKiBiICsgdjMgKiBjO1xuXHRcdFx0XHRcdFx0aWYgKHR3b0NvbG9yKSB7XG5cdFx0XHRcdFx0XHRcdGN2W3MgKyA4XSA9IGRhcmsucjtcblx0XHRcdFx0XHRcdFx0Y3ZbcyArIDldID0gZGFyay5nO1xuXHRcdFx0XHRcdFx0XHRjdltzICsgMTBdID0gZGFyay5iO1xuXHRcdFx0XHRcdFx0XHRjdltzICsgMTFdID0gZGFyay5hO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHMgPSBjbGlwcGVkVHJpYW5nbGVzLmxlbmd0aDtcblx0XHRcdFx0XHRjb25zdCBjdCA9IFV0aWxzLnNldEFycmF5U2l6ZShjbGlwcGVkVHJpYW5nbGVzLCBzICsgMyAqIChjbGlwT3V0cHV0Q291bnQgLSAyKSk7XG5cdFx0XHRcdFx0Y2xpcE91dHB1dENvdW50LS07XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAxOyBpaSA8IGNsaXBPdXRwdXRDb3VudDsgaWkrKywgcyArPSAzKSB7XG5cdFx0XHRcdFx0XHRjdFtzXSA9IGluZGV4O1xuXHRcdFx0XHRcdFx0Y3RbcyArIDFdID0gKGluZGV4ICsgaWkpO1xuXHRcdFx0XHRcdFx0Y3RbcyArIDJdID0gKGluZGV4ICsgaWkgKyAxKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aW5kZXggKz0gY2xpcE91dHB1dENvdW50ICsgMTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb25zdCBjdiA9IFV0aWxzLnNldEFycmF5U2l6ZShjbGlwcGVkVmVydGljZXMsIHMgKyAzICogc3RyaWRlKTtcblx0XHRcdFx0XHRjdltzXSA9IHgxO1xuXHRcdFx0XHRcdGN2W3MgKyAxXSA9IHkxO1xuXHRcdFx0XHRcdGN2W3MgKyAyXSA9IGxpZ2h0LnI7XG5cdFx0XHRcdFx0Y3ZbcyArIDNdID0gbGlnaHQuZztcblx0XHRcdFx0XHRjdltzICsgNF0gPSBsaWdodC5iO1xuXHRcdFx0XHRcdGN2W3MgKyA1XSA9IGxpZ2h0LmE7XG5cdFx0XHRcdFx0aWYgKCF0d29Db2xvcikge1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDZdID0gdTE7XG5cdFx0XHRcdFx0XHRjdltzICsgN10gPSB2MTtcblxuXHRcdFx0XHRcdFx0Y3ZbcyArIDhdID0geDI7XG5cdFx0XHRcdFx0XHRjdltzICsgOV0gPSB5Mjtcblx0XHRcdFx0XHRcdGN2W3MgKyAxMF0gPSBsaWdodC5yO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDExXSA9IGxpZ2h0Lmc7XG5cdFx0XHRcdFx0XHRjdltzICsgMTJdID0gbGlnaHQuYjtcblx0XHRcdFx0XHRcdGN2W3MgKyAxM10gPSBsaWdodC5hO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDE0XSA9IHUyO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDE1XSA9IHYyO1xuXG5cdFx0XHRcdFx0XHRjdltzICsgMTZdID0geDM7XG5cdFx0XHRcdFx0XHRjdltzICsgMTddID0geTM7XG5cdFx0XHRcdFx0XHRjdltzICsgMThdID0gbGlnaHQucjtcblx0XHRcdFx0XHRcdGN2W3MgKyAxOV0gPSBsaWdodC5nO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDIwXSA9IGxpZ2h0LmI7XG5cdFx0XHRcdFx0XHRjdltzICsgMjFdID0gbGlnaHQuYTtcblx0XHRcdFx0XHRcdGN2W3MgKyAyMl0gPSB1Mztcblx0XHRcdFx0XHRcdGN2W3MgKyAyM10gPSB2Mztcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDZdID0gdTE7XG5cdFx0XHRcdFx0XHRjdltzICsgN10gPSB2MTtcblx0XHRcdFx0XHRcdGN2W3MgKyA4XSA9IGRhcmsucjtcblx0XHRcdFx0XHRcdGN2W3MgKyA5XSA9IGRhcmsuZztcblx0XHRcdFx0XHRcdGN2W3MgKyAxMF0gPSBkYXJrLmI7XG5cdFx0XHRcdFx0XHRjdltzICsgMTFdID0gZGFyay5hO1xuXG5cdFx0XHRcdFx0XHRjdltzICsgMTJdID0geDI7XG5cdFx0XHRcdFx0XHRjdltzICsgMTNdID0geTI7XG5cdFx0XHRcdFx0XHRjdltzICsgMTRdID0gbGlnaHQucjtcblx0XHRcdFx0XHRcdGN2W3MgKyAxNV0gPSBsaWdodC5nO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDE2XSA9IGxpZ2h0LmI7XG5cdFx0XHRcdFx0XHRjdltzICsgMTddID0gbGlnaHQuYTtcblx0XHRcdFx0XHRcdGN2W3MgKyAxOF0gPSB1Mjtcblx0XHRcdFx0XHRcdGN2W3MgKyAxOV0gPSB2Mjtcblx0XHRcdFx0XHRcdGN2W3MgKyAyMF0gPSBkYXJrLnI7XG5cdFx0XHRcdFx0XHRjdltzICsgMjFdID0gZGFyay5nO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDIyXSA9IGRhcmsuYjtcblx0XHRcdFx0XHRcdGN2W3MgKyAyM10gPSBkYXJrLmE7XG5cblx0XHRcdFx0XHRcdGN2W3MgKyAyNF0gPSB4Mztcblx0XHRcdFx0XHRcdGN2W3MgKyAyNV0gPSB5Mztcblx0XHRcdFx0XHRcdGN2W3MgKyAyNl0gPSBsaWdodC5yO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDI3XSA9IGxpZ2h0Lmc7XG5cdFx0XHRcdFx0XHRjdltzICsgMjhdID0gbGlnaHQuYjtcblx0XHRcdFx0XHRcdGN2W3MgKyAyOV0gPSBsaWdodC5hO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDMwXSA9IHUzO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDMxXSA9IHYzO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDMyXSA9IGRhcmsucjtcblx0XHRcdFx0XHRcdGN2W3MgKyAzM10gPSBkYXJrLmc7XG5cdFx0XHRcdFx0XHRjdltzICsgMzRdID0gZGFyay5iO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDM1XSA9IGRhcmsuYTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRzID0gY2xpcHBlZFRyaWFuZ2xlcy5sZW5ndGg7XG5cdFx0XHRcdFx0Y29uc3QgY3QgPSBVdGlscy5zZXRBcnJheVNpemUoY2xpcHBlZFRyaWFuZ2xlcywgcyArIDMpO1xuXHRcdFx0XHRcdGN0W3NdID0gaW5kZXg7XG5cdFx0XHRcdFx0Y3RbcyArIDFdID0gKGluZGV4ICsgMSk7XG5cdFx0XHRcdFx0Y3RbcyArIDJdID0gKGluZGV4ICsgMik7XG5cdFx0XHRcdFx0aW5kZXggKz0gMztcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gY2xpcE91dHB1dEl0ZW1zICE9IG51bGw7XG5cdH1cblxuXHRwdWJsaWMgY2xpcFRyaWFuZ2xlc1VucGFja2VkICh2ZXJ0aWNlczogTnVtYmVyQXJyYXlMaWtlLCB2ZXJ0ZXhTdGFydDogbnVtYmVyLCB0cmlhbmdsZXM6IE51bWJlckFycmF5TGlrZSB8IFVpbnQxNkFycmF5LCB0cmlhbmdsZXNMZW5ndGg6IG51bWJlciwgdXZzOiBOdW1iZXJBcnJheUxpa2UsIHN0cmlkZSA9IDIpOiBib29sZWFuIHtcblx0XHRsZXQgY2xpcHBlZFZlcnRpY2VzID0gdGhpcy5fY2xpcHBlZFZlcnRpY2VzVHlwZWQ7XG5cdFx0bGV0IGNsaXBwZWRVVnMgPSB0aGlzLl9jbGlwcGVkVVZzVHlwZWQ7XG5cdFx0bGV0IGNsaXBwZWRUcmlhbmdsZXMgPSB0aGlzLl9jbGlwcGVkVHJpYW5nbGVzVHlwZWQ7XG5cdFx0bGV0IGluZGV4ID0gMDtcblx0XHR0aGlzLmNsaXBwZWRWZXJ0aWNlc0xlbmd0aCA9IDA7XG5cdFx0dGhpcy5jbGlwcGVkVVZzTGVuZ3RoID0gMDtcblx0XHR0aGlzLmNsaXBwZWRUcmlhbmdsZXNMZW5ndGggPSAwO1xuXG5cdFx0aWYgKHRoaXMuaW52ZXJzZSkge1xuXHRcdFx0Y29uc3QgcG9seWdvbiA9IHRoaXMuY2xpcHBpbmdQb2x5Z29uc1swXTtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdHJpYW5nbGVzTGVuZ3RoOyBpICs9IDMpIHtcblx0XHRcdFx0bGV0IHYgPSB0cmlhbmdsZXNbaV0gKiBzdHJpZGU7XG5cdFx0XHRcdGNvbnN0IHgxID0gdmVydGljZXNbdmVydGV4U3RhcnQgKyB2XSwgeTEgPSB2ZXJ0aWNlc1t2ZXJ0ZXhTdGFydCArIHYgKyAxXTtcblx0XHRcdFx0bGV0IHV2ID0gdHJpYW5nbGVzW2ldIDw8IDE7XG5cdFx0XHRcdGNvbnN0IHUxID0gdXZzW3V2XSwgdjEgPSB1dnNbdXYgKyAxXTtcblx0XHRcdFx0diA9IHRyaWFuZ2xlc1tpICsgMV0gKiBzdHJpZGU7XG5cdFx0XHRcdGNvbnN0IHgyID0gdmVydGljZXNbdmVydGV4U3RhcnQgKyB2XSwgeTIgPSB2ZXJ0aWNlc1t2ZXJ0ZXhTdGFydCArIHYgKyAxXTtcblx0XHRcdFx0dXYgPSB0cmlhbmdsZXNbaSArIDFdIDw8IDE7XG5cdFx0XHRcdGNvbnN0IHUyID0gdXZzW3V2XSwgdjIgPSB1dnNbdXYgKyAxXTtcblx0XHRcdFx0diA9IHRyaWFuZ2xlc1tpICsgMl0gKiBzdHJpZGU7XG5cdFx0XHRcdGNvbnN0IHgzID0gdmVydGljZXNbdmVydGV4U3RhcnQgKyB2XSwgeTMgPSB2ZXJ0aWNlc1t2ZXJ0ZXhTdGFydCArIHYgKyAxXTtcblx0XHRcdFx0dXYgPSB0cmlhbmdsZXNbaSArIDJdIDw8IDE7XG5cdFx0XHRcdGNvbnN0IHUzID0gdXZzW3V2XSwgdjMgPSB1dnNbdXYgKyAxXTtcblx0XHRcdFx0dGhpcy5jbGlwSW52ZXJzZSh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCBwb2x5Z29uKTtcblx0XHRcdFx0Y29uc3Qgbm4gPSB0aGlzLmludmVyc2VWZXJ0aWNlcy5sZW5ndGg7XG5cdFx0XHRcdGlmIChubiA9PT0gMCkgY29udGludWU7XG5cblx0XHRcdFx0Y29uc3QgZDAgPSB5MiAtIHkzLCBkMSA9IHgzIC0geDIsIGQyID0geDEgLSB4MywgZDQgPSB5MyAtIHkxLCBkID0gMSAvIChkMCAqIGQyICsgZDEgKiAoeTEgLSB5MykpO1xuXHRcdFx0XHRjb25zdCBpdiA9IHRoaXMuaW52ZXJzZVZlcnRpY2VzO1xuXHRcdFx0XHRmb3IgKGxldCBvZmZzZXQgPSAwOyBvZmZzZXQgPCBubjspIHtcblx0XHRcdFx0XHRjb25zdCBwb2x5Z29uU2l6ZSA9IGl2W29mZnNldCsrXTtcblx0XHRcdFx0XHRjb25zdCB2ZXJ0ZXhDb3VudCA9IHBvbHlnb25TaXplID4+IDE7XG5cblx0XHRcdFx0XHRsZXQgcyA9IHRoaXMuY2xpcHBlZFZlcnRpY2VzTGVuZ3RoO1xuXHRcdFx0XHRcdGNvbnN0IG5ld0xlbmd0aCA9IHMgKyB2ZXJ0ZXhDb3VudCAqIHN0cmlkZTtcblx0XHRcdFx0XHRjb25zdCBuZXdVVkxlbmd0aCA9IHRoaXMuY2xpcHBlZFVWc0xlbmd0aCArIHZlcnRleENvdW50ICogMjtcblx0XHRcdFx0XHRpZiAoY2xpcHBlZFZlcnRpY2VzLmxlbmd0aCA8IG5ld0xlbmd0aCkge1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFZlcnRpY2VzVHlwZWQgPSBuZXcgRmxvYXQzMkFycmF5KG5ld0xlbmd0aCAqIDIpO1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFZlcnRpY2VzVHlwZWQuc2V0KGNsaXBwZWRWZXJ0aWNlcy5zdWJhcnJheSgwLCBzKSk7XG5cdFx0XHRcdFx0XHRjbGlwcGVkVmVydGljZXMgPSB0aGlzLl9jbGlwcGVkVmVydGljZXNUeXBlZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGNsaXBwZWRVVnMubGVuZ3RoIDwgbmV3VVZMZW5ndGgpIHtcblx0XHRcdFx0XHRcdHRoaXMuX2NsaXBwZWRVVnNUeXBlZCA9IG5ldyBGbG9hdDMyQXJyYXkobmV3VVZMZW5ndGggKiAyKTtcblx0XHRcdFx0XHRcdHRoaXMuX2NsaXBwZWRVVnNUeXBlZC5zZXQoY2xpcHBlZFVWcy5zdWJhcnJheSgwLCB0aGlzLmNsaXBwZWRVVnNMZW5ndGgpKTtcblx0XHRcdFx0XHRcdGNsaXBwZWRVVnMgPSB0aGlzLl9jbGlwcGVkVVZzVHlwZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuY2xpcHBlZFZlcnRpY2VzTGVuZ3RoID0gbmV3TGVuZ3RoO1xuXHRcdFx0XHRcdHRoaXMuY2xpcHBlZFVWc0xlbmd0aCA9IG5ld1VWTGVuZ3RoO1xuXG5cdFx0XHRcdFx0Y29uc3QgY3YgPSB0aGlzLl9jbGlwcGVkVmVydGljZXNUeXBlZDtcblx0XHRcdFx0XHRjb25zdCBjdSA9IHRoaXMuX2NsaXBwZWRVVnNUeXBlZDtcblx0XHRcdFx0XHRsZXQgdXZJbmRleCA9IG5ld1VWTGVuZ3RoIC0gdmVydGV4Q291bnQgKiAyO1xuXHRcdFx0XHRcdGZvciAobGV0IGlpID0gMDsgaWkgPCBwb2x5Z29uU2l6ZTsgaWkgKz0gMiwgcyArPSBzdHJpZGUsIHV2SW5kZXggKz0gMikge1xuXHRcdFx0XHRcdFx0Y29uc3QgeCA9IGl2W29mZnNldCArIGlpXSwgeSA9IGl2W29mZnNldCArIGlpICsgMV07XG5cdFx0XHRcdFx0XHRjdltzXSA9IHg7XG5cdFx0XHRcdFx0XHRjdltzICsgMV0gPSB5O1xuXHRcdFx0XHRcdFx0Y29uc3QgYzAgPSB4IC0geDMsIGMxID0geSAtIHkzLCBhID0gKGQwICogYzAgKyBkMSAqIGMxKSAqIGQsIGIgPSAoZDQgKiBjMCArIGQyICogYzEpICogZCwgYyA9IDEgLSBhIC0gYjtcblx0XHRcdFx0XHRcdGN1W3V2SW5kZXhdID0gdTEgKiBhICsgdTIgKiBiICsgdTMgKiBjO1xuXHRcdFx0XHRcdFx0Y3VbdXZJbmRleCArIDFdID0gdjEgKiBhICsgdjIgKiBiICsgdjMgKiBjO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHMgPSB0aGlzLmNsaXBwZWRUcmlhbmdsZXNMZW5ndGg7XG5cdFx0XHRcdFx0Y29uc3QgbmV3TGVuZ3RoVHJpYW5nbGVzID0gcyArIDMgKiAodmVydGV4Q291bnQgLSAyKTtcblx0XHRcdFx0XHRpZiAoY2xpcHBlZFRyaWFuZ2xlcy5sZW5ndGggPCBuZXdMZW5ndGhUcmlhbmdsZXMpIHtcblx0XHRcdFx0XHRcdHRoaXMuX2NsaXBwZWRUcmlhbmdsZXNUeXBlZCA9IG5ldyBVaW50MTZBcnJheShuZXdMZW5ndGhUcmlhbmdsZXMgKiAyKTtcblx0XHRcdFx0XHRcdHRoaXMuX2NsaXBwZWRUcmlhbmdsZXNUeXBlZC5zZXQoY2xpcHBlZFRyaWFuZ2xlcy5zdWJhcnJheSgwLCBzKSk7XG5cdFx0XHRcdFx0XHRjbGlwcGVkVHJpYW5nbGVzID0gdGhpcy5fY2xpcHBlZFRyaWFuZ2xlc1R5cGVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLmNsaXBwZWRUcmlhbmdsZXNMZW5ndGggPSBuZXdMZW5ndGhUcmlhbmdsZXM7XG5cdFx0XHRcdFx0Y29uc3QgY3QgPSBjbGlwcGVkVHJpYW5nbGVzO1xuXHRcdFx0XHRcdGZvciAobGV0IGlpID0gMTsgaWkgPCB2ZXJ0ZXhDb3VudCAtIDE7IGlpKyssIHMgKz0gMykge1xuXHRcdFx0XHRcdFx0Y3Rbc10gPSBpbmRleDtcblx0XHRcdFx0XHRcdGN0W3MgKyAxXSA9IGluZGV4ICsgaWk7XG5cdFx0XHRcdFx0XHRjdFtzICsgMl0gPSBpbmRleCArIGlpICsgMTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aW5kZXggKz0gdmVydGV4Q291bnQ7XG5cdFx0XHRcdFx0b2Zmc2V0ICs9IHBvbHlnb25TaXplO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmNsaXBwZWRWZXJ0aWNlc1R5cGVkID0gdGhpcy5fY2xpcHBlZFZlcnRpY2VzVHlwZWQuc3ViYXJyYXkoMCwgdGhpcy5jbGlwcGVkVmVydGljZXNMZW5ndGgpO1xuXHRcdFx0dGhpcy5jbGlwcGVkVVZzVHlwZWQgPSB0aGlzLl9jbGlwcGVkVVZzVHlwZWQuc3ViYXJyYXkoMCwgdGhpcy5jbGlwcGVkVVZzTGVuZ3RoKTtcblx0XHRcdHRoaXMuY2xpcHBlZFRyaWFuZ2xlc1R5cGVkID0gdGhpcy5fY2xpcHBlZFRyaWFuZ2xlc1R5cGVkLnN1YmFycmF5KDAsIHRoaXMuY2xpcHBlZFRyaWFuZ2xlc0xlbmd0aCk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRjb25zdCBjbGlwT3V0cHV0ID0gdGhpcy5jbGlwT3V0cHV0O1xuXHRcdGNvbnN0IHBvbHlnb25zID0gdGhpcy5jbGlwcGluZ1BvbHlnb25zO1xuXHRcdGNvbnN0IHBvbHlnb25zQ291bnQgPSB0aGlzLmNsaXBwaW5nUG9seWdvbnMubGVuZ3RoO1xuXHRcdGxldCBjbGlwT3V0cHV0SXRlbXMgPSBudWxsO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdHJpYW5nbGVzTGVuZ3RoOyBpICs9IDMpIHtcblx0XHRcdGxldCB0ID0gdHJpYW5nbGVzW2ldO1xuXHRcdFx0bGV0IHYgPSB0ICogc3RyaWRlO1xuXHRcdFx0Y29uc3QgeDEgPSB2ZXJ0aWNlc1t2ZXJ0ZXhTdGFydCArIHZdLCB5MSA9IHZlcnRpY2VzW3ZlcnRleFN0YXJ0ICsgdiArIDFdO1xuXHRcdFx0bGV0IHV2ID0gdCA8PCAxO1xuXHRcdFx0Y29uc3QgdTEgPSB1dnNbdXZdLCB2MSA9IHV2c1t1diArIDFdO1xuXHRcdFx0dCA9IHRyaWFuZ2xlc1tpICsgMV07XG5cdFx0XHR2ID0gdCAqIHN0cmlkZTtcblx0XHRcdGNvbnN0IHgyID0gdmVydGljZXNbdmVydGV4U3RhcnQgKyB2XSwgeTIgPSB2ZXJ0aWNlc1t2ZXJ0ZXhTdGFydCArIHYgKyAxXTtcblx0XHRcdHV2ID0gdCA8PCAxO1xuXHRcdFx0Y29uc3QgdTIgPSB1dnNbdXZdLCB2MiA9IHV2c1t1diArIDFdO1xuXHRcdFx0dCA9IHRyaWFuZ2xlc1tpICsgMl07XG5cdFx0XHR2ID0gdCAqIHN0cmlkZTtcblx0XHRcdGNvbnN0IHgzID0gdmVydGljZXNbdmVydGV4U3RhcnQgKyB2XSwgeTMgPSB2ZXJ0aWNlc1t2ZXJ0ZXhTdGFydCArIHYgKyAxXTtcblx0XHRcdHV2ID0gdCA8PCAxO1xuXHRcdFx0Y29uc3QgdTMgPSB1dnNbdXZdLCB2MyA9IHV2c1t1diArIDFdO1xuXHRcdFx0Y29uc3QgZDAgPSB5MiAtIHkzLCBkMSA9IHgzIC0geDIsIGQyID0geDEgLSB4MywgZDQgPSB5MyAtIHkxLCBkID0gMSAvIChkMCAqIGQyICsgZDEgKiAoeTEgLSB5MykpO1xuXG5cdFx0XHRmb3IgKGxldCBwID0gMDsgcCA8IHBvbHlnb25zQ291bnQ7IHArKykge1xuXHRcdFx0XHRsZXQgcyA9IHRoaXMuY2xpcHBlZFZlcnRpY2VzTGVuZ3RoO1xuXHRcdFx0XHRpZiAodGhpcy5jbGlwKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHBvbHlnb25zW3BdKSkge1xuXHRcdFx0XHRcdGNsaXBPdXRwdXRJdGVtcyA9IGNsaXBPdXRwdXQ7XG5cdFx0XHRcdFx0Y29uc3QgY2xpcE91dHB1dExlbmd0aCA9IGNsaXBPdXRwdXQubGVuZ3RoO1xuXHRcdFx0XHRcdGlmIChjbGlwT3V0cHV0TGVuZ3RoID09PSAwKSBjb250aW51ZTtcblx0XHRcdFx0XHRsZXQgY2xpcE91dHB1dENvdW50ID0gY2xpcE91dHB1dExlbmd0aCA+PiAxO1xuXG5cdFx0XHRcdFx0Y29uc3QgbmV3TGVuZ3RoID0gcyArIGNsaXBPdXRwdXRDb3VudCAqIHN0cmlkZTtcblx0XHRcdFx0XHRpZiAoY2xpcHBlZFZlcnRpY2VzLmxlbmd0aCA8IG5ld0xlbmd0aCkge1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFZlcnRpY2VzVHlwZWQgPSBuZXcgRmxvYXQzMkFycmF5KG5ld0xlbmd0aCAqIDIpO1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFZlcnRpY2VzVHlwZWQuc2V0KGNsaXBwZWRWZXJ0aWNlcy5zdWJhcnJheSgwLCBzKSk7XG5cdFx0XHRcdFx0XHR0aGlzLl9jbGlwcGVkVVZzVHlwZWQgPSBuZXcgRmxvYXQzMkFycmF5KCh0aGlzLmNsaXBwZWRVVnNMZW5ndGggKyBjbGlwT3V0cHV0Q291bnQgKiAyKSAqIDIpO1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFVWc1R5cGVkLnNldChjbGlwcGVkVVZzLnN1YmFycmF5KDAsIHRoaXMuY2xpcHBlZFVWc0xlbmd0aCkpO1xuXHRcdFx0XHRcdFx0Y2xpcHBlZFZlcnRpY2VzID0gdGhpcy5fY2xpcHBlZFZlcnRpY2VzVHlwZWQ7XG5cdFx0XHRcdFx0XHRjbGlwcGVkVVZzID0gdGhpcy5fY2xpcHBlZFVWc1R5cGVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb25zdCBjdiA9IGNsaXBwZWRWZXJ0aWNlcztcblx0XHRcdFx0XHRjb25zdCBjdSA9IGNsaXBwZWRVVnM7XG5cdFx0XHRcdFx0dGhpcy5jbGlwcGVkVmVydGljZXNMZW5ndGggPSBuZXdMZW5ndGg7XG5cblx0XHRcdFx0XHRsZXQgdXZJbmRleCA9IHRoaXMuY2xpcHBlZFVWc0xlbmd0aDtcblx0XHRcdFx0XHR0aGlzLmNsaXBwZWRVVnNMZW5ndGggPSB1dkluZGV4ICsgY2xpcE91dHB1dENvdW50ICogMjtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgY2xpcE91dHB1dExlbmd0aDsgaWkgKz0gMiwgcyArPSBzdHJpZGUsIHV2SW5kZXggKz0gMikge1xuXHRcdFx0XHRcdFx0Y29uc3QgeCA9IGNsaXBPdXRwdXRJdGVtc1tpaV0sIHkgPSBjbGlwT3V0cHV0SXRlbXNbaWkgKyAxXTtcblx0XHRcdFx0XHRcdGN2W3NdID0geDtcblx0XHRcdFx0XHRcdGN2W3MgKyAxXSA9IHk7XG5cblx0XHRcdFx0XHRcdGNvbnN0IGMwID0geCAtIHgzLCBjMSA9IHkgLSB5MywgYSA9IChkMCAqIGMwICsgZDEgKiBjMSkgKiBkLCBiID0gKGQ0ICogYzAgKyBkMiAqIGMxKSAqIGQsIGMgPSAxIC0gYSAtIGI7XG5cdFx0XHRcdFx0XHRjdVt1dkluZGV4XSA9IHUxICogYSArIHUyICogYiArIHUzICogYztcblx0XHRcdFx0XHRcdGN1W3V2SW5kZXggKyAxXSA9IHYxICogYSArIHYyICogYiArIHYzICogYztcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRzID0gdGhpcy5jbGlwcGVkVHJpYW5nbGVzTGVuZ3RoO1xuXHRcdFx0XHRcdGNvbnN0IG5ld0xlbmd0aFRyaWFuZ2xlcyA9IHMgKyAzICogKGNsaXBPdXRwdXRDb3VudCAtIDIpXG5cdFx0XHRcdFx0aWYgKGNsaXBwZWRUcmlhbmdsZXMubGVuZ3RoIDwgbmV3TGVuZ3RoVHJpYW5nbGVzKSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9jbGlwcGVkVHJpYW5nbGVzVHlwZWQgPSBuZXcgVWludDE2QXJyYXkobmV3TGVuZ3RoVHJpYW5nbGVzICogMik7XG5cdFx0XHRcdFx0XHR0aGlzLl9jbGlwcGVkVHJpYW5nbGVzVHlwZWQuc2V0KGNsaXBwZWRUcmlhbmdsZXMuc3ViYXJyYXkoMCwgcykpO1xuXHRcdFx0XHRcdFx0Y2xpcHBlZFRyaWFuZ2xlcyA9IHRoaXMuX2NsaXBwZWRUcmlhbmdsZXNUeXBlZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5jbGlwcGVkVHJpYW5nbGVzTGVuZ3RoID0gbmV3TGVuZ3RoVHJpYW5nbGVzO1xuXHRcdFx0XHRcdGNvbnN0IGN0ID0gY2xpcHBlZFRyaWFuZ2xlcztcblx0XHRcdFx0XHRjbGlwT3V0cHV0Q291bnQtLTtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDE7IGlpIDwgY2xpcE91dHB1dENvdW50OyBpaSsrLCBzICs9IDMpIHtcblx0XHRcdFx0XHRcdGN0W3NdID0gaW5kZXg7XG5cdFx0XHRcdFx0XHRjdFtzICsgMV0gPSAoaW5kZXggKyBpaSk7XG5cdFx0XHRcdFx0XHRjdFtzICsgMl0gPSAoaW5kZXggKyBpaSArIDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpbmRleCArPSBjbGlwT3V0cHV0Q291bnQgKyAxO1xuXG5cdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRsZXQgbmV3TGVuZ3RoID0gcyArIDMgKiBzdHJpZGU7XG5cdFx0XHRcdFx0aWYgKGNsaXBwZWRWZXJ0aWNlcy5sZW5ndGggPCBuZXdMZW5ndGgpIHtcblx0XHRcdFx0XHRcdHRoaXMuX2NsaXBwZWRWZXJ0aWNlc1R5cGVkID0gbmV3IEZsb2F0MzJBcnJheShuZXdMZW5ndGggKiAyKTtcblx0XHRcdFx0XHRcdHRoaXMuX2NsaXBwZWRWZXJ0aWNlc1R5cGVkLnNldChjbGlwcGVkVmVydGljZXMuc3ViYXJyYXkoMCwgcykpO1xuXHRcdFx0XHRcdFx0Y2xpcHBlZFZlcnRpY2VzID0gdGhpcy5fY2xpcHBlZFZlcnRpY2VzVHlwZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNsaXBwZWRWZXJ0aWNlc1tzXSA9IHgxO1xuXHRcdFx0XHRcdGNsaXBwZWRWZXJ0aWNlc1tzICsgMV0gPSB5MTtcblx0XHRcdFx0XHRjbGlwcGVkVmVydGljZXNbcyArIHN0cmlkZV0gPSB4Mjtcblx0XHRcdFx0XHRjbGlwcGVkVmVydGljZXNbcyArIHN0cmlkZSArIDFdID0geTI7XG5cdFx0XHRcdFx0Y2xpcHBlZFZlcnRpY2VzW3MgKyBzdHJpZGUgKiAyXSA9IHgzO1xuXHRcdFx0XHRcdGNsaXBwZWRWZXJ0aWNlc1tzICsgc3RyaWRlICogMiArIDFdID0geTM7XG5cblx0XHRcdFx0XHRjb25zdCB1dkxlbmd0aCA9IHRoaXMuY2xpcHBlZFVWc0xlbmd0aCArIDMgKiAyO1xuXHRcdFx0XHRcdGlmIChjbGlwcGVkVVZzLmxlbmd0aCA8IHV2TGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9jbGlwcGVkVVZzVHlwZWQgPSBuZXcgRmxvYXQzMkFycmF5KHV2TGVuZ3RoICogMik7XG5cdFx0XHRcdFx0XHR0aGlzLl9jbGlwcGVkVVZzVHlwZWQuc2V0KGNsaXBwZWRVVnMuc3ViYXJyYXkoMCwgdGhpcy5jbGlwcGVkVVZzTGVuZ3RoKSk7XG5cdFx0XHRcdFx0XHRjbGlwcGVkVVZzID0gdGhpcy5fY2xpcHBlZFVWc1R5cGVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb25zdCB1dkluZGV4ID0gdGhpcy5jbGlwcGVkVVZzTGVuZ3RoO1xuXHRcdFx0XHRcdGNsaXBwZWRVVnNbdXZJbmRleF0gPSB1MTtcblx0XHRcdFx0XHRjbGlwcGVkVVZzW3V2SW5kZXggKyAxXSA9IHYxO1xuXHRcdFx0XHRcdGNsaXBwZWRVVnNbdXZJbmRleCArIDJdID0gdTI7XG5cdFx0XHRcdFx0Y2xpcHBlZFVWc1t1dkluZGV4ICsgM10gPSB2Mjtcblx0XHRcdFx0XHRjbGlwcGVkVVZzW3V2SW5kZXggKyA0XSA9IHUzO1xuXHRcdFx0XHRcdGNsaXBwZWRVVnNbdXZJbmRleCArIDVdID0gdjM7XG5cblx0XHRcdFx0XHR0aGlzLmNsaXBwZWRWZXJ0aWNlc0xlbmd0aCA9IG5ld0xlbmd0aDtcblx0XHRcdFx0XHR0aGlzLmNsaXBwZWRVVnNMZW5ndGggPSB1dkxlbmd0aDtcblxuXHRcdFx0XHRcdHMgPSB0aGlzLmNsaXBwZWRUcmlhbmdsZXNMZW5ndGg7XG5cdFx0XHRcdFx0bmV3TGVuZ3RoID0gcyArIDM7XG5cdFx0XHRcdFx0aWYgKGNsaXBwZWRUcmlhbmdsZXMubGVuZ3RoIDwgbmV3TGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9jbGlwcGVkVHJpYW5nbGVzVHlwZWQgPSBuZXcgVWludDE2QXJyYXkobmV3TGVuZ3RoICogMik7XG5cdFx0XHRcdFx0XHR0aGlzLl9jbGlwcGVkVHJpYW5nbGVzVHlwZWQuc2V0KGNsaXBwZWRUcmlhbmdsZXMuc3ViYXJyYXkoMCwgcykpO1xuXHRcdFx0XHRcdFx0Y2xpcHBlZFRyaWFuZ2xlcyA9IHRoaXMuX2NsaXBwZWRUcmlhbmdsZXNUeXBlZDtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRjb25zdCBjdCA9IGNsaXBwZWRUcmlhbmdsZXM7XG5cdFx0XHRcdFx0Y3Rbc10gPSBpbmRleDtcblx0XHRcdFx0XHRjdFtzICsgMV0gPSAoaW5kZXggKyAxKTtcblx0XHRcdFx0XHRjdFtzICsgMl0gPSAoaW5kZXggKyAyKTtcblx0XHRcdFx0XHRpbmRleCArPSAzO1xuXG5cdFx0XHRcdFx0dGhpcy5jbGlwcGVkVHJpYW5nbGVzTGVuZ3RoID0gbmV3TGVuZ3RoO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGhpcy5jbGlwcGVkVmVydGljZXNUeXBlZCA9IHRoaXMuX2NsaXBwZWRWZXJ0aWNlc1R5cGVkLnN1YmFycmF5KDAsIHRoaXMuY2xpcHBlZFZlcnRpY2VzTGVuZ3RoKVxuXHRcdHRoaXMuY2xpcHBlZFVWc1R5cGVkID0gdGhpcy5fY2xpcHBlZFVWc1R5cGVkLnN1YmFycmF5KDAsIHRoaXMuY2xpcHBlZFVWc0xlbmd0aClcblx0XHR0aGlzLmNsaXBwZWRUcmlhbmdsZXNUeXBlZCA9IHRoaXMuX2NsaXBwZWRUcmlhbmdsZXNUeXBlZC5zdWJhcnJheSgwLCB0aGlzLmNsaXBwZWRUcmlhbmdsZXNMZW5ndGgpXG5cdFx0cmV0dXJuIGNsaXBPdXRwdXRJdGVtcyAhPT0gbnVsbDtcblx0fVxuXG5cdHByaXZhdGUgY2xpcCAoeDE6IG51bWJlciwgeTE6IG51bWJlciwgeDI6IG51bWJlciwgeTI6IG51bWJlciwgeDM6IG51bWJlciwgeTM6IG51bWJlciwgcG9seWdvbjogbnVtYmVyW10pIHtcblx0XHRjb25zdCBvcmlnaW5hbE91dHB1dCA9IHRoaXMuY2xpcE91dHB1dDtcblx0XHRsZXQgY2xpcHBlZCA9IGZhbHNlO1xuXG5cdFx0Ly8gQXZvaWQgY29weSBhdCB0aGUgZW5kLlxuXHRcdGxldCBpbnB1dDogbnVtYmVyW10sIG91dHB1dDogbnVtYmVyW107XG5cdFx0aWYgKHBvbHlnb24ubGVuZ3RoICUgNCA+PSAyKSB7XG5cdFx0XHRpbnB1dCA9IHRoaXMuY2xpcE91dHB1dDtcblx0XHRcdG91dHB1dCA9IHRoaXMuc2NyYXRjaDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aW5wdXQgPSB0aGlzLnNjcmF0Y2g7XG5cdFx0XHRvdXRwdXQgPSB0aGlzLmNsaXBPdXRwdXQ7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdiA9IHBvbHlnb247XG5cdFx0aW5wdXQubGVuZ3RoID0gODtcblx0XHRjb25zdCBpdiA9IGlucHV0O1xuXHRcdGl2WzBdID0geDE7XG5cdFx0aXZbMV0gPSB5MTtcblx0XHRpdlsyXSA9IHgyO1xuXHRcdGl2WzNdID0geTI7XG5cdFx0aXZbNF0gPSB4Mztcblx0XHRpdls1XSA9IHkzO1xuXHRcdGl2WzZdID0geDE7XG5cdFx0aXZbN10gPSB5MTtcblx0XHRvdXRwdXQubGVuZ3RoID0gMDtcblxuXHRcdGNvbnN0IGxhc3QgPSBwb2x5Z29uLmxlbmd0aCAtIDQ7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IDsgaSArPSAyKSB7XG5cdFx0XHRjb25zdCBlZGdlWCA9IHZbaV0sIGVkZ2VZID0gdltpICsgMV0sIGV4ID0gZWRnZVggLSB2W2kgKyAyXSwgZXkgPSBlZGdlWSAtIHZbaSArIDNdO1xuXHRcdFx0Y29uc3Qgb3V0cHV0U3RhcnQgPSBvdXRwdXQubGVuZ3RoO1xuXHRcdFx0Y29uc3QgaXYgPSBpbnB1dDtcblx0XHRcdGZvciAobGV0IGlpID0gMCwgbm4gPSBpbnB1dC5sZW5ndGggLSAyOyBpaSA8IG5uOykge1xuXHRcdFx0XHR4MSA9IGl2W2lpXTtcblx0XHRcdFx0eTEgPSBpdltpaSArIDFdO1xuXHRcdFx0XHRpaSArPSAyO1xuXHRcdFx0XHR4MiA9IGl2W2lpXTtcblx0XHRcdFx0eTIgPSBpdltpaSArIDFdO1xuXHRcdFx0XHRjb25zdCBzMiA9IGV5ICogKGVkZ2VYIC0geDIpID4gZXggKiAoZWRnZVkgLSB5Mik7XG5cdFx0XHRcdGNvbnN0IHMxID0gZXkgKiAoZWRnZVggLSB4MSkgLSBleCAqIChlZGdlWSAtIHkxKTtcblx0XHRcdFx0aWYgKHMxID4gMCkge1xuXHRcdFx0XHRcdGlmIChzMikgLy8gdjEgaW4sIHYyIGluXG5cdFx0XHRcdFx0XHRvdXRwdXQucHVzaCh4MiwgeTIpO1xuXHRcdFx0XHRcdGVsc2UgeyAvLyB2MSBpbiwgdjIgb3V0XG5cdFx0XHRcdFx0XHRjb25zdCBpeCA9IHgyIC0geDEsIGl5ID0geTIgLSB5MSwgdCA9IHMxIC8gKGl4ICogZXkgLSBpeSAqIGV4KTtcblx0XHRcdFx0XHRcdGlmICh0ID49IDAgJiYgdCA8PSAxKSB7XG5cdFx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKHgxICsgaXggKiB0LCB5MSArIGl5ICogdCk7XG5cdFx0XHRcdFx0XHRcdGNsaXBwZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKHgyLCB5Mik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKHMyKSB7IC8vIHYxIG91dCwgdjIgaW5cblx0XHRcdFx0XHRjb25zdCBpeCA9IHgyIC0geDEsIGl5ID0geTIgLSB5MSwgdCA9IHMxIC8gKGl4ICogZXkgLSBpeSAqIGV4KTtcblx0XHRcdFx0XHRpZiAodCA+PSAwICYmIHQgPD0gMSkge1xuXHRcdFx0XHRcdFx0b3V0cHV0LnB1c2goeDEgKyBpeCAqIHQsIHkxICsgaXkgKiB0LCB4MiwgeTIpO1xuXHRcdFx0XHRcdFx0Y2xpcHBlZCA9IHRydWU7XG5cdFx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0XHRvdXRwdXQucHVzaCh4MiwgeTIpO1xuXHRcdFx0XHR9IGVsc2UgLy8gdjEgb3V0LCB2MiBvdXRcblx0XHRcdFx0XHRjbGlwcGVkID0gdHJ1ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKG91dHB1dFN0YXJ0ID09PSBvdXRwdXQubGVuZ3RoKSB7IC8vIEFsbCBvdXRzaWRlLlxuXHRcdFx0XHRvcmlnaW5hbE91dHB1dC5sZW5ndGggPSAwO1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblxuXHRcdFx0b3V0cHV0LnB1c2gob3V0cHV0WzBdLCBvdXRwdXRbMV0pO1xuXG5cdFx0XHRpZiAoaSA9PT0gbGFzdCkgYnJlYWs7XG5cdFx0XHRjb25zdCB0ZW1wID0gb3V0cHV0O1xuXHRcdFx0b3V0cHV0ID0gaW5wdXQ7XG5cdFx0XHRvdXRwdXQubGVuZ3RoID0gMDtcblx0XHRcdGlucHV0ID0gdGVtcDtcblx0XHR9XG5cblx0XHRpZiAob3JpZ2luYWxPdXRwdXQgIT09IG91dHB1dCkge1xuXHRcdFx0b3JpZ2luYWxPdXRwdXQubGVuZ3RoID0gMDtcblx0XHRcdGZvciAobGV0IGkgPSAwLCBuID0gb3V0cHV0Lmxlbmd0aCAtIDI7IGkgPCBuOyBpKyspXG5cdFx0XHRcdG9yaWdpbmFsT3V0cHV0W2ldID0gb3V0cHV0W2ldO1xuXHRcdH0gZWxzZVxuXHRcdFx0b3JpZ2luYWxPdXRwdXQubGVuZ3RoID0gb3JpZ2luYWxPdXRwdXQubGVuZ3RoIC0gMjtcblxuXHRcdHJldHVybiBjbGlwcGVkO1xuXHR9XG5cblx0cHJpdmF0ZSBjbGlwSW52ZXJzZSAoeDE6IG51bWJlciwgeTE6IG51bWJlciwgeDI6IG51bWJlciwgeTI6IG51bWJlciwgeDM6IG51bWJlciwgeTM6IG51bWJlciwgcG9seWdvbjogbnVtYmVyW10pOiB2b2lkIHtcblx0XHR0aGlzLmludmVyc2VWZXJ0aWNlcy5sZW5ndGggPSAwO1xuXHRcdGNvbnN0IHZMYXN0ID0gcG9seWdvbi5sZW5ndGggLSA0O1xuXG5cdFx0bGV0IGlucHV0OiBudW1iZXJbXSwgb3V0cHV0OiBudW1iZXJbXTsgLy8gQXZvaWQgY29weSBhdCB0aGUgZW5kLlxuXHRcdGlmIChwb2x5Z29uLmxlbmd0aCAlIDQgPj0gMikge1xuXHRcdFx0aW5wdXQgPSB0aGlzLmNsaXBPdXRwdXQ7XG5cdFx0XHRvdXRwdXQgPSB0aGlzLnNjcmF0Y2g7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlucHV0ID0gdGhpcy5zY3JhdGNoO1xuXHRcdFx0b3V0cHV0ID0gdGhpcy5jbGlwT3V0cHV0O1xuXHRcdH1cblxuXHRcdGlucHV0Lmxlbmd0aCA9IDg7XG5cdFx0bGV0IHYgPSBwb2x5Z29uLCBpdiA9IGlucHV0O1xuXHRcdGl2WzBdID0geDE7XG5cdFx0aXZbMV0gPSB5MTtcblx0XHRpdlsyXSA9IHgyO1xuXHRcdGl2WzNdID0geTI7XG5cdFx0aXZbNF0gPSB4Mztcblx0XHRpdls1XSA9IHkzO1xuXHRcdGl2WzZdID0geDE7XG5cdFx0aXZbN10gPSB5MTtcblx0XHRvdXRwdXQubGVuZ3RoID0gMDtcblxuXHRcdGZvciAobGV0IGkgPSAwOyA7IGkgKz0gMikge1xuXHRcdFx0Y29uc3QgZWRnZVggPSB2W2ldLCBlZGdlWSA9IHZbaSArIDFdLCBleCA9IGVkZ2VYIC0gdltpICsgMl0sIGV5ID0gZWRnZVkgLSB2W2kgKyAzXTtcblx0XHRcdGNvbnN0IG91dHB1dFN0YXJ0ID0gb3V0cHV0Lmxlbmd0aCwgZnJhZ21lbnRTdGFydCA9IHRoaXMuaW52ZXJzZVZlcnRpY2VzLmxlbmd0aDtcblx0XHRcdHRoaXMuaW52ZXJzZVZlcnRpY2VzLnB1c2goMCk7XG5cdFx0XHRpdiA9IGlucHV0O1xuXHRcdFx0Zm9yIChsZXQgaWkgPSAwLCBubiA9IGlucHV0Lmxlbmd0aCAtIDI7IGlpIDwgbm47KSB7XG5cdFx0XHRcdHgxID0gaXZbaWldO1xuXHRcdFx0XHR5MSA9IGl2W2lpICsgMV07XG5cdFx0XHRcdGlpICs9IDI7XG5cdFx0XHRcdHgyID0gaXZbaWldO1xuXHRcdFx0XHR5MiA9IGl2W2lpICsgMV07XG5cdFx0XHRcdGNvbnN0IHMyID0gZXkgKiAoZWRnZVggLSB4MikgPiBleCAqIChlZGdlWSAtIHkyKTtcblx0XHRcdFx0Y29uc3QgczEgPSBleSAqIChlZGdlWCAtIHgxKSAtIGV4ICogKGVkZ2VZIC0geTEpO1xuXHRcdFx0XHRpZiAoczEgPiAwKSB7XG5cdFx0XHRcdFx0aWYgKHMyKSAvLyB2MSBpbiwgdjIgaW5cblx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKHgyLCB5Mik7XG5cdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHQvLyB2MSBpbiwgdjIgb3V0XG5cdFx0XHRcdFx0XHRjb25zdCBpeCA9IHgyIC0geDEsIGl5ID0geTIgLSB5MSwgdCA9IHMxIC8gKGl4ICogZXkgLSBpeSAqIGV4KTtcblx0XHRcdFx0XHRcdGlmICh0ID49IDAgJiYgdCA8PSAxKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGN4ID0geDEgKyBpeCAqIHQsIGN5ID0geTEgKyBpeSAqIHQ7XG5cdFx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKGN4LCBjeSk7XG5cdFx0XHRcdFx0XHRcdHRoaXMuaW52ZXJzZVZlcnRpY2VzLnB1c2goY3gsIGN5LCB4MiwgeTIpO1xuXHRcdFx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKHgyLCB5Mik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKHMyKSB7IC8vIHYxIG91dCwgdjIgaW5cblx0XHRcdFx0XHRjb25zdCBkeCA9IHgyIC0geDEsIGR5ID0geTIgLSB5MSwgdCA9IHMxIC8gKGR4ICogZXkgLSBkeSAqIGV4KTtcblx0XHRcdFx0XHRpZiAodCA+PSAwICYmIHQgPD0gMSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgY3ggPSB4MSArIGR4ICogdCwgY3kgPSB5MSArIGR5ICogdDtcblx0XHRcdFx0XHRcdHRoaXMuaW52ZXJzZVZlcnRpY2VzLnB1c2goY3gsIGN5KTtcblx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKGN4LCBjeSwgeDIsIHkyKTtcblx0XHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKHgyLCB5Mik7XG5cdFx0XHRcdH0gZWxzZSAvLyB2MSBvdXQsIHYyIG91dFxuXHRcdFx0XHRcdHRoaXMuaW52ZXJzZVZlcnRpY2VzLnB1c2goeDIsIHkyKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZnJhZ21lbnRTaXplID0gdGhpcy5pbnZlcnNlVmVydGljZXMubGVuZ3RoIC0gZnJhZ21lbnRTdGFydCAtIDE7XG5cdFx0XHRpZiAoZnJhZ21lbnRTaXplID49IDYpXG5cdFx0XHRcdHRoaXMuaW52ZXJzZVZlcnRpY2VzW2ZyYWdtZW50U3RhcnRdID0gZnJhZ21lbnRTaXplO1xuXHRcdFx0ZWxzZVxuXHRcdFx0XHR0aGlzLmludmVyc2VWZXJ0aWNlcy5sZW5ndGggPSBmcmFnbWVudFN0YXJ0OyAvLyBEZWdlbmVyYXRlLlxuXG5cdFx0XHRpZiAob3V0cHV0U3RhcnQgPT09IG91dHB1dC5sZW5ndGgpIGJyZWFrOyAvLyBBbGwgb3V0c2lkZS5cblxuXHRcdFx0b3V0cHV0LnB1c2gob3V0cHV0WzBdLCBvdXRwdXRbMV0pO1xuXG5cdFx0XHRpZiAoaSA9PT0gdkxhc3QpIGJyZWFrO1xuXHRcdFx0Y29uc3QgdGVtcCA9IG91dHB1dDtcblx0XHRcdG91dHB1dCA9IGlucHV0O1xuXHRcdFx0b3V0cHV0Lmxlbmd0aCA9IDA7XG5cdFx0XHRpbnB1dCA9IHRlbXA7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBtYWtlQ2xvY2t3aXNlIChwb2x5Z29uOiBudW1iZXJbXSk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IHYgPSBwb2x5Z29uO1xuXHRcdGNvbnN0IG4gPSBwb2x5Z29uLmxlbmd0aDtcblx0XHRsZXQgbm9DVyA9IHRydWUsIG5vQ0NXID0gdHJ1ZTtcblx0XHRsZXQgYXJlYSA9IDAsIHByZXZYID0gdltuIC0gMl0sIHByZXZZID0gdltuIC0gMV0sIGN1cnJYID0gdlswXSwgY3VyclkgPSB2WzFdO1xuXHRcdGZvciAobGV0IGkgPSAyOyBpIDwgbjsgaSArPSAyKSB7XG5cdFx0XHRjb25zdCBuZXh0WCA9IHZbaV0sIG5leHRZID0gdltpICsgMV07XG5cdFx0XHRhcmVhICs9IGN1cnJYICogbmV4dFkgLSBuZXh0WCAqIGN1cnJZO1xuXHRcdFx0Y29uc3QgY3Jvc3MgPSAoY3VyclggLSBwcmV2WCkgKiAobmV4dFkgLSBjdXJyWSkgLSAoY3VyclkgLSBwcmV2WSkgKiAobmV4dFggLSBjdXJyWCk7XG5cdFx0XHRub0NDVyA9IG5vQ0NXICYmIGNyb3NzIDw9IDA7XG5cdFx0XHRub0NXID0gbm9DVyAmJiBjcm9zcyA+PSAwO1xuXHRcdFx0cHJldlggPSBjdXJyWDtcblx0XHRcdHByZXZZID0gY3Vyclk7XG5cdFx0XHRjdXJyWCA9IG5leHRYO1xuXHRcdFx0Y3VyclkgPSBuZXh0WTtcblx0XHR9XG5cdFx0YXJlYSArPSBjdXJyWCAqIHZbMV0gLSB2WzBdICogY3Vyclk7XG5cdFx0Y29uc3QgY3Jvc3MgPSAoY3VyclggLSBwcmV2WCkgKiAodlsxXSAtIGN1cnJZKSAtIChjdXJyWSAtIHByZXZZKSAqICh2WzBdIC0gY3VyclgpO1xuXHRcdG5vQ0NXID0gbm9DQ1cgJiYgY3Jvc3MgPD0gMDtcblx0XHRub0NXID0gbm9DVyAmJiBjcm9zcyA+PSAwO1xuXHRcdGlmIChhcmVhID49IDApIHtcblx0XHRcdGZvciAobGV0IGkgPSAwLCBsYXN0WCA9IG4gLSAyLCBoYWxmID0gbiA+PiAxOyBpIDwgaGFsZjsgaSArPSAyKSB7XG5cdFx0XHRcdGNvbnN0IHggPSB2W2ldLCB5ID0gdltpICsgMV07XG5cdFx0XHRcdGNvbnN0IG90aGVyID0gbGFzdFggLSBpO1xuXHRcdFx0XHR2W2ldID0gdltvdGhlcl07XG5cdFx0XHRcdHZbaSArIDFdID0gdltvdGhlciArIDFdO1xuXHRcdFx0XHR2W290aGVyXSA9IHg7XG5cdFx0XHRcdHZbb3RoZXIgKyAxXSA9IHk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbm9DVztcblx0XHR9XG5cdFx0cmV0dXJuIG5vQ0NXO1xuXHR9XG5cblx0cHJpdmF0ZSBtYWtlQ29udmV4IChwb2x5Z29uOiBudW1iZXJbXSk6IHZvaWQge1xuXHRcdGNvbnN0IG4gPSBwb2x5Z29uLmxlbmd0aDtcblx0XHRjb25zdCB2ID0gcG9seWdvbjtcblx0XHR0aGlzLmNsaXBPdXRwdXQubGVuZ3RoID0gbjtcblx0XHRjb25zdCBzb3J0ZWQgPSB0aGlzLmNsaXBPdXRwdXQ7XG5cdFx0c29ydGVkWzBdID0gdlswXTtcblx0XHRzb3J0ZWRbMV0gPSB2WzFdO1xuXHRcdGZvciAobGV0IGkgPSAyOyBpIDwgbjsgaSArPSAyKSB7XG5cdFx0XHRjb25zdCB4ID0gdltpXSwgeSA9IHZbaSArIDFdO1xuXHRcdFx0bGV0IHAgPSBpIC0gMjtcblx0XHRcdGZvciAoOyBwID49IDAgJiYgKHNvcnRlZFtwXSA+IHggfHwgKHNvcnRlZFtwXSA9PT0geCAmJiBzb3J0ZWRbcCArIDFdID4geSkpOyBwIC09IDIpIHtcblx0XHRcdFx0c29ydGVkW3AgKyAyXSA9IHNvcnRlZFtwXTtcblx0XHRcdFx0c29ydGVkW3AgKyAzXSA9IHNvcnRlZFtwICsgMV07XG5cdFx0XHR9XG5cdFx0XHRzb3J0ZWRbcCArIDJdID0geDtcblx0XHRcdHNvcnRlZFtwICsgM10gPSB5O1xuXHRcdH1cblx0XHR2WzBdID0gc29ydGVkWzBdO1xuXHRcdHZbMV0gPSBzb3J0ZWRbMV07XG5cdFx0dlsyXSA9IHNvcnRlZFsyXTtcblx0XHR2WzNdID0gc29ydGVkWzNdO1xuXHRcdGxldCBzID0gNDtcblx0XHRmb3IgKGxldCBpID0gNDsgaSA8IG47IGkgKz0gMiwgcyArPSAyKSB7XG5cdFx0XHRjb25zdCB4ID0gc29ydGVkW2ldLCB5ID0gc29ydGVkW2kgKyAxXTtcblx0XHRcdHdoaWxlICgodltzIC0gMl0gLSB2W3MgLSA0XSkgKiAoeSAtIHZbcyAtIDNdKSAtICh2W3MgLSAxXSAtIHZbcyAtIDNdKSAqICh4IC0gdltzIC0gNF0pID49IDApIHtcblx0XHRcdFx0cyAtPSAyO1xuXHRcdFx0XHRpZiAocyA9PT0gMikgYnJlYWs7XG5cdFx0XHR9XG5cdFx0XHR2W3NdID0geDtcblx0XHRcdHZbcyArIDFdID0geTtcblx0XHR9XG5cdFx0dltzXSA9IHNvcnRlZFtuIC0gNF07XG5cdFx0dltzICsgMV0gPSBzb3J0ZWRbbiAtIDNdO1xuXHRcdGNvbnN0IHQgPSBzO1xuXHRcdHMgKz0gMjtcblx0XHRmb3IgKGxldCBpID0gbiAtIDY7IGkgPj0gMDsgaSAtPSAyLCBzICs9IDIpIHtcblx0XHRcdGNvbnN0IHggPSBzb3J0ZWRbaV0sIHkgPSBzb3J0ZWRbaSArIDFdO1xuXHRcdFx0d2hpbGUgKCh2W3MgLSAyXSAtIHZbcyAtIDRdKSAqICh5IC0gdltzIC0gM10pIC0gKHZbcyAtIDFdIC0gdltzIC0gM10pICogKHggLSB2W3MgLSA0XSkgPj0gMCkge1xuXHRcdFx0XHRzIC09IDI7XG5cdFx0XHRcdGlmIChzID09PSB0KSBicmVhaztcblx0XHRcdH1cblx0XHRcdHZbc10gPSB4O1xuXHRcdFx0dltzICsgMV0gPSB5O1xuXHRcdH1cblx0XHRwb2x5Z29uLmxlbmd0aCA9IHMgLSAyO1xuXHR9XG59XG4iXX0=