@churchillliving/se-ui-toolkit 6.54.20 → 6.54.21

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.
@@ -525,10 +525,13 @@ export class FormService {
525
525
  const userInfo = JSON.parse(localStorage.getItem("CurrentUserInfo"));
526
526
  const roles = userInfo?.roles?.map((role) => (role.name));
527
527
  let pageUrl = this.router.url?.substring(1);
528
+ if (pageUrl.includes('?')) {
529
+ pageUrl = pageUrl.split('?')[0];
530
+ }
528
531
  this.requestService.post("/SectionConfig/ByPage", { page: pageUrl, roles: roles }).subscribe((response) => {
529
532
  if (response?.length) {
530
533
  userInfo['pageSections'] = response;
531
- localStorage.setItem("CurrentUserInfo", userInfo);
534
+ localStorage.setItem("CurrentUserInfo", JSON.stringify(userInfo));
532
535
  }
533
536
  ;
534
537
  });
@@ -542,4 +545,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
542
545
  providedIn: 'root',
543
546
  }]
544
547
  }], ctorParameters: function () { return [{ type: i1.HyperlinkService }, { type: i2.DropdownService }, { type: i3.AlertService }, { type: i4.RequestService }, { type: i5.Router }]; } });
545
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2UtdWktdG9vbGtpdC9zcmMvbGliL3NlcnZpY2VzL2Zvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxVQUFVLEVBRVYsWUFBWSxHQU9iLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGtCQUFrQixFQUFhLE1BQU0sc0JBQXNCLENBQUM7QUFLckUsT0FBTyxLQUFLLFNBQVMsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7OztBQU9qRCxNQUFNLE9BQU8sV0FBVztJQUV0QixZQUNVLGdCQUFrQyxFQUNsQyxlQUFnQyxFQUNoQyxZQUEwQixFQUMxQixjQUE4QixFQUM5QixNQUFjO1FBSmQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFOakIsb0JBQWUsR0FBVyxLQUFLLENBQUM7SUFPbkMsQ0FBQztJQUNMLFVBQVU7UUFDUixJQUFJLHVCQUF1QixHQUFHLENBQUMsQ0FBQztRQUNoQyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsU0FBUyx3QkFBd0I7WUFDM0QsSUFBSSxRQUFRLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLHdDQUF3QyxDQUFDLENBQUM7WUFDbkYsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ25DLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsd0JBQXdCLENBQUMsQ0FBQTtZQUNuRSxDQUFDLENBQUMsQ0FBQztZQUNI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O1lBQUEsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztpSUFobEJVLFdBQVc7cUlBQVgsV0FBVyxjQUZWLE1BQU07OzJGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRVZhbGlkYXRvcixcbiAgSUZvcm1GaWVsZCxcbiAgRUZvcm1Db250cm9sLFxuICBBZGRGb3JtRmllbGQsXG4gIElTZXRGaWx0ZXIsXG4gIElEcm9wRG93blJlcXVlc3QsXG4gIElMaXN0RmlsdGVyLFxuICBJUmVwb3J0QnRuLFxuICBJRHluYW1pY0Zvcm0sXG59IGZyb20gJy4uL21vZGVscy9mb3JtLm1vZGVsJztcbmltcG9ydCB7IEVHcmlkU29ydERpcmVjdGlvbiwgSUdyaWRTb3J0IH0gZnJvbSAnLi4vbW9kZWxzL2dyaWQubW9kZWwnO1xuaW1wb3J0IHsgSHlwZXJsaW5rU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2h5cGVybGluay5zZXJ2aWNlJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4vYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBEcm9wZG93blNlcnZpY2UgfSBmcm9tICcuL2Ryb3Bkb3duLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVxdWVzdFNlcnZpY2UgfSBmcm9tICcuL3JlcXVlc3Quc2VydmljZSc7XG5pbXBvcnQgKiBhcyB1dGlsaXRpZXMgZnJvbSAnLi91dGlsaXRpZXMuc2VydmljZSc7XG5pbXBvcnQgeyBJRGljdGlvbmFyeSB9IGZyb20gJy4uL21vZGVscy9jb21tb24ubW9kZWwnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1TZXJ2aWNlIHtcbiAgcHVibGljIGZpZWxkRm9jdXNlZE91dDpib29sZWFuID0gZmFsc2U7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHlwZXJsaW5rU2VydmljZTogSHlwZXJsaW5rU2VydmljZSxcbiAgICBwcml2YXRlIGRyb3Bkb3duU2VydmljZTogRHJvcGRvd25TZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXF1ZXN0U2VydmljZTogUmVxdWVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHsgfVxuICBzZXRUb29sdGlwKCl7XG4gICAgbGV0IHRpbWVzVG9SdW5QZXJNZXRob2RDYWxsID0gMztcbiAgICBjb25zdCByZWZyZXNoSWQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiBzZXRUb29sdGlwRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgICAgIGxldCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS10aXRsZS1lbGVtZW50XTpub3QoW2RhdGEtdGl0bGVdKVwiKTtcbiAgICAgICAgQXJyYXkuZnJvbShlbGVtZW50cykuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgc2hvd1Rvb2x0aXBDb25kaXRpb25hbGx5KVxuICAgICAgICB9KTtcbiAgICAgICAgdGltZXNUb1J1blBlck1ldGhvZENhbGwtLTtcbiAgICAgICAgaWYgKHRpbWVzVG9SdW5QZXJNZXRob2RDYWxsID09IDApIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwocmVmcmVzaElkKTtcbiAgICAgICAgfVxuICAgIH0sIDUwMDApXG4gICAgdGltZXNUb1J1blBlck1ldGhvZENhbGwgPSAzO1xuXG4gICAgY29uc3Qgc2hvd1Rvb2x0aXBDb25kaXRpb25hbGx5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBlbGVtZW50U2VsZWN0b3IgPSB0aGlzLmdldEF0dHJpYnV0ZShcImRhdGEtdGl0bGUtZWxlbWVudFwiKTtcbiAgICAgICAgbGV0IHRvb2x0aXBFbGVtZW50cyA9IFtdXG4gICAgICAgIGlmIChlbGVtZW50U2VsZWN0b3IgPT0gJ3NlbGYnKSB7XG4gICAgICAgICAgICB0b29sdGlwRWxlbWVudHMucHVzaCh0aGlzKVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdG9vbHRpcEVsZW1lbnRzID0gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKGVsZW1lbnRTZWxlY3Rvcik7XG4gICAgICAgIH1cbiAgICAgICAgdG9vbHRpcEVsZW1lbnRzLmZvckVhY2godG9vbHRpcEVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxEaXNwbGF5ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodG9vbHRpcEVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoXCJkaXNwbGF5XCIpO1xuICAgICAgICAgICAgaWYgKG9yaWdpbmFsRGlzcGxheS5pbmNsdWRlcygnaW5saW5lJykpIHtcbiAgICAgICAgICAgICAgICB0b29sdGlwRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICAgICAgICAgICAgICB0b29sdGlwRWxlbWVudC5vbm1vdXNlbGVhdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXBFbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gb3JpZ2luYWxEaXNwbGF5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHRpdGxlRWxlbWVudCA9IHRvb2x0aXBFbGVtZW50Lm5vZGVOYW1lID09IFwiSU5QVVRcIiB8fCB0b29sdGlwRWxlbWVudC5ub2RlTmFtZSA9PSBcIlRFWFQtQVJFQVwiID8gdG9vbHRpcEVsZW1lbnQucGFyZW50RWxlbWVudCA6IHRvb2x0aXBFbGVtZW50O1xuICAgICAgICAgICAgaWYgKHRvb2x0aXBFbGVtZW50LnNjcm9sbFdpZHRoID4gdG9vbHRpcEVsZW1lbnQuY2xpZW50V2lkdGggJiYgdG9vbHRpcEVsZW1lbnQuc2Nyb2xsV2lkdGggIT09IHRvb2x0aXBFbGVtZW50LmNsaWVudFdpZHRoICsgMSkge1xuICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9ICcnXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB0b29sdGlwRWxlbWVudC5pbm5lclRleHQ7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCB7IH1cbiAgICAgICAgICAgICAgICBpZiAodGl0bGUgPT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB0b29sdGlwRWxlbWVudC52YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRpdGxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGl0bGUnLCB0aXRsZSk7XG4gICAgICAgICAgICAgIHRvb2x0aXBFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgZnVuY3Rpb24oKSB7IHRpdGxlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtdGl0bGUnKSB9LCB7b25jZSA6IHRydWV9KTtcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aXRsZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXRpdGxlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiAgY2hlY2tWYWxpZGl0eShmb3JtRmllbGRzOiBJRm9ybUZpZWxkW10pOiBib29sZWFuIHtcbiAgICBsZXQgaXNWYWxpZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBmb3JtRmllbGRzLm1hcCgoaXRlbTogSUZvcm1GaWVsZCkgPT4ge1xuICAgICAgaWYgKGl0ZW0udmFsaWRhdGlvbnMgJiYgIWl0ZW0uZGlzYWJsZWQpIHtcbiAgICAgICAgbGV0IGl0ZW1WYWx1ZSA9XG4gICAgICAgICAgaXRlbS5jb250cm9sID09PSBFRm9ybUNvbnRyb2wuTE9PS1VQX0lOUFVUICYmXG4gICAgICAgICAgaXRlbS52YWx1ZSAmJlxuICAgICAgICAgIHR5cGVvZiBpdGVtLnZhbHVlID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgPyBpdGVtLnZhbHVlLnZhbHVlXG4gICAgICAgICAgICA6IGl0ZW0udmFsdWU7XG4gICAgICAgIC8vIGlmKGl0ZW0uY29udHJvbCA9PT0gRUZvcm1Db250cm9sLkxPT0tVUF9JTlBVVCAmJiBpdGVtLnZhbHVlICAmJiB0eXBlb2YoaXRlbS52YWx1ZSkgPT09ICdvYmplY3QnKXtcbiAgICAgICAgLy8gICBpdGVtLnZhbHVlID0gaXRlbS52YWx1ZS52YWx1ZTtcbiAgICAgICAgLy8gIH1cbiAgICAgICAgaXRlbS5lcnJvck1lc3NhZ2UgPSAnJztcbiAgICAgICAgaXRlbS5pc3ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtLnZhbGlkYXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgbWluTWF4VmFsaWREYXRlID0gdXRpbGl0aWVzLmNhbGVuZGFyTWluTWF4VmFsdWUoaXRlbSwgaXRlbVZhbHVlLCBpKTtcbiAgICAgICAgICBjb25zdCB2YWxpZCA9XG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zICYmIHR5cGVvZiBpdGVtLmxhYmVsID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgICA/IGl0ZW0ubGFiZWwubmFtZVxuICAgICAgICAgICAgICA6IGl0ZW0ubGFiZWw7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuUkVRVUlSRUQgJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgICFpdGVtLmhpZGRlbiAmJlxuICAgICAgICAgICAgdmFsaWRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPSBpdGVtVmFsdWVcbiAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYCR7dmFsaWR9IGlzIHJlcXVpcmVkYCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5NSU5MRU5HVEggJiZcbiAgICAgICAgICAgIGl0ZW1WYWx1ZS5sZW5ndGggPCBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb25cbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS5sZW5ndGggPiBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgICBgJHtpdGVtLmxhYmVsfSBNaW5pbXVtICR7aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9ufSBjaGFyYWN0ZXJzYFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLk1BWExFTkdUSCAmJlxuICAgICAgICAgICAgaXRlbVZhbHVlLmxlbmd0aCA+IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLmxlbmd0aCA8IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGAke2l0ZW0ubGFiZWx9IE1heGltdW0gJHtpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb259IGNoYXJhY3RlcnNgXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuTUlOSU1VTSAmJlxuICAgICAgICAgICAgaXNWYWxpZFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYoaXRlbS5jb250cm9sID09PSBFRm9ybUNvbnRyb2wuQ0FMRU5EQVIpe1xuICAgICAgICAgICAgICBpc1ZhbGlkID0gbWluTWF4VmFsaWREYXRlID09PSAnbWluaW11bScgPyB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgTWluaW11bSAke3ZhbGlkfSAke2l0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbn1gKSA6IHRydWU7XG4gICAgICAgICAgICB9ZWxzZSBpZihpdGVtVmFsdWUgPCBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb24pe1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLmxlbmd0aCA+IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGAke2l0ZW0ubGFiZWx9IE1pbmltdW0gJHt2YWxpZH0gJHtpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb259YFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5NQVhJTVVNICYmXG4gICAgICAgICAgICBpc1ZhbGlkXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZihpdGVtLmNvbnRyb2wgPT09IEVGb3JtQ29udHJvbC5DQUxFTkRBUil7XG4gICAgICAgICAgICAgIGlzVmFsaWQgPSBtaW5NYXhWYWxpZERhdGUgPT09ICdncmVhdGVyJyA/IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBNYXhpbXVtICR7dmFsaWR9ICR7aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9ufWApIDogdHJ1ZTtcbiAgICAgICAgICAgIH1lbHNlIGlmKGl0ZW1WYWx1ZSA+IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbil7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUubGVuZ3RoIDwgaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShcbiAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgYCR7aXRlbS5sYWJlbH0gTWF4aW11bSAke3ZhbGlkfSAke2l0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbn1gXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLlBBVFRFUk4gJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWUubWF0Y2goaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLm1hdGNoKGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbilcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBFbnRlciB2YWxpZCAke3ZhbGlkfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuTlVNRVJJQyAmJlxuICAgICAgICAgICAgIWl0ZW1WYWx1ZS50b1N0cmluZygpLm1hdGNoKC9eKDB8Wy0oKTEtOV1cXGQqKSQvKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlPy50b1N0cmluZygpPy5tYXRjaCgvXigwfFsxLTldXFxkKikkLylcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBFbnRlciAke2l0ZW0udmFsaWRhdGlvbnNbaV0udHlwZX0gZm9yICR7dmFsaWR9YCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5QSE9ORSAmJlxuICAgICAgICAgICAgIWl0ZW1WYWx1ZS50b1N0cmluZygpLm1hdGNoKC9eKD89LipbMC05XSlbLSgpMC05XFxzK3hdKyQvKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL14oPz0uKlswLTldKVstKCkwLTlcXHMreF0rJC8pXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgRW50ZXIgdmFsaWQgJHt2YWxpZH1gKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLkRFQ0lNQUwgJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWU/LnRvU3RyaW5nKCk/Lm1hdGNoKC9eKDB8Wy0oKTEtOV1cXGQqKShcXC5cXGQrKT8kLylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS5tYXRjaCgvXigwfFsxLTldXFxkKikoXFwuXFxkKyk/JC8pXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgRW50ZXIgJHtpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGV9IGZvciAke3ZhbGlkfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuRU1BSUwgJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWUubWF0Y2goL15bYS16QS1aMC05Ll8tXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLDZ9JC8pXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbVZhbHVlLm1hdGNoKC9eW2EtekEtWjAtOS5fLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Miw2fSQvKVxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYEVudGVyIHZhbGlkICR7dmFsaWR9YCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9ZWxzZSBpZihpdGVtVmFsdWUgJiYgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlPT1FVmFsaWRhdG9yLk1BWE9QVElPTlMgJiYgaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uKXtcbiAgICAgICAgICAgIHZhciBtYXhPcHRpb25zPWl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbjtcbiAgICAgICAgICAgIGlzVmFsaWQ9aXRlbVZhbHVlLmxlbmd0aD5tYXhPcHRpb25zP3RoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBNYXhpbXVtIHZhbHVlcyBmb3IgJHt2YWxpZH0gaXMgJHttYXhPcHRpb25zfWApOnRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaXNWYWxpZDtcbiAgfVxuXG4gIHNldEVycm9yTWVzc2FnZShpdGVtOiBJRm9ybUZpZWxkLCBlcnJvck1lc3NhZ2U6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGl0ZW0uZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlO1xuICAgIGl0ZW0uaXN2YWxpZCA9IGZhbHNlO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGFkZEZvcm1GaWVsZChmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBpZiAoIWZpZWxkSW5mby5sYWJlbCkge1xuICAgICAgZmllbGRJbmZvLmxhYmVsID0gZmllbGRJbmZvLmZpZWxkO1xuICAgIH1cbiAgICBjb25zdCBmb3JtRmllbGQ6IGFueSA9IHtcbiAgICAgIGxhYmVsOiBmaWVsZEluZm8ubGFiZWwsXG4gICAgICBmaWVsZDogZmllbGRJbmZvLmZpZWxkLFxuICAgICAgZGlzcGxheUZpZWxkOiBmaWVsZEluZm8uZGlzcGxheUZpZWxkLFxuICAgICAgY29udHJvbDogZmllbGRJbmZvLmNvbnRyb2wsXG4gICAgICBzaG93T3B0aW9uOiBmaWVsZEluZm8uc2hvd09wdGlvbixcbiAgICAgIGNvbHVtbjogZmllbGRJbmZvLmNvbHVtbixcbiAgICAgIHJvdzogZmllbGRJbmZvLnJvdyxcbiAgICAgIG1pbnV0ZXNJbnRlcnZhbDogZmllbGRJbmZvLm1pbnV0ZXNJbnRlcnZhbCxcbiAgICAgIHZhbHVlOiBmaWVsZEluZm8udmFsdWUsXG4gICAgICBmb3JtYXQ6IGZpZWxkSW5mby5mb3JtYXQsXG4gICAgICBoaWRkZW46IGZpZWxkSW5mby5oaWRkZW4sXG4gICAgICBwZXJtaXNzaW9uczogZmllbGRJbmZvLnBlcm1pc3Npb25zLFxuICAgICAgdmFsaWRhdGlvbnM6IGZpZWxkSW5mby52YWxpZGF0aW9ucyxcbiAgICAgIGlkOiBmaWVsZEluZm8uaWQsXG4gICAgICBoeXBlcmxpbms6IGZpZWxkSW5mby5oeXBlcmxpbmssXG4gICAgICBkYXRhOiBmaWVsZEluZm8uZGF0YSxcbiAgICAgIGxvb2t1cENvbnRyb2w6IGZpZWxkSW5mby5sb29rdXBDb250cm9sLFxuICAgICAgY29tcG9uZW50Q29udHJvbDogZmllbGRJbmZvLmNvbXBvbmVudENvbnRyb2wsXG4gICAgICBvcHRpb25MYWJlbDogZmllbGRJbmZvLm9wdGlvbkxhYmVsLFxuICAgICAgb3B0aW9uVmFsdWU6IGZpZWxkSW5mby5vcHRpb25WYWx1ZSxcbiAgICAgIHNhdmVBc1N0cmluZzogZmllbGRJbmZvLnNhdmVBc1N0cmluZyxcbiAgICAgIHNob3dBbGxWYWx1ZTogZmllbGRJbmZvLnNob3dBbGxWYWx1ZSxcbiAgICAgIG9uQ2xpY2s6IGZpZWxkSW5mby5vbkNsaWNrLFxuICAgICAgb25SZXR1cm46IGZpZWxkSW5mby5vblJldHVybixcbiAgICAgIG9uRm9jdXNPdXQ6IGZpZWxkSW5mby5vbkZvY3VzT3V0LFxuICAgICAgb25DaGFuZ2U6IGZpZWxkSW5mby5vbkNoYW5nZSxcbiAgICAgIHRhYmxlczogZmllbGRJbmZvLnRhYmxlcyxcbiAgICAgIGRpc2FibGVkOiBmaWVsZEluZm8uZGlzYWJsZWQsXG4gICAgICBkaXNhYmxlZFRleHQ6IGZpZWxkSW5mby5kaXNhYmxlZFRleHQsXG4gICAgICB0aW1lT25seTogZmllbGRJbmZvLnRpbWVPbmx5LFxuICAgICAgaXNQYXNzd29yZDogZmllbGRJbmZvLmlzUGFzc3dvcmQsXG4gICAgICB0ZXh0VHlwZTogZmllbGRJbmZvLnRleHRUeXBlLFxuICAgICAgbW9udGhPbmx5OiBmaWVsZEluZm8ubW9udGhPbmx5LFxuICAgICAgc2hvd1RpbWU6IGZpZWxkSW5mby5zaG93VGltZSwgLy8gdG8gc2hvdyB0aW1lIGFzIHdlbGwgaW4gY2FsZW5kYXIgZm9ybSBmaWVsZFxuICAgICAgaGVpZ2h0OiBmaWVsZEluZm8uaGVpZ2h0LFxuICAgICAgc2hvd0JvdHRvbUJvcmRlcjogZmllbGRJbmZvLnNob3dCb3R0b21Cb3JkZXIsXG4gICAgICBhbGxvd1NlYXJjaDogZmllbGRJbmZvLmFsbG93U2VhcmNoLFxuICAgICAgc2VsZWN0TXVsdGlwbGVGaWxlczogZmllbGRJbmZvLnNlbGVjdE11bHRpcGxlRmlsZXMsXG4gICAgICBTZXRmaWxlVHlwZXM6IGZpZWxkSW5mby5TZXRmaWxlVHlwZXMsXG4gICAgICBpY29uOiBmaWVsZEluZm8uaWNvbixcbiAgICAgIGNvbG9yOiBmaWVsZEluZm8uY29sb3IsXG4gICAgICBjYXJkOiBmaWVsZEluZm8uY2FyZCxcbiAgICAgIHVuaXF1ZUtleTogZmllbGRJbmZvLnVuaXF1ZUtleSxcbiAgICAgIHBhdGhTeXN0ZW1Db25maWc6IGZpZWxkSW5mby5wYXRoU3lzdGVtQ29uZmlnLFxuICAgICAgYXp1cmVDb250YWluZXI6IGZpZWxkSW5mby5henVyZUNvbnRhaW5lcixcbiAgICAgIGNsYXNzOiBmaWVsZEluZm8uY2xhc3NcbiAgICB9O1xuXG4gICAgcmV0dXJuIGZvcm1GaWVsZDtcbiAgfVxuXG4gIGFkZENoZWNrYm94KGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQ0hFQ0tCT1g7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGRUZXh0Ym94KGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuSU5QVVQ7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGREaXNwbGF5RmllbGQoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5JTlBVVDtcbiAgICBmaWVsZEluZm8uZGlzYWJsZWQgPSB0cnVlO1xuICAgIGZpZWxkSW5mby5zaG93Qm90dG9tQm9yZGVyID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZE51bWVyaWNUZXh0Ym94KGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuTlVNRVJJQztcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZFNwYWNlRmllbGQoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxke1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLlNQQUNFUjtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZE5ld0xpbmUoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxke1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkJSRUFLX0xJTkU7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGRUZXh0QXJlYShmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLlRFWFRBUkVBO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG4gIFxuICAgLy8gQWRkaW5nIFJlcG9ydCBidXR0b24gZm9yIER5bmFtaWNGb3JtXG4gICBhZGRSZXBvcnRCdG4oZmllbGRJbmZvOiBJUmVwb3J0QnRuKSB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuUkVQT1JUO1xuICAgIHJldHVybiBmaWVsZEluZm87XG4gIH1cblxuICBhZGROb3RlRmllbGQoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5OT1RFX0ZJRUxEO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG4gIGFkZFNlbGVjdEJ1dHRvbnMoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5TRUxFQ1RCVVRUT047XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cbiAgYWRkSHlwZXJsaW5rKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKSB7XG4gICAgaWYgKGZpZWxkSW5mby5oeXBlcmxpbmsgJiYgZmllbGRJbmZvLmh5cGVybGluay5jb21wb25lbnQpIHtcbiAgICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkhZUEVSTElOSztcbiAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5oeXBlcmxpbmtTZXJ2aWNlLmJ1aWxkVXJsKFxuICAgICAgICBmaWVsZEluZm8/Lmh5cGVybGluaz8ubGlua0lkXG4gICAgICApLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IGZpZWxkSW5mbz8uaHlwZXJsaW5rPy5wYXJhbXM7XG4gICAgICAgIGxldCBvcmlnaW5hbFVybCA9IHRoaXMuaHlwZXJsaW5rU2VydmljZS5zZXRVcmwocGFyYW1zLCByZXNbMF0pO1xuICAgICAgICBjb25zdCBsaW5rID0gb3JpZ2luYWxVcmw7XG4gICAgICAgIGlmIChvcmlnaW5hbFVybCAmJiBwYXJhbXMpIHtcbiAgICAgICAgICBPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKG9yaWdpbmFsVXJsLmluY2x1ZGVzKCd7eycgKyBrZXkgKyAnfX0nKSAmJiBwYXJhbXNba2V5XSAmJiAhcGFyYW1zW2tleV0udG9TdHJpbmcoKT8uaW5jbHVkZXMoJ3snKSkge1xuICAgICAgICAgICAgICBvcmlnaW5hbFVybCA9IG9yaWdpbmFsVXJsLnJlcGxhY2UoJ3t7JyArIGtleSArICd9fScsIHBhcmFtc1trZXldKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkSW5mby5oeXBlcmxpbms/LmxpbmtJZCAmJiBmaWVsZEluZm8uaHlwZXJsaW5rLmxpbmtJZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZmllbGRJbmZvLmh5cGVybGluay5saW5rID0gb3JpZ2luYWxVcmw7XG4gICAgICAgIH1cbiAgICAgICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuSFlQRVJMSU5LO1xuICAgICAgICBsZXQgb2JqOiBhbnkgPSB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgICAgICBvYmpbJ29yaWduYWxMaW5rJ10gPSBsaW5rO1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYWRkQ2FsZW5kYXIoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5DQUxFTkRBUjtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIC8vIGFkZCBBdXRvQ29tcGxldGUgZm9yIEZvcm1cbiAgYWRkQXV0b0NvbXBsZXRlKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQVVUT0NPTVBMRVRFO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgLy8gU2VhcmNoIEF1dG9Db21wbGV0ZSBEYXRhIGZvciBmb3JtXG4gIGdldEF1dG9Db21wbGV0ZURhdGEoZm9ybUZpZWxkPzogYW55LCB1bmlxdWVLZXk/OiBzdHJpbmcsIGZpbHRlcnM/OiBhbnlbXSwgc2VhcmNoOiBzdHJpbmcgPSAnJyk6IGFueSB7XG4gICAgdGhpcy5yZXF1ZXN0U2VydmljZS5nZXQ8YW55W10sIGFueT4oJy9EYXRhL0ZldGNoJywgeyB1bmlxdWVLZXk6IHVuaXF1ZUtleSwgZmlsdGVyc30pLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PntcbiAgICAgIGlmKHNlYXJjaCl7XG4gICAgICAgbGV0IGV4aXN0SW5SZWNvcmQ6IGJvb2xlYW4gPSByZXNwb25zZS5yZWNvcmRzLnNvbWUoKHJlY29yZDogYW55KT0+IHJlY29yZFtmb3JtRmllbGQuZGlzcGxheUZpZWxkXSAmJiByZWNvcmRbZm9ybUZpZWxkLmRpc3BsYXlGaWVsZF0/LnRvU3RyaW5nKCk/LnRvTG93ZXJDYXNlKCkgPT09IHNlYXJjaD8udG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIGlmKCFleGlzdEluUmVjb3JkKXtcbiAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLnVuc2hpZnQgKHtbZm9ybUZpZWxkLmRpc3BsYXlGaWVsZF06IHNlYXJjaH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3JtRmllbGQuZGF0YSA9IFsuLi5yZXNwb25zZS5yZWNvcmRzXTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZERyb3Bkb3duKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkLCBkcm9wRG93blByb3A/OiBJRHJvcERvd25SZXF1ZXN0KTogYW55IHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5EUk9QRE9XTjtcbiAgICBpZiAoZHJvcERvd25Qcm9wKSB7XG4gICAgICBsZXQgdW5pcXVlS2V5ID0gZHJvcERvd25Qcm9wLnVuaXF1ZUtleTtcbiAgICAgIGxldCB2YWx1ZVByb3AgPSBkcm9wRG93blByb3AudmFsdWVQcm9wO1xuICAgICAgbGV0IGxhYmVsUHJvcCA9IGRyb3BEb3duUHJvcC5sYWJlbFByb3A7XG4gICAgICBsZXQgZmlsdGVyczogSVNldEZpbHRlcltdID0gZHJvcERvd25Qcm9wLmZpbHRlcnMgJiYgZHJvcERvd25Qcm9wLmZpbHRlcnMubGVuZ3RoID4gMCA/IGRyb3BEb3duUHJvcC5maWx0ZXJzIDogW107XG4gICAgICBpZiAodW5pcXVlS2V5ICYmIHZhbHVlUHJvcCAmJiBsYWJlbFByb3ApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RHJvcGRvd25EYXRhKGZpZWxkSW5mbywgdW5pcXVlS2V5LCB2YWx1ZVByb3AsIGxhYmVsUHJvcCwgZmlsdGVycyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgIH1cbiAgfVxuXG4gIGdldERyb3Bkb3duRGF0YShmaWVsZEluZm86IEFkZEZvcm1GaWVsZCwgdW5pcXVlS2V5OiBzdHJpbmcsIHZhbHVlUHJvcDogc3RyaW5nLCBsYWJlbFByb3A6IHN0cmluZywgZmlsdGVyczogYW55W10pIHtcbiAgICByZXR1cm4gdGhpcy5kcm9wZG93blNlcnZpY2VcbiAgICAgIC5zZXREcm9wRG93bkxpc3QoXG4gICAgICAgIHVuaXF1ZUtleSxcbiAgICAgICAgdmFsdWVQcm9wLFxuICAgICAgICBsYWJlbFByb3AsXG4gICAgICAgIGZpbHRlcnNcbiAgICAgIClcbiAgICAgIC50aGVuKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBmaWVsZEluZm8uZGF0YSA9IHJlcztcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFwaUVycm9yKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGFkZExvb2tVcChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkxPT0tVUF9JTlBVVDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZERpYWxvZyhmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIHJldHVybiB0aGlzLmFkZExvb2tVcChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkQ29tcG9uZW50KGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQ09NUE9ORU5UO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkSGVhZGVyKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLlNFQ1RJT05fSEVBREVSO1xuICAgIGZpZWxkSW5mby5jbGFzcyA9ICdmb3JtLWhlYWRlcic7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGRNdWx0aVNlbGVjdChmaWVsZEluZm86IElGb3JtRmllbGQsIGRyb3BEb3duUHJvcD86IElEcm9wRG93blJlcXVlc3QpOiBhbnkge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLk1VTFRJU0VMRUNUO1xuICAgIGlmIChkcm9wRG93blByb3ApIHtcbiAgICAgIGxldCB1bmlxdWVLZXkgPSBkcm9wRG93blByb3AudW5pcXVlS2V5O1xuICAgICAgbGV0IHZhbHVlUHJvcCA9IGRyb3BEb3duUHJvcC52YWx1ZVByb3A7XG4gICAgICBsZXQgbGFiZWxQcm9wID0gZHJvcERvd25Qcm9wLmxhYmVsUHJvcDtcbiAgICAgIGxldCBmaWx0ZXJzOiBJU2V0RmlsdGVyW10gPSBkcm9wRG93blByb3AuZmlsdGVycyAmJiBkcm9wRG93blByb3AuZmlsdGVycy5sZW5ndGggPiAwID8gZHJvcERvd25Qcm9wLmZpbHRlcnMgOiBbXTtcbiAgICAgIGlmICh1bmlxdWVLZXkgJiYgdmFsdWVQcm9wICYmIGxhYmVsUHJvcCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREcm9wZG93bkRhdGEoZmllbGRJbmZvLCB1bmlxdWVLZXksIHZhbHVlUHJvcCwgbGFiZWxQcm9wLCBmaWx0ZXJzKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZmllbGRJbmZvLm9wdGlvbkxhYmVsID0gZmllbGRJbmZvLm9wdGlvbkxhYmVsID8gZmllbGRJbmZvLm9wdGlvbkxhYmVsIDogJ2xhYmVsJztcbiAgICAgIGZpZWxkSW5mby5vcHRpb25WYWx1ZSA9IGZpZWxkSW5mby5vcHRpb25WYWx1ZSA/IGZpZWxkSW5mby5vcHRpb25WYWx1ZSA6ICd2YWx1ZSc7XG4gICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICB9XG4gIH1cblxuICBhZGRGaWxlVXBsb2FkKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkZJTEVfVVBMT0FEO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkRGlzcGxheUZpbGUoZmllbGRJbmZvOiBJRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuRElTUExBWV9GSUxFO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgLy8gQWRkaW5nIE9uQ2xpY2sgQnV0dG9uIEZ1bmN0aW9uIGZvciBEeW5hbWljRm9ybVxuICBhZGRCdXR0b24oZmllbGRJbmZvOiBJRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQUREX0JVVFRPTjtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIC8vIEFkZGluZyBTd2l0Y2ggRnVuY3Rpb24gZm9yIER5bmFtaWNGb3JtXG4gIGFkZFN3aXRjaChmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5TV0lUQ0g7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICAvLyBzdGFydCBhZGQgbmV3IGNhcmQgZnVuY3Rpb25hbGl0eVxuICBhZGRDYXJkKGZpZWxkSW5mbzogSUZvcm1GaWVsZCwgY2FyZERhdGE/OiBJTGlzdEZpbHRlcik6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkNBUkQ7XG4gICAgaWYgKGNhcmREYXRhICYmIGNhcmREYXRhLnVuaXF1ZUtleSkge1xuICAgICAgaWYoY2FyZERhdGEuc29ydHM/Lmxlbmd0aCA+IDApe1xuICAgICAgICBjYXJkRGF0YS5zb3J0cy5mb3JFYWNoKChyZXMpID0+e1xuICAgICAgICByZXMuZGlyZWN0aW9uID0gcmVzLmRpcmVjdGlvbiA/IHJlcy5kaXJlY3Rpb24gOiBFR3JpZFNvcnREaXJlY3Rpb24uQVNDO1xuICAgICAgICB9KTtcbiAgICAgIH0gICBcbiAgICAgIHJldHVybiB0aGlzLmdldENhcmREYXRhKGZpZWxkSW5mbywgY2FyZERhdGEudW5pcXVlS2V5LCBjYXJkRGF0YS5maWx0ZXJzLCBjYXJkRGF0YS5zb3J0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgIH1cbiAgfVxuXG4gIGdldENhcmREYXRhKGZpZWxkSW5mbzogYW55LCB1bmlxdWVLZXk6IHN0cmluZywgZmlsdGVyczogYW55W10gPSBbXSwgc29ydHM6IGFueVtdID0gW10pOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmdldENhcmRMaXN0KHVuaXF1ZUtleSwgZmlsdGVycywgc29ydHMpXG4gICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgZmllbGRJbmZvLmNhcmQuZGF0YSA9IHJlcy5yZWNvcmRzO1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFwaUVycm9yKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8vIGxvYWQgY29tcG9uZW50IG9uIGZvcm1cbiAgc2V0QWRkQ29tcG9uZW50RGF0YSh7IGZvcm1TZWN0aW9ucyB9OiBJRHluYW1pY0Zvcm0sIGlkOiBzdHJpbmcsIHZhbHVlOiBhbnksIGxvYWRDb21wb25lbnQ6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgZm9ybVNlY3Rpb25zPy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChmaWVsZDogYW55KSA9PiB7XG4gICAgICAgIGlmIChmaWVsZC5jb250cm9sID09PSBFRm9ybUNvbnRyb2wuQ09NUE9ORU5UICYmIGZpZWxkLmNvbXBvbmVudENvbnRyb2wgJiYgZmllbGQuY29tcG9uZW50Q29udHJvbD8uaWQgPT09IGlkKSB7XG4gICAgICAgICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSk7XG4gICAgICAgICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGZpZWxkLmNvbXBvbmVudENvbnRyb2wuZGF0YSA9IHsgLi4uZmllbGQuY29tcG9uZW50Q29udHJvbD8uZGF0YSwgW2tleV06IHZhbHVlW2tleV0gfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB1dGlsaXRpZXMuY2hhbmdlRHluYW1pY0Zvcm1TdGF0ZShpZCwgZmllbGQuY29tcG9uZW50Q29udHJvbC5kYXRhLCBsb2FkQ29tcG9uZW50KTtcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gc2V0IGZvcm1maWVsZCB2YWx1ZVxuICBzZXRGb3JtRmllbGRWYWx1ZShcbiAgICB7IGZvcm1TZWN0aW9ucyB9OiBJRHluYW1pY0Zvcm0sXG4gICAgZmllbGQ6IHN0cmluZyxcbiAgICB2YWx1ZTogYW55LFxuICAgIGRpc3BsYXlUZXh0OiBzdHJpbmcgPSAnJ1xuICApIHtcbiAgICBmb3JtU2VjdGlvbnM/LmZvckVhY2goKHNlY3Rpb24pID0+IHtcbiAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGZvcm1GaWVsZCkgPT4ge1xuICAgICAgICBpZiAoZm9ybUZpZWxkLmZpZWxkPy50b0xvd2VyQ2FzZSgpID09PSBmaWVsZD8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgIGlmIChkaXNwbGF5VGV4dCAmJiBkaXNwbGF5VGV4dC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3JtRmllbGQudmFsdWUgPSB7IHRleHQ6IGRpc3BsYXlUZXh0LCB2YWx1ZTogdmFsdWUgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9ybUZpZWxkLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHNldCBmb3JtZmllbGQgcHJvcGVydHlcbiAgc2V0Rm9ybUZpZWxkUHJvcChcbiAgICB7IGZvcm1TZWN0aW9ucyB9OiBJRHluYW1pY0Zvcm0sXG4gICAgZmllbGQ6IHN0cmluZyxcbiAgICBwcm9wczogSURpY3Rpb25hcnlbXVxuICApIHtcbiAgICByZXR1cm4gZm9ybVNlY3Rpb25zPy5tYXAoKHNlY3Rpb246IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHNlY3Rpb24uZmllbGRzLm1hcCgoZm9ybUZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKGZvcm1GaWVsZC5maWVsZD8udG9Mb3dlckNhc2UoKSA9PT0gZmllbGQ/LnRvTG93ZXJDYXNlKCkpIHx8XG4gICAgICAgICAgKGZvcm1GaWVsZC5sYWJlbCAmJiBmb3JtRmllbGQubGFiZWwudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSBmaWVsZD8udG9Mb3dlckNhc2UoKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHByb3BzLm1hcCgocHJvcDogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoZm9ybUZpZWxkLmhhc093blByb3BlcnR5KHByb3AubmFtZSkpIHtcbiAgICAgICAgICAgICAgaWYocHJvcC5uYW1lID09PSAnbGFiZWwnICYmIHR5cGVvZiBmb3JtRmllbGQubGFiZWwgPT09ICdvYmplY3QnICYmICFwcm9wLm92ZXJyaWRlKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gKGZvcm1GaWVsZFtwcm9wLm5hbWVdLm5hbWUgPSBwcm9wLnZhbHVlKTtcbiAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChmb3JtRmllbGRbcHJvcC5uYW1lXSA9IHByb3AudmFsdWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNle1xuICAgICAgICAgICAgICByZXR1cm4gKGZvcm1GaWVsZFtwcm9wLm5hbWVdID0gcHJvcC52YWx1ZSk7XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldENhcmRMaXN0KHVuaXF1ZUtleTogc3RyaW5nLCBmaWx0ZXJzOiBhbnlbXSA9IFtdLCBzb3J0czogYW55W10gPSBbXSkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnJlcXVlc3RTZXJ2aWNlXG4gICAgICAgIC5nZXQ8YW55W10sIGFueT4oJy9EYXRhL0ZldGNoJywgeyB1bmlxdWVLZXk6IHVuaXF1ZUtleSwgZmlsdGVycywgc29ydHMgfSlcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKFtdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgICh7IGVycm9yIH06IGFueSkgPT4ge1xuICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSk7XG4gIH1cbiAgXG4gIC8vIEVuZCBhZGQgbmV3IGNhcmQgZnVuY3Rpb25hbGl0eVxuICBnZXRQYWdlU2VjdGlvbk9yZGVycygpe1xuICAgIGNvbnN0IHVzZXJJbmZvOmFueSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJDdXJyZW50VXNlckluZm9cIikpO1xuICAgIGNvbnN0IHJvbGVzID0gdXNlckluZm8/LnJvbGVzPy5tYXAoKHJvbGUpPT4gKHJvbGUubmFtZSkpO1xuICAgIGxldCBwYWdlVXJsID0gdGhpcy5yb3V0ZXIudXJsPy5zdWJzdHJpbmcoMSk7XG4gICAgdGhpcy5yZXF1ZXN0U2VydmljZS5wb3N0KFwiL1NlY3Rpb25Db25maWcvQnlQYWdlXCIsIHtwYWdlOiBwYWdlVXJsLCByb2xlczogcm9sZXN9KS5zdWJzY3JpYmUoKHJlc3BvbnNlOmFueSkgPT4ge1xuICAgICAgaWYocmVzcG9uc2U/Lmxlbmd0aCl7XG4gICAgICAgIHVzZXJJbmZvWydwYWdlU2VjdGlvbnMnXSA9IHJlc3BvbnNlO1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIkN1cnJlbnRVc2VySW5mb1wiLCB1c2VySW5mbyk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG59XG4iXX0=
548
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2UtdWktdG9vbGtpdC9zcmMvbGliL3NlcnZpY2VzL2Zvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxVQUFVLEVBRVYsWUFBWSxHQU9iLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGtCQUFrQixFQUFhLE1BQU0sc0JBQXNCLENBQUM7QUFLckUsT0FBTyxLQUFLLFNBQVMsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7OztBQU9qRCxNQUFNLE9BQU8sV0FBVztJQUV0QixZQUNVLGdCQUFrQyxFQUNsQyxlQUFnQyxFQUNoQyxZQUEwQixFQUMxQixjQUE4QixFQUM5QixNQUFjO1FBSmQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFOakIsb0JBQWUsR0FBVyxLQUFLLENBQUM7SUFPbkMsQ0FBQztJQUNMLFVBQVU7UUFDUixJQUFJLHVCQUF1QixHQUFHLENBQUMsQ0FBQztRQUNoQyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsU0FBUyx3QkFBd0I7WUFDM0QsSUFBSSxRQUFRLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLHdDQUF3QyxDQUFDLENBQUM7WUFDbkYsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ25DLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsd0JBQXdCLENBQUMsQ0FBQTtZQUNuRSxDQUFDLENBQUMsQ0FBQztZQUNI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LEVBQUUsTUFBTSxFQUFDO2dCQUNsQixRQUFRLENBQUMsY0FBYyxDQUFDLEdBQUcsUUFBUSxDQUFDO2dCQUNwQyxZQUFZLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzthQUNuRTtZQUFBLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7aUlBbmxCVSxXQUFXO3FJQUFYLFdBQVcsY0FGVixNQUFNOzsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEVWYWxpZGF0b3IsXG4gIElGb3JtRmllbGQsXG4gIEVGb3JtQ29udHJvbCxcbiAgQWRkRm9ybUZpZWxkLFxuICBJU2V0RmlsdGVyLFxuICBJRHJvcERvd25SZXF1ZXN0LFxuICBJTGlzdEZpbHRlcixcbiAgSVJlcG9ydEJ0bixcbiAgSUR5bmFtaWNGb3JtLFxufSBmcm9tICcuLi9tb2RlbHMvZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBFR3JpZFNvcnREaXJlY3Rpb24sIElHcmlkU29ydCB9IGZyb20gJy4uL21vZGVscy9ncmlkLm1vZGVsJztcbmltcG9ydCB7IEh5cGVybGlua1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9oeXBlcmxpbmsuc2VydmljZSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuL2FsZXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRHJvcGRvd25TZXJ2aWNlIH0gZnJvbSAnLi9kcm9wZG93bi5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcXVlc3RTZXJ2aWNlIH0gZnJvbSAnLi9yZXF1ZXN0LnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgdXRpbGl0aWVzIGZyb20gJy4vdXRpbGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgSURpY3Rpb25hcnkgfSBmcm9tICcuLi9tb2RlbHMvY29tbW9uLm1vZGVsJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtU2VydmljZSB7XG4gIHB1YmxpYyBmaWVsZEZvY3VzZWRPdXQ6Ym9vbGVhbiA9IGZhbHNlO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh5cGVybGlua1NlcnZpY2U6IEh5cGVybGlua1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBkcm9wZG93blNlcnZpY2U6IERyb3Bkb3duU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVxdWVzdFNlcnZpY2U6IFJlcXVlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7IH1cbiAgc2V0VG9vbHRpcCgpe1xuICAgIGxldCB0aW1lc1RvUnVuUGVyTWV0aG9kQ2FsbCA9IDM7XG4gICAgY29uc3QgcmVmcmVzaElkID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gc2V0VG9vbHRpcEV2ZW50TGlzdGVuZXJzKCkge1xuICAgICAgICBsZXQgZWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEtdGl0bGUtZWxlbWVudF06bm90KFtkYXRhLXRpdGxlXSlcIik7XG4gICAgICAgIEFycmF5LmZyb20oZWxlbWVudHMpLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIHNob3dUb29sdGlwQ29uZGl0aW9uYWxseSlcbiAgICAgICAgfSk7XG4gICAgICAgIHRpbWVzVG9SdW5QZXJNZXRob2RDYWxsLS07XG4gICAgICAgIGlmICh0aW1lc1RvUnVuUGVyTWV0aG9kQ2FsbCA9PSAwKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKHJlZnJlc2hJZCk7XG4gICAgICAgIH1cbiAgICB9LCA1MDAwKVxuICAgIHRpbWVzVG9SdW5QZXJNZXRob2RDYWxsID0gMztcblxuICAgIGNvbnN0IHNob3dUb29sdGlwQ29uZGl0aW9uYWxseSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudFNlbGVjdG9yID0gdGhpcy5nZXRBdHRyaWJ1dGUoXCJkYXRhLXRpdGxlLWVsZW1lbnRcIik7XG4gICAgICAgIGxldCB0b29sdGlwRWxlbWVudHMgPSBbXVxuICAgICAgICBpZiAoZWxlbWVudFNlbGVjdG9yID09ICdzZWxmJykge1xuICAgICAgICAgICAgdG9vbHRpcEVsZW1lbnRzLnB1c2godGhpcylcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRvb2x0aXBFbGVtZW50cyA9IHRoaXMucXVlcnlTZWxlY3RvckFsbChlbGVtZW50U2VsZWN0b3IpO1xuICAgICAgICB9XG4gICAgICAgIHRvb2x0aXBFbGVtZW50cy5mb3JFYWNoKHRvb2x0aXBFbGVtZW50ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGlzcGxheSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRvb2x0aXBFbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKFwiZGlzcGxheVwiKTtcbiAgICAgICAgICAgIGlmIChvcmlnaW5hbERpc3BsYXkuaW5jbHVkZXMoJ2lubGluZScpKSB7XG4gICAgICAgICAgICAgICAgdG9vbHRpcEVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICAgICAgICAgICAgdG9vbHRpcEVsZW1lbnQub25tb3VzZWxlYXZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0b29sdGlwRWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9IG9yaWdpbmFsRGlzcGxheTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB0aXRsZUVsZW1lbnQgPSB0b29sdGlwRWxlbWVudC5ub2RlTmFtZSA9PSBcIklOUFVUXCIgfHwgdG9vbHRpcEVsZW1lbnQubm9kZU5hbWUgPT0gXCJURVhULUFSRUFcIiA/IHRvb2x0aXBFbGVtZW50LnBhcmVudEVsZW1lbnQgOiB0b29sdGlwRWxlbWVudDtcbiAgICAgICAgICAgIGlmICh0b29sdGlwRWxlbWVudC5zY3JvbGxXaWR0aCA+IHRvb2x0aXBFbGVtZW50LmNsaWVudFdpZHRoICYmIHRvb2x0aXBFbGVtZW50LnNjcm9sbFdpZHRoICE9PSB0b29sdGlwRWxlbWVudC5jbGllbnRXaWR0aCArIDEpIHtcbiAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSAnJ1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlID0gdG9vbHRpcEVsZW1lbnQuaW5uZXJUZXh0O1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG4gICAgICAgICAgICAgICAgaWYgKHRpdGxlID09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gdG9vbHRpcEVsZW1lbnQudmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aXRsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLXRpdGxlJywgdGl0bGUpO1xuICAgICAgICAgICAgICB0b29sdGlwRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIGZ1bmN0aW9uKCkgeyB0aXRsZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXRpdGxlJykgfSwge29uY2UgOiB0cnVlfSk7XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGl0bGVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS10aXRsZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4gIGNoZWNrVmFsaWRpdHkoZm9ybUZpZWxkczogSUZvcm1GaWVsZFtdKTogYm9vbGVhbiB7XG4gICAgbGV0IGlzVmFsaWQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgZm9ybUZpZWxkcy5tYXAoKGl0ZW06IElGb3JtRmllbGQpID0+IHtcbiAgICAgIGlmIChpdGVtLnZhbGlkYXRpb25zICYmICFpdGVtLmRpc2FibGVkKSB7XG4gICAgICAgIGxldCBpdGVtVmFsdWUgPVxuICAgICAgICAgIGl0ZW0uY29udHJvbCA9PT0gRUZvcm1Db250cm9sLkxPT0tVUF9JTlBVVCAmJlxuICAgICAgICAgIGl0ZW0udmFsdWUgJiZcbiAgICAgICAgICB0eXBlb2YgaXRlbS52YWx1ZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgID8gaXRlbS52YWx1ZS52YWx1ZVxuICAgICAgICAgICAgOiBpdGVtLnZhbHVlO1xuICAgICAgICAvLyBpZihpdGVtLmNvbnRyb2wgPT09IEVGb3JtQ29udHJvbC5MT09LVVBfSU5QVVQgJiYgaXRlbS52YWx1ZSAgJiYgdHlwZW9mKGl0ZW0udmFsdWUpID09PSAnb2JqZWN0Jyl7XG4gICAgICAgIC8vICAgaXRlbS52YWx1ZSA9IGl0ZW0udmFsdWUudmFsdWU7XG4gICAgICAgIC8vICB9XG4gICAgICAgIGl0ZW0uZXJyb3JNZXNzYWdlID0gJyc7XG4gICAgICAgIGl0ZW0uaXN2YWxpZCA9IHRydWU7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbS52YWxpZGF0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvbnN0IG1pbk1heFZhbGlkRGF0ZSA9IHV0aWxpdGllcy5jYWxlbmRhck1pbk1heFZhbHVlKGl0ZW0sIGl0ZW1WYWx1ZSwgaSk7XG4gICAgICAgICAgY29uc3QgdmFsaWQgPVxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9ucyAmJiB0eXBlb2YgaXRlbS5sYWJlbCA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgPyBpdGVtLmxhYmVsLm5hbWVcbiAgICAgICAgICAgICAgOiBpdGVtLmxhYmVsO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLlJFUVVJUkVEICYmXG4gICAgICAgICAgICAhaXRlbVZhbHVlICYmXG4gICAgICAgICAgICAhaXRlbS5oaWRkZW4gJiZcbiAgICAgICAgICAgIHZhbGlkXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID0gaXRlbVZhbHVlXG4gICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGAke3ZhbGlkfSBpcyByZXF1aXJlZGApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuTUlOTEVOR1RIICYmXG4gICAgICAgICAgICBpdGVtVmFsdWUubGVuZ3RoIDwgaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUubGVuZ3RoID4gaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShcbiAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgYCR7aXRlbS5sYWJlbH0gTWluaW11bSAke2l0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbn0gY2hhcmFjdGVyc2BcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5NQVhMRU5HVEggJiZcbiAgICAgICAgICAgIGl0ZW1WYWx1ZS5sZW5ndGggPiBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb25cbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS5sZW5ndGggPCBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgICBgJHtpdGVtLmxhYmVsfSBNYXhpbXVtICR7aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9ufSBjaGFyYWN0ZXJzYFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLk1JTklNVU0gJiZcbiAgICAgICAgICAgIGlzVmFsaWRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlmKGl0ZW0uY29udHJvbCA9PT0gRUZvcm1Db250cm9sLkNBTEVOREFSKXtcbiAgICAgICAgICAgICAgaXNWYWxpZCA9IG1pbk1heFZhbGlkRGF0ZSA9PT0gJ21pbmltdW0nID8gdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYE1pbmltdW0gJHt2YWxpZH0gJHtpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb259YCkgOiB0cnVlO1xuICAgICAgICAgICAgfWVsc2UgaWYoaXRlbVZhbHVlIDwgaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uKXtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS5sZW5ndGggPiBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgICBgJHtpdGVtLmxhYmVsfSBNaW5pbXVtICR7dmFsaWR9ICR7aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9ufWBcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuTUFYSU1VTSAmJlxuICAgICAgICAgICAgaXNWYWxpZFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYoaXRlbS5jb250cm9sID09PSBFRm9ybUNvbnRyb2wuQ0FMRU5EQVIpe1xuICAgICAgICAgICAgICBpc1ZhbGlkID0gbWluTWF4VmFsaWREYXRlID09PSAnZ3JlYXRlcicgPyB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgTWF4aW11bSAke3ZhbGlkfSAke2l0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbn1gKSA6IHRydWU7XG4gICAgICAgICAgICB9ZWxzZSBpZihpdGVtVmFsdWUgPiBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb24pe1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLmxlbmd0aCA8IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGAke2l0ZW0ubGFiZWx9IE1heGltdW0gJHt2YWxpZH0gJHtpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb259YFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5QQVRURVJOICYmXG4gICAgICAgICAgICAhaXRlbVZhbHVlLm1hdGNoKGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbilcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS5tYXRjaChpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb24pXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgRW50ZXIgdmFsaWQgJHt2YWxpZH1gKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLk5VTUVSSUMgJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWUudG9TdHJpbmcoKS5tYXRjaCgvXigwfFstKCkxLTldXFxkKikkLylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZT8udG9TdHJpbmcoKT8ubWF0Y2goL14oMHxbMS05XVxcZCopJC8pXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgRW50ZXIgJHtpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGV9IGZvciAke3ZhbGlkfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuUEhPTkUgJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWUudG9TdHJpbmcoKS5tYXRjaCgvXig/PS4qWzAtOV0pWy0oKTAtOVxccyt4XSskLylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS50b1N0cmluZygpLm1hdGNoKC9eKD89LipbMC05XSlbLSgpMC05XFxzK3hdKyQvKVxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYEVudGVyIHZhbGlkICR7dmFsaWR9YCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5ERUNJTUFMICYmXG4gICAgICAgICAgICAhaXRlbVZhbHVlPy50b1N0cmluZygpPy5tYXRjaCgvXigwfFstKCkxLTldXFxkKikoXFwuXFxkKyk/JC8pXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUubWF0Y2goL14oMHxbMS05XVxcZCopKFxcLlxcZCspPyQvKVxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYEVudGVyICR7aXRlbS52YWxpZGF0aW9uc1tpXS50eXBlfSBmb3IgJHt2YWxpZH1gKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLkVNQUlMICYmXG4gICAgICAgICAgICAhaXRlbVZhbHVlLm1hdGNoKC9eW2EtekEtWjAtOS5fLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Miw2fSQvKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW1WYWx1ZS5tYXRjaCgvXlthLXpBLVowLTkuXy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsNn0kLylcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBFbnRlciB2YWxpZCAke3ZhbGlkfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfWVsc2UgaWYoaXRlbVZhbHVlICYmIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZT09RVZhbGlkYXRvci5NQVhPUFRJT05TICYmIGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbil7XG4gICAgICAgICAgICB2YXIgbWF4T3B0aW9ucz1pdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb247XG4gICAgICAgICAgICBpc1ZhbGlkPWl0ZW1WYWx1ZS5sZW5ndGg+bWF4T3B0aW9ucz90aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgTWF4aW11bSB2YWx1ZXMgZm9yICR7dmFsaWR9IGlzICR7bWF4T3B0aW9uc31gKTp0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGlzVmFsaWQ7XG4gIH1cblxuICBzZXRFcnJvck1lc3NhZ2UoaXRlbTogSUZvcm1GaWVsZCwgZXJyb3JNZXNzYWdlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpdGVtLmVycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZTtcbiAgICBpdGVtLmlzdmFsaWQgPSBmYWxzZTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBhZGRGb3JtRmllbGQoZmllbGRJbmZvOiBJRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgaWYgKCFmaWVsZEluZm8ubGFiZWwpIHtcbiAgICAgIGZpZWxkSW5mby5sYWJlbCA9IGZpZWxkSW5mby5maWVsZDtcbiAgICB9XG4gICAgY29uc3QgZm9ybUZpZWxkOiBhbnkgPSB7XG4gICAgICBsYWJlbDogZmllbGRJbmZvLmxhYmVsLFxuICAgICAgZmllbGQ6IGZpZWxkSW5mby5maWVsZCxcbiAgICAgIGRpc3BsYXlGaWVsZDogZmllbGRJbmZvLmRpc3BsYXlGaWVsZCxcbiAgICAgIGNvbnRyb2w6IGZpZWxkSW5mby5jb250cm9sLFxuICAgICAgc2hvd09wdGlvbjogZmllbGRJbmZvLnNob3dPcHRpb24sXG4gICAgICBjb2x1bW46IGZpZWxkSW5mby5jb2x1bW4sXG4gICAgICByb3c6IGZpZWxkSW5mby5yb3csXG4gICAgICBtaW51dGVzSW50ZXJ2YWw6IGZpZWxkSW5mby5taW51dGVzSW50ZXJ2YWwsXG4gICAgICB2YWx1ZTogZmllbGRJbmZvLnZhbHVlLFxuICAgICAgZm9ybWF0OiBmaWVsZEluZm8uZm9ybWF0LFxuICAgICAgaGlkZGVuOiBmaWVsZEluZm8uaGlkZGVuLFxuICAgICAgcGVybWlzc2lvbnM6IGZpZWxkSW5mby5wZXJtaXNzaW9ucyxcbiAgICAgIHZhbGlkYXRpb25zOiBmaWVsZEluZm8udmFsaWRhdGlvbnMsXG4gICAgICBpZDogZmllbGRJbmZvLmlkLFxuICAgICAgaHlwZXJsaW5rOiBmaWVsZEluZm8uaHlwZXJsaW5rLFxuICAgICAgZGF0YTogZmllbGRJbmZvLmRhdGEsXG4gICAgICBsb29rdXBDb250cm9sOiBmaWVsZEluZm8ubG9va3VwQ29udHJvbCxcbiAgICAgIGNvbXBvbmVudENvbnRyb2w6IGZpZWxkSW5mby5jb21wb25lbnRDb250cm9sLFxuICAgICAgb3B0aW9uTGFiZWw6IGZpZWxkSW5mby5vcHRpb25MYWJlbCxcbiAgICAgIG9wdGlvblZhbHVlOiBmaWVsZEluZm8ub3B0aW9uVmFsdWUsXG4gICAgICBzYXZlQXNTdHJpbmc6IGZpZWxkSW5mby5zYXZlQXNTdHJpbmcsXG4gICAgICBzaG93QWxsVmFsdWU6IGZpZWxkSW5mby5zaG93QWxsVmFsdWUsXG4gICAgICBvbkNsaWNrOiBmaWVsZEluZm8ub25DbGljayxcbiAgICAgIG9uUmV0dXJuOiBmaWVsZEluZm8ub25SZXR1cm4sXG4gICAgICBvbkZvY3VzT3V0OiBmaWVsZEluZm8ub25Gb2N1c091dCxcbiAgICAgIG9uQ2hhbmdlOiBmaWVsZEluZm8ub25DaGFuZ2UsXG4gICAgICB0YWJsZXM6IGZpZWxkSW5mby50YWJsZXMsXG4gICAgICBkaXNhYmxlZDogZmllbGRJbmZvLmRpc2FibGVkLFxuICAgICAgZGlzYWJsZWRUZXh0OiBmaWVsZEluZm8uZGlzYWJsZWRUZXh0LFxuICAgICAgdGltZU9ubHk6IGZpZWxkSW5mby50aW1lT25seSxcbiAgICAgIGlzUGFzc3dvcmQ6IGZpZWxkSW5mby5pc1Bhc3N3b3JkLFxuICAgICAgdGV4dFR5cGU6IGZpZWxkSW5mby50ZXh0VHlwZSxcbiAgICAgIG1vbnRoT25seTogZmllbGRJbmZvLm1vbnRoT25seSxcbiAgICAgIHNob3dUaW1lOiBmaWVsZEluZm8uc2hvd1RpbWUsIC8vIHRvIHNob3cgdGltZSBhcyB3ZWxsIGluIGNhbGVuZGFyIGZvcm0gZmllbGRcbiAgICAgIGhlaWdodDogZmllbGRJbmZvLmhlaWdodCxcbiAgICAgIHNob3dCb3R0b21Cb3JkZXI6IGZpZWxkSW5mby5zaG93Qm90dG9tQm9yZGVyLFxuICAgICAgYWxsb3dTZWFyY2g6IGZpZWxkSW5mby5hbGxvd1NlYXJjaCxcbiAgICAgIHNlbGVjdE11bHRpcGxlRmlsZXM6IGZpZWxkSW5mby5zZWxlY3RNdWx0aXBsZUZpbGVzLFxuICAgICAgU2V0ZmlsZVR5cGVzOiBmaWVsZEluZm8uU2V0ZmlsZVR5cGVzLFxuICAgICAgaWNvbjogZmllbGRJbmZvLmljb24sXG4gICAgICBjb2xvcjogZmllbGRJbmZvLmNvbG9yLFxuICAgICAgY2FyZDogZmllbGRJbmZvLmNhcmQsXG4gICAgICB1bmlxdWVLZXk6IGZpZWxkSW5mby51bmlxdWVLZXksXG4gICAgICBwYXRoU3lzdGVtQ29uZmlnOiBmaWVsZEluZm8ucGF0aFN5c3RlbUNvbmZpZyxcbiAgICAgIGF6dXJlQ29udGFpbmVyOiBmaWVsZEluZm8uYXp1cmVDb250YWluZXIsXG4gICAgICBjbGFzczogZmllbGRJbmZvLmNsYXNzXG4gICAgfTtcblxuICAgIHJldHVybiBmb3JtRmllbGQ7XG4gIH1cblxuICBhZGRDaGVja2JveChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkNIRUNLQk9YO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkVGV4dGJveChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLklOUFVUO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkRGlzcGxheUZpZWxkKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuSU5QVVQ7XG4gICAgZmllbGRJbmZvLmRpc2FibGVkID0gdHJ1ZTtcbiAgICBmaWVsZEluZm8uc2hvd0JvdHRvbUJvcmRlciA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGROdW1lcmljVGV4dGJveChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLk5VTUVSSUM7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGRTcGFjZUZpZWxkKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5TUEFDRVI7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGROZXdMaW5lKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5CUkVBS19MSU5FO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkVGV4dEFyZWEoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5URVhUQVJFQTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuICBcbiAgIC8vIEFkZGluZyBSZXBvcnQgYnV0dG9uIGZvciBEeW5hbWljRm9ybVxuICAgYWRkUmVwb3J0QnRuKGZpZWxkSW5mbzogSVJlcG9ydEJ0bikge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLlJFUE9SVDtcbiAgICByZXR1cm4gZmllbGRJbmZvO1xuICB9XG5cbiAgYWRkTm90ZUZpZWxkKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuTk9URV9GSUVMRDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuICBhZGRTZWxlY3RCdXR0b25zKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuU0VMRUNUQlVUVE9OO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG4gIGFkZEh5cGVybGluayhmaWVsZEluZm86IEFkZEZvcm1GaWVsZCkge1xuICAgIGlmIChmaWVsZEluZm8uaHlwZXJsaW5rICYmIGZpZWxkSW5mby5oeXBlcmxpbmsuY29tcG9uZW50KSB7XG4gICAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5IWVBFUkxJTks7XG4gICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaHlwZXJsaW5rU2VydmljZS5idWlsZFVybChcbiAgICAgICAgZmllbGRJbmZvPy5oeXBlcmxpbms/LmxpbmtJZFxuICAgICAgKS50aGVuKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBmaWVsZEluZm8/Lmh5cGVybGluaz8ucGFyYW1zO1xuICAgICAgICBsZXQgb3JpZ2luYWxVcmwgPSB0aGlzLmh5cGVybGlua1NlcnZpY2Uuc2V0VXJsKHBhcmFtcywgcmVzWzBdKTtcbiAgICAgICAgY29uc3QgbGluayA9IG9yaWdpbmFsVXJsO1xuICAgICAgICBpZiAob3JpZ2luYWxVcmwgJiYgcGFyYW1zKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChvcmlnaW5hbFVybC5pbmNsdWRlcygne3snICsga2V5ICsgJ319JykgJiYgcGFyYW1zW2tleV0gJiYgIXBhcmFtc1trZXldLnRvU3RyaW5nKCk/LmluY2x1ZGVzKCd7JykpIHtcbiAgICAgICAgICAgICAgb3JpZ2luYWxVcmwgPSBvcmlnaW5hbFVybC5yZXBsYWNlKCd7eycgKyBrZXkgKyAnfX0nLCBwYXJhbXNba2V5XSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIGlmIChmaWVsZEluZm8uaHlwZXJsaW5rPy5saW5rSWQgJiYgZmllbGRJbmZvLmh5cGVybGluay5saW5rSWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGZpZWxkSW5mby5oeXBlcmxpbmsubGluayA9IG9yaWdpbmFsVXJsO1xuICAgICAgICB9XG4gICAgICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkhZUEVSTElOSztcbiAgICAgICAgbGV0IG9iajogYW55ID0gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICAgICAgb2JqWydvcmlnbmFsTGluayddID0gbGluaztcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFkZENhbGVuZGFyKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQ0FMRU5EQVI7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICAvLyBhZGQgQXV0b0NvbXBsZXRlIGZvciBGb3JtXG4gIGFkZEF1dG9Db21wbGV0ZShmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkFVVE9DT01QTEVURTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIC8vIFNlYXJjaCBBdXRvQ29tcGxldGUgRGF0YSBmb3IgZm9ybVxuICBnZXRBdXRvQ29tcGxldGVEYXRhKGZvcm1GaWVsZD86IGFueSwgdW5pcXVlS2V5Pzogc3RyaW5nLCBmaWx0ZXJzPzogYW55W10sIHNlYXJjaDogc3RyaW5nID0gJycpOiBhbnkge1xuICAgIHRoaXMucmVxdWVzdFNlcnZpY2UuZ2V0PGFueVtdLCBhbnk+KCcvRGF0YS9GZXRjaCcsIHsgdW5pcXVlS2V5OiB1bmlxdWVLZXksIGZpbHRlcnN9KS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT57XG4gICAgICBpZihzZWFyY2gpe1xuICAgICAgIGxldCBleGlzdEluUmVjb3JkOiBib29sZWFuID0gcmVzcG9uc2UucmVjb3Jkcy5zb21lKChyZWNvcmQ6IGFueSk9PiByZWNvcmRbZm9ybUZpZWxkLmRpc3BsYXlGaWVsZF0gJiYgcmVjb3JkW2Zvcm1GaWVsZC5kaXNwbGF5RmllbGRdPy50b1N0cmluZygpPy50b0xvd2VyQ2FzZSgpID09PSBzZWFyY2g/LnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICBpZighZXhpc3RJblJlY29yZCl7XG4gICAgICAgICAgcmVzcG9uc2UucmVjb3Jkcy51bnNoaWZ0ICh7W2Zvcm1GaWVsZC5kaXNwbGF5RmllbGRdOiBzZWFyY2h9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9ybUZpZWxkLmRhdGEgPSBbLi4ucmVzcG9uc2UucmVjb3Jkc107XG4gICAgfSk7XG4gIH1cblxuICBhZGREcm9wZG93bihmaWVsZEluZm86IEFkZEZvcm1GaWVsZCwgZHJvcERvd25Qcm9wPzogSURyb3BEb3duUmVxdWVzdCk6IGFueSB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuRFJPUERPV047XG4gICAgaWYgKGRyb3BEb3duUHJvcCkge1xuICAgICAgbGV0IHVuaXF1ZUtleSA9IGRyb3BEb3duUHJvcC51bmlxdWVLZXk7XG4gICAgICBsZXQgdmFsdWVQcm9wID0gZHJvcERvd25Qcm9wLnZhbHVlUHJvcDtcbiAgICAgIGxldCBsYWJlbFByb3AgPSBkcm9wRG93blByb3AubGFiZWxQcm9wO1xuICAgICAgbGV0IGZpbHRlcnM6IElTZXRGaWx0ZXJbXSA9IGRyb3BEb3duUHJvcC5maWx0ZXJzICYmIGRyb3BEb3duUHJvcC5maWx0ZXJzLmxlbmd0aCA+IDAgPyBkcm9wRG93blByb3AuZmlsdGVycyA6IFtdO1xuICAgICAgaWYgKHVuaXF1ZUtleSAmJiB2YWx1ZVByb3AgJiYgbGFiZWxQcm9wKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldERyb3Bkb3duRGF0YShmaWVsZEluZm8sIHVuaXF1ZUtleSwgdmFsdWVQcm9wLCBsYWJlbFByb3AsIGZpbHRlcnMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICB9XG4gIH1cblxuICBnZXREcm9wZG93bkRhdGEoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQsIHVuaXF1ZUtleTogc3RyaW5nLCB2YWx1ZVByb3A6IHN0cmluZywgbGFiZWxQcm9wOiBzdHJpbmcsIGZpbHRlcnM6IGFueVtdKSB7XG4gICAgcmV0dXJuIHRoaXMuZHJvcGRvd25TZXJ2aWNlXG4gICAgICAuc2V0RHJvcERvd25MaXN0KFxuICAgICAgICB1bmlxdWVLZXksXG4gICAgICAgIHZhbHVlUHJvcCxcbiAgICAgICAgbGFiZWxQcm9wLFxuICAgICAgICBmaWx0ZXJzXG4gICAgICApXG4gICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgZmllbGRJbmZvLmRhdGEgPSByZXM7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hcGlFcnJvcihlcnJvcik7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgICAgfSk7XG4gIH1cblxuICBhZGRMb29rVXAoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5MT09LVVBfSU5QVVQ7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGREaWFsb2coZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICByZXR1cm4gdGhpcy5hZGRMb29rVXAoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZENvbXBvbmVudChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkNPTVBPTkVOVDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZEhlYWRlcihmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5TRUNUSU9OX0hFQURFUjtcbiAgICBmaWVsZEluZm8uY2xhc3MgPSAnZm9ybS1oZWFkZXInO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkTXVsdGlTZWxlY3QoZmllbGRJbmZvOiBJRm9ybUZpZWxkLCBkcm9wRG93blByb3A/OiBJRHJvcERvd25SZXF1ZXN0KTogYW55IHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5NVUxUSVNFTEVDVDtcbiAgICBpZiAoZHJvcERvd25Qcm9wKSB7XG4gICAgICBsZXQgdW5pcXVlS2V5ID0gZHJvcERvd25Qcm9wLnVuaXF1ZUtleTtcbiAgICAgIGxldCB2YWx1ZVByb3AgPSBkcm9wRG93blByb3AudmFsdWVQcm9wO1xuICAgICAgbGV0IGxhYmVsUHJvcCA9IGRyb3BEb3duUHJvcC5sYWJlbFByb3A7XG4gICAgICBsZXQgZmlsdGVyczogSVNldEZpbHRlcltdID0gZHJvcERvd25Qcm9wLmZpbHRlcnMgJiYgZHJvcERvd25Qcm9wLmZpbHRlcnMubGVuZ3RoID4gMCA/IGRyb3BEb3duUHJvcC5maWx0ZXJzIDogW107XG4gICAgICBpZiAodW5pcXVlS2V5ICYmIHZhbHVlUHJvcCAmJiBsYWJlbFByb3ApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RHJvcGRvd25EYXRhKGZpZWxkSW5mbywgdW5pcXVlS2V5LCB2YWx1ZVByb3AsIGxhYmVsUHJvcCwgZmlsdGVycyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpZWxkSW5mby5vcHRpb25MYWJlbCA9IGZpZWxkSW5mby5vcHRpb25MYWJlbCA/IGZpZWxkSW5mby5vcHRpb25MYWJlbCA6ICdsYWJlbCc7XG4gICAgICBmaWVsZEluZm8ub3B0aW9uVmFsdWUgPSBmaWVsZEluZm8ub3B0aW9uVmFsdWUgPyBmaWVsZEluZm8ub3B0aW9uVmFsdWUgOiAndmFsdWUnO1xuICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRmlsZVVwbG9hZChmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5GSUxFX1VQTE9BRDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZERpc3BsYXlGaWxlKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkRJU1BMQVlfRklMRTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIC8vIEFkZGluZyBPbkNsaWNrIEJ1dHRvbiBGdW5jdGlvbiBmb3IgRHluYW1pY0Zvcm1cbiAgYWRkQnV0dG9uKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkFERF9CVVRUT047XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICAvLyBBZGRpbmcgU3dpdGNoIEZ1bmN0aW9uIGZvciBEeW5hbWljRm9ybVxuICBhZGRTd2l0Y2goZmllbGRJbmZvOiBJRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuU1dJVENIO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgLy8gc3RhcnQgYWRkIG5ldyBjYXJkIGZ1bmN0aW9uYWxpdHlcbiAgYWRkQ2FyZChmaWVsZEluZm86IElGb3JtRmllbGQsIGNhcmREYXRhPzogSUxpc3RGaWx0ZXIpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5DQVJEO1xuICAgIGlmIChjYXJkRGF0YSAmJiBjYXJkRGF0YS51bmlxdWVLZXkpIHtcbiAgICAgIGlmKGNhcmREYXRhLnNvcnRzPy5sZW5ndGggPiAwKXtcbiAgICAgICAgY2FyZERhdGEuc29ydHMuZm9yRWFjaCgocmVzKSA9PntcbiAgICAgICAgcmVzLmRpcmVjdGlvbiA9IHJlcy5kaXJlY3Rpb24gPyByZXMuZGlyZWN0aW9uIDogRUdyaWRTb3J0RGlyZWN0aW9uLkFTQztcbiAgICAgICAgfSk7XG4gICAgICB9ICAgXG4gICAgICByZXR1cm4gdGhpcy5nZXRDYXJkRGF0YShmaWVsZEluZm8sIGNhcmREYXRhLnVuaXF1ZUtleSwgY2FyZERhdGEuZmlsdGVycywgY2FyZERhdGEuc29ydHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICB9XG4gIH1cblxuICBnZXRDYXJkRGF0YShmaWVsZEluZm86IGFueSwgdW5pcXVlS2V5OiBzdHJpbmcsIGZpbHRlcnM6IGFueVtdID0gW10sIHNvcnRzOiBhbnlbXSA9IFtdKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5nZXRDYXJkTGlzdCh1bmlxdWVLZXksIGZpbHRlcnMsIHNvcnRzKVxuICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgIGZpZWxkSW5mby5jYXJkLmRhdGEgPSByZXMucmVjb3JkcztcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hcGlFcnJvcihlcnJvcik7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgICAgfSk7XG4gIH1cblxuICAvLyBsb2FkIGNvbXBvbmVudCBvbiBmb3JtXG4gIHNldEFkZENvbXBvbmVudERhdGEoeyBmb3JtU2VjdGlvbnMgfTogSUR5bmFtaWNGb3JtLCBpZDogc3RyaW5nLCB2YWx1ZTogYW55LCBsb2FkQ29tcG9uZW50OiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGZvcm1TZWN0aW9ucz8uZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoZmllbGQuY29udHJvbCA9PT0gRUZvcm1Db250cm9sLkNPTVBPTkVOVCAmJiBmaWVsZC5jb21wb25lbnRDb250cm9sICYmIGZpZWxkLmNvbXBvbmVudENvbnRyb2w/LmlkID09PSBpZCkge1xuICAgICAgICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXModmFsdWUpO1xuICAgICAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBmaWVsZC5jb21wb25lbnRDb250cm9sLmRhdGEgPSB7IC4uLmZpZWxkLmNvbXBvbmVudENvbnRyb2w/LmRhdGEsIFtrZXldOiB2YWx1ZVtrZXldIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdXRpbGl0aWVzLmNoYW5nZUR5bmFtaWNGb3JtU3RhdGUoaWQsIGZpZWxkLmNvbXBvbmVudENvbnRyb2wuZGF0YSwgbG9hZENvbXBvbmVudCk7XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHNldCBmb3JtZmllbGQgdmFsdWVcbiAgc2V0Rm9ybUZpZWxkVmFsdWUoXG4gICAgeyBmb3JtU2VjdGlvbnMgfTogSUR5bmFtaWNGb3JtLFxuICAgIGZpZWxkOiBzdHJpbmcsXG4gICAgdmFsdWU6IGFueSxcbiAgICBkaXNwbGF5VGV4dDogc3RyaW5nID0gJydcbiAgKSB7XG4gICAgZm9ybVNlY3Rpb25zPy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChmb3JtRmllbGQpID0+IHtcbiAgICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZD8udG9Mb3dlckNhc2UoKSA9PT0gZmllbGQ/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICBpZiAoZGlzcGxheVRleHQgJiYgZGlzcGxheVRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9ybUZpZWxkLnZhbHVlID0geyB0ZXh0OiBkaXNwbGF5VGV4dCwgdmFsdWU6IHZhbHVlIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1GaWVsZC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBzZXQgZm9ybWZpZWxkIHByb3BlcnR5XG4gIHNldEZvcm1GaWVsZFByb3AoXG4gICAgeyBmb3JtU2VjdGlvbnMgfTogSUR5bmFtaWNGb3JtLFxuICAgIGZpZWxkOiBzdHJpbmcsXG4gICAgcHJvcHM6IElEaWN0aW9uYXJ5W11cbiAgKSB7XG4gICAgcmV0dXJuIGZvcm1TZWN0aW9ucz8ubWFwKChzZWN0aW9uOiBhbnkpID0+IHtcbiAgICAgIHJldHVybiBzZWN0aW9uLmZpZWxkcy5tYXAoKGZvcm1GaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChmb3JtRmllbGQuZmllbGQ/LnRvTG93ZXJDYXNlKCkgPT09IGZpZWxkPy50b0xvd2VyQ2FzZSgpKSB8fFxuICAgICAgICAgIChmb3JtRmllbGQubGFiZWwgJiYgZm9ybUZpZWxkLmxhYmVsLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PT0gZmllbGQ/LnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBwcm9wcy5tYXAoKHByb3A6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKGZvcm1GaWVsZC5oYXNPd25Qcm9wZXJ0eShwcm9wLm5hbWUpKSB7XG4gICAgICAgICAgICAgIGlmKHByb3AubmFtZSA9PT0gJ2xhYmVsJyAmJiB0eXBlb2YgZm9ybUZpZWxkLmxhYmVsID09PSAnb2JqZWN0JyAmJiAhcHJvcC5vdmVycmlkZSl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChmb3JtRmllbGRbcHJvcC5uYW1lXS5uYW1lID0gcHJvcC52YWx1ZSk7XG4gICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIHJldHVybiAoZm9ybUZpZWxkW3Byb3AubmFtZV0gPSBwcm9wLnZhbHVlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZXtcbiAgICAgICAgICAgICAgcmV0dXJuIChmb3JtRmllbGRbcHJvcC5uYW1lXSA9IHByb3AudmFsdWUpO1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDYXJkTGlzdCh1bmlxdWVLZXk6IHN0cmluZywgZmlsdGVyczogYW55W10gPSBbXSwgc29ydHM6IGFueVtdID0gW10pIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5yZXF1ZXN0U2VydmljZVxuICAgICAgICAuZ2V0PGFueVtdLCBhbnk+KCcvRGF0YS9GZXRjaCcsIHsgdW5pcXVlS2V5OiB1bmlxdWVLZXksIGZpbHRlcnMsIHNvcnRzIH0pXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShbXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoeyBlcnJvciB9OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0pO1xuICB9XG4gIFxuICAvLyBFbmQgYWRkIG5ldyBjYXJkIGZ1bmN0aW9uYWxpdHlcbiAgZ2V0UGFnZVNlY3Rpb25PcmRlcnMoKXtcbiAgICBjb25zdCB1c2VySW5mbzphbnkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiQ3VycmVudFVzZXJJbmZvXCIpKTtcbiAgICBjb25zdCByb2xlcyA9IHVzZXJJbmZvPy5yb2xlcz8ubWFwKChyb2xlKT0+IChyb2xlLm5hbWUpKTtcbiAgICBsZXQgcGFnZVVybCA9IHRoaXMucm91dGVyLnVybD8uc3Vic3RyaW5nKDEpO1xuICAgIGlmIChwYWdlVXJsLmluY2x1ZGVzKCc/JykpIHtcbiAgICAgIHBhZ2VVcmwgPSBwYWdlVXJsLnNwbGl0KCc/JylbMF07XG4gICAgfVxuICAgIHRoaXMucmVxdWVzdFNlcnZpY2UucG9zdChcIi9TZWN0aW9uQ29uZmlnL0J5UGFnZVwiLCB7cGFnZTogcGFnZVVybCwgcm9sZXM6IHJvbGVzfSkuc3Vic2NyaWJlKChyZXNwb25zZTphbnkpID0+IHtcbiAgICAgIGlmKHJlc3BvbnNlPy5sZW5ndGgpe1xuICAgICAgICB1c2VySW5mb1sncGFnZVNlY3Rpb25zJ10gPSByZXNwb25zZTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJDdXJyZW50VXNlckluZm9cIiwgSlNPTi5zdHJpbmdpZnkodXNlckluZm8pKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -2402,10 +2402,13 @@ class FormService {
2402
2402
  const userInfo = JSON.parse(localStorage.getItem("CurrentUserInfo"));
2403
2403
  const roles = userInfo?.roles?.map((role) => (role.name));
2404
2404
  let pageUrl = this.router.url?.substring(1);
2405
+ if (pageUrl.includes('?')) {
2406
+ pageUrl = pageUrl.split('?')[0];
2407
+ }
2405
2408
  this.requestService.post("/SectionConfig/ByPage", { page: pageUrl, roles: roles }).subscribe((response) => {
2406
2409
  if (response?.length) {
2407
2410
  userInfo['pageSections'] = response;
2408
- localStorage.setItem("CurrentUserInfo", userInfo);
2411
+ localStorage.setItem("CurrentUserInfo", JSON.stringify(userInfo));
2409
2412
  }
2410
2413
  ;
2411
2414
  });