@bizdoc/core 1.8.19 → 1.8.20

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.
@@ -1,6 +1,6 @@
1
1
  import { __awaiter } from "tslib";
2
2
  import { Component, Input } from '@angular/core';
3
- import { DiagramTools, Diagram, DiagramConstraints, ComplexHierarchicalTree, ComplexHierarchicalTreeService, BpmnDiagrams, DataBinding, ConnectionPointOrigin, SnapConstraints, LayoutAnimation, NodeConstraints } from '@syncfusion/ej2-angular-diagrams';
3
+ import { DiagramTools, Diagram, DiagramConstraints, ComplexHierarchicalTree, ComplexHierarchicalTreeService, BpmnDiagrams, DataBinding, ConnectionPointOrigin, SnapConstraints, NodeConstraints } from '@syncfusion/ej2-angular-diagrams';
4
4
  import { interval } from 'rxjs';
5
5
  import { takeUntil } from 'rxjs/operators';
6
6
  import { getWarn } from '../../core/functions';
@@ -11,7 +11,7 @@ import * as i2 from "../../core/session.service";
11
11
  import * as i3 from "../../core/translate.service";
12
12
  import * as i4 from "../../core/hub.service";
13
13
  const moment = require('moment');
14
- Diagram.Inject(ComplexHierarchicalTree, BpmnDiagrams, DataBinding, LayoutAnimation);
14
+ Diagram.Inject(ComplexHierarchicalTree, BpmnDiagrams, DataBinding /*, LayoutAnimation, LineRouting, ConnectorBridging*/);
15
15
  const PENDING_PATH = 'M18,22l-0.01-6L14,12l3.99-4.01L18,2H6v6l4,4l-4,3.99V22H18z M8,7.5V4h8v3.5l-4,4L8,7.5z', FYI_PATH = 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z', ESCALATED_PATH = 'M22 5.72l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM12.5 8H11v6l4.75 2.85.75-1.23-4-2.37V8zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z', WARNNING_PATH = 'M 13.763735,1.8433735 H 6.3037349 l -5.27,5.27 v 7.4599995 l 5.27,5.27 h 7.4600001 l 5.27,-5.27 V 7.1133735 Z m -3.73,14.2999995 c -0.7200001,0 -1.3000001,-0.58 -1.3000001,-1.3 0,-0.72 0.58,-1.3 1.3000001,-1.3 0.72,0 1.3,0.58 1.3,1.3 0,0.72 -0.58,1.3 -1.3,1.3 z m 1,-4.3 H 9.0337349 V 5.8433735 h 2.0000001 z';
16
16
  /** flow-view component*/
