@elderbyte/ngx-starter 13.8.0 → 13.8.1

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.
@@ -10,6 +10,7 @@ import { SortUtil } from '../../utils/sort-util';
10
10
  import { isContinuableDataSource, isListDataSource, isPagedDataSource } from '../datasource/data-source';
11
11
  import { DelegateDataSource } from '../datasource/fetcher/delegate-data-source';
12
12
  import { AutoStartSpec, DataContextAutoStarter } from './data-context-auto-starter';
13
+ import { FilterUtil } from '../../utils/filter-util';
13
14
  /**
14
15
  * Provides the ability to build a IDataContext<T>.
15
16
  */
@@ -135,12 +136,12 @@ export class DataContextBuilder {
135
136
  * *
136
137
  **************************************************************************/
137
138
  buildLocal(items, idProperty) {
138
- return this.build(LocalListDataSource.from(items, idProperty));
139
+ return this.build(LocalListDataSource.from(items, idProperty, this._localSort, FilterUtil.filterData));
139
140
  }
140
141
  buildLocalActivePaged(data, idProperty) {
141
142
  this._skipLocalSort = true;
142
143
  this.activePaged();
143
- return this.build(LocalPagedDataSource.from(data, idProperty, this._localSort));
144
+ return this.build(LocalPagedDataSource.from(data, idProperty, this._localSort, FilterUtil.filterData));
144
145
  }
145
146
  /***************************************************************************
146
147
  * *
@@ -242,4 +243,4 @@ export class DataContextBuilder {
242
243
  return dc;
243
244
  }
244
245
  }
245
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1jb250ZXh0LWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21tb24vZGF0YS9kYXRhLWNvbnRleHQvZGF0YS1jb250ZXh0LWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDN0UsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRWpFLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBRTdFLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBQ2pGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBS0wsdUJBQXVCLEVBQ3ZCLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDbEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUM5RSxPQUFPLEVBQUMsYUFBYSxFQUFFLHNCQUFzQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFFbEY7O0dBRUc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBaUM3Qjs7OztnRkFJNEU7SUFFNUU7UUFyQ0E7Ozs7b0ZBSTRFO1FBRTNELFdBQU0sR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FB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QUNKLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxrQkFBNkM7UUFDMUUsT0FBTyxJQUFJLDJCQUEyQixDQUNwQyxrQkFBa0IsRUFDbEIsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQUM7SUFDSixDQUFDO0lBRU8sb0JBQW9CLENBQUMsVUFBK0I7UUFDMUQsT0FBTyxJQUFJLHFCQUFxQixDQUM5QixVQUFVLEVBQ1YsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FDN0MsQ0FBQztJQUNKLENBQUM7SUFFTywwQkFBMEIsQ0FBNkIsRUFBTSxFQUFFLFVBQTRCO1FBQ2pHLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQzlCLE1BQU0sT0FBTyxHQUFHLElBQUksNkJBQTZCLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ25FO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRU8seUJBQXlCLENBQTZCLEVBQU0sRUFBRSxhQUE0QjtRQUNoRyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsK0NBQStDLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3hGLE1BQU0sT0FBTyxHQUFHLElBQUksc0JBQXNCLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1NBQy9EO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RhdGFDb250ZXh0Q29udGludWFibGVQYWdlZH0gZnJvbSAnLi9kYXRhLWNvbnRleHQtY29udGludWFibGUtcGFnZWQnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge0RhdGFDb250ZXh0U2ltcGxlfSBmcm9tICcuL2RhdGEtY29udGV4dC1zaW1wbGUnO1xuaW1wb3J0IHtEYXRhQ29udGV4dEFjdGl2ZVBhZ2V9IGZyb20gJy4vZGF0YS1jb250ZXh0LWFjdGl2ZS1wYWdlJztcbmltcG9ydCB7U29ydH0gZnJvbSAnLi4vc29ydCc7XG5pbXBvcnQge0RhdGFDb250ZXh0Q29udGludWFibGVUb2tlbn0gZnJvbSAnLi9kYXRhLWNvbnRleHQtY29udGludWFibGUtdG9rZW4nO1xuaW1wb3J0IHtJRGF0YUNvbnRleHQsIElEYXRhQ29udGV4dEFjdGl2ZVBhZ2UsIElEYXRhQ29udGV4dENvbnRpbnVhYmxlfSBmcm9tICcuL2RhdGEtY29udGV4dCc7XG5pbXBvcnQge0RhdGFDb250ZXh0U291cmNlQXV0b1JlbG9hZGVyfSBmcm9tICcuL2RhdGEtY29udGV4dC1zb3VyY2UtYXV0by1yZWxvYWRlcic7XG5pbXBvcnQge0xvY2FsUGFnZWREYXRhU291cmNlfSBmcm9tICcuLi9kYXRhc291cmNlL2xvY2FsL2xvY2FsLXBhZ2VkLWRhdGEtc291cmNlJztcbmltcG9ydCB7TG9jYWxMaXN0RGF0YVNvdXJjZX0gZnJvbSAnLi4vZGF0YXNvdXJjZS9sb2NhbC9sb2NhbC1saXN0LWRhdGEtc291cmNlJztcbmltcG9ydCB7U29ydFV0aWx9IGZyb20gJy4uLy4uL3V0aWxzL3NvcnQtdXRpbCc7XG5pbXBvcnQge1xuICBJQ29udGludWFibGVEYXRhU291cmNlLFxuICBJRGF0YVNvdXJjZSxcbiAgSUxpc3REYXRhU291cmNlLFxuICBJUGFnZWREYXRhU291cmNlLFxuICBpc0NvbnRpbnVhYmxlRGF0YVNvdXJjZSxcbiAgaXNMaXN0RGF0YVNvdXJjZSxcbiAgaXNQYWdlZERhdGFTb3VyY2Vcbn0gZnJvbSAnLi4vZGF0YXNvdXJjZS9kYXRhLXNvdXJjZSc7XG5pbXBvcnQge0RlbGVnYXRlRGF0YVNvdXJjZX0gZnJvbSAnLi4vZGF0YXNvdXJjZS9mZXRjaGVyL2RlbGVnYXRlLWRhdGEtc291cmNlJztcbmltcG9ydCB7QXV0b1N0YXJ0U3BlYywgRGF0YUNvbnRleHRBdXRvU3RhcnRlcn0gZnJvbSAnLi9kYXRhLWNvbnRleHQtYXV0by1zdGFydGVyJztcblxuLyoqXG4gKiBQcm92aWRlcyB0aGUgYWJpbGl0eSB0byBidWlsZCBhIElEYXRhQ29udGV4dDxUPi5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFDb250ZXh0QnVpbGRlcjxUPiB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIHByaXZhdGUgX2luZGV4Rm4/OiAoKGl0ZW06IFQpID0+IGFueSk7XG4gIHByaXZhdGUgX2xvY2FsQXBwbHk/OiAoKGRhdGE6IFRbXSkgPT4gVFtdKTtcbiAgcHJpdmF0ZSBfbG9jYWxTb3J0PzogKChkYXRhOiBUW10sIHNvcnRzOiBTb3J0W10pID0+IFRbXSk7XG4gIHByaXZhdGUgX3NraXBMb2NhbFNvcnQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcGFnZVNpemUgPSA1MDtcbiAgcHJpdmF0ZSBfcmVsb2FkT25Mb2NhbENoYW5nZXMgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfYWN0aXZlUGFnZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfYXV0b1N0YXJ0U3BlYz86IEF1dG9TdGFydFNwZWM7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFN0YXRpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgRGF0YUNvbnRleHRCdWlsZGVyLlxuICAgKiBAcmV0dXJucyBBIG5ldyBEYXRhQ29udGV4dEJ1aWxkZXIgZm9yIHRoZSBnaXZlbiBkYXRhIHR5cGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHN0YXJ0PFQ+KCk6IERhdGFDb250ZXh0QnVpbGRlcjxUPiB7XG4gICAgcmV0dXJuIG5ldyBEYXRhQ29udGV4dEJ1aWxkZXI8VD4oKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGluZGV4IGZ1bmN0aW9uIHdoZXJlIGVhY2ggZWxlbWVudCB3aWxsIGJlIGluZGV4ZWQgYnkuXG4gICAqIElmIHlvdSBoYXZlIGNvbmZpZ3VyZWQgdGhpcywgeW91IGNhbiB1c2UgdGhlIGZpbmRCeUluZGV4KGtleSkgb24gdGhlIGRhdGEtY29udGV4dC5cbiAgICovXG4gIHB1YmxpYyBpbmRleEJ5KGluZGV4Rm4/OiAoKGl0ZW06IFQpID0+IGFueSkpOiB0aGlzIHtcbiAgICB0aGlzLl9pbmRleEZuID0gaW5kZXhGbjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZGVzaXJlZCBzaXplIG9mIGEgcGFnZS9jaHVuayB3aGVuIGxvYWRpbmcgZGF0YS5cbiAgICogTm90ZSB0aGF0IGNvbnRpbnVhYmxlIGFwaXMgbWlnaHQganVzdCB0YWtlIHRoaXMgYXMgYSB3aXNoIG9yIGV2ZW4gY29tcGxldGVseSBpZ25vcmUgdGhpcyBwYXJhbS5cbiAgICovXG4gIHB1YmxpYyBwYWdlU2l6ZShzaXplOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLl9wYWdlU2l6ZSA9IHNpemU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU29ydCB0aGUgZGF0YSBjb250ZXh0IGxvY2FsbHkuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGlzIG1pZ2h0IGJlIGEgY29zdGx5IG9wZXJhdGlvbiB3aGVuIHRoZXJlIGFyZSBhIGxvdCBvZiBlbGVtZW50cyBwcmVzZW50LlxuICAgKiBQcmVmZXIgc2VydmVyIHNpZGUgc29ydGluZyBpZiBwb3NzaWJsZS5cbiAgICovXG4gIHB1YmxpYyBsb2NhbFNvcnQobG9jYWxTb3J0PzogKGRhdGE6IFRbXSwgc29ydHM6IFNvcnRbXSkgPT4gVFtdKTogdGhpcyB7XG4gICAgdGhpcy5fbG9jYWxTb3J0ID0gbG9jYWxTb3J0ID8gbG9jYWxTb3J0IDogU29ydFV0aWwuc29ydERhdGE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlIGFjdGl2ZSBwYWdpbmcgKGluIGNvbnRyYXN0IHRvIHRoZSBpbmZpbml0ZSBsb2FkKSBpbiB0aGUgZGF0YSBjb250ZXh0LlxuICAgKiBPbmx5IHN1cHBvcnRlZCBpZiB0aGUgdW5kZXJseWluZyBkYXRhc291cmNlIHN1cHBvcnRzIHBhZ2luYXRpb24uXG4gICAqL1xuICBwdWJsaWMgYWN0aXZlUGFnZWQoKTogdGhpcyB7XG4gICAgdGhpcy5fYWN0aXZlUGFnZWQgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBlYWNoIGVsZW1lbnQgd2hpY2ggaXMgYWRkZWQgdG8gdGhlIGRhdGFjb250ZXh0LCBhcHBseSB0aGUgZ2l2ZW4gZnVuY3Rpb24uXG4gICAqL1xuICBwdWJsaWMgbG9jYWxBcHBseShsb2NhbEFwcGx5OiAoKGRhdGE6IFRbXSkgPT4gVFtdKSk6IHRoaXMge1xuICAgIHRoaXMuX2xvY2FsQXBwbHkgPSBsb2NhbEFwcGx5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uIGEgbG9jYWwgY2hhbmdlIGV2ZW50LCBhdXRvbWF0aWNhbGx5IHJlbG9hZCBkYXRhIGluIHRoZSBkYXRhLWNvbnRleHQuXG4gICAqIFRoaXMgbWVhbnMgd2hlbmV2ZXIgdGhlcmUgd2FzIGFuIG1vZGlmeSBvcGVyYXRpb24gb24gdGhlIHJlc3QgY2xpZW50LFxuICAgKiBzdWNoIGFzIFVwZGF0ZSwgRGVsZXRlIG9yIENyZWF0ZSwgdGhlIGRhdGEgd2lsbCBiZSByZWxvYWRlZC5cbiAgICovXG4gIHB1YmxpYyByZWxvYWRPbkxvY2FsQ2hhbmdlcygpOiB0aGlzIHtcbiAgICB0aGlzLl9yZWxvYWRPbkxvY2FsQ2hhbmdlcyA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgYXV0b1N0YXJ0QXNhcChzb3J0PzogU29ydFtdKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYXV0b1N0YXJ0T24oXG4gICAgICBBdXRvU3RhcnRTcGVjLmFzYXAoc29ydClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGF1dG9TdGFydE9uRmlsdGVycyhmaWx0ZXJzOiBBcnJheTxzdHJpbmdbXT4sIHNvcnQ/OiBTb3J0W10pOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5hdXRvU3RhcnRPbihcbiAgICAgIEF1dG9TdGFydFNwZWMucmVxdWlyZUZpbHRlcnMoZmlsdGVycywgc29ydClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGF1dG9TdGFydE9uRmlsdGVyc0FsbChmaWx0ZXJzOiBzdHJpbmdbXSwgc29ydD86IFNvcnRbXSk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLmF1dG9TdGFydE9uKFxuICAgICAgQXV0b1N0YXJ0U3BlYy5yZXF1aXJlRmlsdGVyc0FsbChmaWx0ZXJzLCBzb3J0KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYXV0b1N0YXJ0T25GaWx0ZXJzQW55KGZpbHRlcnM6IHN0cmluZ1tdLCBzb3J0PzogU29ydFtdKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYXV0b1N0YXJ0T24oXG4gICAgICBBdXRvU3RhcnRTcGVjLnJlcXVpcmVGaWx0ZXJzQW55KGZpbHRlcnMsIHNvcnQpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhdXRvU3RhcnRPbihzcGVjOiBBdXRvU3RhcnRTcGVjKTogdGhpcyB7XG4gICAgdGhpcy5fYXV0b1N0YXJ0U3BlYyA9IHNwZWM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRGF0YVNvdXJjZSBCdWlsZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogQnVpbGQgYSBuZXcgRGF0YUNvbnRleHQgZnJvbSB0aGUgZ2l2ZW4gRGF0YVNvdXJjZS5cbiAgICpcbiAgICogQ29tbW9uIERhdGFTb3VyY2VzIGFyZSBSZXN0Q2xpZW50LCBMb2NhbExpc3REYXRhU291cmNlIGFuZCBEZWxlZ2F0ZURhdGFTb3VyY2UuXG4gICAqXG4gICAqIEBwYXJhbSBkc1xuICAgKi9cbiAgcHVibGljIGJ1aWxkKGRzOiBJRGF0YVNvdXJjZTxUPik6IElEYXRhQ29udGV4dDxUPiB7XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRGcm9tU291cmNlKGRzKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBMb2NhbCBEYXRhIEJ1aWxkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBidWlsZExvY2FsKGl0ZW1zOiBUW10sIGlkUHJvcGVydHk/OiBzdHJpbmcpOiBJRGF0YUNvbnRleHQ8VD4ge1xuICAgIHJldHVybiB0aGlzLmJ1aWxkKFxuICAgICAgTG9jYWxMaXN0RGF0YVNvdXJjZS5mcm9tKGl0ZW1zLCBpZFByb3BlcnR5KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYnVpbGRMb2NhbEFjdGl2ZVBhZ2VkKFxuICAgIGRhdGE6IFRbXSxcbiAgICBpZFByb3BlcnR5Pzogc3RyaW5nXG4gICk6IElEYXRhQ29udGV4dEFjdGl2ZVBhZ2U8VD4ge1xuICAgIHRoaXMuX3NraXBMb2NhbFNvcnQgPSB0cnVlO1xuICAgIHRoaXMuYWN0aXZlUGFnZWQoKTtcbiAgICByZXR1cm4gPElEYXRhQ29udGV4dEFjdGl2ZVBhZ2U8VD4+dGhpcy5idWlsZChcbiAgICAgIExvY2FsUGFnZWREYXRhU291cmNlLmZyb20oZGF0YSwgaWRQcm9wZXJ0eSwgdGhpcy5fbG9jYWxTb3J0KVxuICAgICk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRW1wdHkgRGF0YSBCdWlsZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgYnVpbGRFbXB0eSgpOiBJRGF0YUNvbnRleHQ8VD4ge1xuICAgIHJldHVybiB0aGlzLmJ1aWxkKFxuICAgICAgRGVsZWdhdGVEYXRhU291cmNlLmVtcHR5TGlzdEZldGNoZXIoKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYnVpbGRFbXB0eUNvbnRpbnVhYmxlKCk6IElEYXRhQ29udGV4dENvbnRpbnVhYmxlPFQ+IHtcbiAgICByZXR1cm4gPElEYXRhQ29udGV4dENvbnRpbnVhYmxlPFQ+PnRoaXMuYnVpbGQoXG4gICAgICBEZWxlZ2F0ZURhdGFTb3VyY2UuZW1wdHlDb250aW51YWJsZUZldGNoZXIoKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYnVpbGRFbXB0eUFjdGl2ZVBhZ2VkKCk6IElEYXRhQ29udGV4dEFjdGl2ZVBhZ2U8VD4ge1xuICAgIHJldHVybiA8SURhdGFDb250ZXh0QWN0aXZlUGFnZTxUPj50aGlzXG4gICAgICAuYWN0aXZlUGFnZWQoKVxuICAgICAgLmJ1aWxkKFxuICAgICAgICBEZWxlZ2F0ZURhdGFTb3VyY2UuZW1wdHlQYWdlRmV0Y2hlcigpLFxuICAgICAgKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBMZWdhY3kgQ2xpZW50IEJ1aWxkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBTd2l0Y2ggdG8gYnVpbGQoZGF0YVNvdXJjZSlcbiAgICovXG4gIHB1YmxpYyBidWlsZENsaWVudChcbiAgICBkYXRhU291cmNlOiBJTGlzdERhdGFTb3VyY2U8VD5cbiAgKTogSURhdGFDb250ZXh0PFQ+IHtcbiAgICByZXR1cm4gdGhpcy5idWlsZChkYXRhU291cmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBTd2l0Y2ggdG8gYnVpbGQoZGF0YVNvdXJjZSlcbiAgICovXG4gIHB1YmxpYyBidWlsZFBhZ2VkQ2xpZW50KFxuICAgIGRhdGFTb3VyY2U6IElQYWdlZERhdGFTb3VyY2U8VD5cbiAgKTogSURhdGFDb250ZXh0Q29udGludWFibGU8VD4ge1xuICAgIHJldHVybiA8SURhdGFDb250ZXh0Q29udGludWFibGU8VD4+dGhpcy5idWlsZChkYXRhU291cmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBTd2l0Y2ggdG8gYnVpbGQoZGF0YVNvdXJjZSlcbiAgICovXG4gIHB1YmxpYyBidWlsZENvbnRpbnVhdGlvblRva2VuQ2xpZW50KFxuICAgIGRhdGFTb3VyY2U6IElDb250aW51YWJsZURhdGFTb3VyY2U8VD5cbiAgKTogSURhdGFDb250ZXh0Q29udGludWFibGU8VD4ge1xuICAgIHJldHVybiA8SURhdGFDb250ZXh0Q29udGludWFibGU8VD4+dGhpcy5idWlsZChkYXRhU291cmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBTd2l0Y2ggdG8gLmFjdGl2ZVBhZ2VkKCkuYnVpbGQoZGF0YVNvdXJjZSlcbiAgICovXG4gIHB1YmxpYyBidWlsZEFjdGl2ZVBhZ2VkQ2xpZW50KFxuICAgIGRhdGFTb3VyY2U6IElQYWdlZERhdGFTb3VyY2U8VD5cbiAgKTogSURhdGFDb250ZXh0QWN0aXZlUGFnZTxUPiB7XG4gICAgcmV0dXJuIDxJRGF0YUNvbnRleHRBY3RpdmVQYWdlPFQ+PnRoaXMuYWN0aXZlUGFnZWQoKS5idWlsZChkYXRhU291cmNlKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgYnVpbGRGcm9tU291cmNlKGRzOiBJRGF0YVNvdXJjZTxUPik6IElEYXRhQ29udGV4dDxUPiB7XG5cbiAgICBsZXQgZGF0YUNvbnRleHQ6IElEYXRhQ29udGV4dDxUPjtcblxuICAgIGlmIChpc0xpc3REYXRhU291cmNlKGRzKSkge1xuICAgICAgZGF0YUNvbnRleHQgPSB0aGlzLmZyb21MaXN0U291cmNlKGRzKTtcbiAgICB9IGVsc2UgaWYgKGlzUGFnZWREYXRhU291cmNlKGRzKSkge1xuICAgICAgaWYgKHRoaXMuX2FjdGl2ZVBhZ2VkKSB7XG4gICAgICAgIGRhdGFDb250ZXh0ID0gdGhpcy5mcm9tQWN0aXZlUGFnZVNvdXJjZShkcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhQ29udGV4dCA9IHRoaXMuZnJvbVBhZ2VTb3VyY2UoZHMpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNDb250aW51YWJsZURhdGFTb3VyY2UoZHMpKSB7XG4gICAgICBkYXRhQ29udGV4dCA9IHRoaXMuZnJvbUNvbnRpbnVhdGlvblNvdXJjZShkcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgSURhdGFTb3VyY2UgdHlwZTogJyArIHR5cGVvZiAoZHMpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fYXV0b1N0YXJ0U3BlYykge1xuICAgICAgdGhpcy5zZXR1cERhdGFDb250ZXh0QXV0b1N0YXJ0KGRhdGFDb250ZXh0LCB0aGlzLl9hdXRvU3RhcnRTcGVjKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zZXR1cERhdGFDb250ZXh0QXV0b1JlbG9hZChkYXRhQ29udGV4dCwgZHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBmcm9tTGlzdFNvdXJjZShsaXN0U291cmNlOiBJTGlzdERhdGFTb3VyY2U8VD4pOiBJRGF0YUNvbnRleHQ8VD4ge1xuICAgIHJldHVybiBuZXcgRGF0YUNvbnRleHRTaW1wbGU8VD4oXG4gICAgICBsaXN0U291cmNlLFxuICAgICAgdGhpcy5faW5kZXhGbixcbiAgICAgIHRoaXMuX2xvY2FsQXBwbHksXG4gICAgICB0aGlzLl9sb2NhbFNvcnRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmcm9tUGFnZVNvdXJjZShwYWdlU291cmNlOiBJUGFnZWREYXRhU291cmNlPFQ+KTogSURhdGFDb250ZXh0Q29udGludWFibGU8VD4ge1xuICAgIHJldHVybiBuZXcgRGF0YUNvbnRleHRDb250aW51YWJsZVBhZ2VkPFQ+KFxuICAgICAgcGFnZVNvdXJjZSxcbiAgICAgIHRoaXMuX3BhZ2VTaXplLFxuICAgICAgdGhpcy5faW5kZXhGbixcbiAgICAgIHRoaXMuX2xvY2FsQXBwbHksXG4gICAgICB0aGlzLl9sb2NhbFNvcnRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmcm9tQ29udGludWF0aW9uU291cmNlKGNvbnRpbnVhdGlvblNvdXJjZTogSUNvbnRpbnVhYmxlRGF0YVNvdXJjZTxUPik6IElEYXRhQ29udGV4dENvbnRpbnVhYmxlPFQ+IHtcbiAgICByZXR1cm4gbmV3IERhdGFDb250ZXh0Q29udGludWFibGVUb2tlbjxUPihcbiAgICAgIGNvbnRpbnVhdGlvblNvdXJjZSxcbiAgICAgIHRoaXMuX3BhZ2VTaXplLFxuICAgICAgdGhpcy5faW5kZXhGbixcbiAgICAgIHRoaXMuX2xvY2FsQXBwbHksXG4gICAgICB0aGlzLl9sb2NhbFNvcnRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmcm9tQWN0aXZlUGFnZVNvdXJjZShwYWdlU291cmNlOiBJUGFnZWREYXRhU291cmNlPFQ+KTogSURhdGFDb250ZXh0QWN0aXZlUGFnZTxUPiB7XG4gICAgcmV0dXJuIG5ldyBEYXRhQ29udGV4dEFjdGl2ZVBhZ2U8VD4oXG4gICAgICBwYWdlU291cmNlLFxuICAgICAgdGhpcy5fcGFnZVNpemUsXG4gICAgICB0aGlzLl9pbmRleEZuLFxuICAgICAgdGhpcy5fbG9jYWxBcHBseSxcbiAgICAgIHRoaXMuX3NraXBMb2NhbFNvcnQgPyBudWxsIDogdGhpcy5fbG9jYWxTb3J0XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBEYXRhQ29udGV4dEF1dG9SZWxvYWQ8REMgZXh0ZW5kcyBJRGF0YUNvbnRleHQ8VD4+KGRjOiBEQywgZGF0YVNvdXJjZTogSURhdGFTb3VyY2U8YW55Pik6IERDIHtcbiAgICBpZiAodGhpcy5fcmVsb2FkT25Mb2NhbENoYW5nZXMpIHtcbiAgICAgIGNvbnN0IGJpbmRpbmcgPSBuZXcgRGF0YUNvbnRleHRTb3VyY2VBdXRvUmVsb2FkZXIoZGMsIGRhdGFTb3VyY2UpO1xuICAgIH1cbiAgICByZXR1cm4gZGM7XG4gIH1cblxuICBwcml2YXRlIHNldHVwRGF0YUNvbnRleHRBdXRvU3RhcnQ8REMgZXh0ZW5kcyBJRGF0YUNvbnRleHQ8VD4+KGRjOiBEQywgYXV0b1N0YXJ0U3BlYzogQXV0b1N0YXJ0U3BlYyk6IERDIHtcbiAgICBpZiAodGhpcy5fYXV0b1N0YXJ0U3BlYykge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ1NldHRpbmcgdXAgZGF0YSBjb250ZXh0IGF1dG8gc3RhcnQgd2l0aCBzcGVjOicsIHRoaXMuX2F1dG9TdGFydFNwZWMpO1xuICAgICAgY29uc3QgYmluZGluZyA9IG5ldyBEYXRhQ29udGV4dEF1dG9TdGFydGVyKGRjLCBhdXRvU3RhcnRTcGVjKTtcbiAgICB9XG4gICAgcmV0dXJuIGRjO1xuICB9XG5cbn1cbiJdfQ==
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1jb250ZXh0LWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21tb24vZGF0YS9kYXRhLWNvbnRleHQvZGF0YS1jb250ZXh0LWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDN0UsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRWpFLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBRTdFLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBQ2pGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBS0wsdUJBQXVCLEVBQ3ZCLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDbEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUM5RSxPQUFPLEVBQUMsYUFBYSxFQUFFLHNCQUFzQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDbEYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRW5EOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQWlDN0I7Ozs7Z0ZBSTRFO0lBRTVFO1FBckNBOzs7O29GQUk0RTtR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c0NvbnRlbnQiOlsiaW1wb3J0IHtEYXRhQ29udGV4dENvbnRpbnVhYmxlUGFnZWR9IGZyb20gJy4vZGF0YS1jb250ZXh0LWNvbnRpbnVhYmxlLXBhZ2VkJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtEYXRhQ29udGV4dFNpbXBsZX0gZnJvbSAnLi9kYXRhLWNvbnRleHQtc2ltcGxlJztcbmltcG9ydCB7RGF0YUNvbnRleHRBY3RpdmVQYWdlfSBmcm9tICcuL2RhdGEtY29udGV4dC1hY3RpdmUtcGFnZSc7XG5pbXBvcnQge1NvcnR9IGZyb20gJy4uL3NvcnQnO1xuaW1wb3J0IHtEYXRhQ29udGV4dENvbnRpbnVhYmxlVG9rZW59IGZyb20gJy4vZGF0YS1jb250ZXh0LWNvbnRpbnVhYmxlLXRva2VuJztcbmltcG9ydCB7SURhdGFDb250ZXh0LCBJRGF0YUNvbnRleHRBY3RpdmVQYWdlLCBJRGF0YUNvbnRleHRDb250aW51YWJsZX0gZnJvbSAnLi9kYXRhLWNvbnRleHQnO1xuaW1wb3J0IHtEYXRhQ29udGV4dFNvdXJjZUF1dG9SZWxvYWRlcn0gZnJvbSAnLi9kYXRhLWNvbnRleHQtc291cmNlLWF1dG8tcmVsb2FkZXInO1xuaW1wb3J0IHtMb2NhbFBhZ2VkRGF0YVNvdXJjZX0gZnJvbSAnLi4vZGF0YXNvdXJjZS9sb2NhbC9sb2NhbC1wYWdlZC1kYXRhLXNvdXJjZSc7XG5pbXBvcnQge0xvY2FsTGlzdERhdGFTb3VyY2V9IGZyb20gJy4uL2RhdGFzb3VyY2UvbG9jYWwvbG9jYWwtbGlzdC1kYXRhLXNvdXJjZSc7XG5pbXBvcnQge1NvcnRVdGlsfSBmcm9tICcuLi8uLi91dGlscy9zb3J0LXV0aWwnO1xuaW1wb3J0IHtcbiAgSUNvbnRpbnVhYmxlRGF0YVNvdXJjZSxcbiAgSURhdGFTb3VyY2UsXG4gIElMaXN0RGF0YVNvdXJjZSxcbiAgSVBhZ2VkRGF0YVNvdXJjZSxcbiAgaXNDb250aW51YWJsZURhdGFTb3VyY2UsXG4gIGlzTGlzdERhdGFTb3VyY2UsXG4gIGlzUGFnZWREYXRhU291cmNlXG59IGZyb20gJy4uL2RhdGFzb3VyY2UvZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHtEZWxlZ2F0ZURhdGFTb3VyY2V9IGZyb20gJy4uL2RhdGFzb3VyY2UvZmV0Y2hlci9kZWxlZ2F0ZS1kYXRhLXNvdXJjZSc7XG5pbXBvcnQge0F1dG9TdGFydFNwZWMsIERhdGFDb250ZXh0QXV0b1N0YXJ0ZXJ9IGZyb20gJy4vZGF0YS1jb250ZXh0LWF1dG8tc3RhcnRlcic7XG5pbXBvcnQge0ZpbHRlclV0aWx9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbHRlci11dGlsJztcblxuLyoqXG4gKiBQcm92aWRlcyB0aGUgYWJpbGl0eSB0byBidWlsZCBhIElEYXRhQ29udGV4dDxUPi5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFDb250ZXh0QnVpbGRlcjxUPiB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIHByaXZhdGUgX2luZGV4Rm4/OiAoKGl0ZW06IFQpID0+IGFueSk7XG4gIHByaXZhdGUgX2xvY2FsQXBwbHk/OiAoKGRhdGE6IFRbXSkgPT4gVFtdKTtcbiAgcHJpdmF0ZSBfbG9jYWxTb3J0PzogKChkYXRhOiBUW10sIHNvcnRzOiBTb3J0W10pID0+IFRbXSk7XG4gIHByaXZhdGUgX3NraXBMb2NhbFNvcnQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcGFnZVNpemUgPSA1MDtcbiAgcHJpdmF0ZSBfcmVsb2FkT25Mb2NhbENoYW5nZXMgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfYWN0aXZlUGFnZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfYXV0b1N0YXJ0U3BlYz86IEF1dG9TdGFydFNwZWM7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFN0YXRpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgRGF0YUNvbnRleHRCdWlsZGVyLlxuICAgKiBAcmV0dXJucyBBIG5ldyBEYXRhQ29udGV4dEJ1aWxkZXIgZm9yIHRoZSBnaXZlbiBkYXRhIHR5cGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHN0YXJ0PFQ+KCk6IERhdGFDb250ZXh0QnVpbGRlcjxUPiB7XG4gICAgcmV0dXJuIG5ldyBEYXRhQ29udGV4dEJ1aWxkZXI8VD4oKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGluZGV4IGZ1bmN0aW9uIHdoZXJlIGVhY2ggZWxlbWVudCB3aWxsIGJlIGluZGV4ZWQgYnkuXG4gICAqIElmIHlvdSBoYXZlIGNvbmZpZ3VyZWQgdGhpcywgeW91IGNhbiB1c2UgdGhlIGZpbmRCeUluZGV4KGtleSkgb24gdGhlIGRhdGEtY29udGV4dC5cbiAgICovXG4gIHB1YmxpYyBpbmRleEJ5KGluZGV4Rm4/OiAoKGl0ZW06IFQpID0+IGFueSkpOiB0aGlzIHtcbiAgICB0aGlzLl9pbmRleEZuID0gaW5kZXhGbjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZGVzaXJlZCBzaXplIG9mIGEgcGFnZS9jaHVuayB3aGVuIGxvYWRpbmcgZGF0YS5cbiAgICogTm90ZSB0aGF0IGNvbnRpbnVhYmxlIGFwaXMgbWlnaHQganVzdCB0YWtlIHRoaXMgYXMgYSB3aXNoIG9yIGV2ZW4gY29tcGxldGVseSBpZ25vcmUgdGhpcyBwYXJhbS5cbiAgICovXG4gIHB1YmxpYyBwYWdlU2l6ZShzaXplOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLl9wYWdlU2l6ZSA9IHNpemU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU29ydCB0aGUgZGF0YSBjb250ZXh0IGxvY2FsbHkuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGlzIG1pZ2h0IGJlIGEgY29zdGx5IG9wZXJhdGlvbiB3aGVuIHRoZXJlIGFyZSBhIGxvdCBvZiBlbGVtZW50cyBwcmVzZW50LlxuICAgKiBQcmVmZXIgc2VydmVyIHNpZGUgc29ydGluZyBpZiBwb3NzaWJsZS5cbiAgICovXG4gIHB1YmxpYyBsb2NhbFNvcnQobG9jYWxTb3J0PzogKGRhdGE6IFRbXSwgc29ydHM6IFNvcnRbXSkgPT4gVFtdKTogdGhpcyB7XG4gICAgdGhpcy5fbG9jYWxTb3J0ID0gbG9jYWxTb3J0ID8gbG9jYWxTb3J0IDogU29ydFV0aWwuc29ydERhdGE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlIGFjdGl2ZSBwYWdpbmcgKGluIGNvbnRyYXN0IHRvIHRoZSBpbmZpbml0ZSBsb2FkKSBpbiB0aGUgZGF0YSBjb250ZXh0LlxuICAgKiBPbmx5IHN1cHBvcnRlZCBpZiB0aGUgdW5kZXJseWluZyBkYXRhc291cmNlIHN1cHBvcnRzIHBhZ2luYXRpb24uXG4gICAqL1xuICBwdWJsaWMgYWN0aXZlUGFnZWQoKTogdGhpcyB7XG4gICAgdGhpcy5fYWN0aXZlUGFnZWQgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBlYWNoIGVsZW1lbnQgd2hpY2ggaXMgYWRkZWQgdG8gdGhlIGRhdGFjb250ZXh0LCBhcHBseSB0aGUgZ2l2ZW4gZnVuY3Rpb24uXG4gICAqL1xuICBwdWJsaWMgbG9jYWxBcHBseShsb2NhbEFwcGx5OiAoKGRhdGE6IFRbXSkgPT4gVFtdKSk6IHRoaXMge1xuICAgIHRoaXMuX2xvY2FsQXBwbHkgPSBsb2NhbEFwcGx5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uIGEgbG9jYWwgY2hhbmdlIGV2ZW50LCBhdXRvbWF0aWNhbGx5IHJlbG9hZCBkYXRhIGluIHRoZSBkYXRhLWNvbnRleHQuXG4gICAqIFRoaXMgbWVhbnMgd2hlbmV2ZXIgdGhlcmUgd2FzIGFuIG1vZGlmeSBvcGVyYXRpb24gb24gdGhlIHJlc3QgY2xpZW50LFxuICAgKiBzdWNoIGFzIFVwZGF0ZSwgRGVsZXRlIG9yIENyZWF0ZSwgdGhlIGRhdGEgd2lsbCBiZSByZWxvYWRlZC5cbiAgICovXG4gIHB1YmxpYyByZWxvYWRPbkxvY2FsQ2hhbmdlcygpOiB0aGlzIHtcbiAgICB0aGlzLl9yZWxvYWRPbkxvY2FsQ2hhbmdlcyA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgYXV0b1N0YXJ0QXNhcChzb3J0PzogU29ydFtdKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYXV0b1N0YXJ0T24oXG4gICAgICBBdXRvU3RhcnRTcGVjLmFzYXAoc29ydClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGF1dG9TdGFydE9uRmlsdGVycyhmaWx0ZXJzOiBBcnJheTxzdHJpbmdbXT4sIHNvcnQ/OiBTb3J0W10pOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5hdXRvU3RhcnRPbihcbiAgICAgIEF1dG9TdGFydFNwZWMucmVxdWlyZUZpbHRlcnMoZmlsdGVycywgc29ydClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGF1dG9TdGFydE9uRmlsdGVyc0FsbChmaWx0ZXJzOiBzdHJpbmdbXSwgc29ydD86IFNvcnRbXSk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLmF1dG9TdGFydE9uKFxuICAgICAgQXV0b1N0YXJ0U3BlYy5yZXF1aXJlRmlsdGVyc0FsbChmaWx0ZXJzLCBzb3J0KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYXV0b1N0YXJ0T25GaWx0ZXJzQW55KGZpbHRlcnM6IHN0cmluZ1tdLCBzb3J0PzogU29ydFtdKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYXV0b1N0YXJ0T24oXG4gICAgICBBdXRvU3RhcnRTcGVjLnJlcXVpcmVGaWx0ZXJzQW55KGZpbHRlcnMsIHNvcnQpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhdXRvU3RhcnRPbihzcGVjOiBBdXRvU3RhcnRTcGVjKTogdGhpcyB7XG4gICAgdGhpcy5fYXV0b1N0YXJ0U3BlYyA9IHNwZWM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRGF0YVNvdXJjZSBCdWlsZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogQnVpbGQgYSBuZXcgRGF0YUNvbnRleHQgZnJvbSB0aGUgZ2l2ZW4gRGF0YVNvdXJjZS5cbiAgICpcbiAgICogQ29tbW9uIERhdGFTb3VyY2VzIGFyZSBSZXN0Q2xpZW50LCBMb2NhbExpc3REYXRhU291cmNlIGFuZCBEZWxlZ2F0ZURhdGFTb3VyY2UuXG4gICAqXG4gICAqIEBwYXJhbSBkc1xuICAgKi9cbiAgcHVibGljIGJ1aWxkKGRzOiBJRGF0YVNvdXJjZTxUPik6IElEYXRhQ29udGV4dDxUPiB7XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRGcm9tU291cmNlKGRzKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBMb2NhbCBEYXRhIEJ1aWxkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBidWlsZExvY2FsKGl0ZW1zOiBUW10sIGlkUHJvcGVydHk/OiBzdHJpbmcpOiBJRGF0YUNvbnRleHQ8VD4ge1xuICAgIHJldHVybiB0aGlzLmJ1aWxkKFxuICAgICAgTG9jYWxMaXN0RGF0YVNvdXJjZS5mcm9tKGl0ZW1zLCBpZFByb3BlcnR5LCB0aGlzLl9sb2NhbFNvcnQsIEZpbHRlclV0aWwuZmlsdGVyRGF0YSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGJ1aWxkTG9jYWxBY3RpdmVQYWdlZChcbiAgICBkYXRhOiBUW10sXG4gICAgaWRQcm9wZXJ0eT86IHN0cmluZ1xuICApOiBJRGF0YUNvbnRleHRBY3RpdmVQYWdlPFQ+IHtcbiAgICB0aGlzLl9za2lwTG9jYWxTb3J0ID0gdHJ1ZTtcbiAgICB0aGlzLmFjdGl2ZVBhZ2VkKCk7XG4gICAgcmV0dXJuIDxJRGF0YUNvbnRleHRBY3RpdmVQYWdlPFQ+PnRoaXMuYnVpbGQoXG4gICAgICBMb2NhbFBhZ2VkRGF0YVNvdXJjZS5mcm9tKGRhdGEsIGlkUHJvcGVydHksIHRoaXMuX2xvY2FsU29ydCwgRmlsdGVyVXRpbC5maWx0ZXJEYXRhKVxuICAgICk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRW1wdHkgRGF0YSBCdWlsZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgYnVpbGRFbXB0eSgpOiBJRGF0YUNvbnRleHQ8VD4ge1xuICAgIHJldHVybiB0aGlzLmJ1aWxkKFxuICAgICAgRGVsZWdhdGVEYXRhU291cmNlLmVtcHR5TGlzdEZldGNoZXIoKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYnVpbGRFbXB0eUNvbnRpbnVhYmxlKCk6IElEYXRhQ29udGV4dENvbnRpbnVhYmxlPFQ+IHtcbiAgICByZXR1cm4gPElEYXRhQ29udGV4dENvbnRpbnVhYmxlPFQ+PnRoaXMuYnVpbGQoXG4gICAgICBEZWxlZ2F0ZURhdGFTb3VyY2UuZW1wdHlDb250aW51YWJsZUZldGNoZXIoKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYnVpbGRFbXB0eUFjdGl2ZVBhZ2VkKCk6IElEYXRhQ29udGV4dEFjdGl2ZVBhZ2U8VD4ge1xuICAgIHJldHVybiA8SURhdGFDb250ZXh0QWN0aXZlUGFnZTxUPj50aGlzXG4gICAgICAuYWN0aXZlUGFnZWQoKVxuICAgICAgLmJ1aWxkKFxuICAgICAgICBEZWxlZ2F0ZURhdGFTb3VyY2UuZW1wdHlQYWdlRmV0Y2hlcigpLFxuICAgICAgKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBMZWdhY3kgQ2xpZW50IEJ1aWxkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBTd2l0Y2ggdG8gYnVpbGQoZGF0YVNvdXJjZSlcbiAgICovXG4gIHB1YmxpYyBidWlsZENsaWVudChcbiAgICBkYXRhU291cmNlOiBJTGlzdERhdGFTb3VyY2U8VD5cbiAgKTogSURhdGFDb250ZXh0PFQ+IHtcbiAgICByZXR1cm4gdGhpcy5idWlsZChkYXRhU291cmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBTd2l0Y2ggdG8gYnVpbGQoZGF0YVNvdXJjZSlcbiAgICovXG4gIHB1YmxpYyBidWlsZFBhZ2VkQ2xpZW50KFxuICAgIGRhdGFTb3VyY2U6IElQYWdlZERhdGFTb3VyY2U8VD5cbiAgKTogSURhdGFDb250ZXh0Q29udGludWFibGU8VD4ge1xuICAgIHJldHVybiA8SURhdGFDb250ZXh0Q29udGludWFibGU8VD4+dGhpcy5idWlsZChkYXRhU291cmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBTd2l0Y2ggdG8gYnVpbGQoZGF0YVNvdXJjZSlcbiAgICovXG4gIHB1YmxpYyBidWlsZENvbnRpbnVhdGlvblRva2VuQ2xpZW50KFxuICAgIGRhdGFTb3VyY2U6IElDb250aW51YWJsZURhdGFTb3VyY2U8VD5cbiAgKTogSURhdGFDb250ZXh0Q29udGludWFibGU8VD4ge1xuICAgIHJldHVybiA8SURhdGFDb250ZXh0Q29udGludWFibGU8VD4+dGhpcy5idWlsZChkYXRhU291cmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBTd2l0Y2ggdG8gLmFjdGl2ZVBhZ2VkKCkuYnVpbGQoZGF0YVNvdXJjZSlcbiAgICovXG4gIHB1YmxpYyBidWlsZEFjdGl2ZVBhZ2VkQ2xpZW50KFxuICAgIGRhdGFTb3VyY2U6IElQYWdlZERhdGFTb3VyY2U8VD5cbiAgKTogSURhdGFDb250ZXh0QWN0aXZlUGFnZTxUPiB7XG4gICAgcmV0dXJuIDxJRGF0YUNvbnRleHRBY3RpdmVQYWdlPFQ+PnRoaXMuYWN0aXZlUGFnZWQoKS5idWlsZChkYXRhU291cmNlKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgYnVpbGRGcm9tU291cmNlKGRzOiBJRGF0YVNvdXJjZTxUPik6IElEYXRhQ29udGV4dDxUPiB7XG5cbiAgICBsZXQgZGF0YUNvbnRleHQ6IElEYXRhQ29udGV4dDxUPjtcblxuICAgIGlmIChpc0xpc3REYXRhU291cmNlKGRzKSkge1xuICAgICAgZGF0YUNvbnRleHQgPSB0aGlzLmZyb21MaXN0U291cmNlKGRzKTtcbiAgICB9IGVsc2UgaWYgKGlzUGFnZWREYXRhU291cmNlKGRzKSkge1xuICAgICAgaWYgKHRoaXMuX2FjdGl2ZVBhZ2VkKSB7XG4gICAgICAgIGRhdGFDb250ZXh0ID0gdGhpcy5mcm9tQWN0aXZlUGFnZVNvdXJjZShkcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhQ29udGV4dCA9IHRoaXMuZnJvbVBhZ2VTb3VyY2UoZHMpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNDb250aW51YWJsZURhdGFTb3VyY2UoZHMpKSB7XG4gICAgICBkYXRhQ29udGV4dCA9IHRoaXMuZnJvbUNvbnRpbnVhdGlvblNvdXJjZShkcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgSURhdGFTb3VyY2UgdHlwZTogJyArIHR5cGVvZiAoZHMpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fYXV0b1N0YXJ0U3BlYykge1xuICAgICAgdGhpcy5zZXR1cERhdGFDb250ZXh0QXV0b1N0YXJ0KGRhdGFDb250ZXh0LCB0aGlzLl9hdXRvU3RhcnRTcGVjKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zZXR1cERhdGFDb250ZXh0QXV0b1JlbG9hZChkYXRhQ29udGV4dCwgZHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBmcm9tTGlzdFNvdXJjZShsaXN0U291cmNlOiBJTGlzdERhdGFTb3VyY2U8VD4pOiBJRGF0YUNvbnRleHQ8VD4ge1xuICAgIHJldHVybiBuZXcgRGF0YUNvbnRleHRTaW1wbGU8VD4oXG4gICAgICBsaXN0U291cmNlLFxuICAgICAgdGhpcy5faW5kZXhGbixcbiAgICAgIHRoaXMuX2xvY2FsQXBwbHksXG4gICAgICB0aGlzLl9sb2NhbFNvcnRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmcm9tUGFnZVNvdXJjZShwYWdlU291cmNlOiBJUGFnZWREYXRhU291cmNlPFQ+KTogSURhdGFDb250ZXh0Q29udGludWFibGU8VD4ge1xuICAgIHJldHVybiBuZXcgRGF0YUNvbnRleHRDb250aW51YWJsZVBhZ2VkPFQ+KFxuICAgICAgcGFnZVNvdXJjZSxcbiAgICAgIHRoaXMuX3BhZ2VTaXplLFxuICAgICAgdGhpcy5faW5kZXhGbixcbiAgICAgIHRoaXMuX2xvY2FsQXBwbHksXG4gICAgICB0aGlzLl9sb2NhbFNvcnRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmcm9tQ29udGludWF0aW9uU291cmNlKGNvbnRpbnVhdGlvblNvdXJjZTogSUNvbnRpbnVhYmxlRGF0YVNvdXJjZTxUPik6IElEYXRhQ29udGV4dENvbnRpbnVhYmxlPFQ+IHtcbiAgICByZXR1cm4gbmV3IERhdGFDb250ZXh0Q29udGludWFibGVUb2tlbjxUPihcbiAgICAgIGNvbnRpbnVhdGlvblNvdXJjZSxcbiAgICAgIHRoaXMuX3BhZ2VTaXplLFxuICAgICAgdGhpcy5faW5kZXhGbixcbiAgICAgIHRoaXMuX2xvY2FsQXBwbHksXG4gICAgICB0aGlzLl9sb2NhbFNvcnRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmcm9tQWN0aXZlUGFnZVNvdXJjZShwYWdlU291cmNlOiBJUGFnZWREYXRhU291cmNlPFQ+KTogSURhdGFDb250ZXh0QWN0aXZlUGFnZTxUPiB7XG4gICAgcmV0dXJuIG5ldyBEYXRhQ29udGV4dEFjdGl2ZVBhZ2U8VD4oXG4gICAgICBwYWdlU291cmNlLFxuICAgICAgdGhpcy5fcGFnZVNpemUsXG4gICAgICB0aGlzLl9pbmRleEZuLFxuICAgICAgdGhpcy5fbG9jYWxBcHBseSxcbiAgICAgIHRoaXMuX3NraXBMb2NhbFNvcnQgPyBudWxsIDogdGhpcy5fbG9jYWxTb3J0XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBEYXRhQ29udGV4dEF1dG9SZWxvYWQ8REMgZXh0ZW5kcyBJRGF0YUNvbnRleHQ8VD4+KGRjOiBEQywgZGF0YVNvdXJjZTogSURhdGFTb3VyY2U8YW55Pik6IERDIHtcbiAgICBpZiAodGhpcy5fcmVsb2FkT25Mb2NhbENoYW5nZXMpIHtcbiAgICAgIGNvbnN0IGJpbmRpbmcgPSBuZXcgRGF0YUNvbnRleHRTb3VyY2VBdXRvUmVsb2FkZXIoZGMsIGRhdGFTb3VyY2UpO1xuICAgIH1cbiAgICByZXR1cm4gZGM7XG4gIH1cblxuICBwcml2YXRlIHNldHVwRGF0YUNvbnRleHRBdXRvU3RhcnQ8REMgZXh0ZW5kcyBJRGF0YUNvbnRleHQ8VD4+KGRjOiBEQywgYXV0b1N0YXJ0U3BlYzogQXV0b1N0YXJ0U3BlYyk6IERDIHtcbiAgICBpZiAodGhpcy5fYXV0b1N0YXJ0U3BlYykge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ1NldHRpbmcgdXAgZGF0YSBjb250ZXh0IGF1dG8gc3RhcnQgd2l0aCBzcGVjOicsIHRoaXMuX2F1dG9TdGFydFNwZWMpO1xuICAgICAgY29uc3QgYmluZGluZyA9IG5ldyBEYXRhQ29udGV4dEF1dG9TdGFydGVyKGRjLCBhdXRvU3RhcnRTcGVjKTtcbiAgICB9XG4gICAgcmV0dXJuIGRjO1xuICB9XG5cbn1cbiJdfQ==
@@ -13,7 +13,16 @@ export class FilterUtil {
13
13
  if (filter.value === null || filter.value === undefined) {
14
14
  return true;
15
15
  }
16
- const value = entity[filter.key];
16
+ let value;
17
+ if (entity === null || entity === undefined) {
18
+ value = null;
19
+ }
20
+ else if (typeof entity === 'object') {
21
+ value = entity[filter.key];
22
+ }
23
+ else {
24
+ value = String(entity); // Support filtering primitive values
25
+ }
17
26
  if (Array.isArray(filter.value)) {
18
27
  for (const val of filter.value) {
19
28
  if (FilterUtil.matchesValue(value, val)) {
@@ -40,4 +49,4 @@ export class FilterUtil {
40
49
  }
41
50
  }
42
51
  FilterUtil.logger = LoggerFactory.getLogger(FilterUtil.constructor.name);
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21tb24vdXRpbHMvZmlsdGVyLXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBR25ELE1BQU0sT0FBTyxVQUFVO0lBS2QsTUFBTSxDQUFDLFVBQVUsQ0FBSSxJQUFTLEVBQUUsT0FBaUI7UUFFdEQsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFbkYsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDakMsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUU7Z0JBQzVCLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQzthQUN4RDtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBR08sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFXLEVBQUUsTUFBYztRQUVoRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWpDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDL0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFO2dCQUM5QixJQUFJLFVBQVUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFO29CQUN2QyxPQUFPLElBQUksQ0FBQztpQkFDYjthQUNGO1lBQ0QsT0FBTyxLQUFLLENBQUM7U0FDZDthQUFNO1lBQ0wsT0FBTyxVQUFVLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDckQ7SUFDSCxDQUFDO0lBR08sTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFhLEVBQUUsTUFBYztRQUN2RCxJQUFJLFFBQVEsS0FBSyxNQUFNLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELElBQUksUUFBUSxLQUFLLElBQUksSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFO1lBQy9DLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0IsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUVqRSxvR0FBb0c7UUFFcEcsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOztBQXBEdUIsaUJBQU0sR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ZpbHRlcn0gZnJvbSAnLi4vZGF0YS9maWx0ZXInO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5cblxuZXhwb3J0IGNsYXNzIEZpbHRlclV0aWwge1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKEZpbHRlclV0aWwuY29uc3RydWN0b3IubmFtZSk7XG5cblxuICBwdWJsaWMgc3RhdGljIGZpbHRlckRhdGE8VD4oZGF0YTogVFtdLCBmaWx0ZXJzOiBGaWx0ZXJbXSk6IFRbXSB7XG5cbiAgICBGaWx0ZXJVdGlsLmxvZ2dlci5kZWJ1ZygnRmlsdGVyaW5nIGRhdGEgd2l0aCAnICsgZGF0YS5sZW5ndGggKyAnIGl0ZW1zLicsIGZpbHRlcnMpO1xuXG4gICAgaWYgKGZpbHRlcnMgJiYgZmlsdGVycy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJzKSB7XG4gICAgICAgIGRhdGEgPSBkYXRhLmZpbHRlcihlID0+IEZpbHRlclV0aWwubWF0Y2hlcyhlLCBmaWx0ZXIpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuXG4gIHByaXZhdGUgc3RhdGljIG1hdGNoZXMoZW50aXR5OiBhbnksIGZpbHRlcjogRmlsdGVyKTogYm9vbGVhbiB7XG5cbiAgICBpZiAoZmlsdGVyLnZhbHVlID09PSBudWxsIHx8IGZpbHRlci52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IGVudGl0eVtmaWx0ZXIua2V5XTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KGZpbHRlci52YWx1ZSkpIHtcbiAgICAgIGZvciAoY29uc3QgdmFsIG9mIGZpbHRlci52YWx1ZSkge1xuICAgICAgICBpZiAoRmlsdGVyVXRpbC5tYXRjaGVzVmFsdWUodmFsdWUsIHZhbCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gRmlsdGVyVXRpbC5tYXRjaGVzVmFsdWUodmFsdWUsIGZpbHRlci52YWx1ZSk7XG4gICAgfVxuICB9XG5cblxuICBwcml2YXRlIHN0YXRpYyBtYXRjaGVzVmFsdWUoaGF5c3RhY2s6IGFueSwgbmVlZGxlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoaGF5c3RhY2sgPT09IG5lZWRsZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGhheXN0YWNrID09PSBudWxsIHx8IGhheXN0YWNrID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBzdHIgPSBTdHJpbmcoaGF5c3RhY2spO1xuICAgIGNvbnN0IG1hdGNoID0gc3RyLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChuZWVkbGUudG9Mb3dlckNhc2UoKSk7XG5cbiAgICAvLyBGaWx0ZXJVdGlsLmxvZ2dlci5kZWJ1ZygnSGF5c3RhY2s6ICcgKyBzdHIgKyAnIHN0YXJ0cyB3aXRoIG5lZWRsZTogJyArIG5lZWRsZSArICcgLS0+ICcgKyBtYXRjaCk7XG5cbiAgICByZXR1cm4gbWF0Y2g7XG4gIH1cbn1cbiJdfQ==
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21tb24vdXRpbHMvZmlsdGVyLXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBR25ELE1BQU0sT0FBTyxVQUFVO0lBS2QsTUFBTSxDQUFDLFVBQVUsQ0FBSSxJQUFTLEVBQUUsT0FBaUI7UUFFdEQsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFbkYsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDakMsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUU7Z0JBQzVCLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQzthQUN4RDtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBR08sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFXLEVBQUUsTUFBYztRQUVoRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLEtBQVUsQ0FBQztRQUNmLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO1lBQzNDLEtBQUssR0FBRyxJQUFJLENBQUM7U0FDZDthQUFNLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFO1lBQ3JDLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzVCO2FBQU07WUFDTCxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMscUNBQXFDO1NBQzlEO1FBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMvQixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUU7Z0JBQzlCLElBQUksVUFBVSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7b0JBQ3ZDLE9BQU8sSUFBSSxDQUFDO2lCQUNiO2FBQ0Y7WUFDRCxPQUFPLEtBQUssQ0FBQztTQUNkO2FBQU07WUFDTCxPQUFPLFVBQVUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyRDtJQUNILENBQUM7SUFHTyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQWEsRUFBRSxNQUFjO1FBQ3ZELElBQUksUUFBUSxLQUFLLE1BQU0sRUFBRTtZQUN2QixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsSUFBSSxRQUFRLEtBQUssSUFBSSxJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUU7WUFDL0MsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRWpFLG9HQUFvRztRQUVwRyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7O0FBM0R1QixpQkFBTSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RmlsdGVyfSBmcm9tICcuLi9kYXRhL2ZpbHRlcic7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcblxuXG5leHBvcnQgY2xhc3MgRmlsdGVyVXRpbCB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoRmlsdGVyVXRpbC5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuXG4gIHB1YmxpYyBzdGF0aWMgZmlsdGVyRGF0YTxUPihkYXRhOiBUW10sIGZpbHRlcnM6IEZpbHRlcltdKTogVFtdIHtcblxuICAgIEZpbHRlclV0aWwubG9nZ2VyLmRlYnVnKCdGaWx0ZXJpbmcgZGF0YSB3aXRoICcgKyBkYXRhLmxlbmd0aCArICcgaXRlbXMuJywgZmlsdGVycyk7XG5cbiAgICBpZiAoZmlsdGVycyAmJiBmaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIGZpbHRlcnMpIHtcbiAgICAgICAgZGF0YSA9IGRhdGEuZmlsdGVyKGUgPT4gRmlsdGVyVXRpbC5tYXRjaGVzKGUsIGZpbHRlcikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBzdGF0aWMgbWF0Y2hlcyhlbnRpdHk6IGFueSwgZmlsdGVyOiBGaWx0ZXIpOiBib29sZWFuIHtcblxuICAgIGlmIChmaWx0ZXIudmFsdWUgPT09IG51bGwgfHwgZmlsdGVyLnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGxldCB2YWx1ZTogYW55O1xuICAgIGlmIChlbnRpdHkgPT09IG51bGwgfHwgZW50aXR5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhbHVlID0gbnVsbDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbnRpdHkgPT09ICdvYmplY3QnKSB7XG4gICAgICB2YWx1ZSA9IGVudGl0eVtmaWx0ZXIua2V5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBTdHJpbmcoZW50aXR5KTsgLy8gU3VwcG9ydCBmaWx0ZXJpbmcgcHJpbWl0aXZlIHZhbHVlc1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KGZpbHRlci52YWx1ZSkpIHtcbiAgICAgIGZvciAoY29uc3QgdmFsIG9mIGZpbHRlci52YWx1ZSkge1xuICAgICAgICBpZiAoRmlsdGVyVXRpbC5tYXRjaGVzVmFsdWUodmFsdWUsIHZhbCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gRmlsdGVyVXRpbC5tYXRjaGVzVmFsdWUodmFsdWUsIGZpbHRlci52YWx1ZSk7XG4gICAgfVxuICB9XG5cblxuICBwcml2YXRlIHN0YXRpYyBtYXRjaGVzVmFsdWUoaGF5c3RhY2s6IGFueSwgbmVlZGxlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoaGF5c3RhY2sgPT09IG5lZWRsZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGhheXN0YWNrID09PSBudWxsIHx8IGhheXN0YWNrID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBzdHIgPSBTdHJpbmcoaGF5c3RhY2spO1xuICAgIGNvbnN0IG1hdGNoID0gc3RyLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChuZWVkbGUudG9Mb3dlckNhc2UoKSk7XG5cbiAgICAvLyBGaWx0ZXJVdGlsLmxvZ2dlci5kZWJ1ZygnSGF5c3RhY2s6ICcgKyBzdHIgKyAnIHN0YXJ0cyB3aXRoIG5lZWRsZTogJyArIG5lZWRsZSArICcgLS0+ICcgKyBtYXRjaCk7XG5cbiAgICByZXR1cm4gbWF0Y2g7XG4gIH1cbn1cbiJdfQ==
@@ -132,6 +132,7 @@ export class ElderSelectBase extends FormFieldBaseComponent {
132
132
  this.autoCleanUp();
133
133
  if (data instanceof Array) {
134
134
  this.suggestionsDc = DataContextBuilder.start()
135
+ .localSort()
135
136
  .buildLocal(data); // Memory leak
136
137
  this.suggestionsDc.start();
137
138
  }
@@ -254,4 +255,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImpor
254
255
  }], valueTemplate: [{
255
256
  type: Input
256
257
  }] } });
257
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VsZWN0LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC9lbGRlci1zZWxlY3QtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFVLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUNwRixPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFHbkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0scURBQXFELENBQUM7QUFHdkYsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDekUsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFFckYsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzNELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7QUFNNUQsTUFBTSxPQUFPLHlCQUF5QjtJQXlCcEMsWUFDa0IsSUFBYSxFQUNiLE9BQWdCLEVBQ2hCLEtBQWE7UUFGYixTQUFJLEdBQUosSUFBSSxDQUFTO1FBQ2IsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixVQUFLLEdBQUwsS0FBSyxDQUFRO0lBRS9CLENBQUM7SUE1Qk0s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Q0FBQyxDQUFDO1NBQy9CO1FBRUQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQzs7NEdBelBtQixlQUFlO2dHQUFmLGVBQWUsd2NBNkNyQix5QkFBeUIsMkJBQVMsV0FBVyw0RUFJN0MsNEJBQTRCOzJGQWpEdEIsZUFBZTtrQkFGcEMsU0FBUzs2RkF5QkQsT0FBTztzQkFEYixLQUFLO2dCQVlDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSztnQkFPQyxrQkFBa0I7c0JBRHhCLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBS25FLGNBQWM7c0JBRHBCLFlBQVk7dUJBQUMsNEJBQTRCO2dCQUluQyxrQkFBa0I7c0JBRHhCLEtBQUs7Z0JBSUMsZ0JBQWdCO3NCQUR0QixLQUFLO2dCQXVDSyxTQUFTO3NCQURuQixLQUFLO2dCQWFLLGVBQWU7c0JBRHpCLEtBQUs7Z0JBTUssdUJBQXVCO3NCQURqQyxLQUFLO2dCQU1LLE9BQU87c0JBRGpCLEtBQUs7Z0JBVUssVUFBVTtzQkFEcEIsS0FBSztnQkFRSyxJQUFJO3NCQURkLEtBQUs7Z0JBNkJLLGFBQWE7c0JBRHZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbnRlbnRDaGlsZCwgRGlyZWN0aXZlLCBJbmplY3Rpb25Ub2tlbiwgSW5wdXQsIE5nWm9uZSwgVGVtcGxhdGVSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtRmllbGRCYXNlQ29tcG9uZW50fSBmcm9tICcuLi8uLi9jb21tb24vZm9ybXMvZm9ybS1maWVsZC1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7SURhdGFDb250ZXh0fSBmcm9tICcuLi8uLi9jb21tb24vZGF0YS9kYXRhLWNvbnRleHQvZGF0YS1jb250ZXh0JztcbmltcG9ydCB7SURhdGFTb3VyY2V9IGZyb20gJy4uLy4uL2NvbW1vbi9kYXRhL2RhdGFzb3VyY2UvZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHtEYXRhQ29udGV4dEJ1aWxkZXJ9IGZyb20gJy4uLy4uL2NvbW1vbi9kYXRhL2RhdGEtY29udGV4dC9kYXRhLWNvbnRleHQtYnVpbGRlcic7XG5pbXBvcnQge0ZpbHRlcn0gZnJvbSAnLi4vLi4vY29tbW9uL2RhdGEvZmlsdGVyJztcbmltcG9ydCB7U29ydH0gZnJvbSAnLi4vLi4vY29tbW9uL2RhdGEvc29ydCc7XG5pbXBvcnQge0VsZGVyU2VsZWN0VmFsdWVEaXJlY3RpdmV9IGZyb20gJy4vZWxkZXItc2VsZWN0LXZhbHVlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1NlbGVjdGlvbk1vZGVsUG9wdXBEaXJlY3RpdmV9IGZyb20gJy4vcG9wdXAvc2VsZWN0aW9uLW1vZGVsLXBvcHVwLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0RhdGFDb250ZXh0U3RhdHVzfSBmcm9tICcuLi8uLi9jb21tb24vZGF0YS9kYXRhLWNvbnRleHQvZGF0YS1jb250ZXh0LXN0YXR1cyc7XG5pbXBvcnQge2ZpbHRlciwgbWFwLCBzd2l0Y2hNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7cnVuSW5ab25lfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbHMvbmctem9uZS11dGlscyc7XG5pbXBvcnQge0ZpbHRlckNvbnRleHR9IGZyb20gJy4uLy4uL2NvbW1vbi9kYXRhL2ZpbHRlci1jb250ZXh0JztcbmltcG9ydCB7Y29lcmNlQm9vbGVhblByb3BlcnR5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuXG5leHBvcnQgdHlwZSBUZXh0UmVzb2x2ZXJGbiA9ICh2YWx1ZTogYW55KSA9PiBzdHJpbmc7XG5cblxuXG5leHBvcnQgY2xhc3MgRWxkZXJTZWxlY3RDb21wb25lbnRTdGF0ZSB7XG5cbiAgcHVibGljIHN0YXRpYyBmcm9tRGF0YUNvbnRleHQoZGNTdGF0ZTogRGF0YUNvbnRleHRTdGF0dXMpOiBFbGRlclNlbGVjdENvbXBvbmVudFN0YXRlIHtcbiAgICBpZiAoZGNTdGF0ZS5sb2FkaW5nKSB7XG4gICAgICByZXR1cm4gRWxkZXJTZWxlY3RDb21wb25lbnRTdGF0ZS5sb2FkaW5nKCk7XG4gICAgfSBlbHNlIGlmIChkY1N0YXRlLmVycm9yKSB7XG4gICAgICByZXR1cm4gRWxkZXJTZWxlY3RDb21wb25lbnRTdGF0ZS5lcnJvcihkY1N0YXRlLmVycm9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIEVsZGVyU2VsZWN0Q29tcG9uZW50U3RhdGUuaWRsZSgpO1xuICAgIH1cbiAgfVxuXG5cbiAgcHVibGljIHN0YXRpYyBpZGxlKCk6IEVsZGVyU2VsZWN0Q29tcG9uZW50U3RhdGUge1xuICAgIHJldHVybiBuZXcgRWxkZXJTZWxlY3RDb21wb25lbnRTdGF0ZSh0cnVlLCBmYWxzZSwgbnVsbCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGxvYWRpbmcoKTogRWxkZXJTZWxlY3RDb21wb25lbnRTdGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBFbGRlclNlbGVjdENvbXBvbmVudFN0YXRlKGZhbHNlLCB0cnVlLCBudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZXJyb3IoZXJyb3I6IHN0cmluZyk6IEVsZGVyU2VsZWN0Q29tcG9uZW50U3RhdGUge1xuICAgIHJldHVybiBuZXcgRWxkZXJTZWxlY3RDb21wb25lbnRTdGF0ZShmYWxzZSwgZmFsc2UsIGVycm9yKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBpZGxlOiBib29sZWFuLFxuICAgIHB1YmxpYyByZWFkb25seSBsb2FkaW5nOiBib29sZWFuLFxuICAgIHB1YmxpYyByZWFkb25seSBlcnJvcjogc3RyaW5nXG4gICkge1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBFTERFUl9TRUxFQ1RfQkFTRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFbGRlclNlbGVjdEJhc2U8YW55LCBhbnksIGFueT4+KCdFbGRlclNlbGVjdEJhc2UnKTtcblxuXG4vKipcbiAqIEJhc2UgY29tcG9uZW50IGZvciBFbGRlciBTZWxlY3Rpb24gQ29udHJvbHMuXG4gKlxuICogIEVsZGVyIFNlbGVjdGlvbiBoYXMgdGhlIGZvbGxvd2luZyBhYnN0cmFjdCBjb25jZXB0OlxuICpcbiAqIC0gU3VnZ2VzdGlvbi1Nb2RlbDogQSBEYXRhU291cmNlIGFuZCBkZXJpdmVkIERhdGFDb250ZXh0IGZvciB0aGUgKGF1dG8tY29tcGxldGUpIHN1Z2dlc3Rpb25zLlxuICpcbiAqIEBwYXJhbSBUSUQgRW50aXR5IElkIFR5cGVcbiAqIEBwYXJhbSBUIEVudGl0eSBUeXBlXG4gKiBAcGFyYW0gVFZhbHVlIFZhbHVlIGJhY2tpbmcgdGhlIGNvbnRyb2wuIENhbiBiZSB0aGUgZW50aXR5LCB0aGUgaWQgb3Igc29tZXRoaW5nIGVsc2UuXG4gKi9cbkBEaXJlY3RpdmUoKVxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmRpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFbGRlclNlbGVjdEJhc2U8VElkLCBURW50aXR5LCBUVmFsdWU+IGV4dGVuZHMgRm9ybUZpZWxkQmFzZUNvbXBvbmVudDxUVmFsdWU+IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9maWx0ZXJDb250ZXh0ID0gbmV3IEZpbHRlckNvbnRleHQoKTtcblxuICBwcml2YXRlIF92YWx1ZUFzSWQ6IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIHRpbWVvdXRBZnRlck1zID0gNTAwMDtcblxuICAvKipcbiAgICogRGVmaW5lIGlmIGVsZGVyLXNlbGVjdCBzaG91bGQgY2xlYW4gdXAgdGhlXG4gICAqIGRhdGEtY29udGV4dCByZXNvdXJjZXMgZm9yIHlvdS5cbiAgICpcbiAgICogSW4gbW9yZSBhZHZhbmNlZCBzY2VuYXJpb3Mgd2hlcmUgeW91IHBsYW4gdG8gcmV1c2UgdGhlIHNhbWUgZGF0YS1jb250ZXh0XG4gICAqIHNldCB0aGlzIHRvIGZhbHNlIGFuZCByZWxlYXNlIHRoZSByZXNvdXJjZXMgeW91cnNlbGYuIChkYXRhQ29udGV4dC5jbG9zZSlcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjbGVhblVwID0gdHJ1ZTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZGlzcGxheVByb3BlcnR5UmVzb2x2ZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZXh0UmVzb2x2ZXJGbj4oKHZhbHVlOiBURW50aXR5KSA9PiB0aGlzLnByb3BlcnR5U3RyaW5nVmFsdWUodmFsdWUsIG51bGwpKTtcblxuICAvKiogVW5kZXJseWluZyBkYXRhIGNvbnRleHQuICovXG4gIHB1YmxpYyByZWFkb25seSBzdWdnZXN0aW9uc0RjJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SURhdGFDb250ZXh0PFRFbnRpdHk+PihudWxsKTtcblxuICAvKipcbiAgICogUGFnZSBzaXplLiAoVXNlZCBmb3IgaW5maW5pdGUgc2Nyb2xsaW5nIGNodW5rcylcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwYWdlU2l6ZSA9IDEwO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBxdWVyeUZpbHRlciA9ICdxdWVyeSc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNvcnRzOiBTb3J0W10gPSBbXTtcblxuICAvKipcbiAgICogVGhlIG9wdGlvbiB0ZW1wbGF0ZSB0byBjdXN0b21pemUgdGhlIHVpIGxvb2suXG4gICAqL1xuICBAQ29udGVudENoaWxkKEVsZGVyU2VsZWN0VmFsdWVEaXJlY3RpdmUsIHtyZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlfSlcbiAgcHVibGljIHZhbHVlVGVtcGxhdGVRdWVyeTogVGVtcGxhdGVSZWY8YW55PjtcbiAgcHJpdmF0ZSBfdmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKFNlbGVjdGlvbk1vZGVsUG9wdXBEaXJlY3RpdmUpXG4gIHB1YmxpYyBzZWxlY3Rpb25Qb3B1cDogU2VsZWN0aW9uTW9kZWxQb3B1cERpcmVjdGl2ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaXNPcHRpb25EaXNhYmxlZEZuOiAob3B0aW9uOiBURW50aXR5KSA9PiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpc09wdGlvbkhpZGRlbkZuOiAob3B0aW9uOiBURW50aXR5KSA9PiBib29sZWFuO1xuXG4gIHB1YmxpYyByZWFkb25seSBzdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEVsZGVyU2VsZWN0Q29tcG9uZW50U3RhdGU+KEVsZGVyU2VsZWN0Q29tcG9uZW50U3RhdGUuaWRsZSgpKTtcbiAgcHVibGljIHJlYWRvbmx5IG1lcmdlZFN0YXRlJDogT2JzZXJ2YWJsZTxFbGRlclNlbGVjdENvbXBvbmVudFN0YXRlPjtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB6b25lOiBOZ1pvbmUsXG4gICkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLm1lcmdlZFN0YXRlJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5zdWdnZXN0aW9uc0RjJC5waXBlKGZpbHRlcihkYyA9PiAhIWRjKSwgc3dpdGNoTWFwKGRjID0+IGRjLnN0YXR1cykpLFxuICAgICAgdGhpcy5zdGF0ZSRcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbZGNTdGF0ZSwgc3RhdGVdKSA9PiB7XG4gICAgICAgIGlmIChkY1N0YXRlLmlkbGUpIHtcbiAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIEVsZGVyU2VsZWN0Q29tcG9uZW50U3RhdGUuZnJvbURhdGFDb250ZXh0KGRjU3RhdGUpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHJ1bkluWm9uZSh0aGlzLnpvbmUpXG4gICAgKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdmFsdWVBc0lkKHZhbHVlQXNJZDogYm9vbGVhbikge1xuICAgIHRoaXMuX3ZhbHVlQXNJZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZUFzSWQpO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZUFzSWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlQXNJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcHJvcGVydHkgdXNlZCB0byBkaXNwbGF5IHRoZSB2YWx1ZXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc3BsYXlQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgdGhpcy5kaXNwbGF5UHJvcGVydHlSZXNvbHZlciA9ICh2YWx1ZSA9PiB0aGlzLnByb3BlcnR5U3RyaW5nVmFsdWUodmFsdWUsIHByb3BlcnR5KSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc3BsYXlQcm9wZXJ0eVJlc29sdmVyKHJlc29sdmVyOiBUZXh0UmVzb2x2ZXJGbikge1xuICAgIHRoaXMuZGlzcGxheVByb3BlcnR5UmVzb2x2ZXIkLm5leHQocmVzb2x2ZXIpO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBmaWx0ZXJzKGZpbHRlcnM6IEZpbHRlcltdKSB7XG4gICAgdGhpcy5yZXBsYWNlRmlsdGVycyhmaWx0ZXJzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlsdGVycygpOiBGaWx0ZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlckNvbnRleHQuZmlsdGVyc1NuYXBzaG90O1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkYXRhU291cmNlKHNvdXJjZTogSURhdGFTb3VyY2U8VEVudGl0eT4pIHtcbiAgICB0aGlzLnN1Z2dlc3Rpb25zRGMgPSBEYXRhQ29udGV4dEJ1aWxkZXIuc3RhcnQ8VEVudGl0eT4oKVxuICAgICAgLnBhZ2VTaXplKHRoaXMucGFnZVNpemUpXG4gICAgICAuYnVpbGQoc291cmNlKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGF0YShkYXRhOiBBcnJheTxURW50aXR5PiB8IElEYXRhQ29udGV4dDxURW50aXR5Pikge1xuXG4gICAgdGhpcy5hdXRvQ2xlYW5VcCgpO1xuXG4gICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgdGhpcy5zdWdnZXN0aW9uc0RjID0gRGF0YUNvbnRleHRCdWlsZGVyLnN0YXJ0PFRFbnRpdHk+KClcbiAgICAgICAgLmJ1aWxkTG9jYWwoZGF0YSk7IC8vIE1lbW9yeSBsZWFrXG4gICAgICB0aGlzLnN1Z2dlc3Rpb25zRGMuc3RhcnQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgdGhpcy5zdWdnZXN0aW9uc0RjID0gZGF0YTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3VnZ2VzdGlvbnNEYyA9IERhdGFDb250ZXh0QnVpbGRlci5zdGFydDxURW50aXR5PigpLmJ1aWxkRW1wdHkoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0IHN1Z2dlc3Rpb25zRGMoZGF0YTogSURhdGFDb250ZXh0PFRFbnRpdHk+KSB7XG4gICAgdGhpcy5hdXRvQ2xlYW5VcCgpO1xuICAgIHRoaXMuc3VnZ2VzdGlvbnNEYyQubmV4dChkYXRhKTtcbiAgICB0aGlzLm9uU3VnZ2VzdGlvbnNEY0NoYW5nZWQoZGF0YSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN1Z2dlc3Rpb25zRGMoKTogSURhdGFDb250ZXh0PFRFbnRpdHk+IHtcbiAgICByZXR1cm4gdGhpcy5zdWdnZXN0aW9uc0RjJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB2YWx1ZVRlbXBsYXRlKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy5fdmFsdWVUZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZVRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZVRlbXBsYXRlIHx8IHRoaXMudmFsdWVUZW1wbGF0ZVF1ZXJ5O1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHVwZGF0ZUZpbHRlcih1cGRhdGVkRmlsdGVyPzogRmlsdGVyKTogdm9pZCB7XG4gICAgdGhpcy5fZmlsdGVyQ29udGV4dC51cGRhdGVGaWx0ZXIodXBkYXRlZEZpbHRlcik7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRmlsdGVycyh1cGRhdGVkRmlsdGVycz86IEZpbHRlcltdKTogdm9pZCB7XG4gICAgdGhpcy5fZmlsdGVyQ29udGV4dC51cGRhdGVGaWx0ZXJzKHVwZGF0ZWRGaWx0ZXJzKTtcbiAgfVxuXG4gIHB1YmxpYyByZXBsYWNlRmlsdGVycyhuZXdGaWx0ZXJzPzogRmlsdGVyW10pIHtcbiAgICB0aGlzLl9maWx0ZXJDb250ZXh0LnJlcGxhY2VGaWx0ZXJzKG5ld0ZpbHRlcnMpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyRmlsdGVycygpOiB2b2lkIHtcbiAgICB0aGlzLl9maWx0ZXJDb250ZXh0LmNsZWFyKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlU3RhdGUoc3RhdGU6IEVsZGVyU2VsZWN0Q29tcG9uZW50U3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlJC5uZXh0KHN0YXRlKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBBYnN0cmFjdCBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBPY2N1cnMgd2hlbiB0aGUgc3VnZ2VzdGlvbnMgZGF0YS1jb250ZXh0IGhhcyBjaGFuZ2VkXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb25TdWdnZXN0aW9uc0RjQ2hhbmdlZChkYXRhOiBJRGF0YUNvbnRleHQ8VEVudGl0eT4pOiB2b2lkO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBJbnRlcm5hbCBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByb3RlY3RlZCBnZXRFbnRpdHlJZChlbnRpdHk6IFRFbnRpdHkpOiBUSWQge1xuICAgIHJldHVybiB0aGlzLnN1Z2dlc3Rpb25zRGM/LmRhdGFTb3VyY2U/LmdldElkKGVudGl0eSkgfHwgZW50aXR5O1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzRXF1YWwoYTogVEVudGl0eSwgYjogVEVudGl0eSk6IGJvb2xlYW4ge1xuICAgIGlmIChhID09PSBiKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNFbXB0eShhKSAmJiB0aGlzLmlzRW1wdHkoYikpIHsgLy8gSEFDSzogSGFuZGxlIGVtcHR5IHN0cmluZyBhcyB1bmRlZmluZWQuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ2V0RW50aXR5SWQoYSkgPT09IHRoaXMuZ2V0RW50aXR5SWQoYik7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNFbXB0eShhOiBURW50aXR5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChhID09PSBudWxsIHx8IGEgPT09IHVuZGVmaW5lZCB8fCA8YW55PmEgPT09ICcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtcyBjbGVhbiB1cCBvZiB0aGUgY3VycmVudCBkYXRhIGNvbnRleHQgaWYgYXV0byBjbGVhbiB1cCBpcyBlbmFibGVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGF1dG9DbGVhblVwKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsZWFuVXAgJiYgdGhpcy5zdWdnZXN0aW9uc0RjKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ1JlbGVhc2luZyBEYXRhQ29udGV4dCByZXNvdXJjZXMgdG8gcHJldmVudCBtZW1vcnkgbGVhay4gW2NsZWFuVXBdPVwidHJ1ZVwiJyk7XG4gICAgICB0aGlzLnN1Z2dlc3Rpb25zRGMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJvcGVydHlTdHJpbmdWYWx1ZSh2YWx1ZTogVEVudGl0eSwgcHJvcGVydHk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgIHJldHVybiAoPGFueT52YWx1ZSlbcHJvcGVydHldO1xuICAgIH1cblxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICB9XG59XG4iXX0=
258
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VsZWN0LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC9lbGRlci1zZWxlY3QtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFVLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUNwRixPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFHbkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0scURBQXFELENBQUM7QUFHdkYsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDekUsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFFckYsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzNELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7QUFNNUQsTUFBTSxPQUFPLHlCQUF5QjtJQXlCcEMsWUFDa0IsSUFBYSxFQUNiLE9BQWdCLEVBQ2hCLEtBQWE7UUFGYixTQUFJLEdBQUosSUFBSSxDQUFTO1FBQ2IsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixVQUFLLEdBQUwsS0FBSyxDQUFRO0lBRS9CLENBQUM7SUE1Qk0s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LEtBQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMvQjtRQUVELE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7OzRHQTFQbUIsZUFBZTtnR0FBZixlQUFlLHdjQTZDckIseUJBQXlCLDJCQUFTLFdBQVcsNEVBSTdDLDRCQUE0QjsyRkFqRHRCLGVBQWU7a0JBRnBDLFNBQVM7NkZBeUJELE9BQU87c0JBRGIsS0FBSztnQkFZQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJQyxLQUFLO3NCQURYLEtBQUs7Z0JBT0Msa0JBQWtCO3NCQUR4QixZQUFZO3VCQUFDLHlCQUF5QixFQUFFLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUtuRSxjQUFjO3NCQURwQixZQUFZO3VCQUFDLDRCQUE0QjtnQkFJbkMsa0JBQWtCO3NCQUR4QixLQUFLO2dCQUlDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkF1Q0ssU0FBUztzQkFEbkIsS0FBSztnQkFhSyxlQUFlO3NCQUR6QixLQUFLO2dCQU1LLHVCQUF1QjtzQkFEakMsS0FBSztnQkFNSyxPQUFPO3NCQURqQixLQUFLO2dCQVVLLFVBQVU7c0JBRHBCLEtBQUs7Z0JBUUssSUFBSTtzQkFEZCxLQUFLO2dCQThCSyxhQUFhO3NCQUR2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb250ZW50Q2hpbGQsIERpcmVjdGl2ZSwgSW5qZWN0aW9uVG9rZW4sIElucHV0LCBOZ1pvbmUsIFRlbXBsYXRlUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUZpZWxkQmFzZUNvbXBvbmVudH0gZnJvbSAnLi4vLi4vY29tbW9uL2Zvcm1zL2Zvcm0tZmllbGQtYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge0lEYXRhQ29udGV4dH0gZnJvbSAnLi4vLi4vY29tbW9uL2RhdGEvZGF0YS1jb250ZXh0L2RhdGEtY29udGV4dCc7XG5pbXBvcnQge0lEYXRhU291cmNlfSBmcm9tICcuLi8uLi9jb21tb24vZGF0YS9kYXRhc291cmNlL2RhdGEtc291cmNlJztcbmltcG9ydCB7RGF0YUNvbnRleHRCdWlsZGVyfSBmcm9tICcuLi8uLi9jb21tb24vZGF0YS9kYXRhLWNvbnRleHQvZGF0YS1jb250ZXh0LWJ1aWxkZXInO1xuaW1wb3J0IHtGaWx0ZXJ9IGZyb20gJy4uLy4uL2NvbW1vbi9kYXRhL2ZpbHRlcic7XG5pbXBvcnQge1NvcnR9IGZyb20gJy4uLy4uL2NvbW1vbi9kYXRhL3NvcnQnO1xuaW1wb3J0IHtFbGRlclNlbGVjdFZhbHVlRGlyZWN0aXZlfSBmcm9tICcuL2VsZGVyLXNlbGVjdC12YWx1ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtTZWxlY3Rpb25Nb2RlbFBvcHVwRGlyZWN0aXZlfSBmcm9tICcuL3BvcHVwL3NlbGVjdGlvbi1tb2RlbC1wb3B1cC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtEYXRhQ29udGV4dFN0YXR1c30gZnJvbSAnLi4vLi4vY29tbW9uL2RhdGEvZGF0YS1jb250ZXh0L2RhdGEtY29udGV4dC1zdGF0dXMnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge3J1bkluWm9uZX0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzL25nLXpvbmUtdXRpbHMnO1xuaW1wb3J0IHtGaWx0ZXJDb250ZXh0fSBmcm9tICcuLi8uLi9jb21tb24vZGF0YS9maWx0ZXItY29udGV4dCc7XG5pbXBvcnQge2NvZXJjZUJvb2xlYW5Qcm9wZXJ0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuZXhwb3J0IHR5cGUgVGV4dFJlc29sdmVyRm4gPSAodmFsdWU6IGFueSkgPT4gc3RyaW5nO1xuXG5cblxuZXhwb3J0IGNsYXNzIEVsZGVyU2VsZWN0Q29tcG9uZW50U3RhdGUge1xuXG4gIHB1YmxpYyBzdGF0aWMgZnJvbURhdGFDb250ZXh0KGRjU3RhdGU6IERhdGFDb250ZXh0U3RhdHVzKTogRWxkZXJTZWxlY3RDb21wb25lbnRTdGF0ZSB7XG4gICAgaWYgKGRjU3RhdGUubG9hZGluZykge1xuICAgICAgcmV0dXJuIEVsZGVyU2VsZWN0Q29tcG9uZW50U3RhdGUubG9hZGluZygpO1xuICAgIH0gZWxzZSBpZiAoZGNTdGF0ZS5lcnJvcikge1xuICAgICAgcmV0dXJuIEVsZGVyU2VsZWN0Q29tcG9uZW50U3RhdGUuZXJyb3IoZGNTdGF0ZS5lcnJvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBFbGRlclNlbGVjdENvbXBvbmVudFN0YXRlLmlkbGUoKTtcbiAgICB9XG4gIH1cblxuXG4gIHB1YmxpYyBzdGF0aWMgaWRsZSgpOiBFbGRlclNlbGVjdENvbXBvbmVudFN0YXRlIHtcbiAgICByZXR1cm4gbmV3IEVsZGVyU2VsZWN0Q29tcG9uZW50U3RhdGUodHJ1ZSwgZmFsc2UsIG51bGwpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBsb2FkaW5nKCk6IEVsZGVyU2VsZWN0Q29tcG9uZW50U3RhdGUge1xuICAgIHJldHVybiBuZXcgRWxkZXJTZWxlY3RDb21wb25lbnRTdGF0ZShmYWxzZSwgdHJ1ZSwgbnVsbCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGVycm9yKGVycm9yOiBzdHJpbmcpOiBFbGRlclNlbGVjdENvbXBvbmVudFN0YXRlIHtcbiAgICByZXR1cm4gbmV3IEVsZGVyU2VsZWN0Q29tcG9uZW50U3RhdGUoZmFsc2UsIGZhbHNlLCBlcnJvcik7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgaWRsZTogYm9vbGVhbixcbiAgICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZzogYm9vbGVhbixcbiAgICBwdWJsaWMgcmVhZG9ubHkgZXJyb3I6IHN0cmluZ1xuICApIHtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgRUxERVJfU0VMRUNUX0JBU0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48RWxkZXJTZWxlY3RCYXNlPGFueSwgYW55LCBhbnk+PignRWxkZXJTZWxlY3RCYXNlJyk7XG5cblxuLyoqXG4gKiBCYXNlIGNvbXBvbmVudCBmb3IgRWxkZXIgU2VsZWN0aW9uIENvbnRyb2xzLlxuICpcbiAqICBFbGRlciBTZWxlY3Rpb24gaGFzIHRoZSBmb2xsb3dpbmcgYWJzdHJhY3QgY29uY2VwdDpcbiAqXG4gKiAtIFN1Z2dlc3Rpb24tTW9kZWw6IEEgRGF0YVNvdXJjZSBhbmQgZGVyaXZlZCBEYXRhQ29udGV4dCBmb3IgdGhlIChhdXRvLWNvbXBsZXRlKSBzdWdnZXN0aW9ucy5cbiAqXG4gKiBAcGFyYW0gVElEIEVudGl0eSBJZCBUeXBlXG4gKiBAcGFyYW0gVCBFbnRpdHkgVHlwZVxuICogQHBhcmFtIFRWYWx1ZSBWYWx1ZSBiYWNraW5nIHRoZSBjb250cm9sLiBDYW4gYmUgdGhlIGVudGl0eSwgdGhlIGlkIG9yIHNvbWV0aGluZyBlbHNlLlxuICovXG5ARGlyZWN0aXZlKClcbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRWxkZXJTZWxlY3RCYXNlPFRJZCwgVEVudGl0eSwgVFZhbHVlPiBleHRlbmRzIEZvcm1GaWVsZEJhc2VDb21wb25lbnQ8VFZhbHVlPiB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsdGVyQ29udGV4dCA9IG5ldyBGaWx0ZXJDb250ZXh0KCk7XG5cbiAgcHJpdmF0ZSBfdmFsdWVBc0lkOiBib29sZWFuO1xuXG4gIHByb3RlY3RlZCB0aW1lb3V0QWZ0ZXJNcyA9IDUwMDA7XG5cbiAgLyoqXG4gICAqIERlZmluZSBpZiBlbGRlci1zZWxlY3Qgc2hvdWxkIGNsZWFuIHVwIHRoZVxuICAgKiBkYXRhLWNvbnRleHQgcmVzb3VyY2VzIGZvciB5b3UuXG4gICAqXG4gICAqIEluIG1vcmUgYWR2YW5jZWQgc2NlbmFyaW9zIHdoZXJlIHlvdSBwbGFuIHRvIHJldXNlIHRoZSBzYW1lIGRhdGEtY29udGV4dFxuICAgKiBzZXQgdGhpcyB0byBmYWxzZSBhbmQgcmVsZWFzZSB0aGUgcmVzb3VyY2VzIHlvdXJzZWxmLiAoZGF0YUNvbnRleHQuY2xvc2UpXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgY2xlYW5VcCA9IHRydWU7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRpc3BsYXlQcm9wZXJ0eVJlc29sdmVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGV4dFJlc29sdmVyRm4+KCh2YWx1ZTogVEVudGl0eSkgPT4gdGhpcy5wcm9wZXJ0eVN0cmluZ1ZhbHVlKHZhbHVlLCBudWxsKSk7XG5cbiAgLyoqIFVuZGVybHlpbmcgZGF0YSBjb250ZXh0LiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3VnZ2VzdGlvbnNEYyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElEYXRhQ29udGV4dDxURW50aXR5Pj4obnVsbCk7XG5cbiAgLyoqXG4gICAqIFBhZ2Ugc2l6ZS4gKFVzZWQgZm9yIGluZmluaXRlIHNjcm9sbGluZyBjaHVua3MpXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcGFnZVNpemUgPSAxMDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcXVlcnlGaWx0ZXIgPSAncXVlcnknO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzb3J0czogU29ydFtdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb24gdGVtcGxhdGUgdG8gY3VzdG9taXplIHRoZSB1aSBsb29rLlxuICAgKi9cbiAgQENvbnRlbnRDaGlsZChFbGRlclNlbGVjdFZhbHVlRGlyZWN0aXZlLCB7cmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZX0pXG4gIHB1YmxpYyB2YWx1ZVRlbXBsYXRlUXVlcnk6IFRlbXBsYXRlUmVmPGFueT47XG4gIHByaXZhdGUgX3ZhbHVlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQENvbnRlbnRDaGlsZChTZWxlY3Rpb25Nb2RlbFBvcHVwRGlyZWN0aXZlKVxuICBwdWJsaWMgc2VsZWN0aW9uUG9wdXA6IFNlbGVjdGlvbk1vZGVsUG9wdXBEaXJlY3RpdmU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGlzT3B0aW9uRGlzYWJsZWRGbjogKG9wdGlvbjogVEVudGl0eSkgPT4gYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaXNPcHRpb25IaWRkZW5GbjogKG9wdGlvbjogVEVudGl0eSkgPT4gYm9vbGVhbjtcblxuICBwdWJsaWMgcmVhZG9ubHkgc3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxFbGRlclNlbGVjdENvbXBvbmVudFN0YXRlPihFbGRlclNlbGVjdENvbXBvbmVudFN0YXRlLmlkbGUoKSk7XG4gIHB1YmxpYyByZWFkb25seSBtZXJnZWRTdGF0ZSQ6IE9ic2VydmFibGU8RWxkZXJTZWxlY3RDb21wb25lbnRTdGF0ZT47XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgem9uZTogTmdab25lLFxuICApIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5tZXJnZWRTdGF0ZSQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuc3VnZ2VzdGlvbnNEYyQucGlwZShmaWx0ZXIoZGMgPT4gISFkYyksIHN3aXRjaE1hcChkYyA9PiBkYy5zdGF0dXMpKSxcbiAgICAgIHRoaXMuc3RhdGUkXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW2RjU3RhdGUsIHN0YXRlXSkgPT4ge1xuICAgICAgICBpZiAoZGNTdGF0ZS5pZGxlKSB7XG4gICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBFbGRlclNlbGVjdENvbXBvbmVudFN0YXRlLmZyb21EYXRhQ29udGV4dChkY1N0YXRlKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBydW5JblpvbmUodGhpcy56b25lKVxuICAgICk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHZhbHVlQXNJZCh2YWx1ZUFzSWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl92YWx1ZUFzSWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWVBc0lkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWVBc0lkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZUFzSWQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHByb3BlcnR5IHVzZWQgdG8gZGlzcGxheSB0aGUgdmFsdWVzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNwbGF5UHJvcGVydHkocHJvcGVydHk6IHN0cmluZykge1xuICAgIHRoaXMuZGlzcGxheVByb3BlcnR5UmVzb2x2ZXIgPSAodmFsdWUgPT4gdGhpcy5wcm9wZXJ0eVN0cmluZ1ZhbHVlKHZhbHVlLCBwcm9wZXJ0eSkpO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNwbGF5UHJvcGVydHlSZXNvbHZlcihyZXNvbHZlcjogVGV4dFJlc29sdmVyRm4pIHtcbiAgICB0aGlzLmRpc3BsYXlQcm9wZXJ0eVJlc29sdmVyJC5uZXh0KHJlc29sdmVyKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZmlsdGVycyhmaWx0ZXJzOiBGaWx0ZXJbXSkge1xuICAgIHRoaXMucmVwbGFjZUZpbHRlcnMoZmlsdGVycyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpbHRlcnMoKTogRmlsdGVyW10ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJDb250ZXh0LmZpbHRlcnNTbmFwc2hvdDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGF0YVNvdXJjZShzb3VyY2U6IElEYXRhU291cmNlPFRFbnRpdHk+KSB7XG4gICAgdGhpcy5zdWdnZXN0aW9uc0RjID0gRGF0YUNvbnRleHRCdWlsZGVyLnN0YXJ0PFRFbnRpdHk+KClcbiAgICAgIC5wYWdlU2l6ZSh0aGlzLnBhZ2VTaXplKVxuICAgICAgLmJ1aWxkKHNvdXJjZSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRhdGEoZGF0YTogQXJyYXk8VEVudGl0eT4gfCBJRGF0YUNvbnRleHQ8VEVudGl0eT4pIHtcblxuICAgIHRoaXMuYXV0b0NsZWFuVXAoKTtcblxuICAgIGlmIChkYXRhIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHRoaXMuc3VnZ2VzdGlvbnNEYyA9IERhdGFDb250ZXh0QnVpbGRlci5zdGFydDxURW50aXR5PigpXG4gICAgICAgIC5sb2NhbFNvcnQoKVxuICAgICAgICAuYnVpbGRMb2NhbChkYXRhKTsgLy8gTWVtb3J5IGxlYWtcbiAgICAgIHRoaXMuc3VnZ2VzdGlvbnNEYy5zdGFydCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zRGMgPSBkYXRhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdWdnZXN0aW9uc0RjID0gRGF0YUNvbnRleHRCdWlsZGVyLnN0YXJ0PFRFbnRpdHk+KCkuYnVpbGRFbXB0eSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXQgc3VnZ2VzdGlvbnNEYyhkYXRhOiBJRGF0YUNvbnRleHQ8VEVudGl0eT4pIHtcbiAgICB0aGlzLmF1dG9DbGVhblVwKCk7XG4gICAgdGhpcy5zdWdnZXN0aW9uc0RjJC5uZXh0KGRhdGEpO1xuICAgIHRoaXMub25TdWdnZXN0aW9uc0RjQ2hhbmdlZChkYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3VnZ2VzdGlvbnNEYygpOiBJRGF0YUNvbnRleHQ8VEVudGl0eT4ge1xuICAgIHJldHVybiB0aGlzLnN1Z2dlc3Rpb25zRGMkLmdldFZhbHVlKCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHZhbHVlVGVtcGxhdGUodGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICB0aGlzLl92YWx1ZVRlbXBsYXRlID0gdGVtcGxhdGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbHVlVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlVGVtcGxhdGUgfHwgdGhpcy52YWx1ZVRlbXBsYXRlUXVlcnk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgdXBkYXRlRmlsdGVyKHVwZGF0ZWRGaWx0ZXI/OiBGaWx0ZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9maWx0ZXJDb250ZXh0LnVwZGF0ZUZpbHRlcih1cGRhdGVkRmlsdGVyKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVGaWx0ZXJzKHVwZGF0ZWRGaWx0ZXJzPzogRmlsdGVyW10pOiB2b2lkIHtcbiAgICB0aGlzLl9maWx0ZXJDb250ZXh0LnVwZGF0ZUZpbHRlcnModXBkYXRlZEZpbHRlcnMpO1xuICB9XG5cbiAgcHVibGljIHJlcGxhY2VGaWx0ZXJzKG5ld0ZpbHRlcnM/OiBGaWx0ZXJbXSkge1xuICAgIHRoaXMuX2ZpbHRlckNvbnRleHQucmVwbGFjZUZpbHRlcnMobmV3RmlsdGVycyk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJGaWx0ZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuX2ZpbHRlckNvbnRleHQuY2xlYXIoKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTdGF0ZShzdGF0ZTogRWxkZXJTZWxlY3RDb21wb25lbnRTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUkLm5leHQoc3RhdGUpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEFic3RyYWN0IEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIE9jY3VycyB3aGVuIHRoZSBzdWdnZXN0aW9ucyBkYXRhLWNvbnRleHQgaGFzIGNoYW5nZWRcbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBvblN1Z2dlc3Rpb25zRGNDaGFuZ2VkKGRhdGE6IElEYXRhQ29udGV4dDxURW50aXR5Pik6IHZvaWQ7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEludGVybmFsIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJvdGVjdGVkIGdldEVudGl0eUlkKGVudGl0eTogVEVudGl0eSk6IFRJZCB7XG4gICAgcmV0dXJuIHRoaXMuc3VnZ2VzdGlvbnNEYz8uZGF0YVNvdXJjZT8uZ2V0SWQoZW50aXR5KSB8fCBlbnRpdHk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNFcXVhbChhOiBURW50aXR5LCBiOiBURW50aXR5KTogYm9vbGVhbiB7XG4gICAgaWYgKGEgPT09IGIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0VtcHR5KGEpICYmIHRoaXMuaXNFbXB0eShiKSkgeyAvLyBIQUNLOiBIYW5kbGUgZW1wdHkgc3RyaW5nIGFzIHVuZGVmaW5lZC5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRFbnRpdHlJZChhKSA9PT0gdGhpcy5nZXRFbnRpdHlJZChiKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0VtcHR5KGE6IFRFbnRpdHkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKGEgPT09IG51bGwgfHwgYSA9PT0gdW5kZWZpbmVkIHx8IDxhbnk+YSA9PT0gJycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm1zIGNsZWFuIHVwIG9mIHRoZSBjdXJyZW50IGRhdGEgY29udGV4dCBpZiBhdXRvIGNsZWFuIHVwIGlzIGVuYWJsZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXV0b0NsZWFuVXAoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2xlYW5VcCAmJiB0aGlzLnN1Z2dlc3Rpb25zRGMpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnUmVsZWFzaW5nIERhdGFDb250ZXh0IHJlc291cmNlcyB0byBwcmV2ZW50IG1lbW9yeSBsZWFrLiBbY2xlYW5VcF09XCJ0cnVlXCInKTtcbiAgICAgIHRoaXMuc3VnZ2VzdGlvbnNEYy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBwcm9wZXJ0eVN0cmluZ1ZhbHVlKHZhbHVlOiBURW50aXR5LCBwcm9wZXJ0eTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgcmV0dXJuICg8YW55PnZhbHVlKVtwcm9wZXJ0eV07XG4gICAgfVxuXG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIH1cbn1cbiJdfQ==
@@ -4417,6 +4417,57 @@ class DelegateContinuableDataSource extends DelegateDataSource {
4417
4417
  }
4418
4418
  }
4419
4419
 
4420
+ class FilterUtil {
4421
+ static filterData(data, filters) {
4422
+ FilterUtil.logger.debug('Filtering data with ' + data.length + ' items.', filters);
4423
+ if (filters && filters.length > 0) {
4424
+ for (const filter of filters) {
4425
+ data = data.filter(e => FilterUtil.matches(e, filter));
4426
+ }
4427
+ }
4428
+ return data;
4429
+ }
4430
+ static matches(entity, filter) {
4431
+ if (filter.value === null || filter.value === undefined) {
4432
+ return true;
4433
+ }
4434
+ let value;
4435
+ if (entity === null || entity === undefined) {
4436
+ value = null;
4437
+ }
4438
+ else if (typeof entity === 'object') {
4439
+ value = entity[filter.key];
4440
+ }
4441
+ else {
4442
+ value = String(entity); // Support filtering primitive values
4443
+ }
4444
+ if (Array.isArray(filter.value)) {
4445
+ for (const val of filter.value) {
4446
+ if (FilterUtil.matchesValue(value, val)) {
4447
+ return true;
4448
+ }
4449
+ }
4450
+ return false;
4451
+ }
4452
+ else {
4453
+ return FilterUtil.matchesValue(value, filter.value);
4454
+ }
4455
+ }
4456
+ static matchesValue(haystack, needle) {
4457
+ if (haystack === needle) {
4458
+ return true;
4459
+ }
4460
+ if (haystack === null || haystack === undefined) {
4461
+ return false;
4462
+ }
4463
+ const str = String(haystack);
4464
+ const match = str.toLowerCase().startsWith(needle.toLowerCase());
4465
+ // FilterUtil.logger.debug('Haystack: ' + str + ' starts with needle: ' + needle + ' --> ' + match);
4466
+ return match;
4467
+ }
4468
+ }
4469
+ FilterUtil.logger = LoggerFactory.getLogger(FilterUtil.constructor.name);
4470
+
4420
4471
  /**
4421
4472
  * Provides the ability to build a IDataContext<T>.
4422
4473
  */
@@ -4542,12 +4593,12 @@ class DataContextBuilder {
4542
4593
  * *
4543
4594
  **************************************************************************/
4544
4595
  buildLocal(items, idProperty) {
4545
- return this.build(LocalListDataSource.from(items, idProperty));
4596
+ return this.build(LocalListDataSource.from(items, idProperty, this._localSort, FilterUtil.filterData));
4546
4597
  }
4547
4598
  buildLocalActivePaged(data, idProperty) {
4548
4599
  this._skipLocalSort = true;
4549
4600
  this.activePaged();
4550
- return this.build(LocalPagedDataSource.from(data, idProperty, this._localSort));
4601
+ return this.build(LocalPagedDataSource.from(data, idProperty, this._localSort, FilterUtil.filterData));
4551
4602
  }
4552
4603
  /***************************************************************************
4553
4604
  * *
@@ -6107,48 +6158,6 @@ class PropertyPathUtil {
6107
6158
  }
6108
6159
  }
6109
6160
 
6110
- class FilterUtil {
6111
- static filterData(data, filters) {
6112
- FilterUtil.logger.debug('Filtering data with ' + data.length + ' items.', filters);
6113
- if (filters && filters.length > 0) {
6114
- for (const filter of filters) {
6115
- data = data.filter(e => FilterUtil.matches(e, filter));
6116
- }
6117
- }
6118
- return data;
6119
- }
6120
- static matches(entity, filter) {
6121
- if (filter.value === null || filter.value === undefined) {
6122
- return true;
6123
- }
6124
- const value = entity[filter.key];
6125
- if (Array.isArray(filter.value)) {
6126
- for (const val of filter.value) {
6127
- if (FilterUtil.matchesValue(value, val)) {
6128
- return true;
6129
- }
6130
- }
6131
- return false;
6132
- }
6133
- else {
6134
- return FilterUtil.matchesValue(value, filter.value);
6135
- }
6136
- }
6137
- static matchesValue(haystack, needle) {
6138
- if (haystack === needle) {
6139
- return true;
6140
- }
6141
- if (haystack === null || haystack === undefined) {
6142
- return false;
6143
- }
6144
- const str = String(haystack);
6145
- const match = str.toLowerCase().startsWith(needle.toLowerCase());
6146
- // FilterUtil.logger.debug('Haystack: ' + str + ' starts with needle: ' + needle + ' --> ' + match);
6147
- return match;
6148
- }
6149
- }
6150
- FilterUtil.logger = LoggerFactory.getLogger(FilterUtil.constructor.name);
6151
-
6152
6161
  class NextNumberUtil {
6153
6162
  /***************************************************************************
6154
6163
  * *
@@ -20414,6 +20423,7 @@ class ElderSelectBase extends FormFieldBaseComponent {
20414
20423
  this.autoCleanUp();
20415
20424
  if (data instanceof Array) {
20416
20425
  this.suggestionsDc = DataContextBuilder.start()
20426
+ .localSort()
20417
20427
  .buildLocal(data); // Memory leak
20418
20428
  this.suggestionsDc.start();
20419
20429
  }