igniteui-angular 12.3.43 → 12.3.45

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.
@@ -126,6 +126,16 @@ export class IgxAutocompleteDirective extends IgxDropDownItemNavigationDirective
126
126
  onInput() {
127
127
  this.open();
128
128
  }
129
+ /** @hidden @internal */
130
+ onCompositionStart() {
131
+ if (!this._composing) {
132
+ this._composing = true;
133
+ }
134
+ }
135
+ /** @hidden @internal */
136
+ onCompositionEnd() {
137
+ this._composing = false;
138
+ }
129
139
  /** @hidden @internal */
130
140
  onArrowDown(event) {
131
141
  event.preventDefault();
@@ -137,7 +147,7 @@ export class IgxAutocompleteDirective extends IgxDropDownItemNavigationDirective
137
147
  }
138
148
  /** @hidden @internal */
139
149
  handleKeyDown(event) {
140
- if (!this.collapsed) {
150
+ if (!this.collapsed && !this._composing) {
141
151
  switch (event.key.toLowerCase()) {
142
152
  case 'space':
143
153
  case 'spacebar':
@@ -284,6 +294,8 @@ IgxAutocompleteDirective.propDecorators = {
284
294
  ariaActiveDescendant: [{ type: HostBinding, args: ['attr.aria-activedescendant',] }],
285
295
  ariaAutocomplete: [{ type: HostBinding, args: ['attr.aria-autocomplete',] }],
286
296
  onInput: [{ type: HostListener, args: ['input',] }],
297
+ onCompositionStart: [{ type: HostListener, args: ['compositionstart',] }],
298
+ onCompositionEnd: [{ type: HostListener, args: ['compositionend',] }],
287
299
  onArrowDown: [{ type: HostListener, args: ['keydown.ArrowDown', ['$event'],] }, { type: HostListener, args: ['keydown.Alt.ArrowDown', ['$event'],] }, { type: HostListener, args: ['keydown.ArrowUp', ['$event'],] }, { type: HostListener, args: ['keydown.Alt.ArrowUp', ['$event'],] }],
288
300
  onTab: [{ type: HostListener, args: ['keydown.Tab',] }, { type: HostListener, args: ['keydown.Shift.Tab',] }]
289
301
  };
@@ -297,4 +309,4 @@ IgxAutocompleteModule.decorators = [
297
309
  exports: [IgxAutocompleteDirective]
298
310
  },] }
299
311
  ];
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaXJlY3RpdmVzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFFUixRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFHUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQ0gsc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUl2QixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFFSCxrQ0FBa0MsRUFDbEMsaUJBQWlCLEVBRXBCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUF3QnRFOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBS0gsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGtDQUFrQztJQThJNUUsWUFBMkQsT0FBZ0IsRUFDaEIsV0FBNEIsRUFDN0QsS0FBNkIsRUFDekMsVUFBc0IsRUFDdEIsR0FBc0I7UUFDaEMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBTDJDLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsZ0JBQVcsR0FB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QjsrQkFNeEMsV0FBVyxTQUFDLHdCQUF3QjtzQkF1QnBDLFlBQVksU0FBQyxPQUFPOzBCQU1wQixZQUFZLFNBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FDNUMsWUFBWSxTQUFDLHVCQUF1QixFQUFFLENBQUMsUUFBUSxDQUFDLGNBQ2hELFlBQVksU0FBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxjQUMxQyxZQUFZLFNBQUMscUJBQXFCLEVBQUUsQ0FBQyxRQUFRLENBQUM7b0JBTzlDLFlBQVksU0FBQyxhQUFhLGNBQzFCLFlBQVksU0FBQyxtQkFBbUI7O0FBeUlyQyxjQUFjO0FBTWQsTUFBTSxPQUFPLHFCQUFxQjs7O1lBTGpDLFFBQVEsU0FBQztnQkFDTixPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxZQUFZLENBQUM7Z0JBQzFDLFlBQVksRUFBRSxDQUFDLHdCQUF3QixDQUFDO2dCQUN4QyxPQUFPLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQzthQUN0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdNb2R1bGUsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTZWxmLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgT25Jbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdNb2RlbCwgRm9ybUNvbnRyb2xOYW1lIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENhbmNlbGFibGVFdmVudEFyZ3MsIElCYXNlRXZlbnRBcmdzIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQge1xuICAgIEFic29sdXRlU2Nyb2xsU3RyYXRlZ3ksXG4gICAgQXV0b1Bvc2l0aW9uU3RyYXRlZ3ksXG4gICAgSVBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgSVNjcm9sbFN0cmF0ZWd5LFxuICAgIE92ZXJsYXlTZXR0aW5nc1xufSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wdWJsaWNfYXBpJztcbmltcG9ydCB7XG4gICAgSWd4RHJvcERvd25Db21wb25lbnQsXG4gICAgSWd4RHJvcERvd25JdGVtTmF2aWdhdGlvbkRpcmVjdGl2ZSxcbiAgICBJZ3hEcm9wRG93bk1vZHVsZSxcbiAgICBJU2VsZWN0aW9uRXZlbnRBcmdzXG59IGZyb20gJy4uLy4uL2Ryb3AtZG93bi9wdWJsaWNfYXBpJztcbmltcG9ydCB7IElneElucHV0R3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pbnB1dC1ncm91cC9wdWJsaWNfYXBpJztcbmltcG9ydCB7IElneE92ZXJsYXlPdXRsZXREaXJlY3RpdmUgfSBmcm9tICcuLi90b2dnbGUvdG9nZ2xlLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogSW50ZXJmYWNlIHRoYXQgZW5jYXBzdWxhdGVzIG9uSXRlbVNlbGVjdGlvbiBldmVudCBhcmd1bWVudHMgLSBuZXcgdmFsdWUgYW5kIGNhbmNlbCBzZWxlY3Rpb24uXG4gKlxuICogQGV4cG9ydFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5naW5nRXZlbnRBcmdzIGV4dGVuZHMgQ2FuY2VsYWJsZUV2ZW50QXJncywgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKlxuICAgICAqIE5ldyB2YWx1ZSBzZWxlY3RlZCBmcm9tIHRoZSBkcm9wIGRvd25cbiAgICAgKi9cbiAgICB2YWx1ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9jb21wbGV0ZU92ZXJsYXlTZXR0aW5ncyB7XG4gICAgLyoqIFBvc2l0aW9uIHN0cmF0ZWd5IHRvIHVzZSB3aXRoIHRoaXMgc2V0dGluZ3MgKi9cbiAgICBwb3NpdGlvblN0cmF0ZWd5PzogSVBvc2l0aW9uU3RyYXRlZ3k7XG4gICAgLyoqIFNjcm9sbCBzdHJhdGVneSB0byB1c2Ugd2l0aCB0aGlzIHNldHRpbmdzICovXG4gICAgc2Nyb2xsU3RyYXRlZ3k/OiBJU2Nyb2xsU3RyYXRlZ3k7XG4gICAgLyoqIFNldCB0aGUgb3V0bGV0IGNvbnRhaW5lciB0byBhdHRhY2ggdGhlIG92ZXJsYXkgdG8gKi9cbiAgICBvdXRsZXQ/OiBJZ3hPdmVybGF5T3V0bGV0RGlyZWN0aXZlIHwgRWxlbWVudFJlZjtcbn1cblxuLyoqXG4gKiAqKklnbml0ZSBVSSBmb3IgQW5ndWxhciBBdXRvY29tcGxldGUqKiAtXG4gKiBbRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly93d3cuaW5mcmFnaXN0aWNzLmNvbS9wcm9kdWN0cy9pZ25pdGUtdWktYW5ndWxhci9hbmd1bGFyL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlLmh0bWwpXG4gKlxuICogVGhlIGlneEF1dG9jb21wbGV0ZSBkaXJlY3RpdmUgcHJvdmlkZXMgYSB3YXkgdG8gZW5oYW5jZSBhIHRleHQgaW5wdXRcbiAqIGJ5IHNob3dpbmcgYSBkcm9wIGRvd24gb2Ygc3VnZ2VzdGVkIG9wdGlvbnMsIHByb3ZpZGVkIGJ5IHRoZSBkZXZlbG9wZXIuXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYGh0bWxcbiAqIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtpZ3hBdXRvY29tcGxldGVdPVwidG93bnNQYW5lbFwiICNhdXRvY29tcGxldGVSZWY9XCJpZ3hBdXRvY29tcGxldGVcIi8+XG4gKiA8aWd4LWRyb3AtZG93biAjdG93bnNQYW5lbD5cbiAqICAgICA8aWd4LWRyb3AtZG93bi1pdGVtICpuZ0Zvcj1cImxldCB0b3duIG9mIHRvd25zIHwgc3RhcnRzV2l0aDp0b3duU2VsZWN0ZWRcIiBbdmFsdWVdPVwidG93blwiPlxuICogICAgICAgICB7e3Rvd259fVxuICogICAgIDwvaWd4LWRyb3AtZG93bi1pdGVtPlxuICogPC9pZ3gtZHJvcC1kb3duPlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneEF1dG9jb21wbGV0ZV0nLFxuICAgIGV4cG9ydEFzOiAnaWd4QXV0b2NvbXBsZXRlJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hBdXRvY29tcGxldGVEaXJlY3RpdmUgZXh0ZW5kcyBJZ3hEcm9wRG93bkl0ZW1OYXZpZ2F0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBPbkluaXQge1xuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHRhcmdldCBvZiB0aGUgYXV0b2NvbXBsZXRlIGRpcmVjdGl2ZVxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS0gU2V0IC0tPlxuICAgICAqIDxpbnB1dCBbaWd4QXV0b2NvbXBsZXRlXT1cImRyb3Bkb3duXCIgLz5cbiAgICAgKiAuLi5cbiAgICAgKiA8aWd4LWRyb3AtZG93biAjZHJvcGRvd24+XG4gICAgICogLi4uXG4gICAgICogPC9pZ3gtZHJvcC1kb3duPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4QXV0b2NvbXBsZXRlJylcbiAgICBwdWJsaWMgZ2V0IHRhcmdldCgpOiBJZ3hEcm9wRG93bkNvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YXJnZXQgYXMgSWd4RHJvcERvd25Db21wb25lbnQ7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgdGFyZ2V0KHY6IElneERyb3BEb3duQ29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMuX3RhcmdldCA9IHY7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvdmlkZSBvdmVybGF5IHNldHRpbmdzIGZvciB0aGUgYXV0b2NvbXBsZXRlIGRyb3AgZG93blxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBzZXR0aW5ncyA9IHRoaXMuYXV0b2NvbXBsZXRlLmF1dG9jb21wbGV0ZVNldHRpbmdzO1xuICAgICAqIGBgYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2lneEF1dG9jb21wbGV0ZV09XCJ0b3duc1BhbmVsXCIgW2lneEF1dG9jb21wbGV0ZVNldHRpbmdzXT1cInNldHRpbmdzXCIvPlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBzZXRcbiAgICAgKiB0aGlzLnNldHRpbmdzID0ge1xuICAgICAqICBwb3NpdGlvblN0cmF0ZWd5OiBuZXcgQ29ubmVjdGVkUG9zaXRpb25pbmdTdHJhdGVneSh7XG4gICAgICogICAgICBjbG9zZUFuaW1hdGlvbjogbnVsbCxcbiAgICAgKiAgICAgIG9wZW5BbmltYXRpb246IG51bGxcbiAgICAgKiAgfSlcbiAgICAgKiB9O1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4QXV0b2NvbXBsZXRlU2V0dGluZ3MnKVxuICAgIHB1YmxpYyBhdXRvY29tcGxldGVTZXR0aW5nczogQXV0b2NvbXBsZXRlT3ZlcmxheVNldHRpbmdzO1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmF1dG9jb21wbGV0ZScpXG4gICAgcHVibGljIGF1dG9maWxsID0gJ29mZic7XG5cbiAgICAvKiogQGhpZGRlbiAgQGludGVybmFsICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKVxuICAgIHB1YmxpYyByb2xlID0gJ2NvbWJvYm94JztcblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMvZGlzYWJsZXMgYXV0b2NvbXBsZXRlIGNvbXBvbmVudFxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBkaXNhYmxlZCA9IHRoaXMuYXV0b2NvbXBsZXRlLmRpc2FibGVkO1xuICAgICAqIGBgYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2lneEF1dG9jb21wbGV0ZV09XCJ0b3duc1BhbmVsXCIgW2lneEF1dG9jb21wbGV0ZURpc2FibGVkXT1cImRpc2FibGVkXCIvPlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBzZXRcbiAgICAgKiBwdWJsaWMgZGlzYWJsZWQgPSB0cnVlO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4QXV0b2NvbXBsZXRlRGlzYWJsZWQnKVxuICAgIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCBhZnRlciBpdGVtIGZyb20gdGhlIGRyb3AgZG93biBpcyBzZWxlY3RlZFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpbnB1dCBpZ3hJbnB1dCBbaWd4QXV0b2NvbXBsZXRlXT1cInRvd25zUGFuZWxcIiAoc2VsZWN0aW9uQ2hhbmdpbmcpPSdzZWxlY3Rpb25DaGFuZ2luZygkZXZlbnQpJyAvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBzZWxlY3Rpb25DaGFuZ2luZyA9IG5ldyBFdmVudEVtaXR0ZXI8QXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdpbmdFdmVudEFyZ3M+KCk7XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IG5hdGl2ZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IHBhcmVudEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5ncm91cCA/IHRoaXMuZ3JvdXAuZWxlbWVudC5uYXRpdmVFbGVtZW50IDogdGhpcy5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IHNldHRpbmdzKCk6IE92ZXJsYXlTZXR0aW5ncyB7XG4gICAgICAgIGNvbnN0IHNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5kZWZhdWx0U2V0dGluZ3MsIHRoaXMuYXV0b2NvbXBsZXRlU2V0dGluZ3MpO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBzZXR0aW5ncy50YXJnZXQgfHwgc2V0dGluZ3MucG9zaXRpb25TdHJhdGVneS5zZXR0aW5ncy50YXJnZXQ7XG4gICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5Q2xvbmU6IElQb3NpdGlvblN0cmF0ZWd5ID0gc2V0dGluZ3MucG9zaXRpb25TdHJhdGVneS5jbG9uZSgpO1xuICAgICAgICAgICAgc2V0dGluZ3MudGFyZ2V0ID0gdGhpcy5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgc2V0dGluZ3MucG9zaXRpb25TdHJhdGVneSA9IHBvc2l0aW9uU3RyYXRlZ3lDbG9uZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2V0dGluZ3M7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWV4cGFuZGVkJylcbiAgICBwdWJsaWMgZ2V0IGFyaWFFeHBhbmRlZCgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmNvbGxhcHNlZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAgQGludGVybmFsICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtaGFzcG9wdXAnKVxuICAgIHB1YmxpYyBnZXQgaGFzUG9wVXAoKSB7XG4gICAgICAgIHJldHVybiAnbGlzdGJveCc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLW93bnMnKVxuICAgIHB1YmxpYyBnZXQgYXJpYU93bnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhcmdldC5saXN0SWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKVxuICAgIHB1YmxpYyBnZXQgYXJpYUFjdGl2ZURlc2NlbmRhbnQoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy50YXJnZXQuY29sbGFwc2VkICYmIHRoaXMudGFyZ2V0LmZvY3VzZWRJdGVtID8gdGhpcy50YXJnZXQuZm9jdXNlZEl0ZW0uaWQgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICBAaW50ZXJuYWwgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1hdXRvY29tcGxldGUnKVxuICAgIHB1YmxpYyBnZXQgYXJpYUF1dG9jb21wbGV0ZSgpIHtcbiAgICAgICAgcmV0dXJuICdsaXN0JztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaWQ6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgZ2V0IG1vZGVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5uZ01vZGVsIHx8IHRoaXMuZm9ybUNvbnRyb2w7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2hvdWxkQmVPcGVuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHJpdmF0ZSBkZWZhdWx0U2V0dGluZ3M6IE92ZXJsYXlTZXR0aW5ncztcblxuICAgIGNvbnN0cnVjdG9yKEBTZWxmKCkgQE9wdGlvbmFsKCkgQEluamVjdChOZ01vZGVsKSBwcm90ZWN0ZWQgbmdNb2RlbDogTmdNb2RlbCxcbiAgICAgICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBASW5qZWN0KEZvcm1Db250cm9sTmFtZSkgcHJvdGVjdGVkIGZvcm1Db250cm9sOiBGb3JtQ29udHJvbE5hbWUsXG4gICAgICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBncm91cDogSWd4SW5wdXRHcm91cENvbXBvbmVudCxcbiAgICAgICAgcHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgICAgIHN1cGVyKG51bGwpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICBAaW50ZXJuYWwgKi9cbiAgICBASG9zdExpc3RlbmVyKCdpbnB1dCcpXG4gICAgcHVibGljIG9uSW5wdXQoKSB7XG4gICAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICBAaW50ZXJuYWwgKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLkFycm93RG93bicsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5BbHQuQXJyb3dEb3duJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLkFycm93VXAnLCBbJyRldmVudCddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uQWx0LkFycm93VXAnLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkFycm93RG93bihldmVudDogRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uVGFiJylcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLlNoaWZ0LlRhYicpXG4gICAgcHVibGljIG9uVGFiKCkge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBoYW5kbGVLZXlEb3duKGV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnc3BhY2ViYXInOlxuICAgICAgICAgICAgICAgIGNhc2UgJyAnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2hvbWUnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBzdXBlci5oYW5kbGVLZXlEb3duKGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgb25BcnJvd0Rvd25LZXlEb3duKCkge1xuICAgICAgICBzdXBlci5vbkFycm93RG93bktleURvd24oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAgQGludGVybmFsICovXG4gICAgcHVibGljIG9uQXJyb3dVcEtleURvd24oKSB7XG4gICAgICAgIHN1cGVyLm9uQXJyb3dVcEtleURvd24oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAgQGludGVybmFsICovXG4gICAgcHVibGljIG9uRW5kS2V5RG93bigpIHtcbiAgICAgICAgc3VwZXIub25FbmRLZXlEb3duKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBvbkhvbWVLZXlEb3duKCkge1xuICAgICAgICBzdXBlci5vbkhvbWVLZXlEb3duKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIGF1dG9jb21wbGV0ZSBkcm9wIGRvd25cbiAgICAgKi9cbiAgICBwdWJsaWMgY2xvc2UoKSB7XG4gICAgICAgIHRoaXMuX3Nob3VsZEJlT3BlbiA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRhcmdldC5jbG9zZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIGF1dG9jb21wbGV0ZSBkcm9wIGRvd25cbiAgICAgKi9cbiAgICBwdWJsaWMgb3BlbigpIHtcbiAgICAgICAgdGhpcy5fc2hvdWxkQmVPcGVuID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMuY29sbGFwc2VkIHx8IHRoaXMudGFyZ2V0LmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlmIG5vIGRyb3AtZG93biB3aWR0aCBpcyBzZXQsIHRoZSBkcm9wLWRvd24gd2lsbCBiZSBhcyB3aWRlIGFzIHRoZSBhdXRvY29tcGxldGUgaW5wdXQ7XG4gICAgICAgIHRoaXMudGFyZ2V0LndpZHRoID0gdGhpcy50YXJnZXQud2lkdGggfHwgKHRoaXMucGFyZW50RWxlbWVudC5jbGllbnRXaWR0aCArICdweCcpO1xuICAgICAgICB0aGlzLnRhcmdldC5vcGVuKHRoaXMuc2V0dGluZ3MpO1xuICAgICAgICB0aGlzLmhpZ2hsaWdodEZpcnN0SXRlbSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IHRoaXMucGFyZW50RWxlbWVudDtcbiAgICAgICAgdGhpcy5kZWZhdWx0U2V0dGluZ3MgPSB7XG4gICAgICAgICAgICB0YXJnZXQ6IHRhcmdldEVsZW1lbnQsXG4gICAgICAgICAgICBtb2RhbDogZmFsc2UsXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogbmV3IEFic29sdXRlU2Nyb2xsU3RyYXRlZ3koKSxcbiAgICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IG5ldyBBdXRvUG9zaXRpb25TdHJhdGVneSgpLFxuICAgICAgICAgICAgZXhjbHVkZUZyb21PdXRzaWRlQ2xpY2s6IFt0YXJnZXRFbGVtZW50XVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMudGFyZ2V0LmNoaWxkcmVuLmNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy50YXJnZXQuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZ2hsaWdodEZpcnN0SXRlbSgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fc2hvdWxkQmVPcGVuKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gX3Nob3VsZEJlT3BlbiBmbGFnIHNob3VsZCByZW1haW4gdW5jaGFuZ2VkIHNpbmNlIHRoaXMgc3RhdGUgY2hhbmdlIGRvZXNuJ3QgY29tZSBmcm9tIG91dHNpZGUgb2YgdGhlIGNvbXBvbmVudFxuICAgICAgICAgICAgICAgIC8vIChsaWtlIGluIHRoZSBjYXNlIG9mIHB1YmxpYyBBUEkgb3IgdXNlciBpbnRlcmFjdGlvbikuXG4gICAgICAgICAgICAgICAgdGhpcy50YXJnZXQuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudGFyZ2V0LnNlbGVjdGlvbkNoYW5naW5nLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUodGhpcy5zZWxlY3QuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgY29sbGFwc2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50YXJnZXQgPyB0aGlzLnRhcmdldC5jb2xsYXBzZWQgOiB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2VsZWN0KHZhbHVlOiBJU2VsZWN0aW9uRXZlbnRBcmdzKSB7XG4gICAgICAgIGlmICghdmFsdWUubmV3U2VsZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWUuY2FuY2VsID0gdHJ1ZTsgLy8gRGlzYWJsZSBzZWxlY3Rpb24gaW4gdGhlIGRyb3AgZG93biwgYmVjYXVzZSBpbiBhdXRvY29tcGxldGUgd2UgZG8gbm90IHNhdmUgc2VsZWN0aW9uLlxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHZhbHVlLm5ld1NlbGVjdGlvbi52YWx1ZTtcbiAgICAgICAgY29uc3QgYXJnczogQXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdpbmdFdmVudEFyZ3MgPSB7IHZhbHVlOiBuZXdWYWx1ZSwgY2FuY2VsOiBmYWxzZSB9O1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5naW5nLmVtaXQoYXJncyk7XG4gICAgICAgIGlmIChhcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcblxuICAgICAgICAvLyBVcGRhdGUgbW9kZWwgYWZ0ZXIgdGhlIGlucHV0IGlzIHJlLWZvY3VzZWQsIGluIG9yZGVyIHRvIGhhdmUgcHJvcGVyIHZhbGlkIHN0eWxpbmcuXG4gICAgICAgIC8vIE90aGVyd2lzZSB3aGVuIGl0ZW0gaXMgc2VsZWN0ZWQgdXNpbmcgbW91c2UgKGFuZCBpbnB1dCBpcyBibHVycmVkKSwgdGhlbiB2YWxpZCBzdHlsZSB3aWxsIGJlIHJlbW92ZWQuXG4gICAgICAgIGlmICh0aGlzLm1vZGVsKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGVsLmNvbnRyb2wuc2V0VmFsdWUobmV3VmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBoaWdobGlnaHRGaXJzdEl0ZW0oKSB7XG4gICAgICAgIGlmICh0aGlzLnRhcmdldC5mb2N1c2VkSXRlbSkge1xuICAgICAgICAgICAgdGhpcy50YXJnZXQuZm9jdXNlZEl0ZW0uZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50YXJnZXQuZm9jdXNlZEl0ZW0gPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGFyZ2V0Lm5hdmlnYXRlRmlyc3QoKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH07XG59XG5cbi8qKiBAaGlkZGVuICovXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtJZ3hEcm9wRG93bk1vZHVsZSwgQ29tbW9uTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtJZ3hBdXRvY29tcGxldGVEaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtJZ3hBdXRvY29tcGxldGVEaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIElneEF1dG9jb21wbGV0ZU1vZHVsZSB7IH1cbiJdfQ==
312
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaXJlY3RpdmVzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFFUixRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFHUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQ0gsc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUl2QixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFFSCxrQ0FBa0MsRUFDbEMsaUJBQWlCLEVBRXBCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUF3QnRFOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBS0gsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGtDQUFrQztJQStJNUUsWUFBMkQsT0FBZ0IsRUFDaEIsV0FBNEIsRUFDN0QsS0FBNkIsRUFDekMsVUFBc0IsRUFDdEIsR0FBc0I7UUFDaEMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBTDJDLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsZ0JBQVcsR0FB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LGlCQUFpQjttQ0E2QnZCLEtBQUssU0FBQyx5QkFBeUI7dUJBSS9CLFdBQVcsU0FBQyxtQkFBbUI7bUJBSS9CLFdBQVcsU0FBQyxXQUFXO3VCQW1CdkIsS0FBSyxTQUFDLHlCQUF5QjtnQ0FVL0IsTUFBTTsyQkF5Qk4sV0FBVyxTQUFDLG9CQUFvQjt1QkFNaEMsV0FBVyxTQUFDLG9CQUFvQjt1QkFNaEMsV0FBVyxTQUFDLGdCQUFnQjttQ0FNNUIsV0FBVyxTQUFDLDRCQUE0QjsrQkFNeEMsV0FBVyxTQUFDLHdCQUF3QjtzQkF3QnBDLFlBQVksU0FBQyxPQUFPO2lDQU1wQixZQUFZLFNBQUMsa0JBQWtCOytCQVEvQixZQUFZLFNBQUMsZ0JBQWdCOzBCQU03QixZQUFZLFNBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FDNUMsWUFBWSxTQUFDLHVCQUF1QixFQUFFLENBQUMsUUFBUSxDQUFDLGNBQ2hELFlBQVksU0FBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxjQUMxQyxZQUFZLFNBQUMscUJBQXFCLEVBQUUsQ0FBQyxRQUFRLENBQUM7b0JBTzlDLFlBQVksU0FBQyxhQUFhLGNBQzFCLFlBQVksU0FBQyxtQkFBbUI7O0FBeUlyQyxjQUFjO0FBTWQsTUFBTSxPQUFPLHFCQUFxQjs7O1lBTGpDLFFBQVEsU0FBQztnQkFDTixPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxZQUFZLENBQUM7Z0JBQzFDLFlBQVksRUFBRSxDQUFDLHdCQUF3QixDQUFDO2dCQUN4QyxPQUFPLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQzthQUN0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdNb2R1bGUsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTZWxmLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgT25Jbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdNb2RlbCwgRm9ybUNvbnRyb2xOYW1lIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENhbmNlbGFibGVFdmVudEFyZ3MsIElCYXNlRXZlbnRBcmdzIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQge1xuICAgIEFic29sdXRlU2Nyb2xsU3RyYXRlZ3ksXG4gICAgQXV0b1Bvc2l0aW9uU3RyYXRlZ3ksXG4gICAgSVBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgSVNjcm9sbFN0cmF0ZWd5LFxuICAgIE92ZXJsYXlTZXR0aW5nc1xufSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wdWJsaWNfYXBpJztcbmltcG9ydCB7XG4gICAgSWd4RHJvcERvd25Db21wb25lbnQsXG4gICAgSWd4RHJvcERvd25JdGVtTmF2aWdhdGlvbkRpcmVjdGl2ZSxcbiAgICBJZ3hEcm9wRG93bk1vZHVsZSxcbiAgICBJU2VsZWN0aW9uRXZlbnRBcmdzXG59IGZyb20gJy4uLy4uL2Ryb3AtZG93bi9wdWJsaWNfYXBpJztcbmltcG9ydCB7IElneElucHV0R3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pbnB1dC1ncm91cC9wdWJsaWNfYXBpJztcbmltcG9ydCB7IElneE92ZXJsYXlPdXRsZXREaXJlY3RpdmUgfSBmcm9tICcuLi90b2dnbGUvdG9nZ2xlLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogSW50ZXJmYWNlIHRoYXQgZW5jYXBzdWxhdGVzIG9uSXRlbVNlbGVjdGlvbiBldmVudCBhcmd1bWVudHMgLSBuZXcgdmFsdWUgYW5kIGNhbmNlbCBzZWxlY3Rpb24uXG4gKlxuICogQGV4cG9ydFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5naW5nRXZlbnRBcmdzIGV4dGVuZHMgQ2FuY2VsYWJsZUV2ZW50QXJncywgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKlxuICAgICAqIE5ldyB2YWx1ZSBzZWxlY3RlZCBmcm9tIHRoZSBkcm9wIGRvd25cbiAgICAgKi9cbiAgICB2YWx1ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9jb21wbGV0ZU92ZXJsYXlTZXR0aW5ncyB7XG4gICAgLyoqIFBvc2l0aW9uIHN0cmF0ZWd5IHRvIHVzZSB3aXRoIHRoaXMgc2V0dGluZ3MgKi9cbiAgICBwb3NpdGlvblN0cmF0ZWd5PzogSVBvc2l0aW9uU3RyYXRlZ3k7XG4gICAgLyoqIFNjcm9sbCBzdHJhdGVneSB0byB1c2Ugd2l0aCB0aGlzIHNldHRpbmdzICovXG4gICAgc2Nyb2xsU3RyYXRlZ3k/OiBJU2Nyb2xsU3RyYXRlZ3k7XG4gICAgLyoqIFNldCB0aGUgb3V0bGV0IGNvbnRhaW5lciB0byBhdHRhY2ggdGhlIG92ZXJsYXkgdG8gKi9cbiAgICBvdXRsZXQ/OiBJZ3hPdmVybGF5T3V0bGV0RGlyZWN0aXZlIHwgRWxlbWVudFJlZjtcbn1cblxuLyoqXG4gKiAqKklnbml0ZSBVSSBmb3IgQW5ndWxhciBBdXRvY29tcGxldGUqKiAtXG4gKiBbRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly93d3cuaW5mcmFnaXN0aWNzLmNvbS9wcm9kdWN0cy9pZ25pdGUtdWktYW5ndWxhci9hbmd1bGFyL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlLmh0bWwpXG4gKlxuICogVGhlIGlneEF1dG9jb21wbGV0ZSBkaXJlY3RpdmUgcHJvdmlkZXMgYSB3YXkgdG8gZW5oYW5jZSBhIHRleHQgaW5wdXRcbiAqIGJ5IHNob3dpbmcgYSBkcm9wIGRvd24gb2Ygc3VnZ2VzdGVkIG9wdGlvbnMsIHByb3ZpZGVkIGJ5IHRoZSBkZXZlbG9wZXIuXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYGh0bWxcbiAqIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtpZ3hBdXRvY29tcGxldGVdPVwidG93bnNQYW5lbFwiICNhdXRvY29tcGxldGVSZWY9XCJpZ3hBdXRvY29tcGxldGVcIi8+XG4gKiA8aWd4LWRyb3AtZG93biAjdG93bnNQYW5lbD5cbiAqICAgICA8aWd4LWRyb3AtZG93bi1pdGVtICpuZ0Zvcj1cImxldCB0b3duIG9mIHRvd25zIHwgc3RhcnRzV2l0aDp0b3duU2VsZWN0ZWRcIiBbdmFsdWVdPVwidG93blwiPlxuICogICAgICAgICB7e3Rvd259fVxuICogICAgIDwvaWd4LWRyb3AtZG93bi1pdGVtPlxuICogPC9pZ3gtZHJvcC1kb3duPlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneEF1dG9jb21wbGV0ZV0nLFxuICAgIGV4cG9ydEFzOiAnaWd4QXV0b2NvbXBsZXRlJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hBdXRvY29tcGxldGVEaXJlY3RpdmUgZXh0ZW5kcyBJZ3hEcm9wRG93bkl0ZW1OYXZpZ2F0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBPbkluaXQge1xuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHRhcmdldCBvZiB0aGUgYXV0b2NvbXBsZXRlIGRpcmVjdGl2ZVxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS0gU2V0IC0tPlxuICAgICAqIDxpbnB1dCBbaWd4QXV0b2NvbXBsZXRlXT1cImRyb3Bkb3duXCIgLz5cbiAgICAgKiAuLi5cbiAgICAgKiA8aWd4LWRyb3AtZG93biAjZHJvcGRvd24+XG4gICAgICogLi4uXG4gICAgICogPC9pZ3gtZHJvcC1kb3duPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4QXV0b2NvbXBsZXRlJylcbiAgICBwdWJsaWMgZ2V0IHRhcmdldCgpOiBJZ3hEcm9wRG93bkNvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YXJnZXQgYXMgSWd4RHJvcERvd25Db21wb25lbnQ7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgdGFyZ2V0KHY6IElneERyb3BEb3duQ29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMuX3RhcmdldCA9IHY7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvdmlkZSBvdmVybGF5IHNldHRpbmdzIGZvciB0aGUgYXV0b2NvbXBsZXRlIGRyb3AgZG93blxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBzZXR0aW5ncyA9IHRoaXMuYXV0b2NvbXBsZXRlLmF1dG9jb21wbGV0ZVNldHRpbmdzO1xuICAgICAqIGBgYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2lneEF1dG9jb21wbGV0ZV09XCJ0b3duc1BhbmVsXCIgW2lneEF1dG9jb21wbGV0ZVNldHRpbmdzXT1cInNldHRpbmdzXCIvPlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBzZXRcbiAgICAgKiB0aGlzLnNldHRpbmdzID0ge1xuICAgICAqICBwb3NpdGlvblN0cmF0ZWd5OiBuZXcgQ29ubmVjdGVkUG9zaXRpb25pbmdTdHJhdGVneSh7XG4gICAgICogICAgICBjbG9zZUFuaW1hdGlvbjogbnVsbCxcbiAgICAgKiAgICAgIG9wZW5BbmltYXRpb246IG51bGxcbiAgICAgKiAgfSlcbiAgICAgKiB9O1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4QXV0b2NvbXBsZXRlU2V0dGluZ3MnKVxuICAgIHB1YmxpYyBhdXRvY29tcGxldGVTZXR0aW5nczogQXV0b2NvbXBsZXRlT3ZlcmxheVNldHRpbmdzO1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmF1dG9jb21wbGV0ZScpXG4gICAgcHVibGljIGF1dG9maWxsID0gJ29mZic7XG5cbiAgICAvKiogQGhpZGRlbiAgQGludGVybmFsICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKVxuICAgIHB1YmxpYyByb2xlID0gJ2NvbWJvYm94JztcblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMvZGlzYWJsZXMgYXV0b2NvbXBsZXRlIGNvbXBvbmVudFxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBkaXNhYmxlZCA9IHRoaXMuYXV0b2NvbXBsZXRlLmRpc2FibGVkO1xuICAgICAqIGBgYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2lneEF1dG9jb21wbGV0ZV09XCJ0b3duc1BhbmVsXCIgW2lneEF1dG9jb21wbGV0ZURpc2FibGVkXT1cImRpc2FibGVkXCIvPlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBzZXRcbiAgICAgKiBwdWJsaWMgZGlzYWJsZWQgPSB0cnVlO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4QXV0b2NvbXBsZXRlRGlzYWJsZWQnKVxuICAgIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCBhZnRlciBpdGVtIGZyb20gdGhlIGRyb3AgZG93biBpcyBzZWxlY3RlZFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpbnB1dCBpZ3hJbnB1dCBbaWd4QXV0b2NvbXBsZXRlXT1cInRvd25zUGFuZWxcIiAoc2VsZWN0aW9uQ2hhbmdpbmcpPSdzZWxlY3Rpb25DaGFuZ2luZygkZXZlbnQpJyAvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBzZWxlY3Rpb25DaGFuZ2luZyA9IG5ldyBFdmVudEVtaXR0ZXI8QXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdpbmdFdmVudEFyZ3M+KCk7XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IG5hdGl2ZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IHBhcmVudEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5ncm91cCA/IHRoaXMuZ3JvdXAuZWxlbWVudC5uYXRpdmVFbGVtZW50IDogdGhpcy5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IHNldHRpbmdzKCk6IE92ZXJsYXlTZXR0aW5ncyB7XG4gICAgICAgIGNvbnN0IHNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5kZWZhdWx0U2V0dGluZ3MsIHRoaXMuYXV0b2NvbXBsZXRlU2V0dGluZ3MpO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBzZXR0aW5ncy50YXJnZXQgfHwgc2V0dGluZ3MucG9zaXRpb25TdHJhdGVneS5zZXR0aW5ncy50YXJnZXQ7XG4gICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5Q2xvbmU6IElQb3NpdGlvblN0cmF0ZWd5ID0gc2V0dGluZ3MucG9zaXRpb25TdHJhdGVneS5jbG9uZSgpO1xuICAgICAgICAgICAgc2V0dGluZ3MudGFyZ2V0ID0gdGhpcy5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgc2V0dGluZ3MucG9zaXRpb25TdHJhdGVneSA9IHBvc2l0aW9uU3RyYXRlZ3lDbG9uZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2V0dGluZ3M7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWV4cGFuZGVkJylcbiAgICBwdWJsaWMgZ2V0IGFyaWFFeHBhbmRlZCgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmNvbGxhcHNlZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAgQGludGVybmFsICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtaGFzcG9wdXAnKVxuICAgIHB1YmxpYyBnZXQgaGFzUG9wVXAoKSB7XG4gICAgICAgIHJldHVybiAnbGlzdGJveCc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLW93bnMnKVxuICAgIHB1YmxpYyBnZXQgYXJpYU93bnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhcmdldC5saXN0SWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKVxuICAgIHB1YmxpYyBnZXQgYXJpYUFjdGl2ZURlc2NlbmRhbnQoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy50YXJnZXQuY29sbGFwc2VkICYmIHRoaXMudGFyZ2V0LmZvY3VzZWRJdGVtID8gdGhpcy50YXJnZXQuZm9jdXNlZEl0ZW0uaWQgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICBAaW50ZXJuYWwgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1hdXRvY29tcGxldGUnKVxuICAgIHB1YmxpYyBnZXQgYXJpYUF1dG9jb21wbGV0ZSgpIHtcbiAgICAgICAgcmV0dXJuICdsaXN0JztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2NvbXBvc2luZzogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgaWQ6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgZ2V0IG1vZGVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5uZ01vZGVsIHx8IHRoaXMuZm9ybUNvbnRyb2w7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2hvdWxkQmVPcGVuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHJpdmF0ZSBkZWZhdWx0U2V0dGluZ3M6IE92ZXJsYXlTZXR0aW5ncztcblxuICAgIGNvbnN0cnVjdG9yKEBTZWxmKCkgQE9wdGlvbmFsKCkgQEluamVjdChOZ01vZGVsKSBwcm90ZWN0ZWQgbmdNb2RlbDogTmdNb2RlbCxcbiAgICAgICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBASW5qZWN0KEZvcm1Db250cm9sTmFtZSkgcHJvdGVjdGVkIGZvcm1Db250cm9sOiBGb3JtQ29udHJvbE5hbWUsXG4gICAgICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBncm91cDogSWd4SW5wdXRHcm91cENvbXBvbmVudCxcbiAgICAgICAgcHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgICAgIHN1cGVyKG51bGwpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICBAaW50ZXJuYWwgKi9cbiAgICBASG9zdExpc3RlbmVyKCdpbnB1dCcpXG4gICAgcHVibGljIG9uSW5wdXQoKSB7XG4gICAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2NvbXBvc2l0aW9uc3RhcnQnKVxuICAgIHB1YmxpYyBvbkNvbXBvc2l0aW9uU3RhcnQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fY29tcG9zaW5nKSB7XG4gICAgICAgICAgICB0aGlzLl9jb21wb3NpbmcgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQEhvc3RMaXN0ZW5lcignY29tcG9zaXRpb25lbmQnKVxuICAgIHB1YmxpYyBvbkNvbXBvc2l0aW9uRW5kKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb21wb3NpbmcgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAgQGludGVybmFsICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5BcnJvd0Rvd24nLCBbJyRldmVudCddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uQWx0LkFycm93RG93bicsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5BcnJvd1VwJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLkFsdC5BcnJvd1VwJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25BcnJvd0Rvd24oZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICBAaW50ZXJuYWwgKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLlRhYicpXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5TaGlmdC5UYWInKVxuICAgIHB1YmxpYyBvblRhYigpIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaGFuZGxlS2V5RG93bihldmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuY29sbGFwc2VkICYmICF0aGlzLl9jb21wb3NpbmcpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnc3BhY2ViYXInOlxuICAgICAgICAgICAgICAgIGNhc2UgJyAnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2hvbWUnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBzdXBlci5oYW5kbGVLZXlEb3duKGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgb25BcnJvd0Rvd25LZXlEb3duKCkge1xuICAgICAgICBzdXBlci5vbkFycm93RG93bktleURvd24oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAgQGludGVybmFsICovXG4gICAgcHVibGljIG9uQXJyb3dVcEtleURvd24oKSB7XG4gICAgICAgIHN1cGVyLm9uQXJyb3dVcEtleURvd24oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAgQGludGVybmFsICovXG4gICAgcHVibGljIG9uRW5kS2V5RG93bigpIHtcbiAgICAgICAgc3VwZXIub25FbmRLZXlEb3duKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBvbkhvbWVLZXlEb3duKCkge1xuICAgICAgICBzdXBlci5vbkhvbWVLZXlEb3duKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIGF1dG9jb21wbGV0ZSBkcm9wIGRvd25cbiAgICAgKi9cbiAgICBwdWJsaWMgY2xvc2UoKSB7XG4gICAgICAgIHRoaXMuX3Nob3VsZEJlT3BlbiA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRhcmdldC5jbG9zZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIGF1dG9jb21wbGV0ZSBkcm9wIGRvd25cbiAgICAgKi9cbiAgICBwdWJsaWMgb3BlbigpIHtcbiAgICAgICAgdGhpcy5fc2hvdWxkQmVPcGVuID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMuY29sbGFwc2VkIHx8IHRoaXMudGFyZ2V0LmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlmIG5vIGRyb3AtZG93biB3aWR0aCBpcyBzZXQsIHRoZSBkcm9wLWRvd24gd2lsbCBiZSBhcyB3aWRlIGFzIHRoZSBhdXRvY29tcGxldGUgaW5wdXQ7XG4gICAgICAgIHRoaXMudGFyZ2V0LndpZHRoID0gdGhpcy50YXJnZXQud2lkdGggfHwgKHRoaXMucGFyZW50RWxlbWVudC5jbGllbnRXaWR0aCArICdweCcpO1xuICAgICAgICB0aGlzLnRhcmdldC5vcGVuKHRoaXMuc2V0dGluZ3MpO1xuICAgICAgICB0aGlzLmhpZ2hsaWdodEZpcnN0SXRlbSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IHRoaXMucGFyZW50RWxlbWVudDtcbiAgICAgICAgdGhpcy5kZWZhdWx0U2V0dGluZ3MgPSB7XG4gICAgICAgICAgICB0YXJnZXQ6IHRhcmdldEVsZW1lbnQsXG4gICAgICAgICAgICBtb2RhbDogZmFsc2UsXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogbmV3IEFic29sdXRlU2Nyb2xsU3RyYXRlZ3koKSxcbiAgICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IG5ldyBBdXRvUG9zaXRpb25TdHJhdGVneSgpLFxuICAgICAgICAgICAgZXhjbHVkZUZyb21PdXRzaWRlQ2xpY2s6IFt0YXJnZXRFbGVtZW50XVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMudGFyZ2V0LmNoaWxkcmVuLmNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy50YXJnZXQuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZ2hsaWdodEZpcnN0SXRlbSgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fc2hvdWxkQmVPcGVuKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gX3Nob3VsZEJlT3BlbiBmbGFnIHNob3VsZCByZW1haW4gdW5jaGFuZ2VkIHNpbmNlIHRoaXMgc3RhdGUgY2hhbmdlIGRvZXNuJ3QgY29tZSBmcm9tIG91dHNpZGUgb2YgdGhlIGNvbXBvbmVudFxuICAgICAgICAgICAgICAgIC8vIChsaWtlIGluIHRoZSBjYXNlIG9mIHB1YmxpYyBBUEkgb3IgdXNlciBpbnRlcmFjdGlvbikuXG4gICAgICAgICAgICAgICAgdGhpcy50YXJnZXQuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudGFyZ2V0LnNlbGVjdGlvbkNoYW5naW5nLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUodGhpcy5zZWxlY3QuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgY29sbGFwc2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50YXJnZXQgPyB0aGlzLnRhcmdldC5jb2xsYXBzZWQgOiB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2VsZWN0KHZhbHVlOiBJU2VsZWN0aW9uRXZlbnRBcmdzKSB7XG4gICAgICAgIGlmICghdmFsdWUubmV3U2VsZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWUuY2FuY2VsID0gdHJ1ZTsgLy8gRGlzYWJsZSBzZWxlY3Rpb24gaW4gdGhlIGRyb3AgZG93biwgYmVjYXVzZSBpbiBhdXRvY29tcGxldGUgd2UgZG8gbm90IHNhdmUgc2VsZWN0aW9uLlxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHZhbHVlLm5ld1NlbGVjdGlvbi52YWx1ZTtcbiAgICAgICAgY29uc3QgYXJnczogQXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdpbmdFdmVudEFyZ3MgPSB7IHZhbHVlOiBuZXdWYWx1ZSwgY2FuY2VsOiBmYWxzZSB9O1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5naW5nLmVtaXQoYXJncyk7XG4gICAgICAgIGlmIChhcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcblxuICAgICAgICAvLyBVcGRhdGUgbW9kZWwgYWZ0ZXIgdGhlIGlucHV0IGlzIHJlLWZvY3VzZWQsIGluIG9yZGVyIHRvIGhhdmUgcHJvcGVyIHZhbGlkIHN0eWxpbmcuXG4gICAgICAgIC8vIE90aGVyd2lzZSB3aGVuIGl0ZW0gaXMgc2VsZWN0ZWQgdXNpbmcgbW91c2UgKGFuZCBpbnB1dCBpcyBibHVycmVkKSwgdGhlbiB2YWxpZCBzdHlsZSB3aWxsIGJlIHJlbW92ZWQuXG4gICAgICAgIGlmICh0aGlzLm1vZGVsKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGVsLmNvbnRyb2wuc2V0VmFsdWUobmV3VmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBoaWdobGlnaHRGaXJzdEl0ZW0oKSB7XG4gICAgICAgIGlmICh0aGlzLnRhcmdldC5mb2N1c2VkSXRlbSkge1xuICAgICAgICAgICAgdGhpcy50YXJnZXQuZm9jdXNlZEl0ZW0uZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50YXJnZXQuZm9jdXNlZEl0ZW0gPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGFyZ2V0Lm5hdmlnYXRlRmlyc3QoKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH07XG59XG5cbi8qKiBAaGlkZGVuICovXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtJZ3hEcm9wRG93bk1vZHVsZSwgQ29tbW9uTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtJZ3hBdXRvY29tcGxldGVEaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtJZ3hBdXRvY29tcGxldGVEaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIElneEF1dG9jb21wbGV0ZU1vZHVsZSB7IH1cbiJdfQ==
@@ -51,7 +51,7 @@ export class IgxTreeGridRowComponent extends IgxRowDirective {
51
51
  if (isPinnedArea) {
52
52
  treeRec = this.grid.unpinnedRecords.find(x => x.data === this.rowData);
53
53
  }
54
- return treeRec.level === 0;
54
+ return (treeRec === null || treeRec === void 0 ? void 0 : treeRec.level) === 0;
55
55
  }
56
56
  /**
57
57
  * @hidden
@@ -140,4 +140,4 @@ IgxTreeGridRowComponent.propDecorators = {
140
140
  treeRow: [{ type: Input }],
141
141
  expanded: [{ type: HostBinding, args: ['attr.aria-expanded',] }]
142
142
  };
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ncmlkLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvdHJlZS1ncmlkL3RyZWUtZ3JpZC1yb3cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQWEsV0FBVyxFQUFXLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQVVuRCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsZUFBcUM7SUFXOUU7Ozs7Ozs7T0FPRztJQUNILElBQ1csT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBVyxPQUFPLENBQUMsS0FBc0I7UUFDckMsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEtBQUssRUFBRTtZQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1NBQ3JDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQVcsTUFBTSxDQUFDLEtBQWM7UUFDNUIsSUFBSSxLQUFLLEVBQUU7WUFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDaEM7YUFBTTtZQUNILElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNsQztJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQVcsTUFBTTtRQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFD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R0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUMsRUFBRSxDQUFDO2FBQ3BHOzs7cUJBRUksWUFBWSxTQUFDLFVBQVU7c0JBa0J2QixLQUFLO3VCQWdFTCxXQUFXLFNBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgVmlld0NoaWxkcmVuLCBRdWVyeUxpc3QsIEhvc3RCaW5kaW5nLCBEb0NoZWNrLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWd4VHJlZUdyaWRDb21wb25lbnQgfSBmcm9tICcuL3RyZWUtZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4Um93RGlyZWN0aXZlIH0gZnJvbSAnLi4vcm93LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJVHJlZUdyaWRSZWNvcmQgfSBmcm9tICcuL3RyZWUtZ3JpZC5pbnRlcmZhY2VzJztcbmltcG9ydCB7IElneFRyZWVHcmlkQVBJU2VydmljZSB9IGZyb20gJy4vdHJlZS1ncmlkLWFwaS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc2VsZWN0b3I6ICdpZ3gtdHJlZS1ncmlkLXJvdycsXG4gICAgdGVtcGxhdGVVcmw6ICd0cmVlLWdyaWQtcm93LmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IElneFJvd0RpcmVjdGl2ZSwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSWd4VHJlZUdyaWRSb3dDb21wb25lbnQpIH1dXG59KVxuZXhwb3J0IGNsYXNzIElneFRyZWVHcmlkUm93Q29tcG9uZW50IGV4dGVuZHMgSWd4Um93RGlyZWN0aXZlPElneFRyZWVHcmlkQ29tcG9uZW50PiBpbXBsZW1lbnRzIERvQ2hlY2sge1xuICAgIEBWaWV3Q2hpbGRyZW4oJ3RyZWVDZWxsJylcbiAgICBwcm90ZWN0ZWQgX2NlbGxzOiBRdWVyeUxpc3Q8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgaXNMb2FkaW5nOiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBfdHJlZVJvdzogSVRyZWVHcmlkUmVjb3JkO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGBJVHJlZUdyaWRSZWNvcmRgIHBhc3NlZCB0byB0aGUgcm93IGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCByb3cgPSB0aGlzLmdyaWQuZ2V0Um93QnlLZXkoMSkgYXMgSWd4VHJlZUdyaWRSb3dDb21wb25lbnQ7XG4gICAgICogY29uc3QgdHJlZVJvdyA9IHJvdy50cmVlUm93O1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCB0cmVlUm93KCk6IElUcmVlR3JpZFJlY29yZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl90cmVlUm93O1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgdHJlZVJvdyh2YWx1ZTogSVRyZWVHcmlkUmVjb3JkKSB7XG4gICAgICAgIGlmICh0aGlzLl90cmVlUm93ICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fdHJlZVJvdyA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5yb3dEYXRhID0gdGhpcy5fdHJlZVJvdy5kYXRhO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB3aGV0aGVyIHRoZSByb3cgaXMgcGlubmVkLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgYGZhbHNlYC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5ncmlkLnNlbGVjdGVkUm93c1swXS5waW5uZWQgPSB0cnVlO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXQgcGlubmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5ncmlkLnBpblJvdyh0aGlzLnJvd0lEKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC51bnBpblJvdyh0aGlzLnJvd0lEKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgd2hldGhlciB0aGUgcm93IGlzIHBpbm5lZC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGlzUGlubmVkID0gcm93LnBpbm5lZDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHBpbm5lZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5pc1JlY29yZFBpbm5lZCh0aGlzLl90cmVlUm93KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBpc1Jvb3QoKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCB0cmVlUmVjID0gdGhpcy50cmVlUm93O1xuICAgICAgICBjb25zdCBpc1Bpbm5lZEFyZWEgPSB0aGlzLnBpbm5lZCAmJiAhdGhpcy5kaXNhYmxlZDtcbiAgICAgICAgaWYgKGlzUGlubmVkQXJlYSkge1xuICAgICAgICAgICAgdHJlZVJlYyA9IHRoaXMuZ3JpZC51bnBpbm5lZFJlY29yZHMuZmluZCh4ID0+IHguZGF0YSA9PT0gdGhpcy5yb3dEYXRhKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJlZVJlYy5sZXZlbCA9PT0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBoYXNDaGlsZHJlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgcm93IGNvbXBvbmVudCBpcyBleHBhbmRlZC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCByb3cgPSB0aGlzLmdyaWQuZ2V0Um93QnlLZXkoMSkgYXMgSWd4VHJlZUdyaWRSb3dDb21wb25lbnQ7XG4gICAgICogY29uc3QgZXhwYW5kZWQgPSByb3cuZXhwYW5kZWQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZXhwYW5kZWQnKVxuICAgIHB1YmxpYyBnZXQgZXhwYW5kZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90cmVlUm93LmV4cGFuZGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHJvdyBjb21wb25lbnQgaXMgZXhwYW5kZWQuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3Qgcm93ID0gdGhpcy5ncmlkLmdldFJvd0J5S2V5KDEpIGFzIElneFRyZWVHcmlkUm93Q29tcG9uZW50O1xuICAgICAqIHJvdy5leHBhbmRlZCA9IHRydWU7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldCBleHBhbmRlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICAodGhpcy5ncmlkQVBJIGFzIElneFRyZWVHcmlkQVBJU2VydmljZSkuc2V0X3Jvd19leHBhbnNpb25fc3RhdGUodGhpcy5fdHJlZVJvdy5yb3dJRCwgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHZpZXdJbmRleCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmRleCArIHRoaXMuZ3JpZC5wYWdlICogdGhpcy5ncmlkLnBlclBhZ2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc2hvd0luZGljYXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5sb2FkQ2hpbGRyZW5PbkRlbWFuZCA/XG4gICAgICAgICAgICB0aGlzLmdyaWQuZXhwYW5zaW9uU3RhdGVzLmhhcyh0aGlzLnJvd0lEKSA/XG4gICAgICAgICAgICAgICAgdGhpcy50cmVlUm93LmNoaWxkcmVuICYmIHRoaXMudHJlZVJvdy5jaGlsZHJlbi5sZW5ndGggOlxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5oYXNDaGlsZHJlbktleSA/XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm93RGF0YVt0aGlzLmdyaWQuaGFzQ2hpbGRyZW5LZXldIDpcbiAgICAgICAgICAgICAgICAgICAgdHJ1ZSA6XG4gICAgICAgICAgICB0aGlzLnRyZWVSb3cuY2hpbGRyZW4gJiYgdGhpcy50cmVlUm93LmNoaWxkcmVuLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBpbmRldGVybWluYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmlzUm93SW5JbmRldGVybWluYXRlU3RhdGUodGhpcy5yb3dJRCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ0RvQ2hlY2soKSB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdGhpcy5ncmlkLmxvYWRDaGlsZHJlbk9uRGVtYW5kID8gdGhpcy5ncmlkLmxvYWRpbmdSb3dzLmhhcyh0aGlzLnJvd0lEKSA6IGZhbHNlO1xuICAgICAgICBzdXBlci5uZ0RvQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTcGF3bnMgdGhlIGFkZCBjaGlsZCByb3cgVUkgZm9yIHRoZSBzcGVjaWZpYyByb3cuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCByb3cgPSB0aGlzLmdyaWQuZ2V0Um93QnlLZXkoMSkgYXMgSWd4VHJlZUdyaWRSb3dDb21wb25lbnQ7XG4gICAgICogcm93LmJlZ2luQWRkQ2hpbGQoKTtcbiAgICAgKiBgYGBcbiAgICAgKiBAcGFyYW0gcm93SURcbiAgICAgKi9cbiAgICBwdWJsaWMgYmVnaW5BZGRDaGlsZCgpIHtcbiAgICAgICAgdGhpcy5ncmlkLmNydWRTZXJ2aWNlLmVudGVyQWRkUm93TW9kZSh0aGlzLCB0cnVlKTtcbiAgICB9XG59XG4iXX0=
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ncmlkLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvdHJlZS1ncmlkL3RyZWUtZ3JpZC1yb3cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQWEsV0FBVyxFQUFXLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQVVuRCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsZUFBcUM7SUFXOUU7Ozs7Ozs7T0FPRztJQUNILElBQ1csT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBVyxPQUFPLENBQUMsS0FBc0I7UUFDckMsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEtBQUssRUFBRTtZQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1NBQ3JDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQVcsTUFBTSxDQUFDLEtBQWM7UUFDNUIsSUFBSSxLQUFLLEVBQUU7WUFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDaEM7YUFBTTtZQUNILElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNsQztJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQVcsTUFBTTtRQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFD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LEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUM7YUFDcEc7OztxQkFFSSxZQUFZLFNBQUMsVUFBVTtzQkFrQnZCLEtBQUs7dUJBZ0VMLFdBQVcsU0FBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBWaWV3Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgSG9zdEJpbmRpbmcsIERvQ2hlY2ssIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hUcmVlR3JpZENvbXBvbmVudCB9IGZyb20gJy4vdHJlZS1ncmlkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hSb3dEaXJlY3RpdmUgfSBmcm9tICcuLi9yb3cuZGlyZWN0aXZlJztcbmltcG9ydCB7IElUcmVlR3JpZFJlY29yZCB9IGZyb20gJy4vdHJlZS1ncmlkLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgSWd4VHJlZUdyaWRBUElTZXJ2aWNlIH0gZnJvbSAnLi90cmVlLWdyaWQtYXBpLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzZWxlY3RvcjogJ2lneC10cmVlLWdyaWQtcm93JyxcbiAgICB0ZW1wbGF0ZVVybDogJ3RyZWUtZ3JpZC1yb3cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogSWd4Um93RGlyZWN0aXZlLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJZ3hUcmVlR3JpZFJvd0NvbXBvbmVudCkgfV1cbn0pXG5leHBvcnQgY2xhc3MgSWd4VHJlZUdyaWRSb3dDb21wb25lbnQgZXh0ZW5kcyBJZ3hSb3dEaXJlY3RpdmU8SWd4VHJlZUdyaWRDb21wb25lbnQ+IGltcGxlbWVudHMgRG9DaGVjayB7XG4gICAgQFZpZXdDaGlsZHJlbigndHJlZUNlbGwnKVxuICAgIHByb3RlY3RlZCBfY2VsbHM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBpc0xvYWRpbmc6IGJvb2xlYW47XG5cbiAgICBwcml2YXRlIF90cmVlUm93OiBJVHJlZUdyaWRSZWNvcmQ7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYElUcmVlR3JpZFJlY29yZGAgcGFzc2VkIHRvIHRoZSByb3cgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IHJvdyA9IHRoaXMuZ3JpZC5nZXRSb3dCeUtleSgxKSBhcyBJZ3hUcmVlR3JpZFJvd0NvbXBvbmVudDtcbiAgICAgKiBjb25zdCB0cmVlUm93ID0gcm93LnRyZWVSb3c7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHRyZWVSb3coKTogSVRyZWVHcmlkUmVjb3JkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyZWVSb3c7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCB0cmVlUm93KHZhbHVlOiBJVHJlZUdyaWRSZWNvcmQpIHtcbiAgICAgICAgaWYgKHRoaXMuX3RyZWVSb3cgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl90cmVlUm93ID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLnJvd0RhdGEgPSB0aGlzLl90cmVlUm93LmRhdGE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHdoZXRoZXIgdGhlIHJvdyBpcyBwaW5uZWQuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBgZmFsc2VgLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmdyaWQuc2VsZWN0ZWRSb3dzWzBdLnBpbm5lZCA9IHRydWU7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldCBwaW5uZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQucGluUm93KHRoaXMucm93SUQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5ncmlkLnVucGluUm93KHRoaXMucm93SUQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB3aGV0aGVyIHRoZSByb3cgaXMgcGlubmVkLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgaXNQaW5uZWQgPSByb3cucGlubmVkO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcGlubmVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkLmlzUmVjb3JkUGlubmVkKHRoaXMuX3RyZWVSb3cpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzUm9vdCgpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IHRyZWVSZWMgPSB0aGlzLnRyZWVSb3c7XG4gICAgICAgIGNvbnN0IGlzUGlubmVkQXJlYSA9IHRoaXMucGlubmVkICYmICF0aGlzLmRpc2FibGVkO1xuICAgICAgICBpZiAoaXNQaW5uZWRBcmVhKSB7XG4gICAgICAgICAgICB0cmVlUmVjID0gdGhpcy5ncmlkLnVucGlubmVkUmVjb3Jkcy5maW5kKHggPT4geC5kYXRhID09PSB0aGlzLnJvd0RhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cmVlUmVjPy5sZXZlbCA9PT0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBoYXNDaGlsZHJlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgcm93IGNvbXBvbmVudCBpcyBleHBhbmRlZC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCByb3cgPSB0aGlzLmdyaWQuZ2V0Um93QnlLZXkoMSkgYXMgSWd4VHJlZUdyaWRSb3dDb21wb25lbnQ7XG4gICAgICogY29uc3QgZXhwYW5kZWQgPSByb3cuZXhwYW5kZWQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZXhwYW5kZWQnKVxuICAgIHB1YmxpYyBnZXQgZXhwYW5kZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90cmVlUm93LmV4cGFuZGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHJvdyBjb21wb25lbnQgaXMgZXhwYW5kZWQuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3Qgcm93ID0gdGhpcy5ncmlkLmdldFJvd0J5S2V5KDEpIGFzIElneFRyZWVHcmlkUm93Q29tcG9uZW50O1xuICAgICAqIHJvdy5leHBhbmRlZCA9IHRydWU7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldCBleHBhbmRlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICAodGhpcy5ncmlkQVBJIGFzIElneFRyZWVHcmlkQVBJU2VydmljZSkuc2V0X3Jvd19leHBhbnNpb25fc3RhdGUodGhpcy5fdHJlZVJvdy5yb3dJRCwgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHZpZXdJbmRleCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmRleCArIHRoaXMuZ3JpZC5wYWdlICogdGhpcy5ncmlkLnBlclBhZ2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc2hvd0luZGljYXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5sb2FkQ2hpbGRyZW5PbkRlbWFuZCA/XG4gICAgICAgICAgICB0aGlzLmdyaWQuZXhwYW5zaW9uU3RhdGVzLmhhcyh0aGlzLnJvd0lEKSA/XG4gICAgICAgICAgICAgICAgdGhpcy50cmVlUm93LmNoaWxkcmVuICYmIHRoaXMudHJlZVJvdy5jaGlsZHJlbi5sZW5ndGggOlxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5oYXNDaGlsZHJlbktleSA/XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm93RGF0YVt0aGlzLmdyaWQuaGFzQ2hpbGRyZW5LZXldIDpcbiAgICAgICAgICAgICAgICAgICAgdHJ1ZSA6XG4gICAgICAgICAgICB0aGlzLnRyZWVSb3cuY2hpbGRyZW4gJiYgdGhpcy50cmVlUm93LmNoaWxkcmVuLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBpbmRldGVybWluYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmlzUm93SW5JbmRldGVybWluYXRlU3RhdGUodGhpcy5yb3dJRCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ0RvQ2hlY2soKSB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdGhpcy5ncmlkLmxvYWRDaGlsZHJlbk9uRGVtYW5kID8gdGhpcy5ncmlkLmxvYWRpbmdSb3dzLmhhcyh0aGlzLnJvd0lEKSA6IGZhbHNlO1xuICAgICAgICBzdXBlci5uZ0RvQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTcGF3bnMgdGhlIGFkZCBjaGlsZCByb3cgVUkgZm9yIHRoZSBzcGVjaWZpYyByb3cuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCByb3cgPSB0aGlzLmdyaWQuZ2V0Um93QnlLZXkoMSkgYXMgSWd4VHJlZUdyaWRSb3dDb21wb25lbnQ7XG4gICAgICogcm93LmJlZ2luQWRkQ2hpbGQoKTtcbiAgICAgKiBgYGBcbiAgICAgKiBAcGFyYW0gcm93SURcbiAgICAgKi9cbiAgICBwdWJsaWMgYmVnaW5BZGRDaGlsZCgpIHtcbiAgICAgICAgdGhpcy5ncmlkLmNydWRTZXJ2aWNlLmVudGVyQWRkUm93TW9kZSh0aGlzLCB0cnVlKTtcbiAgICB9XG59XG4iXX0=
@@ -391,9 +391,10 @@ export class IgxSimpleComboComponent extends IgxComboBaseDirective {
391
391
  if (this.isRemote) {
392
392
  return this.getRemoteSelection(newSelection, oldSelection);
393
393
  }
394
- if (this.displayKey !== null && this.displayKey !== undefined
394
+ if (this.displayKey !== null
395
+ && this.displayKey !== undefined
395
396
  && newSelection.length > 0) {
396
- return ((_a = this.convertKeysToItems(newSelection).map(e => e[this.displayKey])[0]) === null || _a === void 0 ? void 0 : _a.toString()) || '';
397
+ return ((_a = this.convertKeysToItems(newSelection).filter(e => e).map(e => e[this.displayKey])[0]) === null || _a === void 0 ? void 0 : _a.toString()) || '';
397
398
  }
398
399
  return ((_b = newSelection[0]) === null || _b === void 0 ? void 0 : _b.toString()) || '';
399
400
  }
@@ -471,4 +472,4 @@ IgxSimpleComboModule.decorators = [
471
472
  exports: [IgxSimpleComboComponent, IgxComboModule]
472
473
  },] }
473
474
  ];
474
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLWNvbWJvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9zaW1wbGUtY29tYm8vc2ltcGxlLWNvbWJvLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNZLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUNyRyxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQ3hDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQTBCLE1BQU0sd0JBQXdCLENBQUM7QUFDckYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0QsT0FBTyxFQUF3RSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7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c291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5qZWN0b3IsXG4gICAgTmdNb2R1bGUsIE9wdGlvbmFsLCBPdXRwdXQsIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJZ3hDaGVja2JveE1vZHVsZSB9IGZyb20gJy4uL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hDb21ib0FkZEl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9jb21iby9jb21iby1hZGQtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4Q29tYm9Ecm9wRG93bkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbWJvL2NvbWJvLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hDb21ib0l0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9jb21iby9jb21iby1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hDb21ib0FQSVNlcnZpY2UgfSBmcm9tICcuLi9jb21iby9jb21iby5hcGknO1xuaW1wb3J0IHsgSWd4Q29tYm9CYXNlRGlyZWN0aXZlLCBJR1hfQ09NQk9fQ09NUE9ORU5UIH0gZnJvbSAnLi4vY29tYm8vY29tYm8uY29tbW9uJztcbmltcG9ydCB7IElneENvbWJvTW9kdWxlIH0gZnJvbSAnLi4vY29tYm8vY29tYm8uY29tcG9uZW50JztcbmltcG9ydCB7IERpc3BsYXlEZW5zaXR5VG9rZW4sIElEaXNwbGF5RGVuc2l0eU9wdGlvbnMgfSBmcm9tICcuLi9jb3JlL2Rpc3BsYXlEZW5zaXR5JztcbmltcG9ydCB7IElneFNlbGVjdGlvbkFQSVNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBDYW5jZWxhYmxlRXZlbnRBcmdzLCBJQmFzZUNhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzLCBJQmFzZUV2ZW50QXJncywgUGxhdGZvcm1VdGlsIH0gZnJvbSAnLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBJZ3hCdXR0b25Nb2R1bGUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2J1dHRvbi9idXR0b24uZGlyZWN0aXZlJztcbmltcG9ydCB7IElneEZvck9mTW9kdWxlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9mb3Itb2YvZm9yX29mLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hSaXBwbGVNb2R1bGUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3JpcHBsZS9yaXBwbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneFRleHRTZWxlY3Rpb25EaXJlY3RpdmUsIElneFRleHRTZWxlY3Rpb25Nb2R1bGUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3RleHQtc2VsZWN0aW9uL3RleHQtc2VsZWN0aW9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hUb2dnbGVNb2R1bGUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3RvZ2dsZS90b2dnbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneERyb3BEb3duTW9kdWxlIH0gZnJvbSAnLi4vZHJvcC1kb3duL3B1YmxpY19hcGknO1xuaW1wb3J0IHsgSWd4SWNvbk1vZHVsZSwgSWd4SWNvblNlcnZpY2UgfSBmcm9tICcuLi9pY29uL3B1YmxpY19hcGknO1xuaW1wb3J0IHsgSWd4SW5wdXRHcm91cE1vZHVsZSwgSWd4SW5wdXRHcm91cFR5cGUsIElHWF9JTlBVVF9HUk9VUF9UWVBFIH0gZnJvbSAnLi4vaW5wdXQtZ3JvdXAvcHVibGljX2FwaSc7XG5cbi8qKiBFbWl0dGVkIHdoZW4gYW4gaWd4LXNpbXBsZS1jb21ibydzIHNlbGVjdGlvbiBpcyBjaGFuZ2luZy4gICovXG5leHBvcnQgaW50ZXJmYWNlIElTaW1wbGVDb21ib1NlbGVjdGlvbkNoYW5naW5nRXZlbnRBcmdzIGV4dGVuZHMgQ2FuY2VsYWJsZUV2ZW50QXJncywgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKiBBbiBvYmplY3Qgd2hpY2ggcmVwcmVzZW50cyB0aGUgdmFsdWUgdGhhdCBpcyBjdXJyZW50bHkgc2VsZWN0ZWQgKi9cbiAgICBvbGRTZWxlY3Rpb246IGFueTtcbiAgICAvKiogQW4gb2JqZWN0IHdoaWNoIHJlcHJlc2VudHMgdGhlIHZhbHVlIHRoYXQgd2lsbCBiZSBzZWxlY3RlZCBhZnRlciB0aGlzIGV2ZW50ICovXG4gICAgbmV3U2VsZWN0aW9uOiBhbnk7XG4gICAgLyoqIFRoZSB0ZXh0IHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlIGNvbWJvIHRleHQgYm94ICovXG4gICAgZGlzcGxheVRleHQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgZHJvcC1kb3duIGxpc3QgdGhhdCBwcm92aWRlcyBmaWx0ZXJpbmcgZnVuY3Rpb25hbGl0eSwgYWxsb3dpbmcgdXNlcnMgdG8gY2hvb3NlIGEgc2luZ2xlIG9wdGlvbiBmcm9tIGEgcHJlZGVmaW5lZCBsaXN0LlxuICpcbiAqIEBpZ3hNb2R1bGUgSWd4U2ltcGxlQ29tYm9Nb2R1bGVcbiAqIEBpZ3hUaGVtZSBpZ3gtY29tYm8tdGhlbWVcbiAqIEBpZ3hLZXl3b3JkcyBjb21ib2JveCwgc2luZ2xlIGNvbWJvIHNlbGVjdGlvblxuICogQGlneEdyb3VwIEdyaWRzICYgTGlzdHNcbiAqXG4gKiBAcmVtYXJrc1xuICogSXQgcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gZmlsdGVyIGl0ZW1zIGFzIHdlbGwgYXMgcGVyZm9ybSBzaW5nbGUgc2VsZWN0aW9uIG9uIHRoZSBwcm92aWRlZCBkYXRhLlxuICogQWRkaXRpb25hbGx5LCBpdCBleHBvc2VzIGtleWJvYXJkIG5hdmlnYXRpb24gYW5kIGN1c3RvbSBzdHlsaW5nIGNhcGFiaWxpdGllcy5cbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8aWd4LXNpbXBsZS1jb21ibyBbaXRlbXNNYXhIZWlnaHRdPVwiMjUwXCIgW2RhdGFdPVwibG9jYXRpb25EYXRhXCJcbiAqICBbZGlzcGxheUtleV09XCInZmllbGQnXCIgW3ZhbHVlS2V5XT1cIidmaWVsZCdcIlxuICogIHBsYWNlaG9sZGVyPVwiTG9jYXRpb25cIiBzZWFyY2hQbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiPlxuICogPC9pZ3gtc2ltcGxlLWNvbWJvPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnaWd4LXNpbXBsZS1jb21ibycsXG4gICAgdGVtcGxhdGVVcmw6ICdzaW1wbGUtY29tYm8uY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBJZ3hDb21ib0FQSVNlcnZpY2UsXG4gICAgICAgIHsgcHJvdmlkZTogSUdYX0NPTUJPX0NPTVBPTkVOVCwgdXNlRXhpc3Rpbmc6IElneFNpbXBsZUNvbWJvQ29tcG9uZW50IH0sXG4gICAgICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBJZ3hTaW1wbGVDb21ib0NvbXBvbmVudCwgbXVsdGk6IHRydWUgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgSWd4U2ltcGxlQ29tYm9Db21wb25lbnQgZXh0ZW5kcyBJZ3hDb21ib0Jhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQFZpZXdDaGlsZChJZ3hDb21ib0Ryb3BEb3duQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBkcm9wZG93bjogSWd4Q29tYm9Ecm9wRG93bkNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBWaWV3Q2hpbGQoSWd4Q29tYm9BZGRJdGVtQ29tcG9uZW50KVxuICAgIHB1YmxpYyBhZGRJdGVtOiBJZ3hDb21ib0FkZEl0ZW1Db21wb25lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gaXRlbSBzZWxlY3Rpb24gaXMgY2hhbmdpbmcsIGJlZm9yZSB0aGUgc2VsZWN0aW9uIGNvbXBsZXRlc1xuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtc2ltcGxlLWNvbWJvIChzZWxlY3Rpb25DaGFuZ2luZyk9J2hhbmRsZVNlbGVjdGlvbigpJz48L2lneC1zaW1wbGUtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHNlbGVjdGlvbkNoYW5naW5nID0gbmV3IEV2ZW50RW1pdHRlcjxJU2ltcGxlQ29tYm9TZWxlY3Rpb25DaGFuZ2luZ0V2ZW50QXJncz4oKTtcblxuICAgIEBWaWV3Q2hpbGQoSWd4VGV4dFNlbGVjdGlvbkRpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwcml2YXRlIHRleHRTZWxlY3Rpb246IElneFRleHRTZWxlY3Rpb25EaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgY29tcG9zaW5nID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIF91cGRhdGVJbnB1dCA9IHRydWU7XG5cbiAgICAvLyBzdG9yZXMgdGhlIGxhc3QgZmlsdGVyZWQgdmFsdWUgLSBtb3ZlIHRvIGNvbW1vbj9cbiAgICBwcml2YXRlIF9pbnRlcm5hbEZpbHRlciA9ICcnO1xuXG4gICAgcHJpdmF0ZSBfY29sbGFwc2luZyA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGdldCBmaWx0ZXJlZERhdGEoKTogYW55W10gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlcmVkRGF0YTtcbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIHNldCBmaWx0ZXJlZERhdGEodmFsOiBhbnlbXSB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyZWREYXRhID0gdGhpcy5ncm91cEtleSA/ICh2YWwgfHwgW10pLmZpbHRlcigoZSkgPT4gZS5pc0hlYWRlciAhPT0gdHJ1ZSkgOiB2YWw7XG4gICAgICAgIHRoaXMuY2hlY2tNYXRjaCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBnZXQgc2VhcmNoVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlYXJjaFZhbHVlO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IHNlYXJjaFZhbHVlKHZhbDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3NlYXJjaFZhbHVlID0gdmFsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IHNlbGVjdGVkSXRlbSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmdldCh0aGlzLmlkKS52YWx1ZXMoKS5uZXh0KCkudmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcm90ZWN0ZWQgc2VsZWN0aW9uU2VydmljZTogSWd4U2VsZWN0aW9uQVBJU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIGNvbWJvQVBJOiBJZ3hDb21ib0FQSVNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBfaWNvblNlcnZpY2U6IElneEljb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHBsYXRmb3JtVXRpbDogUGxhdGZvcm1VdGlsLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERpc3BsYXlEZW5zaXR5VG9rZW4pIHByb3RlY3RlZCBfZGlzcGxheURlbnNpdHlPcHRpb25zOiBJRGlzcGxheURlbnNpdHlPcHRpb25zLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KElHWF9JTlBVVF9HUk9VUF9UWVBFKSBwcm90ZWN0ZWQgX2lucHV0R3JvdXBUeXBlOiBJZ3hJbnB1dEdyb3VwVHlwZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyLCBzZWxlY3Rpb25TZXJ2aWNlLCBjb21ib0FQSSxcbiAgICAgICAgICAgIF9pY29uU2VydmljZSwgX2Rpc3BsYXlEZW5zaXR5T3B0aW9ucywgX2lucHV0R3JvdXBUeXBlLCBfaW5qZWN0b3IpO1xuICAgICAgICB0aGlzLmNvbWJvQVBJLnJlZ2lzdGVyKHRoaXMpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uQXJyb3dEb3duJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLkFsdC5BcnJvd0Rvd24nLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkFycm93RG93bihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnZpcnREaXIuaWd4Rm9yT2YubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZHJvcGRvd24ubmF2aWdhdGVGaXJzdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Db250YWluZXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmFsbG93Q3VzdG9tVmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRJdGVtLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0IGEgZGVmaW5lZCBpdGVtXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaXRlbSB0aGUgaXRlbSB0byBiZSBzZWxlY3RlZFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmNvbWJvLnNlbGVjdChcIk5ldyBZb3JrXCIpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzZWxlY3QoaXRlbTogYW55KTogdm9pZCB7XG4gICAgICAgIGlmIChpdGVtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5hZGRfaXRlbXModGhpcy5pZCwgaXRlbSBpbnN0YW5jZW9mIEFycmF5ID8gaXRlbSA6IFtpdGVtXSwgdHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVzZWxlY3QgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaXRlbSB0aGUgaXRlbXMgdG8gYmUgZGVzZWxlY3RlZFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmNvbWJvLmRlc2VsZWN0KFwiTmV3IFlvcmtcIik7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGRlc2VsZWN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBvbGRTZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbjtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdF9pdGVtcyh0aGlzLmlkLCB0aGlzLmlzVmFsaWQodmFsdWUpID8gW3ZhbHVlXSA6IFtdLCB0cnVlKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5jcmVhdGVEaXNwbGF5VGV4dCh0aGlzLnNlbGVjdGlvbiwgb2xkU2VsZWN0aW9uKTtcbiAgICAgICAgdGhpcy5maWx0ZXJWYWx1ZSA9IHRoaXMuX2ludGVybmFsRmlsdGVyID0gdGhpcy5fdmFsdWU/LnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aXJ0RGlyLmNvbnRlbnRTaXplQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMudmlydERpci5pZ3hGb3JPZi5maW5kSW5kZXgoZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjdXJyZW50ID0gZT8gZVt0aGlzLnZhbHVlS2V5XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsdWVLZXkgPT09IG51bGwgfHwgdGhpcy52YWx1ZUtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudCA9PT0gdGhpcy5zZWxlY3Rpb25bMF07XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzUmVtb3RlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG5hdmlnYXRlIHRvIGl0ZW0gb25seSBpZiB3ZSBoYXZlIGxvY2FsIGRhdGFcbiAgICAgICAgICAgICAgICAgICAgLy8gYXMgd2l0aCByZW1vdGUgZGF0YSB0aGlzIHdpbGwgZmlkZGxlIHdpdGggaWd4Rm9yJ3Mgc2Nyb2xsIGhhbmRsZXJcbiAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdpbGwgdHJpZ2dlciBhbm90aGVyIGNodW5rIGxvYWQgd2hpY2ggd2lsbCBicmVhayB0aGUgdmlzdWFsaXphdGlvblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duLm5hdmlnYXRlSXRlbShpbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kcm9wZG93bi5vcGVuaW5nLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGFyZ3MpID0+IHtcbiAgICAgICAgICAgIGlmIChhcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2NvbGxhcHNpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkID0gdGhpcy5maWx0ZXJlZERhdGEuZmluZCh0aGlzLmZpbmRBbGxNYXRjaGVzKTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJlZCA9PT0gdW5kZWZpbmVkIHx8IGZpbHRlcmVkID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJWYWx1ZSA9IHRoaXMuc2VhcmNoVmFsdWUgPSB0aGlzLmNvbWJvSW5wdXQudmFsdWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5maWx0ZXJWYWx1ZSA9IHRoaXMuc2VhcmNoVmFsdWUgPSAnJztcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZHJvcGRvd24ub3BlbmVkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29tcG9zaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21ib0lucHV0LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9pbnRlcm5hbEZpbHRlciA9IHRoaXMuY29tYm9JbnB1dC52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZHJvcGRvd24uY2xvc2luZy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChhcmdzKSA9PiB7XG4gICAgICAgICAgICBpZiAoYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5nZXRFZGl0RWxlbWVudCgpICYmICFhcmdzLmV2ZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29sbGFwc2luZyA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJPbkJsdXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9vblRvdWNoZWRDYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jb21ib0lucHV0LmZvY3VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRyb3Bkb3duLmNsb3NlZC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyVmFsdWUgPSB0aGlzLl9pbnRlcm5hbEZpbHRlciA9IHRoaXMuY29tYm9JbnB1dC52YWx1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gaW4gcmVhY3RpdmUgZm9ybSB0aGUgY29udHJvbCBpcyBub3QgcHJlc2VudCBpbml0aWFsbHlcbiAgICAgICAgLy8gYW5kIHNldHMgdGhlIHNlbGVjdGlvbiB0byBhbiBpbnZhbGlkIHZhbHVlIGluIHdyaXRlVmFsdWUgbWV0aG9kXG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKHRoaXMuc2VsZWN0ZWRJdGVtKSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmNsZWFyKHRoaXMuaWQpO1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBoYW5kbGVJbnB1dENoYW5nZShldmVudD86IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJWYWx1ZSA9IHRoaXMuX2ludGVybmFsRmlsdGVyID0gdGhpcy5zZWFyY2hWYWx1ZSA9IHR5cGVvZiBldmVudCA9PT0gJ3N0cmluZycgPyBldmVudCA6IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKHRoaXMuc2VhcmNoVmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5jb2xsYXBzZWQgJiYgdGhpcy5jb21ib0lucHV0LmZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5jb21ib0lucHV0LnZhbHVlLnRyaW0oKSAmJiB0aGlzLnNlbGVjdGlvbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIGhhbmRsZSBjbGVhcmluZyBvZiBpbnB1dCBieSBzcGFjZVxuICAgICAgICAgICAgdGhpcy5jbGVhclNlbGVjdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayhudWxsKTtcbiAgICAgICAgfVxuICAgICAgICAvLyB3aGVuIGZpbHRlcmluZyB0aGUgZm9jdXNlZCBpdGVtIHNob3VsZCBiZSB0aGUgZmlyc3QgaXRlbSBvciB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW1cbiAgICAgICAgaWYgKCF0aGlzLmRyb3Bkb3duLmZvY3VzZWRJdGVtIHx8IHRoaXMuZHJvcGRvd24uZm9jdXNlZEl0ZW0uaWQgIT09IHRoaXMuZHJvcGRvd24uaXRlbXNbMF0uaWQpIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd24ubmF2aWdhdGVGaXJzdCgpO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLmhhbmRsZUlucHV0Q2hhbmdlKGV2ZW50KTtcbiAgICAgICAgdGhpcy5jb21wb3NpbmcgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IHRoaXMucGxhdGZvcm1VdGlsLktFWU1BUC5FTlRFUikge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyZWQgPSB0aGlzLmZpbHRlcmVkRGF0YS5maW5kKHRoaXMuZmluZEFsbE1hdGNoZXMpO1xuICAgICAgICAgICAgaWYgKGZpbHRlcmVkID09PSBudWxsIHx8IGZpbHRlcmVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNlbGVjdCh0aGlzLmRyb3Bkb3duLmZvY3VzZWRJdGVtLml0ZW1JRCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICAvLyBtYW51YWxseSB0cmlnZ2VyIHRleHQgc2VsZWN0aW9uIGFzIGl0IHdpbGwgbm90IGJlIHRyaWdnZXJlZCBkdXJpbmcgZWRpdGluZ1xuICAgICAgICAgICAgdGhpcy50ZXh0U2VsZWN0aW9uLnRyaWdnZXIoKTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyVmFsdWUgPSB0aGlzLmdldEVsZW1lbnRWYWwoZmlsdGVyZWQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IHRoaXMucGxhdGZvcm1VdGlsLktFWU1BUC5CQUNLU1BBQ0VcbiAgICAgICAgICAgIHx8IGV2ZW50LmtleSA9PT0gdGhpcy5wbGF0Zm9ybVV0aWwuS0VZTUFQLkRFTEVURSkge1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlSW5wdXQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24odHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmNvbGxhcHNlZCAmJiBldmVudC5rZXkgPT09IHRoaXMucGxhdGZvcm1VdGlsLktFWU1BUC5UQUIpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJPbkJsdXIoKTtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbXBvc2luZyA9IGZhbHNlO1xuICAgICAgICBzdXBlci5oYW5kbGVLZXlEb3duKGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaGFuZGxlS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gdGhpcy5wbGF0Zm9ybVV0aWwuS0VZTUFQLkFSUk9XX0RPV04pIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0SXRlbSA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5maXJzdF9pdGVtKHRoaXMuaWQpO1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bi5mb2N1c2VkSXRlbSA9IGZpcnN0SXRlbSAmJiB0aGlzLmZpbHRlcmVkRGF0YS5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgPyB0aGlzLmRyb3Bkb3duLml0ZW1zLmZpbmQoaSA9PiBpLml0ZW1JRCA9PT0gZmlyc3RJdGVtKVxuICAgICAgICAgICAgICAgIDogdGhpcy5kcm9wZG93bi5pdGVtc1swXTtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Db250YWluZXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGhhbmRsZUl0ZW1LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IHRoaXMucGxhdGZvcm1VdGlsLktFWU1BUC5BUlJPV19VUCAmJiBldmVudC5hbHRLZXkpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgIHRoaXMuY29tYm9JbnB1dC5mb2N1cygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IHRoaXMucGxhdGZvcm1VdGlsLktFWU1BUC5FTlRFUikge1xuICAgICAgICAgICAgdGhpcy5jb21ib0lucHV0LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaGFuZGxlSXRlbUNsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIHRoaXMuY29tYm9JbnB1dC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBvbkJsdXIoKTogdm9pZCB7XG4gICAgICAgIC8vIHdoZW4gY2xpY2tpbmcgdGhlIHRvZ2dsZSBidXR0b24gdG8gY2xvc2UgdGhlIGNvbWJvIGFuZCBpbW1lZGlhdGVseSBjbGlja2luZyBvdXRzaWRlIG9mIGl0XG4gICAgICAgIC8vIHRoZSBjb2xsYXBzZWQgc3RhdGUgaXMgbm90IG1vZGlmaWVkIGFzIHRoZSBkcm9wZG93biBpcyBzdGlsbCBub3QgY2xvc2VkXG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlZCB8fCB0aGlzLl9jb2xsYXBzaW5nKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyT25CbHVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIub25CbHVyKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ludGVybmFsRmlsdGVyID0gdGhpcy5jb21ib0lucHV0LnZhbHVlIHx8ICcnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBnZXRFZGl0RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbWJvSW5wdXQubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaGFuZGxlQ2xlYXIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jbGVhclNlbGVjdGlvbih0cnVlKTtcbiAgICAgICAgaWYgKHRoaXMuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd24ubmF2aWdhdGVGaXJzdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb2N1c1NlYXJjaElucHV0KHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIHRoaXMuY29tYm9JbnB1dC52YWx1ZSA9IHRoaXMuZmlsdGVyVmFsdWUgPSB0aGlzLnNlYXJjaFZhbHVlID0gJyc7XG4gICAgICAgIHRoaXMuZHJvcGRvd24uZm9jdXNlZEl0ZW0gPSBudWxsO1xuICAgICAgICB0aGlzLmNvbXBvc2luZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNvbWJvSW5wdXQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaGFuZGxlT3BlbmVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRyaWdnZXJDaGVjaygpO1xuICAgICAgICB0aGlzLmRyb3Bkb3duQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgdGhpcy5vcGVuZWQuZW1pdCh7IG93bmVyOiB0aGlzIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBoYW5kbGVDbG9zaW5nKGU6IElCYXNlQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3MpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYXJnczogSUJhc2VDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncyA9IHsgb3duZXI6IHRoaXMsIGV2ZW50OiBlLmV2ZW50LCBjYW5jZWw6IGUuY2FuY2VsIH07XG4gICAgICAgIHRoaXMuY2xvc2luZy5lbWl0KGFyZ3MpO1xuICAgICAgICBlLmNhbmNlbCA9IGFyZ3MuY2FuY2VsO1xuICAgICAgICBpZiAoZS5jYW5jZWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29tcG9zaW5nID0gZmFsc2U7XG4gICAgICAgIC8vIGV4cGxpY2l0bHkgdXBkYXRlIHNlbGVjdGlvbiBhbmQgdHJpZ2dlciB0ZXh0IHNlbGVjdGlvbiBzbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gZm9yY2UgQ0RcbiAgICAgICAgdGhpcy50ZXh0U2VsZWN0aW9uLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50ZXh0U2VsZWN0aW9uLnRyaWdnZXIoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZm9jdXNTZWFyY2hJbnB1dChvcGVuaW5nPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAob3BlbmluZykge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNvbWJvSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBvbkNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBzdXBlci5vbkNsaWNrKGV2ZW50KTtcbiAgICAgICAgaWYgKHRoaXMuY29tYm9JbnB1dC52YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMudmlydERpci5zY3JvbGxUbygwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBmaW5kQWxsTWF0Y2hlcyA9IChlbGVtZW50OiBhbnkpOiBib29sZWFuID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmRpc3BsYXlLZXkgPyBlbGVtZW50W3RoaXMuZGlzcGxheUtleV0gOiBlbGVtZW50O1xuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgIC8vIHdlIGNhbiBhY2NlcHQgbnVsbCwgdW5kZWZpbmVkIGFuZCBlbXB0eSBzdHJpbmdzIGFzIGVtcHR5IGRpc3BsYXkgdmFsdWVzXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZWFyY2hWYWx1ZSA9IHRoaXMuc2VhcmNoVmFsdWUgfHwgdGhpcy5jb21ib0lucHV0LnZhbHVlO1xuICAgICAgICByZXR1cm4gISFzZWFyY2hWYWx1ZSAmJiB2YWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSk7XG4gICAgfTtcblxuICAgIHByb3RlY3RlZCBzZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV3U2VsZWN0aW9uQXNBcnJheSA9IG5ld1NlbGVjdGlvbiA/IEFycmF5LmZyb20obmV3U2VsZWN0aW9uKSBhcyBJZ3hDb21ib0l0ZW1Db21wb25lbnRbXSA6IFtdO1xuICAgICAgICBjb25zdCBvbGRTZWxlY3Rpb25Bc0FycmF5ID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGlvblNlcnZpY2UuZ2V0KHRoaXMuaWQpIHx8IFtdKTtcbiAgICAgICAgY29uc3QgZGlzcGxheVRleHQgPSB0aGlzLmNyZWF0ZURpc3BsYXlUZXh0KG5ld1NlbGVjdGlvbkFzQXJyYXksIG9sZFNlbGVjdGlvbkFzQXJyYXkpO1xuICAgICAgICBjb25zdCBhcmdzOiBJU2ltcGxlQ29tYm9TZWxlY3Rpb25DaGFuZ2luZ0V2ZW50QXJncyA9IHtcbiAgICAgICAgICAgIG5ld1NlbGVjdGlvbjogbmV3U2VsZWN0aW9uQXNBcnJheVswXSxcbiAgICAgICAgICAgIG9sZFNlbGVjdGlvbjogb2xkU2VsZWN0aW9uQXNBcnJheVswXSxcbiAgICAgICAgICAgIGRpc3BsYXlUZXh0LFxuICAgICAgICAgICAgb3duZXI6IHRoaXMsXG4gICAgICAgICAgICBjYW5jZWw6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICAgIGlmIChhcmdzLm5ld1NlbGVjdGlvbiAhPT0gYXJncy5vbGRTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdpbmcuZW1pdChhcmdzKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUT0RPOiByZWZhY3RvciBiZWxvdyBjb2RlIGFzIGl0IHNldHMgdGhlIHNlbGVjdGlvbiBhbmQgdGhlIGRpc3BsYXkgdGV4dFxuICAgICAgICBpZiAoIWFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICBsZXQgYXJnc1NlbGVjdGlvbiA9IHRoaXMuaXNWYWxpZChhcmdzLm5ld1NlbGVjdGlvbilcbiAgICAgICAgICAgICAgICA/IGFyZ3MubmV3U2VsZWN0aW9uXG4gICAgICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgICAgIGFyZ3NTZWxlY3Rpb24gPSBBcnJheS5pc0FycmF5KGFyZ3NTZWxlY3Rpb24pID8gYXJnc1NlbGVjdGlvbiA6IFthcmdzU2VsZWN0aW9uXTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5zZWxlY3RfaXRlbXModGhpcy5pZCwgYXJnc1NlbGVjdGlvbiwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAodGhpcy5fdXBkYXRlSW5wdXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbWJvSW5wdXQudmFsdWUgPSB0aGlzLl9pbnRlcm5hbEZpbHRlciA9IHRoaXMuX3ZhbHVlID0gdGhpcy5zZWFyY2hWYWx1ZSA9IGRpc3BsYXlUZXh0ICE9PSBhcmdzLmRpc3BsYXlUZXh0XG4gICAgICAgICAgICAgICAgICAgID8gYXJncy5kaXNwbGF5VGV4dFxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuY3JlYXRlRGlzcGxheVRleHQoYXJnc1NlbGVjdGlvbiwgW2FyZ3Mub2xkU2VsZWN0aW9uXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKGFyZ3MubmV3U2VsZWN0aW9uKTtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUlucHV0ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzUmVtb3RlKSB7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyUmVtb3RlRW50cmllcyhuZXdTZWxlY3Rpb25Bc0FycmF5LCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlRGlzcGxheVRleHQobmV3U2VsZWN0aW9uOiBhbnlbXSwgb2xkU2VsZWN0aW9uOiBhbnlbXSk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmlzUmVtb3RlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRSZW1vdGVTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBvbGRTZWxlY3Rpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheUtleSAhPT0gbnVsbCAmJiB0aGlzLmRpc3BsYXlLZXkgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgJiYgbmV3U2VsZWN0aW9uLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRLZXlzVG9JdGVtcyhuZXdTZWxlY3Rpb24pLm1hcChlID0+IGVbdGhpcy5kaXNwbGF5S2V5XSlbMF0/LnRvU3RyaW5nKCkgfHwgJyc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3U2VsZWN0aW9uWzBdPy50b1N0cmluZygpIHx8ICcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJTZWxlY3Rpb24oaWdub3JlRmlsdGVyPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBsZXQgbmV3U2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmdldF9lbXB0eSgpO1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJlZERhdGEubGVuZ3RoICE9PSB0aGlzLmRhdGEubGVuZ3RoICYmICFpZ25vcmVGaWx0ZXIpIHtcbiAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5kZWxldGVfaXRlbXModGhpcy5pZCwgdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmdldF9hbGxfaWRzKHRoaXMuZmlsdGVyZWREYXRhLCB0aGlzLnZhbHVlS2V5KSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyT25CbHVyKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IHRoaXMuZmlsdGVyZWREYXRhLmZpbmQodGhpcy5maW5kTWF0Y2gpO1xuICAgICAgICAvLyBzZWxlY3RpbmcgbnVsbCBpbiBwcmltaXRpdmUgZGF0YSByZXR1cm5zIHVuZGVmaW5lZCBhcyB0aGUgc2VhcmNoIHRleHQgaXMgJycsIGJ1dCB0aGUgaXRlbSBpcyBudWxsXG4gICAgICAgIGlmIChmaWx0ZXJlZCA9PT0gdW5kZWZpbmVkICYmIHRoaXMuc2VsZWN0ZWRJdGVtICE9PSBudWxsIHx8ICF0aGlzLnNlbGVjdGlvbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RWxlbWVudFZhbChlbGVtZW50OiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBlbGVtZW50VmFsID0gdGhpcy5kaXNwbGF5S2V5ID8gZWxlbWVudFt0aGlzLmRpc3BsYXlLZXldIDogZWxlbWVudDtcbiAgICAgICAgcmV0dXJuIFN0cmluZyhlbGVtZW50VmFsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKHRydWUpO1xuICAgICAgICB0aGlzLl9pbnRlcm5hbEZpbHRlciA9ICcnO1xuICAgICAgICB0aGlzLnNlYXJjaFZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1ZhbGlkKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRcbiAgICAgICAgPyB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gJycgJiYgdmFsdWUgIT09IHVuZGVmaW5lZFxuICAgICAgICA6IHZhbHVlICE9PSB1bmRlZmluZWQ7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW0lneFNpbXBsZUNvbWJvQ29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIElneENvbWJvTW9kdWxlLCBJZ3hSaXBwbGVNb2R1bGUsIENvbW1vbk1vZHVsZSxcbiAgICAgICAgSWd4SW5wdXRHcm91cE1vZHVsZSwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIElneEZvck9mTW9kdWxlLCBJZ3hUb2dnbGVNb2R1bGUsIElneENoZWNrYm94TW9kdWxlLFxuICAgICAgICBJZ3hEcm9wRG93bk1vZHVsZSwgSWd4QnV0dG9uTW9kdWxlLCBJZ3hJY29uTW9kdWxlLFxuICAgICAgICBJZ3hUZXh0U2VsZWN0aW9uTW9kdWxlXG4gICAgXSxcbiAgICBleHBvcnRzOiBbSWd4U2ltcGxlQ29tYm9Db21wb25lbnQsIElneENvbWJvTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hTaW1wbGVDb21ib01vZHVsZSB7IH1cbiJdfQ==
475
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLWNvbWJvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9zaW1wbGUtY29tYm8vc2ltcGxlLWNvbWJvLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNZLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUNyRyxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQ3hDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQTBCLE1BQU0sd0JBQXdCLENBQUM7QUFDckYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0QsT0FBTyxFQUF3RSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7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LE9BQU8sRUFBRSxDQUFDLHVCQUF1QixFQUFFLGNBQWMsQ0FBQzthQUNyRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbmplY3QsIEluamVjdG9yLFxuICAgIE5nTW9kdWxlLCBPcHRpb25hbCwgT3V0cHV0LCBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSWd4Q2hlY2tib3hNb2R1bGUgfSBmcm9tICcuLi9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4Q29tYm9BZGRJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tYm8vY29tYm8tYWRkLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IElneENvbWJvRHJvcERvd25Db21wb25lbnQgfSBmcm9tICcuLi9jb21iby9jb21iby1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4Q29tYm9JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tYm8vY29tYm8taXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4Q29tYm9BUElTZXJ2aWNlIH0gZnJvbSAnLi4vY29tYm8vY29tYm8uYXBpJztcbmltcG9ydCB7IElneENvbWJvQmFzZURpcmVjdGl2ZSwgSUdYX0NPTUJPX0NPTVBPTkVOVCB9IGZyb20gJy4uL2NvbWJvL2NvbWJvLmNvbW1vbic7XG5pbXBvcnQgeyBJZ3hDb21ib01vZHVsZSB9IGZyb20gJy4uL2NvbWJvL2NvbWJvLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5RGVuc2l0eVRva2VuLCBJRGlzcGxheURlbnNpdHlPcHRpb25zIH0gZnJvbSAnLi4vY29yZS9kaXNwbGF5RGVuc2l0eSc7XG5pbXBvcnQgeyBJZ3hTZWxlY3Rpb25BUElTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgQ2FuY2VsYWJsZUV2ZW50QXJncywgSUJhc2VDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncywgSUJhc2VFdmVudEFyZ3MsIFBsYXRmb3JtVXRpbCB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgSWd4QnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9idXR0b24vYnV0dG9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hGb3JPZk1vZHVsZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZm9yLW9mL2Zvcl9vZi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4UmlwcGxlTW9kdWxlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9yaXBwbGUvcmlwcGxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hUZXh0U2VsZWN0aW9uRGlyZWN0aXZlLCBJZ3hUZXh0U2VsZWN0aW9uTW9kdWxlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy90ZXh0LXNlbGVjdGlvbi90ZXh0LXNlbGVjdGlvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4VG9nZ2xlTW9kdWxlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy90b2dnbGUvdG9nZ2xlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hEcm9wRG93bk1vZHVsZSB9IGZyb20gJy4uL2Ryb3AtZG93bi9wdWJsaWNfYXBpJztcbmltcG9ydCB7IElneEljb25Nb2R1bGUsIElneEljb25TZXJ2aWNlIH0gZnJvbSAnLi4vaWNvbi9wdWJsaWNfYXBpJztcbmltcG9ydCB7IElneElucHV0R3JvdXBNb2R1bGUsIElneElucHV0R3JvdXBUeXBlLCBJR1hfSU5QVVRfR1JPVVBfVFlQRSB9IGZyb20gJy4uL2lucHV0LWdyb3VwL3B1YmxpY19hcGknO1xuXG4vKiogRW1pdHRlZCB3aGVuIGFuIGlneC1zaW1wbGUtY29tYm8ncyBzZWxlY3Rpb24gaXMgY2hhbmdpbmcuICAqL1xuZXhwb3J0IGludGVyZmFjZSBJU2ltcGxlQ29tYm9TZWxlY3Rpb25DaGFuZ2luZ0V2ZW50QXJncyBleHRlbmRzIENhbmNlbGFibGVFdmVudEFyZ3MsIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKiogQW4gb2JqZWN0IHdoaWNoIHJlcHJlc2VudHMgdGhlIHZhbHVlIHRoYXQgaXMgY3VycmVudGx5IHNlbGVjdGVkICovXG4gICAgb2xkU2VsZWN0aW9uOiBhbnk7XG4gICAgLyoqIEFuIG9iamVjdCB3aGljaCByZXByZXNlbnRzIHRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgc2VsZWN0ZWQgYWZ0ZXIgdGhpcyBldmVudCAqL1xuICAgIG5ld1NlbGVjdGlvbjogYW55O1xuICAgIC8qKiBUaGUgdGV4dCB0aGF0IHdpbGwgYmUgZGlzcGxheWVkIGluIHRoZSBjb21ibyB0ZXh0IGJveCAqL1xuICAgIGRpc3BsYXlUZXh0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGRyb3AtZG93biBsaXN0IHRoYXQgcHJvdmlkZXMgZmlsdGVyaW5nIGZ1bmN0aW9uYWxpdHksIGFsbG93aW5nIHVzZXJzIHRvIGNob29zZSBhIHNpbmdsZSBvcHRpb24gZnJvbSBhIHByZWRlZmluZWQgbGlzdC5cbiAqXG4gKiBAaWd4TW9kdWxlIElneFNpbXBsZUNvbWJvTW9kdWxlXG4gKiBAaWd4VGhlbWUgaWd4LWNvbWJvLXRoZW1lXG4gKiBAaWd4S2V5d29yZHMgY29tYm9ib3gsIHNpbmdsZSBjb21ibyBzZWxlY3Rpb25cbiAqIEBpZ3hHcm91cCBHcmlkcyAmIExpc3RzXG4gKlxuICogQHJlbWFya3NcbiAqIEl0IHByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIGZpbHRlciBpdGVtcyBhcyB3ZWxsIGFzIHBlcmZvcm0gc2luZ2xlIHNlbGVjdGlvbiBvbiB0aGUgcHJvdmlkZWQgZGF0YS5cbiAqIEFkZGl0aW9uYWxseSwgaXQgZXhwb3NlcyBrZXlib2FyZCBuYXZpZ2F0aW9uIGFuZCBjdXN0b20gc3R5bGluZyBjYXBhYmlsaXRpZXMuXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPGlneC1zaW1wbGUtY29tYm8gW2l0ZW1zTWF4SGVpZ2h0XT1cIjI1MFwiIFtkYXRhXT1cImxvY2F0aW9uRGF0YVwiXG4gKiAgW2Rpc3BsYXlLZXldPVwiJ2ZpZWxkJ1wiIFt2YWx1ZUtleV09XCInZmllbGQnXCJcbiAqICBwbGFjZWhvbGRlcj1cIkxvY2F0aW9uXCIgc2VhcmNoUGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIj5cbiAqIDwvaWd4LXNpbXBsZS1jb21ibz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1zaW1wbGUtY29tYm8nLFxuICAgIHRlbXBsYXRlVXJsOiAnc2ltcGxlLWNvbWJvLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgSWd4Q29tYm9BUElTZXJ2aWNlLFxuICAgICAgICB7IHByb3ZpZGU6IElHWF9DT01CT19DT01QT05FTlQsIHVzZUV4aXN0aW5nOiBJZ3hTaW1wbGVDb21ib0NvbXBvbmVudCB9LFxuICAgICAgICB7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogSWd4U2ltcGxlQ29tYm9Db21wb25lbnQsIG11bHRpOiB0cnVlIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIElneFNpbXBsZUNvbWJvQ29tcG9uZW50IGV4dGVuZHMgSWd4Q29tYm9CYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQge1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBWaWV3Q2hpbGQoSWd4Q29tYm9Ecm9wRG93bkNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwdWJsaWMgZHJvcGRvd246IElneENvbWJvRHJvcERvd25Db21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBAVmlld0NoaWxkKElneENvbWJvQWRkSXRlbUNvbXBvbmVudClcbiAgICBwdWJsaWMgYWRkSXRlbTogSWd4Q29tYm9BZGRJdGVtQ29tcG9uZW50O1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIGl0ZW0gc2VsZWN0aW9uIGlzIGNoYW5naW5nLCBiZWZvcmUgdGhlIHNlbGVjdGlvbiBjb21wbGV0ZXNcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXNpbXBsZS1jb21ibyAoc2VsZWN0aW9uQ2hhbmdpbmcpPSdoYW5kbGVTZWxlY3Rpb24oKSc+PC9pZ3gtc2ltcGxlLWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBzZWxlY3Rpb25DaGFuZ2luZyA9IG5ldyBFdmVudEVtaXR0ZXI8SVNpbXBsZUNvbWJvU2VsZWN0aW9uQ2hhbmdpbmdFdmVudEFyZ3M+KCk7XG5cbiAgICBAVmlld0NoaWxkKElneFRleHRTZWxlY3Rpb25EaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJpdmF0ZSB0ZXh0U2VsZWN0aW9uOiBJZ3hUZXh0U2VsZWN0aW9uRGlyZWN0aXZlO1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGNvbXBvc2luZyA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBfdXBkYXRlSW5wdXQgPSB0cnVlO1xuXG4gICAgLy8gc3RvcmVzIHRoZSBsYXN0IGZpbHRlcmVkIHZhbHVlIC0gbW92ZSB0byBjb21tb24/XG4gICAgcHJpdmF0ZSBfaW50ZXJuYWxGaWx0ZXIgPSAnJztcblxuICAgIHByaXZhdGUgX2NvbGxhcHNpbmcgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBnZXQgZmlsdGVyZWREYXRhKCk6IGFueVtdIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJlZERhdGE7XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBzZXQgZmlsdGVyZWREYXRhKHZhbDogYW55W10gfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX2ZpbHRlcmVkRGF0YSA9IHRoaXMuZ3JvdXBLZXkgPyAodmFsIHx8IFtdKS5maWx0ZXIoKGUpID0+IGUuaXNIZWFkZXIgIT09IHRydWUpIDogdmFsO1xuICAgICAgICB0aGlzLmNoZWNrTWF0Y2goKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IHNlYXJjaFZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWFyY2hWYWx1ZTtcbiAgICB9XG4gICAgcHVibGljIHNldCBzZWFyY2hWYWx1ZSh2YWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9zZWFyY2hWYWx1ZSA9IHZhbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBzZWxlY3RlZEl0ZW0oKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uU2VydmljZS5nZXQodGhpcy5pZCkudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJvdGVjdGVkIHNlbGVjdGlvblNlcnZpY2U6IElneFNlbGVjdGlvbkFQSVNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBjb21ib0FQSTogSWd4Q29tYm9BUElTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgX2ljb25TZXJ2aWNlOiBJZ3hJY29uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBwbGF0Zm9ybVV0aWw6IFBsYXRmb3JtVXRpbCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChEaXNwbGF5RGVuc2l0eVRva2VuKSBwcm90ZWN0ZWQgX2Rpc3BsYXlEZW5zaXR5T3B0aW9uczogSURpc3BsYXlEZW5zaXR5T3B0aW9ucyxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChJR1hfSU5QVVRfR1JPVVBfVFlQRSkgcHJvdGVjdGVkIF9pbnB1dEdyb3VwVHlwZTogSWd4SW5wdXRHcm91cFR5cGUsXG4gICAgICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBfaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGNkciwgc2VsZWN0aW9uU2VydmljZSwgY29tYm9BUEksXG4gICAgICAgICAgICBfaWNvblNlcnZpY2UsIF9kaXNwbGF5RGVuc2l0eU9wdGlvbnMsIF9pbnB1dEdyb3VwVHlwZSwgX2luamVjdG9yKTtcbiAgICAgICAgdGhpcy5jb21ib0FQSS5yZWdpc3Rlcih0aGlzKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLkFycm93RG93bicsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5BbHQuQXJyb3dEb3duJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25BcnJvd0Rvd24oZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy52aXJ0RGlyLmlneEZvck9mLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duLm5hdmlnYXRlRmlyc3QoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hbGxvd0N1c3RvbVZhbHVlcykge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkSXRlbS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdCBhIGRlZmluZWQgaXRlbVxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW0gdGhlIGl0ZW0gdG8gYmUgc2VsZWN0ZWRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5jb21iby5zZWxlY3QoXCJOZXcgWW9ya1wiKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgc2VsZWN0KGl0ZW06IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoaXRlbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdTZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvblNlcnZpY2UuYWRkX2l0ZW1zKHRoaXMuaWQsIGl0ZW0gaW5zdGFuY2VvZiBBcnJheSA/IGl0ZW0gOiBbaXRlbV0sIHRydWUpO1xuICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlc2VsZWN0IHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbVxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW0gdGhlIGl0ZW1zIHRvIGJlIGRlc2VsZWN0ZWRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5jb21iby5kZXNlbGVjdChcIk5ldyBZb3JrXCIpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBkZXNlbGVjdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbGVhclNlbGVjdGlvbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb2xkU2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb247XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5zZWxlY3RfaXRlbXModGhpcy5pZCwgdGhpcy5pc1ZhbGlkKHZhbHVlKSA/IFt2YWx1ZV0gOiBbXSwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuY3JlYXRlRGlzcGxheVRleHQodGhpcy5zZWxlY3Rpb24sIG9sZFNlbGVjdGlvbik7XG4gICAgICAgIHRoaXMuZmlsdGVyVmFsdWUgPSB0aGlzLl9pbnRlcm5hbEZpbHRlciA9IHRoaXMuX3ZhbHVlPy50b1N0cmluZygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlydERpci5jb250ZW50U2l6ZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnZpcnREaXIuaWd4Rm9yT2YuZmluZEluZGV4KGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudCA9IGU/IGVbdGhpcy52YWx1ZUtleV0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlS2V5ID09PSBudWxsIHx8IHRoaXMudmFsdWVLZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQgPT09IHRoaXMuc2VsZWN0aW9uWzBdO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc1JlbW90ZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBuYXZpZ2F0ZSB0byBpdGVtIG9ubHkgaWYgd2UgaGF2ZSBsb2NhbCBkYXRhXG4gICAgICAgICAgICAgICAgICAgIC8vIGFzIHdpdGggcmVtb3RlIGRhdGEgdGhpcyB3aWxsIGZpZGRsZSB3aXRoIGlneEZvcidzIHNjcm9sbCBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3aWxsIHRyaWdnZXIgYW5vdGhlciBjaHVuayBsb2FkIHdoaWNoIHdpbGwgYnJlYWsgdGhlIHZpc3VhbGl6YXRpb25cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93bi5uYXZpZ2F0ZUl0ZW0oaW5kZXgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZHJvcGRvd24ub3BlbmluZy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChhcmdzKSA9PiB7XG4gICAgICAgICAgICBpZiAoYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jb2xsYXBzaW5nID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IHRoaXMuZmlsdGVyZWREYXRhLmZpbmQodGhpcy5maW5kQWxsTWF0Y2hlcyk7XG4gICAgICAgICAgICBpZiAoZmlsdGVyZWQgPT09IHVuZGVmaW5lZCB8fCBmaWx0ZXJlZCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyVmFsdWUgPSB0aGlzLnNlYXJjaFZhbHVlID0gdGhpcy5jb21ib0lucHV0LnZhbHVlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZmlsdGVyVmFsdWUgPSB0aGlzLnNlYXJjaFZhbHVlID0gJyc7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRyb3Bkb3duLm9wZW5lZC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbXBvc2luZykge1xuICAgICAgICAgICAgICAgIHRoaXMuY29tYm9JbnB1dC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5faW50ZXJuYWxGaWx0ZXIgPSB0aGlzLmNvbWJvSW5wdXQudmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRyb3Bkb3duLmNsb3NpbmcucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoYXJncykgPT4ge1xuICAgICAgICAgICAgaWYgKGFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0RWRpdEVsZW1lbnQoKSAmJiAhYXJncy5ldmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NvbGxhcHNpbmcgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyT25CbHVyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fb25Ub3VjaGVkQ2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY29tYm9JbnB1dC5mb2N1cygpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kcm9wZG93bi5jbG9zZWQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlclZhbHVlID0gdGhpcy5faW50ZXJuYWxGaWx0ZXIgPSB0aGlzLmNvbWJvSW5wdXQudmFsdWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGluIHJlYWN0aXZlIGZvcm0gdGhlIGNvbnRyb2wgaXMgbm90IHByZXNlbnQgaW5pdGlhbGx5XG4gICAgICAgIC8vIGFuZCBzZXRzIHRoZSBzZWxlY3Rpb24gdG8gYW4gaW52YWxpZCB2YWx1ZSBpbiB3cml0ZVZhbHVlIG1ldGhvZFxuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCh0aGlzLnNlbGVjdGVkSXRlbSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5jbGVhcih0aGlzLmlkKTtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaGFuZGxlSW5wdXRDaGFuZ2UoZXZlbnQ/OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyVmFsdWUgPSB0aGlzLl9pbnRlcm5hbEZpbHRlciA9IHRoaXMuc2VhcmNoVmFsdWUgPSB0eXBlb2YgZXZlbnQgPT09ICdzdHJpbmcnID8gZXZlbnQgOiBldmVudC50YXJnZXQudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayh0aGlzLnNlYXJjaFZhbHVlKTtcbiAgICAgICAgaWYgKHRoaXMuY29sbGFwc2VkICYmIHRoaXMuY29tYm9JbnB1dC5mb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuY29tYm9JbnB1dC52YWx1ZS50cmltKCkgJiYgdGhpcy5zZWxlY3Rpb24ubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyBoYW5kbGUgY2xlYXJpbmcgb2YgaW5wdXQgYnkgc3BhY2VcbiAgICAgICAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gd2hlbiBmaWx0ZXJpbmcgdGhlIGZvY3VzZWQgaXRlbSBzaG91bGQgYmUgdGhlIGZpcnN0IGl0ZW0gb3IgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtXG4gICAgICAgIGlmICghdGhpcy5kcm9wZG93bi5mb2N1c2VkSXRlbSB8fCB0aGlzLmRyb3Bkb3duLmZvY3VzZWRJdGVtLmlkICE9PSB0aGlzLmRyb3Bkb3duLml0ZW1zWzBdLmlkKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duLm5hdmlnYXRlRmlyc3QoKTtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5oYW5kbGVJbnB1dENoYW5nZShldmVudCk7XG4gICAgICAgIHRoaXMuY29tcG9zaW5nID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSB0aGlzLnBsYXRmb3JtVXRpbC5LRVlNQVAuRU5URVIpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkID0gdGhpcy5maWx0ZXJlZERhdGEuZmluZCh0aGlzLmZpbmRBbGxNYXRjaGVzKTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJlZCA9PT0gbnVsbCB8fCBmaWx0ZXJlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZWxlY3QodGhpcy5kcm9wZG93bi5mb2N1c2VkSXRlbS5pdGVtSUQpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgLy8gbWFudWFsbHkgdHJpZ2dlciB0ZXh0IHNlbGVjdGlvbiBhcyBpdCB3aWxsIG5vdCBiZSB0cmlnZ2VyZWQgZHVyaW5nIGVkaXRpbmdcbiAgICAgICAgICAgIHRoaXMudGV4dFNlbGVjdGlvbi50cmlnZ2VyKCk7XG4gICAgICAgICAgICB0aGlzLmZpbHRlclZhbHVlID0gdGhpcy5nZXRFbGVtZW50VmFsKGZpbHRlcmVkKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSB0aGlzLnBsYXRmb3JtVXRpbC5LRVlNQVAuQkFDS1NQQUNFXG4gICAgICAgICAgICB8fCBldmVudC5rZXkgPT09IHRoaXMucGxhdGZvcm1VdGlsLktFWU1BUC5ERUxFVEUpIHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUlucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5jb2xsYXBzZWQgJiYgZXZlbnQua2V5ID09PSB0aGlzLnBsYXRmb3JtVXRpbC5LRVlNQVAuVEFCKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyT25CbHVyKCk7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb21wb3NpbmcgPSBmYWxzZTtcbiAgICAgICAgc3VwZXIuaGFuZGxlS2V5RG93bihldmVudCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGhhbmRsZUtleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IHRoaXMucGxhdGZvcm1VdGlsLktFWU1BUC5BUlJPV19ET1dOKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdEl0ZW0gPSB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZmlyc3RfaXRlbSh0aGlzLmlkKTtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd24uZm9jdXNlZEl0ZW0gPSBmaXJzdEl0ZW0gJiYgdGhpcy5maWx0ZXJlZERhdGEubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgID8gdGhpcy5kcm9wZG93bi5pdGVtcy5maW5kKGkgPT4gaS5pdGVtSUQgPT09IGZpcnN0SXRlbSlcbiAgICAgICAgICAgICAgICA6IHRoaXMuZHJvcGRvd24uaXRlbXNbMF07XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBoYW5kbGVJdGVtS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSB0aGlzLnBsYXRmb3JtVXRpbC5LRVlNQVAuQVJST1dfVVAgJiYgZXZlbnQuYWx0S2V5KSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICB0aGlzLmNvbWJvSW5wdXQuZm9jdXMoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSB0aGlzLnBsYXRmb3JtVXRpbC5LRVlNQVAuRU5URVIpIHtcbiAgICAgICAgICAgIHRoaXMuY29tYm9JbnB1dC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGhhbmRsZUl0ZW1DbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB0aGlzLmNvbWJvSW5wdXQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgb25CbHVyKCk6IHZvaWQge1xuICAgICAgICAvLyB3aGVuIGNsaWNraW5nIHRoZSB0b2dnbGUgYnV0dG9uIHRvIGNsb3NlIHRoZSBjb21ibyBhbmQgaW1tZWRpYXRlbHkgY2xpY2tpbmcgb3V0c2lkZSBvZiBpdFxuICAgICAgICAvLyB0aGUgY29sbGFwc2VkIHN0YXRlIGlzIG5vdCBtb2RpZmllZCBhcyB0aGUgZHJvcGRvd24gaXMgc3RpbGwgbm90IGNsb3NlZFxuICAgICAgICBpZiAodGhpcy5jb2xsYXBzZWQgfHwgdGhpcy5fY29sbGFwc2luZykge1xuICAgICAgICAgICAgdGhpcy5jbGVhck9uQmx1cigpO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLm9uQmx1cigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBvbkZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbnRlcm5hbEZpbHRlciA9IHRoaXMuY29tYm9JbnB1dC52YWx1ZSB8fCAnJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0RWRpdEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21ib0lucHV0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGhhbmRsZUNsZWFyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24odHJ1ZSk7XG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duLm5hdmlnYXRlRmlyc3QoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNTZWFyY2hJbnB1dCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICB0aGlzLmNvbWJvSW5wdXQudmFsdWUgPSB0aGlzLmZpbHRlclZhbHVlID0gdGhpcy5zZWFyY2hWYWx1ZSA9ICcnO1xuICAgICAgICB0aGlzLmRyb3Bkb3duLmZvY3VzZWRJdGVtID0gbnVsbDtcbiAgICAgICAgdGhpcy5jb21wb3NpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jb21ib0lucHV0LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGhhbmRsZU9wZW5lZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50cmlnZ2VyQ2hlY2soKTtcbiAgICAgICAgdGhpcy5kcm9wZG93bkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIHRoaXMub3BlbmVkLmVtaXQoeyBvd25lcjogdGhpcyB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaGFuZGxlQ2xvc2luZyhlOiBJQmFzZUNhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFyZ3M6IElCYXNlQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3MgPSB7IG93bmVyOiB0aGlzLCBldmVudDogZS5ldmVudCwgY2FuY2VsOiBlLmNhbmNlbCB9O1xuICAgICAgICB0aGlzLmNsb3NpbmcuZW1pdChhcmdzKTtcbiAgICAgICAgZS5jYW5jZWwgPSBhcmdzLmNhbmNlbDtcbiAgICAgICAgaWYgKGUuY2FuY2VsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbXBvc2luZyA9IGZhbHNlO1xuICAgICAgICAvLyBleHBsaWNpdGx5IHVwZGF0ZSBzZWxlY3Rpb24gYW5kIHRyaWdnZXIgdGV4dCBzZWxlY3Rpb24gc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIGZvcmNlIENEXG4gICAgICAgIHRoaXMudGV4dFNlbGVjdGlvbi5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIHRoaXMudGV4dFNlbGVjdGlvbi50cmlnZ2VyKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGZvY3VzU2VhcmNoSW5wdXQob3BlbmluZz86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKG9wZW5pbmcpIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Db250YWluZXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb21ib0lucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgb25DbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIub25DbGljayhldmVudCk7XG4gICAgICAgIGlmICh0aGlzLmNvbWJvSW5wdXQudmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnZpcnREaXIuc2Nyb2xsVG8oMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZmluZEFsbE1hdGNoZXMgPSAoZWxlbWVudDogYW55KTogYm9vbGVhbiA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5kaXNwbGF5S2V5ID8gZWxlbWVudFt0aGlzLmRpc3BsYXlLZXldIDogZWxlbWVudDtcbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgICAvLyB3ZSBjYW4gYWNjZXB0IG51bGwsIHVuZGVmaW5lZCBhbmQgZW1wdHkgc3RyaW5ncyBhcyBlbXB0eSBkaXNwbGF5IHZhbHVlc1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VhcmNoVmFsdWUgPSB0aGlzLnNlYXJjaFZhbHVlIHx8IHRoaXMuY29tYm9JbnB1dC52YWx1ZTtcbiAgICAgICAgcmV0dXJuICEhc2VhcmNoVmFsdWUgJiYgdmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpO1xuICAgIH07XG5cbiAgICBwcm90ZWN0ZWQgc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbjogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld1NlbGVjdGlvbkFzQXJyYXkgPSBuZXdTZWxlY3Rpb24gPyBBcnJheS5mcm9tKG5ld1NlbGVjdGlvbikgYXMgSWd4Q29tYm9JdGVtQ29tcG9uZW50W10gOiBbXTtcbiAgICAgICAgY29uc3Qgb2xkU2VsZWN0aW9uQXNBcnJheSA9IEFycmF5LmZyb20odGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmdldCh0aGlzLmlkKSB8fCBbXSk7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlUZXh0ID0gdGhpcy5jcmVhdGVEaXNwbGF5VGV4dChuZXdTZWxlY3Rpb25Bc0FycmF5LCBvbGRTZWxlY3Rpb25Bc0FycmF5KTtcbiAgICAgICAgY29uc3QgYXJnczogSVNpbXBsZUNvbWJvU2VsZWN0aW9uQ2hhbmdpbmdFdmVudEFyZ3MgPSB7XG4gICAgICAgICAgICBuZXdTZWxlY3Rpb246IG5ld1NlbGVjdGlvbkFzQXJyYXlbMF0sXG4gICAgICAgICAgICBvbGRTZWxlY3Rpb246IG9sZFNlbGVjdGlvbkFzQXJyYXlbMF0sXG4gICAgICAgICAgICBkaXNwbGF5VGV4dCxcbiAgICAgICAgICAgIG93bmVyOiB0aGlzLFxuICAgICAgICAgICAgY2FuY2VsOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgICBpZiAoYXJncy5uZXdTZWxlY3Rpb24gIT09IGFyZ3Mub2xkU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5naW5nLmVtaXQoYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVE9ETzogcmVmYWN0b3IgYmVsb3cgY29kZSBhcyBpdCBzZXRzIHRoZSBzZWxlY3Rpb24gYW5kIHRoZSBkaXNwbGF5IHRleHRcbiAgICAgICAgaWYgKCFhcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgbGV0IGFyZ3NTZWxlY3Rpb24gPSB0aGlzLmlzVmFsaWQoYXJncy5uZXdTZWxlY3Rpb24pXG4gICAgICAgICAgICAgICAgPyBhcmdzLm5ld1NlbGVjdGlvblxuICAgICAgICAgICAgICAgIDogW107XG4gICAgICAgICAgICBhcmdzU2VsZWN0aW9uID0gQXJyYXkuaXNBcnJheShhcmdzU2VsZWN0aW9uKSA/IGFyZ3NTZWxlY3Rpb24gOiBbYXJnc1NlbGVjdGlvbl07XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0X2l0ZW1zKHRoaXMuaWQsIGFyZ3NTZWxlY3Rpb24sIHRydWUpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZUlucHV0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21ib0lucHV0LnZhbHVlID0gdGhpcy5faW50ZXJuYWxGaWx0ZXIgPSB0aGlzLl92YWx1ZSA9IHRoaXMuc2VhcmNoVmFsdWUgPSBkaXNwbGF5VGV4dCAhPT0gYXJncy5kaXNwbGF5VGV4dFxuICAgICAgICAgICAgICAgICAgICA/IGFyZ3MuZGlzcGxheVRleHRcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmNyZWF0ZURpc3BsYXlUZXh0KGFyZ3NTZWxlY3Rpb24sIFthcmdzLm9sZFNlbGVjdGlvbl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayhhcmdzLm5ld1NlbGVjdGlvbik7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVJbnB1dCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1JlbW90ZSkge1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlclJlbW90ZUVudHJpZXMobmV3U2VsZWN0aW9uQXNBcnJheSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZURpc3BsYXlUZXh0KG5ld1NlbGVjdGlvbjogYW55W10sIG9sZFNlbGVjdGlvbjogYW55W10pOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5pc1JlbW90ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UmVtb3RlU2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgb2xkU2VsZWN0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRpc3BsYXlLZXkgIT09IG51bGxcbiAgICAgICAgICAgICYmIHRoaXMuZGlzcGxheUtleSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAmJiBuZXdTZWxlY3Rpb24ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydEtleXNUb0l0ZW1zKG5ld1NlbGVjdGlvbikuZmlsdGVyKGUgPT4gZSkubWFwKGUgPT4gZVt0aGlzLmRpc3BsYXlLZXldKVswXT8udG9TdHJpbmcoKSB8fCAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXdTZWxlY3Rpb25bMF0/LnRvU3RyaW5nKCkgfHwgJyc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhclNlbGVjdGlvbihpZ25vcmVGaWx0ZXI/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGxldCBuZXdTZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZ2V0X2VtcHR5KCk7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcmVkRGF0YS5sZW5ndGggIT09IHRoaXMuZGF0YS5sZW5ndGggJiYgIWlnbm9yZUZpbHRlcikge1xuICAgICAgICAgICAgbmV3U2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmRlbGV0ZV9pdGVtcyh0aGlzLmlkLCB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZ2V0X2FsbF9pZHModGhpcy5maWx0ZXJlZERhdGEsIHRoaXMudmFsdWVLZXkpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJPbkJsdXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gdGhpcy5maWx0ZXJlZERhdGEuZmluZCh0aGlzLmZpbmRNYXRjaCk7XG4gICAgICAgIC8vIHNlbGVjdGluZyBudWxsIGluIHByaW1pdGl2ZSBkYXRhIHJldHVybnMgdW5kZWZpbmVkIGFzIHRoZSBzZWFyY2ggdGV4dCBpcyAnJywgYnV0IHRoZSBpdGVtIGlzIG51bGxcbiAgICAgICAgaWYgKGZpbHRlcmVkID09PSB1bmRlZmluZWQgJiYgdGhpcy5zZWxlY3RlZEl0ZW0gIT09IG51bGwgfHwgIXRoaXMuc2VsZWN0aW9uLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRFbGVtZW50VmFsKGVsZW1lbnQ6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRWYWwgPSB0aGlzLmRpc3BsYXlLZXkgPyBlbGVtZW50W3RoaXMuZGlzcGxheUtleV0gOiBlbGVtZW50O1xuICAgICAgICByZXR1cm4gU3RyaW5nKGVsZW1lbnRWYWwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24odHJ1ZSk7XG4gICAgICAgIHRoaXMuX2ludGVybmFsRmlsdGVyID0gJyc7XG4gICAgICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVmFsaWQodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZFxuICAgICAgICA/IHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSAnJyAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgIDogdmFsdWUgIT09IHVuZGVmaW5lZDtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbSWd4U2ltcGxlQ29tYm9Db21wb25lbnRdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgSWd4Q29tYm9Nb2R1bGUsIElneFJpcHBsZU1vZHVsZSwgQ29tbW9uTW9kdWxlLFxuICAgICAgICBJZ3hJbnB1dEdyb3VwTW9kdWxlLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgSWd4Rm9yT2ZNb2R1bGUsIElneFRvZ2dsZU1vZHVsZSwgSWd4Q2hlY2tib3hNb2R1bGUsXG4gICAgICAgIElneERyb3BEb3duTW9kdWxlLCBJZ3hCdXR0b25Nb2R1bGUsIElneEljb25Nb2R1bGUsXG4gICAgICAgIElneFRleHRTZWxlY3Rpb25Nb2R1bGVcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtJZ3hTaW1wbGVDb21ib0NvbXBvbmVudCwgSWd4Q29tYm9Nb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIElneFNpbXBsZUNvbWJvTW9kdWxlIHsgfVxuIl19
@@ -20158,6 +20158,16 @@ class IgxAutocompleteDirective extends IgxDropDownItemNavigationDirective {
20158
20158
  onInput() {
20159
20159
  this.open();
20160
20160
  }
20161
+ /** @hidden @internal */
20162
+ onCompositionStart() {
20163
+ if (!this._composing) {
20164
+ this._composing = true;
20165
+ }
20166
+ }
20167
+ /** @hidden @internal */
20168
+ onCompositionEnd() {
20169
+ this._composing = false;
20170
+ }
20161
20171
  /** @hidden @internal */
20162
20172
  onArrowDown(event) {
20163
20173
  event.preventDefault();
@@ -20169,7 +20179,7 @@ class IgxAutocompleteDirective extends IgxDropDownItemNavigationDirective {
20169
20179
  }
20170
20180
  /** @hidden @internal */
20171
20181
  handleKeyDown(event) {
20172
- if (!this.collapsed) {
20182
+ if (!this.collapsed && !this._composing) {
20173
20183
  switch (event.key.toLowerCase()) {
20174
20184
  case 'space':
20175
20185
  case 'spacebar':
@@ -20316,6 +20326,8 @@ IgxAutocompleteDirective.propDecorators = {
20316
20326
  ariaActiveDescendant: [{ type: HostBinding, args: ['attr.aria-activedescendant',] }],
20317
20327
  ariaAutocomplete: [{ type: HostBinding, args: ['attr.aria-autocomplete',] }],
20318
20328
  onInput: [{ type: HostListener, args: ['input',] }],
20329
+ onCompositionStart: [{ type: HostListener, args: ['compositionstart',] }],
20330
+ onCompositionEnd: [{ type: HostListener, args: ['compositionend',] }],
20319
20331
  onArrowDown: [{ type: HostListener, args: ['keydown.ArrowDown', ['$event'],] }, { type: HostListener, args: ['keydown.Alt.ArrowDown', ['$event'],] }, { type: HostListener, args: ['keydown.ArrowUp', ['$event'],] }, { type: HostListener, args: ['keydown.Alt.ArrowUp', ['$event'],] }],
20320
20332
  onTab: [{ type: HostListener, args: ['keydown.Tab',] }, { type: HostListener, args: ['keydown.Shift.Tab',] }]
20321
20333
  };
@@ -37480,9 +37492,10 @@ class IgxSimpleComboComponent extends IgxComboBaseDirective {
37480
37492
  if (this.isRemote) {
37481
37493
  return this.getRemoteSelection(newSelection, oldSelection);
37482
37494
  }
37483
- if (this.displayKey !== null && this.displayKey !== undefined
37495
+ if (this.displayKey !== null
37496
+ && this.displayKey !== undefined
37484
37497
  && newSelection.length > 0) {
37485
- return ((_a = this.convertKeysToItems(newSelection).map(e => e[this.displayKey])[0]) === null || _a === void 0 ? void 0 : _a.toString()) || '';
37498
+ return ((_a = this.convertKeysToItems(newSelection).filter(e => e).map(e => e[this.displayKey])[0]) === null || _a === void 0 ? void 0 : _a.toString()) || '';
37486
37499
  }
37487
37500
  return ((_b = newSelection[0]) === null || _b === void 0 ? void 0 : _b.toString()) || '';
37488
37501
  }
@@ -66561,7 +66574,7 @@ class IgxTreeGridRowComponent extends IgxRowDirective {
66561
66574
  if (isPinnedArea) {
66562
66575
  treeRec = this.grid.unpinnedRecords.find(x => x.data === this.rowData);
66563
66576
  }
66564
- return treeRec.level === 0;
66577
+ return (treeRec === null || treeRec === void 0 ? void 0 : treeRec.level) === 0;
66565
66578
  }
66566
66579
  /**
66567
66580
  * @hidden