@esotericsoftware/spine-core 4.3.0 → 4.3.1

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.
@@ -29,6 +29,7 @@
29
29
  import { AlphaTimeline, Animation, AttachmentTimeline, CurveTimeline1, DeformTimeline, DrawOrderFolderTimeline, DrawOrderTimeline, EventTimeline, IkConstraintTimeline, InheritTimeline, PathConstraintMixTimeline, PathConstraintPositionTimeline, PathConstraintSpacingTimeline, PhysicsConstraintDampingTimeline, PhysicsConstraintGravityTimeline, PhysicsConstraintInertiaTimeline, PhysicsConstraintMassTimeline, PhysicsConstraintMixTimeline, PhysicsConstraintResetTimeline, PhysicsConstraintStrengthTimeline, PhysicsConstraintWindTimeline, RGB2Timeline, RGBA2Timeline, RGBATimeline, RGBTimeline, RotateTimeline, ScaleTimeline, ScaleXTimeline, ScaleYTimeline, SequenceTimeline, ShearTimeline, ShearXTimeline, ShearYTimeline, SliderMixTimeline, SliderTimeline, TransformConstraintTimeline, TranslateTimeline, TranslateXTimeline, TranslateYTimeline } from "./Animation.js";
30
30
  import { Sequence, SequenceModeValues } from "./attachments/Sequence.js";
31
31
  import { BoneData } from "./BoneData.js";
32
+ import { ScaleYMode } from "./ConstraintData.js";
32
33
  import { Event } from "./Event.js";
33
34
  import { EventData } from "./EventData.js";
34
35
  import { IkConstraintData } from "./IkConstraintData.js";
