@aquera/ngx-smart-table 0.0.2-alpha → 0.0.5-alpha

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.
@@ -9,6 +9,7 @@
9
9
  export class NileCalendarEditor {
10
10
  constructor(options) {
11
11
  this.options = options;
12
+ this.acceptsInitialKeypress = false;
12
13
  this.eventListeners = [];
13
14
  }
14
15
  edit(context) {
@@ -109,10 +110,6 @@ export class NileCalendarEditor {
109
110
  if (this.options?.size) {
110
111
  this.calendar.setAttribute('size', this.options.size);
111
112
  }
112
- // Portal rendering (default: true)
113
- if (this.options?.portal !== false) {
114
- this.calendar.setAttribute('portal', 'true');
115
- }
116
113
  }
117
114
  /**
118
115
  * Set up all event listeners with proper cleanup tracking
@@ -211,4 +208,4 @@ export class NileCalendarEditor {
211
208
  return '';
212
209
  }
213
210
  }
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmlsZS1jYWxlbmRhci1lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC10YWJsZS9zcmMvbGliL2VkaXRvcnMvbmlsZS1jYWxlbmRhci1lZGl0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBdUVIOzs7R0FHRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFJN0IsWUFBNkIsT0FBbUM7UUFBbkMsWUFBTyxHQUFQLE9BQU8sQ0FBNEI7UUFGeEQsbUJBQWMsR0FBcUQsRUFBRSxDQUFDO0lBRVgsQ0FBQztJQUVwRSxJQUFJLENBQUMsT0FBNkI7UUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1lBQ2hFLE9BQU87U0FDUjtRQUVELGtFQUFrRTtRQUNsRSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFeEQsdURBQXVEO1FBQ3ZELElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtZQUNqQixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLGdDQUFnQztZQUNoQyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFO2dCQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7YUFDNUI7U0FDRjtRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLHdDQUF3QyxDQUFDO1FBRW5FLDhDQUE4QztRQUM5QyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ3RDLElBQUks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c3RvbSBlZGl0b3IgdXNpbmcgTmlsZUNhbGVuZGFyIGZyb20gQGFxdWVyYS9uaWxlLWVsZW1lbnRzXG4gKiBQcm92aWRlcyBkYXRlIHNlbGVjdGlvbiBmdW5jdGlvbmFsaXR5IGZvciB0YWJsZSBjZWxsc1xuICovXG5cbmltcG9ydCB7IENlbGxFZGl0b3IsIENlbGxFZGl0b3JDb250ZXh0IH0gZnJvbSAnLi4vbW9kZWxzL2NlbGwtc3RyYXRlZ2llcy5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIERhdGUgcmFuZ2UgY29uZmlndXJhdGlvbiBmb3IgcmVzdHJpY3RpbmcgYWxsb3dlZCBkYXRlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFsbG93ZWREYXRlc1JhbmdlIHtcbiAgLyoqIFN0YXJ0IGRhdGUgaW4gSVNPIGZvcm1hdCAoWVlZWS1NTS1ERCkgKi9cbiAgc3RhcnREYXRlPzogc3RyaW5nO1xuICAvKiogRW5kIGRhdGUgaW4gSVNPIGZvcm1hdCAoWVlZWS1NTS1ERCkgKi9cbiAgZW5kRGF0ZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGludGVyZmFjZSBmb3IgTmlsZUNhbGVuZGFyRWRpdG9yXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmlsZUNhbGVuZGFyRWRpdG9yT3B0aW9ucyB7XG4gIC8vIEJhc2ljIHByb3BlcnRpZXNcbiAgLyoqIFBsYWNlaG9sZGVyIHRleHQgdG8gc2hvdyB3aGVuIG5vIGRhdGUgaXMgc2VsZWN0ZWQgKi9cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIC8qKiBEaXNhYmxlIHRoZSBjYWxlbmRhciBjb250cm9sICovXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgLyoqIEhlbHAgdGV4dCB0byBkaXNwbGF5IGJlbG93IHRoZSBjb250cm9sICovXG4gIGhlbHBUZXh0Pzogc3RyaW5nO1xuICBcbiAgLy8gRGF0ZSBjb25maWd1cmF0aW9uXG4gIC8qKiBEYXRlIGZvcm1hdCBmb3IgZGlzcGxheSAoZGVmYXVsdDogJ1lZWVktTU0tREQnKSAqL1xuICBkYXRlRm9ybWF0Pzogc3RyaW5nO1xuICAvKiogU3RhcnQgeWVhciBmb3IgeWVhciBkcm9wZG93biAqL1xuICBzdGFydFllYXI/OiBudW1iZXI7XG4gIC8qKiBFbmQgeWVhciBmb3IgeWVhciBkcm9wZG93biAqL1xuICBlbmRZZWFyPzogbnVtYmVyO1xuICAvKiogRGF0ZSByYW5nZSByZXN0cmljdGlvbnMgKi9cbiAgYWxsb3dlZERhdGVzPzogQWxsb3dlZERhdGVzUmFuZ2U7XG4gIFxuICAvLyBCZWhhdmlvciBvcHRpb25zXG4gIC8qKiBTaG93IGNsZWFyIGJ1dHRvbiBmb3IgcmVtb3ZpbmcgZGF0ZSAqL1xuICBhbGxvd0NsZWFyPzogYm9vbGVhbjtcbiAgLyoqIEFsbG93IGRvdWJsZS1jbGljayB0byB1bnNlbGVjdCBkYXRlICovXG4gIGRvdWJsZUNsaWNrVW5zZWxlY3Q/OiBib29sZWFuO1xuICAvKiogU2hvdyBtb250aCBzZWxlY3Rpb24gZHJvcGRvd24gKi9cbiAgc2hvd01vbnRoRHJvcGRvd24/OiBib29sZWFuO1xuICAvKiogU2hvdyB5ZWFyIHNlbGVjdGlvbiBkcm9wZG93biAqL1xuICBzaG93WWVhckRyb3Bkb3duPzogYm9vbGVhbjtcbiAgLyoqIEFsbG93IG1hbnVhbCBkYXRlIGlucHV0IHZpYSB0ZXh0IGZpZWxkcyAqL1xuICBzaG93TWFudWFsSW5wdXRzPzogYm9vbGVhbjtcbiAgLyoqIEF1dG8tZm9jdXMgdGhlIGNhbGVuZGFyIHdoZW4gZWRpdG9yIG9wZW5zICovXG4gIGF1dG9Gb2N1cz86IGJvb2xlYW47XG4gIFxuICAvLyBWaXN1YWwgc3RhdGVzXG4gIC8qKiBXYXJuaW5nIHN0YXRlIHN0eWxpbmcgKi9cbiAgd2FybmluZz86IGJvb2xlYW47XG4gIC8qKiBFcnJvciBzdGF0ZSBzdHlsaW5nICovXG4gIGVycm9yPzogYm9vbGVhbjtcbiAgLyoqIFN1Y2Nlc3Mgc3RhdGUgc3R5bGluZyAqL1xuICBzdWNjZXNzPzogYm9vbGVhbjtcbiAgLyoqIEVycm9yIG1lc3NhZ2UgdG8gZGlzcGxheSAqL1xuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG4gIFxuICAvLyBTdHlsaW5nXG4gIC8qKiBTaXplIG9mIHRoZSBjYWxlbmRhciBjb250cm9sICovXG4gIHNpemU/OiAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnO1xuICBcbiAgLy8gQWR2YW5jZWQgb3B0aW9uc1xuICAvKiogVXNlIHBvcnRhbCBmb3IgZHJvcGRvd24gcmVuZGVyaW5nIHRvIHByZXZlbnQgY2xpcHBpbmcgKi9cbiAgcG9ydGFsPzogYm9vbGVhbjtcbiAgLyoqIFZhbGlkYXRlIGJlZm9yZSBzYXZpbmcgKGRlZmF1bHQ6IHRydWUpICovXG4gIHZhbGlkYXRlT25TYXZlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDdXN0b20gZWRpdG9yIHRoYXQgdXNlcyBOaWxlQ2FsZW5kYXIgY29tcG9uZW50IGZvciBkYXRlIHNlbGVjdGlvblxuICogQHRlbXBsYXRlIFQgVGhlIHZhbHVlIHR5cGUgKHN0cmluZyBieSBkZWZhdWx0LCBmb3JtYXR0ZWQgYXMgWVlZWS1NTS1ERClcbiAqL1xuZXhwb3J0IGNsYXNzIE5pbGVDYWxlbmRhckVkaXRvcjxUID0gc3RyaW5nPiBpbXBsZW1lbnRzIENlbGxFZGl0b3I8VD4ge1xuICBwcml2YXRlIGNhbGVuZGFyPzogYW55O1xuICBwcml2YXRlIGV2ZW50TGlzdGVuZXJzOiBBcnJheTx7IGV2ZW50OiBzdHJpbmc7IGhhbmRsZXI6IEV2ZW50TGlzdGVuZXIgfT4gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM/OiBOaWxlQ2FsZW5kYXJFZGl0b3JPcHRpb25zKSB7fVxuXG4gIGVkaXQoY29udGV4dDogQ2VsbEVkaXRvckNvbnRleHQ8VD4pOiB2b2lkIHtcbiAgICBpZiAoIWNvbnRleHQuY29udGFpbmVyKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ05pbGVDYWxlbmRhckVkaXRvciByZXF1aXJlcyBhIGNvbnRhaW5lciBlbGVtZW50Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIE5pbGVDYWxlbmRhciBjdXN0b20gZWxlbWVudCB1c2luZyBkb2N1bWVudC5jcmVhdGVFbGVtZW50XG4gICAgdGhpcy5jYWxlbmRhciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ25pbGUtY2FsZW5kYXInKTtcbiAgICBcbiAgICAvLyBTZXQgaW5pdGlhbCB2YWx1ZSAoTmlsZUNhbGVuZGFyIGV4cGVjdHMgRGF0ZSBvYmplY3QpXG4gICAgaWYgKGNvbnRleHQudmFsdWUpIHtcbiAgICAgIGNvbnN0IGRhdGVWYWx1ZSA9IFN0cmluZyhjb250ZXh0LnZhbHVlKTtcbiAgICAgIC8vIENvbnZlcnQgc3RyaW5nIHRvIERhdGUgb2JqZWN0XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZVZhbHVlKTtcbiAgICAgIGlmICghaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgICAgIHRoaXMuY2FsZW5kYXIudmFsdWUgPSBkYXRlO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICB0aGlzLmNhbGVuZGFyLmNsYXNzTmFtZSA9ICdzdC1jZWxsLWVkaXRvciBzdC1uaWxlLWNhbGVuZGFyLWVkaXRvcic7XG4gICAgXG4gICAgLy8gQXBwbHkgaW5saW5lIHN0eWxlcyBmb3IgcHJvcGVyIGNlbGwgZml0dGluZ1xuICAgIHRoaXMuY2FsZW5kYXIuc3R5bGUud2lkdGggPSAnaW5oZXJpdCc7XG4gICAgdGhpcy5jYWxlbmRhci5zdHlsZS5oZWlnaHQgPSAnaW5oZXJpdCc7XG4gICAgdGhpcy5jYWxlbmRhci5zdHlsZS5ib3hTaXppbmcgPSAnYm9yZGVyLWJveCc7XG4gICAgXG4gICAgLy8gQXBwbHkgYWxsIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICAgIHRoaXMuYXBwbHlPcHRpb25zKCk7XG4gICAgXG4gICAgLy8gU2V0IHVwIGV2ZW50IGxpc3RlbmVyc1xuICAgIHRoaXMuc2V0dXBFdmVudExpc3RlbmVycyhjb250ZXh0KTtcbiAgICBcbiAgICAvLyBDbGVhciBjb250YWluZXIgYW5kIGFwcGVuZCBjYWxlbmRhclxuICAgIGNvbnRleHQuY29udGFpbmVyLmlubmVySFRNTCA9ICcnO1xuICAgIGNvbnRleHQuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuY2FsZW5kYXIpO1xuICAgIFxuICAgIC8vIEF1dG8gZm9jdXNcbiAgICBpZiAodGhpcy5vcHRpb25zPy5hdXRvRm9jdXMgIT09IGZhbHNlKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jYWxlbmRhcj8uZm9jdXMoKTtcbiAgICAgIH0sIDApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSBhbGwgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHRoZSBOaWxlQ2FsZW5kYXIgZWxlbWVudFxuICAgKi9cbiAgcHJpdmF0ZSBhcHBseU9wdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNhbGVuZGFyKSByZXR1cm47XG4gICAgXG4gICAgLy8gRGF0ZSBmb3JtYXQgKGRlZmF1bHQ6IElTTyBmb3JtYXQpXG4gICAgY29uc3QgZGF0ZUZvcm1hdCA9IHRoaXMub3B0aW9ucz8uZGF0ZUZvcm1hdCB8fCAnWVlZWS1NTS1ERCc7XG4gICAgdGhpcy5jYWxlbmRhci5zZXRBdHRyaWJ1dGUoJ2RhdGVGb3JtYXQnLCBkYXRlRm9ybWF0KTtcbiAgICBcbiAgICAvLyBCYXNpYyBwcm9wZXJ0aWVzXG4gICAgaWYgKHRoaXMub3B0aW9ucz8uZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuY2FsZW5kYXIuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsIFN0cmluZyh0aGlzLm9wdGlvbnMuZGlzYWJsZWQpKTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMub3B0aW9ucz8ucGxhY2Vob2xkZXIpIHtcbiAgICAgIHRoaXMuY2FsZW5kYXIuc2V0QXR0cmlidXRlKCdwbGFjZWhvbGRlcicsIHRoaXMub3B0aW9ucy5wbGFjZWhvbGRlcik7XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLm9wdGlvbnM/LmhlbHBUZXh0KSB7XG4gICAgICB0aGlzLmNhbGVuZGFyLnNldEF0dHJpYnV0ZSgnaGVscC10ZXh0JywgdGhpcy5vcHRpb25zLmhlbHBUZXh0KTtcbiAgICB9XG4gICAgXG4gICAgLy8gQmVoYXZpb3Igb3B0aW9uc1xuICAgIGlmICh0aGlzLm9wdGlvbnM/LmFsbG93Q2xlYXIpIHtcbiAgICAgIHRoaXMuY2FsZW5kYXIuc2V0QXR0cmlidXRlKCdhbGxvd0NsZWFyJywgU3RyaW5nKHRoaXMub3B0aW9ucy5hbGxvd0NsZWFyKSk7XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLm9wdGlvbnM/LmRvdWJsZUNsaWNrVW5zZWxlY3QpIHtcbiAgICAgIHRoaXMuY2FsZW5kYXIuc2V0QXR0cmlidXRlKCdkb3VibGVDbGlja1Vuc2VsZWN0JywgU3RyaW5nKHRoaXMub3B0aW9ucy5kb3VibGVDbGlja1Vuc2VsZWN0KSk7XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLm9wdGlvbnM/LnNob3dNb250aERyb3Bkb3duKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyLnNldEF0dHJpYnV0ZSgnc2hvd01vbnRoRHJvcGRvd24nLCBTdHJpbmcodGhpcy5vcHRpb25zLnNob3dNb250aERyb3Bkb3duKSk7XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLm9wdGlvbnM/LnNob3dZZWFyRHJvcGRvd24pIHtcbiAgICAgIHRoaXMuY2FsZW5kYXIuc2V0QXR0cmlidXRlKCdzaG93WWVhckRyb3Bkb3duJywgU3RyaW5nKHRoaXMub3B0aW9ucy5zaG93WWVhckRyb3Bkb3duKSk7XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLm9wdGlvbnM/LnNob3dNYW51YWxJbnB1dHMpIHtcbiAgICAgIHRoaXMuY2FsZW5kYXIuc2V0QXR0cmlidXRlKCdzaG93TWFudWFsSW5wdXRzJywgU3RyaW5nKHRoaXMub3B0aW9ucy5zaG93TWFudWFsSW5wdXRzKSk7XG4gICAgfVxuICAgIFxuICAgIC8vIFllYXIgcmFuZ2VcbiAgICBpZiAodGhpcy5vcHRpb25zPy5zdGFydFllYXIpIHtcbiAgICAgIHRoaXMuY2FsZW5kYXIuc2V0QXR0cmlidXRlKCdzdGFydFllYXInLCBTdHJpbmcodGhpcy5vcHRpb25zLnN0YXJ0WWVhcikpO1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5vcHRpb25zPy5lbmRZZWFyKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyLnNldEF0dHJpYnV0ZSgnZW5kWWVhcicsIFN0cmluZyh0aGlzLm9wdGlvbnMuZW5kWWVhcikpO1xuICAgIH1cbiAgICBcbiAgICAvLyBBbGxvd2VkIGRhdGVzIHJhbmdlXG4gICAgaWYgKHRoaXMub3B0aW9ucz8uYWxsb3dlZERhdGVzKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyLnNldEF0dHJpYnV0ZSgnYWxsb3dlZERhdGVzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5vcHRpb25zLmFsbG93ZWREYXRlcykpO1xuICAgIH1cbiAgICBcbiAgICAvLyBWaXN1YWwgc3RhdGVzIC0gdXNpbmcgYXR0cmlidXRlcyBmb3IgcHJvcGVydGllcyB0aGF0IG1heSBub3QgZXhpc3RcbiAgICBpZiAodGhpcy5vcHRpb25zPy53YXJuaW5nKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyLnNldEF0dHJpYnV0ZSgnd2FybmluZycsIFN0cmluZyh0aGlzLm9wdGlvbnMud2FybmluZykpO1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5vcHRpb25zPy5lcnJvcikge1xuICAgICAgdGhpcy5jYWxlbmRhci5zZXRBdHRyaWJ1dGUoJ2Vycm9yJywgU3RyaW5nKHRoaXMub3B0aW9ucy5lcnJvcikpO1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5vcHRpb25zPy5zdWNjZXNzKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyLnNldEF0dHJpYnV0ZSgnc3VjY2VzcycsIFN0cmluZyh0aGlzLm9wdGlvbnMuc3VjY2VzcykpO1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5vcHRpb25zPy5lcnJvck1lc3NhZ2UpIHtcbiAgICAgIHRoaXMuY2FsZW5kYXIuc2V0QXR0cmlidXRlKCdlcnJvci1tZXNzYWdlJywgdGhpcy5vcHRpb25zLmVycm9yTWVzc2FnZSk7XG4gICAgfVxuICAgIFxuICAgIC8vIFNpemVcbiAgICBpZiAodGhpcy5vcHRpb25zPy5zaXplKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyLnNldEF0dHJpYnV0ZSgnc2l6ZScsIHRoaXMub3B0aW9ucy5zaXplKTtcbiAgICB9XG4gICAgXG4gICAgLy8gUG9ydGFsIHJlbmRlcmluZyAoZGVmYXVsdDogdHJ1ZSlcbiAgICBpZiAodGhpcy5vcHRpb25zPy5wb3J0YWwgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyLnNldEF0dHJpYnV0ZSgncG9ydGFsJywgJ3RydWUnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IHVwIGFsbCBldmVudCBsaXN0ZW5lcnMgd2l0aCBwcm9wZXIgY2xlYW51cCB0cmFja2luZ1xuICAgKi9cbiAgcHJpdmF0ZSBzZXR1cEV2ZW50TGlzdGVuZXJzKGNvbnRleHQ6IENlbGxFZGl0b3JDb250ZXh0PFQ+KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNhbGVuZGFyKSByZXR1cm47XG4gICAgXG4gICAgY29uc3QgdmFsaWRhdGVPblNhdmUgPSB0aGlzLm9wdGlvbnM/LnZhbGlkYXRlT25TYXZlICE9PSBmYWxzZTtcbiAgICBcbiAgICAvLyBIYW5kbGUga2V5Ym9hcmQgZXZlbnRzIChrZXlkb3duIGlzIG5vdCByZXBsYWNlZCBieSBjdXN0b20gZXZlbnRzKVxuICAgIGNvbnN0IGtleWRvd25IYW5kbGVyID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBrZXlFdmVudCA9IGUgYXMgS2V5Ym9hcmRFdmVudDtcbiAgICAgIGlmIChrZXlFdmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAga2V5RXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAga2V5RXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuc2F2ZVZhbHVlKGNvbnRleHQsIHZhbGlkYXRlT25TYXZlKTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5RXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICBrZXlFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBrZXlFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgY29udGV4dC5vbkNhbmNlbCgpO1xuICAgICAgfSBlbHNlIGlmIChrZXlFdmVudC5rZXkgPT09ICdUYWInKSB7XG4gICAgICAgIGtleUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGtleUV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnNhdmVWYWx1ZShjb250ZXh0LCB2YWxpZGF0ZU9uU2F2ZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLmNhbGVuZGFyLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBrZXlkb3duSGFuZGxlcik7XG4gICAgdGhpcy5ldmVudExpc3RlbmVycy5wdXNoKHsgZXZlbnQ6ICdrZXlkb3duJywgaGFuZGxlcjoga2V5ZG93bkhhbmRsZXIgfSk7XG4gICAgXG4gICAgLy8gVXNlIG5pbGUtY2hhbmdlIGN1c3RvbSBldmVudCBmb3IgZGF0ZSBzZWxlY3Rpb25cbiAgICBjb25zdCBjaGFuZ2VIYW5kbGVyID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBjdXN0b21FdmVudCA9IGUgYXMgQ3VzdG9tRXZlbnQ7XG4gICAgICBjb250ZXh0Lm9uU2F2ZSh0aGlzLnBhcnNlVmFsdWUoY3VzdG9tRXZlbnQuZGV0YWlsLnZhbHVlKSk7XG4gICAgfTtcbiAgICB0aGlzLmNhbGVuZGFyLmFkZEV2ZW50TGlzdGVuZXIoJ25pbGUtY2hhbmdlJywgY2hhbmdlSGFuZGxlcik7XG4gICAgdGhpcy5ldmVudExpc3RlbmVycy5wdXNoKHsgZXZlbnQ6ICduaWxlLWNoYW5nZScsIGhhbmRsZXI6IGNoYW5nZUhhbmRsZXIgfSk7XG4gICAgXG4gICAgLy8gVXNlIG5pbGUtYmx1ciBjdXN0b20gZXZlbnQgKHNhdmUgb24gYmx1cilcbiAgICBjb25zdCBibHVySGFuZGxlciA9IChlOiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgY3VzdG9tRXZlbnQgPSBlIGFzIEN1c3RvbUV2ZW50O1xuICAgICAgLy8gTm90ZTogTmlsZUNhbGVuZGFyIG1heSBub3QgaGF2ZSB2YWxpZGF0aW9uIG1ldGhvZHNcbiAgICAgIC8vIFZhbGlkYXRpb24gc2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIHZhbGlkYXRvciBzdHJhdGVneSBpbnN0ZWFkXG4gICAgICBjb250ZXh0Lm9uU2F2ZSh0aGlzLnBhcnNlVmFsdWUoY3VzdG9tRXZlbnQuZGV0YWlsLnZhbHVlKSk7XG4gICAgfTtcbiAgICB0aGlzLmNhbGVuZGFyLmFkZEV2ZW50TGlzdGVuZXIoJ25pbGUtYmx1cicsIGJsdXJIYW5kbGVyKTtcbiAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLnB1c2goeyBldmVudDogJ25pbGUtYmx1cicsIGhhbmRsZXI6IGJsdXJIYW5kbGVyIH0pO1xuICAgIFxuICAgIC8vIEhhbmRsZSBjbGVhciBidXR0b24gaWYgZW5hYmxlZFxuICAgIGlmICh0aGlzLm9wdGlvbnM/LmFsbG93Q2xlYXIpIHtcbiAgICAgIGNvbnN0IGNsZWFySGFuZGxlciA9IChlOiBFdmVudCkgPT4ge1xuICAgICAgICBjb250ZXh0Lm9uU2F2ZSh0aGlzLnBhcnNlVmFsdWUoJycpKTtcbiAgICAgIH07XG4gICAgICB0aGlzLmNhbGVuZGFyLmFkZEV2ZW50TGlzdGVuZXIoJ25pbGUtY2xlYXInLCBjbGVhckhhbmRsZXIpO1xuICAgICAgdGhpcy5ldmVudExpc3RlbmVycy5wdXNoKHsgZXZlbnQ6ICduaWxlLWNsZWFyJywgaGFuZGxlcjogY2xlYXJIYW5kbGVyIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIHZhbHVlIHdpdGggb3B0aW9uYWwgdmFsaWRhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBzYXZlVmFsdWUoY29udGV4dDogQ2VsbEVkaXRvckNvbnRleHQ8VD4sIHZhbGlkYXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNhbGVuZGFyKSByZXR1cm47XG4gICAgXG4gICAgLy8gTm90ZTogTmlsZUNhbGVuZGFyIG1heSBub3QgaGF2ZSB2YWxpZGF0aW9uIG1ldGhvZHNcbiAgICAvLyBWYWxpZGF0aW9uIHNob3VsZCBiZSBoYW5kbGVkIGJ5IHRoZSB2YWxpZGF0b3Igc3RyYXRlZ3kgaW5zdGVhZFxuICAgIGNvbnRleHQub25TYXZlKHRoaXMuZ2V0Q3VycmVudFZhbHVlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIHZhbHVlIHRvIGFwcHJvcHJpYXRlIHR5cGVcbiAgICovXG4gIHByaXZhdGUgcGFyc2VWYWx1ZSh2YWx1ZTogc3RyaW5nKTogVCB7XG4gICAgLy8gVmFsdWUgaXMgYWxyZWFkeSBpbiB0aGUgY29ycmVjdCBmb3JtYXQgZnJvbSBuaWxlLWNhbGVuZGFyXG4gICAgcmV0dXJuICh2YWx1ZSB8fCAnJykgYXMgdW5rbm93biBhcyBUO1xuICB9XG5cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAvLyBSZW1vdmUgYWxsIGV2ZW50IGxpc3RlbmVyc1xuICAgIGlmICh0aGlzLmNhbGVuZGFyKSB7XG4gICAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLmZvckVhY2goKHsgZXZlbnQsIGhhbmRsZXIgfSkgPT4ge1xuICAgICAgICB0aGlzLmNhbGVuZGFyPy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5ldmVudExpc3RlbmVycyA9IFtdO1xuICAgICAgXG4gICAgICB0aGlzLmNhbGVuZGFyLnJlbW92ZSgpO1xuICAgICAgdGhpcy5jYWxlbmRhciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBmb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGVuZGFyPy5mb2N1cygpO1xuICB9XG5cbiAgZ2V0Q3VycmVudFZhbHVlKCk6IFQge1xuICAgIGlmICghdGhpcy5jYWxlbmRhcikgcmV0dXJuICcnIGFzIHVua25vd24gYXMgVDtcbiAgICBcbiAgICAvLyBOaWxlQ2FsZW5kYXIudmFsdWUgaXMgYSBEYXRlIG9iamVjdCwgY29udmVydCB0byBJU08gc3RyaW5nIGZvcm1hdFxuICAgIGlmICh0aGlzLmNhbGVuZGFyLnZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgY29uc3QgeWVhciA9IHRoaXMuY2FsZW5kYXIudmFsdWUuZ2V0RnVsbFllYXIoKTtcbiAgICAgIGNvbnN0IG1vbnRoID0gU3RyaW5nKHRoaXMuY2FsZW5kYXIudmFsdWUuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICBjb25zdCBkYXkgPSBTdHJpbmcodGhpcy5jYWxlbmRhci52YWx1ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICByZXR1cm4gYCR7eWVhcn0tJHttb250aH0tJHtkYXl9YCBhcyB1bmtub3duIGFzIFQ7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiAnJyBhcyB1bmtub3duIGFzIFQ7XG4gIH1cbn1cbiJdfQ==
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmlsZS1jYWxlbmRhci1lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC10YWJsZS9zcmMvbGliL2VkaXRvcnMvbmlsZS1jYWxlbmRhci1lZGl0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBcUVIOzs7R0FHRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFNN0IsWUFBNkIsT0FBbUM7UUFBbkMsWUFBTyxHQUFQLE9BQU8sQ0FBNEI7UUFMaEUsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBR3ZCLG1CQUFjLEdBQXFELEVBQUUsQ0FBQztJQUVYLENBQUM7SUFFcEUsSUFBSSxDQUFDLE9BQTZCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsaURBQWlELENBQUMsQ0FBQztZQUNoRSxPQUFPO1NBQ1I7UUFFRCxrRUFBa0U7UUFDbEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXhELHVEQUF1RDtRQUN2RCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDakIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxnQ0FBZ0M7WUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2FBQzVCO1NBQ0Y7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyx3Q0FBd0MsQ0FBQztRQUVuRSw4Q0FBOEM7UUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FB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Q0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDckQsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztZQUV6QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxFQUFrQixDQUFDO1FBRTlDLG9FQUFvRTtRQUNwRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxZQUFZLElBQUksRUFBRTtZQUN2QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMvQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUMxRSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ25FLE9BQU8sR0FBRyxJQUFJLElBQUksS0FBSyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztTQUNsRDtRQUVELE9BQU8sRUFBa0IsQ0FBQztJQUM1QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEN1c3RvbSBlZGl0b3IgdXNpbmcgTmlsZUNhbGVuZGFyIGZyb20gQGFxdWVyYS9uaWxlLWVsZW1lbnRzXG4gKiBQcm92aWRlcyBkYXRlIHNlbGVjdGlvbiBmdW5jdGlvbmFsaXR5IGZvciB0YWJsZSBjZWxsc1xuICovXG5cbmltcG9ydCB7IENlbGxFZGl0b3IsIENlbGxFZGl0b3JDb250ZXh0IH0gZnJvbSAnLi4vbW9kZWxzL2NlbGwtc3RyYXRlZ2llcy5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIERhdGUgcmFuZ2UgY29uZmlndXJhdGlvbiBmb3IgcmVzdHJpY3RpbmcgYWxsb3dlZCBkYXRlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFsbG93ZWREYXRlc1JhbmdlIHtcbiAgLyoqIFN0YXJ0IGRhdGUgaW4gSVNPIGZvcm1hdCAoWVlZWS1NTS1ERCkgKi9cbiAgc3RhcnREYXRlPzogc3RyaW5nO1xuICAvKiogRW5kIGRhdGUgaW4gSVNPIGZvcm1hdCAoWVlZWS1NTS1ERCkgKi9cbiAgZW5kRGF0ZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGludGVyZmFjZSBmb3IgTmlsZUNhbGVuZGFyRWRpdG9yXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmlsZUNhbGVuZGFyRWRpdG9yT3B0aW9ucyB7XG4gIC8vIEJhc2ljIHByb3BlcnRpZXNcbiAgLyoqIFBsYWNlaG9sZGVyIHRleHQgdG8gc2hvdyB3aGVuIG5vIGRhdGUgaXMgc2VsZWN0ZWQgKi9cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIC8qKiBEaXNhYmxlIHRoZSBjYWxlbmRhciBjb250cm9sICovXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgLyoqIEhlbHAgdGV4dCB0byBkaXNwbGF5IGJlbG93IHRoZSBjb250cm9sICovXG4gIGhlbHBUZXh0Pzogc3RyaW5nO1xuICBcbiAgLy8gRGF0ZSBjb25maWd1cmF0aW9uXG4gIC8qKiBEYXRlIGZvcm1hdCBmb3IgZGlzcGxheSAoZGVmYXVsdDogJ1lZWVktTU0tREQnKSAqL1xuICBkYXRlRm9ybWF0Pzogc3RyaW5nO1xuICAvKiogU3RhcnQgeWVhciBmb3IgeWVhciBkcm9wZG93biAqL1xuICBzdGFydFllYXI/OiBudW1iZXI7XG4gIC8qKiBFbmQgeWVhciBmb3IgeWVhciBkcm9wZG93biAqL1xuICBlbmRZZWFyPzogbnVtYmVyO1xuICAvKiogRGF0ZSByYW5nZSByZXN0cmljdGlvbnMgKi9cbiAgYWxsb3dlZERhdGVzPzogQWxsb3dlZERhdGVzUmFuZ2U7XG4gIFxuICAvLyBCZWhhdmlvciBvcHRpb25zXG4gIC8qKiBTaG93IGNsZWFyIGJ1dHRvbiBmb3IgcmVtb3ZpbmcgZGF0ZSAqL1xuICBhbGxvd0NsZWFyPzogYm9vbGVhbjtcbiAgLyoqIEFsbG93IGRvdWJsZS1jbGljayB0byB1bnNlbGVjdCBkYXRlICovXG4gIGRvdWJsZUNsaWNrVW5zZWxlY3Q/OiBib29sZWFuO1xuICAvKiogU2hvdyBtb250aCBzZWxlY3Rpb24gZHJvcGRvd24gKi9cbiAgc2hvd01vbnRoRHJvcGRvd24/OiBib29sZWFuO1xuICAvKiogU2hvdyB5ZWFyIHNlbGVjdGlvbiBkcm9wZG93biAqL1xuICBzaG93WWVhckRyb3Bkb3duPzogYm9vbGVhbjtcbiAgLyoqIEFsbG93IG1hbnVhbCBkYXRlIGlucHV0IHZpYSB0ZXh0IGZpZWxkcyAqL1xuICBzaG93TWFudWFsSW5wdXRzPzogYm9vbGVhbjtcbiAgLyoqIEF1dG8tZm9jdXMgdGhlIGNhbGVuZGFyIHdoZW4gZWRpdG9yIG9wZW5zICovXG4gIGF1dG9Gb2N1cz86IGJvb2xlYW47XG4gIFxuICAvLyBWaXN1YWwgc3RhdGVzXG4gIC8qKiBXYXJuaW5nIHN0YXRlIHN0eWxpbmcgKi9cbiAgd2FybmluZz86IGJvb2xlYW47XG4gIC8qKiBFcnJvciBzdGF0ZSBzdHlsaW5nICovXG4gIGVycm9yPzogYm9vbGVhbjtcbiAgLyoqIFN1Y2Nlc3Mgc3RhdGUgc3R5bGluZyAqL1xuICBzdWNjZXNzPzogYm9vbGVhbjtcbiAgLyoqIEVycm9yIG1lc3NhZ2UgdG8gZGlzcGxheSAqL1xuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG4gIFxuICAvLyBTdHlsaW5nXG4gIC8qKiBTaXplIG9mIHRoZSBjYWxlbmRhciBjb250cm9sICovXG4gIHNpemU/OiAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnO1xuICBcbiAgLy8gQWR2YW5jZWQgb3B0aW9uc1xuICAvKiogVmFsaWRhdGUgYmVmb3JlIHNhdmluZyAoZGVmYXVsdDogdHJ1ZSkgKi9cbiAgdmFsaWRhdGVPblNhdmU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEN1c3RvbSBlZGl0b3IgdGhhdCB1c2VzIE5pbGVDYWxlbmRhciBjb21wb25lbnQgZm9yIGRhdGUgc2VsZWN0aW9uXG4gKiBAdGVtcGxhdGUgVCBUaGUgdmFsdWUgdHlwZSAoc3RyaW5nIGJ5IGRlZmF1bHQsIGZvcm1hdHRlZCBhcyBZWVlZLU1NLUREKVxuICovXG5leHBvcnQgY2xhc3MgTmlsZUNhbGVuZGFyRWRpdG9yPFQgPSBzdHJpbmc+IGltcGxlbWVudHMgQ2VsbEVkaXRvcjxUPiB7XG4gIGFjY2VwdHNJbml0aWFsS2V5cHJlc3MgPSBmYWxzZTtcbiAgXG4gIHByaXZhdGUgY2FsZW5kYXI/OiBhbnk7XG4gIHByaXZhdGUgZXZlbnRMaXN0ZW5lcnM6IEFycmF5PHsgZXZlbnQ6IHN0cmluZzsgaGFuZGxlcjogRXZlbnRMaXN0ZW5lciB9PiA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgb3B0aW9ucz86IE5pbGVDYWxlbmRhckVkaXRvck9wdGlvbnMpIHt9XG5cbiAgZWRpdChjb250ZXh0OiBDZWxsRWRpdG9yQ29udGV4dDxUPik6IHZvaWQge1xuICAgIGlmICghY29udGV4dC5jb250YWluZXIpIHtcbiAgICAgIGNvbnNvbGUud2FybignTmlsZUNhbGVuZGFyRWRpdG9yIHJlcXVpcmVzIGEgY29udGFpbmVyIGVsZW1lbnQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgTmlsZUNhbGVuZGFyIGN1c3RvbSBlbGVtZW50IHVzaW5nIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRcbiAgICB0aGlzLmNhbGVuZGFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbmlsZS1jYWxlbmRhcicpO1xuICAgIFxuICAgIC8vIFNldCBpbml0aWFsIHZhbHVlIChOaWxlQ2FsZW5kYXIgZXhwZWN0cyBEYXRlIG9iamVjdClcbiAgICBpZiAoY29udGV4dC52YWx1ZSkge1xuICAgICAgY29uc3QgZGF0ZVZhbHVlID0gU3RyaW5nKGNvbnRleHQudmFsdWUpO1xuICAgICAgLy8gQ29udmVydCBzdHJpbmcgdG8gRGF0ZSBvYmplY3RcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkYXRlVmFsdWUpO1xuICAgICAgaWYgKCFpc05hTihkYXRlLmdldFRpbWUoKSkpIHtcbiAgICAgICAgdGhpcy5jYWxlbmRhci52YWx1ZSA9IGRhdGU7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIHRoaXMuY2FsZW5kYXIuY2xhc3NOYW1lID0gJ3N0LWNlbGwtZWRpdG9yIHN0LW5pbGUtY2FsZW5kYXItZWRpdG9yJztcbiAgICBcbiAgICAvLyBBcHBseSBpbmxpbmUgc3R5bGVzIGZvciBwcm9wZXIgY2VsbCBmaXR0aW5nXG4gICAgdGhpcy5jYWxlbmRhci5zdHlsZS53aWR0aCA9ICdpbmhlcml0JztcbiAgICB0aGlzLmNhbGVuZGFyLnN0eWxlLmhlaWdodCA9ICdpbmhlcml0JztcbiAgICB0aGlzLmNhbGVuZGFyLnN0eWxlLmJveFNpemluZyA9ICdib3JkZXItYm94JztcbiAgICBcbiAgICAvLyBBcHBseSBhbGwgY29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAgdGhpcy5hcHBseU9wdGlvbnMoKTtcbiAgICBcbiAgICAvLyBTZXQgdXAgZXZlbnQgbGlzdGVuZXJzXG4gICAgdGhpcy5zZXR1cEV2ZW50TGlzdGVuZXJzKGNvbnRleHQpO1xuICAgIFxuICAgIC8vIENsZWFyIGNvbnRhaW5lciBhbmQgYXBwZW5kIGNhbGVuZGFyXG4gICAgY29udGV4dC5jb250YWluZXIuaW5uZXJIVE1MID0gJyc7XG4gICAgY29udGV4dC5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5jYWxlbmRhcik7XG4gICAgXG4gICAgLy8gQXV0byBmb2N1c1xuICAgIGlmICh0aGlzLm9wdGlvbnM/LmF1dG9Gb2N1cyAhPT0gZmFsc2UpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNhbGVuZGFyPy5mb2N1cygpO1xuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IGFsbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdGhlIE5pbGVDYWxlbmRhciBlbGVtZW50XG4gICAqL1xuICBwcml2YXRlIGFwcGx5T3B0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2FsZW5kYXIpIHJldHVybjtcbiAgICBcbiAgICAvLyBEYXRlIGZvcm1hdCAoZGVmYXVsdDogSVNPIGZvcm1hdClcbiAgICBjb25zdCBkYXRlRm9ybWF0ID0gdGhpcy5vcHRpb25zPy5kYXRlRm9ybWF0IHx8ICdZWVlZLU1NLUREJztcbiAgICB0aGlzLmNhbGVuZGFyLnNldEF0dHJpYnV0ZSgnZGF0ZUZvcm1hdCcsIGRhdGVGb3JtYXQpO1xuICAgIFxuICAgIC8vIEJhc2ljIHByb3BlcnRpZXNcbiAgICBpZiAodGhpcy5vcHRpb25zPy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5jYWxlbmRhci5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgU3RyaW5nKHRoaXMub3B0aW9ucy5kaXNhYmxlZCkpO1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5vcHRpb25zPy5wbGFjZWhvbGRlcikge1xuICAgICAgdGhpcy5jYWxlbmRhci5zZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywgdGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyKTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMub3B0aW9ucz8uaGVscFRleHQpIHtcbiAgICAgIHRoaXMuY2FsZW5kYXIuc2V0QXR0cmlidXRlKCdoZWxwLXRleHQnLCB0aGlzLm9wdGlvbnMuaGVscFRleHQpO1xuICAgIH1cbiAgICBcbiAgICAvLyBCZWhhdmlvciBvcHRpb25zXG4gICAgaWYgKHRoaXMub3B0aW9ucz8uYWxsb3dDbGVhcikge1xuICAgICAgdGhpcy5jYWxlbmRhci5zZXRBdHRyaWJ1dGUoJ2FsbG93Q2xlYXInLCBTdHJpbmcodGhpcy5vcHRpb25zLmFsbG93Q2xlYXIpKTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMub3B0aW9ucz8uZG91YmxlQ2xpY2tVbnNlbGVjdCkge1xuICAgICAgdGhpcy5jYWxlbmRhci5zZXRBdHRyaWJ1dGUoJ2RvdWJsZUNsaWNrVW5zZWxlY3QnLCBTdHJpbmcodGhpcy5vcHRpb25zLmRvdWJsZUNsaWNrVW5zZWxlY3QpKTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMub3B0aW9ucz8uc2hvd01vbnRoRHJvcGRvd24pIHtcbiAgICAgIHRoaXMuY2FsZW5kYXIuc2V0QXR0cmlidXRlKCdzaG93TW9udGhEcm9wZG93bicsIFN0cmluZyh0aGlzLm9wdGlvbnMuc2hvd01vbnRoRHJvcGRvd24pKTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMub3B0aW9ucz8uc2hvd1llYXJEcm9wZG93bikge1xuICAgICAgdGhpcy5jYWxlbmRhci5zZXRBdHRyaWJ1dGUoJ3Nob3dZZWFyRHJvcGRvd24nLCBTdHJpbmcodGhpcy5vcHRpb25zLnNob3dZZWFyRHJvcGRvd24pKTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMub3B0aW9ucz8uc2hvd01hbnVhbElucHV0cykge1xuICAgICAgdGhpcy5jYWxlbmRhci5zZXRBdHRyaWJ1dGUoJ3Nob3dNYW51YWxJbnB1dHMnLCBTdHJpbmcodGhpcy5vcHRpb25zLnNob3dNYW51YWxJbnB1dHMpKTtcbiAgICB9XG4gICAgXG4gICAgLy8gWWVhciByYW5nZVxuICAgIGlmICh0aGlzLm9wdGlvbnM/LnN0YXJ0WWVhcikge1xuICAgICAgdGhpcy5jYWxlbmRhci5zZXRBdHRyaWJ1dGUoJ3N0YXJ0WWVhcicsIFN0cmluZyh0aGlzLm9wdGlvbnMuc3RhcnRZZWFyKSk7XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLm9wdGlvbnM/LmVuZFllYXIpIHtcbiAgICAgIHRoaXMuY2FsZW5kYXIuc2V0QXR0cmlidXRlKCdlbmRZZWFyJywgU3RyaW5nKHRoaXMub3B0aW9ucy5lbmRZZWFyKSk7XG4gICAgfVxuICAgIFxuICAgIC8vIEFsbG93ZWQgZGF0ZXMgcmFuZ2VcbiAgICBpZiAodGhpcy5vcHRpb25zPy5hbGxvd2VkRGF0ZXMpIHtcbiAgICAgIHRoaXMuY2FsZW5kYXIuc2V0QXR0cmlidXRlKCdhbGxvd2VkRGF0ZXMnLCBKU09OLnN0cmluZ2lmeSh0aGlzLm9wdGlvbnMuYWxsb3dlZERhdGVzKSk7XG4gICAgfVxuICAgIFxuICAgIC8vIFZpc3VhbCBzdGF0ZXMgLSB1c2luZyBhdHRyaWJ1dGVzIGZvciBwcm9wZXJ0aWVzIHRoYXQgbWF5IG5vdCBleGlzdFxuICAgIGlmICh0aGlzLm9wdGlvbnM/Lndhcm5pbmcpIHtcbiAgICAgIHRoaXMuY2FsZW5kYXIuc2V0QXR0cmlidXRlKCd3YXJuaW5nJywgU3RyaW5nKHRoaXMub3B0aW9ucy53YXJuaW5nKSk7XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLm9wdGlvbnM/LmVycm9yKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyLnNldEF0dHJpYnV0ZSgnZXJyb3InLCBTdHJpbmcodGhpcy5vcHRpb25zLmVycm9yKSk7XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLm9wdGlvbnM/LnN1Y2Nlc3MpIHtcbiAgICAgIHRoaXMuY2FsZW5kYXIuc2V0QXR0cmlidXRlKCdzdWNjZXNzJywgU3RyaW5nKHRoaXMub3B0aW9ucy5zdWNjZXNzKSk7XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLm9wdGlvbnM/LmVycm9yTWVzc2FnZSkge1xuICAgICAgdGhpcy5jYWxlbmRhci5zZXRBdHRyaWJ1dGUoJ2Vycm9yLW1lc3NhZ2UnLCB0aGlzLm9wdGlvbnMuZXJyb3JNZXNzYWdlKTtcbiAgICB9XG4gICAgXG4gICAgLy8gU2l6ZVxuICAgIGlmICh0aGlzLm9wdGlvbnM/LnNpemUpIHtcbiAgICAgIHRoaXMuY2FsZW5kYXIuc2V0QXR0cmlidXRlKCdzaXplJywgdGhpcy5vcHRpb25zLnNpemUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdXAgYWxsIGV2ZW50IGxpc3RlbmVycyB3aXRoIHByb3BlciBjbGVhbnVwIHRyYWNraW5nXG4gICAqL1xuICBwcml2YXRlIHNldHVwRXZlbnRMaXN0ZW5lcnMoY29udGV4dDogQ2VsbEVkaXRvckNvbnRleHQ8VD4pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2FsZW5kYXIpIHJldHVybjtcbiAgICBcbiAgICBjb25zdCB2YWxpZGF0ZU9uU2F2ZSA9IHRoaXMub3B0aW9ucz8udmFsaWRhdGVPblNhdmUgIT09IGZhbHNlO1xuICAgIFxuICAgIC8vIEhhbmRsZSBrZXlib2FyZCBldmVudHMgKGtleWRvd24gaXMgbm90IHJlcGxhY2VkIGJ5IGN1c3RvbSBldmVudHMpXG4gICAgY29uc3Qga2V5ZG93bkhhbmRsZXIgPSAoZTogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGtleUV2ZW50ID0gZSBhcyBLZXlib2FyZEV2ZW50O1xuICAgICAgaWYgKGtleUV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICBrZXlFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBrZXlFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5zYXZlVmFsdWUoY29udGV4dCwgdmFsaWRhdGVPblNhdmUpO1xuICAgICAgfSBlbHNlIGlmIChrZXlFdmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgIGtleUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGtleUV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBjb250ZXh0Lm9uQ2FuY2VsKCk7XG4gICAgICB9IGVsc2UgaWYgKGtleUV2ZW50LmtleSA9PT0gJ1RhYicpIHtcbiAgICAgICAga2V5RXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAga2V5RXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuc2F2ZVZhbHVlKGNvbnRleHQsIHZhbGlkYXRlT25TYXZlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuY2FsZW5kYXIuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGtleWRvd25IYW5kbGVyKTtcbiAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLnB1c2goeyBldmVudDogJ2tleWRvd24nLCBoYW5kbGVyOiBrZXlkb3duSGFuZGxlciB9KTtcbiAgICBcbiAgICAvLyBVc2UgbmlsZS1jaGFuZ2UgY3VzdG9tIGV2ZW50IGZvciBkYXRlIHNlbGVjdGlvblxuICAgIGNvbnN0IGNoYW5nZUhhbmRsZXIgPSAoZTogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gZSBhcyBDdXN0b21FdmVudDtcbiAgICAgIGNvbnRleHQub25TYXZlKHRoaXMucGFyc2VWYWx1ZShjdXN0b21FdmVudC5kZXRhaWwudmFsdWUpKTtcbiAgICB9O1xuICAgIHRoaXMuY2FsZW5kYXIuYWRkRXZlbnRMaXN0ZW5lcignbmlsZS1jaGFuZ2UnLCBjaGFuZ2VIYW5kbGVyKTtcbiAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLnB1c2goeyBldmVudDogJ25pbGUtY2hhbmdlJywgaGFuZGxlcjogY2hhbmdlSGFuZGxlciB9KTtcbiAgICBcbiAgICAvLyBVc2UgbmlsZS1ibHVyIGN1c3RvbSBldmVudCAoc2F2ZSBvbiBibHVyKVxuICAgIGNvbnN0IGJsdXJIYW5kbGVyID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBjdXN0b21FdmVudCA9IGUgYXMgQ3VzdG9tRXZlbnQ7XG4gICAgICAvLyBOb3RlOiBOaWxlQ2FsZW5kYXIgbWF5IG5vdCBoYXZlIHZhbGlkYXRpb24gbWV0aG9kc1xuICAgICAgLy8gVmFsaWRhdGlvbiBzaG91bGQgYmUgaGFuZGxlZCBieSB0aGUgdmFsaWRhdG9yIHN0cmF0ZWd5IGluc3RlYWRcbiAgICAgIGNvbnRleHQub25TYXZlKHRoaXMucGFyc2VWYWx1ZShjdXN0b21FdmVudC5kZXRhaWwudmFsdWUpKTtcbiAgICB9O1xuICAgIHRoaXMuY2FsZW5kYXIuYWRkRXZlbnRMaXN0ZW5lcignbmlsZS1ibHVyJywgYmx1ckhhbmRsZXIpO1xuICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnMucHVzaCh7IGV2ZW50OiAnbmlsZS1ibHVyJywgaGFuZGxlcjogYmx1ckhhbmRsZXIgfSk7XG4gICAgXG4gICAgLy8gSGFuZGxlIGNsZWFyIGJ1dHRvbiBpZiBlbmFibGVkXG4gICAgaWYgKHRoaXMub3B0aW9ucz8uYWxsb3dDbGVhcikge1xuICAgICAgY29uc3QgY2xlYXJIYW5kbGVyID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnRleHQub25TYXZlKHRoaXMucGFyc2VWYWx1ZSgnJykpO1xuICAgICAgfTtcbiAgICAgIHRoaXMuY2FsZW5kYXIuYWRkRXZlbnRMaXN0ZW5lcignbmlsZS1jbGVhcicsIGNsZWFySGFuZGxlcik7XG4gICAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLnB1c2goeyBldmVudDogJ25pbGUtY2xlYXInLCBoYW5kbGVyOiBjbGVhckhhbmRsZXIgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNhdmUgdmFsdWUgd2l0aCBvcHRpb25hbCB2YWxpZGF0aW9uXG4gICAqL1xuICBwcml2YXRlIHNhdmVWYWx1ZShjb250ZXh0OiBDZWxsRWRpdG9yQ29udGV4dDxUPiwgdmFsaWRhdGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2FsZW5kYXIpIHJldHVybjtcbiAgICBcbiAgICAvLyBOb3RlOiBOaWxlQ2FsZW5kYXIgbWF5IG5vdCBoYXZlIHZhbGlkYXRpb24gbWV0aG9kc1xuICAgIC8vIFZhbGlkYXRpb24gc2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIHZhbGlkYXRvciBzdHJhdGVneSBpbnN0ZWFkXG4gICAgY29udGV4dC5vblNhdmUodGhpcy5nZXRDdXJyZW50VmFsdWUoKSk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgdmFsdWUgdG8gYXBwcm9wcmlhdGUgdHlwZVxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiBUIHtcbiAgICAvLyBWYWx1ZSBpcyBhbHJlYWR5IGluIHRoZSBjb3JyZWN0IGZvcm1hdCBmcm9tIG5pbGUtY2FsZW5kYXJcbiAgICByZXR1cm4gKHZhbHVlIHx8ICcnKSBhcyB1bmtub3duIGFzIFQ7XG4gIH1cblxuICBkZXN0cm95KCk6IHZvaWQge1xuICAgIC8vIFJlbW92ZSBhbGwgZXZlbnQgbGlzdGVuZXJzXG4gICAgaWYgKHRoaXMuY2FsZW5kYXIpIHtcbiAgICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnMuZm9yRWFjaCgoeyBldmVudCwgaGFuZGxlciB9KSA9PiB7XG4gICAgICAgIHRoaXMuY2FsZW5kYXI/LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmV2ZW50TGlzdGVuZXJzID0gW107XG4gICAgICBcbiAgICAgIHRoaXMuY2FsZW5kYXIucmVtb3ZlKCk7XG4gICAgICB0aGlzLmNhbGVuZGFyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuY2FsZW5kYXI/LmZvY3VzKCk7XG4gIH1cblxuICBnZXRDdXJyZW50VmFsdWUoKTogVCB7XG4gICAgaWYgKCF0aGlzLmNhbGVuZGFyKSByZXR1cm4gJycgYXMgdW5rbm93biBhcyBUO1xuICAgIFxuICAgIC8vIE5pbGVDYWxlbmRhci52YWx1ZSBpcyBhIERhdGUgb2JqZWN0LCBjb252ZXJ0IHRvIElTTyBzdHJpbmcgZm9ybWF0XG4gICAgaWYgKHRoaXMuY2FsZW5kYXIudmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICBjb25zdCB5ZWFyID0gdGhpcy5jYWxlbmRhci52YWx1ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgY29uc3QgbW9udGggPSBTdHJpbmcodGhpcy5jYWxlbmRhci52YWx1ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgIGNvbnN0IGRheSA9IFN0cmluZyh0aGlzLmNhbGVuZGFyLnZhbHVlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgIHJldHVybiBgJHt5ZWFyfS0ke21vbnRofS0ke2RheX1gIGFzIHVua25vd24gYXMgVDtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuICcnIGFzIHVua25vd24gYXMgVDtcbiAgfVxufVxuIl19
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Custom editor using NileDatePicker from @aquera/nile-elements
3
- * Supports both single date and range selection with slot-based trigger input
3
+ * Supports both single date and range selection with slot-based trigger div
4
4
  * Returns string values for both modes:
5
5
  * - Single mode: 'YYYY-MM-DD'
6
6
  * - Range mode: 'YYYY-MM-DD - YYYY-MM-DD'
@@ -15,6 +15,7 @@
15
15
  export class NileDatePickerEditor {
16
16
  constructor(options) {
17
17
  this.options = options;
18
+ this.acceptsInitialKeypress = false;
18
19
  this.eventListeners = [];
19
20
  }
20
21
  edit(context) {
@@ -29,18 +30,20 @@ export class NileDatePickerEditor {
29
30
  this.datePicker.style.width = 'inherit';
30
31
  this.datePicker.style.height = 'inherit';
31
32
  this.datePicker.style.boxSizing = 'border-box';
32
- // Create trigger input with slot using document.createElement
33
- this.triggerInput = document.createElement('nile-input');
34
- this.triggerInput.setAttribute('slot', 'trigger');
33
+ // Create trigger div with slot
34
+ this.triggerDiv = document.createElement('div');
35
+ this.triggerDiv.setAttribute('slot', 'trigger');
36
+ this.triggerDiv.setAttribute('contenteditable', 'false');
37
+ this.triggerDiv.style.width = '100%';
38
+ this.triggerDiv.style.minHeight = '28px';
39
+ this.triggerDiv.style.cursor = 'pointer';
40
+ this.triggerDiv.style.boxSizing = 'border-box';
35
41
  // Set initial value
36
42
  this.setInitialValue(context.value);
37
- if (this.options?.label) {
38
- this.triggerInput.label = this.options.label;
39
- }
40
43
  // Apply configuration options
41
44
  this.applyOptions();
42
45
  // Append trigger to date picker (slot-based)
43
- this.datePicker.appendChild(this.triggerInput);
46
+ this.datePicker.appendChild(this.triggerDiv);
44
47
  // Set up event listeners
45
48
  this.setupEventListeners(context);
46
49
  // Append to container
@@ -49,30 +52,31 @@ export class NileDatePickerEditor {
49
52
  // Auto focus and open the date picker
50
53
  if (this.options?.autoFocus !== false) {
51
54
  setTimeout(() => {
52
- this.triggerInput?.focus();
55
+ this.triggerDiv?.focus();
53
56
  // Trigger a click to open the date picker dropdown
54
- this.triggerInput?.click();
57
+ this.triggerDiv?.click();
55
58
  }, 0);
56
59
  }
57
60
  }
58
61
  /**
59
- * Set initial value in the trigger input
62
+ * Set initial value in the trigger div
60
63
  */
61
64
  setInitialValue(value) {
62
- if (!this.triggerInput)
65
+ if (!this.triggerDiv)
63
66
  return;
64
67
  if (!value) {
65
- this.triggerInput.value = '';
68
+ this.triggerDiv.textContent = '';
66
69
  return;
67
70
  }
68
71
  // Both single and range modes use string value
69
- this.triggerInput.value = String(value);
72
+ this.triggerDiv.textContent = String(value);
70
73
  }
71
74
  /**
72
- * Apply all configuration options to both NileDatePicker and trigger input
75
+ * Apply configuration options to the date picker
76
+ * Note: Trigger is now a simple div, so input-specific options are not applied
73
77
  */
74
78
  applyOptions() {
75
- if (!this.datePicker || !this.triggerInput)
79
+ if (!this.datePicker)
76
80
  return;
77
81
  // Configure NileDatePicker
78
82
  const dateFormat = this.options?.dateFormat || 'YYYY-MM-DD';
@@ -83,48 +87,20 @@ export class NileDatePickerEditor {
83
87
  if (this.options?.syncDatePicker) {
84
88
  this.datePicker.setAttribute('syncDatePicker', String(this.options.syncDatePicker));
85
89
  }
86
- // Configure trigger input
87
- if (this.options?.disabled) {
88
- this.triggerInput.disabled = this.options.disabled;
89
- }
90
- if (this.options?.clearable) {
91
- this.triggerInput.clearable = this.options.clearable;
92
- }
93
- if (this.options?.helpText) {
94
- this.triggerInput.setAttribute('help-text', this.options.helpText);
95
- }
96
- // Visual states on trigger
97
- if (this.options?.warning) {
98
- this.triggerInput.setAttribute('warning', String(this.options.warning));
99
- }
100
- if (this.options?.error) {
101
- this.triggerInput.setAttribute('error', String(this.options.error));
102
- }
103
- if (this.options?.success) {
104
- this.triggerInput.setAttribute('success', String(this.options.success));
105
- }
106
- if (this.options?.errorMessage) {
107
- this.triggerInput.setAttribute('error-message', this.options.errorMessage);
108
- }
109
- // Styling
110
- if (this.options?.size) {
111
- this.triggerInput.setAttribute('size', String(this.options.size));
112
- }
113
- if (this.options?.filled) {
114
- this.triggerInput.setAttribute('filled', String(this.options.filled));
115
- }
116
- if (this.options?.pill) {
117
- this.triggerInput.setAttribute('pill', String(this.options.pill));
90
+ // Trigger div styling (disabled state can be indicated with opacity)
91
+ if (this.triggerDiv && this.options?.disabled) {
92
+ this.triggerDiv.style.opacity = '0.5';
93
+ this.triggerDiv.style.pointerEvents = 'none';
118
94
  }
119
95
  }
120
96
  /**
121
97
  * Set up all event listeners with proper cleanup tracking
122
98
  */
123
99
  setupEventListeners(context) {
124
- if (!this.datePicker || !this.triggerInput)
100
+ if (!this.datePicker || !this.triggerDiv)
125
101
  return;
126
102
  const validateOnSave = this.options?.validateOnSave !== false;
127
- // Keyboard events on trigger input
103
+ // Keyboard events on trigger div
128
104
  const keydownHandler = (e) => {
129
105
  const keyEvent = e;
130
106
  if (keyEvent.key === 'Enter') {
@@ -142,8 +118,12 @@ export class NileDatePickerEditor {
142
118
  keyEvent.stopPropagation();
143
119
  this.saveValue(context, validateOnSave);
144
120
  }
121
+ else {
122
+ // Prevent all other keypresses from typing into the div
123
+ keyEvent.preventDefault();
124
+ }
145
125
  };
146
- this.triggerInput.addEventListener('keydown', keydownHandler);
126
+ this.triggerDiv.addEventListener('keydown', keydownHandler);
147
127
  this.eventListeners.push({ event: 'keydown', handler: keydownHandler });
148
128
  // nile-change event on date picker
149
129
  const changeHandler = (e) => {
@@ -163,25 +143,6 @@ export class NileDatePickerEditor {
163
143
  };
164
144
  this.datePicker.addEventListener('nile-change', changeHandler);
165
145
  this.eventListeners.push({ event: 'nile-change', handler: changeHandler });
166
- // nile-blur event on trigger input
167
- const blurHandler = (e) => {
168
- const customEvent = e;
169
- // For blur, get value from trigger input directly
170
- const inputValue = this.triggerInput?.value || '';
171
- if (inputValue) {
172
- context.onSave(this.parseValue(inputValue));
173
- }
174
- };
175
- this.triggerInput.addEventListener('nile-blur', blurHandler);
176
- this.eventListeners.push({ event: 'nile-blur', handler: blurHandler });
177
- // nile-clear event
178
- if (this.options?.clearable) {
179
- const clearHandler = (e) => {
180
- context.onSave('');
181
- };
182
- this.triggerInput.addEventListener('nile-clear', clearHandler);
183
- this.eventListeners.push({ event: 'nile-clear', handler: clearHandler });
184
- }
185
146
  }
186
147
  /**
187
148
  * Save value with optional validation
@@ -201,27 +162,27 @@ export class NileDatePickerEditor {
201
162
  return (value || '');
202
163
  }
203
164
  getCurrentValue() {
204
- if (!this.triggerInput) {
165
+ if (!this.triggerDiv) {
205
166
  return '';
206
167
  }
207
- return this.parseValue(this.triggerInput.value ?? '');
168
+ return this.parseValue(this.triggerDiv.textContent ?? '');
208
169
  }
209
170
  destroy() {
210
- if (this.datePicker || this.triggerInput) {
171
+ if (this.datePicker || this.triggerDiv) {
211
172
  this.eventListeners.forEach(({ event, handler }) => {
212
173
  this.datePicker?.removeEventListener(event, handler);
213
- this.triggerInput?.removeEventListener(event, handler);
174
+ this.triggerDiv?.removeEventListener(event, handler);
214
175
  });
215
176
  this.eventListeners = [];
216
177
  if (this.datePicker) {
217
178
  this.datePicker.remove();
218
179
  this.datePicker = undefined;
219
180
  }
220
- this.triggerInput = undefined;
181
+ this.triggerDiv = undefined;
221
182
  }
222
183
  }
223
184
  focus() {
224
- this.triggerInput?.focus();
185
+ this.triggerDiv?.focus();
225
186
  }
226
187
  }
227
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmlsZS1kYXRlLXBpY2tlci1lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC10YWJsZS9zcmMvbGliL2VkaXRvcnMvbmlsZS1kYXRlLXBpY2tlci1lZGl0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBa0VIOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxvQkFBb0I7SUFLL0IsWUFBNkIsT0FBcUM7UUFBckMsWUFBTyxHQUFQLE9BQU8sQ0FBOEI7UUFGMUQsbUJBQWMsR0FBcUQsRUFBRSxDQUFDO0lBRVQsQ0FBQztJQUV0RSxJQUFJLENBQUMsT0FBNkI7UUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1lBQ2xFLE9BQU87U0FDUjtRQUVELHFEQUFxRDtRQUNyRCxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsR0FBRywyQ0FBMkMsQ0FBQztRQUV4RSxnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUM7UUFFL0MsOERBQThEO1FBQzlELElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFbEQsb0JBQW9CO1FBQ3BCLElBQUksQ0FB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Q0FBQztTQUMzQjtRQUVELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtnQkFDakQsSUFBSSxDQUFDLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3pELENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7WUFFekIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQzthQUM3QjtZQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQzdCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ3VzdG9tIGVkaXRvciB1c2luZyBOaWxlRGF0ZVBpY2tlciBmcm9tIEBhcXVlcmEvbmlsZS1lbGVtZW50c1xuICogU3VwcG9ydHMgYm90aCBzaW5nbGUgZGF0ZSBhbmQgcmFuZ2Ugc2VsZWN0aW9uIHdpdGggc2xvdC1iYXNlZCB0cmlnZ2VyIGlucHV0XG4gKiBSZXR1cm5zIHN0cmluZyB2YWx1ZXMgZm9yIGJvdGggbW9kZXM6XG4gKiAgIC0gU2luZ2xlIG1vZGU6ICdZWVlZLU1NLUREJ1xuICogICAtIFJhbmdlIG1vZGU6ICdZWVlZLU1NLUREIC0gWVlZWS1NTS1ERCdcbiAqL1xuXG5pbXBvcnQgeyBDZWxsRWRpdG9yLCBDZWxsRWRpdG9yQ29udGV4dCB9IGZyb20gJy4uL21vZGVscy9jZWxsLXN0cmF0ZWdpZXMuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBEYXRlIHJhbmdlIHZhbHVlIGludGVyZmFjZSAoa2VwdCBmb3IgcmVmZXJlbmNlIGJ1dCBub3QgdXNlZCBhcyByZXR1cm4gdHlwZSlcbiAqIFRoZSBlZGl0b3IgcmV0dXJucyBzdHJpbmcgdmFsdWVzIGluc3RlYWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRlUmFuZ2Uge1xuICAvKiogU3RhcnQgZGF0ZSBpbiBJU08gZm9ybWF0IChZWVlZLU1NLUREKSAqL1xuICBzdGFydERhdGU6IHN0cmluZztcbiAgLyoqIEVuZCBkYXRlIGluIElTTyBmb3JtYXQgKFlZWVktTU0tREQpICovXG4gIGVuZERhdGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGludGVyZmFjZSBmb3IgTmlsZURhdGVQaWNrZXJFZGl0b3JcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOaWxlRGF0ZVBpY2tlckVkaXRvck9wdGlvbnMge1xuICAvLyBCYXNpYyBwcm9wZXJ0aWVzXG4gIC8qKiBQbGFjZWhvbGRlciB0ZXh0IHRvIHNob3cgd2hlbiBubyBkYXRlIGlzIHNlbGVjdGVkICovXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAvKiogTGFiZWwgZm9yIHRoZSB0cmlnZ2VyIGlucHV0ICovXG4gIGxhYmVsPzogc3RyaW5nO1xuICAvKiogRGlzYWJsZSB0aGUgZGF0ZSBwaWNrZXIgY29udHJvbCAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIC8qKiBIZWxwIHRleHQgdG8gZGlzcGxheSBiZWxvdyB0aGUgY29udHJvbCAqL1xuICBoZWxwVGV4dD86IHN0cmluZztcbiAgXG4gIC8vIERhdGUgY29uZmlndXJhdGlvblxuICAvKiogRGF0ZSBmb3JtYXQgZm9yIGRpc3BsYXkgKGRlZmF1bHQ6ICdZWVlZLU1NLUREJykgKi9cbiAgZGF0ZUZvcm1hdD86IHN0cmluZztcbiAgLyoqIEVuYWJsZSByYW5nZSBzZWxlY3Rpb24gbW9kZSAqL1xuICByYW5nZT86IGJvb2xlYW47XG4gIC8qKiBTeW5jIGRhdGUgcGlja2VycyBpbiByYW5nZSBtb2RlICovXG4gIHN5bmNEYXRlUGlja2VyPzogYm9vbGVhbjtcbiAgXG4gIC8vIEJlaGF2aW9yIG9wdGlvbnNcbiAgLyoqIFNob3cgY2xlYXIgYnV0dG9uIGZvciByZW1vdmluZyBkYXRlICovXG4gIGNsZWFyYWJsZT86IGJvb2xlYW47XG4gIC8qKiBBdXRvLWZvY3VzIHRoZSBkYXRlIHBpY2tlciB3aGVuIGVkaXRvciBvcGVucyAqL1xuICBhdXRvRm9jdXM/OiBib29sZWFuO1xuICBcbiAgLy8gVmlzdWFsIHN0YXRlc1xuICAvKiogV2FybmluZyBzdGF0ZSBzdHlsaW5nICovXG4gIHdhcm5pbmc/OiBib29sZWFuO1xuICAvKiogRXJyb3Igc3RhdGUgc3R5bGluZyAqL1xuICBlcnJvcj86IGJvb2xlYW47XG4gIC8qKiBTdWNjZXNzIHN0YXRlIHN0eWxpbmcgKi9cbiAgc3VjY2Vzcz86IGJvb2xlYW47XG4gIC8qKiBFcnJvciBtZXNzYWdlIHRvIGRpc3BsYXkgKi9cbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuICBcbiAgLy8gU3R5bGluZyAoZm9yIHRyaWdnZXIgaW5wdXQpXG4gIC8qKiBTaXplIG9mIHRoZSBkYXRlIHBpY2tlciBjb250cm9sICovXG4gIHNpemU/OiBudW1iZXI7XG4gIC8qKiBGaWxsZWQgc3R5bGUgZm9yIHRoZSBpbnB1dCAqL1xuICBmaWxsZWQ/OiBib29sZWFuO1xuICAvKiogUGlsbCBzdHlsZSBmb3IgdGhlIGlucHV0ICovXG4gIHBpbGw/OiBib29sZWFuO1xuICBcbiAgLy8gQWR2YW5jZWRcbiAgLyoqIFZhbGlkYXRlIGJlZm9yZSBzYXZpbmcgKGRlZmF1bHQ6IHRydWUpICovXG4gIHZhbGlkYXRlT25TYXZlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDdXN0b20gZWRpdG9yIHVzaW5nIE5pbGVEYXRlUGlja2VyIGNvbXBvbmVudFxuICogU3VwcG9ydHMgYm90aCBzaW5nbGUgZGF0ZSBhbmQgcmFuZ2Ugc2VsZWN0aW9uXG4gKiBAdGVtcGxhdGUgVCBUaGUgdmFsdWUgdHlwZSAtIHN0cmluZyBmb3IgYm90aCBzaW5nbGUgYW5kIHJhbmdlIG1vZGVzXG4gKiAgICAgICAgICAgIFNpbmdsZSBtb2RlOiAnWVlZWS1NTS1ERCdcbiAqICAgICAgICAgICAgUmFuZ2UgbW9kZTogJ1lZWVktTU0tREQgLSBZWVlZLU1NLUREJ1xuICovXG5leHBvcnQgY2xhc3MgTmlsZURhdGVQaWNrZXJFZGl0b3I8VCA9IHN0cmluZz4gaW1wbGVtZW50cyBDZWxsRWRpdG9yPFQ+IHtcbiAgcHJpdmF0ZSBkYXRlUGlja2VyPzogYW55O1xuICBwcml2YXRlIHRyaWdnZXJJbnB1dD86IGFueTtcbiAgcHJpdmF0ZSBldmVudExpc3RlbmVyczogQXJyYXk8eyBldmVudDogc3RyaW5nOyBoYW5kbGVyOiBFdmVudExpc3RlbmVyIH0+ID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBvcHRpb25zPzogTmlsZURhdGVQaWNrZXJFZGl0b3JPcHRpb25zKSB7fVxuXG4gIGVkaXQoY29udGV4dDogQ2VsbEVkaXRvckNvbnRleHQ8VD4pOiB2b2lkIHtcbiAgICBpZiAoIWNvbnRleHQuY29udGFpbmVyKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ05pbGVEYXRlUGlja2VyRWRpdG9yIHJlcXVpcmVzIGEgY29udGFpbmVyIGVsZW1lbnQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgTmlsZURhdGVQaWNrZXIgdXNpbmcgZG9jdW1lbnQuY3JlYXRlRWxlbWVudFxuICAgIHRoaXMuZGF0ZVBpY2tlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ25pbGUtZGF0ZS1waWNrZXInKTtcbiAgICB0aGlzLmRhdGVQaWNrZXIuY2xhc3NOYW1lID0gJ3N0LWNlbGwtZWRpdG9yIHN0LW5pbGUtZGF0ZS1waWNrZXItZWRpdG9yJztcbiAgICBcbiAgICAvLyBBcHBseSBzdHlsZXMgZm9yIGNlbGwgZml0dGluZ1xuICAgIHRoaXMuZGF0ZVBpY2tlci5zdHlsZS53aWR0aCA9ICdpbmhlcml0JztcbiAgICB0aGlzLmRhdGVQaWNrZXIuc3R5bGUuaGVpZ2h0ID0gJ2luaGVyaXQnO1xuICAgIHRoaXMuZGF0ZVBpY2tlci5zdHlsZS5ib3hTaXppbmcgPSAnYm9yZGVyLWJveCc7XG4gICAgXG4gICAgLy8gQ3JlYXRlIHRyaWdnZXIgaW5wdXQgd2l0aCBzbG90IHVzaW5nIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRcbiAgICB0aGlzLnRyaWdnZXJJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ25pbGUtaW5wdXQnKTtcbiAgICB0aGlzLnRyaWdnZXJJbnB1dC5zZXRBdHRyaWJ1dGUoJ3Nsb3QnLCAndHJpZ2dlcicpO1xuICAgIFxuICAgIC8vIFNldCBpbml0aWFsIHZhbHVlXG4gICAgdGhpcy5zZXRJbml0aWFsVmFsdWUoY29udGV4dC52YWx1ZSk7XG4gICAgXG4gICAgXG4gICAgaWYgKHRoaXMub3B0aW9ucz8ubGFiZWwpIHtcbiAgICAgIHRoaXMudHJpZ2dlcklucHV0LmxhYmVsID0gdGhpcy5vcHRpb25zLmxhYmVsO1xuICAgIH1cbiAgICBcbiAgICBcbiAgICAvLyBBcHBseSBjb25maWd1cmF0aW9uIG9wdGlvbnNcbiAgICB0aGlzLmFwcGx5T3B0aW9ucygpO1xuICAgIFxuICAgIC8vIEFwcGVuZCB0cmlnZ2VyIHRvIGRhdGUgcGlja2VyIChzbG90LWJhc2VkKVxuICAgIHRoaXMuZGF0ZVBpY2tlci5hcHBlbmRDaGlsZCh0aGlzLnRyaWdnZXJJbnB1dCk7XG4gICAgXG4gICAgLy8gU2V0IHVwIGV2ZW50IGxpc3RlbmVyc1xuICAgIHRoaXMuc2V0dXBFdmVudExpc3RlbmVycyhjb250ZXh0KTtcbiAgICBcbiAgICAvLyBBcHBlbmQgdG8gY29udGFpbmVyXG4gICAgY29udGV4dC5jb250YWluZXIuaW5uZXJIVE1MID0gJyc7XG4gICAgY29udGV4dC5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5kYXRlUGlja2VyKTtcbiAgICBcbiAgICAvLyBBdXRvIGZvY3VzIGFuZCBvcGVuIHRoZSBkYXRlIHBpY2tlclxuICAgIGlmICh0aGlzLm9wdGlvbnM/LmF1dG9Gb2N1cyAhPT0gZmFsc2UpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnRyaWdnZXJJbnB1dD8uZm9jdXMoKTtcbiAgICAgICAgLy8gVHJpZ2dlciBhIGNsaWNrIHRvIG9wZW4gdGhlIGRhdGUgcGlja2VyIGRyb3Bkb3duXG4gICAgICAgIHRoaXMudHJpZ2dlcklucHV0Py5jbGljaygpO1xuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBpbml0aWFsIHZhbHVlIGluIHRoZSB0cmlnZ2VyIGlucHV0XG4gICAqL1xuICBwcml2YXRlIHNldEluaXRpYWxWYWx1ZSh2YWx1ZTogVCB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudHJpZ2dlcklucHV0KSByZXR1cm47XG4gICAgXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy50cmlnZ2VySW5wdXQudmFsdWUgPSAnJztcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgLy8gQm90aCBzaW5nbGUgYW5kIHJhbmdlIG1vZGVzIHVzZSBzdHJpbmcgdmFsdWVcbiAgICB0aGlzLnRyaWdnZXJJbnB1dC52YWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbHkgYWxsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBib3RoIE5pbGVEYXRlUGlja2VyIGFuZCB0cmlnZ2VyIGlucHV0XG4gICAqL1xuICBwcml2YXRlIGFwcGx5T3B0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGF0ZVBpY2tlciB8fCAhdGhpcy50cmlnZ2VySW5wdXQpIHJldHVybjtcbiAgICBcbiAgICAvLyBDb25maWd1cmUgTmlsZURhdGVQaWNrZXJcbiAgICBjb25zdCBkYXRlRm9ybWF0ID0gdGhpcy5vcHRpb25zPy5kYXRlRm9ybWF0IHx8ICdZWVlZLU1NLUREJztcbiAgICB0aGlzLmRhdGVQaWNrZXIuc2V0QXR0cmlidXRlKCdkYXRlRm9ybWF0JywgZGF0ZUZvcm1hdCk7XG4gICAgXG4gICAgaWYgKHRoaXMub3B0aW9ucz8ucmFuZ2UpIHtcbiAgICAgIHRoaXMuZGF0ZVBpY2tlci5zZXRBdHRyaWJ1dGUoJ3JhbmdlJywgU3RyaW5nKHRoaXMub3B0aW9ucy5yYW5nZSkpO1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5vcHRpb25zPy5zeW5jRGF0ZVBpY2tlcikge1xuICAgICAgdGhpcy5kYXRlUGlja2VyLnNldEF0dHJpYnV0ZSgnc3luY0RhdGVQaWNrZXInLCBTdHJpbmcodGhpcy5vcHRpb25zLnN5bmNEYXRlUGlja2VyKSk7XG4gICAgfVxuICAgIFxuICAgIC8vIENvbmZpZ3VyZSB0cmlnZ2VyIGlucHV0XG4gICAgaWYgKHRoaXMub3B0aW9ucz8uZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMudHJpZ2dlcklucHV0LmRpc2FibGVkID0gdGhpcy5vcHRpb25zLmRpc2FibGVkO1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5vcHRpb25zPy5jbGVhcmFibGUpIHtcbiAgICAgIHRoaXMudHJpZ2dlcklucHV0LmNsZWFyYWJsZSA9IHRoaXMub3B0aW9ucy5jbGVhcmFibGU7XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLm9wdGlvbnM/LmhlbHBUZXh0KSB7XG4gICAgICB0aGlzLnRyaWdnZXJJbnB1dC5zZXRBdHRyaWJ1dGUoJ2hlbHAtdGV4dCcsIHRoaXMub3B0aW9ucy5oZWxwVGV4dCk7XG4gICAgfVxuICAgIFxuICAgIC8vIFZpc3VhbCBzdGF0ZXMgb24gdHJpZ2dlclxuICAgIGlmICh0aGlzLm9wdGlvbnM/Lndhcm5pbmcpIHtcbiAgICAgIHRoaXMudHJpZ2dlcklucHV0LnNldEF0dHJpYnV0ZSgnd2FybmluZycsIFN0cmluZyh0aGlzLm9wdGlvbnMud2FybmluZykpO1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5vcHRpb25zPy5lcnJvcikge1xuICAgICAgdGhpcy50cmlnZ2VySW5wdXQuc2V0QXR0cmlidXRlKCdlcnJvcicsIFN0cmluZyh0aGlzLm9wdGlvbnMuZXJyb3IpKTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMub3B0aW9ucz8uc3VjY2Vzcykge1xuICAgICAgdGhpcy50cmlnZ2VySW5wdXQuc2V0QXR0cmlidXRlKCdzdWNjZXNzJywgU3RyaW5nKHRoaXMub3B0aW9ucy5zdWNjZXNzKSk7XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLm9wdGlvbnM/LmVycm9yTWVzc2FnZSkge1xuICAgICAgdGhpcy50cmlnZ2VySW5wdXQuc2V0QXR0cmlidXRlKCdlcnJvci1tZXNzYWdlJywgdGhpcy5vcHRpb25zLmVycm9yTWVzc2FnZSk7XG4gICAgfVxuICAgIFxuICAgIC8vIFN0eWxpbmdcbiAgICBpZiAodGhpcy5vcHRpb25zPy5zaXplKSB7XG4gICAgICB0aGlzLnRyaWdnZXJJbnB1dC5zZXRBdHRyaWJ1dGUoJ3NpemUnLCBTdHJpbmcodGhpcy5vcHRpb25zLnNpemUpKTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMub3B0aW9ucz8uZmlsbGVkKSB7XG4gICAgICB0aGlzLnRyaWdnZXJJbnB1dC5zZXRBdHRyaWJ1dGUoJ2ZpbGxlZCcsIFN0cmluZyh0aGlzLm9wdGlvbnMuZmlsbGVkKSk7XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLm9wdGlvbnM/LnBpbGwpIHtcbiAgICAgIHRoaXMudHJpZ2dlcklucHV0LnNldEF0dHJpYnV0ZSgncGlsbCcsIFN0cmluZyh0aGlzLm9wdGlvbnMucGlsbCkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdXAgYWxsIGV2ZW50IGxpc3RlbmVycyB3aXRoIHByb3BlciBjbGVhbnVwIHRyYWNraW5nXG4gICAqL1xuICBwcml2YXRlIHNldHVwRXZlbnRMaXN0ZW5lcnMoY29udGV4dDogQ2VsbEVkaXRvckNvbnRleHQ8VD4pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGF0ZVBpY2tlciB8fCAhdGhpcy50cmlnZ2VySW5wdXQpIHJldHVybjtcbiAgICBcbiAgICBjb25zdCB2YWxpZGF0ZU9uU2F2ZSA9IHRoaXMub3B0aW9ucz8udmFsaWRhdGVPblNhdmUgIT09IGZhbHNlO1xuICAgIFxuICAgIC8vIEtleWJvYXJkIGV2ZW50cyBvbiB0cmlnZ2VyIGlucHV0XG4gICAgY29uc3Qga2V5ZG93bkhhbmRsZXIgPSAoZTogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGtleUV2ZW50ID0gZSBhcyBLZXlib2FyZEV2ZW50O1xuICAgICAgaWYgKGtleUV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICBrZXlFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBrZXlFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5zYXZlVmFsdWUoY29udGV4dCwgdmFsaWRhdGVPblNhdmUpO1xuICAgICAgfSBlbHNlIGlmIChrZXlFdmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgIGtleUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGtleUV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBjb250ZXh0Lm9uQ2FuY2VsKCk7XG4gICAgICB9IGVsc2UgaWYgKGtleUV2ZW50LmtleSA9PT0gJ1RhYicpIHtcbiAgICAgICAga2V5RXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAga2V5RXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuc2F2ZVZhbHVlKGNvbnRleHQsIHZhbGlkYXRlT25TYXZlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMudHJpZ2dlcklucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBrZXlkb3duSGFuZGxlcik7XG4gICAgdGhpcy5ldmVudExpc3RlbmVycy5wdXNoKHsgZXZlbnQ6ICdrZXlkb3duJywgaGFuZGxlcjoga2V5ZG93bkhhbmRsZXIgfSk7XG4gICAgXG4gICAgLy8gbmlsZS1jaGFuZ2UgZXZlbnQgb24gZGF0ZSBwaWNrZXJcbiAgICBjb25zdCBjaGFuZ2VIYW5kbGVyID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBjdXN0b21FdmVudCA9IGUgYXMgQ3VzdG9tRXZlbnQ7XG4gICAgICAvLyBOaWxlRGF0ZVBpY2tlciBkZXRhaWwgaGFzIHN0YXJ0RGF0ZSBhbmQgZW5kRGF0ZSwgbm90IGEgc2luZ2xlIHZhbHVlXG4gICAgICBjb25zdCBkZXRhaWwgPSBjdXN0b21FdmVudC5kZXRhaWw7XG4gICAgICBsZXQgZGF0ZVZhbHVlID0gJyc7XG4gICAgICBcbiAgICAgIGlmIChkZXRhaWwuc3RhcnREYXRlICYmIGRldGFpbC5lbmREYXRlKSB7XG4gICAgICAgIC8vIFJhbmdlIG1vZGU6IGNvbWJpbmUgc3RhcnREYXRlIGFuZCBlbmREYXRlXG4gICAgICAgIGRhdGVWYWx1ZSA9IGAke2RldGFpbC5zdGFydERhdGV9IC0gJHtkZXRhaWwuZW5kRGF0ZX1gO1xuICAgICAgfSBlbHNlIGlmIChkZXRhaWwuc3RhcnREYXRlKSB7XG4gICAgICAgIC8vIFNpbmdsZSBtb2RlOiBvbmx5IHN0YXJ0RGF0ZVxuICAgICAgICBkYXRlVmFsdWUgPSBkZXRhaWwuc3RhcnREYXRlO1xuICAgICAgfVxuICAgICAgXG4gICAgICBjb250ZXh0Lm9uU2F2ZSh0aGlzLnBhcnNlVmFsdWUoZGF0ZVZhbHVlKSk7XG4gICAgfTtcbiAgICB0aGlzLmRhdGVQaWNrZXIuYWRkRXZlbnRMaXN0ZW5lcignbmlsZS1jaGFuZ2UnLCBjaGFuZ2VIYW5kbGVyKTtcbiAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLnB1c2goeyBldmVudDogJ25pbGUtY2hhbmdlJywgaGFuZGxlcjogY2hhbmdlSGFuZGxlciB9KTtcbiAgICBcbiAgICAvLyBuaWxlLWJsdXIgZXZlbnQgb24gdHJpZ2dlciBpbnB1dFxuICAgIGNvbnN0IGJsdXJIYW5kbGVyID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBjdXN0b21FdmVudCA9IGUgYXMgQ3VzdG9tRXZlbnQ7XG4gICAgICAvLyBGb3IgYmx1ciwgZ2V0IHZhbHVlIGZyb20gdHJpZ2dlciBpbnB1dCBkaXJlY3RseVxuICAgICAgY29uc3QgaW5wdXRWYWx1ZSA9IHRoaXMudHJpZ2dlcklucHV0Py52YWx1ZSB8fCAnJztcbiAgICAgIGlmIChpbnB1dFZhbHVlKSB7XG4gICAgICAgIGNvbnRleHQub25TYXZlKHRoaXMucGFyc2VWYWx1ZShpbnB1dFZhbHVlKSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLnRyaWdnZXJJbnB1dC5hZGRFdmVudExpc3RlbmVyKCduaWxlLWJsdXInLCBibHVySGFuZGxlcik7XG4gICAgdGhpcy5ldmVudExpc3RlbmVycy5wdXNoKHsgZXZlbnQ6ICduaWxlLWJsdXInLCBoYW5kbGVyOiBibHVySGFuZGxlciB9KTtcbiAgICBcbiAgICAvLyBuaWxlLWNsZWFyIGV2ZW50XG4gICAgaWYgKHRoaXMub3B0aW9ucz8uY2xlYXJhYmxlKSB7XG4gICAgICBjb25zdCBjbGVhckhhbmRsZXIgPSAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgY29udGV4dC5vblNhdmUoJycgYXMgdW5rbm93biBhcyBUKTtcbiAgICAgIH07XG4gICAgICB0aGlzLnRyaWdnZXJJbnB1dC5hZGRFdmVudExpc3RlbmVyKCduaWxlLWNsZWFyJywgY2xlYXJIYW5kbGVyKTtcbiAgICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnMucHVzaCh7IGV2ZW50OiAnbmlsZS1jbGVhcicsIGhhbmRsZXI6IGNsZWFySGFuZGxlciB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSB2YWx1ZSB3aXRoIG9wdGlvbmFsIHZhbGlkYXRpb25cbiAgICovXG4gIHByaXZhdGUgc2F2ZVZhbHVlKGNvbnRleHQ6IENlbGxFZGl0b3JDb250ZXh0PFQ+LCB2YWxpZGF0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICghdGhpcy5kYXRlUGlja2VyKSByZXR1cm47XG4gICAgY29udGV4dC5vblNhdmUodGhpcy5nZXRDdXJyZW50VmFsdWUoKSk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgdmFsdWUgZnJvbSBzdHJpbmcgdG8gYXBwcm9wcmlhdGUgdHlwZVxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiBUIHtcbiAgICAvLyBCb3RoIHNpbmdsZSBhbmQgcmFuZ2UgbW9kZXMgcmV0dXJuIHN0cmluZ1xuICAgIC8vIFNpbmdsZSBtb2RlOiAnWVlZWS1NTS1ERCdcbiAgICAvLyBSYW5nZSBtb2RlOiAnWVlZWS1NTS1ERCAtIFlZWVktTU0tREQnXG4gICAgcmV0dXJuICh2YWx1ZSB8fCAnJykgYXMgdW5rbm93biBhcyBUO1xuICB9XG5cbiAgZ2V0Q3VycmVudFZhbHVlKCk6IFQge1xuICAgIGlmICghdGhpcy50cmlnZ2VySW5wdXQpIHtcbiAgICAgIHJldHVybiAnJyBhcyB1bmtub3duIGFzIFQ7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiB0aGlzLnBhcnNlVmFsdWUodGhpcy50cmlnZ2VySW5wdXQudmFsdWUgPz8gJycpO1xuICB9XG5cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kYXRlUGlja2VyIHx8IHRoaXMudHJpZ2dlcklucHV0KSB7XG4gICAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLmZvckVhY2goKHsgZXZlbnQsIGhhbmRsZXIgfSkgPT4ge1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXI/LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIpO1xuICAgICAgICB0aGlzLnRyaWdnZXJJbnB1dD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlcik7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnMgPSBbXTtcbiAgICAgIFxuICAgICAgaWYgKHRoaXMuZGF0ZVBpY2tlcikge1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXIucmVtb3ZlKCk7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlciA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgdGhpcy50cmlnZ2VySW5wdXQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy50cmlnZ2VySW5wdXQ/LmZvY3VzKCk7XG4gIH1cbn1cbiJdfQ==
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmlsZS1kYXRlLXBpY2tlci1lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC10YWJsZS9zcmMvbGliL2VkaXRvcnMvbmlsZS1kYXRlLXBpY2tlci1lZGl0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBa0VIOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxvQkFBb0I7SUFPL0IsWUFBNkIsT0FBcUM7UUFBckMsWUFBTyxHQUFQLE9BQU8sQ0FBOEI7UUFObEUsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBSXZCLG1CQUFjLEdBQXFELEVBQUUsQ0FBQztJQUVULENBQUM7SUFFdEUsSUFBSSxDQUFDLE9BQTZCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsbURBQW1ELENBQUMsQ0FBQztZQUNsRSxPQUFPO1NBQ1I7UUFFRCxxREFBcUQ7UUFDckQsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEdBQUcsMkNBQTJDLENBQUM7UUFFeEUsZ0NBQWdDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7UUFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDO1FBRS9DLCtCQUErQjtRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFD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UUFDNUIsd0NBQXdDO1FBQ3hDLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFpQixDQUFDO0lBQ3ZDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsT0FBTyxFQUFrQixDQUFDO1NBQzNCO1FBRUQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDdEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO2dCQUNqRCxJQUFJLENBQUMsVUFBVSxFQUFFLG1CQUFtQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDckQsSUFBSSxDQUFDLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDdkQsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztZQUV6QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO2FBQzdCO1lBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXN0b20gZWRpdG9yIHVzaW5nIE5pbGVEYXRlUGlja2VyIGZyb20gQGFxdWVyYS9uaWxlLWVsZW1lbnRzXG4gKiBTdXBwb3J0cyBib3RoIHNpbmdsZSBkYXRlIGFuZCByYW5nZSBzZWxlY3Rpb24gd2l0aCBzbG90LWJhc2VkIHRyaWdnZXIgZGl2XG4gKiBSZXR1cm5zIHN0cmluZyB2YWx1ZXMgZm9yIGJvdGggbW9kZXM6XG4gKiAgIC0gU2luZ2xlIG1vZGU6ICdZWVlZLU1NLUREJ1xuICogICAtIFJhbmdlIG1vZGU6ICdZWVlZLU1NLUREIC0gWVlZWS1NTS1ERCdcbiAqL1xuXG5pbXBvcnQgeyBDZWxsRWRpdG9yLCBDZWxsRWRpdG9yQ29udGV4dCB9IGZyb20gJy4uL21vZGVscy9jZWxsLXN0cmF0ZWdpZXMuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBEYXRlIHJhbmdlIHZhbHVlIGludGVyZmFjZSAoa2VwdCBmb3IgcmVmZXJlbmNlIGJ1dCBub3QgdXNlZCBhcyByZXR1cm4gdHlwZSlcbiAqIFRoZSBlZGl0b3IgcmV0dXJucyBzdHJpbmcgdmFsdWVzIGluc3RlYWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRlUmFuZ2Uge1xuICAvKiogU3RhcnQgZGF0ZSBpbiBJU08gZm9ybWF0IChZWVlZLU1NLUREKSAqL1xuICBzdGFydERhdGU6IHN0cmluZztcbiAgLyoqIEVuZCBkYXRlIGluIElTTyBmb3JtYXQgKFlZWVktTU0tREQpICovXG4gIGVuZERhdGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGludGVyZmFjZSBmb3IgTmlsZURhdGVQaWNrZXJFZGl0b3JcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOaWxlRGF0ZVBpY2tlckVkaXRvck9wdGlvbnMge1xuICAvLyBCYXNpYyBwcm9wZXJ0aWVzXG4gIC8qKiBQbGFjZWhvbGRlciB0ZXh0IHRvIHNob3cgd2hlbiBubyBkYXRlIGlzIHNlbGVjdGVkICovXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAvKiogTGFiZWwgZm9yIHRoZSB0cmlnZ2VyIGlucHV0ICovXG4gIGxhYmVsPzogc3RyaW5nO1xuICAvKiogRGlzYWJsZSB0aGUgZGF0ZSBwaWNrZXIgY29udHJvbCAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIC8qKiBIZWxwIHRleHQgdG8gZGlzcGxheSBiZWxvdyB0aGUgY29udHJvbCAqL1xuICBoZWxwVGV4dD86IHN0cmluZztcbiAgXG4gIC8vIERhdGUgY29uZmlndXJhdGlvblxuICAvKiogRGF0ZSBmb3JtYXQgZm9yIGRpc3BsYXkgKGRlZmF1bHQ6ICdZWVlZLU1NLUREJykgKi9cbiAgZGF0ZUZvcm1hdD86IHN0cmluZztcbiAgLyoqIEVuYWJsZSByYW5nZSBzZWxlY3Rpb24gbW9kZSAqL1xuICByYW5nZT86IGJvb2xlYW47XG4gIC8qKiBTeW5jIGRhdGUgcGlja2VycyBpbiByYW5nZSBtb2RlICovXG4gIHN5bmNEYXRlUGlja2VyPzogYm9vbGVhbjtcbiAgXG4gIC8vIEJlaGF2aW9yIG9wdGlvbnNcbiAgLyoqIFNob3cgY2xlYXIgYnV0dG9uIGZvciByZW1vdmluZyBkYXRlICovXG4gIGNsZWFyYWJsZT86IGJvb2xlYW47XG4gIC8qKiBBdXRvLWZvY3VzIHRoZSBkYXRlIHBpY2tlciB3aGVuIGVkaXRvciBvcGVucyAqL1xuICBhdXRvRm9jdXM/OiBib29sZWFuO1xuICBcbiAgLy8gVmlzdWFsIHN0YXRlc1xuICAvKiogV2FybmluZyBzdGF0ZSBzdHlsaW5nICovXG4gIHdhcm5pbmc/OiBib29sZWFuO1xuICAvKiogRXJyb3Igc3RhdGUgc3R5bGluZyAqL1xuICBlcnJvcj86IGJvb2xlYW47XG4gIC8qKiBTdWNjZXNzIHN0YXRlIHN0eWxpbmcgKi9cbiAgc3VjY2Vzcz86IGJvb2xlYW47XG4gIC8qKiBFcnJvciBtZXNzYWdlIHRvIGRpc3BsYXkgKi9cbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuICBcbiAgLy8gU3R5bGluZyAoZm9yIHRyaWdnZXIgaW5wdXQpXG4gIC8qKiBTaXplIG9mIHRoZSBkYXRlIHBpY2tlciBjb250cm9sICovXG4gIHNpemU/OiBudW1iZXI7XG4gIC8qKiBGaWxsZWQgc3R5bGUgZm9yIHRoZSBpbnB1dCAqL1xuICBmaWxsZWQ/OiBib29sZWFuO1xuICAvKiogUGlsbCBzdHlsZSBmb3IgdGhlIGlucHV0ICovXG4gIHBpbGw/OiBib29sZWFuO1xuICBcbiAgLy8gQWR2YW5jZWRcbiAgLyoqIFZhbGlkYXRlIGJlZm9yZSBzYXZpbmcgKGRlZmF1bHQ6IHRydWUpICovXG4gIHZhbGlkYXRlT25TYXZlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDdXN0b20gZWRpdG9yIHVzaW5nIE5pbGVEYXRlUGlja2VyIGNvbXBvbmVudFxuICogU3VwcG9ydHMgYm90aCBzaW5nbGUgZGF0ZSBhbmQgcmFuZ2Ugc2VsZWN0aW9uXG4gKiBAdGVtcGxhdGUgVCBUaGUgdmFsdWUgdHlwZSAtIHN0cmluZyBmb3IgYm90aCBzaW5nbGUgYW5kIHJhbmdlIG1vZGVzXG4gKiAgICAgICAgICAgIFNpbmdsZSBtb2RlOiAnWVlZWS1NTS1ERCdcbiAqICAgICAgICAgICAgUmFuZ2UgbW9kZTogJ1lZWVktTU0tREQgLSBZWVlZLU1NLUREJ1xuICovXG5leHBvcnQgY2xhc3MgTmlsZURhdGVQaWNrZXJFZGl0b3I8VCA9IHN0cmluZz4gaW1wbGVtZW50cyBDZWxsRWRpdG9yPFQ+IHtcbiAgYWNjZXB0c0luaXRpYWxLZXlwcmVzcyA9IGZhbHNlO1xuICBcbiAgcHJpdmF0ZSBkYXRlUGlja2VyPzogYW55O1xuICBwcml2YXRlIHRyaWdnZXJEaXY/OiBhbnk7XG4gIHByaXZhdGUgZXZlbnRMaXN0ZW5lcnM6IEFycmF5PHsgZXZlbnQ6IHN0cmluZzsgaGFuZGxlcjogRXZlbnRMaXN0ZW5lciB9PiA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgb3B0aW9ucz86IE5pbGVEYXRlUGlja2VyRWRpdG9yT3B0aW9ucykge31cblxuICBlZGl0KGNvbnRleHQ6IENlbGxFZGl0b3JDb250ZXh0PFQ+KTogdm9pZCB7XG4gICAgaWYgKCFjb250ZXh0LmNvbnRhaW5lcikge1xuICAgICAgY29uc29sZS53YXJuKCdOaWxlRGF0ZVBpY2tlckVkaXRvciByZXF1aXJlcyBhIGNvbnRhaW5lciBlbGVtZW50Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIE5pbGVEYXRlUGlja2VyIHVzaW5nIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRcbiAgICB0aGlzLmRhdGVQaWNrZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCduaWxlLWRhdGUtcGlja2VyJyk7XG4gICAgdGhpcy5kYXRlUGlja2VyLmNsYXNzTmFtZSA9ICdzdC1jZWxsLWVkaXRvciBzdC1uaWxlLWRhdGUtcGlja2VyLWVkaXRvcic7XG4gICAgXG4gICAgLy8gQXBwbHkgc3R5bGVzIGZvciBjZWxsIGZpdHRpbmdcbiAgICB0aGlzLmRhdGVQaWNrZXIuc3R5bGUud2lkdGggPSAnaW5oZXJpdCc7XG4gICAgdGhpcy5kYXRlUGlja2VyLnN0eWxlLmhlaWdodCA9ICdpbmhlcml0JztcbiAgICB0aGlzLmRhdGVQaWNrZXIuc3R5bGUuYm94U2l6aW5nID0gJ2JvcmRlci1ib3gnO1xuICAgIFxuICAgIC8vIENyZWF0ZSB0cmlnZ2VyIGRpdiB3aXRoIHNsb3RcbiAgICB0aGlzLnRyaWdnZXJEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0aGlzLnRyaWdnZXJEaXYuc2V0QXR0cmlidXRlKCdzbG90JywgJ3RyaWdnZXInKTtcbiAgICB0aGlzLnRyaWdnZXJEaXYuc2V0QXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnLCAnZmFsc2UnKTtcbiAgICB0aGlzLnRyaWdnZXJEaXYuc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgdGhpcy50cmlnZ2VyRGl2LnN0eWxlLm1pbkhlaWdodCA9ICcyOHB4JztcbiAgICB0aGlzLnRyaWdnZXJEaXYuc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInO1xuICAgIHRoaXMudHJpZ2dlckRpdi5zdHlsZS5ib3hTaXppbmcgPSAnYm9yZGVyLWJveCc7XG4gICAgXG4gICAgLy8gU2V0IGluaXRpYWwgdmFsdWVcbiAgICB0aGlzLnNldEluaXRpYWxWYWx1ZShjb250ZXh0LnZhbHVlKTtcbiAgICBcbiAgICBcbiAgICAvLyBBcHBseSBjb25maWd1cmF0aW9uIG9wdGlvbnNcbiAgICB0aGlzLmFwcGx5T3B0aW9ucygpO1xuICAgIFxuICAgIC8vIEFwcGVuZCB0cmlnZ2VyIHRvIGRhdGUgcGlja2VyIChzbG90LWJhc2VkKVxuICAgIHRoaXMuZGF0ZVBpY2tlci5hcHBlbmRDaGlsZCh0aGlzLnRyaWdnZXJEaXYpO1xuICAgIFxuICAgIC8vIFNldCB1cCBldmVudCBsaXN0ZW5lcnNcbiAgICB0aGlzLnNldHVwRXZlbnRMaXN0ZW5lcnMoY29udGV4dCk7XG4gICAgXG4gICAgLy8gQXBwZW5kIHRvIGNvbnRhaW5lclxuICAgIGNvbnRleHQuY29udGFpbmVyLmlubmVySFRNTCA9ICcnO1xuICAgIGNvbnRleHQuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuZGF0ZVBpY2tlcik7XG4gICAgXG4gICAgLy8gQXV0byBmb2N1cyBhbmQgb3BlbiB0aGUgZGF0ZSBwaWNrZXJcbiAgICBpZiAodGhpcy5vcHRpb25zPy5hdXRvRm9jdXMgIT09IGZhbHNlKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy50cmlnZ2VyRGl2Py5mb2N1cygpO1xuICAgICAgICAvLyBUcmlnZ2VyIGEgY2xpY2sgdG8gb3BlbiB0aGUgZGF0ZSBwaWNrZXIgZHJvcGRvd25cbiAgICAgICAgdGhpcy50cmlnZ2VyRGl2Py5jbGljaygpO1xuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBpbml0aWFsIHZhbHVlIGluIHRoZSB0cmlnZ2VyIGRpdlxuICAgKi9cbiAgcHJpdmF0ZSBzZXRJbml0aWFsVmFsdWUodmFsdWU6IFQgfCBudWxsIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRyaWdnZXJEaXYpIHJldHVybjtcbiAgICBcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLnRyaWdnZXJEaXYudGV4dENvbnRlbnQgPSAnJztcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgLy8gQm90aCBzaW5nbGUgYW5kIHJhbmdlIG1vZGVzIHVzZSBzdHJpbmcgdmFsdWVcbiAgICB0aGlzLnRyaWdnZXJEaXYudGV4dENvbnRlbnQgPSBTdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB0aGUgZGF0ZSBwaWNrZXJcbiAgICogTm90ZTogVHJpZ2dlciBpcyBub3cgYSBzaW1wbGUgZGl2LCBzbyBpbnB1dC1zcGVjaWZpYyBvcHRpb25zIGFyZSBub3QgYXBwbGllZFxuICAgKi9cbiAgcHJpdmF0ZSBhcHBseU9wdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRhdGVQaWNrZXIpIHJldHVybjtcbiAgICBcbiAgICAvLyBDb25maWd1cmUgTmlsZURhdGVQaWNrZXJcbiAgICBjb25zdCBkYXRlRm9ybWF0ID0gdGhpcy5vcHRpb25zPy5kYXRlRm9ybWF0IHx8ICdZWVlZLU1NLUREJztcbiAgICB0aGlzLmRhdGVQaWNrZXIuc2V0QXR0cmlidXRlKCdkYXRlRm9ybWF0JywgZGF0ZUZvcm1hdCk7XG4gICAgXG4gICAgaWYgKHRoaXMub3B0aW9ucz8ucmFuZ2UpIHtcbiAgICAgIHRoaXMuZGF0ZVBpY2tlci5zZXRBdHRyaWJ1dGUoJ3JhbmdlJywgU3RyaW5nKHRoaXMub3B0aW9ucy5yYW5nZSkpO1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5vcHRpb25zPy5zeW5jRGF0ZVBpY2tlcikge1xuICAgICAgdGhpcy5kYXRlUGlja2VyLnNldEF0dHJpYnV0ZSgnc3luY0RhdGVQaWNrZXInLCBTdHJpbmcodGhpcy5vcHRpb25zLnN5bmNEYXRlUGlja2VyKSk7XG4gICAgfVxuICAgIFxuICAgIC8vIFRyaWdnZXIgZGl2IHN0eWxpbmcgKGRpc2FibGVkIHN0YXRlIGNhbiBiZSBpbmRpY2F0ZWQgd2l0aCBvcGFjaXR5KVxuICAgIGlmICh0aGlzLnRyaWdnZXJEaXYgJiYgdGhpcy5vcHRpb25zPy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy50cmlnZ2VyRGl2LnN0eWxlLm9wYWNpdHkgPSAnMC41JztcbiAgICAgIHRoaXMudHJpZ2dlckRpdi5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdXAgYWxsIGV2ZW50IGxpc3RlbmVycyB3aXRoIHByb3BlciBjbGVhbnVwIHRyYWNraW5nXG4gICAqL1xuICBwcml2YXRlIHNldHVwRXZlbnRMaXN0ZW5lcnMoY29udGV4dDogQ2VsbEVkaXRvckNvbnRleHQ8VD4pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGF0ZVBpY2tlciB8fCAhdGhpcy50cmlnZ2VyRGl2KSByZXR1cm47XG4gICAgXG4gICAgY29uc3QgdmFsaWRhdGVPblNhdmUgPSB0aGlzLm9wdGlvbnM/LnZhbGlkYXRlT25TYXZlICE9PSBmYWxzZTtcbiAgICBcbiAgICAvLyBLZXlib2FyZCBldmVudHMgb24gdHJpZ2dlciBkaXZcbiAgICBjb25zdCBrZXlkb3duSGFuZGxlciA9IChlOiBFdmVudCkgPT4ge1xuICAgICAgY29uc3Qga2V5RXZlbnQgPSBlIGFzIEtleWJvYXJkRXZlbnQ7XG4gICAgICBpZiAoa2V5RXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgIGtleUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGtleUV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnNhdmVWYWx1ZShjb250ZXh0LCB2YWxpZGF0ZU9uU2F2ZSk7XG4gICAgICB9IGVsc2UgaWYgKGtleUV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAga2V5RXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAga2V5RXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGNvbnRleHQub25DYW5jZWwoKTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5RXZlbnQua2V5ID09PSAnVGFiJykge1xuICAgICAgICBrZXlFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBrZXlFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5zYXZlVmFsdWUoY29udGV4dCwgdmFsaWRhdGVPblNhdmUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gUHJldmVudCBhbGwgb3RoZXIga2V5cHJlc3NlcyBmcm9tIHR5cGluZyBpbnRvIHRoZSBkaXZcbiAgICAgICAga2V5RXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMudHJpZ2dlckRpdi5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywga2V5ZG93bkhhbmRsZXIpO1xuICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnMucHVzaCh7IGV2ZW50OiAna2V5ZG93bicsIGhhbmRsZXI6IGtleWRvd25IYW5kbGVyIH0pO1xuICAgIFxuICAgIC8vIG5pbGUtY2hhbmdlIGV2ZW50IG9uIGRhdGUgcGlja2VyXG4gICAgY29uc3QgY2hhbmdlSGFuZGxlciA9IChlOiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgY3VzdG9tRXZlbnQgPSBlIGFzIEN1c3RvbUV2ZW50O1xuICAgICAgLy8gTmlsZURhdGVQaWNrZXIgZGV0YWlsIGhhcyBzdGFydERhdGUgYW5kIGVuZERhdGUsIG5vdCBhIHNpbmdsZSB2YWx1ZVxuICAgICAgY29uc3QgZGV0YWlsID0gY3VzdG9tRXZlbnQuZGV0YWlsO1xuICAgICAgbGV0IGRhdGVWYWx1ZSA9ICcnO1xuICAgICAgXG4gICAgICBpZiAoZGV0YWlsLnN0YXJ0RGF0ZSAmJiBkZXRhaWwuZW5kRGF0ZSkge1xuICAgICAgICAvLyBSYW5nZSBtb2RlOiBjb21iaW5lIHN0YXJ0RGF0ZSBhbmQgZW5kRGF0ZVxuICAgICAgICBkYXRlVmFsdWUgPSBgJHtkZXRhaWwuc3RhcnREYXRlfSAtICR7ZGV0YWlsLmVuZERhdGV9YDtcbiAgICAgIH0gZWxzZSBpZiAoZGV0YWlsLnN0YXJ0RGF0ZSkge1xuICAgICAgICAvLyBTaW5nbGUgbW9kZTogb25seSBzdGFydERhdGVcbiAgICAgICAgZGF0ZVZhbHVlID0gZGV0YWlsLnN0YXJ0RGF0ZTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgY29udGV4dC5vblNhdmUodGhpcy5wYXJzZVZhbHVlKGRhdGVWYWx1ZSkpO1xuICAgIH07XG4gICAgdGhpcy5kYXRlUGlja2VyLmFkZEV2ZW50TGlzdGVuZXIoJ25pbGUtY2hhbmdlJywgY2hhbmdlSGFuZGxlcik7XG4gICAgdGhpcy5ldmVudExpc3RlbmVycy5wdXNoKHsgZXZlbnQ6ICduaWxlLWNoYW5nZScsIGhhbmRsZXI6IGNoYW5nZUhhbmRsZXIgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSB2YWx1ZSB3aXRoIG9wdGlvbmFsIHZhbGlkYXRpb25cbiAgICovXG4gIHByaXZhdGUgc2F2ZVZhbHVlKGNvbnRleHQ6IENlbGxFZGl0b3JDb250ZXh0PFQ+LCB2YWxpZGF0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICghdGhpcy5kYXRlUGlja2VyKSByZXR1cm47XG4gICAgY29udGV4dC5vblNhdmUodGhpcy5nZXRDdXJyZW50VmFsdWUoKSk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgdmFsdWUgZnJvbSBzdHJpbmcgdG8gYXBwcm9wcmlhdGUgdHlwZVxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiBUIHtcbiAgICAvLyBCb3RoIHNpbmdsZSBhbmQgcmFuZ2UgbW9kZXMgcmV0dXJuIHN0cmluZ1xuICAgIC8vIFNpbmdsZSBtb2RlOiAnWVlZWS1NTS1ERCdcbiAgICAvLyBSYW5nZSBtb2RlOiAnWVlZWS1NTS1ERCAtIFlZWVktTU0tREQnXG4gICAgcmV0dXJuICh2YWx1ZSB8fCAnJykgYXMgdW5rbm93biBhcyBUO1xuICB9XG5cbiAgZ2V0Q3VycmVudFZhbHVlKCk6IFQge1xuICAgIGlmICghdGhpcy50cmlnZ2VyRGl2KSB7XG4gICAgICByZXR1cm4gJycgYXMgdW5rbm93biBhcyBUO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gdGhpcy5wYXJzZVZhbHVlKHRoaXMudHJpZ2dlckRpdi50ZXh0Q29udGVudCA/PyAnJyk7XG4gIH1cblxuICBkZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGVQaWNrZXIgfHwgdGhpcy50cmlnZ2VyRGl2KSB7XG4gICAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLmZvckVhY2goKHsgZXZlbnQsIGhhbmRsZXIgfSkgPT4ge1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXI/LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIpO1xuICAgICAgICB0aGlzLnRyaWdnZXJEaXY/LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmV2ZW50TGlzdGVuZXJzID0gW107XG4gICAgICBcbiAgICAgIGlmICh0aGlzLmRhdGVQaWNrZXIpIHtcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyLnJlbW92ZSgpO1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXIgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBcbiAgICAgIHRoaXMudHJpZ2dlckRpdiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBmb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLnRyaWdnZXJEaXY/LmZvY3VzKCk7XG4gIH1cbn1cbiJdfQ==
@@ -10,6 +10,7 @@ import { isObservable } from 'rxjs';
10
10
  export class NileSelectEditor {
11
11
  constructor(options) {
12
12
  this.options = options;
13
+ this.acceptsInitialKeypress = false;
13
14
  this.eventListeners = [];
14
15
  this.currentOptions = [];
15
16
  // Handle Observable options
@@ -314,4 +315,4 @@ export class NileSelectEditor {
314
315
  return (Array.isArray(value) ? (value.length > 0 ? value[0] : '') : value);
315
316
  }
316
317
  }
317
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmlsZS1zZWxlY3QtZWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtdGFibGUvc3JjL2xpYi9lZGl0b3JzL25pbGUtc2VsZWN0LWVkaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFHSCxPQUFPLEVBQTRCLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQW1GOUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQU0zQixZQUE2QixPQUFnQztRQUFoQyxZQUFPLEdBQVAsT0FBTyxDQUF5QjtRQUpyRCxtQkFBYyxHQUFxRCxFQUFFLENBQUM7UUFFdEUsbUJBQWMsR0FBOEIsRUFBRSxDQUFDO1FBR3JELDRCQUE0QjtRQUM1QixJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDakMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUMxRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztnQkFDM0IsOENBQThDO2dCQUM5QyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7b0JBQ2YsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2lCQUN0QjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLGlCQUFpQjtZQUNqQixJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1lBQzVDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUNwQyxPQUFPLENBQUMsSUFBSSxDQUFDLDBDQUEwQyxDQUFDLENBQUM7YUFDMUQ7U0FDRjtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsT0FBNkI7UUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1lBQzlELE9BQU87U0FDUjtRQUVELGdFQUFnRTtRQUNoRSxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUM7UUFFekMsOENBQThDO1FBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDO1FBRTNDLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVwQyxrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXBCLGlEQUFpRDtRQUNqRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRWpELHlCQUF5QjtRQUN6QixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbEMsb0NBQW9DO1FBQ3BDLE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNqQyxPQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFM0MscUJBQXFCO1FBQ3JCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDdkIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZUFBZSxDQUFDLEtBQVE7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUV6QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3pCLG9EQUFvRDtZQUNwRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQzthQUMzQjtpQkFBTSxJQUFJLEtBQUssRUFBRTtnQkFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNyQztpQkFBTTtnQkFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7YUFDeEI7U0FDRjthQUFNO1lBQ0wsMEJBQTBCO1lBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDaEQ7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxZQUFZO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU87UUFFekIsZ0JBQWdCO1FBQ2hCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7U0FDcEQ7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1NBQ3RDO2FBQU07WUFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQywwQkFBMEI7U0FDdkQ7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1NBQzlDO1FBRUQsbUJBQW1CO1FBQ25CLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7U0FDaEQ7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1NBQzlDO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztTQUM5QztRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUU7WUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7U0FDeEQ7UUFFRCxnQkFBZ0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztTQUM1QztRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7U0FDeEM7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1NBQzVDO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztTQUN0RDtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7U0FDOUM7UUFFRCxvQkFBb0I7UUFDcEIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixLQUFLLFNBQVMsRUFBRTtZQUNoRCxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUM7U0FDaEU7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztTQUMxQztRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7U0FDdEM7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1NBQ3hDO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztTQUNoRDtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRTtZQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUM7U0FDcEU7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUU7WUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDO1NBQ2xFO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7U0FDMUM7UUFFRCw4Q0FBOEM7UUFDOUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNLLGFBQWE7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUV6Qix5QkFBeUI7UUFDekIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRTtZQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2pEO1FBRUQsNkJBQTZCO1FBQzdCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFakQsc0NBQXNDO1FBQ3RDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSyxzQkFBc0IsQ0FBQyxPQUFrQztRQUMvRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBRXpCLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDcEIsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQVEsQ0FBQztZQUVoRSxvREFBb0Q7WUFDcEQsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7Z0JBQzNCLFVBQVUsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO2dCQUN2QixVQUFVLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDdEMsVUFBVSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7YUFDOUI7aUJBQU07Z0JBQ0wsVUFBVSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO2dCQUM3QixVQUFVLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVDLFVBQVUsQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztnQkFFbkMsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFO29CQUNoQixVQUFVLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztvQkFDM0IsVUFBVSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7aUJBQzdDO2dCQUVELDREQUE0RDtnQkFDNUQsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFO29CQUNkLDZDQUE2QztvQkFDN0MseUVBQXlFO2lCQUMxRTthQUNGO1lBRUQsSUFBSSxDQUFDLE1BQU8sQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxtQkFBbUIsQ0FBQyxPQUE2QjtRQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBRXpCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxLQUFLLEtBQUssQ0FBQztRQUU3RCxvRUFBb0U7UUFDcEUsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFRLEVBQUUsRUFBRTtZQUNsQyxNQUFNLFFBQVEsR0FBRyxDQUFrQixDQUFDO1lBQ3BDLElBQUksUUFBUSxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUU7Z0JBQzdCLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDMUIsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUMzQixPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDcEI7UUFDSCxDQUFDLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFFeEUsdURBQXVEO1FBQ3ZELE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBUSxFQUFFLEVBQUU7WUFDakMsTUFBTSxXQUFXLEdBQUcsQ0FBZ0IsQ0FBQztZQUNyQyxJQUFJLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLEVBQUU7Z0JBQ25ELElBQUksQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLENBQUM7Z0JBQzlCLE9BQU87YUFDUjtZQUNELE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBRTNFLHdDQUF3QztRQUN4QyxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQVEsRUFBRSxFQUFFO1lBQy9CLElBQUksY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsRUFBRTtnQkFDbkQsSUFBSSxDQUFDLE1BQU0sRUFBRSxjQUFjLEVBQUUsQ0FBQztnQkFDOUIsT0FBTzthQUNSO1lBQ0QsMENBQTBDO1FBQzVDLENBQUMsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUV2RSxpQ0FBaUM7UUFDakMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUMxQixNQUFNLFlBQVksR0FBRyxDQUFDLENBQVEsRUFBRSxFQUFFO2dCQUNoQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNuRSxDQUFDLENBQUM7WUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7U0FDMUU7UUFFRCxpREFBaUQ7UUFDakQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFO1lBQ25DLE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBUSxFQUFFLEVBQUU7Z0JBQ2pDLE1BQU0sV0FBVyxHQUFHLENBQWdCLENBQUM7Z0JBQ3JDLDJEQUEyRDtnQkFDM0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBVyxDQUFDLENBQUM7WUFDNUMsQ0FBQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1NBQzVFO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssVUFBVSxDQUFDLEtBQXdCO1FBQ3pDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDekIsc0NBQXNDO1lBQ3RDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDeEIsT0FBTyxLQUFxQixDQUFDO2FBQzlCO1lBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFpQixDQUFDO1NBQy9DO1FBRUQsbUNBQW1DO1FBQ25DLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN4QixPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFpQixDQUFDO1NBQzNEO1FBQ0QsT0FBTyxLQUFxQixDQUFDO0lBQy9CLENBQUM7SUFFRCxPQUFPO1FBQ0wsc0NBQXNDO1FBQ3RDLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzVCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDO1NBQ3RDO1FBRUQsNkJBQTZCO1FBQzdCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtnQkFDakQsSUFBSSxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDbkQsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztZQUV6QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBaUIsQ0FBQztTQUMxRDtRQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBRWhDLDRCQUE0QjtRQUM1QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQWlCLENBQUM7U0FDakU7UUFFRCwwQkFBMEI7UUFDMUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBaUIsQ0FBQztJQUM3RixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEN1c3RvbSBlZGl0b3IgdXNpbmcgTmlsZVNlbGVjdCBmcm9tIEBhcXVlcmEvbmlsZS1lbGVtZW50c1xuICogVGhpcyBkZW1vbnN0cmF0ZXMgaG93IHRvIGNyZWF0ZSBkcm9wZG93bi9zZWxlY3QgZWRpdG9ycyBmb3Igbmd4LXNtYXJ0LXRhYmxlXG4gKi9cblxuaW1wb3J0IHsgQ2VsbEVkaXRvciwgQ2VsbEVkaXRvckNvbnRleHQgfSBmcm9tICcuLi9tb2RlbHMvY2VsbC1zdHJhdGVnaWVzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGlzT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIFNlbGVjdCBvcHRpb24gY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdE9wdGlvbiB7XG4gIC8qKiBUaGUgb3B0aW9uJ3MgdmFsdWUgKi9cbiAgdmFsdWU6IHN0cmluZztcbiAgLyoqIERpc3BsYXkgbGFiZWwgZm9yIHRoZSBvcHRpb24gKi9cbiAgbGFiZWw6IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgdGhlIG9wdGlvbiBpcyBkaXNhYmxlZCAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIC8qKiBPcHRpb25hbCBwcmVmaXggaWNvbiBvciBjb250ZW50ICovXG4gIHByZWZpeD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGludGVyZmFjZSBmb3IgTmlsZVNlbGVjdEVkaXRvclxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5pbGVTZWxlY3RFZGl0b3JPcHRpb25zIHtcbiAgLy8gT3B0aW9ucyBjb25maWd1cmF0aW9uIChSRVFVSVJFRClcbiAgLyoqIEFycmF5IG9mIG9wdGlvbnMgLSBzdXBwb3J0cyBzdGF0aWMgYXJyYXlzLCBPYnNlcnZhYmxlLCBvciBCZWhhdmlvclN1YmplY3QgZm9yIHJlYWN0aXZlIHVwZGF0ZXMgKi9cbiAgb3B0aW9uczogU2VsZWN0T3B0aW9uW10gfCBzdHJpbmdbXSB8IE9ic2VydmFibGU8U2VsZWN0T3B0aW9uW10gfCBzdHJpbmdbXT47XG4gIFxuICAvLyBCYXNpYyBwcm9wZXJ0aWVzXG4gIC8qKiBQbGFjZWhvbGRlciB0ZXh0IHdoZW4gbm8gc2VsZWN0aW9uIGlzIG1hZGUgKi9cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIC8qKiBTaXplIG9mIHRoZSBzZWxlY3QgY29udHJvbCAqL1xuICBzaXplPzogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJztcbiAgLyoqIEVuYWJsZSBtdWx0aXBsZSBzZWxlY3Rpb24gbW9kZSAqL1xuICBtdWx0aXBsZT86IGJvb2xlYW47XG4gIFxuICAvLyBCZWhhdmlvciBvcHRpb25zXG4gIC8qKiBBZGRzIGNsZWFyIGJ1dHRvbiB3aGVuIHZhbHVlIGlzIG5vdCBlbXB0eSAqL1xuICBjbGVhcmFibGU/OiBib29sZWFuO1xuICAvKiogRGlzYWJsZSB0aGUgc2VsZWN0IGNvbnRyb2wgKi9cbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKiogTWFrZSB0aGUgc2VsZWN0IHJlcXVpcmVkICovXG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgLyoqIEVuYWJsZSBzZWFyY2ggZnVuY3Rpb25hbGl0eSAqL1xuICBzZWFyY2hFbmFibGVkPzogYm9vbGVhbjtcbiAgXG4gIC8vIFZpc3VhbCBzdGF0ZXNcbiAgLyoqIFdhcm5pbmcgc3RhdGUgc3R5bGluZyAqL1xuICB3YXJuaW5nPzogYm9vbGVhbjtcbiAgLyoqIEVycm9yIHN0YXRlIHN0eWxpbmcgKi9cbiAgZXJyb3I/OiBib29sZWFuO1xuICAvKiogU3VjY2VzcyBzdGF0ZSBzdHlsaW5nICovXG4gIHN1Y2Nlc3M/OiBib29sZWFuO1xuICAvKiogRXJyb3IgbWVzc2FnZSB0byBkaXNwbGF5ICovXG4gIGVycm9yTWVzc2FnZT86IHN0cmluZztcbiAgLyoqIEhlbHAgdGV4dCB0byBkaXNwbGF5ICovXG4gIGhlbHBUZXh0Pzogc3RyaW5nO1xuICBcbiAgLy8gQWR2YW5jZWQgZmVhdHVyZXNcbiAgLyoqIE1heGltdW0gbnVtYmVyIG9mIHNlbGVjdGVkIG9wdGlvbnMgdG8gc2hvdyBpbiBtdWx0aXBsZSBtb2RlICgwID0gbm8gbGltaXQpICovXG4gIG1heE9wdGlvbnNWaXNpYmxlPzogbnVtYmVyO1xuICAvKiogRHJhd3MgYSBmaWxsZWQgc2VsZWN0IHN0eWxlICovXG4gIGZpbGxlZD86IGJvb2xlYW47XG4gIC8qKiBQaWxsLXN0eWxlIHdpdGggcm91bmRlZCBlZGdlcyAqL1xuICBwaWxsPzogYm9vbGVhbjtcbiAgLyoqIFVzZSBmaXhlZCBwb3NpdGlvbmluZyB0byBwcmV2ZW50IGNsaXBwaW5nICovXG4gIGhvaXN0PzogYm9vbGVhbjtcbiAgLyoqIFBsYWNlbWVudCBvZiB0aGUgZHJvcGRvd24gbWVudSAqL1xuICBwbGFjZW1lbnQ/OiAndG9wJyB8ICdib3R0b20nO1xuICBcbiAgLy8gVmlydHVhbCBzY3JvbGwgZm9yIGxhcmdlIGxpc3RzXG4gIC8qKiBFbmFibGUgdmlydHVhbCBzY3JvbGxpbmcgZm9yIGJldHRlciBwZXJmb3JtYW5jZSB3aXRoIG1hbnkgb3B0aW9ucyAqL1xuICBlbmFibGVWaXJ0dWFsU2Nyb2xsPzogYm9vbGVhbjtcbiAgXG4gIC8vIFNlYXJjaCBjb25maWd1cmF0aW9uXG4gIC8qKiBEaXNhYmxlIGxvY2FsIHNlYXJjaCAodXNlIGZvciBzZXJ2ZXItc2lkZSBzZWFyY2gpICovXG4gIGRpc2FibGVMb2NhbFNlYXJjaD86IGJvb2xlYW47XG4gIFxuICAvLyBWYWxpZGF0aW9uXG4gIC8qKiBWYWxpZGF0ZSBiZWZvcmUgc2F2aW5nIChkZWZhdWx0OiB0cnVlKSAqL1xuICB2YWxpZGF0ZU9uU2F2ZT86IGJvb2xlYW47XG4gIFxuICAvLyBQb3J0YWwgb3B0aW9uc1xuICAvKiogQXBwZW5kIGRyb3Bkb3duIHRvIGRvY3VtZW50IGJvZHkgaW5zdGVhZCBvZiBwYXJlbnQgKi9cbiAgcG9ydGFsPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDdXN0b20gZWRpdG9yIHRoYXQgdXNlcyBOaWxlU2VsZWN0IGNvbXBvbmVudFxuICogQHRlbXBsYXRlIFQgVGhlIHZhbHVlIHR5cGUgKHN0cmluZyBmb3Igc2luZ2xlIHNlbGVjdGlvbiwgc3RyaW5nW10gZm9yIG11bHRpcGxlKVxuICovXG5leHBvcnQgY2xhc3MgTmlsZVNlbGVjdEVkaXRvcjxUID0gc3RyaW5nPiBpbXBsZW1lbnRzIENlbGxFZGl0b3I8VD4ge1xuICBwcml2YXRlIHNlbGVjdD86IGFueTtcbiAgcHJpdmF0ZSBldmVudExpc3RlbmVyczogQXJyYXk8eyBldmVudDogc3RyaW5nOyBoYW5kbGVyOiBFdmVudExpc3RlbmVyIH0+ID0gW107XG4gIHByaXZhdGUgb3B0aW9uc1N1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBjdXJyZW50T3B0aW9uczogKFNlbGVjdE9wdGlvbiB8IHN0cmluZylbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogTmlsZVNlbGVjdEVkaXRvck9wdGlvbnMpIHtcbiAgICAvLyBIYW5kbGUgT2JzZXJ2YWJsZSBvcHRpb25zXG4gICAgaWYgKGlzT2JzZXJ2YWJsZShvcHRpb25zLm9wdGlvbnMpKSB7XG4gICAgICB0aGlzLm9wdGlvbnNTdWJzY3JpcHRpb24gPSBvcHRpb25zLm9wdGlvbnMuc3Vic2NyaWJlKG9wdHMgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbnRPcHRpb25zID0gb3B0cztcbiAgICAgICAgLy8gSWYgZWRpdG9yIGlzIGFscmVhZHkgYWN0aXZlLCB1cGRhdGUgdGhlIERPTVxuICAgICAgICBpZiAodGhpcy5zZWxlY3QpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZU9wdGlvbnMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFN0YXRpYyBvcHRpb25zXG4gICAgICB0aGlzLmN1cnJlbnRPcHRpb25zID0gb3B0aW9ucy5vcHRpb25zIHx8IFtdO1xuICAgICAgaWYgKHRoaXMuY3VycmVudE9wdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignTmlsZVNlbGVjdEVkaXRvcjogb3B0aW9ucyBhcnJheSBpcyBlbXB0eScpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGVkaXQoY29udGV4dDogQ2VsbEVkaXRvckNvbnRleHQ8VD4pOiB2b2lkIHtcbiAgICBpZiAoIWNvbnRleHQuY29udGFpbmVyKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ05pbGVTZWxlY3RFZGl0b3IgcmVxdWlyZXMgYSBjb250YWluZXIgZWxlbWVudCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBOaWxlU2VsZWN0IGN1c3RvbSBlbGVtZW50IHVzaW5nIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRcbiAgICB0aGlzLnNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ25pbGUtc2VsZWN0Jyk7XG4gICAgdGhpcy5zZWxlY3QuY2xhc3NOYW1lID0gJ3N0LWNlbGwtZWRpdG9yJztcbiAgICBcbiAgICAvLyBBcHBseSBpbmxpbmUgc3R5bGVzIGZvciBwcm9wZXIgY2VsbCBmaXR0aW5nXG4gICAgdGhpcy5zZWxlY3Quc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgdGhpcy5zZWxlY3Quc3R5bGUuaGVpZ2h0ID0gJ2luaGVyaXQnO1xuICAgIHRoaXMuc2VsZWN0LnN0eWxlLmJveFNpemluZyA9ICdib3JkZXItYm94JztcbiAgICBcbiAgICAvLyBTZXQgaW5pdGlhbCB2YWx1ZVxuICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlKGNvbnRleHQudmFsdWUpO1xuXG4gICAgLy8gQXBwbHkgYWxsIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICAgIHRoaXMuYXBwbHlPcHRpb25zKCk7XG5cbiAgICAvLyBDcmVhdGUgYW5kIGFwcGVuZCBvcHRpb25zIHdpdGggY3VycmVudCBvcHRpb25zXG4gICAgdGhpcy5jcmVhdGVBbmRBcHBlbmRPcHRpb25zKHRoaXMuY3VycmVudE9wdGlvbnMpO1xuXG4gICAgLy8gU2V0IHVwIGV2ZW50IGxpc3RlbmVyc1xuICAgIHRoaXMuc2V0dXBFdmVudExpc3RlbmVycyhjb250ZXh0KTtcblxuICAgIC8vIENsZWFyIGNvbnRhaW5lciBhbmQgYXBwZW5kIHNlbGVjdFxuICAgIGNvbnRleHQuY29udGFpbmVyLmlubmVySFRNTCA9ICcnO1xuICAgIGNvbnRleHQuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuc2VsZWN0KTtcblxuICAgIC8vIEZvY3VzIGFmdGVyIHJlbmRlclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3Q/LmZvY3VzKCk7XG4gICAgICB0aGlzLnNlbGVjdD8uY2xpY2soKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSBzZWxlY3RcbiAgICovXG4gIHByaXZhdGUgc2V0SW5pdGlhbFZhbHVlKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdCkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5tdWx0aXBsZSkge1xuICAgICAgLy8gSGFuZGxlIG11bHRpcGxlIHNlbGVjdGlvbiAtIHZhbHVlIHNob3VsZCBiZSBhcnJheVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0LnZhbHVlID0gdmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0LnZhbHVlID0gW1N0cmluZyh2YWx1ZSldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3QudmFsdWUgPSBbXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSGFuZGxlIHNpbmdsZSBzZWxlY3Rpb25cbiAgICAgIHRoaXMuc2VsZWN0LnZhbHVlID0gdmFsdWUgPyBTdHJpbmcodmFsdWUpIDogJyc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IGFsbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdGhlIE5pbGVTZWxlY3QgZWxlbWVudFxuICAgKi9cbiAgcHJpdmF0ZSBhcHBseU9wdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdCkgcmV0dXJuO1xuXG4gICAgLy8gQmFzaWMgb3B0aW9uc1xuICAgIGlmICh0aGlzLm9wdGlvbnMucGxhY2Vob2xkZXIpIHtcbiAgICAgIHRoaXMuc2VsZWN0LnBsYWNlaG9sZGVyID0gdGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuc2l6ZSkge1xuICAgICAgdGhpcy5zZWxlY3Quc2l6ZSA9IHRoaXMub3B0aW9ucy5zaXplO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdC5zaXplID0gJ3NtYWxsJzsgLy8gRGVmYXVsdCBmb3IgdGFibGUgY2VsbHNcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLnNlbGVjdC5tdWx0aXBsZSA9IHRoaXMub3B0aW9ucy5tdWx0aXBsZTtcbiAgICB9XG5cbiAgICAvLyBCZWhhdmlvciBvcHRpb25zXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jbGVhcmFibGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0LmNsZWFyYWJsZSA9IHRoaXMub3B0aW9ucy5jbGVhcmFibGU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5zZWxlY3QuZGlzYWJsZWQgPSB0aGlzLm9wdGlvbnMuZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5yZXF1aXJlZCkge1xuICAgICAgdGhpcy5zZWxlY3QucmVxdWlyZWQgPSB0aGlzLm9wdGlvbnMucmVxdWlyZWQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5zZWFyY2hFbmFibGVkKSB7XG4gICAgICB0aGlzLnNlbGVjdC5zZWFyY2hFbmFibGVkID0gdGhpcy5vcHRpb25zLnNlYXJjaEVuYWJsZWQ7XG4gICAgfVxuXG4gICAgLy8gVmlzdWFsIHN0YXRlc1xuICAgIGlmICh0aGlzLm9wdGlvbnMud2FybmluZykge1xuICAgICAgdGhpcy5zZWxlY3Qud2FybmluZyA9IHRoaXMub3B0aW9ucy53YXJuaW5nO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZXJyb3IpIHtcbiAgICAgIHRoaXMuc2VsZWN0LmVycm9yID0gdGhpcy5vcHRpb25zLmVycm9yO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuc3VjY2Vzcykge1xuICAgICAgdGhpcy5zZWxlY3Quc3VjY2VzcyA9IHRoaXMub3B0aW9ucy5zdWNjZXNzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZXJyb3JNZXNzYWdlKSB7XG4gICAgICB0aGlzLnNlbGVjdC5lcnJvck1lc3NhZ2UgPSB0aGlzLm9wdGlvbnMuZXJyb3JNZXNzYWdlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuaGVscFRleHQpIHtcbiAgICAgIHRoaXMuc2VsZWN0LmhlbHBUZXh0ID0gdGhpcy5vcHRpb25zLmhlbHBUZXh0O1xuICAgIH1cblxuICAgIC8vIEFkdmFuY2VkIGZlYXR1cmVzXG4gICAgaWYgKHRoaXMub3B0aW9ucy5tYXhPcHRpb25zVmlzaWJsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnNlbGVjdC5tYXhPcHRpb25zVmlzaWJsZSA9IHRoaXMub3B0aW9ucy5tYXhPcHRpb25zVmlzaWJsZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmZpbGxlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnNlbGVjdC5maWxsZWQgPSB0aGlzLm9wdGlvbnMuZmlsbGVkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMucGlsbCkge1xuICAgICAgdGhpcy5zZWxlY3QucGlsbCA9IHRoaXMub3B0aW9ucy5waWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuaG9pc3QpIHtcbiAgICAgIHRoaXMuc2VsZWN0LmhvaXN0ID0gdGhpcy5vcHRpb25zLmhvaXN0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMucGxhY2VtZW50KSB7XG4gICAgICB0aGlzLnNlbGVjdC5wbGFjZW1lbnQgPSB0aGlzLm9wdGlvbnMucGxhY2VtZW50O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZW5hYmxlVmlydHVhbFNjcm9sbCkge1xuICAgICAgdGhpcy5zZWxlY3QuZW5hYmxlVmlydHVhbFNjcm9sbCA9IHRoaXMub3B0aW9ucy5lbmFibGVWaXJ0dWFsU2Nyb2xsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZGlzYWJsZUxvY2FsU2VhcmNoKSB7XG4gICAgICB0aGlzLnNlbGVjdC5kaXNhYmxlTG9jYWxTZWFyY2ggPSB0aGlzLm9wdGlvbnMuZGlzYWJsZUxvY2FsU2VhcmNoO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMucG9ydGFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0LnBvcnRhbCA9IHRoaXMub3B0aW9ucy5wb3J0YWw7XG4gICAgfVxuXG4gICAgLy8gUHJldmVudCB3aWR0aCBzeW5jaW5nIGlzc3VlcyBpbiB0YWJsZSBjZWxsc1xuICAgIHRoaXMuc2VsZWN0Lm5vV2lkdGhTeW5jID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgb3B0aW9ucyBkeW5hbWljYWxseSB3aGlsZSBlZGl0b3IgaXMgYWN0aXZlXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZU9wdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdCkgcmV0dXJuO1xuXG4gICAgLy8gQ2xlYXIgZXhpc3Rpbmcgb3B0aW9uc1xuICAgIHdoaWxlICh0aGlzLnNlbGVjdC5maXJzdENoaWxkKSB7XG4gICAgICB0aGlzLnNlbGVjdC5yZW1vdmVDaGlsZCh0aGlzLnNlbGVjdC5maXJzdENoaWxkKTtcbiAgICB9XG5cbiAgICAvLyBSZS1hcHBlbmQgd2l0aCBuZXcgb3B0aW9uc1xuICAgIHRoaXMuY3JlYXRlQW5kQXBwZW5kT3B0aW9ucyh0aGlzLmN1cnJlbnRPcHRpb25zKTtcbiAgICBcbiAgICAvLyBUcmlnZ2VyIHVwZGF0ZSBvbiB0aGUgd2ViIGNvbXBvbmVudFxuICAgIGlmICh0aGlzLnNlbGVjdC5yZXF1ZXN0VXBkYXRlKSB7XG4gICAgICB0aGlzLnNlbGVjdC5yZXF1ZXN0VXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBOaWxlT3B0aW9uIGVsZW1lbnRzIGFuZCBhcHBlbmQgdGhlbSB0byB0aGUgc2VsZWN0XG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgdG8gcmVuZGVyXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUFuZEFwcGVuZE9wdGlvbnMob3B0aW9uczogKFNlbGVjdE9wdGlvbiB8IHN0cmluZylbXSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZWxlY3QpIHJldHVybjtcblxuICAgIG9wdGlvbnMuZm9yRWFjaChvcHQgPT4ge1xuICAgICAgY29uc3QgbmlsZU9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ25pbGUtb3B0aW9uJykgYXMgYW55O1xuXG4gICAgICAvLyBBdXRvLWRldGVjdCBmb3JtYXQ6IHN0cmluZyBvciBTZWxlY3RPcHRpb24gb2JqZWN0XG4gICAgICBpZiAodHlwZW9mIG9wdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgbmlsZU9wdGlvbi52YWx1ZSA9IG9wdDtcbiAgICAgICAgbmlsZU9wdGlvbi5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgb3B0KTtcbiAgICAgICAgbmlsZU9wdGlvbi50ZXh0Q29udGVudCA9IG9wdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5pbGVPcHRpb24udmFsdWUgPSBvcHQudmFsdWU7XG4gICAgICAgIG5pbGVPcHRpb24uc2V0QXR0cmlidXRlKCd2YWx1ZScsIG9wdC52YWx1ZSk7XG4gICAgICAgIG5pbGVPcHRpb24udGV4dENvbnRlbnQgPSBvcHQubGFiZWw7XG4gICAgICAgIFxuICAgICAgICBpZiAob3B0LmRpc2FibGVkKSB7XG4gICAgICAgICAgbmlsZU9wdGlvbi5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgbmlsZU9wdGlvbi5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgJ3RydWUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhbmRsZSBwcmVmaXggaWYgcHJvdmlkZWQgKGNvdWxkIGJlIGljb24gbmFtZSBvciBjb250ZW50KVxuICAgICAgICBpZiAob3B0LnByZWZpeCkge1xuICAgICAgICAgIC8vIG5pbGVPcHRpb24uc2V0QXR0cmlidXRlKCdzbG90JywgJ3ByZWZpeCcpO1xuICAgICAgICAgIC8vIG5pbGVPcHRpb24uaW5uZXJIVE1MID0gYDxuaWxlLWljb24gbmFtZT1cIiR7b3B0LnByZWZpeH1cIj48L25pbGUtaWNvbj5gO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2VsZWN0IS5hcHBlbmRDaGlsZChuaWxlT3B0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdXAgYWxsIGV2ZW50IGxpc3RlbmVycyB3aXRoIHByb3BlciBjbGVhbnVwIHRyYWNraW5nXG4gICAqL1xuICBwcml2YXRlIHNldHVwRXZlbnRMaXN0ZW5lcnMoY29udGV4dDogQ2VsbEVkaXRvckNvbnRleHQ8VD4pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0KSByZXR1cm47XG5cbiAgICBjb25zdCB2YWxpZGF0ZU9uU2F2ZSA9IHRoaXMub3B0aW9ucy52YWxpZGF0ZU9uU2F2ZSAhPT0gZmFsc2U7XG5cbiAgICAvLyBIYW5kbGUga2V5Ym9hcmQgZXZlbnRzIChrZXlkb3duIGlzIG5vdCByZXBsYWNlZCBieSBjdXN0b20gZXZlbnRzKVxuICAgIGNvbnN0IGtleWRvd25IYW5kbGVyID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBrZXlFdmVudCA9IGUgYXMgS2V5Ym9hcmRFdmVudDtcbiAgICAgIGlmIChrZXlFdmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgIGtleUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGtleUV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBjb250ZXh0Lm9uQ2FuY2VsKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLnNlbGVjdC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywga2V5ZG93bkhhbmRsZXIpO1xuICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnMucHVzaCh7IGV2ZW50OiAna2V5ZG93bicsIGhhbmRsZXI6IGtleWRvd25IYW5kbGVyIH0pO1xuXG4gICAgLy8gVXNlIG5pbGUtY2hhbmdlIGN1c3RvbSBldmVudCBhcyBwcmltYXJ5IHNhdmUgdHJpZ2dlclxuICAgIGNvbnN0IGNoYW5nZUhhbmRsZXIgPSAoZTogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gZSBhcyBDdXN0b21FdmVudDtcbiAgICAgIGlmICh2YWxpZGF0ZU9uU2F2ZSAmJiAhdGhpcy5zZWxlY3Q/LmNoZWNrVmFsaWRpdHkoKSkge1xuICAgICAgICB0aGlzLnNlbGVjdD8ucmVwb3J0VmFsaWRpdHkoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29udGV4dC5vblNhdmUodGhpcy5wYXJzZVZhbHVlKGN1c3RvbUV2ZW50LmRldGFpbC52YWx1ZSkpO1xuICAgIH07XG4gICAgdGhpcy5zZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcignbmlsZS1jaGFuZ2UnLCBjaGFuZ2VIYW5kbGVyKTtcbiAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLnB1c2goeyBldmVudDogJ25pbGUtY2hhbmdlJywgaGFuZGxlcjogY2hhbmdlSGFuZGxlciB9KTtcblxuICAgIC8vIEhhbmRsZSBibHVyIGFzIHNlY29uZGFyeSBzYXZlIHRyaWdnZXJcbiAgICBjb25zdCBibHVySGFuZGxlciA9IChlOiBFdmVudCkgPT4ge1xuICAgICAgaWYgKHZhbGlkYXRlT25TYXZlICYmICF0aGlzLnNlbGVjdD8uY2hlY2tWYWxpZGl0eSgpKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0Py5yZXBvcnRWYWxpZGl0eSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBjb250ZXh0Lm9uU2F2ZSh0aGlzLmdldEN1cnJlbnRWYWx1ZSgpKTtcbiAgICB9O1xuICAgIHRoaXMuc2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoJ25pbGUtYmx1cicsIGJsdXJIYW5kbGVyKTtcbiAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLnB1c2goeyBldmVudDogJ25pbGUtYmx1cicsIGhhbmRsZXI6IGJsdXJIYW5kbGVyIH0pO1xuXG4gICAgLy8gSGFuZGxlIGNsZWFyIGJ1dHRvbiBpZiBlbmFibGVkXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jbGVhcmFibGUpIHtcbiAgICAgIGNvbnN0IGNsZWFySGFuZGxlciA9IChlOiBFdmVudCkgPT4ge1xuICAgICAgICBjb250ZXh0Lm9uU2F2ZSh0aGlzLnBhcnNlVmFsdWUodGhpcy5vcHRpb25zLm11bHRpcGxlID8gW10gOiAnJykpO1xuICAgICAgfTtcbiAgICAgIHRoaXMuc2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoJ25pbGUtY2xlYXInLCBjbGVhckhhbmRsZXIpO1xuICAgICAgdGhpcy5ldmVudExpc3RlbmVycy5wdXNoKHsgZXZlbnQ6ICduaWxlLWNsZWFyJywgaGFuZGxlcjogY2xlYXJIYW5kbGVyIH0pO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBzZWFyY2ggZm9yIHNlcnZlci1zaWRlIHNlYXJjaCBzY2VuYXJpb3NcbiAgICBpZiAodGhpcy5vcHRpb25zLmRpc2FibGVMb2NhbFNlYXJjaCkge1xuICAgICAgY29uc3Qgc2VhcmNoSGFuZGxlciA9IChlOiBFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBjdXN0b21FdmVudCA9IGUgYXMgQ3VzdG9tRXZlbnQ7XG4gICAgICAgIC8vIEVtaXQgc2VhcmNoIHF1ZXJ5IHRocm91Z2ggb25DaGFuZ2UgZm9yIGV4dGVybmFsIGhhbmRsaW5nXG4gICAgICAgIGNvbnRleHQub25DaGFuZ2UoY3VzdG9tRXZlbnQuZGV0YWlsIGFzIFQpO1xuICAgICAgfTtcbiAgICAgIHRoaXMuc2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoJ25pbGUtc2VhcmNoJywgc2VhcmNoSGFuZGxlcik7XG4gICAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLnB1c2goeyBldmVudDogJ25pbGUtc2VhcmNoJywgaGFuZGxlcjogc2VhcmNoSGFuZGxlciB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgdmFsdWUgYmFzZWQgb24gc2VsZWN0aW9uIG1vZGVcbiAgICovXG4gIHByaXZhdGUgcGFyc2VWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pOiBUIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLm11bHRpcGxlKSB7XG4gICAgICAvLyBFbnN1cmUgYXJyYXkgZm9yIG11bHRpcGxlIHNlbGVjdGlvblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSBhcyB1bmtub3duIGFzIFQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gKHZhbHVlID8gW3ZhbHVlXSA6IFtdKSBhcyB1bmtub3duIGFzIFQ7XG4gICAgfVxuICAgIFxuICAgIC8vIFNpbmdsZSBzZWxlY3Rpb24gLSByZXR1cm4gc3RyaW5nXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gKHZhbHVlLmxlbmd0aCA+IDAgPyB2YWx1ZVswXSA6ICcnKSBhcyB1bmtub3duIGFzIFQ7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZSBhcyB1bmtub3duIGFzIFQ7XG4gIH1cblxuICBkZXN0cm95KCk6IHZvaWQge1xuICAgIC8vIFVuc3Vic2NyaWJlIGZyb20gb3B0aW9ucyBPYnNlcnZhYmxlXG4gICAgaWYgKHRoaXMub3B0aW9uc1N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5vcHRpb25zU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLm9wdGlvbnNTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIFxuICAgIC8vIFJlbW92ZSBhbGwgZXZlbnQgbGlzdGVuZXJzXG4gICAgaWYgKHRoaXMuc2VsZWN0KSB7XG4gICAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLmZvckVhY2goKHsgZXZlbnQsIGhhbmRsZXIgfSkgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlcik7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnMgPSBbXTtcbiAgICAgIFxuICAgICAgdGhpcy5zZWxlY3QucmVtb3ZlKCk7XG4gICAgICB0aGlzLnNlbGVjdCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBmb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdD8uZm9jdXMoKTtcbiAgfVxuXG4gIGdldEN1cnJlbnRWYWx1ZSgpOiBUIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0KSB7XG4gICAgICByZXR1cm4gKHRoaXMub3B0aW9ucy5tdWx0aXBsZSA/IFtdIDogJycpIGFzIHVua25vd24gYXMgVDtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnNlbGVjdC52YWx1ZTtcbiAgICBcbiAgICAvLyBIYW5kbGUgbXVsdGlwbGUgc2VsZWN0aW9uXG4gICAgaWYgKHRoaXMub3B0aW9ucy5tdWx0aXBsZSkge1xuICAgICAgcmV0dXJuIChBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXSkgYXMgdW5rbm93biBhcyBUO1xuICAgIH1cbiAgICBcbiAgICAvLyBIYW5kbGUgc2luZ2xlIHNlbGVjdGlvblxuICAgIHJldHVybiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyAodmFsdWUubGVuZ3RoID4gMCA/IHZhbHVlWzBdIDogJycpIDogdmFsdWUpIGFzIHVua25vd24gYXMgVDtcbiAgfVxufVxuIl19
318
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmlsZS1zZWxlY3QtZWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtdGFibGUvc3JjL2xpYi9lZGl0b3JzL25pbGUtc2VsZWN0LWVkaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFHSCxPQUFPLEVBQTRCLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQW1GOUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQVEzQixZQUE2QixPQUFnQztRQUFoQyxZQUFPLEdBQVAsT0FBTyxDQUF5QjtRQVA3RCwyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFHdkIsbUJBQWMsR0FBcUQsRUFBRSxDQUFDO1FBRXRFLG1CQUFjLEdBQThCLEVBQUUsQ0FBQztRQUdyRCw0QkFBNEI7UUFDNUIsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDMUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7Z0JBQzNCLDhDQUE4QztnQkFDOUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO29CQUNmLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztpQkFDdEI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxpQkFBaUI7WUFDakIsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUM1QyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDcEMsT0FBTyxDQUFDLElBQUksQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO2FBQzFEO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQTZCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENB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Q0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQWlCLENBQUM7U0FDMUQ7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUVoQyw0QkFBNEI7UUFDNUIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUN6QixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFpQixDQUFDO1NBQ2pFO1FBRUQsMEJBQTBCO1FBQzFCLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQWlCLENBQUM7SUFDN0YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXN0b20gZWRpdG9yIHVzaW5nIE5pbGVTZWxlY3QgZnJvbSBAYXF1ZXJhL25pbGUtZWxlbWVudHNcbiAqIFRoaXMgZGVtb25zdHJhdGVzIGhvdyB0byBjcmVhdGUgZHJvcGRvd24vc2VsZWN0IGVkaXRvcnMgZm9yIG5neC1zbWFydC10YWJsZVxuICovXG5cbmltcG9ydCB7IENlbGxFZGl0b3IsIENlbGxFZGl0b3JDb250ZXh0IH0gZnJvbSAnLi4vbW9kZWxzL2NlbGwtc3RyYXRlZ2llcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBpc09ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBTZWxlY3Qgb3B0aW9uIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RPcHRpb24ge1xuICAvKiogVGhlIG9wdGlvbidzIHZhbHVlICovXG4gIHZhbHVlOiBzdHJpbmc7XG4gIC8qKiBEaXNwbGF5IGxhYmVsIGZvciB0aGUgb3B0aW9uICovXG4gIGxhYmVsOiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoZSBvcHRpb24gaXMgZGlzYWJsZWQgKi9cbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKiogT3B0aW9uYWwgcHJlZml4IGljb24gb3IgY29udGVudCAqL1xuICBwcmVmaXg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBpbnRlcmZhY2UgZm9yIE5pbGVTZWxlY3RFZGl0b3JcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOaWxlU2VsZWN0RWRpdG9yT3B0aW9ucyB7XG4gIC8vIE9wdGlvbnMgY29uZmlndXJhdGlvbiAoUkVRVUlSRUQpXG4gIC8qKiBBcnJheSBvZiBvcHRpb25zIC0gc3VwcG9ydHMgc3RhdGljIGFycmF5cywgT2JzZXJ2YWJsZSwgb3IgQmVoYXZpb3JTdWJqZWN0IGZvciByZWFjdGl2ZSB1cGRhdGVzICovXG4gIG9wdGlvbnM6IFNlbGVjdE9wdGlvbltdIHwgc3RyaW5nW10gfCBPYnNlcnZhYmxlPFNlbGVjdE9wdGlvbltdIHwgc3RyaW5nW10+O1xuICBcbiAgLy8gQmFzaWMgcHJvcGVydGllc1xuICAvKiogUGxhY2Vob2xkZXIgdGV4dCB3aGVuIG5vIHNlbGVjdGlvbiBpcyBtYWRlICovXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAvKiogU2l6ZSBvZiB0aGUgc2VsZWN0IGNvbnRyb2wgKi9cbiAgc2l6ZT86ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSc7XG4gIC8qKiBFbmFibGUgbXVsdGlwbGUgc2VsZWN0aW9uIG1vZGUgKi9cbiAgbXVsdGlwbGU/OiBib29sZWFuO1xuICBcbiAgLy8gQmVoYXZpb3Igb3B0aW9uc1xuICAvKiogQWRkcyBjbGVhciBidXR0b24gd2hlbiB2YWx1ZSBpcyBub3QgZW1wdHkgKi9cbiAgY2xlYXJhYmxlPzogYm9vbGVhbjtcbiAgLyoqIERpc2FibGUgdGhlIHNlbGVjdCBjb250cm9sICovXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgLyoqIE1ha2UgdGhlIHNlbGVjdCByZXF1aXJlZCAqL1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIC8qKiBFbmFibGUgc2VhcmNoIGZ1bmN0aW9uYWxpdHkgKi9cbiAgc2VhcmNoRW5hYmxlZD86IGJvb2xlYW47XG4gIFxuICAvLyBWaXN1YWwgc3RhdGVzXG4gIC8qKiBXYXJuaW5nIHN0YXRlIHN0eWxpbmcgKi9cbiAgd2FybmluZz86IGJvb2xlYW47XG4gIC8qKiBFcnJvciBzdGF0ZSBzdHlsaW5nICovXG4gIGVycm9yPzogYm9vbGVhbjtcbiAgLyoqIFN1Y2Nlc3Mgc3RhdGUgc3R5bGluZyAqL1xuICBzdWNjZXNzPzogYm9vbGVhbjtcbiAgLyoqIEVycm9yIG1lc3NhZ2UgdG8gZGlzcGxheSAqL1xuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG4gIC8qKiBIZWxwIHRleHQgdG8gZGlzcGxheSAqL1xuICBoZWxwVGV4dD86IHN0cmluZztcbiAgXG4gIC8vIEFkdmFuY2VkIGZlYXR1cmVzXG4gIC8qKiBNYXhpbXVtIG51bWJlciBvZiBzZWxlY3RlZCBvcHRpb25zIHRvIHNob3cgaW4gbXVsdGlwbGUgbW9kZSAoMCA9IG5vIGxpbWl0KSAqL1xuICBtYXhPcHRpb25zVmlzaWJsZT86IG51bWJlcjtcbiAgLyoqIERyYXdzIGEgZmlsbGVkIHNlbGVjdCBzdHlsZSAqL1xuICBmaWxsZWQ/OiBib29sZWFuO1xuICAvKiogUGlsbC1zdHlsZSB3aXRoIHJvdW5kZWQgZWRnZXMgKi9cbiAgcGlsbD86IGJvb2xlYW47XG4gIC8qKiBVc2UgZml4ZWQgcG9zaXRpb25pbmcgdG8gcHJldmVudCBjbGlwcGluZyAqL1xuICBob2lzdD86IGJvb2xlYW47XG4gIC8qKiBQbGFjZW1lbnQgb2YgdGhlIGRyb3Bkb3duIG1lbnUgKi9cbiAgcGxhY2VtZW50PzogJ3RvcCcgfCAnYm90dG9tJztcbiAgXG4gIC8vIFZpcnR1YWwgc2Nyb2xsIGZvciBsYXJnZSBsaXN0c1xuICAvKiogRW5hYmxlIHZpcnR1YWwgc2Nyb2xsaW5nIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2Ugd2l0aCBtYW55IG9wdGlvbnMgKi9cbiAgZW5hYmxlVmlydHVhbFNjcm9sbD86IGJvb2xlYW47XG4gIFxuICAvLyBTZWFyY2ggY29uZmlndXJhdGlvblxuICAvKiogRGlzYWJsZSBsb2NhbCBzZWFyY2ggKHVzZSBmb3Igc2VydmVyLXNpZGUgc2VhcmNoKSAqL1xuICBkaXNhYmxlTG9jYWxTZWFyY2g/OiBib29sZWFuO1xuICBcbiAgLy8gVmFsaWRhdGlvblxuICAvKiogVmFsaWRhdGUgYmVmb3JlIHNhdmluZyAoZGVmYXVsdDogdHJ1ZSkgKi9cbiAgdmFsaWRhdGVPblNhdmU/OiBib29sZWFuO1xuICBcbiAgLy8gUG9ydGFsIG9wdGlvbnNcbiAgLyoqIEFwcGVuZCBkcm9wZG93biB0byBkb2N1bWVudCBib2R5IGluc3RlYWQgb2YgcGFyZW50ICovXG4gIHBvcnRhbD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ3VzdG9tIGVkaXRvciB0aGF0IHVzZXMgTmlsZVNlbGVjdCBjb21wb25lbnRcbiAqIEB0ZW1wbGF0ZSBUIFRoZSB2YWx1ZSB0eXBlIChzdHJpbmcgZm9yIHNpbmdsZSBzZWxlY3Rpb24sIHN0cmluZ1tdIGZvciBtdWx0aXBsZSlcbiAqL1xuZXhwb3J0IGNsYXNzIE5pbGVTZWxlY3RFZGl0b3I8VCA9IHN0cmluZz4gaW1wbGVtZW50cyBDZWxsRWRpdG9yPFQ+IHtcbiAgYWNjZXB0c0luaXRpYWxLZXlwcmVzcyA9IGZhbHNlO1xuICBcbiAgcHJpdmF0ZSBzZWxlY3Q/OiBhbnk7XG4gIHByaXZhdGUgZXZlbnRMaXN0ZW5lcnM6IEFycmF5PHsgZXZlbnQ6IHN0cmluZzsgaGFuZGxlcjogRXZlbnRMaXN0ZW5lciB9PiA9IFtdO1xuICBwcml2YXRlIG9wdGlvbnNTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgY3VycmVudE9wdGlvbnM6IChTZWxlY3RPcHRpb24gfCBzdHJpbmcpW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IE5pbGVTZWxlY3RFZGl0b3JPcHRpb25zKSB7XG4gICAgLy8gSGFuZGxlIE9ic2VydmFibGUgb3B0aW9uc1xuICAgIGlmIChpc09ic2VydmFibGUob3B0aW9ucy5vcHRpb25zKSkge1xuICAgICAgdGhpcy5vcHRpb25zU3Vic2NyaXB0aW9uID0gb3B0aW9ucy5vcHRpb25zLnN1YnNjcmliZShvcHRzID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50T3B0aW9ucyA9IG9wdHM7XG4gICAgICAgIC8vIElmIGVkaXRvciBpcyBhbHJlYWR5IGFjdGl2ZSwgdXBkYXRlIHRoZSBET01cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0KSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVPcHRpb25zKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTdGF0aWMgb3B0aW9uc1xuICAgICAgdGhpcy5jdXJyZW50T3B0aW9ucyA9IG9wdGlvbnMub3B0aW9ucyB8fCBbXTtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRPcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ05pbGVTZWxlY3RFZGl0b3I6IG9wdGlvbnMgYXJyYXkgaXMgZW1wdHknKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBlZGl0KGNvbnRleHQ6IENlbGxFZGl0b3JDb250ZXh0PFQ+KTogdm9pZCB7XG4gICAgaWYgKCFjb250ZXh0LmNvbnRhaW5lcikge1xuICAgICAgY29uc29sZS53YXJuKCdOaWxlU2VsZWN0RWRpdG9yIHJlcXVpcmVzIGEgY29udGFpbmVyIGVsZW1lbnQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgTmlsZVNlbGVjdCBjdXN0b20gZWxlbWVudCB1c2luZyBkb2N1bWVudC5jcmVhdGVFbGVtZW50XG4gICAgdGhpcy5zZWxlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCduaWxlLXNlbGVjdCcpO1xuICAgIHRoaXMuc2VsZWN0LmNsYXNzTmFtZSA9ICdzdC1jZWxsLWVkaXRvcic7XG4gICAgXG4gICAgLy8gQXBwbHkgaW5saW5lIHN0eWxlcyBmb3IgcHJvcGVyIGNlbGwgZml0dGluZ1xuICAgIHRoaXMuc2VsZWN0LnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgIHRoaXMuc2VsZWN0LnN0eWxlLmhlaWdodCA9ICdpbmhlcml0JztcbiAgICB0aGlzLnNlbGVjdC5zdHlsZS5ib3hTaXppbmcgPSAnYm9yZGVyLWJveCc7XG4gICAgXG4gICAgLy8gU2V0IGluaXRpYWwgdmFsdWVcbiAgICB0aGlzLnNldEluaXRpYWxWYWx1ZShjb250ZXh0LnZhbHVlKTtcblxuICAgIC8vIEFwcGx5IGFsbCBjb25maWd1cmF0aW9uIG9wdGlvbnNcbiAgICB0aGlzLmFwcGx5T3B0aW9ucygpO1xuXG4gICAgLy8gQ3JlYXRlIGFuZCBhcHBlbmQgb3B0aW9ucyB3aXRoIGN1cnJlbnQgb3B0aW9uc1xuICAgIHRoaXMuY3JlYXRlQW5kQXBwZW5kT3B0aW9ucyh0aGlzLmN1cnJlbnRPcHRpb25zKTtcblxuICAgIC8vIFNldCB1cCBldmVudCBsaXN0ZW5lcnNcbiAgICB0aGlzLnNldHVwRXZlbnRMaXN0ZW5lcnMoY29udGV4dCk7XG5cbiAgICAvLyBDbGVhciBjb250YWluZXIgYW5kIGFwcGVuZCBzZWxlY3RcbiAgICBjb250ZXh0LmNvbnRhaW5lci5pbm5lckhUTUwgPSAnJztcbiAgICBjb250ZXh0LmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLnNlbGVjdCk7XG5cbiAgICAvLyBGb2N1cyBhZnRlciByZW5kZXJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0Py5mb2N1cygpO1xuICAgICAgdGhpcy5zZWxlY3Q/LmNsaWNrKCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBpbml0aWFsIHZhbHVlIGZvciB0aGUgc2VsZWN0XG4gICAqL1xuICBwcml2YXRlIHNldEluaXRpYWxWYWx1ZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZWxlY3QpIHJldHVybjtcblxuICAgIGlmICh0aGlzLm9wdGlvbnMubXVsdGlwbGUpIHtcbiAgICAgIC8vIEhhbmRsZSBtdWx0aXBsZSBzZWxlY3Rpb24gLSB2YWx1ZSBzaG91bGQgYmUgYXJyYXlcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICB0aGlzLnNlbGVjdC52YWx1ZSA9IHZhbHVlO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgICB0aGlzLnNlbGVjdC52YWx1ZSA9IFtTdHJpbmcodmFsdWUpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0LnZhbHVlID0gW107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEhhbmRsZSBzaW5nbGUgc2VsZWN0aW9uXG4gICAgICB0aGlzLnNlbGVjdC52YWx1ZSA9IHZhbHVlID8gU3RyaW5nKHZhbHVlKSA6ICcnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSBhbGwgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHRoZSBOaWxlU2VsZWN0IGVsZW1lbnRcbiAgICovXG4gIHByaXZhdGUgYXBwbHlPcHRpb25zKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZWxlY3QpIHJldHVybjtcblxuICAgIC8vIEJhc2ljIG9wdGlvbnNcbiAgICBpZiAodGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyKSB7XG4gICAgICB0aGlzLnNlbGVjdC5wbGFjZWhvbGRlciA9IHRoaXMub3B0aW9ucy5wbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnNpemUpIHtcbiAgICAgIHRoaXMuc2VsZWN0LnNpemUgPSB0aGlzLm9wdGlvbnMuc2l6ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3Quc2l6ZSA9ICdzbWFsbCc7IC8vIERlZmF1bHQgZm9yIHRhYmxlIGNlbGxzXG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy5zZWxlY3QubXVsdGlwbGUgPSB0aGlzLm9wdGlvbnMubXVsdGlwbGU7XG4gICAgfVxuXG4gICAgLy8gQmVoYXZpb3Igb3B0aW9uc1xuICAgIGlmICh0aGlzLm9wdGlvbnMuY2xlYXJhYmxlKSB7XG4gICAgICB0aGlzLnNlbGVjdC5jbGVhcmFibGUgPSB0aGlzLm9wdGlvbnMuY2xlYXJhYmxlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0LmRpc2FibGVkID0gdGhpcy5vcHRpb25zLmRpc2FibGVkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMucmVxdWlyZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0LnJlcXVpcmVkID0gdGhpcy5vcHRpb25zLnJlcXVpcmVkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuc2VhcmNoRW5hYmxlZCkge1xuICAgICAgdGhpcy5zZWxlY3Quc2VhcmNoRW5hYmxlZCA9IHRoaXMub3B0aW9ucy5zZWFyY2hFbmFibGVkO1xuICAgIH1cblxuICAgIC8vIFZpc3VhbCBzdGF0ZXNcbiAgICBpZiAodGhpcy5vcHRpb25zLndhcm5pbmcpIHtcbiAgICAgIHRoaXMuc2VsZWN0Lndhcm5pbmcgPSB0aGlzLm9wdGlvbnMud2FybmluZztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmVycm9yKSB7XG4gICAgICB0aGlzLnNlbGVjdC5lcnJvciA9IHRoaXMub3B0aW9ucy5lcnJvcjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnN1Y2Nlc3MpIHtcbiAgICAgIHRoaXMuc2VsZWN0LnN1Y2Nlc3MgPSB0aGlzLm9wdGlvbnMuc3VjY2VzcztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmVycm9yTWVzc2FnZSkge1xuICAgICAgdGhpcy5zZWxlY3QuZXJyb3JNZXNzYWdlID0gdGhpcy5vcHRpb25zLmVycm9yTWVzc2FnZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmhlbHBUZXh0KSB7XG4gICAgICB0aGlzLnNlbGVjdC5oZWxwVGV4dCA9IHRoaXMub3B0aW9ucy5oZWxwVGV4dDtcbiAgICB9XG5cbiAgICAvLyBBZHZhbmNlZCBmZWF0dXJlc1xuICAgIGlmICh0aGlzLm9wdGlvbnMubWF4T3B0aW9uc1Zpc2libGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zZWxlY3QubWF4T3B0aW9uc1Zpc2libGUgPSB0aGlzLm9wdGlvbnMubWF4T3B0aW9uc1Zpc2libGU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5maWxsZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zZWxlY3QuZmlsbGVkID0gdGhpcy5vcHRpb25zLmZpbGxlZDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnBpbGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0LnBpbGwgPSB0aGlzLm9wdGlvbnMucGlsbDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmhvaXN0KSB7XG4gICAgICB0aGlzLnNlbGVjdC5ob2lzdCA9IHRoaXMub3B0aW9ucy5ob2lzdDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnBsYWNlbWVudCkge1xuICAgICAgdGhpcy5zZWxlY3QucGxhY2VtZW50ID0gdGhpcy5vcHRpb25zLnBsYWNlbWVudDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmVuYWJsZVZpcnR1YWxTY3JvbGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0LmVuYWJsZVZpcnR1YWxTY3JvbGwgPSB0aGlzLm9wdGlvbnMuZW5hYmxlVmlydHVhbFNjcm9sbDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmRpc2FibGVMb2NhbFNlYXJjaCkge1xuICAgICAgdGhpcy5zZWxlY3QuZGlzYWJsZUxvY2FsU2VhcmNoID0gdGhpcy5vcHRpb25zLmRpc2FibGVMb2NhbFNlYXJjaDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnBvcnRhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnNlbGVjdC5wb3J0YWwgPSB0aGlzLm9wdGlvbnMucG9ydGFsO1xuICAgIH1cblxuICAgIC8vIFByZXZlbnQgd2lkdGggc3luY2luZyBpc3N1ZXMgaW4gdGFibGUgY2VsbHNcbiAgICB0aGlzLnNlbGVjdC5ub1dpZHRoU3luYyA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIG9wdGlvbnMgZHluYW1pY2FsbHkgd2hpbGUgZWRpdG9yIGlzIGFjdGl2ZVxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVPcHRpb25zKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZWxlY3QpIHJldHVybjtcblxuICAgIC8vIENsZWFyIGV4aXN0aW5nIG9wdGlvbnNcbiAgICB3aGlsZSAodGhpcy5zZWxlY3QuZmlyc3RDaGlsZCkge1xuICAgICAgdGhpcy5zZWxlY3QucmVtb3ZlQ2hpbGQodGhpcy5zZWxlY3QuZmlyc3RDaGlsZCk7XG4gICAgfVxuXG4gICAgLy8gUmUtYXBwZW5kIHdpdGggbmV3IG9wdGlvbnNcbiAgICB0aGlzLmNyZWF0ZUFuZEFwcGVuZE9wdGlvbnModGhpcy5jdXJyZW50T3B0aW9ucyk7XG4gICAgXG4gICAgLy8gVHJpZ2dlciB1cGRhdGUgb24gdGhlIHdlYiBjb21wb25lbnRcbiAgICBpZiAodGhpcy5zZWxlY3QucmVxdWVzdFVwZGF0ZSkge1xuICAgICAgdGhpcy5zZWxlY3QucmVxdWVzdFVwZGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgTmlsZU9wdGlvbiBlbGVtZW50cyBhbmQgYXBwZW5kIHRoZW0gdG8gdGhlIHNlbGVjdFxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIHRvIHJlbmRlclxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVBbmRBcHBlbmRPcHRpb25zKG9wdGlvbnM6IChTZWxlY3RPcHRpb24gfCBzdHJpbmcpW10pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0KSByZXR1cm47XG5cbiAgICBvcHRpb25zLmZvckVhY2gob3B0ID0+IHtcbiAgICAgIGNvbnN0IG5pbGVPcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCduaWxlLW9wdGlvbicpIGFzIGFueTtcblxuICAgICAgLy8gQXV0by1kZXRlY3QgZm9ybWF0OiBzdHJpbmcgb3IgU2VsZWN0T3B0aW9uIG9iamVjdFxuICAgICAgaWYgKHR5cGVvZiBvcHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG5pbGVPcHRpb24udmFsdWUgPSBvcHQ7XG4gICAgICAgIG5pbGVPcHRpb24uc2V0QXR0cmlidXRlKCd2YWx1ZScsIG9wdCk7XG4gICAgICAgIG5pbGVPcHRpb24udGV4dENvbnRlbnQgPSBvcHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuaWxlT3B0aW9uLnZhbHVlID0gb3B0LnZhbHVlO1xuICAgICAgICBuaWxlT3B0aW9uLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBvcHQudmFsdWUpO1xuICAgICAgICBuaWxlT3B0aW9uLnRleHRDb250ZW50ID0gb3B0LmxhYmVsO1xuICAgICAgICBcbiAgICAgICAgaWYgKG9wdC5kaXNhYmxlZCkge1xuICAgICAgICAgIG5pbGVPcHRpb24uZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIG5pbGVPcHRpb24uc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsICd0cnVlJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBIYW5kbGUgcHJlZml4IGlmIHByb3ZpZGVkIChjb3VsZCBiZSBpY29uIG5hbWUgb3IgY29udGVudClcbiAgICAgICAgaWYgKG9wdC5wcmVmaXgpIHtcbiAgICAgICAgICAvLyBuaWxlT3B0aW9uLnNldEF0dHJpYnV0ZSgnc2xvdCcsICdwcmVmaXgnKTtcbiAgICAgICAgICAvLyBuaWxlT3B0aW9uLmlubmVySFRNTCA9IGA8bmlsZS1pY29uIG5hbWU9XCIke29wdC5wcmVmaXh9XCI+PC9uaWxlLWljb24+YDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLnNlbGVjdCEuYXBwZW5kQ2hpbGQobmlsZU9wdGlvbik7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHVwIGFsbCBldmVudCBsaXN0ZW5lcnMgd2l0aCBwcm9wZXIgY2xlYW51cCB0cmFja2luZ1xuICAgKi9cbiAgcHJpdmF0ZSBzZXR1cEV2ZW50TGlzdGVuZXJzKGNvbnRleHQ6IENlbGxFZGl0b3JDb250ZXh0PFQ+KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdCkgcmV0dXJuO1xuXG4gICAgY29uc3QgdmFsaWRhdGVPblNhdmUgPSB0aGlzLm9wdGlvbnMudmFsaWRhdGVPblNhdmUgIT09IGZhbHNlO1xuXG4gICAgLy8gSGFuZGxlIGtleWJvYXJkIGV2ZW50cyAoa2V5ZG93biBpcyBub3QgcmVwbGFjZWQgYnkgY3VzdG9tIGV2ZW50cylcbiAgICBjb25zdCBrZXlkb3duSGFuZGxlciA9IChlOiBFdmVudCkgPT4ge1xuICAgICAgY29uc3Qga2V5RXZlbnQgPSBlIGFzIEtleWJvYXJkRXZlbnQ7XG4gICAgICBpZiAoa2V5RXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICBrZXlFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBrZXlFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgY29udGV4dC5vbkNhbmNlbCgpO1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5zZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGtleWRvd25IYW5kbGVyKTtcbiAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLnB1c2goeyBldmVudDogJ2tleWRvd24nLCBoYW5kbGVyOiBrZXlkb3duSGFuZGxlciB9KTtcblxuICAgIC8vIFVzZSBuaWxlLWNoYW5nZSBjdXN0b20gZXZlbnQgYXMgcHJpbWFyeSBzYXZlIHRyaWdnZXJcbiAgICBjb25zdCBjaGFuZ2VIYW5kbGVyID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBjdXN0b21FdmVudCA9IGUgYXMgQ3VzdG9tRXZlbnQ7XG4gICAgICBpZiAodmFsaWRhdGVPblNhdmUgJiYgIXRoaXMuc2VsZWN0Py5jaGVja1ZhbGlkaXR5KCkpIHtcbiAgICAgICAgdGhpcy5zZWxlY3Q/LnJlcG9ydFZhbGlkaXR5KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnRleHQub25TYXZlKHRoaXMucGFyc2VWYWx1ZShjdXN0b21FdmVudC5kZXRhaWwudmFsdWUpKTtcbiAgICB9O1xuICAgIHRoaXMuc2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoJ25pbGUtY2hhbmdlJywgY2hhbmdlSGFuZGxlcik7XG4gICAgdGhpcy5ldmVudExpc3RlbmVycy5wdXNoKHsgZXZlbnQ6ICduaWxlLWNoYW5nZScsIGhhbmRsZXI6IGNoYW5nZUhhbmRsZXIgfSk7XG5cbiAgICAvLyBIYW5kbGUgYmx1ciBhcyBzZWNvbmRhcnkgc2F2ZSB0cmlnZ2VyXG4gICAgY29uc3QgYmx1ckhhbmRsZXIgPSAoZTogRXZlbnQpID0+IHtcbiAgICAgIGlmICh2YWxpZGF0ZU9uU2F2ZSAmJiAhdGhpcy5zZWxlY3Q/LmNoZWNrVmFsaWRpdHkoKSkge1xuICAgICAgICB0aGlzLnNlbGVjdD8ucmVwb3J0VmFsaWRpdHkoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLy8gY29udGV4dC5vblNhdmUodGhpcy5nZXRDdXJyZW50VmFsdWUoKSk7XG4gICAgfTtcbiAgICB0aGlzLnNlbGVjdC5hZGRFdmVudExpc3RlbmVyKCduaWxlLWJsdXInLCBibHVySGFuZGxlcik7XG4gICAgdGhpcy5ldmVudExpc3RlbmVycy5wdXNoKHsgZXZlbnQ6ICduaWxlLWJsdXInLCBoYW5kbGVyOiBibHVySGFuZGxlciB9KTtcblxuICAgIC8vIEhhbmRsZSBjbGVhciBidXR0b24gaWYgZW5hYmxlZFxuICAgIGlmICh0aGlzLm9wdGlvbnMuY2xlYXJhYmxlKSB7XG4gICAgICBjb25zdCBjbGVhckhhbmRsZXIgPSAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgY29udGV4dC5vblNhdmUodGhpcy5wYXJzZVZhbHVlKHRoaXMub3B0aW9ucy5tdWx0aXBsZSA/IFtdIDogJycpKTtcbiAgICAgIH07XG4gICAgICB0aGlzLnNlbGVjdC5hZGRFdmVudExpc3RlbmVyKCduaWxlLWNsZWFyJywgY2xlYXJIYW5kbGVyKTtcbiAgICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnMucHVzaCh7IGV2ZW50OiAnbmlsZS1jbGVhcicsIGhhbmRsZXI6IGNsZWFySGFuZGxlciB9KTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgc2VhcmNoIGZvciBzZXJ2ZXItc2lkZSBzZWFyY2ggc2NlbmFyaW9zXG4gICAgaWYgKHRoaXMub3B0aW9ucy5kaXNhYmxlTG9jYWxTZWFyY2gpIHtcbiAgICAgIGNvbnN0IHNlYXJjaEhhbmRsZXIgPSAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgY3VzdG9tRXZlbnQgPSBlIGFzIEN1c3RvbUV2ZW50O1xuICAgICAgICAvLyBFbWl0IHNlYXJjaCBxdWVyeSB0aHJvdWdoIG9uQ2hhbmdlIGZvciBleHRlcm5hbCBoYW5kbGluZ1xuICAgICAgICBjb250ZXh0Lm9uQ2hhbmdlKGN1c3RvbUV2ZW50LmRldGFpbCBhcyBUKTtcbiAgICAgIH07XG4gICAgICB0aGlzLnNlbGVjdC5hZGRFdmVudExpc3RlbmVyKCduaWxlLXNlYXJjaCcsIHNlYXJjaEhhbmRsZXIpO1xuICAgICAgdGhpcy5ldmVudExpc3RlbmVycy5wdXNoKHsgZXZlbnQ6ICduaWxlLXNlYXJjaCcsIGhhbmRsZXI6IHNlYXJjaEhhbmRsZXIgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIHZhbHVlIGJhc2VkIG9uIHNlbGVjdGlvbiBtb2RlXG4gICAqL1xuICBwcml2YXRlIHBhcnNlVmFsdWUodmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKTogVCB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5tdWx0aXBsZSkge1xuICAgICAgLy8gRW5zdXJlIGFycmF5IGZvciBtdWx0aXBsZSBzZWxlY3Rpb25cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgYXMgdW5rbm93biBhcyBUO1xuICAgICAgfVxuICAgICAgcmV0dXJuICh2YWx1ZSA/IFt2YWx1ZV0gOiBbXSkgYXMgdW5rbm93biBhcyBUO1xuICAgIH1cbiAgICBcbiAgICAvLyBTaW5nbGUgc2VsZWN0aW9uIC0gcmV0dXJuIHN0cmluZ1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgcmV0dXJuICh2YWx1ZS5sZW5ndGggPiAwID8gdmFsdWVbMF0gOiAnJykgYXMgdW5rbm93biBhcyBUO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWUgYXMgdW5rbm93biBhcyBUO1xuICB9XG5cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAvLyBVbnN1YnNjcmliZSBmcm9tIG9wdGlvbnMgT2JzZXJ2YWJsZVxuICAgIGlmICh0aGlzLm9wdGlvbnNTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMub3B0aW9uc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5vcHRpb25zU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBcbiAgICAvLyBSZW1vdmUgYWxsIGV2ZW50IGxpc3RlbmVyc1xuICAgIGlmICh0aGlzLnNlbGVjdCkge1xuICAgICAgdGhpcy5ldmVudExpc3RlbmVycy5mb3JFYWNoKCh7IGV2ZW50LCBoYW5kbGVyIH0pID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3Q/LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmV2ZW50TGlzdGVuZXJzID0gW107XG4gICAgICBcbiAgICAgIHRoaXMuc2VsZWN0LnJlbW92ZSgpO1xuICAgICAgdGhpcy5zZWxlY3QgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3Q/LmZvY3VzKCk7XG4gIH1cblxuICBnZXRDdXJyZW50VmFsdWUoKTogVCB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdCkge1xuICAgICAgcmV0dXJuICh0aGlzLm9wdGlvbnMubXVsdGlwbGUgPyBbXSA6ICcnKSBhcyB1bmtub3duIGFzIFQ7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5zZWxlY3QudmFsdWU7XG4gICAgXG4gICAgLy8gSGFuZGxlIG11bHRpcGxlIHNlbGVjdGlvblxuICAgIGlmICh0aGlzLm9wdGlvbnMubXVsdGlwbGUpIHtcbiAgICAgIHJldHVybiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV0pIGFzIHVua25vd24gYXMgVDtcbiAgICB9XG4gICAgXG4gICAgLy8gSGFuZGxlIHNpbmdsZSBzZWxlY3Rpb25cbiAgICByZXR1cm4gKEFycmF5LmlzQXJyYXkodmFsdWUpID8gKHZhbHVlLmxlbmd0aCA+IDAgPyB2YWx1ZVswXSA6ICcnKSA6IHZhbHVlKSBhcyB1bmtub3duIGFzIFQ7XG4gIH1cbn1cbiJdfQ==