@libs-ui/services-diagram-draw 0.2.356-37 → 0.2.356-41

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.
@@ -62,17 +62,17 @@ export class LibsUiDiagramDrawDirectionService {
62
62
  /**xóa line đến và xóa line đi ở toàn bộ các khối và nhánh bị xóa */
63
63
  deleteLineConnectFromElement(elements, flatElements) {
64
64
  elements.forEach((item) => {
65
- if (item.branches && item.branches.length) {
65
+ if (item.branches?.length) {
66
66
  item.branches.forEach((branch) => {
67
- if (branch.next_other_id && branch.next_other_id.length) {
67
+ if (branch.next_other_id?.length) {
68
68
  this.deletePreOtherId(item.id ?? '', branch.next_other_id, flatElements);
69
69
  }
70
70
  });
71
71
  }
72
- if (item.next_other_id && item.next_other_id.length) {
72
+ if (item.next_other_id?.length) {
73
73
  this.deletePreOtherId(item.id ?? '', item.next_other_id, flatElements);
74
74
  }
75
- if (item.pre_other_id && item.pre_other_id.length) {
75
+ if (item.pre_other_id?.length) {
76
76
  // nhánh chỉ lưu id next đi thôi chứ không lưu được pre => chỉ cần xóa pre trong khối.
77
77
  this.deleteNextOtherId(item.id ?? '', item.pre_other_id, flatElements);
78
78
  }
@@ -82,7 +82,7 @@ export class LibsUiDiagramDrawDirectionService {
82
82
  deletePreOtherId(itemId, nextOtherId, flatElements) {
83
83
  nextOtherId.forEach((nextToId) => {
84
84
  const nextElement = flatElements.find((item) => item.id === nextToId);
85
- if (!nextElement || !nextElement.pre_other_id || !nextElement.pre_other_id.length) {
85
+ if (!nextElement?.pre_other_id?.length) {
86
86
  return;
87
87
  }
88
88
  const indexIdPre = nextElement.pre_other_id.findIndex((id) => id === itemId);
@@ -100,28 +100,28 @@ export class LibsUiDiagramDrawDirectionService {
100
100
  }
101
101
  if (preElement.element_type === canvasConfigReadonly().TYPE_ELEMENT_WORKFLOW) {
102
102
  preElement.branches?.forEach((branch) => {
103
- if (!branch.next_other_id || !branch.next_other_id.length) {
103
+ if (!branch.next_other_id?.length) {
104
104
  return;
105
105
  }
106
106
  const indexIdNextInBranch = branch.next_other_id.findIndex((id) => id === itemId);
107
107
  if (indexIdNextInBranch !== -1) {
108
108
  branch.next_other_id.splice(indexIdNextInBranch, 1);
109
109
  }
110
- if (!branch.next_other_id || !branch.next_other_id.length) {
110
+ if (!branch.next_other_id?.length) {
111
111
  branch.nodeOtherConfig = undefined;
112
112
  this.canvasService.addElementExitWhenDeleteDirectionLine(preElement, branch);
113
113
  }
114
114
  });
115
115
  return;
116
116
  }
117
- if (!preElement.next_other_id || !preElement.next_other_id.length) {
117
+ if (!preElement.next_other_id?.length) {
118
118
  return;
119
119
  }
120
120
  const indexIdNext = preElement.next_other_id.findIndex((id) => id === itemId);
121
121
  if (indexIdNext !== -1) {
122
122
  preElement.next_other_id.splice(indexIdNext, 1);
123
123
  }
124
- if (!preElement.next_other_id || !preElement.next_other_id.length) {
124
+ if (!preElement.next_other_id?.length) {
125
125
  // thêm khối thoát vì không còn khối nào connect tới nó
126
126
  if (preElement.element_type === canvasConfigReadonly().TYPE_ELEMENT_WORKFLOW) {
127
127
  const getConfigDefaultBranches = this.canvasService.HandlerFunction?.getConfigDefaultBranches ?? getDefaultConfigConstituentBranches;
@@ -164,7 +164,7 @@ export class LibsUiDiagramDrawDirectionService {
164
164
  deleteElementsBehindElementConnectTo(element, flatElements) {
165
165
  const listElementDelete = [];
166
166
  let flatElementInElementCurrent = [];
167
- if (element.branches && element.branches.length) {
167
+ if (element.branches?.length) {
168
168
  buildFlatElement([element], flatElementInElementCurrent);
169
169
  flatElementInElementCurrent = flatElementInElementCurrent.filter((item) => item.id !== element.id);
170
170
  }
@@ -183,11 +183,11 @@ export class LibsUiDiagramDrawDirectionService {
183
183
  containerElement.splice(+index, 1);
184
184
  return true;
185
185
  }
186
- if (!elementOfIndex.branches || !elementOfIndex.branches.length) {
186
+ if (!elementOfIndex.branches?.length) {
187
187
  continue;
188
188
  }
189
189
  for (const branch of elementOfIndex.branches) {
190
- if (!branch.elements || !branch.elements.length) {
190
+ if (!branch.elements?.length) {
191
191
  continue;
192
192
  }
193
193
  if (this.findAndDeleteElementFromContainer(branch.elements, elementDelete)) {
@@ -205,7 +205,7 @@ export class LibsUiDiagramDrawDirectionService {
205
205
  const idOldNextTo = element.next_other_id?.[0];
206
206
  const elementOldTo = flatElements?.find((item) => item.id === idOldNextTo);
207
207
  // xóa line cũ
208
- if (elementOldTo && elementOldTo.pre_other_id) {
208
+ if (elementOldTo?.pre_other_id) {
209
209
  const itemIndex = elementOldTo.pre_other_id?.findIndex((id) => id === element.id);
210
210
  if (itemIndex !== -1) {
211
211
  elementOldTo.pre_other_id?.splice(itemIndex, 1);
@@ -228,7 +228,7 @@ export class LibsUiDiagramDrawDirectionService {
228
228
  const idOldNextTo = branch.next_other_id?.[0];
229
229
  const elementOldTo = flatElements?.find((item) => item.id === idOldNextTo);
230
230
  // xóa line cũ
231
- if (elementOldTo && elementOldTo.pre_other_id) {
231
+ if (elementOldTo?.pre_other_id) {
232
232
  const itemIndex = elementOldTo.pre_other_id?.findIndex((id) => id === element.id);
233
233
  if (itemIndex !== -1) {
234
234
  elementOldTo.pre_other_id?.splice(itemIndex, 1);
@@ -252,4 +252,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
252
252
  type: Injectable,
253
253
  args: [{ providedIn: 'root' }]
254
254
  }] });
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2RpYWdyYW0tZHJhdy9zcmMvZGlyZWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsbUNBQW1DLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxSSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFHM0YsTUFBTSxPQUFPLGlDQUFpQztJQUNwQyxnQkFBZ0IsQ0FBOEI7SUFDOUMsZUFBZSxDQUErRDtJQUM5RSxzQkFBc0IsQ0FBcUI7SUFDM0MsZUFBZSxHQUE0QixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRXpELGFBQWEsR0FBRyxNQUFNLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUUvRCxJQUFXLGdCQUFnQixDQUFDLE9BQW9DO1FBQzlELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQVcsZ0JBQWdCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFXLGVBQWUsQ0FBQyxNQUFvRTtRQUM3RixJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBVyxl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QyxDQUFDO0lBQ3RDLENBQUM7d0dBclNVLGlDQUFpQzs0R0FBakMsaUNBQWlDLGNBRHBCLE1BQU07OzRGQUNuQixpQ0FBaUM7a0JBRDdDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMaWJzVWlEaWFncmFtRHJhd0NhbnZhc1NlcnZpY2UgfSBmcm9tICcuL2NhbnZhcy5zZXJ2aWNlJztcbmltcG9ydCB7IGNhbnZhc0NvbmZpZ1JlYWRvbmx5IH0gZnJvbSAnLi9kaWFncmFtLWRyYXcuc2VydmljZSc7XG5pbXBvcnQgeyBJRGlhZ3JhbUVsZW1lbnQsIElEaWFncmFtRWxlbWVudEJyYW5jaCB9IGZyb20gJy4vaW50ZXJmYWNlcy9kaWFncmFtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBmaW5kQW5kRGVsZXRlRWxlbWVudEZyb21Db250YWluZXIsIGdldERlZmF1bHRDb25maWdDb25zdGl0dWVudEJyYW5jaGVzLCBMaWJzVWlEaWFncmFtRHJhd0NhbnZhc1V0aWwgfSBmcm9tICcuL3V0aWxzL2NhbnZhcy51dGlsJztcbmltcG9ydCB7IGJ1aWxkRmxhdEVsZW1lbnQgfSBmcm9tICcuL3V0aWxzL2RpYWdyYW0udXRpbCc7XG5pbXBvcnQgeyBidWlsZEVsZW1lbnREaXJlY3Rpb25UbywgY29sbGVjdE5leHRDaGFpbkVsZW1lbnRzIH0gZnJvbSAnLi91dGlscy9kaXJlY3Rpb24udXRpbCc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTGlic1VpRGlhZ3JhbURyYXdEaXJlY3Rpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBlbGVtZW50RGlyZWN0aW9uOiBJRGlhZ3JhbUVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgYnJhbmNoRGlyZWN0aW9uOiB7IGJyYW5jaDogSURpYWdyYW1FbGVtZW50QnJhbmNoOyBpbmRleDogbnVtYmVyIH0gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgZWxlbWVudFZpZXdEaXJlY3Rpb25JZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG9uVmlld0RpcmVjdGlvbjogU3ViamVjdDx7IGlkOiBzdHJpbmcgfT4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgY2FudmFzU2VydmljZSA9IGluamVjdChMaWJzVWlEaWFncmFtRHJhd0NhbnZhc1NlcnZpY2UpO1xuXG4gIHB1YmxpYyBzZXQgRWxlbWVudERpcmVjdGlvbihlbGVtZW50OiBJRGlhZ3JhbUVsZW1lbnQgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLmVsZW1lbnREaXJlY3Rpb24gPSBlbGVtZW50O1xuICB9XG5cbiAgcHVibGljIGdldCBFbGVtZW50RGlyZWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnREaXJlY3Rpb247XG4gIH1cblxuICBwdWJsaWMgc2V0IEJyYW5jaERpcmVjdGlvbihicmFuY2g6IHsgYnJhbmNoOiBJRGlhZ3JhbUVsZW1lbnRCcmFuY2g7IGluZGV4OiBudW1iZXIgfSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuYnJhbmNoRGlyZWN0aW9uID0gYnJhbmNoO1xuICB9XG5cbiAgcHVibGljIGdldCBCcmFuY2hEaXJlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuYnJhbmNoRGlyZWN0aW9uO1xuICB9XG5cbiAgcHVibGljIHNldCBFbGVtZW50Vmlld0RpcmVjdGlvbklkKGlkOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLmVsZW1lbnRWaWV3RGlyZWN0aW9uSWQgPSBpZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgRWxlbWVudFZpZXdEaXJlY3Rpb25JZCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50Vmlld0RpcmVjdGlvbklkO1xuICB9XG5cbiAgcHVibGljIGdldCBPblZpZXdEaXJlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMub25WaWV3RGlyZWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1J1bGVEaXJlY3Rpb25Ub0VsZW1lbnQoZWxlbWVudDogSURpYWdyYW1FbGVtZW50IHwgdW5kZWZpbmVkLCBlbGVtZW50Q29ubmVjdFRvOiBJRGlhZ3JhbUVsZW1lbnQgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBydWxlQWZ0ZXJJdGVtRHJhZyA9IHRoaXMuY2FudmFzU2VydmljZS5SdWxlQ29ubmVjdGFibGVFbGVtZW50cy5maW5kKChpdGVtKSA9PiBlbGVtZW50Q29ubmVjdFRvICYmIGl0ZW0uZWxlbWVudENvZGUgPT09IGVsZW1lbnRDb25uZWN0VG8uY29kZSk7XG5cbiAgICBpZiAoIXJ1bGVBZnRlckl0ZW1EcmFnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAocnVsZUFmdGVySXRlbURyYWcuZWxlbWVudENvZGVDb25uZWN0YWJsZUJlZm9yZS5maW5kKChjb2RlKSA9PiBjb2RlID09PSBlbGVtZW50Py5jb2RlKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgYnVpbGRFbGVtZW50Q29ubmVjdFRvKGVsZW1lbnQ6IElEaWFncmFtRWxlbWVudCwgZmxhdEVsZW1lbnRzOiBJRGlhZ3JhbUVsZW1lbnRbXSwgYnJhbmNoPzogSURpYWdyYW1FbGVtZW50QnJhbmNoLCBjaGVja1J1bGU/OiAoZWxlbWVudDogSURpYWdyYW1FbGVtZW50IHwgdW5kZWZpbmVkLCBlbGVtZW50Q29ubmVjdFRvOiBJRGlhZ3JhbUVsZW1lbnQgfCB1bmRlZmluZWQpID0+IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjaGVja1J1bGVEaXJlY3Rpb25Ub0VsZW1lbnQgPSBjaGVja1J1bGUgPz8gdGhpcy5jaGVja1J1bGVEaXJlY3Rpb25Ub0VsZW1lbnQuYmluZCh0aGlzKTtcbiAgICByZXR1cm4gYnVpbGRFbGVtZW50RGlyZWN0aW9uVG8oZWxlbWVudCwgZmxhdEVsZW1lbnRzLCBjaGVja1J1bGVEaXJlY3Rpb25Ub0VsZW1lbnQsIGJyYW5jaCk7XG4gIH1cblxuICAvKipYw7NhIGPDoWMgZWxlbWVudCBu4bqxbSBwaMOtYSBzYXUga2hpIG5ow6FuaCDEkcaw4bujYyDEkWnhu4F1IGjGsOG7m25nICovXG4gIHB1YmxpYyBkZWxldGVFbGVtZW50c0JlaGluZEJyYW5jaENvbm5lY3RUbyhicmFuY2g6IElEaWFncmFtRWxlbWVudEJyYW5jaCkge1xuICAgIGNvbnN0IGZsYXRFbGVtZW50cyA9IHRoaXMuY2FudmFzU2VydmljZS5GbGF0RWxlbWVudHMgPz8gW107XG4gICAgY29uc3QgZmxhdEVsZW1lbnRJbkVsZW1lbnRDdXJyZW50OiBJRGlhZ3JhbUVsZW1lbnRbXSA9IFtdO1xuICAgIGNvbnN0IGxpc3RFbGVtZW50RGVsZXRlOiBJRGlhZ3JhbUVsZW1lbnRbXSA9IFtdO1xuXG4gICAgYnVpbGRGbGF0RWxlbWVudChicmFuY2guZWxlbWVudHMsIGZsYXRFbGVtZW50SW5FbGVtZW50Q3VycmVudCk7XG4gICAgbGlzdEVsZW1lbnREZWxldGUucHVzaCguLi5mbGF0RWxlbWVudEluRWxlbWVudEN1cnJlbnQpO1xuXG4gICAgdGhpcy5kZWxldGVMaW5lQ29ubmVjdEZyb21FbGVtZW50KGxpc3RFbGVtZW50RGVsZXRlLCBmbGF0RWxlbWVudHMpO1xuICAgIGxpc3RFbGVtZW50RGVsZXRlLmZvckVhY2goKGVsZW1lbnREZWxldGUpID0+IHtcbiAgICAgIGZpbmRBbmREZWxldGVFbGVtZW50RnJvbUNvbnRhaW5lcih0aGlzLmNhbnZhc1NlcnZpY2UuRWxlbWVudHMgYXMgQXJyYXk8SURpYWdyYW1FbGVtZW50PiwgZWxlbWVudERlbGV0ZSk7XG4gICAgfSk7XG4gIH1cblxuICAvKip4w7NhIGxpbmUgxJHhur9uIHbDoCB4w7NhIGxpbmUgxJFpIOG7nyB0b8OgbiBi4buZIGPDoWMga2jhu5FpIHbDoCBuaMOhbmggYuG7iyB4w7NhICovXG4gIHByaXZhdGUgZGVsZXRlTGluZUNvbm5lY3RGcm9tRWxlbWVudChlbGVtZW50czogSURpYWdyYW1FbGVtZW50W10sIGZsYXRFbGVtZW50czogSURpYWdyYW1FbGVtZW50W10pIHtcbiAgICBlbGVtZW50cy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbS5icmFuY2hlcyAmJiBpdGVtLmJyYW5jaGVzLmxlbmd0aCkge1xuICAgICAgICBpdGVtLmJyYW5jaGVzLmZvckVhY2goKGJyYW5jaCkgPT4ge1xuICAgICAgICAgIGlmIChicmFuY2gubmV4dF9vdGhlcl9pZCAmJiBicmFuY2gubmV4dF9vdGhlcl9pZC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZGVsZXRlUHJlT3RoZXJJZChpdGVtLmlkID8/ICcnLCBicmFuY2gubmV4dF9vdGhlcl9pZCwgZmxhdEVsZW1lbnRzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW0ubmV4dF9vdGhlcl9pZCAmJiBpdGVtLm5leHRfb3RoZXJfaWQubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuZGVsZXRlUHJlT3RoZXJJZChpdGVtLmlkID8/ICcnLCBpdGVtLm5leHRfb3RoZXJfaWQsIGZsYXRFbGVtZW50cyk7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbS5wcmVfb3RoZXJfaWQgJiYgaXRlbS5wcmVfb3RoZXJfaWQubGVuZ3RoKSB7XG4gICAgICAgIC8vIG5ow6FuaCBjaOG7iSBsxrB1IGlkIG5leHQgxJFpIHRow7RpIGNo4bupIGtow7RuZyBsxrB1IMSRxrDhu6NjIHByZSA9PiBjaOG7iSBj4bqnbiB4w7NhIHByZSB0cm9uZyBraOG7kWkuXG4gICAgICAgIHRoaXMuZGVsZXRlTmV4dE90aGVySWQoaXRlbS5pZCA/PyAnJywgaXRlbS5wcmVfb3RoZXJfaWQsIGZsYXRFbGVtZW50cyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKiogWMOzYSBwcmVfb3RoZXJfaWQgdOG7qyBraMOhYyBraOG7kWkgbcOgIGto4buRaSBi4buLIHjDs2EgbuG7kWkgxJHhur9uIEJsb2NrRGVsZXRlID0+IE90aGVyKi9cbiAgcHJpdmF0ZSBkZWxldGVQcmVPdGhlcklkKGl0ZW1JZDogc3RyaW5nLCBuZXh0T3RoZXJJZDogQXJyYXk8c3RyaW5nPiwgZmxhdEVsZW1lbnRzOiBJRGlhZ3JhbUVsZW1lbnRbXSkge1xuICAgIG5leHRPdGhlcklkLmZvckVhY2goKG5leHRUb0lkKSA9PiB7XG4gICAgICBjb25zdCBuZXh0RWxlbWVudCA9IGZsYXRFbGVtZW50cy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBuZXh0VG9JZCk7XG5cbiAgICAgIGlmICghbmV4dEVsZW1lbnQgfHwgIW5leHRFbGVtZW50LnByZV9vdGhlcl9pZCB8fCAhbmV4dEVsZW1lbnQucHJlX290aGVyX2lkLmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBpbmRleElkUHJlID0gbmV4dEVsZW1lbnQucHJlX290aGVyX2lkLmZpbmRJbmRleCgoaWQpID0+IGlkID09PSBpdGVtSWQpO1xuXG4gICAgICBpZiAoaW5kZXhJZFByZSAhPT0gLTEpIHtcbiAgICAgICAgbmV4dEVsZW1lbnQucHJlX290aGVyX2lkLnNwbGljZShpbmRleElkUHJlLCAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBYw7NhIG5leHRfb3RoZXJfaWQgdOG7qyBraMOhYyBraOG7kWkgbuG7kWkgxJHhur9uIGto4buRaSBi4buLIHjDs2EgT3RoZXIgPT4gQmxvY2tEZWxldGUgdsOgIGtp4buDbSB0cmEgKyB0aMOqbSBraOG7kWkgdGhvw6F0IGNobyBuaOG7r25nIGto4buRaSBu4buRaSB04bubaSBCbG9ja0RlbGV0ZSovXG4gIHByaXZhdGUgZGVsZXRlTmV4dE90aGVySWQoaXRlbUlkOiBzdHJpbmcsIHByZU90aGVySWQ6IEFycmF5PHN0cmluZz4sIGZsYXRFbGVtZW50czogSURpYWdyYW1FbGVtZW50W10pIHtcbiAgICBwcmVPdGhlcklkLmZvckVhY2goKG5leHRUb0lkKSA9PiB7XG4gICAgICBjb25zdCBwcmVFbGVtZW50ID0gZmxhdEVsZW1lbnRzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IG5leHRUb0lkKTtcblxuICAgICAgaWYgKCFwcmVFbGVtZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHByZUVsZW1lbnQuZWxlbWVudF90eXBlID09PSBjYW52YXNDb25maWdSZWFkb25seSgpLlRZUEVfRUxFTUVOVF9XT1JLRkxPVykge1xuICAgICAgICBwcmVFbGVtZW50LmJyYW5jaGVzPy5mb3JFYWNoKChicmFuY2gpID0+IHtcbiAgICAgICAgICBpZiAoIWJyYW5jaC5uZXh0X290aGVyX2lkIHx8ICFicmFuY2gubmV4dF9vdGhlcl9pZC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaW5kZXhJZE5leHRJbkJyYW5jaCA9IGJyYW5jaC5uZXh0X290aGVyX2lkLmZpbmRJbmRleCgoaWQpID0+IGlkID09PSBpdGVtSWQpO1xuXG4gICAgICAgICAgaWYgKGluZGV4SWROZXh0SW5CcmFuY2ggIT09IC0xKSB7XG4gICAgICAgICAgICBicmFuY2gubmV4dF9vdGhlcl9pZC5zcGxpY2UoaW5kZXhJZE5leHRJbkJyYW5jaCwgMSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFicmFuY2gubmV4dF9vdGhlcl9pZCB8fCAhYnJhbmNoLm5leHRfb3RoZXJfaWQubGVuZ3RoKSB7XG4gICAgICAgICAgICBicmFuY2gubm9kZU90aGVyQ29uZmlnID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5jYW52YXNTZXJ2aWNlLmFkZEVsZW1lbnRFeGl0V2hlbkRlbGV0ZURpcmVjdGlvbkxpbmUocHJlRWxlbWVudCwgYnJhbmNoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFwcmVFbGVtZW50Lm5leHRfb3RoZXJfaWQgfHwgIXByZUVsZW1lbnQubmV4dF9vdGhlcl9pZC5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5kZXhJZE5leHQgPSBwcmVFbGVtZW50Lm5leHRfb3RoZXJfaWQuZmluZEluZGV4KChpZCkgPT4gaWQgPT09IGl0ZW1JZCk7XG5cbiAgICAgIGlmIChpbmRleElkTmV4dCAhPT0gLTEpIHtcbiAgICAgICAgcHJlRWxlbWVudC5uZXh0X290aGVyX2lkLnNwbGljZShpbmRleElkTmV4dCwgMSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghcHJlRWxlbWVudC5uZXh0X290aGVyX2lkIHx8ICFwcmVFbGVtZW50Lm5leHRfb3RoZXJfaWQubGVuZ3RoKSB7XG4gICAgICAgIC8vIHRow6ptIGto4buRaSB0aG/DoXQgdsOsIGtow7RuZyBjw7JuIGto4buRaSBuw6BvIGNvbm5lY3QgdOG7m2kgbsOzXG4gICAgICAgIGlmIChwcmVFbGVtZW50LmVsZW1lbnRfdHlwZSA9PT0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5UWVBFX0VMRU1FTlRfV09SS0ZMT1cpIHtcbiAgICAgICAgICBjb25zdCBnZXRDb25maWdEZWZhdWx0QnJhbmNoZXMgPSB0aGlzLmNhbnZhc1NlcnZpY2UuSGFuZGxlckZ1bmN0aW9uPy5nZXRDb25maWdEZWZhdWx0QnJhbmNoZXMgPz8gZ2V0RGVmYXVsdENvbmZpZ0NvbnN0aXR1ZW50QnJhbmNoZXM7XG4gICAgICAgICAgZ2V0Q29uZmlnRGVmYXVsdEJyYW5jaGVzKHByZUVsZW1lbnQuY29kZSA/PyAnJywgcHJlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYnJhbmNoID0gTGlic1VpRGlhZ3JhbURyYXdDYW52YXNVdGlsLmdldEJyYW5jaE9mRWxlbWVudChwcmVFbGVtZW50LmlkID8/ICcnLCBmbGF0RWxlbWVudHMsIGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuVFlQRV9FTEVNRU5UX1dPUktGTE9XKTtcblxuICAgICAgICB0aGlzLmNhbnZhc1NlcnZpY2UuYWRkRWxlbWVudEV4aXRXaGVuRGVsZXRlRGlyZWN0aW9uTGluZShwcmVFbGVtZW50LCBicmFuY2gpO1xuICAgICAgICBwcmVFbGVtZW50LnN1YkNvZGVPZkVsZW1lbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHByZUVsZW1lbnQuYXR0cmlidXRlU3ZnRCA9IHVuZGVmaW5lZDtcbiAgICAgICAgcHJlRWxlbWVudC5wb3NpdGlvbl9lbmQgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkQnJhbmNoRGlyZWN0aW9uKHRhcmdldElkOiBzdHJpbmcsIGVsZW1lbnQ6IElEaWFncmFtRWxlbWVudCwgYnJhbmNoOiBJRGlhZ3JhbUVsZW1lbnRCcmFuY2gsIGZsYXRFbGVtZW50czogSURpYWdyYW1FbGVtZW50W10pIHtcbiAgICBpZiAoIWJyYW5jaC5uZXh0X290aGVyX2lkKSB7XG4gICAgICBicmFuY2gubmV4dF9vdGhlcl9pZCA9IFtdO1xuICAgIH1cbiAgICBicmFuY2gubmV4dF9vdGhlcl9pZC5wdXNoKHRhcmdldElkKTtcblxuICAgIGNvbnN0IGVsZW1lbnRUbyA9IGZsYXRFbGVtZW50cy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSB0YXJnZXRJZCk7XG5cbiAgICBpZiAoZWxlbWVudFRvKSB7XG4gICAgICBpZiAoIWVsZW1lbnRUby5wcmVfb3RoZXJfaWQpIHtcbiAgICAgICAgZWxlbWVudFRvLnByZV9vdGhlcl9pZCA9IFtdO1xuICAgICAgfVxuICAgICAgZWxlbWVudFRvLnByZV9vdGhlcl9pZC5wdXNoKGVsZW1lbnQuaWQgPz8gJycpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhZGRFbGVtZW50RGlyZWN0aW9uKHRhcmdldElkOiBzdHJpbmcsIGVsZW1lbnQ6IElEaWFncmFtRWxlbWVudCwgZmxhdEVsZW1lbnRzOiBJRGlhZ3JhbUVsZW1lbnRbXSkge1xuICAgIGlmICghZWxlbWVudC5uZXh0X290aGVyX2lkKSB7XG4gICAgICBlbGVtZW50Lm5leHRfb3RoZXJfaWQgPSBbXTtcbiAgICB9XG4gICAgZWxlbWVudC5uZXh0X290aGVyX2lkLnB1c2godGFyZ2V0SWQpO1xuXG4gICAgY29uc3QgZWxlbWVudFRvID0gZmxhdEVsZW1lbnRzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IHRhcmdldElkKTtcblxuICAgIGlmIChlbGVtZW50VG8pIHtcbiAgICAgIGlmICghZWxlbWVudFRvLnByZV9vdGhlcl9pZCkge1xuICAgICAgICBlbGVtZW50VG8ucHJlX290aGVyX2lkID0gW107XG4gICAgICB9XG4gICAgICBlbGVtZW50VG8ucHJlX290aGVyX2lkLnB1c2goZWxlbWVudC5pZCA/PyAnJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRlbGV0ZUVsZW1lbnRzQmVoaW5kRWxlbWVudENvbm5lY3RUbyhlbGVtZW50OiBJRGlhZ3JhbUVsZW1lbnQsIGZsYXRFbGVtZW50czogSURpYWdyYW1FbGVtZW50W10pIHtcbiAgICBjb25zdCBsaXN0RWxlbWVudERlbGV0ZTogSURpYWdyYW1FbGVtZW50W10gPSBbXTtcbiAgICBsZXQgZmxhdEVsZW1lbnRJbkVsZW1lbnRDdXJyZW50OiBJRGlhZ3JhbUVsZW1lbnRbXSA9IFtdO1xuXG4gICAgaWYgKGVsZW1lbnQuYnJhbmNoZXMgJiYgZWxlbWVudC5icmFuY2hlcy5sZW5ndGgpIHtcbiAgICAgIGJ1aWxkRmxhdEVsZW1lbnQoW2VsZW1lbnRdLCBmbGF0RWxlbWVudEluRWxlbWVudEN1cnJlbnQpO1xuICAgICAgZmxhdEVsZW1lbnRJbkVsZW1lbnRDdXJyZW50ID0gZmxhdEVsZW1lbnRJbkVsZW1lbnRDdXJyZW50LmZpbHRlcigoaXRlbSkgPT4gaXRlbS5pZCAhPT0gZWxlbWVudC5pZCk7XG4gICAgfVxuICAgIGRlbGV0ZSBlbGVtZW50LmJyYW5jaGVzO1xuICAgIGxpc3RFbGVtZW50RGVsZXRlLnB1c2goLi4uZmxhdEVsZW1lbnRJbkVsZW1lbnRDdXJyZW50KTtcbiAgICBjb2xsZWN0TmV4dENoYWluRWxlbWVudHMoZWxlbWVudCwgZmxhdEVsZW1lbnRzLCBsaXN0RWxlbWVudERlbGV0ZSk7XG4gICAgdGhpcy5kZWxldGVMaW5lQ29ubmVjdEZyb21FbGVtZW50KGxpc3RFbGVtZW50RGVsZXRlLCBmbGF0RWxlbWVudHMpO1xuICAgIGxpc3RFbGVtZW50RGVsZXRlLmZvckVhY2goKGVsZW1lbnREZWxldGUpID0+IHtcbiAgICAgIHRoaXMuZmluZEFuZERlbGV0ZUVsZW1lbnRGcm9tQ29udGFpbmVyKHRoaXMuY2FudmFzU2VydmljZS5FbGVtZW50cyBhcyBBcnJheTxJRGlhZ3JhbUVsZW1lbnQ+LCBlbGVtZW50RGVsZXRlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZEFuZERlbGV0ZUVsZW1lbnRGcm9tQ29udGFpbmVyKGNvbnRhaW5lckVsZW1lbnQ6IEFycmF5PElEaWFncmFtRWxlbWVudD4sIGVsZW1lbnREZWxldGU6IElEaWFncmFtRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3QgaW5kZXggaW4gY29udGFpbmVyRWxlbWVudCkge1xuICAgICAgY29uc3QgZWxlbWVudE9mSW5kZXggPSBjb250YWluZXJFbGVtZW50W2luZGV4XTtcblxuICAgICAgaWYgKGVsZW1lbnRPZkluZGV4LmlkID09PSBlbGVtZW50RGVsZXRlLmlkKSB7XG4gICAgICAgIGNvbnRhaW5lckVsZW1lbnQuc3BsaWNlKCtpbmRleCwgMSk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoIWVsZW1lbnRPZkluZGV4LmJyYW5jaGVzIHx8ICFlbGVtZW50T2ZJbmRleC5icmFuY2hlcy5sZW5ndGgpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgYnJhbmNoIG9mIGVsZW1lbnRPZkluZGV4LmJyYW5jaGVzKSB7XG4gICAgICAgIGlmICghYnJhbmNoLmVsZW1lbnRzIHx8ICFicmFuY2guZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZmluZEFuZERlbGV0ZUVsZW1lbnRGcm9tQ29udGFpbmVyKGJyYW5jaC5lbGVtZW50cywgZWxlbWVudERlbGV0ZSkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBlZGl0RGlyZWN0aW9uKGZsYXRFbGVtZW50czogSURpYWdyYW1FbGVtZW50W10sIHRhcmdldElkOiBzdHJpbmcsIGVsZW1lbnQ6IElEaWFncmFtRWxlbWVudCwgYnJhbmNoPzogSURpYWdyYW1FbGVtZW50QnJhbmNoKSB7XG4gICAgaWYgKGVsZW1lbnQuZWxlbWVudF90eXBlID09PSBjYW52YXNDb25maWdSZWFkb25seSgpLlRZUEVfRUxFTUVOVF9XT1JLRkxPVyAmJiBicmFuY2gpIHtcbiAgICAgIHRoaXMuZWRpdERpcmVjdGlvbldpdGhCcmFuY2goZmxhdEVsZW1lbnRzLCBicmFuY2gsIHRhcmdldElkLCBlbGVtZW50KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlkT2xkTmV4dFRvID0gZWxlbWVudC5uZXh0X290aGVyX2lkPy5bMF07XG4gICAgY29uc3QgZWxlbWVudE9sZFRvID0gZmxhdEVsZW1lbnRzPy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBpZE9sZE5leHRUbyk7XG5cbiAgICAvLyB4w7NhIGxpbmUgY8WpXG4gICAgaWYgKGVsZW1lbnRPbGRUbyAmJiBlbGVtZW50T2xkVG8ucHJlX290aGVyX2lkKSB7XG4gICAgICBjb25zdCBpdGVtSW5kZXggPSBlbGVtZW50T2xkVG8ucHJlX290aGVyX2lkPy5maW5kSW5kZXgoKGlkKSA9PiBpZCA9PT0gZWxlbWVudC5pZCk7XG5cbiAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7XG4gICAgICAgIGVsZW1lbnRPbGRUby5wcmVfb3RoZXJfaWQ/LnNwbGljZShpdGVtSW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICBlbGVtZW50LmF0dHJpYnV0ZVN2Z0QgPSB1bmRlZmluZWQ7XG4gICAgZWxlbWVudC5wb3NpdGlvbl9lbmQgPSB1bmRlZmluZWQ7XG5cbiAgICAvLyB1cGRhdGUgbGluZSBt4bubaVxuICAgIGNvbnN0IGVsZW1lbnROZXdUbyA9IGZsYXRFbGVtZW50cz8uZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gdGFyZ2V0SWQpO1xuXG4gICAgaWYgKGVsZW1lbnROZXdUbykge1xuICAgICAgaWYgKCFlbGVtZW50TmV3VG8ucHJlX290aGVyX2lkKSB7XG4gICAgICAgIGVsZW1lbnROZXdUby5wcmVfb3RoZXJfaWQgPSBbXTtcbiAgICAgIH1cbiAgICAgIGVsZW1lbnROZXdUby5wcmVfb3RoZXJfaWQucHVzaChlbGVtZW50LmlkID8/ICcnKTtcbiAgICB9XG4gICAgZWxlbWVudC5uZXh0X290aGVyX2lkID0gW107XG4gICAgZWxlbWVudC5uZXh0X290aGVyX2lkLnB1c2godGFyZ2V0SWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBlZGl0RGlyZWN0aW9uV2l0aEJyYW5jaChmbGF0RWxlbWVudHM6IElEaWFncmFtRWxlbWVudFtdLCBicmFuY2g6IElEaWFncmFtRWxlbWVudEJyYW5jaCwgdGFyZ2V0SWQ6IHN0cmluZywgZWxlbWVudDogSURpYWdyYW1FbGVtZW50KSB7XG4gICAgY29uc3QgaWRPbGROZXh0VG8gPSBicmFuY2gubmV4dF9vdGhlcl9pZD8uWzBdO1xuICAgIGNvbnN0IGVsZW1lbnRPbGRUbyA9IGZsYXRFbGVtZW50cz8uZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gaWRPbGROZXh0VG8pO1xuXG4gICAgLy8geMOzYSBsaW5lIGPFqVxuICAgIGlmIChlbGVtZW50T2xkVG8gJiYgZWxlbWVudE9sZFRvLnByZV9vdGhlcl9pZCkge1xuICAgICAgY29uc3QgaXRlbUluZGV4ID0gZWxlbWVudE9sZFRvLnByZV9vdGhlcl9pZD8uZmluZEluZGV4KChpZCkgPT4gaWQgPT09IGVsZW1lbnQuaWQpO1xuXG4gICAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkge1xuICAgICAgICBlbGVtZW50T2xkVG8ucHJlX290aGVyX2lkPy5zcGxpY2UoaXRlbUluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB1cGRhdGUgbGluZSBt4bubaVxuICAgIGNvbnN0IGVsZW1lbnROZXdUbyA9IGZsYXRFbGVtZW50cz8uZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gdGFyZ2V0SWQpO1xuXG4gICAgaWYgKGVsZW1lbnROZXdUbykge1xuICAgICAgaWYgKCFlbGVtZW50TmV3VG8ucHJlX290aGVyX2lkKSB7XG4gICAgICAgIGVsZW1lbnROZXdUby5wcmVfb3RoZXJfaWQgPSBbXTtcbiAgICAgIH1cbiAgICAgIGVsZW1lbnROZXdUby5wcmVfb3RoZXJfaWQucHVzaChlbGVtZW50LmlkID8/ICcnKTtcbiAgICB9XG4gICAgYnJhbmNoLm5leHRfb3RoZXJfaWQgPSBbXTtcbiAgICBicmFuY2gubmV4dF9vdGhlcl9pZC5wdXNoKHRhcmdldElkKTtcbiAgfVxufVxuIl19
255
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2RpYWdyYW0tZHJhdy9zcmMvZGlyZWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsbUNBQW1DLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxSSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFHM0YsTUFBTSxPQUFPLGlDQUFpQztJQUNwQyxnQkFBZ0IsQ0FBOEI7SUFDOUMsZUFBZSxDQUErRDtJQUM5RSxzQkFBc0IsQ0FBcUI7SUFDbEMsZUFBZSxHQUE0QixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRXpELGFBQWEsR0FBRyxNQUFNLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUV4RSxJQUFXLGdCQUFnQixDQUFDLE9BQW9DO1FBQzlELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQVcsZ0JBQWdCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFXLGVBQWUsQ0FBQyxNQUFvRTtRQUM3RixJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBVyxl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LEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRWxGLElBQUksU0FBUyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLFlBQVksQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsRCxDQUFDO1FBQ0gsQ0FBQztRQUVELGtCQUFrQjtRQUNsQixNQUFNLFlBQVksR0FBRyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1FBRXhFLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDL0IsWUFBWSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDakMsQ0FBQztZQUNELFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUNELE1BQU0sQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7d0dBclNVLGlDQUFpQzs0R0FBakMsaUNBQWlDLGNBRHBCLE1BQU07OzRGQUNuQixpQ0FBaUM7a0JBRDdDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMaWJzVWlEaWFncmFtRHJhd0NhbnZhc1NlcnZpY2UgfSBmcm9tICcuL2NhbnZhcy5zZXJ2aWNlJztcbmltcG9ydCB7IGNhbnZhc0NvbmZpZ1JlYWRvbmx5IH0gZnJvbSAnLi9kaWFncmFtLWRyYXcuc2VydmljZSc7XG5pbXBvcnQgeyBJRGlhZ3JhbUVsZW1lbnQsIElEaWFncmFtRWxlbWVudEJyYW5jaCB9IGZyb20gJy4vaW50ZXJmYWNlcy9kaWFncmFtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBmaW5kQW5kRGVsZXRlRWxlbWVudEZyb21Db250YWluZXIsIGdldERlZmF1bHRDb25maWdDb25zdGl0dWVudEJyYW5jaGVzLCBMaWJzVWlEaWFncmFtRHJhd0NhbnZhc1V0aWwgfSBmcm9tICcuL3V0aWxzL2NhbnZhcy51dGlsJztcbmltcG9ydCB7IGJ1aWxkRmxhdEVsZW1lbnQgfSBmcm9tICcuL3V0aWxzL2RpYWdyYW0udXRpbCc7XG5pbXBvcnQgeyBidWlsZEVsZW1lbnREaXJlY3Rpb25UbywgY29sbGVjdE5leHRDaGFpbkVsZW1lbnRzIH0gZnJvbSAnLi91dGlscy9kaXJlY3Rpb24udXRpbCc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTGlic1VpRGlhZ3JhbURyYXdEaXJlY3Rpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBlbGVtZW50RGlyZWN0aW9uOiBJRGlhZ3JhbUVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgYnJhbmNoRGlyZWN0aW9uOiB7IGJyYW5jaDogSURpYWdyYW1FbGVtZW50QnJhbmNoOyBpbmRleDogbnVtYmVyIH0gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgZWxlbWVudFZpZXdEaXJlY3Rpb25JZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uVmlld0RpcmVjdGlvbjogU3ViamVjdDx7IGlkOiBzdHJpbmcgfT4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2FudmFzU2VydmljZSA9IGluamVjdChMaWJzVWlEaWFncmFtRHJhd0NhbnZhc1NlcnZpY2UpO1xuXG4gIHB1YmxpYyBzZXQgRWxlbWVudERpcmVjdGlvbihlbGVtZW50OiBJRGlhZ3JhbUVsZW1lbnQgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLmVsZW1lbnREaXJlY3Rpb24gPSBlbGVtZW50O1xuICB9XG5cbiAgcHVibGljIGdldCBFbGVtZW50RGlyZWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnREaXJlY3Rpb247XG4gIH1cblxuICBwdWJsaWMgc2V0IEJyYW5jaERpcmVjdGlvbihicmFuY2g6IHsgYnJhbmNoOiBJRGlhZ3JhbUVsZW1lbnRCcmFuY2g7IGluZGV4OiBudW1iZXIgfSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuYnJhbmNoRGlyZWN0aW9uID0gYnJhbmNoO1xuICB9XG5cbiAgcHVibGljIGdldCBCcmFuY2hEaXJlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuYnJhbmNoRGlyZWN0aW9uO1xuICB9XG5cbiAgcHVibGljIHNldCBFbGVtZW50Vmlld0RpcmVjdGlvbklkKGlkOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLmVsZW1lbnRWaWV3RGlyZWN0aW9uSWQgPSBpZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgRWxlbWVudFZpZXdEaXJlY3Rpb25JZCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50Vmlld0RpcmVjdGlvbklkO1xuICB9XG5cbiAgcHVibGljIGdldCBPblZpZXdEaXJlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMub25WaWV3RGlyZWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1J1bGVEaXJlY3Rpb25Ub0VsZW1lbnQoZWxlbWVudDogSURpYWdyYW1FbGVtZW50IHwgdW5kZWZpbmVkLCBlbGVtZW50Q29ubmVjdFRvOiBJRGlhZ3JhbUVsZW1lbnQgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBydWxlQWZ0ZXJJdGVtRHJhZyA9IHRoaXMuY2FudmFzU2VydmljZS5SdWxlQ29ubmVjdGFibGVFbGVtZW50cy5maW5kKChpdGVtKSA9PiBlbGVtZW50Q29ubmVjdFRvICYmIGl0ZW0uZWxlbWVudENvZGUgPT09IGVsZW1lbnRDb25uZWN0VG8uY29kZSk7XG5cbiAgICBpZiAoIXJ1bGVBZnRlckl0ZW1EcmFnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAocnVsZUFmdGVySXRlbURyYWcuZWxlbWVudENvZGVDb25uZWN0YWJsZUJlZm9yZS5maW5kKChjb2RlKSA9PiBjb2RlID09PSBlbGVtZW50Py5jb2RlKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgYnVpbGRFbGVtZW50Q29ubmVjdFRvKGVsZW1lbnQ6IElEaWFncmFtRWxlbWVudCwgZmxhdEVsZW1lbnRzOiBJRGlhZ3JhbUVsZW1lbnRbXSwgYnJhbmNoPzogSURpYWdyYW1FbGVtZW50QnJhbmNoLCBjaGVja1J1bGU/OiAoZWxlbWVudDogSURpYWdyYW1FbGVtZW50IHwgdW5kZWZpbmVkLCBlbGVtZW50Q29ubmVjdFRvOiBJRGlhZ3JhbUVsZW1lbnQgfCB1bmRlZmluZWQpID0+IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjaGVja1J1bGVEaXJlY3Rpb25Ub0VsZW1lbnQgPSBjaGVja1J1bGUgPz8gdGhpcy5jaGVja1J1bGVEaXJlY3Rpb25Ub0VsZW1lbnQuYmluZCh0aGlzKTtcbiAgICByZXR1cm4gYnVpbGRFbGVtZW50RGlyZWN0aW9uVG8oZWxlbWVudCwgZmxhdEVsZW1lbnRzLCBjaGVja1J1bGVEaXJlY3Rpb25Ub0VsZW1lbnQsIGJyYW5jaCk7XG4gIH1cblxuICAvKipYw7NhIGPDoWMgZWxlbWVudCBu4bqxbSBwaMOtYSBzYXUga2hpIG5ow6FuaCDEkcaw4bujYyDEkWnhu4F1IGjGsOG7m25nICovXG4gIHB1YmxpYyBkZWxldGVFbGVtZW50c0JlaGluZEJyYW5jaENvbm5lY3RUbyhicmFuY2g6IElEaWFncmFtRWxlbWVudEJyYW5jaCkge1xuICAgIGNvbnN0IGZsYXRFbGVtZW50cyA9IHRoaXMuY2FudmFzU2VydmljZS5GbGF0RWxlbWVudHMgPz8gW107XG4gICAgY29uc3QgZmxhdEVsZW1lbnRJbkVsZW1lbnRDdXJyZW50OiBJRGlhZ3JhbUVsZW1lbnRbXSA9IFtdO1xuICAgIGNvbnN0IGxpc3RFbGVtZW50RGVsZXRlOiBJRGlhZ3JhbUVsZW1lbnRbXSA9IFtdO1xuXG4gICAgYnVpbGRGbGF0RWxlbWVudChicmFuY2guZWxlbWVudHMsIGZsYXRFbGVtZW50SW5FbGVtZW50Q3VycmVudCk7XG4gICAgbGlzdEVsZW1lbnREZWxldGUucHVzaCguLi5mbGF0RWxlbWVudEluRWxlbWVudEN1cnJlbnQpO1xuXG4gICAgdGhpcy5kZWxldGVMaW5lQ29ubmVjdEZyb21FbGVtZW50KGxpc3RFbGVtZW50RGVsZXRlLCBmbGF0RWxlbWVudHMpO1xuICAgIGxpc3RFbGVtZW50RGVsZXRlLmZvckVhY2goKGVsZW1lbnREZWxldGUpID0+IHtcbiAgICAgIGZpbmRBbmREZWxldGVFbGVtZW50RnJvbUNvbnRhaW5lcih0aGlzLmNhbnZhc1NlcnZpY2UuRWxlbWVudHMsIGVsZW1lbnREZWxldGUpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqeMOzYSBsaW5lIMSR4bq/biB2w6AgeMOzYSBsaW5lIMSRaSDhu58gdG/DoG4gYuG7mSBjw6FjIGto4buRaSB2w6AgbmjDoW5oIGLhu4sgeMOzYSAqL1xuICBwcml2YXRlIGRlbGV0ZUxpbmVDb25uZWN0RnJvbUVsZW1lbnQoZWxlbWVudHM6IElEaWFncmFtRWxlbWVudFtdLCBmbGF0RWxlbWVudHM6IElEaWFncmFtRWxlbWVudFtdKSB7XG4gICAgZWxlbWVudHMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0uYnJhbmNoZXM/Lmxlbmd0aCkge1xuICAgICAgICBpdGVtLmJyYW5jaGVzLmZvckVhY2goKGJyYW5jaCkgPT4ge1xuICAgICAgICAgIGlmIChicmFuY2gubmV4dF9vdGhlcl9pZD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmRlbGV0ZVByZU90aGVySWQoaXRlbS5pZCA/PyAnJywgYnJhbmNoLm5leHRfb3RoZXJfaWQsIGZsYXRFbGVtZW50cyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtLm5leHRfb3RoZXJfaWQ/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLmRlbGV0ZVByZU90aGVySWQoaXRlbS5pZCA/PyAnJywgaXRlbS5uZXh0X290aGVyX2lkLCBmbGF0RWxlbWVudHMpO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW0ucHJlX290aGVyX2lkPy5sZW5ndGgpIHtcbiAgICAgICAgLy8gbmjDoW5oIGNo4buJIGzGsHUgaWQgbmV4dCDEkWkgdGjDtGkgY2jhu6kga2jDtG5nIGzGsHUgxJHGsOG7o2MgcHJlID0+IGNo4buJIGPhuqduIHjDs2EgcHJlIHRyb25nIGto4buRaS5cbiAgICAgICAgdGhpcy5kZWxldGVOZXh0T3RoZXJJZChpdGVtLmlkID8/ICcnLCBpdGVtLnByZV9vdGhlcl9pZCwgZmxhdEVsZW1lbnRzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBYw7NhIHByZV9vdGhlcl9pZCB04burIGtow6FjIGto4buRaSBtw6Aga2jhu5FpIGLhu4sgeMOzYSBu4buRaSDEkeG6v24gQmxvY2tEZWxldGUgPT4gT3RoZXIqL1xuICBwcml2YXRlIGRlbGV0ZVByZU90aGVySWQoaXRlbUlkOiBzdHJpbmcsIG5leHRPdGhlcklkOiBBcnJheTxzdHJpbmc+LCBmbGF0RWxlbWVudHM6IElEaWFncmFtRWxlbWVudFtdKSB7XG4gICAgbmV4dE90aGVySWQuZm9yRWFjaCgobmV4dFRvSWQpID0+IHtcbiAgICAgIGNvbnN0IG5leHRFbGVtZW50ID0gZmxhdEVsZW1lbnRzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IG5leHRUb0lkKTtcblxuICAgICAgaWYgKCFuZXh0RWxlbWVudD8ucHJlX290aGVyX2lkPy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5kZXhJZFByZSA9IG5leHRFbGVtZW50LnByZV9vdGhlcl9pZC5maW5kSW5kZXgoKGlkKSA9PiBpZCA9PT0gaXRlbUlkKTtcblxuICAgICAgaWYgKGluZGV4SWRQcmUgIT09IC0xKSB7XG4gICAgICAgIG5leHRFbGVtZW50LnByZV9vdGhlcl9pZC5zcGxpY2UoaW5kZXhJZFByZSwgMSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKiogWMOzYSBuZXh0X290aGVyX2lkIHThu6sga2jDoWMga2jhu5FpIG7hu5FpIMSR4bq/biBraOG7kWkgYuG7iyB4w7NhIE90aGVyID0+IEJsb2NrRGVsZXRlIHbDoCBraeG7g20gdHJhICsgdGjDqm0ga2jhu5FpIHRob8OhdCBjaG8gbmjhu69uZyBraOG7kWkgbuG7kWkgdOG7m2kgQmxvY2tEZWxldGUqL1xuICBwcml2YXRlIGRlbGV0ZU5leHRPdGhlcklkKGl0ZW1JZDogc3RyaW5nLCBwcmVPdGhlcklkOiBBcnJheTxzdHJpbmc+LCBmbGF0RWxlbWVudHM6IElEaWFncmFtRWxlbWVudFtdKSB7XG4gICAgcHJlT3RoZXJJZC5mb3JFYWNoKChuZXh0VG9JZCkgPT4ge1xuICAgICAgY29uc3QgcHJlRWxlbWVudCA9IGZsYXRFbGVtZW50cy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBuZXh0VG9JZCk7XG5cbiAgICAgIGlmICghcHJlRWxlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmVFbGVtZW50LmVsZW1lbnRfdHlwZSA9PT0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5UWVBFX0VMRU1FTlRfV09SS0ZMT1cpIHtcbiAgICAgICAgcHJlRWxlbWVudC5icmFuY2hlcz8uZm9yRWFjaCgoYnJhbmNoKSA9PiB7XG4gICAgICAgICAgaWYgKCFicmFuY2gubmV4dF9vdGhlcl9pZD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGluZGV4SWROZXh0SW5CcmFuY2ggPSBicmFuY2gubmV4dF9vdGhlcl9pZC5maW5kSW5kZXgoKGlkKSA9PiBpZCA9PT0gaXRlbUlkKTtcblxuICAgICAgICAgIGlmIChpbmRleElkTmV4dEluQnJhbmNoICE9PSAtMSkge1xuICAgICAgICAgICAgYnJhbmNoLm5leHRfb3RoZXJfaWQuc3BsaWNlKGluZGV4SWROZXh0SW5CcmFuY2gsIDEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghYnJhbmNoLm5leHRfb3RoZXJfaWQ/Lmxlbmd0aCkge1xuICAgICAgICAgICAgYnJhbmNoLm5vZGVPdGhlckNvbmZpZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuY2FudmFzU2VydmljZS5hZGRFbGVtZW50RXhpdFdoZW5EZWxldGVEaXJlY3Rpb25MaW5lKHByZUVsZW1lbnQsIGJyYW5jaCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghcHJlRWxlbWVudC5uZXh0X290aGVyX2lkPy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5kZXhJZE5leHQgPSBwcmVFbGVtZW50Lm5leHRfb3RoZXJfaWQuZmluZEluZGV4KChpZCkgPT4gaWQgPT09IGl0ZW1JZCk7XG5cbiAgICAgIGlmIChpbmRleElkTmV4dCAhPT0gLTEpIHtcbiAgICAgICAgcHJlRWxlbWVudC5uZXh0X290aGVyX2lkLnNwbGljZShpbmRleElkTmV4dCwgMSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghcHJlRWxlbWVudC5uZXh0X290aGVyX2lkPy5sZW5ndGgpIHtcbiAgICAgICAgLy8gdGjDqm0ga2jhu5FpIHRob8OhdCB2w6wga2jDtG5nIGPDsm4ga2jhu5FpIG7DoG8gY29ubmVjdCB04bubaSBuw7NcbiAgICAgICAgaWYgKHByZUVsZW1lbnQuZWxlbWVudF90eXBlID09PSBjYW52YXNDb25maWdSZWFkb25seSgpLlRZUEVfRUxFTUVOVF9XT1JLRkxPVykge1xuICAgICAgICAgIGNvbnN0IGdldENvbmZpZ0RlZmF1bHRCcmFuY2hlcyA9IHRoaXMuY2FudmFzU2VydmljZS5IYW5kbGVyRnVuY3Rpb24/LmdldENvbmZpZ0RlZmF1bHRCcmFuY2hlcyA/PyBnZXREZWZhdWx0Q29uZmlnQ29uc3RpdHVlbnRCcmFuY2hlcztcbiAgICAgICAgICBnZXRDb25maWdEZWZhdWx0QnJhbmNoZXMocHJlRWxlbWVudC5jb2RlID8/ICcnLCBwcmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBicmFuY2ggPSBMaWJzVWlEaWFncmFtRHJhd0NhbnZhc1V0aWwuZ2V0QnJhbmNoT2ZFbGVtZW50KHByZUVsZW1lbnQuaWQgPz8gJycsIGZsYXRFbGVtZW50cywgY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5UWVBFX0VMRU1FTlRfV09SS0ZMT1cpO1xuXG4gICAgICAgIHRoaXMuY2FudmFzU2VydmljZS5hZGRFbGVtZW50RXhpdFdoZW5EZWxldGVEaXJlY3Rpb25MaW5lKHByZUVsZW1lbnQsIGJyYW5jaCk7XG4gICAgICAgIHByZUVsZW1lbnQuc3ViQ29kZU9mRWxlbWVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgcHJlRWxlbWVudC5hdHRyaWJ1dGVTdmdEID0gdW5kZWZpbmVkO1xuICAgICAgICBwcmVFbGVtZW50LnBvc2l0aW9uX2VuZCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRCcmFuY2hEaXJlY3Rpb24odGFyZ2V0SWQ6IHN0cmluZywgZWxlbWVudDogSURpYWdyYW1FbGVtZW50LCBicmFuY2g6IElEaWFncmFtRWxlbWVudEJyYW5jaCwgZmxhdEVsZW1lbnRzOiBJRGlhZ3JhbUVsZW1lbnRbXSkge1xuICAgIGlmICghYnJhbmNoLm5leHRfb3RoZXJfaWQpIHtcbiAgICAgIGJyYW5jaC5uZXh0X290aGVyX2lkID0gW107XG4gICAgfVxuICAgIGJyYW5jaC5uZXh0X290aGVyX2lkLnB1c2godGFyZ2V0SWQpO1xuXG4gICAgY29uc3QgZWxlbWVudFRvID0gZmxhdEVsZW1lbnRzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IHRhcmdldElkKTtcblxuICAgIGlmIChlbGVtZW50VG8pIHtcbiAgICAgIGlmICghZWxlbWVudFRvLnByZV9vdGhlcl9pZCkge1xuICAgICAgICBlbGVtZW50VG8ucHJlX290aGVyX2lkID0gW107XG4gICAgICB9XG4gICAgICBlbGVtZW50VG8ucHJlX290aGVyX2lkLnB1c2goZWxlbWVudC5pZCA/PyAnJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZEVsZW1lbnREaXJlY3Rpb24odGFyZ2V0SWQ6IHN0cmluZywgZWxlbWVudDogSURpYWdyYW1FbGVtZW50LCBmbGF0RWxlbWVudHM6IElEaWFncmFtRWxlbWVudFtdKSB7XG4gICAgaWYgKCFlbGVtZW50Lm5leHRfb3RoZXJfaWQpIHtcbiAgICAgIGVsZW1lbnQubmV4dF9vdGhlcl9pZCA9IFtdO1xuICAgIH1cbiAgICBlbGVtZW50Lm5leHRfb3RoZXJfaWQucHVzaCh0YXJnZXRJZCk7XG5cbiAgICBjb25zdCBlbGVtZW50VG8gPSBmbGF0RWxlbWVudHMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gdGFyZ2V0SWQpO1xuXG4gICAgaWYgKGVsZW1lbnRUbykge1xuICAgICAgaWYgKCFlbGVtZW50VG8ucHJlX290aGVyX2lkKSB7XG4gICAgICAgIGVsZW1lbnRUby5wcmVfb3RoZXJfaWQgPSBbXTtcbiAgICAgIH1cbiAgICAgIGVsZW1lbnRUby5wcmVfb3RoZXJfaWQucHVzaChlbGVtZW50LmlkID8/ICcnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlRWxlbWVudHNCZWhpbmRFbGVtZW50Q29ubmVjdFRvKGVsZW1lbnQ6IElEaWFncmFtRWxlbWVudCwgZmxhdEVsZW1lbnRzOiBJRGlhZ3JhbUVsZW1lbnRbXSkge1xuICAgIGNvbnN0IGxpc3RFbGVtZW50RGVsZXRlOiBJRGlhZ3JhbUVsZW1lbnRbXSA9IFtdO1xuICAgIGxldCBmbGF0RWxlbWVudEluRWxlbWVudEN1cnJlbnQ6IElEaWFncmFtRWxlbWVudFtdID0gW107XG5cbiAgICBpZiAoZWxlbWVudC5icmFuY2hlcz8ubGVuZ3RoKSB7XG4gICAgICBidWlsZEZsYXRFbGVtZW50KFtlbGVtZW50XSwgZmxhdEVsZW1lbnRJbkVsZW1lbnRDdXJyZW50KTtcbiAgICAgIGZsYXRFbGVtZW50SW5FbGVtZW50Q3VycmVudCA9IGZsYXRFbGVtZW50SW5FbGVtZW50Q3VycmVudC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uaWQgIT09IGVsZW1lbnQuaWQpO1xuICAgIH1cbiAgICBkZWxldGUgZWxlbWVudC5icmFuY2hlcztcbiAgICBsaXN0RWxlbWVudERlbGV0ZS5wdXNoKC4uLmZsYXRFbGVtZW50SW5FbGVtZW50Q3VycmVudCk7XG4gICAgY29sbGVjdE5leHRDaGFpbkVsZW1lbnRzKGVsZW1lbnQsIGZsYXRFbGVtZW50cywgbGlzdEVsZW1lbnREZWxldGUpO1xuICAgIHRoaXMuZGVsZXRlTGluZUNvbm5lY3RGcm9tRWxlbWVudChsaXN0RWxlbWVudERlbGV0ZSwgZmxhdEVsZW1lbnRzKTtcbiAgICBsaXN0RWxlbWVudERlbGV0ZS5mb3JFYWNoKChlbGVtZW50RGVsZXRlKSA9PiB7XG4gICAgICB0aGlzLmZpbmRBbmREZWxldGVFbGVtZW50RnJvbUNvbnRhaW5lcih0aGlzLmNhbnZhc1NlcnZpY2UuRWxlbWVudHMsIGVsZW1lbnREZWxldGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kQW5kRGVsZXRlRWxlbWVudEZyb21Db250YWluZXIoY29udGFpbmVyRWxlbWVudDogQXJyYXk8SURpYWdyYW1FbGVtZW50PiwgZWxlbWVudERlbGV0ZTogSURpYWdyYW1FbGVtZW50KTogYm9vbGVhbiB7XG4gICAgZm9yIChjb25zdCBpbmRleCBpbiBjb250YWluZXJFbGVtZW50KSB7XG4gICAgICBjb25zdCBlbGVtZW50T2ZJbmRleCA9IGNvbnRhaW5lckVsZW1lbnRbaW5kZXhdO1xuXG4gICAgICBpZiAoZWxlbWVudE9mSW5kZXguaWQgPT09IGVsZW1lbnREZWxldGUuaWQpIHtcbiAgICAgICAgY29udGFpbmVyRWxlbWVudC5zcGxpY2UoK2luZGV4LCAxKTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICghZWxlbWVudE9mSW5kZXguYnJhbmNoZXM/Lmxlbmd0aCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBicmFuY2ggb2YgZWxlbWVudE9mSW5kZXguYnJhbmNoZXMpIHtcbiAgICAgICAgaWYgKCFicmFuY2guZWxlbWVudHM/Lmxlbmd0aCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZpbmRBbmREZWxldGVFbGVtZW50RnJvbUNvbnRhaW5lcihicmFuY2guZWxlbWVudHMsIGVsZW1lbnREZWxldGUpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZWRpdERpcmVjdGlvbihmbGF0RWxlbWVudHM6IElEaWFncmFtRWxlbWVudFtdLCB0YXJnZXRJZDogc3RyaW5nLCBlbGVtZW50OiBJRGlhZ3JhbUVsZW1lbnQsIGJyYW5jaD86IElEaWFncmFtRWxlbWVudEJyYW5jaCkge1xuICAgIGlmIChlbGVtZW50LmVsZW1lbnRfdHlwZSA9PT0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5UWVBFX0VMRU1FTlRfV09SS0ZMT1cgJiYgYnJhbmNoKSB7XG4gICAgICB0aGlzLmVkaXREaXJlY3Rpb25XaXRoQnJhbmNoKGZsYXRFbGVtZW50cywgYnJhbmNoLCB0YXJnZXRJZCwgZWxlbWVudCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpZE9sZE5leHRUbyA9IGVsZW1lbnQubmV4dF9vdGhlcl9pZD8uWzBdO1xuICAgIGNvbnN0IGVsZW1lbnRPbGRUbyA9IGZsYXRFbGVtZW50cz8uZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gaWRPbGROZXh0VG8pO1xuXG4gICAgLy8geMOzYSBsaW5lIGPFqVxuICAgIGlmIChlbGVtZW50T2xkVG8/LnByZV9vdGhlcl9pZCkge1xuICAgICAgY29uc3QgaXRlbUluZGV4ID0gZWxlbWVudE9sZFRvLnByZV9vdGhlcl9pZD8uZmluZEluZGV4KChpZCkgPT4gaWQgPT09IGVsZW1lbnQuaWQpO1xuXG4gICAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkge1xuICAgICAgICBlbGVtZW50T2xkVG8ucHJlX290aGVyX2lkPy5zcGxpY2UoaXRlbUluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxlbWVudC5hdHRyaWJ1dGVTdmdEID0gdW5kZWZpbmVkO1xuICAgIGVsZW1lbnQucG9zaXRpb25fZW5kID0gdW5kZWZpbmVkO1xuXG4gICAgLy8gdXBkYXRlIGxpbmUgbeG7m2lcbiAgICBjb25zdCBlbGVtZW50TmV3VG8gPSBmbGF0RWxlbWVudHM/LmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IHRhcmdldElkKTtcblxuICAgIGlmIChlbGVtZW50TmV3VG8pIHtcbiAgICAgIGlmICghZWxlbWVudE5ld1RvLnByZV9vdGhlcl9pZCkge1xuICAgICAgICBlbGVtZW50TmV3VG8ucHJlX290aGVyX2lkID0gW107XG4gICAgICB9XG4gICAgICBlbGVtZW50TmV3VG8ucHJlX290aGVyX2lkLnB1c2goZWxlbWVudC5pZCA/PyAnJyk7XG4gICAgfVxuICAgIGVsZW1lbnQubmV4dF9vdGhlcl9pZCA9IFtdO1xuICAgIGVsZW1lbnQubmV4dF9vdGhlcl9pZC5wdXNoKHRhcmdldElkKTtcbiAgfVxuXG4gIHByaXZhdGUgZWRpdERpcmVjdGlvbldpdGhCcmFuY2goZmxhdEVsZW1lbnRzOiBJRGlhZ3JhbUVsZW1lbnRbXSwgYnJhbmNoOiBJRGlhZ3JhbUVsZW1lbnRCcmFuY2gsIHRhcmdldElkOiBzdHJpbmcsIGVsZW1lbnQ6IElEaWFncmFtRWxlbWVudCkge1xuICAgIGNvbnN0IGlkT2xkTmV4dFRvID0gYnJhbmNoLm5leHRfb3RoZXJfaWQ/LlswXTtcbiAgICBjb25zdCBlbGVtZW50T2xkVG8gPSBmbGF0RWxlbWVudHM/LmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGlkT2xkTmV4dFRvKTtcblxuICAgIC8vIHjDs2EgbGluZSBjxalcbiAgICBpZiAoZWxlbWVudE9sZFRvPy5wcmVfb3RoZXJfaWQpIHtcbiAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IGVsZW1lbnRPbGRUby5wcmVfb3RoZXJfaWQ/LmZpbmRJbmRleCgoaWQpID0+IGlkID09PSBlbGVtZW50LmlkKTtcblxuICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHtcbiAgICAgICAgZWxlbWVudE9sZFRvLnByZV9vdGhlcl9pZD8uc3BsaWNlKGl0ZW1JbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gdXBkYXRlIGxpbmUgbeG7m2lcbiAgICBjb25zdCBlbGVtZW50TmV3VG8gPSBmbGF0RWxlbWVudHM/LmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IHRhcmdldElkKTtcblxuICAgIGlmIChlbGVtZW50TmV3VG8pIHtcbiAgICAgIGlmICghZWxlbWVudE5ld1RvLnByZV9vdGhlcl9pZCkge1xuICAgICAgICBlbGVtZW50TmV3VG8ucHJlX290aGVyX2lkID0gW107XG4gICAgICB9XG4gICAgICBlbGVtZW50TmV3VG8ucHJlX290aGVyX2lkLnB1c2goZWxlbWVudC5pZCA/PyAnJyk7XG4gICAgfVxuICAgIGJyYW5jaC5uZXh0X290aGVyX2lkID0gW107XG4gICAgYnJhbmNoLm5leHRfb3RoZXJfaWQucHVzaCh0YXJnZXRJZCk7XG4gIH1cbn1cbiJdfQ==
package/esm2022/index.mjs CHANGED
@@ -3,4 +3,5 @@ export * from './diagram-draw.service';
3
3
  export * from './direction.service';
4
4
  export * from './interfaces/canvas.interface';
5
5
  export * from './interfaces/diagram.interface';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2RpYWdyYW0tZHJhdy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGdDQUFnQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jYW52YXMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpYWdyYW0tZHJhdy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2NhbnZhcy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2RpYWdyYW0uaW50ZXJmYWNlJztcbiJdfQ==
6
+ export * from './interfaces/navigation.interface';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2RpYWdyYW0tZHJhdy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsbUNBQW1DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NhbnZhcy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlhZ3JhbS1kcmF3LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3Rpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvY2FudmFzLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvZGlhZ3JhbS5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL25hdmlnYXRpb24uaW50ZXJmYWNlJztcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ3JhbS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2RpYWdyYW0tZHJhdy9zcmMvaW50ZXJmYWNlcy9kaWFncmFtLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgVHlwZSwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElEaWFncmFtRWxlbWVudCB7XG4gIC8vIGNvbmZpZyDEkeG7gyB24bq9IGRpYWdyYW1cbiAgY29kZT86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgYnJhbmNoZXM/OiBBcnJheTxJRGlhZ3JhbUVsZW1lbnRCcmFuY2g+O1xuICBzcGVjaWZpY194PzogbnVtYmVyO1xuICBzcGVjaWZpY195PzogbnVtYmVyO1xuICBzcGVjaWZpY193aWR0aD86IG51bWJlcjtcbiAgc3BlY2lmaWNfaGVpZ2h0PzogbnVtYmVyO1xuICBlbGVtZW50U3ZnPzogU1ZHUGF0aEVsZW1lbnQ7XG4gIGF0dHJpYnV0ZVN2Z0Q/OiBzdHJpbmc7XG4gIG1heEhlaWdodEJyYW5jaD86IG51bWJlcjtcbiAgcG9zaXRpb25fZW5kX2JyYW5jaD86IG51bWJlcjtcbiAgcG9zaXRpb25fZW5kPzogbnVtYmVyO1xuICB0cmFuc2xhdGVYPzogbnVtYmVyO1xuICB0cmFuc2xhdGVZPzogbnVtYmVyO1xuICBhdHRyaWJ1dGVTdmdEQ29ubmVjdFRvT3RoZXJFbGVtZW50PzogQXJyYXk8e1xuICAgIGVsZW1lbnRTdmc/OiBTVkdQYXRoRWxlbWVudDtcbiAgICBwYXRoOiBzdHJpbmc7XG4gIH0+O1xuICBwcmVfb3RoZXJfaWQ/OiBBcnJheTxzdHJpbmc+O1xuICBuZXh0X290aGVyX2lkPzogQXJyYXk8c3RyaW5nPjtcbiAgc3ViQ29kZU9mRWxlbWVudD86IHN0cmluZztcbiAgbmV4dF9pZD86IHN0cmluZztcbiAgbm9kZU90aGVyQ29uZmlnPzogSURpYWdyYW1FbGVtZW50O1xuICBkaXNhYmxlPzogYm9vbGVhbjtcblxuICAvLyBjb25maWcgY+G7p2EgZWxlbWVudCBj4bqnbiBjw7NcbiAgaWQ/OiBzdHJpbmc7XG4gIGVsZW1lbnRfdHlwZT86IHN0cmluZztcbiAgc3BlY2lmaWNfY291bnRlcl9jdXJyZW50X2NvZGU/OiBudW1iZXI7IC8vIGzGsHUgbOG6oWkgxJHhu4MgdMSDbmcgY2hvIGPDoWMga2jhu5FpIHRp4bq/cCB0aGVvIGtoaSBrw6lvIHbDoG87XG4gIHByZV9pZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGlhZ3JhbUVsZW1lbnRCcmFuY2gge1xuICBjb2RlPzogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZzsgLy8gTGFiZWwgaGnhu4NuIHRo4buLIHRyw6puIGJyYW5jaCAodmQ6IFwiMTAwIFByb2ZpbGVzXCIsIFwiQ8OybiBs4bqhaVwiKVxuICBsYWJlbEJnQ29sb3I/OiBzdHJpbmc7IC8vIEJhY2tncm91bmQgY29sb3IgY+G7p2EgbGFiZWwgKHZkOiBcIiNmM2Y0ZjZcIilcbiAgZWxlbWVudHM6IEFycmF5PElEaWFncmFtRWxlbWVudD47XG4gIGVsZW1lbnRTdmc/OiBTVkdQYXRoRWxlbWVudDtcbiAgYXR0cmlidXRlU3ZnRD86IHN0cmluZztcbiAgb25UaGVTaWRlPzogJ2Fib3ZlJyB8ICd1bmRlcicgfCAnY2VudGVyJztcbiAgcG9zaXRpb25NYXhMZWZ0PzogbnVtYmVyO1xuICBwb3NpdGlvbk1heFRvcD86IG51bWJlcjtcbiAgc3BlY2lmaWNfc3RhcnRfYnJhbmNoX3g/OiBudW1iZXI7XG4gIHNwZWNpZmljX3N0YXJ0X2JyYW5jaF95PzogbnVtYmVyO1xuICB3aWR0aEJyYW5jaD86IHtcbiAgICB3aWR0aD86IG51bWJlcjtcbiAgICBhYm92ZT86IG51bWJlcjtcbiAgICB1bmRlcj86IG51bWJlcjtcbiAgfTtcbiAgbmV4dF9vdGhlcl9pZD86IEFycmF5PHN0cmluZz47XG4gIGlzRGlyZWN0aW9uPzogYm9vbGVhbjsgLy8gYmnhur9uIG7DoHkgZMO5bmcgc+G7rSBk4bulbmcgdOG6oW0gxJHhu4MgY2hlY2sgeGVtIG5ow6FuaCBjw7MgxJHGsOG7o2MgxJFp4buBdSBoxrDhu5tuZyBoYXkga2jDtG5nO1xuXG4gIG5vZGVPdGhlckNvbmZpZz86IElEaWFncmFtRWxlbWVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ2FudmFzQ29uZmlnIHtcbiAgRUxFTUVOVF9XSURUSF9ERUZBVUxUX0JSQU5DSF9XSEVOX05PVF9FTEVNRU5UOiBudW1iZXI7XG4gIEVMRU1FTlRfTUFSR0lOX0RFRkFVTFQ6IG51bWJlcjtcbiAgRUxFTUVOVF9NQVJHSU5fREVGQVVMVF9CUkFOQ0g6IG51bWJlcjtcbiAgRUxFTUVOVF9NQVJHSU5fQkVUV0VFTl9CUkFOQ0hfREVGQVVMVDogbnVtYmVyO1xuICBERUZBVUxUX0JSQU5DSF9XSEVOX05PX0VMRU1FTlQ6IG51bWJlcjtcbiAgRUxFTUVOVF9IRUlHSFRfQ1VSVkU6IG51bWJlcjtcbiAgRUxFTUVOVF9TVkdfU1RST0tFX0NPTE9SOiBzdHJpbmc7XG4gIEVMRU1FTlRfU1ZHX1NUUk9LRV9XSURUSDogc3RyaW5nO1xuICBFTEVNRU5UX01BUkdJTl9ERUZBVUxUX0JSQU5DSF9UT19FTEVNRU5UX0ZJUlNUOiBudW1iZXI7XG5cbiAgLy8gY29uZmlnIG90aGVyIG5vZGVcbiAgRElTVEFOQ0VfVE9fV0FJVDogbnVtYmVyO1xuICBXQUlUX1RPX0VMRU1FTlQ6IG51bWJlcjtcbiAgRUxFTUVOVF9XQUlUX0RFRkFVTFQ6IG51bWJlcjtcbiAgRElTVEFOQ0VfV0FJVF9UT19ORVhUX0xJTkU6IG51bWJlcjtcblxuICAvLyBjb25maWcgZWxlbWVudFxuICBUWVBFX0VMRU1FTlRfRVhJVDogc3RyaW5nO1xuICBUWVBFX0VMRU1FTlRfV09SS0ZMT1c6IHN0cmluZztcbiAgV0lEVEhfRUxFTUVOVF9ERUZBVUxUOiBudW1iZXI7XG4gIEhFSUdIVF9FTEVNRU5UX0RFRkFVTFQ6IG51bWJlcjtcblxuICBBRERfSUNPTl9ESUFNRVRFUjogbnVtYmVyO1xufVxuXG4vKipcbiAqIFN0eWxlIGNvbmZpZyBjaG8gaW5kaWNhdG9yIChuw7p0IFwiK1wiKSBj4bunYSBkcm9wIHpvbmUuXG4gKiBU4bqldCBj4bqjIGPDoWMgZmllbGQgxJHhu4F1IG9wdGlvbmFsIOKAkyBnacOhIHRy4buLIG7DoG8ga2jDtG5nIHRydXnhu4FuIHPhur0gZMO5bmcgbeG6t2MgxJHhu4tuaC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRHJvcFpvbmVJbmRpY2F0b3JTdHlsZSB7XG4gIGJvcmRlclJhZGl1cz86IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICBpY29uQ29sb3I/OiBzdHJpbmc7XG4gIG9wYWNpdHk/OiBudW1iZXI7XG4gIGhvdmVyQmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICBob3ZlckJvcmRlckNvbG9yPzogc3RyaW5nO1xuICBob3ZlckJvcmRlclN0eWxlPzogc3RyaW5nO1xuICBob3ZlckJvcmRlclJhZGl1cz86IG51bWJlcjtcblxuICAvKiogSMOgbSByZW5kZXIgKirEkeG7mW5nKiogbuG7mWkgZHVuZyBpbmRpY2F0b3Ig4bufIHRy4bqhbmcgdGjDoWkgYsOsbmggdGjGsOG7nW5nLiAqL1xuICByZW5kZXJJbmRpY2F0b3I/OiAoc2l6ZTogbnVtYmVyKSA9PiBzdHJpbmc7XG5cbiAgLyoqIEjDoG0gcmVuZGVyICoqxJHhu5luZyoqIG7hu5lpIGR1bmcgaW5kaWNhdG9yIOG7nyB0cuG6oW5nIHRow6FpIGhvdmVyL2RyYWctZW50ZXIuKi9cbiAgcmVuZGVySG92ZXJJbmRpY2F0b3I/OiAoKSA9PiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbmZpZyB7XG4gIHN0b3JlRGF0YURlZmluZTogSURpYWdyYW1TdG9yZURhdGE7XG4gIHN2Z0NvbnRhaW5lcj86IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBub2Rlc0NvbnRhaW5lcj86IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICB2aWV3Q29udGFpbmVyUmVmPzogVmlld0NvbnRhaW5lclJlZjtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgbm9kZUNvbXBvbmVudFR5cGU/OiBUeXBlPGFueT47IC8vIENvbXBvbmVudCBjaG8gbWFpbiBub2Rlc1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBub2RlT3RoZXJDb25maWdDb21wb25lbnRUeXBlPzogVHlwZTxhbnk+OyAvLyBDb21wb25lbnQgY2hvIG5vZGVPdGhlckNvbmZpZ1xuICB1c2VWaXJ0dWFsaXphdGlvblRlbXBsYXRlPzogYm9vbGVhbjtcbiAgLyoqIFR14buzIGNo4buJbmggc3R5bGUgY2hvIGluZGljYXRvciAobsO6dCBcIitcIikgY+G7p2EgZHJvcCB6b25lICovXG4gIGRyb3Bab25lU3R5bGU/OiBJRHJvcFpvbmVJbmRpY2F0b3JTdHlsZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGlhZ3JhbVN0b3JlRGF0YSB7XG4gIHBvc2l0aW9uTWF4TGVmdDogbnVtYmVyO1xuICBwb3NpdGlvbk1heFRvcDogbnVtYmVyO1xuICB3aWR0aEhlaWdodFN2Z0NhbnZhczogeyBoZWlnaHRTdmc6IG51bWJlcjsgd2lkdGhTdmc6IG51bWJlciB9O1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ3JhbS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2RpYWdyYW0tZHJhdy9zcmMvaW50ZXJmYWNlcy9kaWFncmFtLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgVHlwZSwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElEaWFncmFtRWxlbWVudCB7XG4gIC8vIGNvbmZpZyDEkeG7gyB24bq9IGRpYWdyYW1cbiAgY29kZT86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgYnJhbmNoZXM/OiBBcnJheTxJRGlhZ3JhbUVsZW1lbnRCcmFuY2g+O1xuICBzcGVjaWZpY194PzogbnVtYmVyO1xuICBzcGVjaWZpY195PzogbnVtYmVyO1xuICBzcGVjaWZpY193aWR0aD86IG51bWJlcjtcbiAgc3BlY2lmaWNfaGVpZ2h0PzogbnVtYmVyO1xuICBlbGVtZW50U3ZnPzogU1ZHUGF0aEVsZW1lbnQ7XG4gIGF0dHJpYnV0ZVN2Z0Q/OiBzdHJpbmc7XG4gIG1heEhlaWdodEJyYW5jaD86IG51bWJlcjtcbiAgcG9zaXRpb25fZW5kX2JyYW5jaD86IG51bWJlcjtcbiAgcG9zaXRpb25fZW5kPzogbnVtYmVyO1xuICB0cmFuc2xhdGVYPzogbnVtYmVyO1xuICB0cmFuc2xhdGVZPzogbnVtYmVyO1xuICBhdHRyaWJ1dGVTdmdEQ29ubmVjdFRvT3RoZXJFbGVtZW50PzogQXJyYXk8e1xuICAgIGVsZW1lbnRTdmc/OiBTVkdQYXRoRWxlbWVudDtcbiAgICBwYXRoOiBzdHJpbmc7XG4gIH0+O1xuICBwcmVfb3RoZXJfaWQ/OiBBcnJheTxzdHJpbmc+O1xuICBuZXh0X290aGVyX2lkPzogQXJyYXk8c3RyaW5nPjtcbiAgc3ViQ29kZU9mRWxlbWVudD86IHN0cmluZztcbiAgbmV4dF9pZD86IHN0cmluZztcbiAgbm9kZU90aGVyQ29uZmlnPzogSURpYWdyYW1FbGVtZW50O1xuICBkaXNhYmxlPzogYm9vbGVhbjtcblxuICAvLyBjb25maWcgY+G7p2EgZWxlbWVudCBj4bqnbiBjw7NcbiAgaWQ/OiBzdHJpbmc7XG4gIGVsZW1lbnRfdHlwZT86IHN0cmluZztcbiAgc3BlY2lmaWNfY291bnRlcl9jdXJyZW50X2NvZGU/OiBudW1iZXI7IC8vIGzGsHUgbOG6oWkgxJHhu4MgdMSDbmcgY2hvIGPDoWMga2jhu5FpIHRp4bq/cCB0aGVvIGtoaSBrw6lvIHbDoG87XG4gIHByZV9pZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGlhZ3JhbUVsZW1lbnRCcmFuY2gge1xuICBjb2RlPzogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZzsgLy8gTGFiZWwgaGnhu4NuIHRo4buLIHRyw6puIGJyYW5jaCAodmQ6IFwiMTAwIFByb2ZpbGVzXCIsIFwiQ8OybiBs4bqhaVwiKVxuICBsYWJlbEJnQ29sb3I/OiBzdHJpbmc7IC8vIEJhY2tncm91bmQgY29sb3IgY+G7p2EgbGFiZWwgKHZkOiBcIiNmM2Y0ZjZcIilcbiAgZWxlbWVudHM6IEFycmF5PElEaWFncmFtRWxlbWVudD47XG4gIGVsZW1lbnRTdmc/OiBTVkdQYXRoRWxlbWVudDtcbiAgYXR0cmlidXRlU3ZnRD86IHN0cmluZztcbiAgb25UaGVTaWRlPzogJ2Fib3ZlJyB8ICd1bmRlcicgfCAnY2VudGVyJztcbiAgcG9zaXRpb25NYXhMZWZ0PzogbnVtYmVyO1xuICBwb3NpdGlvbk1heFRvcD86IG51bWJlcjtcbiAgc3BlY2lmaWNfc3RhcnRfYnJhbmNoX3g/OiBudW1iZXI7XG4gIHNwZWNpZmljX3N0YXJ0X2JyYW5jaF95PzogbnVtYmVyO1xuICB3aWR0aEJyYW5jaD86IHtcbiAgICB3aWR0aD86IG51bWJlcjtcbiAgICBhYm92ZT86IG51bWJlcjtcbiAgICB1bmRlcj86IG51bWJlcjtcbiAgfTtcbiAgbmV4dF9vdGhlcl9pZD86IEFycmF5PHN0cmluZz47XG4gIGlzRGlyZWN0aW9uPzogYm9vbGVhbjsgLy8gYmnhur9uIG7DoHkgZMO5bmcgc+G7rSBk4bulbmcgdOG6oW0gxJHhu4MgY2hlY2sgeGVtIG5ow6FuaCBjw7MgxJHGsOG7o2MgxJFp4buBdSBoxrDhu5tuZyBoYXkga2jDtG5nO1xuXG4gIG5vZGVPdGhlckNvbmZpZz86IElEaWFncmFtRWxlbWVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ2FudmFzQ29uZmlnIHtcbiAgRUxFTUVOVF9XSURUSF9ERUZBVUxUX0JSQU5DSF9XSEVOX05PVF9FTEVNRU5UOiBudW1iZXI7XG4gIEVMRU1FTlRfTUFSR0lOX0RFRkFVTFQ6IG51bWJlcjtcbiAgRUxFTUVOVF9NQVJHSU5fREVGQVVMVF9CUkFOQ0g6IG51bWJlcjtcbiAgRUxFTUVOVF9NQVJHSU5fQkVUV0VFTl9CUkFOQ0hfREVGQVVMVDogbnVtYmVyO1xuICBERUZBVUxUX0JSQU5DSF9XSEVOX05PX0VMRU1FTlQ6IG51bWJlcjtcbiAgRUxFTUVOVF9IRUlHSFRfQ1VSVkU6IG51bWJlcjtcbiAgRUxFTUVOVF9TVkdfU1RST0tFX0NPTE9SOiBzdHJpbmc7XG4gIEVMRU1FTlRfU1ZHX1NUUk9LRV9XSURUSDogc3RyaW5nO1xuICBFTEVNRU5UX01BUkdJTl9ERUZBVUxUX0JSQU5DSF9UT19FTEVNRU5UX0ZJUlNUOiBudW1iZXI7XG5cbiAgLy8gY29uZmlnIG90aGVyIG5vZGVcbiAgRElTVEFOQ0VfVE9fV0FJVDogbnVtYmVyO1xuICBXQUlUX1RPX0VMRU1FTlQ6IG51bWJlcjtcbiAgRUxFTUVOVF9XQUlUX0RFRkFVTFQ6IG51bWJlcjtcbiAgRElTVEFOQ0VfV0FJVF9UT19ORVhUX0xJTkU6IG51bWJlcjtcblxuICAvLyBjb25maWcgZWxlbWVudFxuICBUWVBFX0VMRU1FTlRfRVhJVDogc3RyaW5nO1xuICBUWVBFX0VMRU1FTlRfV09SS0ZMT1c6IHN0cmluZztcbiAgV0lEVEhfRUxFTUVOVF9ERUZBVUxUOiBudW1iZXI7XG4gIEhFSUdIVF9FTEVNRU5UX0RFRkFVTFQ6IG51bWJlcjtcblxuICBBRERfSUNPTl9ESUFNRVRFUjogbnVtYmVyO1xufVxuXG4vKipcbiAqIFN0eWxlIGNvbmZpZyBjaG8gaW5kaWNhdG9yIChuw7p0IFwiK1wiKSBj4bunYSBkcm9wIHpvbmUuXG4gKiBU4bqldCBj4bqjIGPDoWMgZmllbGQgxJHhu4F1IG9wdGlvbmFsIOKAkyBnacOhIHRy4buLIG7DoG8ga2jDtG5nIHRydXnhu4FuIHPhur0gZMO5bmcgbeG6t2MgxJHhu4tuaC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRHJvcFpvbmVJbmRpY2F0b3JTdHlsZSB7XG4gIGJvcmRlclJhZGl1cz86IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICBpY29uQ29sb3I/OiBzdHJpbmc7XG4gIG9wYWNpdHk/OiBudW1iZXI7XG4gIGhvdmVyQmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICBob3ZlckJvcmRlckNvbG9yPzogc3RyaW5nO1xuICBob3ZlckJvcmRlclN0eWxlPzogc3RyaW5nO1xuICBob3ZlckJvcmRlclJhZGl1cz86IG51bWJlcjtcblxuICAvKiogSMOgbSByZW5kZXIgKirEkeG7mW5nKiogbuG7mWkgZHVuZyBpbmRpY2F0b3Ig4bufIHRy4bqhbmcgdGjDoWkgYsOsbmggdGjGsOG7nW5nLiAqL1xuICByZW5kZXJJbmRpY2F0b3I/OiAoc2l6ZTogbnVtYmVyKSA9PiBzdHJpbmc7XG5cbiAgLyoqIEjDoG0gcmVuZGVyICoqxJHhu5luZyoqIG7hu5lpIGR1bmcgaW5kaWNhdG9yIOG7nyB0cuG6oW5nIHRow6FpIGhvdmVyL2RyYWctZW50ZXIuKi9cbiAgcmVuZGVySG92ZXJJbmRpY2F0b3I/OiAoKSA9PiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUN1c3RvbUNhbnZhc0NvbmZpZyB7XG4gIHN0b3JlRGF0YURlZmluZTogSURpYWdyYW1TdG9yZURhdGE7XG4gIHN2Z0NvbnRhaW5lcj86IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBub2Rlc0NvbnRhaW5lcj86IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICB2aWV3Q29udGFpbmVyUmVmPzogVmlld0NvbnRhaW5lclJlZjtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgbm9kZUNvbXBvbmVudFR5cGU/OiBUeXBlPGFueT47IC8vIENvbXBvbmVudCBjaG8gbWFpbiBub2Rlc1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBub2RlT3RoZXJDb25maWdDb21wb25lbnRUeXBlPzogVHlwZTxhbnk+OyAvLyBDb21wb25lbnQgY2hvIG5vZGVPdGhlckNvbmZpZ1xuICB1c2VWaXJ0dWFsaXphdGlvblRlbXBsYXRlPzogYm9vbGVhbjtcbiAgLyoqIFR14buzIGNo4buJbmggc3R5bGUgY2hvIGluZGljYXRvciAobsO6dCBcIitcIikgY+G7p2EgZHJvcCB6b25lICovXG4gIGRyb3Bab25lU3R5bGU/OiBJRHJvcFpvbmVJbmRpY2F0b3JTdHlsZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGlhZ3JhbVN0b3JlRGF0YSB7XG4gIHBvc2l0aW9uTWF4TGVmdDogbnVtYmVyO1xuICBwb3NpdGlvbk1heFRvcDogbnVtYmVyO1xuICB3aWR0aEhlaWdodFN2Z0NhbnZhczogeyBoZWlnaHRTdmc6IG51bWJlcjsgd2lkdGhTdmc6IG51bWJlciB9O1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2RpYWdyYW0tZHJhdy9zcmMvaW50ZXJmYWNlcy9uYXZpZ2F0aW9uLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUFycm93U3R5bGUsIElEcmF3TGluZURhdGFJbnB1dCwgSUxpbmVTdHlsZSwgVFlQRV9NT0RFIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1kcmF3LWxpbmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElOYXZpZ2F0aW9uTGluZVN0eWxlQ29uZmlnIHtcbiAgbGluZVN0eWxlPzogSUxpbmVTdHlsZTtcbiAgYXJyb3dTdHlsZT86IElBcnJvd1N0eWxlO1xuICAvKiogS2hv4bqjbmcgY8OhY2ggKHB4KSBnaeG7r2EgY+G6oW5oIHNvdXJjZS90YXJnZXQgdsOgIGVuZHBvaW50LiBN4bq3YyDEkeG7i25oIDguICovXG4gIGVuZHBvaW50R2FwPzogbnVtYmVyO1xuICAvKiogT3ZlcnJpZGUgcmVzb2x2ZXIgY2jhu41uIG1vZGUuIE3hurdjIMSR4buLbmg6IHJ1bGUgdOG7qyB3b3JrZmxvd3Mg4oCUIGBzdGFydC54IDwgZW5kLnggJiYgc3RhcnQueSA+IGVuZC55ID8gJ3F1YXJ0LWluJyA6ICdzLWxpbmUnYC4gKi9cbiAgbW9kZVJlc29sdmVyPzogKHN0YXJ0OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0sIGVuZDogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9KSA9PiBUWVBFX01PREU7XG59XG5cbmV4cG9ydCB0eXBlIFRfbmF2aWdhdGlvbl9saW5lX2RhdGEgPSBJRHJhd0xpbmVEYXRhSW5wdXQ7XG4iXX0=
@@ -6,7 +6,7 @@ export class MoLibDiagramCalculatorBranchUtil {
6
6
  let Ly = startDraw;
7
7
  Ly += canvasConfigReadonly().ELEMENT_HEIGHT_CURVE; // chiều dài đến element đầu tiên
8
8
  Ly += getDistanceFromBranchToFirstBlock(branch.nodeOtherConfig); // chiều dài đến element đầu tiên
9
- if (!branch.elements || !branch.elements.length) {
9
+ if (!branch.elements?.length) {
10
10
  Ly += maxHeightBranch;
11
11
  Ly += 20; // thêm đoạn nối từ điểm kết thúc nhánh đến hết
12
12
  }
@@ -23,7 +23,7 @@ export class MoLibDiagramCalculatorBranchUtil {
23
23
  const waitHeight = getHeightWaitConfig(branch.nodeOtherConfig);
24
24
  const topStartLine2 = endYToWait + waitHeight;
25
25
  delete branch.nodeOtherConfig.attributeSvgD;
26
- if (branch.elements && branch.elements.length) {
26
+ if (branch.elements?.length) {
27
27
  branch.nodeOtherConfig.attributeSvgD = `M ${coord1.mx} ${topStartLine2} L ${coord1.mx} ${coord1.ly}`;
28
28
  }
29
29
  branch.nodeOtherConfig.specific_y = endYToWait;
@@ -31,7 +31,7 @@ export class MoLibDiagramCalculatorBranchUtil {
31
31
  }
32
32
  branch.specific_start_branch_y = top + lineFormElementToBranching + canvasConfigReadonly().ELEMENT_HEIGHT_CURVE;
33
33
  branch.specific_start_branch_x = left;
34
- if (!branch.elements || !branch.elements.length) {
34
+ if (!branch.elements?.length) {
35
35
  return;
36
36
  }
37
37
  const heightToElement = canvasConfigReadonly().ELEMENT_HEIGHT_CURVE + getDistanceFromBranchToFirstBlock(branch.nodeOtherConfig); // chiều dài đến element đầu tiên;
@@ -45,7 +45,7 @@ export class MoLibDiagramCalculatorBranchUtil {
45
45
  const { coordQL2, isCheckAllElementConnectToExit } = this.drawAboveUnderLine(left, lineFormElementToBranching, top, lineBetweenBranch, branch, maxHeightBranch, 'left', config);
46
46
  branch.specific_start_branch_x = coordQL2.x;
47
47
  branch.specific_start_branch_y = coordQL2.y;
48
- if (!branch.elements || !branch.elements.length) {
48
+ if (!branch.elements?.length) {
49
49
  return;
50
50
  }
51
51
  this.drawElementInBranchLine(branch, coordQL2, config);
@@ -60,7 +60,7 @@ export class MoLibDiagramCalculatorBranchUtil {
60
60
  const maxY = (coordQL1.y ?? 0) + 200;
61
61
  const configSvg = config.widthHeightSvgCanvas;
62
62
  configSvg.heightSvg = maxY > configSvg.heightSvg ? maxY : configSvg.heightSvg;
63
- if (!branch.elements || !branch.elements.length) {
63
+ if (!branch.elements?.length) {
64
64
  return;
65
65
  }
66
66
  this.drawElementInBranchLine(branch, coordQL2, config);
@@ -118,7 +118,7 @@ export class MoLibDiagramCalculatorBranchUtil {
118
118
  };
119
119
  coordQL2.ly = (coordQL2.y ?? 0) + getDistanceFromBranchToFirstBlock(branch.nodeOtherConfig);
120
120
  coordQL2.lx = coordQL2.x;
121
- if (!branch.elements || !branch.elements.length) {
121
+ if (!branch.elements?.length) {
122
122
  coordQL2.ly = maxHeightBranch + (coordQL2.ly ?? 0); // tổng chiều cao của nhánh + điểm xuất phát
123
123
  }
124
124
  let QL2 = `Q ${coordQL2.x1},${coordQL2.y1} ${coordQL2.x},${coordQL2.y} L ${coordQL2.lx} ${coordQL2.ly}`;
@@ -128,7 +128,7 @@ export class MoLibDiagramCalculatorBranchUtil {
128
128
  const topStartLine2 = endYToWait + waitHeight;
129
129
  delete branch.nodeOtherConfig.attributeSvgD;
130
130
  QL2 = `Q ${coordQL2.x1},${coordQL2.y1} ${coordQL2.x},${coordQL2.y} M ${coordQL2.x},${coordQL2.y} L ${coordQL2.x},${endYToWait}`;
131
- if (branch.elements && branch.elements.length) {
131
+ if (branch.elements?.length) {
132
132
  branch.nodeOtherConfig.attributeSvgD = `M ${coordQL2.x} ${topStartLine2} L ${coordQL2.x} ${coordQL2.ly}`;
133
133
  }
134
134
  branch.nodeOtherConfig.specific_y = endYToWait;
@@ -147,7 +147,7 @@ export class MoLibDiagramCalculatorBranchUtil {
147
147
  return toExit;
148
148
  }
149
149
  elements.forEach((element) => {
150
- if (!element.branches || !element.branches.length) {
150
+ if (!element.branches?.length) {
151
151
  return;
152
152
  }
153
153
  let branchConnectToExit = 0;
@@ -184,4 +184,4 @@ export class MoLibDiagramCalculatorBranchUtil {
184
184
  }
185
185
  }
186
186
  }
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRvci1icmFuY2gudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvZGlhZ3JhbS1kcmF3L3NyYy91dGlscy9jYWxjdWxhdG9yLWJyYW5jaC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsaUNBQWlDLEVBQUUsbUJBQW1CLEVBQUUscUNBQXFDLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV4SixNQUFNLE9BQU8sZ0NBQWdDO0lBQzNDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFZLEVBQUUsMEJBQWtDLEVBQUUsR0FBVyxFQUFFLE1BQTZCLEVBQUUsZUFBdUIsRUFBRSxNQUE2QjtRQUMxSyxNQUFNLFNBQVMsR0FBRyxHQUFHLEdBQUcsMEJBQTBCLENBQUM7UUFDbkQsSUFBSSxFQUFFLEdBQUcsU0FBUyxDQUFDO1FBRW5CLEVBQUUsSUFBSSxvQkFBb0IsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUMsaUNBQWlDO1FBQ3BGLEVBQUUsSUFBSSxpQ0FBaUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxpQ0FBaUM7UUFDbEcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hELEVBQUUsSUFBSSxlQUFlLENBQUM7WUFDdEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLCtDQUErQztRQUMzRCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUc7WUFDYixFQUFFLEVBQUUsSUFBSTtZQUNSLEVBQUUsRUFBRSxHQUFHO1lBQ1AsRUFBRSxFQUFFLEVBQUU7WUFDTixFQUFFLEVBQUUsSUFBSTtTQUNULENBQUM7UUFFRixNQUFNLENBQUMsYUFBYSxHQUFH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SSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM3QjtnQkFDRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjYW52YXNDb25maWdSZWFkb25seSB9IGZyb20gJy4uL2RpYWdyYW0tZHJhdy5zZXJ2aWNlJztcbmltcG9ydCB7IElDb29yZGluYXRlc0RpYWdyYW1TdmcsIElEYXRhRGlhZ3JhbUNvbmZpZ1N2ZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29vcmRpbmF0ZXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IElEaWFncmFtRWxlbWVudCwgSURpYWdyYW1FbGVtZW50QnJhbmNoIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9kaWFncmFtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBjaGVja01heExlZnQsIGdldERpc3RhbmNlRnJvbUJyYW5jaFRvRmlyc3RCbG9jaywgZ2V0SGVpZ2h0V2FpdENvbmZpZywgTW9MaWJEaWFncmFtQ2FsY3VsYXRvckNvb3JkaW5hdGVzVXRpbCB9IGZyb20gJy4vY2FsY3VsYXRvci1lbGVtZW50LnV0aWwnO1xuXG5leHBvcnQgY2xhc3MgTW9MaWJEaWFncmFtQ2FsY3VsYXRvckJyYW5jaFV0aWwge1xuICBzdGF0aWMgZHJhd1N0cmFpZ2h0TGluZShsZWZ0OiBudW1iZXIsIGxpbmVGb3JtRWxlbWVudFRvQnJhbmNoaW5nOiBudW1iZXIsIHRvcDogbnVtYmVyLCBicmFuY2g6IElEaWFncmFtRWxlbWVudEJyYW5jaCwgbWF4SGVpZ2h0QnJhbmNoOiBudW1iZXIsIGNvbmZpZzogSURhdGFEaWFncmFtQ29uZmlnU3ZnKSB7XG4gICAgY29uc3Qgc3RhcnREcmF3ID0gdG9wICsgbGluZUZvcm1FbGVtZW50VG9CcmFuY2hpbmc7XG4gICAgbGV0IEx5ID0gc3RhcnREcmF3O1xuXG4gICAgTHkgKz0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5FTEVNRU5UX0hFSUdIVF9DVVJWRTsgLy8gY2hp4buBdSBkw6BpIMSR4bq/biBlbGVtZW50IMSR4bqndSB0acOqblxuICAgIEx5ICs9IGdldERpc3RhbmNlRnJvbUJyYW5jaFRvRmlyc3RCbG9jayhicmFuY2gubm9kZU90aGVyQ29uZmlnKTsgLy8gY2hp4buBdSBkw6BpIMSR4bq/biBlbGVtZW50IMSR4bqndSB0acOqblxuICAgIGlmICghYnJhbmNoLmVsZW1lbnRzIHx8ICFicmFuY2guZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICBMeSArPSBtYXhIZWlnaHRCcmFuY2g7XG4gICAgICBMeSArPSAyMDsgLy8gdGjDqm0gxJFv4bqhbiBu4buRaSB04burIMSRaeG7g20ga+G6v3QgdGjDumMgbmjDoW5oIMSR4bq/biBo4bq/dFxuICAgIH1cblxuICAgIGNvbnN0IGNvb3JkMSA9IHtcbiAgICAgIG14OiBsZWZ0LFxuICAgICAgbXk6IHRvcCxcbiAgICAgIGx5OiBMeSxcbiAgICAgIGx4OiBsZWZ0LFxuICAgIH07XG5cbiAgICBicmFuY2guYXR0cmlidXRlU3ZnRCA9IGBNICR7Y29vcmQxLm14fSAke2Nvb3JkMS5teX0gTCAke2Nvb3JkMS5seH0gJHtjb29yZDEubHl9YDtcblxuICAgIGlmIChicmFuY2gubm9kZU90aGVyQ29uZmlnKSB7XG4gICAgICBjb25zdCBlbmRZVG9XYWl0ID0gc3RhcnREcmF3ICsgY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5FTEVNRU5UX0hFSUdIVF9DVVJWRSArIGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuRElTVEFOQ0VfVE9fV0FJVDtcbiAgICAgIGJyYW5jaC5hdHRyaWJ1dGVTdmdEID0gYE0gJHtjb29yZDEubXh9ICR7Y29vcmQxLm15fSBMICR7Y29vcmQxLm14fSAke2VuZFlUb1dhaXR9YDtcblxuICAgICAgY29uc3Qgd2FpdEhlaWdodCA9IGdldEhlaWdodFdhaXRDb25maWcoYnJhbmNoLm5vZGVPdGhlckNvbmZpZyk7XG4gICAgICBjb25zdCB0b3BTdGFydExpbmUyID0gZW5kWVRvV2FpdCArIHdhaXRIZWlnaHQ7XG5cbiAgICAgIGRlbGV0ZSBicmFuY2gubm9kZU90aGVyQ29uZmlnLmF0dHJpYnV0ZVN2Z0Q7XG4gICAgICBpZiAoYnJhbmNoLmVsZW1lbnRzICYmIGJyYW5jaC5lbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgYnJhbmNoLm5vZGVPdGhlckNvbmZpZy5hdHRyaWJ1dGVTdmdEID0gYE0gJHtjb29yZDEubXh9ICR7dG9wU3RhcnRMaW5lMn0gTCAke2Nvb3JkMS5teH0gJHtjb29yZDEubHl9YDtcbiAgICAgIH1cbiAgICAgIGJyYW5jaC5ub2RlT3RoZXJDb25maWcuc3BlY2lmaWNfeSA9IGVuZFlUb1dhaXQ7XG4gICAgICBicmFuY2gubm9kZU90aGVyQ29uZmlnLnNwZWNpZmljX3ggPSBjb29yZDEubXg7XG4gICAgfVxuXG4gICAgYnJhbmNoLnNwZWNpZmljX3N0YXJ0X2JyYW5jaF95ID0gdG9wICsgbGluZUZvcm1FbGVtZW50VG9CcmFuY2hpbmcgKyBjYW52YXNDb25maWdSZWFkb25seSgpLkVMRU1FTlRfSEVJR0hUX0NVUlZFO1xuICAgIGJyYW5jaC5zcGVjaWZpY19zdGFydF9icmFuY2hfeCA9IGxlZnQ7XG5cbiAgICBpZiAoIWJyYW5jaC5lbGVtZW50cyB8fCAhYnJhbmNoLmVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGhlaWdodFRvRWxlbWVudCA9IGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuRUxFTUVOVF9IRUlHSFRfQ1VSVkUgKyBnZXREaXN0YW5jZUZyb21CcmFuY2hUb0ZpcnN0QmxvY2soYnJhbmNoLm5vZGVPdGhlckNvbmZpZyk7IC8vIGNoaeG7gXUgZMOgaSDEkeG6v24gZWxlbWVudCDEkeG6p3UgdGnDqm47XG5cbiAgICBicmFuY2guZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudEJyYW5jaCkgPT4ge1xuICAgICAgZWxlbWVudEJyYW5jaC5zcGVjaWZpY195ID0gdG9wICsgbGluZUZvcm1FbGVtZW50VG9CcmFuY2hpbmcgKyBoZWlnaHRUb0VsZW1lbnQ7XG4gICAgICBlbGVtZW50QnJhbmNoLnNwZWNpZmljX3ggPSBsZWZ0IC0gKGVsZW1lbnRCcmFuY2guc3BlY2lmaWNfd2lkdGggPz8gMCkgLyAyO1xuICAgIH0pO1xuICAgIE1vTGliRGlhZ3JhbUNhbGN1bGF0b3JDb29yZGluYXRlc1V0aWwuc2V0WFlFbGVtZW50cyhicmFuY2guZWxlbWVudHMsIGNvbmZpZyk7XG4gIH1cblxuICBzdGF0aWMgbGVmdExpbmUobGVmdDogbnVtYmVyLCBsaW5lRm9ybUVsZW1lbnRUb0JyYW5jaGluZzogbnVtYmVyLCB0b3A6IG51bWJlciwgbGluZUJldHdlZW5CcmFuY2g6IG51bWJlciwgYnJhbmNoOiBJRGlhZ3JhbUVsZW1lbnRCcmFuY2gsIG1heEhlaWdodEJyYW5jaDogbnVtYmVyLCBlbGVtZW50OiBJRGlhZ3JhbUVsZW1lbnQsIGNvbmZpZzogSURhdGFEaWFncmFtQ29uZmlnU3ZnKSB7XG4gICAgY29uc3QgeyBjb29yZFFMMiwgaXNDaGVja0FsbEVsZW1lbnRDb25uZWN0VG9FeGl0IH0gPSB0aGlzLmRyYXdBYm92ZVVuZGVyTGluZShsZWZ0LCBsaW5lRm9ybUVsZW1lbnRUb0JyYW5jaGluZywgdG9wLCBsaW5lQmV0d2VlbkJyYW5jaCwgYnJhbmNoLCBtYXhIZWlnaHRCcmFuY2gsICdsZWZ0JywgY29uZmlnKTtcbiAgICBicmFuY2guc3BlY2lmaWNfc3RhcnRfYnJhbmNoX3ggPSBjb29yZFFMMi54O1xuICAgIGJyYW5jaC5zcGVjaWZpY19zdGFydF9icmFuY2hfeSA9IGNvb3JkUUwyLnk7XG4gICAgaWYgKCFicmFuY2guZWxlbWVudHMgfHwgIWJyYW5jaC5lbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRyYXdFbGVtZW50SW5CcmFuY2hMaW5lKGJyYW5jaCwgY29vcmRRTDIsIGNvbmZpZyk7XG4gICAgaWYgKGlzQ2hlY2tBbGxFbGVtZW50Q29ubmVjdFRvRXhpdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyByaWdodExpbmUobGVmdDogbnVtYmVyLCBsaW5lRm9ybUVsZW1lbnRUb0JyYW5jaGluZzogbnVtYmVyLCB0b3A6IG51bWJlciwgbGluZUJldHdlZW5CcmFuY2g6IG51bWJlciwgYnJhbmNoOiBJRGlhZ3JhbUVsZW1lbnRCcmFuY2gsIG1heEhlaWdodEJyYW5jaDogbnVtYmVyLCBlbGVtZW50OiBJRGlhZ3JhbUVsZW1lbnQsIGNvbmZpZzogSURhdGFEaWFncmFtQ29uZmlnU3ZnKSB7XG4gICAgY29uc3QgeyBjb29yZFFMMSwgY29vcmRRTDIsIGlzQ2hlY2tBbGxFbGVtZW50Q29ubmVjdFRvRXhpdCB9ID0gdGhpcy5kcmF3QWJvdmVVbmRlckxpbmUobGVmdCwgbGluZUZvcm1FbGVtZW50VG9CcmFuY2hpbmcsIHRvcCwgbGluZUJldHdlZW5CcmFuY2gsIGJyYW5jaCwgbWF4SGVpZ2h0QnJhbmNoLCAncmlnaHQnLCBjb25maWcpO1xuXG4gICAgYnJhbmNoLnNwZWNpZmljX3N0YXJ0X2JyYW5jaF94ID0gY29vcmRRTDIueDtcbiAgICBicmFuY2guc3BlY2lmaWNfc3RhcnRfYnJhbmNoX3kgPSBjb29yZFFMMi55O1xuICAgIGNvbnN0IG1heFkgPSAoY29vcmRRTDEueSA/PyAwKSArIDIwMDtcbiAgICBjb25zdCBjb25maWdTdmcgPSBjb25maWcud2lkdGhIZWlnaHRTdmdDYW52YXM7XG5cbiAgICBjb25maWdTdmcuaGVpZ2h0U3ZnID0gbWF4WSA+IGNvbmZpZ1N2Zy5oZWlnaHRTdmcgPyBtYXhZIDogY29uZmlnU3ZnLmhlaWdodFN2ZztcblxuICAgIGlmICghYnJhbmNoLmVsZW1lbnRzIHx8ICFicmFuY2guZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZHJhd0VsZW1lbnRJbkJyYW5jaExpbmUoYnJhbmNoLCBjb29yZFFMMiwgY29uZmlnKTtcbiAgICBpZiAoaXNDaGVja0FsbEVsZW1lbnRDb25uZWN0VG9FeGl0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGRyYXdFbGVtZW50SW5CcmFuY2hMaW5lKGJyYW5jaDogSURpYWdyYW1FbGVtZW50QnJhbmNoLCBjb29yZFFMMjogSUNvb3JkaW5hdGVzRGlhZ3JhbVN2ZywgY29uZmlnOiBJRGF0YURpYWdyYW1Db25maWdTdmcpIHtcbiAgICBjb25zdCB0b3BFbGVtZW50SW5CcmFuY2ggPSBjb29yZFFMMi5seTsgLy8gYuG6r3QgxJHhuqd1IGPhu6dhIDEgZW1lbGVudCB0cm9uZyBuaMOhbmggc+G6vSBsw6AgxJFp4buDbSBjdeG7kWkgY8O5bmcgY+G7p2EgbmjDoW5oIHRy4buPIHThu5tpXG5cbiAgICBjb25zdCBlbGVtZW50Rmlyc3QgPSBicmFuY2guZWxlbWVudHNbMF07XG5cbiAgICBlbGVtZW50Rmlyc3Quc3BlY2lmaWNfeSA9IHRvcEVsZW1lbnRJbkJyYW5jaDtcbiAgICBlbGVtZW50Rmlyc3Quc3BlY2lmaWNfeCA9IChjb29yZFFMMi5seCA/PyAwKSAtIChlbGVtZW50Rmlyc3Quc3BlY2lmaWNfd2lkdGggPz8gMCkgLyAyO1xuICAgIE1vTGliRGlhZ3JhbUNhbGN1bGF0b3JDb29yZGluYXRlc1V0aWwuc2V0WFlFbGVtZW50cyhicmFuY2guZWxlbWVudHMsIGNvbmZpZyk7XG4gIH1cblxuICBzdGF0aWMgZHJhd01pc3NpbmdMaW5lRnJvbUxhc3RFbGVtZW50KGJyYW5jaDogSURpYWdyYW1FbGVtZW50QnJhbmNoLCBjb29yZFEzOiBJQ29vcmRpbmF0ZXNEaWFncmFtU3ZnKSB7XG4gICAgY29uc3QgeyBteCwgbXkgfSA9IGNvb3JkUTM7XG5cbiAgICBpZiAoIW15KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGxhc3RFbGVtZW50SW5CcmFuY2ggPSBicmFuY2guZWxlbWVudHNbYnJhbmNoLmVsZW1lbnRzLmxlbmd0aCAtIDFdO1xuXG4gICAgaWYgKCFsYXN0RWxlbWVudEluQnJhbmNoLmJyYW5jaGVzPy5sZW5ndGgpIHtcbiAgICAgIGJyYW5jaC5hdHRyaWJ1dGVTdmdEID0gYCR7YnJhbmNoLmF0dHJpYnV0ZVN2Z0R9IE0gJHtteH0gJHtteX0gTCAke214fSAke2xhc3RFbGVtZW50SW5CcmFuY2gucG9zaXRpb25fZW5kID8/IDB9YDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbHkgPSAobGFzdEVsZW1lbnRJbkJyYW5jaC5wb3NpdGlvbl9lbmRfYnJhbmNoID8/IDApIC0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5FTEVNRU5UX0hFSUdIVF9DVVJWRTtcblxuICAgIGlmIChseSA9PT0gbXkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYnJhbmNoLmF0dHJpYnV0ZVN2Z0QgPSBgJHticmFuY2guYXR0cmlidXRlU3ZnRH0gTSAke214fSAke215fSBMICR7bXh9ICR7bHl9YDtcbiAgfVxuXG4gIHN0YXRpYyBkcmF3QWJvdmVVbmRlckxpbmUobGVmdDogbnVtYmVyLCBsaW5lRm9ybUVsZW1lbnRUb0JyYW5jaGluZzogbnVtYmVyLCB0b3A6IG51bWJlciwgbGluZUJldHdlZW5CcmFuY2g6IG51bWJlciwgYnJhbmNoOiBJRGlhZ3JhbUVsZW1lbnRCcmFuY2gsIG1heEhlaWdodEJyYW5jaDogbnVtYmVyLCBkaXJlY3Rpb246ICdsZWZ0JyB8ICdyaWdodCcsIGNvbmZpZzogSURhdGFEaWFncmFtQ29uZmlnU3ZnKSB7XG4gICAgY29uc3QgTSA9IGBNICR7bGVmdH0gJHt0b3B9YDsgLy8gxJHhurd0IGLDunQgduG6vSB04burIMSRaeG7g20geCwgeVxuICAgIGNvbnN0IEx5ID0gdG9wICsgbGluZUZvcm1FbGVtZW50VG9CcmFuY2hpbmcgLSBjYW52YXNDb25maWdSZWFkb25seSgpLkVMRU1FTlRfSEVJR0hUX0NVUlZFO1xuICAgIGNvbnN0IEwgPSBgTCAke2xlZnR9ICR7THl9YDsgLy8gS8OpbyBkw6BpIDEgxJHGsOG7nW5nIHRo4bqzbmcgdOG7m2kgWCwgWSxcbiAgICBjb25zdCBzdHJhaWdodExpbmVCZXR3ZWVuQnJhbmNoID0gbGluZUJldHdlZW5CcmFuY2ggLSBjYW52YXNDb25maWdSZWFkb25seSgpLkVMRU1FTlRfSEVJR0hUX0NVUlZFICogMjtcblxuICAgIGNvbnN0IGNvb3JkUUwxOiBJQ29vcmRpbmF0ZXNEaWFncmFtU3ZnID0ge1xuICAgICAgLy8gxJFp4buDbSBjb25nIHPhu5EgMSBj4bunYSBuaMOhbmggdsOgIMSRxrDhu51uZyB0aOG6s25nIGvDqW8gdHLDqm4gZMaw4bubaVxuICAgICAgbXg6IGxlZnQsXG4gICAgICBteTogTHksXG4gICAgICB4MTogbGVmdCxcbiAgICAgIHkxOiBMeSArIGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuRUxFTUVOVF9IRUlHSFRfQ1VSVkUsXG4gICAgICB4OiB0aGlzLm1hdGhPcGVyYXRvcnNDYWxjdWxhdGlvbihkaXJlY3Rpb24sIGxlZnQsIGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuRUxFTUVOVF9IRUlHSFRfQ1VSVkUsIHRydWUpLFxuICAgICAgeTogTHkgKyBjYW52YXNDb25maWdSZWFkb25seSgpLkVMRU1FTlRfSEVJR0hUX0NVUlZFLFxuICAgIH07XG5cbiAgICBjb29yZFFMMS5seSA9IGNvb3JkUUwxLnk7XG4gICAgLy8gxJFv4bqhbiB0aOG6s25nIGvDqW8gZMOgaSBsaW5lQmV0d2VlbkJyYW5jaCBwaOG6o2kgdHLhu6sgxJFpIGhhaSDEkeG6p3UgY29uZ1xuICAgIGNvb3JkUUwxLmx4ID0gdGhpcy5tYXRoT3BlcmF0b3JzQ2FsY3VsYXRpb24oZGlyZWN0aW9uLCBjb29yZFFMMS54LCBzdHJhaWdodExpbmVCZXR3ZWVuQnJhbmNoLCB0cnVlKTtcbiAgICBjb25zdCBRTDEgPSBgTSAke2Nvb3JkUUwxLm14fSwke2Nvb3JkUUwxLm15fSBRICR7Y29vcmRRTDEueDF9LCR7Y29vcmRRTDEueTF9ICR7Y29vcmRRTDEueH0sJHtjb29yZFFMMS55fSBMICR7Y29vcmRRTDEubHh9ICR7Y29vcmRRTDEubHl9YDtcblxuICAgIGNvbnN0IGNvb3JkUUwyOiBJQ29vcmRpbmF0ZXNEaWFncmFtU3ZnID0ge1xuICAgICAgLy8gxJFp4buDbSBjb25nIHPhu5EgMiBj4bunYSBuaMOhbmggdsOgIMSRxrDhu51uZyB0aOG6s25nIMSR4bupbmdcbiAgICAgIHkxOiBjb29yZFFMMS5seSxcbiAgICAgIHgxOiB0aGlzLm1hdGhPcGVyYXRvcnNDYWxjdWxhdGlvbihkaXJlY3Rpb24sIGNvb3JkUUwxLmx4LCBjYW52YXNDb25maWdSZWFkb25seSgpLkVMRU1FTlRfSEVJR0hUX0NVUlZFLCB0cnVlKSxcbiAgICAgIHk6IChjb29yZFFMMS5seSA/PyAwKSArIGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuRUxFTUVOVF9IRUlHSFRfQ1VSVkUsXG4gICAgICB4OiB0aGlzLm1hdGhPcGVyYXRvcnNDYWxjdWxhdGlvbihkaXJlY3Rpb24sIGNvb3JkUUwxLmx4LCBjYW52YXNDb25maWdSZWFkb25seSgpLkVMRU1FTlRfSEVJR0hUX0NVUlZFLCB0cnVlKSxcbiAgICB9O1xuXG4gICAgY29vcmRRTDIubHkgPSAoY29vcmRRTDIueSA/PyAwKSArIGdldERpc3RhbmNlRnJvbUJyYW5jaFRvRmlyc3RCbG9jayhicmFuY2gubm9kZU90aGVyQ29uZmlnKTtcbiAgICBjb29yZFFMMi5seCA9IGNvb3JkUUwyLng7XG5cbiAgICBpZiAoIWJyYW5jaC5lbGVtZW50cyB8fCAhYnJhbmNoLmVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgY29vcmRRTDIubHkgPSBtYXhIZWlnaHRCcmFuY2ggKyAoY29vcmRRTDIubHkgPz8gMCk7IC8vIHThu5VuZyBjaGnhu4F1IGNhbyBj4bunYSBuaMOhbmggKyDEkWnhu4NtIHh14bqldCBwaMOhdFxuICAgIH1cbiAgICBsZXQgUUwyID0gYFEgJHtjb29yZFFMMi54MX0sJHtjb29yZFFMMi55MX0gJHtjb29yZFFMMi54fSwke2Nvb3JkUUwyLnl9IEwgJHtjb29yZFFMMi5seH0gJHtjb29yZFFMMi5seX1gO1xuXG4gICAgaWYgKGJyYW5jaC5ub2RlT3RoZXJDb25maWcpIHtcbiAgICAgIGNvbnN0IGVuZFlUb1dhaXQgPSAoY29vcmRRTDIueSA/PyAwKSArIGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuRElTVEFOQ0VfVE9fV0FJVDsgLy8geOG7rSBsw70gY8OhYyBsaW5lIHbDoG8gZmlyc3QgZWxlbWVudFxuICAgICAgY29uc3Qgd2FpdEhlaWdodCA9IGdldEhlaWdodFdhaXRDb25maWcoYnJhbmNoLm5vZGVPdGhlckNvbmZpZyk7XG4gICAgICBjb25zdCB0b3BTdGFydExpbmUyID0gZW5kWVRvV2FpdCArIHdhaXRIZWlnaHQ7XG5cbiAgICAgIGRlbGV0ZSBicmFuY2gubm9kZU90aGVyQ29uZmlnLmF0dHJpYnV0ZVN2Z0Q7XG4gICAgICBRTDIgPSBgUSAke2Nvb3JkUUwyLngxfSwke2Nvb3JkUUwyLnkxfSAke2Nvb3JkUUwyLnh9LCR7Y29vcmRRTDIueX0gTSAke2Nvb3JkUUwyLnh9LCR7Y29vcmRRTDIueX0gTCAke2Nvb3JkUUwyLnh9LCR7ZW5kWVRvV2FpdH1gO1xuICAgICAgaWYgKGJyYW5jaC5lbGVtZW50cyAmJiBicmFuY2guZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgIGJyYW5jaC5ub2RlT3RoZXJDb25maWcuYXR0cmlidXRlU3ZnRCA9IGBNICR7Y29vcmRRTDIueH0gJHt0b3BTdGFydExpbmUyfSBMICR7Y29vcmRRTDIueH0gJHtjb29yZFFMMi5seX1gO1xuICAgICAgfVxuICAgICAgYnJhbmNoLm5vZGVPdGhlckNvbmZpZy5zcGVjaWZpY195ID0gZW5kWVRvV2FpdDtcbiAgICAgIGJyYW5jaC5ub2RlT3RoZXJDb25maWcuc3BlY2lmaWNfeCA9IGNvb3JkUUwyLng7XG4gICAgfVxuXG4gICAgYnJhbmNoLnBvc2l0aW9uTWF4TGVmdCA9IGNvb3JkUUwyLmx4O1xuICAgIGJyYW5jaC5hdHRyaWJ1dGVTdmdEID0gYCR7TX0gJHtMfSAke1FMMX0gJHtRTDJ9YDtcbiAgICBjb25zdCBpc0NoZWNrQWxsRWxlbWVudENvbm5lY3RUb0V4aXQgPSB0aGlzLmNoZWNrQ2hpbGRyZW5Db25uZWN0VG9FeGl0KGJyYW5jaC5lbGVtZW50cyk7XG4gICAgY2hlY2tNYXhMZWZ0KGNvbmZpZywgYnJhbmNoLm5vZGVPdGhlckNvbmZpZz8uc3BlY2lmaWNfeCwgYnJhbmNoLnBvc2l0aW9uTWF4TGVmdCk7XG5cbiAgICByZXR1cm4geyBjb29yZFFMMSwgY29vcmRRTDIsIGlzQ2hlY2tBbGxFbGVtZW50Q29ubmVjdFRvRXhpdCB9O1xuICB9XG5cbiAgc3RhdGljIGNoZWNrQ2hpbGRyZW5Db25uZWN0VG9FeGl0KGVsZW1lbnRzOiBJRGlhZ3JhbUVsZW1lbnRbXSkge1xuICAgIGxldCB0b0V4aXQgPSBmYWxzZTtcblxuICAgIGlmIChlbGVtZW50cy5sZW5ndGggJiYgKGVsZW1lbnRzW2VsZW1lbnRzLmxlbmd0aCAtIDFdLnN1YkNvZGVPZkVsZW1lbnQgfHwgZWxlbWVudHNbZWxlbWVudHMubGVuZ3RoIC0gMV0uY29kZSkgPT09IGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuVFlQRV9FTEVNRU5UX0VYSVQpIHtcbiAgICAgIHRvRXhpdCA9IHRydWU7XG5cbiAgICAgIHJldHVybiB0b0V4aXQ7XG4gICAgfVxuICAgIGVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgIGlmICghZWxlbWVudC5icmFuY2hlcyB8fCAhZWxlbWVudC5icmFuY2hlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbGV0IGJyYW5jaENvbm5lY3RUb0V4aXQgPSAwO1xuXG4gICAgICBlbGVtZW50LmJyYW5jaGVzLmZvckVhY2goKGJyYW5jaCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jaGVja0NoaWxkcmVuQ29ubmVjdFRvRXhpdChicmFuY2guZWxlbWVudHMpKSB7XG4gICAgICAgICAgYnJhbmNoQ29ubmVjdFRvRXhpdCsrO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmIChicmFuY2hDb25uZWN0VG9FeGl0ID09PSBlbGVtZW50LmJyYW5jaGVzLmxlbmd0aCkge1xuICAgICAgICB0b0V4aXQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRvRXhpdDtcbiAgfVxuXG4gIC8qIGFib3ZlLCBsZWZ0IGEgKyBiOyBvcHBvc2l0ZSA9IHRydWUgYSAtIGI7IFxuICAgIHVuZGVyLCByaWdodCBhIC0gYjsgb3Bwb3NpdGUgPSB0cnVlIGEgKyBiXG4gICovXG4gIHN0YXRpYyBtYXRoT3BlcmF0b3JzQ2FsY3VsYXRpb24oZGlyZWN0aW9uOiAnbGVmdCcgfCAncmlnaHQnIHwgJ2Fib3ZlJyB8ICd1bmRlcicgfCBzdHJpbmcsIGE6IG51bWJlciB8IHVuZGVmaW5lZCwgYjogbnVtYmVyIHwgdW5kZWZpbmVkLCBvcHBvc2l0ZT86IGJvb2xlYW4pIHtcbiAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICBjYXNlICdhYm92ZSc6XG4gICAgICAgIGlmIChvcHBvc2l0ZSkge1xuICAgICAgICAgIHJldHVybiAoYSA/PyAwKSAtIChiID8/IDApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChhID8/IDApICsgKGIgPz8gMCk7XG5cbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgIGNhc2UgJ3VuZGVyJzpcbiAgICAgICAgaWYgKG9wcG9zaXRlKSB7XG4gICAgICAgICAgcmV0dXJuIChhID8/IDApICsgKGIgPz8gMCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKGEgPz8gMCkgLSAoYiA/PyAwKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAoYSA/PyAwKSAtIChiID8/IDApO1xuICAgIH1cbiAgfVxufVxuIl19
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRvci1icmFuY2gudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvZGlhZ3JhbS1kcmF3L3NyYy91dGlscy9jYWxjdWxhdG9yLWJyYW5jaC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsaUNBQWlDLEVBQUUsbUJBQW1CLEVBQUUscUNBQXFDLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV4SixNQUFNLE9BQU8sZ0NBQWdDO0lBQzNDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFZLEVBQUUsMEJBQWtDLEVBQUUsR0FBVyxFQUFFLE1BQTZCLEVBQUUsZUFBdUIsRUFBRSxNQUE2QjtRQUMxSyxNQUFNLFNBQVMsR0FBRyxHQUFHLEdBQUcsMEJBQTBCLENBQUM7UUFDbkQsSUFBSSxFQUFFLEdBQUcsU0FBUyxDQUFDO1FBRW5CLEVBQUUsSUFBSSxvQkFBb0IsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUMsaUNBQWlDO1FBQ3BGLEVBQUUsSUFBSSxpQ0FBaUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxpQ0FBaUM7UUFDbEcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDN0IsRUFBRSxJQUFJLGVBQWUsQ0FBQztZQUN0QixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsK0NBQStDO1FBQzNELENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRztZQUNiLEVBQUUsRUFBRSxJQUFJO1lBQ1IsRUFBRSxFQUFFLEdBQUc7WUFDUCxFQUFFLEVBQUUsRUFBRTtZQUNOLEVBQUUsRUFBRSxJQUFJO1NBQ1QsQ0FBQztRQUVGLE1BQU0sQ0FBQyxhQUFhLEdBQUcsS0FBSyxNQUFNLENBQUMsRUFBRSxJQUFJ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Z1JlYWRvbmx5IH0gZnJvbSAnLi4vZGlhZ3JhbS1kcmF3LnNlcnZpY2UnO1xuaW1wb3J0IHsgSUNvb3JkaW5hdGVzRGlhZ3JhbVN2ZywgSURhdGFEaWFncmFtQ29uZmlnU3ZnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb29yZGluYXRlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSURpYWdyYW1FbGVtZW50LCBJRGlhZ3JhbUVsZW1lbnRCcmFuY2ggfSBmcm9tICcuLi9pbnRlcmZhY2VzL2RpYWdyYW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IGNoZWNrTWF4TGVmdCwgZ2V0RGlzdGFuY2VGcm9tQnJhbmNoVG9GaXJzdEJsb2NrLCBnZXRIZWlnaHRXYWl0Q29uZmlnLCBNb0xpYkRpYWdyYW1DYWxjdWxhdG9yQ29vcmRpbmF0ZXNVdGlsIH0gZnJvbSAnLi9jYWxjdWxhdG9yLWVsZW1lbnQudXRpbCc7XG5cbmV4cG9ydCBjbGFzcyBNb0xpYkRpYWdyYW1DYWxjdWxhdG9yQnJhbmNoVXRpbCB7XG4gIHN0YXRpYyBkcmF3U3RyYWlnaHRMaW5lKGxlZnQ6IG51bWJlciwgbGluZUZvcm1FbGVtZW50VG9CcmFuY2hpbmc6IG51bWJlciwgdG9wOiBudW1iZXIsIGJyYW5jaDogSURpYWdyYW1FbGVtZW50QnJhbmNoLCBtYXhIZWlnaHRCcmFuY2g6IG51bWJlciwgY29uZmlnOiBJRGF0YURpYWdyYW1Db25maWdTdmcpIHtcbiAgICBjb25zdCBzdGFydERyYXcgPSB0b3AgKyBsaW5lRm9ybUVsZW1lbnRUb0JyYW5jaGluZztcbiAgICBsZXQgTHkgPSBzdGFydERyYXc7XG5cbiAgICBMeSArPSBjYW52YXNDb25maWdSZWFkb25seSgpLkVMRU1FTlRfSEVJR0hUX0NVUlZFOyAvLyBjaGnhu4F1IGTDoGkgxJHhur9uIGVsZW1lbnQgxJHhuqd1IHRpw6puXG4gICAgTHkgKz0gZ2V0RGlzdGFuY2VGcm9tQnJhbmNoVG9GaXJzdEJsb2NrKGJyYW5jaC5ub2RlT3RoZXJDb25maWcpOyAvLyBjaGnhu4F1IGTDoGkgxJHhur9uIGVsZW1lbnQgxJHhuqd1IHRpw6puXG4gICAgaWYgKCFicmFuY2guZWxlbWVudHM/Lmxlbmd0aCkge1xuICAgICAgTHkgKz0gbWF4SGVpZ2h0QnJhbmNoO1xuICAgICAgTHkgKz0gMjA7IC8vIHRow6ptIMSRb+G6oW4gbuG7kWkgdOG7qyDEkWnhu4NtIGvhur90IHRow7pjIG5ow6FuaCDEkeG6v24gaOG6v3RcbiAgICB9XG5cbiAgICBjb25zdCBjb29yZDEgPSB7XG4gICAgICBteDogbGVmdCxcbiAgICAgIG15OiB0b3AsXG4gICAgICBseTogTHksXG4gICAgICBseDogbGVmdCxcbiAgICB9O1xuXG4gICAgYnJhbmNoLmF0dHJpYnV0ZVN2Z0QgPSBgTSAke2Nvb3JkMS5teH0gJHtjb29yZDEubXl9IEwgJHtjb29yZDEubHh9ICR7Y29vcmQxLmx5fWA7XG5cbiAgICBpZiAoYnJhbmNoLm5vZGVPdGhlckNvbmZpZykge1xuICAgICAgY29uc3QgZW5kWVRvV2FpdCA9IHN0YXJ0RHJhdyArIGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuRUxFTUVOVF9IRUlHSFRfQ1VSVkUgKyBjYW52YXNDb25maWdSZWFkb25seSgpLkRJU1RBTkNFX1RPX1dBSVQ7XG4gICAgICBicmFuY2guYXR0cmlidXRlU3ZnRCA9IGBNICR7Y29vcmQxLm14fSAke2Nvb3JkMS5teX0gTCAke2Nvb3JkMS5teH0gJHtlbmRZVG9XYWl0fWA7XG5cbiAgICAgIGNvbnN0IHdhaXRIZWlnaHQgPSBnZXRIZWlnaHRXYWl0Q29uZmlnKGJyYW5jaC5ub2RlT3RoZXJDb25maWcpO1xuICAgICAgY29uc3QgdG9wU3RhcnRMaW5lMiA9IGVuZFlUb1dhaXQgKyB3YWl0SGVpZ2h0O1xuXG4gICAgICBkZWxldGUgYnJhbmNoLm5vZGVPdGhlckNvbmZpZy5hdHRyaWJ1dGVTdmdEO1xuICAgICAgaWYgKGJyYW5jaC5lbGVtZW50cz8ubGVuZ3RoKSB7XG4gICAgICAgIGJyYW5jaC5ub2RlT3RoZXJDb25maWcuYXR0cmlidXRlU3ZnRCA9IGBNICR7Y29vcmQxLm14fSAke3RvcFN0YXJ0TGluZTJ9IEwgJHtjb29yZDEubXh9ICR7Y29vcmQxLmx5fWA7XG4gICAgICB9XG4gICAgICBicmFuY2gubm9kZU90aGVyQ29uZmlnLnNwZWNpZmljX3kgPSBlbmRZVG9XYWl0O1xuICAgICAgYnJhbmNoLm5vZGVPdGhlckNvbmZpZy5zcGVjaWZpY194ID0gY29vcmQxLm14O1xuICAgIH1cblxuICAgIGJyYW5jaC5zcGVjaWZpY19zdGFydF9icmFuY2hfeSA9IHRvcCArIGxpbmVGb3JtRWxlbWVudFRvQnJhbmNoaW5nICsgY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5FTEVNRU5UX0hFSUdIVF9DVVJWRTtcbiAgICBicmFuY2guc3BlY2lmaWNfc3RhcnRfYnJhbmNoX3ggPSBsZWZ0O1xuXG4gICAgaWYgKCFicmFuY2guZWxlbWVudHM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGhlaWdodFRvRWxlbWVudCA9IGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuRUxFTUVOVF9IRUlHSFRfQ1VSVkUgKyBnZXREaXN0YW5jZUZyb21CcmFuY2hUb0ZpcnN0QmxvY2soYnJhbmNoLm5vZGVPdGhlckNvbmZpZyk7IC8vIGNoaeG7gXUgZMOgaSDEkeG6v24gZWxlbWVudCDEkeG6p3UgdGnDqm47XG5cbiAgICBicmFuY2guZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudEJyYW5jaCkgPT4ge1xuICAgICAgZWxlbWVudEJyYW5jaC5zcGVjaWZpY195ID0gdG9wICsgbGluZUZvcm1FbGVtZW50VG9CcmFuY2hpbmcgKyBoZWlnaHRUb0VsZW1lbnQ7XG4gICAgICBlbGVtZW50QnJhbmNoLnNwZWNpZmljX3ggPSBsZWZ0IC0gKGVsZW1lbnRCcmFuY2guc3BlY2lmaWNfd2lkdGggPz8gMCkgLyAyO1xuICAgIH0pO1xuICAgIE1vTGliRGlhZ3JhbUNhbGN1bGF0b3JDb29yZGluYXRlc1V0aWwuc2V0WFlFbGVtZW50cyhicmFuY2guZWxlbWVudHMsIGNvbmZpZyk7XG4gIH1cblxuICBzdGF0aWMgbGVmdExpbmUobGVmdDogbnVtYmVyLCBsaW5lRm9ybUVsZW1lbnRUb0JyYW5jaGluZzogbnVtYmVyLCB0b3A6IG51bWJlciwgbGluZUJldHdlZW5CcmFuY2g6IG51bWJlciwgYnJhbmNoOiBJRGlhZ3JhbUVsZW1lbnRCcmFuY2gsIG1heEhlaWdodEJyYW5jaDogbnVtYmVyLCBlbGVtZW50OiBJRGlhZ3JhbUVsZW1lbnQsIGNvbmZpZzogSURhdGFEaWFncmFtQ29uZmlnU3ZnKSB7XG4gICAgY29uc3QgeyBjb29yZFFMMiwgaXNDaGVja0FsbEVsZW1lbnRDb25uZWN0VG9FeGl0IH0gPSB0aGlzLmRyYXdBYm92ZVVuZGVyTGluZShsZWZ0LCBsaW5lRm9ybUVsZW1lbnRUb0JyYW5jaGluZywgdG9wLCBsaW5lQmV0d2VlbkJyYW5jaCwgYnJhbmNoLCBtYXhIZWlnaHRCcmFuY2gsICdsZWZ0JywgY29uZmlnKTtcbiAgICBicmFuY2guc3BlY2lmaWNfc3RhcnRfYnJhbmNoX3ggPSBjb29yZFFMMi54O1xuICAgIGJyYW5jaC5zcGVjaWZpY19zdGFydF9icmFuY2hfeSA9IGNvb3JkUUwyLnk7XG4gICAgaWYgKCFicmFuY2guZWxlbWVudHM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZHJhd0VsZW1lbnRJbkJyYW5jaExpbmUoYnJhbmNoLCBjb29yZFFMMiwgY29uZmlnKTtcbiAgICBpZiAoaXNDaGVja0FsbEVsZW1lbnRDb25uZWN0VG9FeGl0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIHJpZ2h0TGluZShsZWZ0OiBudW1iZXIsIGxpbmVGb3JtRWxlbWVudFRvQnJhbmNoaW5nOiBudW1iZXIsIHRvcDogbnVtYmVyLCBsaW5lQmV0d2VlbkJyYW5jaDogbnVtYmVyLCBicmFuY2g6IElEaWFncmFtRWxlbWVudEJyYW5jaCwgbWF4SGVpZ2h0QnJhbmNoOiBudW1iZXIsIGVsZW1lbnQ6IElEaWFncmFtRWxlbWVudCwgY29uZmlnOiBJRGF0YURpYWdyYW1Db25maWdTdmcpIHtcbiAgICBjb25zdCB7IGNvb3JkUUwxLCBjb29yZFFMMiwgaXNDaGVja0FsbEVsZW1lbnRDb25uZWN0VG9FeGl0IH0gPSB0aGlzLmRyYXdBYm92ZVVuZGVyTGluZShsZWZ0LCBsaW5lRm9ybUVsZW1lbnRUb0JyYW5jaGluZywgdG9wLCBsaW5lQmV0d2VlbkJyYW5jaCwgYnJhbmNoLCBtYXhIZWlnaHRCcmFuY2gsICdyaWdodCcsIGNvbmZpZyk7XG5cbiAgICBicmFuY2guc3BlY2lmaWNfc3RhcnRfYnJhbmNoX3ggPSBjb29yZFFMMi54O1xuICAgIGJyYW5jaC5zcGVjaWZpY19zdGFydF9icmFuY2hfeSA9IGNvb3JkUUwyLnk7XG4gICAgY29uc3QgbWF4WSA9IChjb29yZFFMMS55ID8/IDApICsgMjAwO1xuICAgIGNvbnN0IGNvbmZpZ1N2ZyA9IGNvbmZpZy53aWR0aEhlaWdodFN2Z0NhbnZhcztcblxuICAgIGNvbmZpZ1N2Zy5oZWlnaHRTdmcgPSBtYXhZID4gY29uZmlnU3ZnLmhlaWdodFN2ZyA/IG1heFkgOiBjb25maWdTdmcuaGVpZ2h0U3ZnO1xuXG4gICAgaWYgKCFicmFuY2guZWxlbWVudHM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRyYXdFbGVtZW50SW5CcmFuY2hMaW5lKGJyYW5jaCwgY29vcmRRTDIsIGNvbmZpZyk7XG4gICAgaWYgKGlzQ2hlY2tBbGxFbGVtZW50Q29ubmVjdFRvRXhpdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBkcmF3RWxlbWVudEluQnJhbmNoTGluZShicmFuY2g6IElEaWFncmFtRWxlbWVudEJyYW5jaCwgY29vcmRRTDI6IElDb29yZGluYXRlc0RpYWdyYW1TdmcsIGNvbmZpZzogSURhdGFEaWFncmFtQ29uZmlnU3ZnKSB7XG4gICAgY29uc3QgdG9wRWxlbWVudEluQnJhbmNoID0gY29vcmRRTDIubHk7IC8vIGLhuq90IMSR4bqndSBj4bunYSAxIGVtZWxlbnQgdHJvbmcgbmjDoW5oIHPhur0gbMOgIMSRaeG7g20gY3Xhu5FpIGPDuW5nIGPhu6dhIG5ow6FuaCB0cuG7jyB04bubaVxuXG4gICAgY29uc3QgZWxlbWVudEZpcnN0ID0gYnJhbmNoLmVsZW1lbnRzWzBdO1xuXG4gICAgZWxlbWVudEZpcnN0LnNwZWNpZmljX3kgPSB0b3BFbGVtZW50SW5CcmFuY2g7XG4gICAgZWxlbWVudEZpcnN0LnNwZWNpZmljX3ggPSAoY29vcmRRTDIubHggPz8gMCkgLSAoZWxlbWVudEZpcnN0LnNwZWNpZmljX3dpZHRoID8/IDApIC8gMjtcbiAgICBNb0xpYkRpYWdyYW1DYWxjdWxhdG9yQ29vcmRpbmF0ZXNVdGlsLnNldFhZRWxlbWVudHMoYnJhbmNoLmVsZW1lbnRzLCBjb25maWcpO1xuICB9XG5cbiAgc3RhdGljIGRyYXdNaXNzaW5nTGluZUZyb21MYXN0RWxlbWVudChicmFuY2g6IElEaWFncmFtRWxlbWVudEJyYW5jaCwgY29vcmRRMzogSUNvb3JkaW5hdGVzRGlhZ3JhbVN2Zykge1xuICAgIGNvbnN0IHsgbXgsIG15IH0gPSBjb29yZFEzO1xuXG4gICAgaWYgKCFteSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBsYXN0RWxlbWVudEluQnJhbmNoID0gYnJhbmNoLmVsZW1lbnRzW2JyYW5jaC5lbGVtZW50cy5sZW5ndGggLSAxXTtcblxuICAgIGlmICghbGFzdEVsZW1lbnRJbkJyYW5jaC5icmFuY2hlcz8ubGVuZ3RoKSB7XG4gICAgICBicmFuY2guYXR0cmlidXRlU3ZnRCA9IGAke2JyYW5jaC5hdHRyaWJ1dGVTdmdEfSBNICR7bXh9ICR7bXl9IEwgJHtteH0gJHtsYXN0RWxlbWVudEluQnJhbmNoLnBvc2l0aW9uX2VuZCA/PyAwfWA7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGx5ID0gKGxhc3RFbGVtZW50SW5CcmFuY2gucG9zaXRpb25fZW5kX2JyYW5jaCA/PyAwKSAtIGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuRUxFTUVOVF9IRUlHSFRfQ1VSVkU7XG5cbiAgICBpZiAobHkgPT09IG15KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGJyYW5jaC5hdHRyaWJ1dGVTdmdEID0gYCR7YnJhbmNoLmF0dHJpYnV0ZVN2Z0R9IE0gJHtteH0gJHtteX0gTCAke214fSAke2x5fWA7XG4gIH1cblxuICBzdGF0aWMgZHJhd0Fib3ZlVW5kZXJMaW5lKGxlZnQ6IG51bWJlciwgbGluZUZvcm1FbGVtZW50VG9CcmFuY2hpbmc6IG51bWJlciwgdG9wOiBudW1iZXIsIGxpbmVCZXR3ZWVuQnJhbmNoOiBudW1iZXIsIGJyYW5jaDogSURpYWdyYW1FbGVtZW50QnJhbmNoLCBtYXhIZWlnaHRCcmFuY2g6IG51bWJlciwgZGlyZWN0aW9uOiAnbGVmdCcgfCAncmlnaHQnLCBjb25maWc6IElEYXRhRGlhZ3JhbUNvbmZpZ1N2Zykge1xuICAgIGNvbnN0IE0gPSBgTSAke2xlZnR9ICR7dG9wfWA7IC8vIMSR4bq3dCBiw7p0IHbhur0gdOG7qyDEkWnhu4NtIHgsIHlcbiAgICBjb25zdCBMeSA9IHRvcCArIGxpbmVGb3JtRWxlbWVudFRvQnJhbmNoaW5nIC0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5FTEVNRU5UX0hFSUdIVF9DVVJWRTtcbiAgICBjb25zdCBMID0gYEwgJHtsZWZ0fSAke0x5fWA7IC8vIEvDqW8gZMOgaSAxIMSRxrDhu51uZyB0aOG6s25nIHThu5tpIFgsIFksXG4gICAgY29uc3Qgc3RyYWlnaHRMaW5lQmV0d2VlbkJyYW5jaCA9IGxpbmVCZXR3ZWVuQnJhbmNoIC0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5FTEVNRU5UX0hFSUdIVF9DVVJWRSAqIDI7XG5cbiAgICBjb25zdCBjb29yZFFMMTogSUNvb3JkaW5hdGVzRGlhZ3JhbVN2ZyA9IHtcbiAgICAgIC8vIMSRaeG7g20gY29uZyBz4buRIDEgY+G7p2EgbmjDoW5oIHbDoCDEkcaw4budbmcgdGjhurNuZyBrw6lvIHRyw6puIGTGsOG7m2lcbiAgICAgIG14OiBsZWZ0LFxuICAgICAgbXk6IEx5LFxuICAgICAgeDE6IGxlZnQsXG4gICAgICB5MTogTHkgKyBjYW52YXNDb25maWdSZWFkb25seSgpLkVMRU1FTlRfSEVJR0hUX0NVUlZFLFxuICAgICAgeDogdGhpcy5tYXRoT3BlcmF0b3JzQ2FsY3VsYXRpb24oZGlyZWN0aW9uLCBsZWZ0LCBjYW52YXNDb25maWdSZWFkb25seSgpLkVMRU1FTlRfSEVJR0hUX0NVUlZFLCB0cnVlKSxcbiAgICAgIHk6IEx5ICsgY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5FTEVNRU5UX0hFSUdIVF9DVVJWRSxcbiAgICB9O1xuXG4gICAgY29vcmRRTDEubHkgPSBjb29yZFFMMS55O1xuICAgIC8vIMSRb+G6oW4gdGjhurNuZyBrw6lvIGTDoGkgbGluZUJldHdlZW5CcmFuY2ggcGjhuqNpIHRy4burIMSRaSBoYWkgxJHhuqd1IGNvbmdcbiAgICBjb29yZFFMMS5seCA9IHRoaXMubWF0aE9wZXJhdG9yc0NhbGN1bGF0aW9uKGRpcmVjdGlvbiwgY29vcmRRTDEueCwgc3RyYWlnaHRMaW5lQmV0d2VlbkJyYW5jaCwgdHJ1ZSk7XG4gICAgY29uc3QgUUwxID0gYE0gJHtjb29yZFFMMS5teH0sJHtjb29yZFFMMS5teX0gUSAke2Nvb3JkUUwxLngxfSwke2Nvb3JkUUwxLnkxfSAke2Nvb3JkUUwxLnh9LCR7Y29vcmRRTDEueX0gTCAke2Nvb3JkUUwxLmx4fSAke2Nvb3JkUUwxLmx5fWA7XG5cbiAgICBjb25zdCBjb29yZFFMMjogSUNvb3JkaW5hdGVzRGlhZ3JhbVN2ZyA9IHtcbiAgICAgIC8vIMSRaeG7g20gY29uZyBz4buRIDIgY+G7p2EgbmjDoW5oIHbDoCDEkcaw4budbmcgdGjhurNuZyDEkeG7qW5nXG4gICAgICB5MTogY29vcmRRTDEubHksXG4gICAgICB4MTogdGhpcy5tYXRoT3BlcmF0b3JzQ2FsY3VsYXRpb24oZGlyZWN0aW9uLCBjb29yZFFMMS5seCwgY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5FTEVNRU5UX0hFSUdIVF9DVVJWRSwgdHJ1ZSksXG4gICAgICB5OiAoY29vcmRRTDEubHkgPz8gMCkgKyBjYW52YXNDb25maWdSZWFkb25seSgpLkVMRU1FTlRfSEVJR0hUX0NVUlZFLFxuICAgICAgeDogdGhpcy5tYXRoT3BlcmF0b3JzQ2FsY3VsYXRpb24oZGlyZWN0aW9uLCBjb29yZFFMMS5seCwgY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5FTEVNRU5UX0hFSUdIVF9DVVJWRSwgdHJ1ZSksXG4gICAgfTtcblxuICAgIGNvb3JkUUwyLmx5ID0gKGNvb3JkUUwyLnkgPz8gMCkgKyBnZXREaXN0YW5jZUZyb21CcmFuY2hUb0ZpcnN0QmxvY2soYnJhbmNoLm5vZGVPdGhlckNvbmZpZyk7XG4gICAgY29vcmRRTDIubHggPSBjb29yZFFMMi54O1xuXG4gICAgaWYgKCFicmFuY2guZWxlbWVudHM/Lmxlbmd0aCkge1xuICAgICAgY29vcmRRTDIubHkgPSBtYXhIZWlnaHRCcmFuY2ggKyAoY29vcmRRTDIubHkgPz8gMCk7IC8vIHThu5VuZyBjaGnhu4F1IGNhbyBj4bunYSBuaMOhbmggKyDEkWnhu4NtIHh14bqldCBwaMOhdFxuICAgIH1cbiAgICBsZXQgUUwyID0gYFEgJHtjb29yZFFMMi54MX0sJHtjb29yZFFMMi55MX0gJHtjb29yZFFMMi54fSwke2Nvb3JkUUwyLnl9IEwgJHtjb29yZFFMMi5seH0gJHtjb29yZFFMMi5seX1gO1xuXG4gICAgaWYgKGJyYW5jaC5ub2RlT3RoZXJDb25maWcpIHtcbiAgICAgIGNvbnN0IGVuZFlUb1dhaXQgPSAoY29vcmRRTDIueSA/PyAwKSArIGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuRElTVEFOQ0VfVE9fV0FJVDsgLy8geOG7rSBsw70gY8OhYyBsaW5lIHbDoG8gZmlyc3QgZWxlbWVudFxuICAgICAgY29uc3Qgd2FpdEhlaWdodCA9IGdldEhlaWdodFdhaXRDb25maWcoYnJhbmNoLm5vZGVPdGhlckNvbmZpZyk7XG4gICAgICBjb25zdCB0b3BTdGFydExpbmUyID0gZW5kWVRvV2FpdCArIHdhaXRIZWlnaHQ7XG5cbiAgICAgIGRlbGV0ZSBicmFuY2gubm9kZU90aGVyQ29uZmlnLmF0dHJpYnV0ZVN2Z0Q7XG4gICAgICBRTDIgPSBgUSAke2Nvb3JkUUwyLngxfSwke2Nvb3JkUUwyLnkxfSAke2Nvb3JkUUwyLnh9LCR7Y29vcmRRTDIueX0gTSAke2Nvb3JkUUwyLnh9LCR7Y29vcmRRTDIueX0gTCAke2Nvb3JkUUwyLnh9LCR7ZW5kWVRvV2FpdH1gO1xuICAgICAgaWYgKGJyYW5jaC5lbGVtZW50cz8ubGVuZ3RoKSB7XG4gICAgICAgIGJyYW5jaC5ub2RlT3RoZXJDb25maWcuYXR0cmlidXRlU3ZnRCA9IGBNICR7Y29vcmRRTDIueH0gJHt0b3BTdGFydExpbmUyfSBMICR7Y29vcmRRTDIueH0gJHtjb29yZFFMMi5seX1gO1xuICAgICAgfVxuICAgICAgYnJhbmNoLm5vZGVPdGhlckNvbmZpZy5zcGVjaWZpY195ID0gZW5kWVRvV2FpdDtcbiAgICAgIGJyYW5jaC5ub2RlT3RoZXJDb25maWcuc3BlY2lmaWNfeCA9IGNvb3JkUUwyLng7XG4gICAgfVxuXG4gICAgYnJhbmNoLnBvc2l0aW9uTWF4TGVmdCA9IGNvb3JkUUwyLmx4O1xuICAgIGJyYW5jaC5hdHRyaWJ1dGVTdmdEID0gYCR7TX0gJHtMfSAke1FMMX0gJHtRTDJ9YDtcbiAgICBjb25zdCBpc0NoZWNrQWxsRWxlbWVudENvbm5lY3RUb0V4aXQgPSB0aGlzLmNoZWNrQ2hpbGRyZW5Db25uZWN0VG9FeGl0KGJyYW5jaC5lbGVtZW50cyk7XG4gICAgY2hlY2tNYXhMZWZ0KGNvbmZpZywgYnJhbmNoLm5vZGVPdGhlckNvbmZpZz8uc3BlY2lmaWNfeCwgYnJhbmNoLnBvc2l0aW9uTWF4TGVmdCk7XG5cbiAgICByZXR1cm4geyBjb29yZFFMMSwgY29vcmRRTDIsIGlzQ2hlY2tBbGxFbGVtZW50Q29ubmVjdFRvRXhpdCB9O1xuICB9XG5cbiAgc3RhdGljIGNoZWNrQ2hpbGRyZW5Db25uZWN0VG9FeGl0KGVsZW1lbnRzOiBJRGlhZ3JhbUVsZW1lbnRbXSkge1xuICAgIGxldCB0b0V4aXQgPSBmYWxzZTtcblxuICAgIGlmIChlbGVtZW50cy5sZW5ndGggJiYgKGVsZW1lbnRzW2VsZW1lbnRzLmxlbmd0aCAtIDFdLnN1YkNvZGVPZkVsZW1lbnQgfHwgZWxlbWVudHNbZWxlbWVudHMubGVuZ3RoIC0gMV0uY29kZSkgPT09IGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuVFlQRV9FTEVNRU5UX0VYSVQpIHtcbiAgICAgIHRvRXhpdCA9IHRydWU7XG5cbiAgICAgIHJldHVybiB0b0V4aXQ7XG4gICAgfVxuICAgIGVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgIGlmICghZWxlbWVudC5icmFuY2hlcz8ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxldCBicmFuY2hDb25uZWN0VG9FeGl0ID0gMDtcblxuICAgICAgZWxlbWVudC5icmFuY2hlcy5mb3JFYWNoKChicmFuY2gpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tDaGlsZHJlbkNvbm5lY3RUb0V4aXQoYnJhbmNoLmVsZW1lbnRzKSkge1xuICAgICAgICAgIGJyYW5jaENvbm5lY3RUb0V4aXQrKztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAoYnJhbmNoQ29ubmVjdFRvRXhpdCA9PT0gZWxlbWVudC5icmFuY2hlcy5sZW5ndGgpIHtcbiAgICAgICAgdG9FeGl0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0b0V4aXQ7XG4gIH1cblxuICAvKiBhYm92ZSwgbGVmdCBhICsgYjsgb3Bwb3NpdGUgPSB0cnVlIGEgLSBiOyBcbiAgICB1bmRlciwgcmlnaHQgYSAtIGI7IG9wcG9zaXRlID0gdHJ1ZSBhICsgYlxuICAqL1xuICBzdGF0aWMgbWF0aE9wZXJhdG9yc0NhbGN1bGF0aW9uKGRpcmVjdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdhYm92ZScgfCAndW5kZXInIHwgc3RyaW5nLCBhOiBudW1iZXIgfCB1bmRlZmluZWQsIGI6IG51bWJlciB8IHVuZGVmaW5lZCwgb3Bwb3NpdGU/OiBib29sZWFuKSB7XG4gICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgY2FzZSAnYWJvdmUnOlxuICAgICAgICBpZiAob3Bwb3NpdGUpIHtcbiAgICAgICAgICByZXR1cm4gKGEgPz8gMCkgLSAoYiA/PyAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoYSA/PyAwKSArIChiID8/IDApO1xuXG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICBjYXNlICd1bmRlcic6XG4gICAgICAgIGlmIChvcHBvc2l0ZSkge1xuICAgICAgICAgIHJldHVybiAoYSA/PyAwKSArIChiID8/IDApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChhID8/IDApIC0gKGIgPz8gMCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gKGEgPz8gMCkgLSAoYiA/PyAwKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==