@ethlete/query 5.11.0 → 5.12.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.
- package/CHANGELOG.md +14 -0
- package/esm2022/lib/devtools/components/query-devtools/query-devtools.component.mjs +3 -3
- package/esm2022/lib/devtools/pipes/query-short-name.pipe.mjs +3 -3
- package/esm2022/lib/directives/infinity-query-trigger.directive.mjs +3 -3
- package/esm2022/lib/directives/infinity-query.directive.mjs +5 -5
- package/esm2022/lib/directives/query.directive.mjs +3 -3
- package/esm2022/lib/infinite-query/infinity-query.mjs +17 -18
- package/esm2022/lib/utils/data.utils.mjs +12 -2
- package/fesm2022/ethlete-query.mjs +43 -34
- package/fesm2022/ethlete-query.mjs.map +1 -1
- package/lib/utils/data.utils.d.ts +5 -0
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @ethlete/query
|
|
2
2
|
|
|
3
|
+
## 5.12.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`7adf0de`](https://github.com/ethlete-io/ethdk/commit/7adf0de1c1c13dfbeef6ab43e5666197ac305242) Thanks [@TomTomB](https://github.com/TomTomB)! - Kepp loading state on false inside infinity query if the query was triggered by polling
|
|
8
|
+
|
|
9
|
+
- [`7adf0de`](https://github.com/ethlete-io/ethdk/commit/7adf0de1c1c13dfbeef6ab43e5666197ac305242) Thanks [@TomTomB](https://github.com/TomTomB)! - Fix flickering inside infinity query due to polling
|
|
10
|
+
|
|
11
|
+
## 5.12.0
|
|
12
|
+
|
|
13
|
+
### Minor Changes
|
|
14
|
+
|
|
15
|
+
- [`aeb1134`](https://github.com/ethlete-io/ethdk/commit/aeb1134f80f0bcf53e11131d64b8b2d8c1434295) Thanks [@TomTomB](https://github.com/TomTomB)! - Add queryComputedTillTruthy util
|
|
16
|
+
|
|
3
17
|
## 5.11.0
|
|
4
18
|
|
|
5
19
|
### Minor Changes
|
|
@@ -285,10 +285,10 @@ export class QueryDevtoolsComponent {
|
|
|
285
285
|
clearQueryHistory() {
|
|
286
286
|
this.queryHistory$.next([]);
|
|
287
287
|
}
|
|
288
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
289
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.6", type: QueryDevtoolsComponent, isStandalone: true, selector: "et-query-devtools", host: { classAttribute: "et-query-devtools" }, ngImport: i0, template: "@if (!isOpen()) {\n <button (click)=\"toggleOpen()\" class=\"et-query-devtools-open-btn et-qd-chip\">Open Devtools</button>\n}\n\n@if (isOpen()) {\n <div\n [class.et-query-devtools-container--transparent]=\"isTranslucent()\"\n class=\"et-query-devtools-container et-query-devtools-container--snap-{{ snapLayout() }}\"\n >\n <header class=\"et-qd-header\">\n <h3 class=\"et-qd-header__title\">Query Devtools</h3>\n\n <div class=\"et-qd-header__select\">\n <label for=\"et-query-client-instance\">Client instance</label>\n <select [formControl]=\"selectedClientIdCtrl\" id=\"et-query-client-instance\">\n @for (clientConfig of queryClientConfigs; track trackByClient(i, clientConfig); let i = $index) {\n <option [value]=\"i\">\n {{ clientConfig.displayName ?? clientConfig.client.config.baseRoute }}\n </option>\n }\n </select>\n </div>\n\n <button (click)=\"toggleOpen()\" class=\"et-qd-btn et-qd-btn-secondary\">Close</button>\n </header>\n\n <div class=\"et-qd-sub-header\">\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !isTranslucent() }\"\n (click)=\"toggleTranslucent()\"\n class=\"et-qd-chip et-qd-translucent-clickable\"\n >\n Translucent\n </button>\n <div class=\"et-qd-sub-header__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'full' }\"\n (click)=\"selectSnapLayout('full')\"\n class=\"et-qd-chip\"\n >\n Fullscreen\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'top' }\"\n (click)=\"selectSnapLayout('top')\"\n class=\"et-qd-chip\"\n >\n Top\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'bottom' }\"\n (click)=\"selectSnapLayout('bottom')\"\n class=\"et-qd-chip\"\n >\n Bottom\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'left' }\"\n (click)=\"selectSnapLayout('left')\"\n class=\"et-qd-chip\"\n >\n Left\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'right' }\"\n (click)=\"selectSnapLayout('right')\"\n class=\"et-qd-chip\"\n >\n Right\n </button>\n </div>\n\n @if (selectedClientConfig(); as cfg) {\n <div class=\"et-qd-client\">\n <p class=\"et-qd-client__title\">{{ cfg.displayName ?? cfg.client.config.baseRoute }}</p>\n\n <div class=\"et-qd-client__actions\">\n <button (click)=\"cfg.client._store.refreshQueriesInUse()\" class=\"et-qd-chip\">Refresh all</button>\n <button (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true })\" class=\"et-qd-chip\">\n Refresh all (ignore caches)\n </button>\n <button\n (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true, purgeUnused: true })\"\n class=\"et-qd-chip\"\n >\n Refresh all (ignore caches & purge unused)\n </button>\n </div>\n </div>\n }\n\n @if (selectedClientConfig(); as cfg) {\n <div class=\"et-qd-queries\">\n <p class=\"et-qd-queries__title\">Inspector</p>\n <div class=\"et-qd-queries__actions\">\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': queryListMode() !== 'live' || viewMode() !== 'query' }\"\n (click)=\"selectQueryListMode('live'); selectViewMode('query')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Live Queries ({{ queries()?.length ?? 0 }})\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': queryListMode() !== 'history' || viewMode() !== 'query' }\"\n (click)=\"selectQueryListMode('history'); selectViewMode('query')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Query History ({{ (queryHistory$ | async)?.length ?? 0 }}/50)\n </button>\n @if (queryListMode() === 'history' && viewMode() === 'query') {\n <div class=\"et-qd-queries__divider\"></div>\n <button (click)=\"clearQueryHistory()\" class=\"et-qd-chip et-qd-chip-bordered\">Clear history</button>\n }\n\n <div class=\"et-qd-queries__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': viewMode() !== 'authProvider' }\"\n (click)=\"selectViewMode('authProvider')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Auth Provider\n </button>\n </div>\n\n @if (viewMode() === 'query') {\n <div class=\"et-qd-queries__browser\">\n @if (queryListMode() === 'live') {\n <ul class=\"et-qd-queries__browser-list\">\n @for (query of queries(); track trackByQuery($index, query)) {\n <li>\n <button\n [class.et-qd-query--active]=\"selectedQuery()?._id === query._id\"\n (click)=\"selectQuery(query)\"\n >\n <span> {{ query._queryConfig.method }}</span>\n <span> {{ query | queryShortName }}</span>\n </button>\n </li>\n }\n </ul>\n }\n @if (queryListMode() === 'history') {\n <ul class=\"et-qd-queries__browser-list\">\n @for (query of queryHistory$ | async; track trackByQuery($index, query)) {\n <li>\n <button\n [class.et-qd-query--active]=\"selectedQuery()?._id === query._id\"\n (click)=\"selectQuery(query)\"\n >\n <span> {{ query._queryConfig.method }}</span>\n <span> {{ query | queryShortName }}</span>\n </button>\n </li>\n }\n </ul>\n }\n <div class=\"et-qd-queries__browser-detail\">\n @if (selectedQuery(); as query) {\n <p class=\"et-qd-queries__browser-detail__title\">\n {{ query._queryConfig.method }} {{ query._routeWithParams }}\n </p>\n\n <div class=\"et-qd-queries__actions\">\n <button (click)=\"query.execute()\" class=\"et-qd-chip et-qd-chip-bordered\">Execute</button>\n <button (click)=\"query.execute({ skipCache: true })\" class=\"et-qd-chip et-qd-chip-bordered\">\n Execute (ignore cache)\n </button>\n\n <button (click)=\"query.abort()\" class=\"et-qd-chip et-qd-chip-bordered\">Abort</button>\n <div class=\"et-qd-queries__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !query.isPolling }\"\n (click)=\"query.poll({ interval: 5000, takeUntil: _destroy$ })\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Poll\n </button>\n\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': query.isPolling }\"\n (click)=\"query.stopPolling()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Stop polling\n </button>\n @if (query.isPolling || query._isPollingPaused) {\n <button (click)=\"query.pausePolling()\" class=\"et-qd-chip et-qd-chip-secondary et-qd-chip-bordered\">\n Pause polling\n </button>\n <button (click)=\"query.resumePolling()\" class=\"et-qd-chip et-qd-chip-secondary et-qd-chip-bordered\">\n Resume polling\n </button>\n }\n </div>\n\n <div class=\"et-qd-list\">\n <div class=\"et-qd-list-item\">\n <p>State type</p>\n <pre>{{ query.rawState.type }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Dependents</p>\n <pre>{{ query._dependents | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is expired</p>\n <pre>{{ query.isExpired }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is in use</p>\n <pre>{{ query.isInUse }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Subscriber count</p>\n <pre>{{ query._subscriberCount }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is polling</p>\n <pre>{{ query.isPolling }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is polling paused</p>\n <pre>{{ query._isPollingPaused }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Enable smart polling</p>\n <pre>{{ query._enableSmartPolling }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Query store key</p>\n <pre>{{ query._queryStoreKey }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Arguments</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showArguments() }\"\n (click)=\"toggleShowArguments()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n @if (showArguments()) {\n <pre>{{ query._arguments | json }}</pre>\n }\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>State</p>\n <p><i> Warning, this will cause a subscription if shown!</i></p>\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showResponse() }\"\n (click)=\"toggleShowResponse()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n @if (showResponse()) {\n <pre>{{ query.state$ | async | json }}</pre>\n }\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Raw state</p>\n <p><i> The query state unaffected by entity stores</i></p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showRawResponse() }\"\n (click)=\"toggleShowRawResponse()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n @if (showRawResponse()) {\n <pre>{{ query.rawState | json }}</pre>\n }\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Query config</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showQueryConfig() }\"\n (click)=\"toggleShowQueryConfig()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n @if (showQueryConfig()) {\n <pre>{{ stringifiedQueryConfig() | json }}</pre>\n }\n </div>\n\n @if (!!query._queryConfig.entity) {\n <div class=\"et-qd-list-item\">\n <p>Entity store value</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showEntityStoreValue() }\"\n (click)=\"toggleShowEntityStoreValue()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n @if (showEntityStoreValue()) {\n <pre>{{ selectedQueryEntityStoreValue$ | async | json }}</pre>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n } @else if (viewMode() === 'authProvider') {\n <div class=\"et-qd-auth-provider__viewer\">\n @if (authProviderDetails(); as details) {\n <div class=\"et-qd-list\">\n <div class=\"et-qd-list-item\">\n <p>Type</p>\n <pre>{{ details.type }}</pre>\n </div>\n <div class=\"et-qd-list-item\">\n <p>Header value</p>\n <pre>{{ details.header() | json }}</pre>\n </div>\n <div class=\"et-qd-list-item\">\n <p>Config</p>\n <pre>{{ details.config | json }}</pre>\n </div>\n\n @if (details.type === 'BearerAuthProvider') {\n <div class=\"et-qd-list-item\">\n <p>Tokens</p>\n <pre>{{ details.provider.tokens$ | async | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Should refresh on unauthorized response</p>\n <pre>{{ details.provider.shouldRefreshOnUnauthorizedResponse }}</pre>\n </div>\n\n <ng-container\n *etQuery=\"\n details.provider.currentRefreshQuery$ | async as response;\n loading as loading;\n error as error;\n query as query\n \"\n >\n <div class=\"et-qd-list-item\">\n <p>Refresh query response</p>\n\n <div>\n <button (click)=\"details.provider._refreshQuery()\" class=\"et-qd-chip et-qd-chip-bordered\">\n Refresh\n </button>\n </div>\n <pre>{{ response | json }}</pre>\n </div>\n <div class=\"et-qd-list-item\">\n <p>Refresh query loading</p>\n <pre>{{ loading }}</pre>\n </div>\n <div class=\"et-qd-list-item\">\n <p>Refresh query error</p>\n <pre>{{ error ?? 'null' }}</pre>\n </div>\n <div class=\"et-qd-list-item\">\n <p>State</p>\n <pre>{{ query?.state$ | async | json }}</pre>\n </div>\n </ng-container>\n }\n </div>\n } @else {\n <p>No auth provider set</p>\n }\n </div>\n }\n </div>\n }\n </div>\n}\n", styles: [":host{position:fixed;top:0;z-index:1000000;font-size:14px;color:#fff}.et-query-devtools-container{position:fixed;inset:0;background-color:#25292e;z-index:10000;overflow:auto;font-family:monospace;display:grid;grid-template-rows:auto auto auto minmax(0,1fr)}.et-query-devtools-container.et-query-devtools-container--transparent{opacity:.25;pointer-events:none}.et-query-devtools-container.et-query-devtools-container--transparent .et-query-devtools-translucent-btn{pointer-events:all}.et-query-devtools-container.et-query-devtools-container--snap-left{inset-inline-start:0;inset-block-start:0;inset-block-end:0;width:50%;border-right:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-right{inset-inline-start:unset;inset-inline-end:0;inset-block-start:0;inset-block-end:0;width:50%;border-left:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-top{inset-inline-start:0;inset-block-start:0;inset-inline-end:0;height:50%;border-bottom:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-bottom{inset-inline-start:0;inset-block-start:unset;inset-block-end:0;inset-inline-end:0;height:50%;border-top:1px solid rgb(37,41,46)}.et-query-devtools-open-btn{position:fixed;inset-inline-start:0;inset-block-start:0;z-index:9999;all:unset;font-family:monospace}.et-qd-header{background-color:#00ffa1;padding:12px;display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center}.et-qd-header__title{color:#25292e;margin:0;font-size:22px}.et-qd-header__select{display:grid;background-color:#25292e;border-radius:10px;overflow:hidden}.et-qd-header__select select{width:250px;color:#fff;padding:3px 10px 2px;border:none;background-color:#25292e;font-family:monospace}.et-qd-header__select label{padding:3px 10px;color:#25292e;font-size:12px;font-weight:700;color:#fff;border-bottom:1px solid gray}.et-qd-sub-header{background-color:#00b371;padding:12px;display:flex;gap:12px;flex-wrap:wrap}.et-qd-sub-header__divider{width:1px;background-color:#25292e}.et-qd-btn{background-color:#00ffa1;color:#25292e;border:none;padding:12px;cursor:pointer;font-size:14px;font-weight:700;text-align:center;text-decoration:none;display:inline-block;width:100%;transition:all .3s ease-in-out;font-family:monospace;border-radius:10px}.et-qd-btn:hover{background-color:#00cc81}.et-qd-btn.et-qd-btn-secondary{background-color:#25292e;color:#00ffa1}.et-qd-btn.et-qd-btn-secondary:hover{background-color:#3c424a}.et-qd-chip{background-color:#00ffa1;color:#25292e;border:none;padding:4px 9px;cursor:pointer;font-size:12px;font-weight:700;text-align:center;text-decoration:none;display:inline-block;transition:all .3s ease-in-out;font-family:monospace;border-radius:10px}.et-qd-chip:hover{background-color:#00cc81}.et-qd-chip.et-qd-chip-secondary{background-color:#25292e;color:#00ffa1}.et-qd-chip.et-qd-chip-secondary:hover{background-color:#3c424a}.et-qd-chip.et-qd-chip-bordered{border:1px solid rgb(0,255,161)}.et-qd-translucent-clickable{pointer-events:all}.et-qd-client{border-bottom:1px solid #3c424a;padding:12px}.et-qd-client__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-client__actions{display:flex;gap:12px;margin-top:12px}.et-qd-queries{padding:12px;display:grid;grid-template-rows:auto auto minmax(0,1fr)}.et-qd-queries__actions{display:flex;gap:12px;margin-top:12px;margin-bottom:16px}.et-qd-queries__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-queries__divider{width:1px;background-color:#3c424a}.et-qd-queries__browser{display:grid;grid-template-columns:1fr minmax(0,3fr);margin-left:-12px;margin-right:-12px;border-top:1px solid #3c424a;margin-bottom:-12px}.et-qd-queries__browser-list{border-right:1px solid #3c424a;list-style:none;padding:0;margin:0;display:grid;grid-auto-flow:row;grid-auto-rows:55px;overflow-y:auto;overflow-x:hidden}.et-qd-queries__browser-list li{margin:0}.et-qd-queries__browser-list li button{all:unset;font-family:monospace;box-sizing:border-box;width:100%;border:none;border-bottom:1px solid #3c424a;background-color:#25292e;color:#fff;text-align:left;padding:12px;height:100%;transition:all .3s ease-in-out;cursor:pointer;display:grid;gap:2px}.et-qd-queries__browser-list li button span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.et-qd-queries__browser-list li button span:first-of-type{font-weight:700}.et-qd-queries__browser-list li button:hover,.et-qd-queries__browser-list li button.et-qd-query--active{background-color:#30363c}.et-qd-queries__browser-detail{padding:12px;overflow-y:auto;overflow-x:hidden}.et-qd-queries__browser-detail__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-auth-provider__viewer{border-top:1px solid #3c424a;margin-left:-12px;margin-right:-12px;margin-bottom:-12px;padding:12px;overflow-y:auto;overflow-x:hidden}.et-qd-list{display:grid;gap:12px}.et-qd-list-item{display:grid}.et-qd-list-item p{font-weight:700;margin:0;padding-bottom:8px}.et-qd-list-item p+p{margin-top:-8px}.et-qd-list-item div+pre{margin-top:8px}.et-qd-list-item pre{margin:0;padding:4px;background-color:#0e1012;border-radius:4px;max-height:450px;overflow:auto}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: JsonPipe, name: "json" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: QueryShortNamePipe, name: "queryShortName" }, { kind: "directive", type: QueryDirective, selector: "[etQuery]", inputs: ["etQuery", "etQueryCache"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.ShadowDom }); }
|
|
288
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: QueryDevtoolsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
289
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.7", type: QueryDevtoolsComponent, isStandalone: true, selector: "et-query-devtools", host: { classAttribute: "et-query-devtools" }, ngImport: i0, template: "@if (!isOpen()) {\n <button (click)=\"toggleOpen()\" class=\"et-query-devtools-open-btn et-qd-chip\">Open Devtools</button>\n}\n\n@if (isOpen()) {\n <div\n [class.et-query-devtools-container--transparent]=\"isTranslucent()\"\n class=\"et-query-devtools-container et-query-devtools-container--snap-{{ snapLayout() }}\"\n >\n <header class=\"et-qd-header\">\n <h3 class=\"et-qd-header__title\">Query Devtools</h3>\n\n <div class=\"et-qd-header__select\">\n <label for=\"et-query-client-instance\">Client instance</label>\n <select [formControl]=\"selectedClientIdCtrl\" id=\"et-query-client-instance\">\n @for (clientConfig of queryClientConfigs; track trackByClient(i, clientConfig); let i = $index) {\n <option [value]=\"i\">\n {{ clientConfig.displayName ?? clientConfig.client.config.baseRoute }}\n </option>\n }\n </select>\n </div>\n\n <button (click)=\"toggleOpen()\" class=\"et-qd-btn et-qd-btn-secondary\">Close</button>\n </header>\n\n <div class=\"et-qd-sub-header\">\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !isTranslucent() }\"\n (click)=\"toggleTranslucent()\"\n class=\"et-qd-chip et-qd-translucent-clickable\"\n >\n Translucent\n </button>\n <div class=\"et-qd-sub-header__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'full' }\"\n (click)=\"selectSnapLayout('full')\"\n class=\"et-qd-chip\"\n >\n Fullscreen\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'top' }\"\n (click)=\"selectSnapLayout('top')\"\n class=\"et-qd-chip\"\n >\n Top\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'bottom' }\"\n (click)=\"selectSnapLayout('bottom')\"\n class=\"et-qd-chip\"\n >\n Bottom\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'left' }\"\n (click)=\"selectSnapLayout('left')\"\n class=\"et-qd-chip\"\n >\n Left\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'right' }\"\n (click)=\"selectSnapLayout('right')\"\n class=\"et-qd-chip\"\n >\n Right\n </button>\n </div>\n\n @if (selectedClientConfig(); as cfg) {\n <div class=\"et-qd-client\">\n <p class=\"et-qd-client__title\">{{ cfg.displayName ?? cfg.client.config.baseRoute }}</p>\n\n <div class=\"et-qd-client__actions\">\n <button (click)=\"cfg.client._store.refreshQueriesInUse()\" class=\"et-qd-chip\">Refresh all</button>\n <button (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true })\" class=\"et-qd-chip\">\n Refresh all (ignore caches)\n </button>\n <button\n (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true, purgeUnused: true })\"\n class=\"et-qd-chip\"\n >\n Refresh all (ignore caches & purge unused)\n </button>\n </div>\n </div>\n }\n\n @if (selectedClientConfig(); as cfg) {\n <div class=\"et-qd-queries\">\n <p class=\"et-qd-queries__title\">Inspector</p>\n <div class=\"et-qd-queries__actions\">\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': queryListMode() !== 'live' || viewMode() !== 'query' }\"\n (click)=\"selectQueryListMode('live'); selectViewMode('query')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Live Queries ({{ queries()?.length ?? 0 }})\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': queryListMode() !== 'history' || viewMode() !== 'query' }\"\n (click)=\"selectQueryListMode('history'); selectViewMode('query')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Query History ({{ (queryHistory$ | async)?.length ?? 0 }}/50)\n </button>\n @if (queryListMode() === 'history' && viewMode() === 'query') {\n <div class=\"et-qd-queries__divider\"></div>\n <button (click)=\"clearQueryHistory()\" class=\"et-qd-chip et-qd-chip-bordered\">Clear history</button>\n }\n\n <div class=\"et-qd-queries__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': viewMode() !== 'authProvider' }\"\n (click)=\"selectViewMode('authProvider')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Auth Provider\n </button>\n </div>\n\n @if (viewMode() === 'query') {\n <div class=\"et-qd-queries__browser\">\n @if (queryListMode() === 'live') {\n <ul class=\"et-qd-queries__browser-list\">\n @for (query of queries(); track trackByQuery($index, query)) {\n <li>\n <button\n [class.et-qd-query--active]=\"selectedQuery()?._id === query._id\"\n (click)=\"selectQuery(query)\"\n >\n <span> {{ query._queryConfig.method }}</span>\n <span> {{ query | queryShortName }}</span>\n </button>\n </li>\n }\n </ul>\n }\n @if (queryListMode() === 'history') {\n <ul class=\"et-qd-queries__browser-list\">\n @for (query of queryHistory$ | async; track trackByQuery($index, query)) {\n <li>\n <button\n [class.et-qd-query--active]=\"selectedQuery()?._id === query._id\"\n (click)=\"selectQuery(query)\"\n >\n <span> {{ query._queryConfig.method }}</span>\n <span> {{ query | queryShortName }}</span>\n </button>\n </li>\n }\n </ul>\n }\n <div class=\"et-qd-queries__browser-detail\">\n @if (selectedQuery(); as query) {\n <p class=\"et-qd-queries__browser-detail__title\">\n {{ query._queryConfig.method }} {{ query._routeWithParams }}\n </p>\n\n <div class=\"et-qd-queries__actions\">\n <button (click)=\"query.execute()\" class=\"et-qd-chip et-qd-chip-bordered\">Execute</button>\n <button (click)=\"query.execute({ skipCache: true })\" class=\"et-qd-chip et-qd-chip-bordered\">\n Execute (ignore cache)\n </button>\n\n <button (click)=\"query.abort()\" class=\"et-qd-chip et-qd-chip-bordered\">Abort</button>\n <div class=\"et-qd-queries__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !query.isPolling }\"\n (click)=\"query.poll({ interval: 5000, takeUntil: _destroy$ })\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Poll\n </button>\n\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': query.isPolling }\"\n (click)=\"query.stopPolling()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Stop polling\n </button>\n @if (query.isPolling || query._isPollingPaused) {\n <button (click)=\"query.pausePolling()\" class=\"et-qd-chip et-qd-chip-secondary et-qd-chip-bordered\">\n Pause polling\n </button>\n <button (click)=\"query.resumePolling()\" class=\"et-qd-chip et-qd-chip-secondary et-qd-chip-bordered\">\n Resume polling\n </button>\n }\n </div>\n\n <div class=\"et-qd-list\">\n <div class=\"et-qd-list-item\">\n <p>State type</p>\n <pre>{{ query.rawState.type }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Dependents</p>\n <pre>{{ query._dependents | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is expired</p>\n <pre>{{ query.isExpired }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is in use</p>\n <pre>{{ query.isInUse }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Subscriber count</p>\n <pre>{{ query._subscriberCount }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is polling</p>\n <pre>{{ query.isPolling }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is polling paused</p>\n <pre>{{ query._isPollingPaused }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Enable smart polling</p>\n <pre>{{ query._enableSmartPolling }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Query store key</p>\n <pre>{{ query._queryStoreKey }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Arguments</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showArguments() }\"\n (click)=\"toggleShowArguments()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n @if (showArguments()) {\n <pre>{{ query._arguments | json }}</pre>\n }\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>State</p>\n <p><i> Warning, this will cause a subscription if shown!</i></p>\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showResponse() }\"\n (click)=\"toggleShowResponse()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n @if (showResponse()) {\n <pre>{{ query.state$ | async | json }}</pre>\n }\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Raw state</p>\n <p><i> The query state unaffected by entity stores</i></p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showRawResponse() }\"\n (click)=\"toggleShowRawResponse()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n @if (showRawResponse()) {\n <pre>{{ query.rawState | json }}</pre>\n }\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Query config</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showQueryConfig() }\"\n (click)=\"toggleShowQueryConfig()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n @if (showQueryConfig()) {\n <pre>{{ stringifiedQueryConfig() | json }}</pre>\n }\n </div>\n\n @if (!!query._queryConfig.entity) {\n <div class=\"et-qd-list-item\">\n <p>Entity store value</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showEntityStoreValue() }\"\n (click)=\"toggleShowEntityStoreValue()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n @if (showEntityStoreValue()) {\n <pre>{{ selectedQueryEntityStoreValue$ | async | json }}</pre>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n } @else if (viewMode() === 'authProvider') {\n <div class=\"et-qd-auth-provider__viewer\">\n @if (authProviderDetails(); as details) {\n <div class=\"et-qd-list\">\n <div class=\"et-qd-list-item\">\n <p>Type</p>\n <pre>{{ details.type }}</pre>\n </div>\n <div class=\"et-qd-list-item\">\n <p>Header value</p>\n <pre>{{ details.header() | json }}</pre>\n </div>\n <div class=\"et-qd-list-item\">\n <p>Config</p>\n <pre>{{ details.config | json }}</pre>\n </div>\n\n @if (details.type === 'BearerAuthProvider') {\n <div class=\"et-qd-list-item\">\n <p>Tokens</p>\n <pre>{{ details.provider.tokens$ | async | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Should refresh on unauthorized response</p>\n <pre>{{ details.provider.shouldRefreshOnUnauthorizedResponse }}</pre>\n </div>\n\n <ng-container\n *etQuery=\"\n details.provider.currentRefreshQuery$ | async as response;\n loading as loading;\n error as error;\n query as query\n \"\n >\n <div class=\"et-qd-list-item\">\n <p>Refresh query response</p>\n\n <div>\n <button (click)=\"details.provider._refreshQuery()\" class=\"et-qd-chip et-qd-chip-bordered\">\n Refresh\n </button>\n </div>\n <pre>{{ response | json }}</pre>\n </div>\n <div class=\"et-qd-list-item\">\n <p>Refresh query loading</p>\n <pre>{{ loading }}</pre>\n </div>\n <div class=\"et-qd-list-item\">\n <p>Refresh query error</p>\n <pre>{{ error ?? 'null' }}</pre>\n </div>\n <div class=\"et-qd-list-item\">\n <p>State</p>\n <pre>{{ query?.state$ | async | json }}</pre>\n </div>\n </ng-container>\n }\n </div>\n } @else {\n <p>No auth provider set</p>\n }\n </div>\n }\n </div>\n }\n </div>\n}\n", styles: [":host{position:fixed;top:0;z-index:1000000;font-size:14px;color:#fff}.et-query-devtools-container{position:fixed;inset:0;background-color:#25292e;z-index:10000;overflow:auto;font-family:monospace;display:grid;grid-template-rows:auto auto auto minmax(0,1fr)}.et-query-devtools-container.et-query-devtools-container--transparent{opacity:.25;pointer-events:none}.et-query-devtools-container.et-query-devtools-container--transparent .et-query-devtools-translucent-btn{pointer-events:all}.et-query-devtools-container.et-query-devtools-container--snap-left{inset-inline-start:0;inset-block-start:0;inset-block-end:0;width:50%;border-right:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-right{inset-inline-start:unset;inset-inline-end:0;inset-block-start:0;inset-block-end:0;width:50%;border-left:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-top{inset-inline-start:0;inset-block-start:0;inset-inline-end:0;height:50%;border-bottom:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-bottom{inset-inline-start:0;inset-block-start:unset;inset-block-end:0;inset-inline-end:0;height:50%;border-top:1px solid rgb(37,41,46)}.et-query-devtools-open-btn{position:fixed;inset-inline-start:0;inset-block-start:0;z-index:9999;all:unset;font-family:monospace}.et-qd-header{background-color:#00ffa1;padding:12px;display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center}.et-qd-header__title{color:#25292e;margin:0;font-size:22px}.et-qd-header__select{display:grid;background-color:#25292e;border-radius:10px;overflow:hidden}.et-qd-header__select select{width:250px;color:#fff;padding:3px 10px 2px;border:none;background-color:#25292e;font-family:monospace}.et-qd-header__select label{padding:3px 10px;color:#25292e;font-size:12px;font-weight:700;color:#fff;border-bottom:1px solid gray}.et-qd-sub-header{background-color:#00b371;padding:12px;display:flex;gap:12px;flex-wrap:wrap}.et-qd-sub-header__divider{width:1px;background-color:#25292e}.et-qd-btn{background-color:#00ffa1;color:#25292e;border:none;padding:12px;cursor:pointer;font-size:14px;font-weight:700;text-align:center;text-decoration:none;display:inline-block;width:100%;transition:all .3s ease-in-out;font-family:monospace;border-radius:10px}.et-qd-btn:hover{background-color:#00cc81}.et-qd-btn.et-qd-btn-secondary{background-color:#25292e;color:#00ffa1}.et-qd-btn.et-qd-btn-secondary:hover{background-color:#3c424a}.et-qd-chip{background-color:#00ffa1;color:#25292e;border:none;padding:4px 9px;cursor:pointer;font-size:12px;font-weight:700;text-align:center;text-decoration:none;display:inline-block;transition:all .3s ease-in-out;font-family:monospace;border-radius:10px}.et-qd-chip:hover{background-color:#00cc81}.et-qd-chip.et-qd-chip-secondary{background-color:#25292e;color:#00ffa1}.et-qd-chip.et-qd-chip-secondary:hover{background-color:#3c424a}.et-qd-chip.et-qd-chip-bordered{border:1px solid rgb(0,255,161)}.et-qd-translucent-clickable{pointer-events:all}.et-qd-client{border-bottom:1px solid #3c424a;padding:12px}.et-qd-client__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-client__actions{display:flex;gap:12px;margin-top:12px}.et-qd-queries{padding:12px;display:grid;grid-template-rows:auto auto minmax(0,1fr)}.et-qd-queries__actions{display:flex;gap:12px;margin-top:12px;margin-bottom:16px}.et-qd-queries__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-queries__divider{width:1px;background-color:#3c424a}.et-qd-queries__browser{display:grid;grid-template-columns:1fr minmax(0,3fr);margin-left:-12px;margin-right:-12px;border-top:1px solid #3c424a;margin-bottom:-12px}.et-qd-queries__browser-list{border-right:1px solid #3c424a;list-style:none;padding:0;margin:0;display:grid;grid-auto-flow:row;grid-auto-rows:55px;overflow-y:auto;overflow-x:hidden}.et-qd-queries__browser-list li{margin:0}.et-qd-queries__browser-list li button{all:unset;font-family:monospace;box-sizing:border-box;width:100%;border:none;border-bottom:1px solid #3c424a;background-color:#25292e;color:#fff;text-align:left;padding:12px;height:100%;transition:all .3s ease-in-out;cursor:pointer;display:grid;gap:2px}.et-qd-queries__browser-list li button span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.et-qd-queries__browser-list li button span:first-of-type{font-weight:700}.et-qd-queries__browser-list li button:hover,.et-qd-queries__browser-list li button.et-qd-query--active{background-color:#30363c}.et-qd-queries__browser-detail{padding:12px;overflow-y:auto;overflow-x:hidden}.et-qd-queries__browser-detail__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-auth-provider__viewer{border-top:1px solid #3c424a;margin-left:-12px;margin-right:-12px;margin-bottom:-12px;padding:12px;overflow-y:auto;overflow-x:hidden}.et-qd-list{display:grid;gap:12px}.et-qd-list-item{display:grid}.et-qd-list-item p{font-weight:700;margin:0;padding-bottom:8px}.et-qd-list-item p+p{margin-top:-8px}.et-qd-list-item div+pre{margin-top:8px}.et-qd-list-item pre{margin:0;padding:4px;background-color:#0e1012;border-radius:4px;max-height:450px;overflow:auto}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: JsonPipe, name: "json" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: QueryShortNamePipe, name: "queryShortName" }, { kind: "directive", type: QueryDirective, selector: "[etQuery]", inputs: ["etQuery", "etQueryCache"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.ShadowDom }); }
|
|
290
290
|
}
|
|
291
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
291
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: QueryDevtoolsComponent, decorators: [{
|
|
292
292
|
type: Component,
|
|
293
293
|
args: [{ selector: 'et-query-devtools', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.ShadowDom, host: {
|
|
294
294
|
class: 'et-query-devtools',
|
|
@@ -14,10 +14,10 @@ export class QueryShortNamePipe {
|
|
|
14
14
|
}
|
|
15
15
|
return route;
|
|
16
16
|
}
|
|
17
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
18
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: QueryShortNamePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
18
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.7", ngImport: i0, type: QueryShortNamePipe, isStandalone: true, name: "queryShortName" }); }
|
|
19
19
|
}
|
|
20
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: QueryShortNamePipe, decorators: [{
|
|
21
21
|
type: Pipe,
|
|
22
22
|
args: [{ name: 'queryShortName', standalone: true }]
|
|
23
23
|
}] });
|
|
@@ -40,10 +40,10 @@ export class InfinityQueryTriggerDirective {
|
|
|
40
40
|
});
|
|
41
41
|
this._observer.observe(this._elementRef.nativeElement);
|
|
42
42
|
}
|
|
43
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
44
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.
|
|
43
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: InfinityQueryTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
44
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.7", type: InfinityQueryTriggerDirective, isStandalone: true, selector: "[etInfinityQueryTrigger], et-infinity-query-trigger", inputs: { scrollContainerSelector: "scrollContainerSelector" }, ngImport: i0 }); }
|
|
45
45
|
}
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: InfinityQueryTriggerDirective, decorators: [{
|
|
47
47
|
type: Directive,
|
|
48
48
|
args: [{
|
|
49
49
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
@@ -75,7 +75,7 @@ export class InfinityQueryDirective {
|
|
|
75
75
|
this._viewContext.currentCalculatedPage = instance.currentCalculatedPage;
|
|
76
76
|
this._viewContext.currentQuery = currentQuery;
|
|
77
77
|
if (isQueryStateLoading(state) || isDelayed || !infinityArray) {
|
|
78
|
-
this._viewContext.loading = true;
|
|
78
|
+
this._viewContext.loading = state ? state.meta.triggeredVia !== 'poll' : true;
|
|
79
79
|
this._viewContext.error = null;
|
|
80
80
|
this._viewContext.isFirstLoad = this.context.etInfinityQuery === null;
|
|
81
81
|
}
|
|
@@ -127,10 +127,10 @@ export class InfinityQueryDirective {
|
|
|
127
127
|
this._viewContext.currentQuery = null;
|
|
128
128
|
this._data$.next([]);
|
|
129
129
|
}
|
|
130
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
131
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.
|
|
130
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: InfinityQueryDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
131
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.7", type: InfinityQueryDirective, isStandalone: true, selector: "[etInfinityQuery]", inputs: { infinityQuery: ["etInfinityQuery", "infinityQuery"] }, providers: [{ provide: INFINITY_QUERY_TOKEN, useExisting: InfinityQueryDirective }], exportAs: ["etInfinityQuery"], hostDirectives: [{ directive: i1.DelayableDirective }], ngImport: i0 }); }
|
|
132
132
|
}
|
|
133
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
133
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: InfinityQueryDirective, decorators: [{
|
|
134
134
|
type: Directive,
|
|
135
135
|
args: [{
|
|
136
136
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
@@ -144,4 +144,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
|
|
|
144
144
|
type: Input,
|
|
145
145
|
args: ['etInfinityQuery']
|
|
146
146
|
}] } });
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdHktcXVlcnkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2RpcmVjdGl2ZXMvaW5maW5pdHktcXVlcnkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBQ0wsV0FBVyxFQUNYLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0YsT0FBTyxFQUFFLGFBQWEsRUFBd0MsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RixPQUFPLEVBRUwsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsZ0JBQWdCLEdBQ2pCLE1BQU0sVUFBVSxDQUFDOzs7QUFzQmxCLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLElBQUksY0FBYyxDQUE4QixzQkFBc0IsQ0FBQyxDQUFDO0FBVTVHLE1BQU0sT0FBTyxzQkFBc0I7SUE4QmpDLElBQ0ksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsSUFBSSxhQUFhLENBQUMsQ0FBSTtRQUNwQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFaEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUdELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBSUQsTUFBTSxDQUFDLHNCQUFzQixDQUUzQixHQUE4QixFQUFFLEdBQVk7UUFDNUMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7UUE1RGlCLHlCQUFvQixHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFDOUMsaUJBQVksR0FBNEI7WUFDdkQsU0FBUyxFQUFFLElBQUk7WUFDZixlQUFlLEVBQUUsSUFBSTtZQUNyQixPQUFPLEVBQUUsS0FBSztZQUNkLEtBQUssRUFBRSxJQUFJO1lBRVgsV0FBVyxFQUFFLEtBQUs7WUFDbEIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsV0FBVyxFQUFFLElBQUk7WUFDakIscUJBQXFCLEVBQUUsSUFBSTtZQUMzQixVQUFVLEVBQUUsSUFBSTtZQUNoQixZQUFZLEVBQUUsSUFBSTtZQUVsQixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDO1FBQ00sMkJBQXNCLEdBQThCLElBQUksQ0FBQztRQUVoRCxjQUFTLEdBQUcsYUFBYSxFQUFFLENBQUM7UUFDNUIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2pDLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxDQUFBLFdBQW9DLENBQUEsQ0FBQyxDQUFDO1FBQ2hFLGtCQUFhLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3JDLGVBQVUsR0FBRyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUV4RCxXQUFNLEdBQUcsSUFBSSxlQUFlLENBQTZCLEVBQUUsQ0FBQyxDQUFDO1FBMkI5RSxTQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQVNsRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRU8sbUJBQW1CLENBQUMsTUFBUztRQUNuQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBdUIsQ0FBQztRQUVqRixhQUFhLENBQUM7WUFDWixRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDdkYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVO1lBQzFCLFFBQVEsQ0FBQyxLQUFLO1NBQ2YsQ0FBQzthQUNDLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxFQUFFLFNBQVMsRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFO1lBQ3hELElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7WUFDckQsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUNuRCxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBQ3ZELElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVztnQkFDM0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxLQUFLLElBQUk7b0JBQzNCLFFBQVEsQ0FBQyxXQUFXLEtBQUssSUFBSTtvQkFDN0IsUUFBUSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDO29CQUM3QyxLQUFLLENBQUM7WUFDUixJQUFJLENBQUMsWUFBWSxDQUFDLHFCQUFxQixHQUFHLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQztZQUN6RSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7WUFFOUMsSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxLQUFLLElBQUksQ0FBQztZQUN4RSxDQUFDO2lCQUFNLElBQUksbUJBQW1CLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QyxDQUFDO2lCQUFNLElBQUksbUJBQW1CLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTO29CQUM3RCxhQUEyQyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNsQyxDQUFDO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUN6QixTQUFTLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQ3JDO2FBQ0EsU0FBUyxFQUFFLENBQUM7UUFFZixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNqQyxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM5QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQWdEO1FBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNqQyxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsU0FBZ0IsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTyxRQUFRO1FBQ2QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFFbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUVwQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFFdEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkIsQ0FBQzs4R0F6SlUsc0JBQXNCO2tHQUF0QixzQkFBc0IsaUlBSHRCLENBQUMsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFLENBQUM7OzJGQUd4RSxzQkFBc0I7a0JBUmxDLFNBQVM7bUJBQUM7b0JBQ1QsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyx3QkFBd0IsRUFBRSxDQUFDO29CQUNuRixjQUFjLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDckM7d0RBZ0NLLGFBQWE7c0JBRGhCLEtBQUs7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRXJyb3JIYW5kbGVyLFxuICBpbmplY3QsXG4gIEluamVjdGlvblRva2VuLFxuICBJbnB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBjcmVhdGVEZXN0cm95LCBEZWxheWFibGVEaXJlY3RpdmUgfSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgU3ViamVjdCwgdGFrZVVudGlsLCB0YXAsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbmZpbml0eVF1ZXJ5LCBJbmZpbml0eVF1ZXJ5Q29uZmlnLCBJbmZpbml0eVF1ZXJ5T2YgfSBmcm9tICcuLi9pbmZpbml0ZS1xdWVyeSc7XG5pbXBvcnQge1xuICBCYXNlQXJndW1lbnRzLFxuICBpc1F1ZXJ5U3RhdGVGYWlsdXJlLFxuICBpc1F1ZXJ5U3RhdGVMb2FkaW5nLFxuICBpc1F1ZXJ5U3RhdGVTdWNjZXNzLFxuICBzd2l0Y2hRdWVyeVN0YXRlLFxufSBmcm9tICcuLi9xdWVyeSc7XG5pbXBvcnQgeyBBbnlRdWVyeUNyZWF0b3IsIENvbnN0cnVjdFF1ZXJ5IH0gZnJvbSAnLi4vcXVlcnktY3JlYXRvcic7XG5pbXBvcnQgeyBSZXF1ZXN0RXJyb3IgfSBmcm9tICcuLi9yZXF1ZXN0JztcblxuaW50ZXJmYWNlIEluZmluaXR5UXVlcnlDb250ZXh0PFxuICBRIGV4dGVuZHMgSW5maW5pdHlRdWVyeUNvbmZpZzxBbnlRdWVyeUNyZWF0b3IsIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsIGFueSwgdW5rbm93bltdPixcbj4ge1xuICAkaW1wbGljaXQ6IFFbJ3Jlc3BvbnNlJ11bJ2FycmF5VHlwZSddIHwgbnVsbDtcbiAgZXRJbmZpbml0eVF1ZXJ5OiBRWydyZXNwb25zZSddWydhcnJheVR5cGUnXSB8IG51bGw7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG4gIGVycm9yOiBSZXF1ZXN0RXJyb3I8dW5rbm93bj4gfCBudWxsO1xuXG4gIGlzRmlyc3RMb2FkOiBib29sZWFuO1xuICBjYW5Mb2FkTW9yZTogYm9vbGVhbjtcbiAgY3VycmVudFBhZ2U6IG51bWJlciB8IG51bGw7XG4gIGN1cnJlbnRDYWxjdWxhdGVkUGFnZTogbnVtYmVyIHwgbnVsbDtcbiAgdG90YWxQYWdlczogbnVtYmVyIHwgbnVsbDtcbiAgaXRlbXNQZXJQYWdlOiBudW1iZXIgfCBudWxsO1xuXG4gIGN1cnJlbnRRdWVyeTogQ29uc3RydWN0UXVlcnk8UVsncXVlcnlDcmVhdG9yJ10+IHwgbnVsbDtcbn1cblxuZXhwb3J0IGNvbnN0IElORklOSVRZX1FVRVJZX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPEluZmluaXR5UXVlcnlEaXJlY3RpdmU8YW55Pj4oJ0lORklOSVRZX1FVRVJZX1RPS0VOJyk7XG5cbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogJ1tldEluZmluaXR5UXVlcnldJyxcbiAgZXhwb3J0QXM6ICdldEluZmluaXR5UXVlcnknLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IElORklOSVRZX1FVRVJZX1RPS0VOLCB1c2VFeGlzdGluZzogSW5maW5pdHlRdWVyeURpcmVjdGl2ZSB9XSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtEZWxheWFibGVEaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBJbmZpbml0eVF1ZXJ5RGlyZWN0aXZlPFxuICBRIGV4dGVuZHMgSW5maW5pdHlRdWVyeUNvbmZpZzxBbnlRdWVyeUNyZWF0b3IsIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsIGFueSwgdW5rbm93bltdPixcbj4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9xdWVyeUNvbmZpZ0NoYW5nZWQkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlld0NvbnRleHQ6IEluZmluaXR5UXVlcnlDb250ZXh0PFE+ID0ge1xuICAgICRpbXBsaWNpdDogbnVsbCxcbiAgICBldEluZmluaXR5UXVlcnk6IG51bGwsXG4gICAgbG9hZGluZzogZmFsc2UsXG4gICAgZXJyb3I6IG51bGwsXG5cbiAgICBpc0ZpcnN0TG9hZDogZmFsc2UsXG4gICAgY2FuTG9hZE1vcmU6IGZhbHNlLFxuICAgIGN1cnJlbnRQYWdlOiBudWxsLFxuICAgIGN1cnJlbnRDYWxjdWxhdGVkUGFnZTogbnVsbCxcbiAgICB0b3RhbFBhZ2VzOiBudWxsLFxuICAgIGl0ZW1zUGVyUGFnZTogbnVsbCxcblxuICAgIGN1cnJlbnRRdWVyeTogbnVsbCxcbiAgfTtcbiAgcHJpdmF0ZSBfaW5maW5pdHlRdWVyeUluc3RhbmNlOiBJbmZpbml0eVF1ZXJ5T2Y8UT4gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IGNyZWF0ZURlc3Ryb3koKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWFpblRlbXBsYXRlUmVmID0gaW5qZWN0KFRlbXBsYXRlUmVmPEluZmluaXR5UXVlcnlDb250ZXh0PFE+Pik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Vycm9ySGFuZGxlciA9IGluamVjdChFcnJvckhhbmRsZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZWxheWFibGUgPSBpbmplY3QoRGVsYXlhYmxlRGlyZWN0aXZlLCB7IGhvc3Q6IHRydWUgfSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGF0YSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFFbJ3Jlc3BvbnNlJ11bJ2FycmF5VHlwZSddPihbXSk7XG5cbiAgQElucHV0KCdldEluZmluaXR5UXVlcnknKVxuICBnZXQgaW5maW5pdHlRdWVyeSgpOiBRIHtcbiAgICByZXR1cm4gdGhpcy5faW5maW5pdHlRdWVyeTtcbiAgfVxuICBzZXQgaW5maW5pdHlRdWVyeSh2OiBRKSB7XG4gICAgdGhpcy5fY2xlYW51cCgpO1xuXG4gICAgdGhpcy5faW5maW5pdHlRdWVyeSA9IHY7XG4gICAgdGhpcy5faW5maW5pdHlRdWVyeUluc3RhbmNlID0gdGhpcy5fc2V0dXBJbmZpbml0eVF1ZXJ5KHYpO1xuICAgIHRoaXMuX2luZmluaXR5UXVlcnlJbnN0YW5jZS5uZXh0UGFnZSgpO1xuICB9XG4gIHByaXZhdGUgX2luZmluaXR5UXVlcnkhOiBRO1xuXG4gIGdldCBjb250ZXh0KCkge1xuICAgIHJldHVybiB0aGlzLl92aWV3Q29udGV4dDtcbiAgfVxuXG4gIGdldCBpbnN0YW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5maW5pdHlRdWVyeUluc3RhbmNlO1xuICB9XG5cbiAgZ2V0IGRhdGEkKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGRhdGEgPSB0b1NpZ25hbCh0aGlzLl9kYXRhJCwgeyByZXF1aXJlU3luYzogdHJ1ZSB9KTtcblxuICBzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZDxcbiAgICBRIGV4dGVuZHMgSW5maW5pdHlRdWVyeUNvbmZpZzxBbnlRdWVyeUNyZWF0b3IsIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsIGFueSwgdW5rbm93bltdPixcbiAgPihkaXI6IEluZmluaXR5UXVlcnlEaXJlY3RpdmU8UT4sIGN0eDogdW5rbm93bik6IGN0eCBpcyBJbmZpbml0eVF1ZXJ5Q29udGV4dDxRPiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl9tYWluVGVtcGxhdGVSZWYsIHRoaXMuX3ZpZXdDb250ZXh0KTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwSW5maW5pdHlRdWVyeShjb25maWc6IFEpIHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBJbmZpbml0eVF1ZXJ5KGNvbmZpZywgdGhpcy5fZGVzdHJveSQpIGFzIEluZmluaXR5UXVlcnlPZjxRPjtcblxuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgaW5zdGFuY2UuY3VycmVudFF1ZXJ5JC5waXBlKHN3aXRjaFF1ZXJ5U3RhdGUoKSwgd2l0aExhdGVzdEZyb20oaW5zdGFuY2UuY3VycmVudFF1ZXJ5JCkpLFxuICAgICAgdGhpcy5fZGVsYXlhYmxlLmlzRGVsYXllZCQsXG4gICAgICBpbnN0YW5jZS5kYXRhJCxcbiAgICBdKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoW1tzdGF0ZSwgY3VycmVudFF1ZXJ5XSwgaXNEZWxheWVkLCBpbmZpbml0eUFycmF5XSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmN1cnJlbnRQYWdlID0gaW5zdGFuY2UuY3VycmVudFBhZ2U7XG4gICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQudG90YWxQYWdlcyA9IGluc3RhbmNlLnRvdGFsUGFnZXM7XG4gICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuaXRlbXNQZXJQYWdlID0gaW5zdGFuY2UuaXRlbXNQZXJQYWdlO1xuICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmNhbkxvYWRNb3JlID1cbiAgICAgICAgICAgIChpbnN0YW5jZS50b3RhbFBhZ2VzICE9PSBudWxsICYmXG4gICAgICAgICAgICAgIGluc3RhbmNlLmN1cnJlbnRQYWdlICE9PSBudWxsICYmXG4gICAgICAgICAgICAgIGluc3RhbmNlLnRvdGFsUGFnZXMgPiBpbnN0YW5jZS5jdXJyZW50UGFnZSkgfHxcbiAgICAgICAgICAgIGZhbHNlO1xuICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmN1cnJlbnRDYWxjdWxhdGVkUGFnZSA9IGluc3RhbmNlLmN1cnJlbnRDYWxjdWxhdGVkUGFnZTtcbiAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5jdXJyZW50UXVlcnkgPSBjdXJyZW50UXVlcnk7XG5cbiAgICAgICAgICBpZiAoaXNRdWVyeVN0YXRlTG9hZGluZyhzdGF0ZSkgfHwgaXNEZWxheWVkIHx8ICFpbmZpbml0eUFycmF5KSB7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmVycm9yID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmlzRmlyc3RMb2FkID0gdGhpcy5jb250ZXh0LmV0SW5maW5pdHlRdWVyeSA9PT0gbnVsbDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzUXVlcnlTdGF0ZUZhaWx1cmUoc3RhdGUpKSB7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5lcnJvciA9IHN0YXRlLmVycm9yO1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuaXNGaXJzdExvYWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX2Vycm9ySGFuZGxlci5oYW5kbGVFcnJvcihzdGF0ZS5lcnJvcik7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc1F1ZXJ5U3RhdGVTdWNjZXNzKHN0YXRlKSkge1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuZXJyb3IgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuaXNGaXJzdExvYWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmV0SW5maW5pdHlRdWVyeSA9IHRoaXMuX3ZpZXdDb250ZXh0LiRpbXBsaWNpdCA9XG4gICAgICAgICAgICAgIGluZmluaXR5QXJyYXkgYXMgUVsncmVzcG9uc2UnXVsnYXJyYXlUeXBlJ107XG4gICAgICAgICAgICB0aGlzLl9kYXRhJC5uZXh0KGluZmluaXR5QXJyYXkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9xdWVyeUNvbmZpZ0NoYW5nZWQkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxuXG4gIGxvYWROZXh0UGFnZSgpIHtcbiAgICBpZiAoIXRoaXMuX2luZmluaXR5UXVlcnlJbnN0YW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl92aWV3Q29udGV4dC5sb2FkaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faW5maW5pdHlRdWVyeUluc3RhbmNlLm5leHRQYWdlKCk7XG4gIH1cblxuICByZXNldChuZXdDb25maWc/OiBPbWl0PFEsICdxdWVyeUNyZWF0b3InIHwgJ3Jlc3BvbnNlJz4pIHtcbiAgICBpZiAoIXRoaXMuX2luZmluaXR5UXVlcnlJbnN0YW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2luZmluaXR5UXVlcnlJbnN0YW5jZS5yZXNldChuZXdDb25maWcgYXMgYW55KTtcbiAgfVxuXG4gIHByaXZhdGUgX2NsZWFudXAoKSB7XG4gICAgdGhpcy5fcXVlcnlDb25maWdDaGFuZ2VkJC5uZXh0KHRydWUpO1xuXG4gICAgdGhpcy5fdmlld0NvbnRleHQubG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuX3ZpZXdDb250ZXh0LmVycm9yID0gbnVsbDtcbiAgICB0aGlzLl92aWV3Q29udGV4dC5ldEluZmluaXR5UXVlcnkgPSBudWxsO1xuICAgIHRoaXMuX3ZpZXdDb250ZXh0LiRpbXBsaWNpdCA9IG51bGw7XG5cbiAgICB0aGlzLl92aWV3Q29udGV4dC5pc0ZpcnN0TG9hZCA9IGZhbHNlO1xuICAgIHRoaXMuX3ZpZXdDb250ZXh0LmNhbkxvYWRNb3JlID0gZmFsc2U7XG4gICAgdGhpcy5fdmlld0NvbnRleHQuY3VycmVudFBhZ2UgPSBudWxsO1xuICAgIHRoaXMuX3ZpZXdDb250ZXh0Lml0ZW1zUGVyUGFnZSA9IG51bGw7XG4gICAgdGhpcy5fdmlld0NvbnRleHQudG90YWxQYWdlcyA9IG51bGw7XG5cbiAgICB0aGlzLl92aWV3Q29udGV4dC5jdXJyZW50UXVlcnkgPSBudWxsO1xuXG4gICAgdGhpcy5fZGF0YSQubmV4dChbXSk7XG4gIH1cbn1cbiJdfQ==
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdHktcXVlcnkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2RpcmVjdGl2ZXMvaW5maW5pdHktcXVlcnkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBQ0wsV0FBVyxFQUNYLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0YsT0FBTyxFQUFFLGFBQWEsRUFBd0MsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RixPQUFPLEVBRUwsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsZ0JBQWdCLEdBQ2pCLE1BQU0sVUFBVSxDQUFDOzs7QUFzQmxCLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLElBQUksY0FBYyxDQUE4QixzQkFBc0IsQ0FBQyxDQUFDO0FBVTVHLE1BQU0sT0FBTyxzQkFBc0I7SUE4QmpDLElBQ0ksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsSUFBSSxhQUFhLENBQUMsQ0FBSTtRQUNwQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFaEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FB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LGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBRW5DLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFFcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXRDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7OEdBekpVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLGlJQUh0QixDQUFDLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRSxDQUFDOzsyRkFHeEUsc0JBQXNCO2tCQVJsQyxTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFdBQVcsd0JBQXdCLEVBQUUsQ0FBQztvQkFDbkYsY0FBYyxFQUFFLENBQUMsa0JBQWtCLENBQUM7aUJBQ3JDO3dEQWdDSyxhQUFhO3NCQURoQixLQUFLO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIEVycm9ySGFuZGxlcixcbiAgaW5qZWN0LFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgY3JlYXRlRGVzdHJveSwgRGVsYXlhYmxlRGlyZWN0aXZlIH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIFN1YmplY3QsIHRha2VVbnRpbCwgdGFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW5maW5pdHlRdWVyeSwgSW5maW5pdHlRdWVyeUNvbmZpZywgSW5maW5pdHlRdWVyeU9mIH0gZnJvbSAnLi4vaW5maW5pdGUtcXVlcnknO1xuaW1wb3J0IHtcbiAgQmFzZUFyZ3VtZW50cyxcbiAgaXNRdWVyeVN0YXRlRmFpbHVyZSxcbiAgaXNRdWVyeVN0YXRlTG9hZGluZyxcbiAgaXNRdWVyeVN0YXRlU3VjY2VzcyxcbiAgc3dpdGNoUXVlcnlTdGF0ZSxcbn0gZnJvbSAnLi4vcXVlcnknO1xuaW1wb3J0IHsgQW55UXVlcnlDcmVhdG9yLCBDb25zdHJ1Y3RRdWVyeSB9IGZyb20gJy4uL3F1ZXJ5LWNyZWF0b3InO1xuaW1wb3J0IHsgUmVxdWVzdEVycm9yIH0gZnJvbSAnLi4vcmVxdWVzdCc7XG5cbmludGVyZmFjZSBJbmZpbml0eVF1ZXJ5Q29udGV4dDxcbiAgUSBleHRlbmRzIEluZmluaXR5UXVlcnlDb25maWc8QW55UXVlcnlDcmVhdG9yLCBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkLCBhbnksIHVua25vd25bXT4sXG4+IHtcbiAgJGltcGxpY2l0OiBRWydyZXNwb25zZSddWydhcnJheVR5cGUnXSB8IG51bGw7XG4gIGV0SW5maW5pdHlRdWVyeTogUVsncmVzcG9uc2UnXVsnYXJyYXlUeXBlJ10gfCBudWxsO1xuICBsb2FkaW5nOiBib29sZWFuO1xuICBlcnJvcjogUmVxdWVzdEVycm9yPHVua25vd24+IHwgbnVsbDtcblxuICBpc0ZpcnN0TG9hZDogYm9vbGVhbjtcbiAgY2FuTG9hZE1vcmU6IGJvb2xlYW47XG4gIGN1cnJlbnRQYWdlOiBudW1iZXIgfCBudWxsO1xuICBjdXJyZW50Q2FsY3VsYXRlZFBhZ2U6IG51bWJlciB8IG51bGw7XG4gIHRvdGFsUGFnZXM6IG51bWJlciB8IG51bGw7XG4gIGl0ZW1zUGVyUGFnZTogbnVtYmVyIHwgbnVsbDtcblxuICBjdXJyZW50UXVlcnk6IENvbnN0cnVjdFF1ZXJ5PFFbJ3F1ZXJ5Q3JlYXRvciddPiB8IG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCBJTkZJTklUWV9RVUVSWV9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJbmZpbml0eVF1ZXJ5RGlyZWN0aXZlPGFueT4+KCdJTkZJTklUWV9RVUVSWV9UT0tFTicpO1xuXG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbZXRJbmZpbml0eVF1ZXJ5XScsXG4gIGV4cG9ydEFzOiAnZXRJbmZpbml0eVF1ZXJ5JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBJTkZJTklUWV9RVUVSWV9UT0tFTiwgdXNlRXhpc3Rpbmc6IEluZmluaXR5UXVlcnlEaXJlY3RpdmUgfV0sXG4gIGhvc3REaXJlY3RpdmVzOiBbRGVsYXlhYmxlRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgSW5maW5pdHlRdWVyeURpcmVjdGl2ZTxcbiAgUSBleHRlbmRzIEluZmluaXR5UXVlcnlDb25maWc8QW55UXVlcnlDcmVhdG9yLCBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkLCBhbnksIHVua25vd25bXT4sXG4+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfcXVlcnlDb25maWdDaGFuZ2VkJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250ZXh0OiBJbmZpbml0eVF1ZXJ5Q29udGV4dDxRPiA9IHtcbiAgICAkaW1wbGljaXQ6IG51bGwsXG4gICAgZXRJbmZpbml0eVF1ZXJ5OiBudWxsLFxuICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgIGVycm9yOiBudWxsLFxuXG4gICAgaXNGaXJzdExvYWQ6IGZhbHNlLFxuICAgIGNhbkxvYWRNb3JlOiBmYWxzZSxcbiAgICBjdXJyZW50UGFnZTogbnVsbCxcbiAgICBjdXJyZW50Q2FsY3VsYXRlZFBhZ2U6IG51bGwsXG4gICAgdG90YWxQYWdlczogbnVsbCxcbiAgICBpdGVtc1BlclBhZ2U6IG51bGwsXG5cbiAgICBjdXJyZW50UXVlcnk6IG51bGwsXG4gIH07XG4gIHByaXZhdGUgX2luZmluaXR5UXVlcnlJbnN0YW5jZTogSW5maW5pdHlRdWVyeU9mPFE+IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBjcmVhdGVEZXN0cm95KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21haW5UZW1wbGF0ZVJlZiA9IGluamVjdChUZW1wbGF0ZVJlZjxJbmZpbml0eVF1ZXJ5Q29udGV4dDxRPj4pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lcnJvckhhbmRsZXIgPSBpbmplY3QoRXJyb3JIYW5kbGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVsYXlhYmxlID0gaW5qZWN0KERlbGF5YWJsZURpcmVjdGl2ZSwgeyBob3N0OiB0cnVlIH0pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RhdGEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRWydyZXNwb25zZSddWydhcnJheVR5cGUnXT4oW10pO1xuXG4gIEBJbnB1dCgnZXRJbmZpbml0eVF1ZXJ5JylcbiAgZ2V0IGluZmluaXR5UXVlcnkoKTogUSB7XG4gICAgcmV0dXJuIHRoaXMuX2luZmluaXR5UXVlcnk7XG4gIH1cbiAgc2V0IGluZmluaXR5UXVlcnkodjogUSkge1xuICAgIHRoaXMuX2NsZWFudXAoKTtcblxuICAgIHRoaXMuX2luZmluaXR5UXVlcnkgPSB2O1xuICAgIHRoaXMuX2luZmluaXR5UXVlcnlJbnN0YW5jZSA9IHRoaXMuX3NldHVwSW5maW5pdHlRdWVyeSh2KTtcbiAgICB0aGlzLl9pbmZpbml0eVF1ZXJ5SW5zdGFuY2UubmV4dFBhZ2UoKTtcbiAgfVxuICBwcml2YXRlIF9pbmZpbml0eVF1ZXJ5ITogUTtcblxuICBnZXQgY29udGV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmlld0NvbnRleHQ7XG4gIH1cblxuICBnZXQgaW5zdGFuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2luZmluaXR5UXVlcnlJbnN0YW5jZTtcbiAgfVxuXG4gIGdldCBkYXRhJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBkYXRhID0gdG9TaWduYWwodGhpcy5fZGF0YSQsIHsgcmVxdWlyZVN5bmM6IHRydWUgfSk7XG5cbiAgc3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQ8XG4gICAgUSBleHRlbmRzIEluZmluaXR5UXVlcnlDb25maWc8QW55UXVlcnlDcmVhdG9yLCBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkLCBhbnksIHVua25vd25bXT4sXG4gID4oZGlyOiBJbmZpbml0eVF1ZXJ5RGlyZWN0aXZlPFE+LCBjdHg6IHVua25vd24pOiBjdHggaXMgSW5maW5pdHlRdWVyeUNvbnRleHQ8UT4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fbWFpblRlbXBsYXRlUmVmLCB0aGlzLl92aWV3Q29udGV4dCk7XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cEluZmluaXR5UXVlcnkoY29uZmlnOiBRKSB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgSW5maW5pdHlRdWVyeShjb25maWcsIHRoaXMuX2Rlc3Ryb3kkKSBhcyBJbmZpbml0eVF1ZXJ5T2Y8UT47XG5cbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIGluc3RhbmNlLmN1cnJlbnRRdWVyeSQucGlwZShzd2l0Y2hRdWVyeVN0YXRlKCksIHdpdGhMYXRlc3RGcm9tKGluc3RhbmNlLmN1cnJlbnRRdWVyeSQpKSxcbiAgICAgIHRoaXMuX2RlbGF5YWJsZS5pc0RlbGF5ZWQkLFxuICAgICAgaW5zdGFuY2UuZGF0YSQsXG4gICAgXSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKFtbc3RhdGUsIGN1cnJlbnRRdWVyeV0sIGlzRGVsYXllZCwgaW5maW5pdHlBcnJheV0pID0+IHtcbiAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5jdXJyZW50UGFnZSA9IGluc3RhbmNlLmN1cnJlbnRQYWdlO1xuICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LnRvdGFsUGFnZXMgPSBpbnN0YW5jZS50b3RhbFBhZ2VzO1xuICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0Lml0ZW1zUGVyUGFnZSA9IGluc3RhbmNlLml0ZW1zUGVyUGFnZTtcbiAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5jYW5Mb2FkTW9yZSA9XG4gICAgICAgICAgICAoaW5zdGFuY2UudG90YWxQYWdlcyAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICBpbnN0YW5jZS5jdXJyZW50UGFnZSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICBpbnN0YW5jZS50b3RhbFBhZ2VzID4gaW5zdGFuY2UuY3VycmVudFBhZ2UpIHx8XG4gICAgICAgICAgICBmYWxzZTtcbiAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5jdXJyZW50Q2FsY3VsYXRlZFBhZ2UgPSBpbnN0YW5jZS5jdXJyZW50Q2FsY3VsYXRlZFBhZ2U7XG4gICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuY3VycmVudFF1ZXJ5ID0gY3VycmVudFF1ZXJ5O1xuXG4gICAgICAgICAgaWYgKGlzUXVlcnlTdGF0ZUxvYWRpbmcoc3RhdGUpIHx8IGlzRGVsYXllZCB8fCAhaW5maW5pdHlBcnJheSkge1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQubG9hZGluZyA9IHN0YXRlID8gc3RhdGUubWV0YS50cmlnZ2VyZWRWaWEgIT09ICdwb2xsJyA6IHRydWU7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5lcnJvciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5pc0ZpcnN0TG9hZCA9IHRoaXMuY29udGV4dC5ldEluZmluaXR5UXVlcnkgPT09IG51bGw7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc1F1ZXJ5U3RhdGVGYWlsdXJlKHN0YXRlKSkge1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuZXJyb3IgPSBzdGF0ZS5lcnJvcjtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmlzRmlyc3RMb2FkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl9lcnJvckhhbmRsZXIuaGFuZGxlRXJyb3Ioc3RhdGUuZXJyb3IpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXNRdWVyeVN0YXRlU3VjY2VzcyhzdGF0ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmVycm9yID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmlzRmlyc3RMb2FkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5ldEluZmluaXR5UXVlcnkgPSB0aGlzLl92aWV3Q29udGV4dC4kaW1wbGljaXQgPVxuICAgICAgICAgICAgICBpbmZpbml0eUFycmF5IGFzIFFbJ3Jlc3BvbnNlJ11bJ2FycmF5VHlwZSddO1xuICAgICAgICAgICAgdGhpcy5fZGF0YSQubmV4dChpbmZpbml0eUFycmF5KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fcXVlcnlDb25maWdDaGFuZ2VkJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cblxuICBsb2FkTmV4dFBhZ2UoKSB7XG4gICAgaWYgKCF0aGlzLl9pbmZpbml0eVF1ZXJ5SW5zdGFuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fdmlld0NvbnRleHQubG9hZGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2luZmluaXR5UXVlcnlJbnN0YW5jZS5uZXh0UGFnZSgpO1xuICB9XG5cbiAgcmVzZXQobmV3Q29uZmlnPzogT21pdDxRLCAncXVlcnlDcmVhdG9yJyB8ICdyZXNwb25zZSc+KSB7XG4gICAgaWYgKCF0aGlzLl9pbmZpbml0eVF1ZXJ5SW5zdGFuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pbmZpbml0eVF1ZXJ5SW5zdGFuY2UucmVzZXQobmV3Q29uZmlnIGFzIGFueSk7XG4gIH1cblxuICBwcml2YXRlIF9jbGVhbnVwKCkge1xuICAgIHRoaXMuX3F1ZXJ5Q29uZmlnQ2hhbmdlZCQubmV4dCh0cnVlKTtcblxuICAgIHRoaXMuX3ZpZXdDb250ZXh0LmxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLl92aWV3Q29udGV4dC5lcnJvciA9IG51bGw7XG4gICAgdGhpcy5fdmlld0NvbnRleHQuZXRJbmZpbml0eVF1ZXJ5ID0gbnVsbDtcbiAgICB0aGlzLl92aWV3Q29udGV4dC4kaW1wbGljaXQgPSBudWxsO1xuXG4gICAgdGhpcy5fdmlld0NvbnRleHQuaXNGaXJzdExvYWQgPSBmYWxzZTtcbiAgICB0aGlzLl92aWV3Q29udGV4dC5jYW5Mb2FkTW9yZSA9IGZhbHNlO1xuICAgIHRoaXMuX3ZpZXdDb250ZXh0LmN1cnJlbnRQYWdlID0gbnVsbDtcbiAgICB0aGlzLl92aWV3Q29udGV4dC5pdGVtc1BlclBhZ2UgPSBudWxsO1xuICAgIHRoaXMuX3ZpZXdDb250ZXh0LnRvdGFsUGFnZXMgPSBudWxsO1xuXG4gICAgdGhpcy5fdmlld0NvbnRleHQuY3VycmVudFF1ZXJ5ID0gbnVsbDtcblxuICAgIHRoaXMuX2RhdGEkLm5leHQoW10pO1xuICB9XG59XG4iXX0=
|
|
@@ -103,10 +103,10 @@ export class QueryDirective {
|
|
|
103
103
|
this._viewContainerRef.createEmbeddedView(this._mainTemplateRef, this._viewContext);
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
107
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.
|
|
106
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: QueryDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
107
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.7", type: QueryDirective, isStandalone: true, selector: "[etQuery]", inputs: { query: ["etQuery", "query"], cache: ["etQueryCache", "cache"] }, ngImport: i0 }); }
|
|
108
108
|
}
|
|
109
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: QueryDirective, decorators: [{
|
|
110
110
|
type: Directive,
|
|
111
111
|
args: [{
|
|
112
112
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BehaviorSubject, combineLatest, map, of, shareReplay, switchMap, tap } from 'rxjs';
|
|
2
|
-
import {
|
|
2
|
+
import { filterSuccess } from '../query';
|
|
3
3
|
export class InfinityQuery {
|
|
4
4
|
get currentPage$() {
|
|
5
5
|
return this._currentPage$.asObservable();
|
|
@@ -39,15 +39,16 @@ export class InfinityQuery {
|
|
|
39
39
|
this._currentCalculatedPage$ = new BehaviorSubject(null);
|
|
40
40
|
this._totalPages$ = new BehaviorSubject(null);
|
|
41
41
|
this._itemsPerPage$ = new BehaviorSubject(this._config.limitParam?.value ?? 10);
|
|
42
|
+
// FIXME: This will go boom with polling
|
|
42
43
|
this._data$ = this._queries$.pipe(switchMap((queries) => {
|
|
43
44
|
if (!queries.length) {
|
|
44
45
|
return of([]);
|
|
45
46
|
}
|
|
46
|
-
return combineLatest(queries.map((query) => query.state$.pipe(map((state) => ({ state, query })))));
|
|
47
|
+
return combineLatest(queries.map((query) => query.state$.pipe(filterSuccess(), map((state) => ({ state, query })))));
|
|
47
48
|
}), tap((stateMaps) => {
|
|
48
49
|
const lastState = stateMaps[stateMaps.length - 1]?.state;
|
|
49
50
|
const lastQuery = stateMaps[stateMaps.length - 1]?.query;
|
|
50
|
-
if (!
|
|
51
|
+
if (!lastState || !lastQuery) {
|
|
51
52
|
return;
|
|
52
53
|
}
|
|
53
54
|
const totalPages = this._config.response.totalPagesExtractor?.({
|
|
@@ -64,20 +65,18 @@ export class InfinityQuery {
|
|
|
64
65
|
return null;
|
|
65
66
|
}
|
|
66
67
|
const fullData = stateMaps.reduce((acc, stateMap) => {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
acc.push(...data);
|
|
80
|
-
}
|
|
68
|
+
const valExtractFn = this._config?.response?.valueExtractor;
|
|
69
|
+
let data = valExtractFn
|
|
70
|
+
? valExtractFn?.(stateMap.state.response)
|
|
71
|
+
: stateMap.state.response;
|
|
72
|
+
if (this._config.response.reverse) {
|
|
73
|
+
data = [...data].reverse();
|
|
74
|
+
}
|
|
75
|
+
if (this._config.response.appendItemsTo === 'start') {
|
|
76
|
+
acc.unshift(...data);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
acc.push(...data);
|
|
81
80
|
}
|
|
82
81
|
return acc;
|
|
83
82
|
},
|
|
@@ -170,4 +169,4 @@ export class InfinityQuery {
|
|
|
170
169
|
}
|
|
171
170
|
}
|
|
172
171
|
}
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdHktcXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvaW5maW5pdGUtcXVlcnkvaW5maW5pdHktcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBYyxhQUFhLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJL0MsTUFBTSxPQUFPLGFBQWE7SUFnRnhCLElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFJLHNCQUFzQjtRQUN4QixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxxQkFBcUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELFlBQ1UsT0FBaUYsRUFDakYsU0FBOEI7UUFEOUIsWUFBTyxHQUFQLE9BQU8sQ0FBMEU7UUFDakYsY0FBUyxHQUFULFNBQVMsQ0FBcUI7UUFuSHZCLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxFQUFFLENBQUMsQ0FBQztRQUM3QyxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFnQixJQUFJLENBQUMsQ0FBQztRQUN6RCw0QkFBdUIsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFDbkUsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFDeEQsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBUyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7UUFFbkYsV0FBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUMzQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNwQixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQixDQUFDO1lBRUQsT0FBTyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RyxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNoQixNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDekQsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO1lBRXpELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNsRCxPQUFPO1lBQ1QsQ0FBQztZQUVELE1BQU0sVUFBVSxHQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQzFDLFFBQVEsRUFBRSxTQUFTLENBQUMsUUFBeUI7Z0JBQzdDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDL0IsSUFBSSxFQUFFLFNBQVMsQ0FBQyxVQUFVO2FBQzNCLENBQUM7Z0JBQ0YsOERBQThEO2dCQUM3RCxTQUFTLENBQUMsUUFBZ0IsRUFBRSxVQUFVO2dCQUN2QyxJQUFJLENBQUM7WUFFUCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN0QixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFFRCxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUMvQixDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRTtnQkFDaEIsSUFBSSxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDeEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxDQUFDO29CQUM1RCxJQUFJLElBQUksR0FBRyxZQUFZO3dCQUNyQixDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUF5QixDQUFDO3dCQUMxRCxDQUFDLENBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUE2QixDQUFDO29CQUVsRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUNsQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBc0IsQ0FBQztvQkFDakQsQ0FBQztvQkFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsS0FBSyxPQUFPLEVBQUUsQ0FBQzt3QkFDcEQsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO29CQUN2QixDQUFDO3lCQUFNLENBQUM7d0JBQ04sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO29CQUNwQixDQUFDO2dCQUNILENBQUM7Z0JBQ0QsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDO1lBQ0QsOERBQThEO1lBQzlELEVBQTZCLENBQzlCLENBQUM7WUFFRixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsRUFDRixXQUFXLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUMvQyxDQUFDO1FBRWUsZ0JBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDaEQsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsRUFDckQsV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FDL0MsQ0FBQztJQTZDQyxDQUFDO0lBRUosUUFBUTtRQUNOLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sY0FBYyxHQUNsQixJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQztZQUN6QyxJQUFJLEVBQUUsT0FBTztZQUNiLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDaEMsQ0FBQyxJQUFJLE9BQU8sQ0FBQztRQUVoQixJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDakUsT0FBTyxDQUFDLEtBQUssQ0FDWCx3SEFBd0gsQ0FDekgsQ0FBQztZQUNGLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRTdELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQVcsQ0FBQztRQUV6RSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDakMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDcEYsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXRELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELEtBQUssQ0FDSCxTQUdDO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFFekQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFeEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxZQUFZLENBQUMsTUFBZ0YsRUFBRSxJQUFZO1FBQ2pILE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFbEYsTUFBTSxRQUFRLEdBQUc7WUFDZixDQUFDLGlCQUFpQixDQUFDLEVBQUU7Z0JBQ25CLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksTUFBTSxDQUFDLEVBQUUsSUFBSTthQUN6QztTQUNGLENBQUM7UUFFRixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRXBGLE1BQU0sU0FBUyxHQUFHO1lBQ2hCLENBQUMsa0JBQWtCLENBQUMsRUFBRTtnQkFDcEIsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLEtBQUssSUFBSSxFQUFFO2FBQ3RFO1NBQ0YsQ0FBQztRQUVGLE1BQU0sYUFBYSxHQUFHLE1BQU0sRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDO1FBRWhELE1BQU0sVUFBVSxHQUNkLGlCQUFpQixLQUFLLGtCQUFrQjtZQUN0QyxDQUFDLENBQUM7Z0JBQ0UsR0FBRyxhQUFhO2dCQUNoQixDQUFDLGlCQUFpQixDQUFDLEVBQUU7b0JBQ25CLEdBQUcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ25ELEdBQUcsUUFBUSxDQUFDLGtCQUFrQixDQUFDO29CQUMvQixHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDakM7YUFDRjtZQUNILENBQUMsQ0FBQztnQkFDRSxHQUFHLGFBQWE7Z0JBQ2hCLENBQUMsaUJBQWlCLENBQUMsRUFBRTtvQkFDbkIsR0FBRyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDbkQsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUM7aUJBQy9CO2dCQUNELENBQUMsa0JBQWtCLENBQUMsRUFBRTtvQkFDcEIsR0FBRyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDcEQsR0FBRyxTQUFTLENBQUMsa0JBQWtCLENBQUM7aUJBQ2pDO2FBQ0YsQ0FBQztRQUVSLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxRQUFnRDtRQUM1RSxNQUFNLEdBQUcsR0FBRyxRQUFRLElBQUksT0FBTyxDQUFDO1FBRWhDLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFDWixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxZQUFZLENBQUM7WUFDdEIsS0FBSyxPQUFPO2dCQUNWLE9BQU8sYUFBYSxDQUFDO1lBQ3ZCLEtBQUssTUFBTTtnQkFDVCxPQUFPLE1BQU0sQ0FBQztZQUNoQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxTQUFTLENBQUM7WUFDbkIsS0FBSyxVQUFVO2dCQUNiLE9BQU8sV0FBVyxDQUFDO1lBQ3JCO2dCQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDekQsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgbWFwLCBvZiwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBpc1F1ZXJ5U3RhdGVTdWNjZXNzIH0gZnJvbSAnLi4vcXVlcnknO1xuaW1wb3J0IHsgQW55UXVlcnlDcmVhdG9yLCBDb25zdHJ1Y3RRdWVyeSwgUXVlcnlBcmdzT2YsIFF1ZXJ5RGF0YU9mIH0gZnJvbSAnLi4vcXVlcnktY3JlYXRvcic7XG5pbXBvcnQgeyBJbmZpbml0eVF1ZXJ5Q29uZmlnLCBJbmZpbml0eVF1ZXJ5UGFyYW1Mb2NhdGlvbiB9IGZyb20gJy4vaW5maW5pdHktcXVlcnkudHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgSW5maW5pdHlRdWVyeTxcbiAgUXVlcnlDcmVhdG9yIGV4dGVuZHMgQW55UXVlcnlDcmVhdG9yLFxuICBRdWVyeSBleHRlbmRzIENvbnN0cnVjdFF1ZXJ5PFF1ZXJ5Q3JlYXRvcj4sXG4gIEFyZ3MgZXh0ZW5kcyBRdWVyeUFyZ3NPZjxRdWVyeUNyZWF0b3I+LFxuICBRdWVyeVJlc3BvbnNlIGV4dGVuZHMgUXVlcnlEYXRhT2Y8UXVlcnlDcmVhdG9yPixcbiAgSW5maW5pdHlSZXNwb25zZSBleHRlbmRzIHVua25vd25bXSxcbj4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9xdWVyaWVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UXVlcnlbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50UGFnZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlciB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50Q2FsY3VsYXRlZFBhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdG90YWxQYWdlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlciB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pdGVtc1BlclBhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KHRoaXMuX2NvbmZpZy5saW1pdFBhcmFtPy52YWx1ZSA/PyAxMCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGF0YSQgPSB0aGlzLl9xdWVyaWVzJC5waXBlKFxuICAgIHN3aXRjaE1hcCgocXVlcmllcykgPT4ge1xuICAgICAgaWYgKCFxdWVyaWVzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tYmluZUxhdGVzdChxdWVyaWVzLm1hcCgocXVlcnkpID0+IHF1ZXJ5LnN0YXRlJC5waXBlKG1hcCgoc3RhdGUpID0+ICh7IHN0YXRlLCBxdWVyeSB9KSkpKSk7XG4gICAgfSksXG4gICAgdGFwKChzdGF0ZU1hcHMpID0+IHtcbiAgICAgIGNvbnN0IGxhc3RTdGF0ZSA9IHN0YXRlTWFwc1tzdGF0ZU1hcHMubGVuZ3RoIC0gMV0/LnN0YXRlO1xuICAgICAgY29uc3QgbGFzdFF1ZXJ5ID0gc3RhdGVNYXBzW3N0YXRlTWFwcy5sZW5ndGggLSAxXT8ucXVlcnk7XG5cbiAgICAgIGlmICghaXNRdWVyeVN0YXRlU3VjY2VzcyhsYXN0U3RhdGUpIHx8ICFsYXN0UXVlcnkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0b3RhbFBhZ2VzID1cbiAgICAgICAgdGhpcy5fY29uZmlnLnJlc3BvbnNlLnRvdGFsUGFnZXNFeHRyYWN0b3I/Lih7XG4gICAgICAgICAgcmVzcG9uc2U6IGxhc3RTdGF0ZS5yZXNwb25zZSBhcyBRdWVyeVJlc3BvbnNlLFxuICAgICAgICAgIGl0ZW1zUGVyUGFnZTogdGhpcy5pdGVtc1BlclBhZ2UsXG4gICAgICAgICAgYXJnczogbGFzdFF1ZXJ5Ll9hcmd1bWVudHMsXG4gICAgICAgIH0pID8/XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIChsYXN0U3RhdGUucmVzcG9uc2UgYXMgYW55KT8udG90YWxQYWdlcyA/P1xuICAgICAgICBudWxsO1xuXG4gICAgICB0aGlzLl90b3RhbFBhZ2VzJC5uZXh0KHRvdGFsUGFnZXMpO1xuICAgIH0pLFxuICAgIG1hcCgoc3RhdGVNYXBzKSA9PiB7XG4gICAgICBpZiAoIXN0YXRlTWFwcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZ1bGxEYXRhID0gc3RhdGVNYXBzLnJlZHVjZShcbiAgICAgICAgKGFjYywgc3RhdGVNYXApID0+IHtcbiAgICAgICAgICBpZiAoaXNRdWVyeVN0YXRlU3VjY2VzcyhzdGF0ZU1hcC5zdGF0ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbEV4dHJhY3RGbiA9IHRoaXMuX2NvbmZpZz8ucmVzcG9uc2U/LnZhbHVlRXh0cmFjdG9yO1xuICAgICAgICAgICAgbGV0IGRhdGEgPSB2YWxFeHRyYWN0Rm5cbiAgICAgICAgICAgICAgPyB2YWxFeHRyYWN0Rm4/LihzdGF0ZU1hcC5zdGF0ZS5yZXNwb25zZSBhcyBRdWVyeVJlc3BvbnNlKVxuICAgICAgICAgICAgICA6IChzdGF0ZU1hcC5zdGF0ZS5yZXNwb25zZSBhcyBJbmZpbml0eVJlc3BvbnNlKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy5yZXNwb25zZS5yZXZlcnNlKSB7XG4gICAgICAgICAgICAgIGRhdGEgPSBbLi4uZGF0YV0ucmV2ZXJzZSgpIGFzIEluZmluaXR5UmVzcG9uc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9jb25maWcucmVzcG9uc2UuYXBwZW5kSXRlbXNUbyA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgICAgICBhY2MudW5zaGlmdCguLi5kYXRhKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGFjYy5wdXNoKC4uLmRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICBbXSBhcyBhbnkgYXMgSW5maW5pdHlSZXNwb25zZSxcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBmdWxsRGF0YTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pLFxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xhc3RRdWVyeSQgPSB0aGlzLl9xdWVyaWVzJC5waXBlKFxuICAgIG1hcCgocXVlcmllcykgPT4gcXVlcmllc1txdWVyaWVzLmxlbmd0aCAtIDFdID8/IG51bGwpLFxuICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICk7XG5cbiAgZ2V0IGN1cnJlbnRQYWdlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFBhZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRQYWdlKCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50UGFnZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50Q2FsY3VsYXRlZFBhZ2UkKCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50Q2FsY3VsYXRlZFBhZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRDYWxjdWxhdGVkUGFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudENhbGN1bGF0ZWRQYWdlJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0IHRvdGFsUGFnZXMkKCkge1xuICAgIHJldHVybiB0aGlzLl90b3RhbFBhZ2VzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCB0b3RhbFBhZ2VzKCkge1xuICAgIHJldHVybiB0aGlzLl90b3RhbFBhZ2VzJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0IGl0ZW1zUGVyUGFnZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zUGVyUGFnZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgaXRlbXNQZXJQYWdlKCkge1xuICAgIHJldHVybiB0aGlzLl9pdGVtc1BlclBhZ2UkLmdldFZhbHVlKCk7XG4gIH1cblxuICBnZXQgZGF0YSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEkO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRRdWVyeSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xhc3RRdWVyeSQ7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9jb25maWc6IEluZmluaXR5UXVlcnlDb25maWc8UXVlcnlDcmVhdG9yLCBBcmdzLCBRdWVyeVJlc3BvbnNlLCBJbmZpbml0eVJlc3BvbnNlPixcbiAgICBwcml2YXRlIF9kZXN0cm95JDogT2JzZXJ2YWJsZTxib29sZWFuPixcbiAgKSB7fVxuXG4gIG5leHRQYWdlKCkge1xuICAgIGNvbnN0IG5ld1BhZ2UgPSAodGhpcy5fY3VycmVudFBhZ2UkLnZhbHVlID8/IDApICsgMTtcbiAgICBjb25zdCBjYWxjdWxhdGVkUGFnZSA9XG4gICAgICB0aGlzLl9jb25maWc/LnBhZ2VQYXJhbT8udmFsdWVDYWxjdWxhdG9yPy4oe1xuICAgICAgICBwYWdlOiBuZXdQYWdlLFxuICAgICAgICB0b3RhbFBhZ2VzOiB0aGlzLnRvdGFsUGFnZXMsXG4gICAgICAgIGl0ZW1zUGVyUGFnZTogdGhpcy5pdGVtc1BlclBhZ2UsXG4gICAgICB9KSA/PyBuZXdQYWdlO1xuXG4gICAgaWYgKHRoaXMudG90YWxQYWdlcyAhPT0gbnVsbCAmJiBjYWxjdWxhdGVkUGFnZSA+IHRoaXMudG90YWxQYWdlcykge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgJ0Nhbm5vdCBsb2FkIG1vcmUgcGFnZXMsIGFscmVhZHkgYXQgdGhlIGVuZC4gTWFrZSBzdXJlIHRvIG5vdCByZW5kZXIgdGhlIGluZmluaXR5IHF1ZXJ5IHRyaWdnZXIgdXNpbmcgKm5nSWYgY2FuTG9hZE1vcmUnLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhcmdzID0gdGhpcy5fcHJlcGFyZUFyZ3ModGhpcy5fY29uZmlnLCBjYWxjdWxhdGVkUGFnZSk7XG5cbiAgICBjb25zdCBxdWVyeSA9IHRoaXMuX2NvbmZpZy5xdWVyeUNyZWF0b3IucHJlcGFyZShhcmdzKS5leGVjdXRlKCkgYXMgUXVlcnk7XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLnBvbGxpbmdJbnRlcnZhbCkge1xuICAgICAgcXVlcnkucG9sbCh7IGludGVydmFsOiB0aGlzLl9jb25maWcucG9sbGluZ0ludGVydmFsLCB0YWtlVW50aWw6IHRoaXMuX2Rlc3Ryb3kkIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX3F1ZXJpZXMkLm5leHQoWy4uLnRoaXMuX3F1ZXJpZXMkLnZhbHVlLCBxdWVyeV0pO1xuXG4gICAgdGhpcy5fY3VycmVudFBhZ2UkLm5leHQobmV3UGFnZSk7XG4gICAgdGhpcy5fY3VycmVudENhbGN1bGF0ZWRQYWdlJC5uZXh0KGNhbGN1bGF0ZWRQYWdlKTtcbiAgfVxuXG4gIHJlc2V0KFxuICAgIG5ld0NvbmZpZz86IE9taXQ8XG4gICAgICBJbmZpbml0eVF1ZXJ5Q29uZmlnPFF1ZXJ5Q3JlYXRvciwgQXJncywgUXVlcnlSZXNwb25zZSwgSW5maW5pdHlSZXNwb25zZT4sXG4gICAgICAncXVlcnlDcmVhdG9yJyB8ICdyZXNwb25zZSdcbiAgICA+LFxuICApIHtcbiAgICB0aGlzLl9jb25maWcgPSB7IC4uLnRoaXMuX2NvbmZpZywgLi4uKG5ld0NvbmZpZyA/PyB7fSkgfTtcblxuICAgIHRoaXMuX2N1cnJlbnRQYWdlJC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2N1cnJlbnRDYWxjdWxhdGVkUGFnZSQubmV4dChudWxsKTtcbiAgICB0aGlzLl90b3RhbFBhZ2VzJC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2l0ZW1zUGVyUGFnZSQubmV4dCh0aGlzLl9jb25maWcubGltaXRQYXJhbT8udmFsdWUgPz8gMTApO1xuICAgIHRoaXMuX3F1ZXJpZXMkLm5leHQoW10pO1xuXG4gICAgdGhpcy5uZXh0UGFnZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJlcGFyZUFyZ3MoY29uZmlnOiBJbmZpbml0eVF1ZXJ5Q29uZmlnPFF1ZXJ5Q3JlYXRvciwgQXJncywgUXVlcnlSZXNwb25zZSwgSW5maW5pdHlSZXNwb25zZT4sIHBhZ2U6IG51bWJlcikge1xuICAgIGNvbnN0IHBhZ2VQYXJhbUxvY2F0aW9uID0gdGhpcy5fZ2V0UGFnZVBhcmFtTG9jYXRpb24oY29uZmlnPy5wYWdlUGFyYW0/LmxvY2F0aW9uKTtcblxuICAgIGNvbnN0IHBhZ2VBcmdzID0ge1xuICAgICAgW3BhZ2VQYXJhbUxvY2F0aW9uXToge1xuICAgICAgICBbY29uZmlnPy5wYWdlUGFyYW0/LmtleSA/PyAncGFnZSddOiBwYWdlLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgbGltaXRQYXJhbUxvY2F0aW9uID0gdGhpcy5fZ2V0UGFnZVBhcmFtTG9jYXRpb24oY29uZmlnPy5saW1pdFBhcmFtPy5sb2NhdGlvbik7XG5cbiAgICBjb25zdCBsaW1pdEFyZ3MgPSB7XG4gICAgICBbbGltaXRQYXJhbUxvY2F0aW9uXToge1xuICAgICAgICBbY29uZmlnPy5saW1pdFBhcmFtPy5rZXkgPz8gJ2xpbWl0J106IGNvbmZpZz8ubGltaXRQYXJhbT8udmFsdWUgPz8gMTAsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBkZWZhdWx0Q29uZmlnID0gY29uZmlnPy5kZWZhdWx0QXJncyA/PyB7fTtcblxuICAgIGNvbnN0IG1lcmdlZEFyZ3MgPVxuICAgICAgcGFnZVBhcmFtTG9jYXRpb24gPT09IGxpbWl0UGFyYW1Mb2NhdGlvblxuICAgICAgICA/IHtcbiAgICAgICAgICAgIC4uLmRlZmF1bHRDb25maWcsXG4gICAgICAgICAgICBbcGFnZVBhcmFtTG9jYXRpb25dOiB7XG4gICAgICAgICAgICAgIC4uLihjb25maWc/LmRlZmF1bHRBcmdzPy5bcGFnZVBhcmFtTG9jYXRpb25dID8/IHt9KSxcbiAgICAgICAgICAgICAgLi4ucGFnZUFyZ3NbbGltaXRQYXJhbUxvY2F0aW9uXSxcbiAgICAgICAgICAgICAgLi4ubGltaXRBcmdzW2xpbWl0UGFyYW1Mb2NhdGlvbl0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgICAuLi5kZWZhdWx0Q29uZmlnLFxuICAgICAgICAgICAgW3BhZ2VQYXJhbUxvY2F0aW9uXToge1xuICAgICAgICAgICAgICAuLi4oY29uZmlnPy5kZWZhdWx0QXJncz8uW3BhZ2VQYXJhbUxvY2F0aW9uXSA/PyB7fSksXG4gICAgICAgICAgICAgIC4uLnBhZ2VBcmdzW3BhZ2VQYXJhbUxvY2F0aW9uXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbbGltaXRQYXJhbUxvY2F0aW9uXToge1xuICAgICAgICAgICAgICAuLi4oY29uZmlnPy5kZWZhdWx0QXJncz8uW2xpbWl0UGFyYW1Mb2NhdGlvbl0gPz8ge30pLFxuICAgICAgICAgICAgICAuLi5saW1pdEFyZ3NbbGltaXRQYXJhbUxvY2F0aW9uXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBtZXJnZWRBcmdzO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UGFnZVBhcmFtTG9jYXRpb24obG9jYXRpb246IEluZmluaXR5UXVlcnlQYXJhbUxvY2F0aW9uIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbG9jID0gbG9jYXRpb24gPz8gJ3F1ZXJ5JztcblxuICAgIHN3aXRjaCAobG9jKSB7XG4gICAgICBjYXNlICdwYXRoJzpcbiAgICAgICAgcmV0dXJuICdwYXRoUGFyYW1zJztcbiAgICAgIGNhc2UgJ3F1ZXJ5JzpcbiAgICAgICAgcmV0dXJuICdxdWVyeVBhcmFtcyc7XG4gICAgICBjYXNlICdib2R5JzpcbiAgICAgICAgcmV0dXJuICdib2R5JztcbiAgICAgIGNhc2UgJ2hlYWRlcic6XG4gICAgICAgIHJldHVybiAnaGVhZGVycyc7XG4gICAgICBjYXNlICd2YXJpYWJsZSc6XG4gICAgICAgIHJldHVybiAndmFyaWFibGVzJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwYWdlUGFyYW1Mb2NhdGlvbjogJHtsb2N9YCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdHktcXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvaW5maW5pdGUtcXVlcnkvaW5maW5pdHktcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBYyxhQUFhLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBSXpDLE1BQU0sT0FBTyxhQUFhO0lBc0Z4QixJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxzQkFBc0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVELElBQUkscUJBQXFCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDeEMs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UUFDekQsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgbWFwLCBvZiwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXJTdWNjZXNzIH0gZnJvbSAnLi4vcXVlcnknO1xuaW1wb3J0IHsgQW55UXVlcnlDcmVhdG9yLCBDb25zdHJ1Y3RRdWVyeSwgUXVlcnlBcmdzT2YsIFF1ZXJ5RGF0YU9mIH0gZnJvbSAnLi4vcXVlcnktY3JlYXRvcic7XG5pbXBvcnQgeyBJbmZpbml0eVF1ZXJ5Q29uZmlnLCBJbmZpbml0eVF1ZXJ5UGFyYW1Mb2NhdGlvbiB9IGZyb20gJy4vaW5maW5pdHktcXVlcnkudHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgSW5maW5pdHlRdWVyeTxcbiAgUXVlcnlDcmVhdG9yIGV4dGVuZHMgQW55UXVlcnlDcmVhdG9yLFxuICBRdWVyeSBleHRlbmRzIENvbnN0cnVjdFF1ZXJ5PFF1ZXJ5Q3JlYXRvcj4sXG4gIEFyZ3MgZXh0ZW5kcyBRdWVyeUFyZ3NPZjxRdWVyeUNyZWF0b3I+LFxuICBRdWVyeVJlc3BvbnNlIGV4dGVuZHMgUXVlcnlEYXRhT2Y8UXVlcnlDcmVhdG9yPixcbiAgSW5maW5pdHlSZXNwb25zZSBleHRlbmRzIHVua25vd25bXSxcbj4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9xdWVyaWVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UXVlcnlbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50UGFnZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlciB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50Q2FsY3VsYXRlZFBhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdG90YWxQYWdlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlciB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pdGVtc1BlclBhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KHRoaXMuX2NvbmZpZy5saW1pdFBhcmFtPy52YWx1ZSA/PyAxMCk7XG5cbiAgLy8gRklYTUU6IFRoaXMgd2lsbCBnbyBib29tIHdpdGggcG9sbGluZ1xuICBwcml2YXRlIHJlYWRvbmx5IF9kYXRhJCA9IHRoaXMuX3F1ZXJpZXMkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChxdWVyaWVzKSA9PiB7XG4gICAgICBpZiAoIXF1ZXJpZXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFxuICAgICAgICBxdWVyaWVzLm1hcCgocXVlcnkpID0+XG4gICAgICAgICAgcXVlcnkuc3RhdGUkLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXJTdWNjZXNzKCksXG4gICAgICAgICAgICBtYXAoKHN0YXRlKSA9PiAoeyBzdGF0ZSwgcXVlcnkgfSkpLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH0pLFxuICAgIHRhcCgoc3RhdGVNYXBzKSA9PiB7XG4gICAgICBjb25zdCBsYXN0U3RhdGUgPSBzdGF0ZU1hcHNbc3RhdGVNYXBzLmxlbmd0aCAtIDFdPy5zdGF0ZTtcbiAgICAgIGNvbnN0IGxhc3RRdWVyeSA9IHN0YXRlTWFwc1tzdGF0ZU1hcHMubGVuZ3RoIC0gMV0/LnF1ZXJ5O1xuXG4gICAgICBpZiAoIWxhc3RTdGF0ZSB8fCAhbGFzdFF1ZXJ5KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdG90YWxQYWdlcyA9XG4gICAgICAgIHRoaXMuX2NvbmZpZy5yZXNwb25zZS50b3RhbFBhZ2VzRXh0cmFjdG9yPy4oe1xuICAgICAgICAgIHJlc3BvbnNlOiBsYXN0U3RhdGUucmVzcG9uc2UgYXMgUXVlcnlSZXNwb25zZSxcbiAgICAgICAgICBpdGVtc1BlclBhZ2U6IHRoaXMuaXRlbXNQZXJQYWdlLFxuICAgICAgICAgIGFyZ3M6IGxhc3RRdWVyeS5fYXJndW1lbnRzLFxuICAgICAgICB9KSA/P1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAobGFzdFN0YXRlLnJlc3BvbnNlIGFzIGFueSk/LnRvdGFsUGFnZXMgPz9cbiAgICAgICAgbnVsbDtcblxuICAgICAgdGhpcy5fdG90YWxQYWdlcyQubmV4dCh0b3RhbFBhZ2VzKTtcbiAgICB9KSxcbiAgICBtYXAoKHN0YXRlTWFwcykgPT4ge1xuICAgICAgaWYgKCFzdGF0ZU1hcHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmdWxsRGF0YSA9IHN0YXRlTWFwcy5yZWR1Y2UoXG4gICAgICAgIChhY2MsIHN0YXRlTWFwKSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsRXh0cmFjdEZuID0gdGhpcy5fY29uZmlnPy5yZXNwb25zZT8udmFsdWVFeHRyYWN0b3I7XG4gICAgICAgICAgbGV0IGRhdGEgPSB2YWxFeHRyYWN0Rm5cbiAgICAgICAgICAgID8gdmFsRXh0cmFjdEZuPy4oc3RhdGVNYXAuc3RhdGUucmVzcG9uc2UgYXMgUXVlcnlSZXNwb25zZSlcbiAgICAgICAgICAgIDogKHN0YXRlTWFwLnN0YXRlLnJlc3BvbnNlIGFzIEluZmluaXR5UmVzcG9uc2UpO1xuXG4gICAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy5yZXNwb25zZS5yZXZlcnNlKSB7XG4gICAgICAgICAgICBkYXRhID0gWy4uLmRhdGFdLnJldmVyc2UoKSBhcyBJbmZpbml0eVJlc3BvbnNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLl9jb25maWcucmVzcG9uc2UuYXBwZW5kSXRlbXNUbyA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgICAgYWNjLnVuc2hpZnQoLi4uZGF0YSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFjYy5wdXNoKC4uLmRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICBbXSBhcyBhbnkgYXMgSW5maW5pdHlSZXNwb25zZSxcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBmdWxsRGF0YTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pLFxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xhc3RRdWVyeSQgPSB0aGlzLl9xdWVyaWVzJC5waXBlKFxuICAgIG1hcCgocXVlcmllcykgPT4gcXVlcmllc1txdWVyaWVzLmxlbmd0aCAtIDFdID8/IG51bGwpLFxuICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICk7XG5cbiAgZ2V0IGN1cnJlbnRQYWdlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFBhZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRQYWdlKCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50UGFnZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50Q2FsY3VsYXRlZFBhZ2UkKCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50Q2FsY3VsYXRlZFBhZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRDYWxjdWxhdGVkUGFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudENhbGN1bGF0ZWRQYWdlJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0IHRvdGFsUGFnZXMkKCkge1xuICAgIHJldHVybiB0aGlzLl90b3RhbFBhZ2VzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCB0b3RhbFBhZ2VzKCkge1xuICAgIHJldHVybiB0aGlzLl90b3RhbFBhZ2VzJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0IGl0ZW1zUGVyUGFnZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zUGVyUGFnZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgaXRlbXNQZXJQYWdlKCkge1xuICAgIHJldHVybiB0aGlzLl9pdGVtc1BlclBhZ2UkLmdldFZhbHVlKCk7XG4gIH1cblxuICBnZXQgZGF0YSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEkO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRRdWVyeSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xhc3RRdWVyeSQ7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9jb25maWc6IEluZmluaXR5UXVlcnlDb25maWc8UXVlcnlDcmVhdG9yLCBBcmdzLCBRdWVyeVJlc3BvbnNlLCBJbmZpbml0eVJlc3BvbnNlPixcbiAgICBwcml2YXRlIF9kZXN0cm95JDogT2JzZXJ2YWJsZTxib29sZWFuPixcbiAgKSB7fVxuXG4gIG5leHRQYWdlKCkge1xuICAgIGNvbnN0IG5ld1BhZ2UgPSAodGhpcy5fY3VycmVudFBhZ2UkLnZhbHVlID8/IDApICsgMTtcbiAgICBjb25zdCBjYWxjdWxhdGVkUGFnZSA9XG4gICAgICB0aGlzLl9jb25maWc/LnBhZ2VQYXJhbT8udmFsdWVDYWxjdWxhdG9yPy4oe1xuICAgICAgICBwYWdlOiBuZXdQYWdlLFxuICAgICAgICB0b3RhbFBhZ2VzOiB0aGlzLnRvdGFsUGFnZXMsXG4gICAgICAgIGl0ZW1zUGVyUGFnZTogdGhpcy5pdGVtc1BlclBhZ2UsXG4gICAgICB9KSA/PyBuZXdQYWdlO1xuXG4gICAgaWYgKHRoaXMudG90YWxQYWdlcyAhPT0gbnVsbCAmJiBjYWxjdWxhdGVkUGFnZSA+IHRoaXMudG90YWxQYWdlcykge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgJ0Nhbm5vdCBsb2FkIG1vcmUgcGFnZXMsIGFscmVhZHkgYXQgdGhlIGVuZC4gTWFrZSBzdXJlIHRvIG5vdCByZW5kZXIgdGhlIGluZmluaXR5IHF1ZXJ5IHRyaWdnZXIgdXNpbmcgKm5nSWYgY2FuTG9hZE1vcmUnLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhcmdzID0gdGhpcy5fcHJlcGFyZUFyZ3ModGhpcy5fY29uZmlnLCBjYWxjdWxhdGVkUGFnZSk7XG5cbiAgICBjb25zdCBxdWVyeSA9IHRoaXMuX2NvbmZpZy5xdWVyeUNyZWF0b3IucHJlcGFyZShhcmdzKS5leGVjdXRlKCkgYXMgUXVlcnk7XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLnBvbGxpbmdJbnRlcnZhbCkge1xuICAgICAgcXVlcnkucG9sbCh7IGludGVydmFsOiB0aGlzLl9jb25maWcucG9sbGluZ0ludGVydmFsLCB0YWtlVW50aWw6IHRoaXMuX2Rlc3Ryb3kkIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX3F1ZXJpZXMkLm5leHQoWy4uLnRoaXMuX3F1ZXJpZXMkLnZhbHVlLCBxdWVyeV0pO1xuXG4gICAgdGhpcy5fY3VycmVudFBhZ2UkLm5leHQobmV3UGFnZSk7XG4gICAgdGhpcy5fY3VycmVudENhbGN1bGF0ZWRQYWdlJC5uZXh0KGNhbGN1bGF0ZWRQYWdlKTtcbiAgfVxuXG4gIHJlc2V0KFxuICAgIG5ld0NvbmZpZz86IE9taXQ8XG4gICAgICBJbmZpbml0eVF1ZXJ5Q29uZmlnPFF1ZXJ5Q3JlYXRvciwgQXJncywgUXVlcnlSZXNwb25zZSwgSW5maW5pdHlSZXNwb25zZT4sXG4gICAgICAncXVlcnlDcmVhdG9yJyB8ICdyZXNwb25zZSdcbiAgICA+LFxuICApIHtcbiAgICB0aGlzLl9jb25maWcgPSB7IC4uLnRoaXMuX2NvbmZpZywgLi4uKG5ld0NvbmZpZyA/PyB7fSkgfTtcblxuICAgIHRoaXMuX2N1cnJlbnRQYWdlJC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2N1cnJlbnRDYWxjdWxhdGVkUGFnZSQubmV4dChudWxsKTtcbiAgICB0aGlzLl90b3RhbFBhZ2VzJC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2l0ZW1zUGVyUGFnZSQubmV4dCh0aGlzLl9jb25maWcubGltaXRQYXJhbT8udmFsdWUgPz8gMTApO1xuICAgIHRoaXMuX3F1ZXJpZXMkLm5leHQoW10pO1xuXG4gICAgdGhpcy5uZXh0UGFnZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJlcGFyZUFyZ3MoY29uZmlnOiBJbmZpbml0eVF1ZXJ5Q29uZmlnPFF1ZXJ5Q3JlYXRvciwgQXJncywgUXVlcnlSZXNwb25zZSwgSW5maW5pdHlSZXNwb25zZT4sIHBhZ2U6IG51bWJlcikge1xuICAgIGNvbnN0IHBhZ2VQYXJhbUxvY2F0aW9uID0gdGhpcy5fZ2V0UGFnZVBhcmFtTG9jYXRpb24oY29uZmlnPy5wYWdlUGFyYW0/LmxvY2F0aW9uKTtcblxuICAgIGNvbnN0IHBhZ2VBcmdzID0ge1xuICAgICAgW3BhZ2VQYXJhbUxvY2F0aW9uXToge1xuICAgICAgICBbY29uZmlnPy5wYWdlUGFyYW0/LmtleSA/PyAncGFnZSddOiBwYWdlLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgbGltaXRQYXJhbUxvY2F0aW9uID0gdGhpcy5fZ2V0UGFnZVBhcmFtTG9jYXRpb24oY29uZmlnPy5saW1pdFBhcmFtPy5sb2NhdGlvbik7XG5cbiAgICBjb25zdCBsaW1pdEFyZ3MgPSB7XG4gICAgICBbbGltaXRQYXJhbUxvY2F0aW9uXToge1xuICAgICAgICBbY29uZmlnPy5saW1pdFBhcmFtPy5rZXkgPz8gJ2xpbWl0J106IGNvbmZpZz8ubGltaXRQYXJhbT8udmFsdWUgPz8gMTAsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBkZWZhdWx0Q29uZmlnID0gY29uZmlnPy5kZWZhdWx0QXJncyA/PyB7fTtcblxuICAgIGNvbnN0IG1lcmdlZEFyZ3MgPVxuICAgICAgcGFnZVBhcmFtTG9jYXRpb24gPT09IGxpbWl0UGFyYW1Mb2NhdGlvblxuICAgICAgICA/IHtcbiAgICAgICAgICAgIC4uLmRlZmF1bHRDb25maWcsXG4gICAgICAgICAgICBbcGFnZVBhcmFtTG9jYXRpb25dOiB7XG4gICAgICAgICAgICAgIC4uLihjb25maWc/LmRlZmF1bHRBcmdzPy5bcGFnZVBhcmFtTG9jYXRpb25dID8/IHt9KSxcbiAgICAgICAgICAgICAgLi4ucGFnZUFyZ3NbbGltaXRQYXJhbUxvY2F0aW9uXSxcbiAgICAgICAgICAgICAgLi4ubGltaXRBcmdzW2xpbWl0UGFyYW1Mb2NhdGlvbl0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgICAuLi5kZWZhdWx0Q29uZmlnLFxuICAgICAgICAgICAgW3BhZ2VQYXJhbUxvY2F0aW9uXToge1xuICAgICAgICAgICAgICAuLi4oY29uZmlnPy5kZWZhdWx0QXJncz8uW3BhZ2VQYXJhbUxvY2F0aW9uXSA/PyB7fSksXG4gICAgICAgICAgICAgIC4uLnBhZ2VBcmdzW3BhZ2VQYXJhbUxvY2F0aW9uXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbbGltaXRQYXJhbUxvY2F0aW9uXToge1xuICAgICAgICAgICAgICAuLi4oY29uZmlnPy5kZWZhdWx0QXJncz8uW2xpbWl0UGFyYW1Mb2NhdGlvbl0gPz8ge30pLFxuICAgICAgICAgICAgICAuLi5saW1pdEFyZ3NbbGltaXRQYXJhbUxvY2F0aW9uXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBtZXJnZWRBcmdzO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UGFnZVBhcmFtTG9jYXRpb24obG9jYXRpb246IEluZmluaXR5UXVlcnlQYXJhbUxvY2F0aW9uIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbG9jID0gbG9jYXRpb24gPz8gJ3F1ZXJ5JztcblxuICAgIHN3aXRjaCAobG9jKSB7XG4gICAgICBjYXNlICdwYXRoJzpcbiAgICAgICAgcmV0dXJuICdwYXRoUGFyYW1zJztcbiAgICAgIGNhc2UgJ3F1ZXJ5JzpcbiAgICAgICAgcmV0dXJuICdxdWVyeVBhcmFtcyc7XG4gICAgICBjYXNlICdib2R5JzpcbiAgICAgICAgcmV0dXJuICdib2R5JztcbiAgICAgIGNhc2UgJ2hlYWRlcic6XG4gICAgICAgIHJldHVybiAnaGVhZGVycyc7XG4gICAgICBjYXNlICd2YXJpYWJsZSc6XG4gICAgICAgIHJldHVybiAndmFyaWFibGVzJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwYWdlUGFyYW1Mb2NhdGlvbjogJHtsb2N9YCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Injector, assertInInjectionContext, computed, inject } from '@angular/core';
|
|
2
2
|
import { toObservable, toSignal } from '@angular/core/rxjs-interop';
|
|
3
|
-
import { createDestroy } from '@ethlete/core';
|
|
3
|
+
import { computedTillTruthy, createDestroy } from '@ethlete/core';
|
|
4
4
|
import { of, pairwise, startWith, switchMap, takeUntil, tap } from 'rxjs';
|
|
5
5
|
import { extractQuery, filterQueryStates, isQuery, isQueryStateFailure, isQueryStateLoading, isQueryStateSuccess, } from '../query';
|
|
6
6
|
export const addQueryContainerHandling = (obs, valueFn, config) => {
|
|
@@ -82,6 +82,16 @@ export function queryComputed(computation, options) {
|
|
|
82
82
|
addQueryContainerHandling(obs, () => c(), options);
|
|
83
83
|
return c;
|
|
84
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Creates a signal that will only be reactive until the first query is created.
|
|
87
|
+
* All subsequent changes inside the computation will be ignored.
|
|
88
|
+
*/
|
|
89
|
+
export function queryComputedTillTruthy(computation, options) {
|
|
90
|
+
const c = computedTillTruthy(computed(computation, options));
|
|
91
|
+
const obs = toObservable(c, options);
|
|
92
|
+
addQueryContainerHandling(obs, () => c(), options);
|
|
93
|
+
return c;
|
|
94
|
+
}
|
|
85
95
|
export function queryArrayComputed(computation, options) {
|
|
86
96
|
const c = computed(computation, options);
|
|
87
97
|
const obs = toObservable(c, options);
|
|
@@ -125,4 +135,4 @@ export function queryStateLoadingSignal(source) {
|
|
|
125
135
|
return isQueryStateLoading(state) ? state : null;
|
|
126
136
|
});
|
|
127
137
|
}
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi91dGlscy9kYXRhLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBeUIsUUFBUSxFQUFVLHdCQUF3QixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUF3QyxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQTRCLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BHLE9BQU8sRUFNTCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLE9BQU8sRUFDUCxtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLG1CQUFtQixHQUNwQixNQUFNLFVBQVUsQ0FBQztBQStCbEIsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsQ0FDdkMsR0FBNkMsRUFDN0MsT0FBdUQsRUFDdkQsTUFBNkIsRUFDN0IsRUFBRTtJQUNGLHdCQUF3QixDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFFcEQsTUFBTSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO0lBRTVFLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxNQUFNLFFBQVEsR0FBRyxhQUFhLEVBQUUsQ0FBQztJQUVqQyw4REFBOEQ7SUFDOUQsTUFBTSxLQUFLLEdBQUksUUFBZ0IsQ0FBQyxNQUFNLENBQUM7SUFDdkMsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztJQUV2QyxHQUFHO1NBQ0EsSUFBSSxDQUNILFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFDbkIsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUNmLFFBQVEsRUFBRSxFQUNWLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUU7UUFDN0IsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUE4QixFQUFFLEVBQUU7WUFDcEQsSUFBSSxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUMsYUFBYSxLQUFLLFNBQVMsSUFBSSxDQUFDLEVBQUUsV0FBVyxDQUFDLElBQUksYUFBYSxDQUFDLEVBQUUsQ0FBQztnQkFDL0YsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ2IsQ0FBQztZQUVELElBQ0UsQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFFO2dCQUNwQixDQUFDLENBQUMsbUJBQW1CLEtBQUssU0FBUyxJQUFJLENBQUMsRUFBRSxXQUFXLENBQUMsSUFBSSxtQkFBbUIsQ0FBQztnQkFDOUUsQ0FBQyxFQUFFLFNBQVMsRUFDWixDQUFDO2dCQUNELENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUNuQixDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxTQUFTLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDN0YsU0FBUyxFQUFFLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3pDLFNBQVMsRUFBRSxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFdEMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7YUFBTSxJQUNMLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxTQUFTLEtBQUssSUFBSSxDQUFDO1lBQ2hELENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxTQUFTLEtBQUssSUFBSSxDQUFDLEVBQ2hELENBQUM7WUFDRCxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQzFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDOUMsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQzFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzNDLENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDZCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUMxQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQzthQUFNLElBQ0wsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNoRCxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQ2hELENBQUM7WUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHVFQUF1RSxDQUFDLENBQUM7UUFDM0YsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUNIO1NBQ0EsU0FBUyxFQUFFLENBQUM7SUFFZixRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUN0QixNQUFNLEtBQUssR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUV4QixNQUFNLFdBQVcsR0FBRyxDQUFDLENBQThCLEVBQUUsRUFBRTtZQUNyRCxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFakMsSUFBSSxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsSUFBSSxjQUFjLEtBQUssU0FBUyxDQUFDLElBQUksY0FBYyxDQUFDLEVBQUUsQ0FBQztnQkFDakcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ2IsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbkIsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUN0QixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQXNCRixNQUFNLFVBQVUsYUFBYSxDQUMzQixNQUF1QyxFQUN2QyxPQUF1RTtJQUV2RSw4REFBOEQ7SUFDOUQsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxPQUFjLENBQUMsQ0FBQztJQUUzQyx5QkFBeUIsQ0FBQyxNQUF1QixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRTVFLE9BQU8sQ0FBa0IsQ0FBQztBQUM1QixDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsV0FBb0IsRUFDcEIsT0FBK0U7SUFFL0UsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6QyxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXJDLHlCQUF5QixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVuRCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLFdBQW9CLEVBQ3BCLE9BQStFO0lBRS9FLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekMsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVyQyx5QkFBeUIsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFbkQsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsTUFBaUIsRUFDakIsT0FBb0Q7SUFFcEQsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUUxQyx5QkFBeUIsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFeEQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixNQUFTLEVBQ1QsT0FBMkI7SUFFM0IsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFFeEMsT0FBTyxRQUFRLENBQ2IsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FDdkIsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUNyRCxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNsQixJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDbkIsaUJBQWlCLENBQUMsNEhBQTBFLENBQUMsQ0FDOUYsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQixDQUFDLENBQUMsQ0FDSCxFQUNEO1FBQ0UsWUFBWSxFQUFFLElBQUk7S0FDbkIsQ0FDZ0UsQ0FBQztBQUN0RSxDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxNQUFTLEVBQ1QsT0FBMkI7SUFFM0IsTUFBTSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRTVDLE9BQU8sUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUNuQixNQUFNLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUVsQixPQUFPLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDNUQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUF5RCxNQUFTO0lBQ3JHLE1BQU0sQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRW5DLE9BQU8sUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUNuQixNQUFNLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUVsQixPQUFPLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDekQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUF5RCxNQUFTO0lBQ3ZHLE1BQU0sQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRW5DLE9BQU8sUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUNuQixNQUFNLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUVsQixPQUFPLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNuRCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDcmVhdGVDb21wdXRlZE9wdGlvbnMsIEluamVjdG9yLCBTaWduYWwsIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dCwgY29tcHV0ZWQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVG9PYnNlcnZhYmxlT3B0aW9ucywgVG9TaWduYWxPcHRpb25zLCB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgY3JlYXRlRGVzdHJveSB9IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaWJhYmxlLCBvZiwgcGFpcndpc2UsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQW55UXVlcnksXG4gIEFueVF1ZXJ5Q29sbGVjdGlvbixcbiAgUXVlcnlPZixcbiAgUXVlcnlTdGF0ZSxcbiAgUXVlcnlTdGF0ZVR5cGUsXG4gIGV4dHJhY3RRdWVyeSxcbiAgZmlsdGVyUXVlcnlTdGF0ZXMsXG4gIGlzUXVlcnksXG4gIGlzUXVlcnlTdGF0ZUZhaWx1cmUsXG4gIGlzUXVlcnlTdGF0ZUxvYWRpbmcsXG4gIGlzUXVlcnlTdGF0ZVN1Y2Nlc3MsXG59IGZyb20gJy4uL3F1ZXJ5JztcbmltcG9ydCB7IFF1ZXJ5RGF0YU9mIH0gZnJvbSAnLi4vcXVlcnktY3JlYXRvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlDb250YWluZXJDb25maWcge1xuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgcHJldmlvdXMgcXVlcnkgd2lsbCBiZSBhYm9ydGVkIHdoZW4gYSBuZXcgcXVlcnkgaXMgcHVzaGVkIGludG8gdGhlIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgdHJ1ZSAvLyBPbmx5IGlmIHRoZSByZXF1ZXN0IGNhbiBiZSBjYWNoZWQgKEdFVCwgT1BUSU9OUywgSEVBRCBhbmQgR1FMX1FVRVJZKS4gT3RoZXJ3aXNlIGZhbHNlLlxuICAgKi9cbiAgYWJvcnRQcmV2aW91cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHF1ZXJ5IHdpbGwgYmUgYWJvcnRlZCB3aGVuIHRoZSBjb250YWluZXIgaXMgZGVzdHJveWVkLlxuICAgKiBAZGVmYXVsdCB0cnVlIC8vIE9ubHkgaWYgdGhlIHJlcXVlc3QgY2FuIGJlIGNhY2hlZCAoR0VULCBPUFRJT05TLCBIRUFEIGFuZCBHUUxfUVVFUlkpLiBPdGhlcndpc2UgZmFsc2UuXG4gICAqL1xuICBhYm9ydE9uRGVzdHJveT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHByZXZpb3VzIHBvbGxpbmcgd2lsbCBiZSBzdG9wcGVkIHdoZW4gYSBuZXcgcXVlcnkgaXMgcHVzaGVkIGludG8gdGhlIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgdHJ1ZSAvLyBPbmx5IGlmIHRoZSBxdWVyeSBoYXMgbm8gb3RoZXIgZGVwZW5kZW50cyBhbmQgdGhlIHJlcXVlc3QgY2FuIGJlIGNhY2hlZCAoR0VULCBPUFRJT05TLCBIRUFEIGFuZCBHUUxfUVVFUlkpLiBPdGhlcndpc2UgZmFsc2UuXG4gICAqL1xuICBzdG9wUHJldmlvdXNQb2xsaW5nPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeUZpbHRlckNvbmZpZyB7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSByZXNwb25zZSB3aWxsIGJlIGNhY2hlZCB1bnRpbCB0aGUgbmV4dCByZXNwb25zZSBpcyByZWNlaXZlZCBvciB0aGUgcXVlcnkgZmFpbHMuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBjYWNoZVJlc3BvbnNlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGFkZFF1ZXJ5Q29udGFpbmVySGFuZGxpbmcgPSAoXG4gIG9iczogT2JzZXJ2YWJsZTxBbnlRdWVyeSB8IEFueVF1ZXJ5W10gfCBudWxsPixcbiAgdmFsdWVGbjogKCkgPT4gQW55UXVlcnkgfCBBbnlRdWVyeVtdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgY29uZmlnPzogUXVlcnlDb250YWluZXJDb25maWcsXG4pID0+IHtcbiAgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KGFkZFF1ZXJ5Q29udGFpbmVySGFuZGxpbmcpO1xuXG4gIGNvbnN0IHsgYWJvcnRQcmV2aW91cywgYWJvcnRPbkRlc3Ryb3ksIHN0b3BQcmV2aW91c1BvbGxpbmcgfSA9IGNvbmZpZyA/PyB7fTtcblxuICBjb25zdCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIGNvbnN0IGRlc3Ryb3kkID0gY3JlYXRlRGVzdHJveSgpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGNvbnN0IHROb2RlID0gKGluamVjdG9yIGFzIGFueSkuX3ROb2RlO1xuICBjb25zdCBjb21wb25lbnRJZCA9IHROb2RlPy5pbmRleCA/PyAtMTtcblxuICBvYnNcbiAgICAucGlwZShcbiAgICAgIHRha2VVbnRpbChkZXN0cm95JCksXG4gICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICBwYWlyd2lzZSgpLFxuICAgICAgdGFwKChbcHJldlF1ZXJ5LCBjdXJyUXVlcnldKSA9PiB7XG4gICAgICAgIGNvbnN0IGNsZWFuUXVlcnkgPSAocTogQW55UXVlcnkgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgICAgaWYgKCFxPy5faGFzRGVwZW5kZW50cygpICYmICgoYWJvcnRQcmV2aW91cyA9PT0gdW5kZWZpbmVkICYmIHE/LmNhbkJlQ2FjaGVkKSB8fCBhYm9ydFByZXZpb3VzKSkge1xuICAgICAgICAgICAgcT8uYWJvcnQoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAhcT8uX2hhc0RlcGVuZGVudHMoKSAmJlxuICAgICAgICAgICAgKChzdG9wUHJldmlvdXNQb2xsaW5nID09PSB1bmRlZmluZWQgJiYgcT8uY2FuQmVDYWNoZWQpIHx8IHN0b3BQcmV2aW91c1BvbGxpbmcpICYmXG4gICAgICAgICAgICBxPy5pc1BvbGxpbmdcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHE/LnN0b3BQb2xsaW5nKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICgoaXNRdWVyeShwcmV2UXVlcnkpIHx8IHByZXZRdWVyeSA9PT0gbnVsbCkgJiYgKGlzUXVlcnkoY3VyclF1ZXJ5KSB8fCBjdXJyUXVlcnkgPT09IG51bGwpKSB7XG4gICAgICAgICAgcHJldlF1ZXJ5Py5fcmVtb3ZlRGVwZW5kZW50KGNvbXBvbmVudElkKTtcbiAgICAgICAgICBjdXJyUXVlcnk/Ll9hZGREZXBlbmRlbnQoY29tcG9uZW50SWQpO1xuXG4gICAgICAgICAgY2xlYW5RdWVyeShwcmV2UXVlcnkpO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIChBcnJheS5pc0FycmF5KHByZXZRdWVyeSkgfHwgcHJldlF1ZXJ5ID09PSBudWxsKSAmJlxuICAgICAgICAgIChBcnJheS5pc0FycmF5KGN1cnJRdWVyeSkgfHwgY3VyclF1ZXJ5ID09PSBudWxsKVxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAocHJldlF1ZXJ5KSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZXZRdWVyeS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICBwcmV2UXVlcnlbaV0/Ll9yZW1vdmVEZXBlbmRlbnQoY29tcG9uZW50SWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjdXJyUXVlcnkpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY3VyclF1ZXJ5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIGN1cnJRdWVyeVtpXT8uX2FkZERlcGVuZGVudChjb21wb25lbnRJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHByZXZRdWVyeSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmV2UXVlcnkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgY2xlYW5RdWVyeShwcmV2UXVlcnlbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAoaXNRdWVyeShwcmV2UXVlcnkpICYmIEFycmF5LmlzQXJyYXkoY3VyclF1ZXJ5KSkgfHxcbiAgICAgICAgICAoQXJyYXkuaXNBcnJheShwcmV2UXVlcnkpICYmIGlzUXVlcnkoY3VyclF1ZXJ5KSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgbWl4IHF1ZXJpZXMgYW5kIGFycmF5cyBvZiBxdWVyaWVzIGluIHRoZSBzYW1lIHF1ZXJ5IGNvbnRhaW5lci4nKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKTtcblxuICBkZXN0cm95JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgIGNvbnN0IHF1ZXJ5ID0gdmFsdWVGbigpO1xuXG4gICAgY29uc3QgaGFuZGxlUXVlcnkgPSAocTogQW55UXVlcnkgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICBxPy5fcmVtb3ZlRGVwZW5kZW50KGNvbXBvbmVudElkKTtcblxuICAgICAgaWYgKCFxPy5faGFzRGVwZW5kZW50cygpICYmICgocT8uY2FuQmVDYWNoZWQgJiYgYWJvcnRPbkRlc3Ryb3kgPT09IHVuZGVmaW5lZCkgfHwgYWJvcnRPbkRlc3Ryb3kpKSB7XG4gICAgICAgIHE/LmFib3J0KCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmIChpc1F1ZXJ5KHF1ZXJ5KSkge1xuICAgICAgaGFuZGxlUXVlcnkocXVlcnkpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShxdWVyeSkpIHtcbiAgICAgIGZvciAoY29uc3QgcSBvZiBxdWVyeSkge1xuICAgICAgICBoYW5kbGVRdWVyeShxKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvUXVlcnlTaWduYWw8VCBleHRlbmRzIEFueVF1ZXJ5IHwgbnVsbD4oXG4gIHNvdXJjZTogT2JzZXJ2YWJsZTxUPiB8IFN1YnNjcmliYWJsZTxUPixcbik6IFNpZ25hbDxUIHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBmdW5jdGlvbiB0b1F1ZXJ5U2lnbmFsPFQgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGw+KFxuICBzb3VyY2U6IE9ic2VydmFibGU8VD4gfCBTdWJzY3JpYmFibGU8VD4sXG4gIG9wdGlvbnM6IFRvU2lnbmFsT3B0aW9ucyAmIHsgaW5pdGlhbFZhbHVlPzogdW5kZWZpbmVkOyByZXF1aXJlU3luYz86IGZhbHNlIH0gJiBRdWVyeUNvbnRhaW5lckNvbmZpZyxcbik6IFNpZ25hbDxUIHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBmdW5jdGlvbiB0b1F1ZXJ5U2lnbmFsPFQgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGw+KFxuICBzb3VyY2U6IE9ic2VydmFibGU8VD4gfCBTdWJzY3JpYmFibGU8VD4sXG4gIG9wdGlvbnM6IFRvU2lnbmFsT3B0aW9ucyAmIHsgaW5pdGlhbFZhbHVlPzogbnVsbDsgcmVxdWlyZVN5bmM/OiBmYWxzZSB9ICYgUXVlcnlDb250YWluZXJDb25maWcsXG4pOiBTaWduYWw8VCB8IG51bGw+O1xuZXhwb3J0IGZ1bmN0aW9uIHRvUXVlcnlTaWduYWw8VCBleHRlbmRzIEFueVF1ZXJ5IHwgbnVsbD4oXG4gIHNvdXJjZTogT2JzZXJ2YWJsZTxUPiB8IFN1YnNjcmliYWJsZTxUPixcbiAgb3B0aW9uczogVG9TaWduYWxPcHRpb25zICYgeyBpbml0aWFsVmFsdWU/OiB1bmRlZmluZWQ7IHJlcXVpcmVTeW5jOiB0cnVlIH0gJiBRdWVyeUNvbnRhaW5lckNvbmZpZyxcbik6IFNpZ25hbDxUPjtcbmV4cG9ydCBmdW5jdGlvbiB0b1F1ZXJ5U2lnbmFsPFQgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGwsIGNvbnN0IFUgZXh0ZW5kcyBUPihcbiAgc291cmNlOiBPYnNlcnZhYmxlPFQ+IHwgU3Vic2NyaWJhYmxlPFQ+LFxuICBvcHRpb25zOiBUb1NpZ25hbE9wdGlvbnMgJiB7IGluaXRpYWxWYWx1ZTogVTsgcmVxdWlyZVN5bmM/OiBmYWxzZSB9ICYgUXVlcnlDb250YWluZXJDb25maWcsXG4pOiBTaWduYWw8VCB8IFU+O1xuXG5leHBvcnQgZnVuY3Rpb24gdG9RdWVyeVNpZ25hbDxUIGV4dGVuZHMgQW55UXVlcnkgfCBudWxsLCBVID0gdW5kZWZpbmVkPihcbiAgc291cmNlOiBPYnNlcnZhYmxlPFQ+IHwgU3Vic2NyaWJhYmxlPFQ+LFxuICBvcHRpb25zPzogVG9TaWduYWxPcHRpb25zICYgeyBpbml0aWFsVmFsdWU/OiBVIH0gJiBRdWVyeUNvbnRhaW5lckNvbmZpZyxcbik6IFNpZ25hbDxUIHwgVT4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBjb25zdCBzID0gdG9TaWduYWwoc291cmNlLCBvcHRpb25zIGFzIGFueSk7XG5cbiAgYWRkUXVlcnlDb250YWluZXJIYW5kbGluZyhzb3VyY2UgYXMgT2JzZXJ2YWJsZTxUPiwgKCkgPT4gcygpIGFzIFQsIG9wdGlvbnMpO1xuXG4gIHJldHVybiBzIGFzIFNpZ25hbDxUIHwgVT47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBxdWVyeUNvbXB1dGVkPFQgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGw+KFxuICBjb21wdXRhdGlvbjogKCkgPT4gVCxcbiAgb3B0aW9ucz86IENyZWF0ZUNvbXB1dGVkT3B0aW9uczxUPiAmIFF1ZXJ5Q29udGFpbmVyQ29uZmlnICYgVG9PYnNlcnZhYmxlT3B0aW9ucyxcbik6IFNpZ25hbDxUPiB7XG4gIGNvbnN0IGMgPSBjb21wdXRlZChjb21wdXRhdGlvbiwgb3B0aW9ucyk7XG4gIGNvbnN0IG9icyA9IHRvT2JzZXJ2YWJsZShjLCBvcHRpb25zKTtcblxuICBhZGRRdWVyeUNvbnRhaW5lckhhbmRsaW5nKG9icywgKCkgPT4gYygpLCBvcHRpb25zKTtcblxuICByZXR1cm4gYztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5QXJyYXlDb21wdXRlZDxUIGV4dGVuZHMgQW55UXVlcnlbXSB8IG51bGw+KFxuICBjb21wdXRhdGlvbjogKCkgPT4gVCxcbiAgb3B0aW9ucz86IENyZWF0ZUNvbXB1dGVkT3B0aW9uczxUPiAmIFF1ZXJ5Q29udGFpbmVyQ29uZmlnICYgVG9PYnNlcnZhYmxlT3B0aW9ucyxcbik6IFNpZ25hbDxUPiB7XG4gIGNvbnN0IGMgPSBjb21wdXRlZChjb21wdXRhdGlvbiwgb3B0aW9ucyk7XG4gIGNvbnN0IG9icyA9IHRvT2JzZXJ2YWJsZShjLCBvcHRpb25zKTtcblxuICBhZGRRdWVyeUNvbnRhaW5lckhhbmRsaW5nKG9icywgKCkgPT4gYygpLCBvcHRpb25zKTtcblxuICByZXR1cm4gYztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvUXVlcnlTdWJqZWN0PFQgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGw+KFxuICBzb3VyY2U6IFNpZ25hbDxUPixcbiAgb3B0aW9ucz86IFRvT2JzZXJ2YWJsZU9wdGlvbnMgJiBRdWVyeUNvbnRhaW5lckNvbmZpZyxcbik6IE9ic2VydmFibGU8VD4ge1xuICBjb25zdCBvYnMgPSB0b09ic2VydmFibGUoc291cmNlLCBvcHRpb25zKTtcblxuICBhZGRRdWVyeUNvbnRhaW5lckhhbmRsaW5nKG9icywgKCkgPT4gc291cmNlKCksIG9wdGlvbnMpO1xuXG4gIHJldHVybiBvYnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBxdWVyeVN0YXRlU2lnbmFsPFQgZXh0ZW5kcyBTaWduYWw8QW55UXVlcnkgfCBBbnlRdWVyeUNvbGxlY3Rpb24gfCBudWxsPj4oXG4gIHNvdXJjZTogVCxcbiAgb3B0aW9ucz86IFF1ZXJ5RmlsdGVyQ29uZmlnLFxuKSB7XG4gIGNvbnN0IHsgY2FjaGVSZXNwb25zZSB9ID0gb3B0aW9ucyA/PyB7fTtcblxuICByZXR1cm4gdG9TaWduYWwoXG4gICAgdG9PYnNlcnZhYmxlKHNvdXJjZSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgocSkgPT4gZXh0cmFjdFF1ZXJ5KHEpPy5zdGF0ZSQgPz8gb2YobnVsbCkpLFxuICAgICAgc3dpdGNoTWFwKChzdGF0ZSkgPT4ge1xuICAgICAgICBpZiAoY2FjaGVSZXNwb25zZSkge1xuICAgICAgICAgIHJldHVybiBvZihzdGF0ZSkucGlwZShcbiAgICAgICAgICAgIGZpbHRlclF1ZXJ5U3RhdGVzKFtRdWVyeVN0YXRlVHlwZS5TdWNjZXNzLCBRdWVyeVN0YXRlVHlwZS5GYWlsdXJlLCBRdWVyeVN0YXRlVHlwZS5DYW5jZWxsZWRdKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9mKHN0YXRlKTtcbiAgICAgIH0pLFxuICAgICksXG4gICAge1xuICAgICAgaW5pdGlhbFZhbHVlOiBudWxsLFxuICAgIH0sXG4gICkgYXMgU2lnbmFsPFF1ZXJ5U3RhdGU8UXVlcnlEYXRhT2Y8UXVlcnlPZjxSZXR1cm5UeXBlPFQ+Pj4+IHwgbnVsbD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBxdWVyeVN0YXRlUmVzcG9uc2VTaWduYWw8VCBleHRlbmRzIFNpZ25hbDxBbnlRdWVyeSB8IEFueVF1ZXJ5Q29sbGVjdGlvbiB8IG51bGw+PihcbiAgc291cmNlOiBULFxuICBvcHRpb25zPzogUXVlcnlGaWx0ZXJDb25maWcsXG4pIHtcbiAgY29uc3QgcyA9IHF1ZXJ5U3RhdGVTaWduYWwoc291cmNlLCBvcHRpb25zKTtcblxuICByZXR1cm4gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gcygpO1xuXG4gICAgcmV0dXJuIGlzUXVlcnlTdGF0ZVN1Y2Nlc3Moc3RhdGUpID8gc3RhdGUucmVzcG9uc2UgOiBudWxsO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5U3RhdGVFcnJvclNpZ25hbDxUIGV4dGVuZHMgU2lnbmFsPEFueVF1ZXJ5IHwgQW55UXVlcnlDb2xsZWN0aW9uIHwgbnVsbD4+KHNvdXJjZTogVCkge1xuICBjb25zdCBzID0gcXVlcnlTdGF0ZVNpZ25hbChzb3VyY2UpO1xuXG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBzKCk7XG5cbiAgICByZXR1cm4gaXNRdWVyeVN0YXRlRmFpbHVyZShzdGF0ZSkgPyBzdGF0ZS5lcnJvciA6IG51bGw7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVlcnlTdGF0ZUxvYWRpbmdTaWduYWw8VCBleHRlbmRzIFNpZ25hbDxBbnlRdWVyeSB8IEFueVF1ZXJ5Q29sbGVjdGlvbiB8IG51bGw+Pihzb3VyY2U6IFQpIHtcbiAgY29uc3QgcyA9IHF1ZXJ5U3RhdGVTaWduYWwoc291cmNlKTtcblxuICByZXR1cm4gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gcygpO1xuXG4gICAgcmV0dXJuIGlzUXVlcnlTdGF0ZUxvYWRpbmcoc3RhdGUpID8gc3RhdGUgOiBudWxsO1xuICB9KTtcbn1cbiJdfQ==
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi91dGlscy9kYXRhLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBeUIsUUFBUSxFQUFVLHdCQUF3QixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUF3QyxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQTRCLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BHLE9BQU8sRUFNTCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLE9BQU8sRUFDUCxtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLG1CQUFtQixHQUNwQixNQUFNLFVBQVUsQ0FBQztBQStCbEIsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsQ0FDdkMsR0FBNkMsRUFDN0MsT0FBdUQsRUFDdkQsTUFBNkIsRUFDN0IsRUFBRTtJQUNGLHdCQUF3QixDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFFcEQsTUFBTSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO0lBRTVFLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxNQUFNLFFBQVEsR0FBRyxhQUFhLEVBQUUsQ0FBQztJQUVqQyw4REFBOEQ7SUFDOUQsTUFBTSxLQUFLLEdBQUksUUFBZ0IsQ0FBQyxNQUFNLENBQUM7SUFDdkMsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FB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RTtRQUNuQixNQUFNLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUVsQixPQUFPLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDekQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUF5RCxNQUFTO0lBQ3ZHLE1BQU0sQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRW5DLE9BQU8sUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUNuQixNQUFNLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUVsQixPQUFPLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNuRCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDcmVhdGVDb21wdXRlZE9wdGlvbnMsIEluamVjdG9yLCBTaWduYWwsIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dCwgY29tcHV0ZWQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVG9PYnNlcnZhYmxlT3B0aW9ucywgVG9TaWduYWxPcHRpb25zLCB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgY29tcHV0ZWRUaWxsVHJ1dGh5LCBjcmVhdGVEZXN0cm95IH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpYmFibGUsIG9mLCBwYWlyd2lzZSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBbnlRdWVyeSxcbiAgQW55UXVlcnlDb2xsZWN0aW9uLFxuICBRdWVyeU9mLFxuICBRdWVyeVN0YXRlLFxuICBRdWVyeVN0YXRlVHlwZSxcbiAgZXh0cmFjdFF1ZXJ5LFxuICBmaWx0ZXJRdWVyeVN0YXRlcyxcbiAgaXNRdWVyeSxcbiAgaXNRdWVyeVN0YXRlRmFpbHVyZSxcbiAgaXNRdWVyeVN0YXRlTG9hZGluZyxcbiAgaXNRdWVyeVN0YXRlU3VjY2Vzcyxcbn0gZnJvbSAnLi4vcXVlcnknO1xuaW1wb3J0IHsgUXVlcnlEYXRhT2YgfSBmcm9tICcuLi9xdWVyeS1jcmVhdG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeUNvbnRhaW5lckNvbmZpZyB7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBwcmV2aW91cyBxdWVyeSB3aWxsIGJlIGFib3J0ZWQgd2hlbiBhIG5ldyBxdWVyeSBpcyBwdXNoZWQgaW50byB0aGUgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCB0cnVlIC8vIE9ubHkgaWYgdGhlIHJlcXVlc3QgY2FuIGJlIGNhY2hlZCAoR0VULCBPUFRJT05TLCBIRUFEIGFuZCBHUUxfUVVFUlkpLiBPdGhlcndpc2UgZmFsc2UuXG4gICAqL1xuICBhYm9ydFByZXZpb3VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgcXVlcnkgd2lsbCBiZSBhYm9ydGVkIHdoZW4gdGhlIGNvbnRhaW5lciBpcyBkZXN0cm95ZWQuXG4gICAqIEBkZWZhdWx0IHRydWUgLy8gT25seSBpZiB0aGUgcmVxdWVzdCBjYW4gYmUgY2FjaGVkIChHRVQsIE9QVElPTlMsIEhFQUQgYW5kIEdRTF9RVUVSWSkuIE90aGVyd2lzZSBmYWxzZS5cbiAgICovXG4gIGFib3J0T25EZXN0cm95PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgcHJldmlvdXMgcG9sbGluZyB3aWxsIGJlIHN0b3BwZWQgd2hlbiBhIG5ldyBxdWVyeSBpcyBwdXNoZWQgaW50byB0aGUgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCB0cnVlIC8vIE9ubHkgaWYgdGhlIHF1ZXJ5IGhhcyBubyBvdGhlciBkZXBlbmRlbnRzIGFuZCB0aGUgcmVxdWVzdCBjYW4gYmUgY2FjaGVkIChHRVQsIE9QVElPTlMsIEhFQUQgYW5kIEdRTF9RVUVSWSkuIE90aGVyd2lzZSBmYWxzZS5cbiAgICovXG4gIHN0b3BQcmV2aW91c1BvbGxpbmc/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5RmlsdGVyQ29uZmlnIHtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHJlc3BvbnNlIHdpbGwgYmUgY2FjaGVkIHVudGlsIHRoZSBuZXh0IHJlc3BvbnNlIGlzIHJlY2VpdmVkIG9yIHRoZSBxdWVyeSBmYWlscy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGNhY2hlUmVzcG9uc2U/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgYWRkUXVlcnlDb250YWluZXJIYW5kbGluZyA9IChcbiAgb2JzOiBPYnNlcnZhYmxlPEFueVF1ZXJ5IHwgQW55UXVlcnlbXSB8IG51bGw+LFxuICB2YWx1ZUZuOiAoKSA9PiBBbnlRdWVyeSB8IEFueVF1ZXJ5W10gfCBudWxsIHwgdW5kZWZpbmVkLFxuICBjb25maWc/OiBRdWVyeUNvbnRhaW5lckNvbmZpZyxcbikgPT4ge1xuICBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQoYWRkUXVlcnlDb250YWluZXJIYW5kbGluZyk7XG5cbiAgY29uc3QgeyBhYm9ydFByZXZpb3VzLCBhYm9ydE9uRGVzdHJveSwgc3RvcFByZXZpb3VzUG9sbGluZyB9ID0gY29uZmlnID8/IHt9O1xuXG4gIGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgY29uc3QgZGVzdHJveSQgPSBjcmVhdGVEZXN0cm95KCk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgY29uc3QgdE5vZGUgPSAoaW5qZWN0b3IgYXMgYW55KS5fdE5vZGU7XG4gIGNvbnN0IGNvbXBvbmVudElkID0gdE5vZGU/LmluZGV4ID8/IC0xO1xuXG4gIG9ic1xuICAgIC5waXBlKFxuICAgICAgdGFrZVVudGlsKGRlc3Ryb3kkKSxcbiAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgIHBhaXJ3aXNlKCksXG4gICAgICB0YXAoKFtwcmV2UXVlcnksIGN1cnJRdWVyeV0pID0+IHtcbiAgICAgICAgY29uc3QgY2xlYW5RdWVyeSA9IChxOiBBbnlRdWVyeSB8IG51bGwgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgICBpZiAoIXE/Ll9oYXNEZXBlbmRlbnRzKCkgJiYgKChhYm9ydFByZXZpb3VzID09PSB1bmRlZmluZWQgJiYgcT8uY2FuQmVDYWNoZWQpIHx8IGFib3J0UHJldmlvdXMpKSB7XG4gICAgICAgICAgICBxPy5hYm9ydCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICFxPy5faGFzRGVwZW5kZW50cygpICYmXG4gICAgICAgICAgICAoKHN0b3BQcmV2aW91c1BvbGxpbmcgPT09IHVuZGVmaW5lZCAmJiBxPy5jYW5CZUNhY2hlZCkgfHwgc3RvcFByZXZpb3VzUG9sbGluZykgJiZcbiAgICAgICAgICAgIHE/LmlzUG9sbGluZ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgcT8uc3RvcFBvbGxpbmcoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKChpc1F1ZXJ5KHByZXZRdWVyeSkgfHwgcHJldlF1ZXJ5ID09PSBudWxsKSAmJiAoaXNRdWVyeShjdXJyUXVlcnkpIHx8IGN1cnJRdWVyeSA9PT0gbnVsbCkpIHtcbiAgICAgICAgICBwcmV2UXVlcnk/Ll9yZW1vdmVEZXBlbmRlbnQoY29tcG9uZW50SWQpO1xuICAgICAgICAgIGN1cnJRdWVyeT8uX2FkZERlcGVuZGVudChjb21wb25lbnRJZCk7XG5cbiAgICAgICAgICBjbGVhblF1ZXJ5KHByZXZRdWVyeSk7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgKEFycmF5LmlzQXJyYXkocHJldlF1ZXJ5KSB8fCBwcmV2UXVlcnkgPT09IG51bGwpICYmXG4gICAgICAgICAgKEFycmF5LmlzQXJyYXkoY3VyclF1ZXJ5KSB8fCBjdXJyUXVlcnkgPT09IG51bGwpXG4gICAgICAgICkge1xuICAgICAgICAgIGlmIChwcmV2UXVlcnkpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJldlF1ZXJ5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIHByZXZRdWVyeVtpXT8uX3JlbW92ZURlcGVuZGVudChjb21wb25lbnRJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGN1cnJRdWVyeSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJyUXVlcnkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgY3VyclF1ZXJ5W2ldPy5fYWRkRGVwZW5kZW50KGNvbXBvbmVudElkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocHJldlF1ZXJ5KSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZXZRdWVyeS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICBjbGVhblF1ZXJ5KHByZXZRdWVyeVtpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIChpc1F1ZXJ5KHByZXZRdWVyeSkgJiYgQXJyYXkuaXNBcnJheShjdXJyUXVlcnkpKSB8fFxuICAgICAgICAgIChBcnJheS5pc0FycmF5KHByZXZRdWVyeSkgJiYgaXNRdWVyeShjdXJyUXVlcnkpKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBtaXggcXVlcmllcyBhbmQgYXJyYXlzIG9mIHF1ZXJpZXMgaW4gdGhlIHNhbWUgcXVlcnkgY29udGFpbmVyLicpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICApXG4gICAgLnN1YnNjcmliZSgpO1xuXG4gIGRlc3Ryb3kkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgY29uc3QgcXVlcnkgPSB2YWx1ZUZuKCk7XG5cbiAgICBjb25zdCBoYW5kbGVRdWVyeSA9IChxOiBBbnlRdWVyeSB8IG51bGwgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgIHE/Ll9yZW1vdmVEZXBlbmRlbnQoY29tcG9uZW50SWQpO1xuXG4gICAgICBpZiAoIXE/Ll9oYXNEZXBlbmRlbnRzKCkgJiYgKChxPy5jYW5CZUNhY2hlZCAmJiBhYm9ydE9uRGVzdHJveSA9PT0gdW5kZWZpbmVkKSB8fCBhYm9ydE9uRGVzdHJveSkpIHtcbiAgICAgICAgcT8uYWJvcnQoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKGlzUXVlcnkocXVlcnkpKSB7XG4gICAgICBoYW5kbGVRdWVyeShxdWVyeSk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHF1ZXJ5KSkge1xuICAgICAgZm9yIChjb25zdCBxIG9mIHF1ZXJ5KSB7XG4gICAgICAgIGhhbmRsZVF1ZXJ5KHEpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdG9RdWVyeVNpZ25hbDxUIGV4dGVuZHMgQW55UXVlcnkgfCBudWxsPihcbiAgc291cmNlOiBPYnNlcnZhYmxlPFQ+IHwgU3Vic2NyaWJhYmxlPFQ+LFxuKTogU2lnbmFsPFQgfCB1bmRlZmluZWQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHRvUXVlcnlTaWduYWw8VCBleHRlbmRzIEFueVF1ZXJ5IHwgbnVsbD4oXG4gIHNvdXJjZTogT2JzZXJ2YWJsZTxUPiB8IFN1YnNjcmliYWJsZTxUPixcbiAgb3B0aW9uczogVG9TaWduYWxPcHRpb25zICYgeyBpbml0aWFsVmFsdWU/OiB1bmRlZmluZWQ7IHJlcXVpcmVTeW5jPzogZmFsc2UgfSAmIFF1ZXJ5Q29udGFpbmVyQ29uZmlnLFxuKTogU2lnbmFsPFQgfCB1bmRlZmluZWQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHRvUXVlcnlTaWduYWw8VCBleHRlbmRzIEFueVF1ZXJ5IHwgbnVsbD4oXG4gIHNvdXJjZTogT2JzZXJ2YWJsZTxUPiB8IFN1YnNjcmliYWJsZTxUPixcbiAgb3B0aW9uczogVG9TaWduYWxPcHRpb25zICYgeyBpbml0aWFsVmFsdWU/OiBudWxsOyByZXF1aXJlU3luYz86IGZhbHNlIH0gJiBRdWVyeUNvbnRhaW5lckNvbmZpZyxcbik6IFNpZ25hbDxUIHwgbnVsbD47XG5leHBvcnQgZnVuY3Rpb24gdG9RdWVyeVNpZ25hbDxUIGV4dGVuZHMgQW55UXVlcnkgfCBudWxsPihcbiAgc291cmNlOiBPYnNlcnZhYmxlPFQ+IHwgU3Vic2NyaWJhYmxlPFQ+LFxuICBvcHRpb25zOiBUb1NpZ25hbE9wdGlvbnMgJiB7IGluaXRpYWxWYWx1ZT86IHVuZGVmaW5lZDsgcmVxdWlyZVN5bmM6IHRydWUgfSAmIFF1ZXJ5Q29udGFpbmVyQ29uZmlnLFxuKTogU2lnbmFsPFQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHRvUXVlcnlTaWduYWw8VCBleHRlbmRzIEFueVF1ZXJ5IHwgbnVsbCwgY29uc3QgVSBleHRlbmRzIFQ+KFxuICBzb3VyY2U6IE9ic2VydmFibGU8VD4gfCBTdWJzY3JpYmFibGU8VD4sXG4gIG9wdGlvbnM6IFRvU2lnbmFsT3B0aW9ucyAmIHsgaW5pdGlhbFZhbHVlOiBVOyByZXF1aXJlU3luYz86IGZhbHNlIH0gJiBRdWVyeUNvbnRhaW5lckNvbmZpZyxcbik6IFNpZ25hbDxUIHwgVT47XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1F1ZXJ5U2lnbmFsPFQgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGwsIFUgPSB1bmRlZmluZWQ+KFxuICBzb3VyY2U6IE9ic2VydmFibGU8VD4gfCBTdWJzY3JpYmFibGU8VD4sXG4gIG9wdGlvbnM/OiBUb1NpZ25hbE9wdGlvbnMgJiB7IGluaXRpYWxWYWx1ZT86IFUgfSAmIFF1ZXJ5Q29udGFpbmVyQ29uZmlnLFxuKTogU2lnbmFsPFQgfCBVPiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGNvbnN0IHMgPSB0b1NpZ25hbChzb3VyY2UsIG9wdGlvbnMgYXMgYW55KTtcblxuICBhZGRRdWVyeUNvbnRhaW5lckhhbmRsaW5nKHNvdXJjZSBhcyBPYnNlcnZhYmxlPFQ+LCAoKSA9PiBzKCkgYXMgVCwgb3B0aW9ucyk7XG5cbiAgcmV0dXJuIHMgYXMgU2lnbmFsPFQgfCBVPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5Q29tcHV0ZWQ8VCBleHRlbmRzIEFueVF1ZXJ5IHwgbnVsbD4oXG4gIGNvbXB1dGF0aW9uOiAoKSA9PiBULFxuICBvcHRpb25zPzogQ3JlYXRlQ29tcHV0ZWRPcHRpb25zPFQ+ICYgUXVlcnlDb250YWluZXJDb25maWcgJiBUb09ic2VydmFibGVPcHRpb25zLFxuKTogU2lnbmFsPFQ+IHtcbiAgY29uc3QgYyA9IGNvbXB1dGVkKGNvbXB1dGF0aW9uLCBvcHRpb25zKTtcbiAgY29uc3Qgb2JzID0gdG9PYnNlcnZhYmxlKGMsIG9wdGlvbnMpO1xuXG4gIGFkZFF1ZXJ5Q29udGFpbmVySGFuZGxpbmcob2JzLCAoKSA9PiBjKCksIG9wdGlvbnMpO1xuXG4gIHJldHVybiBjO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBzaWduYWwgdGhhdCB3aWxsIG9ubHkgYmUgcmVhY3RpdmUgdW50aWwgdGhlIGZpcnN0IHF1ZXJ5IGlzIGNyZWF0ZWQuXG4gKiBBbGwgc3Vic2VxdWVudCBjaGFuZ2VzIGluc2lkZSB0aGUgY29tcHV0YXRpb24gd2lsbCBiZSBpZ25vcmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcXVlcnlDb21wdXRlZFRpbGxUcnV0aHk8VCBleHRlbmRzIEFueVF1ZXJ5IHwgbnVsbD4oXG4gIGNvbXB1dGF0aW9uOiAoKSA9PiBULFxuICBvcHRpb25zPzogQ3JlYXRlQ29tcHV0ZWRPcHRpb25zPFQ+ICYgUXVlcnlDb250YWluZXJDb25maWcgJiBUb09ic2VydmFibGVPcHRpb25zLFxuKTogU2lnbmFsPFQgfCBudWxsPiB7XG4gIGNvbnN0IGMgPSBjb21wdXRlZFRpbGxUcnV0aHkoY29tcHV0ZWQoY29tcHV0YXRpb24sIG9wdGlvbnMpKTtcbiAgY29uc3Qgb2JzID0gdG9PYnNlcnZhYmxlKGMsIG9wdGlvbnMpO1xuXG4gIGFkZFF1ZXJ5Q29udGFpbmVySGFuZGxpbmcob2JzLCAoKSA9PiBjKCksIG9wdGlvbnMpO1xuXG4gIHJldHVybiBjO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVlcnlBcnJheUNvbXB1dGVkPFQgZXh0ZW5kcyBBbnlRdWVyeVtdIHwgbnVsbD4oXG4gIGNvbXB1dGF0aW9uOiAoKSA9PiBULFxuICBvcHRpb25zPzogQ3JlYXRlQ29tcHV0ZWRPcHRpb25zPFQ+ICYgUXVlcnlDb250YWluZXJDb25maWcgJiBUb09ic2VydmFibGVPcHRpb25zLFxuKTogU2lnbmFsPFQ+IHtcbiAgY29uc3QgYyA9IGNvbXB1dGVkKGNvbXB1dGF0aW9uLCBvcHRpb25zKTtcbiAgY29uc3Qgb2JzID0gdG9PYnNlcnZhYmxlKGMsIG9wdGlvbnMpO1xuXG4gIGFkZFF1ZXJ5Q29udGFpbmVySGFuZGxpbmcob2JzLCAoKSA9PiBjKCksIG9wdGlvbnMpO1xuXG4gIHJldHVybiBjO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9RdWVyeVN1YmplY3Q8VCBleHRlbmRzIEFueVF1ZXJ5IHwgbnVsbD4oXG4gIHNvdXJjZTogU2lnbmFsPFQ+LFxuICBvcHRpb25zPzogVG9PYnNlcnZhYmxlT3B0aW9ucyAmIFF1ZXJ5Q29udGFpbmVyQ29uZmlnLFxuKTogT2JzZXJ2YWJsZTxUPiB7XG4gIGNvbnN0IG9icyA9IHRvT2JzZXJ2YWJsZShzb3VyY2UsIG9wdGlvbnMpO1xuXG4gIGFkZFF1ZXJ5Q29udGFpbmVySGFuZGxpbmcob2JzLCAoKSA9PiBzb3VyY2UoKSwgb3B0aW9ucyk7XG5cbiAgcmV0dXJuIG9icztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5U3RhdGVTaWduYWw8VCBleHRlbmRzIFNpZ25hbDxBbnlRdWVyeSB8IEFueVF1ZXJ5Q29sbGVjdGlvbiB8IG51bGw+PihcbiAgc291cmNlOiBULFxuICBvcHRpb25zPzogUXVlcnlGaWx0ZXJDb25maWcsXG4pIHtcbiAgY29uc3QgeyBjYWNoZVJlc3BvbnNlIH0gPSBvcHRpb25zID8/IHt9O1xuXG4gIHJldHVybiB0b1NpZ25hbChcbiAgICB0b09ic2VydmFibGUoc291cmNlKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChxKSA9PiBleHRyYWN0UXVlcnkocSk/LnN0YXRlJCA/PyBvZihudWxsKSksXG4gICAgICBzd2l0Y2hNYXAoKHN0YXRlKSA9PiB7XG4gICAgICAgIGlmIChjYWNoZVJlc3BvbnNlKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKHN0YXRlKS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyUXVlcnlTdGF0ZXMoW1F1ZXJ5U3RhdGVUeXBlLlN1Y2Nlc3MsIFF1ZXJ5U3RhdGVUeXBlLkZhaWx1cmUsIFF1ZXJ5U3RhdGVUeXBlLkNhbmNlbGxlZF0pLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2Yoc3RhdGUpO1xuICAgICAgfSksXG4gICAgKSxcbiAgICB7XG4gICAgICBpbml0aWFsVmFsdWU6IG51bGwsXG4gICAgfSxcbiAgKSBhcyBTaWduYWw8UXVlcnlTdGF0ZTxRdWVyeURhdGFPZjxRdWVyeU9mPFJldHVyblR5cGU8VD4+Pj4gfCBudWxsPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5U3RhdGVSZXNwb25zZVNpZ25hbDxUIGV4dGVuZHMgU2lnbmFsPEFueVF1ZXJ5IHwgQW55UXVlcnlDb2xsZWN0aW9uIHwgbnVsbD4+KFxuICBzb3VyY2U6IFQsXG4gIG9wdGlvbnM/OiBRdWVyeUZpbHRlckNvbmZpZyxcbikge1xuICBjb25zdCBzID0gcXVlcnlTdGF0ZVNpZ25hbChzb3VyY2UsIG9wdGlvbnMpO1xuXG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBzKCk7XG5cbiAgICByZXR1cm4gaXNRdWVyeVN0YXRlU3VjY2VzcyhzdGF0ZSkgPyBzdGF0ZS5yZXNwb25zZSA6IG51bGw7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVlcnlTdGF0ZUVycm9yU2lnbmFsPFQgZXh0ZW5kcyBTaWduYWw8QW55UXVlcnkgfCBBbnlRdWVyeUNvbGxlY3Rpb24gfCBudWxsPj4oc291cmNlOiBUKSB7XG4gIGNvbnN0IHMgPSBxdWVyeVN0YXRlU2lnbmFsKHNvdXJjZSk7XG5cbiAgcmV0dXJuIGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IHMoKTtcblxuICAgIHJldHVybiBpc1F1ZXJ5U3RhdGVGYWlsdXJlKHN0YXRlKSA/IHN0YXRlLmVycm9yIDogbnVsbDtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBxdWVyeVN0YXRlTG9hZGluZ1NpZ25hbDxUIGV4dGVuZHMgU2lnbmFsPEFueVF1ZXJ5IHwgQW55UXVlcnlDb2xsZWN0aW9uIHwgbnVsbD4+KHNvdXJjZTogVCkge1xuICBjb25zdCBzID0gcXVlcnlTdGF0ZVNpZ25hbChzb3VyY2UpO1xuXG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBzKCk7XG5cbiAgICByZXR1cm4gaXNRdWVyeVN0YXRlTG9hZGluZyhzdGF0ZSkgPyBzdGF0ZSA6IG51bGw7XG4gIH0pO1xufVxuIl19
|