ets-fe-ng-sdk 18.0.77 → 18.0.80

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.
@@ -67,7 +67,7 @@ export class UtilityService {
67
67
  this.formBuilder = new FormBuilder().nonNullable;
68
68
  this.formControl = (value, validatorOrOpts, asyncValidator) => [value, validatorOrOpts, asyncValidator];
69
69
  this.back = () => this.location.back();
70
- this.toast = this.toastNotificationService.toastShortcut();
70
+ this.toast = this.toastNotificationService?.toastShortcut?.();
71
71
  this.xOrY = (x, y = '-') => `${x == null ? y : x}`;
72
72
  /**
73
73
  * Convert Date string to Date Time string
@@ -849,4 +849,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
849
849
  type: Injectable,
850
850
  args: [{ providedIn: 'root' }]
851
851
  }], ctorParameters: () => [] });
852
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDTCxTQUFTLElBQUksU0FBUyxHQUV2QixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxXQUFXLElBQUksV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQW9CLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNFLE9BQU8sRUFBRSwyQkFBMkIsSUFBSSxHQUFHLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRSxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQztBQUNuQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQXNDLE1BQU0sOEJBQThCLENBQUM7QUFDbkcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBSUwsV0FBVyxFQUNYLFdB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WUFDNUIsTUFBTSxFQUFFLFVBQVUsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNO1lBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLElBQUksU0FBUztTQUM3RCxDQUFDLENBQUM7UUFDSCxPQUFPLENBQ0wsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3pELENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN2RixHQUFHLENBQ0osQ0FBQztJQUNKLENBQUM7OEdBL3dCVSxjQUFjO2tIQUFkLGNBQWMsY0FERCxNQUFNOzsyRkFDbkIsY0FBYztrQkFEMUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJyZW5jeVBpcGUsIERhdGVQaXBlLCBEZWNpbWFsUGlwZSwgTG9jYXRpb24sIFRpdGxlQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBNYXREaWFsb2cgYXMgTWF0RGlhbG9nLFxuICBNYXREaWFsb2dDb25maWcgYXMgTWF0RGlhbG9nQ29uZmlnLFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgYXMgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFJvdXRlciwgTmF2aWdhdGlvbkV4dHJhcywgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRVRTUmVhY3RpdmVGb3JtSW5wdXRTZXJ2aWNlIGFzIElTMSB9IGZyb20gJy4vaW5wdXQuc2VydmljZSc7XG5pbXBvcnQgamZkIGZyb20gJ2pzLWZpbGUtZG93bmxvYWQnO1xuaW1wb3J0IHsgUGFnZUxvYWRlclNlcnZpY2UgfSBmcm9tICcuL3BhZ2UtbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlnLCBDb25maWcgYXMgY29uZmlnIH0gZnJvbSAnLi4vY29uZmlncy9pbmRleC5jb25maWcnO1xuaW1wb3J0IHsgQXBwUm91dGVCYXNlIH0gZnJvbSAnLi4vU2hhcmVkL21vZGVscy9Sb3V0ZUl0ZW0uY2xhc3MnO1xuaW1wb3J0IHsgc2F2ZUFzIH0gZnJvbSAnZmlsZS1zYXZlcic7XG5pbXBvcnQgeyBFVmFsaWRhdGlvblR5cGUsIElTdHJpY3RGb3JtR3JvdXAsIFN0YXR1cywgVGFibGVDb2wgfSBmcm9tICcuLi9TaGFyZWQvbW9kZWxzL2luZGV4Lm1vZGVsJztcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IFBhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9wYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBBc3luY1ZhbGlkYXRvckZuLFxuICBGb3JtQXJyYXksXG4gIEZvcm1CdWlsZGVyLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xPcHRpb25zLFxuICBGb3JtR3JvdXAsXG4gIFVudHlwZWRGb3JtQXJyYXksXG4gIFZhbGlkYXRvckZuLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vUmV1c2FibGVzL3JldXNhYmxlLXBhZ2VzL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtcbiAgaXNPYnNlcnZhYmxlLFxuICBsYXN0VmFsdWVGcm9tLFxuICBtZXJnZSxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIFJlcGxheVN1YmplY3QsXG4gIFN1YnNjcmlwdGlvbixcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFRVRTUGFnZUJ0bklEIH0gZnJvbSAnLi4vU2hhcmVkL21vZGVscy9JTWVudUl0ZW0nO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTREtFbnZpcm9ubWVudCB9IGZyb20gJy4uL1NoYXJlZC9tb2RlbHMvZW52aXJvbm1lbnQubW9kZWwnO1xuaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyLCBCcmVha3BvaW50cyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgRGVib3VuY2VyU2VydmljZSB9IGZyb20gJy4vZGVib3VuY2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSUZvcm1TY2hlbWEgfSBmcm9tICcuLi9TaGFyZWQvY29tcG9uZW50cy9mb3JtLWdlbmVyYXRvci9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQnO1xuaW1wb3J0IFBhcGEgZnJvbSAncGFwYXBhcnNlJztcbmltcG9ydCB7IElJbmZvRGlhbG9nQnRuIH0gZnJvbSAnLi4vU2hhcmVkL2NvbXBvbmVudHMvaW5mby1kaWFsb2cvaW5mby1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRVZGdW5jdGlvbnMgfSBmcm9tICcuLi9jb25maWdzL2Jhc2UtZnVuY3Rpb25zJztcbmltcG9ydCB7IFRvYXN0Tm90aWZpY2F0aW9uc1NlcnZpY2UgfSBmcm9tICdAc2VyZW5lLWRldi90b2FzdC1ub3RpZmljYXRpb25zJztcbmRlY2xhcmUgY29uc3QgJDogYW55O1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFV0aWxpdHlTZXJ2aWNlPFRFbnZpcm9ubWVudCBleHRlbmRzIFNES0Vudmlyb25tZW50ID0gU0RLRW52aXJvbm1lbnQ+IHtcbiAgcHVibGljIGRpYWxvZyA9IGluamVjdChNYXREaWFsb2cpO1xuICBwdWJsaWMgc25hY2tCYXIgPSBpbmplY3QoTWF0U25hY2tCYXIpO1xuICBwdWJsaWMgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHB1YmxpYyB0aXRsZVMgPSBpbmplY3QoVGl0bGUpO1xuICBwdWJsaWMgbG9jYXRpb24gPSBpbmplY3QoTG9jYXRpb24pO1xuICBwdWJsaWMgaW5wdXRTZXJ2aWNlID0gaW5qZWN0KElTMSk7XG4gIHB1YmxpYyBwUyA9IGluamVjdChQYWdlTG9hZGVyU2VydmljZSk7XG4gIHB1YmxpYyBjdXJyZW5jeVBpcGUgPSBpbmplY3QoQ3VycmVuY3lQaXBlKTtcbiAgcHVibGljIHRpdGxlQ2FzZVBpcGUgPSBpbmplY3QoVGl0bGVDYXNlUGlwZSk7XG4gIHB1YmxpYyBsb2dnZXJTZXJ2aWNlID0gaW5qZWN0KExvZ2dlclNlcnZpY2UpO1xuICBwdWJsaWMgcGFnZVMgPSBpbmplY3QoUGFnZVNlcnZpY2UpO1xuICBwdWJsaWMgcmVzcG9uc2l2ZSA9IGluamVjdChCcmVha3BvaW50T2JzZXJ2ZXIpO1xuICBwdWJsaWMgZGF0ZVBpcGUgPSBpbmplY3QoRGF0ZVBpcGUpO1xuICBwdWJsaWMgZGVib3VuY2VyU2VydmljZSA9IGluamVjdChEZWJvdW5jZXJTZXJ2aWNlKTtcbiAgcHVibGljIG51bWJlclBpcGUgPSBpbmplY3QoRGVjaW1hbFBpcGUpO1xuICBwdWJsaWMgdG9hc3ROb3RpZmljYXRpb25TZXJ2aWNlID0gaW5qZWN0KFRvYXN0Tm90aWZpY2F0aW9uc1NlcnZpY2UpO1xuICByOiBBcHBSb3V0ZUJhc2U7XG4gIGRvd25sb2FkZXIgPSBqZmQ7XG4gIGVWYWxpZGF0aW9uVHlwZSA9IEVWYWxpZGF0aW9uVHlwZTtcbiAgY29uZmlnID0gQ29uZmlnO1xuICBlbnZpcm9ubWVudDogVEVudmlyb25tZW50ID0gZW52aXJvbm1lbnQgYXMgYW55O1xuICBwYmlkID0gRUVUU1BhZ2VCdG5JRDtcbiAgJDogYW55O1xuICBpc01vYmlsZTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEVtaXRzIHRydWUgaWYgbW9iaWxlXG4gICAqL1xuICBtb2JpbGVRdWVyeUNoYW5nZWQgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigpO1xuICByZWFkb25seSBpc01vYmlsZVNpZ25hbCA9IHRvU2lnbmFsPGJvb2xlYW4+KFxuICAgIHRoaXMucmVzcG9uc2l2ZS5vYnNlcnZlKFtCcmVha3BvaW50cy5IYW5kc2V0XSkucGlwZShcbiAgICAgIG1hcCgoeyBtYXRjaGVzIH0pID0+IG1hdGNoZXMpLFxuICAgICAgdGFwKChyKSA9PiB7XG4gICAgICAgIHRoaXMuaXNNb2JpbGUgPSByO1xuICAgICAgICB0aGlzLm1vYmlsZVF1ZXJ5Q2hhbmdlZC5uZXh0KHIpO1xuICAgICAgfSksXG4gICAgKSxcbiAgKTtcbiAgcmVhZG9ubHkgaXNUYWJsZXRTaWduYWwgPSB0b1NpZ25hbDxib29sZWFuPihcbiAgICB0aGlzLnJlc3BvbnNpdmUub2JzZXJ2ZShbQnJlYWtwb2ludHMuVGFibGV0XSkucGlwZShtYXAoKHsgbWF0Y2hlcyB9KSA9PiBtYXRjaGVzKSksXG4gICk7XG4gIHJlYWRvbmx5IGlzRGVza3RvcFNpZ25hbCA9IHRvU2lnbmFsPGJvb2xlYW4+KFxuICAgIHRoaXMucmVzcG9uc2l2ZS5vYnNlcnZlKFtCcmVha3BvaW50cy5XZWJMYW5kc2NhcGVdKS5waXBlKG1hcCgoeyBtYXRjaGVzIH0pID0+IG1hdGNoZXMpKSxcbiAgKTtcblxuICBwYWdlU2l6ZU9wdGlvbnMgPSBbNSwgMTAsIDE1LCAyMCwgNTAsIDEwMCwgMjAwLCA1MDAsIDEwMDBdO1xuICBkYXRlUGlwZURhdGUgPSAnRUUsIE1NTU0gZCwgeSc7XG4gIGRhdGVQaXBlRGF0ZUxlYW4gPSAnRUUsIE1NTSBkLCB5JztcbiAgZGF0ZVBpcGVEYXRlVGltZUxlYW4gPSAnRUUsIE1NTSBkLCB5IGhoOm1tIGEnO1xuICByZWFkb25seSBjdXN0b21JREZpZWxkID0gJ19faWQnO1xuICByZWFkb25seSBkZWxpbWl0ZXIgPSBgfn5+Ly9+fn5gO1xuICBmb3JtQnVpbGRlciA9IG5ldyBGb3JtQnVpbGRlcigpLm5vbk51bGxhYmxlO1xuICBjb25zdHJ1Y3RvcigpIHt9XG4gIGZvcm1Db250cm9sID0gPFQ+KFxuICAgIHZhbHVlPzogVCB8IG51bGwsXG4gICAgdmFsaWRhdG9yT3JPcHRzPzogVmFsaWRhdG9yRm4gfCBWYWxpZGF0b3JGbltdIHwgRm9ybUNvbnRyb2xPcHRpb25zLFxuICAgIGFzeW5jVmFsaWRhdG9yPzogQXN5bmNWYWxpZGF0b3JGbiB8IEFzeW5jVmFsaWRhdG9yRm5bXSxcbiAgKSA9PiBbdmFsdWUgYXMgYW55IGFzIFQsIHZhbGlkYXRvck9yT3B0cyEsIGFzeW5jVmFsaWRhdG9yIV07XG5cbiAgYmFjayA9ICgpID0+IHRoaXMubG9jYXRpb24uYmFjaygpO1xuXG4gIHJlYWRvbmx5IHRvYXN0ID0gdGhpcy50b2FzdE5vdGlmaWNhdGlvblNlcnZpY2UudG9hc3RTaG9ydGN1dCgpO1xuXG4gIG9ubHlPbmVJbnB1dChpbnB1dHM6IEZvcm1Db250cm9sW10pIHtcbiAgICBjb25zdCBuSW5wdXRzID0gaW5wdXRzPy5tYXAoKGlucCkgPT4gKHsgaWQ6IHRoaXMuZ2VuUmFuZG9tSUQsIGlucCB9KSkgfHwgW107XG4gICAgcmV0dXJuIG1lcmdlKFxuICAgICAgLi4ubklucHV0cy5tYXAoKGkpID0+IGkuaW5wLnZhbHVlQ2hhbmdlcy5waXBlKG1hcCgodmFsKSA9PiAoeyBpZDogaS5pZCwgdmFsIH0pKSkpLFxuICAgICkuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAvLyBkZWJ1Z2dlclxuICAgICAgaWYgKHIudmFsKVxuICAgICAgICBuSW5wdXRzLmZpbHRlcigoeCkgPT4geC5pZCAhPSByLmlkKS5mb3JFYWNoKCh4KSA9PiB4LmlucC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KSk7XG4gICAgICBlbHNlIG5JbnB1dHMuZmlsdGVyKCh4KSA9PiB4LmlkICE9IHIuaWQpLmZvckVhY2goKHgpID0+IHguaW5wLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSkpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgY29weVBheWxvYWQocGF5bG9hZCkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoKDxTREtFbnZpcm9ubWVudD50aGlzLmVudmlyb25tZW50KS5kZWJ1Zykge1xuICAgICAgICBjb25zdCBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcbiAgICAgICAgZWxlbS52YWx1ZSA9IEpTT04uc3RyaW5naWZ5KHBheWxvYWQpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW0pO1xuICAgICAgICBlbGVtLnNlbGVjdCgpO1xuICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZW0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxuICB9XG4gIHhPclkgPSAoeCwgeSA9ICctJykgPT4gYCR7eCA9PSBudWxsID8geSA6IHh9YDtcbiAgdG9UaXRsZUNhc2UodGV4dDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMudGl0bGVDYXNlUGlwZS50cmFuc2Zvcm0odGV4dCk7XG4gIH1cbiAgLyoqXG4gICAqIENvbnZlcnQgRGF0ZSBzdHJpbmcgdG8gRGF0ZSBUaW1lIHN0cmluZ1xuICAgKiBAcGFyYW0gZGF0ZVN0ciBEYXRlIHN0cmluZ1xuICAgKiBAZXhhbXBsZSAnMjAyMi0wMS0yNSdcbiAgICogQHBhcmFtIGNvbmZpZyBDb25maWd1cmF0aW9uIGZvciB0aGUgY29udmVyc2lvblxuICAgKiBAcmV0dXJucyBSZXR1cm5zIGEgRGF0ZSBUaW1lIHN0cmluZ1xuICAgKiBAZXhhbXBsZSAnMjAyMi0wMS0yNVQwMDowMDowMFonIG9yICcyMDIyLTAxLTI1IDAwOjAwOjAwJ1xuICAgKi9cbiAgZGF0ZVRvRGF0ZVRpbWUgPSAoXG4gICAgZGF0ZVN0cjogc3RyaW5nLFxuICAgIGNvbmZpZz86IHtcbiAgICAgIC8qKlxuICAgICAgICogVXNlIHRoZSB5eXl5LW1tLWRkIGhoOm1tOnNzIGZvcm1hdFxuICAgICAgICovXG4gICAgICBvbWl0VD86IGJvb2xlYW47XG4gICAgICAvKipUaW1lIHRvIGFwcGVuZCB0byBkYXRlLiBAZXhhbXBsZSBgMTI6MDA6MDBaYCAqL1xuICAgICAgdGltZT86IHN0cmluZztcbiAgICB9LFxuICApID0+IHtcbiAgICByZXR1cm4gIWRhdGVTdHJcbiAgICAgID8gbnVsbFxuICAgICAgOiBkYXRlU3RyWzEwXSA9PSAnVCdcbiAgICAgICAgPyBkYXRlU3RyXG4gICAgICAgIDogZGF0ZVN0ciArXG4gICAgICAgICAgKCEhY29uZmlnPy5vbWl0VCA/IGAgJHtjb25maWc/LnRpbWUgfHwgJzAwOjAwOjAwJ31gIDogYFQke2NvbmZpZz8udGltZSB8fCAnMDA6MDA6MDBaJ31gKTtcbiAgfTtcblxuICAvKipcbiAgICogU2V0IGFuIE9iamVjdCdzIGZpZWxkIGlmIHRoZSBvYmplY3QgZXhpc3RzIG9yIGRvbid0IGlmIHRoZSBvYmplY3QgZG9lc24ndFxuICAgKiBAcGFyYW0gb2JqIE9iamVjdCBob2xkaW5nIHRoZSBmaWVsZFxuICAgKiBAcGFyYW0gZmllbGROYW1lIE5hbWUgb2YgdGhlIGZpZWxkIHRvIHNldFxuICAgKiBAcGFyYW0gdmFsIFZhbHVlIHRvIHNldCB0aGUgZmllbGQgd2l0aFxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBvYmplY3QgaG9sZGluZyB0aGUgZGF0YVxuICAgKi9cbiAgc2V0dGVyV2l0aE51bGw8VD4ob2JqOiBULCBrdnBzOiBQYXJ0aWFsPFQ+KSB7XG4gICAgaWYgKCFvYmopIHJldHVybiBudWxsO1xuICAgIGZvciAoY29uc3Qga2V5IGluIGt2cHMpIHtcbiAgICAgIG9ialtrZXldID0ga3Zwc1trZXldO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgLyoqXG4gICAqIChTZXQgYW4gT2JqZWN0J3MgZmllbGQgaWYgdGhlIG9iamVjdCBleGlzdHMgb3IgZG9uJ3QgaWYgdGhlIG9iamVjdCBkb2Vzbid0KSBmb3IgbXVsdGlwbGUgZW50cmllc1xuICAgKiBAcGFyYW0gaXRlbXMgQXJyYXkgb2Ygb2JqZWN0cyBhbmQgdGhlaXIgbW9kaWZpY2F0aW9uc1xuICAgKi9cbiAgc2V0dGVyV2l0aE51bGxBcnJheTxUPihpdGVtczogeyBvYmo6IFQ7IGt2cHM6IFBhcnRpYWw8VD4gfVtdKSB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICB0aGlzLnNldHRlcldpdGhOdWxsKGl0ZW0ub2JqLCBpdGVtLmt2cHMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBkZWxldGlvbiBvZiByb3dzIGZyb20gYSBGb3JtQXJyYXlcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IG9mIHRoZSByb3cgdG8gZGVsZXRlXG4gICAqIEBwYXJhbSBmYSBUaGUgRm9ybUFycmF5IHRoYXQgaG9sZHMgdGhlIHJvd3NcbiAgICogQHBhcmFtIGRlbGV0ZVNlcnZpY2UgVGhlIGRlbGV0aW9uIHNlcnZpY2UgdG8gYmUgY2FsbGVkIChJdCBzaG91bGQgYmUgYW4gYW5vbnltb3VzIGZ1bmN0aW9uKVxuICAgKiBAcGFyYW0gYWRkUm93RnVuYyBUaGUgZnVuY3Rpb24gKGFub255bW91cykgdGhhdCBhZGRzIGEgbmV3IHJvdyB0byB0aGUgRm9ybUFycmF5XG4gICAqIEBwYXJhbSBlbWl0RXZlbnQgU3BlY2lmeSB3aGV0aGVyIHRvIGVtaXQgYW4gZXZlbnQgd2hlbiBtYW5pcHVsYXRpbmcgdGhlIEZvcm1BcnJheVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgaGFuZGxlRm9ybVJvd0RlbGV0ZSA9IChcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGZhOiBVbnR5cGVkRm9ybUFycmF5LFxuICAgIGRlbGV0ZVNlcnZpY2U6ICguLi5hcmdzKSA9PiBQcm9taXNlPGFueT4gfCBPYnNlcnZhYmxlPGFueT4sXG4gICAgYWRkUm93RnVuYzogKC4uLmFyZ3MpID0+IGFueSxcbiAgICBleHRyYUNvbmZpZz86IHtcbiAgICAgIGRvbnRFbWl0RXZlbnQ/OiBib29sZWFuO1xuICAgICAgb25EZWxldGU/OiAocmVzKSA9PiBhbnk7XG4gICAgfSxcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPGFueT4oKHJlc29sdmUpID0+IHtcbiAgICAgIGNvbnN0IGlkID0gY2xvbmVEZWVwKGZhLmNvbnRyb2xzW2luZGV4XT8udmFsdWU/LmlkKTtcbiAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgaWYgKGZhLmNvbnRyb2xzLmxlbmd0aCA9PSAxICYmIGlkKSB7XG4gICAgICAgIGZhLnJlbW92ZUF0KGluZGV4LCB7IGVtaXRFdmVudDogIWV4dHJhQ29uZmlnPy5kb250RW1pdEV2ZW50IH0pO1xuICAgICAgICBhZGRSb3dGdW5jKCk7XG4gICAgICB9IGVsc2UgaWYgKGZhLmNvbnRyb2xzLmxlbmd0aCA+IDEpXG4gICAgICAgIGZhLnJlbW92ZUF0KGluZGV4LCB7IGVtaXRFdmVudDogIWV4dHJhQ29uZmlnPy5kb250RW1pdEV2ZW50IH0pO1xuICAgICAgZWxzZSBpZiAoZmEuY29udHJvbHMubGVuZ3RoID09IDEpIGZhLmNvbnRyb2xzWzBdLnJlc2V0KCk7XG5cbiAgICAgIGlmIChpZCAmJiBkZWxldGVTZXJ2aWNlKSB7XG4gICAgICAgIGNvbnN0IHJlcSA9IGRlbGV0ZVNlcnZpY2UoaWQpO1xuICAgICAgICBpZiAocmVxWyd0b1Byb21pc2UnXSkge1xuICAgICAgICAgIHJlc29sdmUobGFzdFZhbHVlRnJvbShyZXEgYXMgT2JzZXJ2YWJsZTxhbnk+KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZShyZXEgYXMgYW55KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgIH1cbiAgICB9KS50aGVuKChyKSA9PiB7XG4gICAgICBleHRyYUNvbmZpZz8ub25EZWxldGUocik7XG4gICAgICByZXR1cm4gcjtcbiAgICB9KTtcbiAgfTtcblxuICBvcGVuSFRNTEluRnVsbHNjcmVlbjxUTWV0YWRhdGE+KFxuICAgIGVsZW06IEhUTUxFbGVtZW50LFxuICAgIG1ldGFkYXRhPzogVE1ldGFkYXRhLFxuICAgIG9uTGVhdmU/OiAobWV0YWRhdGE6IFRNZXRhZGF0YSkgPT4gYW55LFxuICApIHtcbiAgICBpZiAoZWxlbS5yZXF1ZXN0RnVsbHNjcmVlbikge1xuICAgICAgZWxlbS5vbmZ1bGxzY3JlZW5jaGFuZ2UgPSAoZSkgPT4ge1xuICAgICAgICBpZiAob25MZWF2ZSlcbiAgICAgICAgICBlbGVtLm9uZnVsbHNjcmVlbmNoYW5nZSA9IChlKSA9PiB7XG4gICAgICAgICAgICAvLyAgZGVidWdnZXI7XG4gICAgICAgICAgICBvbkxlYXZlKG1ldGFkYXRhKTtcbiAgICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGVsZW0ucmVxdWVzdEZ1bGxzY3JlZW4oKTtcbiAgICB9IGVsc2UgaWYgKGVsZW1bJ3dlYmtpdFJlcXVlc3RGdWxsc2NyZWVuJ10pIHtcbiAgICAgIC8qIFNhZmFyaSAqL1xuICAgICAgZWxlbVsnd2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4nXSgpO1xuICAgIH0gZWxzZSBpZiAoZWxlbVsnbXNSZXF1ZXN0RnVsbHNjcmVlbiddKSB7XG4gICAgICAvKiBJRTExICovXG4gICAgICBlbGVtWydtc1JlcXVlc3RGdWxsc2NyZWVuJ10oKTtcbiAgICB9XG4gIH1cbiAgY2xvc2VGdWxsc2NyZWVuKCkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4pIHtcbiAgICAgICAgZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTtcbiAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRbJ3dlYmtpdEV4aXRGdWxsc2NyZWVuJ10pIHtcbiAgICAgICAgLyogU2FmYXJpICovXG4gICAgICAgIGRvY3VtZW50Wyd3ZWJraXRFeGl0RnVsbHNjcmVlbiddKCk7XG4gICAgICB9IGVsc2UgaWYgKGRvY3VtZW50Wydtc0V4aXRGdWxsc2NyZWVuJ10pIHtcbiAgICAgICAgLyogSUUxMSAqL1xuICAgICAgICBkb2N1bWVudFsnbXNFeGl0RnVsbHNjcmVlbiddKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHt9XG4gIH1cblxuICBhZGRUb1N1YnNUb0Nsb3NlT25Sb3V0ZSA9ICguLi5zdWI6IFN1YnNjcmlwdGlvbltdKSA9PiB7XG4gICAgaWYgKCFDb25maWcuc3Vic1RvQ2xvc2VPblJvdXRlKSBDb25maWcuc3Vic1RvQ2xvc2VPblJvdXRlID0gW107XG4gICAgQ29uZmlnLnN1YnNUb0Nsb3NlT25Sb3V0ZS5wdXNoKC4uLnN1Yik7XG4gIH07XG4gIGNsZWFyU3Vic1RvQ2xvc2VPblJvdXRlID0gKCkgPT4ge1xuICAgIENvbmZpZy5zdWJzVG9DbG9zZU9uUm91dGU/LmZvckVhY2goKHgpID0+IHg/LnVuc3Vic2NyaWJlKCkpO1xuICAgIENvbmZpZy5zdWJzVG9DbG9zZU9uUm91dGUgPSBbXTtcbiAgfTtcbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGRlbGV0aW9uIG9mIHJvd3MgZnJvbSBhbiBhcnJheVxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggb2YgdGhlIHJvdyB0byBkZWxldGVcbiAgICogQHBhcmFtIGFyciBUaGUgYXJyYXkgdGhhdCBob2xkcyB0aGUgcm93c1xuICAgKiBAcGFyYW0gZGVsZXRlU2VydmljZSBUaGUgZGVsZXRpb24gc2VydmljZSB0byBiZSBjYWxsZWQgKEl0IHNob3VsZCBiZSBhbiBhbm9ueW1vdXMgZnVuY3Rpb24pXG4gICAqIEBwYXJhbSBhZGRSb3dGdW5jIFRoZSBmdW5jdGlvbiAoYW5vbnltb3VzKSB0aGF0IGFkZHMgYSBuZXcgcm93IHRvIHRoZSBhcnJheVxuICAgKiBAcGFyYW0gY2IgVGhlIGZ1bmN0aW9uIHRvIGNhbGxiYWNrIHdpdGggdGhlIHJlc3BvbnNlIG9mIHRoZSBkZWxldGlvbiBzZXJ2aWNlIGFzIHRoZSBpbnB1dCBwYXJhbWV0ZXJcbiAgICovXG4gIGhhbmRsZVJvd0RlbGV0ZSA9IGFzeW5jIDxUPihcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGFycjogYW55W10sXG4gICAgZGVsZXRlU2VydmljZTogKC4uLmFyZ3MpID0+IFByb21pc2U8VD4gfCBPYnNlcnZhYmxlPFQ+LFxuICAgIGFkZFJvd0Z1bmM6ICguLi5hcmdzKSA9PiBhbnksXG4gICAgY2I/OiAoYW55KSA9PiBhbnksXG4gICkgPT4ge1xuICAgIGNvbnN0IGlkID0gYXJyW2luZGV4XT8uaWQ7XG4gICAgLy8gZGVidWdnZXI7XG5cbiAgICBpZiAoaWQgJiYgZGVsZXRlU2VydmljZSkge1xuICAgICAgY29uc3QgcmVxID0gZGVsZXRlU2VydmljZShpZCk7XG4gICAgICBpZiAodHlwZW9mIHJlcVsndG9Qcm9taXNlJ10gPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgY2IgPyBjYihhd2FpdCByZXFbJ3RvUHJvbWlzZSddKCkpIDogcmVxWyd0b1Byb21pc2UnXSgpO1xuICAgICAgZWxzZSBjYiA/IGNiKGF3YWl0IHJlcSkgOiBudWxsO1xuICAgIH1cblxuICAgIGlmIChhcnIubGVuZ3RoID09IDEpIHtcbiAgICAgIGFyci5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgYWRkUm93RnVuYygpO1xuICAgIH0gZWxzZSBpZiAoYXJyLmxlbmd0aCA+IDEpIGFyci5zcGxpY2UoaW5kZXgsIDEpO1xuICB9O1xuICAvKipcbiAgICogVG8gaGFuZGxlIHRoZSBwYXRjaGluZyBvZiBhIEZvcm1BcnJheVxuICAgKiBAcGFyYW0gYXJyIFRoZSBhcnJheSB0aGF0IGNvbnRhaW5zIHRoZSBkYXRhXG4gICAqIEBwYXJhbSBhZGRGdW5jIFRoZSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGFkZGl0aW9uIG9mIHNpbmdsZSBlbnRyaWVzXG4gICAqIEBwYXJhbSBmb3JtQXJyIFRoZSBGb3JtQXJyYXkgdGhhdCB3aWxsIGhvbGQgdGhlIGFycmF5J3MgZGF0YVxuICAgKi9cbiAgaW5pdFBhdGNoRm9ybUFycmF5ID0gPFQ+KFxuICAgIGFycjogVFtdLFxuICAgIGFkZEZ1bmM6IChpOiBudW1iZXIsIGRhdGE/OiBULCBmb3JtQXJyPzogRm9ybUFycmF5KSA9PiB2b2lkLFxuICAgIGZvcm1BcnI6IEZvcm1BcnJheSxcbiAgKSA9PiB7XG4gICAgLy8gZGVidWdnZXJcbiAgICBmb3JtQXJyPy5jbGVhcigpO1xuICAgIGlmIChhcnI/Lmxlbmd0aCkge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGFycikge1xuICAgICAgICBhZGRGdW5jKGZvcm1BcnIubGVuZ3RoLCBpdGVtLCBmb3JtQXJyKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFmb3JtQXJyLmxlbmd0aCkgYWRkRnVuYyhmb3JtQXJyLmxlbmd0aCwgbnVsbCwgZm9ybUFycik7XG4gICAgfVxuICB9O1xuICBwcml2YXRlIGlzUHJvbWlzZSA9IChmdW5jKSA9PiB7XG4gICAgcmV0dXJuIHR5cGVvZiBmdW5jID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgZnVuYy50aGVuID09PSAnZnVuY3Rpb24nO1xuICB9O1xuICBpc0FzeW5jID0gKGZ1bmMpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgZnVuYy5jb25zdHJ1Y3Rvci5uYW1lID09PSAnQXN5bmNGdW5jdGlvbicgfHxcbiAgICAgICh0eXBlb2YgZnVuYyA9PT0gJ2Z1bmN0aW9uJyAmJiB0aGlzLmlzUHJvbWlzZShmdW5jKCkpKVxuICAgICk7XG4gIH07XG5cbiAgaXNPYnNlcnZhYmxlID0gPFQ+KGZ1bmMpID0+IHtcbiAgICAvLyByZXR1cm4gdHlwZW9mIGZ1bmMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBmdW5jLnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJztcbiAgICAvLyByZXR1cm4gdHlwZW9mIGZ1bmMgPT09ICdvYmplY3QnICYmIGZ1bmMgaW5zdGFuY2VvZiBPYnNlcnZhYmxlO1xuICAgIC8vIHJldHVybiB0eXBlb2YgZnVuYyA9PT0gJ29iamVjdCcgJiYgZnVuYyBpbnN0YW5jZW9mIE9ic2VydmFibGU8VD47XG4gICAgcmV0dXJuIHR5cGVvZiBmdW5jID09PSAnb2JqZWN0JyAmJiBpc09ic2VydmFibGUoZnVuYyk7XG4gICAgcmV0dXJuIHR5cGVvZiBmdW5jID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgZnVuYy50b1Byb21pc2UgPT09ICdmdW5jdGlvbic7XG4gIH07XG4gIHByb21pc2lmeVZhbCA9IDxUPih2YWw6IFQgfCBQcm9taXNlPFQ+IHwgT2JzZXJ2YWJsZTxUPikgPT4ge1xuICAgIGlmICh0aGlzLmlzQXN5bmModmFsKSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWwgYXMgUHJvbWlzZTxUPik7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzT2JzZXJ2YWJsZSh2YWwpKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGxhc3RWYWx1ZUZyb20odmFsIGFzIE9ic2VydmFibGU8VD4pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWwgYXMgVCk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gYXJyIEFycmF5IG9mIG9ic2VydmFibGVzIHRvIGZldGNoXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHRoZSByZXNwb25zZXMgbWVyZ2VkIHRvZ2V0aGVyLiBJdCBlbWl0cyB0aGUgbWVyZ2VkIHJlc3BvbnNlcyBhcyB0aGV5IGFyZSBmZXRjaGVkIGFuZCBjbG9zZXMgb25jZSBhbGxsIHRoZSByZXNwb25zZXMgaGF2ZSBiZWVuIGZldGNoZWRcbiAgICovXG4gIG1lcmdlQXJyT2JzZXJ2YWJsZXMgPSA8VD4oYXJyOiB7ICRmdW5jOiBPYnNlcnZhYmxlPFRbXT4gfVtdKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFRbXT4oKHN1YikgPT4ge1xuICAgICAgY29uc3QgcmV0OiBUW10gPSBbXTtcbiAgICAgIGxldCByZXNwb25zZUNvdW50ID0gMDtcbiAgICAgIG1lcmdlKFxuICAgICAgICAuLi5hcnIubWFwKCh4KSA9PlxuICAgICAgICAgIHguJGZ1bmM/LnBpcGUoXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhcCgocikgPT4ge1xuICAgICAgICAgICAgICByZXNwb25zZUNvdW50Kys7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKS5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgICAgcmV0LnB1c2goLi4ucik7XG4gICAgICAgIHN1Yi5uZXh0KHJldCk7XG4gICAgICAgIGlmIChyZXNwb25zZUNvdW50ID09IGFyci5maWx0ZXIoKHgpID0+IHguJGZ1bmMpLmxlbmd0aCkge1xuICAgICAgICAgIC8vIGRlYnVnZ2VyXG4gICAgICAgICAgc3ViLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuICByZW1vdmVEdXBsaWNhdGU8VD4obGlzdDogVFtdLCBrZXlGaWVsZCA9ICdjb2RlJykge1xuICAgIGlmICghbGlzdCkgcmV0dXJuIG51bGw7XG4gICAgbGlzdCA9IGxpc3QuZmlsdGVyKCh4KSA9PiB4KTtcbiAgICBjb25zdCByZXQ6IFRbXSA9IFtdLFxuICAgICAgZHVwbGljYXRlTWFwOiB7IFt4OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBsaXN0KSB7XG4gICAgICBpZiAoZHVwbGljYXRlTWFwW2l0ZW1ba2V5RmllbGRdXSkgY29udGludWU7XG4gICAgICByZXQucHVzaChpdGVtKTtcbiAgICAgIGR1cGxpY2F0ZU1hcFtpdGVtW2tleUZpZWxkXV0gPSBpdGVtO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG4gIGdldCBnZW5SYW5kb21JRCgpIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogMTAwMDAwMDAwMDAwMDAwMCk7XG4gIH1cblxuICBwaWNrUmFuZG9tSW5kZXggPSA8VD4oYXJyYXk6IFRbXSk6IFQgfCBudWxsID0+XG4gICAgYXJyYXkgPyBhcnJheVtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBhcnJheS5sZW5ndGgpXSA6IG51bGw7XG4gIHN0b3JlUGF5bG9hZCA9IHRoaXMubG9nZ2VyU2VydmljZS5hZGRMb2c7XG4gIG9iaklzRW1wdHkgPSAob2JqLCBleGNsdXNpb25GaWVsZHM/OiBzdHJpbmdbXSkgPT4ge1xuICAgIGlmICghb2JqKSByZXR1cm4gdHJ1ZTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgIGlmIChleGNsdXNpb25GaWVsZHM/LmluY2x1ZGVzKGtleSkpIGNvbnRpbnVlO1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgaWYgKG9ialtrZXldKSByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICBkYXRhR2VuID0gPFQgPSBhbnk+KGtleXM6IHN0cmluZ1tdLCBsZW5ndGggPSAxMCkgPT4ge1xuICAgIGNvbnN0IHJldDogYW55W10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgdDogYW55ID0ge307XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgIHRba2V5XSA9IHRoaXMudGV4dEdlbigpO1xuICAgICAgfVxuICAgICAgcmV0LnB1c2godCk7XG4gICAgfVxuICAgIHJldHVybiByZXQgYXMgVFtdO1xuICB9O1xuICB0ZXh0R2VuID0gKCkgPT4gJ3JhbmRvbScgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAxMDAwKTtcbiAgdHJhY2tCeUNvZGUoaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSB7XG4gICAgcmV0dXJuIGl0ZW0/LmNvZGU7XG4gIH1cbiAgdHJhY2tCeUlEKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xuICAgIHJldHVybiBpdGVtPy5pZDtcbiAgfVxuICBkaWFsb2dPcGVuZXIgPSAoY29tcDogYW55LCBjb25maWc6IE1hdERpYWxvZ0NvbmZpZywgdmFsdWVDQjogKHIpID0+IGFueSwgbm9WYWx1ZUNCPzogYW55KSA9PlxuICAgIHRoaXMuZGlhbG9nT3BlbmVyUmVmKGNvbXAsIGNvbmZpZylcbiAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgIGlmIChyICE9IG51bGwgJiYgciAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB2YWx1ZUNCKHIpO1xuICAgICAgICB9IGVsc2UgaWYgKG5vVmFsdWVDQikge1xuICAgICAgICAgIG5vVmFsdWVDQigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgZGlhbG9nT3BlbmVyUmVmID0gKGNvbXA6IGFueSwgY29uZmlnOiBNYXREaWFsb2dDb25maWcpID0+IHRoaXMuZGlhbG9nLm9wZW4oY29tcCwgY29uZmlnKTtcbiAgZmluZExhYmVsQnlJdGVtID0gKGl0ZW0sIGFycjogYW55W10sIGxhYmVsRmllbGQ/OiBzdHJpbmcsIGtleUZpZWxkOiBzdHJpbmcgPSAnY29kZScpID0+IHtcbiAgICBpZiAoIWl0ZW0pIHJldHVybiBudWxsO1xuICAgIGNvbnN0IG9iaiA9IGFycj8uZmluZCgoeCkgPT4geFtrZXlGaWVsZF0gPT0gaXRlbSk7XG4gICAgaWYgKCFvYmopIHJldHVybiBpdGVtO1xuICAgIGVsc2UgcmV0dXJuIGAke2l0ZW19IC0gJHtvYmpbbGFiZWxGaWVsZCB8fCAndGl0bGUnXSB8fCBvYmpbbGFiZWxGaWVsZCB8fCAnZGVzY3JpcHRpb24nXX1gO1xuICB9O1xuXG4gIGZvcm1GaWVsZHNGcm9tQXJyID0gdGhpcy5pbnB1dFNlcnZpY2UuZm9ybUZpZWxkc0Zyb21GQ0lucHV0c0FycjtcbiAgb2JqVG9Gb3JtQ29udHJvbHMgPSB0aGlzLmlucHV0U2VydmljZS5mb3JtRmllbGRzRnJvbU9iajtcbiAgZm9ybVNjaGVtYVRvRm9ybUNvbnRyb2xzID0gdGhpcy5pbnB1dFNlcnZpY2UuZm9ybVNjaGVtYVRvRm9ybUNvbnRyb2xzO1xuICBhZGRGb3JtU2NoZW1hVG9Gb3JtID0gdGhpcy5pbnB1dFNlcnZpY2UuYWRkRm9ybVNjaGVtYVRvRm9ybTtcblxuICBiaW5kRm9ybUNvbnRyb2xUb0lucHV0cyA9IHRoaXMuaW5wdXRTZXJ2aWNlLmJpbmRGb3JtQ29udHJvbFRvSW5wdXRzO1xuXG4gIGdvID0gKHZhbHVlOiBzdHJpbmcsIGV4dHJhPzogTmF2aWdhdGlvbkV4dHJhcykgPT4ge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt2YWx1ZV0sIGV4dHJhKTtcbiAgfTtcbiAgLyoqXG4gICAqIFJvdXRlIHRvIGNvbXBvbmVudFxuICAgKiBAcGFyYW0gcm91dGUgUm91dGUgb2YgcGF0aCB0byBjb21wb25lbnRcbiAgICogQHBhcmFtIGV4dHJhXG4gICAqL1xuICBnb1IgPSAocm91dGU6IHN0cmluZywgZXh0cmE/OiBOYXZpZ2F0aW9uRXh0cmFzKSA9PiB7XG4gICAgaWYgKCEoPFNES0Vudmlyb25tZW50PnRoaXMuZW52aXJvbm1lbnQpLmFjdGl2YXRlZFJvdXRlKSBkZWJ1Z2dlcjtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcm91dGVdLCB7XG4gICAgICByZWxhdGl2ZVRvOiAoPFNES0Vudmlyb25tZW50PnRoaXMuZW52aXJvbm1lbnQpLmFjdGl2YXRlZFJvdXRlLFxuICAgICAgLi4uZXh0cmEsXG4gICAgfSk7XG4gICAgLy8gZGVidWdnZXI7XG4gIH07XG5cbiAgcmVsYXRpdmVSb3V0ZXIoKSB7XG4gICAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlciksXG4gICAgICByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJvdXRlLFxuICAgICAgcm91dGVyLFxuICAgICAgbmF2aWdhdGU6IChsaW5rOiBzdHJpbmcsIGNvbmZpZz86IE5hdmlnYXRpb25FeHRyYXMgfCB1bmRlZmluZWQpID0+XG4gICAgICAgIHJvdXRlci5uYXZpZ2F0ZShbbGlua10sIHsgcmVsYXRpdmVUbzogcm91dGUsIC4uLmNvbmZpZyB9KSxcbiAgICAgIHF1ZXJ5UGFyYW1zOiByb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcyxcbiAgICAgIHBhdGhQYXJhbXM6IHJvdXRlLnNuYXBzaG90LnBhcmFtcyxcbiAgICB9O1xuICB9XG5cbiAgbW9uZXlQYXJzZXIgPSAoYW1vdW50OiBzdHJpbmcgfCBudW1iZXIsIGN1cnJlbmN5ID0gJyAnKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVuY3lQaXBlLnRyYW5zZm9ybShhbW91bnQsIGN1cnJlbmN5IHx8ICcgJyk7XG4gIH07XG4gIGV4dHJhY3RVcGxvYWQoZXZlbnQ6IGFueSkge1xuICAgIHJldHVybiAoZXZlbnQudGFyZ2V0LmZpbGVzIGFzIEZpbGVbXSkgfHwgW107XG4gIH1cblxuICBzZWNvbmRzVG9Ib3VyTWluU2VjID0gKHNlY29uZHM6IG51bWJlcikgPT4ge1xuICAgIGlmICghc2Vjb25kcykgcmV0dXJuIHsgc2VjczogbnVsbCwgaG91cnM6IG51bGwsIG1pbnM6IG51bGwgfTtcbiAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDM2MDApIHx8IDAsXG4gICAgICBzZWNvbmRzRXhIb3VycyA9IHNlY29uZHMgJSAzNjAwIHx8IDAsXG4gICAgICBtaW5zID0gTWF0aC5mbG9vcihzZWNvbmRzRXhIb3VycyAvIDYwKSB8fCAwLFxuICAgICAgc2VjcyA9IHNlY29uZHNFeEhvdXJzICUgNjA7XG4gICAgcmV0dXJuIHsgaG91cnMsIG1pbnMsIHNlY3MgfTtcbiAgfTtcbiAgbWludXRlc1RvRGF5SG91ck1pbiA9IChtaW51dGVzOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIW1pbnV0ZXMpIHJldHVybiB7IGRheXM6IG51bGwsIGhvdXJzOiBudWxsLCBtaW5zOiBudWxsIH07XG4gICAgY29uc3QgZGF5cyA9IE1hdGguZmxvb3IobWludXRlcyAvIDE0NDApIHx8IDAsXG4gICAgICBtaW5pdXRlc0V4RGF5cyA9IG1pbnV0ZXMgJSAxNDQwIHx8IDAsXG4gICAgICBob3VycyA9IE1hdGguZmxvb3IobWluaXV0ZXNFeERheXMgLyA2MCkgfHwgMCxcbiAgICAgIG1pbnMgPSBtaW5pdXRlc0V4RGF5cyAlIDYwIHx8IDA7XG4gICAgcmV0dXJuIHsgZGF5cywgaG91cnMsIG1pbnMgfTtcbiAgfTtcbiAgbWludXRlc1RvRGF5SG91ck1pblN0ciA9IChtaW51dGVzOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIW1pbnV0ZXMpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHJldCA9IHRoaXMubWludXRlc1RvRGF5SG91ck1pbihtaW51dGVzKTtcbiAgICByZXR1cm4gYCR7cmV0LmRheXN9ICR7cmV0LmhvdXJzfToke3JldC5taW5zfWAudHJpbSgpO1xuICB9O1xuICBtaW51dGVzVG9EYXlIb3VyTWluU3RyMiA9IChtaW51dGVzOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIW1pbnV0ZXMpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHJldCA9IHRoaXMubWludXRlc1RvRGF5SG91ck1pbihtaW51dGVzKTtcbiAgICByZXR1cm4gYCR7cmV0LmRheXN9ZGF5cyAke3JldC5ob3Vyc31ocnMgJHtyZXQubWluc31taW5zYC50cmltKCk7XG4gIH07XG4gIGRheUhvdXJNaW5Ub0hvdXJNaW51dGVzID0gKGR5czogbnVtYmVyLCBocnM6IG51bWJlciwgbWluczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFkeXMgJiYgIWhycyAmJiAhbWlucykgcmV0dXJuICcnO1xuICAgIGNvbnN0IGR5c1RvSHJzID0gKGR5cyB8fCAwKSAqIDI0O1xuICAgIGhycyA9ICgraHJzIHx8IDApICsgZHlzVG9IcnM7XG4gICAgcmV0dXJuIChocnMgfHwgJzAwJykgKyAnOicgKyAobWlucyB8fCAnMDAnKTtcbiAgfTtcbiAgZGlzYWJsZU9yRW5hYmxlSW5wdXRzID0gKGNvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2xbXSwgZGlzYWJsZTogYm9vbGVhbikgPT4ge1xuICAgIGlmIChkaXNhYmxlKSB0aGlzLmRpc2FibGVJbnB1dHMoY29udHJvbHMpO1xuICAgIGVsc2UgdGhpcy5lbmFibGVJbnB1dHMoY29udHJvbHMpO1xuICB9O1xuICBkaXNhYmxlSW5wdXRzID0gKGNvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2xbXSkgPT4ge1xuICAgIGZvciAoY29uc3QgY29udHJvbCBvZiBjb250cm9scykge1xuICAgICAgY29udHJvbD8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuICB9O1xuICBlbmFibGVJbnB1dHMgPSAoY29udHJvbHM6IEFic3RyYWN0Q29udHJvbFtdKSA9PiB7XG4gICAgZm9yIChjb25zdCBjb250cm9sIG9mIGNvbnRyb2xzKSB7XG4gICAgICBjb250cm9sPy5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgfTtcbiAgZGF5SG91ck1pblRvTWludXRlcyA9IChkeXM6IG51bWJlciwgaHJzOiBudW1iZXIsIG1pbnM6IG51bWJlcikgPT4ge1xuICAgIGlmICghZHlzICYmICFocnMgJiYgIW1pbnMpIHJldHVybiAwO1xuICAgIGNvbnN0IGR5c1RvSHJzID0gKGR5cyB8fCAwKSAqIDI0O1xuICAgIGhycyA9ICgraHJzIHx8IDApICsgZHlzVG9IcnM7XG4gICAgcmV0dXJuIChocnMgfHwgMCkgKiA2MCArIG1pbnM7XG4gIH07XG4gIGhvdXJNaW5Ub01pbnV0ZXMgPSAoaHJzOiBudW1iZXIsIG1pbnM6IG51bWJlcikgPT4ge1xuICAgIGlmICghaHJzICYmICFtaW5zKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gKGhycyB8fCAwKSAqIDYwICsgbWlucztcbiAgfTtcbiAgaG91ck1pblRvTWludXRlczIgPSAoaHJzTWluczogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgW2hycywgbWluc10gPSBocnNNaW5zPy5zcGxpdCgnOicpIHx8IFswLCAwXTtcbiAgICByZXR1cm4gdGhpcy5ob3VyTWluVG9NaW51dGVzKCtocnMsICttaW5zKTtcbiAgfTtcbiAgbm90aWZ5KG1lc3NhZ2U6IHN0cmluZywgY2xzOiAwIHwgMSB8IDIgfCAzID0gMSwgZHVyYXRpb24gPSA1MDAwLCB0aXRsZT86IHN0cmluZykge1xuICAgIC8vIGlmIChjbHMgPT0gMCkgcmV0dXJuIHRoaXMuaW5mbyhtZXNzYWdlLCBjbHMpO1xuICAgIGlmICh0eXBlb2YgbWVzc2FnZSAhPSAnc3RyaW5nJykgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgICBjb25zdCB0b2FzdCA9IHRoaXMudG9hc3QuYWRkKHtcbiAgICAgIGJvZHk6IHRpdGxlID8gbWVzc2FnZSA6IHVuZGVmaW5lZCxcbiAgICAgIGhlYWRlcjogdGl0bGUgfHwgbWVzc2FnZSxcbiAgICAgIGR1cmF0aW9uLFxuICAgICAgdGFnOiBjbHMsXG4gICAgfSk7XG4gICAgcmV0dXJuIHsgY2xvc2VkOiB0b2FzdC5jbG9zZWQgfTtcbiAgICAvLyBtZXNzYWdlID0gdHlwZW9mIG1lc3NhZ2UgPT0gJ3N0cmluZycgPyBtZXNzYWdlIDogJyc7XG4gICAgLy8gY29uc3QgcmVmID0gdGhpcy5zbmFja0Jhci5vcGVuKG1lc3NhZ2UsIHRpdGxlLCB7XG4gICAgLy8gICBkdXJhdGlvbixcbiAgICAvLyAgIGhvcml6b250YWxQb3NpdGlvbjogJ2NlbnRlcicsXG4gICAgLy8gICB2ZXJ0aWNhbFBvc2l0aW9uOiAnYm90dG9tJyxcbiAgICAvLyAgIHBhbmVsQ2xhc3M6XG4gICAgLy8gICAgIGNscyA9PSAxID8gJ2JnLXN1Y2Nlc3MnIDogY2xzID09IDIgPyAnYnRuLWluZm8nIDogY2xzID09IDMgPyAnYnRuLXdhcm5pbmcnIDogJ2JnLWRhbmdlcicsXG4gICAgLy8gfSk7XG4gICAgLy8gcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHJlZi5hZnRlckRpc21pc3NlZCgpLnBpcGUobWFwKChyKSA9PiByLmRpc21pc3NlZEJ5QWN0aW9uKSkpO1xuICB9XG5cbiAgc2Nyb2xsVG9Ub3AgPSAoKSA9PiB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG5cbiAgLyoqXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGRhdGUgdGltZSBsb2NhbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgZGF0ZXRpbWUtbG9jYWwgaW5wdXRcbiAgICovXG4gIGdldExvY2FsRGF0ZVRpbWVOb3cgPSAoKSA9PiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwgLTEpO1xuICAvKiogQHJldHVybnMgVGhlIGN1cnJlbnQgZGF0ZSBsb2NhbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgZGF0ZSBpbnB1dCAqL1xuICBsb2NhbERhdGVOb3cgPSAoKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xuICB9O1xuICBkYXRlRm9ybWF0ID0gKGRhdGU6IGFueSwgZm9ybWF0ID0gMSkgPT4ge1xuICAgIGlmICghZGF0ZSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIGlmIChmb3JtYXQgPT0gMSkge1xuICAgICAgcmV0dXJuIGQudG9EYXRlU3RyaW5nKCk7XG4gICAgfSBlbHNlIGlmIChmb3JtYXQgPT0gMikge1xuICAgICAgcmV0dXJuIGQuZ2V0RGF0ZSgpICsgJyAnICsgY29uZmlnLk1vbnRoc1tkLmdldE1vbnRoKCldO1xuICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09IDMpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShkYXRlLCBgRUVFIE1NTSBkZCBZWVlZLCBoaDptbSBhYWApO1xuICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09IDQpIHtcbiAgICAgIHJldHVybiBjb25maWcuTW9udGhzW2QuZ2V0TW9udGgoKV0gKyAnICcgKyBkLmdldERhdGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfTtcblxuICB0b0phdmFEYXRlU3RyaW5nID0gKGlzb0RhdGVTdHJpbmc6IHN0cmluZyA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSkgPT4ge1xuICAgIGlmICghaXNvRGF0ZVN0cmluZykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGAke2lzb0RhdGVTdHJpbmcuc2xpY2UoMCwgMTkpfWA7XG4gICAgcmV0dXJuIGAke2lzb0RhdGVTdHJpbmcuc2xpY2UoMCwgMTApfSAke2lzb0RhdGVTdHJpbmcuc2xpY2UoMTEsIDE5KX1gO1xuICB9O1xuXG4gIHRvSmF2YURhdGV0aW1lU3RyaW5nID0gKGlzb0RhdGVTdHJpbmc6IHN0cmluZykgPT4ge1xuICAgIGlmICghaXNvRGF0ZVN0cmluZykgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgZGF0ZSA9IGlzb0RhdGVTdHJpbmcuaW5jbHVkZXMoJ1QnKVxuICAgICAgPyBpc29EYXRlU3RyaW5nXG4gICAgICA6IG5ldyBEYXRlKGlzb0RhdGVTdHJpbmcpLnRvSVNPU3RyaW5nKCk7XG4gICAgcmV0dXJuIGAke2RhdGUuc2xpY2UoMCwgMTApfSAke2RhdGUuc2xpY2UoMTEsIDE5KX1gO1xuICB9O1xuXG4gIHRpbWVGb3JtYXQgPSAodGltZT86IGFueSkgPT4ge1xuICAgIGNvbnN0IHRpbWVBcnI6IGFueVtdID0gdGltZS5zcGxpdCgnICcpO1xuICAgIHRpbWVBcnJbMF0gPSB0aW1lQXJyWzBdLnNwbGl0KCc6Jykuc3BsaWNlKDAsIDIpLmpvaW4oJzonKTtcbiAgICByZXR1cm4gdGltZUFyci5qb2luKCcgJyk7XG4gIH07XG4gIGZ1bGxEYXRlVGltZSA9ICh0aW1lc3RhbXA6IHN0cmluZyB8IG51bWJlcikgPT4ge1xuICAgIC8vIGRlYnVnZ2VyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZUZvcm1hdCh0aW1lc3RhbXAsIDMpO1xuICB9O1xuICBkYXlzRm9ybWF0dGVyID0gKGRheXM6IG51bWJlcikgPT4ge1xuICAgIGlmICghZGF5cykge1xuICAgICAgcmV0dXJuICctJztcbiAgICB9XG4gICAgbGV0IHlyOiBudW1iZXIsXG4gICAgICBtdDogbnVtYmVyLFxuICAgICAgZHk6IG51bWJlcixcbiAgICAgIHJldDogc3RyaW5nLFxuICAgICAgX3lyID0gMzY1LFxuICAgICAgX210ID0gMzA7XG4gICAgaWYgKGRheXMgPiBfeXIpIHtcbiAgICAgIHlyID0gTWF0aC5mbG9vcihkYXlzIC8gX3lyKTtcbiAgICB9XG4gICAgaWYgKGRheXMgPiBfbXQpIHtcbiAgICAgIG10ID0gTWF0aC5mbG9vcigoZGF5cyAlIF95cikgLyBfbXQpO1xuICAgIH1cbiAgICBkeSA9IChkYXlzICUgX3lyKSAlIF9tdDtcbiAgICByZXQgPSBgJHt5ciA/IHRoaXMucGx1YXJsaXplcih5ciwgJ3lyJykgOiAnJ30gJHtcbiAgICAgIG10ID8gdGhpcy5wbHVhcmxpemVyKG10LCAnbXRoJykgOiAnJ1xuICAgIH0gJHt0aGlzLnBsdWFybGl6ZXIoZHksICdkeScpfWA7XG4gICAgcmV0dXJuIHJldDtcbiAgfTtcbiAgbW9udGhzRm9ybWF0dGVyID0gKG1vbnRoczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFtb250aHMpIHtcbiAgICAgIHJldHVybiAnLSc7XG4gICAgfVxuICAgIGxldCB5cjogbnVtYmVyLFxuICAgICAgbXQ6IG51bWJlcixcbiAgICAgIHJldDogc3RyaW5nLFxuICAgICAgX3lyID0gMTI7XG4gICAgaWYgKG1vbnRocyA+IF95cikge1xuICAgICAgeXIgPSBNYXRoLmZsb29yKG1vbnRocyAvIF95cik7XG4gICAgfVxuICAgIG10ID0gbW9udGhzICUgX3lyO1xuICAgIHJldCA9IGAke3lyID8gdGhpcy5wbHVhcmxpemVyKHlyLCAneXInKSA6ICcnfSAke210ID8gdGhpcy5wbHVhcmxpemVyKG10LCAnbXRoJykgOiAnJ31gO1xuICAgIHJldHVybiByZXQ7XG4gIH07XG4gIHBsdWFybGl6ZXIgPSAodmFsOiBudW1iZXIsIHR4dDogc3RyaW5nLCBwbHVyYWw/OiBzdHJpbmcpID0+IHtcbiAgICBwbHVyYWwgPSBwbHVyYWwgfHwgdHh0ICsgJ3MnO1xuICAgIHJldHVybiB2YWwgKyAodmFsID09IDEgPyB0eHQgOiBwbHVyYWwpO1xuICB9O1xuICBkZWNpbWFsVG9QZXJjZW50YWdlID0gKGRlYzogbnVtYmVyKSA9PiB7XG4gICAgcmV0dXJuIGRlYyAqIDEwMCArICclJztcbiAgfTtcbiAgbG9nRm9ybSA9IChmb3JtKSA9PiB7XG4gICAgY29uc29sZS5sb2coJ0ZPUk0nLCBmb3JtLCAnVkFMVUVTJywgZm9ybS52YWx1ZSBhcyBhbnkpO1xuICB9O1xuXG4gIHRvQ1NWKGRhdGE6IGFueVtdLCBoZWFkZXJOYW1lczogc3RyaW5nW10sIGZpbGVuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCByZXBsYWNlciA9IChrZXksIHZhbHVlKSA9PiAodmFsdWUgPT09IG51bGwgPyAnJyA6IHZhbHVlKTsgLy8gc3BlY2lmeSBob3cgeW91IHdhbnQgdG8gaGFuZGxlIG51bGwgdmFsdWVzIGhlcmVcblxuICAgIGxldCBjc3YgPSBkYXRhLm1hcCgocm93KSA9PlxuICAgICAgaGVhZGVyTmFtZXMubWFwKChmaWVsZE5hbWUpID0+IEpTT04uc3RyaW5naWZ5KHJvd1tmaWVsZE5hbWVdLCByZXBsYWNlcikpLmpvaW4oJywnKSxcbiAgICApO1xuICAgIGNzdi51bnNoaWZ0KGhlYWRlck5hbWVzLmpvaW4oJywnKSk7XG4gICAgbGV0IGNzdkFycmF5ID0gY3N2LmpvaW4oJ1xcclxcbicpO1xuXG4gICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbY3N2QXJyYXldLCB7IHR5cGU6ICd0ZXh0L2NzdicgfSk7XG4gICAgc2F2ZUFzKGJsb2IsIGZpbGVuYW1lICsgJy5jc3YnKTtcbiAgfVxuXG4gIGlzUGljdHVyZUZvcm1hdChmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKCFmaWxlTmFtZSkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IFBJQ1RVUkVfRk9STUFUUyA9IFsnLmpwZycsICcuanBlZycsICcucG5nJywgJy5naWYnXTtcbiAgICByZXR1cm4gUElDVFVSRV9GT1JNQVRTLnNvbWUoKGZvcm1hdCkgPT4gZmlsZU5hbWUuZW5kc1dpdGgoZm9ybWF0KSk7XG4gIH1cbiAgb2JqZWN0VG9BcnJheTxUPihvYmo6IGFueSkge1xuICAgIGNvbnN0IHJldCA9IFtdO1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgcmV0LnB1c2gob2JqW2tleV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV0IGFzIFRbXTtcbiAgfVxuICBmb3JtYXRGaWVsZChmaWVsZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50b1RpdGxlQ2FzZShmaWVsZD8udG9TZW50ZW5jZUNhc2UoKSk7XG4gIH1cbiAgLyoqXG4gICAqIFVzZXMgYSB3ZWIgd29ya2VyIHRvIHBlcmZvcm0gYSB0YXNrXG4gICAqIEBleGFtcGxlIG5ldyBXb3JrZXIobmV3IFVSTCgnLi91cGxvYWQtY3N2LndvcmtlcicsIGltcG9ydC5tZXRhLnVybCkpXG4gICAqIEBwYXJhbSB3b3JrZXIgV2ViIHdvcmtlciBvYmplY3RcbiAgICogQHBhcmFtIGlucHV0RGF0YSBEYXRhIGJlaW5nIHBhc3NlZCBpbnRvIHdlYiB3b3JrZXJcbiAgICogQHJldHVybnMgRGF0YSBnb3R0ZW4gZnJvbSB3ZWIgd29ya2VyXG4gICAqL1xuICB1c2VXZWJXb3JrZXI8VCA9IGFueT4oXG4gICAgd29ya2VyOiBXb3JrZXIsXG4gICAgaW5wdXREYXRhOiBhbnksXG4gICAgY29uZGl0aW9ucz86IHsgc3RvcDogKHJlcykgPT4gYm9vbGVhbjsgZXJyb3I6IChyZXMpID0+IGJvb2xlYW4gfSxcbiAgKSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFQ+KChzdWIpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2YgV29ya2VyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZShpbnB1dERhdGEpO1xuICAgICAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSAocikgPT4ge1xuICAgICAgICAgICAgLy8gZGVidWdnZXJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHIuZGF0YTtcbiAgICAgICAgICAgIGlmIChjb25kaXRpb25zKSB7XG4gICAgICAgICAgICAgIGlmIChjb25kaXRpb25zLmVycm9yKGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgc3ViLmVycm9yKGRhdGEpO1xuICAgICAgICAgICAgICAgIHN1Yi5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIHdvcmtlci50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb25kaXRpb25zLnN0b3AoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICBzdWIubmV4dChkYXRhKTtcbiAgICAgICAgICAgICAgICBzdWIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3ViLm5leHQoZGF0YSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHN1Yi5uZXh0KGRhdGEgYXMgYW55KTtcbiAgICAgICAgICAgICAgc3ViLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgIHdvcmtlci50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93ICdub1dvcmtlcic7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICAgIHN1Yi5lcnJvcihlKTtcbiAgICAgICAgc3ViLmNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgdHJpbSA9XG4gICAgKGxlbmd0aCA9IDE1KSA9PlxuICAgICh0ZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQpID0+XG4gICAgICB0ZXh0ICYmIHRleHQubGVuZ3RoID4gbGVuZ3RoID8gdGV4dC5zbGljZSgwLCBsZW5ndGgpICsgJy4uLicgOiB0ZXh0ITtcbiAgYXN5bmMgYXJyYXlUb0NTVihcbiAgICBkYXRhOiBhbnlbXSxcbiAgICBmaWxlbmFtZTogc3RyaW5nLFxuICAgIGhlYWRlck1hcD86IFRhYmxlQ29sW10sXG4gICAgZXh0cmFDb25maWc/OiB7IHByZWZpeD86IHN0cmluZzsgaGlkZUhlYWRlcj86IGJvb2xlYW47IGhpZGVOb3RpZmljYXRpb24/OiBib29sZWFuIH0sXG4gICkge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGxldCBfZGF0YTogYW55W107XG4gICAgY29uc3QgaGVhZGVyTWFwV2l0aEZvcm1hdHRlcnM6IFRhYmxlQ29sW10gPVxuICAgICAgaGVhZGVyTWFwPy5maWx0ZXIoKHgpID0+IHguZm9ybWF0dGVyIHx8IHguZm9ybWF0dGVyUm93KSB8fCB1bmRlZmluZWQ7XG4gICAgaWYgKGhlYWRlck1hcFdpdGhGb3JtYXR0ZXJzPy5sZW5ndGgpIHtcbiAgICAgIF9kYXRhID0gY2xvbmVEZWVwKGRhdGEpO1xuICAgICAgZm9yIChjb25zdCBmb3JtYXR0ZXIgb2YgaGVhZGVyTWFwV2l0aEZvcm1hdHRlcnMpIHtcbiAgICAgICAgZm9yIChjb25zdCByb3cgb2YgX2RhdGEpIHtcbiAgICAgICAgICByb3dbZm9ybWF0dGVyLmZdID0gZm9ybWF0dGVyLmZvcm1hdHRlclxuICAgICAgICAgICAgPyBhd2FpdCBmb3JtYXR0ZXIuZm9ybWF0dGVyKHJvd1tmb3JtYXR0ZXIuZl0pXG4gICAgICAgICAgICA6IGZvcm1hdHRlci5mb3JtYXR0ZXJSb3cocm93KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBfZGF0YSA9IGRhdGE7XG4gICAgfVxuICAgIGNvbnN0IHNob3dIZWFkZXIgPSAhZXh0cmFDb25maWc/LmhpZGVIZWFkZXI7XG4gICAgbGV0IGNzdiA9IFBhcGEudW5wYXJzZShfZGF0YSwge1xuICAgICAgaGVhZGVyOiBzaG93SGVhZGVyICYmICFoZWFkZXJNYXA/Lmxlbmd0aCxcbiAgICAgIGNvbHVtbnM6IGhlYWRlck1hcD8ubWFwKCh4KSA9PiB4LmY/LnRvU3RyaW5nKCkpIHx8IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgICB0aGlzLmRvd25sb2FkZXIoXG4gICAgICAoZXh0cmFDb25maWc/LnByZWZpeCA/IGV4dHJhQ29uZmlnPy5wcmVmaXggKyAnXFxyXFxuJyA6ICcnKSArXG4gICAgICAgIChoZWFkZXJNYXA/Lmxlbmd0aCA/IGhlYWRlck1hcC5tYXAoKGZpZWxkTmFtZSkgPT4gZmllbGROYW1lLnQpLmpvaW4oJywnKSArIGBcXHJcXG5gIDogJycpICtcbiAgICAgICAgY3N2LFxuICAgICAgZmlsZW5hbWU/LmVuZHNXaXRoKCcuY3N2JykgPyBmaWxlbmFtZSA6IGZpbGVuYW1lICsgJy5jc3YnLFxuICAgICk7XG5cbiAgICBpZiAoZXh0cmFDb25maWc/LmhpZGVOb3RpZmljYXRpb24gPT0gdHJ1ZSkgcmV0dXJuO1xuICAgIHRoaXMuaW5mbyhgRG93bmxvYWRlZCAke2ZpbGVuYW1lfWApO1xuICB9XG4gIHR5cGVDYXN0ZXIgPSA8VD4odmFsdWU6IFQpID0+IHZhbHVlO1xuXG4gIGpvaW5DU1ZSb3dzKC4uLkNTVnM6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIENTVnMuam9pbignXFxyXFxuJyk7XG4gIH1cbiAgYXN5bmMgYXJyYXlUb0NTVlN0cmluZzxUID0gYW55PihcbiAgICBkYXRhOiBUW10sXG4gICAgaGVhZGVyTWFwPzogVGFibGVDb2w8VD5bXSxcbiAgICBleHRyYUNvbmZpZz86IHsgcHJlZml4Pzogc3RyaW5nOyBoaWRlSGVhZGVyPzogYm9vbGVhbiB9LFxuICApIHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICBsZXQgX2RhdGE6IGFueVtdO1xuICAgIGNvbnN0IGhlYWRlck1hcFdpdGhGb3JtYXR0ZXJzOiBUYWJsZUNvbFtdID1cbiAgICAgIGhlYWRlck1hcD8uZmlsdGVyKCh4KSA9PiB4LmZvcm1hdHRlciB8fCB4LmZvcm1hdHRlclJvdykgfHwgdW5kZWZpbmVkO1xuICAgIGlmIChoZWFkZXJNYXBXaXRoRm9ybWF0dGVycz8ubGVuZ3RoKSB7XG4gICAgICBfZGF0YSA9IGNsb25lRGVlcChkYXRhKTtcbiAgICAgIGZvciAoY29uc3QgZm9ybWF0dGVyIG9mIGhlYWRlck1hcFdpdGhGb3JtYXR0ZXJzKSB7XG4gICAgICAgIGZvciAoY29uc3Qgcm93IG9mIF9kYXRhKSB7XG4gICAgICAgICAgcm93W2Zvcm1hdHRlci5mXSA9IGZvcm1hdHRlci5mb3JtYXR0ZXJcbiAgICAgICAgICAgID8gYXdhaXQgZm9ybWF0dGVyLmZvcm1hdHRlcihyb3dbZm9ybWF0dGVyLmZdKVxuICAgICAgICAgICAgOiBmb3JtYXR0ZXIuZm9ybWF0dGVyUm93KHJvdyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgX2RhdGEgPSBkYXRhO1xuICAgIGNvbnN0IHNob3dIZWFkZXIgPSAhZXh0cmFDb25maWc/LmhpZGVIZWFkZXI7XG4gICAgbGV0IGNzdiA9IFBhcGEudW5wYXJzZShfZGF0YSwge1xuICAgICAgaGVhZGVyOiBzaG93SGVhZGVyICYmICFoZWFkZXJNYXA/Lmxlbmd0aCxcbiAgICAgIGNvbHVtbnM6IGhlYWRlck1hcD8ubWFwKCh4KSA9PiB4LmY/LnRvU3RyaW5nKCkpIHx8IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgICByZXR1cm4gKFxuICAgICAgKGV4dHJhQ29uZmlnPy5wcmVmaXggPyBleHRyYUNvbmZpZz8ucHJlZml4ICsgJ1xcclxcbicgOiAnJykgK1xuICAgICAgKGhlYWRlck1hcD8ubGVuZ3RoID8gaGVhZGVyTWFwLm1hcCgoZmllbGROYW1lKSA9PiBmaWVsZE5hbWUudCkuam9pbignLCcpICsgYFxcclxcbmAgOiAnJykgK1xuICAgICAgY3N2XG4gICAgKTtcbiAgfVxuXG4gIGlzRGF0ZVZhbHVlID0gKHYpID0+XG4gICAgdiA/IHR5cGVvZiB2ID09ICdzdHJpbmcnICYmIHZbNF0gPT0gJy0nICYmIHZbN10gPT0gJy0nICYmIHYubGVuZ3RoID09IDEwIDogZmFsc2U7XG4gIGlzRGF0VGltZVZhbHVlID0gKHYpID0+XG4gICAgdiA/IHR5cGVvZiB2ID09ICdzdHJpbmcnICYmIHZbMTBdID09ICdUJyAmJiB2WzRdID09ICctJyAmJiB2WzddID09ICctJyA6IGZhbHNlO1xuXG4gIHllc05vQ2VsbEZvcm1hdHRlckNvbG91cmVkID0gKHYpID0+XG4gICAgYDxzcGFuIGNsYXNzPScke3YgPyAnc3VjY2Vzc0NlbGwnIDogJ2luZXJ0Q2VsbCd9Jz4ke1xuICAgICAgdiA/ICdZZXMnIDogdiA9PSBmYWxzZSA/ICdObycgOiAnLSdcbiAgICB9PC9zcGFuPmA7XG4gIHllc05vQ2VsbEZvcm1hdHRlciA9ICh2KSA9PiBgJHt2ID8gJ1llcycgOiAnTm8nfWA7XG4gIHN0YXR1c0NlbGxGb3JtYXR0ZXIgPSAoc3RhdHVzOiBTdGF0dXMpID0+XG4gICAgYDxzcGFuIGNsYXNzPScke1xuICAgICAgc3RhdHVzID09ICdDT01QTEVURUQnID8gJ3N1Y2Nlc3NDZWxsJyA6IHN0YXR1cyA9PSAnUEVORElORycgPyAncGVuZGluZ0NlbGwnIDogJ2luZXJ0Q2VsbCdcbiAgICB9Jz4ke3N0YXR1cyB8fCAnLSd9PC9zcGFuPmA7XG5cbiAgY2VsbFN0YXR1c0Zvcm1hdHRlciA9XG4gICAgPFQgPSBhbnk+KGd1aWRlOiB7IHN1Y2Nlc3NWYWw/OiBUOyBwZW5kaW5nVmFsPzogVDsgZXJyb3JWYWw/OiBUOyBpbmVydFZhbD86IFQgfSkgPT5cbiAgICAodikgPT5cbiAgICAgIGA8c3BhbiBjbGFzcz0nJHtcbiAgICAgICAgdiA9PSBndWlkZS5zdWNjZXNzVmFsXG4gICAgICAgICAgPyAnc3VjY2Vzc0NlbGwnXG4gICAgICAgICAgOiB2ID09IGd1aWRlLnBlbmRpbmdWYWxcbiAgICAgICAgICAgID8gJ3BlbmRpbmdDZWxsJ1xuICAgICAgICAgICAgOiB2ID09IGd1aWRlLmVycm9yVmFsXG4gICAgICAgICAgICAgID8gJ2Vycm9yQ2VsbCdcbiAgICAgICAgICAgICAgOiAnaW5lcnRDZWxsJ1xuICAgICAgfSc+JHt2fTwvc3Bhbj5gO1xuXG4gIGdlbmVyYXRlVVVJRCA9IEVWRnVuY3Rpb25zLmdlbmVyYXRlVVVJRDtcblxuICBpbmZvOiAoXG4gICAgdGV4dDogc3RyaW5nLFxuICAgIHN0YXR1cz86IDAgfCAyIHwgMSxcbiAgICBoZWFkaW5nPzogc3RyaW5nLFxuICAgIGJ0bnM/OiBJSW5mb0RpYWxvZ0J0bltdLFxuICAgIGRpc2FibGVDbG9zZT86IGJvb2xlYW4sXG4gICkgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgZGVib3VuY2VyID0gdGhpcy5kZWJvdW5jZXJTZXJ2aWNlLmRlYm91bmNlcjtcblxuICBhc3luY1ZhbGlkYXRpb24gPSB0aGlzLmRlYm91bmNlclNlcnZpY2UuYXN5bmNWYWxpZGF0aW9uO1xuXG4gIHN0YXJ0UGwgPSB0aGlzLnBTLnN0YXJ0UGw7XG4gIHN0b3BQbCA9IHRoaXMucFMuc3RvcFBsO1xuXG4gIGNyZWF0ZVN1YnNjcmlwdGlvbk1hbmFnZXIgPSAoLi4uc3ViczogU3Vic2NyaXB0aW9uW10pID0+IHtcbiAgICBsZXQgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gc3VicyB8fCBbXTtcblxuICAgIGNvbnN0IGNsZWFyID0gKCkgPT4ge1xuICAgICAgLy8gZGVidWdnZXI7XG4gICAgICBfc3Vicy5mb3JFYWNoKCh4KSA9PiB4LnVuc3Vic2NyaWJlKCkpO1xuICAgICAgX3N1YnMgPSBbXTtcbiAgICB9O1xuXG4gICAgY29uc3QgcHVzaCA9ICguLi5zdWJzOiBTdWJzY3JpcHRpb25bXSkgPT4gX3N1YnMucHVzaCguLi5zdWJzKTtcblxuICAgIHJldHVybiB7IGNsZWFyLCBwdXNoLCBzdWJzOiAoKSA9PiBfc3VicyB9O1xuICB9O1xuXG4gIGNyZWF0ZUNhY2hlTWFuYWdlciA9IDxURGF0YSA9IGFueSwgVEtleSA9IGFueT4oY29uZmlnOiB7XG4gICAga2V5ZXI/OiAoaXRlbTogVEtleSkgPT4gc3RyaW5nO1xuICAgIG1heFNpemU/OiBudW1iZXI7XG4gIH0pID0+IHtcbiAgICBsZXQgX2NhY2hlOiB7IFtrZXk6IHN0cmluZ106IHsgaXRlbTogVERhdGEgfSB9ID0ge30sXG4gICAgICBrZXlGdW5jdGlvbiA9IGNvbmZpZz8ua2V5ZXIsXG4gICAgICBtYXhTaXplID0gY29uZmlnPy5tYXhTaXplIHx8IDEwMDA7XG4gICAgY29uc3Qga2V5U3RhY2s6IHN0cmluZ1tdID0gW107XG5cbiAgICBjb25zdCBjbGVhciA9ICgpID0+IHtcbiAgICAgIF9jYWNoZSA9IHt9O1xuICAgIH07XG4gICAgY29uc3QgZGVzdHJveSA9ICgpID0+IHtcbiAgICAgIF9jYWNoZSA9IHVuZGVmaW5lZDtcbiAgICB9O1xuXG4gICAgY29uc3Qgc2F2ZSA9IChrZXk6IHN0cmluZyB8IG51bWJlciB8IFRLZXksIGRhdGE6IFREYXRhKSA9PiB7XG4gICAgICBpZiAoIV9jYWNoZSkgX2NhY2hlID0ge307XG4gICAgICBjb25zdCBrZXlTdHJpbmcgPSBrZXlGdW5jdGlvbiA/IGtleUZ1bmN0aW9uKGtleSBhcyBUS2V5KSA6IChrZXkgYXMgc3RyaW5nKTtcbiAgICAgIF9jYWNoZVtrZXlTdHJpbmddID0ge1xuICAgICAgICBpdGVtOiBkYXRhLFxuICAgICAgfTtcbiAgICAgIGtleVN0YWNrLnB1c2goa2V5U3RyaW5nKTtcblxuICAgICAgaWYgKGtleVN0YWNrLmxlbmd0aCA+IG1heFNpemUpIGRlbGV0ZSBfY2FjaGVba2V5U3RhY2suc2hpZnQoKV07XG4gICAgfTtcblxuICAgIGNvbnN0IGdldCA9IChrZXk6IFRLZXkpID0+IHtcbiAgICAgIGlmICghX2NhY2hlKSBfY2FjaGUgPSB7fTtcbiAgICAgIGNvbnN0IGtleVN0cmluZyA9IGtleUZ1bmN0aW9uID8ga2V5RnVuY3Rpb24oa2V5IGFzIFRLZXkpIDogKGtleSBhcyBzdHJpbmcpO1xuICAgICAgcmV0dXJuIF9jYWNoZVtrZXlTdHJpbmddPy5pdGVtO1xuICAgIH07XG5cbiAgICByZXR1cm4geyBjbGVhciwgZGVzdHJveSwgZ2V0LCBzYXZlLCBjYWNoZTogKCkgPT4gX2NhY2hlIH07XG4gIH07XG5cbiAgdHJhY2tCeUN1c3RvbUlEID0gKGluZGV4LCBpdGVtKSA9PiB7XG4gICAgaWYgKCFpdGVtW3RoaXMuY3VzdG9tSURGaWVsZF0pIHtcbiAgICAgIGl0ZW1bdGhpcy5jdXN0b21JREZpZWxkXSA9IHRoaXMuZ2VuZXJhdGVVVUlEKCk7XG4gICAgICBjb25zb2xlLmxvZygnc2V0IGN1c3RvbSBpZCcpO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbVt0aGlzLmN1c3RvbUlERmllbGRdO1xuICB9O1xuICB0cmFja0J5Rm9yRm9ybXMgPSAoaW5kZXgsIGl0ZW06IEZvcm1Hcm91cCkgPT4ge1xuICAgIGlmICghaXRlbS5jb250cm9sc1t0aGlzLmN1c3RvbUlERmllbGRdKVxuICAgICAgaXRlbS5hZGRDb250cm9sKHRoaXMuY3VzdG9tSURGaWVsZCwgbmV3IEZvcm1Db250cm9sKHRoaXMuZ2VuZXJhdGVVVUlEKCkpKTtcbiAgICByZXR1cm4gaXRlbS5jb250cm9sc1t0aGlzLmN1c3RvbUlERmllbGRdLnZhbHVlO1xuICB9O1xuICBvYmplY3RUb0Zvcm1Hcm91cCA9IDxUPihkYXRhOiBUKSA9PiB7XG4gICAgY29uc3QgZm9ybSA9IG5ldyBGb3JtR3JvdXA8SVN0cmljdEZvcm1Hcm91cDxUPj4oe30gYXMgYW55KTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKVxuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpKVxuICAgICAgICBmb3JtLmFkZENvbnRyb2woa2V5LCBuZXcgRm9ybUNvbnRyb2woZGF0YVtrZXldKSk7XG4gICAgcmV0dXJuIGZvcm07XG4gIH07XG5cbiAgZm9ybVNjaGVtYVRvRm9ybUdyb3VwID0gPFQgZXh0ZW5kcyB7IFt4OiBzdHJpbmddOiBhbnkgfT4oc2NoZW1hOiBJRm9ybVNjaGVtYVtdLCBkYXRhPzogVCkgPT4ge1xuICAgIGNvbnN0IGZvcm0gPSBuZXcgRm9ybUdyb3VwPElTdHJpY3RGb3JtR3JvdXA8VD4+KHt9IGFzIGFueSk7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHNjaGVtYSlcbiAgICAgIGZvcm0uYWRkQ29udHJvbChpdGVtLmZpZWxkLnRvU3RyaW5nKCksIG5ldyBGb3JtQ29udHJvbChkYXRhW2l0ZW0uZmllbGQudG9TdHJpbmcoKV0pKTtcbiAgICByZXR1cm4gZm9ybTtcbiAgfTtcblxuICB0aW1lQ29kZUJsb2NrID0gPFQ+KGxhYmVsOiBzdHJpbmcsIGNiOiAoKSA9PiBUKSA9PiB7XG4gICAgY29uc3Qgc3RhcnRUSW1lID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCByZXMgPSBjYigpO1xuICAgIGNvbnN0IGVuZFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIGNvbnNvbGUubG9nKGxhYmVsLCBzdGFydFRJbWUsIGVuZFRpbWUsIChlbmRUaW1lIC0gc3RhcnRUSW1lKSAvIDEwMDAgKyAnc2VjJyk7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvKipcbiAgICogRGVsZXRlIG51bGwgb3IgdW5kZWZpbmVkIGZpZWxkcyBmcm9tIGFuIG9iamVjdFxuICAgKiBAcGFyYW0gb2JqIE9iamVjdCB0byBkZWxldGUgZnJvbVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZGVsZXRlTnVsbCA9IDxUPihvYmo6IFQpID0+IHtcbiAgICBjb25zdCByZXQ6IFQgPSB7fSBhcyBhbnk7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKVxuICAgICAgaWYgKG9ialtrZXldID09PSBudWxsIHx8IG9ialtrZXldID09PSB1bmRlZmluZWQgfHwgb2JqW2tleV0gPT09ICcnKSBjb250aW51ZTtcbiAgICAgIGVsc2UgcmV0W2tleV0gPSBvYmpba2V5XTtcblxuICAgIHJldHVybiByZXQ7XG4gIH07XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRpbWVzdGFtcCBpbnRvIGhyLG1pbixzZWNcbiAgICogQHBhcmFtIHRpbWVUYWtlbiBUaW1lIHRha2VuIGluIHRpbWVzdGFtcFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZm9ybWF0VGltZVRha2VuID0gKHRpbWVUYWtlbjogbnVtYmVyKSA9PiB7XG4gICAgaWYgKHRpbWVUYWtlbiA9PSBudWxsKSByZXR1cm4gJyc7XG4gICAgY29uc3QgdGltZUxlZnQgPSB0aGlzLnNlY29uZHNUb0hvdXJNaW5TZWMoTWF0aC5yb3VuZCh0aW1lVGFrZW4gLyAxMDAwKSB8fCAxKTtcbiAgICByZXR1cm4gKFxuICAgICAgKHRpbWVMZWZ0LmhvdXJzID8gdGltZUxlZnQuaG91cnMgKyAnaHInIDogJycpICtcbiAgICAgICh0aW1lTGVmdC5taW5zID8gdGltZUxlZnQubWlucyArICdtaW4nIDogJycpICtcbiAgICAgICh0aW1lTGVmdC5zZWNzID8gdGltZUxlZnQuc2VjcyArICdzZWMnIDogJycpXG4gICAgKTtcbiAgfTtcbn1cbiJdfQ==
852
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDTCxTQUFTLElBQUksU0FBUyxHQUV2QixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxXQUFXLElBQUksV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQW9CLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNFLE9BQU8sRUFBRSwyQkFBMkIsSUFBSSxHQUFHLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRSxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQztBQUNuQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQXNDLE1BQU0sOEJBQThCLENBQUM7QUFDbkcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBSUwsV0FBVyxFQUNYLFdB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RUFBRTtZQUM1QixNQUFNLEVBQUUsVUFBVSxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU07WUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsSUFBSSxTQUFTO1NBQzdELENBQUMsQ0FBQztRQUNILE9BQU8sQ0FDTCxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDekQsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3ZGLEdBQUcsQ0FDSixDQUFDO0lBQ0osQ0FBQzs4R0Evd0JVLGNBQWM7a0hBQWQsY0FBYyxjQURELE1BQU07OzJGQUNuQixjQUFjO2tCQUQxQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEN1cnJlbmN5UGlwZSwgRGF0ZVBpcGUsIERlY2ltYWxQaXBlLCBMb2NhdGlvbiwgVGl0bGVDYXNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE1hdERpYWxvZyBhcyBNYXREaWFsb2csXG4gIE1hdERpYWxvZ0NvbmZpZyBhcyBNYXREaWFsb2dDb25maWcsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciBhcyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgUm91dGVyLCBOYXZpZ2F0aW9uRXh0cmFzLCBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBFVFNSZWFjdGl2ZUZvcm1JbnB1dFNlcnZpY2UgYXMgSVMxIH0gZnJvbSAnLi9pbnB1dC5zZXJ2aWNlJztcbmltcG9ydCBqZmQgZnJvbSAnanMtZmlsZS1kb3dubG9hZCc7XG5pbXBvcnQgeyBQYWdlTG9hZGVyU2VydmljZSB9IGZyb20gJy4vcGFnZS1sb2FkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWcsIENvbmZpZyBhcyBjb25maWcgfSBmcm9tICcuLi9jb25maWdzL2luZGV4LmNvbmZpZyc7XG5pbXBvcnQgeyBBcHBSb3V0ZUJhc2UgfSBmcm9tICcuLi9TaGFyZWQvbW9kZWxzL1JvdXRlSXRlbS5jbGFzcyc7XG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcbmltcG9ydCB7IEVWYWxpZGF0aW9uVHlwZSwgSVN0cmljdEZvcm1Hcm91cCwgU3RhdHVzLCBUYWJsZUNvbCB9IGZyb20gJy4uL1NoYXJlZC9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgUGFnZVNlcnZpY2UgfSBmcm9tICcuL3BhZ2Uuc2VydmljZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEFzeW5jVmFsaWRhdG9yRm4sXG4gIEZvcm1BcnJheSxcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbE9wdGlvbnMsXG4gIEZvcm1Hcm91cCxcbiAgVW50eXBlZEZvcm1BcnJheSxcbiAgVmFsaWRhdG9yRm4sXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi9SZXVzYWJsZXMvcmV1c2FibGUtcGFnZXMvbG9nZ2VyL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge1xuICBpc09ic2VydmFibGUsXG4gIGxhc3RWYWx1ZUZyb20sXG4gIG1lcmdlLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgUmVwbGF5U3ViamVjdCxcbiAgU3Vic2NyaXB0aW9uLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVFVFNQYWdlQnRuSUQgfSBmcm9tICcuLi9TaGFyZWQvbW9kZWxzL0lNZW51SXRlbSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFNES0Vudmlyb25tZW50IH0gZnJvbSAnLi4vU2hhcmVkL21vZGVscy9lbnZpcm9ubWVudC5tb2RlbCc7XG5pbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBEZWJvdW5jZXJTZXJ2aWNlIH0gZnJvbSAnLi9kZWJvdW5jZXIuc2VydmljZSc7XG5pbXBvcnQgeyBJRm9ybVNjaGVtYSB9IGZyb20gJy4uL1NoYXJlZC9jb21wb25lbnRzL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgUGFwYSBmcm9tICdwYXBhcGFyc2UnO1xuaW1wb3J0IHsgSUluZm9EaWFsb2dCdG4gfSBmcm9tICcuLi9TaGFyZWQvY29tcG9uZW50cy9pbmZvLWRpYWxvZy9pbmZvLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBFVkZ1bmN0aW9ucyB9IGZyb20gJy4uL2NvbmZpZ3MvYmFzZS1mdW5jdGlvbnMnO1xuaW1wb3J0IHsgVG9hc3ROb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gJ0BzZXJlbmUtZGV2L3RvYXN0LW5vdGlmaWNhdGlvbnMnO1xuZGVjbGFyZSBjb25zdCAkOiBhbnk7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVXRpbGl0eVNlcnZpY2U8VEVudmlyb25tZW50IGV4dGVuZHMgU0RLRW52aXJvbm1lbnQgPSBTREtFbnZpcm9ubWVudD4ge1xuICBwdWJsaWMgZGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZyk7XG4gIHB1YmxpYyBzbmFja0JhciA9IGluamVjdChNYXRTbmFja0Jhcik7XG4gIHB1YmxpYyByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHVibGljIHRpdGxlUyA9IGluamVjdChUaXRsZSk7XG4gIHB1YmxpYyBsb2NhdGlvbiA9IGluamVjdChMb2NhdGlvbik7XG4gIHB1YmxpYyBpbnB1dFNlcnZpY2UgPSBpbmplY3QoSVMxKTtcbiAgcHVibGljIHBTID0gaW5qZWN0KFBhZ2VMb2FkZXJTZXJ2aWNlKTtcbiAgcHVibGljIGN1cnJlbmN5UGlwZSA9IGluamVjdChDdXJyZW5jeVBpcGUpO1xuICBwdWJsaWMgdGl0bGVDYXNlUGlwZSA9IGluamVjdChUaXRsZUNhc2VQaXBlKTtcbiAgcHVibGljIGxvZ2dlclNlcnZpY2UgPSBpbmplY3QoTG9nZ2VyU2VydmljZSk7XG4gIHB1YmxpYyBwYWdlUyA9IGluamVjdChQYWdlU2VydmljZSk7XG4gIHB1YmxpYyByZXNwb25zaXZlID0gaW5qZWN0KEJyZWFrcG9pbnRPYnNlcnZlcik7XG4gIHB1YmxpYyBkYXRlUGlwZSA9IGluamVjdChEYXRlUGlwZSk7XG4gIHB1YmxpYyBkZWJvdW5jZXJTZXJ2aWNlID0gaW5qZWN0KERlYm91bmNlclNlcnZpY2UpO1xuICBwdWJsaWMgbnVtYmVyUGlwZSA9IGluamVjdChEZWNpbWFsUGlwZSk7XG4gIHB1YmxpYyB0b2FzdE5vdGlmaWNhdGlvblNlcnZpY2UgPSBpbmplY3QoVG9hc3ROb3RpZmljYXRpb25zU2VydmljZSk7XG4gIHI6IEFwcFJvdXRlQmFzZTtcbiAgZG93bmxvYWRlciA9IGpmZDtcbiAgZVZhbGlkYXRpb25UeXBlID0gRVZhbGlkYXRpb25UeXBlO1xuICBjb25maWcgPSBDb25maWc7XG4gIGVudmlyb25tZW50OiBURW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudCBhcyBhbnk7XG4gIHBiaWQgPSBFRVRTUGFnZUJ0bklEO1xuICAkOiBhbnk7XG4gIGlzTW9iaWxlOiBib29sZWFuO1xuICAvKipcbiAgICogRW1pdHMgdHJ1ZSBpZiBtb2JpbGVcbiAgICovXG4gIG1vYmlsZVF1ZXJ5Q2hhbmdlZCA9IG5ldyBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGlzTW9iaWxlU2lnbmFsID0gdG9TaWduYWw8Ym9vbGVhbj4oXG4gICAgdGhpcy5yZXNwb25zaXZlLm9ic2VydmUoW0JyZWFrcG9pbnRzLkhhbmRzZXRdKS5waXBlKFxuICAgICAgbWFwKCh7IG1hdGNoZXMgfSkgPT4gbWF0Y2hlcyksXG4gICAgICB0YXAoKHIpID0+IHtcbiAgICAgICAgdGhpcy5pc01vYmlsZSA9IHI7XG4gICAgICAgIHRoaXMubW9iaWxlUXVlcnlDaGFuZ2VkLm5leHQocik7XG4gICAgICB9KSxcbiAgICApLFxuICApO1xuICByZWFkb25seSBpc1RhYmxldFNpZ25hbCA9IHRvU2lnbmFsPGJvb2xlYW4+KFxuICAgIHRoaXMucmVzcG9uc2l2ZS5vYnNlcnZlKFtCcmVha3BvaW50cy5UYWJsZXRdKS5waXBlKG1hcCgoeyBtYXRjaGVzIH0pID0+IG1hdGNoZXMpKSxcbiAgKTtcbiAgcmVhZG9ubHkgaXNEZXNrdG9wU2lnbmFsID0gdG9TaWduYWw8Ym9vbGVhbj4oXG4gICAgdGhpcy5yZXNwb25zaXZlLm9ic2VydmUoW0JyZWFrcG9pbnRzLldlYkxhbmRzY2FwZV0pLnBpcGUobWFwKCh7IG1hdGNoZXMgfSkgPT4gbWF0Y2hlcykpLFxuICApO1xuXG4gIHBhZ2VTaXplT3B0aW9ucyA9IFs1LCAxMCwgMTUsIDIwLCA1MCwgMTAwLCAyMDAsIDUwMCwgMTAwMF07XG4gIGRhdGVQaXBlRGF0ZSA9ICdFRSwgTU1NTSBkLCB5JztcbiAgZGF0ZVBpcGVEYXRlTGVhbiA9ICdFRSwgTU1NIGQsIHknO1xuICBkYXRlUGlwZURhdGVUaW1lTGVhbiA9ICdFRSwgTU1NIGQsIHkgaGg6bW0gYSc7XG4gIHJlYWRvbmx5IGN1c3RvbUlERmllbGQgPSAnX19pZCc7XG4gIHJlYWRvbmx5IGRlbGltaXRlciA9IGB+fn4vL35+fmA7XG4gIGZvcm1CdWlsZGVyID0gbmV3IEZvcm1CdWlsZGVyKCkubm9uTnVsbGFibGU7XG4gIGNvbnN0cnVjdG9yKCkge31cbiAgZm9ybUNvbnRyb2wgPSA8VD4oXG4gICAgdmFsdWU/OiBUIHwgbnVsbCxcbiAgICB2YWxpZGF0b3JPck9wdHM/OiBWYWxpZGF0b3JGbiB8IFZhbGlkYXRvckZuW10gfCBGb3JtQ29udHJvbE9wdGlvbnMsXG4gICAgYXN5bmNWYWxpZGF0b3I/OiBBc3luY1ZhbGlkYXRvckZuIHwgQXN5bmNWYWxpZGF0b3JGbltdLFxuICApID0+IFt2YWx1ZSBhcyBhbnkgYXMgVCwgdmFsaWRhdG9yT3JPcHRzISwgYXN5bmNWYWxpZGF0b3IhXTtcblxuICBiYWNrID0gKCkgPT4gdGhpcy5sb2NhdGlvbi5iYWNrKCk7XG5cbiAgcmVhZG9ubHkgdG9hc3QgPSB0aGlzLnRvYXN0Tm90aWZpY2F0aW9uU2VydmljZT8udG9hc3RTaG9ydGN1dD8uKCk7XG5cbiAgb25seU9uZUlucHV0KGlucHV0czogRm9ybUNvbnRyb2xbXSkge1xuICAgIGNvbnN0IG5JbnB1dHMgPSBpbnB1dHM/Lm1hcCgoaW5wKSA9PiAoeyBpZDogdGhpcy5nZW5SYW5kb21JRCwgaW5wIH0pKSB8fCBbXTtcbiAgICByZXR1cm4gbWVyZ2UoXG4gICAgICAuLi5uSW5wdXRzLm1hcCgoaSkgPT4gaS5pbnAudmFsdWVDaGFuZ2VzLnBpcGUobWFwKCh2YWwpID0+ICh7IGlkOiBpLmlkLCB2YWwgfSkpKSksXG4gICAgKS5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgIC8vIGRlYnVnZ2VyXG4gICAgICBpZiAoci52YWwpXG4gICAgICAgIG5JbnB1dHMuZmlsdGVyKCh4KSA9PiB4LmlkICE9IHIuaWQpLmZvckVhY2goKHgpID0+IHguaW5wLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pKTtcbiAgICAgIGVsc2UgbklucHV0cy5maWx0ZXIoKHgpID0+IHguaWQgIT0gci5pZCkuZm9yRWFjaCgoeCkgPT4geC5pbnAuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KSk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBjb3B5UGF5bG9hZChwYXlsb2FkKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICgoPFNES0Vudmlyb25tZW50PnRoaXMuZW52aXJvbm1lbnQpLmRlYnVnKSB7XG4gICAgICAgIGNvbnN0IGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpO1xuICAgICAgICBlbGVtLnZhbHVlID0gSlNPTi5zdHJpbmdpZnkocGF5bG9hZCk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbSk7XG4gICAgICAgIGVsZW0uc2VsZWN0KCk7XG4gICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG4gIH1cbiAgeE9yWSA9ICh4LCB5ID0gJy0nKSA9PiBgJHt4ID09IG51bGwgPyB5IDogeH1gO1xuICB0b1RpdGxlQ2FzZSh0ZXh0OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy50aXRsZUNhc2VQaXBlLnRyYW5zZm9ybSh0ZXh0KTtcbiAgfVxuICAvKipcbiAgICogQ29udmVydCBEYXRlIHN0cmluZyB0byBEYXRlIFRpbWUgc3RyaW5nXG4gICAqIEBwYXJhbSBkYXRlU3RyIERhdGUgc3RyaW5nXG4gICAqIEBleGFtcGxlICcyMDIyLTAxLTI1J1xuICAgKiBAcGFyYW0gY29uZmlnIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBjb252ZXJzaW9uXG4gICAqIEByZXR1cm5zIFJldHVybnMgYSBEYXRlIFRpbWUgc3RyaW5nXG4gICAqIEBleGFtcGxlICcyMDIyLTAxLTI1VDAwOjAwOjAwWicgb3IgJzIwMjItMDEtMjUgMDA6MDA6MDAnXG4gICAqL1xuICBkYXRlVG9EYXRlVGltZSA9IChcbiAgICBkYXRlU3RyOiBzdHJpbmcsXG4gICAgY29uZmlnPzoge1xuICAgICAgLyoqXG4gICAgICAgKiBVc2UgdGhlIHl5eXktbW0tZGQgaGg6bW06c3MgZm9ybWF0XG4gICAgICAgKi9cbiAgICAgIG9taXRUPzogYm9vbGVhbjtcbiAgICAgIC8qKlRpbWUgdG8gYXBwZW5kIHRvIGRhdGUuIEBleGFtcGxlIGAxMjowMDowMFpgICovXG4gICAgICB0aW1lPzogc3RyaW5nO1xuICAgIH0sXG4gICkgPT4ge1xuICAgIHJldHVybiAhZGF0ZVN0clxuICAgICAgPyBudWxsXG4gICAgICA6IGRhdGVTdHJbMTBdID09ICdUJ1xuICAgICAgICA/IGRhdGVTdHJcbiAgICAgICAgOiBkYXRlU3RyICtcbiAgICAgICAgICAoISFjb25maWc/Lm9taXRUID8gYCAke2NvbmZpZz8udGltZSB8fCAnMDA6MDA6MDAnfWAgOiBgVCR7Y29uZmlnPy50aW1lIHx8ICcwMDowMDowMFonfWApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBTZXQgYW4gT2JqZWN0J3MgZmllbGQgaWYgdGhlIG9iamVjdCBleGlzdHMgb3IgZG9uJ3QgaWYgdGhlIG9iamVjdCBkb2Vzbid0XG4gICAqIEBwYXJhbSBvYmogT2JqZWN0IGhvbGRpbmcgdGhlIGZpZWxkXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgTmFtZSBvZiB0aGUgZmllbGQgdG8gc2V0XG4gICAqIEBwYXJhbSB2YWwgVmFsdWUgdG8gc2V0IHRoZSBmaWVsZCB3aXRoXG4gICAqIEByZXR1cm5zIFJldHVybnMgdGhlIG9iamVjdCBob2xkaW5nIHRoZSBkYXRhXG4gICAqL1xuICBzZXR0ZXJXaXRoTnVsbDxUPihvYmo6IFQsIGt2cHM6IFBhcnRpYWw8VD4pIHtcbiAgICBpZiAoIW9iaikgcmV0dXJuIG51bGw7XG4gICAgZm9yIChjb25zdCBrZXkgaW4ga3Zwcykge1xuICAgICAgb2JqW2tleV0gPSBrdnBzW2tleV07XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICAvKipcbiAgICogKFNldCBhbiBPYmplY3QncyBmaWVsZCBpZiB0aGUgb2JqZWN0IGV4aXN0cyBvciBkb24ndCBpZiB0aGUgb2JqZWN0IGRvZXNuJ3QpIGZvciBtdWx0aXBsZSBlbnRyaWVzXG4gICAqIEBwYXJhbSBpdGVtcyBBcnJheSBvZiBvYmplY3RzIGFuZCB0aGVpciBtb2RpZmljYXRpb25zXG4gICAqL1xuICBzZXR0ZXJXaXRoTnVsbEFycmF5PFQ+KGl0ZW1zOiB7IG9iajogVDsga3ZwczogUGFydGlhbDxUPiB9W10pIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIHRoaXMuc2V0dGVyV2l0aE51bGwoaXRlbS5vYmosIGl0ZW0ua3Zwcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGRlbGV0aW9uIG9mIHJvd3MgZnJvbSBhIEZvcm1BcnJheVxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggb2YgdGhlIHJvdyB0byBkZWxldGVcbiAgICogQHBhcmFtIGZhIFRoZSBGb3JtQXJyYXkgdGhhdCBob2xkcyB0aGUgcm93c1xuICAgKiBAcGFyYW0gZGVsZXRlU2VydmljZSBUaGUgZGVsZXRpb24gc2VydmljZSB0byBiZSBjYWxsZWQgKEl0IHNob3VsZCBiZSBhbiBhbm9ueW1vdXMgZnVuY3Rpb24pXG4gICAqIEBwYXJhbSBhZGRSb3dGdW5jIFRoZSBmdW5jdGlvbiAoYW5vbnltb3VzKSB0aGF0IGFkZHMgYSBuZXcgcm93IHRvIHRoZSBGb3JtQXJyYXlcbiAgICogQHBhcmFtIGVtaXRFdmVudCBTcGVjaWZ5IHdoZXRoZXIgdG8gZW1pdCBhbiBldmVudCB3aGVuIG1hbmlwdWxhdGluZyB0aGUgRm9ybUFycmF5XG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBoYW5kbGVGb3JtUm93RGVsZXRlID0gKFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgZmE6IFVudHlwZWRGb3JtQXJyYXksXG4gICAgZGVsZXRlU2VydmljZTogKC4uLmFyZ3MpID0+IFByb21pc2U8YW55PiB8IE9ic2VydmFibGU8YW55PixcbiAgICBhZGRSb3dGdW5jOiAoLi4uYXJncykgPT4gYW55LFxuICAgIGV4dHJhQ29uZmlnPzoge1xuICAgICAgZG9udEVtaXRFdmVudD86IGJvb2xlYW47XG4gICAgICBvbkRlbGV0ZT86IChyZXMpID0+IGFueTtcbiAgICB9LFxuICApID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSkgPT4ge1xuICAgICAgY29uc3QgaWQgPSBjbG9uZURlZXAoZmEuY29udHJvbHNbaW5kZXhdPy52YWx1ZT8uaWQpO1xuICAgICAgLy8gZGVidWdnZXI7XG4gICAgICBpZiAoZmEuY29udHJvbHMubGVuZ3RoID09IDEgJiYgaWQpIHtcbiAgICAgICAgZmEucmVtb3ZlQXQoaW5kZXgsIHsgZW1pdEV2ZW50OiAhZXh0cmFDb25maWc/LmRvbnRFbWl0RXZlbnQgfSk7XG4gICAgICAgIGFkZFJvd0Z1bmMoKTtcbiAgICAgIH0gZWxzZSBpZiAoZmEuY29udHJvbHMubGVuZ3RoID4gMSlcbiAgICAgICAgZmEucmVtb3ZlQXQoaW5kZXgsIHsgZW1pdEV2ZW50OiAhZXh0cmFDb25maWc/LmRvbnRFbWl0RXZlbnQgfSk7XG4gICAgICBlbHNlIGlmIChmYS5jb250cm9scy5sZW5ndGggPT0gMSkgZmEuY29udHJvbHNbMF0ucmVzZXQoKTtcblxuICAgICAgaWYgKGlkICYmIGRlbGV0ZVNlcnZpY2UpIHtcbiAgICAgICAgY29uc3QgcmVxID0gZGVsZXRlU2VydmljZShpZCk7XG4gICAgICAgIGlmIChyZXFbJ3RvUHJvbWlzZSddKSB7XG4gICAgICAgICAgcmVzb2x2ZShsYXN0VmFsdWVGcm9tKHJlcSBhcyBPYnNlcnZhYmxlPGFueT4pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKHJlcSBhcyBhbnkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgfVxuICAgIH0pLnRoZW4oKHIpID0+IHtcbiAgICAgIGV4dHJhQ29uZmlnPy5vbkRlbGV0ZShyKTtcbiAgICAgIHJldHVybiByO1xuICAgIH0pO1xuICB9O1xuXG4gIG9wZW5IVE1MSW5GdWxsc2NyZWVuPFRNZXRhZGF0YT4oXG4gICAgZWxlbTogSFRNTEVsZW1lbnQsXG4gICAgbWV0YWRhdGE/OiBUTWV0YWRhdGEsXG4gICAgb25MZWF2ZT86IChtZXRhZGF0YTogVE1ldGFkYXRhKSA9PiBhbnksXG4gICkge1xuICAgIGlmIChlbGVtLnJlcXVlc3RGdWxsc2NyZWVuKSB7XG4gICAgICBlbGVtLm9uZnVsbHNjcmVlbmNoYW5nZSA9IChlKSA9PiB7XG4gICAgICAgIGlmIChvbkxlYXZlKVxuICAgICAgICAgIGVsZW0ub25mdWxsc2NyZWVuY2hhbmdlID0gKGUpID0+IHtcbiAgICAgICAgICAgIC8vICBkZWJ1Z2dlcjtcbiAgICAgICAgICAgIG9uTGVhdmUobWV0YWRhdGEpO1xuICAgICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZWxlbS5yZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgIH0gZWxzZSBpZiAoZWxlbVsnd2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4nXSkge1xuICAgICAgLyogU2FmYXJpICovXG4gICAgICBlbGVtWyd3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbiddKCk7XG4gICAgfSBlbHNlIGlmIChlbGVtWydtc1JlcXVlc3RGdWxsc2NyZWVuJ10pIHtcbiAgICAgIC8qIElFMTEgKi9cbiAgICAgIGVsZW1bJ21zUmVxdWVzdEZ1bGxzY3JlZW4nXSgpO1xuICAgIH1cbiAgfVxuICBjbG9zZUZ1bGxzY3JlZW4oKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChkb2N1bWVudC5leGl0RnVsbHNjcmVlbikge1xuICAgICAgICBkb2N1bWVudC5leGl0RnVsbHNjcmVlbigpO1xuICAgICAgfSBlbHNlIGlmIChkb2N1bWVudFsnd2Via2l0RXhpdEZ1bGxzY3JlZW4nXSkge1xuICAgICAgICAvKiBTYWZhcmkgKi9cbiAgICAgICAgZG9jdW1lbnRbJ3dlYmtpdEV4aXRGdWxsc2NyZWVuJ10oKTtcbiAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRbJ21zRXhpdEZ1bGxzY3JlZW4nXSkge1xuICAgICAgICAvKiBJRTExICovXG4gICAgICAgIGRvY3VtZW50Wydtc0V4aXRGdWxsc2NyZWVuJ10oKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge31cbiAgfVxuXG4gIGFkZFRvU3Vic1RvQ2xvc2VPblJvdXRlID0gKC4uLnN1YjogU3Vic2NyaXB0aW9uW10pID0+IHtcbiAgICBpZiAoIUNvbmZpZy5zdWJzVG9DbG9zZU9uUm91dGUpIENvbmZpZy5zdWJzVG9DbG9zZU9uUm91dGUgPSBbXTtcbiAgICBDb25maWcuc3Vic1RvQ2xvc2VPblJvdXRlLnB1c2goLi4uc3ViKTtcbiAgfTtcbiAgY2xlYXJTdWJzVG9DbG9zZU9uUm91dGUgPSAoKSA9PiB7XG4gICAgQ29uZmlnLnN1YnNUb0Nsb3NlT25Sb3V0ZT8uZm9yRWFjaCgoeCkgPT4geD8udW5zdWJzY3JpYmUoKSk7XG4gICAgQ29uZmlnLnN1YnNUb0Nsb3NlT25Sb3V0ZSA9IFtdO1xuICB9O1xuICAvKipcbiAgICogSGFuZGxlcyB0aGUgZGVsZXRpb24gb2Ygcm93cyBmcm9tIGFuIGFycmF5XG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBvZiB0aGUgcm93IHRvIGRlbGV0ZVxuICAgKiBAcGFyYW0gYXJyIFRoZSBhcnJheSB0aGF0IGhvbGRzIHRoZSByb3dzXG4gICAqIEBwYXJhbSBkZWxldGVTZXJ2aWNlIFRoZSBkZWxldGlvbiBzZXJ2aWNlIHRvIGJlIGNhbGxlZCAoSXQgc2hvdWxkIGJlIGFuIGFub255bW91cyBmdW5jdGlvbilcbiAgICogQHBhcmFtIGFkZFJvd0Z1bmMgVGhlIGZ1bmN0aW9uIChhbm9ueW1vdXMpIHRoYXQgYWRkcyBhIG5ldyByb3cgdG8gdGhlIGFycmF5XG4gICAqIEBwYXJhbSBjYiBUaGUgZnVuY3Rpb24gdG8gY2FsbGJhY2sgd2l0aCB0aGUgcmVzcG9uc2Ugb2YgdGhlIGRlbGV0aW9uIHNlcnZpY2UgYXMgdGhlIGlucHV0IHBhcmFtZXRlclxuICAgKi9cbiAgaGFuZGxlUm93RGVsZXRlID0gYXN5bmMgPFQ+KFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgYXJyOiBhbnlbXSxcbiAgICBkZWxldGVTZXJ2aWNlOiAoLi4uYXJncykgPT4gUHJvbWlzZTxUPiB8IE9ic2VydmFibGU8VD4sXG4gICAgYWRkUm93RnVuYzogKC4uLmFyZ3MpID0+IGFueSxcbiAgICBjYj86IChhbnkpID0+IGFueSxcbiAgKSA9PiB7XG4gICAgY29uc3QgaWQgPSBhcnJbaW5kZXhdPy5pZDtcbiAgICAvLyBkZWJ1Z2dlcjtcblxuICAgIGlmIChpZCAmJiBkZWxldGVTZXJ2aWNlKSB7XG4gICAgICBjb25zdCByZXEgPSBkZWxldGVTZXJ2aWNlKGlkKTtcbiAgICAgIGlmICh0eXBlb2YgcmVxWyd0b1Byb21pc2UnXSA9PSAnZnVuY3Rpb24nKVxuICAgICAgICBjYiA/IGNiKGF3YWl0IHJlcVsndG9Qcm9taXNlJ10oKSkgOiByZXFbJ3RvUHJvbWlzZSddKCk7XG4gICAgICBlbHNlIGNiID8gY2IoYXdhaXQgcmVxKSA6IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGFyci5sZW5ndGggPT0gMSkge1xuICAgICAgYXJyLnNwbGljZShpbmRleCwgMSk7XG4gICAgICBhZGRSb3dGdW5jKCk7XG4gICAgfSBlbHNlIGlmIChhcnIubGVuZ3RoID4gMSkgYXJyLnNwbGljZShpbmRleCwgMSk7XG4gIH07XG4gIC8qKlxuICAgKiBUbyBoYW5kbGUgdGhlIHBhdGNoaW5nIG9mIGEgRm9ybUFycmF5XG4gICAqIEBwYXJhbSBhcnIgVGhlIGFycmF5IHRoYXQgY29udGFpbnMgdGhlIGRhdGFcbiAgICogQHBhcmFtIGFkZEZ1bmMgVGhlIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYWRkaXRpb24gb2Ygc2luZ2xlIGVudHJpZXNcbiAgICogQHBhcmFtIGZvcm1BcnIgVGhlIEZvcm1BcnJheSB0aGF0IHdpbGwgaG9sZCB0aGUgYXJyYXkncyBkYXRhXG4gICAqL1xuICBpbml0UGF0Y2hGb3JtQXJyYXkgPSA8VD4oXG4gICAgYXJyOiBUW10sXG4gICAgYWRkRnVuYzogKGk6IG51bWJlciwgZGF0YT86IFQsIGZvcm1BcnI/OiBGb3JtQXJyYXkpID0+IHZvaWQsXG4gICAgZm9ybUFycjogRm9ybUFycmF5LFxuICApID0+IHtcbiAgICAvLyBkZWJ1Z2dlclxuICAgIGZvcm1BcnI/LmNsZWFyKCk7XG4gICAgaWYgKGFycj8ubGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXJyKSB7XG4gICAgICAgIGFkZEZ1bmMoZm9ybUFyci5sZW5ndGgsIGl0ZW0sIGZvcm1BcnIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWZvcm1BcnIubGVuZ3RoKSBhZGRGdW5jKGZvcm1BcnIubGVuZ3RoLCBudWxsLCBmb3JtQXJyKTtcbiAgICB9XG4gIH07XG4gIHByaXZhdGUgaXNQcm9taXNlID0gKGZ1bmMpID0+IHtcbiAgICByZXR1cm4gdHlwZW9mIGZ1bmMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBmdW5jLnRoZW4gPT09ICdmdW5jdGlvbic7XG4gIH07XG4gIGlzQXN5bmMgPSAoZnVuYykgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICBmdW5jLmNvbnN0cnVjdG9yLm5hbWUgPT09ICdBc3luY0Z1bmN0aW9uJyB8fFxuICAgICAgKHR5cGVvZiBmdW5jID09PSAnZnVuY3Rpb24nICYmIHRoaXMuaXNQcm9taXNlKGZ1bmMoKSkpXG4gICAgKTtcbiAgfTtcblxuICBpc09ic2VydmFibGUgPSA8VD4oZnVuYykgPT4ge1xuICAgIC8vIHJldHVybiB0eXBlb2YgZnVuYyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGZ1bmMuc3Vic2NyaWJlID09PSAnZnVuY3Rpb24nO1xuICAgIC8vIHJldHVybiB0eXBlb2YgZnVuYyA9PT0gJ29iamVjdCcgJiYgZnVuYyBpbnN0YW5jZW9mIE9ic2VydmFibGU7XG4gICAgLy8gcmV0dXJuIHR5cGVvZiBmdW5jID09PSAnb2JqZWN0JyAmJiBmdW5jIGluc3RhbmNlb2YgT2JzZXJ2YWJsZTxUPjtcbiAgICByZXR1cm4gdHlwZW9mIGZ1bmMgPT09ICdvYmplY3QnICYmIGlzT2JzZXJ2YWJsZShmdW5jKTtcbiAgICByZXR1cm4gdHlwZW9mIGZ1bmMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBmdW5jLnRvUHJvbWlzZSA9PT0gJ2Z1bmN0aW9uJztcbiAgfTtcbiAgcHJvbWlzaWZ5VmFsID0gPFQ+KHZhbDogVCB8IFByb21pc2U8VD4gfCBPYnNlcnZhYmxlPFQ+KSA9PiB7XG4gICAgaWYgKHRoaXMuaXNBc3luYyh2YWwpKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbCBhcyBQcm9taXNlPFQ+KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNPYnNlcnZhYmxlKHZhbCkpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobGFzdFZhbHVlRnJvbSh2YWwgYXMgT2JzZXJ2YWJsZTxUPikpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbCBhcyBUKTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBhcnIgQXJyYXkgb2Ygb2JzZXJ2YWJsZXMgdG8gZmV0Y2hcbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgdGhlIHJlc3BvbnNlcyBtZXJnZWQgdG9nZXRoZXIuIEl0IGVtaXRzIHRoZSBtZXJnZWQgcmVzcG9uc2VzIGFzIHRoZXkgYXJlIGZldGNoZWQgYW5kIGNsb3NlcyBvbmNlIGFsbGwgdGhlIHJlc3BvbnNlcyBoYXZlIGJlZW4gZmV0Y2hlZFxuICAgKi9cbiAgbWVyZ2VBcnJPYnNlcnZhYmxlcyA9IDxUPihhcnI6IHsgJGZ1bmM6IE9ic2VydmFibGU8VFtdPiB9W10pID0+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8VFtdPigoc3ViKSA9PiB7XG4gICAgICBjb25zdCByZXQ6IFRbXSA9IFtdO1xuICAgICAgbGV0IHJlc3BvbnNlQ291bnQgPSAwO1xuICAgICAgbWVyZ2UoXG4gICAgICAgIC4uLmFyci5tYXAoKHgpID0+XG4gICAgICAgICAgeC4kZnVuYz8ucGlwZShcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGUpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKChyKSA9PiB7XG4gICAgICAgICAgICAgIHJlc3BvbnNlQ291bnQrKztcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICByZXQucHVzaCguLi5yKTtcbiAgICAgICAgc3ViLm5leHQocmV0KTtcbiAgICAgICAgaWYgKHJlc3BvbnNlQ291bnQgPT0gYXJyLmZpbHRlcigoeCkgPT4geC4kZnVuYykubGVuZ3RoKSB7XG4gICAgICAgICAgLy8gZGVidWdnZXJcbiAgICAgICAgICBzdWIuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG4gIHJlbW92ZUR1cGxpY2F0ZTxUPihsaXN0OiBUW10sIGtleUZpZWxkID0gJ2NvZGUnKSB7XG4gICAgaWYgKCFsaXN0KSByZXR1cm4gbnVsbDtcbiAgICBsaXN0ID0gbGlzdC5maWx0ZXIoKHgpID0+IHgpO1xuICAgIGNvbnN0IHJldDogVFtdID0gW10sXG4gICAgICBkdXBsaWNhdGVNYXA6IHsgW3g6IHN0cmluZ106IGFueSB9ID0ge307XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGxpc3QpIHtcbiAgICAgIGlmIChkdXBsaWNhdGVNYXBbaXRlbVtrZXlGaWVsZF1dKSBjb250aW51ZTtcbiAgICAgIHJldC5wdXNoKGl0ZW0pO1xuICAgICAgZHVwbGljYXRlTWFwW2l0ZW1ba2V5RmllbGRdXSA9IGl0ZW07XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cbiAgZ2V0IGdlblJhbmRvbUlEKCkge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAxMDAwMDAwMDAwMDAwMDAwKTtcbiAgfVxuXG4gIHBpY2tSYW5kb21JbmRleCA9IDxUPihhcnJheTogVFtdKTogVCB8IG51bGwgPT5cbiAgICBhcnJheSA/IGFycmF5W01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGFycmF5Lmxlbmd0aCldIDogbnVsbDtcbiAgc3RvcmVQYXlsb2FkID0gdGhpcy5sb2dnZXJTZXJ2aWNlLmFkZExvZztcbiAgb2JqSXNFbXB0eSA9IChvYmosIGV4Y2x1c2lvbkZpZWxkcz86IHN0cmluZ1tdKSA9PiB7XG4gICAgaWYgKCFvYmopIHJldHVybiB0cnVlO1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgaWYgKGV4Y2x1c2lvbkZpZWxkcz8uaW5jbHVkZXMoa2V5KSkgY29udGludWU7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICBpZiAob2JqW2tleV0pIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIGRhdGFHZW4gPSA8VCA9IGFueT4oa2V5czogc3RyaW5nW10sIGxlbmd0aCA9IDEwKSA9PiB7XG4gICAgY29uc3QgcmV0OiBhbnlbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCB0OiBhbnkgPSB7fTtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgdFtrZXldID0gdGhpcy50ZXh0R2VuKCk7XG4gICAgICB9XG4gICAgICByZXQucHVzaCh0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJldCBhcyBUW107XG4gIH07XG4gIHRleHRHZW4gPSAoKSA9PiAncmFuZG9tJyArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMDApO1xuICB0cmFja0J5Q29kZShpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpIHtcbiAgICByZXR1cm4gaXRlbT8uY29kZTtcbiAgfVxuICB0cmFja0J5SUQoaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSB7XG4gICAgcmV0dXJuIGl0ZW0/LmlkO1xuICB9XG4gIGRpYWxvZ09wZW5lciA9IChjb21wOiBhbnksIGNvbmZpZzogTWF0RGlhbG9nQ29uZmlnLCB2YWx1ZUNCOiAocikgPT4gYW55LCBub1ZhbHVlQ0I/OiBhbnkpID0+XG4gICAgdGhpcy5kaWFsb2dPcGVuZXJSZWYoY29tcCwgY29uZmlnKVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgICAgaWYgKHIgIT0gbnVsbCAmJiByICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHZhbHVlQ0Iocik7XG4gICAgICAgIH0gZWxzZSBpZiAobm9WYWx1ZUNCKSB7XG4gICAgICAgICAgbm9WYWx1ZUNCKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICBkaWFsb2dPcGVuZXJSZWYgPSAoY29tcDogYW55LCBjb25maWc6IE1hdERpYWxvZ0NvbmZpZykgPT4gdGhpcy5kaWFsb2cub3Blbihjb21wLCBjb25maWcpO1xuICBmaW5kTGFiZWxCeUl0ZW0gPSAoaXRlbSwgYXJyOiBhbnlbXSwgbGFiZWxGaWVsZD86IHN0cmluZywga2V5RmllbGQ6IHN0cmluZyA9ICdjb2RlJykgPT4ge1xuICAgIGlmICghaXRlbSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3Qgb2JqID0gYXJyPy5maW5kKCh4KSA9PiB4W2tleUZpZWxkXSA9PSBpdGVtKTtcbiAgICBpZiAoIW9iaikgcmV0dXJuIGl0ZW07XG4gICAgZWxzZSByZXR1cm4gYCR7aXRlbX0gLSAke29ialtsYWJlbEZpZWxkIHx8ICd0aXRsZSddIHx8IG9ialtsYWJlbEZpZWxkIHx8ICdkZXNjcmlwdGlvbiddfWA7XG4gIH07XG5cbiAgZm9ybUZpZWxkc0Zyb21BcnIgPSB0aGlzLmlucHV0U2VydmljZS5mb3JtRmllbGRzRnJvbUZDSW5wdXRzQXJyO1xuICBvYmpUb0Zvcm1Db250cm9scyA9IHRoaXMuaW5wdXRTZXJ2aWNlLmZvcm1GaWVsZHNGcm9tT2JqO1xuICBmb3JtU2NoZW1hVG9Gb3JtQ29udHJvbHMgPSB0aGlzLmlucHV0U2VydmljZS5mb3JtU2NoZW1hVG9Gb3JtQ29udHJvbHM7XG4gIGFkZEZvcm1TY2hlbWFUb0Zvcm0gPSB0aGlzLmlucHV0U2VydmljZS5hZGRGb3JtU2NoZW1hVG9Gb3JtO1xuXG4gIGJpbmRGb3JtQ29udHJvbFRvSW5wdXRzID0gdGhpcy5pbnB1dFNlcnZpY2UuYmluZEZvcm1Db250cm9sVG9JbnB1dHM7XG5cbiAgZ28gPSAodmFsdWU6IHN0cmluZywgZXh0cmE/OiBOYXZpZ2F0aW9uRXh0cmFzKSA9PiB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3ZhbHVlXSwgZXh0cmEpO1xuICB9O1xuICAvKipcbiAgICogUm91dGUgdG8gY29tcG9uZW50XG4gICAqIEBwYXJhbSByb3V0ZSBSb3V0ZSBvZiBwYXRoIHRvIGNvbXBvbmVudFxuICAgKiBAcGFyYW0gZXh0cmFcbiAgICovXG4gIGdvUiA9IChyb3V0ZTogc3RyaW5nLCBleHRyYT86IE5hdmlnYXRpb25FeHRyYXMpID0+IHtcbiAgICBpZiAoISg8U0RLRW52aXJvbm1lbnQ+dGhpcy5lbnZpcm9ubWVudCkuYWN0aXZhdGVkUm91dGUpIGRlYnVnZ2VyO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyb3V0ZV0sIHtcbiAgICAgIHJlbGF0aXZlVG86ICg8U0RLRW52aXJvbm1lbnQ+dGhpcy5lbnZpcm9ubWVudCkuYWN0aXZhdGVkUm91dGUsXG4gICAgICAuLi5leHRyYSxcbiAgICB9KTtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgfTtcblxuICByZWxhdGl2ZVJvdXRlcigpIHtcbiAgICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKSxcbiAgICAgIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgICByZXR1cm4ge1xuICAgICAgcm91dGUsXG4gICAgICByb3V0ZXIsXG4gICAgICBuYXZpZ2F0ZTogKGxpbms6IHN0cmluZywgY29uZmlnPzogTmF2aWdhdGlvbkV4dHJhcyB8IHVuZGVmaW5lZCkgPT5cbiAgICAgICAgcm91dGVyLm5hdmlnYXRlKFtsaW5rXSwgeyByZWxhdGl2ZVRvOiByb3V0ZSwgLi4uY29uZmlnIH0pLFxuICAgICAgcXVlcnlQYXJhbXM6IHJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLFxuICAgICAgcGF0aFBhcmFtczogcm91dGUuc25hcHNob3QucGFyYW1zLFxuICAgIH07XG4gIH1cblxuICBtb25leVBhcnNlciA9IChhbW91bnQ6IHN0cmluZyB8IG51bWJlciwgY3VycmVuY3kgPSAnICcpID0+IHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW5jeVBpcGUudHJhbnNmb3JtKGFtb3VudCwgY3VycmVuY3kgfHwgJyAnKTtcbiAgfTtcbiAgZXh0cmFjdFVwbG9hZChldmVudDogYW55KSB7XG4gICAgcmV0dXJuIChldmVudC50YXJnZXQuZmlsZXMgYXMgRmlsZVtdKSB8fCBbXTtcbiAgfVxuXG4gIHNlY29uZHNUb0hvdXJNaW5TZWMgPSAoc2Vjb25kczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFzZWNvbmRzKSByZXR1cm4geyBzZWNzOiBudWxsLCBob3VyczogbnVsbCwgbWluczogbnVsbCB9O1xuICAgIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gMzYwMCkgfHwgMCxcbiAgICAgIHNlY29uZHNFeEhvdXJzID0gc2Vjb25kcyAlIDM2MDAgfHwgMCxcbiAgICAgIG1pbnMgPSBNYXRoLmZsb29yKHNlY29uZHNFeEhvdXJzIC8gNjApIHx8IDAsXG4gICAgICBzZWNzID0gc2Vjb25kc0V4SG91cnMgJSA2MDtcbiAgICByZXR1cm4geyBob3VycywgbWlucywgc2VjcyB9O1xuICB9O1xuICBtaW51dGVzVG9EYXlIb3VyTWluID0gKG1pbnV0ZXM6IG51bWJlcikgPT4ge1xuICAgIGlmICghbWludXRlcykgcmV0dXJuIHsgZGF5czogbnVsbCwgaG91cnM6IG51bGwsIG1pbnM6IG51bGwgfTtcbiAgICBjb25zdCBkYXlzID0gTWF0aC5mbG9vcihtaW51dGVzIC8gMTQ0MCkgfHwgMCxcbiAgICAgIG1pbml1dGVzRXhEYXlzID0gbWludXRlcyAlIDE0NDAgfHwgMCxcbiAgICAgIGhvdXJzID0gTWF0aC5mbG9vcihtaW5pdXRlc0V4RGF5cyAvIDYwKSB8fCAwLFxuICAgICAgbWlucyA9IG1pbml1dGVzRXhEYXlzICUgNjAgfHwgMDtcbiAgICByZXR1cm4geyBkYXlzLCBob3VycywgbWlucyB9O1xuICB9O1xuICBtaW51dGVzVG9EYXlIb3VyTWluU3RyID0gKG1pbnV0ZXM6IG51bWJlcikgPT4ge1xuICAgIGlmICghbWludXRlcykgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgcmV0ID0gdGhpcy5taW51dGVzVG9EYXlIb3VyTWluKG1pbnV0ZXMpO1xuICAgIHJldHVybiBgJHtyZXQuZGF5c30gJHtyZXQuaG91cnN9OiR7cmV0Lm1pbnN9YC50cmltKCk7XG4gIH07XG4gIG1pbnV0ZXNUb0RheUhvdXJNaW5TdHIyID0gKG1pbnV0ZXM6IG51bWJlcikgPT4ge1xuICAgIGlmICghbWludXRlcykgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgcmV0ID0gdGhpcy5taW51dGVzVG9EYXlIb3VyTWluKG1pbnV0ZXMpO1xuICAgIHJldHVybiBgJHtyZXQuZGF5c31kYXlzICR7cmV0LmhvdXJzfWhycyAke3JldC5taW5zfW1pbnNgLnRyaW0oKTtcbiAgfTtcbiAgZGF5SG91ck1pblRvSG91ck1pbnV0ZXMgPSAoZHlzOiBudW1iZXIsIGhyczogbnVtYmVyLCBtaW5zOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIWR5cyAmJiAhaHJzICYmICFtaW5zKSByZXR1cm4gJyc7XG4gICAgY29uc3QgZHlzVG9IcnMgPSAoZHlzIHx8IDApICogMjQ7XG4gICAgaHJzID0gKCtocnMgfHwgMCkgKyBkeXNUb0hycztcbiAgICByZXR1cm4gKGhycyB8fCAnMDAnKSArICc6JyArIChtaW5zIHx8ICcwMCcpO1xuICB9O1xuICBkaXNhYmxlT3JFbmFibGVJbnB1dHMgPSAoY29udHJvbHM6IEFic3RyYWN0Q29udHJvbFtdLCBkaXNhYmxlOiBib29sZWFuKSA9PiB7XG4gICAgaWYgKGRpc2FibGUpIHRoaXMuZGlzYWJsZUlucHV0cyhjb250cm9scyk7XG4gICAgZWxzZSB0aGlzLmVuYWJsZUlucHV0cyhjb250cm9scyk7XG4gIH07XG4gIGRpc2FibGVJbnB1dHMgPSAoY29udHJvbHM6IEFic3RyYWN0Q29udHJvbFtdKSA9PiB7XG4gICAgZm9yIChjb25zdCBjb250cm9sIG9mIGNvbnRyb2xzKSB7XG4gICAgICBjb250cm9sPy5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gIH07XG4gIGVuYWJsZUlucHV0cyA9IChjb250cm9sczogQWJzdHJhY3RDb250cm9sW10pID0+IHtcbiAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgY29udHJvbHMpIHtcbiAgICAgIGNvbnRyb2w/LmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuICB9O1xuICBkYXlIb3VyTWluVG9NaW51dGVzID0gKGR5czogbnVtYmVyLCBocnM6IG51bWJlciwgbWluczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFkeXMgJiYgIWhycyAmJiAhbWlucykgcmV0dXJuIDA7XG4gICAgY29uc3QgZHlzVG9IcnMgPSAoZHlzIHx8IDApICogMjQ7XG4gICAgaHJzID0gKCtocnMgfHwgMCkgKyBkeXNUb0hycztcbiAgICByZXR1cm4gKGhycyB8fCAwKSAqIDYwICsgbWlucztcbiAgfTtcbiAgaG91ck1pblRvTWludXRlcyA9IChocnM6IG51bWJlciwgbWluczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFocnMgJiYgIW1pbnMpIHJldHVybiBudWxsO1xuICAgIHJldHVybiAoaHJzIHx8IDApICogNjAgKyBtaW5zO1xuICB9O1xuICBob3VyTWluVG9NaW51dGVzMiA9IChocnNNaW5zOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBbaHJzLCBtaW5zXSA9IGhyc01pbnM/LnNwbGl0KCc6JykgfHwgWzAsIDBdO1xuICAgIHJldHVybiB0aGlzLmhvdXJNaW5Ub01pbnV0ZXMoK2hycywgK21pbnMpO1xuICB9O1xuICBub3RpZnkobWVzc2FnZTogc3RyaW5nLCBjbHM6IDAgfCAxIHwgMiB8IDMgPSAxLCBkdXJhdGlvbiA9IDUwMDAsIHRpdGxlPzogc3RyaW5nKSB7XG4gICAgLy8gaWYgKGNscyA9PSAwKSByZXR1cm4gdGhpcy5pbmZvKG1lc3NhZ2UsIGNscyk7XG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlICE9ICdzdHJpbmcnKSBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgIGNvbnN0IHRvYXN0ID0gdGhpcy50b2FzdC5hZGQoe1xuICAgICAgYm9keTogdGl0bGUgPyBtZXNzYWdlIDogdW5kZWZpbmVkLFxuICAgICAgaGVhZGVyOiB0aXRsZSB8fCBtZXNzYWdlLFxuICAgICAgZHVyYXRpb24sXG4gICAgICB0YWc6IGNscyxcbiAgICB9KTtcbiAgICByZXR1cm4geyBjbG9zZWQ6IHRvYXN0LmNsb3NlZCB9O1xuICAgIC8vIG1lc3NhZ2UgPSB0eXBlb2YgbWVzc2FnZSA9PSAnc3RyaW5nJyA/IG1lc3NhZ2UgOiAnJztcbiAgICAvLyBjb25zdCByZWYgPSB0aGlzLnNuYWNrQmFyLm9wZW4obWVzc2FnZSwgdGl0bGUsIHtcbiAgICAvLyAgIGR1cmF0aW9uLFxuICAgIC8vICAgaG9yaXpvbnRhbFBvc2l0aW9uOiAnY2VudGVyJyxcbiAgICAvLyAgIHZlcnRpY2FsUG9zaXRpb246ICdib3R0b20nLFxuICAgIC8vICAgcGFuZWxDbGFzczpcbiAgICAvLyAgICAgY2xzID09IDEgPyAnYmctc3VjY2VzcycgOiBjbHMgPT0gMiA/ICdidG4taW5mbycgOiBjbHMgPT0gMyA/ICdidG4td2FybmluZycgOiAnYmctZGFuZ2VyJyxcbiAgICAvLyB9KTtcbiAgICAvLyByZXR1cm4gZmlyc3RWYWx1ZUZyb20ocmVmLmFmdGVyRGlzbWlzc2VkKCkucGlwZShtYXAoKHIpID0+IHIuZGlzbWlzc2VkQnlBY3Rpb24pKSk7XG4gIH1cblxuICBzY3JvbGxUb1RvcCA9ICgpID0+IHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcblxuICAvKipcbiAgICpcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgZGF0ZSB0aW1lIGxvY2FsIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBkYXRldGltZS1sb2NhbCBpbnB1dFxuICAgKi9cbiAgZ2V0TG9jYWxEYXRlVGltZU5vdyA9ICgpID0+IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zbGljZSgwLCAtMSk7XG4gIC8qKiBAcmV0dXJucyBUaGUgY3VycmVudCBkYXRlIGxvY2FsIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBkYXRlIGlucHV0ICovXG4gIGxvY2FsRGF0ZU5vdyA9ICgpID0+IHtcbiAgICByZXR1cm4gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF07XG4gIH07XG4gIGRhdGVGb3JtYXQgPSAoZGF0ZTogYW55LCBmb3JtYXQgPSAxKSA9PiB7XG4gICAgaWYgKCFkYXRlKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBkID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgaWYgKGZvcm1hdCA9PSAxKSB7XG4gICAgICByZXR1cm4gZC50b0RhdGVTdHJpbmcoKTtcbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PSAyKSB7XG4gICAgICByZXR1cm4gZC5nZXREYXRlKCkgKyAnICcgKyBjb25maWcuTW9udGhzW2QuZ2V0TW9udGgoKV07XG4gICAgfSBlbHNlIGlmIChmb3JtYXQgPT0gMykge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsIGBFRUUgTU1NIGRkIFlZWVksIGhoOm1tIGFhYCk7XG4gICAgfSBlbHNlIGlmIChmb3JtYXQgPT0gNCkge1xuICAgICAgcmV0dXJuIGNvbmZpZy5Nb250aHNbZC5nZXRNb250aCgpXSArICcgJyArIGQuZ2V0RGF0ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9O1xuXG4gIHRvSmF2YURhdGVTdHJpbmcgPSAoaXNvRGF0ZVN0cmluZzogc3RyaW5nID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpKSA9PiB7XG4gICAgaWYgKCFpc29EYXRlU3RyaW5nKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gYCR7aXNvRGF0ZVN0cmluZy5zbGljZSgwLCAxOSl9YDtcbiAgICByZXR1cm4gYCR7aXNvRGF0ZVN0cmluZy5zbGljZSgwLCAxMCl9ICR7aXNvRGF0ZVN0cmluZy5zbGljZSgxMSwgMTkpfWA7XG4gIH07XG5cbiAgdG9KYXZhRGF0ZXRpbWVTdHJpbmcgPSAoaXNvRGF0ZVN0cmluZzogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCFpc29EYXRlU3RyaW5nKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBkYXRlID0gaXNvRGF0ZVN0cmluZy5pbmNsdWRlcygnVCcpXG4gICAgICA/IGlzb0RhdGVTdHJpbmdcbiAgICAgIDogbmV3IERhdGUoaXNvRGF0ZVN0cmluZykudG9JU09TdHJpbmcoKTtcbiAgICByZXR1cm4gYCR7ZGF0ZS5zbGljZSgwLCAxMCl9ICR7ZGF0ZS5zbGljZSgxMSwgMTkpfWA7XG4gIH07XG5cbiAgdGltZUZvcm1hdCA9ICh0aW1lPzogYW55KSA9PiB7XG4gICAgY29uc3QgdGltZUFycjogYW55W10gPSB0aW1lLnNwbGl0KCcgJyk7XG4gICAgdGltZUFyclswXSA9IHRpbWVBcnJbMF0uc3BsaXQoJzonKS5zcGxpY2UoMCwgMikuam9pbignOicpO1xuICAgIHJldHVybiB0aW1lQXJyLmpvaW4oJyAnKTtcbiAgfTtcbiAgZnVsbERhdGVUaW1lID0gKHRpbWVzdGFtcDogc3RyaW5nIHwgbnVtYmVyKSA9PiB7XG4gICAgLy8gZGVidWdnZXJcbiAgICByZXR1cm4gdGhpcy5kYXRlRm9ybWF0KHRpbWVzdGFtcCwgMyk7XG4gIH07XG4gIGRheXNGb3JtYXR0ZXIgPSAoZGF5czogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFkYXlzKSB7XG4gICAgICByZXR1cm4gJy0nO1xuICAgIH1cbiAgICBsZXQgeXI6IG51bWJlcixcbiAgICAgIG10OiBudW1iZXIsXG4gICAgICBkeTogbnVtYmVyLFxuICAgICAgcmV0OiBzdHJpbmcsXG4gICAgICBfeXIgPSAzNjUsXG4gICAgICBfbXQgPSAzMDtcbiAgICBpZiAoZGF5cyA+IF95cikge1xuICAgICAgeXIgPSBNYXRoLmZsb29yKGRheXMgLyBfeXIpO1xuICAgIH1cbiAgICBpZiAoZGF5cyA+IF9tdCkge1xuICAgICAgbXQgPSBNYXRoLmZsb29yKChkYXlzICUgX3lyKSAvIF9tdCk7XG4gICAgfVxuICAgIGR5ID0gKGRheXMgJSBfeXIpICUgX210O1xuICAgIHJldCA9IGAke3lyID8gdGhpcy5wbHVhcmxpemVyKHlyLCAneXInKSA6ICcnfSAke1xuICAgICAgbXQgPyB0aGlzLnBsdWFybGl6ZXIobXQsICdtdGgnKSA6ICcnXG4gICAgfSAke3RoaXMucGx1YXJsaXplcihkeSwgJ2R5Jyl9YDtcbiAgICByZXR1cm4gcmV0O1xuICB9O1xuICBtb250aHNGb3JtYXR0ZXIgPSAobW9udGhzOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIW1vbnRocykge1xuICAgICAgcmV0dXJuICctJztcbiAgICB9XG4gICAgbGV0IHlyOiBudW1iZXIsXG4gICAgICBtdDogbnVtYmVyLFxuICAgICAgcmV0OiBzdHJpbmcsXG4gICAgICBfeXIgPSAxMjtcbiAgICBpZiAobW9udGhzID4gX3lyKSB7XG4gICAgICB5ciA9IE1hdGguZmxvb3IobW9udGhzIC8gX3lyKTtcbiAgICB9XG4gICAgbXQgPSBtb250aHMgJSBfeXI7XG4gICAgcmV0ID0gYCR7eXIgPyB0aGlzLnBsdWFybGl6ZXIoeXIsICd5cicpIDogJyd9ICR7bXQgPyB0aGlzLnBsdWFybGl6ZXIobXQsICdtdGgnKSA6ICcnfWA7XG4gICAgcmV0dXJuIHJldDtcbiAgfTtcbiAgcGx1YXJsaXplciA9ICh2YWw6IG51bWJlciwgdHh0OiBzdHJpbmcsIHBsdXJhbD86IHN0cmluZykgPT4ge1xuICAgIHBsdXJhbCA9IHBsdXJhbCB8fCB0eHQgKyAncyc7XG4gICAgcmV0dXJuIHZhbCArICh2YWwgPT0gMSA/IHR4dCA6IHBsdXJhbCk7XG4gIH07XG4gIGRlY2ltYWxUb1BlcmNlbnRhZ2UgPSAoZGVjOiBudW1iZXIpID0+IHtcbiAgICByZXR1cm4gZGVjICogMTAwICsgJyUnO1xuICB9O1xuICBsb2dGb3JtID0gKGZvcm0pID0+IHtcbiAgICBjb25zb2xlLmxvZygnRk9STScsIGZvcm0sICdWQUxVRVMnLCBmb3JtLnZhbHVlIGFzIGFueSk7XG4gIH07XG5cbiAgdG9DU1YoZGF0YTogYW55W10sIGhlYWRlck5hbWVzOiBzdHJpbmdbXSwgZmlsZW5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHJlcGxhY2VyID0gKGtleSwgdmFsdWUpID0+ICh2YWx1ZSA9PT0gbnVsbCA/ICcnIDogdmFsdWUpOyAvLyBzcGVjaWZ5IGhvdyB5b3Ugd2FudCB0byBoYW5kbGUgbnVsbCB2YWx1ZXMgaGVyZVxuXG4gICAgbGV0IGNzdiA9IGRhdGEubWFwKChyb3cpID0+XG4gICAgICBoZWFkZXJOYW1lcy5tYXAoKGZpZWxkTmFtZSkgPT4gSlNPTi5zdHJpbmdpZnkocm93W2ZpZWxkTmFtZV0sIHJlcGxhY2VyKSkuam9pbignLCcpLFxuICAgICk7XG4gICAgY3N2LnVuc2hpZnQoaGVhZGVyTmFtZXMuam9pbignLCcpKTtcbiAgICBsZXQgY3N2QXJyYXkgPSBjc3Yuam9pbignXFxyXFxuJyk7XG5cbiAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtjc3ZBcnJheV0sIHsgdHlwZTogJ3RleHQvY3N2JyB9KTtcbiAgICBzYXZlQXMoYmxvYiwgZmlsZW5hbWUgKyAnLmNzdicpO1xuICB9XG5cbiAgaXNQaWN0dXJlRm9ybWF0KGZpbGVOYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoIWZpbGVOYW1lKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgUElDVFVSRV9GT1JNQVRTID0gWycuanBnJywgJy5qcGVnJywgJy5wbmcnLCAnLmdpZiddO1xuICAgIHJldHVybiBQSUNUVVJFX0ZPUk1BVFMuc29tZSgoZm9ybWF0KSA9PiBmaWxlTmFtZS5lbmRzV2l0aChmb3JtYXQpKTtcbiAgfVxuICBvYmplY3RUb0FycmF5PFQ+KG9iajogYW55KSB7XG4gICAgY29uc3QgcmV0ID0gW107XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICByZXQucHVzaChvYmpba2V5XSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXQgYXMgVFtdO1xuICB9XG4gIGZvcm1hdEZpZWxkKGZpZWxkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRvVGl0bGVDYXNlKGZpZWxkPy50b1NlbnRlbmNlQ2FzZSgpKTtcbiAgfVxuICAvKipcbiAgICogVXNlcyBhIHdlYiB3b3JrZXIgdG8gcGVyZm9ybSBhIHRhc2tcbiAgICogQGV4YW1wbGUgbmV3IFdvcmtlcihuZXcgVVJMKCcuL3VwbG9hZC1jc3Yud29ya2VyJywgaW1wb3J0Lm1ldGEudXJsKSlcbiAgICogQHBhcmFtIHdvcmtlciBXZWIgd29ya2VyIG9iamVjdFxuICAgKiBAcGFyYW0gaW5wdXREYXRhIERhdGEgYmVpbmcgcGFzc2VkIGludG8gd2ViIHdvcmtlclxuICAgKiBAcmV0dXJucyBEYXRhIGdvdHRlbiBmcm9tIHdlYiB3b3JrZXJcbiAgICovXG4gIHVzZVdlYldvcmtlcjxUID0gYW55PihcbiAgICB3b3JrZXI6IFdvcmtlcixcbiAgICBpbnB1dERhdGE6IGFueSxcbiAgICBjb25kaXRpb25zPzogeyBzdG9wOiAocmVzKSA9PiBib29sZWFuOyBlcnJvcjogKHJlcykgPT4gYm9vbGVhbiB9LFxuICApIHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8VD4oKHN1YikgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBXb3JrZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKGlucHV0RGF0YSk7XG4gICAgICAgICAgd29ya2VyLm9ubWVzc2FnZSA9IChyKSA9PiB7XG4gICAgICAgICAgICAvLyBkZWJ1Z2dlclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coZSk7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gci5kYXRhO1xuICAgICAgICAgICAgaWYgKGNvbmRpdGlvbnMpIHtcbiAgICAgICAgICAgICAgaWYgKGNvbmRpdGlvbnMuZXJyb3IoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICBzdWIuZXJyb3IoZGF0YSk7XG4gICAgICAgICAgICAgICAgc3ViLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbmRpdGlvbnMuc3RvcChkYXRhKSkge1xuICAgICAgICAgICAgICAgIHN1Yi5uZXh0KGRhdGEpO1xuICAgICAgICAgICAgICAgIHN1Yi5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIHdvcmtlci50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdWIubmV4dChkYXRhKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc3ViLm5leHQoZGF0YSBhcyBhbnkpO1xuICAgICAgICAgICAgICBzdWIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgJ25vV29ya2VyJztcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgc3ViLmVycm9yKGUpO1xuICAgICAgICBzdWIuY29tcGxldGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICB0cmltID1cbiAgICAobGVuZ3RoID0gMTUpID0+XG4gICAgKHRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT5cbiAgICAgIHRleHQgJiYgdGV4dC5sZW5ndGggPiBsZW5ndGggPyB0ZXh0LnNsaWNlKDAsIGxlbmd0aCkgKyAnLi4uJyA6IHRleHQhO1xuICBhc3luYyBhcnJheVRvQ1NWKFxuICAgIGRhdGE6IGFueVtdLFxuICAgIGZpbGVuYW1lOiBzdHJpbmcsXG4gICAgaGVhZGVyTWFwPzogVGFibGVDb2xbXSxcbiAgICBleHRyYUNvbmZpZz86IHsgcHJlZml4Pzogc3RyaW5nOyBoaWRlSGVhZGVyPzogYm9vbGVhbjsgaGlkZU5vdGlmaWNhdGlvbj86IGJvb2xlYW4gfSxcbiAgKSB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgbGV0IF9kYXRhOiBhbnlbXTtcbiAgICBjb25zdCBoZWFkZXJNYXBXaXRoRm9ybWF0dGVyczogVGFibGVDb2xbXSA9XG4gICAgICBoZWFkZXJNYXA/LmZpbHRlcigoeCkgPT4geC5mb3JtYXR0ZXIgfHwgeC5mb3JtYXR0ZXJSb3cpIHx8IHVuZGVmaW5lZDtcbiAgICBpZiAoaGVhZGVyTWFwV2l0aEZvcm1hdHRlcnM/Lmxlbmd0aCkge1xuICAgICAgX2RhdGEgPSBjbG9uZURlZXAoZGF0YSk7XG4gICAgICBmb3IgKGNvbnN0IGZvcm1hdHRlciBvZiBoZWFkZXJNYXBXaXRoRm9ybWF0dGVycykge1xuICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBfZGF0YSkge1xuICAgICAgICAgIHJvd1tmb3JtYXR0ZXIuZl0gPSBmb3JtYXR0ZXIuZm9ybWF0dGVyXG4gICAgICAgICAgICA/IGF3YWl0IGZvcm1hdHRlci5mb3JtYXR0ZXIocm93W2Zvcm1hdHRlci5mXSlcbiAgICAgICAgICAgIDogZm9ybWF0dGVyLmZvcm1hdHRlclJvdyhyb3cpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIF9kYXRhID0gZGF0YTtcbiAgICB9XG4gICAgY29uc3Qgc2hvd0hlYWRlciA9ICFleHRyYUNvbmZpZz8uaGlkZUhlYWRlcjtcbiAgICBsZXQgY3N2ID0gUGFwYS51bnBhcnNlKF9kYXRhLCB7XG4gICAgICBoZWFkZXI6IHNob3dIZWFkZXIgJiYgIWhlYWRlck1hcD8ubGVuZ3RoLFxuICAgICAgY29sdW1uczogaGVhZGVyTWFwPy5tYXAoKHgpID0+IHguZj8udG9TdHJpbmcoKSkgfHwgdW5kZWZpbmVkLFxuICAgIH0pO1xuICAgIHRoaXMuZG93bmxvYWRlcihcbiAgICAgIChleHRyYUNvbmZpZz8ucHJlZml4ID8gZXh0cmFDb25maWc/LnByZWZpeCArICdcXHJcXG4nIDogJycpICtcbiAgICAgICAgKGhlYWRlck1hcD8ubGVuZ3RoID8gaGVhZGVyTWFwLm1hcCgoZmllbGROYW1lKSA9PiBmaWVsZE5hbWUudCkuam9pbignLCcpICsgYFxcclxcbmAgOiAnJykgK1xuICAgICAgICBjc3YsXG4gICAgICBmaWxlbmFtZT8uZW5kc1dpdGgoJy5jc3YnKSA/IGZpbGVuYW1lIDogZmlsZW5hbWUgKyAnLmNzdicsXG4gICAgKTtcblxuICAgIGlmIChleHRyYUNvbmZpZz8uaGlkZU5vdGlmaWNhdGlvbiA9PSB0cnVlKSByZXR1cm47XG4gICAgdGhpcy5pbmZvKGBEb3dubG9hZGVkICR7ZmlsZW5hbWV9YCk7XG4gIH1cbiAgdHlwZUNhc3RlciA9IDxUPih2YWx1ZTogVCkgPT4gdmFsdWU7XG5cbiAgam9pbkNTVlJvd3MoLi4uQ1NWczogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gQ1NWcy5qb2luKCdcXHJcXG4nKTtcbiAgfVxuICBhc3luYyBhcnJheVRvQ1NWU3RyaW5nPFQgPSBhbnk+KFxuICAgIGRhdGE6IFRbXSxcbiAgICBoZWFkZXJNYXA/OiBUYWJsZUNvbDxUPltdLFxuICAgIGV4dHJhQ29uZmlnPzogeyBwcmVmaXg/OiBzdHJpbmc7IGhpZGVIZWFkZXI/OiBib29sZWFuIH0sXG4gICkge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGxldCBfZGF0YTogYW55W107XG4gICAgY29uc3QgaGVhZGVyTWFwV2l0aEZvcm1hdHRlcnM6IFRhYmxlQ29sW10gPVxuICAgICAgaGVhZGVyTWFwPy5maWx0ZXIoKHgpID0+IHguZm9ybWF0dGVyIHx8IHguZm9ybWF0dGVyUm93KSB8fCB1bmRlZmluZWQ7XG4gICAgaWYgKGhlYWRlck1hcFdpdGhGb3JtYXR0ZXJzPy5sZW5ndGgpIHtcbiAgICAgIF9kYXRhID0gY2xvbmVEZWVwKGRhdGEpO1xuICAgICAgZm9yIChjb25zdCBmb3JtYXR0ZXIgb2YgaGVhZGVyTWFwV2l0aEZvcm1hdHRlcnMpIHtcbiAgICAgICAgZm9yIChjb25zdCByb3cgb2YgX2RhdGEpIHtcbiAgICAgICAgICByb3dbZm9ybWF0dGVyLmZdID0gZm9ybWF0dGVyLmZvcm1hdHRlclxuICAgICAgICAgICAgPyBhd2FpdCBmb3JtYXR0ZXIuZm9ybWF0dGVyKHJvd1tmb3JtYXR0ZXIuZl0pXG4gICAgICAgICAgICA6IGZvcm1hdHRlci5mb3JtYXR0ZXJSb3cocm93KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBfZGF0YSA9IGRhdGE7XG4gICAgY29uc3Qgc2hvd0hlYWRlciA9ICFleHRyYUNvbmZpZz8uaGlkZUhlYWRlcjtcbiAgICBsZXQgY3N2ID0gUGFwYS51bnBhcnNlKF9kYXRhLCB7XG4gICAgICBoZWFkZXI6IHNob3dIZWFkZXIgJiYgIWhlYWRlck1hcD8ubGVuZ3RoLFxuICAgICAgY29sdW1uczogaGVhZGVyTWFwPy5tYXAoKHgpID0+IHguZj8udG9TdHJpbmcoKSkgfHwgdW5kZWZpbmVkLFxuICAgIH0pO1xuICAgIHJldHVybiAoXG4gICAgICAoZXh0cmFDb25maWc/LnByZWZpeCA/IGV4dHJhQ29uZmlnPy5wcmVmaXggKyAnXFxyXFxuJyA6ICcnKSArXG4gICAgICAoaGVhZGVyTWFwPy5sZW5ndGggPyBoZWFkZXJNYXAubWFwKChmaWVsZE5hbWUpID0+IGZpZWxkTmFtZS50KS5qb2luKCcsJykgKyBgXFxyXFxuYCA6ICcnKSArXG4gICAgICBjc3ZcbiAgICApO1xuICB9XG5cbiAgaXNEYXRlVmFsdWUgPSAodikgPT5cbiAgICB2ID8gdHlwZW9mIHYgPT0gJ3N0cmluZycgJiYgdls0XSA9PSAnLScgJiYgdls3XSA9PSAnLScgJiYgdi5sZW5ndGggPT0gMTAgOiBmYWxzZTtcbiAgaXNEYXRUaW1lVmFsdWUgPSAodikgPT5cbiAgICB2ID8gdHlwZW9mIHYgPT0gJ3N0cmluZycgJiYgdlsxMF0gPT0gJ1QnICYmIHZbNF0gPT0gJy0nICYmIHZbN10gPT0gJy0nIDogZmFsc2U7XG5cbiAgeWVzTm9DZWxsRm9ybWF0dGVyQ29sb3VyZWQgPSAodikgPT5cbiAgICBgPHNwYW4gY2xhc3M9JyR7diA/ICdzdWNjZXNzQ2VsbCcgOiAnaW5lcnRDZWxsJ30nPiR7XG4gICAgICB2ID8gJ1llcycgOiB2ID09IGZhbHNlID8gJ05vJyA6ICctJ1xuICAgIH08L3NwYW4+YDtcbiAgeWVzTm9DZWxsRm9ybWF0dGVyID0gKHYpID0+IGAke3YgPyAnWWVzJyA6ICdObyd9YDtcbiAgc3RhdHVzQ2VsbEZvcm1hdHRlciA9IChzdGF0dXM6IFN0YXR1cykgPT5cbiAgICBgPHNwYW4gY2xhc3M9JyR7XG4gICAgICBzdGF0dXMgPT0gJ0NPTVBMRVRFRCcgPyAnc3VjY2Vzc0NlbGwnIDogc3RhdHVzID09ICdQRU5ESU5HJyA/ICdwZW5kaW5nQ2VsbCcgOiAnaW5lcnRDZWxsJ1xuICAgIH0nPiR7c3RhdHVzIHx8ICctJ308L3NwYW4+YDtcblxuICBjZWxsU3RhdHVzRm9ybWF0dGVyID1cbiAgICA8VCA9IGFueT4oZ3VpZGU6IHsgc3VjY2Vzc1ZhbD86IFQ7IHBlbmRpbmdWYWw/OiBUOyBlcnJvclZhbD86IFQ7IGluZXJ0VmFsPzogVCB9KSA9PlxuICAgICh2KSA9PlxuICAgICAgYDxzcGFuIGNsYXNzPScke1xuICAgICAgICB2ID09IGd1aWRlLnN1Y2Nlc3NWYWxcbiAgICAgICAgICA/ICdzdWNjZXNzQ2VsbCdcbiAgICAgICAgICA6IHYgPT0gZ3VpZGUucGVuZGluZ1ZhbFxuICAgICAgICAgICAgPyAncGVuZGluZ0NlbGwnXG4gICAgICAgICAgICA6IHYgPT0gZ3VpZGUuZXJyb3JWYWxcbiAgICAgICAgICAgICAgPyAnZXJyb3JDZWxsJ1xuICAgICAgICAgICAgICA6ICdpbmVydENlbGwnXG4gICAgICB9Jz4ke3Z9PC9zcGFuPmA7XG5cbiAgZ2VuZXJhdGVVVUlEID0gRVZGdW5jdGlvbnMuZ2VuZXJhdGVVVUlEO1xuXG4gIGluZm86IChcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAgc3RhdHVzPzogMCB8IDIgfCAxLFxuICAgIGhlYWRpbmc/OiBzdHJpbmcsXG4gICAgYnRucz86IElJbmZvRGlhbG9nQnRuW10sXG4gICAgZGlzYWJsZUNsb3NlPzogYm9vbGVhbixcbiAgKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuICBkZWJvdW5jZXIgPSB0aGlzLmRlYm91bmNlclNlcnZpY2UuZGVib3VuY2VyO1xuXG4gIGFzeW5jVmFsaWRhdGlvbiA9IHRoaXMuZGVib3VuY2VyU2VydmljZS5hc3luY1ZhbGlkYXRpb247XG5cbiAgc3RhcnRQbCA9IHRoaXMucFMuc3RhcnRQbDtcbiAgc3RvcFBsID0gdGhpcy5wUy5zdG9wUGw7XG5cbiAgY3JlYXRlU3Vic2NyaXB0aW9uTWFuYWdlciA9ICguLi5zdWJzOiBTdWJzY3JpcHRpb25bXSkgPT4ge1xuICAgIGxldCBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBzdWJzIHx8IFtdO1xuXG4gICAgY29uc3QgY2xlYXIgPSAoKSA9PiB7XG4gICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgIF9zdWJzLmZvckVhY2goKHgpID0+IHgudW5zdWJzY3JpYmUoKSk7XG4gICAgICBfc3VicyA9IFtdO1xuICAgIH07XG5cbiAgICBjb25zdCBwdXNoID0gKC4uLnN1YnM6IFN1YnNjcmlwdGlvbltdKSA9PiBfc3Vicy5wdXNoKC4uLnN1YnMpO1xuXG4gICAgcmV0dXJuIHsgY2xlYXIsIHB1c2gsIHN1YnM6ICgpID0+IF9zdWJzIH07XG4gIH07XG5cbiAgY3JlYXRlQ2FjaGVNYW5hZ2VyID0gPFREYXRhID0gYW55LCBUS2V5ID0gYW55Pihjb25maWc6IHtcbiAgICBrZXllcj86IChpdGVtOiBUS2V5KSA9PiBzdHJpbmc7XG4gICAgbWF4U2l6ZT86IG51bWJlcjtcbiAgfSkgPT4ge1xuICAgIGxldCBfY2FjaGU6IHsgW2tleTogc3RyaW5nXTogeyBpdGVtOiBURGF0YSB9IH0gPSB7fSxcbiAgICAgIGtleUZ1bmN0aW9uID0gY29uZmlnPy5rZXllcixcbiAgICAgIG1heFNpemUgPSBjb25maWc/Lm1heFNpemUgfHwgMTAwMDtcbiAgICBjb25zdCBrZXlTdGFjazogc3RyaW5nW10gPSBbXTtcblxuICAgIGNvbnN0IGNsZWFyID0gKCkgPT4ge1xuICAgICAgX2NhY2hlID0ge307XG4gICAgfTtcbiAgICBjb25zdCBkZXN0cm95ID0gKCkgPT4ge1xuICAgICAgX2NhY2hlID0gdW5kZWZpbmVkO1xuICAgIH07XG5cbiAgICBjb25zdCBzYXZlID0gKGtleTogc3RyaW5nIHwgbnVtYmVyIHwgVEtleSwgZGF0YTogVERhdGEpID0+IHtcbiAgICAgIGlmICghX2NhY2hlKSBfY2FjaGUgPSB7fTtcbiAgICAgIGNvbnN0IGtleVN0cmluZyA9IGtleUZ1bmN0aW9uID8ga2V5RnVuY3Rpb24oa2V5IGFzIFRLZXkpIDogKGtleSBhcyBzdHJpbmcpO1xuICAgICAgX2NhY2hlW2tleVN0cmluZ10gPSB7XG4gICAgICAgIGl0ZW06IGRhdGEsXG4gICAgICB9O1xuICAgICAga2V5U3RhY2sucHVzaChrZXlTdHJpbmcpO1xuXG4gICAgICBpZiAoa2V5U3RhY2subGVuZ3RoID4gbWF4U2l6ZSkgZGVsZXRlIF9jYWNoZVtrZXlTdGFjay5zaGlmdCgpXTtcbiAgICB9O1xuXG4gICAgY29uc3QgZ2V0ID0gKGtleTogVEtleSkgPT4ge1xuICAgICAgaWYgKCFfY2FjaGUpIF9jYWNoZSA9IHt9O1xuICAgICAgY29uc3Qga2V5U3RyaW5nID0ga2V5RnVuY3Rpb24gPyBrZXlGdW5jdGlvbihrZXkgYXMgVEtleSkgOiAoa2V5IGFzIHN0cmluZyk7XG4gICAgICByZXR1cm4gX2NhY2hlW2tleVN0cmluZ10/Lml0ZW07XG4gICAgfTtcblxuICAgIHJldHVybiB7IGNsZWFyLCBkZXN0cm95LCBnZXQsIHNhdmUsIGNhY2hlOiAoKSA9PiBfY2FjaGUgfTtcbiAgfTtcblxuICB0cmFja0J5Q3VzdG9tSUQgPSAoaW5kZXgsIGl0ZW0pID0+IHtcbiAgICBpZiAoIWl0ZW1bdGhpcy5jdXN0b21JREZpZWxkXSkge1xuICAgICAgaXRlbVt0aGlzLmN1c3RvbUlERmllbGRdID0gdGhpcy5nZW5lcmF0ZVVVSUQoKTtcbiAgICAgIGNvbnNvbGUubG9nKCdzZXQgY3VzdG9tIGlkJyk7XG4gICAgfVxuICAgIHJldHVybiBpdGVtW3RoaXMuY3VzdG9tSURGaWVsZF07XG4gIH07XG4gIHRyYWNrQnlGb3JGb3JtcyA9IChpbmRleCwgaXRlbTogRm9ybUdyb3VwKSA9PiB7XG4gICAgaWYgKCFpdGVtLmNvbnRyb2xzW3RoaXMuY3VzdG9tSURGaWVsZF0pXG4gICAgICBpdGVtLmFkZENvbnRyb2wodGhpcy5jdXN0b21JREZpZWxkLCBuZXcgRm9ybUNvbnRyb2wodGhpcy5nZW5lcmF0ZVVVSUQoKSkpO1xuICAgIHJldHVybiBpdGVtLmNvbnRyb2xzW3RoaXMuY3VzdG9tSURGaWVsZF0udmFsdWU7XG4gIH07XG4gIG9iamVjdFRvRm9ybUdyb3VwID0gPFQ+KGRhdGE6IFQpID0+IHtcbiAgICBjb25zdCBmb3JtID0gbmV3IEZvcm1Hcm91cDxJU3RyaWN0Rm9ybUdyb3VwPFQ+Pih7fSBhcyBhbnkpO1xuICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGEpXG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSkpXG4gICAgICAgIGZvcm0uYWRkQ29udHJvbChrZXksIG5ldyBGb3JtQ29udHJvbChkYXRhW2tleV0pKTtcbiAgICByZXR1cm4gZm9ybTtcbiAgfTtcblxuICBmb3JtU2NoZW1hVG9Gb3JtR3JvdXAgPSA8VCBleHRlbmRzIHsgW3g6IHN0cmluZ106IGFueSB9PihzY2hlbWE6IElGb3JtU2NoZW1hW10sIGRhdGE/OiBUKSA9PiB7XG4gICAgY29uc3QgZm9ybSA9IG5ldyBGb3JtR3JvdXA8SVN0cmljdEZvcm1Hcm91cDxUPj4oe30gYXMgYW55KTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygc2NoZW1hKVxuICAgICAgZm9ybS5hZGRDb250cm9sKGl0ZW0uZmllbGQudG9TdHJpbmcoKSwgbmV3IEZvcm1Db250cm9sKGRhdGFbaXRlbS5maWVsZC50b1N0cmluZygpXSkpO1xuICAgIHJldHVybiBmb3JtO1xuICB9O1xuXG4gIHRpbWVDb2RlQmxvY2sgPSA8VD4obGFiZWw6IHN0cmluZywgY2I6ICgpID0+IFQpID0+IHtcbiAgICBjb25zdCBzdGFydFRJbWUgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHJlcyA9IGNiKCk7XG4gICAgY29uc3QgZW5kVGltZSA9IERhdGUubm93KCk7XG4gICAgY29uc29sZS5sb2cobGFiZWwsIHN0YXJ0VEltZSwgZW5kVGltZSwgKGVuZFRpbWUgLSBzdGFydFRJbWUpIC8gMTAwMCArICdzZWMnKTtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBEZWxldGUgbnVsbCBvciB1bmRlZmluZWQgZmllbGRzIGZyb20gYW4gb2JqZWN0XG4gICAqIEBwYXJhbSBvYmogT2JqZWN0IHRvIGRlbGV0ZSBmcm9tXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBkZWxldGVOdWxsID0gPFQ+KG9iajogVCkgPT4ge1xuICAgIGNvbnN0IHJldDogVCA9IHt9IGFzIGFueTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopXG4gICAgICBpZiAob2JqW2tleV0gPT09IG51bGwgfHwgb2JqW2tleV0gPT09IHVuZGVmaW5lZCB8fCBvYmpba2V5XSA9PT0gJycpIGNvbnRpbnVlO1xuICAgICAgZWxzZSByZXRba2V5XSA9IG9ialtrZXldO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfTtcblxuICAvKipcbiAgICogQ29udmVydHMgdGltZXN0YW1wIGludG8gaHIsbWluLHNlY1xuICAgKiBAcGFyYW0gdGltZVRha2VuIFRpbWUgdGFrZW4gaW4gdGltZXN0YW1wXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBmb3JtYXRUaW1lVGFrZW4gPSAodGltZVRha2VuOiBudW1iZXIpID0+IHtcbiAgICBpZiAodGltZVRha2VuID09IG51bGwpIHJldHVybiAnJztcbiAgICBjb25zdCB0aW1lTGVmdCA9IHRoaXMuc2Vjb25kc1RvSG91ck1pblNlYyhNYXRoLnJvdW5kKHRpbWVUYWtlbiAvIDEwMDApIHx8IDEpO1xuICAgIHJldHVybiAoXG4gICAgICAodGltZUxlZnQuaG91cnMgPyB0aW1lTGVmdC5ob3VycyArICdocicgOiAnJykgK1xuICAgICAgKHRpbWVMZWZ0Lm1pbnMgPyB0aW1lTGVmdC5taW5zICsgJ21pbicgOiAnJykgK1xuICAgICAgKHRpbWVMZWZ0LnNlY3MgPyB0aW1lTGVmdC5zZWNzICsgJ3NlYycgOiAnJylcbiAgICApO1xuICB9O1xufVxuIl19
@@ -78,4 +78,4 @@ export class Environment extends SDKEnvironment {
78
78
  this._targetLanguage = value;
79
79
  }
80
80
  }
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL21vZGVscy9lbnZpcm9ubWVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHMUQsT0FBTyxFQUEwQixTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFN0UsTUFBTSxPQUFnQixjQUFjO0lBb0VsQyxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxDQUFVO1FBQ3BCLElBQUksQ0FBQztZQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7O1lBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUNELFlBQ1MsVUFBbUIsRUFDMUIsSUFBWTtRQURMLGVBQVUsR0FBVixVQUFVLENBQVM7UUF2RTVCLGtCQUFhLEdBQXFCLElBQUksR0FBRyxDQUFjLEVBQUUsQ0FBQyxDQUFDO1FBTTNEOztXQUVHO1FBQ00sNkJBQXdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDckQ7O1dBRUc7UUFDTSxrQ0FBNkIsR0FBRyxxQkFBcUIsQ0FBQztRQVV0RCxzQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUVyQyxpQkFBWSxHQUFHLFdBQVcsQ0FBQztRQUMzQix5QkFBb0IsR0FBRyxtQkFBbUIsQ0FBQztRQUMzQyxnQkFBVyxHQUFHLFVBQVUsQ0FBQztRQUdsQyxlQUFVLEdBQXNDLGNBQWMsQ0FBQztRQU8vRDs7V0FFRztRQUNILG1CQUFjLEdBQWtCLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFHdEUsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFLbkIsZUFBVSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDOUIsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFHUixZQUFPLEdBQUcsTUFBTSxDQUFDO1FBRTFCLFlBQU8sR0FBVyxXQUFXLENBQUM7UUFHckIsYUFBUSxHQUFHLGlDQUFpQyxDQUFDO1FBQzdDLG1CQUFjLEdBQUcsYUFBYSxDQUFDO1FBQy9CLG1CQUFjLEdBQUcsTUFBTSxDQUFDO1FBRWpDLG1CQUFjLEdBQVcsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQWFwQyxJQUFJLENBQUMsVUFBVTtZQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJO1lBQUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLElBQUksSUFBSSxDQUFDO0lBQzFFLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxJQUFJLFNBQVMsQ0FBQyxLQUFjO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFJLGNBQWMsQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFDRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsR0FBUTtRQUNiLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQUNELE1BQU0sT0FBTyxXQUFZLFNBQVEsY0FBYztJQVE3QyxZQUNrQixVQUFtQixFQUNuQyxJQUFZO1FBRVosS0FBSyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUhSLGVBQVUsR0FBVixVQUFVLENBQVM7UUFINUIsbUJBQWMsR0FBYyxTQUFTLENBQUMsRUFBRSxDQUFDO0lBT2xELENBQUM7SUFHRCxJQUFhLGNBQWM7UUFDekIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFhLGNBQWMsQ0FBQyxLQUFnQjtRQUMxQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBQYWdlTG9hZGVyIH0gZnJvbSAnLi4vY2xhc3Nlcy9wYWdlLWxvYWRlci5jbGFzcyc7XG5pbXBvcnQgeyBFVFNNZW51SXRlbSB9IGZyb20gJy4vSU1lbnVJdGVtJztcbmltcG9ydCB7IEFwcFJvdXRlQmFzZSB9IGZyb20gJy4vUm91dGVJdGVtLmNsYXNzJztcbmltcG9ydCB7IElDb25maWdJbWFnZXMsIEVTeXN0ZW0sIEVMYW5ndWFnZSwgRU1lbnVUeXBlIH0gZnJvbSAnLi9pbmRleC5tb2RlbCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTREtFbnZpcm9ubWVudCB7XG4gIGFwcFJvdXRlcz86IGFueTtcbiAgYWN0aXZlU3lzdGVtczogYW55W107XG4gIGJvdHRvbU1lbnU6IGFueVtdO1xuICBjdXJyZW50U3lzdGVtOiBhbnk7XG4gIGV4Y2x1ZGVkTWVudXM6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwPHN0cmluZywgYW55PihbXSk7XG4gIGxvZ1JlcTogYm9vbGVhbjtcbiAgbWVudXM6IGFueVtdO1xuICBub1VzZXJSb2xlQ2hlY2s6IGJvb2xlYW47IFxuICBwYWdlVGl0bGU6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHN0b3JhZ2Uga2V5IGZvciB0aGUgbGFzdCB0aW1lc3RhbXAgYW4gdXBkYXRlIHdhcyBmb3VuZFxuICAgKi9cbiAgcmVhZG9ubHkgbGFzdFVwZGF0ZVRpbWVTdG9yYWdlS2V5ID0gJ2xhc3RVcGRhdGVUaW1lJztcbiAgLyoqXG4gICAqIFRoZSBzdG9yYWdlIGtleSBmb3IgdGhlIGxhc3QgdGltZXN0YW1wIGFuIHVwZGF0ZSB3YXMgY2hlY2tlZFxuICAgKi9cbiAgcmVhZG9ubHkgbGFzdFVwZGF0ZUNoZWNrVGltZVN0b3JhZ2VLZXkgPSAnbGFzdFVwZGF0ZUNoZWNrVGltZSc7XG4gIC8qKlxuICAgKiBMYXN0IHRpbWVzdGFtcCBhbiB1cGRhdGUgd2FzIGZvdW5kXG4gICAqL1xuICBsYXN0VXBkYXRlVGltZTogbnVtYmVyO1xuICAvKipcbiAgICogTGFzdCB0aW1lc3RhbXAgYW4gdXBkYXRlIHdhcyBjaGVja2VkXG4gICAqL1xuICBsYXN0VXBkYXRlQ2hlY2tUaW1lOiBudW1iZXI7XG4gIGltYWdlczogSUNvbmZpZ0ltYWdlcztcbiAgcmVhZG9ubHkgdGFyZ2V0TGFuZ3VhZ2VLZXkgPSAndGFyZ2V0TGFuZ3VhZ2UnO1xuICByZWFkb25seSB0cmFuc0dsb3NzYXJ5S2V5OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRyYW5zbGF0ZUtleSA9ICd0cmFuc2xhdGUnO1xuICByZWFkb25seSB1c2VyQ29tcGFueUNvbmZpZ0tleSA9ICd1c2VyQ29tcGFueUNvbmZpZyc7XG4gIHJlYWRvbmx5IHVzZXJNZW51S2V5ID0gJ3VzZXJNZW51JztcbiAgc2luZ2xlVGFiVXNhZ2U6IGJvb2xlYW47XG4gIGxvZ0FjdGl2aXRpZXM6IGJvb2xlYW47XG4gIHN0b3JhZ2VLZXk6ICdsb2NhbFN0b3JhZ2UnIHwgJ3Nlc3Npb25TdG9yYWdlJyA9ICdsb2NhbFN0b3JhZ2UnO1xuICB0cmFuc0dsb3NzYXJ5OiBhbnk7XG4gIHVzZXJDb21wYW55Q29uZmlnOiBhbnk7XG4gIC8qKlxuICAgKiBTcGVjaWZ5IHdoZXRoZXIgdG8gdXNlIGNvbnRhaW5lciBvciBjb250YWluZXItZmx1aWQgZm9yIHRoZSBib2R5IG9mIHRoZSB2aWV3LiBJdCBzaG91bGQgYmUgdW5zZXQgYXQgdGhlIG5nT25EZXN0cm95IGZ1bmN0aW9uXG4gICAqL1xuICB3aWRlU2NyZWVuOiBib29sZWFuO1xuICAvKipcbiAgICogRW50ZXIgdmFsdWUgaW4gbWlsbGlzZWNvbmQgb3IgRGF0ZSBvYmplY3RcbiAgICovXG4gIHJlcXVlc3RUaW1lb3V0OiBudW1iZXIgfCBEYXRlID0gbmV3IERhdGUoODY0MDAwMDAgKiAzNjUgKyBEYXRlLm5vdygpKTtcbiAgYWxyZWFkeU9wZW5lZDogYm9vbGVhbjtcbiAgdXNlQnVzbGluZTogYW55O1xuICB1c2VVc2VyTWVudSA9IHRydWU7XG4gIC8qKlxuICAgKiBTcGVjaWZ5IGFkZGl0aW9uYWwgY2xhc3MoZXMpIHRvIGJlIGFkZGVkIHRvIHRoZSBib2R5IG9mIHRoZSB2aWV3LiBJdCBzaG91bGQgYmUgdW5zZXQgYXQgdGhlIG5nT25EZXN0cm95IGZ1bmN0aW9uXG4gICAqL1xuICBib2R5Q2xhc3M6IHN0cmluZztcbiAgcGFnZUxvYWRlciA9IG5ldyBQYWdlTG9hZGVyKCk7XG4gIHJlcXVlc3RDb3VudCA9IDA7XG4gIHVzaW5nQWN0aXZlRGlyZWN0b3J5OiBib29sZWFuO1xuICBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGU7XG4gIHJlYWRvbmx5IGxvZ3NLZXkgPSAnbG9ncyc7XG4gIGFwaUJhc2VVcmw/OiBzdHJpbmc7XG4gIGFwcE5hbWU6IHN0cmluZyA9ICdFdm9sdXRpY3MnO1xuICBhdXRoZW50aWNhdGU/OiBib29sZWFuO1xuICBkZWJ1Zz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGhlbHBMaW5rID0gJ2h0dHBzOi8vaGVscC5ldm9sdXRpY3N0ZWNoLmNvbS8nO1xuICByZWFkb25seSB1c2VyUHJvZmlsZUtleSA9ICd1c2VyUHJvZmlsZSc7XG4gIHJlYWRvbmx5IHVzZXJTdG9yYWdlS2V5ID0gJ3VzZXInO1xuICByZWFkb25seSB3YXRlcm1hcms/OiBzdHJpbmc7XG4gIHNvdXJjZUxhbmd1YWdlOiBzdHJpbmcgPSBFTGFuZ3VhZ2UuRU47XG4gIHNlY3JldEtleTogc3RyaW5nO1xuICBnZXQgdG9rZW4oKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgc2V0IGxvYWRpbmcodjogYm9vbGVhbikge1xuICAgIGlmICh2KSB0aGlzLnBhZ2VMb2FkZXIuc3RhcnRQbCgpO1xuICAgIGVsc2UgdGhpcy5wYWdlTG9hZGVyLnN0b3BQbCgpO1xuICB9XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBwcm9kdWN0aW9uOiBib29sZWFuLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgKSB7XG4gICAgaWYgKCFwcm9kdWN0aW9uKSB0aGlzLmRlYnVnID0gdHJ1ZTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIGlmICh0aGlzLmxvZ0FjdGl2aXRpZXMgPT0gbnVsbCkgdGhpcy5sb2dBY3Rpdml0aWVzID0gcHJvZHVjdGlvbiA9PSB0cnVlO1xuICB9XG4gIHByb3RlY3RlZCBfdHJhbnNsYXRlPzogYm9vbGVhbjtcbiAgZ2V0IHRyYW5zbGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlIHx8IGZhbHNlO1xuICB9XG4gIHNldCB0cmFuc2xhdGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl90cmFuc2xhdGUgPSB2YWx1ZTtcbiAgfVxuICBfdGFyZ2V0TGFuZ3VhZ2U/OiBzdHJpbmc7XG4gIGdldCB0YXJnZXRMYW5ndWFnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90YXJnZXRMYW5ndWFnZTtcbiAgfVxuICBzZXQgdGFyZ2V0TGFuZ3VhZ2UodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3RhcmdldExhbmd1YWdlID0gdmFsdWU7XG4gIH1cbiAgLyoqXG4gICAqIFJlaW5pdGlhbGlzZSB0aGUgZW52aXJvbm1lbnQgb2JqZWN0XG4gICAqIEBwYXJhbSBlbnYgTmV3IEVudmlyb25tZW50IG9iamVjdCB0byB1c2UgdG8gcmVzZXN0IHRoaXMgb2JqZWN0XG4gICAqL1xuICByZWluaXQoZW52OiBhbnkpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIGVudik7XG4gIH1cbn1cbmV4cG9ydCBjbGFzcyBFbnZpcm9ubWVudCBleHRlbmRzIFNES0Vudmlyb25tZW50IHtcbiAgb3ZlcnJpZGUgYWN0aXZlU3lzdGVtczogRVN5c3RlbVtdO1xuICBvdmVycmlkZSBhcHBSb3V0ZXM6IEFwcFJvdXRlQmFzZTtcbiAgb3ZlcnJpZGUgYm90dG9tTWVudTogRVRTTWVudUl0ZW1bXTtcbiAgb3ZlcnJpZGUgbWVudXM6IEVUU01lbnVJdGVtW107XG4gIG92ZXJyaWRlIGN1cnJlbnRTeXN0ZW06IEVTeXN0ZW07XG4gIG92ZXJyaWRlIHNvdXJjZUxhbmd1YWdlOiBFTGFuZ3VhZ2UgPSBFTGFuZ3VhZ2UuRU47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG92ZXJyaWRlIHByb2R1Y3Rpb246IGJvb2xlYW4sXG4gICAgbmFtZTogc3RyaW5nLFxuICApIHtcbiAgICBzdXBlcihwcm9kdWN0aW9uLCBuYW1lKTtcbiAgfVxuXG4gIG92ZXJyaWRlIF90YXJnZXRMYW5ndWFnZT86IEVMYW5ndWFnZTtcbiAgb3ZlcnJpZGUgZ2V0IHRhcmdldExhbmd1YWdlKCk6IEVMYW5ndWFnZSB7XG4gICAgcmV0dXJuIHRoaXMuX3RhcmdldExhbmd1YWdlO1xuICB9XG4gIG92ZXJyaWRlIHNldCB0YXJnZXRMYW5ndWFnZSh2YWx1ZTogRUxhbmd1YWdlKSB7XG4gICAgdGhpcy5fdGFyZ2V0TGFuZ3VhZ2UgPSB2YWx1ZTtcbiAgfVxufVxuIl19
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL21vZGVscy9lbnZpcm9ubWVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHMUQsT0FBTyxFQUEwQixTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFN0UsTUFBTSxPQUFnQixjQUFjO0lBc0VsQyxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxDQUFVO1FBQ3BCLElBQUksQ0FBQztZQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7O1lBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUNELFlBQ1MsVUFBbUIsRUFDMUIsSUFBWTtRQURMLGVBQVUsR0FBVixVQUFVLENBQVM7UUF6RTVCLGtCQUFhLEdBQXFCLElBQUksR0FBRyxDQUFjLEVBQUUsQ0FBQyxDQUFDO1FBTTNEOztXQUVHO1FBQ00sNkJBQXdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDckQ7O1dBRUc7UUFDTSxrQ0FBNkIsR0FBRyxxQkFBcUIsQ0FBQztRQVV0RCxzQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUVyQyxpQkFBWSxHQUFHLFdBQVcsQ0FBQztRQUMzQix5QkFBb0IsR0FBRyxtQkFBbUIsQ0FBQztRQUMzQyxnQkFBVyxHQUFHLFVBQVUsQ0FBQztRQUdsQyxlQUFVLEdBQXNDLGNBQWMsQ0FBQztRQU8vRDs7V0FFRztRQUNILG1CQUFjLEdBQWtCLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFHdEUsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFLbkIsZUFBVSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDOUIsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFHUixZQUFPLEdBQUcsTUFBTSxDQUFDO1FBRTFCLFlBQU8sR0FBVyxXQUFXLENBQUM7UUFHckIsYUFBUSxHQUFHLGlDQUFpQyxDQUFDO1FBQzdDLG1CQUFjLEdBQUcsYUFBYSxDQUFDO1FBQy9CLG1CQUFjLEdBQUcsTUFBTSxDQUFDO1FBRWpDLG1CQUFjLEdBQVcsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQWVwQyxJQUFJLENBQUMsVUFBVTtZQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJO1lBQUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLElBQUksSUFBSSxDQUFDO0lBQzFFLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxJQUFJLFNBQVMsQ0FBQyxLQUFjO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFJLGNBQWMsQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFDRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsR0FBUTtRQUNiLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQUNELE1BQU0sT0FBTyxXQUFZLFNBQVEsY0FBYztJQVE3QyxZQUNrQixVQUFtQixFQUNuQyxJQUFZO1FBRVosS0FBSyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUhSLGVBQVUsR0FBVixVQUFVLENBQVM7UUFINUIsbUJBQWMsR0FBYyxTQUFTLENBQUMsRUFBRSxDQUFDO0lBT2xELENBQUM7SUFHRCxJQUFhLGNBQWM7UUFDekIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFhLGNBQWMsQ0FBQyxLQUFnQjtRQUMxQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBQYWdlTG9hZGVyIH0gZnJvbSAnLi4vY2xhc3Nlcy9wYWdlLWxvYWRlci5jbGFzcyc7XG5pbXBvcnQgeyBFVFNNZW51SXRlbSB9IGZyb20gJy4vSU1lbnVJdGVtJztcbmltcG9ydCB7IEFwcFJvdXRlQmFzZSB9IGZyb20gJy4vUm91dGVJdGVtLmNsYXNzJztcbmltcG9ydCB7IElDb25maWdJbWFnZXMsIEVTeXN0ZW0sIEVMYW5ndWFnZSwgRU1lbnVUeXBlIH0gZnJvbSAnLi9pbmRleC5tb2RlbCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTREtFbnZpcm9ubWVudCB7XG4gIGFwcFJvdXRlcz86IGFueTtcbiAgYWN0aXZlU3lzdGVtczogYW55W107XG4gIGJvdHRvbU1lbnU6IGFueVtdO1xuICBjdXJyZW50U3lzdGVtOiBhbnk7XG4gIGV4Y2x1ZGVkTWVudXM6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwPHN0cmluZywgYW55PihbXSk7XG4gIGxvZ1JlcTogYm9vbGVhbjtcbiAgbWVudXM6IGFueVtdO1xuICBub1VzZXJSb2xlQ2hlY2s6IGJvb2xlYW47IFxuICBwYWdlVGl0bGU6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHN0b3JhZ2Uga2V5IGZvciB0aGUgbGFzdCB0aW1lc3RhbXAgYW4gdXBkYXRlIHdhcyBmb3VuZFxuICAgKi9cbiAgcmVhZG9ubHkgbGFzdFVwZGF0ZVRpbWVTdG9yYWdlS2V5ID0gJ2xhc3RVcGRhdGVUaW1lJztcbiAgLyoqXG4gICAqIFRoZSBzdG9yYWdlIGtleSBmb3IgdGhlIGxhc3QgdGltZXN0YW1wIGFuIHVwZGF0ZSB3YXMgY2hlY2tlZFxuICAgKi9cbiAgcmVhZG9ubHkgbGFzdFVwZGF0ZUNoZWNrVGltZVN0b3JhZ2VLZXkgPSAnbGFzdFVwZGF0ZUNoZWNrVGltZSc7XG4gIC8qKlxuICAgKiBMYXN0IHRpbWVzdGFtcCBhbiB1cGRhdGUgd2FzIGZvdW5kXG4gICAqL1xuICBsYXN0VXBkYXRlVGltZTogbnVtYmVyO1xuICAvKipcbiAgICogTGFzdCB0aW1lc3RhbXAgYW4gdXBkYXRlIHdhcyBjaGVja2VkXG4gICAqL1xuICBsYXN0VXBkYXRlQ2hlY2tUaW1lOiBudW1iZXI7XG4gIGltYWdlczogSUNvbmZpZ0ltYWdlcztcbiAgcmVhZG9ubHkgdGFyZ2V0TGFuZ3VhZ2VLZXkgPSAndGFyZ2V0TGFuZ3VhZ2UnO1xuICByZWFkb25seSB0cmFuc0dsb3NzYXJ5S2V5OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRyYW5zbGF0ZUtleSA9ICd0cmFuc2xhdGUnO1xuICByZWFkb25seSB1c2VyQ29tcGFueUNvbmZpZ0tleSA9ICd1c2VyQ29tcGFueUNvbmZpZyc7XG4gIHJlYWRvbmx5IHVzZXJNZW51S2V5ID0gJ3VzZXJNZW51JztcbiAgc2luZ2xlVGFiVXNhZ2U6IGJvb2xlYW47XG4gIGxvZ0FjdGl2aXRpZXM6IGJvb2xlYW47XG4gIHN0b3JhZ2VLZXk6ICdsb2NhbFN0b3JhZ2UnIHwgJ3Nlc3Npb25TdG9yYWdlJyA9ICdsb2NhbFN0b3JhZ2UnO1xuICB0cmFuc0dsb3NzYXJ5OiBhbnk7XG4gIHVzZXJDb21wYW55Q29uZmlnOiBhbnk7XG4gIC8qKlxuICAgKiBTcGVjaWZ5IHdoZXRoZXIgdG8gdXNlIGNvbnRhaW5lciBvciBjb250YWluZXItZmx1aWQgZm9yIHRoZSBib2R5IG9mIHRoZSB2aWV3LiBJdCBzaG91bGQgYmUgdW5zZXQgYXQgdGhlIG5nT25EZXN0cm95IGZ1bmN0aW9uXG4gICAqL1xuICB3aWRlU2NyZWVuOiBib29sZWFuO1xuICAvKipcbiAgICogRW50ZXIgdmFsdWUgaW4gbWlsbGlzZWNvbmQgb3IgRGF0ZSBvYmplY3RcbiAgICovXG4gIHJlcXVlc3RUaW1lb3V0OiBudW1iZXIgfCBEYXRlID0gbmV3IERhdGUoODY0MDAwMDAgKiAzNjUgKyBEYXRlLm5vdygpKTtcbiAgYWxyZWFkeU9wZW5lZDogYm9vbGVhbjtcbiAgdXNlQnVzbGluZTogYW55O1xuICB1c2VVc2VyTWVudSA9IHRydWU7XG4gIC8qKlxuICAgKiBTcGVjaWZ5IGFkZGl0aW9uYWwgY2xhc3MoZXMpIHRvIGJlIGFkZGVkIHRvIHRoZSBib2R5IG9mIHRoZSB2aWV3LiBJdCBzaG91bGQgYmUgdW5zZXQgYXQgdGhlIG5nT25EZXN0cm95IGZ1bmN0aW9uXG4gICAqL1xuICBib2R5Q2xhc3M6IHN0cmluZztcbiAgcGFnZUxvYWRlciA9IG5ldyBQYWdlTG9hZGVyKCk7XG4gIHJlcXVlc3RDb3VudCA9IDA7XG4gIHVzaW5nQWN0aXZlRGlyZWN0b3J5OiBib29sZWFuO1xuICBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGU7XG4gIHJlYWRvbmx5IGxvZ3NLZXkgPSAnbG9ncyc7XG4gIGFwaUJhc2VVcmw/OiBzdHJpbmc7XG4gIGFwcE5hbWU6IHN0cmluZyA9ICdFdm9sdXRpY3MnO1xuICBhdXRoZW50aWNhdGU/OiBib29sZWFuO1xuICBkZWJ1Zz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGhlbHBMaW5rID0gJ2h0dHBzOi8vaGVscC5ldm9sdXRpY3N0ZWNoLmNvbS8nO1xuICByZWFkb25seSB1c2VyUHJvZmlsZUtleSA9ICd1c2VyUHJvZmlsZSc7XG4gIHJlYWRvbmx5IHVzZXJTdG9yYWdlS2V5ID0gJ3VzZXInO1xuICByZWFkb25seSB3YXRlcm1hcms/OiBzdHJpbmc7XG4gIHNvdXJjZUxhbmd1YWdlOiBzdHJpbmcgPSBFTGFuZ3VhZ2UuRU47XG4gIHNlY3JldEtleTogc3RyaW5nO1xuICB2ZXJzaW9uTm8/OiBzdHJpbmc7XG4gIHNlbnRyeUtleT86IHN0cmluZztcbiAgZ2V0IHRva2VuKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHNldCBsb2FkaW5nKHY6IGJvb2xlYW4pIHtcbiAgICBpZiAodikgdGhpcy5wYWdlTG9hZGVyLnN0YXJ0UGwoKTtcbiAgICBlbHNlIHRoaXMucGFnZUxvYWRlci5zdG9wUGwoKTtcbiAgfVxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcHJvZHVjdGlvbjogYm9vbGVhbixcbiAgICBuYW1lOiBzdHJpbmcsXG4gICkge1xuICAgIGlmICghcHJvZHVjdGlvbikgdGhpcy5kZWJ1ZyA9IHRydWU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICBpZiAodGhpcy5sb2dBY3Rpdml0aWVzID09IG51bGwpIHRoaXMubG9nQWN0aXZpdGllcyA9IHByb2R1Y3Rpb24gPT0gdHJ1ZTtcbiAgfVxuICBwcm90ZWN0ZWQgX3RyYW5zbGF0ZT86IGJvb2xlYW47XG4gIGdldCB0cmFuc2xhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZSB8fCBmYWxzZTtcbiAgfVxuICBzZXQgdHJhbnNsYXRlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fdHJhbnNsYXRlID0gdmFsdWU7XG4gIH1cbiAgX3RhcmdldExhbmd1YWdlPzogc3RyaW5nO1xuICBnZXQgdGFyZ2V0TGFuZ3VhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGFyZ2V0TGFuZ3VhZ2U7XG4gIH1cbiAgc2V0IHRhcmdldExhbmd1YWdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl90YXJnZXRMYW5ndWFnZSA9IHZhbHVlO1xuICB9XG4gIC8qKlxuICAgKiBSZWluaXRpYWxpc2UgdGhlIGVudmlyb25tZW50IG9iamVjdFxuICAgKiBAcGFyYW0gZW52IE5ldyBFbnZpcm9ubWVudCBvYmplY3QgdG8gdXNlIHRvIHJlc2VzdCB0aGlzIG9iamVjdFxuICAgKi9cbiAgcmVpbml0KGVudjogYW55KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCBlbnYpO1xuICB9XG59XG5leHBvcnQgY2xhc3MgRW52aXJvbm1lbnQgZXh0ZW5kcyBTREtFbnZpcm9ubWVudCB7XG4gIG92ZXJyaWRlIGFjdGl2ZVN5c3RlbXM6IEVTeXN0ZW1bXTtcbiAgb3ZlcnJpZGUgYXBwUm91dGVzOiBBcHBSb3V0ZUJhc2U7XG4gIG92ZXJyaWRlIGJvdHRvbU1lbnU6IEVUU01lbnVJdGVtW107XG4gIG92ZXJyaWRlIG1lbnVzOiBFVFNNZW51SXRlbVtdO1xuICBvdmVycmlkZSBjdXJyZW50U3lzdGVtOiBFU3lzdGVtO1xuICBvdmVycmlkZSBzb3VyY2VMYW5ndWFnZTogRUxhbmd1YWdlID0gRUxhbmd1YWdlLkVOO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBvdmVycmlkZSBwcm9kdWN0aW9uOiBib29sZWFuLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIocHJvZHVjdGlvbiwgbmFtZSk7XG4gIH1cblxuICBvdmVycmlkZSBfdGFyZ2V0TGFuZ3VhZ2U/OiBFTGFuZ3VhZ2U7XG4gIG92ZXJyaWRlIGdldCB0YXJnZXRMYW5ndWFnZSgpOiBFTGFuZ3VhZ2Uge1xuICAgIHJldHVybiB0aGlzLl90YXJnZXRMYW5ndWFnZTtcbiAgfVxuICBvdmVycmlkZSBzZXQgdGFyZ2V0TGFuZ3VhZ2UodmFsdWU6IEVMYW5ndWFnZSkge1xuICAgIHRoaXMuX3RhcmdldExhbmd1YWdlID0gdmFsdWU7XG4gIH1cbn1cbiJdfQ==
@@ -2053,7 +2053,7 @@ class UtilityService {
2053
2053
  this.formBuilder = new FormBuilder().nonNullable;
2054
2054
  this.formControl = (value, validatorOrOpts, asyncValidator) => [value, validatorOrOpts, asyncValidator];
2055
2055
  this.back = () => this.location.back();
2056
- this.toast = this.toastNotificationService.toastShortcut();
2056
+ this.toast = this.toastNotificationService?.toastShortcut?.();
2057
2057
  this.xOrY = (x, y = '-') => `${x == null ? y : x}`;
2058
2058
  /**
2059
2059
  * Convert Date string to Date Time string