@formio/angular 8.0.0-rc.9 → 8.1.0-dev.1124.4c730e1

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.
Files changed (33) hide show
  1. package/FormioBaseComponent.d.ts +3 -2
  2. package/FormioBaseComponent.d.ts.map +1 -1
  3. package/components/formbuilder/formbuilder.component.d.ts +2 -2
  4. package/components/formbuilder/formbuilder.component.d.ts.map +1 -1
  5. package/embed/builder.component.d.ts +8 -2
  6. package/embed/builder.component.d.ts.map +1 -1
  7. package/embed/formio.component.d.ts +10 -5
  8. package/embed/formio.component.d.ts.map +1 -1
  9. package/esm2022/FormioBaseComponent.mjs +2 -2
  10. package/esm2022/components/formbuilder/formbuilder.component.mjs +3 -3
  11. package/esm2022/components/formio/formio.component.mjs +2 -2
  12. package/esm2022/components/formioreport/formioreport.component.mjs +2 -2
  13. package/esm2022/embed/builder.component.mjs +56 -5
  14. package/esm2022/embed/formio.component.mjs +14 -2
  15. package/esm2022/formio.common.mjs +1 -1
  16. package/esm2022/formio.config.mjs +1 -1
  17. package/esm2022/formio.utils.mjs +4 -2
  18. package/esm2022/grid/form/FormGridFooter.component.mjs +3 -3
  19. package/esm2022/manager/index/index.component.mjs +2 -4
  20. package/esm2022/manager/submission/submission/submission.component.mjs +3 -3
  21. package/fesm2022/formio-angular-embed.mjs +68 -5
  22. package/fesm2022/formio-angular-embed.mjs.map +1 -1
  23. package/fesm2022/formio-angular-grid.mjs +2 -2
  24. package/fesm2022/formio-angular-grid.mjs.map +1 -1
  25. package/fesm2022/formio-angular-manager.mjs +3 -5
  26. package/fesm2022/formio-angular-manager.mjs.map +1 -1
  27. package/fesm2022/formio-angular.mjs +10 -8
  28. package/fesm2022/formio-angular.mjs.map +1 -1
  29. package/formio.common.d.ts +1 -5
  30. package/formio.common.d.ts.map +1 -1
  31. package/formio.utils.d.ts.map +1 -1
  32. package/manager/index/index.component.d.ts.map +1 -1
  33. package/package.json +3 -3
@@ -2,8 +2,9 @@ import { ElementRef, EventEmitter, NgZone, OnChanges, OnDestroy, OnInit } from '
2
2
  import { FormioService } from './formio.service';
3
3
  import { FormioAlerts } from './components/alerts/formio.alerts';
4
4
  import { FormioAppConfig } from './formio.config';
5
- import { FormioForm, FormioOptions, FormioRefreshValue } from './formio.common';
5
+ import { AngularFormioOptions, FormioForm, FormioRefreshValue } from './formio.common';
6
6
  import { CustomTagsService } from './custom-tags.service';
7
+ import { Webform } from '@formio/js';
7
8
  import { AlertsPosition } from './types/alerts-position';
8
9
  import * as i0 from "@angular/core";
