@vgroup/dialbox 0.1.18 → 0.1.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -72,25 +72,47 @@ export class IncomingCallComponent {
72
72
  }
73
73
  });
74
74
  }
75
- rejectCallFromList(data) {
75
+ async rejectCallFromList(data) {
76
76
  if (!data)
77
77
  return;
78
- if (data.reject)
79
- data.reject();
80
- if (data.disconnect)
81
- data.disconnect();
82
- if (data.parameters) {
83
- data.parameters['isCallConnected'] = false; // Should be false when rejecting
84
- }
85
- if (data.customParameters) {
86
- this.sendIPforIncomingCall(data.customParameters.get('twilioAuthId'), 'answered');
78
+ try {
79
+ // First try to reject the call if it's incoming
80
+ if (typeof data.reject === 'function') {
81
+ data.reject();
82
+ }
83
+ // If reject doesn't work (e.g., for connected calls), try disconnect
84
+ else if (typeof data.disconnect === 'function') {
85
+ data.disconnect();
86
+ }
87
+ // Update call parameters
88
+ if (data.parameters) {
89
+ data.parameters['isCallConnected'] = false;
90
+ }
91
+ // Send call status update if we have auth ID
92
+ if (data.customParameters) {
93
+ const twilioAuthId = data.customParameters.get('twilioAuthId');
94
+ if (twilioAuthId) {
95
+ await this.sendIPforIncomingCall(twilioAuthId, 'completed');
96
+ }
97
+ }
98
+ // Remove call from the list
99
+ if (this.newIncomingCallsList && data.parameters?.CallSid) {
100
+ this.newIncomingCallsList = this.newIncomingCallsList.filter((item) => item.parameters?.CallSid !== data.parameters.CallSid);
101
+ this.incomingCallsNewList.emit([...this.newIncomingCallsList]);
102
+ // Close the UI if no more calls
103
+ if (this.newIncomingCallsList.length === 0) {
104
+ this.closeIncomingCallDiv.emit({ show: 0, call: data });
105
+ }
106
+ }
87
107
  }
88
- if (this.newIncomingCallsList && data && data.parameters && data.parameters.CallSid) {
89
- this.newIncomingCallsList = this.newIncomingCallsList.filter((item) => item.parameters && item.parameters.CallSid !== data.parameters.CallSid);
90
- this.incomingCallsNewList.emit(this.newIncomingCallsList);
91
- if (this.newIncomingCallsList.length == 0) {
92
- this.closeIncomingCallDiv.emit({ show: 0, call: data });
108
+ catch (error) {
109
+ console.error('Error rejecting call:', error);
110
+ // Even if there's an error, try to clean up the UI
111
+ if (this.newIncomingCallsList && data.parameters?.CallSid) {
112
+ this.newIncomingCallsList = this.newIncomingCallsList.filter((item) => item.parameters?.CallSid !== data.parameters.CallSid);
113
+ this.incomingCallsNewList.emit([...this.newIncomingCallsList]);
93
114
  }
115
+ this.closeIncomingCallDiv.emit({ show: 0, call: data });
94
116
  }
95
117
  }
96
118
  closeIncomingCallWrapper(val) {
@@ -193,4 +215,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
193
215
  }], selectedIncomingCallInfo: [{
194
216
  type: Output
195
217
  }] } });
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5jb21pbmctY2FsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWFsYm94L3NyYy9saWIvY29tcG9uZW50cy9jYWxsLXByb2dyZXNzL2luY29taW5nLWNhbGwvaW5jb21pbmctY2FsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWFsYm94L3NyYy9saWIvY29tcG9uZW50cy9jYWxsLXByb2dyZXNzL2luY29taW5nLWNhbGwvaW5jb21pbmctY2FsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBSXhILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRSxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7Ozs7OztBQVEvQixNQUFNLE9BQU8scUJBQXFCO0lBb0I5QixZQUNZLGdCQUFrQyxFQUNsQyxhQUE0QixFQUM1QixtQkFBd0M7UUFGeEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBcEJwRCxzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFDbEMseUJBQW9CLEdBQVEsRUFBRSxDQUFDO1FBRy9CLGlCQUFZLEdBQVUsRUFBRSxDQUFDO1FBR3pCLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUUvQixzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFFekIseUJBQW9CLEdBQThDLElBQUksWUFBWSxFQUErQixDQUFDO1FBQ2xILHlCQUFvQixHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2xFLDZCQUF3QixH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Q1QsVUFBVSxDQUFDLEdBQUUsRUFBRTtnQkFDYixnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsR0FBQyxRQUFRLENBQUE7WUFDdkMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ1YsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ1QsT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBd0I7UUFDbEMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDMUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUNqQixPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxFQUF5QixDQUFDLENBQUM7SUFDaEMsQ0FBQzs7bUhBbE1NLHFCQUFxQjt1R0FBckIscUJBQXFCLHdUQ2RsQyw0L1FBd0lNOzRGRDFITyxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1CO3FLQUtsQixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQWFJLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csd0JBQXdCO3NCQUFqQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYWxsLCBEZXZpY2UgfSBmcm9tICdAdHdpbGlvL3ZvaWNlLXNkayc7XG5pbXBvcnQgeyBFeHRlbnNpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9leHRlbnNpb24uc2VydmljZSc7XG5pbXBvcnQgeyBUd2lsaW9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS90d2lsaW8uc2VydmljZSc7XG5pbXBvcnQgeyBHbG9iYWxDb25zdGFudCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9nbG9iYWwtY29uc3RhbnQnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvTm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1pbmNvbWluZy1jYWxsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2luY29taW5nLWNhbGwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbmNvbWluZy1jYWxsLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJbmNvbWluZ0NhbGxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGluY29taW5nQ2FsbERhdGE6IGFueTtcbiAgICBASW5wdXQoKSBuZXdJbmNvbWluZ0NhbGxzTGlzdDogYW55O1xuICAgIHNob3dSaW5nQW5pbWF0aW9uOiBib29sZWFuID0gdHJ1ZTtcbiAgICBzZWxlY3RlZEluY29taW5nQ2FsbDogYW55ID0ge307XG4gICAgdHdpbGlvQ2FsbERhdGE/OiBDYWxsO1xuICAgIHR3aWxpb0F1dGhJZD86IHN0cmluZztcbiAgICBkZWRpY2F0ZWROdW06c3RyaW5nID0gJyc7XG4gICAgQ2FsbFNpZDogYW55O1xuICAgIHJlY29yZENhbGw/OiBib29sZWFuO1xuICAgIHNob3VsZFJlY29yZENhbGw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBpc0NsaWNrRXhwYW5kOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBpc1R3aWxpb0Nvbm5lY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQE91dHB1dCgpIGNsb3NlSW5jb21pbmdDYWxsRGl2OiBFdmVudEVtaXR0ZXI8eyBzaG93OiBudW1iZXIsIGNhbGw6IGFueSB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBzaG93OiBudW1iZXIsIGNhbGw6IGFueSB9PigpO1xuICAgIEBPdXRwdXQoKSBpbmNvbWluZ0NhbGxzTmV3TGlzdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRJbmNvbWluZ0NhbGxJbmZvOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIGlzTXV0ZT86IGJvb2xlYW47XG4gICAgXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZXh0ZW5zaW9uU2VydmljZTogRXh0ZW5zaW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0d2lsaW9TZXJ2aWNlOiBUd2lsaW9TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcml2Y2U6IE5vdGlmaWNhdGlvblNlcnZpY2VcbiAgICApIHsgfVxuXG4gICAgbmdPbkluaXQoKSB7XG5cblxuICAgICAgLy8gdGhpcy50d2lsaW9TZXJ2aWNlLmN1cnJlbnRDYWxsLnN1YnNjcmliZSgoY2FsbDogYW55KSA9PiB7XG4gICAgICAvLyAgIGlmIChjYWxsKSB7XG4gICAgICAvLyAgICAgdGhpcy50d2lsaW9DYWxsRGF0YSA9IGNhbGw7XG4gICAgICAvLyAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJpdmNlLnNob3dOb3RpZmljYXRpb24oY2FsbCk7XG4gICAgICAvLyAgICAgLy8gSGFuZGxlIHRoZSBjYWxsIFVJXG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH0pO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLnR3aWxpb1NlcnZpY2UuY3VycmVudENhbGwuc3Vic2NyaWJlKGNhbGwgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjYWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHdpbGlvQ2FsbERhdGEgPSBjYWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnR3aWxpb0F1dGhJZCA9IGNhbGwuY3VzdG9tUGFyYW1ldGVycy5nZXQoJ3R3aWxpb0F1dGhJZCcpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbGwucGFyYW1ldGVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbC5wYXJhbWV0ZXJzID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbmRJUGZvckluY29taW5nQ2FsbCh0aGlzLnR3aWxpb0F1dGhJZCwgJycpO1xuICAgICAgICAgICAgICAgICAgICBjYWxsLm9uKCdjYW5jZWwnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbmNvbWluZ0NhbGxEYXRhICYmIHRoaXMuaW5jb21pbmdDYWxsRGF0YS5wYXJhbWV0ZXJzICYmIHRoaXMuaW5jb21pbmdDYWxsRGF0YS5wYXJhbWV0ZXJzLkNhbGxTaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0ID0gdGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5wYXJhbWV0ZXJzICYmIGl0ZW0ucGFyYW1ldGVycy5DYWxsU2lkICE9PSB0aGlzLmluY29taW5nQ2FsbERhdGEucGFyYW1ldGVycy5DYWxsU2lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVqZWN0Q2FsbEZyb21MaXN0KGNhbGwpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBjYWxsLm9uKCdkaXNjb25uZWN0JywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5jb21pbmdDYWxsRGF0YSAmJiB0aGlzLmluY29taW5nQ2FsbERhdGEucGFyYW1ldGVycyAmJiB0aGlzLmluY29taW5nQ2FsbERhdGEucGFyYW1ldGVycy5DYWxsU2lkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCA9IHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ucGFyYW1ldGVycyAmJiBpdGVtLnBhcmFtZXRlcnMuQ2FsbFNpZCAhPT0gdGhpcy5pbmNvbWluZ0NhbGxEYXRhLnBhcmFtZXRlcnMuQ2FsbFNpZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlamVjdENhbGxGcm9tTGlzdChjYWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWNjZXB0Q2FsbEZyb21MaXN0KGRhdGE/OiBhbnkpIHtcbiAgICAgICAgZGF0YS5hY2NlcHQoKTsgXG4gICAgICAgIC8vIGRhdGEucGFyYW1ldGVyc1snaXNDYWxsQ29ubmVjdGVkJ10gPSB0cnVlO1xuXG4gICAgICAgIGRhdGEuaXNDYWxsQ29ubmVjdGVkID0gdHJ1ZTsgXG4gICAgICAgIHRoaXMuc2VuZElQZm9ySW5jb21pbmdDYWxsKGRhdGEuY3VzdG9tUGFyYW1ldGVycy5nZXQoJ3R3aWxpb0F1dGhJZCcpLCAnYW5zd2VyZWQnKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNob3VsZFJlY29yZENhbGwpIHsgICAgLy8gZGVmYXVsdCByZWNvcmRpbmcgXG4gICAgICAgICAgICAgICAgdGhpcy5leHRlbnNpb25TZXJ2aWNlLnNldENhbGxTaWQodGhpcy5DYWxsU2lkLCB0aGlzLnJlY29yZENhbGwpOyBcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlSW5jb21pbmdDYWxsV3JhcHBlcigxKTsgICAgICAgXG4gICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFudWFsIHJlY29yZGluZyAgICAgXG4gICAgICAgICAgICAgICAgdGhpcy5leHRlbnNpb25TZXJ2aWNlLnNldENhbGxTaWQodGhpcy5DYWxsU2lkLCB0aGlzLnJlY29yZENhbGwpOyBcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlSW5jb21pbmdDYWxsV3JhcHBlcigxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJlamVjdENhbGxGcm9tTGlzdChkYXRhPzogYW55KSB7XG4gICAgICAgIGlmICghZGF0YSkgcmV0dXJuO1xuICAgICAgICBcbiAgICAgICAgaWYgKGRhdGEucmVqZWN0KSBkYXRhLnJlamVjdCgpO1xuICAgICAgICBpZiAoZGF0YS5kaXNjb25uZWN0KSBkYXRhLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgXG4gICAgICAgIGlmIChkYXRhLnBhcmFtZXRlcnMpIHtcbiAgICAgICAgICAgIGRhdGEucGFyYW1ldGVyc1snaXNDYWxsQ29ubmVjdGVkJ10gPSBmYWxzZTsgLy8gU2hvdWxkIGJlIGZhbHNlIHdoZW4gcmVqZWN0aW5nXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGF0YS5jdXN0b21QYXJhbWV0ZXJzKSB7XG4gICAgICAgICAgICB0aGlzLnNlbmRJUGZvckluY29taW5nQ2FsbChkYXRhLmN1c3RvbVBhcmFtZXRlcnMuZ2V0KCd0d2lsaW9BdXRoSWQnKSwgJ2Fuc3dlcmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmICh0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0ICYmIGRhdGEgJiYgZGF0YS5wYXJhbWV0ZXJzICYmIGRhdGEucGFyYW1ldGVycy5DYWxsU2lkKSB7XG4gICAgICAgICAgICB0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0ID0gdGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5wYXJhbWV0ZXJzICYmIGl0ZW0ucGFyYW1ldGVycy5DYWxsU2lkICE9PSBkYXRhLnBhcmFtZXRlcnMuQ2FsbFNpZCk7XG4gICAgICAgICAgICB0aGlzLmluY29taW5nQ2FsbHNOZXdMaXN0LmVtaXQodGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCk7XG4gICAgICAgICAgICBpZih0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0Lmxlbmd0aCA9PSAwKXtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlSW5jb21pbmdDYWxsRGl2LmVtaXQoeyBzaG93OiAwLCBjYWxsOiBkYXRhIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xvc2VJbmNvbWluZ0NhbGxXcmFwcGVyKHZhbDogYW55KSB7XG4gICAgICAgIHRoaXMuY2xvc2VJbmNvbWluZ0NhbGxEaXYuZW1pdCh7IHNob3c6IHZhbCwgY2FsbDogdGhpcy50d2lsaW9DYWxsRGF0YSB9KTtcbiAgICB9XG5cbiAgICB0b2dnbGVNdXRlKGRhdGE/OiBhbnkpIHtcbiAgICAgICAgdGhpcy5pc011dGUgPSAhdGhpcy5pc011dGU7XG4gICAgICAgIGRhdGEubXV0ZSh0aGlzLmlzTXV0ZSk7XG4gICAgfVxuXG4gICAgc2VuZElQZm9ySW5jb21pbmdDYWxsKHJlY29yZElkOiBhbnksIGNhbGxzdGF0dXM6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5leHRlbnNpb25TZXJ2aWNlLmdldElQRGV0YWlsc0ZvckNhbGwocmVjb3JkSWQsIGNhbGxzdGF0dXMpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwOiBhbnkgPSByZXM7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwLmNhbGxBdXRoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkNhbGxTaWQgPSByZXNwLmNhbGxBdXRoLmNhbGxTaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlY29yZENhbGwgPSByZXNwLmNhbGxBdXRoLnJlY29yZENhbGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIHJlY29yZENhbGwgZmxhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3AuY2FsbEF1dGgucmVjb3JkQ2FsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3VsZFJlY29yZENhbGwgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG91bGRSZWNvcmRDYWxsID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzd2FsKFwiRXJyb3JcIiwgXCJNaXNzaW5nIGNhbGwgYXV0aGVudGljYXRpb24gZGV0YWlscy5cIiwgXCJlcnJvclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3dhbChcIkVycm9yXCIsIHJlc3AubWVzc2FnZS5qb2luKFwiPGJyLz5cIiksIFwiZXJyb3JcIik7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICBzd2FsKFwiRXJyb3JcIiwgR2xvYmFsQ29uc3RhbnQuRXJyb3JNc2c1MDAsIFwiZXJyb3JcIik7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBvblVzZXJJbmZvQnlDYWxsU2lkKCl7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSW5jb21pbmdDYWxsICYmIHRoaXMuc2VsZWN0ZWRJbmNvbWluZ0NhbGwudXNlckluZm8pIHtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbCA/IE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRJbmNvbWluZ0NhbGwpLmxlbmd0aCA/IHRydWUgOiBmYWxzZSA6IGZhbHNlO1xuICAgIH1cbiAgICBcbiAgICBvbkNsaWNrRXhwYW5kKGRhdGE/OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmNvbWluZ0NhbGwgPT09IGRhdGEgJiYgdGhpcy5pc0NsaWNrRXhwYW5kKSB7XG4gICAgICAgICAgICB0aGlzLmlzQ2xpY2tFeHBhbmQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmNvbWluZ0NhbGwgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbEluZm8uZW1pdCh7fSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0NsaWNrRXhwYW5kID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbCA9IGRhdGE7XG4gICAgICAgIFxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbFsnaXNDbGlja0V4cGFuZCddID0gdHJ1ZTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QgJiYgdGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdC5mb3JFYWNoKChjYWxsOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGwgIT09IHRoaXMuc2VsZWN0ZWRJbmNvbWluZ0NhbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxbJ2lzQ2xpY2tFeHBhbmQnXSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmNvbWluZ0NhbGxJbmZvLmVtaXQodGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmKCF0aGlzLnNlbGVjdGVkSW5jb21pbmdDYWxsLnVzZXJJbmZvIHx8IHRoaXMuc2VsZWN0ZWRJbmNvbWluZ0NhbGwudXNlckluZm8uc3RhdHVzID09IDIwMSl7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRVc2VySW5mb3JtYXRpb24odGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRVc2VySW5mb3JtYXRpb24oaW5jb21pbmdDYWxsRGF0YTogYW55KSB7XG4gICAgICAgIGxldCBkYXRhID0gdGhpcy5mcm9tRW50cmllcyhBcnJheS5mcm9tKGluY29taW5nQ2FsbERhdGEuY3VzdG9tUGFyYW1ldGVycy5lbnRyaWVzKCkpKTtcbiAgICAgICAgdGhpcy5leHRlbnNpb25TZXJ2aWNlLmdldFVzZXJJbmZvcm1hdGlvbihkYXRhWyd0d2lsaW9BdXRoSWQnXSkuc3Vic2NyaWJlKFxuICAgICAgICByZXNwb25zZSA9PiB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgaW5jb21pbmdDYWxsRGF0YVsndXNlckluZm8nXT1yZXNwb25zZVxuICAgICAgICAgIH0sIDUwMDApXG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzdGFydGluZyByZWNvcmRpbmcnLCBlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBmcm9tRW50cmllcyhlbnRyaWVzOiBbc3RyaW5nLCBhbnldW10pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAgICAgcmV0dXJuIGVudHJpZXMucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIGFjY1trZXldID0gdmFsdWU7XG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgYW55Pik7ICBcbiAgICAgIH1cbn0iLCI8ZGl2IGNsYXNzPVwiY2FsbC1jb250YWluZXJcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBsZWZ0OiAxMTZweDtcIiAqbmdJZj1cIm5ld0luY29taW5nQ2FsbHNMaXN0Lmxlbmd0aCA+IDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sbG9wc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IHctMTAwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvbnRhaW5lci1mbHVpZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxsVG9OdW1cIj5JbmNvbWluZyBjYWxsIHt7bmV3SW5jb21pbmdDYWxsc0xpc3Q/Lmxlbmd0aH19IDxici8+PHNwYW4+e3tkZWRpY2F0ZWROdW19fTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIG5ld0luY29taW5nQ2FsbHNMaXN0XCI+ICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTIgXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsbC1pbmZvLXdyYXBwZXIgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImF2YXRhci1pbWctd3JhcHBlclwiIFtzcmNdPVwiZGF0YT8uaW1nXCIgYWx0PVwiXCIgd2lkdGg9XCI0NVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB3LTEwMCBhbGlnbi1pdGVtcy1jZW50ZXIgbXItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsbGVyRGV0YWlscy13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJicmVhay13b3JkXCI+e3tkYXRhPy51c2VySW5mbz8uYzJjSW5mb3JtYXRpb24/Lm5hbWUgfHwgJy0nfX08L2g1PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJicmVhay13b3JkXCI+e3tkYXRhLnVzZXJJbmZvPy5kaXNwbGF5TnVtID8gZGF0YS51c2VySW5mbz8uYzJjSW5mb3JtYXRpb24ubnVtYmVyIDogZGF0YS51c2VySW5mbz8uYzJjSW5mb3JtYXRpb24ubnVtYmVyIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbGwtYnRuLXdyYXBwZXIgcmVjZWl2ZS1idG5cIiBbZGlzYWJsZWRdPVwiIWRhdGE/LnBhcmFtZXRlcnM/LmlzQ2FsbENvbm5lY3RlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiIChjbGljayk9XCJhY2NlcHRDYWxsRnJvbUxpc3QoZGF0YSlcIj4gY2FsbCA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYWxsLWJ0bi13cmFwcGVyIG11dGUtYnRuXCIgKm5nSWY9XCJkYXRhPy5wYXJhbWV0ZXJzPy5pc0NhbGxDb25uZWN0ZWRcIiAgKGNsaWNrKT1cInRvZ2dsZU11dGUoZGF0YSlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZS1tdXRlJzogaXNNdXRlfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiICpuZ0lmPVwiaXNNdXRlXCI+IG1pY19vZmYgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiICpuZ0lmPVwiIWlzTXV0ZVwiPiBtaWNpc0NsaWNrRXhwYW5kIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbGwtYnRuLXdyYXBwZXIgcmVqZWN0LWJ0blwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiIChjbGljayk9XCJyZWplY3RDYWxsRnJvbUxpc3QoZGF0YSlcIj4gY2FsbF9lbmQgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlYXJyb3ctYXJyb3cgbWUtMlwiIGlkPVwidG9nZ2xlYXJyb3dcIiAoY2xpY2spPVwib25DbGlja0V4cGFuZChkYXRhKVwiPjxpIGNsYXNzPVwiZmEgZmEtYW5nbGUtcmlnaHRcIj48L2k+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsbC1jb250YWluZXIgcC0zIHRleHQtd2hpdGUgbW9kZWwtY29udGVudFwiICpuZ0lmPVwiaXNDbGlja0V4cGFuZFwiPiAgIFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxsLWFuaW1hdGlvblwiIFtuZ0NsYXNzXT1cInsnY2FsbC1hbmltYXRpb24tcGxheSc6IHNob3dSaW5nQW5pbWF0aW9ufVwiPlxuICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImF2YXRhci1pbWdcIiBbc3JjXT1cImluY29taW5nQ2FsbERhdGEuaW1nXCIgYWx0PVwiXCIgd2lkdGg9XCIxMDBcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LXdoaXRlXCI+e3tzZWxlY3RlZEluY29taW5nQ2FsbD8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5uYW1lIHx8ICctJ319PC9oMz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmLTEzXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWUtMlwiPlN1YmplY3Q6PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtMlwiPnt7c2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8uc3ViamVjdCB8fCAnLSd9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gIFxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZS0yXCI+RW1haWw6PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7c2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8uZW1haWwgfHwgJy0nfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+TnVtYmVyOjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+e3tzZWxlY3RlZEluY29taW5nQ2FsbD8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5udW1iZXJ9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+TGFuZ3VhZ2U6PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC0yXCI+e3tzZWxlY3RlZEluY29taW5nQ2FsbD8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5sYW5ndWFnZSB8fCAnLSd9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+RXh0ZW5zaW9uOjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtMlwiPnt7c2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8uZXh0ZW5zaW9uIHx8ICctJ319PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWUtMlwiPkltYWdlOjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZWxsaXBzaXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8uaW1hZ2UgJiYgc2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8uaW1hZ2UgIT09ICctJzsgZWxzZSBub0ltYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwie3tzZWxlY3RlZEluY29taW5nQ2FsbD8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5pbWFnZX19XCIgYWx0PVwiXCIgd2lkdGg9XCI0MlwiIGhlaWdodD1cIjQyXCIgY2xhc3M9XCJtbC0yXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9JbWFnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtbC0yXCI+Tm8gSW1hZ2UgQXZhaWxhYmxlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICBcbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBtYi00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+TWVzc2FnZTo8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZWxsaXBzaXNcIj57e3NlbGVjdGVkSW5jb21pbmdDYWxsPy51c2VySW5mbz8uYzJjSW5mb3JtYXRpb24/Lm1lc3NhZ2UgfHwgJy0nfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5Qb2ludCBOYW1lOjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPnt7c2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8ucG9pbnROYW1lIHx8ICctJ319PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlNvdXJjZSBOYW1lOjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPnt7c2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8uc291cmNlTmFtZSB8fCAnLSd9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxsLWFjdGlvbi1idG5zIG10LTBcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FsbC1idG4gcmVjZWl2ZS1idG5cIiAqbmdJZj1cIiFzZWxlY3RlZEluY29taW5nQ2FsbD8ucGFyYW1ldGVycz8uaXNDYWxsQ29ubmVjdGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiIChjbGljayk9XCJhY2NlcHRDYWxsRnJvbUxpc3Qoc2VsZWN0ZWRJbmNvbWluZ0NhbGwpXCI+IGNhbGwgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYWxsLWJ0biBtdXRlLWJ0blwiICpuZ0lmPVwic2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnBhcmFtZXRlcnM/LmlzQ2FsbENvbm5lY3RlZFwiICAoY2xpY2spPVwidG9nZ2xlTXV0ZShzZWxlY3RlZEluY29taW5nQ2FsbClcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZS1tdXRlJzogaXNNdXRlfVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIiAqbmdJZj1cImlzTXV0ZVwiPiBtaWNfb2ZmIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgKm5nSWY9XCIhaXNNdXRlXCI+IG1pYyA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbGwtYnRuIHJlamVjdC1idG5cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgKGNsaWNrKT1cInJlamVjdENhbGxGcm9tTGlzdChzZWxlY3RlZEluY29taW5nQ2FsbClcIj4gY2FsbF9lbmQgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwid2F2ZS1jb250YWluZXJcIj5cbiAgICAgICAgPHN2ZyBjbGFzcz1cIndhdmVzXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiXG4gICAgICAgICAgICB2aWV3Qm94PVwiMCAyNCAxNTAgMjhcIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiIHNoYXBlLXJlbmRlcmluZz1cImF1dG9cIiBbbmdTdHlsZV09XCJ7J3dpZHRoJzogJzc1NnB4J31cIj5cbiAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiZ2VudGxlLXdhdmVcIiBkPVwiTS0xNjAgNDRjMzAgMCA1OC0xOCA4OC0xOHMgNTggMTggODggMTggNTgtMTggODgtMTggNTggMTggODggMTggdjQ0aC0zNTJ6XCIgLz5cbiAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgIDxnIGNsYXNzPVwicGFyYWxsYXhcIj5cbiAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9XCIjZ2VudGxlLXdhdmVcIiB4PVwiNDhcIiB5PVwiMFwiIGZpbGw9XCJyZ2JhKDI1NSwyNTUsMjU1LDAuNylcIiAvPlxuICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj1cIiNnZW50bGUtd2F2ZVwiIHg9XCI0OFwiIHk9XCIzXCIgZmlsbD1cInJnYmEoMjU1LDI1NSwyNTUsMC41KVwiIC8+ICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPVwiI2dlbnRsZS13YXZlXCIgeD1cIjQ4XCIgeT1cIjdcIiBmaWxsPVwiI2ZmZlwiIC8+XG4gICAgICAgICAgICA8L2c+XG4gICAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
218
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5jb21pbmctY2FsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWFsYm94L3NyYy9saWIvY29tcG9uZW50cy9jYWxsLXByb2dyZXNzL2luY29taW5nLWNhbGwvaW5jb21pbmctY2FsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWFsYm94L3NyYy9saWIvY29tcG9uZW50cy9jYWxsLXByb2dyZXNzL2luY29taW5nLWNhbGwvaW5jb21pbmctY2FsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBSXhILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRSxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7Ozs7OztBQVEvQixNQUFNLE9BQU8scUJBQXFCO0lBb0I5QixZQUNZLGdCQUFrQyxFQUNsQyxhQUE0QixFQUM1QixtQkFBd0M7UUFGeEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBcEJwRCxzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFDbEMseUJBQW9CLEdBQVEsRUFBRSxDQUFDO1FBRy9CLGlCQUFZLEdBQVUsRUFBRSxDQUFDO1FBR3pCLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUUvQixzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFFekIseUJBQW9CLEdBQThDLElBQUksWUFBWSxFQUErQixDQUFDO1FBQ2xILHlCQUFvQixHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2xFLDZCQUF3QixH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QUNsQyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUMxQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ2pCLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUFFLEVBQXlCLENBQUMsQ0FBQztJQUNoQyxDQUFDOzttSEE5Tk0scUJBQXFCO3VHQUFyQixxQkFBcUIsd1RDZGxDLDQvUUF3SU07NEZEMUhPLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxtQkFBbUI7cUtBS2xCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBYUksb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyx3QkFBd0I7c0JBQWpDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbGwsIERldmljZSB9IGZyb20gJ0B0d2lsaW8vdm9pY2Utc2RrJztcbmltcG9ydCB7IEV4dGVuc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL2V4dGVuc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFR3aWxpb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3R3aWxpby5zZXJ2aWNlJztcbmltcG9ydCB7IEdsb2JhbENvbnN0YW50IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2dsb2JhbC1jb25zdGFudCc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9Ob3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgc3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWluY29taW5nLWNhbGwnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5jb21pbmctY2FsbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2luY29taW5nLWNhbGwuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEluY29taW5nQ2FsbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgaW5jb21pbmdDYWxsRGF0YTogYW55O1xuICAgIEBJbnB1dCgpIG5ld0luY29taW5nQ2FsbHNMaXN0OiBhbnk7XG4gICAgc2hvd1JpbmdBbmltYXRpb246IGJvb2xlYW4gPSB0cnVlO1xuICAgIHNlbGVjdGVkSW5jb21pbmdDYWxsOiBhbnkgPSB7fTtcbiAgICB0d2lsaW9DYWxsRGF0YT86IENhbGw7XG4gICAgdHdpbGlvQXV0aElkPzogc3RyaW5nO1xuICAgIGRlZGljYXRlZE51bTpzdHJpbmcgPSAnJztcbiAgICBDYWxsU2lkOiBhbnk7XG4gICAgcmVjb3JkQ2FsbD86IGJvb2xlYW47XG4gICAgc2hvdWxkUmVjb3JkQ2FsbDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGlzQ2xpY2tFeHBhbmQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGlzVHdpbGlvQ29ubmVjdGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KCkgY2xvc2VJbmNvbWluZ0NhbGxEaXY6IEV2ZW50RW1pdHRlcjx7IHNob3c6IG51bWJlciwgY2FsbDogYW55IH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7IHNob3c6IG51bWJlciwgY2FsbDogYW55IH0+KCk7XG4gICAgQE91dHB1dCgpIGluY29taW5nQ2FsbHNOZXdMaXN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBzZWxlY3RlZEluY29taW5nQ2FsbEluZm86IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgaXNNdXRlPzogYm9vbGVhbjtcbiAgICBcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBleHRlbnNpb25TZXJ2aWNlOiBFeHRlbnNpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHR3aWxpb1NlcnZpY2U6IFR3aWxpb1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VyaXZjZTogTm90aWZpY2F0aW9uU2VydmljZVxuICAgICkgeyB9XG5cbiAgICBuZ09uSW5pdCgpIHtcblxuXG4gICAgICAvLyB0aGlzLnR3aWxpb1NlcnZpY2UuY3VycmVudENhbGwuc3Vic2NyaWJlKChjYWxsOiBhbnkpID0+IHtcbiAgICAgIC8vICAgaWYgKGNhbGwpIHtcbiAgICAgIC8vICAgICB0aGlzLnR3aWxpb0NhbGxEYXRhID0gY2FsbDtcbiAgICAgIC8vICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcml2Y2Uuc2hvd05vdGlmaWNhdGlvbihjYWxsKTtcbiAgICAgIC8vICAgICAvLyBIYW5kbGUgdGhlIGNhbGwgVUlcbiAgICAgIC8vICAgfVxuICAgICAgLy8gfSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMudHdpbGlvU2VydmljZS5jdXJyZW50Q2FsbC5zdWJzY3JpYmUoY2FsbCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNhbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50d2lsaW9DYWxsRGF0YSA9IGNhbGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHdpbGlvQXV0aElkID0gY2FsbC5jdXN0b21QYXJhbWV0ZXJzLmdldCgndHdpbGlvQXV0aElkJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY2FsbC5wYXJhbWV0ZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsLnBhcmFtZXRlcnMgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VuZElQZm9ySW5jb21pbmdDYWxsKHRoaXMudHdpbGlvQXV0aElkLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIGNhbGwub24oJ2NhbmNlbCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmluY29taW5nQ2FsbERhdGEgJiYgdGhpcy5pbmNvbWluZ0NhbGxEYXRhLnBhcmFtZXRlcnMgJiYgdGhpcy5pbmNvbWluZ0NhbGxEYXRhLnBhcmFtZXRlcnMuQ2FsbFNpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QgPSB0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnBhcmFtZXRlcnMgJiYgaXRlbS5wYXJhbWV0ZXJzLkNhbGxTaWQgIT09IHRoaXMuaW5jb21pbmdDYWxsRGF0YS5wYXJhbWV0ZXJzLkNhbGxTaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWplY3RDYWxsRnJvbUxpc3QoY2FsbCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhbGwub24oJ2Rpc2Nvbm5lY3QnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbmNvbWluZ0NhbGxEYXRhICYmIHRoaXMuaW5jb21pbmdDYWxsRGF0YS5wYXJhbWV0ZXJzICYmIHRoaXMuaW5jb21pbmdDYWxsRGF0YS5wYXJhbWV0ZXJzLkNhbGxTaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0ID0gdGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5wYXJhbWV0ZXJzICYmIGl0ZW0ucGFyYW1ldGVycy5DYWxsU2lkICE9PSB0aGlzLmluY29taW5nQ2FsbERhdGEucGFyYW1ldGVycy5DYWxsU2lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVqZWN0Q2FsbEZyb21MaXN0KGNhbGwpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhY2NlcHRDYWxsRnJvbUxpc3QoZGF0YT86IGFueSkge1xuICAgICAgICBkYXRhLmFjY2VwdCgpOyBcbiAgICAgICAgLy8gZGF0YS5wYXJhbWV0ZXJzWydpc0NhbGxDb25uZWN0ZWQnXSA9IHRydWU7XG5cbiAgICAgICAgZGF0YS5pc0NhbGxDb25uZWN0ZWQgPSB0cnVlOyBcbiAgICAgICAgdGhpcy5zZW5kSVBmb3JJbmNvbWluZ0NhbGwoZGF0YS5jdXN0b21QYXJhbWV0ZXJzLmdldCgndHdpbGlvQXV0aElkJyksICdhbnN3ZXJlZCcpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2hvdWxkUmVjb3JkQ2FsbCkgeyAgICAvLyBkZWZhdWx0IHJlY29yZGluZyBcbiAgICAgICAgICAgICAgICB0aGlzLmV4dGVuc2lvblNlcnZpY2Uuc2V0Q2FsbFNpZCh0aGlzLkNhbGxTaWQsIHRoaXMucmVjb3JkQ2FsbCk7IFxuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VJbmNvbWluZ0NhbGxXcmFwcGVyKDEpOyAgICAgICBcbiAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAvLyBtYW51YWwgcmVjb3JkaW5nICAgICBcbiAgICAgICAgICAgICAgICB0aGlzLmV4dGVuc2lvblNlcnZpY2Uuc2V0Q2FsbFNpZCh0aGlzLkNhbGxTaWQsIHRoaXMucmVjb3JkQ2FsbCk7IFxuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VJbmNvbWluZ0NhbGxXcmFwcGVyKDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgcmVqZWN0Q2FsbEZyb21MaXN0KGRhdGE/OiBhbnkpIHtcbiAgICAgICAgaWYgKCFkYXRhKSByZXR1cm47XG4gICAgICAgIFxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gRmlyc3QgdHJ5IHRvIHJlamVjdCB0aGUgY2FsbCBpZiBpdCdzIGluY29taW5nXG4gICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEucmVqZWN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5yZWplY3QoKTtcbiAgICAgICAgICAgIH0gXG4gICAgICAgICAgICAvLyBJZiByZWplY3QgZG9lc24ndCB3b3JrIChlLmcuLCBmb3IgY29ubmVjdGVkIGNhbGxzKSwgdHJ5IGRpc2Nvbm5lY3RcbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBkYXRhLmRpc2Nvbm5lY3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBkYXRhLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gVXBkYXRlIGNhbGwgcGFyYW1ldGVyc1xuICAgICAgICAgICAgaWYgKGRhdGEucGFyYW1ldGVycykge1xuICAgICAgICAgICAgICAgIGRhdGEucGFyYW1ldGVyc1snaXNDYWxsQ29ubmVjdGVkJ10gPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU2VuZCBjYWxsIHN0YXR1cyB1cGRhdGUgaWYgd2UgaGF2ZSBhdXRoIElEXG4gICAgICAgICAgICBpZiAoZGF0YS5jdXN0b21QYXJhbWV0ZXJzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHdpbGlvQXV0aElkID0gZGF0YS5jdXN0b21QYXJhbWV0ZXJzLmdldCgndHdpbGlvQXV0aElkJyk7XG4gICAgICAgICAgICAgICAgaWYgKHR3aWxpb0F1dGhJZCkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNlbmRJUGZvckluY29taW5nQ2FsbCh0d2lsaW9BdXRoSWQsICdjb21wbGV0ZWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIFJlbW92ZSBjYWxsIGZyb20gdGhlIGxpc3RcbiAgICAgICAgICAgIGlmICh0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0ICYmIGRhdGEucGFyYW1ldGVycz8uQ2FsbFNpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QgPSB0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS5wYXJhbWV0ZXJzPy5DYWxsU2lkICE9PSBkYXRhLnBhcmFtZXRlcnMuQ2FsbFNpZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTmV3TGlzdC5lbWl0KFsuLi50aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0XSk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLy8gQ2xvc2UgdGhlIFVJIGlmIG5vIG1vcmUgY2FsbHNcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZUluY29taW5nQ2FsbERpdi5lbWl0KHsgc2hvdzogMCwgY2FsbDogZGF0YSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciByZWplY3RpbmcgY2FsbDonLCBlcnJvcik7XG4gICAgICAgICAgICAvLyBFdmVuIGlmIHRoZXJlJ3MgYW4gZXJyb3IsIHRyeSB0byBjbGVhbiB1cCB0aGUgVUlcbiAgICAgICAgICAgIGlmICh0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0ICYmIGRhdGEucGFyYW1ldGVycz8uQ2FsbFNpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QgPSB0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS5wYXJhbWV0ZXJzPy5DYWxsU2lkICE9PSBkYXRhLnBhcmFtZXRlcnMuQ2FsbFNpZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTmV3TGlzdC5lbWl0KFsuLi50aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNsb3NlSW5jb21pbmdDYWxsRGl2LmVtaXQoeyBzaG93OiAwLCBjYWxsOiBkYXRhIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xvc2VJbmNvbWluZ0NhbGxXcmFwcGVyKHZhbDogYW55KSB7XG4gICAgICAgIHRoaXMuY2xvc2VJbmNvbWluZ0NhbGxEaXYuZW1pdCh7IHNob3c6IHZhbCwgY2FsbDogdGhpcy50d2lsaW9DYWxsRGF0YSB9KTtcbiAgICB9XG5cbiAgICB0b2dnbGVNdXRlKGRhdGE/OiBhbnkpIHtcbiAgICAgICAgdGhpcy5pc011dGUgPSAhdGhpcy5pc011dGU7XG4gICAgICAgIGRhdGEubXV0ZSh0aGlzLmlzTXV0ZSk7XG4gICAgfVxuXG4gICAgc2VuZElQZm9ySW5jb21pbmdDYWxsKHJlY29yZElkOiBhbnksIGNhbGxzdGF0dXM6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5leHRlbnNpb25TZXJ2aWNlLmdldElQRGV0YWlsc0ZvckNhbGwocmVjb3JkSWQsIGNhbGxzdGF0dXMpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwOiBhbnkgPSByZXM7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwLmNhbGxBdXRoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkNhbGxTaWQgPSByZXNwLmNhbGxBdXRoLmNhbGxTaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlY29yZENhbGwgPSByZXNwLmNhbGxBdXRoLnJlY29yZENhbGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIHJlY29yZENhbGwgZmxhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3AuY2FsbEF1dGgucmVjb3JkQ2FsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3VsZFJlY29yZENhbGwgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG91bGRSZWNvcmRDYWxsID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzd2FsKFwiRXJyb3JcIiwgXCJNaXNzaW5nIGNhbGwgYXV0aGVudGljYXRpb24gZGV0YWlscy5cIiwgXCJlcnJvclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3dhbChcIkVycm9yXCIsIHJlc3AubWVzc2FnZS5qb2luKFwiPGJyLz5cIiksIFwiZXJyb3JcIik7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICBzd2FsKFwiRXJyb3JcIiwgR2xvYmFsQ29uc3RhbnQuRXJyb3JNc2c1MDAsIFwiZXJyb3JcIik7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBvblVzZXJJbmZvQnlDYWxsU2lkKCl7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSW5jb21pbmdDYWxsICYmIHRoaXMuc2VsZWN0ZWRJbmNvbWluZ0NhbGwudXNlckluZm8pIHtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbCA/IE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRJbmNvbWluZ0NhbGwpLmxlbmd0aCA/IHRydWUgOiBmYWxzZSA6IGZhbHNlO1xuICAgIH1cbiAgICBcbiAgICBvbkNsaWNrRXhwYW5kKGRhdGE/OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmNvbWluZ0NhbGwgPT09IGRhdGEgJiYgdGhpcy5pc0NsaWNrRXhwYW5kKSB7XG4gICAgICAgICAgICB0aGlzLmlzQ2xpY2tFeHBhbmQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmNvbWluZ0NhbGwgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbEluZm8uZW1pdCh7fSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0NsaWNrRXhwYW5kID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbCA9IGRhdGE7XG4gICAgICAgIFxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbFsnaXNDbGlja0V4cGFuZCddID0gdHJ1ZTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QgJiYgdGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdC5mb3JFYWNoKChjYWxsOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGwgIT09IHRoaXMuc2VsZWN0ZWRJbmNvbWluZ0NhbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxbJ2lzQ2xpY2tFeHBhbmQnXSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmNvbWluZ0NhbGxJbmZvLmVtaXQodGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmKCF0aGlzLnNlbGVjdGVkSW5jb21pbmdDYWxsLnVzZXJJbmZvIHx8IHRoaXMuc2VsZWN0ZWRJbmNvbWluZ0NhbGwudXNlckluZm8uc3RhdHVzID09IDIwMSl7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRVc2VySW5mb3JtYXRpb24odGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRVc2VySW5mb3JtYXRpb24oaW5jb21pbmdDYWxsRGF0YTogYW55KSB7XG4gICAgICAgIGxldCBkYXRhID0gdGhpcy5mcm9tRW50cmllcyhBcnJheS5mcm9tKGluY29taW5nQ2FsbERhdGEuY3VzdG9tUGFyYW1ldGVycy5lbnRyaWVzKCkpKTtcbiAgICAgICAgdGhpcy5leHRlbnNpb25TZXJ2aWNlLmdldFVzZXJJbmZvcm1hdGlvbihkYXRhWyd0d2lsaW9BdXRoSWQnXSkuc3Vic2NyaWJlKFxuICAgICAgICByZXNwb25zZSA9PiB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgaW5jb21pbmdDYWxsRGF0YVsndXNlckluZm8nXT1yZXNwb25zZVxuICAgICAgICAgIH0sIDUwMDApXG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzdGFydGluZyByZWNvcmRpbmcnLCBlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBmcm9tRW50cmllcyhlbnRyaWVzOiBbc3RyaW5nLCBhbnldW10pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAgICAgcmV0dXJuIGVudHJpZXMucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIGFjY1trZXldID0gdmFsdWU7XG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgYW55Pik7ICBcbiAgICAgIH1cbn0iLCI8ZGl2IGNsYXNzPVwiY2FsbC1jb250YWluZXJcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBsZWZ0OiAxMTZweDtcIiAqbmdJZj1cIm5ld0luY29taW5nQ2FsbHNMaXN0Lmxlbmd0aCA+IDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sbG9wc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IHctMTAwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvbnRhaW5lci1mbHVpZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxsVG9OdW1cIj5JbmNvbWluZyBjYWxsIHt7bmV3SW5jb21pbmdDYWxsc0xpc3Q/Lmxlbmd0aH19IDxici8+PHNwYW4+e3tkZWRpY2F0ZWROdW19fTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIG5ld0luY29taW5nQ2FsbHNMaXN0XCI+ICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTIgXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsbC1pbmZvLXdyYXBwZXIgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImF2YXRhci1pbWctd3JhcHBlclwiIFtzcmNdPVwiZGF0YT8uaW1nXCIgYWx0PVwiXCIgd2lkdGg9XCI0NVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB3LTEwMCBhbGlnbi1pdGVtcy1jZW50ZXIgbXItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsbGVyRGV0YWlscy13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJicmVhay13b3JkXCI+e3tkYXRhPy51c2VySW5mbz8uYzJjSW5mb3JtYXRpb24/Lm5hbWUgfHwgJy0nfX08L2g1PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJicmVhay13b3JkXCI+e3tkYXRhLnVzZXJJbmZvPy5kaXNwbGF5TnVtID8gZGF0YS51c2VySW5mbz8uYzJjSW5mb3JtYXRpb24ubnVtYmVyIDogZGF0YS51c2VySW5mbz8uYzJjSW5mb3JtYXRpb24ubnVtYmVyIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbGwtYnRuLXdyYXBwZXIgcmVjZWl2ZS1idG5cIiBbZGlzYWJsZWRdPVwiIWRhdGE/LnBhcmFtZXRlcnM/LmlzQ2FsbENvbm5lY3RlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiIChjbGljayk9XCJhY2NlcHRDYWxsRnJvbUxpc3QoZGF0YSlcIj4gY2FsbCA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYWxsLWJ0bi13cmFwcGVyIG11dGUtYnRuXCIgKm5nSWY9XCJkYXRhPy5wYXJhbWV0ZXJzPy5pc0NhbGxDb25uZWN0ZWRcIiAgKGNsaWNrKT1cInRvZ2dsZU11dGUoZGF0YSlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZS1tdXRlJzogaXNNdXRlfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiICpuZ0lmPVwiaXNNdXRlXCI+IG1pY19vZmYgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiICpuZ0lmPVwiIWlzTXV0ZVwiPiBtaWNpc0NsaWNrRXhwYW5kIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbGwtYnRuLXdyYXBwZXIgcmVqZWN0LWJ0blwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiIChjbGljayk9XCJyZWplY3RDYWxsRnJvbUxpc3QoZGF0YSlcIj4gY2FsbF9lbmQgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlYXJyb3ctYXJyb3cgbWUtMlwiIGlkPVwidG9nZ2xlYXJyb3dcIiAoY2xpY2spPVwib25DbGlja0V4cGFuZChkYXRhKVwiPjxpIGNsYXNzPVwiZmEgZmEtYW5nbGUtcmlnaHRcIj48L2k+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsbC1jb250YWluZXIgcC0zIHRleHQtd2hpdGUgbW9kZWwtY29udGVudFwiICpuZ0lmPVwiaXNDbGlja0V4cGFuZFwiPiAgIFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxsLWFuaW1hdGlvblwiIFtuZ0NsYXNzXT1cInsnY2FsbC1hbmltYXRpb24tcGxheSc6IHNob3dSaW5nQW5pbWF0aW9ufVwiPlxuICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImF2YXRhci1pbWdcIiBbc3JjXT1cImluY29taW5nQ2FsbERhdGEuaW1nXCIgYWx0PVwiXCIgd2lkdGg9XCIxMDBcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LXdoaXRlXCI+e3tzZWxlY3RlZEluY29taW5nQ2FsbD8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5uYW1lIHx8ICctJ319PC9oMz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmLTEzXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWUtMlwiPlN1YmplY3Q6PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtMlwiPnt7c2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8uc3ViamVjdCB8fCAnLSd9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gIFxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZS0yXCI+RW1haWw6PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7c2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8uZW1haWwgfHwgJy0nfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+TnVtYmVyOjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+e3tzZWxlY3RlZEluY29taW5nQ2FsbD8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5udW1iZXJ9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+TGFuZ3VhZ2U6PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC0yXCI+e3tzZWxlY3RlZEluY29taW5nQ2FsbD8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5sYW5ndWFnZSB8fCAnLSd9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+RXh0ZW5zaW9uOjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtMlwiPnt7c2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8uZXh0ZW5zaW9uIHx8ICctJ319PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWUtMlwiPkltYWdlOjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZWxsaXBzaXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8uaW1hZ2UgJiYgc2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8uaW1hZ2UgIT09ICctJzsgZWxzZSBub0ltYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwie3tzZWxlY3RlZEluY29taW5nQ2FsbD8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5pbWFnZX19XCIgYWx0PVwiXCIgd2lkdGg9XCI0MlwiIGhlaWdodD1cIjQyXCIgY2xhc3M9XCJtbC0yXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9JbWFnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtbC0yXCI+Tm8gSW1hZ2UgQXZhaWxhYmxlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICBcbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBtYi00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+TWVzc2FnZTo8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZWxsaXBzaXNcIj57e3NlbGVjdGVkSW5jb21pbmdDYWxsPy51c2VySW5mbz8uYzJjSW5mb3JtYXRpb24/Lm1lc3NhZ2UgfHwgJy0nfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5Qb2ludCBOYW1lOjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPnt7c2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8ucG9pbnROYW1lIHx8ICctJ319PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlNvdXJjZSBOYW1lOjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPnt7c2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8uc291cmNlTmFtZSB8fCAnLSd9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxsLWFjdGlvbi1idG5zIG10LTBcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FsbC1idG4gcmVjZWl2ZS1idG5cIiAqbmdJZj1cIiFzZWxlY3RlZEluY29taW5nQ2FsbD8ucGFyYW1ldGVycz8uaXNDYWxsQ29ubmVjdGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiIChjbGljayk9XCJhY2NlcHRDYWxsRnJvbUxpc3Qoc2VsZWN0ZWRJbmNvbWluZ0NhbGwpXCI+IGNhbGwgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYWxsLWJ0biBtdXRlLWJ0blwiICpuZ0lmPVwic2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnBhcmFtZXRlcnM/LmlzQ2FsbENvbm5lY3RlZFwiICAoY2xpY2spPVwidG9nZ2xlTXV0ZShzZWxlY3RlZEluY29taW5nQ2FsbClcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZS1tdXRlJzogaXNNdXRlfVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIiAqbmdJZj1cImlzTXV0ZVwiPiBtaWNfb2ZmIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgKm5nSWY9XCIhaXNNdXRlXCI+IG1pYyA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbGwtYnRuIHJlamVjdC1idG5cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgKGNsaWNrKT1cInJlamVjdENhbGxGcm9tTGlzdChzZWxlY3RlZEluY29taW5nQ2FsbClcIj4gY2FsbF9lbmQgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwid2F2ZS1jb250YWluZXJcIj5cbiAgICAgICAgPHN2ZyBjbGFzcz1cIndhdmVzXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiXG4gICAgICAgICAgICB2aWV3Qm94PVwiMCAyNCAxNTAgMjhcIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiIHNoYXBlLXJlbmRlcmluZz1cImF1dG9cIiBbbmdTdHlsZV09XCJ7J3dpZHRoJzogJzc1NnB4J31cIj5cbiAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiZ2VudGxlLXdhdmVcIiBkPVwiTS0xNjAgNDRjMzAgMCA1OC0xOCA4OC0xOHMgNTggMTggODggMTggNTgtMTggODgtMTggNTggMTggODggMTggdjQ0aC0zNTJ6XCIgLz5cbiAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgIDxnIGNsYXNzPVwicGFyYWxsYXhcIj5cbiAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9XCIjZ2VudGxlLXdhdmVcIiB4PVwiNDhcIiB5PVwiMFwiIGZpbGw9XCJyZ2JhKDI1NSwyNTUsMjU1LDAuNylcIiAvPlxuICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj1cIiNnZW50bGUtd2F2ZVwiIHg9XCI0OFwiIHk9XCIzXCIgZmlsbD1cInJnYmEoMjU1LDI1NSwyNTUsMC41KVwiIC8+ICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPVwiI2dlbnRsZS13YXZlXCIgeD1cIjQ4XCIgeT1cIjdcIiBmaWxsPVwiI2ZmZlwiIC8+XG4gICAgICAgICAgICA8L2c+XG4gICAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
@@ -73,6 +73,7 @@ export class TwilioService {
73
73
  console.log("device created");
74
74
  this.device.register();
75
75
  this.device.on('incoming', (call) => {
76
+ console.log("incoming call", call);
76
77
  this.currentCall.next(call);
77
78
  this.callType.next('INCOMING');
78
79
  this.currentCallState.next('incoming');
@@ -191,4 +192,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
191
192
  providedIn: 'root'
192
193
  }]
193
194
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.ExtensionService }, { type: i3.NotificationService }]; } });
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHdpbGlvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWFsYm94L3NyYy9saWIvc2VydmljZS90d2lsaW8uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUdqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7O0FBYzNELE1BQU0sT0FBTyxhQUFhO0lBNEJ4QixZQUNVLElBQWdCLEVBQ2hCLGdCQUFrQyxFQUNsQyxtQkFBd0M7UUFGeEMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUE3QmxELDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzVELGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQWMsSUFBSSxDQUFDLENBQUM7UUFDckQscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQU0sTUFBTSxDQUFDLENBQUMsQ0FBQyxpQ0FBaUM7UUFJdEYsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFTLEtBQUssQ0FBQyxDQUFDO1FBQzlDLHlCQUFvQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDLENBQUMsaUNBQWlDO1FBQzdGLFVBQUssR0FBTyxZ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QUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQztTQUNqRCxDQUFDO1FBQ0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUssV0FBVyxDQUFDLE1BQU0sR0FBRyx5Q0FBeUMsR0FBRyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDcEgsQ0FBQzs7MkdBOU1VLGFBQWE7K0dBQWIsYUFBYSxjQUZaLE1BQU07NEZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgc2hhcmVSZXBsYXksIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERldmljZSwgQ2FsbCB9IGZyb20gJ0B0d2lsaW8vdm9pY2Utc2RrJztcbmltcG9ydCB7IEV4dGVuc2lvblNlcnZpY2UgfSBmcm9tICcuL2V4dGVuc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuL05vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlhbFBheWxvYWQge1xuICBudW1iZXI6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBpbWc6IHN0cmluZztcbiAgY2FsbGVySWQ6c3RyaW5nO1xuICBpc0RpYWxGcm9tSGlzdG9yeTpib29sZWFuO1xuICBmcm9tOnN0cmluZztcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcgIFxufSlcbmV4cG9ydCBjbGFzcyBUd2lsaW9TZXJ2aWNlIHtcbiAgXG4gIG9wZW5JblByb2dyZXNzRGlhbHBhZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBjdXJyZW50Q2FsbCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2FsbCB8IG51bGw+KG51bGwpO1xuICBjdXJyZW50Q2FsbFN0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KCdub25lJyk7IC8vaW4tcHJvZ3Jlc3MsIG91dC1wcm9ncmVzcywgbm9uZVxuICBkZXZpY2U6YW55O1xuICBpbmNvbWluZ0NhbGxUb2tlbj86c3RyaW5nO1xuICBvdXRnb2luZ0NhbGxUb2tlbj86c3RyaW5nO1xuICBjYWxsVHlwZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignTklMJyk7XG4gIGlzSW5jb21pbmdDYWxsUGlja2VkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7IC8vIGZvciBib3RoIGluY29taW5nIGFuZCBvdXRnb2luZ1xuICB0b2tlbjphbnkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJyk7XG4gIGlzTmV3Q29udGFjdEFkZGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHVwZGF0ZVJlY2VudENhbGwgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgY2FsbGhhbmRsZUZyb21Ob3RpZmljYXRpb24gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oe30pO1xuXG4gIGVuZENhbGwgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgZGlhbE51bWJlckZyb21PdGhlck1vZHVsZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGlhbFBheWxvYWQ+KHsgbnVtYmVyOiAnJywgbmFtZTogJycsIGltZzogJycsIGNhbGxlcklkOiAnJywgaXNEaWFsRnJvbUhpc3Rvcnk6IGZhbHNlLCBmcm9tOiAnJyB9KTtcblxuICB0b2dnbGVDYWxsZXJJZEFsZXJ0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgaXNUcmlhbE92ZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgaXNQYXltZW50RHVlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIGlzQXZhaWxhYmxlTnVtYmVyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIGNhbGxlcklkTGlzdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcbiAgdHJpZ2dlclNNU1JlbG9hZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgdG9rZW5Jbml0aWFsaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIHRva2VuSW5pdGlhbGl6YXRpb24kOiBPYnNlcnZhYmxlPGFueT4gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIFxuICAgIHByaXZhdGUgZXh0ZW5zaW9uU2VydmljZTogRXh0ZW5zaW9uU2VydmljZSxcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcml2Y2U6IE5vdGlmaWNhdGlvblNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pbml0aWFsaXplVG9rZW4oKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVRva2VuKCkge1xuICAgIGlmICh0aGlzLnRva2VuSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnRva2VuSW5pdGlhbGl6YXRpb24kIHx8IG9mKG51bGwpO1xuICAgIH1cblxuICAgIHRoaXMudG9rZW5Jbml0aWFsaXphdGlvbiQgPSB0aGlzLmV4dGVuc2lvblNlcnZpY2UuZ2V0SW5jb21pbmdDYWxsVG9rZW4oKS5waXBlKFxuICAgICAgdGFwKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxUb2tlbiA9IGRhdGEudG9rZW47XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdpbi10b2tlbicsIGRhdGEudG9rZW4pO1xuICAgICAgICB0aGlzLnRva2VuSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVEZXZpY2UoKTtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluaXRpYWxpemluZyBUd2lsaW8gdG9rZW46JywgZXJyb3IpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpIC8vIENhY2hlIHRoZSByZXN1bHQgZm9yIHN1YnNlcXVlbnQgc3Vic2NyaWJlcnNcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMudG9rZW5Jbml0aWFsaXphdGlvbiQ7XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGl6ZVR3aWxpb0RldmljZSgpIHtcbiAgICBpZiAodGhpcy50b2tlbkluaXRpYWxpemVkICYmIHRoaXMuaW5jb21pbmdDYWxsVG9rZW4pIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZURldmljZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVUb2tlbigpLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZURldmljZSgpIHtcbiAgICBpZiAodGhpcy5kZXZpY2UpIHtcbiAgICAgIHRoaXMuZGV2aWNlLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaW5jb21pbmdDYWxsVG9rZW4pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIFR3aWxpbyB0b2tlbiBhdmFpbGFibGUnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRldmljZSA9IG5ldyBEZXZpY2UodGhpcy5pbmNvbWluZ0NhbGxUb2tlbiwgeyBcbiAgICAgIGFsbG93SW5jb21pbmdXaGlsZUJ1c3k6IHRydWUsXG4gICAgICBjbG9zZVByb3RlY3Rpb246IHRydWVcbiAgICB9KTtcbiAgICBjb25zb2xlLmxvZyhcImRldmljZSBjcmVhdGVkXCIpXG4gICAgXG4gICAgdGhpcy5kZXZpY2UucmVnaXN0ZXIoKTtcblxuICAgIHRoaXMuZGV2aWNlLm9uKCdpbmNvbWluZycsIChjYWxsOiBDYWxsKSA9PiB7XG4gICAgICB0aGlzLmN1cnJlbnRDYWxsLm5leHQoY2FsbCk7XG4gICAgICB0aGlzLmNhbGxUeXBlLm5leHQoJ0lOQ09NSU5HJyk7XG4gICAgICB0aGlzLmN1cnJlbnRDYWxsU3RhdGUubmV4dCgnaW5jb21pbmcnKTtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VyaXZjZS5zaG93Tm90aWZpY2F0aW9uKGNhbGwpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kZXZpY2Uub24oJ2Vycm9yJywgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1R3aWxpbyBEZXZpY2UgRXJyb3I6JywgZXJyb3IpO1xuICAgICAgLy8gUmVzZXQgaW5pdGlhbGl6YXRpb24gc3RhdGUgb24gZXJyb3IgdG8gYWxsb3cgcmV0cnlcbiAgICAgIHRoaXMudG9rZW5Jbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kZXZpY2Uub24oJ3JlZ2lzdGVyZWQnLCAoKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnVHdpbGlvIERldmljZSByZWdpc3RlcmVkIHN1Y2Nlc3NmdWxseScpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kZXZpY2Uub24oJ3VucmVnaXN0ZXJlZCcsICgpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdUd2lsaW8gRGV2aWNlIHVucmVnaXN0ZXJlZCcpO1xuICAgICAgdGhpcy50b2tlbkluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICAvLyBvbkluY29taW5nQ2FsbCgpe1xuICAvLyAgIHRoaXMuZGV2aWNlLm9uKCdpbmNvbWluZycsIChjYWxsOmFueSkgPT4ge1xuICAvLyAgICAgY29uc29sZS5sb2coY2FsbCk7XG4gICAgIFxuICAvLyAgICAgLy9jYWxsLmFjY2VwdCgpO1xuICAvLyAgIH0pO1xuICAvLyB9XG4gIHNhdmVDb250YWN0KHBheWxvYWQ6IGFueSk6IE9ic2VydmFibGU8W10+IHtcbiAgICBjb25zdCBodHRwT3B0aW9ucyA9IHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJywgJ0F1dGgtS2V5JzogXCJCZWFyZXIgXCIgKyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJyl9KSB9O1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxbXT4oZW52aXJvbm1lbnQuYXBpVXJsICsgJy91dGlsaXRpZXMvcGhvbmVib29rL2FkZC9jb250YWN0cy9tYW51YWxseScsIHBheWxvYWQsIGh0dHBPcHRpb25zKTtcbiAgfVxuICB1cGRhdGVDb250YWN0KHBheWxvYWQ6YW55KXtcbiAgICBjb25zdCBodHRwT3B0aW9ucyA9IHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJywgJ0F1dGgtS2V5JzogXCJCZWFyZXIgXCIgKyB0aGlzLnRva2VufSkgfTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8W10+KGVudmlyb25tZW50LmFwaVVybCArICcvdXRpbGl0aWVzL3Bob25lYm9vay91cGRhdGUvY29udGFjdCcsIHBheWxvYWQsIGh0dHBPcHRpb25zKTtcbiAgfVxuICBcbiAgZGVsZXRlQ29udGFjdChpZDpzdHJpbmcpe1xuICAgIGxldCBwYXlsb2FkID0ge1xuICAgICAgcGhvbmVib29raWQ6IGlkXG4gICAgfVxuICAgIGNvbnN0IGh0dHBPcHRpb25zID0geyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCAnQXV0aC1LZXknOiBcIkJlYXJlciBcIiArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKSB9KSB9O1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxbXT4oZW52aXJvbm1lbnQuYXBpVXJsICsgJy91dGlsaXRpZXMvcGhvbmVib29rL2RlbGV0ZS9jb250YWN0LycraWQscGF5bG9hZCwgaHR0cE9wdGlvbnMpO1xuICB9XG4gIGdldENvbnRhY3RMaXN0KCl7XG4gICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsICdBdXRoLUtleSc6IFwiQmVhcmVyIFwiICsgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2V4dF90b2tlbicpIH0pIH07XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8W10+KGVudmlyb25tZW50LmFwaVVybCArICcvdXRpbGl0aWVzL3Bob25lYm9vay9yZWFkL2NvbnRhY3RzJywgaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgYWRkQ29udGFjdFRvRmF2b3VyaXRlKHBheWxvYWQ6IGFueSl7XG4gICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsICdBdXRoLUtleSc6IFwiQmVhcmVyIFwiICsgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2V4dF90b2tlbicpIH0pIH07XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFtdPihlbnZpcm9ubWVudC5hcGlVcmwgKyAnL3V0aWxpdGllcy9waG9uZWJvb2svdXBkYXRlL2Zhdm91cml0ZScsIHBheWxvYWQsIGh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldEZhdm91cml0Q29udGFjdHMoKXtcbiAgICBjb25zdCBodHRwT3B0aW9ucyA9IHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJywgJ0F1dGgtS2V5JzogXCJCZWFyZXIgXCIgKyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJykgfSkgfTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxbXT4oZW52aXJvbm1lbnQuYXBpVXJsICsgJy91dGlsaXRpZXMvcGhvbmVib29rL2Zhdm91cml0ZS9jb250YWN0cycsIGh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldFJlY2VudENhbGxzKHBhZ2VJbmRleD86IHN0cmluZywgcGFnZVNpemU/OiBzdHJpbmcsKXtcbiAgICAvLyBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICAvLyBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzaXplJywgcGFnZVNpemUpO1xuICAgIC8vIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3BhZ2UnLCBwYWdlSW5kZXgpO1xuICAgIGNvbnN0IGhlYWRlcnMgPSAgeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCAnQXV0aC1LZXknOiBcIkJlYXJlciBcIiArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKSB9O1xuICAgIGNvbnN0IGh0dHBPcHRpb25zID17aGVhZGVyc31cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxbXT4oZW52aXJvbm1lbnQuYXBpVXJsICsgJy91dGlsaXRpZXMvcGhvbmVib29rL3JlY2VudC9jYWxscycsIGh0dHBPcHRpb25zKTtcbiAgfVxuICBkZWxldGVSZWNlbnRDYWxsTG9nKGlkOnN0cmluZ3wgc3RyaW5nW10pe1xuICAgIGxldCBwYXlsb2FkID0ge1xuICAgICAgcmVjb3JkSWQ6IGlkXG4gICAgfVxuICAgIGNvbnN0IGh0dHBPcHRpb25zID0geyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCAnQXV0aC1LZXknOiBcIkJlYXJlciBcIiArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKSB9KSB9O1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxbXT4oZW52aXJvbm1lbnQuYXBpVXJsICsgJy91dGlsaXRpZXMvcGhvbmVib29rL2RlbGV0ZS9jYWxscy8nK2lkLHBheWxvYWQsIGh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIHVwbG9hZFBob3RvKHBheWxvYWQ6IGFueSl7XG4gICAgbGV0IGh0dHBPcHRpb25zID0ge1xuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgJ0F1dGgtS2V5JzogXCJCZWFyZXIgXCIgKyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJylcbiAgICAgIH0pXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8W10+KGVudmlyb25tZW50LmFwaVVybCArICcvdXRpbGl0aWVzL3Bob25lYm9vay91cGxvYWQvcGhvdG8nLHBheWxvYWQsIGh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGRlbGV0ZVBob3RvKGlkOnN0cmluZyl7XG4gICAgbGV0IHBheWxvYWQgPSB7XG4gICAgICBwaG9uZWJvb2tpZDogaWRcbiAgICB9XG4gICAgbGV0IGh0dHBPcHRpb25zID0ge1xuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgJ0F1dGgtS2V5JzogXCJCZWFyZXIgXCIgKyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJylcbiAgICAgIH0pXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8W10+KGVudmlyb25tZW50LmFwaVVybCArICcvdXRpbGl0aWVzL3Bob25lYm9vay9kZWxldGUvcGhvdG8vJytpZCxwYXlsb2FkLCBodHRwT3B0aW9ucyk7XG4gIH1cblxuICAvLyB0b2dnbGVDYWxsZXJJZEFsZXJ0Rm4odmFsOiBhbnkpIHtcbiAgLy8gICBsZXQgaHR0cE9wdGlvbnMgPSB7XG4gIC8vICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xuICAvLyAgICAgICAnQXV0aC1LZXknOiBcIkJlYXJlciBcIiArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKVxuICAvLyAgICAgfSlcbiAgLy8gICB9O1xuICAvLyAgIHJldHVybiB0aGlzLmh0dHAucHV0PFtdPihlbnZpcm9ubWVudC5hcGlVcmwgKyAnL3V0aWxpdGllcy9zb2Z0cGhvbmUvY2FsbGVyaWQvYWxlcnQvJyArIHZhbCwge30sIGh0dHBPcHRpb25zKTtcbiAgLy8gfVxuXG4gIHRvZ2dsZUNvdXRyeUNvZGVUb2FzdCh2YWw6YW55KXtcbiAgICBsZXQgaHR0cE9wdGlvbnMgPSB7XG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAnQXV0aC1LZXknOiBcIkJlYXJlciBcIiArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKVxuICAgICAgfSlcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PFtdPihlbnZpcm9ubWVudC5hcGlVcmwgKyAnL3V0aWxpdGllcy9zb2Z0cGhvbmUvY291bnRyeWNvZGUvYWxlcnQvJyArIHZhbCwge30sIGh0dHBPcHRpb25zKTtcbiAgfVxuICBnZXRUb051bWJlcihkaWFsbGVkTm86IHN0cmluZywgaXNvQ29kZTogc3RyaW5nKSB7XG4gICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCAnQXV0aC1LZXknOiBcIkJlYXJlciBcIiArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKSB9KSxcbiAgICAgIHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2lzb0NvZGUnLCBpc29Db2RlKVxuICAgIH07XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2lzb0NvZGUnLCBpc29Db2RlKVxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFtdPihlbnZpcm9ubWVudC5hcGlVcmwgKyAnL3V0aWxpdGllcy9zb2Z0cGhvbmUvY2hlY2svY291bnRyeUNvZGUvJyArIGRpYWxsZWRObywgaHR0cE9wdGlvbnMpO1xuICB9IFxuXG59XG4iXX0=
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHdpbGlvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWFsYm94L3NyYy9saWIvc2VydmljZS90d2lsaW8uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUdqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7O0FBYzNELE1BQU0sT0FBTyxhQUFhO0lBNEJ4QixZQUNVLElBQWdCLEVBQ2hCLGdCQUFrQyxFQUNsQyxtQkFBd0M7UUFGeEMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUE3QmxELDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzVELGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQWMsSUFBSSxDQUFDLENBQUM7UUFDckQscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQU0sTUFBTSxDQUFDLENBQUMsQ0FBQyxpQ0FBaUM7UUFJdEYsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFTLEtBQUssQ0FBQyxDQUFDO1FBQzlDLHlCQUFvQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDLENBQUMsaUNBQWlDO1FBQzdGLFVBQUssR0FBTyxZ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QUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUMzSCxNQUFNLEVBQUUsSUFBSSxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQztTQUNqRCxDQUFDO1FBQ0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUssV0FBVyxDQUFDLE1BQU0sR0FBRyx5Q0FBeUMsR0FBRyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDcEgsQ0FBQzs7MkdBL01VLGFBQWE7K0dBQWIsYUFBYSxjQUZaLE1BQU07NEZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgc2hhcmVSZXBsYXksIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERldmljZSwgQ2FsbCB9IGZyb20gJ0B0d2lsaW8vdm9pY2Utc2RrJztcbmltcG9ydCB7IEV4dGVuc2lvblNlcnZpY2UgfSBmcm9tICcuL2V4dGVuc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuL05vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlhbFBheWxvYWQge1xuICBudW1iZXI6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBpbWc6IHN0cmluZztcbiAgY2FsbGVySWQ6c3RyaW5nO1xuICBpc0RpYWxGcm9tSGlzdG9yeTpib29sZWFuO1xuICBmcm9tOnN0cmluZztcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcgIFxufSlcbmV4cG9ydCBjbGFzcyBUd2lsaW9TZXJ2aWNlIHtcbiAgXG4gIG9wZW5JblByb2dyZXNzRGlhbHBhZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBjdXJyZW50Q2FsbCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2FsbCB8IG51bGw+KG51bGwpO1xuICBjdXJyZW50Q2FsbFN0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KCdub25lJyk7IC8vaW4tcHJvZ3Jlc3MsIG91dC1wcm9ncmVzcywgbm9uZVxuICBkZXZpY2U6YW55O1xuICBpbmNvbWluZ0NhbGxUb2tlbj86c3RyaW5nO1xuICBvdXRnb2luZ0NhbGxUb2tlbj86c3RyaW5nO1xuICBjYWxsVHlwZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignTklMJyk7XG4gIGlzSW5jb21pbmdDYWxsUGlja2VkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7IC8vIGZvciBib3RoIGluY29taW5nIGFuZCBvdXRnb2luZ1xuICB0b2tlbjphbnkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJyk7XG4gIGlzTmV3Q29udGFjdEFkZGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHVwZGF0ZVJlY2VudENhbGwgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgY2FsbGhhbmRsZUZyb21Ob3RpZmljYXRpb24gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oe30pO1xuXG4gIGVuZENhbGwgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgZGlhbE51bWJlckZyb21PdGhlck1vZHVsZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGlhbFBheWxvYWQ+KHsgbnVtYmVyOiAnJywgbmFtZTogJycsIGltZzogJycsIGNhbGxlcklkOiAnJywgaXNEaWFsRnJvbUhpc3Rvcnk6IGZhbHNlLCBmcm9tOiAnJyB9KTtcblxuICB0b2dnbGVDYWxsZXJJZEFsZXJ0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgaXNUcmlhbE92ZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgaXNQYXltZW50RHVlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIGlzQXZhaWxhYmxlTnVtYmVyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIGNhbGxlcklkTGlzdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcbiAgdHJpZ2dlclNNU1JlbG9hZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgdG9rZW5Jbml0aWFsaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIHRva2VuSW5pdGlhbGl6YXRpb24kOiBPYnNlcnZhYmxlPGFueT4gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIFxuICAgIHByaXZhdGUgZXh0ZW5zaW9uU2VydmljZTogRXh0ZW5zaW9uU2VydmljZSxcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcml2Y2U6IE5vdGlmaWNhdGlvblNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pbml0aWFsaXplVG9rZW4oKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVRva2VuKCkge1xuICAgIGlmICh0aGlzLnRva2VuSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnRva2VuSW5pdGlhbGl6YXRpb24kIHx8IG9mKG51bGwpO1xuICAgIH1cblxuICAgIHRoaXMudG9rZW5Jbml0aWFsaXphdGlvbiQgPSB0aGlzLmV4dGVuc2lvblNlcnZpY2UuZ2V0SW5jb21pbmdDYWxsVG9rZW4oKS5waXBlKFxuICAgICAgdGFwKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxUb2tlbiA9IGRhdGEudG9rZW47XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdpbi10b2tlbicsIGRhdGEudG9rZW4pO1xuICAgICAgICB0aGlzLnRva2VuSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVEZXZpY2UoKTtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluaXRpYWxpemluZyBUd2lsaW8gdG9rZW46JywgZXJyb3IpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpIC8vIENhY2hlIHRoZSByZXN1bHQgZm9yIHN1YnNlcXVlbnQgc3Vic2NyaWJlcnNcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMudG9rZW5Jbml0aWFsaXphdGlvbiQ7XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGl6ZVR3aWxpb0RldmljZSgpIHtcbiAgICBpZiAodGhpcy50b2tlbkluaXRpYWxpemVkICYmIHRoaXMuaW5jb21pbmdDYWxsVG9rZW4pIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZURldmljZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVUb2tlbigpLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZURldmljZSgpIHtcbiAgICBpZiAodGhpcy5kZXZpY2UpIHtcbiAgICAgIHRoaXMuZGV2aWNlLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaW5jb21pbmdDYWxsVG9rZW4pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIFR3aWxpbyB0b2tlbiBhdmFpbGFibGUnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRldmljZSA9IG5ldyBEZXZpY2UodGhpcy5pbmNvbWluZ0NhbGxUb2tlbiwgeyBcbiAgICAgIGFsbG93SW5jb21pbmdXaGlsZUJ1c3k6IHRydWUsXG4gICAgICBjbG9zZVByb3RlY3Rpb246IHRydWVcbiAgICB9KTtcbiAgICBjb25zb2xlLmxvZyhcImRldmljZSBjcmVhdGVkXCIpXG4gICAgXG4gICAgdGhpcy5kZXZpY2UucmVnaXN0ZXIoKTtcblxuICAgIHRoaXMuZGV2aWNlLm9uKCdpbmNvbWluZycsIChjYWxsOiBDYWxsKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhcImluY29taW5nIGNhbGxcIixjYWxsKVxuICAgICAgdGhpcy5jdXJyZW50Q2FsbC5uZXh0KGNhbGwpO1xuICAgICAgdGhpcy5jYWxsVHlwZS5uZXh0KCdJTkNPTUlORycpO1xuICAgICAgdGhpcy5jdXJyZW50Q2FsbFN0YXRlLm5leHQoJ2luY29taW5nJyk7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcml2Y2Uuc2hvd05vdGlmaWNhdGlvbihjYWxsKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZGV2aWNlLm9uKCdlcnJvcicsIChlcnJvcjogYW55KSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKCdUd2lsaW8gRGV2aWNlIEVycm9yOicsIGVycm9yKTtcbiAgICAgIC8vIFJlc2V0IGluaXRpYWxpemF0aW9uIHN0YXRlIG9uIGVycm9yIHRvIGFsbG93IHJldHJ5XG4gICAgICB0aGlzLnRva2VuSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICB9KTtcblxuICAgIHRoaXMuZGV2aWNlLm9uKCdyZWdpc3RlcmVkJywgKCkgPT4ge1xuICAgICAgY29uc29sZS5sb2coJ1R3aWxpbyBEZXZpY2UgcmVnaXN0ZXJlZCBzdWNjZXNzZnVsbHknKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZGV2aWNlLm9uKCd1bnJlZ2lzdGVyZWQnLCAoKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnVHdpbGlvIERldmljZSB1bnJlZ2lzdGVyZWQnKTtcbiAgICAgIHRoaXMudG9rZW5Jbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gb25JbmNvbWluZ0NhbGwoKXtcbiAgLy8gICB0aGlzLmRldmljZS5vbignaW5jb21pbmcnLCAoY2FsbDphbnkpID0+IHtcbiAgLy8gICAgIGNvbnNvbGUubG9nKGNhbGwpO1xuICAgICBcbiAgLy8gICAgIC8vY2FsbC5hY2NlcHQoKTtcbiAgLy8gICB9KTtcbiAgLy8gfVxuICBzYXZlQ29udGFjdChwYXlsb2FkOiBhbnkpOiBPYnNlcnZhYmxlPFtdPiB7XG4gICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsICdBdXRoLUtleSc6IFwiQmVhcmVyIFwiICsgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2V4dF90b2tlbicpfSkgfTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8W10+KGVudmlyb25tZW50LmFwaVVybCArICcvdXRpbGl0aWVzL3Bob25lYm9vay9hZGQvY29udGFjdHMvbWFudWFsbHknLCBwYXlsb2FkLCBodHRwT3B0aW9ucyk7XG4gIH1cbiAgdXBkYXRlQ29udGFjdChwYXlsb2FkOmFueSl7XG4gICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsICdBdXRoLUtleSc6IFwiQmVhcmVyIFwiICsgdGhpcy50b2tlbn0pIH07XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFtdPihlbnZpcm9ubWVudC5hcGlVcmwgKyAnL3V0aWxpdGllcy9waG9uZWJvb2svdXBkYXRlL2NvbnRhY3QnLCBwYXlsb2FkLCBodHRwT3B0aW9ucyk7XG4gIH1cbiAgXG4gIGRlbGV0ZUNvbnRhY3QoaWQ6c3RyaW5nKXtcbiAgICBsZXQgcGF5bG9hZCA9IHtcbiAgICAgIHBob25lYm9va2lkOiBpZFxuICAgIH1cbiAgICBjb25zdCBodHRwT3B0aW9ucyA9IHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJywgJ0F1dGgtS2V5JzogXCJCZWFyZXIgXCIgKyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJykgfSkgfTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8W10+KGVudmlyb25tZW50LmFwaVVybCArICcvdXRpbGl0aWVzL3Bob25lYm9vay9kZWxldGUvY29udGFjdC8nK2lkLHBheWxvYWQsIGh0dHBPcHRpb25zKTtcbiAgfVxuICBnZXRDb250YWN0TGlzdCgpe1xuICAgIGNvbnN0IGh0dHBPcHRpb25zID0geyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCAnQXV0aC1LZXknOiBcIkJlYXJlciBcIiArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKSB9KSB9O1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFtdPihlbnZpcm9ubWVudC5hcGlVcmwgKyAnL3V0aWxpdGllcy9waG9uZWJvb2svcmVhZC9jb250YWN0cycsIGh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGFkZENvbnRhY3RUb0Zhdm91cml0ZShwYXlsb2FkOiBhbnkpe1xuICAgIGNvbnN0IGh0dHBPcHRpb25zID0geyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCAnQXV0aC1LZXknOiBcIkJlYXJlciBcIiArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKSB9KSB9O1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxbXT4oZW52aXJvbm1lbnQuYXBpVXJsICsgJy91dGlsaXRpZXMvcGhvbmVib29rL3VwZGF0ZS9mYXZvdXJpdGUnLCBwYXlsb2FkLCBodHRwT3B0aW9ucyk7XG4gIH1cblxuICBnZXRGYXZvdXJpdENvbnRhY3RzKCl7XG4gICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsICdBdXRoLUtleSc6IFwiQmVhcmVyIFwiICsgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2V4dF90b2tlbicpIH0pIH07XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8W10+KGVudmlyb25tZW50LmFwaVVybCArICcvdXRpbGl0aWVzL3Bob25lYm9vay9mYXZvdXJpdGUvY29udGFjdHMnLCBodHRwT3B0aW9ucyk7XG4gIH1cblxuICBnZXRSZWNlbnRDYWxscyhwYWdlSW5kZXg/OiBzdHJpbmcsIHBhZ2VTaXplPzogc3RyaW5nLCl7XG4gICAgLy8gbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgLy8gcGFyYW1zID0gcGFyYW1zLnNldCgnc2l6ZScsIHBhZ2VTaXplKTtcbiAgICAvLyBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwYWdlJywgcGFnZUluZGV4KTtcbiAgICBjb25zdCBoZWFkZXJzID0gIHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJywgJ0F1dGgtS2V5JzogXCJCZWFyZXIgXCIgKyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJykgfTtcbiAgICBjb25zdCBodHRwT3B0aW9ucyA9e2hlYWRlcnN9XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8W10+KGVudmlyb25tZW50LmFwaVVybCArICcvdXRpbGl0aWVzL3Bob25lYm9vay9yZWNlbnQvY2FsbHMnLCBodHRwT3B0aW9ucyk7XG4gIH1cbiAgZGVsZXRlUmVjZW50Q2FsbExvZyhpZDpzdHJpbmd8IHN0cmluZ1tdKXtcbiAgICBsZXQgcGF5bG9hZCA9IHtcbiAgICAgIHJlY29yZElkOiBpZFxuICAgIH1cbiAgICBjb25zdCBodHRwT3B0aW9ucyA9IHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJywgJ0F1dGgtS2V5JzogXCJCZWFyZXIgXCIgKyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJykgfSkgfTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8W10+KGVudmlyb25tZW50LmFwaVVybCArICcvdXRpbGl0aWVzL3Bob25lYm9vay9kZWxldGUvY2FsbHMvJytpZCxwYXlsb2FkLCBodHRwT3B0aW9ucyk7XG4gIH1cblxuICB1cGxvYWRQaG90byhwYXlsb2FkOiBhbnkpe1xuICAgIGxldCBodHRwT3B0aW9ucyA9IHtcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICdBdXRoLUtleSc6IFwiQmVhcmVyIFwiICsgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2V4dF90b2tlbicpXG4gICAgICB9KVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFtdPihlbnZpcm9ubWVudC5hcGlVcmwgKyAnL3V0aWxpdGllcy9waG9uZWJvb2svdXBsb2FkL3Bob3RvJyxwYXlsb2FkLCBodHRwT3B0aW9ucyk7XG4gIH1cblxuICBkZWxldGVQaG90byhpZDpzdHJpbmcpe1xuICAgIGxldCBwYXlsb2FkID0ge1xuICAgICAgcGhvbmVib29raWQ6IGlkXG4gICAgfVxuICAgIGxldCBodHRwT3B0aW9ucyA9IHtcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICdBdXRoLUtleSc6IFwiQmVhcmVyIFwiICsgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2V4dF90b2tlbicpXG4gICAgICB9KVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFtdPihlbnZpcm9ubWVudC5hcGlVcmwgKyAnL3V0aWxpdGllcy9waG9uZWJvb2svZGVsZXRlL3Bob3RvLycraWQscGF5bG9hZCwgaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgLy8gdG9nZ2xlQ2FsbGVySWRBbGVydEZuKHZhbDogYW55KSB7XG4gIC8vICAgbGV0IGh0dHBPcHRpb25zID0ge1xuICAvLyAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcbiAgLy8gICAgICAgJ0F1dGgtS2V5JzogXCJCZWFyZXIgXCIgKyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJylcbiAgLy8gICAgIH0pXG4gIC8vICAgfTtcbiAgLy8gICByZXR1cm4gdGhpcy5odHRwLnB1dDxbXT4oZW52aXJvbm1lbnQuYXBpVXJsICsgJy91dGlsaXRpZXMvc29mdHBob25lL2NhbGxlcmlkL2FsZXJ0LycgKyB2YWwsIHt9LCBodHRwT3B0aW9ucyk7XG4gIC8vIH1cblxuICB0b2dnbGVDb3V0cnlDb2RlVG9hc3QodmFsOmFueSl7XG4gICAgbGV0IGh0dHBPcHRpb25zID0ge1xuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgJ0F1dGgtS2V5JzogXCJCZWFyZXIgXCIgKyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJylcbiAgICAgIH0pXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxbXT4oZW52aXJvbm1lbnQuYXBpVXJsICsgJy91dGlsaXRpZXMvc29mdHBob25lL2NvdW50cnljb2RlL2FsZXJ0LycgKyB2YWwsIHt9LCBodHRwT3B0aW9ucyk7XG4gIH1cbiAgZ2V0VG9OdW1iZXIoZGlhbGxlZE5vOiBzdHJpbmcsIGlzb0NvZGU6IHN0cmluZykge1xuICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJywgJ0F1dGgtS2V5JzogXCJCZWFyZXIgXCIgKyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJykgfSksXG4gICAgICBwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdpc29Db2RlJywgaXNvQ29kZSlcbiAgICB9O1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdpc29Db2RlJywgaXNvQ29kZSlcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxbXT4oZW52aXJvbm1lbnQuYXBpVXJsICsgJy91dGlsaXRpZXMvc29mdHBob25lL2NoZWNrL2NvdW50cnlDb2RlLycgKyBkaWFsbGVkTm8sIGh0dHBPcHRpb25zKTtcbiAgfSBcblxufVxuIl19
@@ -1431,6 +1431,7 @@ class TwilioService {
1431
1431
  console.log("device created");
1432
1432
  this.device.register();
1433
1433
  this.device.on('incoming', (call) => {
1434
+ console.log("incoming call", call);
1434
1435
  this.currentCall.next(call);
1435
1436
  this.callType.next('INCOMING');
1436
1437
  this.currentCallState.next('incoming');
@@ -1623,25 +1624,50 @@ class IncomingCallComponent {
1623
1624
  });
1624
1625
  }
1625
1626
  rejectCallFromList(data) {
1626
- if (!data)
1627
- return;
1628
- if (data.reject)
1629
- data.reject();
1630
- if (data.disconnect)
1631
- data.disconnect();
1632
- if (data.parameters) {
1633
- data.parameters['isCallConnected'] = false; // Should be false when rejecting
1634
- }
1635
- if (data.customParameters) {
1636
- this.sendIPforIncomingCall(data.customParameters.get('twilioAuthId'), 'answered');
1637
- }
1638
- if (this.newIncomingCallsList && data && data.parameters && data.parameters.CallSid) {
1639
- this.newIncomingCallsList = this.newIncomingCallsList.filter((item) => item.parameters && item.parameters.CallSid !== data.parameters.CallSid);
1640
- this.incomingCallsNewList.emit(this.newIncomingCallsList);
1641
- if (this.newIncomingCallsList.length == 0) {
1627
+ var _a, _b;
1628
+ return __awaiter(this, void 0, void 0, function* () {
1629
+ if (!data)
1630
+ return;
1631
+ try {
1632
+ // First try to reject the call if it's incoming
1633
+ if (typeof data.reject === 'function') {
1634
+ data.reject();
1635
+ }
1636
+ // If reject doesn't work (e.g., for connected calls), try disconnect
1637
+ else if (typeof data.disconnect === 'function') {
1638
+ data.disconnect();
1639
+ }
1640
+ // Update call parameters
1641
+ if (data.parameters) {
1642
+ data.parameters['isCallConnected'] = false;
1643
+ }
1644
+ // Send call status update if we have auth ID
1645
+ if (data.customParameters) {
1646
+ const twilioAuthId = data.customParameters.get('twilioAuthId');
1647
+ if (twilioAuthId) {
1648
+ yield this.sendIPforIncomingCall(twilioAuthId, 'completed');
1649
+ }
1650
+ }
1651
+ // Remove call from the list
1652
+ if (this.newIncomingCallsList && ((_a = data.parameters) === null || _a === void 0 ? void 0 : _a.CallSid)) {
1653
+ this.newIncomingCallsList = this.newIncomingCallsList.filter((item) => { var _a; return ((_a = item.parameters) === null || _a === void 0 ? void 0 : _a.CallSid) !== data.parameters.CallSid; });
1654
+ this.incomingCallsNewList.emit([...this.newIncomingCallsList]);
1655
+ // Close the UI if no more calls
1656
+ if (this.newIncomingCallsList.length === 0) {
1657
+ this.closeIncomingCallDiv.emit({ show: 0, call: data });
1658
+ }
1659
+ }
1660
+ }
1661
+ catch (error) {
1662
+ console.error('Error rejecting call:', error);
1663
+ // Even if there's an error, try to clean up the UI
1664
+ if (this.newIncomingCallsList && ((_b = data.parameters) === null || _b === void 0 ? void 0 : _b.CallSid)) {
1665
+ this.newIncomingCallsList = this.newIncomingCallsList.filter((item) => { var _a; return ((_a = item.parameters) === null || _a === void 0 ? void 0 : _a.CallSid) !== data.parameters.CallSid; });
1666
+ this.incomingCallsNewList.emit([...this.newIncomingCallsList]);
1667
+ }
1642
1668
  this.closeIncomingCallDiv.emit({ show: 0, call: data });
1643
1669
  }
1644
- }
1670
+ });
1645
1671
  }
1646
1672
  closeIncomingCallWrapper(val) {
1647
1673
  this.closeIncomingCallDiv.emit({ show: val, call: this.twilioCallData });