17
17
  export class FlowViewComponent extends TraceBase {
@@ -66,6 +66,7 @@ export class FlowViewComponent extends TraceBase {
66
66
  return __awaiter(this, void 0, void 0, function* () {
67
67
  const { connectors, nodes, indicators } = yield this._prepare();
68
68
  this.diagram && this.diagram.destroy();
69
+ //this.layout.type = 'None';
69
70
  this.diagram = new Diagram({
70
71
  width: '100%',
71
72
  height: 380,
@@ -80,6 +81,7 @@ export class FlowViewComponent extends TraceBase {
80
81
  getConnectorDefaults: this.connDefaults.bind(this),
81
82
  getNodeDefaults: this.nodeDefaults.bind(this),
82
83
  }, this._elementRef.nativeElement);
84
+ //this.layout.type = 'ComplexHierarchicalTree';
83
85
  this.diagram.doLayout();
84
86
  indicators.forEach((n, i) => {
85
87
  const parent = this.diagram.getNodeObject(n.addInfo.parentId);
@@ -576,4 +578,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImpo
576
578
  }], connectorType: [{
577
579
  type: Input
578
580
  }] } });
579
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvbXBvc2UvdHJhY2UvZmxvdy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFtRCxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQTBDLFlBQVksRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQWtCLDhCQUE4QixFQUFxQixZQUFZLEVBQUUsV0FBVyxFQUE4RyxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xiLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7O0FBSHJELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQVNqQyxPQUFPLENBQUMsTUFBTSxDQUFDLHVCQUF1QixFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFFcEYsTUFBTSxZQUFZLEdBQUcsdUZBQXVGLEVBQzFHLFFBQVEsR0FBRyxrR0FBa0csRUFDN0csY0FBYyxHQUFHLG1RQUFtUSxFQUNwUixhQUFhLEdBQUcsc1RBQXNULENBQUM7QUFXelUseUJBQXlCO0FBQ3pCLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxTQUFTO0lBcUM5Qyx5QkFBeUI7SUFDekIsWUFBb0IsU0FBeUIsRUFBVSxRQUF3QixFQUFVLFVBQTRCLEVBQzNHLFdBQXVDLEVBQy9DLEdBQWU7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QyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztZQUN2RSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sUUFBUSxDQUFDLElBQVU7UUFDekIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVPLFNBQVMsQ0FBQyxJQUFZO1FBQzVCLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUNELFdBQVc7UUFDVCxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3pDLENBQUM7OytHQXppQlUsaUJBQWlCO21HQUFqQixpQkFBaUIsbU1BUmxCLEVBQUUsK0NBRUcsQ0FBQyw4QkFBOEIsQ0FBQzs0RkFNcEMsaUJBQWlCO2tCQVY3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2QixRQUFRLEVBQUUsRUFBRTtvQkFDWixTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztvQkFDcEMsYUFBYSxFQUFFLENBQUMsOEJBQThCLENBQUM7b0JBQy9DLElBQUksRUFBRTt3QkFDSixHQUFHLEVBQUUsS0FBSztxQkFDWDtpQkFDRjttTkFHVSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5vZGVNb2RlbCwgQ29ubmVjdG9yTW9kZWwsIExheW91dE1vZGVsLCBEaWFncmFtVG9vbHMsIERpYWdyYW0sIERpYWdyYW1Db25zdHJhaW50cywgQ29tcGxleEhpZXJhcmNoaWNhbFRyZWUsIFBvcnRWaXNpYmlsaXR5LCBDb21wbGV4SGllcmFyY2hpY2FsVHJlZVNlcnZpY2UsIENvbm5lY3RvckJyaWRnaW5nLCBCcG1uRGlhZ3JhbXMsIERhdGFCaW5kaW5nLCBTY3JvbGxTZXR0aW5nc01vZGVsLCBTbmFwU2V0dGluZ3NNb2RlbCwgU2VnbWVudHMsIExpbmVSb3V0aW5nLCBUcmVlSW5mbywgSU1vdXNlRXZlbnRBcmdzLCBMaW5lRGlzdHJpYnV0aW9uLCBDb25uZWN0aW9uUG9pbnRPcmlnaW4sIFNuYXBDb25zdHJhaW50cywgTGF5b3V0QW5pbWF0aW9uLCBOb2RlQ29uc3RyYWludHMgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1kaWFncmFtcyc7XHJcbmltcG9ydCB7IGludGVydmFsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuY29uc3QgbW9tZW50ID0gcmVxdWlyZSgnbW9tZW50Jyk7XHJcbmltcG9ydCB7IERvY3VtZW50TW9kZWwsIFJlY2lwaWVudCwgTm9kZUluZm8sIEdlbmRlciwgRmxvd05vZGUsIFVzZXJJbmZvLCBTdGF0ZSB9IGZyb20gXCIuLi8uLi9jb3JlL21vZGVsc1wiO1xyXG5pbXBvcnQgeyBnZXRXYXJuIH0gZnJvbSAnLi4vLi4vY29yZS9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBUcmFjZUJhc2UsIFNUQVJUX05PREUgfSBmcm9tICcuL3RyYWNlLmJhc2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2FjY291bnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHViU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvaHViLnNlcnZpY2UnO1xyXG5cclxuRGlhZ3JhbS5JbmplY3QoQ29tcGxleEhpZXJhcmNoaWNhbFRyZWUsIEJwbW5EaWFncmFtcywgRGF0YUJpbmRpbmcsIExheW91dEFuaW1hdGlvbik7XHJcblxyXG5jb25zdCBQRU5ESU5HX1BBVEggPSAnTTE4LDIybC0wLjAxLTZMMTQsMTJsMy45OS00LjAxTDE4LDJINnY2bDQsNGwtNCwzLjk5VjIySDE4eiBNOCw3LjVWNGg4djMuNWwtNCw0TDgsNy41eicsXHJcbiAgRllJX1BBVEggPSAnTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTVoLTJ2LTZoMnY2em0wLThoLTJWN2gydjJ6JyxcclxuICBFU0NBTEFURURfUEFUSCA9ICdNMjIgNS43MmwtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTcuODggMy4zOUw2LjYgMS44NiAyIDUuNzFsMS4yOSAxLjUzIDQuNTktMy44NXpNMTIuNSA4SDExdjZsNC43NSAyLjg1Ljc1LTEuMjMtNC0yLjM3Vjh6TTEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDljNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6bTAgMTZjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3eicsXHJcbiAgV0FSTk5JTkdfUEFUSCA9ICdNIDEzLjc2MzczNSwxLjg0MzM3MzUgSCA2LjMwMzczNDkgbCAtNS4yNyw1LjI3IHYgNy40NTk5OTk1IGwgNS4yNyw1LjI3IGggNy40NjAwMDAxIGwgNS4yNywtNS4yNyBWIDcuMTEzMzczNSBaIG0gLTMuNzMsMTQuMjk5OTk5NSBjIC0wLjcyMDAwMDEsMCAtMS4zMDAwMDAxLC0wLjU4IC0xLjMwMDAwMDEsLTEuMyAwLC0wLjcyIDAuNTgsLTEuMyAxLjMwMDAwMDEsLTEuMyAwLjcyLDAgMS4zLDAuNTggMS4zLDEuMyAwLDAuNzIgLTAuNTgsMS4zIC0xLjMsMS4zIHogbSAxLC00LjMgSCA5LjAzMzczNDkgViA1Ljg0MzM3MzUgaCAyLjAwMDAwMDEgeic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1mbG93JyxcclxuICB0ZW1wbGF0ZTogJycsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmxvdy5jb21wb25lbnQuc2NzcyddLFxyXG4gIHZpZXdQcm92aWRlcnM6IFtDb21wbGV4SGllcmFyY2hpY2FsVHJlZVNlcnZpY2VdLFxyXG4gIGhvc3Q6IHtcclxuICAgIGRpcjogJ2x0cidcclxuICB9XHJcbn0pXHJcbi8qKiBmbG93LXZpZXcgY29tcG9uZW50Ki9cclxuZXhwb3J0IGNsYXNzIEZsb3dWaWV3Q29tcG9uZW50IGV4dGVuZHMgVHJhY2VCYXNlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIG1vZGVsOiBEb2N1bWVudE1vZGVsPGFueT47XHJcbiAgQElucHV0KCkgY29ubmVjdG9yVHlwZTogU2VnbWVudHMgPSAnT3J0aG9nb25hbCc7XHJcbiAgZGlhZ3JhbTogRGlhZ3JhbTtcclxuICByZWFkb25seSB0b29sOiBEaWFncmFtVG9vbHMgPSBEaWFncmFtVG9vbHMuWm9vbVBhbjtcclxuICByZWFkb25seSBkaWFncmFtQ29uc3RyYWludHM6IERpYWdyYW1Db25zdHJhaW50cyA9XHJcbiAgICBEaWFncmFtQ29uc3RyYWludHMuRGVmYXVsdCB8XHJcbiAgICBEaWFncmFtQ29uc3RyYWludHMuUGFuIHxcclxuICAgIERpYWdyYW1Db25zdHJhaW50cy5MaW5lUm91dGluZyB8XHJcbiAgICBEaWFncmFtQ29uc3RyYWludHMuQnJpZGdpbmc7XHJcbiAgcHVibGljIHJlYWRvbmx5IGxheW91dCA9IHtcclxuICAgIHR5cGU6ICdDb21wbGV4SGllcmFyY2hpY2FsVHJlZScsXHJcbiAgICBjb25uZWN0aW9uUG9pbnRPcmlnaW46IENvbm5lY3Rpb25Qb2ludE9yaWdpbi5EaWZmZXJlbnRQb2ludCxcclxuICAgIGhvcml6b250YWxTcGFjaW5nOiA1MCxcclxuICAgIHZlcnRpY2FsU3BhY2luZzogNTAsXHJcbiAgICB2ZXJ0aWNhbEFsaWdubWVudDogJ1RvcCcsXHJcbiAgICBjb25uZWN0aW9uRGlyZWN0aW9uOiAnT3JpZW50YXRpb24nLFxyXG4gICAgb3JpZW50YXRpb246IHRoaXMuX3Nlc3Npb24uaW52ZXJzZSA/ICdSaWdodFRvTGVmdCcgOiAnTGVmdFRvUmlnaHQnLFxyXG4gICAgbWFyZ2luOiB7IGxlZnQ6IDEwLCByaWdodDogMTAsIHRvcDogMTAsIGJvdHRvbTogMTAgfVxyXG4gIH0gYXMgTGF5b3V0TW9kZWw7XHJcblxyXG4gIHJlYWRvbmx5IHNjcm9sbFNldHRpbmdzID0ge1xyXG4gICAgbWluWm9vbTogLjUsXHJcbiAgICBjYW5BdXRvU2Nyb2xsOiB0cnVlLFxyXG4gICAgY3VycmVudFpvb206IDEuMixcclxuICAgIHBhZGRpbmc6IHsgdG9wOiAwLCBib3R0b206IDAgfSxcclxuICAgIGF1dG9TY3JvbGxCb3JkZXI6IHsgdG9wOiAwLCBib3R0b206IDAgfSxcclxuICAgIG1heFpvb206IDIuNVxyXG4gIH0gYXMgU2Nyb2xsU2V0dGluZ3NNb2RlbDtcclxuXHJcbiAgcmVhZG9ubHkgc25hcFNldHRpbmdzID0ge1xyXG4gICAgY29uc3RyYWludHM6IFNuYXBDb25zdHJhaW50cy5Ob25lLFxyXG4gICAgZ3JpZFR5cGU6ICdEb3RzJ1xyXG4gIH0gYXMgU25hcFNldHRpbmdzTW9kZWw7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfY29uZmlndXJhdGlvbjogeyBbbmFtZTogc3RyaW5nXTogRmxvd05vZGUgfSA9IHt9O1xyXG4gIHByaXZhdGUgX3N1Ym1pdHRlZDogRGF0ZTtcclxuICBwcml2YXRlIF9hY2NlbnRDb2xvciA9IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KCk7XHJcbiAgLyoqIHdvcmtmbG93LXZpZXcgY3RvciAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FjY291bnRzOiBBY2NvdW50U2VydmljZSwgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+LFxyXG4gICAgaHViOiBIdWJTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcihodWIpO1xyXG4gICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5vZGVzLmZvckVhY2gobiA9PlxyXG4gICAgICB0aGlzLl9jb25maWd1cmF0aW9uW24ubmFtZV0gPSBuKTtcclxuICAgIF9zZXNzaW9uLnRoZW1lQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5cclxuICAgICAgc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLl9hY2NlbnRDb2xvciA9IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KCk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhfY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgdGhpcy5faW5pdGlhbGl6ZSgpO1xyXG4gIH1cclxuICBwcml2YXRlIGFzeW5jIF9pbml0aWFsaXplKCkge1xyXG4gICAgY29uc3QgeyBjb25uZWN0b3JzLCBub2RlcywgaW5kaWNhdG9ycyB9ID0gYXdhaXQgdGhpcy5fcHJlcGFyZSgpO1xyXG4gICAgdGhpcy5kaWFncmFtICYmIHRoaXMuZGlhZ3JhbS5kZXN0cm95KCk7XHJcbiAgICB0aGlzLmRpYWdyYW0gPSBuZXcgRGlhZ3JhbSh7XHJcbiAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgIGhlaWdodDogMzgwLFxyXG4gICAgICBub2RlcyxcclxuICAgICAgY29ubmVjdG9ycyxcclxuICAgICAgbGF5b3V0OiB0aGlzLmxheW91dCxcclxuICAgICAgdG9vbDogdGhpcy50b29sLFxyXG4gICAgICBzY3JvbGxTZXR0aW5nczogdGhpcy5zY3JvbGxTZXR0aW5ncyxcclxuICAgICAgc25hcFNldHRpbmdzOiB0aGlzLnNuYXBTZXR0aW5ncyxcclxuICAgICAgY29uc3RyYWludHM6IHRoaXMuZGlhZ3JhbUNvbnN0cmFpbnRzLFxyXG4gICAgICBlbmFibGVSdGw6IGZhbHNlLFxyXG4gICAgICBnZXRDb25uZWN0b3JEZWZhdWx0czogdGhpcy5jb25uRGVmYXVsdHMuYmluZCh0aGlzKSxcclxuICAgICAgZ2V0Tm9kZURlZmF1bHRzOiB0aGlzLm5vZGVEZWZhdWx0cy5iaW5kKHRoaXMpLFxyXG4gICAgfSwgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICAgIHRoaXMuZGlhZ3JhbS5kb0xheW91dCgpO1xyXG4gICAgaW5kaWNhdG9ycy5mb3JFYWNoKChuLCBpKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZGlhZ3JhbS5nZXROb2RlT2JqZWN0KChuLmFkZEluZm8gYXMgQ29ubmVjdG9ySW5mb01vZGVsKS5wYXJlbnRJZCk7XHJcbiAgICAgIG4ub2Zmc2V0WCA9IHBhcmVudC5vZmZzZXRYICsgKHRoaXMuX3Nlc3Npb24uaW52ZXJzZSA/IC0yNSA6IDI1KTtcclxuICAgICAgbi5vZmZzZXRZID0gcGFyZW50Lm9mZnNldFkgKyAyNTtcclxuICAgICAgbi56SW5kZXggPSAxMDAwICsgaTtcclxuICAgICAgdGhpcy5kaWFncmFtLmFkZChuKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFncmFtLmZpdFRvUGFnZSgpO1xyXG4gICAgLy90aGlzLmRpYWdyYW0ubGF5b3V0QW5pbWF0ZU1vZHVsZS47XHJcbiAgICBpbnRlcnZhbCg2MDAwMCkucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSgoKSA9PlxyXG4gICAgICB0aGlzLl9yZWZyZXNoKClcclxuICAgICk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3JlZnJlc2goKSB7XHJcbiAgICBzdXBlci5yZXNldEVzdGltYXRlVGltZSgpO1xyXG4gICAgdGhpcy5kaWFncmFtLm5vZGVzLmZvckVhY2gobiA9PiB7XHJcbiAgICAgIGNvbnN0IHsgbm9kZSwgcmVjaXBpZW50IH0gPSBuLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbDtcclxuICAgICAgaWYgKHJlY2lwaWVudCkge1xyXG4gICAgICAgIGlmICghcmVjaXBpZW50LnJlcGxpZWQgJiYgcmVjaXBpZW50LnBlbmRpbmcpIHtcclxuICAgICAgICAgIGlmIChyZWNpcGllbnQuZXN0aW1hdGUpIChuLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbCkudG9vbHRpcC5lc3RpbWF0ZWRUaW1lID0gdGhpcy5fdGltZUVzdGltYXRlKG5vZGUpO1xyXG4gICAgICAgICAgZWxzZSBpZiAobm9kZS5zdGFuZGFyZFRpbWUpIHtcclxuICAgICAgICAgICAgY29uc3QgZGlmZiA9IG5vZGUuc3RhbmRhcmRUaW1lIC0gbW9tZW50KCkuZGlmZihub2RlLnRpbWUsICdzJyk7XHJcbiAgICAgICAgICAgIGlmIChkaWZmID4gMClcclxuICAgICAgICAgICAgICAobi5hZGRJbmZvIGFzIE5vZGVJbmZvTW9kZWwpLnRvb2x0aXAuZXN0aW1hdGVkVGltZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0VzdGltYXRlVGltZScsIHRoaXMuX2R1cmF0aW9uKGRpZmYpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIG4udG9vbHRpcC5jb250ZW50ID0gdGhpcy5fdG9vbHRpcCgobi5hZGRJbmZvIGFzIE5vZGVJbmZvTW9kZWwpLnRvb2x0aXApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS5lc3RpbWF0ZSlcclxuICAgICAgICAgIChuLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbCkudG9vbHRpcC5lc3RpbWF0ZWRUaW1lID0gdGhpcy5fdGltZUVzdGltYXRlKG5vZGUpLFxyXG4gICAgICAgICAgICBuLnRvb2x0aXAuY29udGVudCA9IHRoaXMuX3Rvb2x0aXAoKG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsKS50b29sdGlwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBwdWJsaWMgcmVmcmVzaCgpIHtcclxuICAgIHRoaXMubmdPbkNoYW5nZXMobnVsbCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBvYmpcclxuICAgKi9cclxuICBwdWJsaWMgbm9kZURlZmF1bHRzKG9iajogTm9kZU1vZGVsKTogTm9kZU1vZGVsIHtcclxuICAgIGNvbnN0IHsgcmVjaXBpZW50LCBub2RlLCBpbmRpY2F0b3IgfSA9IG9iai5hZGRJbmZvIGFzIE5vZGVJbmZvTW9kZWw7XHJcblxyXG4gICAgaWYgKGluZGljYXRvcikge1xyXG4gICAgICBvYmoud2lkdGggPSBvYmouaGVpZ2h0ID0gMTU7XHJcbiAgICAgIG9iai5zdHlsZS5zdHJva2VXaWR0aCA9IDA7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgb2JqLndpZHRoID0gb2JqLmhlaWdodCA9IDUwO1xyXG4gICAgICBpZiAob2JqLmFubm90YXRpb25zICYmIG9iai5hbm5vdGF0aW9ucy5sZW5ndGgpIG9iai5hbm5vdGF0aW9uc1swXS5zdHlsZS5jb2xvciA9IHRoaXMuX3Nlc3Npb24udGhlbWUuZGFyayA/ICd3aGl0ZScgOiAnYmxhY2snO1xyXG4gICAgICBpZiAobm9kZSAmJiBub2RlLmVzdGltYXRlKSB7XHJcbiAgICAgICAgb2JqLnN0eWxlLnN0cm9rZURhc2hBcnJheSA9ICcyIDInO1xyXG4gICAgICAgIG9iai5zdHlsZS5zdHJva2VXaWR0aCA9IDE7XHJcbiAgICAgICAgb2JqLnN0eWxlLnN0cm9rZUNvbG9yID0gdGhpcy5fc2Vzc2lvbi50aGVtZS5kYXJrID8gJ3doaXRlJyA6ICdibGFjayc7XHJcbiAgICAgICAgb2JqLnN0eWxlLmZpbGwgPSAndHJhbnNwYXJlbnQnO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIG9iai5zdHlsZS5zdHJva2VDb2xvciA9IHRoaXMuX2FjY2VudENvbG9yO1xyXG4gICAgICAgIG9iai5zdHlsZS5zdHJva2VXaWR0aCA9IDI7XHJcbiAgICAgICAgb2JqLnN0eWxlLmZpbGwgPSByZWNpcGllbnQgJiYgcmVjaXBpZW50LnBlbmRpbmcgPyB0aGlzLl9zZXNzaW9uLmdldEFjY2VudCg0MDApIDogJ3RyYW5zcGFyZW50JztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9iajtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGNvbm5lY3RvclxyXG4gICAqL1xyXG4gIHB1YmxpYyBjb25uRGVmYXVsdHMoY29ubmVjdG9yOiBDb25uZWN0b3JNb2RlbCkge1xyXG4gICAgY29ubmVjdG9yLnR5cGUgPSB0aGlzLmNvbm5lY3RvclR5cGU7XHJcbiAgICBjb25uZWN0b3IuY29ybmVyUmFkaXVzID0gNjtcclxuICAgIGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3IuaGVpZ2h0ID0gNztcclxuICAgIGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iud2lkdGggPSA3O1xyXG4gICAgaWYgKGNvbm5lY3Rvci50eXBlID09PSAnT3J0aG9nb25hbCcpXHJcbiAgICAgIGNvbm5lY3Rvci5zb3VyY2VQYWRkaW5nID0gY29ubmVjdG9yLnRhcmdldFBhZGRpbmcgPSAxO1xyXG4gICAgaWYgKChjb25uZWN0b3IuYWRkSW5mbyBhcyBDb25uZWN0b3JJbmZvTW9kZWwpLmVzdGltYXRlKSB7XHJcbiAgICAgIGNvbm5lY3Rvci5zdHlsZS5zdHJva2VEYXNoQXJyYXkgPSAnMiAyJztcclxuICAgICAgY29ubmVjdG9yLnN0eWxlLnN0cm9rZVdpZHRoID0gMTtcclxuICAgICAgY29ubmVjdG9yLnN0eWxlLnN0cm9rZUNvbG9yID1cclxuICAgICAgICBjb25uZWN0b3IudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLmZpbGwgPVxyXG4gICAgICAgIGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPVxyXG4gICAgICAgIHRoaXMuX3Nlc3Npb24udGhlbWUuZGFyayA/ICd3aGl0ZScgOiAnYmxhY2snO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbm5lY3Rvci5zdHlsZS5zdHJva2VDb2xvciA9IGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPSBjb25uZWN0b3IudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLmZpbGwgPSB0aGlzLl9hY2NlbnRDb2xvcjtcclxuICAgICAgY29ubmVjdG9yLnN0eWxlLnN0cm9rZVdpZHRoID0gMjtcclxuICAgIH1cclxuICB9O1xyXG4gIC8qKiAqL1xyXG4gIHByaXZhdGUgYXN5bmMgX3ByZXBhcmUoKTogUHJvbWlzZTx7IG5vZGVzOiBOb2RlTW9kZWxbXTsgY29ubmVjdG9yczogQ29ubmVjdG9yTW9kZWxbXTsgaW5kaWNhdG9yczogTm9kZU1vZGVsW10gfT4ge1xyXG4gICAgY29uc3QgaW5kaWNhdG9yczogTm9kZU1vZGVsW10gPSBbXSwgY29ubmVjdG9yczogQ29ubmVjdG9yTW9kZWxbXSA9IFtdLCBub2RlczogTm9kZU1vZGVsW10gPSBbXTtcclxuICAgIHRoaXMuX3N1Ym1pdHRlZCA9IHRoaXMubW9kZWwuaXNzdWVkIHx8IHRoaXMubW9kZWwubG9nLmZpbHRlcihsID0+IGwudHlwZSA9PT0gJ1N1Ym1pdCcpWzBdLnRpbWU7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubW9kZWwud29ya2Zsb3cuY29ubmVjdG9ycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgY29ubmVjdG9yID0gdGhpcy5tb2RlbC53b3JrZmxvdy5jb25uZWN0b3JzW2ldO1xyXG4gICAgICBjb25uZWN0b3JzLnB1c2goXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgc291cmNlSUQ6IGNvbm5lY3Rvci5zb3VyY2VJZCxcclxuICAgICAgICAgIHRhcmdldElEOiBjb25uZWN0b3IudGFyZ2V0SWQsXHJcbiAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgIGVzdGltYXRlOiBjb25uZWN0b3IuZXN0aW1hdGVcclxuICAgICAgICAgIH0gYXMgQ29ubmVjdG9ySW5mb01vZGVsXHJcbiAgICAgICAgfSBhcyBDb25uZWN0b3JNb2RlbFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgbGV0IHpJbmRleCA9IDUwMDtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5tb2RlbC53b3JrZmxvdy5ub2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgbm9kZSA9IHRoaXMubW9kZWwud29ya2Zsb3cubm9kZXNbaV07XHJcbiAgICAgIGxldCByZWNpcGllbnRzID0gdGhpcy5tb2RlbC5yZWNpcGllbnRzLlxyXG4gICAgICAgIGZpbHRlcihyID0+IHIubm9kZUlkID09PSBub2RlLmlkICYmIHIucmVjZWl2ZWQgPj0gdGhpcy5fc3VibWl0dGVkKTtcclxuICAgICAgaWYgKHJlY2lwaWVudHMubGVuZ3RoKSB7XHJcbiAgICAgICAgcmVjaXBpZW50cyA9IHJlY2lwaWVudHMuc29ydChhID0+IGEucmVwbGllZCA/IC0xIDogMSk7XHJcbiAgICAgICAgZm9yICh2YXIgciA9IDA7IHIgPCByZWNpcGllbnRzLmxlbmd0aDsgcisrKSB7XHJcbiAgICAgICAgICBsZXQgcmVjaXBpZW50ID0gcmVjaXBpZW50c1tyXTtcclxuICAgICAgICAgIGNvbnN0IHsgYW5ub3RhdGlvbiwgdG9vbHRpcCB9ID0gYXdhaXQgdGhpcy5fbm90ZShub2RlLCByZWNpcGllbnQpO1xyXG4gICAgICAgICAgY29uc3Qgbm9kID0ge1xyXG4gICAgICAgICAgICBpZDogciA9PT0gMCA/IG5vZGUuaWQgOiBub2RlLmlkICsgci50b1N0cmluZygpLFxyXG4gICAgICAgICAgICBzaGFwZTogdGhpcy5fY29uZmlndXJhdGlvbltub2RlLnR5cGVdLnNoYXBlLFxyXG4gICAgICAgICAgICB6SW5kZXg6IHpJbmRleCsrLFxyXG4gICAgICAgICAgICB0b29sdGlwOiB7XHJcbiAgICAgICAgICAgICAgY29udGVudDogdGhpcy5fdG9vbHRpcCh0b29sdGlwKSxcclxuICAgICAgICAgICAgICBwb3NpdGlvbjogJ1RvcENlbnRlcidcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY29uc3RyYWludHM6IE5vZGVDb25zdHJhaW50cy5EZWZhdWx0IHwgTm9kZUNvbnN0cmFpbnRzLlRvb2x0aXAsXHJcbiAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICB0b29sdGlwLFxyXG4gICAgICAgICAgICAgIHJlY2lwaWVudCxcclxuICAgICAgICAgICAgICBub2RlXHJcbiAgICAgICAgICAgIH0gYXMgTm9kZUluZm9Nb2RlbCxcclxuICAgICAgICAgICAgYW5ub3RhdGlvbnM6IFt7XHJcbiAgICAgICAgICAgICAgY29udGVudDogYW5ub3RhdGlvbixcclxuICAgICAgICAgICAgICBtYXJnaW46IHsgdG9wOiA0IH0sXHJcbiAgICAgICAgICAgICAgdmVydGljYWxBbGlnbm1lbnQ6ICdUb3AnLFxyXG4gICAgICAgICAgICAgIG9mZnNldDoge1xyXG4gICAgICAgICAgICAgICAgeTogMSxcclxuICAgICAgICAgICAgICAgIHg6IC41XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XVxyXG4gICAgICAgICAgfSBhcyBOb2RlTW9kZWw7XHJcbiAgICAgICAgICBpZiAociA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbC53b3JrZmxvdy5jb25uZWN0b3JzLmZvckVhY2goYyA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGMudGFyZ2V0SWQgPT09IG5vZGUuaWQpIGNvbm5lY3RvcnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBzb3VyY2VJRDogYy5zb3VyY2VJZCxcclxuICAgICAgICAgICAgICAgIHRhcmdldElEOiBub2QuaWQsXHJcbiAgICAgICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgIGVzdGltYXRlOiBjLmVzdGltYXRlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgaWYgKGMuc291cmNlSWQgPT09IG5vZGUuaWQgJiYgIW5vZGUuZnlpKVxyXG4gICAgICAgICAgICAgICAgY29ubmVjdG9ycy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgc291cmNlSUQ6IG5vZC5pZCxcclxuICAgICAgICAgICAgICAgICAgdGFyZ2V0SUQ6IGMudGFyZ2V0SWQsXHJcbiAgICAgICAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICAgICAgICBlc3RpbWF0ZTogYy5lc3RpbWF0ZVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBub2Rlcy5wdXNoKG5vZCk7XHJcbiAgICAgICAgICBpZiAocmVjaXBpZW50LmFjdGlvbikge1xyXG4gICAgICAgICAgICBjb25zdCBhY3Rpb24gPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYWN0aW9ucy5maW5kKGEgPT4gYS5uYW1lID09PSByZWNpcGllbnQuYWN0aW9uKTtcclxuICAgICAgICAgICAgaWYgKGFjdGlvbiAmJiBhY3Rpb24uc2hhcGUpIHtcclxuICAgICAgICAgICAgICBjb25zdCBhY3Rpb25JbmRpY2F0b3IgPSB7XHJcbiAgICAgICAgICAgICAgICBpZDogbm9kLmlkICsgJ2FjdGlvbicsXHJcbiAgICAgICAgICAgICAgICBzaGFwZToge1xyXG4gICAgICAgICAgICAgICAgICB0eXBlOiAnUGF0aCcsXHJcbiAgICAgICAgICAgICAgICAgIGRhdGE6IGFjdGlvbi5zaGFwZSxcclxuICAgICAgICAgICAgICAgICAgYWxpZ246IHRoaXMuX3Nlc3Npb24uaW52ZXJzZSA/ICdYTWluWU1heCcgOiAnWE1heFlNYXgnLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICAgIGZpbGw6IGFjdGlvbi5jb2xvciB8fCB0aGlzLl9zZXNzaW9uLmdldEFjY2VudCg5MDApXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgICBpbmRpY2F0b3I6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgIHBhcmVudElkOiBub2QuaWRcclxuICAgICAgICAgICAgICAgIH0gYXMgTm9kZUluZm9Nb2RlbFxyXG4gICAgICAgICAgICAgIH0gYXMgTm9kZU1vZGVsO1xyXG4gICAgICAgICAgICAgIGluZGljYXRvcnMucHVzaChhY3Rpb25JbmRpY2F0b3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVjaXBpZW50LnBlbmRpbmcgJiYgIXJlY2lwaWVudC5lc3RpbWF0ZSlcclxuICAgICAgICAgICAgaW5kaWNhdG9ycy5wdXNoKHtcclxuICAgICAgICAgICAgICBpZDogbm9kLmlkICsgJ3BlbmRpbmcnLFxyXG4gICAgICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnUGF0aCcsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBQRU5ESU5HX1BBVEgsXHJcbiAgICAgICAgICAgICAgICBhbGlnbjogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlID8gJ1hNYXhZTWF4JyA6ICdYTWluWU1heCdcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICBmaWxsOiB0aGlzLl9zZXNzaW9uLmdldEFjY2VudCg5MDApXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICBpbmRpY2F0b3I6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBwYXJlbnRJZDogbm9kLmlkXHJcbiAgICAgICAgICAgICAgfSBhcyBDb25uZWN0b3JJbmZvTW9kZWxcclxuICAgICAgICAgICAgfSBhcyBOb2RlTW9kZWwpO1xyXG4gICAgICAgICAgaWYgKG5vZGUuZnlpKVxyXG4gICAgICAgICAgICBpbmRpY2F0b3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgIGlkOiBub2QuaWQgKyAnZnlpJyxcclxuICAgICAgICAgICAgICBzaGFwZToge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogJ1BhdGgnLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogRllJX1BBVEgsXHJcbiAgICAgICAgICAgICAgICBhbGlnbjogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlID8gJ1hNaW5ZTWF4JyA6ICdYTWF4WU1heCdcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICBmaWxsOiAnIzE5NzZkMidcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHBhcmVudElkOiBub2QuaWRcclxuICAgICAgICAgICAgICB9IGFzIENvbm5lY3RvckluZm9Nb2RlbFxyXG4gICAgICAgICAgICB9IGFzIE5vZGVNb2RlbFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCB7IHN0YXRlLCBhbm5vdGF0aW9uLCB0b29sdGlwIH0gPSBhd2FpdCB0aGlzLl9zaGFwZShub2RlKTtcclxuICAgICAgICBjb25zdCBzaGFwZSA9IHRoaXMuX2NvbmZpZ3VyYXRpb25bbm9kZS50eXBlXS5zaGFwZTtcclxuICAgICAgICBub2Rlcy5wdXNoKHtcclxuICAgICAgICAgIGlkOiBub2RlLmlkLFxyXG4gICAgICAgICAgc2hhcGUsXHJcbiAgICAgICAgICB6SW5kZXg6IHpJbmRleCsrLFxyXG4gICAgICAgICAgdG9vbHRpcDoge1xyXG4gICAgICAgICAgICBjb250ZW50OiB0aGlzLl90b29sdGlwKHRvb2x0aXApLFxyXG4gICAgICAgICAgICBwb3NpdGlvbjogJ1RvcENlbnRlcidcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBjb25zdHJhaW50czogT2JqZWN0LmtleXModG9vbHRpcCkubGVuZ3RoID8gTm9kZUNvbnN0cmFpbnRzLkRlZmF1bHQgfCBOb2RlQ29uc3RyYWludHMuVG9vbHRpcCA6IE5vZGVDb25zdHJhaW50cy5EZWZhdWx0LFxyXG4gICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICB0b29sdGlwLFxyXG4gICAgICAgICAgICBub2RlXHJcbiAgICAgICAgICB9IGFzIE5vZGVJbmZvTW9kZWwsXHJcbiAgICAgICAgICBhbm5vdGF0aW9uczogW3tcclxuICAgICAgICAgICAgY29udGVudDogYW5ub3RhdGlvbixcclxuICAgICAgICAgICAgb2Zmc2V0OiBzaGFwZS50eXBlID09PSAnUGF0aCcgPyB7XHJcbiAgICAgICAgICAgICAgeTogMVxyXG4gICAgICAgICAgICB9IDogeyB4OiAuNSB9LFxyXG4gICAgICAgICAgICB2ZXJ0aWNhbEFsaWdubWVudDogc2hhcGUudHlwZSA9PT0gJ1BhdGgnID8gJ1RvcCcgOiAnQ2VudGVyJ1xyXG4gICAgICAgICAgfV1cclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoc3RhdGUgJiYgc3RhdGUuc2hhcGUgJiYgIW5vZGUuZXN0aW1hdGUpXHJcbiAgICAgICAgICBpbmRpY2F0b3JzLnB1c2goe1xyXG4gICAgICAgICAgICBpZDogbm9kZS5pZCArICdzdGF0ZScsXHJcbiAgICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgICAgdHlwZTogJ1BhdGgnLFxyXG4gICAgICAgICAgICAgIGRhdGE6IHN0YXRlLnNoYXBlLFxyXG4gICAgICAgICAgICAgIGFsaWduOiB0aGlzLl9zZXNzaW9uLmludmVyc2UgPyAnWE1heFlNYXgnIDogJ1hNaW5ZTWF4J1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgICAgIGZpbGw6IHN0YXRlLmNvbG9yIHx8ICdibGFjaydcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICBwYXJlbnRJZDogbm9kZS5pZCxcclxuICAgICAgICAgICAgICBub2RlOiBub2RlXHJcbiAgICAgICAgICAgIH0gYXMgQ29ubmVjdG9ySW5mb01vZGVsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICBpZiAobm9kZS5lcnJvcikge1xyXG4gICAgICAgICAgY29uc3Qgd2Fybm5pbmdJbmRpY2F0b3IgPSB7XHJcbiAgICAgICAgICAgIGlkOiBub2RlLmlkICsgJ2V4Y2VwdGlvbicsXHJcbiAgICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgICAgdHlwZTogJ1BhdGgnLFxyXG4gICAgICAgICAgICAgIGRhdGE6IFdBUk5OSU5HX1BBVEgsXHJcbiAgICAgICAgICAgICAgYWxpZ246IHRoaXMuX3Nlc3Npb24uaW52ZXJzZSA/ICdYTWluWU1heCcgOiAnWE1heFlNYXgnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgZmlsbDogZ2V0V2Fybig4MDApXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICBpbmRpY2F0b3I6IHRydWUsXHJcbiAgICAgICAgICAgICAgcGFyZW50SWQ6IG5vZGUuaWRcclxuICAgICAgICAgICAgfSBhcyBDb25uZWN0b3JJbmZvTW9kZWxcclxuICAgICAgICAgIH0gYXMgTm9kZU1vZGVsO1xyXG4gICAgICAgICAgaW5kaWNhdG9ycy5wdXNoKHdhcm5uaW5nSW5kaWNhdG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7IGNvbm5lY3RvcnMsIG5vZGVzLCBpbmRpY2F0b3JzIH07XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBub2RlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhc3luYyBfc2hhcGUobm9kZTogTm9kZUluZm8pOiBQcm9taXNlPHsgc3RhdGU6IFN0YXRlOyBhbm5vdGF0aW9uOiBzdHJpbmc7IHRvb2x0aXA6IE5vZGVUb29sdGlwTW9kZWw7IH0+IHtcclxuICAgIGNvbnN0IHRvb2x0aXAgPSB7fSBhcyBOb2RlVG9vbHRpcE1vZGVsO1xyXG4gICAgaWYgKG5vZGUuZXJyb3IpIHRvb2x0aXAuZXJyb3IgPSBub2RlLmVycm9yO1xyXG4gICAgbGV0IGFubm90YXRpb246IHN0cmluZywgc3RhdGU6IFN0YXRlO1xyXG4gICAgY29uc3QgbG9nID0gdGhpcy5tb2RlbC5sb2cuZmlsdGVyKGwgPT4gbC5ub2RlSWQgPT09IG5vZGUuaWQgJiYgbC50aW1lID49IHRoaXMuX3N1Ym1pdHRlZCk7XHJcbiAgICBjb25zdCBzdGF0ZUxvZyA9IGxvZy5maW5kKGwgPT4gbC50eXBlID09PSAnU3RhdGVDaGFuZ2UnKTtcclxuICAgIGlmIChzdGF0ZUxvZykge1xyXG4gICAgICBzdGF0ZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5zdGF0ZXMuZmluZChzID0+IHMubmFtZSA9PT0gc3RhdGVMb2cuc3RhdGUpO1xyXG5cclxuICAgICAgYW5ub3RhdGlvbiA9IHN0YXRlID8gKChub2RlLmVzdGltYXRlID8gc3RhdGUuZnV0dXJlIDogc3RhdGUucGFzdCkgfHwgc3RhdGUudGl0bGUpIDogc3RhdGVMb2cuc3RhdGU7XHJcbiAgICB9XHJcbiAgICBpZiAobm9kZS50eXBlID09PSBTVEFSVF9OT0RFKSB7XHJcbiAgICAgIGlmICghbm9kZS5lc3RpbWF0ZSkge1xyXG4gICAgICAgIGNvbnN0IHsgbm90ZSwgcm9sZSB9ID0gYXdhaXQgdGhpcy5fc3RhcnROb2RlKCk7XHJcbiAgICAgICAgdG9vbHRpcC5ub3RlID0gbm90ZSxcclxuICAgICAgICAgIHRvb2x0aXAucm9sZSA9IHJvbGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG5vZGUuZXN0aW1hdGUpXHJcbiAgICAgIHRvb2x0aXAuZXN0aW1hdGVkVGltZSA9IHRoaXMuX3RpbWVFc3RpbWF0ZShub2RlKTtcclxuICAgIHJldHVybiB7IHN0YXRlLCB0b29sdGlwLCBhbm5vdGF0aW9uIH07XHJcbiAgfVxyXG4gIHJlc2l6ZSgpIHtcclxuICAgIGlmICh0aGlzLmRpYWdyYW0pIHRoaXMuZGlhZ3JhbS53aWR0aCA9ICdhdXRvJztcclxuICB9XHJcbiAgcHJpdmF0ZSBfdGltZUVzdGltYXRlKG5vZGU6IE5vZGVJbmZvKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHsgbWluLCBtYXggfSA9IHN1cGVyLl9lc3RpbWF0ZVRpbWUobm9kZSk7XHJcbiAgICBpZiAobWF4KVxyXG4gICAgICByZXR1cm4gIW1pbiB8fCBtaW4gPT09IG1heCA/XHJcbiAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnRXN0aW1hdGVUaW1lJywgdGhpcy5fZHVyYXRpb24obWF4KSkgOlxyXG4gICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0VzdGltYXRlVGltZVJhbmdlJywgdGhpcy5fZHVyYXRpb24obWluKSwgdGhpcy5fZHVyYXRpb24obWF4KSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3Rvb2x0aXAob2JqOiBOb2RlVG9vbHRpcE1vZGVsKSB7XHJcbiAgICBjb25zdCB7IG5vdGUsIHJvbGUsIHN1YnN0aXR1dGluZywgZHVyYXRpb24sIHN0YW5kYXJkVGltZSwgZXN0aW1hdGVkVGltZSwgZXJyb3IsIGZ5aSB9ID0gb2JqXHJcbiAgICBjb25zdCByb3dzID0gW2Vycm9yLCBub3RlLCByb2xlLCBzdWJzdGl0dXRpbmcsIGZ5aSwgZHVyYXRpb24sIHN0YW5kYXJkVGltZSwgZXN0aW1hdGVkVGltZV0uZmlsdGVyKHYgPT4gdik7XHJcbiAgICBpZiAocm93cy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIHJvd3Muam9pbignICcpXHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgYXN5bmMgX3N0YXJ0Tm9kZSgpOiBQcm9taXNlPHtcclxuICAgIG5vdGU6IHN0cmluZywgcm9sZTogc3RyaW5nO1xyXG4gIH0+IHtcclxuICAgIGxldCB3aG86IFVzZXJJbmZvIHwgJ3lvdScsIGJ5OiBVc2VySW5mbyB8ICd5b3UnO1xyXG4gICAgaWYgKHRoaXMubW9kZWwub3duZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnVzZXJJZCAmJiAhdGhpcy5fc2Vzc2lvbi5pc0ltcGVyc29uYXRpbmcpXHJcbiAgICAgIHdobyA9ICd5b3UnO1xyXG4gICAgZWxzZVxyXG4gICAgICB3aG8gPSBhd2FpdCB0aGlzLl9hY2NvdW50cy5nZXQodGhpcy5tb2RlbC5vd25lcklkKS50b1Byb21pc2UoKTtcclxuICAgIGlmICh0aGlzLm1vZGVsLm93bmVyQnlJZCkge1xyXG4gICAgICBpZiAodGhpcy5tb2RlbC5vd25lckJ5SWQgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkKVxyXG4gICAgICAgIGJ5ID0gJ3lvdSc7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBieSA9IGF3YWl0IHRoaXMuX2FjY291bnRzLmdldCh0aGlzLm1vZGVsLm93bmVyQnlJZCkudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcbiAgICBsZXQgbm90ZTogc3RyaW5nLCByb2xlOiBzdHJpbmc7XHJcbiAgICBpZiAoYnkpIHtcclxuICAgICAgaWYgKGJ5ID09PSAneW91JylcclxuICAgICAgICBub3RlID1cclxuICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1N1Ym1pdHRlZE5vdGVCeVlvdScsXHJcbiAgICAgICAgICAgIHdobyA9PT0gJ3lvdScgPyB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3UnKSA6ICh3aG8gYXMgVXNlckluZm8pLm5hbWUsXHJcbiAgICAgICAgICAgIHRoaXMuX2Zyb21Ob3codGhpcy5tb2RlbC5pc3N1ZWQpKTtcclxuXHJcbiAgICAgIGVsc2VcclxuICAgICAgICBub3RlID1cclxuICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1N1Ym1pdHRlZE5vdGVCeScsXHJcbiAgICAgICAgICAgIHdobyA9PT0gJ3lvdScgPyB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3UnKSA6ICh3aG8gYXMgVXNlckluZm8pLm5hbWUsXHJcbiAgICAgICAgICAgIChieSBhcyBVc2VySW5mbykubmFtZSxcclxuICAgICAgICAgICAgdGhpcy5fZnJvbU5vdyh0aGlzLm1vZGVsLmlzc3VlZCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGVsc2UgaWYgKHdobyA9PT0gJ3lvdScpXHJcbiAgICAgIG5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3VTdWJtaXR0ZWROb3RlJywgdGhpcy5fZnJvbU5vdyh0aGlzLm1vZGVsLmlzc3VlZCkpO1xyXG5cclxuICAgIGVsc2VcclxuICAgICAgbm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1N1Ym1pdHRlZE5vdGUnLCAod2hvIGFzIFVzZXJJbmZvKS5uYW1lLCB0aGlzLl9mcm9tTm93KHRoaXMubW9kZWwuaXNzdWVkKSk7XHJcbiAgICBpZiAod2hvICE9PSAneW91JyAmJiB3aG8ucm9sZSlcclxuICAgICAgcm9sZSA9IGAtICR7d2hvLnJvbGV9YDtcclxuICAgIHJldHVybiB7IG5vdGUsIHJvbGUgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX25vdGUobm9kZTogTm9kZUluZm8sIHJlY2lwaWVudDogUmVjaXBpZW50KTogUHJvbWlzZTx7IGFubm90YXRpb246IHN0cmluZzsgdG9vbHRpcDogTm9kZVRvb2x0aXBNb2RlbCB9PiB7XHJcbiAgICBjb25zdCB0b29sdGlwOiBOb2RlVG9vbHRpcE1vZGVsID0ge307XHJcbiAgICBsZXQgYW5ub3RhdGlvbjogc3RyaW5nO1xyXG5cclxuICAgIGlmIChyZWNpcGllbnQudXNlcklkID09PSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUudXNlcklkKSB7XHJcbiAgICAgIGFubm90YXRpb24gPSB0aGlzLl9zZXNzaW9uLmlzSW1wZXJzb25hdGluZyA/IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5uYW1lIDogdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91Jyk7XHJcbiAgICAgIGlmIChyZWNpcGllbnQuYnlJZCkge1xyXG4gICAgICAgIGNvbnN0IHUgPSBhd2FpdCB0aGlzLl9hY2NvdW50cy5nZXQocmVjaXBpZW50LmJ5SWQpLnRvUHJvbWlzZSgpXHJcbiAgICAgICAgY29uc3QgcGFzdCA9IHRoaXMuX2FjdGlvbihyZWNpcGllbnQuYWN0aW9uLCB1LmdlbmRlciksIHRpbWUgPSB0aGlzLl9mcm9tTm93KHJlY2lwaWVudC5yZXBsaWVkKTtcclxuICAgICAgICB0b29sdGlwLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3VUYWtlbkFjdGlvbkJ5JywgdS5uYW1lLCBwYXN0LCB0aW1lKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChyZWNpcGllbnQucmVwbGllZCkge1xyXG4gICAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLl9mcm9tTm93KHJlY2lwaWVudC5yZXBsaWVkKTtcclxuICAgICAgICBpZiAodGhpcy5fc2Vzc2lvbi5pc0ltcGVyc29uYXRpbmcpIHtcclxuICAgICAgICAgIGNvbnN0IHBhc3QgPSB0aGlzLl9hY3Rpb24ocmVjaXBpZW50LmFjdGlvbiwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmdlbmRlcik7XHJcbiAgICAgICAgICB0b29sdGlwLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpb25UYWtlbicsIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5uYW1lLCBwYXN0LCB0aW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBwYXN0ID0gdGhpcy5fYWN0aW9uKHJlY2lwaWVudC5hY3Rpb24sICd5b3UnKTtcclxuICAgICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdVRha2VuQWN0aW9uJywgcGFzdCwgdGltZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKCFub2RlLmVzdGltYXRlKSB7XHJcbiAgICAgICAgY29uc3QgdGltZSA9IHRoaXMuX2Zyb21Ob3cocmVjaXBpZW50LnJlY2VpdmVkKTtcclxuICAgICAgICBpZiAodGhpcy5fc2Vzc2lvbi5pc0ltcGVyc29uYXRpbmcpXHJcbiAgICAgICAgICB0b29sdGlwLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1JlY2VpdmVkQnknLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSwgdGltZSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91UmVjZWl2ZWQnLCB0aW1lKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocmVjaXBpZW50LnJvbGUpIHtcclxuICAgICAgICBjb25zdCBjcm9sZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5yb2xlcy5maW5kKG8gPT4gby5uYW1lID09PSByZWNpcGllbnQucm9sZSk7XHJcbiAgICAgICAgdG9vbHRpcC5yb2xlID0gYC0gJHtjcm9sZSA/IGNyb2xlLnRpdGxlIDogcmVjaXBpZW50LnJvbGV9YDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnN0IHdobyA9IGF3YWl0IHRoaXMuX2FjY291bnRzLmdldChyZWNpcGllbnQudXNlcklkKS50b1Byb21pc2UoKTtcclxuICAgICAgYW5ub3RhdGlvbiA9IHdoby5uYW1lO1xyXG4gICAgICBpZiAod2hvLnJvbGUpIHRvb2x0aXAucm9sZSA9IGAtICR7d2hvLnJvbGV9YDtcclxuICAgICAgZWxzZSBpZiAocmVjaXBpZW50LnJvbGUpIHtcclxuICAgICAgICBjb25zdCBjcm9sZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5yb2xlcy5maW5kKG8gPT4gby5uYW1lID09PSByZWNpcGllbnQucm9sZSk7XHJcbiAgICAgICAgdG9vbHRpcC5yb2xlID0gYC0gJHtjcm9sZSA/IGNyb2xlLnRpdGxlIDogcmVjaXBpZW50LnJvbGV9YDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChyZWNpcGllbnQucmVwbGllZCkge1xyXG4gICAgICAgIGlmIChyZWNpcGllbnQuYnlJZCkge1xyXG4gICAgICAgICAgY29uc3QgYnkgPSBhd2FpdCB0aGlzLl9hY2NvdW50cy5nZXQocmVjaXBpZW50LmJ5SWQpLnRvUHJvbWlzZSgpO1xyXG4gICAgICAgICAgY29uc3QgcGFzdCA9IHRoaXMuX2FjdGlvbihyZWNpcGllbnQuYWN0aW9uLCBieS5nZW5kZXIpLFxyXG4gICAgICAgICAgICB0aW1lID0gdGhpcy5fZnJvbU5vdyhyZWNpcGllbnQucmVwbGllZCk7XHJcbiAgICAgICAgICB0b29sdGlwLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpb25UYWtlbkJ5JywgYnkubmFtZSwgcGFzdCwgdGltZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgcGFzdCA9IHRoaXMuX2FjdGlvbihyZWNpcGllbnQuYWN0aW9uLCB3aG8uZ2VuZGVyKSxcclxuICAgICAgICAgICAgdGltZSA9IHRoaXMuX2Zyb21Ob3cocmVjaXBpZW50LnJlcGxpZWQpO1xyXG4gICAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aW9uVGFrZW4nLCB3aG8ubmFtZSwgcGFzdCwgdGltZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKCFyZWNpcGllbnQuZXN0aW1hdGUpIHtcclxuICAgICAgICBjb25zdCB0aW1lID0gdGhpcy5fZnJvbU5vdyhyZWNpcGllbnQucmVjZWl2ZWQpO1xyXG4gICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnUmVjZWl2ZWRUaW1lJywgd2hvLmdlbmRlciwgdGltZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChyZWNpcGllbnQuc3Vic3RpdHV0aW5nSWQgJiYgcmVjaXBpZW50LmVzdGltYXRlKSB7XHJcbiAgICAgIGlmIChyZWNpcGllbnQuc3Vic3RpdHV0aW5nSWQgPT09IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5ieUlkKVxyXG4gICAgICAgIHRvb2x0aXAuc3Vic3RpdHV0aW5nID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdTdWJzdGl0dXRpbmdZb3UnLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgdSA9IGF3YWl0IHRoaXMuX2FjY291bnRzLmdldChyZWNpcGllbnQuc3Vic3RpdHV0aW5nSWQpLnRvUHJvbWlzZSgpO1xyXG4gICAgICAgIHRvb2x0aXAuc3Vic3RpdHV0aW5nID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdTdWJzdGl0dXRpbmdGb3InLCB1LmdlbmRlciwgdS5uYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgZXNjYWxhdGlvbnMgPSB0aGlzLm1vZGVsLmxvZy5maWx0ZXIobCA9PiBsLnRpbWUgPiB0aGlzLm1vZGVsLmlzc3VlZCAmJiBsLnR5cGUgPT09ICdFc2NhbGF0aW9uJyAmJiBsLnJlY2lwaWVudElkID09PSByZWNpcGllbnQuaWQpO1xyXG4gICAgaWYgKGVzY2FsYXRpb25zLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCB1c2VySWRzID0gZXNjYWxhdGlvbnMubWFwKGUgPT4gZS51c2VySWQpO1xyXG4gICAgICBjb25zdCB1c2VycyA9IGF3YWl0IHRoaXMuX2FjY291bnRzLmdldEFsbCh1c2VySWRzKS50b1Byb21pc2UoKTtcclxuICAgICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLl9kdXJhdGlvbihtb21lbnQoZXNjYWxhdGlvbnNbZXNjYWxhdGlvbnMubGVuZ3RoIC0gMV0udGltZSkuZGlmZihyZWNpcGllbnQucmVjZWl2ZWQsICdzJykpO1xyXG4gICAgICB0b29sdGlwLnN1YnN0aXR1dGluZyA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0VzY2FsYXRlZFRvJywgdGhpcy5fdHJhbnNsYXRlLmpvaW4odXNlcnMubWFwKHUgPT4gdS5uYW1lKSksIGR1cmF0aW9uKTtcclxuICAgIH1cclxuICAgIGlmIChyZWNpcGllbnQucmVwbGllZCkge1xyXG4gICAgICBjb25zdCBkdXJhdGlvbiA9IG1vbWVudChyZWNpcGllbnQucmVwbGllZCkuZGlmZihyZWNpcGllbnQucmVjZWl2ZWQsICdzJyk7XHJcbiAgICAgIHRvb2x0aXAuZHVyYXRpb24gPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdEdXJhdGlvblRpbWUnLCB0aGlzLl9kdXJhdGlvbihkdXJhdGlvbikpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocmVjaXBpZW50LnBlbmRpbmcpIHtcclxuICAgICAgaWYgKHJlY2lwaWVudC5lc3RpbWF0ZSkgdG9vbHRpcC5lc3RpbWF0ZWRUaW1lID0gdGhpcy5fdGltZUVzdGltYXRlKG5vZGUpO1xyXG4gICAgICBlbHNlIGlmIChub2RlLnN0YW5kYXJkVGltZSkge1xyXG4gICAgICAgIGNvbnN0IGRpZmYgPSBub2RlLnN0YW5kYXJkVGltZSAtIG1vbWVudCgpLmRpZmYobm9kZS50aW1lLCAncycpO1xyXG4gICAgICAgIGlmIChkaWZmID4gMClcclxuICAgICAgICAgIHRvb2x0aXAuZXN0aW1hdGVkVGltZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0VzdGltYXRlVGltZScsIHRoaXMuX2R1cmF0aW9uKGRpZmYpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobm9kZS5zdGFuZGFyZFRpbWUpXHJcbiAgICAgIHRvb2x0aXAuc3RhbmRhcmRUaW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnTm9kZVN0YW5kYXJkVGltZScsIHRoaXMuX2R1cmF0aW9uKG5vZGUuc3RhbmRhcmRUaW1lKSk7XHJcbiAgICBpZiAobm9kZS5meWkpXHJcbiAgICAgIHRvb2x0aXAuZnlpID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRllJJyk7XHJcbiAgICByZXR1cm4geyBhbm5vdGF0aW9uLCB0b29sdGlwIH07XHJcbiAgfVxyXG4gIHByaXZhdGUgX2FjdGlvbihuYW1lOiBzdHJpbmcsIGdlbmRlcj86IEdlbmRlciB8ICd5b3UnKSB7XHJcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYWN0aW9ucy5maW5kKGEgPT4gYS5uYW1lID09PSBuYW1lKTtcclxuICAgIGlmICghYWN0aW9uKSByZXR1cm4gbmFtZTtcclxuICAgIGlmIChnZW5kZXIgPT09ICd5b3UnKSB7XHJcbiAgICAgIGNvbnN0IGdlbmRlciA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5ieUdlbmRlciB8fCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyLCBwZXJzb25hbCA9XHJcbiAgICAgICAgKGdlbmRlciA9PT0gJ01hbGUnID8gKGFjdGlvbi55b3VNYWxlIHx8IGFjdGlvbi55b3UpIDpcclxuICAgICAgICAgIGdlbmRlciA9PT0gJ0ZlbWFsZScgPyAoYWN0aW9uLnlvdUZlbWFsZSB8fCBhY3Rpb24ueW91KSA6XHJcbiAgICAgICAgICAgIGFjdGlvbi55b3UpO1xyXG4gICAgICByZXR1cm4gKHBlcnNvbmFsIHx8XHJcbiAgICAgICAgYWN0aW9uLnBhc3QgfHxcclxuICAgICAgICBhY3Rpb24udGl0bGUpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBwYXN0ID0gKChnZW5kZXIgPT09ICdNYWxlJyA/IChhY3Rpb24ucGFzdE1hbGUgfHwgYWN0aW9uLnBhc3QpIDpcclxuICAgICAgZ2VuZGVyID09PSAnRmVtYWxlJyA/IChhY3Rpb24ucGFzdEZlbWFsZSB8fCBhY3Rpb24ucGFzdCkgOiBhY3Rpb24ucGFzdCkgfHxcclxuICAgICAgYWN0aW9uLnRpdGxlKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgcmV0dXJuIHBhc3Q7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9mcm9tTm93KGRhdGU6IERhdGUpIHtcclxuICAgIHJldHVybiBtb21lbnQoZGF0ZSkuZnJvbU5vdygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZHVyYXRpb24odGltZTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gbW9tZW50LmR1cmF0aW9uKHRpbWUsICdzJykuaHVtYW5pemUoKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gICAgdGhpcy5kaWFncmFtICYmIHRoaXMuZGlhZ3JhbS5kZXN0cm95KCk7XHJcbiAgfVxyXG59XHJcbmludGVyZmFjZSBDb25uZWN0b3JJbmZvTW9kZWwge1xyXG4gIGluZGljYXRvcj86IGJvb2xlYW4sXHJcbiAgZXN0aW1hdGU/OiBib29sZWFuO1xyXG4gIHBhcmVudElkOiBzdHJpbmdcclxufVxyXG5pbnRlcmZhY2UgTm9kZUluZm9Nb2RlbCB7XHJcbiAgdG9vbHRpcDogTm9kZVRvb2x0aXBNb2RlbDtcclxuICBub2RlOiBOb2RlSW5mbztcclxuICByZWNpcGllbnQ6IFJlY2lwaWVudFxyXG4gIGluZGljYXRvcj86IGJvb2xlYW47XHJcbiAgcGFyZW50SWQ/OiBzdHJpbmc7XHJcbn1cclxuaW50ZXJmYWNlIE5vZGVUb29sdGlwTW9kZWwge1xyXG4gIGZ5aT86IHN0cmluZztcclxuICBlcnJvcj86IHN0cmluZztcclxuICBub3RlPzogc3RyaW5nO1xyXG4gIHJvbGU/OiBzdHJpbmc7XHJcbiAgc3Vic3RpdHV0aW5nPzogc3RyaW5nO1xyXG4gIHN0YW5kYXJkVGltZT86IHN0cmluZztcclxuICBkdXJhdGlvbj86IHN0cmluZztcclxuICBlc3RpbWF0ZWRUaW1lPzogc3RyaW5nO1xyXG59XHJcbiJdfQ==
581
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvbXBvc2UvdHJhY2UvZmxvdy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFtRCxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQTBDLFlBQVksRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQWtCLDhCQUE4QixFQUFxQixZQUFZLEVBQUUsV0FBVyxFQUE4RyxxQkFBcUIsRUFBRSxlQUFlLEVBQW1CLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xiLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7O0FBSHJELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQVNqQyxPQUFPLENBQUMsTUFBTSxDQUFDLHVCQUF1QixFQUFFLFlBQVksRUFBRSxXQUFXLENBQUEscURBQXFELENBQUMsQ0FBQztBQUV4SCxNQUFNLFlBQVksR0FBRyx1RkFBdUYsRUFDMUcsUUFBUSxHQUFHLGtHQUFrRyxFQUM3RyxjQUFjLEdBQUcsbVFBQW1RLEVBQ3BSLGFBQWEsR0FBRyxzVEFBc1QsQ0FBQztBQVd6VSx5QkFBeUI7QUFDekIsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFNBQVM7SUFxQzlDLHlCQUF5QjtJQUN6QixZQUFvQixTQUF5QixFQUFVLFFBQXdCLEVBQVUsVUFBNEIsRUFDM0csV0FBdUMsRUFDL0MsR0FBZTtRQUNmLEtB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LFVBQVUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDdkUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLFFBQVEsQ0FBQyxJQUFVO1FBQ3pCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxTQUFTLENBQUMsSUFBWTtRQUM1QixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFDRCxXQUFXO1FBQ1QsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN6QyxDQUFDOzsrR0EzaUJVLGlCQUFpQjttR0FBakIsaUJBQWlCLG1NQVJsQixFQUFFLCtDQUVHLENBQUMsOEJBQThCLENBQUM7NEZBTXBDLGlCQUFpQjtrQkFWN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsUUFBUSxFQUFFLEVBQUU7b0JBQ1osU0FBUyxFQUFFLENBQUMsdUJBQXVCLENBQUM7b0JBQ3BDLGFBQWEsRUFBRSxDQUFDLDhCQUE4QixDQUFDO29CQUMvQyxJQUFJLEVBQUU7d0JBQ0osR0FBRyxFQUFFLEtBQUs7cUJBQ1g7aUJBQ0Y7bU5BR1UsS0FBSztzQkFBYixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIFNpbXBsZUNoYW5nZXMsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOb2RlTW9kZWwsIENvbm5lY3Rvck1vZGVsLCBMYXlvdXRNb2RlbCwgRGlhZ3JhbVRvb2xzLCBEaWFncmFtLCBEaWFncmFtQ29uc3RyYWludHMsIENvbXBsZXhIaWVyYXJjaGljYWxUcmVlLCBQb3J0VmlzaWJpbGl0eSwgQ29tcGxleEhpZXJhcmNoaWNhbFRyZWVTZXJ2aWNlLCBDb25uZWN0b3JCcmlkZ2luZywgQnBtbkRpYWdyYW1zLCBEYXRhQmluZGluZywgU2Nyb2xsU2V0dGluZ3NNb2RlbCwgU25hcFNldHRpbmdzTW9kZWwsIFNlZ21lbnRzLCBMaW5lUm91dGluZywgVHJlZUluZm8sIElNb3VzZUV2ZW50QXJncywgTGluZURpc3RyaWJ1dGlvbiwgQ29ubmVjdGlvblBvaW50T3JpZ2luLCBTbmFwQ29uc3RyYWludHMsIExheW91dEFuaW1hdGlvbiwgTm9kZUNvbnN0cmFpbnRzIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItZGlhZ3JhbXMnO1xyXG5pbXBvcnQgeyBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmNvbnN0IG1vbWVudCA9IHJlcXVpcmUoJ21vbWVudCcpO1xyXG5pbXBvcnQgeyBEb2N1bWVudE1vZGVsLCBSZWNpcGllbnQsIE5vZGVJbmZvLCBHZW5kZXIsIEZsb3dOb2RlLCBVc2VySW5mbywgU3RhdGUgfSBmcm9tIFwiLi4vLi4vY29yZS9tb2RlbHNcIjtcclxuaW1wb3J0IHsgZ2V0V2FybiB9IGZyb20gJy4uLy4uL2NvcmUvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgVHJhY2VCYXNlLCBTVEFSVF9OT0RFIH0gZnJvbSAnLi90cmFjZS5iYXNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9hY2NvdW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEh1YlNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2h1Yi5zZXJ2aWNlJztcclxuXHJcbkRpYWdyYW0uSW5qZWN0KENvbXBsZXhIaWVyYXJjaGljYWxUcmVlLCBCcG1uRGlhZ3JhbXMsIERhdGFCaW5kaW5nLyosIExheW91dEFuaW1hdGlvbiwgTGluZVJvdXRpbmcsIENvbm5lY3RvckJyaWRnaW5nKi8pO1xyXG5cclxuY29uc3QgUEVORElOR19QQVRIID0gJ00xOCwyMmwtMC4wMS02TDE0LDEybDMuOTktNC4wMUwxOCwySDZ2Nmw0LDRsLTQsMy45OVYyMkgxOHogTTgsNy41VjRoOHYzLjVsLTQsNEw4LDcuNXonLFxyXG4gIEZZSV9QQVRIID0gJ00xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDE1aC0ydi02aDJ2NnptMC04aC0yVjdoMnYyeicsXHJcbiAgRVNDQUxBVEVEX1BBVEggPSAnTTIyIDUuNzJsLTQuNi0zLjg2LTEuMjkgMS41MyA0LjYgMy44NkwyMiA1Ljcyek03Ljg4IDMuMzlMNi42IDEuODYgMiA1LjcxbDEuMjkgMS41MyA0LjU5LTMuODV6TTEyLjUgOEgxMXY2bDQuNzUgMi44NS43NS0xLjIzLTQtMi4zN1Y4ek0xMiA0Yy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAyIDkgOSA5YzQuOTcgMCA5LTQuMDMgOS05cy00LjAzLTktOS05em0wIDE2Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3onLFxyXG4gIFdBUk5OSU5HX1BBVEggPSAnTSAxMy43NjM3MzUsMS44NDMzNzM1IEggNi4zMDM3MzQ5IGwgLTUuMjcsNS4yNyB2IDcuNDU5OTk5NSBsIDUuMjcsNS4yNyBoIDcuNDYwMDAwMSBsIDUuMjcsLTUuMjcgViA3LjExMzM3MzUgWiBtIC0zLjczLDE0LjI5OTk5OTUgYyAtMC43MjAwMDAxLDAgLTEuMzAwMDAwMSwtMC41OCAtMS4zMDAwMDAxLC0xLjMgMCwtMC43MiAwLjU4LC0xLjMgMS4zMDAwMDAxLC0xLjMgMC43MiwwIDEuMywwLjU4IDEuMywxLjMgMCwwLjcyIC0wLjU4LDEuMyAtMS4zLDEuMyB6IG0gMSwtNC4zIEggOS4wMzM3MzQ5IFYgNS44NDMzNzM1IGggMi4wMDAwMDAxIHonO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtZmxvdycsXHJcbiAgdGVtcGxhdGU6ICcnLFxyXG4gIHN0eWxlVXJsczogWycuL2Zsb3cuY29tcG9uZW50LnNjc3MnXSxcclxuICB2aWV3UHJvdmlkZXJzOiBbQ29tcGxleEhpZXJhcmNoaWNhbFRyZWVTZXJ2aWNlXSxcclxuICBob3N0OiB7XHJcbiAgICBkaXI6ICdsdHInXHJcbiAgfVxyXG59KVxyXG4vKiogZmxvdy12aWV3IGNvbXBvbmVudCovXHJcbmV4cG9ydCBjbGFzcyBGbG93Vmlld0NvbXBvbmVudCBleHRlbmRzIFRyYWNlQmFzZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBtb2RlbDogRG9jdW1lbnRNb2RlbDxhbnk+O1xyXG4gIEBJbnB1dCgpIGNvbm5lY3RvclR5cGU6IFNlZ21lbnRzID0gJ09ydGhvZ29uYWwnO1xyXG4gIGRpYWdyYW06IERpYWdyYW07XHJcbiAgcmVhZG9ubHkgdG9vbDogRGlhZ3JhbVRvb2xzID0gRGlhZ3JhbVRvb2xzLlpvb21QYW47XHJcbiAgcmVhZG9ubHkgZGlhZ3JhbUNvbnN0cmFpbnRzOiBEaWFncmFtQ29uc3RyYWludHMgPVxyXG4gICAgRGlhZ3JhbUNvbnN0cmFpbnRzLkRlZmF1bHQgfFxyXG4gICAgRGlhZ3JhbUNvbnN0cmFpbnRzLlBhbiB8XHJcbiAgICBEaWFncmFtQ29uc3RyYWludHMuTGluZVJvdXRpbmcgfFxyXG4gICAgRGlhZ3JhbUNvbnN0cmFpbnRzLkJyaWRnaW5nO1xyXG4gIHB1YmxpYyByZWFkb25seSBsYXlvdXQgPSB7XHJcbiAgICB0eXBlOiAnQ29tcGxleEhpZXJhcmNoaWNhbFRyZWUnLFxyXG4gICAgY29ubmVjdGlvblBvaW50T3JpZ2luOiBDb25uZWN0aW9uUG9pbnRPcmlnaW4uRGlmZmVyZW50UG9pbnQsXHJcbiAgICBob3Jpem9udGFsU3BhY2luZzogNTAsXHJcbiAgICB2ZXJ0aWNhbFNwYWNpbmc6IDUwLFxyXG4gICAgdmVydGljYWxBbGlnbm1lbnQ6ICdUb3AnLFxyXG4gICAgY29ubmVjdGlvbkRpcmVjdGlvbjogJ09yaWVudGF0aW9uJyxcclxuICAgIG9yaWVudGF0aW9uOiB0aGlzLl9zZXNzaW9uLmludmVyc2UgPyAnUmlnaHRUb0xlZnQnIDogJ0xlZnRUb1JpZ2h0JyxcclxuICAgIG1hcmdpbjogeyBsZWZ0OiAxMCwgcmlnaHQ6IDEwLCB0b3A6IDEwLCBib3R0b206IDEwIH1cclxuICB9IGFzIExheW91dE1vZGVsO1xyXG5cclxuICByZWFkb25seSBzY3JvbGxTZXR0aW5ncyA9IHtcclxuICAgIG1pblpvb206IC41LFxyXG4gICAgY2FuQXV0b1Njcm9sbDogdHJ1ZSxcclxuICAgIGN1cnJlbnRab29tOiAxLjIsXHJcbiAgICBwYWRkaW5nOiB7IHRvcDogMCwgYm90dG9tOiAwIH0sXHJcbiAgICBhdXRvU2Nyb2xsQm9yZGVyOiB7IHRvcDogMCwgYm90dG9tOiAwIH0sXHJcbiAgICBtYXhab29tOiAyLjVcclxuICB9IGFzIFNjcm9sbFNldHRpbmdzTW9kZWw7XHJcblxyXG4gIHJlYWRvbmx5IHNuYXBTZXR0aW5ncyA9IHtcclxuICAgIGNvbnN0cmFpbnRzOiBTbmFwQ29uc3RyYWludHMuTm9uZSxcclxuICAgIGdyaWRUeXBlOiAnRG90cydcclxuICB9IGFzIFNuYXBTZXR0aW5nc01vZGVsO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbmZpZ3VyYXRpb246IHsgW25hbWU6IHN0cmluZ106IEZsb3dOb2RlIH0gPSB7fTtcclxuICBwcml2YXRlIF9zdWJtaXR0ZWQ6IERhdGU7XHJcbiAgcHJpdmF0ZSBfYWNjZW50Q29sb3IgPSB0aGlzLl9zZXNzaW9uLmdldEFjY2VudCgpO1xyXG4gIC8qKiB3b3JrZmxvdy12aWV3IGN0b3IgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9hY2NvdW50czogQWNjb3VudFNlcnZpY2UsIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLCBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PixcclxuICAgIGh1YjogSHViU2VydmljZSkge1xyXG4gICAgc3VwZXIoaHViKTtcclxuICAgIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5ub2Rlcy5mb3JFYWNoKG4gPT5cclxuICAgICAgdGhpcy5fY29uZmlndXJhdGlvbltuLm5hbWVdID0gbik7XHJcbiAgICBfc2Vzc2lvbi50aGVtZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuXHJcbiAgICAgIHN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fYWNjZW50Q29sb3IgPSB0aGlzLl9zZXNzaW9uLmdldEFjY2VudCgpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoX2NoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMuX2luaXRpYWxpemUoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBhc3luYyBfaW5pdGlhbGl6ZSgpIHtcclxuICAgIGNvbnN0IHsgY29ubmVjdG9ycywgbm9kZXMsIGluZGljYXRvcnMgfSA9IGF3YWl0IHRoaXMuX3ByZXBhcmUoKTtcclxuICAgIHRoaXMuZGlhZ3JhbSAmJiB0aGlzLmRpYWdyYW0uZGVzdHJveSgpO1xyXG4gICAgLy90aGlzLmxheW91dC50eXBlID0gJ05vbmUnO1xyXG4gICAgdGhpcy5kaWFncmFtID0gbmV3IERpYWdyYW0oe1xyXG4gICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgICBoZWlnaHQ6IDM4MCxcclxuICAgICAgbm9kZXMsXHJcbiAgICAgIGNvbm5lY3RvcnMsXHJcbiAgICAgIGxheW91dDogdGhpcy5sYXlvdXQsXHJcbiAgICAgIHRvb2w6IHRoaXMudG9vbCxcclxuICAgICAgc2Nyb2xsU2V0dGluZ3M6IHRoaXMuc2Nyb2xsU2V0dGluZ3MsXHJcbiAgICAgIHNuYXBTZXR0aW5nczogdGhpcy5zbmFwU2V0dGluZ3MsXHJcbiAgICAgIGNvbnN0cmFpbnRzOiB0aGlzLmRpYWdyYW1Db25zdHJhaW50cyxcclxuICAgICAgZW5hYmxlUnRsOiBmYWxzZSxcclxuICAgICAgZ2V0Q29ubmVjdG9yRGVmYXVsdHM6IHRoaXMuY29ubkRlZmF1bHRzLmJpbmQodGhpcyksXHJcbiAgICAgIGdldE5vZGVEZWZhdWx0czogdGhpcy5ub2RlRGVmYXVsdHMuYmluZCh0aGlzKSxcclxuICAgIH0sIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgICAvL3RoaXMubGF5b3V0LnR5cGUgPSAnQ29tcGxleEhpZXJhcmNoaWNhbFRyZWUnO1xyXG4gICAgdGhpcy5kaWFncmFtLmRvTGF5b3V0KCk7XHJcbiAgICBpbmRpY2F0b3JzLmZvckVhY2goKG4sIGkpID0+IHtcclxuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5kaWFncmFtLmdldE5vZGVPYmplY3QoKG4uYWRkSW5mbyBhcyBDb25uZWN0b3JJbmZvTW9kZWwpLnBhcmVudElkKTtcclxuICAgICAgbi5vZmZzZXRYID0gcGFyZW50Lm9mZnNldFggKyAodGhpcy5fc2Vzc2lvbi5pbnZlcnNlID8gLTI1IDogMjUpO1xyXG4gICAgICBuLm9mZnNldFkgPSBwYXJlbnQub2Zmc2V0WSArIDI1O1xyXG4gICAgICBuLnpJbmRleCA9IDEwMDAgKyBpO1xyXG4gICAgICB0aGlzLmRpYWdyYW0uYWRkKG4pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWdyYW0uZml0VG9QYWdlKCk7XHJcbiAgICAvL3RoaXMuZGlhZ3JhbS5sYXlvdXRBbmltYXRlTW9kdWxlLjtcclxuICAgIGludGVydmFsKDYwMDAwKS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+XHJcbiAgICAgIHRoaXMuX3JlZnJlc2goKVxyXG4gICAgKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfcmVmcmVzaCgpIHtcclxuICAgIHN1cGVyLnJlc2V0RXN0aW1hdGVUaW1lKCk7XHJcbiAgICB0aGlzLmRpYWdyYW0ubm9kZXMuZm9yRWFjaChuID0+IHtcclxuICAgICAgY29uc3QgeyBub2RlLCByZWNpcGllbnQgfSA9IG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsO1xyXG4gICAgICBpZiAocmVjaXBpZW50KSB7XHJcbiAgICAgICAgaWYgKCFyZWNpcGllbnQucmVwbGllZCAmJiByZWNpcGllbnQucGVuZGluZykge1xyXG4gICAgICAgICAgaWYgKHJlY2lwaWVudC5lc3RpbWF0ZSkgKG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsKS50b29sdGlwLmVzdGltYXRlZFRpbWUgPSB0aGlzLl90aW1lRXN0aW1hdGUobm9kZSk7XHJcbiAgICAgICAgICBlbHNlIGlmIChub2RlLnN0YW5kYXJkVGltZSkge1xyXG4gICAgICAgICAgICBjb25zdCBkaWZmID0gbm9kZS5zdGFuZGFyZFRpbWUgLSBtb21lbnQoKS5kaWZmKG5vZGUudGltZSwgJ3MnKTtcclxuICAgICAgICAgICAgaWYgKGRpZmYgPiAwKVxyXG4gICAgICAgICAgICAgIChuLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbCkudG9vbHRpcC5lc3RpbWF0ZWRUaW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRXN0aW1hdGVUaW1lJywgdGhpcy5fZHVyYXRpb24oZGlmZikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbi50b29sdGlwLmNvbnRlbnQgPSB0aGlzLl90b29sdGlwKChuLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbCkudG9vbHRpcCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBpZiAobm9kZSAmJiBub2RlLmVzdGltYXRlKVxyXG4gICAgICAgICAgKG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsKS50b29sdGlwLmVzdGltYXRlZFRpbWUgPSB0aGlzLl90aW1lRXN0aW1hdGUobm9kZSksXHJcbiAgICAgICAgICAgIG4udG9vbHRpcC5jb250ZW50ID0gdGhpcy5fdG9vbHRpcCgobi5hZGRJbmZvIGFzIE5vZGVJbmZvTW9kZWwpLnRvb2x0aXApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHB1YmxpYyByZWZyZXNoKCkge1xyXG4gICAgdGhpcy5uZ09uQ2hhbmdlcyhudWxsKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIG9ialxyXG4gICAqL1xyXG4gIHB1YmxpYyBub2RlRGVmYXVsdHMob2JqOiBOb2RlTW9kZWwpOiBOb2RlTW9kZWwge1xyXG4gICAgY29uc3QgeyByZWNpcGllbnQsIG5vZGUsIGluZGljYXRvciB9ID0gb2JqLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbDtcclxuXHJcbiAgICBpZiAoaW5kaWNhdG9yKSB7XHJcbiAgICAgIG9iai53aWR0aCA9IG9iai5oZWlnaHQgPSAxNTtcclxuICAgICAgb2JqLnN0eWxlLnN0cm9rZVdpZHRoID0gMDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBvYmoud2lkdGggPSBvYmouaGVpZ2h0ID0gNTA7XHJcbiAgICAgIGlmIChvYmouYW5ub3RhdGlvbnMgJiYgb2JqLmFubm90YXRpb25zLmxlbmd0aCkgb2JqLmFubm90YXRpb25zWzBdLnN0eWxlLmNvbG9yID0gdGhpcy5fc2Vzc2lvbi50aGVtZS5kYXJrID8gJ3doaXRlJyA6ICdibGFjayc7XHJcbiAgICAgIGlmIChub2RlICYmIG5vZGUuZXN0aW1hdGUpIHtcclxuICAgICAgICBvYmouc3R5bGUuc3Ryb2tlRGFzaEFycmF5ID0gJzIgMic7XHJcbiAgICAgICAgb2JqLnN0eWxlLnN0cm9rZVdpZHRoID0gMTtcclxuICAgICAgICBvYmouc3R5bGUuc3Ryb2tlQ29sb3IgPSB0aGlzLl9zZXNzaW9uLnRoZW1lLmRhcmsgPyAnd2hpdGUnIDogJ2JsYWNrJztcclxuICAgICAgICBvYmouc3R5bGUuZmlsbCA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgb2JqLnN0eWxlLnN0cm9rZUNvbG9yID0gdGhpcy5fYWNjZW50Q29sb3I7XHJcbiAgICAgICAgb2JqLnN0eWxlLnN0cm9rZVdpZHRoID0gMjtcclxuICAgICAgICBvYmouc3R5bGUuZmlsbCA9IHJlY2lwaWVudCAmJiByZWNpcGllbnQucGVuZGluZyA/IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KDQwMCkgOiAndHJhbnNwYXJlbnQnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb2JqO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gY29ubmVjdG9yXHJcbiAgICovXHJcbiAgcHVibGljIGNvbm5EZWZhdWx0cyhjb25uZWN0b3I6IENvbm5lY3Rvck1vZGVsKSB7XHJcbiAgICBjb25uZWN0b3IudHlwZSA9IHRoaXMuY29ubmVjdG9yVHlwZTtcclxuICAgIGNvbm5lY3Rvci5jb3JuZXJSYWRpdXMgPSA2O1xyXG4gICAgY29ubmVjdG9yLnRhcmdldERlY29yYXRvci5oZWlnaHQgPSA3O1xyXG4gICAgY29ubmVjdG9yLnRhcmdldERlY29yYXRvci53aWR0aCA9IDc7XHJcbiAgICBpZiAoY29ubmVjdG9yLnR5cGUgPT09ICdPcnRob2dvbmFsJylcclxuICAgICAgY29ubmVjdG9yLnNvdXJjZVBhZGRpbmcgPSBjb25uZWN0b3IudGFyZ2V0UGFkZGluZyA9IDE7XHJcbiAgICBpZiAoKGNvbm5lY3Rvci5hZGRJbmZvIGFzIENvbm5lY3RvckluZm9Nb2RlbCkuZXN0aW1hdGUpIHtcclxuICAgICAgY29ubmVjdG9yLnN0eWxlLnN0cm9rZURhc2hBcnJheSA9ICcyIDInO1xyXG4gICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlV2lkdGggPSAxO1xyXG4gICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPVxyXG4gICAgICAgIGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iuc3R5bGUuZmlsbCA9XHJcbiAgICAgICAgY29ubmVjdG9yLnRhcmdldERlY29yYXRvci5zdHlsZS5zdHJva2VDb2xvciA9XHJcbiAgICAgICAgdGhpcy5fc2Vzc2lvbi50aGVtZS5kYXJrID8gJ3doaXRlJyA6ICdibGFjayc7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29ubmVjdG9yLnN0eWxlLnN0cm9rZUNvbG9yID0gY29ubmVjdG9yLnRhcmdldERlY29yYXRvci5zdHlsZS5zdHJva2VDb2xvciA9IGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iuc3R5bGUuZmlsbCA9IHRoaXMuX2FjY2VudENvbG9yO1xyXG4gICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgLyoqICovXHJcbiAgcHJpdmF0ZSBhc3luYyBfcHJlcGFyZSgpOiBQcm9taXNlPHsgbm9kZXM6IE5vZGVNb2RlbFtdOyBjb25uZWN0b3JzOiBDb25uZWN0b3JNb2RlbFtdOyBpbmRpY2F0b3JzOiBOb2RlTW9kZWxbXSB9PiB7XHJcbiAgICBjb25zdCBpbmRpY2F0b3JzOiBOb2RlTW9kZWxbXSA9IFtdLCBjb25uZWN0b3JzOiBDb25uZWN0b3JNb2RlbFtdID0gW10sIG5vZGVzOiBOb2RlTW9kZWxbXSA9IFtdO1xyXG4gICAgdGhpcy5fc3VibWl0dGVkID0gdGhpcy5tb2RlbC5pc3N1ZWQgfHwgdGhpcy5tb2RlbC5sb2cuZmlsdGVyKGwgPT4gbC50eXBlID09PSAnU3VibWl0JylbMF0udGltZTtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5tb2RlbC53b3JrZmxvdy5jb25uZWN0b3JzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBjb25uZWN0b3IgPSB0aGlzLm1vZGVsLndvcmtmbG93LmNvbm5lY3RvcnNbaV07XHJcbiAgICAgIGNvbm5lY3RvcnMucHVzaChcclxuICAgICAgICB7XHJcbiAgICAgICAgICBzb3VyY2VJRDogY29ubmVjdG9yLnNvdXJjZUlkLFxyXG4gICAgICAgICAgdGFyZ2V0SUQ6IGNvbm5lY3Rvci50YXJnZXRJZCxcclxuICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgZXN0aW1hdGU6IGNvbm5lY3Rvci5lc3RpbWF0ZVxyXG4gICAgICAgICAgfSBhcyBDb25uZWN0b3JJbmZvTW9kZWxcclxuICAgICAgICB9IGFzIENvbm5lY3Rvck1vZGVsXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBsZXQgekluZGV4ID0gNTAwO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm1vZGVsLndvcmtmbG93Lm5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBub2RlID0gdGhpcy5tb2RlbC53b3JrZmxvdy5ub2Rlc1tpXTtcclxuICAgICAgbGV0IHJlY2lwaWVudHMgPSB0aGlzLm1vZGVsLnJlY2lwaWVudHMuXHJcbiAgICAgICAgZmlsdGVyKHIgPT4gci5ub2RlSWQgPT09IG5vZGUuaWQgJiYgci5yZWNlaXZlZCA+PSB0aGlzLl9zdWJtaXR0ZWQpO1xyXG4gICAgICBpZiAocmVjaXBpZW50cy5sZW5ndGgpIHtcclxuICAgICAgICByZWNpcGllbnRzID0gcmVjaXBpZW50cy5zb3J0KGEgPT4gYS5yZXBsaWVkID8gLTEgOiAxKTtcclxuICAgICAgICBmb3IgKHZhciByID0gMDsgciA8IHJlY2lwaWVudHMubGVuZ3RoOyByKyspIHtcclxuICAgICAgICAgIGxldCByZWNpcGllbnQgPSByZWNpcGllbnRzW3JdO1xyXG4gICAgICAgICAgY29uc3QgeyBhbm5vdGF0aW9uLCB0b29sdGlwIH0gPSBhd2FpdCB0aGlzLl9ub3RlKG5vZGUsIHJlY2lwaWVudCk7XHJcbiAgICAgICAgICBjb25zdCBub2QgPSB7XHJcbiAgICAgICAgICAgIGlkOiByID09PSAwID8gbm9kZS5pZCA6IG5vZGUuaWQgKyByLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIHNoYXBlOiB0aGlzLl9jb25maWd1cmF0aW9uW25vZGUudHlwZV0uc2hhcGUsXHJcbiAgICAgICAgICAgIHpJbmRleDogekluZGV4KyssXHJcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcclxuICAgICAgICAgICAgICBjb250ZW50OiB0aGlzLl90b29sdGlwKHRvb2x0aXApLFxyXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiAnVG9wQ2VudGVyJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjb25zdHJhaW50czogTm9kZUNvbnN0cmFpbnRzLkRlZmF1bHQgfCBOb2RlQ29uc3RyYWludHMuVG9vbHRpcCxcclxuICAgICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICAgIHRvb2x0aXAsXHJcbiAgICAgICAgICAgICAgcmVjaXBpZW50LFxyXG4gICAgICAgICAgICAgIG5vZGVcclxuICAgICAgICAgICAgfSBhcyBOb2RlSW5mb01vZGVsLFxyXG4gICAgICAgICAgICBhbm5vdGF0aW9uczogW3tcclxuICAgICAgICAgICAgICBjb250ZW50OiBhbm5vdGF0aW9uLFxyXG4gICAgICAgICAgICAgIG1hcmdpbjogeyB0b3A6IDQgfSxcclxuICAgICAgICAgICAgICB2ZXJ0aWNhbEFsaWdubWVudDogJ1RvcCcsXHJcbiAgICAgICAgICAgICAgb2Zmc2V0OiB7XHJcbiAgICAgICAgICAgICAgICB5OiAxLFxyXG4gICAgICAgICAgICAgICAgeDogLjVcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1dXHJcbiAgICAgICAgICB9IGFzIE5vZGVNb2RlbDtcclxuICAgICAgICAgIGlmIChyID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLndvcmtmbG93LmNvbm5lY3RvcnMuZm9yRWFjaChjID0+IHtcclxuICAgICAgICAgICAgICBpZiAoYy50YXJnZXRJZCA9PT0gbm9kZS5pZCkgY29ubmVjdG9ycy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHNvdXJjZUlEOiBjLnNvdXJjZUlkLFxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0SUQ6IG5vZC5pZCxcclxuICAgICAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICAgICAgZXN0aW1hdGU6IGMuZXN0aW1hdGVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBpZiAoYy5zb3VyY2VJZCA9PT0gbm9kZS5pZCAmJiAhbm9kZS5meWkpXHJcbiAgICAgICAgICAgICAgICBjb25uZWN0b3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICBzb3VyY2VJRDogbm9kLmlkLFxyXG4gICAgICAgICAgICAgICAgICB0YXJnZXRJRDogYy50YXJnZXRJZCxcclxuICAgICAgICAgICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgICAgIGVzdGltYXRlOiBjLmVzdGltYXRlXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIG5vZGVzLnB1c2gobm9kKTtcclxuICAgICAgICAgIGlmIChyZWNpcGllbnQuYWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbmQoYSA9PiBhLm5hbWUgPT09IHJlY2lwaWVudC5hY3Rpb24pO1xyXG4gICAgICAgICAgICBpZiAoYWN0aW9uICYmIGFjdGlvbi5zaGFwZSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFjdGlvbkluZGljYXRvciA9IHtcclxuICAgICAgICAgICAgICAgIGlkOiBub2QuaWQgKyAnYWN0aW9uJyxcclxuICAgICAgICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdQYXRoJyxcclxuICAgICAgICAgICAgICAgICAgZGF0YTogYWN0aW9uLnNoYXBlLFxyXG4gICAgICAgICAgICAgICAgICBhbGlnbjogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlID8gJ1hNaW5ZTWF4JyA6ICdYTWF4WU1heCcsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgICAgICAgZmlsbDogYWN0aW9uLmNvbG9yIHx8IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KDkwMClcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IG5vZC5pZFxyXG4gICAgICAgICAgICAgICAgfSBhcyBOb2RlSW5mb01vZGVsXHJcbiAgICAgICAgICAgICAgfSBhcyBOb2RlTW9kZWw7XHJcbiAgICAgICAgICAgICAgaW5kaWNhdG9ycy5wdXNoKGFjdGlvbkluZGljYXRvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZWNpcGllbnQucGVuZGluZyAmJiAhcmVjaXBpZW50LmVzdGltYXRlKVxyXG4gICAgICAgICAgICBpbmRpY2F0b3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgIGlkOiBub2QuaWQgKyAncGVuZGluZycsXHJcbiAgICAgICAgICAgICAgc2hhcGU6IHtcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdQYXRoJyxcclxuICAgICAgICAgICAgICAgIGRhdGE6IFBFTkRJTkdfUEFUSCxcclxuICAgICAgICAgICAgICAgIGFsaWduOiB0aGlzLl9zZXNzaW9uLmludmVyc2UgPyAnWE1heFlNYXgnIDogJ1hNaW5ZTWF4J1xyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgICAgIGZpbGw6IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KDkwMClcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHBhcmVudElkOiBub2QuaWRcclxuICAgICAgICAgICAgICB9IGFzIENvbm5lY3RvckluZm9Nb2RlbFxyXG4gICAgICAgICAgICB9IGFzIE5vZGVNb2RlbCk7XHJcbiAgICAgICAgICBpZiAobm9kZS5meWkpXHJcbiAgICAgICAgICAgIGluZGljYXRvcnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgaWQ6IG5vZC5pZCArICdmeWknLFxyXG4gICAgICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnUGF0aCcsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBGWUlfUEFUSCxcclxuICAgICAgICAgICAgICAgIGFsaWduOiB0aGlzLl9zZXNzaW9uLmludmVyc2UgPyAnWE1pbllNYXgnIDogJ1hNYXhZTWF4J1xyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgICAgIGZpbGw6ICcjMTk3NmQyJ1xyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50SWQ6IG5vZC5pZFxyXG4gICAgICAgICAgICAgIH0gYXMgQ29ubmVjdG9ySW5mb01vZGVsXHJcbiAgICAgICAgICAgIH0gYXMgTm9kZU1vZGVsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHsgc3RhdGUsIGFubm90YXRpb24sIHRvb2x0aXAgfSA9IGF3YWl0IHRoaXMuX3NoYXBlKG5vZGUpO1xyXG4gICAgICAgIGNvbnN0IHNoYXBlID0gdGhpcy5fY29uZmlndXJhdGlvbltub2RlLnR5cGVdLnNoYXBlO1xyXG4gICAgICAgIG5vZGVzLnB1c2goe1xyXG4gICAgICAgICAgaWQ6IG5vZGUuaWQsXHJcbiAgICAgICAgICBzaGFwZSxcclxuICAgICAgICAgIHpJbmRleDogekluZGV4KyssXHJcbiAgICAgICAgICB0b29sdGlwOiB7XHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IHRoaXMuX3Rvb2x0aXAodG9vbHRpcCksXHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnVG9wQ2VudGVyJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGNvbnN0cmFpbnRzOiBPYmplY3Qua2V5cyh0b29sdGlwKS5sZW5ndGggPyBOb2RlQ29uc3RyYWludHMuRGVmYXVsdCB8IE5vZGVDb25zdHJhaW50cy5Ub29sdGlwIDogTm9kZUNvbnN0cmFpbnRzLkRlZmF1bHQsXHJcbiAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgIHRvb2x0aXAsXHJcbiAgICAgICAgICAgIG5vZGVcclxuICAgICAgICAgIH0gYXMgTm9kZUluZm9Nb2RlbCxcclxuICAgICAgICAgIGFubm90YXRpb25zOiBbe1xyXG4gICAgICAgICAgICBjb250ZW50OiBhbm5vdGF0aW9uLFxyXG4gICAgICAgICAgICBvZmZzZXQ6IHNoYXBlLnR5cGUgPT09ICdQYXRoJyA/IHtcclxuICAgICAgICAgICAgICB5OiAxXHJcbiAgICAgICAgICAgIH0gOiB7IHg6IC41IH0sXHJcbiAgICAgICAgICAgIHZlcnRpY2FsQWxpZ25tZW50OiBzaGFwZS50eXBlID09PSAnUGF0aCcgPyAnVG9wJyA6ICdDZW50ZXInXHJcbiAgICAgICAgICB9XVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChzdGF0ZSAmJiBzdGF0ZS5zaGFwZSAmJiAhbm9kZS5lc3RpbWF0ZSlcclxuICAgICAgICAgIGluZGljYXRvcnMucHVzaCh7XHJcbiAgICAgICAgICAgIGlkOiBub2RlLmlkICsgJ3N0YXRlJyxcclxuICAgICAgICAgICAgc2hhcGU6IHtcclxuICAgICAgICAgICAgICB0eXBlOiAnUGF0aCcsXHJcbiAgICAgICAgICAgICAgZGF0YTogc3RhdGUuc2hhcGUsXHJcbiAgICAgICAgICAgICAgYWxpZ246IHRoaXMuX3Nlc3Npb24uaW52ZXJzZSA/ICdYTWF4WU1heCcgOiAnWE1pbllNYXgnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgZmlsbDogc3RhdGUuY29sb3IgfHwgJ2JsYWNrJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxyXG4gICAgICAgICAgICAgIHBhcmVudElkOiBub2RlLmlkLFxyXG4gICAgICAgICAgICAgIG5vZGU6IG5vZGVcclxuICAgICAgICAgICAgfSBhcyBDb25uZWN0b3JJbmZvTW9kZWxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChub2RlLmVycm9yKSB7XHJcbiAgICAgICAgICBjb25zdCB3YXJubmluZ0luZGljYXRvciA9IHtcclxuICAgICAgICAgICAgaWQ6IG5vZGUuaWQgKyAnZXhjZXB0aW9uJyxcclxuICAgICAgICAgICAgc2hhcGU6IHtcclxuICAgICAgICAgICAgICB0eXBlOiAnUGF0aCcsXHJcbiAgICAgICAgICAgICAgZGF0YTogV0FSTk5JTkdfUEFUSCxcclxuICAgICAgICAgICAgICBhbGlnbjogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlID8gJ1hNaW5ZTWF4JyA6ICdYTWF4WU1heCdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgICBmaWxsOiBnZXRXYXJuKDgwMClcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICBwYXJlbnRJZDogbm9kZS5pZFxyXG4gICAgICAgICAgICB9IGFzIENvbm5lY3RvckluZm9Nb2RlbFxyXG4gICAgICAgICAgfSBhcyBOb2RlTW9kZWw7XHJcbiAgICAgICAgICBpbmRpY2F0b3JzLnB1c2god2Fybm5pbmdJbmRpY2F0b3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgY29ubmVjdG9ycywgbm9kZXMsIGluZGljYXRvcnMgfTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIG5vZGVcclxuICAgKi9cclxuICBwcml2YXRlIGFzeW5jIF9zaGFwZShub2RlOiBOb2RlSW5mbyk6IFByb21pc2U8eyBzdGF0ZTogU3RhdGU7IGFubm90YXRpb246IHN0cmluZzsgdG9vbHRpcDogTm9kZVRvb2x0aXBNb2RlbDsgfT4ge1xyXG4gICAgY29uc3QgdG9vbHRpcCA9IHt9IGFzIE5vZGVUb29sdGlwTW9kZWw7XHJcbiAgICBpZiAobm9kZS5lcnJvcikgdG9vbHRpcC5lcnJvciA9IG5vZGUuZXJyb3I7XHJcbiAgICBsZXQgYW5ub3RhdGlvbjogc3RyaW5nLCBzdGF0ZTogU3RhdGU7XHJcbiAgICBjb25zdCBsb2cgPSB0aGlzLm1vZGVsLmxvZy5maWx0ZXIobCA9PiBsLm5vZGVJZCA9PT0gbm9kZS5pZCAmJiBsLnRpbWUgPj0gdGhpcy5fc3VibWl0dGVkKTtcclxuICAgIGNvbnN0IHN0YXRlTG9nID0gbG9nLmZpbmQobCA9PiBsLnR5cGUgPT09ICdTdGF0ZUNoYW5nZScpO1xyXG4gICAgaWYgKHN0YXRlTG9nKSB7XHJcbiAgICAgIHN0YXRlID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnN0YXRlcy5maW5kKHMgPT4gcy5uYW1lID09PSBzdGF0ZUxvZy5zdGF0ZSk7XHJcblxyXG4gICAgICBhbm5vdGF0aW9uID0gc3RhdGUgPyAoKG5vZGUuZXN0aW1hdGUgPyBzdGF0ZS5mdXR1cmUgOiBzdGF0ZS5wYXN0KSB8fCBzdGF0ZS50aXRsZSkgOiBzdGF0ZUxvZy5zdGF0ZTtcclxuICAgIH1cclxuICAgIGlmIChub2RlLnR5cGUgPT09IFNUQVJUX05PREUpIHtcclxuICAgICAgaWYgKCFub2RlLmVzdGltYXRlKSB7XHJcbiAgICAgICAgY29uc3QgeyBub3RlLCByb2xlIH0gPSBhd2FpdCB0aGlzLl9zdGFydE5vZGUoKTtcclxuICAgICAgICB0b29sdGlwLm5vdGUgPSBub3RlLFxyXG4gICAgICAgICAgdG9vbHRpcC5yb2xlID0gcm9sZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobm9kZS5lc3RpbWF0ZSlcclxuICAgICAgdG9vbHRpcC5lc3RpbWF0ZWRUaW1lID0gdGhpcy5fdGltZUVzdGltYXRlKG5vZGUpO1xyXG4gICAgcmV0dXJuIHsgc3RhdGUsIHRvb2x0aXAsIGFubm90YXRpb24gfTtcclxuICB9XHJcbiAgcmVzaXplKCkge1xyXG4gICAgaWYgKHRoaXMuZGlhZ3JhbSkgdGhpcy5kaWFncmFtLndpZHRoID0gJ2F1dG8nO1xyXG4gIH1cclxuICBwcml2YXRlIF90aW1lRXN0aW1hdGUobm9kZTogTm9kZUluZm8pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgeyBtaW4sIG1heCB9ID0gc3VwZXIuX2VzdGltYXRlVGltZShub2RlKTtcclxuICAgIGlmIChtYXgpXHJcbiAgICAgIHJldHVybiAhbWluIHx8IG1pbiA9PT0gbWF4ID9cclxuICAgICAgICB0aGlzLl90cmFuc2xhdGUuZ2V0KCdFc3RpbWF0ZVRpbWUnLCB0aGlzLl9kdXJhdGlvbihtYXgpKSA6XHJcbiAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnRXN0aW1hdGVUaW1lUmFuZ2UnLCB0aGlzLl9kdXJhdGlvbihtaW4pLCB0aGlzLl9kdXJhdGlvbihtYXgpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfdG9vbHRpcChvYmo6IE5vZGVUb29sdGlwTW9kZWwpIHtcclxuICAgIGNvbnN0IHsgbm90ZSwgcm9sZSwgc3Vic3RpdHV0aW5nLCBkdXJhdGlvbiwgc3RhbmRhcmRUaW1lLCBlc3RpbWF0ZWRUaW1lLCBlcnJvciwgZnlpIH0gPSBvYmpcclxuICAgIGNvbnN0IHJvd3MgPSBbZXJyb3IsIG5vdGUsIHJvbGUsIHN1YnN0aXR1dGluZywgZnlpLCBkdXJhdGlvbiwgc3RhbmRhcmRUaW1lLCBlc3RpbWF0ZWRUaW1lXS5maWx0ZXIodiA9PiB2KTtcclxuICAgIGlmIChyb3dzLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gcm93cy5qb2luKCcgJylcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBhc3luYyBfc3RhcnROb2RlKCk6IFByb21pc2U8e1xyXG4gICAgbm90ZTogc3RyaW5nLCByb2xlOiBzdHJpbmc7XHJcbiAgfT4ge1xyXG4gICAgbGV0IHdobzogVXNlckluZm8gfCAneW91JywgYnk6IFVzZXJJbmZvIHwgJ3lvdSc7XHJcbiAgICBpZiAodGhpcy5tb2RlbC5vd25lcklkID09PSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUudXNlcklkICYmICF0aGlzLl9zZXNzaW9uLmlzSW1wZXJzb25hdGluZylcclxuICAgICAgd2hvID0gJ3lvdSc7XHJcbiAgICBlbHNlXHJcbiAgICAgIHdobyA9IGF3YWl0IHRoaXMuX2FjY291bnRzLmdldCh0aGlzLm1vZGVsLm93bmVySWQpLnRvUHJvbWlzZSgpO1xyXG4gICAgaWYgKHRoaXMubW9kZWwub3duZXJCeUlkKSB7XHJcbiAgICAgIGlmICh0aGlzLm1vZGVsLm93bmVyQnlJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpXHJcbiAgICAgICAgYnkgPSAneW91JztcclxuICAgICAgZWxzZVxyXG4gICAgICAgIGJ5ID0gYXdhaXQgdGhpcy5fYWNjb3VudHMuZ2V0KHRoaXMubW9kZWwub3duZXJCeUlkKS50b1Byb21pc2UoKTtcclxuICAgIH1cclxuICAgIGxldCBub3RlOiBzdHJpbmcsIHJvbGU6IHN0cmluZztcclxuICAgIGlmIChieSkge1xyXG4gICAgICBpZiAoYnkgPT09ICd5b3UnKVxyXG4gICAgICAgIG5vdGUgPVxyXG4gICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnU3VibWl0dGVkTm90ZUJ5WW91JyxcclxuICAgICAgICAgICAgd2hvID09PSAneW91JyA/IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdScpIDogKHdobyBhcyBVc2VySW5mbykubmFtZSxcclxuICAgICAgICAgICAgdGhpcy5fZnJvbU5vdyh0aGlzLm1vZGVsLmlzc3VlZCkpO1xyXG5cclxuICAgICAgZWxzZVxyXG4gICAgICAgIG5vdGUgPVxyXG4gICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnU3VibWl0dGVkTm90ZUJ5JyxcclxuICAgICAgICAgICAgd2hvID09PSAneW91JyA/IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdScpIDogKHdobyBhcyBVc2VySW5mbykubmFtZSxcclxuICAgICAgICAgICAgKGJ5IGFzIFVzZXJJbmZvKS5uYW1lLFxyXG4gICAgICAgICAgICB0aGlzLl9mcm9tTm93KHRoaXMubW9kZWwuaXNzdWVkKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAod2hvID09PSAneW91JylcclxuICAgICAgbm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdVN1Ym1pdHRlZE5vdGUnLCB0aGlzLl9mcm9tTm93KHRoaXMubW9kZWwuaXNzdWVkKSk7XHJcblxyXG4gICAgZWxzZVxyXG4gICAgICBub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnU3VibWl0dGVkTm90ZScsICh3aG8gYXMgVXNlckluZm8pLm5hbWUsIHRoaXMuX2Zyb21Ob3codGhpcy5tb2RlbC5pc3N1ZWQpKTtcclxuICAgIGlmICh3aG8gIT09ICd5b3UnICYmIHdoby5yb2xlKVxyXG4gICAgICByb2xlID0gYC0gJHt3aG8ucm9sZX1gO1xyXG4gICAgcmV0dXJuIHsgbm90ZSwgcm9sZSB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfbm90ZShub2RlOiBOb2RlSW5mbywgcmVjaXBpZW50OiBSZWNpcGllbnQpOiBQcm9taXNlPHsgYW5ub3RhdGlvbjogc3RyaW5nOyB0b29sdGlwOiBOb2RlVG9vbHRpcE1vZGVsIH0+IHtcclxuICAgIGNvbnN0IHRvb2x0aXA6IE5vZGVUb29sdGlwTW9kZWwgPSB7fTtcclxuICAgIGxldCBhbm5vdGF0aW9uOiBzdHJpbmc7XHJcblxyXG4gICAgaWYgKHJlY2lwaWVudC51c2VySWQgPT09IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS51c2VySWQpIHtcclxuICAgICAgYW5ub3RhdGlvbiA9IHRoaXMuX3Nlc3Npb24uaXNJbXBlcnNvbmF0aW5nID8gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUgOiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3UnKTtcclxuICAgICAgaWYgKHJlY2lwaWVudC5ieUlkKSB7XHJcbiAgICAgICAgY29uc3QgdSA9IGF3YWl0IHRoaXMuX2FjY291bnRzLmdldChyZWNpcGllbnQuYnlJZCkudG9Qcm9taXNlKClcclxuICAgICAgICBjb25zdCBwYXN0ID0gdGhpcy5fYWN0aW9uKHJlY2lwaWVudC5hY3Rpb24sIHUuZ2VuZGVyKSwgdGltZSA9IHRoaXMuX2Zyb21Ob3cocmVjaXBpZW50LnJlcGxpZWQpO1xyXG4gICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdVRha2VuQWN0aW9uQnknLCB1Lm5hbWUsIHBhc3QsIHRpbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHJlY2lwaWVudC5yZXBsaWVkKSB7XHJcbiAgICAgICAgY29uc3QgdGltZSA9IHRoaXMuX2Zyb21Ob3cocmVjaXBpZW50LnJlcGxpZWQpO1xyXG4gICAgICAgIGlmICh0aGlzLl9zZXNzaW9uLmlzSW1wZXJzb25hdGluZykge1xyXG4gICAgICAgICAgY29uc3QgcGFzdCA9IHRoaXMuX2FjdGlvbihyZWNpcGllbnQuYWN0aW9uLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyKTtcclxuICAgICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvblRha2VuJywgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIHBhc3QsIHRpbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHBhc3QgPSB0aGlzLl9hY3Rpb24ocmVjaXBpZW50LmFjdGlvbiwgJ3lvdScpO1xyXG4gICAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91VGFrZW5BY3Rpb24nLCBwYXN0LCB0aW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoIW5vZGUuZXN0aW1hdGUpIHtcclxuICAgICAgICBjb25zdCB0aW1lID0gdGhpcy5fZnJvbU5vdyhyZWNpcGllbnQucmVjZWl2ZWQpO1xyXG4gICAgICAgIGlmICh0aGlzLl9zZXNzaW9uLmlzSW1wZXJzb25hdGluZylcclxuICAgICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnUmVjZWl2ZWRCeScsIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5nZW5kZXIsIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5uYW1lLCB0aW1lKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0b29sdGlwLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3VSZWNlaXZlZCcsIHRpbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZWNpcGllbnQucm9sZSkge1xyXG4gICAgICAgIGNvbnN0IGNyb2xlID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnJvbGVzLmZpbmQobyA9PiBvLm5hbWUgPT09IHJlY2lwaWVudC5yb2xlKTtcclxuICAgICAgICB0b29sdGlwLnJvbGUgPSBgLSAke2Nyb2xlID8gY3JvbGUudGl0bGUgOiByZWNpcGllbnQucm9sZX1gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29uc3Qgd2hvID0gYXdhaXQgdGhpcy5fYWNjb3VudHMuZ2V0KHJlY2lwaWVudC51c2VySWQpLnRvUHJvbWlzZSgpO1xyXG4gICAgICBhbm5vdGF0aW9uID0gd2hvLm5hbWU7XHJcbiAgICAgIGlmICh3aG8ucm9sZSkgdG9vbHRpcC5yb2xlID0gYC0gJHt3aG8ucm9sZX1gO1xyXG4gICAgICBlbHNlIGlmIChyZWNpcGllbnQucm9sZSkge1xyXG4gICAgICAgIGNvbnN0IGNyb2xlID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnJvbGVzLmZpbmQobyA9PiBvLm5hbWUgPT09IHJlY2lwaWVudC5yb2xlKTtcclxuICAgICAgICB0b29sdGlwLnJvbGUgPSBgLSAke2Nyb2xlID8gY3JvbGUudGl0bGUgOiByZWNpcGllbnQucm9sZX1gO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHJlY2lwaWVudC5yZXBsaWVkKSB7XHJcbiAgICAgICAgaWYgKHJlY2lwaWVudC5ieUlkKSB7XHJcbiAgICAgICAgICBjb25zdCBieSA9IGF3YWl0IHRoaXMuX2FjY291bnRzLmdldChyZWNpcGllbnQuYnlJZCkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICBjb25zdCBwYXN0ID0gdGhpcy5fYWN0aW9uKHJlY2lwaWVudC5hY3Rpb24sIGJ5LmdlbmRlciksXHJcbiAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9mcm9tTm93KHJlY2lwaWVudC5yZXBsaWVkKTtcclxuICAgICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvblRha2VuQnknLCBieS5uYW1lLCBwYXN0LCB0aW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBwYXN0ID0gdGhpcy5fYWN0aW9uKHJlY2lwaWVudC5hY3Rpb24sIHdoby5nZW5kZXIpLFxyXG4gICAgICAgICAgICB0aW1lID0gdGhpcy5fZnJvbU5vdyhyZWNpcGllbnQucmVwbGllZCk7XHJcbiAgICAgICAgICB0b29sdGlwLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpb25UYWtlbicsIHdoby5uYW1lLCBwYXN0LCB0aW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoIXJlY2lwaWVudC5lc3RpbWF0ZSkge1xyXG4gICAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLl9mcm9tTm93KHJlY2lwaWVudC5yZWNlaXZlZCk7XHJcbiAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdSZWNlaXZlZFRpbWUnLCB3aG8uZ2VuZGVyLCB0aW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHJlY2lwaWVudC5zdWJzdGl0dXRpbmdJZCAmJiByZWNpcGllbnQuZXN0aW1hdGUpIHtcclxuICAgICAgaWYgKHJlY2lwaWVudC5zdWJzdGl0dXRpbmdJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmJ5SWQpXHJcbiAgICAgICAgdG9vbHRpcC5zdWJzdGl0dXRpbmcgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1YnN0aXR1dGluZ1lvdScsIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5nZW5kZXIpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCB1ID0gYXdhaXQgdGhpcy5fYWNjb3VudHMuZ2V0KHJlY2lwaWVudC5zdWJzdGl0dXRpbmdJZCkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgdG9vbHRpcC5zdWJzdGl0dXRpbmcgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1YnN0aXR1dGluZ0ZvcicsIHUuZ2VuZGVyLCB1Lm5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBlc2NhbGF0aW9ucyA9IHRoaXMubW9kZWwubG9nLmZpbHRlcihsID0+IGwudGltZSA+IHRoaXMubW9kZWwuaXNzdWVkICYmIGwudHlwZSA9PT0gJ0VzY2FsYXRpb24nICYmIGwucmVjaXBpZW50SWQgPT09IHJlY2lwaWVudC5pZCk7XHJcbiAgICBpZiAoZXNjYWxhdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IHVzZXJJZHMgPSBlc2NhbGF0aW9ucy5tYXAoZSA9PiBlLnVzZXJJZCk7XHJcbiAgICAgIGNvbnN0IHVzZXJzID0gYXdhaXQgdGhpcy5fYWNjb3VudHMuZ2V0QWxsKHVzZXJJZHMpLnRvUHJvbWlzZSgpO1xyXG4gICAgICBjb25zdCBkdXJhdGlvbiA9IHRoaXMuX2R1cmF0aW9uKG1vbWVudChlc2NhbGF0aW9uc1tlc2NhbGF0aW9ucy5sZW5ndGggLSAxXS50aW1lKS5kaWZmKHJlY2lwaWVudC5yZWNlaXZlZCwgJ3MnKSk7XHJcbiAgICAgIHRvb2x0aXAuc3Vic3RpdHV0aW5nID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRXNjYWxhdGVkVG8nLCB0aGlzLl90cmFuc2xhdGUuam9pbih1c2Vycy5tYXAodSA9PiB1Lm5hbWUpKSwgZHVyYXRpb24pO1xyXG4gICAgfVxyXG4gICAgaWYgKHJlY2lwaWVudC5yZXBsaWVkKSB7XHJcbiAgICAgIGNvbnN0IGR1cmF0aW9uID0gbW9tZW50KHJlY2lwaWVudC5yZXBsaWVkKS5kaWZmKHJlY2lwaWVudC5yZWNlaXZlZCwgJ3MnKTtcclxuICAgICAgdG9vbHRpcC5kdXJhdGlvbiA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0R1cmF0aW9uVGltZScsIHRoaXMuX2R1cmF0aW9uKGR1cmF0aW9uKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChyZWNpcGllbnQucGVuZGluZykge1xyXG4gICAgICBpZiAocmVjaXBpZW50LmVzdGltYXRlKSB0b29sdGlwLmVzdGltYXRlZFRpbWUgPSB0aGlzLl90aW1lRXN0aW1hdGUobm9kZSk7XHJcbiAgICAgIGVsc2UgaWYgKG5vZGUuc3RhbmRhcmRUaW1lKSB7XHJcbiAgICAgICAgY29uc3QgZGlmZiA9IG5vZGUuc3RhbmRhcmRUaW1lIC0gbW9tZW50KCkuZGlmZihub2RlLnRpbWUsICdzJyk7XHJcbiAgICAgICAgaWYgKGRpZmYgPiAwKVxyXG4gICAgICAgICAgdG9vbHRpcC5lc3RpbWF0ZWRUaW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRXN0aW1hdGVUaW1lJywgdGhpcy5fZHVyYXRpb24oZGlmZikpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChub2RlLnN0YW5kYXJkVGltZSlcclxuICAgICAgdG9vbHRpcC5zdGFuZGFyZFRpbWUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdOb2RlU3RhbmRhcmRUaW1lJywgdGhpcy5fZHVyYXRpb24obm9kZS5zdGFuZGFyZFRpbWUpKTtcclxuICAgIGlmIChub2RlLmZ5aSlcclxuICAgICAgdG9vbHRpcC5meWkgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdGWUknKTtcclxuICAgIHJldHVybiB7IGFubm90YXRpb24sIHRvb2x0aXAgfTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfYWN0aW9uKG5hbWU6IHN0cmluZywgZ2VuZGVyPzogR2VuZGVyIHwgJ3lvdScpIHtcclxuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbmQoYSA9PiBhLm5hbWUgPT09IG5hbWUpO1xyXG4gICAgaWYgKCFhY3Rpb24pIHJldHVybiBuYW1lO1xyXG4gICAgaWYgKGdlbmRlciA9PT0gJ3lvdScpIHtcclxuICAgICAgY29uc3QgZ2VuZGVyID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmJ5R2VuZGVyIHx8IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5nZW5kZXIsIHBlcnNvbmFsID1cclxuICAgICAgICAoZ2VuZGVyID09PSAnTWFsZScgPyAoYWN0aW9uLnlvdU1hbGUgfHwgYWN0aW9uLnlvdSkgOlxyXG4gICAgICAgICAgZ2VuZGVyID09PSAnRmVtYWxlJyA/IChhY3Rpb24ueW91RmVtYWxlIHx8IGFjdGlvbi55b3UpIDpcclxuICAgICAgICAgICAgYWN0aW9uLnlvdSk7XHJcbiAgICAgIHJldHVybiAocGVyc29uYWwgfHxcclxuICAgICAgICBhY3Rpb24ucGFzdCB8fFxyXG4gICAgICAgIGFjdGlvbi50aXRsZSkudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHBhc3QgPSAoKGdlbmRlciA9PT0gJ01hbGUnID8gKGFjdGlvbi5wYXN0TWFsZSB8fCBhY3Rpb24ucGFzdCkgOlxyXG4gICAgICBnZW5kZXIgPT09ICdGZW1hbGUnID8gKGFjdGlvbi5wYXN0RmVtYWxlIHx8IGFjdGlvbi5wYXN0KSA6IGFjdGlvbi5wYXN0KSB8fFxyXG4gICAgICBhY3Rpb24udGl0bGUpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICByZXR1cm4gcGFzdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Zyb21Ob3coZGF0ZTogRGF0ZSkge1xyXG4gICAgcmV0dXJuIG1vbWVudChkYXRlKS5mcm9tTm93KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kdXJhdGlvbih0aW1lOiBudW1iZXIpIHtcclxuICAgIHJldHVybiBtb21lbnQuZHVyYXRpb24odGltZSwgJ3MnKS5odW1hbml6ZSgpO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICB0aGlzLmRpYWdyYW0gJiYgdGhpcy5kaWFncmFtLmRlc3Ryb3koKTtcclxuICB9XHJcbn1cclxuaW50ZXJmYWNlIENvbm5lY3RvckluZm9Nb2RlbCB7XHJcbiAgaW5kaWNhdG9yPzogYm9vbGVhbixcclxuICBlc3RpbWF0ZT86IGJvb2xlYW47XHJcbiAgcGFyZW50SWQ6IHN0cmluZ1xyXG59XHJcbmludGVyZmFjZSBOb2RlSW5mb01vZGVsIHtcclxuICB0b29sdGlwOiBOb2RlVG9vbHRpcE1vZGVsO1xyXG4gIG5vZGU6IE5vZGVJbmZvO1xyXG4gIHJlY2lwaWVudDogUmVjaXBpZW50XHJcbiAgaW5kaWNhdG9yPzogYm9vbGVhbjtcclxuICBwYXJlbnRJZD86IHN0cmluZztcclxufVxyXG5pbnRlcmZhY2UgTm9kZVRvb2x0aXBNb2RlbCB7XHJcbiAgZnlpPzogc3RyaW5nO1xyXG4gIGVycm9yPzogc3RyaW5nO1xyXG4gIG5vdGU/OiBzdHJpbmc7XHJcbiAgcm9sZT86IHN0cmluZztcclxuICBzdWJzdGl0dXRpbmc/OiBzdHJpbmc7XHJcbiAgc3RhbmRhcmRUaW1lPzogc3RyaW5nO1xyXG4gIGR1cmF0aW9uPzogc3RyaW5nO1xyXG4gIGVzdGltYXRlZFRpbWU/OiBzdHJpbmc7XHJcbn1cclxuIl19