@@ -311,8 +312,18 @@ export class SkeletonBinary {
311
312
  data.y = input.readFloat();
312
313
  if ((flags & 8) !== 0)
313
314
  data.rotate = input.readFloat();
314
- if ((flags & 16) !== 0)
315
- data.scaleX = input.readFloat();
315
+ if ((flags & 16) !== 0) {
316
+ let scaleX = input.readFloat();
317
+ if (scaleX < -2) {
318
+ data.scaleYMode = ScaleYMode.Volume;
319
+ scaleX = -2 - scaleX;
320
+ }
321
+ else if (scaleX < 0) {
322
+ data.scaleYMode = ScaleYMode.Uniform;
323
+ scaleX = -1 - scaleX;
324
+ }
325
+ data.scaleX = scaleX;
326
+ }
316
327
  if ((flags & 32) !== 0)
317
328
  data.shearX = input.readFloat();
318
329
  data.limit = ((flags & 64) !== 0 ? input.readFloat() : 5000) * scale;
@@ -1489,4 +1500,4 @@ const SLIDER_MIX = 1;
1489
1500
  const CURVE_LINEAR = 0;
1490
1501
  const CURVE_STEPPED = 1;
1491
1502
  const CURVE_BEZIER = 2;
1492
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25CaW5hcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU2tlbGV0b25CaW5hcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRS9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUEwQyxjQUFjLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUseUJBQXlCLEVBQUUsOEJBQThCLEVBQUUsNkJBQTZCLEVBQUUsZ0NBQWdDLEVBQUUsZ0NBQWdDLEVBQUUsZ0NBQWdDLEVBQUUsNkJBQTZCLEVBQUUsNEJBQTRCLEVBQUUsOEJBQThCLEVBQUUsaUNBQWlDLEVBQUUsNkJBQTZCLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQWlCLDJCQUEyQixFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJejVCLE9BQU8sRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1B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QVcsR0FBRyxDQUFDLENBQUM7QUFDdEIsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDO0FBRXhCLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQztBQUN0QixNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFFckIsK0RBQStEO0FBQy9ELE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQztBQUN2QixNQUFNLGFBQWEsR0FBRyxDQUFDLENBQUM7QUFDeEIsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBBbHBoYVRpbWVsaW5lLCBBbmltYXRpb24sIEF0dGFjaG1lbnRUaW1lbGluZSwgdHlwZSBCb25lVGltZWxpbmUyLCB0eXBlIEN1cnZlVGltZWxpbmUsIEN1cnZlVGltZWxpbmUxLCBEZWZvcm1UaW1lbGluZSwgRHJhd09yZGVyRm9sZGVyVGltZWxpbmUsIERyYXdPcmRlclRpbWVsaW5lLCBFdmVudFRpbWVsaW5lLCBJa0NvbnN0cmFpbnRUaW1lbGluZSwgSW5oZXJpdFRpbWVsaW5lLCBQYXRoQ29uc3RyYWludE1peFRpbWVsaW5lLCBQYXRoQ29uc3RyYWludFBvc2l0aW9uVGltZWxpbmUsIFBhdGhDb25zdHJhaW50U3BhY2luZ1RpbWVsaW5lLCBQaHlzaWNzQ29uc3RyYWludERhbXBpbmdUaW1lbGluZSwgUGh5c2ljc0NvbnN0cmFpbnRHcmF2aXR5VGltZWxpbmUsIFBoeXNpY3NDb25zdHJhaW50SW5lcnRpYVRpbWVsaW5lLCBQaHlzaWNzQ29uc3RyYWludE1hc3NUaW1lbGluZSwgUGh5c2ljc0NvbnN0cmFpbnRNaXhUaW1lbGluZSwgUGh5c2ljc0NvbnN0cmFpbnRSZXNldFRpbWVsaW5lLCBQaHlzaWNzQ29uc3RyYWludFN0cmVuZ3RoVGltZWxpbmUsIFBoeXNpY3NDb25zdHJhaW50V2luZFRpbWVsaW5lLCBSR0IyVGltZWxpbmUsIFJHQkEyVGltZWxpbmUsIFJHQkFUaW1lbGluZSwgUkdCVGltZWxpbmUsIFJvdGF0ZVRpbWVsaW5lLCBTY2FsZVRpbWVsaW5lLCBTY2FsZVhUaW1lbGluZSwgU2NhbGVZVGltZWxpbmUsIFNlcXVlbmNlVGltZWxpbmUsIFNoZWFyVGltZWxpbmUsIFNoZWFyWFRpbWVsaW5lLCBTaGVhcllUaW1lbGluZSwgU2xpZGVyTWl4VGltZWxpbmUsIFNsaWRlclRpbWVsaW5lLCB0eXBlIFRpbWVsaW5lLCBUcmFuc2Zvcm1Db25zdHJhaW50VGltZWxpbmUsIFRyYW5zbGF0ZVRpbWVsaW5lLCBUcmFuc2xhdGVYVGltZWxpbmUsIFRyYW5zbGF0ZVlUaW1lbGluZSB9IGZyb20gXCIuL0FuaW1hdGlvbi5qc1wiO1xuaW1wb3J0IHR5cGUgeyBBdHRhY2htZW50LCBWZXJ0ZXhBdHRhY2htZW50IH0gZnJvbSBcIi4vYXR0YWNobWVudHMvQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBBdHRhY2htZW50TG9hZGVyIH0gZnJvbSBcIi4vYXR0YWNobWVudHMvQXR0YWNobWVudExvYWRlci5qc1wiO1xuaW1wb3J0IHR5cGUgeyBNZXNoQXR0YWNobWVudCB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL01lc2hBdHRhY2htZW50LmpzXCI7XG5pbXBvcnQgeyBTZXF1ZW5jZSwgU2VxdWVuY2VNb2RlVmFsdWVzIH0gZnJvbSBcIi4vYXR0YWNobWVudHMvU2VxdWVuY2UuanNcIjtcbmltcG9ydCB7IEJvbmVEYXRhIH0gZnJvbSBcIi4vQm9uZURhdGEuanNcIjtcbmltcG9ydCB7IEV2ZW50IH0gZnJvbSBcIi4vRXZlbnQuanNcIjtcbmltcG9ydCB7IEV2ZW50RGF0YSB9IGZyb20gXCIuL0V2ZW50RGF0YS5qc1wiO1xuaW1wb3J0IHsgSWtDb25zdHJhaW50RGF0YSB9IGZyb20gXCIuL0lrQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IFBhdGhDb25zdHJhaW50RGF0YSwgUG9zaXRpb25Nb2RlLCBTcGFjaW5nTW9kZSB9IGZyb20gXCIuL1BhdGhDb25zdHJhaW50RGF0YS5qc1wiO1xuaW1wb3J0IHsgUGh5c2ljc0NvbnN0cmFpbnREYXRhIH0gZnJvbSBcIi4vUGh5c2ljc0NvbnN0cmFpbnREYXRhLmpzXCI7XG5pbXBvcnQgeyBTa2VsZXRvbkRhdGEgfSBmcm9tIFwiLi9Ta2VsZXRvbkRhdGEuanNcIjtcbmltcG9ydCB7IFNraW4gfSBmcm9tIFwiLi9Ta2luLmpzXCI7XG5pbXBvcnQgeyBTbGlkZXJEYXRhIH0gZnJvbSBcIi4vU2xpZGVyRGF0YS5qc1wiO1xuaW1wb3J0IHsgU2xvdERhdGEgfSBmcm9tIFwiLi9TbG90RGF0YS5qc1wiO1xuaW1wb3J0IHsgdHlwZSBGcm9tUHJvcGVydHksIEZyb21Sb3RhdGUsIEZyb21TY2FsZVgsIEZyb21TY2FsZVksIEZyb21TaGVhclksIEZyb21YLCBGcm9tWSwgdHlwZSBUb1Byb3BlcnR5LCBUb1JvdGF0ZSwgVG9TY2FsZVgsIFRvU2NhbGVZLCBUb1NoZWFyWSwgVG9YLCBUb1ksIFRyYW5zZm9ybUNvbnN0cmFpbnREYXRhIH0gZnJvbSBcIi4vVHJhbnNmb3JtQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IENvbG9yLCB0eXBlIE51bWJlckFycmF5TGlrZSwgVXRpbHMgfSBmcm9tIFwiLi9VdGlscy5qc1wiO1xuXG4vKiogTG9hZHMgc2tlbGV0b24gZGF0YSBpbiB0aGUgU3BpbmUgYmluYXJ5IGZvcm1hdC5cbiAqXG4gKiBTZWUgW1NwaW5lIGJpbmFyeSBmb3JtYXRdKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1iaW5hcnktZm9ybWF0KSBhbmRcbiAqIFtKU09OIGFuZCBiaW5hcnkgZGF0YV0oaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWxvYWRpbmctc2tlbGV0b24tZGF0YSNKU09OLWFuZC1iaW5hcnktZGF0YSkgaW4gdGhlIFNwaW5lXG4gKiBSdW50aW1lcyBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBTa2VsZXRvbkJpbmFyeSB7XG5cdC8qKiBTY2FsZXMgYm9uZSBwb3NpdGlvbnMsIGltYWdlIHNpemVzLCBhbmQgdHJhbnNsYXRpb25zIGFzIHRoZXkgYXJlIGxvYWRlZC4gVGhpcyBhbGxvd3MgZGlmZmVyZW50IHNpemUgaW1hZ2VzIHRvIGJlIHVzZWQgYXRcblx0ICogcnVudGltZSB0aGFuIHdlcmUgdXNlZCBpbiBTcGluZS5cblx0ICpcblx0ICogU2VlIFtTY2FsaW5nXShodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtbG9hZGluZy1za2VsZXRvbi1kYXRhI1NjYWxpbmcpIGluIHRoZSBTcGluZSBSdW50aW1lcyBHdWlkZS4gKi9cblx0c2NhbGUgPSAxO1xuXG5cdGF0dGFjaG1lbnRMb2FkZXI6IEF0dGFjaG1lbnRMb2FkZXI7XG5cdHByaXZhdGUgbGlua2VkTWVzaGVzID0gW10gYXMgTGlua2VkTWVzaFtdO1xuXG5cdGNvbnN0cnVjdG9yIChhdHRhY2htZW50TG9hZGVyOiBBdHRhY2htZW50TG9hZGVyKSB7XG5cdFx0dGhpcy5hdHRhY2htZW50TG9hZGVyID0gYXR0YWNobWVudExvYWRlcjtcblx0fVxuXG5cdHJlYWRTa2VsZXRvbkRhdGEgKGJpbmFyeTogVWludDhBcnJheSB8IEFycmF5QnVmZmVyKTogU2tlbGV0b25EYXRhIHtcblx0XHRjb25zdCBzY2FsZSA9IHRoaXMuc2NhbGU7XG5cblx0XHRjb25zdCBza2VsZXRvbkRhdGEgPSBuZXcgU2tlbGV0b25EYXRhKCk7XG5cdFx0c2tlbGV0b25EYXRhLm5hbWUgPSBcIlwiOyAvLyBCT1pPXG5cblx0XHRjb25zdCBpbnB1dCA9IG5ldyBCaW5hcnlJbnB1dChiaW5hcnkpO1xuXG5cdFx0Y29uc3QgbG93SGFzaCA9IGlucHV0LnJlYWRJbnQzMigpO1xuXHRcdGNvbnN0IGhpZ2hIYXNoID0gaW5wdXQucmVhZEludDMyKCk7XG5cdFx0c2tlbGV0b25EYXRhLmhhc2ggPSBoaWdoSGFzaCA9PT0gMCAmJiBsb3dIYXNoID09PSAwID8gbnVsbCA6IGhpZ2hIYXNoLnRvU3RyaW5nKDE2KSArIGxvd0hhc2gudG9TdHJpbmcoMTYpO1xuXHRcdHNrZWxldG9uRGF0YS52ZXJzaW9uID0gaW5wdXQucmVhZFN0cmluZygpO1xuXHRcdHNrZWxldG9uRGF0YS54ID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0c2tlbGV0b25EYXRhLnkgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRza2VsZXRvbkRhdGEud2lkdGggPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRza2VsZXRvbkRhdGEuaGVpZ2h0ID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0c2tlbGV0b25EYXRhLnJlZmVyZW5jZVNjYWxlID0gaW5wdXQucmVhZEZsb2F0KCkgKiBzY2FsZTtcblxuXHRcdGNvbnN0IG5vbmVzc2VudGlhbCA9IGlucHV0LnJlYWRCb29sZWFuKCk7XG5cdFx0aWYgKG5vbmVzc2VudGlhbCkge1xuXHRcdFx0c2tlbGV0b25EYXRhLmZwcyA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0c2tlbGV0b25EYXRhLmltYWdlc1BhdGggPSBpbnB1dC5yZWFkU3RyaW5nKCk7XG5cdFx0XHRza2VsZXRvbkRhdGEuYXVkaW9QYXRoID0gaW5wdXQucmVhZFN0cmluZygpO1xuXHRcdH1cblxuXHRcdGxldCBuID0gMDtcblx0XHQvLyBTdHJpbmdzLlxuXHRcdG4gPSBpbnB1dC5yZWFkSW50KHRydWUpXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcblx0XHRcdGNvbnN0IHN0ciA9IGlucHV0LnJlYWRTdHJpbmcoKTtcblx0XHRcdGlmICghc3RyKSB0aHJvdyBuZXcgRXJyb3IoXCJTdHJpbmcgaW4gc3RyaW5nIHRhYmxlIG11c3Qgbm90IGJlIG51bGwuXCIpO1xuXHRcdFx0aW5wdXQuc3RyaW5ncy5wdXNoKHN0cik7XG5cdFx0fVxuXG5cdFx0Ly8gQm9uZXMuXG5cdFx0Y29uc3QgYm9uZXMgPSBza2VsZXRvbkRhdGEuYm9uZXM7XG5cdFx0biA9IGlucHV0LnJlYWRJbnQodHJ1ZSlcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuXHRcdFx0Y29uc3QgbmFtZSA9IGlucHV0LnJlYWRTdHJpbmcoKTtcblx0XHRcdGlmICghbmFtZSkgdGhyb3cgbmV3IEVycm9yKFwiQm9uZSBuYW1lIG11c3Qgbm90IGJlIG51bGwuXCIpO1xuXHRcdFx0Y29uc3QgcGFyZW50ID0gaSA9PT0gMCA/IG51bGwgOiBib25lc1tpbnB1dC5yZWFkSW50KHRydWUpXTtcblx0XHRcdGNvbnN0IGRhdGEgPSBuZXcgQm9uZURhdGEoaSwgbmFtZSwgcGFyZW50KTtcblx0XHRcdGNvbnN0IHNldHVwID0gZGF0YS5zZXR1cFBvc2U7XG5cdFx0XHRzZXR1cC5yb3RhdGlvbiA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0c2V0dXAueCA9IGlucHV0LnJlYWRGbG9hdCgpICogc2NhbGU7XG5cdFx0XHRzZXR1cC55ID0gaW5wdXQucmVhZEZsb2F0KCkgKiBzY2FsZTtcblx0XHRcdHNldHVwLnNjYWxlWCA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0c2V0dXAuc2NhbGVZID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRzZXR1cC5zaGVhclggPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdHNldHVwLnNoZWFyWSA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0c2V0dXAuaW5oZXJpdCA9IGlucHV0LnJlYWRCeXRlKCk7XG5cdFx0XHRkYXRhLmxlbmd0aCA9IGlucHV0LnJlYWRGbG9hdCgpICogc2NhbGU7XG5cdFx0XHRkYXRhLnNraW5SZXF1aXJlZCA9IGlucHV0LnJlYWRCb29sZWFuKCk7XG5cdFx0XHRpZiAobm9uZXNzZW50aWFsKSB7XG5cdFx0XHRcdENvbG9yLnJnYmE4ODg4VG9Db2xvcihkYXRhLmNvbG9yLCBpbnB1dC5yZWFkSW50MzIoKSk7XG5cdFx0XHRcdGRhdGEuaWNvbiA9IGlucHV0LnJlYWRTdHJpbmcoKSA/PyB1bmRlZmluZWQ7XG5cdFx0XHRcdGRhdGEuaWNvblNpemUgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0ZGF0YS5pY29uUm90YXRpb24gPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0ZGF0YS52aXNpYmxlID0gaW5wdXQucmVhZEJvb2xlYW4oKTtcblx0XHRcdH1cblx0XHRcdGJvbmVzLnB1c2goZGF0YSk7XG5cdFx0fVxuXG5cdFx0Ly8gU2xvdHMuXG5cdFx0biA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcblx0XHRcdGNvbnN0IHNsb3ROYW1lID0gaW5wdXQucmVhZFN0cmluZygpO1xuXHRcdFx0aWYgKCFzbG90TmFtZSkgdGhyb3cgbmV3IEVycm9yKFwiU2xvdCBuYW1lIG11c3Qgbm90IGJlIG51bGwuXCIpO1xuXHRcdFx0Y29uc3QgYm9uZURhdGEgPSBib25lc1tpbnB1dC5yZWFkSW50KHRydWUpXTtcblx0XHRcdGNvbnN0IGRhdGEgPSBuZXcgU2xvdERhdGEoaSwgc2xvdE5hbWUsIGJvbmVEYXRhKTtcblx0XHRcdENvbG9yLnJnYmE4ODg4VG9Db2xvcihkYXRhLnNldHVwUG9zZS5jb2xvciwgaW5wdXQucmVhZEludDMyKCkpO1xuXG5cdFx0XHRjb25zdCBkYXJrQ29sb3IgPSBpbnB1dC5yZWFkSW50MzIoKTtcblx0XHRcdGlmIChkYXJrQ29sb3IgIT09IC0xKSBDb2xvci5yZ2I4ODhUb0NvbG9yKGRhdGEuc2V0dXBQb3NlLmRhcmtDb2xvciA9IG5ldyBDb2xvcigpLCBkYXJrQ29sb3IpO1xuXG5cdFx0XHRkYXRhLmF0dGFjaG1lbnROYW1lID0gaW5wdXQucmVhZFN0cmluZ1JlZigpO1xuXHRcdFx0ZGF0YS5ibGVuZE1vZGUgPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0aWYgKG5vbmVzc2VudGlhbCkgZGF0YS52aXNpYmxlID0gaW5wdXQucmVhZEJvb2xlYW4oKTtcblx0XHRcdHNrZWxldG9uRGF0YS5zbG90cy5wdXNoKGRhdGEpO1xuXHRcdH1cblxuXHRcdC8vIENvbnN0cmFpbnRzLlxuXHRcdGNvbnN0IGNvbnN0cmFpbnRzID0gc2tlbGV0b25EYXRhLmNvbnN0cmFpbnRzO1xuXHRcdGNvbnN0IGNvbnN0cmFpbnRDb3VudCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjb25zdHJhaW50Q291bnQ7IGkrKykge1xuXHRcdFx0Y29uc3QgbmFtZSA9IGlucHV0LnJlYWRTdHJpbmcoKTtcblx0XHRcdGlmICghbmFtZSkgdGhyb3cgbmV3IEVycm9yKFwiQ29uc3RyYWludCBkYXRhIG5hbWUgbXVzdCBub3QgYmUgbnVsbC5cIik7XG5cdFx0XHRsZXQgbm46IG51bWJlcjtcblx0XHRcdHN3aXRjaCAoaW5wdXQucmVhZEJ5dGUoKSkge1xuXHRcdFx0XHRjYXNlIENPTlNUUkFJTlRfSUs6IHtcblx0XHRcdFx0XHRjb25zdCBkYXRhID0gbmV3IElrQ29uc3RyYWludERhdGEobmFtZSk7XG5cdFx0XHRcdFx0bm4gPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0XHRcdGZvciAobGV0IGlpID0gMDsgaWkgPCBubjsgaWkrKylcblx0XHRcdFx0XHRcdGRhdGEuYm9uZXMucHVzaChib25lc1tpbnB1dC5yZWFkSW50KHRydWUpXSk7XG5cdFx0XHRcdFx0ZGF0YS50YXJnZXQgPSBib25lc1tpbnB1dC5yZWFkSW50KHRydWUpXTtcblx0XHRcdFx0XHRjb25zdCBmbGFncyA9IGlucHV0LnJlYWRCeXRlKCk7XG5cdFx0XHRcdFx0ZGF0YS5za2luUmVxdWlyZWQgPSAoZmxhZ3MgJiAxKSAhPT0gMDtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgMikgIT09IDApIGRhdGEuc2NhbGVZTW9kZSA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKTtcblx0XHRcdFx0XHRjb25zdCBzZXR1cCA9IGRhdGEuc2V0dXBQb3NlO1xuXHRcdFx0XHRcdHNldHVwLmJlbmREaXJlY3Rpb24gPSAoZmxhZ3MgJiA0KSAhPT0gMCA/IC0xIDogMTtcblx0XHRcdFx0XHRzZXR1cC5jb21wcmVzcyA9IChmbGFncyAmIDgpICE9PSAwO1xuXHRcdFx0XHRcdHNldHVwLnN0cmV0Y2ggPSAoZmxhZ3MgJiAxNikgIT09IDA7XG5cdFx0XHRcdFx0aWYgKChmbGFncyAmIDMyKSAhPT0gMCkgc2V0dXAubWl4ID0gKGZsYWdzICYgNjQpICE9PSAwID8gaW5wdXQucmVhZEZsb2F0KCkgOiAxO1xuXHRcdFx0XHRcdGlmICgoZmxhZ3MgJiAxMjgpICE9PSAwKSBzZXR1cC5zb2Z0bmVzcyA9IGlucHV0LnJlYWRGbG9hdCgpICogc2NhbGU7XG5cdFx0XHRcdFx0Y29uc3RyYWludHMucHVzaChkYXRhKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRjYXNlIENPTlNUUkFJTlRfVFJBTlNGT1JNOiB7XG5cdFx0XHRcdFx0Y29uc3QgZGF0YSA9IG5ldyBUcmFuc2Zvcm1Db25zdHJhaW50RGF0YShuYW1lKTtcblx0XHRcdFx0XHRubiA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IG5uOyBpaSsrKVxuXHRcdFx0XHRcdFx0ZGF0YS5ib25lcy5wdXNoKGJvbmVzW2lucHV0LnJlYWRJbnQodHJ1ZSldKTtcblx0XHRcdFx0XHRkYXRhLnNvdXJjZSA9IGJvbmVzW2lucHV0LnJlYWRJbnQodHJ1ZSldO1xuXHRcdFx0XHRcdGxldCBmbGFncyA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKTtcblx0XHRcdFx0XHRkYXRhLnNraW5SZXF1aXJlZCA9IChmbGFncyAmIDEpICE9PSAwO1xuXHRcdFx0XHRcdGRhdGEubG9jYWxTb3VyY2UgPSAoZmxhZ3MgJiAyKSAhPT0gMDtcblx0XHRcdFx0XHRkYXRhLmxvY2FsVGFyZ2V0ID0gKGZsYWdzICYgNCkgIT09IDA7XG5cdFx0XHRcdFx0ZGF0YS5hZGRpdGl2ZSA9IChmbGFncyAmIDgpICE9PSAwO1xuXHRcdFx0XHRcdGRhdGEuY2xhbXAgPSAoZmxhZ3MgJiAxNikgIT09IDA7XG5cblx0XHRcdFx0XHRubiA9IGZsYWdzID4+IDU7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwLCB0bjogbnVtYmVyOyBpaSA8IG5uOyBpaSsrKSB7XG5cdFx0XHRcdFx0XHRsZXQgZnJvbVNjYWxlID0gMTtcblx0XHRcdFx0XHRcdGxldCBmcm9tOiBGcm9tUHJvcGVydHkgfCBudWxsO1xuXHRcdFx0XHRcdFx0c3dpdGNoIChpbnB1dC5yZWFkQnl0ZSgpKSB7XG5cdFx0XHRcdFx0XHRcdGNhc2UgMDogZnJvbSA9IG5ldyBGcm9tUm90YXRlKCk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRjYXNlIDE6IHtcblx0XHRcdFx0XHRcdFx0XHRmcm9tU2NhbGUgPSBzY2FsZTtcblx0XHRcdFx0XHRcdFx0XHRmcm9tID0gbmV3IEZyb21YKCk7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0Y2FzZSAyOiB7XG5cdFx0XHRcdFx0XHRcdFx0ZnJvbVNjYWxlID0gc2NhbGU7XG5cdFx0XHRcdFx0XHRcdFx0ZnJvbSA9IG5ldyBGcm9tWSgpO1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGNhc2UgMzogZnJvbSA9IG5ldyBGcm9tU2NhbGVYKCk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRjYXNlIDQ6IGZyb20gPSBuZXcgRnJvbVNjYWxlWSgpOyBicmVhaztcblx0XHRcdFx0XHRcdFx0Y2FzZSA1OiBmcm9tID0gbmV3IEZyb21TaGVhclkoKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRcdGRlZmF1bHQ6IGZyb20gPSBudWxsO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKCFmcm9tKSBjb250aW51ZTtcblx0XHRcdFx0XHRcdGZyb20ub2Zmc2V0ID0gaW5wdXQucmVhZEZsb2F0KCkgKiBmcm9tU2NhbGU7XG5cdFx0XHRcdFx0XHR0biA9IGlucHV0LnJlYWRCeXRlKCk7XG5cdFx0XHRcdFx0XHRmb3IgKGxldCB0ID0gMDsgdCA8IHRuOyB0KyspIHtcblx0XHRcdFx0XHRcdFx0bGV0IHRvU2NhbGUgPSAxO1xuXHRcdFx0XHRcdFx0XHRsZXQgdG86IFRvUHJvcGVydHkgfCBudWxsO1xuXHRcdFx0XHRcdFx0XHRzd2l0Y2ggKGlucHV0LnJlYWRCeXRlKCkpIHtcblx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6IHRvID0gbmV3IFRvUm90YXRlKCk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgMToge1xuXHRcdFx0XHRcdFx0XHRcdFx0dG9TY2FsZSA9IHNjYWxlO1xuXHRcdFx0XHRcdFx0XHRcdFx0dG8gPSBuZXcgVG9YKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSAyOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0b1NjYWxlID0gc2NhbGU7XG5cdFx0XHRcdFx0XHRcdFx0XHR0byA9IG5ldyBUb1koKTtcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRjYXNlIDM6IHRvID0gbmV3IFRvU2NhbGVYKCk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgNDogdG8gPSBuZXcgVG9TY2FsZVkoKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSA1OiB0byA9IG5ldyBUb1NoZWFyWSgpOyBicmVhaztcblx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0OiB0byA9IG51bGw7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKCF0bykgY29udGludWU7XG5cdFx0XHRcdFx0XHRcdHRvLm9mZnNldCA9IGlucHV0LnJlYWRGbG9hdCgpICogdG9TY2FsZTtcblx0XHRcdFx0XHRcdFx0dG8ubWF4ID0gaW5wdXQucmVhZEZsb2F0KCkgKiB0b1NjYWxlO1xuXHRcdFx0XHRcdFx0XHR0by5zY2FsZSA9IGlucHV0LnJlYWRGbG9hdCgpICogdG9TY2FsZSAvIGZyb21TY2FsZTtcblx0XHRcdFx0XHRcdFx0ZnJvbS50b1t0XSA9IHRvO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZGF0YS5wcm9wZXJ0aWVzW2lpXSA9IGZyb207XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGZsYWdzID0gaW5wdXQucmVhZEJ5dGUoKTtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgMSkgIT09IDApIGRhdGEub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5ST1RBVElPTl0gPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgMikgIT09IDApIGRhdGEub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5YXSA9IGlucHV0LnJlYWRGbG9hdCgpICogc2NhbGU7XG5cdFx0XHRcdFx0aWYgKChmbGFncyAmIDQpICE9PSAwKSBkYXRhLm9mZnNldHNbVHJhbnNmb3JtQ29uc3RyYWludERhdGEuWV0gPSBpbnB1dC5yZWFkRmxvYXQoKSAqIHNjYWxlO1xuXHRcdFx0XHRcdGlmICgoZmxhZ3MgJiA4KSAhPT0gMCkgZGF0YS5vZmZzZXRzW1RyYW5zZm9ybUNvbnN0cmFpbnREYXRhLlNDQUxFWF0gPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgMTYpICE9PSAwKSBkYXRhLm9mZnNldHNbVHJhbnNmb3JtQ29uc3RyYWludERhdGEuU0NBTEVZXSA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdGlmICgoZmxhZ3MgJiAzMikgIT09IDApIGRhdGEub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5TSEVBUlldID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0ZmxhZ3MgPSBpbnB1dC5yZWFkQnl0ZSgpO1xuXHRcdFx0XHRcdGNvbnN0IHNldHVwID0gZGF0YS5zZXR1cFBvc2U7XG5cdFx0XHRcdFx0aWYgKChmbGFncyAmIDEpICE9PSAwKSBzZXR1cC5taXhSb3RhdGUgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgMikgIT09IDApIHNldHVwLm1peFggPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgNCkgIT09IDApIHNldHVwLm1peFkgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgOCkgIT09IDApIHNldHVwLm1peFNjYWxlWCA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdGlmICgoZmxhZ3MgJiAxNikgIT09IDApIHNldHVwLm1peFNjYWxlWSA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdGlmICgoZmxhZ3MgJiAzMikgIT09IDApIHNldHVwLm1peFNoZWFyWSA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdGNvbnN0cmFpbnRzLnB1c2goZGF0YSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y2FzZSBDT05TVFJBSU5UX1BBVEg6IHtcblx0XHRcdFx0XHRjb25zdCBkYXRhID0gbmV3IFBhdGhDb25zdHJhaW50RGF0YShuYW1lKTtcblx0XHRcdFx0XHRubiA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IG5uOyBpaSsrKVxuXHRcdFx0XHRcdFx0ZGF0YS5ib25lcy5wdXNoKGJvbmVzW2lucHV0LnJlYWRJbnQodHJ1ZSldKTtcblx0XHRcdFx0XHRkYXRhLnNsb3QgPSBza2VsZXRvbkRhdGEuc2xvdHNbaW5wdXQucmVhZEludCh0cnVlKV07XG5cdFx0XHRcdFx0Y29uc3QgZmxhZ3MgPSBpbnB1dC5yZWFkQnl0ZSgpO1xuXHRcdFx0XHRcdGRhdGEuc2tpblJlcXVpcmVkID0gKGZsYWdzICYgMSkgIT09IDA7XG5cdFx0XHRcdFx0ZGF0YS5wb3NpdGlvbk1vZGUgPSAoZmxhZ3MgPj4gMSkgJiAwYjE7XG5cdFx0XHRcdFx0ZGF0YS5zcGFjaW5nTW9kZSA9IChmbGFncyA+PiAyKSAmIDBiMTE7XG5cdFx0XHRcdFx0ZGF0YS5yb3RhdGVNb2RlID0gKGZsYWdzID4+IDQpICYgMGIxMTtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgMTI4KSAhPT0gMCkgZGF0YS5vZmZzZXRSb3RhdGlvbiA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdGNvbnN0IHNldHVwID0gZGF0YS5zZXR1cFBvc2U7XG5cdFx0XHRcdFx0c2V0dXAucG9zaXRpb24gPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRpZiAoZGF0YS5wb3NpdGlvbk1vZGUgPT09IFBvc2l0aW9uTW9kZS5GaXhlZCkgc2V0dXAucG9zaXRpb24gKj0gc2NhbGU7XG5cdFx0XHRcdFx0c2V0dXAuc3BhY2luZyA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdGlmIChkYXRhLnNwYWNpbmdNb2RlID09PSBTcGFjaW5nTW9kZS5MZW5ndGggfHwgZGF0YS5zcGFjaW5nTW9kZSA9PT0gU3BhY2luZ01vZGUuRml4ZWQpIHNldHVwLnNwYWNpbmcgKj0gc2NhbGU7XG5cdFx0XHRcdFx0c2V0dXAubWl4Um90YXRlID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0c2V0dXAubWl4WCA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdHNldHVwLm1peFkgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRjb25zdHJhaW50cy5wdXNoKGRhdGEpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNhc2UgQ09OU1RSQUlOVF9QSFlTSUNTOiB7XG5cdFx0XHRcdFx0Y29uc3QgZGF0YSA9IG5ldyBQaHlzaWNzQ29uc3RyYWludERhdGEobmFtZSk7XG5cdFx0XHRcdFx0ZGF0YS5ib25lID0gYm9uZXNbaW5wdXQucmVhZEludCh0cnVlKV07XG5cdFx0XHRcdFx0bGV0IGZsYWdzID0gaW5wdXQucmVhZEJ5dGUoKTtcblx0XHRcdFx0XHRkYXRhLnNraW5SZXF1aXJlZCA9IChmbGFncyAmIDEpICE9PSAwO1xuXHRcdFx0XHRcdGlmICgoZmxhZ3MgJiAyKSAhPT0gMCkgZGF0YS54ID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0aWYgKChmbGFncyAmIDQpICE9PSAwKSBkYXRhLnkgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgOCkgIT09IDApIGRhdGEucm90YXRlID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0aWYgKChmbGFncyAmIDE2KSAhPT0gMCkgZGF0YS5zY2FsZVggPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgMzIpICE9PSAwKSBkYXRhLnNoZWFyWCA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdGRhdGEubGltaXQgPSAoKGZsYWdzICYgNjQpICE9PSAwID8gaW5wdXQucmVhZEZsb2F0KCkgOiA1MDAwKSAqIHNjYWxlO1xuXHRcdFx0XHRcdGRhdGEuc3RlcCA9IDEgLyBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCk7XG5cdFx0XHRcdFx0Y29uc3Qgc2V0dXAgPSBkYXRhLnNldHVwUG9zZTtcblx0XHRcdFx0XHRzZXR1cC5pbmVydGlhID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0c2V0dXAuc3RyZW5ndGggPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRzZXR1cC5kYW1waW5nID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0c2V0dXAubWFzc0ludmVyc2UgPSAoZmxhZ3MgJiAxMjgpICE9PSAwID8gaW5wdXQucmVhZEZsb2F0KCkgOiAxO1xuXHRcdFx0XHRcdHNldHVwLndpbmQgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRzZXR1cC5ncmF2aXR5ID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0ZmxhZ3MgPSBpbnB1dC5yZWFkQnl0ZSgpO1xuXHRcdFx0XHRcdGlmICgoZmxhZ3MgJiAxKSAhPT0gMCkgZGF0YS5pbmVydGlhR2xvYmFsID0gdHJ1ZTtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgMikgIT09IDApIGRhdGEuc3RyZW5ndGhHbG9iYWwgPSB0cnVlO1xuXHRcdFx0XHRcdGlmICgoZmxhZ3MgJiA0KSAhPT0gMCkgZGF0YS5kYW1waW5nR2xvYmFsID0gdHJ1ZTtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgOCkgIT09IDApIGRhdGEubWFzc0dsb2JhbCA9IHRydWU7XG5cdFx0XHRcdFx0aWYgKChmbGFncyAmIDE2KSAhPT0gMCkgZGF0YS53aW5kR2xvYmFsID0gdHJ1ZTtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgMzIpICE9PSAwKSBkYXRhLmdyYXZpdHlHbG9iYWwgPSB0cnVlO1xuXHRcdFx0XHRcdGlmICgoZmxhZ3MgJiA2NCkgIT09IDApIGRhdGEubWl4R2xvYmFsID0gdHJ1ZTtcblx0XHRcdFx0XHRzZXR1cC5taXggPSAoZmxhZ3MgJiAxMjgpICE9PSAwID8gaW5wdXQucmVhZEZsb2F0KCkgOiAxO1xuXHRcdFx0XHRcdGNvbnN0cmFpbnRzLnB1c2goZGF0YSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y2FzZSBDT05TVFJBSU5UX1NMSURFUjoge1xuXHRcdFx0XHRcdGNvbnN0IGRhdGEgPSBuZXcgU2xpZGVyRGF0YShuYW1lKTtcblx0XHRcdFx0XHRjb25zdCBmbGFncyA9IGlucHV0LnJlYWRCeXRlKCk7XG5cdFx0XHRcdFx0ZGF0YS5za2luUmVxdWlyZWQgPSAoZmxhZ3MgJiAxKSAhPT0gMDtcblx0XHRcdFx0XHRkYXRhLmxvb3AgPSAoZmxhZ3MgJiAyKSAhPT0gMDtcblx0XHRcdFx0XHRkYXRhLmFkZGl0aXZlID0gKGZsYWdzICYgNCkgIT09IDA7XG5cdFx0XHRcdFx0aWYgKChmbGFncyAmIDgpICE9PSAwKSBkYXRhLnNldHVwUG9zZS50aW1lID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0aWYgKChmbGFncyAmIDE2KSAhPT0gMCkgZGF0YS5zZXR1cFBvc2UubWl4ID0gKGZsYWdzICYgMzIpICE9PSAwID8gaW5wdXQucmVhZEZsb2F0KCkgOiAxO1xuXHRcdFx0XHRcdGlmICgoZmxhZ3MgJiA2NCkgIT09IDApIHtcblx0XHRcdFx0XHRcdGRhdGEubG9jYWwgPSAoZmxhZ3MgJiAxMjgpICE9PSAwO1xuXHRcdFx0XHRcdFx0ZGF0YS5ib25lID0gYm9uZXNbaW5wdXQucmVhZEludCh0cnVlKV07XG5cdFx0XHRcdFx0XHRjb25zdCBvZmZzZXQgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRcdGxldCBwcm9wZXJ0eVNjYWxlID0gMTtcblx0XHRcdFx0XHRcdHN3aXRjaCAoaW5wdXQucmVhZEJ5dGUoKSkge1xuXHRcdFx0XHRcdFx0XHRjYXNlIDA6IGRhdGEucHJvcGVydHkgPSBuZXcgRnJvbVJvdGF0ZSgpOyBicmVhaztcblx0XHRcdFx0XHRcdFx0Y2FzZSAxOiB7XG5cdFx0XHRcdFx0XHRcdFx0cHJvcGVydHlTY2FsZSA9IHNjYWxlO1xuXHRcdFx0XHRcdFx0XHRcdGRhdGEucHJvcGVydHkgPSBuZXcgRnJvbVgoKTtcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRjYXNlIDI6IHtcblx0XHRcdFx0XHRcdFx0XHRwcm9wZXJ0eVNjYWxlID0gc2NhbGU7XG5cdFx0XHRcdFx0XHRcdFx0ZGF0YS5wcm9wZXJ0eSA9IG5ldyBGcm9tWSgpO1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGNhc2UgMzogZGF0YS5wcm9wZXJ0eSA9IG5ldyBGcm9tU2NhbGVYKCk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRjYXNlIDQ6IGRhdGEucHJvcGVydHkgPSBuZXcgRnJvbVNjYWxlWSgpOyBicmVhaztcblx0XHRcdFx0XHRcdFx0Y2FzZSA1OiBkYXRhLnByb3BlcnR5ID0gbmV3IEZyb21TaGVhclkoKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRcdGRlZmF1bHQ6IGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdGRhdGEucHJvcGVydHkub2Zmc2V0ID0gb2Zmc2V0ICogcHJvcGVydHlTY2FsZTtcblx0XHRcdFx0XHRcdGRhdGEub2Zmc2V0ID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0XHRkYXRhLnNjYWxlID0gaW5wdXQucmVhZEZsb2F0KCkgLyBwcm9wZXJ0eVNjYWxlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb25zdHJhaW50cy5wdXNoKGRhdGEpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gRGVmYXVsdCBza2luLlxuXHRcdGNvbnN0IGRlZmF1bHRTa2luID0gdGhpcy5yZWFkU2tpbihpbnB1dCwgc2tlbGV0b25EYXRhLCB0cnVlLCBub25lc3NlbnRpYWwpO1xuXHRcdGlmIChkZWZhdWx0U2tpbikge1xuXHRcdFx0c2tlbGV0b25EYXRhLmRlZmF1bHRTa2luID0gZGVmYXVsdFNraW47XG5cdFx0XHRza2VsZXRvbkRhdGEuc2tpbnMucHVzaChkZWZhdWx0U2tpbik7XG5cdFx0fVxuXG5cdFx0Ly8gU2tpbnMuXG5cdFx0e1xuXHRcdFx0bGV0IGkgPSBza2VsZXRvbkRhdGEuc2tpbnMubGVuZ3RoO1xuXHRcdFx0VXRpbHMuc2V0QXJyYXlTaXplKHNrZWxldG9uRGF0YS5za2lucywgbiA9IGkgKyBpbnB1dC5yZWFkSW50KHRydWUpKTtcblx0XHRcdGZvciAoOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IHNraW4gPSB0aGlzLnJlYWRTa2luKGlucHV0LCBza2VsZXRvbkRhdGEsIGZhbHNlLCBub25lc3NlbnRpYWwpO1xuXHRcdFx0XHRpZiAoIXNraW4pIHRocm93IG5ldyBFcnJvcihcInJlYWRTa2luKCkgc2hvdWxkIG5vdCBoYXZlIHJldHVybmVkIG51bGwuXCIpO1xuXHRcdFx0XHRza2VsZXRvbkRhdGEuc2tpbnNbaV0gPSBza2luO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIExpbmtlZCBtZXNoZXMuXG5cdFx0biA9IHRoaXMubGlua2VkTWVzaGVzLmxlbmd0aDtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuXHRcdFx0Y29uc3QgbGlua2VkTWVzaCA9IHRoaXMubGlua2VkTWVzaGVzW2ldO1xuXHRcdFx0Y29uc3Qgc2tpbiA9IHNrZWxldG9uRGF0YS5za2luc1tsaW5rZWRNZXNoLnNraW5JbmRleF07XG5cdFx0XHRpZiAoIWxpbmtlZE1lc2guc291cmNlKSB0aHJvdyBuZXcgRXJyb3IoXCJMaW5rZWQgbWVzaCBwYXJlbnQgbXVzdCBub3QgYmUgbnVsbFwiKTtcblx0XHRcdGNvbnN0IHNvdXJjZSA9IHNraW4uZ2V0QXR0YWNobWVudChsaW5rZWRNZXNoLnNvdXJjZUluZGV4LCBsaW5rZWRNZXNoLnNvdXJjZSk7XG5cdFx0XHRpZiAoIXNvdXJjZSkgdGhyb3cgbmV3IEVycm9yKGBTb3VyY2UgbWVzaCBub3QgZm91bmQ6ICR7bGlua2VkTWVzaC5zb3VyY2V9YCk7XG5cdFx0XHRsaW5rZWRNZXNoLm1lc2gudGltZWxpbmVBdHRhY2htZW50ID0gbGlua2VkTWVzaC5pbmhlcml0VGltZWxpbmVzID8gc291cmNlIDogbGlua2VkTWVzaC5tZXNoO1xuXHRcdFx0bGlua2VkTWVzaC5tZXNoLnNldFNvdXJjZU1lc2goc291cmNlIGFzIE1lc2hBdHRhY2htZW50KTtcblx0XHRcdGxpbmtlZE1lc2gubWVzaC51cGRhdGVTZXF1ZW5jZSgpO1xuXHRcdH1cblx0XHR0aGlzLmxpbmtlZE1lc2hlcy5sZW5ndGggPSAwO1xuXG5cdFx0Ly8gRXZlbnRzLlxuXHRcdG4gPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRjb25zdCBldmVudE5hbWUgPSBpbnB1dC5yZWFkU3RyaW5nKCk7XG5cdFx0XHRpZiAoIWV2ZW50TmFtZSkgdGhyb3cgbmV3IEVycm9yKFwiRXZlbnQgZGF0YSBuYW1lIG11c3Qgbm90IGJlIG51bGxcIik7XG5cdFx0XHRjb25zdCBkYXRhID0gbmV3IEV2ZW50RGF0YShldmVudE5hbWUpO1xuXHRcdFx0Y29uc3Qgc2V0dXAgPSBkYXRhLnNldHVwUG9zZTtcblx0XHRcdHNldHVwLmludFZhbHVlID0gaW5wdXQucmVhZEludChmYWxzZSk7XG5cdFx0XHRzZXR1cC5mbG9hdFZhbHVlID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRzZXR1cC5zdHJpbmdWYWx1ZSA9IGlucHV0LnJlYWRTdHJpbmcoKTtcblx0XHRcdGRhdGEuX2F1ZGlvUGF0aCA9IGlucHV0LnJlYWRTdHJpbmcoKTtcblx0XHRcdGlmIChkYXRhLmF1ZGlvUGF0aCkge1xuXHRcdFx0XHRzZXR1cC52b2x1bWUgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0c2V0dXAuYmFsYW5jZSA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0fVxuXHRcdFx0c2tlbGV0b25EYXRhLmV2ZW50cy5wdXNoKGRhdGEpO1xuXHRcdH1cblxuXHRcdC8vIEFuaW1hdGlvbnMuXG5cdFx0Y29uc3QgYW5pbWF0aW9ucyA9IHNrZWxldG9uRGF0YS5hbmltYXRpb25zO1xuXHRcdG4gPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRjb25zdCBhbmltYXRpb25OYW1lID0gaW5wdXQucmVhZFN0cmluZygpO1xuXHRcdFx0aWYgKCFhbmltYXRpb25OYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJBbmltYXRpb24gbmFtZSBtdXN0IG5vdCBiZSBudWxsLlwiKTtcblx0XHRcdGFuaW1hdGlvbnMucHVzaCh0aGlzLnJlYWRBbmltYXRpb24oaW5wdXQsIGFuaW1hdGlvbk5hbWUsIHNrZWxldG9uRGF0YSwgbm9uZXNzZW50aWFsKSk7XG5cdFx0fVxuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjb25zdHJhaW50Q291bnQ7IGkrKykge1xuXHRcdFx0Y29uc3QgY29uc3RyYWludCA9IGNvbnN0cmFpbnRzW2ldO1xuXHRcdFx0aWYgKGNvbnN0cmFpbnQgaW5zdGFuY2VvZiBTbGlkZXJEYXRhKSBjb25zdHJhaW50LmFuaW1hdGlvbiA9IGFuaW1hdGlvbnNbaW5wdXQucmVhZEludCh0cnVlKV07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHNrZWxldG9uRGF0YTtcblx0fVxuXG5cdHByaXZhdGUgcmVhZFNraW4gKGlucHV0OiBCaW5hcnlJbnB1dCwgc2tlbGV0b25EYXRhOiBTa2VsZXRvbkRhdGEsIGRlZmF1bHRTa2luOiBib29sZWFuLCBub25lc3NlbnRpYWw6IGJvb2xlYW4pOiBTa2luIHwgbnVsbCB7XG5cdFx0bGV0IHNraW4gPSBudWxsO1xuXHRcdGxldCBzbG90Q291bnQgPSAwO1xuXG5cdFx0aWYgKGRlZmF1bHRTa2luKSB7XG5cdFx0XHRzbG90Q291bnQgPSBpbnB1dC5yZWFkSW50KHRydWUpXG5cdFx0XHRpZiAoc2xvdENvdW50ID09PSAwKSByZXR1cm4gbnVsbDtcblx0XHRcdHNraW4gPSBuZXcgU2tpbihcImRlZmF1bHRcIik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IHNraW5OYW1lID0gaW5wdXQucmVhZFN0cmluZygpO1xuXHRcdFx0aWYgKCFza2luTmFtZSkgdGhyb3cgbmV3IEVycm9yKFwiU2tpbiBuYW1lIG11c3Qgbm90IGJlIG51bGwuXCIpO1xuXHRcdFx0c2tpbiA9IG5ldyBTa2luKHNraW5OYW1lKTtcblxuXHRcdFx0aWYgKG5vbmVzc2VudGlhbCkgQ29sb3IucmdiYTg4ODhUb0NvbG9yKHNraW4uY29sb3IsIGlucHV0LnJlYWRJbnQzMigpKTtcblxuXHRcdFx0bGV0IG4gPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0bGV0IGZyb206IG9iamVjdFtdID0gc2tlbGV0b25EYXRhLmJvbmVzLCB0bzogb2JqZWN0W10gPSBza2luLmJvbmVzO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspXG5cdFx0XHRcdHRvW2ldID0gZnJvbVtpbnB1dC5yZWFkSW50KHRydWUpXTtcblxuXHRcdFx0biA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRmcm9tID0gc2tlbGV0b25EYXRhLmNvbnN0cmFpbnRzO1xuXHRcdFx0dG8gPSBza2luLmNvbnN0cmFpbnRzO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspXG5cdFx0XHRcdHRvW2ldID0gZnJvbVtpbnB1dC5yZWFkSW50KHRydWUpXTtcblxuXHRcdFx0c2xvdENvdW50ID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHR9XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHNsb3RDb3VudDsgaSsrKSB7XG5cdFx0XHRjb25zdCBzbG90SW5kZXggPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0Zm9yIChsZXQgaWkgPSAwLCBubiA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7IGlpIDwgbm47IGlpKyspIHtcblx0XHRcdFx0Y29uc3QgcGxhY2Vob2xkZXIgPSBpbnB1dC5yZWFkU3RyaW5nUmVmKCk7XG5cdFx0XHRcdGlmICghcGxhY2Vob2xkZXIpXG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiQXR0YWNobWVudCBuYW1lIG11c3Qgbm90IGJlIG51bGxcIik7XG5cdFx0XHRcdGNvbnN0IGF0dGFjaG1lbnQgPSB0aGlzLnJlYWRBdHRhY2htZW50KGlucHV0LCBza2VsZXRvbkRhdGEsIHNraW4sIHNsb3RJbmRleCwgcGxhY2Vob2xkZXIsIG5vbmVzc2VudGlhbCk7XG5cdFx0XHRcdGlmIChhdHRhY2htZW50KSBza2luLnNldEF0dGFjaG1lbnQoc2xvdEluZGV4LCBwbGFjZWhvbGRlciwgYXR0YWNobWVudCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBza2luO1xuXHR9XG5cblx0cHJpdmF0ZSByZWFkQXR0YWNobWVudCAoaW5wdXQ6IEJpbmFyeUlucHV0LCBza2VsZXRvbkRhdGE6IFNrZWxldG9uRGF0YSwgc2tpbjogU2tpbiwgc2xvdEluZGV4OiBudW1iZXIsIHBsYWNlaG9sZGVyOiBzdHJpbmcsIG5vbmVzc2VudGlhbDogYm9vbGVhbik6IEF0dGFjaG1lbnQgfCBudWxsIHtcblx0XHRjb25zdCBzY2FsZSA9IHRoaXMuc2NhbGU7XG5cblx0XHRjb25zdCBmbGFncyA9IGlucHV0LnJlYWRCeXRlKCk7XG5cdFx0Y29uc3QgbmFtZSA9IChmbGFncyAmIDgpICE9PSAwID8gaW5wdXQucmVhZFN0cmluZ1JlZigpIDogcGxhY2Vob2xkZXI7XG5cdFx0aWYgKCFuYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJBdHRhY2htZW50IG5hbWUgbXVzdCBub3QgYmUgbnVsbFwiKTtcblx0XHRzd2l0Y2ggKChmbGFncyAmIDBiMTExKSBhcyBBdHRhY2htZW50VHlwZSkgeyAvLyBCVUc/XG5cdFx0XHRjYXNlIEF0dGFjaG1lbnRUeXBlLlJlZ2lvbjoge1xuXHRcdFx0XHRsZXQgcGF0aCA9IChmbGFncyAmIDE2KSAhPT0gMCA/IGlucHV0LnJlYWRTdHJpbmdSZWYoKSA6IG51bGw7XG5cdFx0XHRcdGNvbnN0IGNvbG9yID0gKGZsYWdzICYgMzIpICE9PSAwID8gaW5wdXQucmVhZEludDMyKCkgOiAweGZmZmZmZmZmO1xuXHRcdFx0XHRjb25zdCBzZXF1ZW5jZSA9IHRoaXMucmVhZFNlcXVlbmNlKGlucHV0LCAoZmxhZ3MgJiA2NCkgIT09IDApO1xuXHRcdFx0XHRjb25zdCByb3RhdGlvbiA9IChmbGFncyAmIDEyOCkgIT09IDAgPyBpbnB1dC5yZWFkRmxvYXQoKSA6IDA7XG5cdFx0XHRcdGNvbnN0IHggPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0Y29uc3QgeSA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRjb25zdCBzY2FsZVggPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0Y29uc3Qgc2NhbGVZID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdGNvbnN0IHdpZHRoID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdGNvbnN0IGhlaWdodCA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXG5cdFx0XHRcdGlmICghcGF0aCkgcGF0aCA9IG5hbWU7XG5cdFx0XHRcdGNvbnN0IHJlZ2lvbiA9IHRoaXMuYXR0YWNobWVudExvYWRlci5uZXdSZWdpb25BdHRhY2htZW50KHNraW4sIHBsYWNlaG9sZGVyLCBuYW1lLCBwYXRoLCBzZXF1ZW5jZSk7XG5cdFx0XHRcdGlmICghcmVnaW9uKSByZXR1cm4gbnVsbDtcblx0XHRcdFx0cmVnaW9uLnBhdGggPSBwYXRoO1xuXHRcdFx0XHRyZWdpb24ueCA9IHggKiBzY2FsZTtcblx0XHRcdFx0cmVnaW9uLnkgPSB5ICogc2NhbGU7XG5cdFx0XHRcdHJlZ2lvbi5zY2FsZVggPSBzY2FsZVg7XG5cdFx0XHRcdHJlZ2lvbi5zY2FsZVkgPSBzY2FsZVk7XG5cdFx0XHRcdHJlZ2lvbi5yb3RhdGlvbiA9IHJvdGF0aW9uO1xuXHRcdFx0XHRyZWdpb24ud2lkdGggPSB3aWR0aCAqIHNjYWxlO1xuXHRcdFx0XHRyZWdpb24uaGVpZ2h0ID0gaGVpZ2h0ICogc2NhbGU7XG5cdFx0XHRcdENvbG9yLnJnYmE4ODg4VG9Db2xvcihyZWdpb24uY29sb3IsIGNvbG9yKTtcblx0XHRcdFx0cmVnaW9uLnVwZGF0ZVNlcXVlbmNlKCk7XG5cdFx0XHRcdHJldHVybiByZWdpb247XG5cdFx0XHR9XG5cdFx0XHRjYXNlIEF0dGFjaG1lbnRUeXBlLkJvdW5kaW5nQm94OiB7XG5cdFx0XHRcdGNvbnN0IHZlcnRpY2VzID0gdGhpcy5yZWFkVmVydGljZXMoaW5wdXQsIChmbGFncyAmIDE2KSAhPT0gMCk7XG5cdFx0XHRcdGNvbnN0IGNvbG9yID0gbm9uZXNzZW50aWFsID8gaW5wdXQucmVhZEludDMyKCkgOiAwO1xuXG5cdFx0XHRcdGNvbnN0IGJveCA9IHRoaXMuYXR0YWNobWVudExvYWRlci5uZXdCb3VuZGluZ0JveEF0dGFjaG1lbnQoc2tpbiwgcGxhY2Vob2xkZXIsIG5hbWUpO1xuXHRcdFx0XHRpZiAoIWJveCkgcmV0dXJuIG51bGw7XG5cdFx0XHRcdGJveC53b3JsZFZlcnRpY2VzTGVuZ3RoID0gdmVydGljZXMubGVuZ3RoO1xuXHRcdFx0XHRib3gudmVydGljZXMgPSB2ZXJ0aWNlcy52ZXJ0aWNlcztcblx0XHRcdFx0Ym94LmJvbmVzID0gdmVydGljZXMuYm9uZXM7XG5cdFx0XHRcdGlmIChub25lc3NlbnRpYWwpIENvbG9yLnJnYmE4ODg4VG9Db2xvcihib3guY29sb3IsIGNvbG9yKTtcblx0XHRcdFx0cmV0dXJuIGJveDtcblx0XHRcdH1cblx0XHRcdGNhc2UgQXR0YWNobWVudFR5cGUuTWVzaDoge1xuXHRcdFx0XHRsZXQgcGF0aCA9IChmbGFncyAmIDE2KSAhPT0gMCA/IGlucHV0LnJlYWRTdHJpbmdSZWYoKSA6IG5hbWU7XG5cdFx0XHRcdGNvbnN0IGNvbG9yID0gKGZsYWdzICYgMzIpICE9PSAwID8gaW5wdXQucmVhZEludDMyKCkgOiAweGZmZmZmZmZmO1xuXHRcdFx0XHRjb25zdCBzZXF1ZW5jZSA9IHRoaXMucmVhZFNlcXVlbmNlKGlucHV0LCAoZmxhZ3MgJiA2NCkgIT09IDApO1xuXHRcdFx0XHRjb25zdCBodWxsTGVuZ3RoID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHRcdFx0Y29uc3QgdmVydGljZXMgPSB0aGlzLnJlYWRWZXJ0aWNlcyhpbnB1dCwgKGZsYWdzICYgMTI4KSAhPT0gMCk7XG5cdFx0XHRcdGNvbnN0IHV2cyA9IHRoaXMucmVhZEZsb2F0QXJyYXkoaW5wdXQsIHZlcnRpY2VzLmxlbmd0aCwgMSk7XG5cdFx0XHRcdGNvbnN0IHRyaWFuZ2xlcyA9IHRoaXMucmVhZFNob3J0QXJyYXkoaW5wdXQsICh2ZXJ0aWNlcy5sZW5ndGggLSBodWxsTGVuZ3RoIC0gMikgKiAzKTtcblxuXHRcdFx0XHRjb25zdCBzbG90Q291bnQgPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0XHRsZXQgdGltZWxpbmVTbG90cyA9IG51bGw7XG5cdFx0XHRcdGlmIChzbG90Q291bnQgPiAwKSB7XG5cdFx0XHRcdFx0dGltZWxpbmVTbG90cyA9IFtdO1xuXHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc2xvdENvdW50OyBpKyspXG5cdFx0XHRcdFx0XHR0aW1lbGluZVNsb3RzW2ldID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxldCBlZGdlczogbnVtYmVyW10gPSBbXTtcblx0XHRcdFx0bGV0IHdpZHRoID0gMCwgaGVpZ2h0ID0gMDtcblx0XHRcdFx0aWYgKG5vbmVzc2VudGlhbCkge1xuXHRcdFx0XHRcdGVkZ2VzID0gdGhpcy5yZWFkU2hvcnRBcnJheShpbnB1dCwgaW5wdXQucmVhZEludCh0cnVlKSk7XG5cdFx0XHRcdFx0d2lkdGggPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRoZWlnaHQgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICghcGF0aCkgcGF0aCA9IG5hbWU7XG5cdFx0XHRcdGNvbnN0IG1lc2ggPSB0aGlzLmF0dGFjaG1lbnRMb2FkZXIubmV3TWVzaEF0dGFjaG1lbnQoc2tpbiwgcGxhY2Vob2xkZXIsIG5hbWUsIHBhdGgsIHNlcXVlbmNlKTtcblx0XHRcdFx0aWYgKCFtZXNoKSByZXR1cm4gbnVsbDtcblx0XHRcdFx0bWVzaC5wYXRoID0gcGF0aDtcblx0XHRcdFx0Q29sb3IucmdiYTg4ODhUb0NvbG9yKG1lc2guY29sb3IsIGNvbG9yKTtcblx0XHRcdFx0bWVzaC5odWxsTGVuZ3RoID0gaHVsbExlbmd0aCA8PCAxO1xuXHRcdFx0XHRtZXNoLmJvbmVzID0gdmVydGljZXMuYm9uZXM7XG5cdFx0XHRcdG1lc2gudmVydGljZXMgPSB2ZXJ0aWNlcy52ZXJ0aWNlcztcblx0XHRcdFx0bWVzaC53b3JsZFZlcnRpY2VzTGVuZ3RoID0gdmVydGljZXMubGVuZ3RoO1xuXHRcdFx0XHRtZXNoLnJlZ2lvblVWcyA9IHV2cztcblx0XHRcdFx0bWVzaC50cmlhbmdsZXMgPSB0cmlhbmdsZXM7XG5cdFx0XHRcdGlmICh0aW1lbGluZVNsb3RzKSBtZXNoLnRpbWVsaW5lU2xvdHMgPSB0aW1lbGluZVNsb3RzO1xuXHRcdFx0XHRpZiAobm9uZXNzZW50aWFsKSB7XG5cdFx0XHRcdFx0bWVzaC5lZGdlcyA9IGVkZ2VzO1xuXHRcdFx0XHRcdG1lc2gud2lkdGggPSB3aWR0aCAqIHNjYWxlO1xuXHRcdFx0XHRcdG1lc2guaGVpZ2h0ID0gaGVpZ2h0ICogc2NhbGU7XG5cdFx0XHRcdH1cblx0XHRcdFx0bWVzaC51cGRhdGVTZXF1ZW5jZSgpO1xuXHRcdFx0XHRyZXR1cm4gbWVzaDtcblx0XHRcdH1cblx0XHRcdGNhc2UgQXR0YWNobWVudFR5cGUuTGlua2VkTWVzaDoge1xuXHRcdFx0XHRjb25zdCBwYXRoID0gKGZsYWdzICYgMTYpICE9PSAwID8gaW5wdXQucmVhZFN0cmluZ1JlZigpIDogbmFtZTtcblx0XHRcdFx0aWYgKHBhdGggPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwiUGF0aCBvZiBsaW5rZWQgbWVzaCBtdXN0IG5vdCBiZSBudWxsXCIpO1xuXHRcdFx0XHRjb25zdCBjb2xvciA9IChmbGFncyAmIDMyKSAhPT0gMCA/IGlucHV0LnJlYWRJbnQzMigpIDogMHhmZmZmZmZmZjtcblx0XHRcdFx0Y29uc3Qgc2VxdWVuY2UgPSB0aGlzLnJlYWRTZXF1ZW5jZShpbnB1dCwgKGZsYWdzICYgNjQpICE9PSAwKTtcblx0XHRcdFx0Y29uc3QgaW5oZXJpdFRpbWVsaW5lcyA9IChmbGFncyAmIDEyOCkgIT09IDA7XG5cdFx0XHRcdGNvbnN0IHNvdXJjZUluZGV4ID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHRcdFx0Y29uc3Qgc2tpbkluZGV4ID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHRcdFx0Y29uc3Qgc291cmNlID0gaW5wdXQucmVhZFN0cmluZ1JlZigpO1xuXHRcdFx0XHRsZXQgd2lkdGggPSAwLCBoZWlnaHQgPSAwO1xuXHRcdFx0XHRpZiAobm9uZXNzZW50aWFsKSB7XG5cdFx0XHRcdFx0d2lkdGggPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRoZWlnaHQgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IG1lc2ggPSB0aGlzLmF0dGFjaG1lbnRMb2FkZXIubmV3TWVzaEF0dGFjaG1lbnQoc2tpbiwgcGxhY2Vob2xkZXIsIG5hbWUsIHBhdGgsIHNlcXVlbmNlKTtcblx0XHRcdFx0aWYgKCFtZXNoKSByZXR1cm4gbnVsbDtcblx0XHRcdFx0bWVzaC5wYXRoID0gcGF0aDtcblx0XHRcdFx0Q29sb3IucmdiYTg4ODhUb0NvbG9yKG1lc2guY29sb3IsIGNvbG9yKTtcblx0XHRcdFx0aWYgKG5vbmVzc2VudGlhbCkge1xuXHRcdFx0XHRcdG1lc2gud2lkdGggPSB3aWR0aCAqIHNjYWxlO1xuXHRcdFx0XHRcdG1lc2guaGVpZ2h0ID0gaGVpZ2h0ICogc2NhbGU7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5saW5rZWRNZXNoZXMucHVzaChuZXcgTGlua2VkTWVzaChtZXNoLCBza2luSW5kZXgsIHNsb3RJbmRleCwgc291cmNlSW5kZXgsIHNvdXJjZSwgaW5oZXJpdFRpbWVsaW5lcykpO1xuXHRcdFx0XHRyZXR1cm4gbWVzaDtcblx0XHRcdH1cblx0XHRcdGNhc2UgQXR0YWNobWVudFR5cGUuUGF0aDoge1xuXHRcdFx0XHRjb25zdCBjbG9zZWQgPSAoZmxhZ3MgJiAxNikgIT09IDA7XG5cdFx0XHRcdGNvbnN0IGNvbnN0YW50U3BlZWQgPSAoZmxhZ3MgJiAzMikgIT09IDA7XG5cdFx0XHRcdGNvbnN0IHZlcnRpY2VzID0gdGhpcy5yZWFkVmVydGljZXMoaW5wdXQsIChmbGFncyAmIDY0KSAhPT0gMCk7XG5cblx0XHRcdFx0Y29uc3QgbGVuZ3RocyA9IHRoaXMucmVhZEZsb2F0QXJyYXkoaW5wdXQsIHZlcnRpY2VzLmxlbmd0aCAvIDYsIHNjYWxlKTtcblx0XHRcdFx0Y29uc3QgY29sb3IgPSBub25lc3NlbnRpYWwgPyBpbnB1dC5yZWFkSW50MzIoKSA6IDA7XG5cblx0XHRcdFx0Y29uc3QgcGF0aCA9IHRoaXMuYXR0YWNobWVudExvYWRlci5uZXdQYXRoQXR0YWNobWVudChza2luLCBwbGFjZWhvbGRlciwgbmFtZSk7XG5cdFx0XHRcdGlmICghcGF0aCkgcmV0dXJuIG51bGw7XG5cdFx0XHRcdHBhdGguY2xvc2VkID0gY2xvc2VkO1xuXHRcdFx0XHRwYXRoLmNvbnN0YW50U3BlZWQgPSBjb25zdGFudFNwZWVkO1xuXHRcdFx0XHRwYXRoLndvcmxkVmVydGljZXNMZW5ndGggPSB2ZXJ0aWNlcy5sZW5ndGg7XG5cdFx0XHRcdHBhdGgudmVydGljZXMgPSB2ZXJ0aWNlcy52ZXJ0aWNlcztcblx0XHRcdFx0cGF0aC5ib25lcyA9IHZlcnRpY2VzLmJvbmVzO1xuXHRcdFx0XHRwYXRoLmxlbmd0aHMgPSBsZW5ndGhzO1xuXHRcdFx0XHRpZiAobm9uZXNzZW50aWFsKSBDb2xvci5yZ2JhODg4OFRvQ29sb3IocGF0aC5jb2xvciwgY29sb3IpO1xuXHRcdFx0XHRyZXR1cm4gcGF0aDtcblx0XHRcdH1cblx0XHRcdGNhc2UgQXR0YWNobWVudFR5cGUuUG9pbnQ6IHtcblx0XHRcdFx0Y29uc3Qgcm90YXRpb24gPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0Y29uc3QgeCA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRjb25zdCB5ID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdGNvbnN0IGNvbG9yID0gbm9uZXNzZW50aWFsID8gaW5wdXQucmVhZEludDMyKCkgOiAwO1xuXG5cdFx0XHRcdGNvbnN0IHBvaW50ID0gdGhpcy5hdHRhY2htZW50TG9hZGVyLm5ld1BvaW50QXR0YWNobWVudChza2luLCBwbGFjZWhvbGRlciwgbmFtZSk7XG5cdFx0XHRcdGlmICghcG9pbnQpIHJldHVybiBudWxsO1xuXHRcdFx0XHRwb2ludC54ID0geCAqIHNjYWxlO1xuXHRcdFx0XHRwb2ludC55ID0geSAqIHNjYWxlO1xuXHRcdFx0XHRwb2ludC5yb3RhdGlvbiA9IHJvdGF0aW9uO1xuXHRcdFx0XHRpZiAobm9uZXNzZW50aWFsKSBDb2xvci5yZ2JhODg4OFRvQ29sb3IocG9pbnQuY29sb3IsIGNvbG9yKTtcblx0XHRcdFx0cmV0dXJuIHBvaW50O1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBBdHRhY2htZW50VHlwZS5DbGlwcGluZzoge1xuXHRcdFx0XHRjb25zdCBlbmRTbG90SW5kZXggPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0XHRjb25zdCB2ZXJ0aWNlcyA9IHRoaXMucmVhZFZlcnRpY2VzKGlucHV0LCAoZmxhZ3MgJiAxNikgIT09IDApO1xuXHRcdFx0XHRjb25zdCBjb2xvciA9IG5vbmVzc2VudGlhbCA/IGlucHV0LnJlYWRJbnQzMigpIDogMDtcblxuXHRcdFx0XHRjb25zdCBjbGlwID0gdGhpcy5hdHRhY2htZW50TG9hZGVyLm5ld0NsaXBwaW5nQXR0YWNobWVudChza2luLCBwbGFjZWhvbGRlciwgbmFtZSk7XG5cdFx0XHRcdGlmICghY2xpcCkgcmV0dXJuIG51bGw7XG5cdFx0XHRcdGNsaXAuZW5kU2xvdCA9IHNrZWxldG9uRGF0YS5zbG90c1tlbmRTbG90SW5kZXhdO1xuXHRcdFx0XHRjbGlwLmNvbnZleCA9IChmbGFncyAmIDMyKSAhPT0gMDtcblx0XHRcdFx0Y2xpcC5pbnZlcnNlID0gKGZsYWdzICYgNjQpICE9PSAwO1xuXHRcdFx0XHRjbGlwLndvcmxkVmVydGljZXNMZW5ndGggPSB2ZXJ0aWNlcy5sZW5ndGg7XG5cdFx0XHRcdGNsaXAudmVydGljZXMgPSB2ZXJ0aWNlcy52ZXJ0aWNlcztcblx0XHRcdFx0Y2xpcC5ib25lcyA9IHZlcnRpY2VzLmJvbmVzO1xuXHRcdFx0XHRpZiAobm9uZXNzZW50aWFsKSBDb2xvci5yZ2JhODg4OFRvQ29sb3IoY2xpcC5jb2xvciwgY29sb3IpO1xuXHRcdFx0XHRyZXR1cm4gY2xpcDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHJlYWRTZXF1ZW5jZSAoaW5wdXQ6IEJpbmFyeUlucHV0LCBoYXNQYXRoU3VmZml4OiBib29sZWFuKSB7XG5cdFx0aWYgKCFoYXNQYXRoU3VmZml4KSByZXR1cm4gbmV3IFNlcXVlbmNlKDEsIGZhbHNlKTtcblx0XHRjb25zdCBzZXF1ZW5jZSA9IG5ldyBTZXF1ZW5jZShpbnB1dC5yZWFkSW50KHRydWUpLCB0cnVlKTtcblx0XHRzZXF1ZW5jZS5zdGFydCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0c2VxdWVuY2UuZGlnaXRzID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHRzZXF1ZW5jZS5zZXR1cEluZGV4ID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHRyZXR1cm4gc2VxdWVuY2U7XG5cdH1cblxuXHRwcml2YXRlIHJlYWRWZXJ0aWNlcyAoaW5wdXQ6IEJpbmFyeUlucHV0LCB3ZWlnaHRlZDogYm9vbGVhbik6IFZlcnRpY2VzIHtcblx0XHRjb25zdCBzY2FsZSA9IHRoaXMuc2NhbGU7XG5cdFx0Y29uc3QgdmVydGV4Q291bnQgPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdGNvbnN0IGxlbmd0aCA9IHZlcnRleENvdW50IDw8IDE7XG5cblx0XHRpZiAoIXdlaWdodGVkKVxuXHRcdFx0cmV0dXJuIG5ldyBWZXJ0aWNlcyhudWxsLCB0aGlzLnJlYWRGbG9hdEFycmF5KGlucHV0LCBsZW5ndGgsIHNjYWxlKSwgbGVuZ3RoKTtcblxuXHRcdGNvbnN0IG4gPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdGNvbnN0IGJvbmVzOiBudW1iZXJbXSA9IFtdO1xuXHRcdGNvbnN0IHdlaWdodHM6IG51bWJlcltdID0gW107XG5cdFx0Zm9yIChsZXQgYiA9IDAsIHcgPSAwOyBiIDwgbjspIHtcblx0XHRcdGNvbnN0IGJvbmVDb3VudCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRib25lc1tiKytdID0gYm9uZUNvdW50O1xuXHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IGJvbmVDb3VudDsgaWkrKywgdyArPSAzKSB7XG5cdFx0XHRcdGJvbmVzW2IrK10gPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0XHR3ZWlnaHRzW3ddID0gaW5wdXQucmVhZEZsb2F0KCkgKiBzY2FsZTtcblx0XHRcdFx0d2VpZ2h0c1t3ICsgMV0gPSBpbnB1dC5yZWFkRmxvYXQoKSAqIHNjYWxlO1xuXHRcdFx0XHR3ZWlnaHRzW3cgKyAyXSA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gbmV3IFZlcnRpY2VzKGJvbmVzLCBVdGlscy50b0Zsb2F0QXJyYXkod2VpZ2h0cyksIGxlbmd0aCk7XG5cdH1cblxuXHRwcml2YXRlIHJlYWRGbG9hdEFycmF5IChpbnB1dDogQmluYXJ5SW5wdXQsIG46IG51bWJlciwgc2NhbGU6IG51bWJlcik6IG51bWJlcltdIHtcblx0XHRjb25zdCBhcnJheTogbnVtYmVyW10gPSBbXTtcblx0XHRpZiAoc2NhbGUgPT09IDEpIHtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKVxuXHRcdFx0XHRhcnJheVtpXSA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKylcblx0XHRcdFx0YXJyYXlbaV0gPSBpbnB1dC5yZWFkRmxvYXQoKSAqIHNjYWxlO1xuXHRcdH1cblx0XHRyZXR1cm4gYXJyYXk7XG5cdH1cblxuXHRwcml2YXRlIHJlYWRTaG9ydEFycmF5IChpbnB1dDogQmluYXJ5SW5wdXQsIG46IG51bWJlcik6IG51bWJlcltdIHtcblx0XHRjb25zdCBhcnJheTogbnVtYmVyW10gPSBbXTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKylcblx0XHRcdGFycmF5W2ldID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHRyZXR1cm4gYXJyYXk7XG5cdH1cblxuXHRwcml2YXRlIHJlYWRBbmltYXRpb24gKGlucHV0OiBCaW5hcnlJbnB1dCwgbmFtZTogc3RyaW5nLCBza2VsZXRvbkRhdGE6IFNrZWxldG9uRGF0YSwgbm9uZXNzZW50aWFsOiBib29sZWFuKTogQW5pbWF0aW9uIHtcblx0XHRpbnB1dC5yZWFkSW50KHRydWUpOyAvLyBOdW1iZXIgb2YgdGltZWxpbmVzLlxuXHRcdGNvbnN0IHRpbWVsaW5lczogVGltZWxpbmVbXSA9IFtdO1xuXHRcdGNvbnN0IHNjYWxlID0gdGhpcy5zY2FsZTtcblxuXHRcdC8vIFNsb3QgdGltZWxpbmVzLlxuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gaW5wdXQucmVhZEludCh0cnVlKTsgaSA8IG47IGkrKykge1xuXHRcdFx0Y29uc3Qgc2xvdEluZGV4ID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHRcdGZvciAobGV0IGlpID0gMCwgbm4gPSBpbnB1dC5yZWFkSW50KHRydWUpOyBpaSA8IG5uOyBpaSsrKSB7XG5cdFx0XHRcdGNvbnN0IHRpbWVsaW5lVHlwZSA9IGlucHV0LnJlYWRCeXRlKCk7XG5cdFx0XHRcdGNvbnN0IGZyYW1lQ291bnQgPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0XHRjb25zdCBmcmFtZUxhc3QgPSBmcmFtZUNvdW50IC0gMTtcblx0XHRcdFx0c3dpdGNoICh0aW1lbGluZVR5cGUpIHtcblx0XHRcdFx0XHRjYXNlIFNMT1RfQVRUQUNITUVOVDoge1xuXHRcdFx0XHRcdFx0Y29uc3QgdGltZWxpbmUgPSBuZXcgQXR0YWNobWVudFRpbWVsaW5lKGZyYW1lQ291bnQsIHNsb3RJbmRleCk7XG5cdFx0XHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDA7IGZyYW1lIDwgZnJhbWVDb3VudDsgZnJhbWUrKylcblx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIGlucHV0LnJlYWRGbG9hdCgpLCBpbnB1dC5yZWFkU3RyaW5nUmVmKCkpO1xuXHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgU0xPVF9SR0JBOiB7XG5cdFx0XHRcdFx0XHRjb25zdCBiZXppZXJDb3VudCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRcdFx0XHRjb25zdCB0aW1lbGluZSA9IG5ldyBSR0JBVGltZWxpbmUoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIHNsb3RJbmRleCk7XG5cblx0XHRcdFx0XHRcdGxldCB0aW1lID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0XHRsZXQgciA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXHRcdFx0XHRcdFx0bGV0IGcgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblx0XHRcdFx0XHRcdGxldCBiID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cdFx0XHRcdFx0XHRsZXQgYSA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXG5cdFx0XHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDAsIGJlemllciA9IDA7IDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgciwgZywgYiwgYSk7XG5cdFx0XHRcdFx0XHRcdGlmIChmcmFtZSA9PT0gZnJhbWVMYXN0KSBicmVhaztcblxuXHRcdFx0XHRcdFx0XHRjb25zdCB0aW1lMiA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCByMiA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBnMiA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBiMiA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBhMiA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXG5cdFx0XHRcdFx0XHRcdHN3aXRjaCAoaW5wdXQucmVhZEJ5dGUoKSkge1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgQ1VSVkVfU1RFUFBFRDpcblx0XHRcdFx0XHRcdFx0XHRcdHRpbWVsaW5lLnNldFN0ZXBwZWQoZnJhbWUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBDVVJWRV9CRVpJRVI6XG5cdFx0XHRcdFx0XHRcdFx0XHRzZXRCZXppZXIoaW5wdXQsIHRpbWVsaW5lLCBiZXppZXIrKywgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCByLCByMiwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRzZXRCZXppZXIoaW5wdXQsIHRpbWVsaW5lLCBiZXppZXIrKywgZnJhbWUsIDEsIHRpbWUsIHRpbWUyLCBnLCBnMiwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRzZXRCZXppZXIoaW5wdXQsIHRpbWVsaW5lLCBiZXppZXIrKywgZnJhbWUsIDIsIHRpbWUsIHRpbWUyLCBiLCBiMiwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRzZXRCZXppZXIoaW5wdXQsIHRpbWVsaW5lLCBiZXppZXIrKywgZnJhbWUsIDMsIHRpbWUsIHRpbWUyLCBhLCBhMiwgMSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0dGltZSA9IHRpbWUyO1xuXHRcdFx0XHRcdFx0XHRyID0gcjI7XG5cdFx0XHRcdFx0XHRcdGcgPSBnMjtcblx0XHRcdFx0XHRcdFx0YiA9IGIyO1xuXHRcdFx0XHRcdFx0XHRhID0gYTI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aW1lbGluZXMucHVzaCh0aW1lbGluZSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSBTTE9UX1JHQjoge1xuXHRcdFx0XHRcdFx0Y29uc3QgYmV6aWVyQ291bnQgPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0XHRcdFx0Y29uc3QgdGltZWxpbmUgPSBuZXcgUkdCVGltZWxpbmUoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIHNsb3RJbmRleCk7XG5cblx0XHRcdFx0XHRcdGxldCB0aW1lID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0XHRsZXQgciA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXHRcdFx0XHRcdFx0bGV0IGcgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblx0XHRcdFx0XHRcdGxldCBiID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cblx0XHRcdFx0XHRcdGZvciAobGV0IGZyYW1lID0gMCwgYmV6aWVyID0gMDsgOyBmcmFtZSsrKSB7XG5cdFx0XHRcdFx0XHRcdHRpbWVsaW5lLnNldEZyYW1lKGZyYW1lLCB0aW1lLCByLCBnLCBiKTtcblx0XHRcdFx0XHRcdFx0aWYgKGZyYW1lID09PSBmcmFtZUxhc3QpIGJyZWFrO1xuXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHRpbWUyID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHIyID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGcyID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGIyID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cblx0XHRcdFx0XHRcdFx0c3dpdGNoIChpbnB1dC5yZWFkQnl0ZSgpKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBDVVJWRV9TVEVQUEVEOlxuXHRcdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0U3RlcHBlZChmcmFtZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRjYXNlIENVUlZFX0JFWklFUjpcblx0XHRcdFx0XHRcdFx0XHRcdHNldEJlemllcihpbnB1dCwgdGltZWxpbmUsIGJlemllcisrLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIHIsIHIyLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRcdHNldEJlemllcihpbnB1dCwgdGltZWxpbmUsIGJlemllcisrLCBmcmFtZSwgMSwgdGltZSwgdGltZTIsIGcsIGcyLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRcdHNldEJlemllcihpbnB1dCwgdGltZWxpbmUsIGJlemllcisrLCBmcmFtZSwgMiwgdGltZSwgdGltZTIsIGIsIGIyLCAxKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR0aW1lID0gdGltZTI7XG5cdFx0XHRcdFx0XHRcdHIgPSByMjtcblx0XHRcdFx0XHRcdFx0ZyA9IGcyO1xuXHRcdFx0XHRcdFx0XHRiID0gYjI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aW1lbGluZXMucHVzaCh0aW1lbGluZSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSBTTE9UX1JHQkEyOiB7XG5cdFx0XHRcdFx0XHRjb25zdCBiZXppZXJDb3VudCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRcdFx0XHRjb25zdCB0aW1lbGluZSA9IG5ldyBSR0JBMlRpbWVsaW5lKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBzbG90SW5kZXgpO1xuXG5cdFx0XHRcdFx0XHRsZXQgdGltZSA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdFx0bGV0IHIgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblx0XHRcdFx0XHRcdGxldCBnID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cdFx0XHRcdFx0XHRsZXQgYiA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXHRcdFx0XHRcdFx0bGV0IGEgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblx0XHRcdFx0XHRcdGxldCByMiA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXHRcdFx0XHRcdFx0bGV0IGcyID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cdFx0XHRcdFx0XHRsZXQgYjIgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblxuXHRcdFx0XHRcdFx0Zm9yIChsZXQgZnJhbWUgPSAwLCBiZXppZXIgPSAwOyA7IGZyYW1lKyspIHtcblx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIHRpbWUsIHIsIGcsIGIsIGEsIHIyLCBnMiwgYjIpO1xuXHRcdFx0XHRcdFx0XHRpZiAoZnJhbWUgPT09IGZyYW1lTGFzdCkgYnJlYWs7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHRpbWUyID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG5yID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG5nID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG5iID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG5hID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG5yMiA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBuZzIgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbmIyID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cblx0XHRcdFx0XHRcdFx0c3dpdGNoIChpbnB1dC5yZWFkQnl0ZSgpKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBDVVJWRV9TVEVQUEVEOlxuXHRcdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0U3RlcHBlZChmcmFtZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRjYXNlIENVUlZFX0JFWklFUjpcblx0XHRcdFx0XHRcdFx0XHRcdHNldEJlemllcihpbnB1dCwgdGltZWxpbmUsIGJlemllcisrLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIHIsIG5yLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRcdHNldEJlemllcihpbnB1dCwgdGltZWxpbmUsIGJlemllcisrLCBmcmFtZSwgMSwgdGltZSwgdGltZTIsIGcsIG5nLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRcdHNldEJlemllcihpbnB1dCwgdGltZWxpbmUsIGJlemllcisrLCBmcmFtZSwgMiwgdGltZSwgdGltZTIsIGIsIG5iLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRcdHNldEJlemllcihpbnB1dCwgdGltZWxpbmUsIGJlemllcisrLCBmcmFtZSwgMywgdGltZSwgdGltZTIsIGEsIG5hLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRcdHNldEJlemllcihpbnB1dCwgdGltZWxpbmUsIGJlemllcisrLCBmcmFtZSwgNCwgdGltZSwgdGltZTIsIHIyLCBucjIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCA1LCB0aW1lLCB0aW1lMiwgZzIsIG5nMiwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRzZXRCZXppZXIoaW5wdXQsIHRpbWVsaW5lLCBiZXppZXIrKywgZnJhbWUsIDYsIHRpbWUsIHRpbWUyLCBiMiwgbmIyLCAxKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR0aW1lID0gdGltZTI7XG5cdFx0XHRcdFx0XHRcdHIgPSBucjtcblx0XHRcdFx0XHRcdFx0ZyA9IG5nO1xuXHRcdFx0XHRcdFx0XHRiID0gbmI7XG5cdFx0XHRcdFx0XHRcdGEgPSBuYTtcblx0XHRcdFx0XHRcdFx0cjIgPSBucjI7XG5cdFx0XHRcdFx0XHRcdGcyID0gbmcyO1xuXHRcdFx0XHRcdFx0XHRiMiA9IG5iMjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlIFNMT1RfUkdCMjoge1xuXHRcdFx0XHRcdFx0Y29uc3QgYmV6aWVyQ291bnQgPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0XHRcdFx0Y29uc3QgdGltZWxpbmUgPSBuZXcgUkdCMlRpbWVsaW5lKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBzbG90SW5kZXgpO1xuXG5cdFx0XHRcdFx0XHRsZXQgdGltZSA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdFx0bGV0IHIgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblx0XHRcdFx0XHRcdGxldCBnID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cdFx0XHRcdFx0XHRsZXQgYiA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXHRcdFx0XHRcdFx0bGV0IHIyID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cdFx0XHRcdFx0XHRsZXQgZzIgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblx0XHRcdFx0XHRcdGxldCBiMiA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXG5cdFx0XHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDAsIGJlemllciA9IDA7IDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgciwgZywgYiwgcjIsIGcyLCBiMik7XG5cdFx0XHRcdFx0XHRcdGlmIChmcmFtZSA9PT0gZnJhbWVMYXN0KSBicmVhaztcblx0XHRcdFx0XHRcdFx0Y29uc3QgdGltZTIgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbnIgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbmcgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbmIgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbnIyID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG5nMiA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBuYjIgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblxuXHRcdFx0XHRcdFx0XHRzd2l0Y2ggKGlucHV0LnJlYWRCeXRlKCkpIHtcblx0XHRcdFx0XHRcdFx0XHRjYXNlIENVUlZFX1NURVBQRUQ6XG5cdFx0XHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRTdGVwcGVkKGZyYW1lKTtcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgQ1VSVkVfQkVaSUVSOlxuXHRcdFx0XHRcdFx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCAwLCB0aW1lLCB0aW1lMiwgciwgbnIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgZywgbmcsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCAyLCB0aW1lLCB0aW1lMiwgYiwgbmIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCAzLCB0aW1lLCB0aW1lMiwgcjIsIG5yMiwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRzZXRCZXppZXIoaW5wdXQsIHRpbWVsaW5lLCBiZXppZXIrKywgZnJhbWUsIDQsIHRpbWUsIHRpbWUyLCBnMiwgbmcyLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRcdHNldEJlemllcihpbnB1dCwgdGltZWxpbmUsIGJlemllcisrLCBmcmFtZSwgNSwgdGltZSwgdGltZTIsIGIyLCBuYjIsIDEpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHRpbWUgPSB0aW1lMjtcblx0XHRcdFx0XHRcdFx0ciA9IG5yO1xuXHRcdFx0XHRcdFx0XHRnID0gbmc7XG5cdFx0XHRcdFx0XHRcdGIgPSBuYjtcblx0XHRcdFx0XHRcdFx0cjIgPSBucjI7XG5cdFx0XHRcdFx0XHRcdGcyID0gbmcyO1xuXHRcdFx0XHRcdFx0XHRiMiA9IG5iMjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlIFNMT1RfQUxQSEE6IHtcblx0XHRcdFx0XHRcdGNvbnN0IHRpbWVsaW5lID0gbmV3IEFscGhhVGltZWxpbmUoZnJhbWVDb3VudCwgaW5wdXQucmVhZEludCh0cnVlKSwgc2xvdEluZGV4KTtcblx0XHRcdFx0XHRcdGxldCB0aW1lID0gaW5wdXQucmVhZEZsb2F0KCksIGEgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTU7XG5cdFx0XHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDAsIGJlemllciA9IDA7IDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgYSk7XG5cdFx0XHRcdFx0XHRcdGlmIChmcmFtZSA9PT0gZnJhbWVMYXN0KSBicmVhaztcblx0XHRcdFx0XHRcdFx0Y29uc3QgdGltZTIgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgYTIgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTU7XG5cdFx0XHRcdFx0XHRcdHN3aXRjaCAoaW5wdXQucmVhZEJ5dGUoKSkge1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgQ1VSVkVfU1RFUFBFRDpcblx0XHRcdFx0XHRcdFx0XHRcdHRpbWVsaW5lLnNldFN0ZXBwZWQoZnJhbWUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBDVVJWRV9CRVpJRVI6XG5cdFx0XHRcdFx0XHRcdFx0XHRzZXRCZXppZXIoaW5wdXQsIHRpbWVsaW5lLCBiZXppZXIrKywgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCBhLCBhMiwgMSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0dGltZSA9IHRpbWUyO1xuXHRcdFx0XHRcdFx0XHRhID0gYTI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aW1lbGluZXMucHVzaCh0aW1lbGluZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQm9uZSB0aW1lbGluZXMuXG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBpbnB1dC5yZWFkSW50KHRydWUpOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRjb25zdCBib25lSW5kZXggPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0Zm9yIChsZXQgaWkgPSAwLCBubiA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7IGlpIDwgbm47IGlpKyspIHtcblx0XHRcdFx0Y29uc3QgdHlwZSA9IGlucHV0LnJlYWRCeXRlKCksIGZyYW1lQ291bnQgPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0XHRpZiAodHlwZSA9PT0gQk9ORV9JTkhFUklUKSB7XG5cdFx0XHRcdFx0Y29uc3QgdGltZWxpbmUgPSBuZXcgSW5oZXJpdFRpbWVsaW5lKGZyYW1lQ291bnQsIGJvbmVJbmRleCk7XG5cdFx0XHRcdFx0Zm9yIChsZXQgZnJhbWUgPSAwOyBmcmFtZSA8IGZyYW1lQ291bnQ7IGZyYW1lKyspIHtcblx0XHRcdFx0XHRcdHRpbWVsaW5lLnNldEZyYW1lKGZyYW1lLCBpbnB1dC5yZWFkRmxvYXQoKSwgaW5wdXQucmVhZEJ5dGUoKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBiZXppZXJDb3VudCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0XHRcdGNhc2UgQk9ORV9ST1RBVEU6IHJlYWRUaW1lbGluZShpbnB1dCwgdGltZWxpbmVzLCBuZXcgUm90YXRlVGltZWxpbmUoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIGJvbmVJbmRleCksIDEpOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIEJPTkVfVFJBTlNMQVRFOiByZWFkVGltZWxpbmUoaW5wdXQsIHRpbWVsaW5lcywgbmV3IFRyYW5zbGF0ZVRpbWVsaW5lKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBib25lSW5kZXgpLCBzY2FsZSk7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgQk9ORV9UUkFOU0xBVEVYOiByZWFkVGltZWxpbmUoaW5wdXQsIHRpbWVsaW5lcywgbmV3IFRyYW5zbGF0ZVhUaW1lbGluZShmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgYm9uZUluZGV4KSwgc2NhbGUpOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIEJPTkVfVFJBTlNMQVRFWTogcmVhZFRpbWVsaW5lKGlucHV0LCB0aW1lbGluZXMsIG5ldyBUcmFuc2xhdGVZVGltZWxpbmUoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIGJvbmVJbmRleCksIHNjYWxlKTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBCT05FX1NDQUxFOiByZWFkVGltZWxpbmUoaW5wdXQsIHRpbWVsaW5lcywgbmV3IFNjYWxlVGltZWxpbmUoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIGJvbmVJbmRleCksIDEpOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIEJPTkVfU0NBTEVYOiByZWFkVGltZWxpbmUoaW5wdXQsIHRpbWVsaW5lcywgbmV3IFNjYWxlWFRpbWVsaW5lKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBib25lSW5kZXgpLCAxKTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBCT05FX1NDQUxFWTogcmVhZFRpbWVsaW5lKGlucHV0LCB0aW1lbGluZXMsIG5ldyBTY2FsZVlUaW1lbGluZShmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgYm9uZUluZGV4KSwgMSk7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgQk9ORV9TSEVBUjogcmVhZFRpbWVsaW5lKGlucHV0LCB0aW1lbGluZXMsIG5ldyBTaGVhclRpbWVsaW5lKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBib25lSW5kZXgpLCAxKTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBCT05FX1NIRUFSWDogcmVhZFRpbWVsaW5lKGlucHV0LCB0aW1lbGluZXMsIG5ldyBTaGVhclhUaW1lbGluZShmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgYm9uZUluZGV4KSwgMSk7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgQk9ORV9TSEVBUlk6IHJlYWRUaW1lbGluZShpbnB1dCwgdGltZWxpbmVzLCBuZXcgU2hlYXJZVGltZWxpbmUoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIGJvbmVJbmRleCksIDEpOyBicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIElLIGNvbnN0cmFpbnQgdGltZWxpbmVzLlxuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gaW5wdXQucmVhZEludCh0cnVlKTsgaSA8IG47IGkrKykge1xuXHRcdFx0Y29uc3QgaW5kZXggPSBpbnB1dC5yZWFkSW50KHRydWUpLCBmcmFtZUNvdW50ID0gaW5wdXQucmVhZEludCh0cnVlKSwgZnJhbWVMYXN0ID0gZnJhbWVDb3VudCAtIDE7XG5cdFx0XHRjb25zdCB0aW1lbGluZSA9IG5ldyBJa0NvbnN0cmFpbnRUaW1lbGluZShmcmFtZUNvdW50LCBpbnB1dC5yZWFkSW50KHRydWUpLCBpbmRleCk7XG5cdFx0XHRsZXQgZmxhZ3MgPSBpbnB1dC5yZWFkQnl0ZSgpO1xuXHRcdFx0bGV0IHRpbWUgPSBpbnB1dC5yZWFkRmxvYXQoKSwgbWl4ID0gKGZsYWdzICYgMSkgIT09IDAgPyAoKGZsYWdzICYgMikgIT09IDAgPyBpbnB1dC5yZWFkRmxvYXQoKSA6IDEpIDogMDtcblx0XHRcdGxldCBzb2Z0bmVzcyA9IChmbGFncyAmIDQpICE9PSAwID8gaW5wdXQucmVhZEZsb2F0KCkgKiBzY2FsZSA6IDA7XG5cdFx0XHRmb3IgKGxldCBmcmFtZSA9IDAsIGJlemllciA9IDA7IDsgZnJhbWUrKykge1xuXHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgbWl4LCBzb2Z0bmVzcywgKGZsYWdzICYgOCkgIT09IDAgPyAxIDogLTEsIChmbGFncyAmIDE2KSAhPT0gMCwgKGZsYWdzICYgMzIpICE9PSAwKTtcblx0XHRcdFx0aWYgKGZyYW1lID09PSBmcmFtZUxhc3QpIGJyZWFrO1xuXHRcdFx0XHRmbGFncyA9IGlucHV0LnJlYWRCeXRlKCk7XG5cdFx0XHRcdGNvbnN0IHRpbWUyID0gaW5wdXQucmVhZEZsb2F0KCksIG1peDIgPSAoZmxhZ3MgJiAxKSAhPT0gMCA/ICgoZmxhZ3MgJiAyKSAhPT0gMCA/IGlucHV0LnJlYWRGbG9hdCgpIDogMSkgOiAwO1xuXHRcdFx0XHRjb25zdCBzb2Z0bmVzczIgPSAoZmxhZ3MgJiA0KSAhPT0gMCA/IGlucHV0LnJlYWRGbG9hdCgpICogc2NhbGUgOiAwO1xuXHRcdFx0XHRpZiAoKGZsYWdzICYgNjQpICE9PSAwKSB7XG5cdFx0XHRcdFx0dGltZWxpbmUuc2V0U3RlcHBlZChmcmFtZSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoKGZsYWdzICYgMTI4KSAhPT0gMCkge1xuXHRcdFx0XHRcdHNldEJlemllcihpbnB1dCwgdGltZWxpbmUsIGJlemllcisrLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIG1peCwgbWl4MiwgMSk7XG5cdFx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgc29mdG5lc3MsIHNvZnRuZXNzMiwgc2NhbGUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRpbWUgPSB0aW1lMjtcblx0XHRcdFx0bWl4ID0gbWl4Mjtcblx0XHRcdFx0c29mdG5lc3MgPSBzb2Z0bmVzczI7XG5cdFx0XHR9XG5cdFx0XHR0aW1lbGluZXMucHVzaCh0aW1lbGluZSk7XG5cdFx0fVxuXG5cdFx0Ly8gVHJhbnNmb3JtIGNvbnN0cmFpbnQgdGltZWxpbmVzLlxuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gaW5wdXQucmVhZEludCh0cnVlKTsgaSA8IG47IGkrKykge1xuXHRcdFx0Y29uc3QgaW5kZXggPSBpbnB1dC5yZWFkSW50KHRydWUpLCBmcmFtZUNvdW50ID0gaW5wdXQucmVhZEludCh0cnVlKSwgZnJhbWVMYXN0ID0gZnJhbWVDb3VudCAtIDE7XG5cdFx0XHRjb25zdCB0aW1lbGluZSA9IG5ldyBUcmFuc2Zvcm1Db25zdHJhaW50VGltZWxpbmUoZnJhbWVDb3VudCwgaW5wdXQucmVhZEludCh0cnVlKSwgaW5kZXgpO1xuXHRcdFx0bGV0IHRpbWUgPSBpbnB1dC5yZWFkRmxvYXQoKSwgbWl4Um90YXRlID0gaW5wdXQucmVhZEZsb2F0KCksIG1peFggPSBpbnB1dC5yZWFkRmxvYXQoKSwgbWl4WSA9IGlucHV0LnJlYWRGbG9hdCgpLFxuXHRcdFx0XHRtaXhTY2FsZVggPSBpbnB1dC5yZWFkRmxvYXQoKSwgbWl4U2NhbGVZID0gaW5wdXQucmVhZEZsb2F0KCksIG1peFNoZWFyWSA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0Zm9yIChsZXQgZnJhbWUgPSAwLCBiZXppZXIgPSAwOyA7IGZyYW1lKyspIHtcblx0XHRcdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIHRpbWUsIG1peFJvdGF0ZSwgbWl4WCwgbWl4WSwgbWl4U2NhbGVYLCBtaXhTY2FsZVksIG1peFNoZWFyWSk7XG5cdFx0XHRcdGlmIChmcmFtZSA9PT0gZnJhbWVMYXN0KSBicmVhaztcblx0XHRcdFx0Y29uc3QgdGltZTIgPSBpbnB1dC5yZWFkRmxvYXQoKSwgbWl4Um90YXRlMiA9IGlucHV0LnJlYWRGbG9hdCgpLCBtaXhYMiA9IGlucHV0LnJlYWRGbG9hdCgpLCBtaXhZMiA9IGlucHV0LnJlYWRGbG9hdCgpLFxuXHRcdFx0XHRcdG1peFNjYWxlWDIgPSBpbnB1dC5yZWFkRmxvYXQoKSwgbWl4U2NhbGVZMiA9IGlucHV0LnJlYWRGbG9hdCgpLCBtaXhTaGVhclkyID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdHN3aXRjaCAoaW5wdXQucmVhZEJ5dGUoKSkge1xuXHRcdFx0XHRcdGNhc2UgQ1VSVkVfU1RFUFBFRDpcblx0XHRcdFx0XHRcdHRpbWVsaW5lLnNldFN0ZXBwZWQoZnJhbWUpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBDVVJWRV9CRVpJRVI6XG5cdFx0XHRcdFx0XHRzZXRCZXppZXIoaW5wdXQsIHRpbWVsaW5lLCBiZXppZXIrKywgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCBtaXhSb3RhdGUsIG1peFJvdGF0ZTIsIDEpO1xuXHRcdFx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgbWl4WCwgbWl4WDIsIDEpO1xuXHRcdFx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCAyLCB0aW1lLCB0aW1lMiwgbWl4WSwgbWl4WTIsIDEpO1xuXHRcdFx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCAzLCB0aW1lLCB0aW1lMiwgbWl4U2NhbGVYLCBtaXhTY2FsZVgyLCAxKTtcblx0XHRcdFx0XHRcdHNldEJlemllcihpbnB1dCwgdGltZWxpbmUsIGJlemllcisrLCBmcmFtZSwgNCwgdGltZSwgdGltZTIsIG1peFNjYWxlWSwgbWl4U2NhbGVZMiwgMSk7XG5cdFx0XHRcdFx0XHRzZXRCZXppZXIoaW5wdXQsIHRpbWVsaW5lLCBiZXppZXIrKywgZnJhbWUsIDUsIHRpbWUsIHRpbWUyLCBtaXhTaGVhclksIG1peFNoZWFyWTIsIDEpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRpbWUgPSB0aW1lMjtcblx0XHRcdFx0bWl4Um90YXRlID0gbWl4Um90YXRlMjtcblx0XHRcdFx0bWl4WCA9IG1peFgyO1xuXHRcdFx0XHRtaXhZID0gbWl4WTI7XG5cdFx0XHRcdG1peFNjYWxlWCA9IG1peFNjYWxlWDI7XG5cdFx0XHRcdG1peFNjYWxlWSA9IG1peFNjYWxlWTI7XG5cdFx0XHRcdG1peFNoZWFyWSA9IG1peFNoZWFyWTI7XG5cdFx0XHR9XG5cdFx0XHR0aW1lbGluZXMucHVzaCh0aW1lbGluZSk7XG5cdFx0fVxuXG5cdFx0Ly8gUGF0aCBjb25zdHJhaW50IHRpbWVsaW5lcy5cblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7IGkgPCBuOyBpKyspIHtcblx0XHRcdGNvbnN0IGluZGV4ID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHRcdGNvbnN0IGRhdGEgPSBza2VsZXRvbkRhdGEuY29uc3RyYWludHNbaW5kZXhdIGFzIFBhdGhDb25zdHJhaW50RGF0YTtcblx0XHRcdGZvciAobGV0IGlpID0gMCwgbm4gPSBpbnB1dC5yZWFkSW50KHRydWUpOyBpaSA8IG5uOyBpaSsrKSB7XG5cdFx0XHRcdGNvbnN0IHR5cGUgPSBpbnB1dC5yZWFkQnl0ZSgpLCBmcmFtZUNvdW50ID0gaW5wdXQucmVhZEludCh0cnVlKSwgYmV6aWVyQ291bnQgPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0XHRzd2l0Y2ggKHR5cGUpIHtcblx0XHRcdFx0XHRjYXNlIFBBVEhfUE9TSVRJT046XG5cdFx0XHRcdFx0XHRyZWFkVGltZWxpbmUoaW5wdXQsIHRpbWVsaW5lcywgbmV3IFBhdGhDb25zdHJhaW50UG9zaXRpb25UaW1lbGluZShmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgaW5kZXgpLFxuXHRcdFx0XHRcdFx0XHRkYXRhLnBvc2l0aW9uTW9kZSA9PT0gUG9zaXRpb25Nb2RlLkZpeGVkID8gc2NhbGUgOiAxKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgUEFUSF9TUEFDSU5HOlxuXHRcdFx0XHRcdFx0cmVhZFRpbWVsaW5lKGlucHV0LCB0aW1lbGluZXMsIG5ldyBQYXRoQ29uc3RyYWludFNwYWNpbmdUaW1lbGluZShmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgaW5kZXgpLFxuXHRcdFx0XHRcdFx0XHRkYXRhLnNwYWNpbmdNb2RlID09PSBTcGFjaW5nTW9kZS5MZW5ndGggfHwgZGF0YS5zcGFjaW5nTW9kZSA9PT0gU3BhY2luZ01vZGUuRml4ZWQgPyBzY2FsZSA6IDEpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBQQVRIX01JWDoge1xuXHRcdFx0XHRcdFx0Y29uc3QgdGltZWxpbmUgPSBuZXcgUGF0aENvbnN0cmFpbnRNaXhUaW1lbGluZShmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgaW5kZXgpO1xuXHRcdFx0XHRcdFx0bGV0IHRpbWUgPSBpbnB1dC5yZWFkRmxvYXQoKSwgbWl4Um90YXRlID0gaW5wdXQucmVhZEZsb2F0KCksIG1peFggPSBpbnB1dC5yZWFkRmxvYXQoKSwgbWl4WSA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdFx0Zm9yIChsZXQgZnJhbWUgPSAwLCBiZXppZXIgPSAwLCBmcmFtZUxhc3QgPSB0aW1lbGluZS5nZXRGcmFtZUNvdW50KCkgLSAxOyA7IGZyYW1lKyspIHtcblx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIHRpbWUsIG1peFJvdGF0ZSwgbWl4WCwgbWl4WSk7XG5cdFx0XHRcdFx0XHRcdGlmIChmcmFtZSA9PT0gZnJhbWVMYXN0KSBicmVhaztcblx0XHRcdFx0XHRcdFx0Y29uc3QgdGltZTIgPSBpbnB1dC5yZWFkRmxvYXQoKSwgbWl4Um90YXRlMiA9IGlucHV0LnJlYWRGbG9hdCgpLCBtaXhYMiA9IGlucHV0LnJlYWRGbG9hdCgpLFxuXHRcdFx0XHRcdFx0XHRcdG1peFkyID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0XHRcdHN3aXRjaCAoaW5wdXQucmVhZEJ5dGUoKSkge1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgQ1VSVkVfU1RFUFBFRDpcblx0XHRcdFx0XHRcdFx0XHRcdHRpbWVsaW5lLnNldFN0ZXBwZWQoZnJhbWUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBDVVJWRV9CRVpJRVI6XG5cdFx0XHRcdFx0XHRcdFx0XHRzZXRCZXppZXIoaW5wdXQsIHRpbWVsaW5lLCBiZXppZXIrKywgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCBtaXhSb3RhdGUsIG1peFJvdGF0ZTIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgbWl4WCwgbWl4WDIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCAyLCB0aW1lLCB0aW1lMiwgbWl4WSwgbWl4WTIsIDEpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHRpbWUgPSB0aW1lMjtcblx0XHRcdFx0XHRcdFx0bWl4Um90YXRlID0gbWl4Um90YXRlMjtcblx0XHRcdFx0XHRcdFx0bWl4WCA9IG1peFgyO1xuXHRcdFx0XHRcdFx0XHRtaXhZID0gbWl4WTI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aW1lbGluZXMucHVzaCh0aW1lbGluZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gUGh5c2ljcyB0aW1lbGluZXMuXG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBpbnB1dC5yZWFkSW50KHRydWUpOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRjb25zdCBpbmRleCA9IGlucHV0LnJlYWRJbnQodHJ1ZSkgLSAxO1xuXHRcdFx0Zm9yIChsZXQgaWkgPSAwLCBubiA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7IGlpIDwgbm47IGlpKyspIHtcblx0XHRcdFx0Y29uc3QgdHlwZSA9IGlucHV0LnJlYWRCeXRlKCksIGZyYW1lQ291bnQgPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0XHRpZiAodHlwZSA9PT0gUEhZU0lDU19SRVNFVCkge1xuXHRcdFx0XHRcdGNvbnN0IHRpbWVsaW5lID0gbmV3IFBoeXNpY3NDb25zdHJhaW50UmVzZXRUaW1lbGluZShmcmFtZUNvdW50LCBpbmRleCk7XG5cdFx0XHRcdFx0Zm9yIChsZXQgZnJhbWUgPSAwOyBmcmFtZSA8IGZyYW1lQ291bnQ7IGZyYW1lKyspXG5cdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgaW5wdXQucmVhZEZsb2F0KCkpO1xuXHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBiZXppZXJDb3VudCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0XHRcdGNhc2UgUEhZU0lDU19JTkVSVElBOiByZWFkVGltZWxpbmUoaW5wdXQsIHRpbWVsaW5lcywgbmV3IFBoeXNpY3NDb25zdHJhaW50SW5lcnRpYVRpbWVsaW5lKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBpbmRleCksIDEpOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIFBIWVNJQ1NfU1RSRU5HVEg6IHJlYWRUaW1lbGluZShpbnB1dCwgdGltZWxpbmVzLCBuZXcgUGh5c2ljc0NvbnN0cmFpbnRTdHJlbmd0aFRpbWVsaW5lKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBpbmRleCksIDEpOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIFBIWVNJQ1NfREFNUElORzogcmVhZFRpbWVsaW5lKGlucHV0LCB0aW1lbGluZXMsIG5ldyBQaHlzaWNzQ29uc3RyYWludERhbXBpbmdUaW1lbGluZShmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgaW5kZXgpLCAxKTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBQSFlTSUNTX01BU1M6IHJlYWRUaW1lbGluZShpbnB1dCwgdGltZWxpbmVzLCBuZXcgUGh5c2ljc0NvbnN0cmFpbnRNYXNzVGltZWxpbmUoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIGluZGV4KSwgMSk7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgUEhZU0lDU19XSU5EOiByZWFkVGltZWxpbmUoaW5wdXQsIHRpbWVsaW5lcywgbmV3IFBoeXNpY3NDb25zdHJhaW50V2luZFRpbWVsaW5lKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBpbmRleCksIDEpOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIFBIWVNJQ1NfR1JBVklUWTogcmVhZFRpbWVsaW5lKGlucHV0LCB0aW1lbGluZXMsIG5ldyBQaHlzaWNzQ29uc3RyYWludEdyYXZpdHlUaW1lbGluZShmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgaW5kZXgpLCAxKTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBQSFlTSUNTX01JWDogcmVhZFRpbWVsaW5lKGlucHV0LCB0aW1lbGluZXMsIG5ldyBQaHlzaWNzQ29uc3RyYWludE1peFRpbWVsaW5lKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBpbmRleCksIDEpOyBicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIHBoeXNpY3MgdGltZWxpbmUgdHlwZS5cIik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBTbGlkZXIgdGltZWxpbmVzLlxuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gaW5wdXQucmVhZEludCh0cnVlKTsgaSA8IG47IGkrKykge1xuXHRcdFx0Y29uc3QgaW5kZXggPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0Zm9yIChsZXQgaWkgPSAwLCBubiA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7IGlpIDwgbm47IGlpKyspIHtcblx0XHRcdFx0Y29uc3QgdHlwZSA9IGlucHV0LnJlYWRCeXRlKCksIGZyYW1lQ291bnQgPSBpbnB1dC5yZWFkSW50KHRydWUpLCBiZXppZXJDb3VudCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0XHRcdGNhc2UgU0xJREVSX1RJTUU6IHJlYWRUaW1lbGluZShpbnB1dCwgdGltZWxpbmVzLCBuZXcgU2xpZGVyVGltZWxpbmUoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIGluZGV4KSwgMSk7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgU0xJREVSX01JWDogcmVhZFRpbWVsaW5lKGlucHV0LCB0aW1lbGluZXMsIG5ldyBTbGlkZXJNaXhUaW1lbGluZShmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgaW5kZXgpLCAxKTsgYnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKGBVa25vd24gc2xpZGVyIHR5cGU6ICR7dHlwZX1gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQXR0YWNobWVudCB0aW1lbGluZXMuXG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBpbnB1dC5yZWFkSW50KHRydWUpOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRjb25zdCBza2luID0gc2tlbGV0b25EYXRhLnNraW5zW2lucHV0LnJlYWRJbnQodHJ1ZSldO1xuXHRcdFx0Zm9yIChsZXQgaWkgPSAwLCBubiA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7IGlpIDwgbm47IGlpKyspIHtcblx0XHRcdFx0Y29uc3Qgc2xvdEluZGV4ID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHRcdFx0Zm9yIChsZXQgaWlpID0gMCwgbm5uID0gaW5wdXQucmVhZEludCh0cnVlKTsgaWlpIDwgbm5uOyBpaWkrKykge1xuXHRcdFx0XHRcdGNvbnN0IGF0dGFjaG1lbnROYW1lID0gaW5wdXQucmVhZFN0cmluZ1JlZigpO1xuXHRcdFx0XHRcdGlmICghYXR0YWNobWVudE5hbWUpIHRocm93IG5ldyBFcnJvcihcImF0dGFjaG1lbnROYW1lIG11c3Qgbm90IGJlIG51bGwuXCIpO1xuXHRcdFx0XHRcdGNvbnN0IGF0dGFjaG1lbnQgPSBza2luLmdldEF0dGFjaG1lbnQoc2xvdEluZGV4LCBhdHRhY2htZW50TmFtZSk7XG5cdFx0XHRcdFx0Y29uc3QgdGltZWxpbmVUeXBlID0gaW5wdXQucmVhZEJ5dGUoKTtcblx0XHRcdFx0XHRjb25zdCBmcmFtZUNvdW50ID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHRcdFx0XHRjb25zdCBmcmFtZUxhc3QgPSBmcmFtZUNvdW50IC0gMTtcblxuXHRcdFx0XHRcdHN3aXRjaCAodGltZWxpbmVUeXBlKSB7XG5cdFx0XHRcdFx0XHRjYXNlIEFUVEFDSE1FTlRfREVGT1JNOiB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHZlcnRleEF0dGFjaG1lbnQgPSBhdHRhY2htZW50IGFzIFZlcnRleEF0dGFjaG1lbnQ7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHdlaWdodGVkID0gdmVydGV4QXR0YWNobWVudC5ib25lcztcblx0XHRcdFx0XHRcdFx0Y29uc3QgdmVydGljZXMgPSB2ZXJ0ZXhBdHRhY2htZW50LnZlcnRpY2VzO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBkZWZvcm1MZW5ndGggPSB3ZWlnaHRlZCA/IHZlcnRpY2VzLmxlbmd0aCAvIDMgKiAyIDogdmVydGljZXMubGVuZ3RoO1xuXG5cblx0XHRcdFx0XHRcdFx0Y29uc3QgYmV6aWVyQ291bnQgPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCB0aW1lbGluZSA9IG5ldyBEZWZvcm1UaW1lbGluZShmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgc2xvdEluZGV4LCB2ZXJ0ZXhBdHRhY2htZW50KTtcblxuXHRcdFx0XHRcdFx0XHRsZXQgdGltZSA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDAsIGJlemllciA9IDA7IDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHRcdGxldCBkZWZvcm06IE51bWJlckFycmF5TGlrZTtcblx0XHRcdFx0XHRcdFx0XHRsZXQgZW5kID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoZW5kID09PSAwKVxuXHRcdFx0XHRcdFx0XHRcdFx0ZGVmb3JtID0gd2VpZ2h0ZWQgPyBVdGlscy5uZXdGbG9hdEFycmF5KGRlZm9ybUxlbmd0aCkgOiB2ZXJ0aWNlcztcblx0XHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdGRlZm9ybSA9IFV0aWxzLm5ld0Zsb2F0QXJyYXkoZGVmb3JtTGVuZ3RoKTtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHN0YXJ0ID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHRcdFx0XHRcdFx0XHRcdGVuZCArPSBzdGFydDtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChzY2FsZSA9PT0gMSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKGxldCB2ID0gc3RhcnQ7IHYgPCBlbmQ7IHYrKylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZWZvcm1bdl0gPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAobGV0IHYgPSBzdGFydDsgdiA8IGVuZDsgdisrKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlZm9ybVt2XSA9IGlucHV0LnJlYWRGbG9hdCgpICogc2NhbGU7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXdlaWdodGVkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAobGV0IHYgPSAwLCB2biA9IGRlZm9ybS5sZW5ndGg7IHYgPCB2bjsgdisrKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlZm9ybVt2XSArPSB2ZXJ0aWNlc1t2XTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgZGVmb3JtKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoZnJhbWUgPT09IGZyYW1lTGFzdCkgYnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgdGltZTIgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKGlucHV0LnJlYWRCeXRlKCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgQ1VSVkVfU1RFUFBFRDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0U3RlcHBlZChmcmFtZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSBDVVJWRV9CRVpJRVI6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHNldEJlemllcihpbnB1dCwgdGltZWxpbmUsIGJlemllcisrLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIDAsIDEsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR0aW1lID0gdGltZTI7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGNhc2UgQVRUQUNITUVOVF9TRVFVRU5DRToge1xuXHRcdFx0XHRcdFx0XHRjb25zdCB0aW1lbGluZSA9IG5ldyBTZXF1ZW5jZVRpbWVsaW5lKGZyYW1lQ291bnQsIHNsb3RJbmRleCwgYXR0YWNobWVudCBhcyBBdHRhY2htZW50KTtcblx0XHRcdFx0XHRcdFx0Zm9yIChsZXQgZnJhbWUgPSAwOyBmcmFtZSA8IGZyYW1lQ291bnQ7IGZyYW1lKyspIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCB0aW1lID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgbW9kZUFuZEluZGV4ID0gaW5wdXQucmVhZEludDMyKCk7XG5cdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIHRpbWUsIFNlcXVlbmNlTW9kZVZhbHVlc1ttb2RlQW5kSW5kZXggJiAweGZdLCBtb2RlQW5kSW5kZXggPj4gNCxcblx0XHRcdFx0XHRcdFx0XHRcdGlucHV0LnJlYWRGbG9hdCgpKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR0aW1lbGluZXMucHVzaCh0aW1lbGluZSk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIERyYXcgb3JkZXIgdGltZWxpbmUuXG5cdFx0Y29uc3Qgc2xvdENvdW50ID0gc2tlbGV0b25EYXRhLnNsb3RzLmxlbmd0aDtcblx0XHRjb25zdCBkcmF3T3JkZXJDb3VudCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0aWYgKGRyYXdPcmRlckNvdW50ID4gMCkge1xuXHRcdFx0Y29uc3QgdGltZWxpbmUgPSBuZXcgRHJhd09yZGVyVGltZWxpbmUoZHJhd09yZGVyQ291bnQpO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBkcmF3T3JkZXJDb3VudDsgaSsrKVxuXHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShpLCBpbnB1dC5yZWFkRmxvYXQoKSwgcmVhZERyYXdPcmRlcihpbnB1dCwgc2xvdENvdW50KSk7XG5cdFx0XHR0aW1lbGluZXMucHVzaCh0aW1lbGluZSk7XG5cdFx0fVxuXG5cdFx0Ly8gRHJhdyBvcmRlciBmb2xkZXIgdGltZWxpbmVzLlxuXHRcdGNvbnN0IGZvbGRlckNvdW50ID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGZvbGRlckNvdW50OyBpKyspIHtcblx0XHRcdGNvbnN0IGZvbGRlclNsb3RDb3VudCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRjb25zdCBmb2xkZXJTbG90cyA9IG5ldyBBcnJheTxudW1iZXI+KGZvbGRlclNsb3RDb3VudCk7XG5cdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgZm9sZGVyU2xvdENvdW50OyBpaSsrKVxuXHRcdFx0XHRmb2xkZXJTbG90c1tpaV0gPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0Y29uc3Qga2V5Q291bnQgPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0Y29uc3QgdGltZWxpbmUgPSBuZXcgRHJhd09yZGVyRm9sZGVyVGltZWxpbmUoa2V5Q291bnQsIGZvbGRlclNsb3RzLCBzbG90Q291bnQpO1xuXHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IGtleUNvdW50OyBpaSsrKVxuXHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShpaSwgaW5wdXQucmVhZEZsb2F0KCksIHJlYWREcmF3T3JkZXIoaW5wdXQsIGZvbGRlclNsb3RDb3VudCkpO1xuXHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdH1cblxuXHRcdC8vIEV2ZW50IHRpbWVsaW5lLlxuXHRcdGNvbnN0IGV2ZW50Q291bnQgPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdGlmIChldmVudENvdW50ID4gMCkge1xuXHRcdFx0Y29uc3QgdGltZWxpbmUgPSBuZXcgRXZlbnRUaW1lbGluZShldmVudENvdW50KTtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZXZlbnRDb3VudDsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IHRpbWUgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0Y29uc3QgZXZlbnREYXRhID0gc2tlbGV0b25EYXRhLmV2ZW50c1tpbnB1dC5yZWFkSW50KHRydWUpXTtcblx0XHRcdFx0Y29uc3QgZXZlbnQgPSBuZXcgRXZlbnQodGltZSwgZXZlbnREYXRhKTtcblx0XHRcdFx0ZXZlbnQuaW50VmFsdWUgPSBpbnB1dC5yZWFkSW50KGZhbHNlKTtcblx0XHRcdFx0ZXZlbnQuZmxvYXRWYWx1ZSA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRldmVudC5zdHJpbmdWYWx1ZSA9IGlucHV0LnJlYWRTdHJpbmcoKTtcblx0XHRcdFx0aWYgKGV2ZW50LnN0cmluZ1ZhbHVlID09IG51bGwpIGV2ZW50LnN0cmluZ1ZhbHVlID0gZXZlbnREYXRhLnNldHVwUG9zZS5zdHJpbmdWYWx1ZTtcblx0XHRcdFx0aWYgKGV2ZW50LmRhdGEuYXVkaW9QYXRoKSB7XG5cdFx0XHRcdFx0ZXZlbnQudm9sdW1lID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0ZXZlbnQuYmFsYW5jZSA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRpbWVsaW5lLnNldEZyYW1lKGksIGV2ZW50KTtcblx0XHRcdH1cblx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHR9XG5cblx0XHRsZXQgZHVyYXRpb24gPSAwO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gdGltZWxpbmVzLmxlbmd0aDsgaSA8IG47IGkrKylcblx0XHRcdGR1cmF0aW9uID0gTWF0aC5tYXgoZHVyYXRpb24sIHRpbWVsaW5lc1tpXS5nZXREdXJhdGlvbigpKTtcblx0XHRjb25zdCBhbmltYXRpb24gPSBuZXcgQW5pbWF0aW9uKG5hbWUsIHRpbWVsaW5lcywgZHVyYXRpb24pO1xuXHRcdGlmIChub25lc3NlbnRpYWwpIENvbG9yLnJnYmE4ODg4VG9Db2xvcihhbmltYXRpb24uY29sb3IsIGlucHV0LnJlYWRJbnQzMigpKTtcblx0XHRyZXR1cm4gYW5pbWF0aW9uO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBCaW5hcnlJbnB1dCB7XG5cdGNvbnN0cnVjdG9yIChkYXRhOiBVaW50OEFycmF5IHwgQXJyYXlCdWZmZXIsIHB1YmxpYyBzdHJpbmdzID0gW10gYXMgc3RyaW5nW10sIHByaXZhdGUgaW5kZXg6IG51bWJlciA9IDAsIHByaXZhdGUgYnVmZmVyOiBEYXRhVmlldyA9IG5ldyBEYXRhVmlldyhkYXRhIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIgPyBkYXRhIDogZGF0YS5idWZmZXIpKSB7XG5cdH1cblxuXHRyZWFkQnl0ZSAoKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5idWZmZXIuZ2V0SW50OCh0aGlzLmluZGV4KyspO1xuXHR9XG5cblx0cmVhZFVuc2lnbmVkQnl0ZSAoKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5idWZmZXIuZ2V0VWludDgodGhpcy5pbmRleCsrKTtcblx0fVxuXG5cdHJlYWRTaG9ydCAoKTogbnVtYmVyIHtcblx0XHRjb25zdCB2YWx1ZSA9IHRoaXMuYnVmZmVyLmdldEludDE2KHRoaXMuaW5kZXgpO1xuXHRcdHRoaXMuaW5kZXggKz0gMjtcblx0XHRyZXR1cm4gdmFsdWU7XG5cdH1cblxuXHRyZWFkSW50MzIgKCk6IG51bWJlciB7XG5cdFx0Y29uc3QgdmFsdWUgPSB0aGlzLmJ1ZmZlci5nZXRJbnQzMih0aGlzLmluZGV4KVxuXHRcdHRoaXMuaW5kZXggKz0gNDtcblx0XHRyZXR1cm4gdmFsdWU7XG5cdH1cblxuXHRyZWFkSW50IChvcHRpbWl6ZVBvc2l0aXZlOiBib29sZWFuKSB7XG5cdFx0bGV0IGIgPSB0aGlzLnJlYWRCeXRlKCk7XG5cdFx0bGV0IHJlc3VsdCA9IGIgJiAweDdGO1xuXHRcdGlmICgoYiAmIDB4ODApICE9PSAwKSB7XG5cdFx0XHRiID0gdGhpcy5yZWFkQnl0ZSgpO1xuXHRcdFx0cmVzdWx0IHw9IChiICYgMHg3RikgPDwgNztcblx0XHRcdGlmICgoYiAmIDB4ODApICE9PSAwKSB7XG5cdFx0XHRcdGIgPSB0aGlzLnJlYWRCeXRlKCk7XG5cdFx0XHRcdHJlc3VsdCB8PSAoYiAmIDB4N0YpIDw8IDE0O1xuXHRcdFx0XHRpZiAoKGIgJiAweDgwKSAhPT0gMCkge1xuXHRcdFx0XHRcdGIgPSB0aGlzLnJlYWRCeXRlKCk7XG5cdFx0XHRcdFx0cmVzdWx0IHw9IChiICYgMHg3RikgPDwgMjE7XG5cdFx0XHRcdFx0aWYgKChiICYgMHg4MCkgIT09IDApIHtcblx0XHRcdFx0XHRcdGIgPSB0aGlzLnJlYWRCeXRlKCk7XG5cdFx0XHRcdFx0XHRyZXN1bHQgfD0gKGIgJiAweDdGKSA8PCAyODtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG9wdGltaXplUG9zaXRpdmUgPyByZXN1bHQgOiAoKHJlc3VsdCA+Pj4gMSkgXiAtKHJlc3VsdCAmIDEpKTtcblx0fVxuXG5cdHJlYWRTdHJpbmdSZWYgKCk6IHN0cmluZyB8IG51bGwge1xuXHRcdGNvbnN0IGluZGV4ID0gdGhpcy5yZWFkSW50KHRydWUpO1xuXHRcdHJldHVybiBpbmRleCA9PT0gMCA/IG51bGwgOiB0aGlzLnN0cmluZ3NbaW5kZXggLSAxXTtcblx0fVxuXG5cdHJlYWRTdHJpbmcgKCk6IHN0cmluZyB8IG51bGwge1xuXHRcdGxldCBieXRlQ291bnQgPSB0aGlzLnJlYWRJbnQodHJ1ZSk7XG5cdFx0c3dpdGNoIChieXRlQ291bnQpIHtcblx0XHRcdGNhc2UgMDpcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHRjYXNlIDE6XG5cdFx0XHRcdHJldHVybiBcIlwiO1xuXHRcdH1cblx0XHRieXRlQ291bnQtLTtcblx0XHRsZXQgY2hhcnMgPSBcIlwiO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZUNvdW50Oykge1xuXHRcdFx0Y29uc3QgYiA9IHRoaXMucmVhZFVuc2lnbmVkQnl0ZSgpO1xuXHRcdFx0c3dpdGNoIChiID4+IDQpIHtcblx0XHRcdFx0Y2FzZSAxMjpcblx0XHRcdFx0Y2FzZSAxMzpcblx0XHRcdFx0XHRjaGFycyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoYiAmIDB4MUYpIDw8IDYgfCB0aGlzLnJlYWRCeXRlKCkgJiAweDNGKSk7XG5cdFx0XHRcdFx0aSArPSAyO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDE0OlxuXHRcdFx0XHRcdGNoYXJzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKChiICYgMHgwRikgPDwgMTIgfCAodGhpcy5yZWFkQnl0ZSgpICYgMHgzRikgPDwgNiB8IHRoaXMucmVhZEJ5dGUoKSAmIDB4M0YpKTtcblx0XHRcdFx0XHRpICs9IDM7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0Y2hhcnMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShiKTtcblx0XHRcdFx0XHRpKys7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBjaGFycztcblx0fVxuXG5cdHJlYWRGbG9hdCAoKTogbnVtYmVyIHtcblx0XHRjb25zdCB2YWx1ZSA9IHRoaXMuYnVmZmVyLmdldEZsb2F0MzIodGhpcy5pbmRleCk7XG5cdFx0dGhpcy5pbmRleCArPSA0O1xuXHRcdHJldHVybiB2YWx1ZTtcblx0fVxuXG5cdHJlYWRCb29sZWFuICgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5yZWFkQnl0ZSgpICE9PSAwO1xuXHR9XG59XG5cbmNsYXNzIExpbmtlZE1lc2gge1xuXHRzb3VyY2U6IHN0cmluZyB8IG51bGw7XG5cdHNraW5JbmRleDogbnVtYmVyOyBzbG90SW5kZXg6IG51bWJlcjsgc291cmNlSW5kZXg6IG51bWJlclxuXHRtZXNoOiBNZXNoQXR0YWNobWVudDtcblx0aW5oZXJpdFRpbWVsaW5lczogYm9vbGVhbjtcblxuXHRjb25zdHJ1Y3RvciAobWVzaDogTWVzaEF0dGFjaG1lbnQsIHNraW5JbmRleDogbnVtYmVyLCBzbG90SW5kZXg6IG51bWJlciwgc291cmNlSW5kZXg6IG51bWJlciwgc291cmNlOiBzdHJpbmcgfCBudWxsLFxuXHRcdGluaGVyaXRUaW1lbGluZXM6IGJvb2xlYW4pIHtcblx0XHR0aGlzLm1lc2ggPSBtZXNoO1xuXHRcdHRoaXMuc2tpbkluZGV4ID0gc2tpbkluZGV4O1xuXHRcdHRoaXMuc2xvdEluZGV4ID0gc2xvdEluZGV4O1xuXHRcdHRoaXMuc291cmNlSW5kZXggPSBzb3VyY2VJbmRleDtcblx0XHR0aGlzLnNvdXJjZSA9IHNvdXJjZTtcblx0XHR0aGlzLmluaGVyaXRUaW1lbGluZXMgPSBpbmhlcml0VGltZWxpbmVzO1xuXHR9XG59XG5cbmNsYXNzIFZlcnRpY2VzIHtcblx0Y29uc3RydWN0b3IgKHB1YmxpYyBib25lczogQXJyYXk8bnVtYmVyPiB8IG51bGwgPSBudWxsLCBwdWJsaWMgdmVydGljZXM6IEFycmF5PG51bWJlcj4gfCBGbG9hdDMyQXJyYXksIHB1YmxpYyBsZW5ndGg6IG51bWJlciA9IDApIHsgfVxufVxuXG5lbnVtIEF0dGFjaG1lbnRUeXBlIHsgUmVnaW9uLCBCb3VuZGluZ0JveCwgTWVzaCwgTGlua2VkTWVzaCwgUGF0aCwgUG9pbnQsIENsaXBwaW5nIH1cblxuZnVuY3Rpb24gcmVhZFRpbWVsaW5lIChpbnB1dDogQmluYXJ5SW5wdXQsIHRpbWVsaW5lczogQXJyYXk8VGltZWxpbmU+LCB0aW1lbGluZTogQ3VydmVUaW1lbGluZTEsIHNjYWxlOiBudW1iZXIpOiB2b2lkO1xuZnVuY3Rpb24gcmVhZFRpbWVsaW5lIChpbnB1dDogQmluYXJ5SW5wdXQsIHRpbWVsaW5lczogQXJyYXk8VGltZWxpbmU+LCB0aW1lbGluZTogQm9uZVRpbWVsaW5lMiwgc2NhbGU6IG51bWJlcik6IHZvaWQ7XG5mdW5jdGlvbiByZWFkVGltZWxpbmUgKGlucHV0OiBCaW5hcnlJbnB1dCwgdGltZWxpbmVzOiBBcnJheTxUaW1lbGluZT4sIHRpbWVsaW5lOiBDdXJ2ZVRpbWVsaW5lMSB8IEJvbmVUaW1lbGluZTIsIHNjYWxlOiBudW1iZXIpOiB2b2lkIHtcblx0aWYgKHRpbWVsaW5lIGluc3RhbmNlb2YgQ3VydmVUaW1lbGluZTEpXG5cdFx0cmVhZFRpbWVsaW5lMShpbnB1dCwgdGltZWxpbmVzLCB0aW1lbGluZSwgc2NhbGUpO1xuXHRlbHNlXG5cdFx0cmVhZFRpbWVsaW5lMihpbnB1dCwgdGltZWxpbmVzLCB0aW1lbGluZSwgc2NhbGUpO1xufVxuXG5mdW5jdGlvbiByZWFkVGltZWxpbmUxIChpbnB1dDogQmluYXJ5SW5wdXQsIHRpbWVsaW5lczogQXJyYXk8VGltZWxpbmU+LCB0aW1lbGluZTogQ3VydmVUaW1lbGluZTEsIHNjYWxlOiBudW1iZXIpOiB2b2lkIHtcblx0bGV0IHRpbWUgPSBpbnB1dC5yZWFkRmxvYXQoKSwgdmFsdWUgPSBpbnB1dC5yZWFkRmxvYXQoKSAqIHNjYWxlO1xuXHRmb3IgKGxldCBmcmFtZSA9IDAsIGJlemllciA9IDAsIGZyYW1lTGFzdCA9IHRpbWVsaW5lLmdldEZyYW1lQ291bnQoKSAtIDE7IDsgZnJhbWUrKykge1xuXHRcdHRpbWVsaW5lLnNldEZyYW1lKGZyYW1lLCB0aW1lLCB2YWx1ZSk7XG5cdFx0aWYgKGZyYW1lID09PSBmcmFtZUxhc3QpIGJyZWFrO1xuXHRcdGNvbnN0IHRpbWUyID0gaW5wdXQucmVhZEZsb2F0KCksIHZhbHVlMiA9IGlucHV0LnJlYWRGbG9hdCgpICogc2NhbGU7XG5cdFx0c3dpdGNoIChpbnB1dC5yZWFkQnl0ZSgpKSB7XG5cdFx0XHRjYXNlIENVUlZFX1NURVBQRUQ6XG5cdFx0XHRcdHRpbWVsaW5lLnNldFN0ZXBwZWQoZnJhbWUpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgQ1VSVkVfQkVaSUVSOlxuXHRcdFx0XHRzZXRCZXppZXIoaW5wdXQsIHRpbWVsaW5lLCBiZXppZXIrKywgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCB2YWx1ZSwgdmFsdWUyLCBzY2FsZSk7XG5cdFx0fVxuXHRcdHRpbWUgPSB0aW1lMjtcblx0XHR2YWx1ZSA9IHZhbHVlMjtcblx0fVxuXHR0aW1lbGluZXMucHVzaCh0aW1lbGluZSk7XG59XG5cbmZ1bmN0aW9uIHJlYWRUaW1lbGluZTIgKGlucHV0OiBCaW5hcnlJbnB1dCwgdGltZWxpbmVzOiBBcnJheTxUaW1lbGluZT4sIHRpbWVsaW5lOiBCb25lVGltZWxpbmUyLCBzY2FsZTogbnVtYmVyKTogdm9pZCB7XG5cdGxldCB0aW1lID0gaW5wdXQucmVhZEZsb2F0KCksIHZhbHVlMSA9IGlucHV0LnJlYWRGbG9hdCgpICogc2NhbGUsIHZhbHVlMiA9IGlucHV0LnJlYWRGbG9hdCgpICogc2NhbGU7XG5cdGZvciAobGV0IGZyYW1lID0gMCwgYmV6aWVyID0gMCwgZnJhbWVMYXN0ID0gdGltZWxpbmUuZ2V0RnJhbWVDb3VudCgpIC0gMTsgOyBmcmFtZSsrKSB7XG5cdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIHRpbWUsIHZhbHVlMSwgdmFsdWUyKTtcblx0XHRpZiAoZnJhbWUgPT09IGZyYW1lTGFzdCkgYnJlYWs7XG5cdFx0Y29uc3QgdGltZTIgPSBpbnB1dC5yZWFkRmxvYXQoKSwgbnZhbHVlMSA9IGlucHV0LnJlYWRGbG9hdCgpICogc2NhbGUsIG52YWx1ZTIgPSBpbnB1dC5yZWFkRmxvYXQoKSAqIHNjYWxlO1xuXHRcdHN3aXRjaCAoaW5wdXQucmVhZEJ5dGUoKSkge1xuXHRcdFx0Y2FzZSBDVVJWRV9TVEVQUEVEOlxuXHRcdFx0XHR0aW1lbGluZS5zZXRTdGVwcGVkKGZyYW1lKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIENVUlZFX0JFWklFUjpcblx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCAwLCB0aW1lLCB0aW1lMiwgdmFsdWUxLCBudmFsdWUxLCBzY2FsZSk7XG5cdFx0XHRcdHNldEJlemllcihpbnB1dCwgdGltZWxpbmUsIGJlemllcisrLCBmcmFtZSwgMSwgdGltZSwgdGltZTIsIHZhbHVlMiwgbnZhbHVlMiwgc2NhbGUpO1xuXHRcdH1cblx0XHR0aW1lID0gdGltZTI7XG5cdFx0dmFsdWUxID0gbnZhbHVlMTtcblx0XHR2YWx1ZTIgPSBudmFsdWUyO1xuXHR9XG5cdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcbn1cblxuZnVuY3Rpb24gcmVhZERyYXdPcmRlciAoaW5wdXQ6IEJpbmFyeUlucHV0LCBzbG90Q291bnQ6IG51bWJlcik6IG51bWJlcltdIHwgbnVsbCB7XG5cdGNvbnN0IGNoYW5nZUNvdW50ID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0aWYgKGNoYW5nZUNvdW50ID09PSAwKSByZXR1cm4gbnVsbDtcblx0Y29uc3QgZHJhd09yZGVyID0gbmV3IEFycmF5PG51bWJlcj4oc2xvdENvdW50KS5maWxsKC0xKTtcblx0Y29uc3QgdW5jaGFuZ2VkID0gbmV3IEFycmF5PG51bWJlcj4oc2xvdENvdW50IC0gY2hhbmdlQ291bnQpO1xuXHRsZXQgb3JpZ2luYWxJbmRleCA9IDAsIHVuY2hhbmdlZEluZGV4ID0gMDtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VDb3VudDsgaSsrKSB7XG5cdFx0Y29uc3Qgc2xvdEluZGV4ID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHQvLyBDb2xsZWN0IHVuY2hhbmdlZCBpdGVtcy5cblx0XHR3aGlsZSAob3JpZ2luYWxJbmRleCAhPT0gc2xvdEluZGV4KVxuXHRcdFx0dW5jaGFuZ2VkW3VuY2hhbmdlZEluZGV4KytdID0gb3JpZ2luYWxJbmRleCsrO1xuXHRcdC8vIFNldCBjaGFuZ2VkIGl0ZW1zLlxuXHRcdGRyYXdPcmRlcltvcmlnaW5hbEluZGV4ICsgaW5wdXQucmVhZEludCh0cnVlKV0gPSBvcmlnaW5hbEluZGV4Kys7XG5cdH1cblx0Ly8gQ29sbGVjdCByZW1haW5pbmcgdW5jaGFuZ2VkIGl0ZW1zLlxuXHR3aGlsZSAob3JpZ2luYWxJbmRleCA8IHNsb3RDb3VudClcblx0XHR1bmNoYW5nZWRbdW5jaGFuZ2VkSW5kZXgrK10gPSBvcmlnaW5hbEluZGV4Kys7XG5cdC8vIEZpbGwgaW4gdW5jaGFuZ2VkIGl0ZW1zLlxuXHRmb3IgKGxldCBpID0gc2xvdENvdW50IC0gMTsgaSA+PSAwOyBpLS0pXG5cdFx0aWYgKGRyYXdPcmRlcltpXSA9PT0gLTEpIGRyYXdPcmRlcltpXSA9IHVuY2hhbmdlZFstLXVuY2hhbmdlZEluZGV4XTtcblx0cmV0dXJuIGRyYXdPcmRlcjtcbn1cblxuZnVuY3Rpb24gc2V0QmV6aWVyIChpbnB1dDogQmluYXJ5SW5wdXQsIHRpbWVsaW5lOiBDdXJ2ZVRpbWVsaW5lLCBiZXppZXI6IG51bWJlciwgZnJhbWU6IG51bWJlciwgdmFsdWU6IG51bWJlcixcblx0dGltZTE6IG51bWJlciwgdGltZTI6IG51bWJlciwgdmFsdWUxOiBudW1iZXIsIHZhbHVlMjogbnVtYmVyLCBzY2FsZTogbnVtYmVyKSB7XG5cdHRpbWVsaW5lLnNldEJlemllcihiZXppZXIsIGZyYW1lLCB2YWx1ZSwgdGltZTEsIHZhbHVlMSwgaW5wdXQucmVhZEZsb2F0KCksIGlucHV0LnJlYWRGbG9hdCgpICogc2NhbGUsIGlucHV0LnJlYWRGbG9hdCgpLCBpbnB1dC5yZWFkRmxvYXQoKSAqIHNjYWxlLCB0aW1lMiwgdmFsdWUyKTtcbn1cblxuY29uc3QgQk9ORV9ST1RBVEUgPSAwO1xuY29uc3QgQk9ORV9UUkFOU0xBVEUgPSAxO1xuY29uc3QgQk9ORV9UUkFOU0xBVEVYID0gMjtcbmNvbnN0IEJPTkVfVFJBTlNMQVRFWSA9IDM7XG5jb25zdCBCT05FX1NDQUxFID0gNDtcbmNvbnN0IEJPTkVfU0NBTEVYID0gNTtcbmNvbnN0IEJPTkVfU0NBTEVZID0gNjtcbmNvbnN0IEJPTkVfU0hFQVIgPSA3O1xuY29uc3QgQk9ORV9TSEVBUlggPSA4O1xuY29uc3QgQk9ORV9TSEVBUlkgPSA5O1xuY29uc3QgQk9ORV9JTkhFUklUID0gMTA7XG5cbmNvbnN0IFNMT1RfQVRUQUNITUVOVCA9IDA7XG5jb25zdCBTTE9UX1JHQkEgPSAxO1xuY29uc3QgU0xPVF9SR0IgPSAyO1xuY29uc3QgU0xPVF9SR0JBMiA9IDM7XG5jb25zdCBTTE9UX1JHQjIgPSA0O1xuY29uc3QgU0xPVF9BTFBIQSA9IDU7XG5cbmNvbnN0IENPTlNUUkFJTlRfSUsgPSAwO1xuY29uc3QgQ09OU1RSQUlOVF9QQVRIID0gMTtcbmNvbnN0IENPTlNUUkFJTlRfVFJBTlNGT1JNID0gMjtcbmNvbnN0IENPTlNUUkFJTlRfUEhZU0lDUyA9IDM7XG5jb25zdCBDT05TVFJBSU5UX1NMSURFUiA9IDQ7XG5cbmNvbnN0IEFUVEFDSE1FTlRfREVGT1JNID0gMDtcbmNvbnN0IEFUVEFDSE1FTlRfU0VRVUVOQ0UgPSAxO1xuXG5jb25zdCBQQVRIX1BPU0lUSU9OID0gMDtcbmNvbnN0IFBBVEhfU1BBQ0lORyA9IDE7XG5jb25zdCBQQVRIX01JWCA9IDI7XG5cbmNvbnN0IFBIWVNJQ1NfSU5FUlRJQSA9IDA7XG5jb25zdCBQSFlTSUNTX1NUUkVOR1RIID0gMTtcbmNvbnN0IFBIWVNJQ1NfREFNUElORyA9IDI7XG5jb25zdCBQSFlTSUNTX01BU1MgPSA0O1xuY29uc3QgUEhZU0lDU19XSU5EID0gNTtcbmNvbnN0IFBIWVNJQ1NfR1JBVklUWSA9IDY7XG5jb25zdCBQSFlTSUNTX01JWCA9IDc7XG5jb25zdCBQSFlTSUNTX1JFU0VUID0gODtcblxuY29uc3QgU0xJREVSX1RJTUUgPSAwO1xuY29uc3QgU0xJREVSX01JWCA9IDE7XG5cbi8vIGJpb21lLWlnbm9yZSBsaW50L2NvcnJlY3RuZXNzL25vVW51c2VkVmFyaWFibGVzOiBpbnRlbnRpb25hbFxuY29uc3QgQ1VSVkVfTElORUFSID0gMDtcbmNvbnN0IENVUlZFX1NURVBQRUQgPSAxO1xuY29uc3QgQ1VSVkVfQkVaSUVSID0gMjtcbiJdfQ==
1503
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25CaW5hcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU2tlbGV0b25CaW5hcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRS9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUEwQyxjQUFjLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUseUJBQXlCLEVBQUUsOEJBQThCLEVBQUUsNkJBQTZCLEVBQUUsZ0NBQWdDLEVBQUUsZ0NBQWdDLEVBQUUsZ0NBQWdDLEVBQUUsNkJBQTZCLEVBQUUsNEJBQTRCLEVBQUUsOEJBQThCLEVBQUUsaUNBQWlDLEVBQUUsNkJBQTZCLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQWlCLDJCQUEyQixFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJejVCLE9BQU8sRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxP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QUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO29DQUN0RSxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztvQ0FDdEUsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0NBQ3RFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO29DQUN0RSxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztvQ0FDeEUsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0NBQ3hFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDOzRCQUMxRSxDQUFDOzRCQUNELElBQUksR0FBRyxLQUFLLENB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QUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEcsSUFBSSxRQUFRLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakUsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsR0FBSSxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUMzQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNsSCxJQUFJLEtBQUssS0FBSyxTQUFTO29CQUFFLE1BQU07Z0JBQy9CLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3pCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM1RyxNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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SyxZQUFZO3dCQUNoQixTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDdEYsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQzVFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUM1RSxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDdEYsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQ3RGLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN4RixDQUFDO2dCQUNELElBQUksR0FBRyxLQUFLLENBQUM7Z0JBQ2IsU0FBUyxHQUFHLFVBQVUsQ0FBQztnQkFDdkIsSUFBSSxHQUFHLEtBQUssQ0FBQztnQkFDYixJQUFJLEdBQUcsS0FBSyxDQUFDO2dCQUNiLFNBQVMsR0FB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LEdBQUcsQ0FBQyxDQUFDO0FBRTVCLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0FBQzVCLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO0FBRTlCLE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBQztBQUN4QixNQUFNLFlBQVksR0FBRyxDQUFDLENBQUM7QUFDdkIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBRW5CLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQztBQUMxQixNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQztBQUMzQixNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUM7QUFDMUIsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQztBQUN2QixNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUM7QUFDMUIsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBQztBQUV4QixNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDdEIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBRXJCLCtEQUErRDtBQUMvRCxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUM7QUFDdkIsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgQWxwaGFUaW1lbGluZSwgQW5pbWF0aW9uLCBBdHRhY2htZW50VGltZWxpbmUsIHR5cGUgQm9uZVRpbWVsaW5lMiwgdHlwZSBDdXJ2ZVRpbWVsaW5lLCBDdXJ2ZVRpbWVsaW5lMSwgRGVmb3JtVGltZWxpbmUsIERyYXdPcmRlckZvbGRlclRpbWVsaW5lLCBEcmF3T3JkZXJUaW1lbGluZSwgRXZlbnRUaW1lbGluZSwgSWtDb25zdHJhaW50VGltZWxpbmUsIEluaGVyaXRUaW1lbGluZSwgUGF0aENvbnN0cmFpbnRNaXhUaW1lbGluZSwgUGF0aENvbnN0cmFpbnRQb3NpdGlvblRpbWVsaW5lLCBQYXRoQ29uc3RyYWludFNwYWNpbmdUaW1lbGluZSwgUGh5c2ljc0NvbnN0cmFpbnREYW1waW5nVGltZWxpbmUsIFBoeXNpY3NDb25zdHJhaW50R3Jhdml0eVRpbWVsaW5lLCBQaHlzaWNzQ29uc3RyYWludEluZXJ0aWFUaW1lbGluZSwgUGh5c2ljc0NvbnN0cmFpbnRNYXNzVGltZWxpbmUsIFBoeXNpY3NDb25zdHJhaW50TWl4VGltZWxpbmUsIFBoeXNpY3NDb25zdHJhaW50UmVzZXRUaW1lbGluZSwgUGh5c2ljc0NvbnN0cmFpbnRTdHJlbmd0aFRpbWVsaW5lLCBQaHlzaWNzQ29uc3RyYWludFdpbmRUaW1lbGluZSwgUkdCMlRpbWVsaW5lLCBSR0JBMlRpbWVsaW5lLCBSR0JBVGltZWxpbmUsIFJHQlRpbWVsaW5lLCBSb3RhdGVUaW1lbGluZSwgU2NhbGVUaW1lbGluZSwgU2NhbGVYVGltZWxpbmUsIFNjYWxlWVRpbWVsaW5lLCBTZXF1ZW5jZVRpbWVsaW5lLCBTaGVhclRpbWVsaW5lLCBTaGVhclhUaW1lbGluZSwgU2hlYXJZVGltZWxpbmUsIFNsaWRlck1peFRpbWVsaW5lLCBTbGlkZXJUaW1lbGluZSwgdHlwZSBUaW1lbGluZSwgVHJhbnNmb3JtQ29uc3RyYWludFRpbWVsaW5lLCBUcmFuc2xhdGVUaW1lbGluZSwgVHJhbnNsYXRlWFRpbWVsaW5lLCBUcmFuc2xhdGVZVGltZWxpbmUgfSBmcm9tIFwiLi9BbmltYXRpb24uanNcIjtcbmltcG9ydCB0eXBlIHsgQXR0YWNobWVudCwgVmVydGV4QXR0YWNobWVudCB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL0F0dGFjaG1lbnQuanNcIjtcbmltcG9ydCB0eXBlIHsgQXR0YWNobWVudExvYWRlciB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL0F0dGFjaG1lbnRMb2FkZXIuanNcIjtcbmltcG9ydCB0eXBlIHsgTWVzaEF0dGFjaG1lbnQgfSBmcm9tIFwiLi9hdHRhY2htZW50cy9NZXNoQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgU2VxdWVuY2UsIFNlcXVlbmNlTW9kZVZhbHVlcyB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL1NlcXVlbmNlLmpzXCI7XG5pbXBvcnQgeyBCb25lRGF0YSB9IGZyb20gXCIuL0JvbmVEYXRhLmpzXCI7XG5pbXBvcnQgeyBTY2FsZVlNb2RlIH0gZnJvbSBcIi4vQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IEV2ZW50IH0gZnJvbSBcIi4vRXZlbnQuanNcIjtcbmltcG9ydCB7IEV2ZW50RGF0YSB9IGZyb20gXCIuL0V2ZW50RGF0YS5qc1wiO1xuaW1wb3J0IHsgSWtDb25zdHJhaW50RGF0YSB9IGZyb20gXCIuL0lrQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IFBhdGhDb25zdHJhaW50RGF0YSwgUG9zaXRpb25Nb2RlLCBTcGFjaW5nTW9kZSB9IGZyb20gXCIuL1BhdGhDb25zdHJhaW50RGF0YS5qc1wiO1xuaW1wb3J0IHsgUGh5c2ljc0NvbnN0cmFpbnREYXRhIH0gZnJvbSBcIi4vUGh5c2ljc0NvbnN0cmFpbnREYXRhLmpzXCI7XG5pbXBvcnQgeyBTa2VsZXRvbkRhdGEgfSBmcm9tIFwiLi9Ta2VsZXRvbkRhdGEuanNcIjtcbmltcG9ydCB7IFNraW4gfSBmcm9tIFwiLi9Ta2luLmpzXCI7XG5pbXBvcnQgeyBTbGlkZXJEYXRhIH0gZnJvbSBcIi4vU2xpZGVyRGF0YS5qc1wiO1xuaW1wb3J0IHsgU2xvdERhdGEgfSBmcm9tIFwiLi9TbG90RGF0YS5qc1wiO1xuaW1wb3J0IHsgdHlwZSBGcm9tUHJvcGVydHksIEZyb21Sb3RhdGUsIEZyb21TY2FsZVgsIEZyb21TY2FsZVksIEZyb21TaGVhclksIEZyb21YLCBGcm9tWSwgdHlwZSBUb1Byb3BlcnR5LCBUb1JvdGF0ZSwgVG9TY2FsZVgsIFRvU2NhbGVZLCBUb1NoZWFyWSwgVG9YLCBUb1ksIFRyYW5zZm9ybUNvbnN0cmFpbnREYXRhIH0gZnJvbSBcIi4vVHJhbnNmb3JtQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IENvbG9yLCB0eXBlIE51bWJlckFycmF5TGlrZSwgVXRpbHMgfSBmcm9tIFwiLi9VdGlscy5qc1wiO1xuXG4vKiogTG9hZHMgc2tlbGV0b24gZGF0YSBpbiB0aGUgU3BpbmUgYmluYXJ5IGZvcm1hdC5cbiAqXG4gKiBTZWUgW1NwaW5lIGJpbmFyeSBmb3JtYXRdKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1iaW5hcnktZm9ybWF0KSBhbmRcbiAqIFtKU09OIGFuZCBiaW5hcnkgZGF0YV0oaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWxvYWRpbmctc2tlbGV0b24tZGF0YSNKU09OLWFuZC1iaW5hcnktZGF0YSkgaW4gdGhlIFNwaW5lXG4gKiBSdW50aW1lcyBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBTa2VsZXRvbkJpbmFyeSB7XG5cdC8qKiBTY2FsZXMgYm9uZSBwb3NpdGlvbnMsIGltYWdlIHNpemVzLCBhbmQgdHJhbnNsYXRpb25zIGFzIHRoZXkgYXJlIGxvYWRlZC4gVGhpcyBhbGxvd3MgZGlmZmVyZW50IHNpemUgaW1hZ2VzIHRvIGJlIHVzZWQgYXRcblx0ICogcnVudGltZSB0aGFuIHdlcmUgdXNlZCBpbiBTcGluZS5cblx0ICpcblx0ICogU2VlIFtTY2FsaW5nXShodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtbG9hZGluZy1za2VsZXRvbi1kYXRhI1NjYWxpbmcpIGluIHRoZSBTcGluZSBSdW50aW1lcyBHdWlkZS4gKi9cblx0c2NhbGUgPSAxO1xuXG5cdGF0dGFjaG1lbnRMb2FkZXI6IEF0dGFjaG1lbnRMb2FkZXI7XG5cdHByaXZhdGUgbGlua2VkTWVzaGVzID0gW10gYXMgTGlua2VkTWVzaFtdO1xuXG5cdGNvbnN0cnVjdG9yIChhdHRhY2htZW50TG9hZGVyOiBBdHRhY2htZW50TG9hZGVyKSB7XG5cdFx0dGhpcy5hdHRhY2htZW50TG9hZGVyID0gYXR0YWNobWVudExvYWRlcjtcblx0fVxuXG5cdHJlYWRTa2VsZXRvbkRhdGEgKGJpbmFyeTogVWludDhBcnJheSB8IEFycmF5QnVmZmVyKTogU2tlbGV0b25EYXRhIHtcblx0XHRjb25zdCBzY2FsZSA9IHRoaXMuc2NhbGU7XG5cblx0XHRjb25zdCBza2VsZXRvbkRhdGEgPSBuZXcgU2tlbGV0b25EYXRhKCk7XG5cdFx0c2tlbGV0b25EYXRhLm5hbWUgPSBcIlwiOyAvLyBCT1pPXG5cblx0XHRjb25zdCBpbnB1dCA9IG5ldyBCaW5hcnlJbnB1dChiaW5hcnkpO1xuXG5cdFx0Y29uc3QgbG93SGFzaCA9IGlucHV0LnJlYWRJbnQzMigpO1xuXHRcdGNvbnN0IGhpZ2hIYXNoID0gaW5wdXQucmVhZEludDMyKCk7XG5cdFx0c2tlbGV0b25EYXRhLmhhc2ggPSBoaWdoSGFzaCA9PT0gMCAmJiBsb3dIYXNoID09PSAwID8gbnVsbCA6IGhpZ2hIYXNoLnRvU3RyaW5nKDE2KSArIGxvd0hhc2gudG9TdHJpbmcoMTYpO1xuXHRcdHNrZWxldG9uRGF0YS52ZXJzaW9uID0gaW5wdXQucmVhZFN0cmluZygpO1xuXHRcdHNrZWxldG9uRGF0YS54ID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0c2tlbGV0b25EYXRhLnkgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRza2VsZXRvbkRhdGEud2lkdGggPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRza2VsZXRvbkRhdGEuaGVpZ2h0ID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0c2tlbGV0b25EYXRhLnJlZmVyZW5jZVNjYWxlID0gaW5wdXQucmVhZEZsb2F0KCkgKiBzY2FsZTtcblxuXHRcdGNvbnN0IG5vbmVzc2VudGlhbCA9IGlucHV0LnJlYWRCb29sZWFuKCk7XG5cdFx0aWYgKG5vbmVzc2VudGlhbCkge1xuXHRcdFx0c2tlbGV0b25EYXRhLmZwcyA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0c2tlbGV0b25EYXRhLmltYWdlc1BhdGggPSBpbnB1dC5yZWFkU3RyaW5nKCk7XG5cdFx0XHRza2VsZXRvbkRhdGEuYXVkaW9QYXRoID0gaW5wdXQucmVhZFN0cmluZygpO1xuXHRcdH1cblxuXHRcdGxldCBuID0gMDtcblx0XHQvLyBTdHJpbmdzLlxuXHRcdG4gPSBpbnB1dC5yZWFkSW50KHRydWUpXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcblx0XHRcdGNvbnN0IHN0ciA9IGlucHV0LnJlYWRTdHJpbmcoKTtcblx0XHRcdGlmICghc3RyKSB0aHJvdyBuZXcgRXJyb3IoXCJTdHJpbmcgaW4gc3RyaW5nIHRhYmxlIG11c3Qgbm90IGJlIG51bGwuXCIpO1xuXHRcdFx0aW5wdXQuc3RyaW5ncy5wdXNoKHN0cik7XG5cdFx0fVxuXG5cdFx0Ly8gQm9uZXMuXG5cdFx0Y29uc3QgYm9uZXMgPSBza2VsZXRvbkRhdGEuYm9uZXM7XG5cdFx0biA9IGlucHV0LnJlYWRJbnQodHJ1ZSlcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuXHRcdFx0Y29uc3QgbmFtZSA9IGlucHV0LnJlYWRTdHJpbmcoKTtcblx0XHRcdGlmICghbmFtZSkgdGhyb3cgbmV3IEVycm9yKFwiQm9uZSBuYW1lIG11c3Qgbm90IGJlIG51bGwuXCIpO1xuXHRcdFx0Y29uc3QgcGFyZW50ID0gaSA9PT0gMCA/IG51bGwgOiBib25lc1tpbnB1dC5yZWFkSW50KHRydWUpXTtcblx0XHRcdGNvbnN0IGRhdGEgPSBuZXcgQm9uZURhdGEoaSwgbmFtZSwgcGFyZW50KTtcblx0XHRcdGNvbnN0IHNldHVwID0gZGF0YS5zZXR1cFBvc2U7XG5cdFx0XHRzZXR1cC5yb3RhdGlvbiA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0c2V0dXAueCA9IGlucHV0LnJlYWRGbG9hdCgpICogc2NhbGU7XG5cdFx0XHRzZXR1cC55ID0gaW5wdXQucmVhZEZsb2F0KCkgKiBzY2FsZTtcblx0XHRcdHNldHVwLnNjYWxlWCA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0c2V0dXAuc2NhbGVZID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRzZXR1cC5zaGVhclggPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdHNldHVwLnNoZWFyWSA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0c2V0dXAuaW5oZXJpdCA9IGlucHV0LnJlYWRCeXRlKCk7XG5cdFx0XHRkYXRhLmxlbmd0aCA9IGlucHV0LnJlYWRGbG9hdCgpICogc2NhbGU7XG5cdFx0XHRkYXRhLnNraW5SZXF1aXJlZCA9IGlucHV0LnJlYWRCb29sZWFuKCk7XG5cdFx0XHRpZiAobm9uZXNzZW50aWFsKSB7XG5cdFx0XHRcdENvbG9yLnJnYmE4ODg4VG9Db2xvcihkYXRhLmNvbG9yLCBpbnB1dC5yZWFkSW50MzIoKSk7XG5cdFx0XHRcdGRhdGEuaWNvbiA9IGlucHV0LnJlYWRTdHJpbmcoKSA/PyB1bmRlZmluZWQ7XG5cdFx0XHRcdGRhdGEuaWNvblNpemUgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0ZGF0YS5pY29uUm90YXRpb24gPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0ZGF0YS52aXNpYmxlID0gaW5wdXQucmVhZEJvb2xlYW4oKTtcblx0XHRcdH1cblx0XHRcdGJvbmVzLnB1c2goZGF0YSk7XG5cdFx0fVxuXG5cdFx0Ly8gU2xvdHMuXG5cdFx0biA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcblx0XHRcdGNvbnN0IHNsb3ROYW1lID0gaW5wdXQucmVhZFN0cmluZygpO1xuXHRcdFx0aWYgKCFzbG90TmFtZSkgdGhyb3cgbmV3IEVycm9yKFwiU2xvdCBuYW1lIG11c3Qgbm90IGJlIG51bGwuXCIpO1xuXHRcdFx0Y29uc3QgYm9uZURhdGEgPSBib25lc1tpbnB1dC5yZWFkSW50KHRydWUpXTtcblx0XHRcdGNvbnN0IGRhdGEgPSBuZXcgU2xvdERhdGEoaSwgc2xvdE5hbWUsIGJvbmVEYXRhKTtcblx0XHRcdENvbG9yLnJnYmE4ODg4VG9Db2xvcihkYXRhLnNldHVwUG9zZS5jb2xvciwgaW5wdXQucmVhZEludDMyKCkpO1xuXG5cdFx0XHRjb25zdCBkYXJrQ29sb3IgPSBpbnB1dC5yZWFkSW50MzIoKTtcblx0XHRcdGlmIChkYXJrQ29sb3IgIT09IC0xKSBDb2xvci5yZ2I4ODhUb0NvbG9yKGRhdGEuc2V0dXBQb3NlLmRhcmtDb2xvciA9IG5ldyBDb2xvcigpLCBkYXJrQ29sb3IpO1xuXG5cdFx0XHRkYXRhLmF0dGFjaG1lbnROYW1lID0gaW5wdXQucmVhZFN0cmluZ1JlZigpO1xuXHRcdFx0ZGF0YS5ibGVuZE1vZGUgPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0aWYgKG5vbmVzc2VudGlhbCkgZGF0YS52aXNpYmxlID0gaW5wdXQucmVhZEJvb2xlYW4oKTtcblx0XHRcdHNrZWxldG9uRGF0YS5zbG90cy5wdXNoKGRhdGEpO1xuXHRcdH1cblxuXHRcdC8vIENvbnN0cmFpbnRzLlxuXHRcdGNvbnN0IGNvbnN0cmFpbnRzID0gc2tlbGV0b25EYXRhLmNvbnN0cmFpbnRzO1xuXHRcdGNvbnN0IGNvbnN0cmFpbnRDb3VudCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjb25zdHJhaW50Q291bnQ7IGkrKykge1xuXHRcdFx0Y29uc3QgbmFtZSA9IGlucHV0LnJlYWRTdHJpbmcoKTtcblx0XHRcdGlmICghbmFtZSkgdGhyb3cgbmV3IEVycm9yKFwiQ29uc3RyYWludCBkYXRhIG5hbWUgbXVzdCBub3QgYmUgbnVsbC5cIik7XG5cdFx0XHRsZXQgbm46IG51bWJlcjtcblx0XHRcdHN3aXRjaCAoaW5wdXQucmVhZEJ5dGUoKSkge1xuXHRcdFx0XHRjYXNlIENPTlNUUkFJTlRfSUs6IHtcblx0XHRcdFx0XHRjb25zdCBkYXRhID0gbmV3IElrQ29uc3RyYWludERhdGEobmFtZSk7XG5cdFx0XHRcdFx0bm4gPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0XHRcdGZvciAobGV0IGlpID0gMDsgaWkgPCBubjsgaWkrKylcblx0XHRcdFx0XHRcdGRhdGEuYm9uZXMucHVzaChib25lc1tpbnB1dC5yZWFkSW50KHRydWUpXSk7XG5cdFx0XHRcdFx0ZGF0YS50YXJnZXQgPSBib25lc1tpbnB1dC5yZWFkSW50KHRydWUpXTtcblx0XHRcdFx0XHRjb25zdCBmbGFncyA9IGlucHV0LnJlYWRCeXRlKCk7XG5cdFx0XHRcdFx0ZGF0YS5za2luUmVxdWlyZWQgPSAoZmxhZ3MgJiAxKSAhPT0gMDtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgMikgIT09IDApIGRhdGEuc2NhbGVZTW9kZSA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKTtcblx0XHRcdFx0XHRjb25zdCBzZXR1cCA9IGRhdGEuc2V0dXBQb3NlO1xuXHRcdFx0XHRcdHNldHVwLmJlbmREaXJlY3Rpb24gPSAoZmxhZ3MgJiA0KSAhPT0gMCA/IC0xIDogMTtcblx0XHRcdFx0XHRzZXR1cC5jb21wcmVzcyA9IChmbGFncyAmIDgpICE9PSAwO1xuXHRcdFx0XHRcdHNldHVwLnN0cmV0Y2ggPSAoZmxhZ3MgJiAxNikgIT09IDA7XG5cdFx0XHRcdFx0aWYgKChmbGFncyAmIDMyKSAhPT0gMCkgc2V0dXAubWl4ID0gKGZsYWdzICYgNjQpICE9PSAwID8gaW5wdXQucmVhZEZsb2F0KCkgOiAxO1xuXHRcdFx0XHRcdGlmICgoZmxhZ3MgJiAxMjgpICE9PSAwKSBzZXR1cC5zb2Z0bmVzcyA9IGlucHV0LnJlYWRGbG9hdCgpICogc2NhbGU7XG5cdFx0XHRcdFx0Y29uc3RyYWludHMucHVzaChkYXRhKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRjYXNlIENPTlNUUkFJTlRfVFJBTlNGT1JNOiB7XG5cdFx0XHRcdFx0Y29uc3QgZGF0YSA9IG5ldyBUcmFuc2Zvcm1Db25zdHJhaW50RGF0YShuYW1lKTtcblx0XHRcdFx0XHRubiA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IG5uOyBpaSsrKVxuXHRcdFx0XHRcdFx0ZGF0YS5ib25lcy5wdXNoKGJvbmVzW2lucHV0LnJlYWRJbnQodHJ1ZSldKTtcblx0XHRcdFx0XHRkYXRhLnNvdXJjZSA9IGJvbmVzW2lucHV0LnJlYWRJbnQodHJ1ZSldO1xuXHRcdFx0XHRcdGxldCBmbGFncyA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKTtcblx0XHRcdFx0XHRkYXRhLnNraW5SZXF1aXJlZCA9IChmbGFncyAmIDEpICE9PSAwO1xuXHRcdFx0XHRcdGRhdGEubG9jYWxTb3VyY2UgPSAoZmxhZ3MgJiAyKSAhPT0gMDtcblx0XHRcdFx0XHRkYXRhLmxvY2FsVGFyZ2V0ID0gKGZsYWdzICYgNCkgIT09IDA7XG5cdFx0XHRcdFx0ZGF0YS5hZGRpdGl2ZSA9IChmbGFncyAmIDgpICE9PSAwO1xuXHRcdFx0XHRcdGRhdGEuY2xhbXAgPSAoZmxhZ3MgJiAxNikgIT09IDA7XG5cblx0XHRcdFx0XHRubiA9IGZsYWdzID4+IDU7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwLCB0bjogbnVtYmVyOyBpaSA8IG5uOyBpaSsrKSB7XG5cdFx0XHRcdFx0XHRsZXQgZnJvbVNjYWxlID0gMTtcblx0XHRcdFx0XHRcdGxldCBmcm9tOiBGcm9tUHJvcGVydHkgfCBudWxsO1xuXHRcdFx0XHRcdFx0c3dpdGNoIChpbnB1dC5yZWFkQnl0ZSgpKSB7XG5cdFx0XHRcdFx0XHRcdGNhc2UgMDogZnJvbSA9IG5ldyBGcm9tUm90YXRlKCk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRjYXNlIDE6IHtcblx0XHRcdFx0XHRcdFx0XHRmcm9tU2NhbGUgPSBzY2FsZTtcblx0XHRcdFx0XHRcdFx0XHRmcm9tID0gbmV3IEZyb21YKCk7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0Y2FzZSAyOiB7XG5cdFx0XHRcdFx0XHRcdFx0ZnJvbVNjYWxlID0gc2NhbGU7XG5cdFx0XHRcdFx0XHRcdFx0ZnJvbSA9IG5ldyBGcm9tWSgpO1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGNhc2UgMzogZnJvbSA9IG5ldyBGcm9tU2NhbGVYKCk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRjYXNlIDQ6IGZyb20gPSBuZXcgRnJvbVNjYWxlWSgpOyBicmVhaztcblx0XHRcdFx0XHRcdFx0Y2FzZSA1OiBmcm9tID0gbmV3IEZyb21TaGVhclkoKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRcdGRlZmF1bHQ6IGZyb20gPSBudWxsO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKCFmcm9tKSBjb250aW51ZTtcblx0XHRcdFx0XHRcdGZyb20ub2Zmc2V0ID0gaW5wdXQucmVhZEZsb2F0KCkgKiBmcm9tU2NhbGU7XG5cdFx0XHRcdFx0XHR0biA9IGlucHV0LnJlYWRCeXRlKCk7XG5cdFx0XHRcdFx0XHRmb3IgKGxldCB0ID0gMDsgdCA8IHRuOyB0KyspIHtcblx0XHRcdFx0XHRcdFx0bGV0IHRvU2NhbGUgPSAxO1xuXHRcdFx0XHRcdFx0XHRsZXQgdG86IFRvUHJvcGVydHkgfCBudWxsO1xuXHRcdFx0XHRcdFx0XHRzd2l0Y2ggKGlucHV0LnJlYWRCeXRlKCkpIHtcblx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6IHRvID0gbmV3IFRvUm90YXRlKCk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgMToge1xuXHRcdFx0XHRcdFx0XHRcdFx0dG9TY2FsZSA9IHNjYWxlO1xuXHRcdFx0XHRcdFx0XHRcdFx0dG8gPSBuZXcgVG9YKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSAyOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0b1NjYWxlID0gc2NhbGU7XG5cdFx0XHRcdFx0XHRcdFx0XHR0byA9IG5ldyBUb1koKTtcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRjYXNlIDM6IHRvID0gbmV3IFRvU2NhbGVYKCk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgNDogdG8gPSBuZXcgVG9TY2FsZVkoKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSA1OiB0byA9IG5ldyBUb1NoZWFyWSgpOyBicmVhaztcblx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0OiB0byA9IG51bGw7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKCF0bykgY29udGludWU7XG5cdFx0XHRcdFx0XHRcdHRvLm9mZnNldCA9IGlucHV0LnJlYWRGbG9hdCgpICogdG9TY2FsZTtcblx0XHRcdFx0XHRcdFx0dG8ubWF4ID0gaW5wdXQucmVhZEZsb2F0KCkgKiB0b1NjYWxlO1xuXHRcdFx0XHRcdFx0XHR0by5zY2FsZSA9IGlucHV0LnJlYWRGbG9hdCgpICogdG9TY2FsZSAvIGZyb21TY2FsZTtcblx0XHRcdFx0XHRcdFx0ZnJvbS50b1t0XSA9IHRvO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZGF0YS5wcm9wZXJ0aWVzW2lpXSA9IGZyb207XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGZsYWdzID0gaW5wdXQucmVhZEJ5dGUoKTtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgMSkgIT09IDApIGRhdGEub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5ST1RBVElPTl0gPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgMikgIT09IDApIGRhdGEub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5YXSA9IGlucHV0LnJlYWRGbG9hdCgpICogc2NhbGU7XG5cdFx0XHRcdFx0aWYgKChmbGFncyAmIDQpICE9PSAwKSBkYXRhLm9mZnNldHNbVHJhbnNmb3JtQ29uc3RyYWludERhdGEuWV0gPSBpbnB1dC5yZWFkRmxvYXQoKSAqIHNjYWxlO1xuXHRcdFx0XHRcdGlmICgoZmxhZ3MgJiA4KSAhPT0gMCkgZGF0YS5vZmZzZXRzW1RyYW5zZm9ybUNvbnN0cmFpbnREYXRhLlNDQUxFWF0gPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgMTYpICE9PSAwKSBkYXRhLm9mZnNldHNbVHJhbnNmb3JtQ29uc3RyYWludERhdGEuU0NBTEVZXSA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdGlmICgoZmxhZ3MgJiAzMikgIT09IDApIGRhdGEub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5TSEVBUlldID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0ZmxhZ3MgPSBpbnB1dC5yZWFkQnl0ZSgpO1xuXHRcdFx0XHRcdGNvbnN0IHNldHVwID0gZGF0YS5zZXR1cFBvc2U7XG5cdFx0XHRcdFx0aWYgKChmbGFncyAmIDEpICE9PSAwKSBzZXR1cC5taXhSb3RhdGUgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgMikgIT09IDApIHNldHVwLm1peFggPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgNCkgIT09IDApIHNldHVwLm1peFkgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgOCkgIT09IDApIHNldHVwLm1peFNjYWxlWCA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdGlmICgoZmxhZ3MgJiAxNikgIT09IDApIHNldHVwLm1peFNjYWxlWSA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdGlmICgoZmxhZ3MgJiAzMikgIT09IDApIHNldHVwLm1peFNoZWFyWSA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdGNvbnN0cmFpbnRzLnB1c2goZGF0YSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y2FzZSBDT05TVFJBSU5UX1BBVEg6IHtcblx0XHRcdFx0XHRjb25zdCBkYXRhID0gbmV3IFBhdGhDb25zdHJhaW50RGF0YShuYW1lKTtcblx0XHRcdFx0XHRubiA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IG5uOyBpaSsrKVxuXHRcdFx0XHRcdFx0ZGF0YS5ib25lcy5wdXNoKGJvbmVzW2lucHV0LnJlYWRJbnQodHJ1ZSldKTtcblx0XHRcdFx0XHRkYXRhLnNsb3QgPSBza2VsZXRvbkRhdGEuc2xvdHNbaW5wdXQucmVhZEludCh0cnVlKV07XG5cdFx0XHRcdFx0Y29uc3QgZmxhZ3MgPSBpbnB1dC5yZWFkQnl0ZSgpO1xuXHRcdFx0XHRcdGRhdGEuc2tpblJlcXVpcmVkID0gKGZsYWdzICYgMSkgIT09IDA7XG5cdFx0XHRcdFx0ZGF0YS5wb3NpdGlvbk1vZGUgPSAoZmxhZ3MgPj4gMSkgJiAwYjE7XG5cdFx0XHRcdFx0ZGF0YS5zcGFjaW5nTW9kZSA9IChmbGFncyA+PiAyKSAmIDBiMTE7XG5cdFx0XHRcdFx0ZGF0YS5yb3RhdGVNb2RlID0gKGZsYWdzID4+IDQpICYgMGIxMTtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgMTI4KSAhPT0gMCkgZGF0YS5vZmZzZXRSb3RhdGlvbiA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdGNvbnN0IHNldHVwID0gZGF0YS5zZXR1cFBvc2U7XG5cdFx0XHRcdFx0c2V0dXAucG9zaXRpb24gPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRpZiAoZGF0YS5wb3NpdGlvbk1vZGUgPT09IFBvc2l0aW9uTW9kZS5GaXhlZCkgc2V0dXAucG9zaXRpb24gKj0gc2NhbGU7XG5cdFx0XHRcdFx0c2V0dXAuc3BhY2luZyA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdGlmIChkYXRhLnNwYWNpbmdNb2RlID09PSBTcGFjaW5nTW9kZS5MZW5ndGggfHwgZGF0YS5zcGFjaW5nTW9kZSA9PT0gU3BhY2luZ01vZGUuRml4ZWQpIHNldHVwLnNwYWNpbmcgKj0gc2NhbGU7XG5cdFx0XHRcdFx0c2V0dXAubWl4Um90YXRlID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0c2V0dXAubWl4WCA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdHNldHVwLm1peFkgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRjb25zdHJhaW50cy5wdXNoKGRhdGEpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNhc2UgQ09OU1RSQUlOVF9QSFlTSUNTOiB7XG5cdFx0XHRcdFx0Y29uc3QgZGF0YSA9IG5ldyBQaHlzaWNzQ29uc3RyYWludERhdGEobmFtZSk7XG5cdFx0XHRcdFx0ZGF0YS5ib25lID0gYm9uZXNbaW5wdXQucmVhZEludCh0cnVlKV07XG5cdFx0XHRcdFx0bGV0IGZsYWdzID0gaW5wdXQucmVhZEJ5dGUoKTtcblx0XHRcdFx0XHRkYXRhLnNraW5SZXF1aXJlZCA9IChmbGFncyAmIDEpICE9PSAwO1xuXHRcdFx0XHRcdGlmICgoZmxhZ3MgJiAyKSAhPT0gMCkgZGF0YS54ID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0aWYgKChmbGFncyAmIDQpICE9PSAwKSBkYXRhLnkgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgOCkgIT09IDApIGRhdGEucm90YXRlID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0aWYgKChmbGFncyAmIDE2KSAhPT0gMCkge1xuXHRcdFx0XHRcdFx0bGV0IHNjYWxlWCA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdFx0aWYgKHNjYWxlWCA8IC0yKSB7XG5cdFx0XHRcdFx0XHRcdGRhdGEuc2NhbGVZTW9kZSA9IFNjYWxlWU1vZGUuVm9sdW1lO1xuXHRcdFx0XHRcdFx0XHRzY2FsZVggPSAtMiAtIHNjYWxlWDtcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoc2NhbGVYIDwgMCkge1xuXHRcdFx0XHRcdFx0XHRkYXRhLnNjYWxlWU1vZGUgPSBTY2FsZVlNb2RlLlVuaWZvcm07XG5cdFx0XHRcdFx0XHRcdHNjYWxlWCA9IC0xIC0gc2NhbGVYO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZGF0YS5zY2FsZVggPSBzY2FsZVg7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICgoZmxhZ3MgJiAzMikgIT09IDApIGRhdGEuc2hlYXJYID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0ZGF0YS5saW1pdCA9ICgoZmxhZ3MgJiA2NCkgIT09IDAgPyBpbnB1dC5yZWFkRmxvYXQoKSA6IDUwMDApICogc2NhbGU7XG5cdFx0XHRcdFx0ZGF0YS5zdGVwID0gMSAvIGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKTtcblx0XHRcdFx0XHRjb25zdCBzZXR1cCA9IGRhdGEuc2V0dXBQb3NlO1xuXHRcdFx0XHRcdHNldHVwLmluZXJ0aWEgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRzZXR1cC5zdHJlbmd0aCA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdHNldHVwLmRhbXBpbmcgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRzZXR1cC5tYXNzSW52ZXJzZSA9IChmbGFncyAmIDEyOCkgIT09IDAgPyBpbnB1dC5yZWFkRmxvYXQoKSA6IDE7XG5cdFx0XHRcdFx0c2V0dXAud2luZCA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdHNldHVwLmdyYXZpdHkgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRmbGFncyA9IGlucHV0LnJlYWRCeXRlKCk7XG5cdFx0XHRcdFx0aWYgKChmbGFncyAmIDEpICE9PSAwKSBkYXRhLmluZXJ0aWFHbG9iYWwgPSB0cnVlO1xuXHRcdFx0XHRcdGlmICgoZmxhZ3MgJiAyKSAhPT0gMCkgZGF0YS5zdHJlbmd0aEdsb2JhbCA9IHRydWU7XG5cdFx0XHRcdFx0aWYgKChmbGFncyAmIDQpICE9PSAwKSBkYXRhLmRhbXBpbmdHbG9iYWwgPSB0cnVlO1xuXHRcdFx0XHRcdGlmICgoZmxhZ3MgJiA4KSAhPT0gMCkgZGF0YS5tYXNzR2xvYmFsID0gdHJ1ZTtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgMTYpICE9PSAwKSBkYXRhLndpbmRHbG9iYWwgPSB0cnVlO1xuXHRcdFx0XHRcdGlmICgoZmxhZ3MgJiAzMikgIT09IDApIGRhdGEuZ3Jhdml0eUdsb2JhbCA9IHRydWU7XG5cdFx0XHRcdFx0aWYgKChmbGFncyAmIDY0KSAhPT0gMCkgZGF0YS5taXhHbG9iYWwgPSB0cnVlO1xuXHRcdFx0XHRcdHNldHVwLm1peCA9IChmbGFncyAmIDEyOCkgIT09IDAgPyBpbnB1dC5yZWFkRmxvYXQoKSA6IDE7XG5cdFx0XHRcdFx0Y29uc3RyYWludHMucHVzaChkYXRhKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRjYXNlIENPTlNUUkFJTlRfU0xJREVSOiB7XG5cdFx0XHRcdFx0Y29uc3QgZGF0YSA9IG5ldyBTbGlkZXJEYXRhKG5hbWUpO1xuXHRcdFx0XHRcdGNvbnN0IGZsYWdzID0gaW5wdXQucmVhZEJ5dGUoKTtcblx0XHRcdFx0XHRkYXRhLnNraW5SZXF1aXJlZCA9IChmbGFncyAmIDEpICE9PSAwO1xuXHRcdFx0XHRcdGRhdGEubG9vcCA9IChmbGFncyAmIDIpICE9PSAwO1xuXHRcdFx0XHRcdGRhdGEuYWRkaXRpdmUgPSAoZmxhZ3MgJiA0KSAhPT0gMDtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgOCkgIT09IDApIGRhdGEuc2V0dXBQb3NlLnRpbWUgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRpZiAoKGZsYWdzICYgMTYpICE9PSAwKSBkYXRhLnNldHVwUG9zZS5taXggPSAoZmxhZ3MgJiAzMikgIT09IDAgPyBpbnB1dC5yZWFkRmxvYXQoKSA6IDE7XG5cdFx0XHRcdFx0aWYgKChmbGFncyAmIDY0KSAhPT0gMCkge1xuXHRcdFx0XHRcdFx0ZGF0YS5sb2NhbCA9IChmbGFncyAmIDEyOCkgIT09IDA7XG5cdFx0XHRcdFx0XHRkYXRhLmJvbmUgPSBib25lc1tpbnB1dC5yZWFkSW50KHRydWUpXTtcblx0XHRcdFx0XHRcdGNvbnN0IG9mZnNldCA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdFx0bGV0IHByb3BlcnR5U2NhbGUgPSAxO1xuXHRcdFx0XHRcdFx0c3dpdGNoIChpbnB1dC5yZWFkQnl0ZSgpKSB7XG5cdFx0XHRcdFx0XHRcdGNhc2UgMDogZGF0YS5wcm9wZXJ0eSA9IG5ldyBGcm9tUm90YXRlKCk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRjYXNlIDE6IHtcblx0XHRcdFx0XHRcdFx0XHRwcm9wZXJ0eVNjYWxlID0gc2NhbGU7XG5cdFx0XHRcdFx0XHRcdFx0ZGF0YS5wcm9wZXJ0eSA9IG5ldyBGcm9tWCgpO1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGNhc2UgMjoge1xuXHRcdFx0XHRcdFx0XHRcdHByb3BlcnR5U2NhbGUgPSBzY2FsZTtcblx0XHRcdFx0XHRcdFx0XHRkYXRhLnByb3BlcnR5ID0gbmV3IEZyb21ZKCk7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0Y2FzZSAzOiBkYXRhLnByb3BlcnR5ID0gbmV3IEZyb21TY2FsZVgoKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRcdGNhc2UgNDogZGF0YS5wcm9wZXJ0eSA9IG5ldyBGcm9tU2NhbGVZKCk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRjYXNlIDU6IGRhdGEucHJvcGVydHkgPSBuZXcgRnJvbVNoZWFyWSgpOyBicmVhaztcblx0XHRcdFx0XHRcdFx0ZGVmYXVsdDogY29udGludWU7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0ZGF0YS5wcm9wZXJ0eS5vZmZzZXQgPSBvZmZzZXQgKiBwcm9wZXJ0eVNjYWxlO1xuXHRcdFx0XHRcdFx0ZGF0YS5vZmZzZXQgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRcdGRhdGEuc2NhbGUgPSBpbnB1dC5yZWFkRmxvYXQoKSAvIHByb3BlcnR5U2NhbGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0cmFpbnRzLnB1c2goZGF0YSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBEZWZhdWx0IHNraW4uXG5cdFx0Y29uc3QgZGVmYXVsdFNraW4gPSB0aGlzLnJlYWRTa2luKGlucHV0LCBza2VsZXRvbkRhdGEsIHRydWUsIG5vbmVzc2VudGlhbCk7XG5cdFx0aWYgKGRlZmF1bHRTa2luKSB7XG5cdFx0XHRza2VsZXRvbkRhdGEuZGVmYXVsdFNraW4gPSBkZWZhdWx0U2tpbjtcblx0XHRcdHNrZWxldG9uRGF0YS5za2lucy5wdXNoKGRlZmF1bHRTa2luKTtcblx0XHR9XG5cblx0XHQvLyBTa2lucy5cblx0XHR7XG5cdFx0XHRsZXQgaSA9IHNrZWxldG9uRGF0YS5za2lucy5sZW5ndGg7XG5cdFx0XHRVdGlscy5zZXRBcnJheVNpemUoc2tlbGV0b25EYXRhLnNraW5zLCBuID0gaSArIGlucHV0LnJlYWRJbnQodHJ1ZSkpO1xuXHRcdFx0Zm9yICg7IGkgPCBuOyBpKyspIHtcblx0XHRcdFx0Y29uc3Qgc2tpbiA9IHRoaXMucmVhZFNraW4oaW5wdXQsIHNrZWxldG9uRGF0YSwgZmFsc2UsIG5vbmVzc2VudGlhbCk7XG5cdFx0XHRcdGlmICghc2tpbikgdGhyb3cgbmV3IEVycm9yKFwicmVhZFNraW4oKSBzaG91bGQgbm90IGhhdmUgcmV0dXJuZWQgbnVsbC5cIik7XG5cdFx0XHRcdHNrZWxldG9uRGF0YS5za2luc1tpXSA9IHNraW47XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gTGlua2VkIG1lc2hlcy5cblx0XHRuID0gdGhpcy5saW5rZWRNZXNoZXMubGVuZ3RoO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRjb25zdCBsaW5rZWRNZXNoID0gdGhpcy5saW5rZWRNZXNoZXNbaV07XG5cdFx0XHRjb25zdCBza2luID0gc2tlbGV0b25EYXRhLnNraW5zW2xpbmtlZE1lc2guc2tpbkluZGV4XTtcblx0XHRcdGlmICghbGlua2VkTWVzaC5zb3VyY2UpIHRocm93IG5ldyBFcnJvcihcIkxpbmtlZCBtZXNoIHBhcmVudCBtdXN0IG5vdCBiZSBudWxsXCIpO1xuXHRcdFx0Y29uc3Qgc291cmNlID0gc2tpbi5nZXRBdHRhY2htZW50KGxpbmtlZE1lc2guc291cmNlSW5kZXgsIGxpbmtlZE1lc2guc291cmNlKTtcblx0XHRcdGlmICghc291cmNlKSB0aHJvdyBuZXcgRXJyb3IoYFNvdXJjZSBtZXNoIG5vdCBmb3VuZDogJHtsaW5rZWRNZXNoLnNvdXJjZX1gKTtcblx0XHRcdGxpbmtlZE1lc2gubWVzaC50aW1lbGluZUF0dGFjaG1lbnQgPSBsaW5rZWRNZXNoLmluaGVyaXRUaW1lbGluZXMgPyBzb3VyY2UgOiBsaW5rZWRNZXNoLm1lc2g7XG5cdFx0XHRsaW5rZWRNZXNoLm1lc2guc2V0U291cmNlTWVzaChzb3VyY2UgYXMgTWVzaEF0dGFjaG1lbnQpO1xuXHRcdFx0bGlua2VkTWVzaC5tZXNoLnVwZGF0ZVNlcXVlbmNlKCk7XG5cdFx0fVxuXHRcdHRoaXMubGlua2VkTWVzaGVzLmxlbmd0aCA9IDA7XG5cblx0XHQvLyBFdmVudHMuXG5cdFx0biA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcblx0XHRcdGNvbnN0IGV2ZW50TmFtZSA9IGlucHV0LnJlYWRTdHJpbmcoKTtcblx0XHRcdGlmICghZXZlbnROYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJFdmVudCBkYXRhIG5hbWUgbXVzdCBub3QgYmUgbnVsbFwiKTtcblx0XHRcdGNvbnN0IGRhdGEgPSBuZXcgRXZlbnREYXRhKGV2ZW50TmFtZSk7XG5cdFx0XHRjb25zdCBzZXR1cCA9IGRhdGEuc2V0dXBQb3NlO1xuXHRcdFx0c2V0dXAuaW50VmFsdWUgPSBpbnB1dC5yZWFkSW50KGZhbHNlKTtcblx0XHRcdHNldHVwLmZsb2F0VmFsdWUgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdHNldHVwLnN0cmluZ1ZhbHVlID0gaW5wdXQucmVhZFN0cmluZygpO1xuXHRcdFx0ZGF0YS5fYXVkaW9QYXRoID0gaW5wdXQucmVhZFN0cmluZygpO1xuXHRcdFx0aWYgKGRhdGEuYXVkaW9QYXRoKSB7XG5cdFx0XHRcdHNldHVwLnZvbHVtZSA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRzZXR1cC5iYWxhbmNlID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHR9XG5cdFx0XHRza2VsZXRvbkRhdGEuZXZlbnRzLnB1c2goZGF0YSk7XG5cdFx0fVxuXG5cdFx0Ly8gQW5pbWF0aW9ucy5cblx0XHRjb25zdCBhbmltYXRpb25zID0gc2tlbGV0b25EYXRhLmFuaW1hdGlvbnM7XG5cdFx0biA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcblx0XHRcdGNvbnN0IGFuaW1hdGlvbk5hbWUgPSBpbnB1dC5yZWFkU3RyaW5nKCk7XG5cdFx0XHRpZiAoIWFuaW1hdGlvbk5hbWUpIHRocm93IG5ldyBFcnJvcihcIkFuaW1hdGlvbiBuYW1lIG11c3Qgbm90IGJlIG51bGwuXCIpO1xuXHRcdFx0YW5pbWF0aW9ucy5wdXNoKHRoaXMucmVhZEFuaW1hdGlvbihpbnB1dCwgYW5pbWF0aW9uTmFtZSwgc2tlbGV0b25EYXRhLCBub25lc3NlbnRpYWwpKTtcblx0XHR9XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGNvbnN0cmFpbnRDb3VudDsgaSsrKSB7XG5cdFx0XHRjb25zdCBjb25zdHJhaW50ID0gY29uc3RyYWludHNbaV07XG5cdFx0XHRpZiAoY29uc3RyYWludCBpbnN0YW5jZW9mIFNsaWRlckRhdGEpIGNvbnN0cmFpbnQuYW5pbWF0aW9uID0gYW5pbWF0aW9uc1tpbnB1dC5yZWFkSW50KHRydWUpXTtcblx0XHR9XG5cblx0XHRyZXR1cm4gc2tlbGV0b25EYXRhO1xuXHR9XG5cblx0cHJpdmF0ZSByZWFkU2tpbiAoaW5wdXQ6IEJpbmFyeUlucHV0LCBza2VsZXRvbkRhdGE6IFNrZWxldG9uRGF0YSwgZGVmYXVsdFNraW46IGJvb2xlYW4sIG5vbmVzc2VudGlhbDogYm9vbGVhbik6IFNraW4gfCBudWxsIHtcblx0XHRsZXQgc2tpbiA9IG51bGw7XG5cdFx0bGV0IHNsb3RDb3VudCA9IDA7XG5cblx0XHRpZiAoZGVmYXVsdFNraW4pIHtcblx0XHRcdHNsb3RDb3VudCA9IGlucHV0LnJlYWRJbnQodHJ1ZSlcblx0XHRcdGlmIChzbG90Q291bnQgPT09IDApIHJldHVybiBudWxsO1xuXHRcdFx0c2tpbiA9IG5ldyBTa2luKFwiZGVmYXVsdFwiKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3Qgc2tpbk5hbWUgPSBpbnB1dC5yZWFkU3RyaW5nKCk7XG5cdFx0XHRpZiAoIXNraW5OYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJTa2luIG5hbWUgbXVzdCBub3QgYmUgbnVsbC5cIik7XG5cdFx0XHRza2luID0gbmV3IFNraW4oc2tpbk5hbWUpO1xuXG5cdFx0XHRpZiAobm9uZXNzZW50aWFsKSBDb2xvci5yZ2JhODg4OFRvQ29sb3Ioc2tpbi5jb2xvciwgaW5wdXQucmVhZEludDMyKCkpO1xuXG5cdFx0XHRsZXQgbiA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRsZXQgZnJvbTogb2JqZWN0W10gPSBza2VsZXRvbkRhdGEuYm9uZXMsIHRvOiBvYmplY3RbXSA9IHNraW4uYm9uZXM7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKylcblx0XHRcdFx0dG9baV0gPSBmcm9tW2lucHV0LnJlYWRJbnQodHJ1ZSldO1xuXG5cdFx0XHRuID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHRcdGZyb20gPSBza2VsZXRvbkRhdGEuY29uc3RyYWludHM7XG5cdFx0XHR0byA9IHNraW4uY29uc3RyYWludHM7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKylcblx0XHRcdFx0dG9baV0gPSBmcm9tW2lucHV0LnJlYWRJbnQodHJ1ZSldO1xuXG5cdFx0XHRzbG90Q291bnQgPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdH1cblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc2xvdENvdW50OyBpKyspIHtcblx0XHRcdGNvbnN0IHNsb3RJbmRleCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRmb3IgKGxldCBpaSA9IDAsIG5uID0gaW5wdXQucmVhZEludCh0cnVlKTsgaWkgPCBubjsgaWkrKykge1xuXHRcdFx0XHRjb25zdCBwbGFjZWhvbGRlciA9IGlucHV0LnJlYWRTdHJpbmdSZWYoKTtcblx0XHRcdFx0aWYgKCFwbGFjZWhvbGRlcilcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJBdHRhY2htZW50IG5hbWUgbXVzdCBub3QgYmUgbnVsbFwiKTtcblx0XHRcdFx0Y29uc3QgYXR0YWNobWVudCA9IHRoaXMucmVhZEF0dGFjaG1lbnQoaW5wdXQsIHNrZWxldG9uRGF0YSwgc2tpbiwgc2xvdEluZGV4LCBwbGFjZWhvbGRlciwgbm9uZXNzZW50aWFsKTtcblx0XHRcdFx0aWYgKGF0dGFjaG1lbnQpIHNraW4uc2V0QXR0YWNobWVudChzbG90SW5kZXgsIHBsYWNlaG9sZGVyLCBhdHRhY2htZW50KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHNraW47XG5cdH1cblxuXHRwcml2YXRlIHJlYWRBdHRhY2htZW50IChpbnB1dDogQmluYXJ5SW5wdXQsIHNrZWxldG9uRGF0YTogU2tlbGV0b25EYXRhLCBza2luOiBTa2luLCBzbG90SW5kZXg6IG51bWJlciwgcGxhY2Vob2xkZXI6IHN0cmluZywgbm9uZXNzZW50aWFsOiBib29sZWFuKTogQXR0YWNobWVudCB8IG51bGwge1xuXHRcdGNvbnN0IHNjYWxlID0gdGhpcy5zY2FsZTtcblxuXHRcdGNvbnN0IGZsYWdzID0gaW5wdXQucmVhZEJ5dGUoKTtcblx0XHRjb25zdCBuYW1lID0gKGZsYWdzICYgOCkgIT09IDAgPyBpbnB1dC5yZWFkU3RyaW5nUmVmKCkgOiBwbGFjZWhvbGRlcjtcblx0XHRpZiAoIW5hbWUpIHRocm93IG5ldyBFcnJvcihcIkF0dGFjaG1lbnQgbmFtZSBtdXN0IG5vdCBiZSBudWxsXCIpO1xuXHRcdHN3aXRjaCAoKGZsYWdzICYgMGIxMTEpIGFzIEF0dGFjaG1lbnRUeXBlKSB7IC8vIEJVRz9cblx0XHRcdGNhc2UgQXR0YWNobWVudFR5cGUuUmVnaW9uOiB7XG5cdFx0XHRcdGxldCBwYXRoID0gKGZsYWdzICYgMTYpICE9PSAwID8gaW5wdXQucmVhZFN0cmluZ1JlZigpIDogbnVsbDtcblx0XHRcdFx0Y29uc3QgY29sb3IgPSAoZmxhZ3MgJiAzMikgIT09IDAgPyBpbnB1dC5yZWFkSW50MzIoKSA6IDB4ZmZmZmZmZmY7XG5cdFx0XHRcdGNvbnN0IHNlcXVlbmNlID0gdGhpcy5yZWFkU2VxdWVuY2UoaW5wdXQsIChmbGFncyAmIDY0KSAhPT0gMCk7XG5cdFx0XHRcdGNvbnN0IHJvdGF0aW9uID0gKGZsYWdzICYgMTI4KSAhPT0gMCA/IGlucHV0LnJlYWRGbG9hdCgpIDogMDtcblx0XHRcdFx0Y29uc3QgeCA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRjb25zdCB5ID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdGNvbnN0IHNjYWxlWCA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRjb25zdCBzY2FsZVkgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0Y29uc3Qgd2lkdGggPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0Y29uc3QgaGVpZ2h0ID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cblx0XHRcdFx0aWYgKCFwYXRoKSBwYXRoID0gbmFtZTtcblx0XHRcdFx0Y29uc3QgcmVnaW9uID0gdGhpcy5hdHRhY2htZW50TG9hZGVyLm5ld1JlZ2lvbkF0dGFjaG1lbnQoc2tpbiwgcGxhY2Vob2xkZXIsIG5hbWUsIHBhdGgsIHNlcXVlbmNlKTtcblx0XHRcdFx0aWYgKCFyZWdpb24pIHJldHVybiBudWxsO1xuXHRcdFx0XHRyZWdpb24ucGF0aCA9IHBhdGg7XG5cdFx0XHRcdHJlZ2lvbi54ID0geCAqIHNjYWxlO1xuXHRcdFx0XHRyZWdpb24ueSA9IHkgKiBzY2FsZTtcblx0XHRcdFx0cmVnaW9uLnNjYWxlWCA9IHNjYWxlWDtcblx0XHRcdFx0cmVnaW9uLnNjYWxlWSA9IHNjYWxlWTtcblx0XHRcdFx0cmVnaW9uLnJvdGF0aW9uID0gcm90YXRpb247XG5cdFx0XHRcdHJlZ2lvbi53aWR0aCA9IHdpZHRoICogc2NhbGU7XG5cdFx0XHRcdHJlZ2lvbi5oZWlnaHQgPSBoZWlnaHQgKiBzY2FsZTtcblx0XHRcdFx0Q29sb3IucmdiYTg4ODhUb0NvbG9yKHJlZ2lvbi5jb2xvciwgY29sb3IpO1xuXHRcdFx0XHRyZWdpb24udXBkYXRlU2VxdWVuY2UoKTtcblx0XHRcdFx0cmV0dXJuIHJlZ2lvbjtcblx0XHRcdH1cblx0XHRcdGNhc2UgQXR0YWNobWVudFR5cGUuQm91bmRpbmdCb3g6IHtcblx0XHRcdFx0Y29uc3QgdmVydGljZXMgPSB0aGlzLnJlYWRWZXJ0aWNlcyhpbnB1dCwgKGZsYWdzICYgMTYpICE9PSAwKTtcblx0XHRcdFx0Y29uc3QgY29sb3IgPSBub25lc3NlbnRpYWwgPyBpbnB1dC5yZWFkSW50MzIoKSA6IDA7XG5cblx0XHRcdFx0Y29uc3QgYm94ID0gdGhpcy5hdHRhY2htZW50TG9hZGVyLm5ld0JvdW5kaW5nQm94QXR0YWNobWVudChza2luLCBwbGFjZWhvbGRlciwgbmFtZSk7XG5cdFx0XHRcdGlmICghYm94KSByZXR1cm4gbnVsbDtcblx0XHRcdFx0Ym94LndvcmxkVmVydGljZXNMZW5ndGggPSB2ZXJ0aWNlcy5sZW5ndGg7XG5cdFx0XHRcdGJveC52ZXJ0aWNlcyA9IHZlcnRpY2VzLnZlcnRpY2VzO1xuXHRcdFx0XHRib3guYm9uZXMgPSB2ZXJ0aWNlcy5ib25lcztcblx0XHRcdFx0aWYgKG5vbmVzc2VudGlhbCkgQ29sb3IucmdiYTg4ODhUb0NvbG9yKGJveC5jb2xvciwgY29sb3IpO1xuXHRcdFx0XHRyZXR1cm4gYm94O1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBBdHRhY2htZW50VHlwZS5NZXNoOiB7XG5cdFx0XHRcdGxldCBwYXRoID0gKGZsYWdzICYgMTYpICE9PSAwID8gaW5wdXQucmVhZFN0cmluZ1JlZigpIDogbmFtZTtcblx0XHRcdFx0Y29uc3QgY29sb3IgPSAoZmxhZ3MgJiAzMikgIT09IDAgPyBpbnB1dC5yZWFkSW50MzIoKSA6IDB4ZmZmZmZmZmY7XG5cdFx0XHRcdGNvbnN0IHNlcXVlbmNlID0gdGhpcy5yZWFkU2VxdWVuY2UoaW5wdXQsIChmbGFncyAmIDY0KSAhPT0gMCk7XG5cdFx0XHRcdGNvbnN0IGh1bGxMZW5ndGggPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0XHRjb25zdCB2ZXJ0aWNlcyA9IHRoaXMucmVhZFZlcnRpY2VzKGlucHV0LCAoZmxhZ3MgJiAxMjgpICE9PSAwKTtcblx0XHRcdFx0Y29uc3QgdXZzID0gdGhpcy5yZWFkRmxvYXRBcnJheShpbnB1dCwgdmVydGljZXMubGVuZ3RoLCAxKTtcblx0XHRcdFx0Y29uc3QgdHJpYW5nbGVzID0gdGhpcy5yZWFkU2hvcnRBcnJheShpbnB1dCwgKHZlcnRpY2VzLmxlbmd0aCAtIGh1bGxMZW5ndGggLSAyKSAqIDMpO1xuXG5cdFx0XHRcdGNvbnN0IHNsb3RDb3VudCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRcdGxldCB0aW1lbGluZVNsb3RzID0gbnVsbDtcblx0XHRcdFx0aWYgKHNsb3RDb3VudCA+IDApIHtcblx0XHRcdFx0XHR0aW1lbGluZVNsb3RzID0gW107XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzbG90Q291bnQ7IGkrKylcblx0XHRcdFx0XHRcdHRpbWVsaW5lU2xvdHNbaV0gPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0bGV0IGVkZ2VzOiBudW1iZXJbXSA9IFtdO1xuXHRcdFx0XHRsZXQgd2lkdGggPSAwLCBoZWlnaHQgPSAwO1xuXHRcdFx0XHRpZiAobm9uZXNzZW50aWFsKSB7XG5cdFx0XHRcdFx0ZWRnZXMgPSB0aGlzLnJlYWRTaG9ydEFycmF5KGlucHV0LCBpbnB1dC5yZWFkSW50KHRydWUpKTtcblx0XHRcdFx0XHR3aWR0aCA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdGhlaWdodCA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCFwYXRoKSBwYXRoID0gbmFtZTtcblx0XHRcdFx0Y29uc3QgbWVzaCA9IHRoaXMuYXR0YWNobWVudExvYWRlci5uZXdNZXNoQXR0YWNobWVudChza2luLCBwbGFjZWhvbGRlciwgbmFtZSwgcGF0aCwgc2VxdWVuY2UpO1xuXHRcdFx0XHRpZiAoIW1lc2gpIHJldHVybiBudWxsO1xuXHRcdFx0XHRtZXNoLnBhdGggPSBwYXRoO1xuXHRcdFx0XHRDb2xvci5yZ2JhODg4OFRvQ29sb3IobWVzaC5jb2xvciwgY29sb3IpO1xuXHRcdFx0XHRtZXNoLmh1bGxMZW5ndGggPSBodWxsTGVuZ3RoIDw8IDE7XG5cdFx0XHRcdG1lc2guYm9uZXMgPSB2ZXJ0aWNlcy5ib25lcztcblx0XHRcdFx0bWVzaC52ZXJ0aWNlcyA9IHZlcnRpY2VzLnZlcnRpY2VzO1xuXHRcdFx0XHRtZXNoLndvcmxkVmVydGljZXNMZW5ndGggPSB2ZXJ0aWNlcy5sZW5ndGg7XG5cdFx0XHRcdG1lc2gucmVnaW9uVVZzID0gdXZzO1xuXHRcdFx0XHRtZXNoLnRyaWFuZ2xlcyA9IHRyaWFuZ2xlcztcblx0XHRcdFx0aWYgKHRpbWVsaW5lU2xvdHMpIG1lc2gudGltZWxpbmVTbG90cyA9IHRpbWVsaW5lU2xvdHM7XG5cdFx0XHRcdGlmIChub25lc3NlbnRpYWwpIHtcblx0XHRcdFx0XHRtZXNoLmVkZ2VzID0gZWRnZXM7XG5cdFx0XHRcdFx0bWVzaC53aWR0aCA9IHdpZHRoICogc2NhbGU7XG5cdFx0XHRcdFx0bWVzaC5oZWlnaHQgPSBoZWlnaHQgKiBzY2FsZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRtZXNoLnVwZGF0ZVNlcXVlbmNlKCk7XG5cdFx0XHRcdHJldHVybiBtZXNoO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBBdHRhY2htZW50VHlwZS5MaW5rZWRNZXNoOiB7XG5cdFx0XHRcdGNvbnN0IHBhdGggPSAoZmxhZ3MgJiAxNikgIT09IDAgPyBpbnB1dC5yZWFkU3RyaW5nUmVmKCkgOiBuYW1lO1xuXHRcdFx0XHRpZiAocGF0aCA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJQYXRoIG9mIGxpbmtlZCBtZXNoIG11c3Qgbm90IGJlIG51bGxcIik7XG5cdFx0XHRcdGNvbnN0IGNvbG9yID0gKGZsYWdzICYgMzIpICE9PSAwID8gaW5wdXQucmVhZEludDMyKCkgOiAweGZmZmZmZmZmO1xuXHRcdFx0XHRjb25zdCBzZXF1ZW5jZSA9IHRoaXMucmVhZFNlcXVlbmNlKGlucHV0LCAoZmxhZ3MgJiA2NCkgIT09IDApO1xuXHRcdFx0XHRjb25zdCBpbmhlcml0VGltZWxpbmVzID0gKGZsYWdzICYgMTI4KSAhPT0gMDtcblx0XHRcdFx0Y29uc3Qgc291cmNlSW5kZXggPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0XHRjb25zdCBza2luSW5kZXggPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0XHRjb25zdCBzb3VyY2UgPSBpbnB1dC5yZWFkU3RyaW5nUmVmKCk7XG5cdFx0XHRcdGxldCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7XG5cdFx0XHRcdGlmIChub25lc3NlbnRpYWwpIHtcblx0XHRcdFx0XHR3aWR0aCA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdGhlaWdodCA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgbWVzaCA9IHRoaXMuYXR0YWNobWVudExvYWRlci5uZXdNZXNoQXR0YWNobWVudChza2luLCBwbGFjZWhvbGRlciwgbmFtZSwgcGF0aCwgc2VxdWVuY2UpO1xuXHRcdFx0XHRpZiAoIW1lc2gpIHJldHVybiBudWxsO1xuXHRcdFx0XHRtZXNoLnBhdGggPSBwYXRoO1xuXHRcdFx0XHRDb2xvci5yZ2JhODg4OFRvQ29sb3IobWVzaC5jb2xvciwgY29sb3IpO1xuXHRcdFx0XHRpZiAobm9uZXNzZW50aWFsKSB7XG5cdFx0XHRcdFx0bWVzaC53aWR0aCA9IHdpZHRoICogc2NhbGU7XG5cdFx0XHRcdFx0bWVzaC5oZWlnaHQgPSBoZWlnaHQgKiBzY2FsZTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLmxpbmtlZE1lc2hlcy5wdXNoKG5ldyBMaW5rZWRNZXNoKG1lc2gsIHNraW5JbmRleCwgc2xvdEluZGV4LCBzb3VyY2VJbmRleCwgc291cmNlLCBpbmhlcml0VGltZWxpbmVzKSk7XG5cdFx0XHRcdHJldHVybiBtZXNoO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBBdHRhY2htZW50VHlwZS5QYXRoOiB7XG5cdFx0XHRcdGNvbnN0IGNsb3NlZCA9IChmbGFncyAmIDE2KSAhPT0gMDtcblx0XHRcdFx0Y29uc3QgY29uc3RhbnRTcGVlZCA9IChmbGFncyAmIDMyKSAhPT0gMDtcblx0XHRcdFx0Y29uc3QgdmVydGljZXMgPSB0aGlzLnJlYWRWZXJ0aWNlcyhpbnB1dCwgKGZsYWdzICYgNjQpICE9PSAwKTtcblxuXHRcdFx0XHRjb25zdCBsZW5ndGhzID0gdGhpcy5yZWFkRmxvYXRBcnJheShpbnB1dCwgdmVydGljZXMubGVuZ3RoIC8gNiwgc2NhbGUpO1xuXHRcdFx0XHRjb25zdCBjb2xvciA9IG5vbmVzc2VudGlhbCA/IGlucHV0LnJlYWRJbnQzMigpIDogMDtcblxuXHRcdFx0XHRjb25zdCBwYXRoID0gdGhpcy5hdHRhY2htZW50TG9hZGVyLm5ld1BhdGhBdHRhY2htZW50KHNraW4sIHBsYWNlaG9sZGVyLCBuYW1lKTtcblx0XHRcdFx0aWYgKCFwYXRoKSByZXR1cm4gbnVsbDtcblx0XHRcdFx0cGF0aC5jbG9zZWQgPSBjbG9zZWQ7XG5cdFx0XHRcdHBhdGguY29uc3RhbnRTcGVlZCA9IGNvbnN0YW50U3BlZWQ7XG5cdFx0XHRcdHBhdGgud29ybGRWZXJ0aWNlc0xlbmd0aCA9IHZlcnRpY2VzLmxlbmd0aDtcblx0XHRcdFx0cGF0aC52ZXJ0aWNlcyA9IHZlcnRpY2VzLnZlcnRpY2VzO1xuXHRcdFx0XHRwYXRoLmJvbmVzID0gdmVydGljZXMuYm9uZXM7XG5cdFx0XHRcdHBhdGgubGVuZ3RocyA9IGxlbmd0aHM7XG5cdFx0XHRcdGlmIChub25lc3NlbnRpYWwpIENvbG9yLnJnYmE4ODg4VG9Db2xvcihwYXRoLmNvbG9yLCBjb2xvcik7XG5cdFx0XHRcdHJldHVybiBwYXRoO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBBdHRhY2htZW50VHlwZS5Qb2ludDoge1xuXHRcdFx0XHRjb25zdCByb3RhdGlvbiA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRjb25zdCB4ID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdGNvbnN0IHkgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0Y29uc3QgY29sb3IgPSBub25lc3NlbnRpYWwgPyBpbnB1dC5yZWFkSW50MzIoKSA6IDA7XG5cblx0XHRcdFx0Y29uc3QgcG9pbnQgPSB0aGlzLmF0dGFjaG1lbnRMb2FkZXIubmV3UG9pbnRBdHRhY2htZW50KHNraW4sIHBsYWNlaG9sZGVyLCBuYW1lKTtcblx0XHRcdFx0aWYgKCFwb2ludCkgcmV0dXJuIG51bGw7XG5cdFx0XHRcdHBvaW50LnggPSB4ICogc2NhbGU7XG5cdFx0XHRcdHBvaW50LnkgPSB5ICogc2NhbGU7XG5cdFx0XHRcdHBvaW50LnJvdGF0aW9uID0gcm90YXRpb247XG5cdFx0XHRcdGlmIChub25lc3NlbnRpYWwpIENvbG9yLnJnYmE4ODg4VG9Db2xvcihwb2ludC5jb2xvciwgY29sb3IpO1xuXHRcdFx0XHRyZXR1cm4gcG9pbnQ7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIEF0dGFjaG1lbnRUeXBlLkNsaXBwaW5nOiB7XG5cdFx0XHRcdGNvbnN0IGVuZFNsb3RJbmRleCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRcdGNvbnN0IHZlcnRpY2VzID0gdGhpcy5yZWFkVmVydGljZXMoaW5wdXQsIChmbGFncyAmIDE2KSAhPT0gMCk7XG5cdFx0XHRcdGNvbnN0IGNvbG9yID0gbm9uZXNzZW50aWFsID8gaW5wdXQucmVhZEludDMyKCkgOiAwO1xuXG5cdFx0XHRcdGNvbnN0IGNsaXAgPSB0aGlzLmF0dGFjaG1lbnRMb2FkZXIubmV3Q2xpcHBpbmdBdHRhY2htZW50KHNraW4sIHBsYWNlaG9sZGVyLCBuYW1lKTtcblx0XHRcdFx0aWYgKCFjbGlwKSByZXR1cm4gbnVsbDtcblx0XHRcdFx0Y2xpcC5lbmRTbG90ID0gc2tlbGV0b25EYXRhLnNsb3RzW2VuZFNsb3RJbmRleF07XG5cdFx0XHRcdGNsaXAuY29udmV4ID0gKGZsYWdzICYgMzIpICE9PSAwO1xuXHRcdFx0XHRjbGlwLmludmVyc2UgPSAoZmxhZ3MgJiA2NCkgIT09IDA7XG5cdFx0XHRcdGNsaXAud29ybGRWZXJ0aWNlc0xlbmd0aCA9IHZlcnRpY2VzLmxlbmd0aDtcblx0XHRcdFx0Y2xpcC52ZXJ0aWNlcyA9IHZlcnRpY2VzLnZlcnRpY2VzO1xuXHRcdFx0XHRjbGlwLmJvbmVzID0gdmVydGljZXMuYm9uZXM7XG5cdFx0XHRcdGlmIChub25lc3NlbnRpYWwpIENvbG9yLnJnYmE4ODg4VG9Db2xvcihjbGlwLmNvbG9yLCBjb2xvcik7XG5cdFx0XHRcdHJldHVybiBjbGlwO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgcmVhZFNlcXVlbmNlIChpbnB1dDogQmluYXJ5SW5wdXQsIGhhc1BhdGhTdWZmaXg6IGJvb2xlYW4pIHtcblx0XHRpZiAoIWhhc1BhdGhTdWZmaXgpIHJldHVybiBuZXcgU2VxdWVuY2UoMSwgZmFsc2UpO1xuXHRcdGNvbnN0IHNlcXVlbmNlID0gbmV3IFNlcXVlbmNlKGlucHV0LnJlYWRJbnQodHJ1ZSksIHRydWUpO1xuXHRcdHNlcXVlbmNlLnN0YXJ0ID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHRzZXF1ZW5jZS5kaWdpdHMgPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdHNlcXVlbmNlLnNldHVwSW5kZXggPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdHJldHVybiBzZXF1ZW5jZTtcblx0fVxuXG5cdHByaXZhdGUgcmVhZFZlcnRpY2VzIChpbnB1dDogQmluYXJ5SW5wdXQsIHdlaWdodGVkOiBib29sZWFuKTogVmVydGljZXMge1xuXHRcdGNvbnN0IHNjYWxlID0gdGhpcy5zY2FsZTtcblx0XHRjb25zdCB2ZXJ0ZXhDb3VudCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0Y29uc3QgbGVuZ3RoID0gdmVydGV4Q291bnQgPDwgMTtcblxuXHRcdGlmICghd2VpZ2h0ZWQpXG5cdFx0XHRyZXR1cm4gbmV3IFZlcnRpY2VzKG51bGwsIHRoaXMucmVhZEZsb2F0QXJyYXkoaW5wdXQsIGxlbmd0aCwgc2NhbGUpLCBsZW5ndGgpO1xuXG5cdFx0Y29uc3QgbiA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0Y29uc3QgYm9uZXM6IG51bWJlcltdID0gW107XG5cdFx0Y29uc3Qgd2VpZ2h0czogbnVtYmVyW10gPSBbXTtcblx0XHRmb3IgKGxldCBiID0gMCwgdyA9IDA7IGIgPCBuOykge1xuXHRcdFx0Y29uc3QgYm9uZUNvdW50ID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHRcdGJvbmVzW2IrK10gPSBib25lQ291bnQ7XG5cdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgYm9uZUNvdW50OyBpaSsrLCB3ICs9IDMpIHtcblx0XHRcdFx0Ym9uZXNbYisrXSA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRcdHdlaWdodHNbd10gPSBpbnB1dC5yZWFkRmxvYXQoKSAqIHNjYWxlO1xuXHRcdFx0XHR3ZWlnaHRzW3cgKyAxXSA9IGlucHV0LnJlYWRGbG9hdCgpICogc2NhbGU7XG5cdFx0XHRcdHdlaWdodHNbdyArIDJdID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBuZXcgVmVydGljZXMoYm9uZXMsIFV0aWxzLnRvRmxvYXRBcnJheSh3ZWlnaHRzKSwgbGVuZ3RoKTtcblx0fVxuXG5cdHByaXZhdGUgcmVhZEZsb2F0QXJyYXkgKGlucHV0OiBCaW5hcnlJbnB1dCwgbjogbnVtYmVyLCBzY2FsZTogbnVtYmVyKTogbnVtYmVyW10ge1xuXHRcdGNvbnN0IGFycmF5OiBudW1iZXJbXSA9IFtdO1xuXHRcdGlmIChzY2FsZSA9PT0gMSkge1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspXG5cdFx0XHRcdGFycmF5W2ldID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKVxuXHRcdFx0XHRhcnJheVtpXSA9IGlucHV0LnJlYWRGbG9hdCgpICogc2NhbGU7XG5cdFx0fVxuXHRcdHJldHVybiBhcnJheTtcblx0fVxuXG5cdHByaXZhdGUgcmVhZFNob3J0QXJyYXkgKGlucHV0OiBCaW5hcnlJbnB1dCwgbjogbnVtYmVyKTogbnVtYmVyW10ge1xuXHRcdGNvbnN0IGFycmF5OiBudW1iZXJbXSA9IFtdO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKVxuXHRcdFx0YXJyYXlbaV0gPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdHJldHVybiBhcnJheTtcblx0fVxuXG5cdHByaXZhdGUgcmVhZEFuaW1hdGlvbiAoaW5wdXQ6IEJpbmFyeUlucHV0LCBuYW1lOiBzdHJpbmcsIHNrZWxldG9uRGF0YTogU2tlbGV0b25EYXRhLCBub25lc3NlbnRpYWw6IGJvb2xlYW4pOiBBbmltYXRpb24ge1xuXHRcdGlucHV0LnJlYWRJbnQodHJ1ZSk7IC8vIE51bWJlciBvZiB0aW1lbGluZXMuXG5cdFx0Y29uc3QgdGltZWxpbmVzOiBUaW1lbGluZVtdID0gW107XG5cdFx0Y29uc3Qgc2NhbGUgPSB0aGlzLnNjYWxlO1xuXG5cdFx0Ly8gU2xvdCB0aW1lbGluZXMuXG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBpbnB1dC5yZWFkSW50KHRydWUpOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRjb25zdCBzbG90SW5kZXggPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0Zm9yIChsZXQgaWkgPSAwLCBubiA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7IGlpIDwgbm47IGlpKyspIHtcblx0XHRcdFx0Y29uc3QgdGltZWxpbmVUeXBlID0gaW5wdXQucmVhZEJ5dGUoKTtcblx0XHRcdFx0Y29uc3QgZnJhbWVDb3VudCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRcdGNvbnN0IGZyYW1lTGFzdCA9IGZyYW1lQ291bnQgLSAxO1xuXHRcdFx0XHRzd2l0Y2ggKHRpbWVsaW5lVHlwZSkge1xuXHRcdFx0XHRcdGNhc2UgU0xPVF9BVFRBQ0hNRU5UOiB7XG5cdFx0XHRcdFx0XHRjb25zdCB0aW1lbGluZSA9IG5ldyBBdHRhY2htZW50VGltZWxpbmUoZnJhbWVDb3VudCwgc2xvdEluZGV4KTtcblx0XHRcdFx0XHRcdGZvciAobGV0IGZyYW1lID0gMDsgZnJhbWUgPCBmcmFtZUNvdW50OyBmcmFtZSsrKVxuXHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgaW5wdXQucmVhZEZsb2F0KCksIGlucHV0LnJlYWRTdHJpbmdSZWYoKSk7XG5cdFx0XHRcdFx0XHR0aW1lbGluZXMucHVzaCh0aW1lbGluZSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSBTTE9UX1JHQkE6IHtcblx0XHRcdFx0XHRcdGNvbnN0IGJlemllckNvdW50ID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHRcdFx0XHRcdGNvbnN0IHRpbWVsaW5lID0gbmV3IFJHQkFUaW1lbGluZShmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgc2xvdEluZGV4KTtcblxuXHRcdFx0XHRcdFx0bGV0IHRpbWUgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRcdGxldCByID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cdFx0XHRcdFx0XHRsZXQgZyA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXHRcdFx0XHRcdFx0bGV0IGIgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblx0XHRcdFx0XHRcdGxldCBhID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cblx0XHRcdFx0XHRcdGZvciAobGV0IGZyYW1lID0gMCwgYmV6aWVyID0gMDsgOyBmcmFtZSsrKSB7XG5cdFx0XHRcdFx0XHRcdHRpbWVsaW5lLnNldEZyYW1lKGZyYW1lLCB0aW1lLCByLCBnLCBiLCBhKTtcblx0XHRcdFx0XHRcdFx0aWYgKGZyYW1lID09PSBmcmFtZUxhc3QpIGJyZWFrO1xuXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHRpbWUyID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHIyID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGcyID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGIyID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGEyID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cblx0XHRcdFx0XHRcdFx0c3dpdGNoIChpbnB1dC5yZWFkQnl0ZSgpKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBDVVJWRV9TVEVQUEVEOlxuXHRcdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0U3RlcHBlZChmcmFtZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRjYXNlIENVUlZFX0JFWklFUjpcblx0XHRcdFx0XHRcdFx0XHRcdHNldEJlemllcihpbnB1dCwgdGltZWxpbmUsIGJlemllcisrLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIHIsIHIyLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRcdHNldEJlemllcihpbnB1dCwgdGltZWxpbmUsIGJlemllcisrLCBmcmFtZSwgMSwgdGltZSwgdGltZTIsIGcsIGcyLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRcdHNldEJlemllcihpbnB1dCwgdGltZWxpbmUsIGJlemllcisrLCBmcmFtZSwgMiwgdGltZSwgdGltZTIsIGIsIGIyLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRcdHNldEJlemllcihpbnB1dCwgdGltZWxpbmUsIGJlemllcisrLCBmcmFtZSwgMywgdGltZSwgdGltZTIsIGEsIGEyLCAxKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR0aW1lID0gdGltZTI7XG5cdFx0XHRcdFx0XHRcdHIgPSByMjtcblx0XHRcdFx0XHRcdFx0ZyA9IGcyO1xuXHRcdFx0XHRcdFx0XHRiID0gYjI7XG5cdFx0XHRcdFx0XHRcdGEgPSBhMjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlIFNMT1RfUkdCOiB7XG5cdFx0XHRcdFx0XHRjb25zdCBiZXppZXJDb3VudCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRcdFx0XHRjb25zdCB0aW1lbGluZSA9IG5ldyBSR0JUaW1lbGluZShmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgc2xvdEluZGV4KTtcblxuXHRcdFx0XHRcdFx0bGV0IHRpbWUgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRcdGxldCByID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cdFx0XHRcdFx0XHRsZXQgZyA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXHRcdFx0XHRcdFx0bGV0IGIgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblxuXHRcdFx0XHRcdFx0Zm9yIChsZXQgZnJhbWUgPSAwLCBiZXppZXIgPSAwOyA7IGZyYW1lKyspIHtcblx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIHRpbWUsIHIsIGcsIGIpO1xuXHRcdFx0XHRcdFx0XHRpZiAoZnJhbWUgPT09IGZyYW1lTGFzdCkgYnJlYWs7XG5cblx0XHRcdFx0XHRcdFx0Y29uc3QgdGltZTIgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgcjIgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblx0XHRcdFx0XHRcdFx0Y29uc3QgZzIgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblx0XHRcdFx0XHRcdFx0Y29uc3QgYjIgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblxuXHRcdFx0XHRcdFx0XHRzd2l0Y2ggKGlucHV0LnJlYWRCeXRlKCkpIHtcblx0XHRcdFx0XHRcdFx0XHRjYXNlIENVUlZFX1NURVBQRUQ6XG5cdFx0XHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRTdGVwcGVkKGZyYW1lKTtcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgQ1VSVkVfQkVaSUVSOlxuXHRcdFx0XHRcdFx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCAwLCB0aW1lLCB0aW1lMiwgciwgcjIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgZywgZzIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCAyLCB0aW1lLCB0aW1lMiwgYiwgYjIsIDEpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHRpbWUgPSB0aW1lMjtcblx0XHRcdFx0XHRcdFx0ciA9IHIyO1xuXHRcdFx0XHRcdFx0XHRnID0gZzI7XG5cdFx0XHRcdFx0XHRcdGIgPSBiMjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlIFNMT1RfUkdCQTI6IHtcblx0XHRcdFx0XHRcdGNvbnN0IGJlemllckNvdW50ID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHRcdFx0XHRcdGNvbnN0IHRpbWVsaW5lID0gbmV3IFJHQkEyVGltZWxpbmUoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIHNsb3RJbmRleCk7XG5cblx0XHRcdFx0XHRcdGxldCB0aW1lID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0XHRsZXQgciA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXHRcdFx0XHRcdFx0bGV0IGcgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblx0XHRcdFx0XHRcdGxldCBiID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cdFx0XHRcdFx0XHRsZXQgYSA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXHRcdFx0XHRcdFx0bGV0IHIyID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cdFx0XHRcdFx0XHRsZXQgZzIgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblx0XHRcdFx0XHRcdGxldCBiMiA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXG5cdFx0XHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDAsIGJlemllciA9IDA7IDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgciwgZywgYiwgYSwgcjIsIGcyLCBiMik7XG5cdFx0XHRcdFx0XHRcdGlmIChmcmFtZSA9PT0gZnJhbWVMYXN0KSBicmVhaztcblx0XHRcdFx0XHRcdFx0Y29uc3QgdGltZTIgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbnIgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbmcgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbmIgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbmEgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbnIyID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG5nMiA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBuYjIgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblxuXHRcdFx0XHRcdFx0XHRzd2l0Y2ggKGlucHV0LnJlYWRCeXRlKCkpIHtcblx0XHRcdFx0XHRcdFx0XHRjYXNlIENVUlZFX1NURVBQRUQ6XG5cdFx0XHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRTdGVwcGVkKGZyYW1lKTtcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgQ1VSVkVfQkVaSUVSOlxuXHRcdFx0XHRcdFx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCAwLCB0aW1lLCB0aW1lMiwgciwgbnIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgZywgbmcsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCAyLCB0aW1lLCB0aW1lMiwgYiwgbmIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCAzLCB0aW1lLCB0aW1lMiwgYSwgbmEsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCA0LCB0aW1lLCB0aW1lMiwgcjIsIG5yMiwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRzZXRCZXppZXIoaW5wdXQsIHRpbWVsaW5lLCBiZXppZXIrKywgZnJhbWUsIDUsIHRpbWUsIHRpbWUyLCBnMiwgbmcyLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRcdHNldEJlemllcihpbnB1dCwgdGltZWxpbmUsIGJlemllcisrLCBmcmFtZSwgNiwgdGltZSwgdGltZTIsIGIyLCBuYjIsIDEpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHRpbWUgPSB0aW1lMjtcblx0XHRcdFx0XHRcdFx0ciA9IG5yO1xuXHRcdFx0XHRcdFx0XHRnID0gbmc7XG5cdFx0XHRcdFx0XHRcdGIgPSBuYjtcblx0XHRcdFx0XHRcdFx0YSA9IG5hO1xuXHRcdFx0XHRcdFx0XHRyMiA9IG5yMjtcblx0XHRcdFx0XHRcdFx0ZzIgPSBuZzI7XG5cdFx0XHRcdFx0XHRcdGIyID0gbmIyO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgU0xPVF9SR0IyOiB7XG5cdFx0XHRcdFx0XHRjb25zdCBiZXppZXJDb3VudCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRcdFx0XHRjb25zdCB0aW1lbGluZSA9IG5ldyBSR0IyVGltZWxpbmUoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIHNsb3RJbmRleCk7XG5cblx0XHRcdFx0XHRcdGxldCB0aW1lID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0XHRsZXQgciA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXHRcdFx0XHRcdFx0bGV0IGcgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblx0XHRcdFx0XHRcdGxldCBiID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cdFx0XHRcdFx0XHRsZXQgcjIgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblx0XHRcdFx0XHRcdGxldCBnMiA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXHRcdFx0XHRcdFx0bGV0IGIyID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cblx0XHRcdFx0XHRcdGZvciAobGV0IGZyYW1lID0gMCwgYmV6aWVyID0gMDsgOyBmcmFtZSsrKSB7XG5cdFx0XHRcdFx0XHRcdHRpbWVsaW5lLnNldEZyYW1lKGZyYW1lLCB0aW1lLCByLCBnLCBiLCByMiwgZzIsIGIyKTtcblx0XHRcdFx0XHRcdFx0aWYgKGZyYW1lID09PSBmcmFtZUxhc3QpIGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRjb25zdCB0aW1lMiA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBuciA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBuZyA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBuYiA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBucjIgPSBpbnB1dC5yZWFkVW5zaWduZWRCeXRlKCkgLyAyNTUuMDtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbmcyID0gaW5wdXQucmVhZFVuc2lnbmVkQnl0ZSgpIC8gMjU1LjA7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG5iMiA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NS4wO1xuXG5cdFx0XHRcdFx0XHRcdHN3aXRjaCAoaW5wdXQucmVhZEJ5dGUoKSkge1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgQ1VSVkVfU1RFUFBFRDpcblx0XHRcdFx0XHRcdFx0XHRcdHRpbWVsaW5lLnNldFN0ZXBwZWQoZnJhbWUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBDVVJWRV9CRVpJRVI6XG5cdFx0XHRcdFx0XHRcdFx0XHRzZXRCZXppZXIoaW5wdXQsIHRpbWVsaW5lLCBiZXppZXIrKywgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCByLCBuciwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRzZXRCZXppZXIoaW5wdXQsIHRpbWVsaW5lLCBiZXppZXIrKywgZnJhbWUsIDEsIHRpbWUsIHRpbWUyLCBnLCBuZywgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRzZXRCZXppZXIoaW5wdXQsIHRpbWVsaW5lLCBiZXppZXIrKywgZnJhbWUsIDIsIHRpbWUsIHRpbWUyLCBiLCBuYiwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRzZXRCZXppZXIoaW5wdXQsIHRpbWVsaW5lLCBiZXppZXIrKywgZnJhbWUsIDMsIHRpbWUsIHRpbWUyLCByMiwgbnIyLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRcdHNldEJlemllcihpbnB1dCwgdGltZWxpbmUsIGJlemllcisrLCBmcmFtZSwgNCwgdGltZSwgdGltZTIsIGcyLCBuZzIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCA1LCB0aW1lLCB0aW1lMiwgYjIsIG5iMiwgMSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0dGltZSA9IHRpbWUyO1xuXHRcdFx0XHRcdFx0XHRyID0gbnI7XG5cdFx0XHRcdFx0XHRcdGcgPSBuZztcblx0XHRcdFx0XHRcdFx0YiA9IG5iO1xuXHRcdFx0XHRcdFx0XHRyMiA9IG5yMjtcblx0XHRcdFx0XHRcdFx0ZzIgPSBuZzI7XG5cdFx0XHRcdFx0XHRcdGIyID0gbmIyO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgU0xPVF9BTFBIQToge1xuXHRcdFx0XHRcdFx0Y29uc3QgdGltZWxpbmUgPSBuZXcgQWxwaGFUaW1lbGluZShmcmFtZUNvdW50LCBpbnB1dC5yZWFkSW50KHRydWUpLCBzbG90SW5kZXgpO1xuXHRcdFx0XHRcdFx0bGV0IHRpbWUgPSBpbnB1dC5yZWFkRmxvYXQoKSwgYSA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NTtcblx0XHRcdFx0XHRcdGZvciAobGV0IGZyYW1lID0gMCwgYmV6aWVyID0gMDsgOyBmcmFtZSsrKSB7XG5cdFx0XHRcdFx0XHRcdHRpbWVsaW5lLnNldEZyYW1lKGZyYW1lLCB0aW1lLCBhKTtcblx0XHRcdFx0XHRcdFx0aWYgKGZyYW1lID09PSBmcmFtZUxhc3QpIGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRjb25zdCB0aW1lMiA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBhMiA9IGlucHV0LnJlYWRVbnNpZ25lZEJ5dGUoKSAvIDI1NTtcblx0XHRcdFx0XHRcdFx0c3dpdGNoIChpbnB1dC5yZWFkQnl0ZSgpKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBDVVJWRV9TVEVQUEVEOlxuXHRcdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0U3RlcHBlZChmcmFtZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRjYXNlIENVUlZFX0JFWklFUjpcblx0XHRcdFx0XHRcdFx0XHRcdHNldEJlemllcihpbnB1dCwgdGltZWxpbmUsIGJlemllcisrLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIGEsIGEyLCAxKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR0aW1lID0gdGltZTI7XG5cdFx0XHRcdFx0XHRcdGEgPSBhMjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBCb25lIHRpbWVsaW5lcy5cblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7IGkgPCBuOyBpKyspIHtcblx0XHRcdGNvbnN0IGJvbmVJbmRleCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRmb3IgKGxldCBpaSA9IDAsIG5uID0gaW5wdXQucmVhZEludCh0cnVlKTsgaWkgPCBubjsgaWkrKykge1xuXHRcdFx0XHRjb25zdCB0eXBlID0gaW5wdXQucmVhZEJ5dGUoKSwgZnJhbWVDb3VudCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRcdGlmICh0eXBlID09PSBCT05FX0lOSEVSSVQpIHtcblx0XHRcdFx0XHRjb25zdCB0aW1lbGluZSA9IG5ldyBJbmhlcml0VGltZWxpbmUoZnJhbWVDb3VudCwgYm9uZUluZGV4KTtcblx0XHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDA7IGZyYW1lIDwgZnJhbWVDb3VudDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIGlucHV0LnJlYWRGbG9hdCgpLCBpbnB1dC5yZWFkQnl0ZSgpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IGJlemllckNvdW50ID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHRcdFx0c3dpdGNoICh0eXBlKSB7XG5cdFx0XHRcdFx0Y2FzZSBCT05FX1JPVEFURTogcmVhZFRpbWVsaW5lKGlucHV0LCB0aW1lbGluZXMsIG5ldyBSb3RhdGVUaW1lbGluZShmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgYm9uZUluZGV4KSwgMSk7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgQk9ORV9UUkFOU0xBVEU6IHJlYWRUaW1lbGluZShpbnB1dCwgdGltZWxpbmVzLCBuZXcgVHJhbnNsYXRlVGltZWxpbmUoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIGJvbmVJbmRleCksIHNjYWxlKTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBCT05FX1RSQU5TTEFURVg6IHJlYWRUaW1lbGluZShpbnB1dCwgdGltZWxpbmVzLCBuZXcgVHJhbnNsYXRlWFRpbWVsaW5lKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBib25lSW5kZXgpLCBzY2FsZSk7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgQk9ORV9UUkFOU0xBVEVZOiByZWFkVGltZWxpbmUoaW5wdXQsIHRpbWVsaW5lcywgbmV3IFRyYW5zbGF0ZVlUaW1lbGluZShmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgYm9uZUluZGV4KSwgc2NhbGUpOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIEJPTkVfU0NBTEU6IHJlYWRUaW1lbGluZShpbnB1dCwgdGltZWxpbmVzLCBuZXcgU2NhbGVUaW1lbGluZShmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgYm9uZUluZGV4KSwgMSk7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgQk9ORV9TQ0FMRVg6IHJlYWRUaW1lbGluZShpbnB1dCwgdGltZWxpbmVzLCBuZXcgU2NhbGVYVGltZWxpbmUoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIGJvbmVJbmRleCksIDEpOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIEJPTkVfU0NBTEVZOiByZWFkVGltZWxpbmUoaW5wdXQsIHRpbWVsaW5lcywgbmV3IFNjYWxlWVRpbWVsaW5lKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBib25lSW5kZXgpLCAxKTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBCT05FX1NIRUFSOiByZWFkVGltZWxpbmUoaW5wdXQsIHRpbWVsaW5lcywgbmV3IFNoZWFyVGltZWxpbmUoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIGJvbmVJbmRleCksIDEpOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIEJPTkVfU0hFQVJYOiByZWFkVGltZWxpbmUoaW5wdXQsIHRpbWVsaW5lcywgbmV3IFNoZWFyWFRpbWVsaW5lKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBib25lSW5kZXgpLCAxKTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBCT05FX1NIRUFSWTogcmVhZFRpbWVsaW5lKGlucHV0LCB0aW1lbGluZXMsIG5ldyBTaGVhcllUaW1lbGluZShmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgYm9uZUluZGV4KSwgMSk7IGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gSUsgY29uc3RyYWludCB0aW1lbGluZXMuXG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBpbnB1dC5yZWFkSW50KHRydWUpOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRjb25zdCBpbmRleCA9IGlucHV0LnJlYWRJbnQodHJ1ZSksIGZyYW1lQ291bnQgPSBpbnB1dC5yZWFkSW50KHRydWUpLCBmcmFtZUxhc3QgPSBmcmFtZUNvdW50IC0gMTtcblx0XHRcdGNvbnN0IHRpbWVsaW5lID0gbmV3IElrQ29uc3RyYWludFRpbWVsaW5lKGZyYW1lQ291bnQsIGlucHV0LnJlYWRJbnQodHJ1ZSksIGluZGV4KTtcblx0XHRcdGxldCBmbGFncyA9IGlucHV0LnJlYWRCeXRlKCk7XG5cdFx0XHRsZXQgdGltZSA9IGlucHV0LnJlYWRGbG9hdCgpLCBtaXggPSAoZmxhZ3MgJiAxKSAhPT0gMCA/ICgoZmxhZ3MgJiAyKSAhPT0gMCA/IGlucHV0LnJlYWRGbG9hdCgpIDogMSkgOiAwO1xuXHRcdFx0bGV0IHNvZnRuZXNzID0gKGZsYWdzICYgNCkgIT09IDAgPyBpbnB1dC5yZWFkRmxvYXQoKSAqIHNjYWxlIDogMDtcblx0XHRcdGZvciAobGV0IGZyYW1lID0gMCwgYmV6aWVyID0gMDsgOyBmcmFtZSsrKSB7XG5cdFx0XHRcdHRpbWVsaW5lLnNldEZyYW1lKGZyYW1lLCB0aW1lLCBtaXgsIHNvZnRuZXNzLCAoZmxhZ3MgJiA4KSAhPT0gMCA/IDEgOiAtMSwgKGZsYWdzICYgMTYpICE9PSAwLCAoZmxhZ3MgJiAzMikgIT09IDApO1xuXHRcdFx0XHRpZiAoZnJhbWUgPT09IGZyYW1lTGFzdCkgYnJlYWs7XG5cdFx0XHRcdGZsYWdzID0gaW5wdXQucmVhZEJ5dGUoKTtcblx0XHRcdFx0Y29uc3QgdGltZTIgPSBpbnB1dC5yZWFkRmxvYXQoKSwgbWl4MiA9IChmbGFncyAmIDEpICE9PSAwID8gKChmbGFncyAmIDIpICE9PSAwID8gaW5wdXQucmVhZEZsb2F0KCkgOiAxKSA6IDA7XG5cdFx0XHRcdGNvbnN0IHNvZnRuZXNzMiA9IChmbGFncyAmIDQpICE9PSAwID8gaW5wdXQucmVhZEZsb2F0KCkgKiBzY2FsZSA6IDA7XG5cdFx0XHRcdGlmICgoZmxhZ3MgJiA2NCkgIT09IDApIHtcblx0XHRcdFx0XHR0aW1lbGluZS5zZXRTdGVwcGVkKGZyYW1lKTtcblx0XHRcdFx0fSBlbHNlIGlmICgoZmxhZ3MgJiAxMjgpICE9PSAwKSB7XG5cdFx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCAwLCB0aW1lLCB0aW1lMiwgbWl4LCBtaXgyLCAxKTtcblx0XHRcdFx0XHRzZXRCZXppZXIoaW5wdXQsIHRpbWVsaW5lLCBiZXppZXIrKywgZnJhbWUsIDEsIHRpbWUsIHRpbWUyLCBzb2Z0bmVzcywgc29mdG5lc3MyLCBzY2FsZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGltZSA9IHRpbWUyO1xuXHRcdFx0XHRtaXggPSBtaXgyO1xuXHRcdFx0XHRzb2Z0bmVzcyA9IHNvZnRuZXNzMjtcblx0XHRcdH1cblx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHR9XG5cblx0XHQvLyBUcmFuc2Zvcm0gY29uc3RyYWludCB0aW1lbGluZXMuXG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBpbnB1dC5yZWFkSW50KHRydWUpOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRjb25zdCBpbmRleCA9IGlucHV0LnJlYWRJbnQodHJ1ZSksIGZyYW1lQ291bnQgPSBpbnB1dC5yZWFkSW50KHRydWUpLCBmcmFtZUxhc3QgPSBmcmFtZUNvdW50IC0gMTtcblx0XHRcdGNvbnN0IHRpbWVsaW5lID0gbmV3IFRyYW5zZm9ybUNvbnN0cmFpbnRUaW1lbGluZShmcmFtZUNvdW50LCBpbnB1dC5yZWFkSW50KHRydWUpLCBpbmRleCk7XG5cdFx0XHRsZXQgdGltZSA9IGlucHV0LnJlYWRGbG9hdCgpLCBtaXhSb3RhdGUgPSBpbnB1dC5yZWFkRmxvYXQoKSwgbWl4WCA9IGlucHV0LnJlYWRGbG9hdCgpLCBtaXhZID0gaW5wdXQucmVhZEZsb2F0KCksXG5cdFx0XHRcdG1peFNjYWxlWCA9IGlucHV0LnJlYWRGbG9hdCgpLCBtaXhTY2FsZVkgPSBpbnB1dC5yZWFkRmxvYXQoKSwgbWl4U2hlYXJZID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRmb3IgKGxldCBmcmFtZSA9IDAsIGJlemllciA9IDA7IDsgZnJhbWUrKykge1xuXHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgbWl4Um90YXRlLCBtaXhYLCBtaXhZLCBtaXhTY2FsZVgsIG1peFNjYWxlWSwgbWl4U2hlYXJZKTtcblx0XHRcdFx0aWYgKGZyYW1lID09PSBmcmFtZUxhc3QpIGJyZWFrO1xuXHRcdFx0XHRjb25zdCB0aW1lMiA9IGlucHV0LnJlYWRGbG9hdCgpLCBtaXhSb3RhdGUyID0gaW5wdXQucmVhZEZsb2F0KCksIG1peFgyID0gaW5wdXQucmVhZEZsb2F0KCksIG1peFkyID0gaW5wdXQucmVhZEZsb2F0KCksXG5cdFx0XHRcdFx0bWl4U2NhbGVYMiA9IGlucHV0LnJlYWRGbG9hdCgpLCBtaXhTY2FsZVkyID0gaW5wdXQucmVhZEZsb2F0KCksIG1peFNoZWFyWTIgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0c3dpdGNoIChpbnB1dC5yZWFkQnl0ZSgpKSB7XG5cdFx0XHRcdFx0Y2FzZSBDVVJWRV9TVEVQUEVEOlxuXHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0U3RlcHBlZChmcmFtZSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlIENVUlZFX0JFWklFUjpcblx0XHRcdFx0XHRcdHNldEJlemllcihpbnB1dCwgdGltZWxpbmUsIGJlemllcisrLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIG1peFJvdGF0ZSwgbWl4Um90YXRlMiwgMSk7XG5cdFx0XHRcdFx0XHRzZXRCZXppZXIoaW5wdXQsIHRpbWVsaW5lLCBiZXppZXIrKywgZnJhbWUsIDEsIHRpbWUsIHRpbWUyLCBtaXhYLCBtaXhYMiwgMSk7XG5cdFx0XHRcdFx0XHRzZXRCZXppZXIoaW5wdXQsIHRpbWVsaW5lLCBiZXppZXIrKywgZnJhbWUsIDIsIHRpbWUsIHRpbWUyLCBtaXhZLCBtaXhZMiwgMSk7XG5cdFx0XHRcdFx0XHRzZXRCZXppZXIoaW5wdXQsIHRpbWVsaW5lLCBiZXppZXIrKywgZnJhbWUsIDMsIHRpbWUsIHRpbWUyLCBtaXhTY2FsZVgsIG1peFNjYWxlWDIsIDEpO1xuXHRcdFx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCA0LCB0aW1lLCB0aW1lMiwgbWl4U2NhbGVZLCBtaXhTY2FsZVkyLCAxKTtcblx0XHRcdFx0XHRcdHNldEJlemllcihpbnB1dCwgdGltZWxpbmUsIGJlemllcisrLCBmcmFtZSwgNSwgdGltZSwgdGltZTIsIG1peFNoZWFyWSwgbWl4U2hlYXJZMiwgMSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGltZSA9IHRpbWUyO1xuXHRcdFx0XHRtaXhSb3RhdGUgPSBtaXhSb3RhdGUyO1xuXHRcdFx0XHRtaXhYID0gbWl4WDI7XG5cdFx0XHRcdG1peFkgPSBtaXhZMjtcblx0XHRcdFx0bWl4U2NhbGVYID0gbWl4U2NhbGVYMjtcblx0XHRcdFx0bWl4U2NhbGVZID0gbWl4U2NhbGVZMjtcblx0XHRcdFx0bWl4U2hlYXJZID0gbWl4U2hlYXJZMjtcblx0XHRcdH1cblx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHR9XG5cblx0XHQvLyBQYXRoIGNvbnN0cmFpbnQgdGltZWxpbmVzLlxuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gaW5wdXQucmVhZEludCh0cnVlKTsgaSA8IG47IGkrKykge1xuXHRcdFx0Y29uc3QgaW5kZXggPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0Y29uc3QgZGF0YSA9IHNrZWxldG9uRGF0YS5jb25zdHJhaW50c1tpbmRleF0gYXMgUGF0aENvbnN0cmFpbnREYXRhO1xuXHRcdFx0Zm9yIChsZXQgaWkgPSAwLCBubiA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7IGlpIDwgbm47IGlpKyspIHtcblx0XHRcdFx0Y29uc3QgdHlwZSA9IGlucHV0LnJlYWRCeXRlKCksIGZyYW1lQ291bnQgPSBpbnB1dC5yZWFkSW50KHRydWUpLCBiZXppZXJDb3VudCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0XHRcdGNhc2UgUEFUSF9QT1NJVElPTjpcblx0XHRcdFx0XHRcdHJlYWRUaW1lbGluZShpbnB1dCwgdGltZWxpbmVzLCBuZXcgUGF0aENvbnN0cmFpbnRQb3NpdGlvblRpbWVsaW5lKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBpbmRleCksXG5cdFx0XHRcdFx0XHRcdGRhdGEucG9zaXRpb25Nb2RlID09PSBQb3NpdGlvbk1vZGUuRml4ZWQgPyBzY2FsZSA6IDEpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBQQVRIX1NQQUNJTkc6XG5cdFx0XHRcdFx0XHRyZWFkVGltZWxpbmUoaW5wdXQsIHRpbWVsaW5lcywgbmV3IFBhdGhDb25zdHJhaW50U3BhY2luZ1RpbWVsaW5lKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBpbmRleCksXG5cdFx0XHRcdFx0XHRcdGRhdGEuc3BhY2luZ01vZGUgPT09IFNwYWNpbmdNb2RlLkxlbmd0aCB8fCBkYXRhLnNwYWNpbmdNb2RlID09PSBTcGFjaW5nTW9kZS5GaXhlZCA/IHNjYWxlIDogMSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlIFBBVEhfTUlYOiB7XG5cdFx0XHRcdFx0XHRjb25zdCB0aW1lbGluZSA9IG5ldyBQYXRoQ29uc3RyYWludE1peFRpbWVsaW5lKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBpbmRleCk7XG5cdFx0XHRcdFx0XHRsZXQgdGltZSA9IGlucHV0LnJlYWRGbG9hdCgpLCBtaXhSb3RhdGUgPSBpbnB1dC5yZWFkRmxvYXQoKSwgbWl4WCA9IGlucHV0LnJlYWRGbG9hdCgpLCBtaXhZID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDAsIGJlemllciA9IDAsIGZyYW1lTGFzdCA9IHRpbWVsaW5lLmdldEZyYW1lQ291bnQoKSAtIDE7IDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgbWl4Um90YXRlLCBtaXhYLCBtaXhZKTtcblx0XHRcdFx0XHRcdFx0aWYgKGZyYW1lID09PSBmcmFtZUxhc3QpIGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRjb25zdCB0aW1lMiA9IGlucHV0LnJlYWRGbG9hdCgpLCBtaXhSb3RhdGUyID0gaW5wdXQucmVhZEZsb2F0KCksIG1peFgyID0gaW5wdXQucmVhZEZsb2F0KCksXG5cdFx0XHRcdFx0XHRcdFx0bWl4WTIgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRcdFx0c3dpdGNoIChpbnB1dC5yZWFkQnl0ZSgpKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBDVVJWRV9TVEVQUEVEOlxuXHRcdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0U3RlcHBlZChmcmFtZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRjYXNlIENVUlZFX0JFWklFUjpcblx0XHRcdFx0XHRcdFx0XHRcdHNldEJlemllcihpbnB1dCwgdGltZWxpbmUsIGJlemllcisrLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIG1peFJvdGF0ZSwgbWl4Um90YXRlMiwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRzZXRCZXppZXIoaW5wdXQsIHRpbWVsaW5lLCBiZXppZXIrKywgZnJhbWUsIDEsIHRpbWUsIHRpbWUyLCBtaXhYLCBtaXhYMiwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRzZXRCZXppZXIoaW5wdXQsIHRpbWVsaW5lLCBiZXppZXIrKywgZnJhbWUsIDIsIHRpbWUsIHRpbWUyLCBtaXhZLCBtaXhZMiwgMSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0dGltZSA9IHRpbWUyO1xuXHRcdFx0XHRcdFx0XHRtaXhSb3RhdGUgPSBtaXhSb3RhdGUyO1xuXHRcdFx0XHRcdFx0XHRtaXhYID0gbWl4WDI7XG5cdFx0XHRcdFx0XHRcdG1peFkgPSBtaXhZMjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBQaHlzaWNzIHRpbWVsaW5lcy5cblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7IGkgPCBuOyBpKyspIHtcblx0XHRcdGNvbnN0IGluZGV4ID0gaW5wdXQucmVhZEludCh0cnVlKSAtIDE7XG5cdFx0XHRmb3IgKGxldCBpaSA9IDAsIG5uID0gaW5wdXQucmVhZEludCh0cnVlKTsgaWkgPCBubjsgaWkrKykge1xuXHRcdFx0XHRjb25zdCB0eXBlID0gaW5wdXQucmVhZEJ5dGUoKSwgZnJhbWVDb3VudCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRcdGlmICh0eXBlID09PSBQSFlTSUNTX1JFU0VUKSB7XG5cdFx0XHRcdFx0Y29uc3QgdGltZWxpbmUgPSBuZXcgUGh5c2ljc0NvbnN0cmFpbnRSZXNldFRpbWVsaW5lKGZyYW1lQ291bnQsIGluZGV4KTtcblx0XHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDA7IGZyYW1lIDwgZnJhbWVDb3VudDsgZnJhbWUrKylcblx0XHRcdFx0XHRcdHRpbWVsaW5lLnNldEZyYW1lKGZyYW1lLCBpbnB1dC5yZWFkRmxvYXQoKSk7XG5cdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IGJlemllckNvdW50ID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHRcdFx0c3dpdGNoICh0eXBlKSB7XG5cdFx0XHRcdFx0Y2FzZSBQSFlTSUNTX0lORVJUSUE6IHJlYWRUaW1lbGluZShpbnB1dCwgdGltZWxpbmVzLCBuZXcgUGh5c2ljc0NvbnN0cmFpbnRJbmVydGlhVGltZWxpbmUoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIGluZGV4KSwgMSk7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgUEhZU0lDU19TVFJFTkdUSDogcmVhZFRpbWVsaW5lKGlucHV0LCB0aW1lbGluZXMsIG5ldyBQaHlzaWNzQ29uc3RyYWludFN0cmVuZ3RoVGltZWxpbmUoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIGluZGV4KSwgMSk7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgUEhZU0lDU19EQU1QSU5HOiByZWFkVGltZWxpbmUoaW5wdXQsIHRpbWVsaW5lcywgbmV3IFBoeXNpY3NDb25zdHJhaW50RGFtcGluZ1RpbWVsaW5lKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBpbmRleCksIDEpOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIFBIWVNJQ1NfTUFTUzogcmVhZFRpbWVsaW5lKGlucHV0LCB0aW1lbGluZXMsIG5ldyBQaHlzaWNzQ29uc3RyYWludE1hc3NUaW1lbGluZShmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgaW5kZXgpLCAxKTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBQSFlTSUNTX1dJTkQ6IHJlYWRUaW1lbGluZShpbnB1dCwgdGltZWxpbmVzLCBuZXcgUGh5c2ljc0NvbnN0cmFpbnRXaW5kVGltZWxpbmUoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIGluZGV4KSwgMSk7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgUEhZU0lDU19HUkFWSVRZOiByZWFkVGltZWxpbmUoaW5wdXQsIHRpbWVsaW5lcywgbmV3IFBoeXNpY3NDb25zdHJhaW50R3Jhdml0eVRpbWVsaW5lKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBpbmRleCksIDEpOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIFBIWVNJQ1NfTUlYOiByZWFkVGltZWxpbmUoaW5wdXQsIHRpbWVsaW5lcywgbmV3IFBoeXNpY3NDb25zdHJhaW50TWl4VGltZWxpbmUoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIGluZGV4KSwgMSk7IGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIlVua25vd24gcGh5c2ljcyB0aW1lbGluZSB0eXBlLlwiKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFNsaWRlciB0aW1lbGluZXMuXG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBpbnB1dC5yZWFkSW50KHRydWUpOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRjb25zdCBpbmRleCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRmb3IgKGxldCBpaSA9IDAsIG5uID0gaW5wdXQucmVhZEludCh0cnVlKTsgaWkgPCBubjsgaWkrKykge1xuXHRcdFx0XHRjb25zdCB0eXBlID0gaW5wdXQucmVhZEJ5dGUoKSwgZnJhbWVDb3VudCA9IGlucHV0LnJlYWRJbnQodHJ1ZSksIGJlemllckNvdW50ID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHRcdFx0c3dpdGNoICh0eXBlKSB7XG5cdFx0XHRcdFx0Y2FzZSBTTElERVJfVElNRTogcmVhZFRpbWVsaW5lKGlucHV0LCB0aW1lbGluZXMsIG5ldyBTbGlkZXJUaW1lbGluZShmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgaW5kZXgpLCAxKTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBTTElERVJfTUlYOiByZWFkVGltZWxpbmUoaW5wdXQsIHRpbWVsaW5lcywgbmV3IFNsaWRlck1peFRpbWVsaW5lKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBpbmRleCksIDEpOyBicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoYFVrbm93biBzbGlkZXIgdHlwZTogJHt0eXBlfWApO1xuXHRcdFx0XHR9XG5cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBBdHRhY2htZW50IHRpbWVsaW5lcy5cblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7IGkgPCBuOyBpKyspIHtcblx0XHRcdGNvbnN0IHNraW4gPSBza2VsZXRvbkRhdGEuc2tpbnNbaW5wdXQucmVhZEludCh0cnVlKV07XG5cdFx0XHRmb3IgKGxldCBpaSA9IDAsIG5uID0gaW5wdXQucmVhZEludCh0cnVlKTsgaWkgPCBubjsgaWkrKykge1xuXHRcdFx0XHRjb25zdCBzbG90SW5kZXggPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0XHRmb3IgKGxldCBpaWkgPSAwLCBubm4gPSBpbnB1dC5yZWFkSW50KHRydWUpOyBpaWkgPCBubm47IGlpaSsrKSB7XG5cdFx0XHRcdFx0Y29uc3QgYXR0YWNobWVudE5hbWUgPSBpbnB1dC5yZWFkU3RyaW5nUmVmKCk7XG5cdFx0XHRcdFx0aWYgKCFhdHRhY2htZW50TmFtZSkgdGhyb3cgbmV3IEVycm9yKFwiYXR0YWNobWVudE5hbWUgbXVzdCBub3QgYmUgbnVsbC5cIik7XG5cdFx0XHRcdFx0Y29uc3QgYXR0YWNobWVudCA9IHNraW4uZ2V0QXR0YWNobWVudChzbG90SW5kZXgsIGF0dGFjaG1lbnROYW1lKTtcblx0XHRcdFx0XHRjb25zdCB0aW1lbGluZVR5cGUgPSBpbnB1dC5yZWFkQnl0ZSgpO1xuXHRcdFx0XHRcdGNvbnN0IGZyYW1lQ291bnQgPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0XHRcdGNvbnN0IGZyYW1lTGFzdCA9IGZyYW1lQ291bnQgLSAxO1xuXG5cdFx0XHRcdFx0c3dpdGNoICh0aW1lbGluZVR5cGUpIHtcblx0XHRcdFx0XHRcdGNhc2UgQVRUQUNITUVOVF9ERUZPUk06IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdmVydGV4QXR0YWNobWVudCA9IGF0dGFjaG1lbnQgYXMgVmVydGV4QXR0YWNobWVudDtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgd2VpZ2h0ZWQgPSB2ZXJ0ZXhBdHRhY2htZW50LmJvbmVzO1xuXHRcdFx0XHRcdFx0XHRjb25zdCB2ZXJ0aWNlcyA9IHZlcnRleEF0dGFjaG1lbnQudmVydGljZXM7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGRlZm9ybUxlbmd0aCA9IHdlaWdodGVkID8gdmVydGljZXMubGVuZ3RoIC8gMyAqIDIgOiB2ZXJ0aWNlcy5sZW5ndGg7XG5cblxuXHRcdFx0XHRcdFx0XHRjb25zdCBiZXppZXJDb3VudCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHRpbWVsaW5lID0gbmV3IERlZm9ybVRpbWVsaW5lKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBzbG90SW5kZXgsIHZlcnRleEF0dGFjaG1lbnQpO1xuXG5cdFx0XHRcdFx0XHRcdGxldCB0aW1lID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdFx0XHRcdGZvciAobGV0IGZyYW1lID0gMCwgYmV6aWVyID0gMDsgOyBmcmFtZSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IGRlZm9ybTogTnVtYmVyQXJyYXlMaWtlO1xuXHRcdFx0XHRcdFx0XHRcdGxldCBlbmQgPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChlbmQgPT09IDApXG5cdFx0XHRcdFx0XHRcdFx0XHRkZWZvcm0gPSB3ZWlnaHRlZCA/IFV0aWxzLm5ld0Zsb2F0QXJyYXkoZGVmb3JtTGVuZ3RoKSA6IHZlcnRpY2VzO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZGVmb3JtID0gVXRpbHMubmV3RmxvYXRBcnJheShkZWZvcm1MZW5ndGgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3Qgc3RhcnQgPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZW5kICs9IHN0YXJ0O1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHNjYWxlID09PSAxKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAobGV0IHYgPSBzdGFydDsgdiA8IGVuZDsgdisrKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlZm9ybVt2XSA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChsZXQgdiA9IHN0YXJ0OyB2IDwgZW5kOyB2KyspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVmb3JtW3ZdID0gaW5wdXQucmVhZEZsb2F0KCkgKiBzY2FsZTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGlmICghd2VpZ2h0ZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChsZXQgdiA9IDAsIHZuID0gZGVmb3JtLmxlbmd0aDsgdiA8IHZuOyB2KyspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVmb3JtW3ZdICs9IHZlcnRpY2VzW3ZdO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdHRpbWVsaW5lLnNldEZyYW1lKGZyYW1lLCB0aW1lLCBkZWZvcm0pO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChmcmFtZSA9PT0gZnJhbWVMYXN0KSBicmVhaztcblx0XHRcdFx0XHRcdFx0XHRjb25zdCB0aW1lMiA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoaW5wdXQucmVhZEJ5dGUoKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSBDVVJWRV9TVEVQUEVEOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRTdGVwcGVkKGZyYW1lKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlIENVUlZFX0JFWklFUjpcblx0XHRcdFx0XHRcdFx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCAwLCB0aW1lLCB0aW1lMiwgMCwgMSwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHRpbWUgPSB0aW1lMjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR0aW1lbGluZXMucHVzaCh0aW1lbGluZSk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Y2FzZSBBVFRBQ0hNRU5UX1NFUVVFTkNFOiB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHRpbWVsaW5lID0gbmV3IFNlcXVlbmNlVGltZWxpbmUoZnJhbWVDb3VudCwgc2xvdEluZGV4LCBhdHRhY2htZW50IGFzIEF0dGFjaG1lbnQpO1xuXHRcdFx0XHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDA7IGZyYW1lIDwgZnJhbWVDb3VudDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRpbWUgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBtb2RlQW5kSW5kZXggPSBpbnB1dC5yZWFkSW50MzIoKTtcblx0XHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgU2VxdWVuY2VNb2RlVmFsdWVzW21vZGVBbmRJbmRleCAmIDB4Zl0sIG1vZGVBbmRJbmRleCA+PiA0LFxuXHRcdFx0XHRcdFx0XHRcdFx0aW5wdXQucmVhZEZsb2F0KCkpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gRHJhdyBvcmRlciB0aW1lbGluZS5cblx0XHRjb25zdCBzbG90Q291bnQgPSBza2VsZXRvbkRhdGEuc2xvdHMubGVuZ3RoO1xuXHRcdGNvbnN0IGRyYXdPcmRlckNvdW50ID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHRpZiAoZHJhd09yZGVyQ291bnQgPiAwKSB7XG5cdFx0XHRjb25zdCB0aW1lbGluZSA9IG5ldyBEcmF3T3JkZXJUaW1lbGluZShkcmF3T3JkZXJDb3VudCk7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGRyYXdPcmRlckNvdW50OyBpKyspXG5cdFx0XHRcdHRpbWVsaW5lLnNldEZyYW1lKGksIGlucHV0LnJlYWRGbG9hdCgpLCByZWFkRHJhd09yZGVyKGlucHV0LCBzbG90Q291bnQpKTtcblx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHR9XG5cblx0XHQvLyBEcmF3IG9yZGVyIGZvbGRlciB0aW1lbGluZXMuXG5cdFx0Y29uc3QgZm9sZGVyQ291bnQgPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZm9sZGVyQ291bnQ7IGkrKykge1xuXHRcdFx0Y29uc3QgZm9sZGVyU2xvdENvdW50ID0gaW5wdXQucmVhZEludCh0cnVlKTtcblx0XHRcdGNvbnN0IGZvbGRlclNsb3RzID0gbmV3IEFycmF5PG51bWJlcj4oZm9sZGVyU2xvdENvdW50KTtcblx0XHRcdGZvciAobGV0IGlpID0gMDsgaWkgPCBmb2xkZXJTbG90Q291bnQ7IGlpKyspXG5cdFx0XHRcdGZvbGRlclNsb3RzW2lpXSA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRjb25zdCBrZXlDb3VudCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0XHRjb25zdCB0aW1lbGluZSA9IG5ldyBEcmF3T3JkZXJGb2xkZXJUaW1lbGluZShrZXlDb3VudCwgZm9sZGVyU2xvdHMsIHNsb3RDb3VudCk7XG5cdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwga2V5Q291bnQ7IGlpKyspXG5cdFx0XHRcdHRpbWVsaW5lLnNldEZyYW1lKGlpLCBpbnB1dC5yZWFkRmxvYXQoKSwgcmVhZERyYXdPcmRlcihpbnB1dCwgZm9sZGVyU2xvdENvdW50KSk7XG5cdFx0XHR0aW1lbGluZXMucHVzaCh0aW1lbGluZSk7XG5cdFx0fVxuXG5cdFx0Ly8gRXZlbnQgdGltZWxpbmUuXG5cdFx0Y29uc3QgZXZlbnRDb3VudCA9IGlucHV0LnJlYWRJbnQodHJ1ZSk7XG5cdFx0aWYgKGV2ZW50Q291bnQgPiAwKSB7XG5cdFx0XHRjb25zdCB0aW1lbGluZSA9IG5ldyBFdmVudFRpbWVsaW5lKGV2ZW50Q291bnQpO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBldmVudENvdW50OyBpKyspIHtcblx0XHRcdFx0Y29uc3QgdGltZSA9IGlucHV0LnJlYWRGbG9hdCgpO1xuXHRcdFx0XHRjb25zdCBldmVudERhdGEgPSBza2VsZXRvbkRhdGEuZXZlbnRzW2lucHV0LnJlYWRJbnQodHJ1ZSldO1xuXHRcdFx0XHRjb25zdCBldmVudCA9IG5ldyBFdmVudCh0aW1lLCBldmVudERhdGEpO1xuXHRcdFx0XHRldmVudC5pbnRWYWx1ZSA9IGlucHV0LnJlYWRJbnQoZmFsc2UpO1xuXHRcdFx0XHRldmVudC5mbG9hdFZhbHVlID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdGV2ZW50LnN0cmluZ1ZhbHVlID0gaW5wdXQucmVhZFN0cmluZygpO1xuXHRcdFx0XHRpZiAoZXZlbnQuc3RyaW5nVmFsdWUgPT0gbnVsbCkgZXZlbnQuc3RyaW5nVmFsdWUgPSBldmVudERhdGEuc2V0dXBQb3NlLnN0cmluZ1ZhbHVlO1xuXHRcdFx0XHRpZiAoZXZlbnQuZGF0YS5hdWRpb1BhdGgpIHtcblx0XHRcdFx0XHRldmVudC52b2x1bWUgPSBpbnB1dC5yZWFkRmxvYXQoKTtcblx0XHRcdFx0XHRldmVudC5iYWxhbmNlID0gaW5wdXQucmVhZEZsb2F0KCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGltZWxpbmUuc2V0RnJhbWUoaSwgZXZlbnQpO1xuXHRcdFx0fVxuXHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdH1cblxuXHRcdGxldCBkdXJhdGlvbiA9IDA7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSB0aW1lbGluZXMubGVuZ3RoOyBpIDwgbjsgaSsrKVxuXHRcdFx0ZHVyYXRpb24gPSBNYXRoLm1heChkdXJhdGlvbiwgdGltZWxpbmVzW2ldLmdldER1cmF0aW9uKCkpO1xuXHRcdGNvbnN0IGFuaW1hdGlvbiA9IG5ldyBBbmltYXRpb24obmFtZSwgdGltZWxpbmVzLCBkdXJhdGlvbik7XG5cdFx0aWYgKG5vbmVzc2VudGlhbCkgQ29sb3IucmdiYTg4ODhUb0NvbG9yKGFuaW1hdGlvbi5jb2xvciwgaW5wdXQucmVhZEludDMyKCkpO1xuXHRcdHJldHVybiBhbmltYXRpb247XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIEJpbmFyeUlucHV0IHtcblx0Y29uc3RydWN0b3IgKGRhdGE6IFVpbnQ4QXJyYXkgfCBBcnJheUJ1ZmZlciwgcHVibGljIHN0cmluZ3MgPSBbXSBhcyBzdHJpbmdbXSwgcHJpdmF0ZSBpbmRleDogbnVtYmVyID0gMCwgcHJpdmF0ZSBidWZmZXI6IERhdGFWaWV3ID0gbmV3IERhdGFWaWV3KGRhdGEgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciA/IGRhdGEgOiBkYXRhLmJ1ZmZlcikpIHtcblx0fVxuXG5cdHJlYWRCeXRlICgpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLmJ1ZmZlci5nZXRJbnQ4KHRoaXMuaW5kZXgrKyk7XG5cdH1cblxuXHRyZWFkVW5zaWduZWRCeXRlICgpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLmJ1ZmZlci5nZXRVaW50OCh0aGlzLmluZGV4KyspO1xuXHR9XG5cblx0cmVhZFNob3J0ICgpOiBudW1iZXIge1xuXHRcdGNvbnN0IHZhbHVlID0gdGhpcy5idWZmZXIuZ2V0SW50MTYodGhpcy5pbmRleCk7XG5cdFx0dGhpcy5pbmRleCArPSAyO1xuXHRcdHJldHVybiB2YWx1ZTtcblx0fVxuXG5cdHJlYWRJbnQzMiAoKTogbnVtYmVyIHtcblx0XHRjb25zdCB2YWx1ZSA9IHRoaXMuYnVmZmVyLmdldEludDMyKHRoaXMuaW5kZXgpXG5cdFx0dGhpcy5pbmRleCArPSA0O1xuXHRcdHJldHVybiB2YWx1ZTtcblx0fVxuXG5cdHJlYWRJbnQgKG9wdGltaXplUG9zaXRpdmU6IGJvb2xlYW4pIHtcblx0XHRsZXQgYiA9IHRoaXMucmVhZEJ5dGUoKTtcblx0XHRsZXQgcmVzdWx0ID0gYiAmIDB4N0Y7XG5cdFx0aWYgKChiICYgMHg4MCkgIT09IDApIHtcblx0XHRcdGIgPSB0aGlzLnJlYWRCeXRlKCk7XG5cdFx0XHRyZXN1bHQgfD0gKGIgJiAweDdGKSA8PCA3O1xuXHRcdFx0aWYgKChiICYgMHg4MCkgIT09IDApIHtcblx0XHRcdFx0YiA9IHRoaXMucmVhZEJ5dGUoKTtcblx0XHRcdFx0cmVzdWx0IHw9IChiICYgMHg3RikgPDwgMTQ7XG5cdFx0XHRcdGlmICgoYiAmIDB4ODApICE9PSAwKSB7XG5cdFx0XHRcdFx0YiA9IHRoaXMucmVhZEJ5dGUoKTtcblx0XHRcdFx0XHRyZXN1bHQgfD0gKGIgJiAweDdGKSA8PCAyMTtcblx0XHRcdFx0XHRpZiAoKGIgJiAweDgwKSAhPT0gMCkge1xuXHRcdFx0XHRcdFx0YiA9IHRoaXMucmVhZEJ5dGUoKTtcblx0XHRcdFx0XHRcdHJlc3VsdCB8PSAoYiAmIDB4N0YpIDw8IDI4O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gb3B0aW1pemVQb3NpdGl2ZSA/IHJlc3VsdCA6ICgocmVzdWx0ID4+PiAxKSBeIC0ocmVzdWx0ICYgMSkpO1xuXHR9XG5cblx0cmVhZFN0cmluZ1JlZiAoKTogc3RyaW5nIHwgbnVsbCB7XG5cdFx0Y29uc3QgaW5kZXggPSB0aGlzLnJlYWRJbnQodHJ1ZSk7XG5cdFx0cmV0dXJuIGluZGV4ID09PSAwID8gbnVsbCA6IHRoaXMuc3RyaW5nc1tpbmRleCAtIDFdO1xuXHR9XG5cblx0cmVhZFN0cmluZyAoKTogc3RyaW5nIHwgbnVsbCB7XG5cdFx0bGV0IGJ5dGVDb3VudCA9IHRoaXMucmVhZEludCh0cnVlKTtcblx0XHRzd2l0Y2ggKGJ5dGVDb3VudCkge1xuXHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdGNhc2UgMTpcblx0XHRcdFx0cmV0dXJuIFwiXCI7XG5cdFx0fVxuXHRcdGJ5dGVDb3VudC0tO1xuXHRcdGxldCBjaGFycyA9IFwiXCI7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBieXRlQ291bnQ7KSB7XG5cdFx0XHRjb25zdCBiID0gdGhpcy5yZWFkVW5zaWduZWRCeXRlKCk7XG5cdFx0XHRzd2l0Y2ggKGIgPj4gNCkge1xuXHRcdFx0XHRjYXNlIDEyOlxuXHRcdFx0XHRjYXNlIDEzOlxuXHRcdFx0XHRcdGNoYXJzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKChiICYgMHgxRikgPDwgNiB8IHRoaXMucmVhZEJ5dGUoKSAmIDB4M0YpKTtcblx0XHRcdFx0XHRpICs9IDI7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgMTQ6XG5cdFx0XHRcdFx0Y2hhcnMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGIgJiAweDBGKSA8PCAxMiB8ICh0aGlzLnJlYWRCeXRlKCkgJiAweDNGKSA8PCA2IHwgdGhpcy5yZWFkQnl0ZSgpICYgMHgzRikpO1xuXHRcdFx0XHRcdGkgKz0gMztcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRjaGFycyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGIpO1xuXHRcdFx0XHRcdGkrKztcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGNoYXJzO1xuXHR9XG5cblx0cmVhZEZsb2F0ICgpOiBudW1iZXIge1xuXHRcdGNvbnN0IHZhbHVlID0gdGhpcy5idWZmZXIuZ2V0RmxvYXQzMih0aGlzLmluZGV4KTtcblx0XHR0aGlzLmluZGV4ICs9IDQ7XG5cdFx0cmV0dXJuIHZhbHVlO1xuXHR9XG5cblx0cmVhZEJvb2xlYW4gKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLnJlYWRCeXRlKCkgIT09IDA7XG5cdH1cbn1cblxuY2xhc3MgTGlua2VkTWVzaCB7XG5cdHNvdXJjZTogc3RyaW5nIHwgbnVsbDtcblx0c2tpbkluZGV4OiBudW1iZXI7IHNsb3RJbmRleDogbnVtYmVyOyBzb3VyY2VJbmRleDogbnVtYmVyXG5cdG1lc2g6IE1lc2hBdHRhY2htZW50O1xuXHRpbmhlcml0VGltZWxpbmVzOiBib29sZWFuO1xuXG5cdGNvbnN0cnVjdG9yIChtZXNoOiBNZXNoQXR0YWNobWVudCwgc2tpbkluZGV4OiBudW1iZXIsIHNsb3RJbmRleDogbnVtYmVyLCBzb3VyY2VJbmRleDogbnVtYmVyLCBzb3VyY2U6IHN0cmluZyB8IG51bGwsXG5cdFx0aW5oZXJpdFRpbWVsaW5lczogYm9vbGVhbikge1xuXHRcdHRoaXMubWVzaCA9IG1lc2g7XG5cdFx0dGhpcy5za2luSW5kZXggPSBza2luSW5kZXg7XG5cdFx0dGhpcy5zbG90SW5kZXggPSBzbG90SW5kZXg7XG5cdFx0dGhpcy5zb3VyY2VJbmRleCA9IHNvdXJjZUluZGV4O1xuXHRcdHRoaXMuc291cmNlID0gc291cmNlO1xuXHRcdHRoaXMuaW5oZXJpdFRpbWVsaW5lcyA9IGluaGVyaXRUaW1lbGluZXM7XG5cdH1cbn1cblxuY2xhc3MgVmVydGljZXMge1xuXHRjb25zdHJ1Y3RvciAocHVibGljIGJvbmVzOiBBcnJheTxudW1iZXI+IHwgbnVsbCA9IG51bGwsIHB1YmxpYyB2ZXJ0aWNlczogQXJyYXk8bnVtYmVyPiB8IEZsb2F0MzJBcnJheSwgcHVibGljIGxlbmd0aDogbnVtYmVyID0gMCkgeyB9XG59XG5cbmVudW0gQXR0YWNobWVudFR5cGUgeyBSZWdpb24sIEJvdW5kaW5nQm94LCBNZXNoLCBMaW5rZWRNZXNoLCBQYXRoLCBQb2ludCwgQ2xpcHBpbmcgfVxuXG5mdW5jdGlvbiByZWFkVGltZWxpbmUgKGlucHV0OiBCaW5hcnlJbnB1dCwgdGltZWxpbmVzOiBBcnJheTxUaW1lbGluZT4sIHRpbWVsaW5lOiBDdXJ2ZVRpbWVsaW5lMSwgc2NhbGU6IG51bWJlcik6IHZvaWQ7XG5mdW5jdGlvbiByZWFkVGltZWxpbmUgKGlucHV0OiBCaW5hcnlJbnB1dCwgdGltZWxpbmVzOiBBcnJheTxUaW1lbGluZT4sIHRpbWVsaW5lOiBCb25lVGltZWxpbmUyLCBzY2FsZTogbnVtYmVyKTogdm9pZDtcbmZ1bmN0aW9uIHJlYWRUaW1lbGluZSAoaW5wdXQ6IEJpbmFyeUlucHV0LCB0aW1lbGluZXM6IEFycmF5PFRpbWVsaW5lPiwgdGltZWxpbmU6IEN1cnZlVGltZWxpbmUxIHwgQm9uZVRpbWVsaW5lMiwgc2NhbGU6IG51bWJlcik6IHZvaWQge1xuXHRpZiAodGltZWxpbmUgaW5zdGFuY2VvZiBDdXJ2ZVRpbWVsaW5lMSlcblx0XHRyZWFkVGltZWxpbmUxKGlucHV0LCB0aW1lbGluZXMsIHRpbWVsaW5lLCBzY2FsZSk7XG5cdGVsc2Vcblx0XHRyZWFkVGltZWxpbmUyKGlucHV0LCB0aW1lbGluZXMsIHRpbWVsaW5lLCBzY2FsZSk7XG59XG5cbmZ1bmN0aW9uIHJlYWRUaW1lbGluZTEgKGlucHV0OiBCaW5hcnlJbnB1dCwgdGltZWxpbmVzOiBBcnJheTxUaW1lbGluZT4sIHRpbWVsaW5lOiBDdXJ2ZVRpbWVsaW5lMSwgc2NhbGU6IG51bWJlcik6IHZvaWQge1xuXHRsZXQgdGltZSA9IGlucHV0LnJlYWRGbG9hdCgpLCB2YWx1ZSA9IGlucHV0LnJlYWRGbG9hdCgpICogc2NhbGU7XG5cdGZvciAobGV0IGZyYW1lID0gMCwgYmV6aWVyID0gMCwgZnJhbWVMYXN0ID0gdGltZWxpbmUuZ2V0RnJhbWVDb3VudCgpIC0gMTsgOyBmcmFtZSsrKSB7XG5cdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIHRpbWUsIHZhbHVlKTtcblx0XHRpZiAoZnJhbWUgPT09IGZyYW1lTGFzdCkgYnJlYWs7XG5cdFx0Y29uc3QgdGltZTIgPSBpbnB1dC5yZWFkRmxvYXQoKSwgdmFsdWUyID0gaW5wdXQucmVhZEZsb2F0KCkgKiBzY2FsZTtcblx0XHRzd2l0Y2ggKGlucHV0LnJlYWRCeXRlKCkpIHtcblx0XHRcdGNhc2UgQ1VSVkVfU1RFUFBFRDpcblx0XHRcdFx0dGltZWxpbmUuc2V0U3RlcHBlZChmcmFtZSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBDVVJWRV9CRVpJRVI6XG5cdFx0XHRcdHNldEJlemllcihpbnB1dCwgdGltZWxpbmUsIGJlemllcisrLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIHZhbHVlLCB2YWx1ZTIsIHNjYWxlKTtcblx0XHR9XG5cdFx0dGltZSA9IHRpbWUyO1xuXHRcdHZhbHVlID0gdmFsdWUyO1xuXHR9XG5cdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcbn1cblxuZnVuY3Rpb24gcmVhZFRpbWVsaW5lMiAoaW5wdXQ6IEJpbmFyeUlucHV0LCB0aW1lbGluZXM6IEFycmF5PFRpbWVsaW5lPiwgdGltZWxpbmU6IEJvbmVUaW1lbGluZTIsIHNjYWxlOiBudW1iZXIpOiB2b2lkIHtcblx0bGV0IHRpbWUgPSBpbnB1dC5yZWFkRmxvYXQoKSwgdmFsdWUxID0gaW5wdXQucmVhZEZsb2F0KCkgKiBzY2FsZSwgdmFsdWUyID0gaW5wdXQucmVhZEZsb2F0KCkgKiBzY2FsZTtcblx0Zm9yIChsZXQgZnJhbWUgPSAwLCBiZXppZXIgPSAwLCBmcmFtZUxhc3QgPSB0aW1lbGluZS5nZXRGcmFtZUNvdW50KCkgLSAxOyA7IGZyYW1lKyspIHtcblx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgdmFsdWUxLCB2YWx1ZTIpO1xuXHRcdGlmIChmcmFtZSA9PT0gZnJhbWVMYXN0KSBicmVhaztcblx0XHRjb25zdCB0aW1lMiA9IGlucHV0LnJlYWRGbG9hdCgpLCBudmFsdWUxID0gaW5wdXQucmVhZEZsb2F0KCkgKiBzY2FsZSwgbnZhbHVlMiA9IGlucHV0LnJlYWRGbG9hdCgpICogc2NhbGU7XG5cdFx0c3dpdGNoIChpbnB1dC5yZWFkQnl0ZSgpKSB7XG5cdFx0XHRjYXNlIENVUlZFX1NURVBQRUQ6XG5cdFx0XHRcdHRpbWVsaW5lLnNldFN0ZXBwZWQoZnJhbWUpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgQ1VSVkVfQkVaSUVSOlxuXHRcdFx0XHRzZXRCZXppZXIoaW5wdXQsIHRpbWVsaW5lLCBiZXppZXIrKywgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCB2YWx1ZTEsIG52YWx1ZTEsIHNjYWxlKTtcblx0XHRcdFx0c2V0QmV6aWVyKGlucHV0LCB0aW1lbGluZSwgYmV6aWVyKyssIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgdmFsdWUyLCBudmFsdWUyLCBzY2FsZSk7XG5cdFx0fVxuXHRcdHRpbWUgPSB0aW1lMjtcblx0XHR2YWx1ZTEgPSBudmFsdWUxO1xuXHRcdHZhbHVlMiA9IG52YWx1ZTI7XG5cdH1cblx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xufVxuXG5mdW5jdGlvbiByZWFkRHJhd09yZGVyIChpbnB1dDogQmluYXJ5SW5wdXQsIHNsb3RDb3VudDogbnVtYmVyKTogbnVtYmVyW10gfCBudWxsIHtcblx0Y29uc3QgY2hhbmdlQ291bnQgPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRpZiAoY2hhbmdlQ291bnQgPT09IDApIHJldHVybiBudWxsO1xuXHRjb25zdCBkcmF3T3JkZXIgPSBuZXcgQXJyYXk8bnVtYmVyPihzbG90Q291bnQpLmZpbGwoLTEpO1xuXHRjb25zdCB1bmNoYW5nZWQgPSBuZXcgQXJyYXk8bnVtYmVyPihzbG90Q291bnQgLSBjaGFuZ2VDb3VudCk7XG5cdGxldCBvcmlnaW5hbEluZGV4ID0gMCwgdW5jaGFuZ2VkSW5kZXggPSAwO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGNoYW5nZUNvdW50OyBpKyspIHtcblx0XHRjb25zdCBzbG90SW5kZXggPSBpbnB1dC5yZWFkSW50KHRydWUpO1xuXHRcdC8vIENvbGxlY3QgdW5jaGFuZ2VkIGl0ZW1zLlxuXHRcdHdoaWxlIChvcmlnaW5hbEluZGV4ICE9PSBzbG90SW5kZXgpXG5cdFx0XHR1bmNoYW5nZWRbdW5jaGFuZ2VkSW5kZXgrK10gPSBvcmlnaW5hbEluZGV4Kys7XG5cdFx0Ly8gU2V0IGNoYW5nZWQgaXRlbXMuXG5cdFx0ZHJhd09yZGVyW29yaWdpbmFsSW5kZXggKyBpbnB1dC5yZWFkSW50KHRydWUpXSA9IG9yaWdpbmFsSW5kZXgrKztcblx0fVxuXHQvLyBDb2xsZWN0IHJlbWFpbmluZyB1bmNoYW5nZWQgaXRlbXMuXG5cdHdoaWxlIChvcmlnaW5hbEluZGV4IDwgc2xvdENvdW50KVxuXHRcdHVuY2hhbmdlZFt1bmNoYW5nZWRJbmRleCsrXSA9IG9yaWdpbmFsSW5kZXgrKztcblx0Ly8gRmlsbCBpbiB1bmNoYW5nZWQgaXRlbXMuXG5cdGZvciAobGV0IGkgPSBzbG90Q291bnQgLSAxOyBpID49IDA7IGktLSlcblx0XHRpZiAoZHJhd09yZGVyW2ldID09PSAtMSkgZHJhd09yZGVyW2ldID0gdW5jaGFuZ2VkWy0tdW5jaGFuZ2VkSW5kZXhdO1xuXHRyZXR1cm4gZHJhd09yZGVyO1xufVxuXG5mdW5jdGlvbiBzZXRCZXppZXIgKGlucHV0OiBCaW5hcnlJbnB1dCwgdGltZWxpbmU6IEN1cnZlVGltZWxpbmUsIGJlemllcjogbnVtYmVyLCBmcmFtZTogbnVtYmVyLCB2YWx1ZTogbnVtYmVyLFxuXHR0aW1lMTogbnVtYmVyLCB0aW1lMjogbnVtYmVyLCB2YWx1ZTE6IG51bWJlciwgdmFsdWUyOiBudW1iZXIsIHNjYWxlOiBudW1iZXIpIHtcblx0dGltZWxpbmUuc2V0QmV6aWVyKGJlemllciwgZnJhbWUsIHZhbHVlLCB0aW1lMSwgdmFsdWUxLCBpbnB1dC5yZWFkRmxvYXQoKSwgaW5wdXQucmVhZEZsb2F0KCkgKiBzY2FsZSwgaW5wdXQucmVhZEZsb2F0KCksIGlucHV0LnJlYWRGbG9hdCgpICogc2NhbGUsIHRpbWUyLCB2YWx1ZTIpO1xufVxuXG5jb25zdCBCT05FX1JPVEFURSA9IDA7XG5jb25zdCBCT05FX1RSQU5TTEFURSA9IDE7XG5jb25zdCBCT05FX1RSQU5TTEFURVggPSAyO1xuY29uc3QgQk9ORV9UUkFOU0xBVEVZID0gMztcbmNvbnN0IEJPTkVfU0NBTEUgPSA0O1xuY29uc3QgQk9ORV9TQ0FMRVggPSA1O1xuY29uc3QgQk9ORV9TQ0FMRVkgPSA2O1xuY29uc3QgQk9ORV9TSEVBUiA9IDc7XG5jb25zdCBCT05FX1NIRUFSWCA9IDg7XG5jb25zdCBCT05FX1NIRUFSWSA9IDk7XG5jb25zdCBCT05FX0lOSEVSSVQgPSAxMDtcblxuY29uc3QgU0xPVF9BVFRBQ0hNRU5UID0gMDtcbmNvbnN0IFNMT1RfUkdCQSA9IDE7XG5jb25zdCBTTE9UX1JHQiA9IDI7XG5jb25zdCBTTE9UX1JHQkEyID0gMztcbmNvbnN0IFNMT1RfUkdCMiA9IDQ7XG5jb25zdCBTTE9UX0FMUEhBID0gNTtcblxuY29uc3QgQ09OU1RSQUlOVF9JSyA9IDA7XG5jb25zdCBDT05TVFJBSU5UX1BBVEggPSAxO1xuY29uc3QgQ09OU1RSQUlOVF9UUkFOU0ZPUk0gPSAyO1xuY29uc3QgQ09OU1RSQUlOVF9QSFlTSUNTID0gMztcbmNvbnN0IENPTlNUUkFJTlRfU0xJREVSID0gNDtcblxuY29uc3QgQVRUQUNITUVOVF9ERUZPUk0gPSAwO1xuY29uc3QgQVRUQUNITUVOVF9TRVFVRU5DRSA9IDE7XG5cbmNvbnN0IFBBVEhfUE9TSVRJT04gPSAwO1xuY29uc3QgUEFUSF9TUEFDSU5HID0gMTtcbmNvbnN0IFBBVEhfTUlYID0gMjtcblxuY29uc3QgUEhZU0lDU19JTkVSVElBID0gMDtcbmNvbnN0IFBIWVNJQ1NfU1RSRU5HVEggPSAxO1xuY29uc3QgUEhZU0lDU19EQU1QSU5HID0gMjtcbmNvbnN0IFBIWVNJQ1NfTUFTUyA9IDQ7XG5jb25zdCBQSFlTSUNTX1dJTkQgPSA1O1xuY29uc3QgUEhZU0lDU19HUkFWSVRZID0gNjtcbmNvbnN0IFBIWVNJQ1NfTUlYID0gNztcbmNvbnN0IFBIWVNJQ1NfUkVTRVQgPSA4O1xuXG5jb25zdCBTTElERVJfVElNRSA9IDA7XG5jb25zdCBTTElERVJfTUlYID0gMTtcblxuLy8gYmlvbWUtaWdub3JlIGxpbnQvY29ycmVjdG5lc3Mvbm9VbnVzZWRWYXJpYWJsZXM6IGludGVudGlvbmFsXG5jb25zdCBDVVJWRV9MSU5FQVIgPSAwO1xuY29uc3QgQ1VSVkVfU1RFUFBFRCA9IDE7XG5jb25zdCBDVVJWRV9CRVpJRVIgPSAyO1xuIl19