@ethlete/query 4.7.5 → 4.7.6

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.
@@ -1,5 +1,6 @@
1
1
  import { BehaviorSubject, filter, interval, map, of, shareReplay, skip, Subject, switchMap, takeUntil, takeWhile, tap, } from 'rxjs';
2
2
  import { isBearerAuthProvider } from '../auth';
3
+ import { shouldCacheQuery } from '../query-client';
3
4
  import { request } from '../request';
4
5
  import { computeQueryBody, computeQueryHeaders, computeQueryMethod, isGqlQueryConfig, isQueryStateLoading, isQueryStatePrepared, isQueryStateSuccess, takeUntilResponse, } from './query.utils';
5
6
  let _nextQueryId = 0;
@@ -61,24 +62,29 @@ export class Query {
61
62
  get _enableSmartPolling() {
62
63
  return this._queryConfig.enableSmartPolling ?? true;
63
64
  }
64
- /**
65
- * @internal
66
- */
67
- get _arguments() {
68
- return this._args;
69
- }
70
65
  get store() {
71
66
  return this._queryConfig.entity?.store ?? null;
72
67
  }
73
- constructor(_client, _queryConfig,
68
+ get canBeCached() {
69
+ return shouldCacheQuery(this._queryConfig.method);
70
+ }
71
+ constructor(_client,
72
+ /**
73
+ * @internal
74
+ */
75
+ _queryConfig,
76
+ /**
77
+ * @internal
78
+ */
79
+ _routeWithParams,
74
80
  /**
75
81
  * @internal
76
82
  */
77
- _routeWithParams, _args) {
83
+ _arguments) {
78
84
  this._client = _client;
79
85
  this._queryConfig = _queryConfig;
80
86
  this._routeWithParams = _routeWithParams;
81
- this._args = _args;
87
+ this._arguments = _arguments;
82
88
  this._id = _nextQueryId++;
83
89
  this._currentLocalId = 0;
84
90
  this._pollingSubscription = null;
@@ -115,8 +121,8 @@ export class Query {
115
121
  }
116
122
  this._state$.next({ type: "LOADING" /* QueryStateType.Loading */, meta });
117
123
  const method = computeQueryMethod({ config: queryConfig, client: this._client });
118
- const body = computeQueryBody({ config: queryConfig, client: this._client, args: this._args, method });
119
- const headers = computeQueryHeaders({ client: this._client, config: queryConfig, args: this._args });
124
+ const body = computeQueryBody({ config: queryConfig, client: this._client, args: this._arguments, method });
125
+ const headers = computeQueryHeaders({ client: this._client, config: queryConfig, args: this._arguments });
120
126
  request({
121
127
  urlWithParams: this._routeWithParams,
122
128
  method,
@@ -204,9 +210,9 @@ export class Query {
204
210
  ? response['data']
205
211
  : response;
206
212
  if (this._queryConfig.entity && this._queryConfig.entity.set) {
207
- const id = this._queryConfig.entity?.id({ args: this._args, response: responseData });
213
+ const id = this._queryConfig.entity?.id({ args: this._arguments, response: responseData });
208
214
  this._queryConfig.entity?.set({
209
- args: this._args,
215
+ args: this._arguments,
210
216
  response: responseData,
211
217
  id,
212
218
  store: this._queryConfig.entity.store,
@@ -250,10 +256,10 @@ export class Query {
250
256
  if (!isQueryStateSuccess(s) || !this._queryConfig.entity?.get) {
251
257
  return of(s);
252
258
  }
253
- const id = this._queryConfig.entity.id({ args: this._args, response: s.response });
259
+ const id = this._queryConfig.entity.id({ args: this._arguments, response: s.response });
254
260
  return this._queryConfig.entity
255
- .get({ args: this._args, id, response: s.response, store: this._queryConfig.entity.store })
261
+ .get({ args: this._arguments, id, response: s.response, store: this._queryConfig.entity.store })
256
262
  .pipe(map((v) => ({ ...s, response: v })));
257
263
  }
258
264
  }
259
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnkvcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFDZixNQUFNLEVBQ04sUUFBUSxFQUNSLEdBQUcsRUFFSCxFQUFFLEVBQ0YsV0FBVyxFQUNYLElBQUksRUFDSixPQUFPLEVBRVAsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRy9DLE9BQU8sRUFBa0IsT0FBTyxFQUFnQixNQUFNLFlBQVksQ0FBQztBQWFuRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFFckIsTUFBTSxPQUFPLEtBQUs7SUF5QmhCLElBQVksT0FBTztRQUNqQixPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDdEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLDBCQUEwQjtnQkFBRSxPQUFPO1lBRXJFLElBQUksb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQ1YsU0FBUyxJQUFJLENBQUMsZ0JBQWdCLDhFQUE4RSxDQUM3RyxDQUFDO2FBQ0g7UUFDSCxDQUFD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Q0FBQztnQkFDYixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDaEIsSUFBSSw0Q0FBMEI7b0JBQzlCLElBQUk7aUJBQ0wsQ0FBQyxDQUFDO2dCQUVILE1BQU07YUFDUDtTQUNGO0lBQ0gsQ0FBQztJQUVPLGVBQWUsQ0FBQyxDQUF1QjtRQUM3QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7WUFDN0QsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFpQyxDQUFDO1NBQzlDO1FBRUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRW5GLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNO2FBQzVCLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDMUYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGZpbHRlcixcbiAgaW50ZXJ2YWwsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIHNoYXJlUmVwbGF5LFxuICBza2lwLFxuICBTdWJqZWN0LFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbiAgdGFrZVVudGlsLFxuICB0YWtlV2hpbGUsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBpc0JlYXJlckF1dGhQcm92aWRlciB9IGZyb20gJy4uL2F1dGgnO1xuaW1wb3J0IHsgRW50aXR5U3RvcmUgfSBmcm9tICcuLi9lbnRpdHknO1xuaW1wb3J0IHsgUXVlcnlDbGllbnQgfSBmcm9tICcuLi9xdWVyeS1jbGllbnQnO1xuaW1wb3J0IHsgSHR0cFN0YXR1c0NvZGUsIHJlcXVlc3QsIFJlcXVlc3RFdmVudCB9IGZyb20gJy4uL3JlcXVlc3QnO1xuaW1wb3J0IHtcbiAgQmFzZUFyZ3VtZW50cyxcbiAgRXhlY3V0ZVF1ZXJ5T3B0aW9ucyxcbiAgR3FsUXVlcnlDb25maWcsXG4gIFBvbGxDb25maWcsXG4gIFF1ZXJ5QXV0b1JlZnJlc2hDb25maWcsXG4gIFF1ZXJ5U3RhdGUsXG4gIFF1ZXJ5U3RhdGVNZXRhLFxuICBRdWVyeVN0YXRlVHlwZSxcbiAgUmVzdFF1ZXJ5Q29uZmlnLFxuICBSb3V0ZVR5cGUsXG59IGZyb20gJy4vcXVlcnkudHlwZXMnO1xuaW1wb3J0IHtcbiAgY29tcHV0ZVF1ZXJ5Qm9keSxcbiAgY29tcHV0ZVF1ZXJ5SGVhZGVycyxcbiAgY29tcHV0ZVF1ZXJ5TWV0aG9kLFxuICBpc0dxbFF1ZXJ5Q29uZmlnLFxuICBpc1F1ZXJ5U3RhdGVMb2FkaW5nLFxuICBpc1F1ZXJ5U3RhdGVQcmVwYXJlZCxcbiAgaXNRdWVyeVN0YXRlU3VjY2VzcyxcbiAgdGFrZVVudGlsUmVzcG9uc2UsXG59IGZyb20gJy4vcXVlcnkudXRpbHMnO1xuXG5sZXQgX25leHRRdWVyeUlkID0gMDtcblxuZXhwb3J0IGNsYXNzIFF1ZXJ5PFxuICBSZXNwb25zZSxcbiAgQXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCxcbiAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPixcbiAgU3RvcmUgZXh0ZW5kcyBFbnRpdHlTdG9yZTx1bmtub3duPixcbiAgRGF0YSxcbiAgSWQsXG4+IHtcbiAgcmVhZG9ubHkgX2lkID0gX25leHRRdWVyeUlkKys7XG5cbiAgcHJpdmF0ZSBfY3VycmVudExvY2FsSWQgPSAwO1xuICBwcml2YXRlIF9wb2xsaW5nU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfb25BYm9ydCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9jdXJyZW50UG9sbENvbmZpZzogUG9sbENvbmZpZyB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9pc1BvbGxpbmdQYXVzZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFF1ZXJ5U3RhdGU8UmVzcG9uc2U+Pih7XG4gICAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuUHJlcGFyZWQsXG4gICAgbWV0YTogeyBpZDogdGhpcy5fY3VycmVudExvY2FsSWQsIHRyaWdnZXJlZFZpYTogJ3Byb2dyYW0nIH0sXG4gIH0pO1xuXG4gIHByaXZhdGUgZ2V0IF9uZXh0SWQoKSB7XG4gICAgcmV0dXJuICsrdGhpcy5fY3VycmVudExvY2FsSWQ7XG4gIH1cblxuICBnZXQgc3RhdGUkKCk6IE9ic2VydmFibGU8UXVlcnlTdGF0ZTxEYXRhPj4ge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQucGlwZShcbiAgICAgIHRhcCgocykgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuX2NsaWVudC5jb25maWcubG9nZ2luZz8ucHJlcGFyZWRRdWVyeVN1YnNjcmlwdGlvbnMpIHJldHVybjtcblxuICAgICAgICBpZiAoaXNRdWVyeVN0YXRlUHJlcGFyZWQocykpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgUXVlcnkgJHt0aGlzLl9yb3V0ZVdpdGhQYXJhbXN9IHdhcyBzdWJzY3JpYmVkIHRvIGluIHRoZSBwcmVwYXJlZCBzdGF0ZS4gRGlkIHlvdSBmb3JnZXQgdG8gY2FsbCAuZXhlY3V0ZSgpP2AsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoKHMpID0+IHRoaXMuX3RyYW5zZm9ybVN0YXRlKHMpKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgcXVlcnkuXG4gICAqXG4gICAqICoqV2FybmluZyEqKiBUaGlzIGRpZmZlcnMgZnJvbSB0aGUgYHN0YXRlJGAgb2JzZXJ2YWJsZSBpbiB0aGF0IGl0IGRvZXMgbm90IHVzZSB0aGUgcXVlcnkgc3RvcmUuIFRodXMsIHRoZSByZXNwb25zZSBkYXRhIG1pZ2h0IGJlIG91dGRhdGVkLlxuICAgKiBVc2UgYHN0YXRlJGAgKG9yIGBmaXJzdFZhbHVlRnJvbShzdGF0ZSQpYCkgdGhlIG1vc3QgdXAtdG8tZGF0ZSBkYXRhLlxuICAgKi9cbiAgZ2V0IHJhd1N0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQudmFsdWU7XG4gIH1cblxuICBnZXQgaXNFeHBpcmVkKCkge1xuICAgIGlmICghaXNRdWVyeVN0YXRlU3VjY2Vzcyh0aGlzLl9zdGF0ZSQudmFsdWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgdHMgPSB0aGlzLl9zdGF0ZSQudmFsdWUubWV0YS5leHBpcmVzQXQ7XG5cbiAgICBpZiAoIXRzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHMgPCBEYXRlLm5vdygpO1xuICB9XG5cbiAgZ2V0IGlzSW5Vc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5vYnNlcnZlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCBfc3Vic2NyaWJlckNvdW50KCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQub2JzZXJ2ZXJzLmxlbmd0aDtcbiAgfVxuXG4gIGdldCBpc1BvbGxpbmcoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5fcG9sbGluZ1N1YnNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCBhdXRvUmVmcmVzaE9uQ29uZmlnKCkge1xuICAgIGNvbnN0IGJhc2UgPSB0aGlzLl9xdWVyeUNvbmZpZy5hdXRvUmVmcmVzaE9uID8/IHt9O1xuXG4gICAgY29uc3QgdHJhbnNmb3JtZWQ6IFJlYWRvbmx5PFF1ZXJ5QXV0b1JlZnJlc2hDb25maWc+ID0ge1xuICAgICAgcXVlcnlDbGllbnREZWZhdWx0SGVhZGVyc0NoYW5nZTogYmFzZS5xdWVyeUNsaWVudERlZmF1bHRIZWFkZXJzQ2hhbmdlID8/IHRydWUsXG4gICAgICB3aW5kb3dGb2N1czogYmFzZS53aW5kb3dGb2N1cyA/PyB0cnVlLFxuICAgIH07XG5cbiAgICByZXR1cm4gdHJhbnNmb3JtZWQ7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXQgX2VuYWJsZVNtYXJ0UG9sbGluZygpIHtcbiAgICByZXR1cm4gdGhpcy5fcXVlcnlDb25maWcuZW5hYmxlU21hcnRQb2xsaW5nID8/IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXQgX2FyZ3VtZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5fYXJncztcbiAgfVxuXG4gIGdldCBzdG9yZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcXVlcnlDb25maWcuZW50aXR5Py5zdG9yZSA/PyBudWxsO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfY2xpZW50OiBRdWVyeUNsaWVudCxcbiAgICBwcml2YXRlIF9xdWVyeUNvbmZpZzpcbiAgICAgIHwgUmVzdFF1ZXJ5Q29uZmlnPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBTdG9yZSwgRGF0YSwgSWQ+XG4gICAgICB8IEdxbFF1ZXJ5Q29uZmlnPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBTdG9yZSwgRGF0YSwgSWQ+LFxuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIF9yb3V0ZVdpdGhQYXJhbXM6IFJvdXRlLFxuICAgIHByaXZhdGUgX2FyZ3M6IEFyZ3VtZW50cyxcbiAgKSB7fVxuXG4gIGV4ZWN1dGUob3B0aW9uczogRXhlY3V0ZVF1ZXJ5T3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgeyBza2lwQ2FjaGUgPSBmYWxzZSwgX3RyaWdnZXJlZFZpYTogdHJpZ2dlcmVkVmlhID0gJ3Byb2dyYW0nLCBjYW5jZWxQcmV2aW91cyA9IGZhbHNlIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IHsgYXV0aFByb3ZpZGVyIH0gPSB0aGlzLl9jbGllbnQ7XG4gICAgY29uc3QgcXVlcnlDb25maWcgPSB0aGlzLl9xdWVyeUNvbmZpZztcblxuICAgIGlmICghdGhpcy5pc0V4cGlyZWQgJiYgIXNraXBDYWNoZSAmJiBpc1F1ZXJ5U3RhdGVTdWNjZXNzKHRoaXMucmF3U3RhdGUpKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBpZiAocXVlcnlDb25maWcuc2VjdXJlICYmICFhdXRoUHJvdmlkZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGV4ZWN1dGUgc2VjdXJlIHF1ZXJ5IHdpdGhvdXQgYXV0aCBwcm92aWRlcicpO1xuICAgIH1cblxuICAgIGNvbnN0IGlkID0gdGhpcy5fbmV4dElkO1xuICAgIGNvbnN0IG1ldGE6IFF1ZXJ5U3RhdGVNZXRhID0geyBpZCwgdHJpZ2dlcmVkVmlhIH07XG5cbiAgICBpZiAoaXNRdWVyeVN0YXRlTG9hZGluZyh0aGlzLnJhd1N0YXRlKSkge1xuICAgICAgaWYgKGNhbmNlbFByZXZpb3VzKSB7XG4gICAgICAgIHRoaXMuYWJvcnQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3N0YXRlJC5uZXh0KHsgdHlwZTogUXVlcnlTdGF0ZVR5cGUuTG9hZGluZywgbWV0YSB9KTtcblxuICAgIGNvbnN0IG1ldGhvZCA9IGNvbXB1dGVRdWVyeU1ldGhvZCh7IGNvbmZpZzogcXVlcnlDb25maWcsIGNsaWVudDogdGhpcy5fY2xpZW50IH0pO1xuICAgIGNvbnN0IGJvZHkgPSBjb21wdXRlUXVlcnlCb2R5KHsgY29uZmlnOiBxdWVyeUNvbmZpZywgY2xpZW50OiB0aGlzLl9jbGllbnQsIGFyZ3M6IHRoaXMuX2FyZ3MsIG1ldGhvZCB9KTtcbiAgICBjb25zdCBoZWFkZXJzID0gY29tcHV0ZVF1ZXJ5SGVhZGVycyh7IGNsaWVudDogdGhpcy5fY2xpZW50LCBjb25maWc6IHF1ZXJ5Q29uZmlnLCBhcmdzOiB0aGlzLl9hcmdzIH0pO1xuXG4gICAgcmVxdWVzdDxSZXNwb25zZT4oe1xuICAgICAgdXJsV2l0aFBhcmFtczogdGhpcy5fcm91dGVXaXRoUGFyYW1zLFxuICAgICAgbWV0aG9kLFxuICAgICAgYm9keSxcbiAgICAgIGhlYWRlcnMsXG4gICAgICByZXBvcnRQcm9ncmVzczogcXVlcnlDb25maWcucmVwb3J0UHJvZ3Jlc3MsXG4gICAgICByZXNwb25zZVR5cGU6IHF1ZXJ5Q29uZmlnLnJlc3BvbnNlVHlwZSxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogcXVlcnlDb25maWcud2l0aENyZWRlbnRpYWxzLFxuICAgICAgY2FjaGVBZGFwdGVyOiB0aGlzLl9jbGllbnQuY29uZmlnLnJlcXVlc3Q/LmNhY2hlQWRhcHRlcixcbiAgICAgIHJldHJ5Rm46IHRoaXMuX2NsaWVudC5jb25maWcucmVxdWVzdD8ucmV0cnlGbixcbiAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkFib3J0JCksXG4gICAgICAgIHRhcCgoc3RhdGUpID0+IHRoaXMuX3VwZGF0ZUVudGl0eVN0YXRlKHN0YXRlLCBtZXRhLCBvcHRpb25zKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFib3J0KCkge1xuICAgIHRoaXMuX29uQWJvcnQkLm5leHQoKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcG9sbChjb25maWc6IFBvbGxDb25maWcpIHtcbiAgICBpZiAodGhpcy5fcG9sbGluZ1N1YnNjcmlwdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5fY3VycmVudFBvbGxDb25maWcgPSBjb25maWc7XG5cbiAgICBjb25zdCBpbnRlcnZhbCQgPSBpbnRlcnZhbChjb25maWcuaW50ZXJ2YWwpO1xuICAgIGNvbnN0IHBvbGwkID0gaW50ZXJ2YWwkLnBpcGUoXG4gICAgICBza2lwKGNvbmZpZy50cmlnZ2VySW1tZWRpYXRlbHkgPyAwIDogMSksXG4gICAgICB0YWtlVW50aWwoY29uZmlnLnRha2VVbnRpbCksXG4gICAgICB0YWtlV2hpbGUoKCkgPT4gIXRoaXMuX2lzUG9sbGluZ1BhdXNlZCksXG4gICAgICBmaWx0ZXIoKCkgPT4gIWlzUXVlcnlTdGF0ZUxvYWRpbmcodGhpcy5fc3RhdGUkLnZhbHVlKSksXG4gICAgKTtcblxuICAgIHRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb24gPSBwb2xsJC5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4gdGhpcy5leGVjdXRlKHsgc2tpcENhY2hlOiB0cnVlLCBfdHJpZ2dlcmVkVmlhOiAncG9sbCcgfSksXG4gICAgICBjb21wbGV0ZTogKCkgPT4gdGhpcy5zdG9wUG9sbGluZygpLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdG9wUG9sbGluZygpIHtcbiAgICB0aGlzLl9wb2xsaW5nU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgIHRoaXMuX2N1cnJlbnRQb2xsQ29uZmlnID0gbnVsbDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcGF1c2VQb2xsaW5nKCkge1xuICAgIHRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fcG9sbGluZ1N1YnNjcmlwdGlvbiA9IG51bGw7XG5cbiAgICB0aGlzLl9pc1BvbGxpbmdQYXVzZWQgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICByZXN1bWVQb2xsaW5nKCkge1xuICAgIGlmICghdGhpcy5faXNQb2xsaW5nUGF1c2VkIHx8ICF0aGlzLl9jdXJyZW50UG9sbENvbmZpZykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5faXNQb2xsaW5nUGF1c2VkID0gZmFsc2U7XG5cbiAgICByZXR1cm4gdGhpcy5wb2xsKHsgLi4udGhpcy5fY3VycmVudFBvbGxDb25maWcsIHRyaWdnZXJJbW1lZGlhdGVseTogdHJ1ZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEJlYXJlckF1dGhQcm92aWRlcigpIHtcbiAgICBjb25zdCBhdXRoUHJvdmlkZXIgPSB0aGlzLl9jbGllbnQuYXV0aFByb3ZpZGVyO1xuXG4gICAgaWYgKGF1dGhQcm92aWRlciAmJiBpc0JlYXJlckF1dGhQcm92aWRlcihhdXRoUHJvdmlkZXIpKSB7XG4gICAgICByZXR1cm4gYXV0aFByb3ZpZGVyO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlRW50aXR5U3RhdGUoXG4gICAgcmVxdWVzdEV2ZW50OiBSZXF1ZXN0RXZlbnQ8UmVzcG9uc2U+LFxuICAgIG1ldGE6IFF1ZXJ5U3RhdGVNZXRhLFxuICAgIG9wdGlvbnM/OiBFeGVjdXRlUXVlcnlPcHRpb25zLFxuICApIHtcbiAgICBzd2l0Y2ggKHJlcXVlc3RFdmVudC50eXBlKSB7XG4gICAgICBjYXNlICdzdGFydCc6XG4gICAgICBjYXNlICdkZWxheS1yZXRyeSc6IHtcbiAgICAgICAgY29uc3QgeyB0eXBlLCByZXRyeURlbGF5LCByZXRyeU51bWJlciB9ID0gcmVxdWVzdEV2ZW50O1xuICAgICAgICBjb25zdCBuZXdNZXRhOiBRdWVyeVN0YXRlTWV0YSA9IHsgLi4ubWV0YSwgaXNXYWl0aW5nRm9yUmV0cnk6IHR5cGUgPT09ICdkZWxheS1yZXRyeScsIHJldHJ5RGVsYXksIHJldHJ5TnVtYmVyIH07XG5cbiAgICAgICAgdGhpcy5fc3RhdGUkLm5leHQoe1xuICAgICAgICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLkxvYWRpbmcsXG4gICAgICAgICAgbWV0YTogbmV3TWV0YSxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlICd1cGxvYWQtcHJvZ3Jlc3MnOlxuICAgICAgY2FzZSAnZG93bmxvYWQtcHJvZ3Jlc3MnOiB7XG4gICAgICAgIHRoaXMuX3N0YXRlJC5uZXh0KHtcbiAgICAgICAgICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5Mb2FkaW5nLFxuICAgICAgICAgIHByb2dyZXNzOiByZXF1ZXN0RXZlbnQucHJvZ3Jlc3MsXG4gICAgICAgICAgcGFydGlhbFRleHQ6ICdwYXJ0aWFsVGV4dCcgaW4gcmVxdWVzdEV2ZW50ID8gcmVxdWVzdEV2ZW50LnBhcnRpYWxUZXh0IDogdW5kZWZpbmVkLFxuICAgICAgICAgIG1ldGEsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlICdzdWNjZXNzJzoge1xuICAgICAgICBjb25zdCB7IHJlc3BvbnNlLCBleHBpcmVzSW5UaW1lc3RhbXAgfSA9IHJlcXVlc3RFdmVudDtcbiAgICAgICAgY29uc3QgaXNHcWwgPSBpc0dxbFF1ZXJ5Q29uZmlnKHRoaXMuX3F1ZXJ5Q29uZmlnKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2VEYXRhID1cbiAgICAgICAgICBpc0dxbCAmJiB0eXBlb2YgcmVzcG9uc2UgPT09ICdvYmplY3QnICYmICEhcmVzcG9uc2UgJiYgJ2RhdGEnIGluIHJlc3BvbnNlXG4gICAgICAgICAgICA/IChyZXNwb25zZVsnZGF0YSddIGFzIFJlc3BvbnNlKVxuICAgICAgICAgICAgOiAocmVzcG9uc2UgYXMgUmVzcG9uc2UpO1xuXG4gICAgICAgIGlmICh0aGlzLl9xdWVyeUNvbmZpZy5lbnRpdHkgJiYgdGhpcy5fcXVlcnlDb25maWcuZW50aXR5LnNldCkge1xuICAgICAgICAgIGNvbnN0IGlkID0gdGhpcy5fcXVlcnlDb25maWcuZW50aXR5Py5pZCh7IGFyZ3M6IHRoaXMuX2FyZ3MsIHJlc3BvbnNlOiByZXNwb25zZURhdGEgfSk7XG5cbiAgICAgICAgICB0aGlzLl9xdWVyeUNvbmZpZy5lbnRpdHk/LnNldCh7XG4gICAgICAgICAgICBhcmdzOiB0aGlzLl9hcmdzLFxuICAgICAgICAgICAgcmVzcG9uc2U6IHJlc3BvbnNlRGF0YSxcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgc3RvcmU6IHRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eS5zdG9yZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3N0YXRlJC5uZXh0KHtcbiAgICAgICAgICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5TdWNjZXNzLFxuICAgICAgICAgIHJlc3BvbnNlOiByZXNwb25zZURhdGEsXG4gICAgICAgICAgbWV0YTogeyAuLi5tZXRhLCBleHBpcmVzQXQ6IGV4cGlyZXNJblRpbWVzdGFtcCB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSAnZmFpbHVyZSc6IHtcbiAgICAgICAgY29uc3QgeyBlcnJvciB9ID0gcmVxdWVzdEV2ZW50O1xuICAgICAgICBjb25zdCBmYWlsdXJlID0gKCkgPT4gdGhpcy5fc3RhdGUkLm5leHQoeyB0eXBlOiBRdWVyeVN0YXRlVHlwZS5GYWlsdXJlLCBlcnJvciwgbWV0YSB9KTtcbiAgICAgICAgY29uc3QgYmVhcmVyQXV0aFByb3ZpZGVyID0gdGhpcy5fZ2V0QmVhcmVyQXV0aFByb3ZpZGVyKCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICFiZWFyZXJBdXRoUHJvdmlkZXIgfHxcbiAgICAgICAgICBvcHRpb25zPy5faXNVbmF1dGhvcml6ZWRSZXRyeSB8fFxuICAgICAgICAgIGVycm9yLnN0YXR1cyAhPT0gSHR0cFN0YXR1c0NvZGUuVW5hdXRob3JpemVkIHx8XG4gICAgICAgICAgIWJlYXJlckF1dGhQcm92aWRlci5zaG91bGRSZWZyZXNoT25VbmF1dGhvcml6ZWRSZXNwb25zZVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gZmFpbHVyZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVlcnkgPSBiZWFyZXJBdXRoUHJvdmlkZXIuX3JlZnJlc2hRdWVyeSgpO1xuICAgICAgICBpZiAoIXF1ZXJ5KSByZXR1cm4gZmFpbHVyZSgpO1xuXG4gICAgICAgIHF1ZXJ5LnN0YXRlJFxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsUmVzcG9uc2UoKSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkFib3J0JCksXG4gICAgICAgICAgICB0YXAoKHN0YXRlKSA9PlxuICAgICAgICAgICAgICBpc1F1ZXJ5U3RhdGVTdWNjZXNzKHN0YXRlKSA/IHRoaXMuZXhlY3V0ZSh7IC4uLm9wdGlvbnMsIF9pc1VuYXV0aG9yaXplZFJldHJ5OiB0cnVlIH0pIDogZmFpbHVyZSgpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlICdjYW5jZWwnOiB7XG4gICAgICAgIHRoaXMuX3N0YXRlJC5uZXh0KHtcbiAgICAgICAgICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5DYW5jZWxsZWQsXG4gICAgICAgICAgbWV0YSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdHJhbnNmb3JtU3RhdGUoczogUXVlcnlTdGF0ZTxSZXNwb25zZT4pOiBPYnNlcnZhYmxlPFF1ZXJ5U3RhdGU8RGF0YT4+IHtcbiAgICBpZiAoIWlzUXVlcnlTdGF0ZVN1Y2Nlc3MocykgfHwgIXRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eT8uZ2V0KSB7XG4gICAgICByZXR1cm4gb2YocykgYXMgT2JzZXJ2YWJsZTxRdWVyeVN0YXRlPERhdGE+PjtcbiAgICB9XG5cbiAgICBjb25zdCBpZCA9IHRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eS5pZCh7IGFyZ3M6IHRoaXMuX2FyZ3MsIHJlc3BvbnNlOiBzLnJlc3BvbnNlIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eVxuICAgICAgLmdldCh7IGFyZ3M6IHRoaXMuX2FyZ3MsIGlkLCByZXNwb25zZTogcy5yZXNwb25zZSwgc3RvcmU6IHRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eS5zdG9yZSB9KVxuICAgICAgLnBpcGUobWFwKCh2KSA9PiAoeyAuLi5zLCByZXNwb25zZTogdiB9KSkpO1xuICB9XG59XG4iXX0=
265
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnkvcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFDZixNQUFNLEVBQ04sUUFBUSxFQUNSLEdBQUcsRUFFSCxFQUFFLEVBQ0YsV0FBVyxFQUNYLElBQUksRUFDSixPQUFPLEVBRVAsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRS9DLE9BQU8sRUFBZSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hFLE9BQU8sRUFBa0IsT0FBTyxFQUFnQixNQUFNLFlBQVksQ0FBQztBQWFuRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFFckIsTUFBTSxPQUFPLEtBQUs7SUF5QmhCLElBQVksT0FBTztRQUNqQixPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDdEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLDBCQUEwQjtnQkFBRSxPQUFPO1lBRXJFLElBQUksb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQ1YsU0FBUyxJQUFJ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QyxDQUFDLE9BQU8sRUFBRSxDQUNsRyxDQUNGO3FCQUNBLFNBQVMsRUFBRSxDQUFDO2dCQUVmLE1BQU07YUFDUDtZQUVELEtBQUssUUFBUSxDQUFDLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ2hCLElBQUksNENBQTBCO29CQUM5QixJQUFJO2lCQUNMLENBQUMsQ0FBQztnQkFFSCxNQUFNO2FBQ1A7U0FDRjtJQUNILENBQUM7SUFFTyxlQUFlLENBQUMsQ0FBdUI7UUFDN0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQzdELE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBaUMsQ0FBQztTQUM5QztRQUVELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUV4RixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTTthQUM1QixHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQy9GLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBmaWx0ZXIsXG4gIGludGVydmFsLFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBzaGFyZVJlcGxheSxcbiAgc2tpcCxcbiAgU3ViamVjdCxcbiAgU3Vic2NyaXB0aW9uLFxuICBzd2l0Y2hNYXAsXG4gIHRha2VVbnRpbCxcbiAgdGFrZVdoaWxlLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaXNCZWFyZXJBdXRoUHJvdmlkZXIgfSBmcm9tICcuLi9hdXRoJztcbmltcG9ydCB7IEVudGl0eVN0b3JlIH0gZnJvbSAnLi4vZW50aXR5JztcbmltcG9ydCB7IFF1ZXJ5Q2xpZW50LCBzaG91bGRDYWNoZVF1ZXJ5IH0gZnJvbSAnLi4vcXVlcnktY2xpZW50JztcbmltcG9ydCB7IEh0dHBTdGF0dXNDb2RlLCByZXF1ZXN0LCBSZXF1ZXN0RXZlbnQgfSBmcm9tICcuLi9yZXF1ZXN0JztcbmltcG9ydCB7XG4gIEJhc2VBcmd1bWVudHMsXG4gIEV4ZWN1dGVRdWVyeU9wdGlvbnMsXG4gIEdxbFF1ZXJ5Q29uZmlnLFxuICBQb2xsQ29uZmlnLFxuICBRdWVyeUF1dG9SZWZyZXNoQ29uZmlnLFxuICBRdWVyeVN0YXRlLFxuICBRdWVyeVN0YXRlTWV0YSxcbiAgUXVlcnlTdGF0ZVR5cGUsXG4gIFJlc3RRdWVyeUNvbmZpZyxcbiAgUm91dGVUeXBlLFxufSBmcm9tICcuL3F1ZXJ5LnR5cGVzJztcbmltcG9ydCB7XG4gIGNvbXB1dGVRdWVyeUJvZHksXG4gIGNvbXB1dGVRdWVyeUhlYWRlcnMsXG4gIGNvbXB1dGVRdWVyeU1ldGhvZCxcbiAgaXNHcWxRdWVyeUNvbmZpZyxcbiAgaXNRdWVyeVN0YXRlTG9hZGluZyxcbiAgaXNRdWVyeVN0YXRlUHJlcGFyZWQsXG4gIGlzUXVlcnlTdGF0ZVN1Y2Nlc3MsXG4gIHRha2VVbnRpbFJlc3BvbnNlLFxufSBmcm9tICcuL3F1ZXJ5LnV0aWxzJztcblxubGV0IF9uZXh0UXVlcnlJZCA9IDA7XG5cbmV4cG9ydCBjbGFzcyBRdWVyeTxcbiAgUmVzcG9uc2UsXG4gIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4sXG4gIFN0b3JlIGV4dGVuZHMgRW50aXR5U3RvcmU8dW5rbm93bj4sXG4gIERhdGEsXG4gIElkLFxuPiB7XG4gIHJlYWRvbmx5IF9pZCA9IF9uZXh0UXVlcnlJZCsrO1xuXG4gIHByaXZhdGUgX2N1cnJlbnRMb2NhbElkID0gMDtcbiAgcHJpdmF0ZSBfcG9sbGluZ1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX29uQWJvcnQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfY3VycmVudFBvbGxDb25maWc6IFBvbGxDb25maWcgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfaXNQb2xsaW5nUGF1c2VkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRdWVyeVN0YXRlPFJlc3BvbnNlPj4oe1xuICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLlByZXBhcmVkLFxuICAgIG1ldGE6IHsgaWQ6IHRoaXMuX2N1cnJlbnRMb2NhbElkLCB0cmlnZ2VyZWRWaWE6ICdwcm9ncmFtJyB9LFxuICB9KTtcblxuICBwcml2YXRlIGdldCBfbmV4dElkKCkge1xuICAgIHJldHVybiArK3RoaXMuX2N1cnJlbnRMb2NhbElkO1xuICB9XG5cbiAgZ2V0IHN0YXRlJCgpOiBPYnNlcnZhYmxlPFF1ZXJ5U3RhdGU8RGF0YT4+IHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUkLnBpcGUoXG4gICAgICB0YXAoKHMpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLl9jbGllbnQuY29uZmlnLmxvZ2dpbmc/LnByZXBhcmVkUXVlcnlTdWJzY3JpcHRpb25zKSByZXR1cm47XG5cbiAgICAgICAgaWYgKGlzUXVlcnlTdGF0ZVByZXBhcmVkKHMpKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYFF1ZXJ5ICR7dGhpcy5fcm91dGVXaXRoUGFyYW1zfSB3YXMgc3Vic2NyaWJlZCB0byBpbiB0aGUgcHJlcGFyZWQgc3RhdGUuIERpZCB5b3UgZm9yZ2V0IHRvIGNhbGwgLmV4ZWN1dGUoKT9gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKChzKSA9PiB0aGlzLl90cmFuc2Zvcm1TdGF0ZShzKSksXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHF1ZXJ5LlxuICAgKlxuICAgKiAqKldhcm5pbmchKiogVGhpcyBkaWZmZXJzIGZyb20gdGhlIGBzdGF0ZSRgIG9ic2VydmFibGUgaW4gdGhhdCBpdCBkb2VzIG5vdCB1c2UgdGhlIHF1ZXJ5IHN0b3JlLiBUaHVzLCB0aGUgcmVzcG9uc2UgZGF0YSBtaWdodCBiZSBvdXRkYXRlZC5cbiAgICogVXNlIGBzdGF0ZSRgIChvciBgZmlyc3RWYWx1ZUZyb20oc3RhdGUkKWApIHRoZSBtb3N0IHVwLXRvLWRhdGUgZGF0YS5cbiAgICovXG4gIGdldCByYXdTdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUkLnZhbHVlO1xuICB9XG5cbiAgZ2V0IGlzRXhwaXJlZCgpIHtcbiAgICBpZiAoIWlzUXVlcnlTdGF0ZVN1Y2Nlc3ModGhpcy5fc3RhdGUkLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHRzID0gdGhpcy5fc3RhdGUkLnZhbHVlLm1ldGEuZXhwaXJlc0F0O1xuXG4gICAgaWYgKCF0cykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRzIDwgRGF0ZS5ub3coKTtcbiAgfVxuXG4gIGdldCBpc0luVXNlKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQub2JzZXJ2ZWQ7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXQgX3N1YnNjcmliZXJDb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUkLm9ic2VydmVycy5sZW5ndGg7XG4gIH1cblxuICBnZXQgaXNQb2xsaW5nKCkge1xuICAgIHJldHVybiAhIXRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb247XG4gIH1cblxuICBnZXQgYXV0b1JlZnJlc2hPbkNvbmZpZygpIHtcbiAgICBjb25zdCBiYXNlID0gdGhpcy5fcXVlcnlDb25maWcuYXV0b1JlZnJlc2hPbiA/PyB7fTtcblxuICAgIGNvbnN0IHRyYW5zZm9ybWVkOiBSZWFkb25seTxRdWVyeUF1dG9SZWZyZXNoQ29uZmlnPiA9IHtcbiAgICAgIHF1ZXJ5Q2xpZW50RGVmYXVsdEhlYWRlcnNDaGFuZ2U6IGJhc2UucXVlcnlDbGllbnREZWZhdWx0SGVhZGVyc0NoYW5nZSA/PyB0cnVlLFxuICAgICAgd2luZG93Rm9jdXM6IGJhc2Uud2luZG93Rm9jdXMgPz8gdHJ1ZSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRyYW5zZm9ybWVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0IF9lbmFibGVTbWFydFBvbGxpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5Q29uZmlnLmVuYWJsZVNtYXJ0UG9sbGluZyA/PyB0cnVlO1xuICB9XG5cbiAgZ2V0IHN0b3JlKCkge1xuICAgIHJldHVybiB0aGlzLl9xdWVyeUNvbmZpZy5lbnRpdHk/LnN0b3JlID8/IG51bGw7XG4gIH1cblxuICBnZXQgY2FuQmVDYWNoZWQoKSB7XG4gICAgcmV0dXJuIHNob3VsZENhY2hlUXVlcnkodGhpcy5fcXVlcnlDb25maWcubWV0aG9kKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NsaWVudDogUXVlcnlDbGllbnQsXG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgX3F1ZXJ5Q29uZmlnOlxuICAgICAgfCBSZXN0UXVlcnlDb25maWc8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFN0b3JlLCBEYXRhLCBJZD5cbiAgICAgIHwgR3FsUXVlcnlDb25maWc8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFN0b3JlLCBEYXRhLCBJZD4sXG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgX3JvdXRlV2l0aFBhcmFtczogUm91dGUsXG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgX2FyZ3VtZW50czogQXJndW1lbnRzLFxuICApIHt9XG5cbiAgZXhlY3V0ZShvcHRpb25zOiBFeGVjdXRlUXVlcnlPcHRpb25zID0ge30pIHtcbiAgICBjb25zdCB7IHNraXBDYWNoZSA9IGZhbHNlLCBfdHJpZ2dlcmVkVmlhOiB0cmlnZ2VyZWRWaWEgPSAncHJvZ3JhbScsIGNhbmNlbFByZXZpb3VzID0gZmFsc2UgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgeyBhdXRoUHJvdmlkZXIgfSA9IHRoaXMuX2NsaWVudDtcbiAgICBjb25zdCBxdWVyeUNvbmZpZyA9IHRoaXMuX3F1ZXJ5Q29uZmlnO1xuXG4gICAgaWYgKCF0aGlzLmlzRXhwaXJlZCAmJiAhc2tpcENhY2hlICYmIGlzUXVlcnlTdGF0ZVN1Y2Nlc3ModGhpcy5yYXdTdGF0ZSkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmIChxdWVyeUNvbmZpZy5zZWN1cmUgJiYgIWF1dGhQcm92aWRlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZXhlY3V0ZSBzZWN1cmUgcXVlcnkgd2l0aG91dCBhdXRoIHByb3ZpZGVyJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaWQgPSB0aGlzLl9uZXh0SWQ7XG4gICAgY29uc3QgbWV0YTogUXVlcnlTdGF0ZU1ldGEgPSB7IGlkLCB0cmlnZ2VyZWRWaWEgfTtcblxuICAgIGlmIChpc1F1ZXJ5U3RhdGVMb2FkaW5nKHRoaXMucmF3U3RhdGUpKSB7XG4gICAgICBpZiAoY2FuY2VsUHJldmlvdXMpIHtcbiAgICAgICAgdGhpcy5hYm9ydCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGUkLm5leHQoeyB0eXBlOiBRdWVyeVN0YXRlVHlwZS5Mb2FkaW5nLCBtZXRhIH0pO1xuXG4gICAgY29uc3QgbWV0aG9kID0gY29tcHV0ZVF1ZXJ5TWV0aG9kKHsgY29uZmlnOiBxdWVyeUNvbmZpZywgY2xpZW50OiB0aGlzLl9jbGllbnQgfSk7XG4gICAgY29uc3QgYm9keSA9IGNvbXB1dGVRdWVyeUJvZHkoeyBjb25maWc6IHF1ZXJ5Q29uZmlnLCBjbGllbnQ6IHRoaXMuX2NsaWVudCwgYXJnczogdGhpcy5fYXJndW1lbnRzLCBtZXRob2QgfSk7XG4gICAgY29uc3QgaGVhZGVycyA9IGNvbXB1dGVRdWVyeUhlYWRlcnMoeyBjbGllbnQ6IHRoaXMuX2NsaWVudCwgY29uZmlnOiBxdWVyeUNvbmZpZywgYXJnczogdGhpcy5fYXJndW1lbnRzIH0pO1xuXG4gICAgcmVxdWVzdDxSZXNwb25zZT4oe1xuICAgICAgdXJsV2l0aFBhcmFtczogdGhpcy5fcm91dGVXaXRoUGFyYW1zLFxuICAgICAgbWV0aG9kLFxuICAgICAgYm9keSxcbiAgICAgIGhlYWRlcnMsXG4gICAgICByZXBvcnRQcm9ncmVzczogcXVlcnlDb25maWcucmVwb3J0UHJvZ3Jlc3MsXG4gICAgICByZXNwb25zZVR5cGU6IHF1ZXJ5Q29uZmlnLnJlc3BvbnNlVHlwZSxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogcXVlcnlDb25maWcud2l0aENyZWRlbnRpYWxzLFxuICAgICAgY2FjaGVBZGFwdGVyOiB0aGlzLl9jbGllbnQuY29uZmlnLnJlcXVlc3Q/LmNhY2hlQWRhcHRlcixcbiAgICAgIHJldHJ5Rm46IHRoaXMuX2NsaWVudC5jb25maWcucmVxdWVzdD8ucmV0cnlGbixcbiAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkFib3J0JCksXG4gICAgICAgIHRhcCgoc3RhdGUpID0+IHRoaXMuX3VwZGF0ZUVudGl0eVN0YXRlKHN0YXRlLCBtZXRhLCBvcHRpb25zKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFib3J0KCkge1xuICAgIHRoaXMuX29uQWJvcnQkLm5leHQoKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcG9sbChjb25maWc6IFBvbGxDb25maWcpIHtcbiAgICBpZiAodGhpcy5fcG9sbGluZ1N1YnNjcmlwdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5fY3VycmVudFBvbGxDb25maWcgPSBjb25maWc7XG5cbiAgICBjb25zdCBpbnRlcnZhbCQgPSBpbnRlcnZhbChjb25maWcuaW50ZXJ2YWwpO1xuICAgIGNvbnN0IHBvbGwkID0gaW50ZXJ2YWwkLnBpcGUoXG4gICAgICBza2lwKGNvbmZpZy50cmlnZ2VySW1tZWRpYXRlbHkgPyAwIDogMSksXG4gICAgICB0YWtlVW50aWwoY29uZmlnLnRha2VVbnRpbCksXG4gICAgICB0YWtlV2hpbGUoKCkgPT4gIXRoaXMuX2lzUG9sbGluZ1BhdXNlZCksXG4gICAgICBmaWx0ZXIoKCkgPT4gIWlzUXVlcnlTdGF0ZUxvYWRpbmcodGhpcy5fc3RhdGUkLnZhbHVlKSksXG4gICAgKTtcblxuICAgIHRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb24gPSBwb2xsJC5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4gdGhpcy5leGVjdXRlKHsgc2tpcENhY2hlOiB0cnVlLCBfdHJpZ2dlcmVkVmlhOiAncG9sbCcgfSksXG4gICAgICBjb21wbGV0ZTogKCkgPT4gdGhpcy5zdG9wUG9sbGluZygpLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdG9wUG9sbGluZygpIHtcbiAgICB0aGlzLl9wb2xsaW5nU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgIHRoaXMuX2N1cnJlbnRQb2xsQ29uZmlnID0gbnVsbDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcGF1c2VQb2xsaW5nKCkge1xuICAgIHRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fcG9sbGluZ1N1YnNjcmlwdGlvbiA9IG51bGw7XG5cbiAgICB0aGlzLl9pc1BvbGxpbmdQYXVzZWQgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICByZXN1bWVQb2xsaW5nKCkge1xuICAgIGlmICghdGhpcy5faXNQb2xsaW5nUGF1c2VkIHx8ICF0aGlzLl9jdXJyZW50UG9sbENvbmZpZykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5faXNQb2xsaW5nUGF1c2VkID0gZmFsc2U7XG5cbiAgICByZXR1cm4gdGhpcy5wb2xsKHsgLi4udGhpcy5fY3VycmVudFBvbGxDb25maWcsIHRyaWdnZXJJbW1lZGlhdGVseTogdHJ1ZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEJlYXJlckF1dGhQcm92aWRlcigpIHtcbiAgICBjb25zdCBhdXRoUHJvdmlkZXIgPSB0aGlzLl9jbGllbnQuYXV0aFByb3ZpZGVyO1xuXG4gICAgaWYgKGF1dGhQcm92aWRlciAmJiBpc0JlYXJlckF1dGhQcm92aWRlcihhdXRoUHJvdmlkZXIpKSB7XG4gICAgICByZXR1cm4gYXV0aFByb3ZpZGVyO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlRW50aXR5U3RhdGUoXG4gICAgcmVxdWVzdEV2ZW50OiBSZXF1ZXN0RXZlbnQ8UmVzcG9uc2U+LFxuICAgIG1ldGE6IFF1ZXJ5U3RhdGVNZXRhLFxuICAgIG9wdGlvbnM/OiBFeGVjdXRlUXVlcnlPcHRpb25zLFxuICApIHtcbiAgICBzd2l0Y2ggKHJlcXVlc3RFdmVudC50eXBlKSB7XG4gICAgICBjYXNlICdzdGFydCc6XG4gICAgICBjYXNlICdkZWxheS1yZXRyeSc6IHtcbiAgICAgICAgY29uc3QgeyB0eXBlLCByZXRyeURlbGF5LCByZXRyeU51bWJlciB9ID0gcmVxdWVzdEV2ZW50O1xuICAgICAgICBjb25zdCBuZXdNZXRhOiBRdWVyeVN0YXRlTWV0YSA9IHsgLi4ubWV0YSwgaXNXYWl0aW5nRm9yUmV0cnk6IHR5cGUgPT09ICdkZWxheS1yZXRyeScsIHJldHJ5RGVsYXksIHJldHJ5TnVtYmVyIH07XG5cbiAgICAgICAgdGhpcy5fc3RhdGUkLm5leHQoe1xuICAgICAgICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLkxvYWRpbmcsXG4gICAgICAgICAgbWV0YTogbmV3TWV0YSxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlICd1cGxvYWQtcHJvZ3Jlc3MnOlxuICAgICAgY2FzZSAnZG93bmxvYWQtcHJvZ3Jlc3MnOiB7XG4gICAgICAgIHRoaXMuX3N0YXRlJC5uZXh0KHtcbiAgICAgICAgICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5Mb2FkaW5nLFxuICAgICAgICAgIHByb2dyZXNzOiByZXF1ZXN0RXZlbnQucHJvZ3Jlc3MsXG4gICAgICAgICAgcGFydGlhbFRleHQ6ICdwYXJ0aWFsVGV4dCcgaW4gcmVxdWVzdEV2ZW50ID8gcmVxdWVzdEV2ZW50LnBhcnRpYWxUZXh0IDogdW5kZWZpbmVkLFxuICAgICAgICAgIG1ldGEsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlICdzdWNjZXNzJzoge1xuICAgICAgICBjb25zdCB7IHJlc3BvbnNlLCBleHBpcmVzSW5UaW1lc3RhbXAgfSA9IHJlcXVlc3RFdmVudDtcbiAgICAgICAgY29uc3QgaXNHcWwgPSBpc0dxbFF1ZXJ5Q29uZmlnKHRoaXMuX3F1ZXJ5Q29uZmlnKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2VEYXRhID1cbiAgICAgICAgICBpc0dxbCAmJiB0eXBlb2YgcmVzcG9uc2UgPT09ICdvYmplY3QnICYmICEhcmVzcG9uc2UgJiYgJ2RhdGEnIGluIHJlc3BvbnNlXG4gICAgICAgICAgICA/IChyZXNwb25zZVsnZGF0YSddIGFzIFJlc3BvbnNlKVxuICAgICAgICAgICAgOiAocmVzcG9uc2UgYXMgUmVzcG9uc2UpO1xuXG4gICAgICAgIGlmICh0aGlzLl9xdWVyeUNvbmZpZy5lbnRpdHkgJiYgdGhpcy5fcXVlcnlDb25maWcuZW50aXR5LnNldCkge1xuICAgICAgICAgIGNvbnN0IGlkID0gdGhpcy5fcXVlcnlDb25maWcuZW50aXR5Py5pZCh7IGFyZ3M6IHRoaXMuX2FyZ3VtZW50cywgcmVzcG9uc2U6IHJlc3BvbnNlRGF0YSB9KTtcblxuICAgICAgICAgIHRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eT8uc2V0KHtcbiAgICAgICAgICAgIGFyZ3M6IHRoaXMuX2FyZ3VtZW50cyxcbiAgICAgICAgICAgIHJlc3BvbnNlOiByZXNwb25zZURhdGEsXG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIHN0b3JlOiB0aGlzLl9xdWVyeUNvbmZpZy5lbnRpdHkuc3RvcmUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zdGF0ZSQubmV4dCh7XG4gICAgICAgICAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuU3VjY2VzcyxcbiAgICAgICAgICByZXNwb25zZTogcmVzcG9uc2VEYXRhLFxuICAgICAgICAgIG1ldGE6IHsgLi4ubWV0YSwgZXhwaXJlc0F0OiBleHBpcmVzSW5UaW1lc3RhbXAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2ZhaWx1cmUnOiB7XG4gICAgICAgIGNvbnN0IHsgZXJyb3IgfSA9IHJlcXVlc3RFdmVudDtcbiAgICAgICAgY29uc3QgZmFpbHVyZSA9ICgpID0+IHRoaXMuX3N0YXRlJC5uZXh0KHsgdHlwZTogUXVlcnlTdGF0ZVR5cGUuRmFpbHVyZSwgZXJyb3IsIG1ldGEgfSk7XG4gICAgICAgIGNvbnN0IGJlYXJlckF1dGhQcm92aWRlciA9IHRoaXMuX2dldEJlYXJlckF1dGhQcm92aWRlcigpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAhYmVhcmVyQXV0aFByb3ZpZGVyIHx8XG4gICAgICAgICAgb3B0aW9ucz8uX2lzVW5hdXRob3JpemVkUmV0cnkgfHxcbiAgICAgICAgICBlcnJvci5zdGF0dXMgIT09IEh0dHBTdGF0dXNDb2RlLlVuYXV0aG9yaXplZCB8fFxuICAgICAgICAgICFiZWFyZXJBdXRoUHJvdmlkZXIuc2hvdWxkUmVmcmVzaE9uVW5hdXRob3JpemVkUmVzcG9uc2VcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIGZhaWx1cmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gYmVhcmVyQXV0aFByb3ZpZGVyLl9yZWZyZXNoUXVlcnkoKTtcbiAgICAgICAgaWYgKCFxdWVyeSkgcmV0dXJuIGZhaWx1cmUoKTtcblxuICAgICAgICBxdWVyeS5zdGF0ZSRcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbFJlc3BvbnNlKCksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25BYm9ydCQpLFxuICAgICAgICAgICAgdGFwKChzdGF0ZSkgPT5cbiAgICAgICAgICAgICAgaXNRdWVyeVN0YXRlU3VjY2VzcyhzdGF0ZSkgPyB0aGlzLmV4ZWN1dGUoeyAuLi5vcHRpb25zLCBfaXNVbmF1dGhvcml6ZWRSZXRyeTogdHJ1ZSB9KSA6IGZhaWx1cmUoKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSAnY2FuY2VsJzoge1xuICAgICAgICB0aGlzLl9zdGF0ZSQubmV4dCh7XG4gICAgICAgICAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuQ2FuY2VsbGVkLFxuICAgICAgICAgIG1ldGEsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3RyYW5zZm9ybVN0YXRlKHM6IFF1ZXJ5U3RhdGU8UmVzcG9uc2U+KTogT2JzZXJ2YWJsZTxRdWVyeVN0YXRlPERhdGE+PiB7XG4gICAgaWYgKCFpc1F1ZXJ5U3RhdGVTdWNjZXNzKHMpIHx8ICF0aGlzLl9xdWVyeUNvbmZpZy5lbnRpdHk/LmdldCkge1xuICAgICAgcmV0dXJuIG9mKHMpIGFzIE9ic2VydmFibGU8UXVlcnlTdGF0ZTxEYXRhPj47XG4gICAgfVxuXG4gICAgY29uc3QgaWQgPSB0aGlzLl9xdWVyeUNvbmZpZy5lbnRpdHkuaWQoeyBhcmdzOiB0aGlzLl9hcmd1bWVudHMsIHJlc3BvbnNlOiBzLnJlc3BvbnNlIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eVxuICAgICAgLmdldCh7IGFyZ3M6IHRoaXMuX2FyZ3VtZW50cywgaWQsIHJlc3BvbnNlOiBzLnJlc3BvbnNlLCBzdG9yZTogdGhpcy5fcXVlcnlDb25maWcuZW50aXR5LnN0b3JlIH0pXG4gICAgICAucGlwZShtYXAoKHYpID0+ICh7IC4uLnMsIHJlc3BvbnNlOiB2IH0pKSk7XG4gIH1cbn1cbiJdfQ==
@@ -28,9 +28,10 @@ export class QueryCreator {
28
28
  if (shouldCacheQuery(this._queryConfig.method)) {
29
29
  this._store.add(cacheKey, query);
30
30
  }
31
+ this._store._dispatchQueryCreated(query);
31
32
  return query;
32
33
  };
33
34
  this.behaviorSubject = (initialValue) => new BehaviorSubject(initialValue ?? null);
34
35
  }
35
36
  }
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY3JlYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9xdWVyeS1jcmVhdG9yL3F1ZXJ5LWNyZWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVFLE9BQU8sRUFBZSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR2xGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHeEMsTUFBTSxPQUFPLFlBQVk7SUFRdkIsWUFDVSxZQUV1RCxFQUN2RCxPQUFvQixFQUNwQixNQUFrQjtRQUpsQixpQkFBWSxHQUFaLFlBQVksQ0FFMkM7UUFDdkQsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQUNwQixXQUFNLEdBQU4sTUFBTSxDQUFZO1FBRzVCLDZEQUE2RDtRQUM3RCxhQUFhO1FBQ2IsWUFBTyxHQUFnRSxDQUFDLElBQThCLEVBQUUsRUFBRTtZQUN4RyxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUM7Z0JBQ3ZCLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTO2dCQUNuQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO2dCQUM5QixVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVU7Z0JBQzVCLFdBQVcsRUFBRSx1QkFBdUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO2dCQUMvRixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsV0FBVzthQUMzRCxDQUFVLENBQUM7WUFFWixNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUV6RyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQzlDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFxRCxRQUFRLENBQUMsQ0FBQztnQkFFcEcsSUFBSSxhQUFhLEVBQUU7b0JBQ2pCLE9BQU8sYUFBYSxDQUFDO2lCQUN0QjthQUNGO1lBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQ3JCLElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLFlBQVksRUFDakIsS0FBSyxFQUNMLElBQUksSUFBSyxFQUFnQixDQUMxQixDQUFDO1lBRUYsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUM5QyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDbEM7WUFFRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQztRQUVGLG9CQUFlLEdBQUcsQ0FBQyxZQUFxRCxFQUFFLEVBQUUsQ0FDMUUsSUFBSSxlQUFlLENBQXlDLFlBQVksSUFBSSxJQUFJLENBQUMsQ0FBQztJQXRDakYsQ0FBQztDQXVDTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRW50aXR5U3RvcmUgfSBmcm9tICcuLi9lbnRpdHknO1xuaW1wb3J0IHsgUXVlcnksIGNvbXB1dGVRdWVyeVF1ZXJ5UGFyYW1zLCBpc0dxbFF1ZXJ5Q29uZmlnIH0gZnJvbSAnLi4vcXVlcnknO1xuaW1wb3J0IHsgUXVlcnlDbGllbnQsIGJ1aWxkR3FsQ2FjaGVLZXksIHNob3VsZENhY2hlUXVlcnkgfSBmcm9tICcuLi9xdWVyeS1jbGllbnQnO1xuaW1wb3J0IHsgUXVlcnlTdG9yZSB9IGZyb20gJy4uL3F1ZXJ5LXN0b3JlJztcbmltcG9ydCB7IEJhc2VBcmd1bWVudHMsIEdxbFF1ZXJ5Q29uZmlnLCBSZXN0UXVlcnlDb25maWcsIFJvdXRlVHlwZSwgV2l0aEhlYWRlcnMgfSBmcm9tICcuLi9xdWVyeS9xdWVyeS50eXBlcyc7XG5pbXBvcnQgeyBidWlsZFJvdXRlIH0gZnJvbSAnLi4vcmVxdWVzdCc7XG5pbXBvcnQgeyBRdWVyeVByZXBhcmVGbiB9IGZyb20gJy4vcXVlcnktY3JlYXRvci50eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBRdWVyeUNyZWF0b3I8XG4gIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gIFJlc3BvbnNlLFxuICBSb3V0ZSBleHRlbmRzIFJvdXRlVHlwZTxBcmd1bWVudHM+LFxuICBTdG9yZSBleHRlbmRzIEVudGl0eVN0b3JlPHVua25vd24+LFxuICBEYXRhLFxuICBJZCxcbj4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9xdWVyeUNvbmZpZzpcbiAgICAgIHwgUmVzdFF1ZXJ5Q29uZmlnPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBTdG9yZSwgRGF0YSwgSWQ+XG4gICAgICB8IEdxbFF1ZXJ5Q29uZmlnPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBTdG9yZSwgRGF0YSwgSWQ+LFxuICAgIHByaXZhdGUgX2NsaWVudDogUXVlcnlDbGllbnQsXG4gICAgcHJpdmF0ZSBfc3RvcmU6IFF1ZXJ5U3RvcmUsXG4gICkge31cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gIC8vIEB0cy1pZ25vcmVcbiAgcHJlcGFyZTogUXVlcnlQcmVwYXJlRm48QXJndW1lbnRzLCBSZXNwb25zZSwgUm91dGUsIFN0b3JlLCBEYXRhLCBJZD4gPSAoYXJncz86IEFyZ3VtZW50cyAmIFdpdGhIZWFkZXJzKSA9PiB7XG4gICAgY29uc3Qgcm91dGUgPSBidWlsZFJvdXRlKHtcbiAgICAgIGJhc2U6IHRoaXMuX2NsaWVudC5jb25maWcuYmFzZVJvdXRlLFxuICAgICAgcm91dGU6IHRoaXMuX3F1ZXJ5Q29uZmlnLnJvdXRlLFxuICAgICAgcGF0aFBhcmFtczogYXJncz8ucGF0aFBhcmFtcyxcbiAgICAgIHF1ZXJ5UGFyYW1zOiBjb21wdXRlUXVlcnlRdWVyeVBhcmFtcyh7IGNvbmZpZzogdGhpcy5fcXVlcnlDb25maWcsIGNsaWVudDogdGhpcy5fY2xpZW50LCBhcmdzIH0pLFxuICAgICAgcXVlcnlQYXJhbUNvbmZpZzogdGhpcy5fY2xpZW50LmNvbmZpZy5yZXF1ZXN0Py5xdWVyeVBhcmFtcyxcbiAgICB9KSBhcyBSb3V0ZTtcblxuICAgIGNvbnN0IGNhY2hlS2V5ID0gaXNHcWxRdWVyeUNvbmZpZyh0aGlzLl9xdWVyeUNvbmZpZykgPyBidWlsZEdxbENhY2hlS2V5KHRoaXMuX3F1ZXJ5Q29uZmlnLCBhcmdzKSA6IHJvdXRlO1xuXG4gICAgaWYgKHNob3VsZENhY2hlUXVlcnkodGhpcy5fcXVlcnlDb25maWcubWV0aG9kKSkge1xuICAgICAgY29uc3QgZXhpc3RpbmdRdWVyeSA9IHRoaXMuX3N0b3JlLmdldDxRdWVyeTxSZXNwb25zZSwgQXJndW1lbnRzLCBSb3V0ZSwgU3RvcmUsIERhdGEsIElkPj4oY2FjaGVLZXkpO1xuXG4gICAgICBpZiAoZXhpc3RpbmdRdWVyeSkge1xuICAgICAgICByZXR1cm4gZXhpc3RpbmdRdWVyeTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBxdWVyeSA9IG5ldyBRdWVyeTxSZXNwb25zZSwgQXJndW1lbnRzLCBSb3V0ZSwgU3RvcmUsIERhdGEsIElkPihcbiAgICAgIHRoaXMuX2NsaWVudCxcbiAgICAgIHRoaXMuX3F1ZXJ5Q29uZmlnLFxuICAgICAgcm91dGUsXG4gICAgICBhcmdzID8/ICh7fSBhcyBBcmd1bWVudHMpLFxuICAgICk7XG5cbiAgICBpZiAoc2hvdWxkQ2FjaGVRdWVyeSh0aGlzLl9xdWVyeUNvbmZpZy5tZXRob2QpKSB7XG4gICAgICB0aGlzLl9zdG9yZS5hZGQoY2FjaGVLZXksIHF1ZXJ5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcXVlcnk7XG4gIH07XG5cbiAgYmVoYXZpb3JTdWJqZWN0ID0gKGluaXRpYWxWYWx1ZT86IFJldHVyblR5cGU8dHlwZW9mIHRoaXMucHJlcGFyZT4gfCBudWxsKSA9PlxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8UmV0dXJuVHlwZTx0eXBlb2YgdGhpcy5wcmVwYXJlPiB8IG51bGw+KGluaXRpYWxWYWx1ZSA/PyBudWxsKTtcbn1cbiJdfQ==
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY3JlYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9xdWVyeS1jcmVhdG9yL3F1ZXJ5LWNyZWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVFLE9BQU8sRUFBZSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR2xGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHeEMsTUFBTSxPQUFPLFlBQVk7SUFRdkIsWUFDVSxZQUV1RCxFQUN2RCxPQUFvQixFQUNwQixNQUFrQjtRQUpsQixpQkFBWSxHQUFaLFlBQVksQ0FFMkM7UUFDdkQsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQUNwQixXQUFNLEdBQU4sTUFBTSxDQUFZO1FBRzVCLDZEQUE2RDtRQUM3RCxhQUFhO1FBQ2IsWUFBTyxHQUFnRSxDQUFDLElBQThCLEVBQUUsRUFBRTtZQUN4RyxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUM7Z0JBQ3ZCLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTO2dCQUNuQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO2dCQUM5QixVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVU7Z0JBQzVCLFdBQVcsRUFBRSx1QkFBdUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO2dCQUMvRixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsV0FBVzthQUMzRCxDQUFVLENBQUM7WUFFWixNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUV6RyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQzlDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFxRCxRQUFRLENBQUMsQ0FBQztnQkFFcEcsSUFBSSxhQUFhLEVBQUU7b0JBQ2pCLE9BQU8sYUFBYSxDQUFDO2lCQUN0QjthQUNGO1lBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQ3JCLElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLFlBQVksRUFDakIsS0FBSyxFQUNMLElBQUksSUFBSyxFQUFnQixDQUMxQixDQUFDO1lBRUYsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUM5QyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDbEM7WUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRXpDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDO1FBRUYsb0JBQWUsR0FBRyxDQUFDLFlBQXFELEVBQUUsRUFBRSxDQUMxRSxJQUFJLGVBQWUsQ0FBeUMsWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDO0lBeENqRixDQUFDO0NBeUNMIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFbnRpdHlTdG9yZSB9IGZyb20gJy4uL2VudGl0eSc7XG5pbXBvcnQgeyBRdWVyeSwgY29tcHV0ZVF1ZXJ5UXVlcnlQYXJhbXMsIGlzR3FsUXVlcnlDb25maWcgfSBmcm9tICcuLi9xdWVyeSc7XG5pbXBvcnQgeyBRdWVyeUNsaWVudCwgYnVpbGRHcWxDYWNoZUtleSwgc2hvdWxkQ2FjaGVRdWVyeSB9IGZyb20gJy4uL3F1ZXJ5LWNsaWVudCc7XG5pbXBvcnQgeyBRdWVyeVN0b3JlIH0gZnJvbSAnLi4vcXVlcnktc3RvcmUnO1xuaW1wb3J0IHsgQmFzZUFyZ3VtZW50cywgR3FsUXVlcnlDb25maWcsIFJlc3RRdWVyeUNvbmZpZywgUm91dGVUeXBlLCBXaXRoSGVhZGVycyB9IGZyb20gJy4uL3F1ZXJ5L3F1ZXJ5LnR5cGVzJztcbmltcG9ydCB7IGJ1aWxkUm91dGUgfSBmcm9tICcuLi9yZXF1ZXN0JztcbmltcG9ydCB7IFF1ZXJ5UHJlcGFyZUZuIH0gZnJvbSAnLi9xdWVyeS1jcmVhdG9yLnR5cGVzJztcblxuZXhwb3J0IGNsYXNzIFF1ZXJ5Q3JlYXRvcjxcbiAgQXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCxcbiAgUmVzcG9uc2UsXG4gIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4sXG4gIFN0b3JlIGV4dGVuZHMgRW50aXR5U3RvcmU8dW5rbm93bj4sXG4gIERhdGEsXG4gIElkLFxuPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3F1ZXJ5Q29uZmlnOlxuICAgICAgfCBSZXN0UXVlcnlDb25maWc8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFN0b3JlLCBEYXRhLCBJZD5cbiAgICAgIHwgR3FsUXVlcnlDb25maWc8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFN0b3JlLCBEYXRhLCBJZD4sXG4gICAgcHJpdmF0ZSBfY2xpZW50OiBRdWVyeUNsaWVudCxcbiAgICBwcml2YXRlIF9zdG9yZTogUXVlcnlTdG9yZSxcbiAgKSB7fVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgLy8gQHRzLWlnbm9yZVxuICBwcmVwYXJlOiBRdWVyeVByZXBhcmVGbjxBcmd1bWVudHMsIFJlc3BvbnNlLCBSb3V0ZSwgU3RvcmUsIERhdGEsIElkPiA9IChhcmdzPzogQXJndW1lbnRzICYgV2l0aEhlYWRlcnMpID0+IHtcbiAgICBjb25zdCByb3V0ZSA9IGJ1aWxkUm91dGUoe1xuICAgICAgYmFzZTogdGhpcy5fY2xpZW50LmNvbmZpZy5iYXNlUm91dGUsXG4gICAgICByb3V0ZTogdGhpcy5fcXVlcnlDb25maWcucm91dGUsXG4gICAgICBwYXRoUGFyYW1zOiBhcmdzPy5wYXRoUGFyYW1zLFxuICAgICAgcXVlcnlQYXJhbXM6IGNvbXB1dGVRdWVyeVF1ZXJ5UGFyYW1zKHsgY29uZmlnOiB0aGlzLl9xdWVyeUNvbmZpZywgY2xpZW50OiB0aGlzLl9jbGllbnQsIGFyZ3MgfSksXG4gICAgICBxdWVyeVBhcmFtQ29uZmlnOiB0aGlzLl9jbGllbnQuY29uZmlnLnJlcXVlc3Q/LnF1ZXJ5UGFyYW1zLFxuICAgIH0pIGFzIFJvdXRlO1xuXG4gICAgY29uc3QgY2FjaGVLZXkgPSBpc0dxbFF1ZXJ5Q29uZmlnKHRoaXMuX3F1ZXJ5Q29uZmlnKSA/IGJ1aWxkR3FsQ2FjaGVLZXkodGhpcy5fcXVlcnlDb25maWcsIGFyZ3MpIDogcm91dGU7XG5cbiAgICBpZiAoc2hvdWxkQ2FjaGVRdWVyeSh0aGlzLl9xdWVyeUNvbmZpZy5tZXRob2QpKSB7XG4gICAgICBjb25zdCBleGlzdGluZ1F1ZXJ5ID0gdGhpcy5fc3RvcmUuZ2V0PFF1ZXJ5PFJlc3BvbnNlLCBBcmd1bWVudHMsIFJvdXRlLCBTdG9yZSwgRGF0YSwgSWQ+PihjYWNoZUtleSk7XG5cbiAgICAgIGlmIChleGlzdGluZ1F1ZXJ5KSB7XG4gICAgICAgIHJldHVybiBleGlzdGluZ1F1ZXJ5O1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHF1ZXJ5ID0gbmV3IFF1ZXJ5PFJlc3BvbnNlLCBBcmd1bWVudHMsIFJvdXRlLCBTdG9yZSwgRGF0YSwgSWQ+KFxuICAgICAgdGhpcy5fY2xpZW50LFxuICAgICAgdGhpcy5fcXVlcnlDb25maWcsXG4gICAgICByb3V0ZSxcbiAgICAgIGFyZ3MgPz8gKHt9IGFzIEFyZ3VtZW50cyksXG4gICAgKTtcblxuICAgIGlmIChzaG91bGRDYWNoZVF1ZXJ5KHRoaXMuX3F1ZXJ5Q29uZmlnLm1ldGhvZCkpIHtcbiAgICAgIHRoaXMuX3N0b3JlLmFkZChjYWNoZUtleSwgcXVlcnkpO1xuICAgIH1cblxuICAgIHRoaXMuX3N0b3JlLl9kaXNwYXRjaFF1ZXJ5Q3JlYXRlZChxdWVyeSk7XG5cbiAgICByZXR1cm4gcXVlcnk7XG4gIH07XG5cbiAgYmVoYXZpb3JTdWJqZWN0ID0gKGluaXRpYWxWYWx1ZT86IFJldHVyblR5cGU8dHlwZW9mIHRoaXMucHJlcGFyZT4gfCBudWxsKSA9PlxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8UmV0dXJuVHlwZTx0eXBlb2YgdGhpcy5wcmVwYXJlPiB8IG51bGw+KGluaXRpYWxWYWx1ZSA/PyBudWxsKTtcbn1cbiJdfQ==
@@ -10,7 +10,9 @@ export class QueryStore {
10
10
  this._isInLowResourceMode = false;
11
11
  this._lastBlurTimestamp = Date.now();
12
12
  this._storeChange$ = new Subject();
13
+ this._queryCreated$ = new Subject();
13
14
  this.storeChange$ = this._storeChange$.asObservable();
15
+ this.queryCreated$ = this._queryCreated$.asObservable();
14
16
  this._initSmartQueryHandling();
15
17
  }
16
18
  add(id, query) {
@@ -45,6 +47,12 @@ export class QueryStore {
45
47
  }
46
48
  }
47
49
  }
50
+ /**
51
+ * @internal
52
+ */
53
+ _dispatchQueryCreated(query) {
54
+ this._queryCreated$.next(query);
55
+ }
48
56
  _initSmartQueryHandling() {
49
57
  const windowBlur$ = fromEvent(window, 'blur');
50
58
  const windowFocus$ = fromEvent(window, 'focus');
@@ -133,4 +141,4 @@ export class QueryStore {
133
141
  console.log(`%cGC: ${action}`, 'color: yellow; font-weight: bold');
134
142
  }
135
143
  }
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnktc3RvcmUvcXVlcnktc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHbEUsTUFBTSxPQUFPLFVBQVU7SUFjckIsWUFDVSxPQUtQO1FBTE8sWUFBTyxHQUFQLE9BQU8sQ0FLZDtRQW5CSDs7V0FFRztRQUNNLFdBQU0sR0FBRyxJQUFJLEdBQUcsRUFBb0IsQ0FBQztRQUV0QyxzQkFBaUIsR0FBa0IsSUFBSSxDQUFDO1FBQ3hDLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUM3Qix1QkFBa0IsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFaEMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBRXJDLGlCQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQVV4RCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsR0FBRyxDQUFDLEVBQVUsRUFBRSxLQUFlO1FBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUU3QixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELEdBQUcsQ0FBcUIsRUFBVTtRQUNoQyxPQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBTyxJQUFJ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RyxDQUFDLFNBQVMsTUFBTSxFQUFFLEVBQUUsa0NBQWtDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQsIHRha2UsIHRha2VVbnRpbCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFueVF1ZXJ5IH0gZnJvbSAnLi4vcXVlcnknO1xuXG5leHBvcnQgY2xhc3MgUXVlcnlTdG9yZSB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHJlYWRvbmx5IF9zdG9yZSA9IG5ldyBNYXA8c3RyaW5nLCBBbnlRdWVyeT4oKTtcblxuICBwcml2YXRlIF9nYXJiYWdlQ29sbGVjdG9yOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfaXNJbkxvd1Jlc291cmNlTW9kZSA9IGZhbHNlO1xuICBwcml2YXRlIF9sYXN0Qmx1clRpbWVzdGFtcCA9IERhdGUubm93KCk7XG5cbiAgcHJpdmF0ZSBfc3RvcmVDaGFuZ2UkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIHJlYWRvbmx5IHN0b3JlQ2hhbmdlJCA9IHRoaXMuX3N0b3JlQ2hhbmdlJC5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9jb25maWc/OiB7XG4gICAgICBlbmFibGVDaGFuZ2VMb2dnaW5nPzogYm9vbGVhbjtcbiAgICAgIGVuYWJsZUdhcmJhZ2VDb2xsZWN0b3JMb2dnaW5nPzogYm9vbGVhbjtcbiAgICAgIGF1dG9SZWZyZXNoUXVlcmllc09uV2luZG93Rm9jdXM/OiBib29sZWFuO1xuICAgICAgZW5hYmxlU21hcnRQb2xsaW5nPzogYm9vbGVhbjtcbiAgICB9LFxuICApIHtcbiAgICB0aGlzLl9pbml0U21hcnRRdWVyeUhhbmRsaW5nKCk7XG4gIH1cblxuICBhZGQoaWQ6IHN0cmluZywgcXVlcnk6IEFueVF1ZXJ5KSB7XG4gICAgdGhpcy5fc3RvcmUuc2V0KGlkLCBxdWVyeSk7XG5cbiAgICB0aGlzLl9pbml0R2FyYmFnZUNvbGxlY3RvcigpO1xuXG4gICAgdGhpcy5fbG9nU3RhdGUoaWQsIHF1ZXJ5LCAnU0VUJyk7XG5cbiAgICB0aGlzLl9zdG9yZUNoYW5nZSQubmV4dChpZCk7XG4gIH1cblxuICBnZXQ8VCBleHRlbmRzIEFueVF1ZXJ5PihpZDogc3RyaW5nKTogVCB8IG51bGwge1xuICAgIHJldHVybiAodGhpcy5fc3RvcmUuZ2V0KGlkKSBhcyBUKSA/PyBudWxsO1xuICB9XG5cbiAgcmVtb3ZlKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zdG9yZS5kZWxldGUoaWQpO1xuXG4gICAgdGhpcy5fbG9nU3RhdGUoaWQsIG51bGwsICdSRU1PVkUnKTtcblxuICAgIHRoaXMuX3N0b3JlQ2hhbmdlJC5uZXh0KGlkKTtcbiAgfVxuXG4gIGZvckVhY2goY2FsbGJhY2s6ICh2YWx1ZTogQW55UXVlcnksIGtleTogc3RyaW5nKSA9PiB2b2lkKSB7XG4gICAgZm9yIChjb25zdCBba2V5LCBxdWVyeV0gb2YgdGhpcy5fc3RvcmUpIHtcbiAgICAgIGNhbGxiYWNrKHF1ZXJ5LCBrZXkpO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2hRdWVyaWVzSW5Vc2UoY29uZmlnPzogeyBpZ25vcmVDYWNoZVZhbGlkaXR5PzogYm9vbGVhbjsgcHVyZ2VVbnVzZWQ/OiBib29sZWFuIH0pIHtcbiAgICBjb25zdCB7IGlnbm9yZUNhY2hlVmFsaWRpdHksIHB1cmdlVW51c2VkIH0gPSBjb25maWcgPz8ge307XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIHF1ZXJ5XSBvZiB0aGlzLl9zdG9yZSkge1xuICAgICAgaWYgKFxuICAgICAgICBxdWVyeS5pc0luVXNlICYmXG4gICAgICAgIChxdWVyeS5pc0V4cGlyZWQgfHwgaWdub3JlQ2FjaGVWYWxpZGl0eSkgJiZcbiAgICAgICAgcXVlcnkuYXV0b1JlZnJlc2hPbkNvbmZpZy5xdWVyeUNsaWVudERlZmF1bHRIZWFkZXJzQ2hhbmdlXG4gICAgICApIHtcbiAgICAgICAgcXVlcnkuZXhlY3V0ZSh7IHNraXBDYWNoZTogdHJ1ZSwgX3RyaWdnZXJlZFZpYTogJ2F1dG8nIH0pO1xuICAgICAgfSBlbHNlIGlmIChwdXJnZVVudXNlZCAmJiAhcXVlcnkuaXNJblVzZSkge1xuICAgICAgICB0aGlzLnJlbW92ZShrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2luaXRTbWFydFF1ZXJ5SGFuZGxpbmcoKSB7XG4gICAgY29uc3Qgd2luZG93Qmx1ciQgPSBmcm9tRXZlbnQ8RXZlbnQ+KHdpbmRvdywgJ2JsdXInKTtcbiAgICBjb25zdCB3aW5kb3dGb2N1cyQgPSBmcm9tRXZlbnQ8RXZlbnQ+KHdpbmRvdywgJ2ZvY3VzJyk7XG5cbiAgICB3aW5kb3dCbHVyJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGltZXIoNTAwMClcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHdpbmRvd0ZvY3VzJCksIHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2xhc3RCbHVyVGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICB0aGlzLl9pc0luTG93UmVzb3VyY2VNb2RlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLl9zdG9wR2FyYmFnZUNvbGxlY3RvcigpO1xuXG4gICAgICAgICAgaWYgKHRoaXMuX2NvbmZpZz8uZW5hYmxlU21hcnRQb2xsaW5nKSB7XG4gICAgICAgICAgICB0aGlzLmZvckVhY2goKHF1ZXJ5KSA9PiB7XG4gICAgICAgICAgICAgIGlmICghcXVlcnkuaXNQb2xsaW5nIHx8ICFxdWVyeS5fZW5hYmxlU21hcnRQb2xsaW5nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcXVlcnkucGF1c2VQb2xsaW5nKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgd2luZG93Rm9jdXMkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX2lzSW5Mb3dSZXNvdXJjZU1vZGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pc0luTG93UmVzb3VyY2VNb2RlID0gZmFsc2U7XG5cbiAgICAgIGlmICh0aGlzLl9jb25maWc/LmVuYWJsZVNtYXJ0UG9sbGluZyB8fCB0aGlzLl9jb25maWc/LmF1dG9SZWZyZXNoUXVlcmllc09uV2luZG93Rm9jdXMpIHtcbiAgICAgICAgdGhpcy5mb3JFYWNoKChxdWVyeSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9jb25maWc/LmVuYWJsZVNtYXJ0UG9sbGluZyAmJiBxdWVyeS5faXNQb2xsaW5nUGF1c2VkKSB7XG4gICAgICAgICAgICBxdWVyeS5yZXN1bWVQb2xsaW5nKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKERhdGUubm93KCkgLSB0aGlzLl9sYXN0Qmx1clRpbWVzdGFtcCA+IDE1MDAwKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHRoaXMuX2NvbmZpZz8uYXV0b1JlZnJlc2hRdWVyaWVzT25XaW5kb3dGb2N1cyAmJlxuICAgICAgICAgICAgICBxdWVyeS5pc0V4cGlyZWQgJiZcbiAgICAgICAgICAgICAgcXVlcnkuaXNJblVzZSAmJlxuICAgICAgICAgICAgICBxdWVyeS5hdXRvUmVmcmVzaE9uQ29uZmlnLndpbmRvd0ZvY3VzXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcXVlcnkuZXhlY3V0ZSh7IHNraXBDYWNoZTogdHJ1ZSwgX3RyaWdnZXJlZFZpYTogJ2F1dG8nIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2luaXRHYXJiYWdlQ29sbGVjdG9yKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9sb2dTdGF0ZShrZXk6IHN0cmluZyB8IG51bGwsIGl0ZW06IEFueVF1ZXJ5IHwgbnVsbCwgb3BlcmF0aW9uOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZz8uZW5hYmxlQ2hhbmdlTG9nZ2luZykgcmV0dXJuO1xuXG4gICAgY29uc3Qgc3RhdGVBc0pzb246IFJlY29yZDxzdHJpbmcsIEFueVF1ZXJ5PiA9IHt9O1xuXG4gICAgdGhpcy5fc3RvcmUuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgc3RhdGVBc0pzb25ba2V5XSA9IHZhbHVlO1xuICAgIH0pO1xuXG4gICAgY29uc29sZS5sb2coYCVjWyR7b3BlcmF0aW9ufV0gJHtrZXl9YCwgJ2ZvbnQtd2VpZ2h0OiBib2xkJyk7XG5cbiAgICBjb25zb2xlLmxvZyh7IG9wZXJhdGlvbiwga2V5LCBpdGVtIH0pO1xuICAgIGNvbnNvbGUubG9nKHN0YXRlQXNKc29uKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRHYXJiYWdlQ29sbGVjdG9yKCkge1xuICAgIGlmICh0aGlzLl9nYXJiYWdlQ29sbGVjdG9yICE9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nR2FyYmFnZUNvbGxlY3RvcignU3RhcnQnKTtcblxuICAgIHRoaXMuX2dhcmJhZ2VDb2xsZWN0b3IgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy5fcnVuR2FyYmFnZUNvbGxlY3RvcigpO1xuICAgIH0sIDE1MDAwKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N0b3BHYXJiYWdlQ29sbGVjdG9yKCkge1xuICAgIGlmICh0aGlzLl9nYXJiYWdlQ29sbGVjdG9yICE9PSBudWxsKSB7XG4gICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLl9nYXJiYWdlQ29sbGVjdG9yKTtcbiAgICAgIHRoaXMuX2dhcmJhZ2VDb2xsZWN0b3IgPSBudWxsO1xuICAgICAgdGhpcy5fbG9nR2FyYmFnZUNvbGxlY3RvcignU3RvcCcpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3J1bkdhcmJhZ2VDb2xsZWN0b3IoKSB7XG4gICAgdGhpcy5fbG9nR2FyYmFnZUNvbGxlY3RvcignQ29sbGVjdGluZy4uLicpO1xuXG4gICAgdGhpcy5fc3RvcmUuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XG4gICAgICBpZiAoaXRlbS5pc0V4cGlyZWQgJiYgIWl0ZW0uaXNJblVzZSkge1xuICAgICAgICB0aGlzLnJlbW92ZShrZXkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nR2FyYmFnZUNvbGxlY3RvcignQ29sbGVjdGlvbiBkb25lJyk7XG5cbiAgICBpZiAoIXRoaXMuX3N0b3JlLnNpemUpIHtcbiAgICAgIHRoaXMuX3N0b3BHYXJiYWdlQ29sbGVjdG9yKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbG9nR2FyYmFnZUNvbGxlY3RvcihhY3Rpb246IHN0cmluZykge1xuICAgIGlmICghdGhpcy5fY29uZmlnPy5lbmFibGVHYXJiYWdlQ29sbGVjdG9yTG9nZ2luZykgcmV0dXJuO1xuXG4gICAgY29uc29sZS5sb2coYCVjR0M6ICR7YWN0aW9ufWAsICdjb2xvcjogeWVsbG93OyBmb250LXdlaWdodDogYm9sZCcpO1xuICB9XG59XG4iXX0=
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnktc3RvcmUvcXVlcnktc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHbEUsTUFBTSxPQUFPLFVBQVU7SUFnQnJCLFlBQ1UsT0FLUDtRQUxPLFlBQU8sR0FBUCxPQUFPLENBS2Q7UUFyQkg7O1dBRUc7UUFDTSxXQUFNLEdBQUcsSUFBSSxHQUFHLEVBQW9CLENBQUM7UUFFdEMsc0JBQWlCLEdBQWtCLElBQUksQ0FBQztRQUN4Qyx5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDN0IsdUJBQWtCLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRWhDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUN0QyxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFZLENBQUM7UUFFeEMsaUJBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2pELGtCQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQVUxRCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsR0FBRyxDQUFDLEVBQVUsRUFBRSxLQUFlO1FBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUU3QixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELEdBQUcsQ0FBcUIsRUFBVTtRQUNoQyxPQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBTyxJQUFJLElBQUksQ0FBQztJQUM1QyxDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQVU7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV2QixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFbkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELE9BQU8sQ0FBQyxRQUFnRDtRQUN0RCxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN0QyxRQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLE1BQWlFO1FBQ25GLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO1FBRTFELEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3RDLElBQ0UsS0FBSyxDQUFDLE9BQU87Z0JBQ2IsQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLG1CQUFtQixDQUFDO2dCQUN4QyxLQUFLLENBQUMsbUJBQW1CLENBQUMsK0JBQStCLEVBQ3pEO2dCQUNBLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO2FBQzNEO2lCQUFNLElBQUksV0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTtnQkFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNsQjtTQUNGO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gscUJBQXFCLENBQUMsS0FBZTtRQUNuQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBUSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDckQsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFRLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV2RCxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN6QixLQUFLLENBQUMsSUFBSSxDQUFDO2lCQUNSLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN0QyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUU3QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUU7b0JBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTt3QkFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUU7NEJBQ2xELE9BQU87eUJBQ1I7d0JBRUQsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUN2QixDQUFDLENBQUMsQ0FBQztpQkFDSjtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7UUFFSCxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO2dCQUM5QixPQUFPO2FBQ1I7WUFFRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1lBRWxDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLCtCQUErQixFQUFFO2dCQUNyRixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQ3JCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLEVBQUU7d0JBQzlELEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztxQkFDdkI7b0JBRUQsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssRUFBRTt3QkFDaEQsSUFDRSxJQUFJLENBQUMsT0FBTyxFQUFFLCtCQUErQjs0QkFDN0MsS0FBSyxDQUFDLFNBQVM7NEJBQ2YsS0FBSyxDQUFDLE9BQU87NEJBQ2IsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFDckM7NEJBQ0EsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7eUJBQzNEO3FCQUNGO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBQ0o7WUFFRCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxTQUFTLENBQUMsR0FBa0IsRUFBRSxJQUFxQixFQUFFLFNBQWlCO1FBQzVFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLG1CQUFtQjtZQUFFLE9BQU87UUFFL0MsTUFBTSxXQUFXLEdBQTZCLEVBQUUsQ0FBQztRQUVqRCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNqQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLFNBQVMsS0FBSyxHQUFHLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBRTVELE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRU8scUJBQXFCO1FBQzNCLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLElBQUksRUFBRTtZQUNuQyxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFO1lBQy9DLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzlCLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFTyxxQkFBcUI7UUFDM0IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssSUFBSSxFQUFFO1lBQ25DLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUM5QixJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDbkM7SUFDSCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUUzQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNoQyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2xCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDckIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7U0FDOUI7SUFDSCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsTUFBYztRQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSw2QkFBNkI7WUFBRSxPQUFPO1FBRXpELE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxNQUFNLEVBQUUsRUFBRSxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCwgdGFrZSwgdGFrZVVudGlsLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQW55UXVlcnkgfSBmcm9tICcuLi9xdWVyeSc7XG5cbmV4cG9ydCBjbGFzcyBRdWVyeVN0b3JlIHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcmVhZG9ubHkgX3N0b3JlID0gbmV3IE1hcDxzdHJpbmcsIEFueVF1ZXJ5PigpO1xuXG4gIHByaXZhdGUgX2dhcmJhZ2VDb2xsZWN0b3I6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9pc0luTG93UmVzb3VyY2VNb2RlID0gZmFsc2U7XG4gIHByaXZhdGUgX2xhc3RCbHVyVGltZXN0YW1wID0gRGF0ZS5ub3coKTtcblxuICBwcml2YXRlIF9zdG9yZUNoYW5nZSQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgX3F1ZXJ5Q3JlYXRlZCQgPSBuZXcgU3ViamVjdDxBbnlRdWVyeT4oKTtcblxuICByZWFkb25seSBzdG9yZUNoYW5nZSQgPSB0aGlzLl9zdG9yZUNoYW5nZSQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IHF1ZXJ5Q3JlYXRlZCQgPSB0aGlzLl9xdWVyeUNyZWF0ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NvbmZpZz86IHtcbiAgICAgIGVuYWJsZUNoYW5nZUxvZ2dpbmc/OiBib29sZWFuO1xuICAgICAgZW5hYmxlR2FyYmFnZUNvbGxlY3RvckxvZ2dpbmc/OiBib29sZWFuO1xuICAgICAgYXV0b1JlZnJlc2hRdWVyaWVzT25XaW5kb3dGb2N1cz86IGJvb2xlYW47XG4gICAgICBlbmFibGVTbWFydFBvbGxpbmc/OiBib29sZWFuO1xuICAgIH0sXG4gICkge1xuICAgIHRoaXMuX2luaXRTbWFydFF1ZXJ5SGFuZGxpbmcoKTtcbiAgfVxuXG4gIGFkZChpZDogc3RyaW5nLCBxdWVyeTogQW55UXVlcnkpIHtcbiAgICB0aGlzLl9zdG9yZS5zZXQoaWQsIHF1ZXJ5KTtcblxuICAgIHRoaXMuX2luaXRHYXJiYWdlQ29sbGVjdG9yKCk7XG5cbiAgICB0aGlzLl9sb2dTdGF0ZShpZCwgcXVlcnksICdTRVQnKTtcblxuICAgIHRoaXMuX3N0b3JlQ2hhbmdlJC5uZXh0KGlkKTtcbiAgfVxuXG4gIGdldDxUIGV4dGVuZHMgQW55UXVlcnk+KGlkOiBzdHJpbmcpOiBUIHwgbnVsbCB7XG4gICAgcmV0dXJuICh0aGlzLl9zdG9yZS5nZXQoaWQpIGFzIFQpID8/IG51bGw7XG4gIH1cblxuICByZW1vdmUoaWQ6IHN0cmluZykge1xuICAgIHRoaXMuX3N0b3JlLmRlbGV0ZShpZCk7XG5cbiAgICB0aGlzLl9sb2dTdGF0ZShpZCwgbnVsbCwgJ1JFTU9WRScpO1xuXG4gICAgdGhpcy5fc3RvcmVDaGFuZ2UkLm5leHQoaWQpO1xuICB9XG5cbiAgZm9yRWFjaChjYWxsYmFjazogKHZhbHVlOiBBbnlRdWVyeSwga2V5OiBzdHJpbmcpID0+IHZvaWQpIHtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHF1ZXJ5XSBvZiB0aGlzLl9zdG9yZSkge1xuICAgICAgY2FsbGJhY2socXVlcnksIGtleSk7XG4gICAgfVxuICB9XG5cbiAgcmVmcmVzaFF1ZXJpZXNJblVzZShjb25maWc/OiB7IGlnbm9yZUNhY2hlVmFsaWRpdHk/OiBib29sZWFuOyBwdXJnZVVudXNlZD86IGJvb2xlYW4gfSkge1xuICAgIGNvbnN0IHsgaWdub3JlQ2FjaGVWYWxpZGl0eSwgcHVyZ2VVbnVzZWQgfSA9IGNvbmZpZyA/PyB7fTtcblxuICAgIGZvciAoY29uc3QgW2tleSwgcXVlcnldIG9mIHRoaXMuX3N0b3JlKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHF1ZXJ5LmlzSW5Vc2UgJiZcbiAgICAgICAgKHF1ZXJ5LmlzRXhwaXJlZCB8fCBpZ25vcmVDYWNoZVZhbGlkaXR5KSAmJlxuICAgICAgICBxdWVyeS5hdXRvUmVmcmVzaE9uQ29uZmlnLnF1ZXJ5Q2xpZW50RGVmYXVsdEhlYWRlcnNDaGFuZ2VcbiAgICAgICkge1xuICAgICAgICBxdWVyeS5leGVjdXRlKHsgc2tpcENhY2hlOiB0cnVlLCBfdHJpZ2dlcmVkVmlhOiAnYXV0bycgfSk7XG4gICAgICB9IGVsc2UgaWYgKHB1cmdlVW51c2VkICYmICFxdWVyeS5pc0luVXNlKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlKGtleSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX2Rpc3BhdGNoUXVlcnlDcmVhdGVkKHF1ZXJ5OiBBbnlRdWVyeSkge1xuICAgIHRoaXMuX3F1ZXJ5Q3JlYXRlZCQubmV4dChxdWVyeSk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0U21hcnRRdWVyeUhhbmRsaW5nKCkge1xuICAgIGNvbnN0IHdpbmRvd0JsdXIkID0gZnJvbUV2ZW50PEV2ZW50Pih3aW5kb3csICdibHVyJyk7XG4gICAgY29uc3Qgd2luZG93Rm9jdXMkID0gZnJvbUV2ZW50PEV2ZW50Pih3aW5kb3csICdmb2N1cycpO1xuXG4gICAgd2luZG93Qmx1ciQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRpbWVyKDUwMDApXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh3aW5kb3dGb2N1cyQpLCB0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9sYXN0Qmx1clRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgICAgICAgdGhpcy5faXNJbkxvd1Jlc291cmNlTW9kZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fc3RvcEdhcmJhZ2VDb2xsZWN0b3IoKTtcblxuICAgICAgICAgIGlmICh0aGlzLl9jb25maWc/LmVuYWJsZVNtYXJ0UG9sbGluZykge1xuICAgICAgICAgICAgdGhpcy5mb3JFYWNoKChxdWVyeSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIXF1ZXJ5LmlzUG9sbGluZyB8fCAhcXVlcnkuX2VuYWJsZVNtYXJ0UG9sbGluZykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHF1ZXJ5LnBhdXNlUG9sbGluZygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIHdpbmRvd0ZvY3VzJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9pc0luTG93UmVzb3VyY2VNb2RlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faXNJbkxvd1Jlc291cmNlTW9kZSA9IGZhbHNlO1xuXG4gICAgICBpZiAodGhpcy5fY29uZmlnPy5lbmFibGVTbWFydFBvbGxpbmcgfHwgdGhpcy5fY29uZmlnPy5hdXRvUmVmcmVzaFF1ZXJpZXNPbldpbmRvd0ZvY3VzKSB7XG4gICAgICAgIHRoaXMuZm9yRWFjaCgocXVlcnkpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fY29uZmlnPy5lbmFibGVTbWFydFBvbGxpbmcgJiYgcXVlcnkuX2lzUG9sbGluZ1BhdXNlZCkge1xuICAgICAgICAgICAgcXVlcnkucmVzdW1lUG9sbGluZygpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChEYXRlLm5vdygpIC0gdGhpcy5fbGFzdEJsdXJUaW1lc3RhbXAgPiAxNTAwMCkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0aGlzLl9jb25maWc/LmF1dG9SZWZyZXNoUXVlcmllc09uV2luZG93Rm9jdXMgJiZcbiAgICAgICAgICAgICAgcXVlcnkuaXNFeHBpcmVkICYmXG4gICAgICAgICAgICAgIHF1ZXJ5LmlzSW5Vc2UgJiZcbiAgICAgICAgICAgICAgcXVlcnkuYXV0b1JlZnJlc2hPbkNvbmZpZy53aW5kb3dGb2N1c1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHF1ZXJ5LmV4ZWN1dGUoeyBza2lwQ2FjaGU6IHRydWUsIF90cmlnZ2VyZWRWaWE6ICdhdXRvJyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pbml0R2FyYmFnZUNvbGxlY3RvcigpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfbG9nU3RhdGUoa2V5OiBzdHJpbmcgfCBudWxsLCBpdGVtOiBBbnlRdWVyeSB8IG51bGwsIG9wZXJhdGlvbjogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLl9jb25maWc/LmVuYWJsZUNoYW5nZUxvZ2dpbmcpIHJldHVybjtcblxuICAgIGNvbnN0IHN0YXRlQXNKc29uOiBSZWNvcmQ8c3RyaW5nLCBBbnlRdWVyeT4gPSB7fTtcblxuICAgIHRoaXMuX3N0b3JlLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgIHN0YXRlQXNKc29uW2tleV0gPSB2YWx1ZTtcbiAgICB9KTtcblxuICAgIGNvbnNvbGUubG9nKGAlY1ske29wZXJhdGlvbn1dICR7a2V5fWAsICdmb250LXdlaWdodDogYm9sZCcpO1xuXG4gICAgY29uc29sZS5sb2coeyBvcGVyYXRpb24sIGtleSwgaXRlbSB9KTtcbiAgICBjb25zb2xlLmxvZyhzdGF0ZUFzSnNvbik7XG4gIH1cblxuICBwcml2YXRlIF9pbml0R2FyYmFnZUNvbGxlY3RvcigpIHtcbiAgICBpZiAodGhpcy5fZ2FyYmFnZUNvbGxlY3RvciAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ0dhcmJhZ2VDb2xsZWN0b3IoJ1N0YXJ0Jyk7XG5cbiAgICB0aGlzLl9nYXJiYWdlQ29sbGVjdG9yID0gd2luZG93LnNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHRoaXMuX3J1bkdhcmJhZ2VDb2xsZWN0b3IoKTtcbiAgICB9LCAxNTAwMCk7XG4gIH1cblxuICBwcml2YXRlIF9zdG9wR2FyYmFnZUNvbGxlY3RvcigpIHtcbiAgICBpZiAodGhpcy5fZ2FyYmFnZUNvbGxlY3RvciAhPT0gbnVsbCkge1xuICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwodGhpcy5fZ2FyYmFnZUNvbGxlY3Rvcik7XG4gICAgICB0aGlzLl9nYXJiYWdlQ29sbGVjdG9yID0gbnVsbDtcbiAgICAgIHRoaXMuX2xvZ0dhcmJhZ2VDb2xsZWN0b3IoJ1N0b3AnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9ydW5HYXJiYWdlQ29sbGVjdG9yKCkge1xuICAgIHRoaXMuX2xvZ0dhcmJhZ2VDb2xsZWN0b3IoJ0NvbGxlY3RpbmcuLi4nKTtcblxuICAgIHRoaXMuX3N0b3JlLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xuICAgICAgaWYgKGl0ZW0uaXNFeHBpcmVkICYmICFpdGVtLmlzSW5Vc2UpIHtcbiAgICAgICAgdGhpcy5yZW1vdmUoa2V5KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ0dhcmJhZ2VDb2xsZWN0b3IoJ0NvbGxlY3Rpb24gZG9uZScpO1xuXG4gICAgaWYgKCF0aGlzLl9zdG9yZS5zaXplKSB7XG4gICAgICB0aGlzLl9zdG9wR2FyYmFnZUNvbGxlY3RvcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2xvZ0dhcmJhZ2VDb2xsZWN0b3IoYWN0aW9uOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZz8uZW5hYmxlR2FyYmFnZUNvbGxlY3RvckxvZ2dpbmcpIHJldHVybjtcblxuICAgIGNvbnNvbGUubG9nKGAlY0dDOiAke2FjdGlvbn1gLCAnY29sb3I6IHllbGxvdzsgZm9udC13ZWlnaHQ6IGJvbGQnKTtcbiAgfVxufVxuIl19