9
10
  export declare class FormioBaseComponent implements OnInit, OnChanges, OnDestroy {
@@ -15,7 +16,7 @@ export declare class FormioBaseComponent implements OnInit, OnChanges, OnDestroy
15
16
  src?: string;
16
17
  url?: string;
17
18
  service?: FormioService;
18
- options?: FormioOptions;
19
+ options?: Webform['options'] & AngularFormioOptions;
19
20
  noeval?: boolean;
20
21
  formioOptions?: any;
21
22
  renderOptions?: any;
@@ -1 +1 @@
1
- {"version":3,"file":"FormioBaseComponent.d.ts","sourceRoot":"","sources":["../../projects/angular-formio/src/FormioBaseComponent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FormioBaseComponent.d.ts","sourceRoot":"","sources":["../../projects/angular-formio/src/FormioBaseComponent.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { OnInit, OnChanges, OnDestroy, ElementRef, EventEmitter, NgZone } from '@angular/core';
2
2
  import { FormioAppConfig } from '../../formio.config';
3
- import { FormioForm, FormioOptions } from '../../formio.common';
3
+ import { AngularFormioOptions, FormioForm } from '../../formio.common';
4
4
  import { FormBuilder } from '@formio/js';
5
5
  import { Observable } from 'rxjs';
6
6
  import { CustomTagsService } from '../../custom-tags.service';
@@ -16,7 +16,7 @@ export declare class FormBuilderComponent implements OnInit, OnChanges, OnDestro
16
16
  componentAdding: boolean;
17
17
  private refreshSubscription;
18
18
  form?: FormioForm;
19
- options?: FormioOptions;
19
+ options?: object & AngularFormioOptions;
20
20
  formbuilder?: any;
21
21
  noeval?: boolean;
22
22
  refresh?: Observable<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"formbuilder.component.d.ts","sourceRoot":"","sources":["../../../../projects/angular-formio/src/components/formbuilder/formbuilder.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,MAAM,EACN,SAAS,EACT,SAAS,EAGT,UAAU,EAEV,YAAY,EAEZ,MAAM,EACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EACL,UAAU,EACV,aAAa,EACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAU,WAAW,EAAS,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,UAAU,EAAgB,MAAM,MAAM,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;;AAG9D,qBAOa,oBAAqB,YAAW,MAAM,EAAE,SAAS,EAAE,SAAS;IAiBrE,OAAO,CAAC,MAAM;IACF,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU,CAAC;IAlB1B,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACvB,YAAY,EAAE,GAAG,CAAC;IAClB,MAAM,EAAE,GAAG,CAAC;IACZ,OAAO,EAAE,WAAW,CAAC;IACrB,eAAe,UAAS;IAC/B,OAAO,CAAC,mBAAmB,CAAe;IACjC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,MAAO,CAAC,UAAS;IACjB,OAAO,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACC,cAAc,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;gBAG/D,MAAM,EAAE,MAAM,EACF,MAAM,EAAE,eAAe,EACvB,UAAU,CAAC,EAAE,iBAAiB;IAepD,QAAQ;IAoBR,WAAW,CAAC,QAAQ,EAAE,GAAG;IAqEzB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAMhD,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG;IAgBnC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM;IAgBvC,WAAW,CAAC,OAAO,EAAE,GAAG;IAUxB,WAAW;yCA3KA,oBAAoB;2CAApB,oBAAoB;CAoLhC"}
1
+ {"version":3,"file":"formbuilder.component.d.ts","sourceRoot":"","sources":["../../../../projects/angular-formio/src/components/formbuilder/formbuilder.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,MAAM,EACN,SAAS,EACT,SAAS,EAGT,UAAU,EAEV,YAAY,EAEZ,MAAM,EACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EACL,oBAAoB,EACpB,UAAU,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAU,WAAW,EAAS,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,UAAU,EAAgB,MAAM,MAAM,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;;AAG9D,qBAOa,oBAAqB,YAAW,MAAM,EAAE,SAAS,EAAE,SAAS;IAiBrE,OAAO,CAAC,MAAM;IACF,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU,CAAC;IAlB1B,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACvB,YAAY,EAAE,GAAG,CAAC;IAClB,MAAM,EAAE,GAAG,CAAC;IACZ,OAAO,EAAE,WAAW,CAAC;IACrB,eAAe,UAAS;IAC/B,OAAO,CAAC,mBAAmB,CAAe;IACjC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAAC;IACxC,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,MAAO,CAAC,UAAS;IACjB,OAAO,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACC,cAAc,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;gBAG/D,MAAM,EAAE,MAAM,EACF,MAAM,EAAE,eAAe,EACvB,UAAU,CAAC,EAAE,iBAAiB;IAepD,QAAQ;IAoBR,WAAW,CAAC,QAAQ,EAAE,GAAG;IAqEzB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAMhD,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG;IAgBnC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM;IAgBvC,WAAW,CAAC,OAAO,EAAE,GAAG;IAUxB,WAAW;yCA3KA,oBAAoB;2CAApB,oBAAoB;CAoLhC"}
@@ -1,13 +1,19 @@
1
1
  import { ElementRef, EventEmitter, AfterViewInit } from '@angular/core';
2
+ import { FormBuilder } from '@formio/js';
3
+ import WebformBuilder from '@formio/js/lib/cjs/WebformBuilder';
2
4
  import * as i0 from "@angular/core";
3
5
  export declare class FormioBuilder implements AfterViewInit {
4
6
  element: ElementRef;
5
7
  form?: Object | null;
6
8
  options?: Object;
7
- ready: EventEmitter<Formio>;
9
+ change: EventEmitter<any>;
10
+ ready: EventEmitter<any>;
8
11
  error: EventEmitter<any>;
12
+ builder: FormBuilder;
13
+ componentAdding: boolean;
14
+ get instance(): WebformBuilder;
9
15
  ngAfterViewInit(): void;
10
16
  static ɵfac: i0.ɵɵFactoryDeclaration<FormioBuilder, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<FormioBuilder, "formio-builder", never, { "form": { "alias": "form"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, { "ready": "ready"; "error": "error"; }, never, never, false, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<FormioBuilder, "formio-builder", never, { "form": { "alias": "form"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, { "change": "change"; "ready": "ready"; "error": "error"; }, never, never, false, never>;
12
18
  }
13
19
  //# sourceMappingURL=builder.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builder.component.d.ts","sourceRoot":"","sources":["../../../projects/angular-formio/embed/src/builder.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAA4B,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;;AAG7G,qBAIa,aAAc,YAAW,aAAa;IAC1B,OAAO,EAAE,UAAU,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAM;IACrB,KAAK,uBAA8B;IACnC,KAAK,oBAA2B;IAC1C,eAAe,IAAI,IAAI;yCANd,aAAa;2CAAb,aAAa;CAWzB"}
1
+ {"version":3,"file":"builder.component.d.ts","sourceRoot":"","sources":["../../../projects/angular-formio/embed/src/builder.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAA4B,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7G,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,cAAc,MAAM,mCAAmC,CAAC;;AAE/D,qBAIa,aAAc,YAAW,aAAa;IAC1B,OAAO,EAAE,UAAU,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAM;IACrB,MAAM,oBAA2B;IACjC,KAAK,oBAA2B;IAChC,KAAK,oBAA2B;IACnC,OAAO,EAAE,WAAW,CAAC;IACrB,eAAe,UAAS;IAC/B,IAAI,QAAQ,IAAI,cAAc,CAE7B;IACD,eAAe,IAAI,IAAI;yCAZd,aAAa;2CAAb,aAAa;CA2DzB"}
@@ -1,16 +1,21 @@
1
1
  import { ElementRef, EventEmitter, AfterViewInit } from '@angular/core';
2
+ import { Webform } from '@formio/js';
3
+ import { Form, Submission } from '@formio/core/types';
2
4
  import * as i0 from "@angular/core";
3
5
  export declare class FormioComponent implements AfterViewInit {
4
6
  src?: string;
5
- form?: Object | null;
6
- submission?: Object | null;
7
- options?: Object;
8
- ready: EventEmitter<Formio>;
7
+ form?: Form | null;
8
+ submission?: Submission | null;
9
+ url?: string;
10
+ options?: Webform['options'];
11
+ ready: EventEmitter<Webform>;
9
12
  submit: EventEmitter<object>;
10
13
  error: EventEmitter<any>;
14
+ change: EventEmitter<any>;
11
15
  element: ElementRef;
16
+ instance: Webform;
12
17
  ngAfterViewInit(): void;
13
18
  static ɵfac: i0.ɵɵFactoryDeclaration<FormioComponent, never>;
14
- static ɵcmp: i0.ɵɵComponentDeclaration<FormioComponent, "formio", never, { "src": { "alias": "src"; "required": false; }; "form": { "alias": "form"; "required": false; }; "submission": { "alias": "submission"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, { "ready": "ready"; "submit": "submit"; "error": "error"; }, never, never, false, never>;
19
+ static ɵcmp: i0.ɵɵComponentDeclaration<FormioComponent, "formio", never, { "src": { "alias": "src"; "required": false; }; "form": { "alias": "form"; "required": false; }; "submission": { "alias": "submission"; "required": false; }; "url": { "alias": "url"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, { "ready": "ready"; "submit": "submit"; "error": "error"; "change": "change"; }, never, never, false, never>;
15
20
  }
16
21
  //# sourceMappingURL=formio.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"formio.component.d.ts","sourceRoot":"","sources":["../../../projects/angular-formio/embed/src/formio.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,UAAU,EAAiB,YAAY,EAAa,aAAa,EAAE,MAAM,eAAe,CAAC;;AAGxH,qBAIa,eAAgB,YAAW,aAAa;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAM;IACrB,KAAK,uBAA8B;IACnC,MAAM,uBAA8B;IACpC,KAAK,oBAA2B;IACrB,OAAO,EAAE,UAAU,CAAC;IACzC,eAAe,IAAI,IAAI;yCATd,eAAe;2CAAf,eAAe;CAmB3B"}
1
+ {"version":3,"file":"formio.component.d.ts","sourceRoot":"","sources":["../../../projects/angular-formio/embed/src/formio.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,UAAU,EAAiB,YAAY,EAAa,aAAa,EAAE,MAAM,eAAe,CAAC;AACxH,OAAO,EAAwB,OAAO,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;;AAEtD,qBAIa,eAAgB,YAAW,aAAa;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAM;IACjC,KAAK,wBAA+B;IACpC,MAAM,uBAA8B;IACpC,KAAK,oBAA2B;IAChC,MAAM,oBAA2B;IACtB,OAAO,EAAE,UAAU,CAAC;IAClC,QAAQ,EAAE,OAAO,CAAC;IACzB,eAAe,IAAI,IAAI;yCAZd,eAAe;2CAAf,eAAe;CA2B3B"}
@@ -394,7 +394,7 @@ export class FormioBaseComponent {
394
394
  components.forEach((comp) => comp.setCustomValidity(messageText, true));
395
395
  this.alerts.addAlert({
396
396
  type: 'danger',
397
- message: message[index],
397
+ message: Array.isArray(message) ? message[index] : message,
398
398
  component,
399
399
  });
400
400
  shouldErrorDisplay = false;
@@ -577,4 +577,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
577
577
  type: ViewChild,
578
578
  args: ['formio', { static: true }]
579
579
  }] } });
580
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybWlvQmFzZUNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZm9ybWlvL3NyYy9Gb3JtaW9CYXNlQ29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBd0MsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUksT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUdqRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFOUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFDekQsTUFBTSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsR0FBRyxLQUFLLENBQUM7QUFLM0MsTUFBTSxPQUFPLG1CQUFtQjtJQTZEckI7SUFDWTtJQUNBO0lBOURaLElBQUksQ0FBYztJQUNsQixVQUFVLEdBQVMsRUFBRSxDQUFDO0lBQ3RCLEdBQUcsQ0FBVTtJQUNiLEdBQUcsQ0FBVTtJQUNiLE9BQU8sQ0FBaUI7SUFDeEIsT0FBTyxDQUFpQjtJQUN4QixNQUFNLEdBQUssU0FBUyxDQUFDLE1BQU0sQ0FBQztJQUM1QixhQUFhLENBQU87SUFDcEIsYUFBYSxDQUFPO0lBQ3BCLFFBQVEsR0FBSyxLQUFLLENBQUM7SUFDbkIsUUFBUSxHQUFLLEtBQUssQ0FBQztJQUNuQixXQUFXLEdBQUssS0FBSyxDQUFDO0lBQ3RCLGNBQWMsQ0FBWTtJQUMxQixPQUFPLENBQW9DO0lBQzNDLEtBQUssQ0FBcUI7SUFDMUIsT0FBTyxDQUF3QjtJQUMvQixV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QUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU07Z0JBQ2dDLGFBQWE7c0JBQW5ELFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgTmdab25lLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1pb1NlcnZpY2UgfSBmcm9tICcuL2Zvcm1pby5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1pb0FsZXJ0cyB9IGZyb20gJy4vY29tcG9uZW50cy9hbGVydHMvZm9ybWlvLmFsZXJ0cyc7XG5pbXBvcnQgeyBGb3JtaW9BcHBDb25maWcgfSBmcm9tICcuL2Zvcm1pby5jb25maWcnO1xuaW1wb3J0IHsgRm9ybWlvRXJyb3IsIEZvcm1pb0Zvcm0sIEZvcm1pb09wdGlvbnMsIEZvcm1pb1JlZnJlc2hWYWx1ZSB9IGZyb20gJy4vZm9ybWlvLmNvbW1vbic7XG5pbXBvcnQgeyBhc3NpZ24sIGdldCwgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBDdXN0b21UYWdzU2VydmljZSB9IGZyb20gJy4vY3VzdG9tLXRhZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJ0Bmb3JtaW8vanMnO1xuaW1wb3J0IHsgQWxlcnRzUG9zaXRpb24gfSBmcm9tICcuL3R5cGVzL2FsZXJ0cy1wb3NpdGlvbic7XG5jb25zdCB7IEV2YWx1YXRvciwgZmFzdENsb25lRGVlcCB9ID0gVXRpbHM7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgY2xhc3MgRm9ybWlvQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBmb3JtPzogRm9ybWlvRm9ybTtcbiAgQElucHV0KCkgc3VibWlzc2lvbj86IGFueSA9IHt9O1xuICBASW5wdXQoKSBzcmM/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHVybD86IHN0cmluZztcbiAgQElucHV0KCkgc2VydmljZT86IEZvcm1pb1NlcnZpY2U7XG4gIEBJbnB1dCgpIG9wdGlvbnM/OiBGb3JtaW9PcHRpb25zO1xuICBASW5wdXQoKSBub2V2YWwgPyA9IEV2YWx1YXRvci5ub2V2YWw7XG4gIEBJbnB1dCgpIGZvcm1pb09wdGlvbnM/OiBhbnk7XG4gIEBJbnB1dCgpIHJlbmRlck9wdGlvbnM/OiBhbnk7XG4gIEBJbnB1dCgpIHJlYWRPbmx5ID8gPSBmYWxzZTtcbiAgQElucHV0KCkgdmlld09ubHkgPyA9IGZhbHNlO1xuICBASW5wdXQoKSBoaWRlTG9hZGluZyA/ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGhpZGVDb21wb25lbnRzPzogc3RyaW5nW107XG4gIEBJbnB1dCgpIHJlZnJlc2g/OiBFdmVudEVtaXR0ZXI8Rm9ybWlvUmVmcmVzaFZhbHVlPjtcbiAgQElucHV0KCkgZXJyb3I/OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQElucHV0KCkgc3VjY2Vzcz86IEV2ZW50RW1pdHRlcjxvYmplY3Q+O1xuICBASW5wdXQoKSBzdWJtaXREb25lPzogRXZlbnRFbWl0dGVyPG9iamVjdD47XG4gIEBJbnB1dCgpIGxhbmd1YWdlPzogRXZlbnRFbWl0dGVyPHN0cmluZz47XG4gIEBJbnB1dCgpIGhvb2tzPzogYW55ID0ge307XG4gIEBJbnB1dCgpIHJlbmRlcmVyPzogYW55O1xuICBASW5wdXQoKSB3YXRjaFN1Ym1pc3Npb25FcnJvcnMgPyA9IGZhbHNlO1xuICBASW5wdXQoKSBkYXRhVGFibGVBY3Rpb25zPyA6IGFueSA9IFtdXG4gIEBPdXRwdXQoKSByZW5kZXIgPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgQE91dHB1dCgpIGN1c3RvbUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG4gIEBPdXRwdXQoKSBmaWxlVXBsb2FkaW5nU3RhdHVzID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBzdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgQE91dHB1dCgpIHByZXZQYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG4gIEBPdXRwdXQoKSBuZXh0UGFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8b2JqZWN0PigpO1xuICBAT3V0cHV0KCkgYmVmb3JlU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG4gIEBPdXRwdXQoKSByb3dBZGQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJvd0FkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSByb3dFZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSByb3dFZGl0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJvd0RlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJvd1NlbGVjdENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcGFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgY2hhbmdlSXRlbXNQZXJQYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgQE91dHB1dCgpIGludmFsaWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBlcnJvckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZm9ybUxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHN1Ym1pc3Npb25Mb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybWlvQmFzZUNvbXBvbmVudD4oKTtcbiAgQFZpZXdDaGlsZCgnZm9ybWlvJywgeyBzdGF0aWM6IHRydWUgfSkgZm9ybWlvRWxlbWVudD86IEVsZW1lbnRSZWY8YW55PjtcblxuICBwdWJsaWMgQWxlcnRzUG9zaXRpb24gPSBBbGVydHNQb3NpdGlvbjtcbiAgcHVibGljIGZvcm1pbzogYW55O1xuICBwdWJsaWMgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcHVibGljIGFsZXJ0cyA9IG5ldyBGb3JtaW9BbGVydHMoKTtcbiAgcHVibGljIGZvcm1pb1JlYWR5OiBQcm9taXNlPGFueT47XG5cbiAgcHJpdmF0ZSBmb3JtaW9SZWFkeVJlc29sdmU6IGFueTtcbiAgcHJpdmF0ZSBzdWJtaXR0aW5nID0gZmFsc2U7XG4gIHByaXZhdGUgc3VibWlzc2lvblN1Y2Nlc3MgPSBmYWxzZTtcbiAgcHVibGljIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgcHVibGljIG5vQWxlcnRzOiBib29sZWFuO1xuICBwdWJsaWMgbGFiZWw6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbmdab25lOiBOZ1pvbmUsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGNvbmZpZzogRm9ybWlvQXBwQ29uZmlnLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBjdXN0b21UYWdzPzogQ3VzdG9tVGFnc1NlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmZvcm1pb1JlYWR5ID0gbmV3IFByb21pc2UoKHJlYWR5KSA9PiB7XG4gICAgICB0aGlzLmZvcm1pb1JlYWR5UmVzb2x2ZSA9IHJlYWR5O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0UmVuZGVyZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVuZGVyZXI7XG4gIH1cblxuICBnZXRSZW5kZXJlck9wdGlvbnMoKSB7XG4gICAgY29uc3QgZXh0cmFUYWdzID0gdGhpcy5jdXN0b21UYWdzID8gdGhpcy5jdXN0b21UYWdzLnRhZ3MgOiBbXTtcbiAgICByZXR1cm4gYXNzaWduKHt9LCB7XG4gICAgICBpY29uczogZ2V0KHRoaXMuY29uZmlnLCAnaWNvbnMnLCAnZm9udGF3ZXNvbWUnKSxcbiAgICAgIG5vQWxlcnRzOiBnZXQodGhpcy5vcHRpb25zLCAnbm9BbGVydHMnLCB0cnVlKSxcbiAgICAgIHJlYWRPbmx5OiB0aGlzLnJlYWRPbmx5LFxuICAgICAgdmlld0FzSHRtbDogdGhpcy52aWV3T25seSxcbiAgICAgIC4uLih0aGlzLnZpZXdPbmx5ICYmIHsgcmVuZGVyTW9kZTogXCJodG1sXCIgfSksXG4gICAgICBpMThuOiBnZXQodGhpcy5vcHRpb25zLCAnaTE4bicsIG51bGwpLFxuICAgICAgZmlsZVNlcnZpY2U6IGdldCh0aGlzLm9wdGlvbnMsICdmaWxlU2VydmljZScsIG51bGwpLFxuICAgICAgaG9va3M6IHRoaXMuaG9va3MsXG4gICAgICBzYW5pdGl6ZUNvbmZpZzoge1xuICAgICAgICBhZGRUYWdzOiBleHRyYVRhZ3NcbiAgICAgIH0sXG4gICAgICBkYXRhVGFibGVBY3Rpb25zOiB0aGlzLmRhdGFUYWJsZUFjdGlvbnNcbiAgICB9LCB0aGlzLnJlbmRlck9wdGlvbnMgfHwge30pO1xuICB9XG5cbiAgY3JlYXRlUmVuZGVyZXIoKSB7XG4gICAgY29uc3QgUmVuZGVyZXIgPSB0aGlzLmdldFJlbmRlcmVyKCk7XG4gICAgY29uc3QgZm9ybSA9IChuZXcgUmVuZGVyZXIoXG4gICAgICB0aGlzLmZvcm1pb0VsZW1lbnQgPyB0aGlzLmZvcm1pb0VsZW1lbnQubmF0aXZlRWxlbWVudCA6IG51bGwsXG4gICAgICB0aGlzLmZvcm0sXG4gICAgICB0aGlzLmdldFJlbmRlcmVyT3B0aW9ucygpXG4gICAgKSk7XG4gICAgcmV0dXJuIGZvcm0uaW5zdGFuY2U7XG4gIH1cblxuICBzZXRGb3JtVXJsKHVybCkge1xuICAgIHRoaXMuZm9ybWlvLnNldFVybCh1cmwsIHRoaXMuZm9ybWlvT3B0aW9ucyB8fCB7fSk7XG4gIH1cblxuICBzZXRGb3JtKGZvcm06IEZvcm1pb0Zvcm0pIHtcbiAgICB0aGlzLmZvcm0gPSBmb3JtO1xuICAgIGlmICh0aGlzLmZvcm1pbykge1xuICAgICAgdGhpcy5mb3JtaW8uZGVzdHJveSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZvcm0udGl0bGUpIHtcbiAgICAgIHRoaXMubGFiZWwgPSB0aGlzLmZvcm0udGl0bGU7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZvcm0uY29tcG9uZW50cyAmJiB0aGlzLmZvcm0uY29tcG9uZW50c1swXSkge1xuICAgICAgdGhpcy5sYWJlbCA9IHRoaXMuZm9ybS5jb21wb25lbnRzWzBdLmxhYmVsO1xuICAgIH1cblxuICAgIC8vIENsZWFyIG91dCB0aGUgZWxlbWVudCB0byByZW5kZXIgdGhlIG5ldyBmb3JtLlxuICAgIGlmICh0aGlzLmZvcm1pb0VsZW1lbnQgJiYgdGhpcy5mb3JtaW9FbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuZm9ybWlvRWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuICAgIH1cbiAgICB0aGlzLmZvcm1pbyA9IHRoaXMuY3JlYXRlUmVuZGVyZXIoKTtcblxuICAgIGlmKCF0aGlzLmZvcm1pbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmZvcm1pby5zZXRTdWJtaXNzaW9uKHRoaXMuc3VibWlzc2lvbiwge1xuICAgICAgZnJvbVN1Ym1pc3Npb246IGZhbHNlXG4gICAgfSk7XG4gICAgaWYgKHRoaXMucmVuZGVyT3B0aW9ucyAmJiB0aGlzLnJlbmRlck9wdGlvbnMudmFsaWRhdGVPbkluaXQpIHtcbiAgICAgIHRoaXMuZm9ybWlvLnNldFZhbHVlKHRoaXMuc3VibWlzc2lvbiwge3ZhbGlkYXRlT25Jbml0OiB0cnVlfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnVybCkge1xuICAgICAgdGhpcy5zZXRGb3JtVXJsKHRoaXMudXJsKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3JjKSB7XG4gICAgICB0aGlzLnNldEZvcm1VcmwodGhpcy5zcmMpO1xuICAgIH1cbiAgICB0aGlzLmZvcm1pby5ub3N1Ym1pdCA9IHRydWU7XG4gICAgdGhpcy5hdHRhY2hGb3JtRXZlbnRzKCk7XG5cbiAgICByZXR1cm4gdGhpcy5mb3JtaW8ucmVhZHkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlYWR5LmVtaXQodGhpcyk7XG4gICAgICAgIHRoaXMuZm9ybWlvUmVhZHlSZXNvbHZlKHRoaXMuZm9ybWlvKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybWlvLnN1Ym1pc3Npb25SZWFkeSkge1xuICAgICAgICAgIHRoaXMuZm9ybWlvLnN1Ym1pc3Npb25SZWFkeS50aGVuKChzdWJtaXNzaW9uKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pc3Npb25Mb2FkLmVtaXQoc3VibWlzc2lvbik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWlvO1xuICAgIH0pO1xuICB9XG5cbiAgYXR0YWNoRm9ybUV2ZW50cygpIHtcbiAgICB0aGlzLmZvcm1pby5vbigncHJldlBhZ2UnLCAoZGF0YTogYW55KSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5vblByZXZQYWdlKGRhdGEpKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ25leHRQYWdlJywgKGRhdGE6IGFueSkgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMub25OZXh0UGFnZShkYXRhKSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdjaGFuZ2UnLCAodmFsdWU6IGFueSwgZmxhZ3M6IGFueSwgaXNNb2RpZmllZDogYm9vbGVhbikgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMub25DaGFuZ2UodmFsdWUsIGZsYWdzLCBpc01vZGlmaWVkKSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdyb3dBZGQnLCAoY29tcG9uZW50OiBhbnkpID0+ICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yb3dBZGQuZW1pdChjb21wb25lbnQpKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ3Jvd0FkZGVkJywgKGRhdGE6IGFueSwgY29tcG9uZW50OiBhbnkpID0+ICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yb3dBZGRlZC5lbWl0KHtjb21wb25lbnQsIHJvdzogZGF0YX0pKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ3Jvd0VkaXQnLCAoZGF0YTogYW55LCByb3dJbmRleDogbnVtYmVyLCBpbmRleDogbnVtYmVyLCBjb21wb25lbnQ6IGFueSkgPT4gIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLnJvd0VkaXQuZW1pdCh7Y29tcG9uZW50LCByb3c6IGRhdGEsIHJvd0luZGV4LCBpbmRleH0pKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ3Jvd0VkaXRlZCcsIChkYXRhOiBhbnksIHJvd0luZGV4OiBudW1iZXIsIGNvbXBvbmVudDogYW55KSA9PiAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMucm93RWRpdGVkLmVtaXQoe2NvbXBvbmVudCwgcm93OiBkYXRhLCByb3dJbmRleH0pKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ3Jvd0RlbGV0ZScsIChkYXRhOiBhbnksIHJvd0luZGV4OiBudW1iZXIsIGluZGV4OiBudW1iZXIsIGNvbXBvbmVudDogYW55KSA9PiAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMucm93RGVsZXRlLmVtaXQoe2NvbXBvbmVudCwgcm93OiBkYXRhLCByb3dJbmRleCwgaW5kZXh9KSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdyb3dDbGljaycsIChyb3c6IGFueSwgcm93SW5kZXg6IG51bWJlciwgaW5kZXg6IG51bWJlcixjb21wb25lbnQ6IGFueSkgPT4gIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLnJvd0NsaWNrLmVtaXQoe2NvbXBvbmVudCwgcm93LCByb3dJbmRleCwgaW5kZXh9KSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdyb3dTZWxlY3RDaGFuZ2UnLCAoc2VsZWN0ZWRSb3dzOiBhbnlbXSwgY29tcG9uZW50OiBhbnkpID0+ICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yb3dTZWxlY3RDaGFuZ2UuZW1pdCh7c2VsZWN0ZWRSb3dzLCBjb21wb25lbnR9KSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdwYWdlJywgKGN1cnJlbnRQYWdlOiBudW1iZXIsIGNvbXBvbmVudDogYW55KSA9PiAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMucGFnZS5lbWl0KHtjdXJyZW50UGFnZSwgY29tcG9uZW50fSkpKTtcbiAgICB0aGlzLmZvcm1pby5vbignY2hhbmdlSXRlbXNQZXJQYWdlJywgKGl0ZW1zUGVyUGFnZTpudW1iZXIpID0+ICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5jaGFuZ2VJdGVtc1BlclBhZ2UuZW1pdCh7aXRlbXNQZXJQYWdlfSkpKTtcbiAgICB0aGlzLmZvcm1pby5vbignY3VzdG9tRXZlbnQnLCAoZXZlbnQ6IGFueSkgPT5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmN1c3RvbUV2ZW50LmVtaXQoZXZlbnQpKVxuICAgICk7XG5cbiAgICBbJ2ZpbGVVcGxvYWRpbmdTdGFydCcsICdmaWxlVXBsb2FkaW5nRW5kJ10uZm9yRWFjaCgoZXZlbnROYW1lLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3Qgc3RhdHVzID0gISFpbmRleCA/ICdlbmQnIDogJ3N0YXJ0JztcbiAgICAgIHRoaXMuZm9ybWlvLm9uKGV2ZW50TmFtZSwgKCkgPT5cbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZmlsZVVwbG9hZGluZ1N0YXR1cy5lbWl0KHN0YXR1cykpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgdGhpcy5mb3JtaW8ub24oJ3N1Ym1pdCcsIChzdWJtaXNzaW9uOiBhbnksIHNhdmVkOiBib29sZWFuKSA9PlxuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuc3VibWl0Rm9ybShzdWJtaXNzaW9uLCBzYXZlZCkpXG4gICAgKTtcbiAgICB0aGlzLmZvcm1pby5vbignZXJyb3InLCAoZXJyOiBhbnkpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLnN1Ym1pc3Npb25TdWNjZXNzID0gZmFsc2U7XG4gICAgICByZXR1cm4gdGhpcy5vbkVycm9yKGVycik7XG4gICAgfSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdyZW5kZXInLCAoKSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yZW5kZXIuZW1pdCgpKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ2Zvcm1Mb2FkJywgKGxvYWRlZEZvcm06IGFueSkgPT5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmZvcm1Mb2FkLmVtaXQobG9hZGVkRm9ybSkpXG4gICAgKTtcbiAgfVxuXG4gIGluaXRpYWxpemUoKSB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBleHRyYVRhZ3MgPSB0aGlzLmN1c3RvbVRhZ3MgPyB0aGlzLmN1c3RvbVRhZ3MudGFncyA6IFtdO1xuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zOiBGb3JtaW9PcHRpb25zID0ge1xuICAgICAgZXJyb3JzOiB7XG4gICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgZml4IHRoZSBmb2xsb3dpbmcgZXJyb3JzIGJlZm9yZSBzdWJtaXR0aW5nLidcbiAgICAgIH0sXG4gICAgICBhbGVydHM6IHtcbiAgICAgICAgc3VibWl0TWVzc2FnZTogJ1N1Ym1pc3Npb24gQ29tcGxldGUuJ1xuICAgICAgfSxcbiAgICAgIGRpc2FibGVBbGVydHM6IGZhbHNlLFxuICAgICAgaG9va3M6IHtcbiAgICAgICAgYmVmb3JlU3VibWl0OiBudWxsXG4gICAgICB9LFxuICAgICAgc2FuaXRpemVDb25maWc6IHtcbiAgICAgICAgYWRkVGFnczogZXh0cmFUYWdzXG4gICAgICB9LFxuICAgICAgYWxlcnRzUG9zaXRpb246IEFsZXJ0c1Bvc2l0aW9uLnRvcCxcbiAgICB9O1xuICAgIHRoaXMub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oZGVmYXVsdE9wdGlvbnMsIHRoaXMub3B0aW9ucyk7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5kaXNhYmxlQWxlcnRzKSB7XG4gICAgICB0aGlzLm9wdGlvbnMuYWxlcnRzUG9zaXRpb24gPSBBbGVydHNQb3NpdGlvbi5ub25lO1xuICAgIH1cbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIEV2YWx1YXRvci5ub2V2YWwgPSB0aGlzLm5vZXZhbDtcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcblxuICAgIGlmICh0aGlzLmxhbmd1YWdlKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMubGFuZ3VhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuZm9ybWlvLmxhbmd1YWdlID0gdGhpcy5sYW5ndWFnZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubGFuZ3VhZ2Uuc3Vic2NyaWJlKChsYW5nOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICB0aGlzLmZvcm1pby5sYW5ndWFnZSA9IGxhbmc7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnJlZnJlc2gpIHtcbiAgICAgIHRoaXMucmVmcmVzaC5zdWJzY3JpYmUoKHJlZnJlc2g6IEZvcm1pb1JlZnJlc2hWYWx1ZSkgPT5cbiAgICAgICAgdGhpcy5vblJlZnJlc2gocmVmcmVzaClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3Iuc3Vic2NyaWJlKChlcnI6IGFueSkgPT4gdGhpcy5vbkVycm9yKGVycikpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN1Y2Nlc3MpIHtcbiAgICAgIHRoaXMuc3VjY2Vzcy5zdWJzY3JpYmUoKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydCh7XG4gICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgfHwgZ2V0KHRoaXMub3B0aW9ucywgJ2FsZXJ0cy5zdWJtaXRNZXNzYWdlJylcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdWJtaXREb25lKSB7XG4gICAgICB0aGlzLnN1Ym1pdERvbmUuc3Vic2NyaWJlKChzdWJtaXNzaW9uOiBvYmplY3QpID0+IHtcbiAgICAgICAgdGhpcy5mb3JtaW8uZW1pdCgnc3VibWl0RG9uZScsIHN1Ym1pc3Npb24pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3JjKSB7XG4gICAgICBpZiAoIXRoaXMuc2VydmljZSkge1xuICAgICAgICB0aGlzLnNlcnZpY2UgPSBuZXcgRm9ybWlvU2VydmljZSh0aGlzLnNyYyk7XG4gICAgICB9XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLnNldEZvcm1Gcm9tU3JjKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnVybCAmJiAhdGhpcy5zZXJ2aWNlKSB7XG4gICAgICB0aGlzLnNlcnZpY2UgPSBuZXcgRm9ybWlvU2VydmljZSh0aGlzLnVybCk7XG4gICAgfVxuICB9XG5cbiAgc2V0Rm9ybUZyb21TcmMoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLmxvYWRGb3JtKHsgcGFyYW1zOiB7IGxpdmU6IDEgfSB9KS5zdWJzY3JpYmUoXG4gICAgICAoZm9ybTogRm9ybWlvRm9ybSkgPT4ge1xuICAgICAgICBpZiAoZm9ybSAmJiBmb3JtLmNvbXBvbmVudHMpIHtcbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldEZvcm0oZm9ybSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiBhIHN1Ym1pc3Npb24gaXMgYWxzbyBwcm92aWRlZC5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGlzRW1wdHkodGhpcy5zdWJtaXNzaW9uKSAmJlxuICAgICAgICAgIHRoaXMuc2VydmljZSAmJlxuICAgICAgICAgIHRoaXMuc2VydmljZS5mb3JtaW8uc3VibWlzc2lvbklkXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuc2VydmljZS5sb2FkU3VibWlzc2lvbigpLnN1YnNjcmliZShcbiAgICAgICAgICAgIChzdWJtaXNzaW9uOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1pby5vcHRpb25zLnJlYWRPbmx5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLnN1Ym1pc3Npb24gPSB0aGlzLmZvcm1pby5zdWJtaXNzaW9uID0gc3VibWlzc2lvbjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnIgPT4gdGhpcy5vbkVycm9yKGVycilcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyID0+IHRoaXMub25FcnJvcihlcnIpXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmZvcm1pbykge1xuICAgICAgdGhpcy5mb3JtaW8uZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uUmVmcmVzaChyZWZyZXNoOiBGb3JtaW9SZWZyZXNoVmFsdWUpIHtcbiAgICB0aGlzLmZvcm1pb1JlYWR5LnRoZW4oKCkgPT4ge1xuICAgICAgaWYgKHJlZnJlc2guZm9ybSkge1xuICAgICAgICB0aGlzLmZvcm1pby5zZXRGb3JtKHJlZnJlc2guZm9ybSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgaWYgKHJlZnJlc2guc3VibWlzc2lvbikge1xuICAgICAgICAgICAgdGhpcy5mb3JtaW8uc2V0U3VibWlzc2lvbihyZWZyZXNoLnN1Ym1pc3Npb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHJlZnJlc2guc3VibWlzc2lvbikge1xuICAgICAgICB0aGlzLmZvcm1pby5zZXRTdWJtaXNzaW9uKHJlZnJlc2guc3VibWlzc2lvbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKHJlZnJlc2gucHJvcGVydHkpIHtcbiAgICAgICAgICBjYXNlICdzdWJtaXNzaW9uJzpcbiAgICAgICAgICAgIHRoaXMuZm9ybWlvLnN1Ym1pc3Npb24gPSByZWZyZXNoLnZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnZm9ybSc6XG4gICAgICAgICAgICB0aGlzLmZvcm1pby5mb3JtID0gcmVmcmVzaC52YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBhbnkpIHtcbiAgICBFdmFsdWF0b3Iubm9ldmFsID0gdGhpcy5ub2V2YWw7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG5cbiAgICBpZiAoY2hhbmdlcy5mb3JtICYmIGNoYW5nZXMuZm9ybS5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRGb3JtKGNoYW5nZXMuZm9ybS5jdXJyZW50VmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtaW9SZWFkeS50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjaGFuZ2VzLnN1Ym1pc3Npb24gJiYgY2hhbmdlcy5zdWJtaXNzaW9uLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICB0aGlzLmZvcm1pby5zZXRTdWJtaXNzaW9uKGNoYW5nZXMuc3VibWlzc2lvbi5jdXJyZW50VmFsdWUsIHtcbiAgICAgICAgICBmcm9tU3VibWlzc2lvbjogIWNoYW5nZXMuc3VibWlzc2lvbi5maXJzdENoYW5nZVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZXMuaGlkZUNvbXBvbmVudHMgJiYgY2hhbmdlcy5oaWRlQ29tcG9uZW50cy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgY29uc3QgaGlkZGVuQ29tcG9uZW50cyA9IGNoYW5nZXMuaGlkZUNvbXBvbmVudHMuY3VycmVudFZhbHVlO1xuICAgICAgICB0aGlzLmZvcm1pby5vcHRpb25zLmhpZGUgPSBoaWRkZW5Db21wb25lbnRzO1xuICAgICAgICB0aGlzLmZvcm1pby5ldmVyeUNvbXBvbmVudCgoY29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgY29tcG9uZW50Lm9wdGlvbnMuaGlkZSA9IGhpZGRlbkNvbXBvbmVudHM7XG4gICAgICAgICAgaWYgKGhpZGRlbkNvbXBvbmVudHMuaW5jbHVkZXMoY29tcG9uZW50LmNvbXBvbmVudC5rZXkpKSB7XG4gICAgICAgICAgICBjb21wb25lbnQudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvblByZXZQYWdlKGRhdGE6IGFueSkge1xuICAgIHRoaXMuYWxlcnRzLnNldEFsZXJ0cyhbXSk7XG4gICAgdGhpcy5wcmV2UGFnZS5lbWl0KGRhdGEpO1xuICB9XG5cbiAgb25OZXh0UGFnZShkYXRhOiBhbnkpIHtcbiAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydHMoW10pO1xuICAgIHRoaXMubmV4dFBhZ2UuZW1pdChkYXRhKTtcbiAgfVxuXG4gIG9uU3VibWl0KHN1Ym1pc3Npb246IGFueSwgc2F2ZWQ6IGJvb2xlYW4sIG5vZW1pdD86IGJvb2xlYW4pIHtcbiAgICB0aGlzLnN1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnN1Ym1pc3Npb25TdWNjZXNzID0gdHJ1ZTtcblxuICAgIHRoaXMuZm9ybWlvLnNldFZhbHVlKGZhc3RDbG9uZURlZXAoc3VibWlzc2lvbiksIHtcbiAgICAgIG5vVmFsaWRhdGU6IHRydWUsXG4gICAgICBub0NoZWNrOiB0cnVlXG4gICAgfSk7XG5cbiAgICBpZiAoc2F2ZWQpIHtcbiAgICAgIHRoaXMuZm9ybWlvLmVtaXQoJ3N1Ym1pdERvbmUnLCBzdWJtaXNzaW9uKTtcbiAgICB9XG4gICAgaWYgKCFub2VtaXQpIHtcbiAgICAgIHRoaXMuc3VibWl0LmVtaXQoc3VibWlzc2lvbik7XG4gICAgfVxuICAgIGlmICghdGhpcy5zdWNjZXNzKSB7XG4gICAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydCh7XG4gICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgbWVzc2FnZTogZ2V0KHRoaXMub3B0aW9ucywgJ2FsZXJ0cy5zdWJtaXRNZXNzYWdlJylcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uRXJyb3IoZXJyOiBhbnkpIHtcbiAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydHMoW10pO1xuICAgIHRoaXMuc3VibWl0dGluZyA9IGZhbHNlO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG5cbiAgICBpZiAoIWVycikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIE1ha2Ugc3VyZSBpdCBpcyBhbiBhcnJheS5cbiAgICBjb25zdCBlcnJvcnMgPSBBcnJheS5pc0FycmF5KGVycikgPyBlcnIgOiBbZXJyXTtcblxuICAgIC8vIEVtaXQgdGhlc2UgZXJyb3JzIGFnYWluLlxuICAgIHRoaXMuZXJyb3JDaGFuZ2UuZW1pdChlcnJvcnMpO1xuXG4gICAgaWYgKGVyci5zaWxlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5mb3JtaW8gJiYgZXJyb3JzLmxlbmd0aCkge1xuICAgICAgdGhpcy5mb3JtaW8uZW1pdCgnc3VibWl0RXJyb3InLCBlcnJvcnMpO1xuICAgIH1cblxuICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBlYWNoIG9uZSBhbmQgc2V0IHRoZSBhbGVydHMgYXJyYXkuXG4gICAgZXJyb3JzLmZvckVhY2goKGVycm9yOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgcGF0aHMsXG4gICAgICB9ID0gZXJyb3JcbiAgICAgICAgPyBlcnJvci5kZXRhaWxzXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvci5kZXRhaWxzLm1hcCgoZGV0YWlsKSA9PiBkZXRhaWwubWVzc2FnZSksXG4gICAgICAgICAgICBwYXRoczogZXJyb3IuZGV0YWlscy5tYXAoKGRldGFpbCkgPT4gZGV0YWlsLnBhdGgpLFxuICAgICAgICAgIH1cbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UgfHwgZXJyb3IudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHBhdGhzOiAoZXJyb3IucGF0aCB8fCBlcnJvci5mb3JtYXR0ZWRLZXlPclBhdGgpID8gW2Vycm9yLnBhdGggfHwgZXJyb3IuZm9ybWF0dGVkS2V5T3JQYXRoXSA6IFtdLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgcGF0aHM6IFtdLFxuICAgICAgICB9O1xuXG4gICAgICBsZXQgc2hvdWxkRXJyb3JEaXNwbGF5ID0gdHJ1ZTtcblxuICAgICAgaWYgKHRoaXMuZm9ybWlvKSB7XG4gICAgICAgIHBhdGhzLmZvckVhY2goKHBhdGgsIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5mb3JtaW8uZ2V0Q29tcG9uZW50KHBhdGgpO1xuICAgICAgICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSBBcnJheS5pc0FycmF5KGNvbXBvbmVudCkgPyBjb21wb25lbnQgOiBbY29tcG9uZW50XTtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2VUZXh0ID0gQXJyYXkuaXNBcnJheShtZXNzYWdlKSA/IG1lc3NhZ2VbaW5kZXhdIDogbWVzc2FnZTtcbiAgICAgICAgICAgIGNvbXBvbmVudHMuZm9yRWFjaCgoY29tcCkgPT4gY29tcC5zZXRDdXN0b21WYWxpZGl0eShtZXNzYWdlVGV4dCwgdHJ1ZSkpO1xuICAgICAgICAgICAgdGhpcy5hbGVydHMuYWRkQWxlcnQoe1xuICAgICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZVtpbmRleF0sXG4gICAgICAgICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2hvdWxkRXJyb3JEaXNwbGF5ID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLlZQQVRfRU5BQkxFRCkge1xuICAgICAgICAgIGlmICh0eXBlb2YgZXJyb3IgPT09J3N0cmluZycgJiYgdGhpcy5mb3JtaW8uY29tcG9uZW50cykge1xuICAgICAgICAgICAgdGhpcy5mb3JtaW8uY29tcG9uZW50cy5mb3JFYWNoKChjb21wKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChjb21wICYmIGNvbXAudHlwZSAhPT0gJ2J1dHRvbicpIHtcbiAgICAgICAgICAgICAgICBjb21wLnNldEN1c3RvbVZhbGlkaXR5KG1lc3NhZ2UsIHRydWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHNob3VsZEVycm9yRGlzcGxheSkge1xuICAgICAgICB0aGlzLmFsZXJ0cy5hZGRBbGVydCh7XG4gICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICBjb21wb25lbnQ6IGVycm9yLmNvbXBvbmVudCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5mb3JtaW8gJiYgIXRoaXMubm9BbGVydHMpIHtcbiAgICAgIHRoaXMuZm9ybWlvLnNob3dFcnJvcnMoZXJyb3JzKTtcbiAgICB9XG4gIH1cblxuICBmb2N1c09uQ29tcG9uZXQoa2V5OiBhbnkpIHtcbiAgICBpZiAodGhpcy5mb3JtaW8pIHtcbiAgICAgIHRoaXMuZm9ybWlvLmZvY3VzT25Db21wb25lbnQoa2V5KTtcbiAgICB9XG4gIH1cblxuICBzdWJtaXRFeGVjdXRlKHN1Ym1pc3Npb246IG9iamVjdCwgc2F2ZWQgPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLnNlcnZpY2UgJiYgIXRoaXMudXJsICYmICFzYXZlZCkge1xuICAgICAgdGhpcy5zZXJ2aWNlXG4gICAgICAgIC5zYXZlU3VibWlzc2lvbihzdWJtaXNzaW9uKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIChzdWI6IHt9KSA9PiB0aGlzLm9uU3VibWl0KHN1YiwgdHJ1ZSksXG4gICAgICAgICAgZXJyID0+IHRoaXMub25FcnJvcihlcnIpXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub25TdWJtaXQoc3VibWlzc2lvbiwgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHN1Ym1pdEZvcm0oc3VibWlzc2lvbjogYW55LCBzYXZlZCA9IGZhbHNlKSB7XG4gICAgLy8gS2VlcCBkb3VibGUgc3VibWl0cyBmcm9tIG9jY3VycmluZy4uLlxuICAgIGlmICh0aGlzLnN1Ym1pdHRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5mb3JtaW8uc2V0TWV0YWRhdGEoc3VibWlzc2lvbik7XG4gICAgdGhpcy5zdWJtaXNzaW9uU3VjY2VzcyA9IGZhbHNlO1xuICAgIHRoaXMuc3VibWl0dGluZyA9IHRydWU7XG4gICAgdGhpcy5iZWZvcmVTdWJtaXQuZW1pdChzdWJtaXNzaW9uKTtcblxuICAgIC8vIGlmIHRoZXkgcHJvdmlkZSBhIGJlZm9yZVN1Ym1pdCBob29rLCB0aGVuIGFsbG93IHRoZW0gdG8gYWx0ZXIgdGhlIHN1Ym1pc3Npb24gYXN5bmNocm9ub3VzbHlcbiAgICAvLyBvciBldmVuIHByb3ZpZGUgYSBjdXN0b20gRXJyb3IgbWV0aG9kLlxuICAgIGNvbnN0IGJlZm9yZVN1Ym1pdCA9IGdldCh0aGlzLm9wdGlvbnMsICdob29rcy5iZWZvcmVTdWJtaXQnKTtcbiAgICBpZiAoYmVmb3JlU3VibWl0KSB7XG4gICAgICBiZWZvcmVTdWJtaXQoc3VibWlzc2lvbiwgKGVycjogRm9ybWlvRXJyb3IsIHN1Yjogb2JqZWN0KSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICB0aGlzLm9uRXJyb3IoZXJyKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdWJtaXRFeGVjdXRlKHN1Yiwgc2F2ZWQpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3VibWl0RXhlY3V0ZShzdWJtaXNzaW9uLCBzYXZlZCk7XG4gICAgfVxuICB9XG5cbiAgb25DaGFuZ2UodmFsdWU6IGFueSwgZmxhZ3M6IGFueSwgaXNNb2RpZmllZDogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLndhdGNoU3VibWlzc2lvbkVycm9ycyAmJiAhdGhpcy5zdWJtaXNzaW9uU3VjY2Vzcykge1xuICAgICAgY29uc3QgZXJyb3JzID0gZ2V0KHRoaXMsICdmb3JtaW8uZXJyb3JzJywgW10pO1xuICAgICAgY29uc3QgYWxlcnRzID0gZ2V0KHRoaXMsICdhbGVydHMuYWxlcnRzJywgW10pO1xuICAgICAgY29uc3Qgc3VibWl0dGVkID0gZ2V0KHRoaXMsICdmb3JtaW8uc3VibWl0dGVkJywgZmFsc2UpO1xuICAgICAgaWYgKHN1Ym1pdHRlZCAmJiAoZXJyb3JzLmxlbmd0aCB8fCBhbGVydHMubGVuZ3RoKSkge1xuICAgICAgICB0aGlzLm9uRXJyb3IoZXJyb3JzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2hhbmdlLmVtaXQoey4uLnZhbHVlLCBmbGFncywgaXNNb2RpZmllZH0pO1xuICB9XG59XG4iXX0=
580
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybWlvQmFzZUNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZm9ybWlvL3NyYy9Gb3JtaW9CYXNlQ29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBd0MsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUksT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUdqRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFOUMsT0FBTyxFQUFDLEtBQUssRUFBVSxNQUFNLFlBQVksQ0FBQztBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFDekQsTUFBTSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsR0FBRyxLQUFLLENBQUM7QUFLM0MsTUFBTSxPQUFPLG1CQUFtQjtJQTZEckI7SUFDWTtJQUNBO0lBOURaLElBQUksQ0FBYztJQUNsQixVQUFVLEdBQVMsRUFBRSxDQUFDO0lBQ3RCLEdBQUcsQ0FBVTtJQUNiLEdBQUcsQ0FBVTtJQUNiLE9BQU8sQ0FBaUI7SUFDeEIsT0FBTyxDQUE2QztJQUNwRCxNQUFNLEdBQUssU0FBUyxDQUFDLE1BQU0sQ0FBQztJQUM1QixhQUFhLENBQU87SUFDcEIsYUFBYSxDQUFPO0lBQ3BCLFFBQVEsR0FBSyxLQUFLLENBQUM7SUFDbkIsUUFBUSxHQUFLLEtBQUssQ0FBQztJQUNuQixXQUFXLEdBQUssS0FBSyxDQUFDO0lBQ3RCLGNBQWMsQ0FBWTtJQUMxQixPQUFPLENBQW9DO0lBQzNDLEtBQUssQ0FBcUI7SUFDMUIsT0FBTyxDQUF3QjtJQUMvQixV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QkFDSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTTtnQkFDZ0MsYUFBYTtzQkFBbkQsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBOZ1pvbmUsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybWlvU2VydmljZSB9IGZyb20gJy4vZm9ybWlvLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybWlvQWxlcnRzIH0gZnJvbSAnLi9jb21wb25lbnRzL2FsZXJ0cy9mb3JtaW8uYWxlcnRzJztcbmltcG9ydCB7IEZvcm1pb0FwcENvbmZpZyB9IGZyb20gJy4vZm9ybWlvLmNvbmZpZyc7XG5pbXBvcnQge0FuZ3VsYXJGb3JtaW9PcHRpb25zLCBGb3JtaW9FcnJvciwgRm9ybWlvRm9ybSwgRm9ybWlvUmVmcmVzaFZhbHVlfSBmcm9tICcuL2Zvcm1pby5jb21tb24nO1xuaW1wb3J0IHsgYXNzaWduLCBnZXQsIGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQ3VzdG9tVGFnc1NlcnZpY2UgfSBmcm9tICcuL2N1c3RvbS10YWdzLnNlcnZpY2UnO1xuaW1wb3J0IHtVdGlscywgV2ViZm9ybX0gZnJvbSAnQGZvcm1pby9qcyc7XG5pbXBvcnQgeyBBbGVydHNQb3NpdGlvbiB9IGZyb20gJy4vdHlwZXMvYWxlcnRzLXBvc2l0aW9uJztcbmNvbnN0IHsgRXZhbHVhdG9yLCBmYXN0Q2xvbmVEZWVwIH0gPSBVdGlscztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiAnJ1xufSlcbmV4cG9ydCBjbGFzcyBGb3JtaW9CYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGZvcm0/OiBGb3JtaW9Gb3JtO1xuICBASW5wdXQoKSBzdWJtaXNzaW9uPzogYW55ID0ge307XG4gIEBJbnB1dCgpIHNyYz86IHN0cmluZztcbiAgQElucHV0KCkgdXJsPzogc3RyaW5nO1xuICBASW5wdXQoKSBzZXJ2aWNlPzogRm9ybWlvU2VydmljZTtcbiAgQElucHV0KCkgb3B0aW9ucz86IFdlYmZvcm1bJ29wdGlvbnMnXSAmIEFuZ3VsYXJGb3JtaW9PcHRpb25zO1xuICBASW5wdXQoKSBub2V2YWwgPyA9IEV2YWx1YXRvci5ub2V2YWw7XG4gIEBJbnB1dCgpIGZvcm1pb09wdGlvbnM/OiBhbnk7XG4gIEBJbnB1dCgpIHJlbmRlck9wdGlvbnM/OiBhbnk7XG4gIEBJbnB1dCgpIHJlYWRPbmx5ID8gPSBmYWxzZTtcbiAgQElucHV0KCkgdmlld09ubHkgPyA9IGZhbHNlO1xuICBASW5wdXQoKSBoaWRlTG9hZGluZyA/ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGhpZGVDb21wb25lbnRzPzogc3RyaW5nW107XG4gIEBJbnB1dCgpIHJlZnJlc2g/OiBFdmVudEVtaXR0ZXI8Rm9ybWlvUmVmcmVzaFZhbHVlPjtcbiAgQElucHV0KCkgZXJyb3I/OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQElucHV0KCkgc3VjY2Vzcz86IEV2ZW50RW1pdHRlcjxvYmplY3Q+O1xuICBASW5wdXQoKSBzdWJtaXREb25lPzogRXZlbnRFbWl0dGVyPG9iamVjdD47XG4gIEBJbnB1dCgpIGxhbmd1YWdlPzogRXZlbnRFbWl0dGVyPHN0cmluZz47XG4gIEBJbnB1dCgpIGhvb2tzPzogYW55ID0ge307XG4gIEBJbnB1dCgpIHJlbmRlcmVyPzogYW55O1xuICBASW5wdXQoKSB3YXRjaFN1Ym1pc3Npb25FcnJvcnMgPyA9IGZhbHNlO1xuICBASW5wdXQoKSBkYXRhVGFibGVBY3Rpb25zPzogYW55ID0gW107XG4gIEBPdXRwdXQoKSByZW5kZXIgPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgQE91dHB1dCgpIGN1c3RvbUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG4gIEBPdXRwdXQoKSBmaWxlVXBsb2FkaW5nU3RhdHVzID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBzdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgQE91dHB1dCgpIHByZXZQYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG4gIEBPdXRwdXQoKSBuZXh0UGFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8b2JqZWN0PigpO1xuICBAT3V0cHV0KCkgYmVmb3JlU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG4gIEBPdXRwdXQoKSByb3dBZGQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJvd0FkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSByb3dFZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSByb3dFZGl0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJvd0RlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJvd1NlbGVjdENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcGFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgY2hhbmdlSXRlbXNQZXJQYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgQE91dHB1dCgpIGludmFsaWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBlcnJvckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZm9ybUxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHN1Ym1pc3Npb25Mb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybWlvQmFzZUNvbXBvbmVudD4oKTtcbiAgQFZpZXdDaGlsZCgnZm9ybWlvJywgeyBzdGF0aWM6IHRydWUgfSkgZm9ybWlvRWxlbWVudD86IEVsZW1lbnRSZWY8YW55PjtcblxuICBwdWJsaWMgQWxlcnRzUG9zaXRpb24gPSBBbGVydHNQb3NpdGlvbjtcbiAgcHVibGljIGZvcm1pbzogYW55O1xuICBwdWJsaWMgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcHVibGljIGFsZXJ0cyA9IG5ldyBGb3JtaW9BbGVydHMoKTtcbiAgcHVibGljIGZvcm1pb1JlYWR5OiBQcm9taXNlPGFueT47XG5cbiAgcHJpdmF0ZSBmb3JtaW9SZWFkeVJlc29sdmU6IGFueTtcbiAgcHJpdmF0ZSBzdWJtaXR0aW5nID0gZmFsc2U7XG4gIHByaXZhdGUgc3VibWlzc2lvblN1Y2Nlc3MgPSBmYWxzZTtcbiAgcHVibGljIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgcHVibGljIG5vQWxlcnRzOiBib29sZWFuO1xuICBwdWJsaWMgbGFiZWw6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbmdab25lOiBOZ1pvbmUsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGNvbmZpZzogRm9ybWlvQXBwQ29uZmlnLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBjdXN0b21UYWdzPzogQ3VzdG9tVGFnc1NlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmZvcm1pb1JlYWR5ID0gbmV3IFByb21pc2UoKHJlYWR5KSA9PiB7XG4gICAgICB0aGlzLmZvcm1pb1JlYWR5UmVzb2x2ZSA9IHJlYWR5O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0UmVuZGVyZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVuZGVyZXI7XG4gIH1cblxuICBnZXRSZW5kZXJlck9wdGlvbnMoKSB7XG4gICAgY29uc3QgZXh0cmFUYWdzID0gdGhpcy5jdXN0b21UYWdzID8gdGhpcy5jdXN0b21UYWdzLnRhZ3MgOiBbXTtcbiAgICByZXR1cm4gYXNzaWduKHt9LCB7XG4gICAgICBpY29uczogZ2V0KHRoaXMuY29uZmlnLCAnaWNvbnMnLCAnZm9udGF3ZXNvbWUnKSxcbiAgICAgIG5vQWxlcnRzOiBnZXQodGhpcy5vcHRpb25zLCAnbm9BbGVydHMnLCB0cnVlKSxcbiAgICAgIHJlYWRPbmx5OiB0aGlzLnJlYWRPbmx5LFxuICAgICAgdmlld0FzSHRtbDogdGhpcy52aWV3T25seSxcbiAgICAgIC4uLih0aGlzLnZpZXdPbmx5ICYmIHsgcmVuZGVyTW9kZTogXCJodG1sXCIgfSksXG4gICAgICBpMThuOiBnZXQodGhpcy5vcHRpb25zLCAnaTE4bicsIG51bGwpLFxuICAgICAgZmlsZVNlcnZpY2U6IGdldCh0aGlzLm9wdGlvbnMsICdmaWxlU2VydmljZScsIG51bGwpLFxuICAgICAgaG9va3M6IHRoaXMuaG9va3MsXG4gICAgICBzYW5pdGl6ZUNvbmZpZzoge1xuICAgICAgICBhZGRUYWdzOiBleHRyYVRhZ3NcbiAgICAgIH0sXG4gICAgICBkYXRhVGFibGVBY3Rpb25zOiB0aGlzLmRhdGFUYWJsZUFjdGlvbnNcbiAgICB9LCB0aGlzLnJlbmRlck9wdGlvbnMgfHwge30pO1xuICB9XG5cbiAgY3JlYXRlUmVuZGVyZXIoKSB7XG4gICAgY29uc3QgUmVuZGVyZXIgPSB0aGlzLmdldFJlbmRlcmVyKCk7XG4gICAgY29uc3QgZm9ybSA9IChuZXcgUmVuZGVyZXIoXG4gICAgICB0aGlzLmZvcm1pb0VsZW1lbnQgPyB0aGlzLmZvcm1pb0VsZW1lbnQubmF0aXZlRWxlbWVudCA6IG51bGwsXG4gICAgICB0aGlzLmZvcm0sXG4gICAgICB0aGlzLmdldFJlbmRlcmVyT3B0aW9ucygpXG4gICAgKSk7XG4gICAgcmV0dXJuIGZvcm0uaW5zdGFuY2U7XG4gIH1cblxuICBzZXRGb3JtVXJsKHVybCkge1xuICAgIHRoaXMuZm9ybWlvLnNldFVybCh1cmwsIHRoaXMuZm9ybWlvT3B0aW9ucyB8fCB7fSk7XG4gIH1cblxuICBzZXRGb3JtKGZvcm06IEZvcm1pb0Zvcm0pIHtcbiAgICB0aGlzLmZvcm0gPSBmb3JtO1xuICAgIGlmICh0aGlzLmZvcm1pbykge1xuICAgICAgdGhpcy5mb3JtaW8uZGVzdHJveSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZvcm0udGl0bGUpIHtcbiAgICAgIHRoaXMubGFiZWwgPSB0aGlzLmZvcm0udGl0bGU7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZvcm0uY29tcG9uZW50cyAmJiB0aGlzLmZvcm0uY29tcG9uZW50c1swXSkge1xuICAgICAgdGhpcy5sYWJlbCA9IHRoaXMuZm9ybS5jb21wb25lbnRzWzBdLmxhYmVsO1xuICAgIH1cblxuICAgIC8vIENsZWFyIG91dCB0aGUgZWxlbWVudCB0byByZW5kZXIgdGhlIG5ldyBmb3JtLlxuICAgIGlmICh0aGlzLmZvcm1pb0VsZW1lbnQgJiYgdGhpcy5mb3JtaW9FbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuZm9ybWlvRWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuICAgIH1cbiAgICB0aGlzLmZvcm1pbyA9IHRoaXMuY3JlYXRlUmVuZGVyZXIoKTtcblxuICAgIGlmKCF0aGlzLmZvcm1pbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmZvcm1pby5zZXRTdWJtaXNzaW9uKHRoaXMuc3VibWlzc2lvbiwge1xuICAgICAgZnJvbVN1Ym1pc3Npb246IGZhbHNlXG4gICAgfSk7XG4gICAgaWYgKHRoaXMucmVuZGVyT3B0aW9ucyAmJiB0aGlzLnJlbmRlck9wdGlvbnMudmFsaWRhdGVPbkluaXQpIHtcbiAgICAgIHRoaXMuZm9ybWlvLnNldFZhbHVlKHRoaXMuc3VibWlzc2lvbiwge3ZhbGlkYXRlT25Jbml0OiB0cnVlfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnVybCkge1xuICAgICAgdGhpcy5zZXRGb3JtVXJsKHRoaXMudXJsKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3JjKSB7XG4gICAgICB0aGlzLnNldEZvcm1VcmwodGhpcy5zcmMpO1xuICAgIH1cbiAgICB0aGlzLmZvcm1pby5ub3N1Ym1pdCA9IHRydWU7XG4gICAgdGhpcy5hdHRhY2hGb3JtRXZlbnRzKCk7XG5cbiAgICByZXR1cm4gdGhpcy5mb3JtaW8ucmVhZHkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlYWR5LmVtaXQodGhpcyk7XG4gICAgICAgIHRoaXMuZm9ybWlvUmVhZHlSZXNvbHZlKHRoaXMuZm9ybWlvKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybWlvLnN1Ym1pc3Npb25SZWFkeSkge1xuICAgICAgICAgIHRoaXMuZm9ybWlvLnN1Ym1pc3Npb25SZWFkeS50aGVuKChzdWJtaXNzaW9uKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pc3Npb25Mb2FkLmVtaXQoc3VibWlzc2lvbik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWlvO1xuICAgIH0pO1xuICB9XG5cbiAgYXR0YWNoRm9ybUV2ZW50cygpIHtcbiAgICB0aGlzLmZvcm1pby5vbigncHJldlBhZ2UnLCAoZGF0YTogYW55KSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5vblByZXZQYWdlKGRhdGEpKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ25leHRQYWdlJywgKGRhdGE6IGFueSkgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMub25OZXh0UGFnZShkYXRhKSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdjaGFuZ2UnLCAodmFsdWU6IGFueSwgZmxhZ3M6IGFueSwgaXNNb2RpZmllZDogYm9vbGVhbikgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMub25DaGFuZ2UodmFsdWUsIGZsYWdzLCBpc01vZGlmaWVkKSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdyb3dBZGQnLCAoY29tcG9uZW50OiBhbnkpID0+ICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yb3dBZGQuZW1pdChjb21wb25lbnQpKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ3Jvd0FkZGVkJywgKGRhdGE6IGFueSwgY29tcG9uZW50OiBhbnkpID0+ICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yb3dBZGRlZC5lbWl0KHtjb21wb25lbnQsIHJvdzogZGF0YX0pKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ3Jvd0VkaXQnLCAoZGF0YTogYW55LCByb3dJbmRleDogbnVtYmVyLCBpbmRleDogbnVtYmVyLCBjb21wb25lbnQ6IGFueSkgPT4gIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLnJvd0VkaXQuZW1pdCh7Y29tcG9uZW50LCByb3c6IGRhdGEsIHJvd0luZGV4LCBpbmRleH0pKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ3Jvd0VkaXRlZCcsIChkYXRhOiBhbnksIHJvd0luZGV4OiBudW1iZXIsIGNvbXBvbmVudDogYW55KSA9PiAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMucm93RWRpdGVkLmVtaXQoe2NvbXBvbmVudCwgcm93OiBkYXRhLCByb3dJbmRleH0pKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ3Jvd0RlbGV0ZScsIChkYXRhOiBhbnksIHJvd0luZGV4OiBudW1iZXIsIGluZGV4OiBudW1iZXIsIGNvbXBvbmVudDogYW55KSA9PiAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMucm93RGVsZXRlLmVtaXQoe2NvbXBvbmVudCwgcm93OiBkYXRhLCByb3dJbmRleCwgaW5kZXh9KSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdyb3dDbGljaycsIChyb3c6IGFueSwgcm93SW5kZXg6IG51bWJlciwgaW5kZXg6IG51bWJlcixjb21wb25lbnQ6IGFueSkgPT4gIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLnJvd0NsaWNrLmVtaXQoe2NvbXBvbmVudCwgcm93LCByb3dJbmRleCwgaW5kZXh9KSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdyb3dTZWxlY3RDaGFuZ2UnLCAoc2VsZWN0ZWRSb3dzOiBhbnlbXSwgY29tcG9uZW50OiBhbnkpID0+ICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yb3dTZWxlY3RDaGFuZ2UuZW1pdCh7c2VsZWN0ZWRSb3dzLCBjb21wb25lbnR9KSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdwYWdlJywgKGN1cnJlbnRQYWdlOiBudW1iZXIsIGNvbXBvbmVudDogYW55KSA9PiAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMucGFnZS5lbWl0KHtjdXJyZW50UGFnZSwgY29tcG9uZW50fSkpKTtcbiAgICB0aGlzLmZvcm1pby5vbignY2hhbmdlSXRlbXNQZXJQYWdlJywgKGl0ZW1zUGVyUGFnZTpudW1iZXIpID0+ICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5jaGFuZ2VJdGVtc1BlclBhZ2UuZW1pdCh7aXRlbXNQZXJQYWdlfSkpKTtcbiAgICB0aGlzLmZvcm1pby5vbignY3VzdG9tRXZlbnQnLCAoZXZlbnQ6IGFueSkgPT5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmN1c3RvbUV2ZW50LmVtaXQoZXZlbnQpKVxuICAgICk7XG5cbiAgICBbJ2ZpbGVVcGxvYWRpbmdTdGFydCcsICdmaWxlVXBsb2FkaW5nRW5kJ10uZm9yRWFjaCgoZXZlbnROYW1lLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3Qgc3RhdHVzID0gISFpbmRleCA/ICdlbmQnIDogJ3N0YXJ0JztcbiAgICAgIHRoaXMuZm9ybWlvLm9uKGV2ZW50TmFtZSwgKCkgPT5cbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZmlsZVVwbG9hZGluZ1N0YXR1cy5lbWl0KHN0YXR1cykpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgdGhpcy5mb3JtaW8ub24oJ3N1Ym1pdCcsIChzdWJtaXNzaW9uOiBhbnksIHNhdmVkOiBib29sZWFuKSA9PlxuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuc3VibWl0Rm9ybShzdWJtaXNzaW9uLCBzYXZlZCkpXG4gICAgKTtcbiAgICB0aGlzLmZvcm1pby5vbignZXJyb3InLCAoZXJyOiBhbnkpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLnN1Ym1pc3Npb25TdWNjZXNzID0gZmFsc2U7XG4gICAgICByZXR1cm4gdGhpcy5vbkVycm9yKGVycik7XG4gICAgfSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdyZW5kZXInLCAoKSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yZW5kZXIuZW1pdCgpKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ2Zvcm1Mb2FkJywgKGxvYWRlZEZvcm06IGFueSkgPT5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmZvcm1Mb2FkLmVtaXQobG9hZGVkRm9ybSkpXG4gICAgKTtcbiAgfVxuXG4gIGluaXRpYWxpemUoKSB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBleHRyYVRhZ3MgPSB0aGlzLmN1c3RvbVRhZ3MgPyB0aGlzLmN1c3RvbVRhZ3MudGFncyA6IFtdO1xuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zOiBXZWJmb3JtWydvcHRpb25zJ10gJiBBbmd1bGFyRm9ybWlvT3B0aW9ucyA9IHtcbiAgICAgIGVycm9yczoge1xuICAgICAgICBtZXNzYWdlOiAnUGxlYXNlIGZpeCB0aGUgZm9sbG93aW5nIGVycm9ycyBiZWZvcmUgc3VibWl0dGluZy4nXG4gICAgICB9LFxuICAgICAgYWxlcnRzOiB7XG4gICAgICAgIHN1Ym1pdE1lc3NhZ2U6ICdTdWJtaXNzaW9uIENvbXBsZXRlLidcbiAgICAgIH0sXG4gICAgICBkaXNhYmxlQWxlcnRzOiBmYWxzZSxcbiAgICAgIGhvb2tzOiB7XG4gICAgICAgIGJlZm9yZVN1Ym1pdDogbnVsbFxuICAgICAgfSxcbiAgICAgIHNhbml0aXplQ29uZmlnOiB7XG4gICAgICAgIGFkZFRhZ3M6IGV4dHJhVGFnc1xuICAgICAgfSxcbiAgICAgIGFsZXJ0c1Bvc2l0aW9uOiBBbGVydHNQb3NpdGlvbi50b3AsXG4gICAgfTtcbiAgICB0aGlzLm9wdGlvbnMgPSBPYmplY3QuYXNzaWduKGRlZmF1bHRPcHRpb25zLCB0aGlzLm9wdGlvbnMpO1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZGlzYWJsZUFsZXJ0cykge1xuICAgICAgdGhpcy5vcHRpb25zLmFsZXJ0c1Bvc2l0aW9uID0gQWxlcnRzUG9zaXRpb24ubm9uZTtcbiAgICB9XG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBFdmFsdWF0b3Iubm9ldmFsID0gdGhpcy5ub2V2YWw7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG5cbiAgICBpZiAodGhpcy5sYW5ndWFnZSkge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLmxhbmd1YWdlID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLmZvcm1pby5sYW5ndWFnZSA9IHRoaXMubGFuZ3VhZ2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxhbmd1YWdlLnN1YnNjcmliZSgobGFuZzogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgdGhpcy5mb3JtaW8ubGFuZ3VhZ2UgPSBsYW5nO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZWZyZXNoKSB7XG4gICAgICB0aGlzLnJlZnJlc2guc3Vic2NyaWJlKChyZWZyZXNoOiBGb3JtaW9SZWZyZXNoVmFsdWUpID0+XG4gICAgICAgIHRoaXMub25SZWZyZXNoKHJlZnJlc2gpXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmVycm9yKSB7XG4gICAgICB0aGlzLmVycm9yLnN1YnNjcmliZSgoZXJyOiBhbnkpID0+IHRoaXMub25FcnJvcihlcnIpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdWNjZXNzKSB7XG4gICAgICB0aGlzLnN1Y2Nlc3Muc3Vic2NyaWJlKChtZXNzYWdlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5hbGVydHMuc2V0QWxlcnQoe1xuICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlIHx8IGdldCh0aGlzLm9wdGlvbnMsICdhbGVydHMuc3VibWl0TWVzc2FnZScpXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3VibWl0RG9uZSkge1xuICAgICAgdGhpcy5zdWJtaXREb25lLnN1YnNjcmliZSgoc3VibWlzc2lvbjogb2JqZWN0KSA9PiB7XG4gICAgICAgIHRoaXMuZm9ybWlvLmVtaXQoJ3N1Ym1pdERvbmUnLCBzdWJtaXNzaW9uKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNyYykge1xuICAgICAgaWYgKCF0aGlzLnNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5zZXJ2aWNlID0gbmV3IEZvcm1pb1NlcnZpY2UodGhpcy5zcmMpO1xuICAgICAgfVxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5zZXRGb3JtRnJvbVNyYygpO1xuICAgIH1cbiAgICBpZiAodGhpcy51cmwgJiYgIXRoaXMuc2VydmljZSkge1xuICAgICAgdGhpcy5zZXJ2aWNlID0gbmV3IEZvcm1pb1NlcnZpY2UodGhpcy51cmwpO1xuICAgIH1cbiAgfVxuXG4gIHNldEZvcm1Gcm9tU3JjKCkge1xuICAgIHRoaXMuc2VydmljZS5sb2FkRm9ybSh7IHBhcmFtczogeyBsaXZlOiAxIH0gfSkuc3Vic2NyaWJlKFxuICAgICAgKGZvcm06IEZvcm1pb0Zvcm0pID0+IHtcbiAgICAgICAgaWYgKGZvcm0gJiYgZm9ybS5jb21wb25lbnRzKSB7XG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRGb3JtKGZvcm0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaWYgYSBzdWJtaXNzaW9uIGlzIGFsc28gcHJvdmlkZWQuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBpc0VtcHR5KHRoaXMuc3VibWlzc2lvbikgJiZcbiAgICAgICAgICB0aGlzLnNlcnZpY2UgJiZcbiAgICAgICAgICB0aGlzLnNlcnZpY2UuZm9ybWlvLnN1Ym1pc3Npb25JZFxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLnNlcnZpY2UubG9hZFN1Ym1pc3Npb24oKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAoc3VibWlzc2lvbjogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtaW8ub3B0aW9ucy5yZWFkT25seSA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5zdWJtaXNzaW9uID0gdGhpcy5mb3JtaW8uc3VibWlzc2lvbiA9IHN1Ym1pc3Npb247XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyID0+IHRoaXMub25FcnJvcihlcnIpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVyciA9PiB0aGlzLm9uRXJyb3IoZXJyKVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5mb3JtaW8pIHtcbiAgICAgIHRoaXMuZm9ybWlvLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1cblxuICBvblJlZnJlc2gocmVmcmVzaDogRm9ybWlvUmVmcmVzaFZhbHVlKSB7XG4gICAgdGhpcy5mb3JtaW9SZWFkeS50aGVuKCgpID0+IHtcbiAgICAgIGlmIChyZWZyZXNoLmZvcm0pIHtcbiAgICAgICAgdGhpcy5mb3JtaW8uc2V0Rm9ybShyZWZyZXNoLmZvcm0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGlmIChyZWZyZXNoLnN1Ym1pc3Npb24pIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybWlvLnNldFN1Ym1pc3Npb24ocmVmcmVzaC5zdWJtaXNzaW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChyZWZyZXNoLnN1Ym1pc3Npb24pIHtcbiAgICAgICAgdGhpcy5mb3JtaW8uc2V0U3VibWlzc2lvbihyZWZyZXNoLnN1Ym1pc3Npb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3dpdGNoIChyZWZyZXNoLnByb3BlcnR5KSB7XG4gICAgICAgICAgY2FzZSAnc3VibWlzc2lvbic6XG4gICAgICAgICAgICB0aGlzLmZvcm1pby5zdWJtaXNzaW9uID0gcmVmcmVzaC52YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2Zvcm0nOlxuICAgICAgICAgICAgdGhpcy5mb3JtaW8uZm9ybSA9IHJlZnJlc2gudmFsdWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogYW55KSB7XG4gICAgRXZhbHVhdG9yLm5vZXZhbCA9IHRoaXMubm9ldmFsO1xuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuXG4gICAgaWYgKGNoYW5nZXMuZm9ybSAmJiBjaGFuZ2VzLmZvcm0uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0Rm9ybShjaGFuZ2VzLmZvcm0uY3VycmVudFZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuZm9ybWlvUmVhZHkudGhlbigoKSA9PiB7XG4gICAgICBpZiAoY2hhbmdlcy5zdWJtaXNzaW9uICYmIGNoYW5nZXMuc3VibWlzc2lvbi5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgdGhpcy5mb3JtaW8uc2V0U3VibWlzc2lvbihjaGFuZ2VzLnN1Ym1pc3Npb24uY3VycmVudFZhbHVlLCB7XG4gICAgICAgICAgZnJvbVN1Ym1pc3Npb246ICFjaGFuZ2VzLnN1Ym1pc3Npb24uZmlyc3RDaGFuZ2VcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFuZ2VzLmhpZGVDb21wb25lbnRzICYmIGNoYW5nZXMuaGlkZUNvbXBvbmVudHMuY3VycmVudFZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGhpZGRlbkNvbXBvbmVudHMgPSBjaGFuZ2VzLmhpZGVDb21wb25lbnRzLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgdGhpcy5mb3JtaW8ub3B0aW9ucy5oaWRlID0gaGlkZGVuQ29tcG9uZW50cztcbiAgICAgICAgdGhpcy5mb3JtaW8uZXZlcnlDb21wb25lbnQoKGNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgIGNvbXBvbmVudC5vcHRpb25zLmhpZGUgPSBoaWRkZW5Db21wb25lbnRzO1xuICAgICAgICAgIGlmIChoaWRkZW5Db21wb25lbnRzLmluY2x1ZGVzKGNvbXBvbmVudC5jb21wb25lbnQua2V5KSkge1xuICAgICAgICAgICAgY29tcG9uZW50LnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25QcmV2UGFnZShkYXRhOiBhbnkpIHtcbiAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydHMoW10pO1xuICAgIHRoaXMucHJldlBhZ2UuZW1pdChkYXRhKTtcbiAgfVxuXG4gIG9uTmV4dFBhZ2UoZGF0YTogYW55KSB7XG4gICAgdGhpcy5hbGVydHMuc2V0QWxlcnRzKFtdKTtcbiAgICB0aGlzLm5leHRQYWdlLmVtaXQoZGF0YSk7XG4gIH1cblxuICBvblN1Ym1pdChzdWJtaXNzaW9uOiBhbnksIHNhdmVkOiBib29sZWFuLCBub2VtaXQ/OiBib29sZWFuKSB7XG4gICAgdGhpcy5zdWJtaXR0aW5nID0gZmFsc2U7XG4gICAgdGhpcy5zdWJtaXNzaW9uU3VjY2VzcyA9IHRydWU7XG5cbiAgICB0aGlzLmZvcm1pby5zZXRWYWx1ZShmYXN0Q2xvbmVEZWVwKHN1Ym1pc3Npb24pLCB7XG4gICAgICBub1ZhbGlkYXRlOiB0cnVlLFxuICAgICAgbm9DaGVjazogdHJ1ZVxuICAgIH0pO1xuXG4gICAgaWYgKHNhdmVkKSB7XG4gICAgICB0aGlzLmZvcm1pby5lbWl0KCdzdWJtaXREb25lJywgc3VibWlzc2lvbik7XG4gICAgfVxuICAgIGlmICghbm9lbWl0KSB7XG4gICAgICB0aGlzLnN1Ym1pdC5lbWl0KHN1Ym1pc3Npb24pO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuc3VjY2Vzcykge1xuICAgICAgdGhpcy5hbGVydHMuc2V0QWxlcnQoe1xuICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgIG1lc3NhZ2U6IGdldCh0aGlzLm9wdGlvbnMsICdhbGVydHMuc3VibWl0TWVzc2FnZScpXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvbkVycm9yKGVycjogYW55KSB7XG4gICAgdGhpcy5hbGVydHMuc2V0QWxlcnRzKFtdKTtcbiAgICB0aGlzLnN1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgaWYgKCFlcnIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBNYWtlIHN1cmUgaXQgaXMgYW4gYXJyYXkuXG4gICAgY29uc3QgZXJyb3JzID0gQXJyYXkuaXNBcnJheShlcnIpID8gZXJyIDogW2Vycl07XG5cbiAgICAvLyBFbWl0IHRoZXNlIGVycm9ycyBhZ2Fpbi5cbiAgICB0aGlzLmVycm9yQ2hhbmdlLmVtaXQoZXJyb3JzKTtcblxuICAgIGlmIChlcnIuc2lsZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9ybWlvICYmIGVycm9ycy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZm9ybWlvLmVtaXQoJ3N1Ym1pdEVycm9yJywgZXJyb3JzKTtcbiAgICB9XG5cbiAgICAvLyBJdGVyYXRlIHRocm91Z2ggZWFjaCBvbmUgYW5kIHNldCB0aGUgYWxlcnRzIGFycmF5LlxuICAgIGVycm9ycy5mb3JFYWNoKChlcnJvcjogYW55KSA9PiB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIHBhdGhzLFxuICAgICAgfSA9IGVycm9yXG4gICAgICAgID8gZXJyb3IuZGV0YWlsc1xuICAgICAgICAgID8ge1xuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3IuZGV0YWlscy5tYXAoKGRldGFpbCkgPT4gZGV0YWlsLm1lc3NhZ2UpLFxuICAgICAgICAgICAgcGF0aHM6IGVycm9yLmRldGFpbHMubWFwKChkZXRhaWwpID0+IGRldGFpbC5wYXRoKSxcbiAgICAgICAgICB9XG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvci5tZXNzYWdlIHx8IGVycm9yLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBwYXRoczogKGVycm9yLnBhdGggfHwgZXJyb3IuZm9ybWF0dGVkS2V5T3JQYXRoKSA/IFtlcnJvci5wYXRoIHx8IGVycm9yLmZvcm1hdHRlZEtleU9yUGF0aF0gOiBbXSxcbiAgICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgIHBhdGhzOiBbXSxcbiAgICAgICAgfTtcblxuICAgICAgbGV0IHNob3VsZEVycm9yRGlzcGxheSA9IHRydWU7XG5cbiAgICAgIGlmICh0aGlzLmZvcm1pbykge1xuICAgICAgICBwYXRocy5mb3JFYWNoKChwYXRoLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuZm9ybWlvLmdldENvbXBvbmVudChwYXRoKTtcbiAgICAgICAgICBpZiAoY29tcG9uZW50KSB7XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnRzID0gQXJyYXkuaXNBcnJheShjb21wb25lbnQpID8gY29tcG9uZW50IDogW2NvbXBvbmVudF07XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlVGV4dCA9IEFycmF5LmlzQXJyYXkobWVzc2FnZSkgPyBtZXNzYWdlW2luZGV4XSA6IG1lc3NhZ2U7XG4gICAgICAgICAgICBjb21wb25lbnRzLmZvckVhY2goKGNvbXApID0+IGNvbXAuc2V0Q3VzdG9tVmFsaWRpdHkobWVzc2FnZVRleHQsIHRydWUpKTtcbiAgICAgICAgICAgIHRoaXMuYWxlcnRzLmFkZEFsZXJ0KHtcbiAgICAgICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IEFycmF5LmlzQXJyYXkobWVzc2FnZSkgPyBtZXNzYWdlW2luZGV4XSA6IG1lc3NhZ2UsXG4gICAgICAgICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2hvdWxkRXJyb3JEaXNwbGF5ID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLlZQQVRfRU5BQkxFRCkge1xuICAgICAgICAgIGlmICh0eXBlb2YgZXJyb3IgPT09J3N0cmluZycgJiYgdGhpcy5mb3JtaW8uY29tcG9uZW50cykge1xuICAgICAgICAgICAgdGhpcy5mb3JtaW8uY29tcG9uZW50cy5mb3JFYWNoKChjb21wKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChjb21wICYmIGNvbXAudHlwZSAhPT0gJ2J1dHRvbicpIHtcbiAgICAgICAgICAgICAgICBjb21wLnNldEN1c3RvbVZhbGlkaXR5KG1lc3NhZ2UsIHRydWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHNob3VsZEVycm9yRGlzcGxheSkge1xuICAgICAgICB0aGlzLmFsZXJ0cy5hZGRBbGVydCh7XG4gICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICBjb21wb25lbnQ6IGVycm9yLmNvbXBvbmVudCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5mb3JtaW8gJiYgIXRoaXMubm9BbGVydHMpIHtcbiAgICAgIHRoaXMuZm9ybWlvLnNob3dFcnJvcnMoZXJyb3JzKTtcbiAgICB9XG4gIH1cblxuICBmb2N1c09uQ29tcG9uZXQoa2V5OiBhbnkpIHtcbiAgICBpZiAodGhpcy5mb3JtaW8pIHtcbiAgICAgIHRoaXMuZm9ybWlvLmZvY3VzT25Db21wb25lbnQoa2V5KTtcbiAgICB9XG4gIH1cblxuICBzdWJtaXRFeGVjdXRlKHN1Ym1pc3Npb246IG9iamVjdCwgc2F2ZWQgPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLnNlcnZpY2UgJiYgIXRoaXMudXJsICYmICFzYXZlZCkge1xuICAgICAgdGhpcy5zZXJ2aWNlXG4gICAgICAgIC5zYXZlU3VibWlzc2lvbihzdWJtaXNzaW9uKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIChzdWI6IHt9KSA9PiB0aGlzLm9uU3VibWl0KHN1YiwgdHJ1ZSksXG4gICAgICAgICAgZXJyID0+IHRoaXMub25FcnJvcihlcnIpXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub25TdWJtaXQoc3VibWlzc2lvbiwgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHN1Ym1pdEZvcm0oc3VibWlzc2lvbjogYW55LCBzYXZlZCA9IGZhbHNlKSB7XG4gICAgLy8gS2VlcCBkb3VibGUgc3VibWl0cyBmcm9tIG9jY3VycmluZy4uLlxuICAgIGlmICh0aGlzLnN1Ym1pdHRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5mb3JtaW8uc2V0TWV0YWRhdGEoc3VibWlzc2lvbik7XG4gICAgdGhpcy5zdWJtaXNzaW9uU3VjY2VzcyA9IGZhbHNlO1xuICAgIHRoaXMuc3VibWl0dGluZyA9IHRydWU7XG4gICAgdGhpcy5iZWZvcmVTdWJtaXQuZW1pdChzdWJtaXNzaW9uKTtcblxuICAgIC8vIGlmIHRoZXkgcHJvdmlkZSBhIGJlZm9yZVN1Ym1pdCBob29rLCB0aGVuIGFsbG93IHRoZW0gdG8gYWx0ZXIgdGhlIHN1Ym1pc3Npb24gYXN5bmNocm9ub3VzbHlcbiAgICAvLyBvciBldmVuIHByb3ZpZGUgYSBjdXN0b20gRXJyb3IgbWV0aG9kLlxuICAgIGNvbnN0IGJlZm9yZVN1Ym1pdCA9IGdldCh0aGlzLm9wdGlvbnMsICdob29rcy5iZWZvcmVTdWJtaXQnKTtcbiAgICBpZiAoYmVmb3JlU3VibWl0KSB7XG4gICAgICBiZWZvcmVTdWJtaXQoc3VibWlzc2lvbiwgKGVycjogRm9ybWlvRXJyb3IsIHN1Yjogb2JqZWN0KSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICB0aGlzLm9uRXJyb3IoZXJyKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdWJtaXRFeGVjdXRlKHN1Yiwgc2F2ZWQpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3VibWl0RXhlY3V0ZShzdWJtaXNzaW9uLCBzYXZlZCk7XG4gICAgfVxuICB9XG5cbiAgb25DaGFuZ2UodmFsdWU6IGFueSwgZmxhZ3M6IGFueSwgaXNNb2RpZmllZDogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLndhdGNoU3VibWlzc2lvbkVycm9ycyAmJiAhdGhpcy5zdWJtaXNzaW9uU3VjY2Vzcykge1xuICAgICAgY29uc3QgZXJyb3JzID0gZ2V0KHRoaXMsICdmb3JtaW8uZXJyb3JzJywgW10pO1xuICAgICAgY29uc3QgYWxlcnRzID0gZ2V0KHRoaXMsICdhbGVydHMuYWxlcnRzJywgW10pO1xuICAgICAgY29uc3Qgc3VibWl0dGVkID0gZ2V0KHRoaXMsICdmb3JtaW8uc3VibWl0dGVkJywgZmFsc2UpO1xuICAgICAgaWYgKHN1Ym1pdHRlZCAmJiAoZXJyb3JzLmxlbmd0aCB8fCBhbGVydHMubGVuZ3RoKSkge1xuICAgICAgICB0aGlzLm9uRXJyb3IoZXJyb3JzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2hhbmdlLmVtaXQoey4uLnZhbHVlLCBmbGFncywgaXNNb2RpZmllZH0pO1xuICB9XG59XG4iXX0=