nuxeo-development-framework 5.8.1 → 5.8.2
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/bundles/nuxeo-development-framework.umd.js +1273 -291
- package/bundles/nuxeo-development-framework.umd.js.map +1 -1
- package/esm2015/lib/components/documents/components/document-scan/document-scan.component.js +1 -1
- package/esm2015/lib/components/ndf-scanner/index.js +3 -0
- package/esm2015/lib/components/ndf-scanner/ndf-scanner.component.js +966 -0
- package/esm2015/lib/components/ndf-scanner/ndf-scanner.module.js +23 -0
- package/esm2015/lib/components/ndf-uploader/components/bottom-sheet/ndf-uploader-bottom-sheet.component.js +12 -11
- package/esm2015/lib/components/ndf-uploader/index.js +4 -4
- package/esm2015/lib/components/ndf-uploader/ndf-uploader-bottom-sheet.service.js +72 -0
- package/esm2015/lib/components/ndf-uploader/ndf-uploader.module.js +53 -0
- package/esm2015/lib/components/ndf-uploader/ndf-uploader.service.js +241 -0
- package/esm2015/lib/components/ndf-uploader/providers/nuxeo-provider.service.js +2 -2
- package/esm2015/lib/components/ndf-uploader/providers/s3-provider.service.js +2 -2
- package/esm2015/public-api.js +2 -1
- package/fesm2015/nuxeo-development-framework.js +1124 -158
- package/fesm2015/nuxeo-development-framework.js.map +1 -1
- package/lib/components/ndf-scanner/index.d.ts +2 -0
- package/lib/components/ndf-scanner/ndf-scanner.component.d.ts +104 -0
- package/lib/components/ndf-scanner/ndf-scanner.module.d.ts +13 -0
- package/lib/components/ndf-uploader/components/bottom-sheet/ndf-uploader-bottom-sheet.component.d.ts +4 -4
- package/lib/components/ndf-uploader/index.d.ts +3 -3
- package/lib/components/ndf-uploader/{uploader-bottom-sheet.service.d.ts → ndf-uploader-bottom-sheet.service.d.ts} +11 -11
- package/lib/components/ndf-uploader/ndf-uploader.module.d.ts +16 -0
- package/lib/components/ndf-uploader/{uploader.service.d.ts → ndf-uploader.service.d.ts} +3 -3
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/esm2015/lib/components/ndf-uploader/uploader-bottom-sheet.service.js +0 -72
- package/esm2015/lib/components/ndf-uploader/uploader.module.js +0 -53
- package/esm2015/lib/components/ndf-uploader/uploader.service.js +0 -241
- package/lib/components/ndf-uploader/uploader.module.d.ts +0 -16
|
@@ -1,241 +0,0 @@
|
|
|
1
|
-
var _UploaderService_instances, _UploaderService_cancelRequests, _UploaderService_filesInfo, _UploaderService_batchFiles, _UploaderService_startExecution, _UploaderService_generateBatch, _UploaderService_uploadChunk, _UploaderService_onUploadDone, _UploaderService_onUploadError, _UploaderService_complete, _UploaderService_getProvider, _UploaderService_updateFiles, _UploaderService_prepareEvent, _UploaderService_getFile, _UploaderService_getFiles, _UploaderService_createBatch, _UploaderService_deleteBatch, _UploaderService_deleteFile, _UploaderService_getFileInfo;
|
|
2
|
-
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
|
-
import { Injectable } from '@angular/core';
|
|
4
|
-
import { FileEventType, FileStatus, UploadProvider } from './models';
|
|
5
|
-
import { UPLOADER_CONFIG } from './config';
|
|
6
|
-
import { catchError, finalize, mergeMap, switchMap, tap, map, first, distinctUntilChanged, debounceTime, takeUntil } from 'rxjs/operators';
|
|
7
|
-
import { BehaviorSubject, EMPTY, from, Subject } from 'rxjs';
|
|
8
|
-
import { UploaderHelper } from './helpers';
|
|
9
|
-
import _flatMap from 'lodash/flatMap';
|
|
10
|
-
import { BaseService } from '../../shared';
|
|
11
|
-
import { EnvManager } from '../../core/env';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "./providers";
|
|
14
|
-
import * as i2 from "../display-suitable-icon/display-suitable-icon/icon.service";
|
|
15
|
-
export function nuxeoBaseUrl() {
|
|
16
|
-
return `${EnvManager.environment.nuxeo}/api/v1/`;
|
|
17
|
-
}
|
|
18
|
-
export class UploaderService extends BaseService {
|
|
19
|
-
constructor(injector, nuxeoProvider, s3Provider, iconService) {
|
|
20
|
-
super(injector);
|
|
21
|
-
this.nuxeoProvider = nuxeoProvider;
|
|
22
|
-
this.s3Provider = s3Provider;
|
|
23
|
-
this.iconService = iconService;
|
|
24
|
-
_UploaderService_instances.add(this);
|
|
25
|
-
_UploaderService_cancelRequests.set(this, new Subject());
|
|
26
|
-
_UploaderService_filesInfo.set(this, new Subject());
|
|
27
|
-
_UploaderService_batchFiles.set(this, new BehaviorSubject([]));
|
|
28
|
-
this.events$ = __classPrivateFieldGet(this, _UploaderService_filesInfo, "f").asObservable();
|
|
29
|
-
UploaderHelper.prepareConfig();
|
|
30
|
-
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_startExecution).call(this);
|
|
31
|
-
}
|
|
32
|
-
upload(filesOrOptions) {
|
|
33
|
-
const options = Array.isArray(filesOrOptions) ? { files: filesOrOptions } : Object.assign({}, filesOrOptions);
|
|
34
|
-
const batchsFile = UploaderHelper.prepareFiles(options, 0);
|
|
35
|
-
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_updateFiles).call(this, [...__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFiles).call(this), ...batchsFile]);
|
|
36
|
-
return __classPrivateFieldGet(this, _UploaderService_filesInfo, "f").asObservable();
|
|
37
|
-
}
|
|
38
|
-
submit(options) {
|
|
39
|
-
return this.customAutomation({
|
|
40
|
-
operation: options.operation,
|
|
41
|
-
context: options.context,
|
|
42
|
-
headers: options.headers,
|
|
43
|
-
input: options.input,
|
|
44
|
-
params: options.params
|
|
45
|
-
}).pipe(UploaderHelper.catchError(), UploaderHelper.retryWhen());
|
|
46
|
-
}
|
|
47
|
-
cancel(batchId) {
|
|
48
|
-
return __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_deleteBatch).call(this, batchId);
|
|
49
|
-
}
|
|
50
|
-
reset() {
|
|
51
|
-
__classPrivateFieldSet(this, _UploaderService_batchFiles, new BehaviorSubject([]), "f");
|
|
52
|
-
__classPrivateFieldGet(this, _UploaderService_filesInfo, "f").next({ data: [], type: FileEventType.Reset });
|
|
53
|
-
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_startExecution).call(this);
|
|
54
|
-
}
|
|
55
|
-
stop(fileId) {
|
|
56
|
-
const files = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFiles).call(this);
|
|
57
|
-
const file = files.find((f) => f.id == fileId);
|
|
58
|
-
if (file.status == FileStatus.InProgress) {
|
|
59
|
-
__classPrivateFieldGet(this, _UploaderService_cancelRequests, "f").next();
|
|
60
|
-
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_startExecution).call(this);
|
|
61
|
-
}
|
|
62
|
-
file.chunks.filter((c) => c.status != FileStatus.Completed).forEach((c) => (c.status = FileStatus.Canceled));
|
|
63
|
-
file.status = FileStatus.Canceled;
|
|
64
|
-
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_updateFiles).call(this, [...files]);
|
|
65
|
-
}
|
|
66
|
-
remove(fileId) {
|
|
67
|
-
return __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_deleteFile).call(this, fileId);
|
|
68
|
-
}
|
|
69
|
-
resume(fileId) {
|
|
70
|
-
const files = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFiles).call(this);
|
|
71
|
-
const file = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFile).call(this, fileId);
|
|
72
|
-
if (file.status == FileStatus.Pending)
|
|
73
|
-
return;
|
|
74
|
-
file.status = FileStatus.Pending;
|
|
75
|
-
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_updateFiles).call(this, [...files]);
|
|
76
|
-
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFileInfo).call(this, fileId)
|
|
77
|
-
.pipe(first())
|
|
78
|
-
.subscribe((uploaded) => {
|
|
79
|
-
file.chunks
|
|
80
|
-
.filter((c) => !uploaded.uploadedChunkIds.includes(c.index))
|
|
81
|
-
.forEach((c) => (c.status = FileStatus.Pending));
|
|
82
|
-
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_updateFiles).call(this, [...files]);
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
_UploaderService_cancelRequests = new WeakMap(), _UploaderService_filesInfo = new WeakMap(), _UploaderService_batchFiles = new WeakMap(), _UploaderService_instances = new WeakSet(), _UploaderService_startExecution = function _UploaderService_startExecution() {
|
|
87
|
-
__classPrivateFieldGet(this, _UploaderService_batchFiles, "f")
|
|
88
|
-
.pipe(distinctUntilChanged(), debounceTime(100), switchMap((batchFiles) => {
|
|
89
|
-
const filesWithBatchId = batchFiles.filter((file) => file.batchId);
|
|
90
|
-
const filesWithoutBatchId = batchFiles.filter((file) => !file.batchId);
|
|
91
|
-
const chunkRequests = _flatMap(filesWithBatchId, (file) => file.chunks).filter((chunk) => chunk.status === FileStatus.Pending);
|
|
92
|
-
const fileRequests = filesWithoutBatchId.filter((file) => file.status === FileStatus.Pending);
|
|
93
|
-
return from([...chunkRequests, ...fileRequests]);
|
|
94
|
-
}), mergeMap((entity) => {
|
|
95
|
-
const file = entity;
|
|
96
|
-
if (file === null || file === void 0 ? void 0 : file.batchId) {
|
|
97
|
-
return __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_uploadChunk).call(this, entity);
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
return __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_generateBatch).call(this, file === null || file === void 0 ? void 0 : file.id);
|
|
101
|
-
}
|
|
102
|
-
}, UPLOADER_CONFIG.MAX_CONCURRENT_REQUESTS), takeUntil(__classPrivateFieldGet(this, _UploaderService_cancelRequests, "f")), finalize(() => console.log('All requests processed')))
|
|
103
|
-
.subscribe({
|
|
104
|
-
complete: () => {
|
|
105
|
-
console.log('Processing of requests completed');
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
}, _UploaderService_generateBatch = function _UploaderService_generateBatch(fileId) {
|
|
109
|
-
const files = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFiles).call(this);
|
|
110
|
-
const file = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFile).call(this, fileId);
|
|
111
|
-
if (file.status === FileStatus.Pending) {
|
|
112
|
-
file.status = FileStatus.InProgress;
|
|
113
|
-
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_updateFiles).call(this, [...files]);
|
|
114
|
-
return __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_createBatch).call(this).pipe(UploaderHelper.catchError(), tap((batchId) => {
|
|
115
|
-
file.batchId = batchId;
|
|
116
|
-
file.chunks.forEach((c) => (c.batchId = batchId));
|
|
117
|
-
}), tap(() => __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_updateFiles).call(this, [...files])), catchError((error) => {
|
|
118
|
-
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_onUploadError).call(this, fileId);
|
|
119
|
-
return EMPTY;
|
|
120
|
-
}));
|
|
121
|
-
}
|
|
122
|
-
return EMPTY;
|
|
123
|
-
}, _UploaderService_uploadChunk = function _UploaderService_uploadChunk(chunk) {
|
|
124
|
-
if (chunk.status === FileStatus.Pending) {
|
|
125
|
-
chunk.status = FileStatus.InProgress;
|
|
126
|
-
const files = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFiles).call(this);
|
|
127
|
-
const file = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFile).call(this, chunk.fileId);
|
|
128
|
-
if (file.status != FileStatus.InProgress) {
|
|
129
|
-
file.status = FileStatus.InProgress;
|
|
130
|
-
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_updateFiles).call(this, [...files]);
|
|
131
|
-
}
|
|
132
|
-
return __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getProvider).call(this, file)
|
|
133
|
-
.upload(file, chunk)
|
|
134
|
-
.pipe(UploaderHelper.catchError(), tap(() => __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_onUploadDone).call(this, chunk)), catchError((error) => {
|
|
135
|
-
if (error.status === 308 /* PermanentRedirect */) {
|
|
136
|
-
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_onUploadDone).call(this, chunk);
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_onUploadError).call(this, chunk.fileId);
|
|
140
|
-
}
|
|
141
|
-
return EMPTY;
|
|
142
|
-
}));
|
|
143
|
-
}
|
|
144
|
-
return EMPTY;
|
|
145
|
-
}, _UploaderService_onUploadDone = function _UploaderService_onUploadDone(chunk) {
|
|
146
|
-
const files = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFiles).call(this);
|
|
147
|
-
const file = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFile).call(this, chunk.fileId);
|
|
148
|
-
file.chunks.find((c) => c.index == chunk.index).status = FileStatus.Completed;
|
|
149
|
-
const totalChunks = file.chunks.length;
|
|
150
|
-
const completedChunks = file.chunks.filter((c) => c.status === FileStatus.Completed).length;
|
|
151
|
-
if (completedChunks === totalChunks) {
|
|
152
|
-
file.status = FileStatus.Completed;
|
|
153
|
-
file.progress = 100;
|
|
154
|
-
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_complete).call(this, file);
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
const progress = (completedChunks / totalChunks) * 100;
|
|
158
|
-
if (file.progress != progress) {
|
|
159
|
-
file.progress = progress;
|
|
160
|
-
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_updateFiles).call(this, [...files]);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}, _UploaderService_onUploadError = function _UploaderService_onUploadError(fileId) {
|
|
164
|
-
const files = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFiles).call(this);
|
|
165
|
-
const file = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFile).call(this, fileId);
|
|
166
|
-
file.chunks.forEach((c) => (c.status = FileStatus.Error));
|
|
167
|
-
if (file.status != FileStatus.Error) {
|
|
168
|
-
file.status = FileStatus.Error;
|
|
169
|
-
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_updateFiles).call(this, [...files]);
|
|
170
|
-
}
|
|
171
|
-
}, _UploaderService_complete = function _UploaderService_complete(batchFile) {
|
|
172
|
-
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getProvider).call(this, batchFile)
|
|
173
|
-
.complete(batchFile)
|
|
174
|
-
.pipe(first())
|
|
175
|
-
.subscribe(() => {
|
|
176
|
-
const files = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFiles).call(this);
|
|
177
|
-
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_updateFiles).call(this, [...files]);
|
|
178
|
-
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_prepareEvent).call(this, files, batchFile.id);
|
|
179
|
-
});
|
|
180
|
-
}, _UploaderService_getProvider = function _UploaderService_getProvider(batchFile) {
|
|
181
|
-
switch (batchFile.provider) {
|
|
182
|
-
case UploadProvider.Nuxeo:
|
|
183
|
-
return this.nuxeoProvider;
|
|
184
|
-
case UploadProvider.S3:
|
|
185
|
-
return this.s3Provider;
|
|
186
|
-
default:
|
|
187
|
-
throw new Error('Invalid upload provider. Please contact with NDF developers.');
|
|
188
|
-
}
|
|
189
|
-
}, _UploaderService_updateFiles = function _UploaderService_updateFiles(files) {
|
|
190
|
-
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_prepareEvent).call(this, files);
|
|
191
|
-
__classPrivateFieldGet(this, _UploaderService_batchFiles, "f").next([...files]);
|
|
192
|
-
}, _UploaderService_prepareEvent = function _UploaderService_prepareEvent(files, fileId = null) {
|
|
193
|
-
const filteredFiles = fileId ? files.filter((f) => f.id === fileId) : files;
|
|
194
|
-
__classPrivateFieldGet(this, _UploaderService_filesInfo, "f").next({
|
|
195
|
-
type: fileId ? FileEventType.Complete : FileEventType.Changes,
|
|
196
|
-
data: filteredFiles.map(({ batchId, id, index, progress, status, provider, data, metadata }) => ({
|
|
197
|
-
batchId,
|
|
198
|
-
id,
|
|
199
|
-
index,
|
|
200
|
-
progress,
|
|
201
|
-
status,
|
|
202
|
-
provider,
|
|
203
|
-
data,
|
|
204
|
-
metadata,
|
|
205
|
-
icon: this.iconService.getFileIcon(data)
|
|
206
|
-
}))
|
|
207
|
-
});
|
|
208
|
-
}, _UploaderService_getFile = function _UploaderService_getFile(fileId) {
|
|
209
|
-
const files = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFiles).call(this);
|
|
210
|
-
return files.find((f) => f.id == fileId);
|
|
211
|
-
}, _UploaderService_getFiles = function _UploaderService_getFiles() {
|
|
212
|
-
return [...__classPrivateFieldGet(this, _UploaderService_batchFiles, "f").getValue()];
|
|
213
|
-
}, _UploaderService_createBatch = function _UploaderService_createBatch() {
|
|
214
|
-
return this.post(`${nuxeoBaseUrl()}upload`).pipe(UploaderHelper.catchError(), UploaderHelper.retryWhen(), map((batch) => {
|
|
215
|
-
return batch.batchId;
|
|
216
|
-
}));
|
|
217
|
-
}, _UploaderService_deleteBatch = function _UploaderService_deleteBatch(batchId) {
|
|
218
|
-
return this.delete(`${nuxeoBaseUrl()}upload/${batchId}`).pipe(UploaderHelper.catchError(), UploaderHelper.retryWhen(), finalize(() => {
|
|
219
|
-
this.reset();
|
|
220
|
-
}));
|
|
221
|
-
}, _UploaderService_deleteFile = function _UploaderService_deleteFile(fileId) {
|
|
222
|
-
const files = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFiles).call(this);
|
|
223
|
-
const file = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFile).call(this, fileId);
|
|
224
|
-
file.status = FileStatus.Pending;
|
|
225
|
-
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_updateFiles).call(this, [...files]);
|
|
226
|
-
return this.delete(`${nuxeoBaseUrl()}upload/${file.batchId}/${file.index}`).pipe(UploaderHelper.catchError(), UploaderHelper.retryWhen(), finalize(() => {
|
|
227
|
-
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_updateFiles).call(this, [...files.filter((f) => f.id != fileId)]);
|
|
228
|
-
}));
|
|
229
|
-
}, _UploaderService_getFileInfo = function _UploaderService_getFileInfo(fileId) {
|
|
230
|
-
const file = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFile).call(this, fileId);
|
|
231
|
-
return this.get(`${nuxeoBaseUrl()}upload/${file.batchId}/${file.index}`).pipe(UploaderHelper.catchError(), UploaderHelper.retryWhen());
|
|
232
|
-
};
|
|
233
|
-
UploaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: UploaderService, deps: [{ token: i0.Injector }, { token: i1.NuxeoProvider }, { token: i1.S3Provider }, { token: i2.IconService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
234
|
-
UploaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: UploaderService, providedIn: 'root' });
|
|
235
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: UploaderService, decorators: [{
|
|
236
|
-
type: Injectable,
|
|
237
|
-
args: [{
|
|
238
|
-
providedIn: 'root'
|
|
239
|
-
}]
|
|
240
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.NuxeoProvider }, { type: i1.S3Provider }, { type: i2.IconService }]; } });
|
|
241
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvbmRmLXVwbG9hZGVyL3VwbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFLTixhQUFhLEVBRWIsVUFBVSxFQUVWLGNBQWMsRUFDZCxNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzNDLE9BQU8sRUFDTixVQUFVLEVBQ1YsUUFBUSxFQUNSLFFBQVEsRUFDUixTQUFTLEVBQ1QsR0FBRyxFQUNILEdBQUcsRUFDSCxLQUFLLEVBQ0wsb0JBQW9CLEVBQ3BCLFlBQVksRUFDWixTQUFTLEVBQ1QsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFM0MsT0FBTyxRQUFRLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLFdBQVcsRUFBbUMsTUFBTSxjQUFjLENBQUM7QUFFNUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRTVDLE1BQU0sVUFBVSxZQUFZO0lBQzNCLE9BQU8sR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssVUFBVSxDQUFDO0FBQ2xELENBQUM7QUFLRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxXQUFXO0lBTS9DLFlBQ0MsUUFBa0IsRUFDRCxhQUE0QixFQUM1QixVQUFzQixFQUN0QixXQUF3QjtRQUV6QyxLQUFLLENBQUMsUUFB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VSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDN0YsY0FBYyxDQUFDLFVBQVUsRUFBRSxFQUMzQixjQUFjLENBQUMsU0FBUyxFQUFFLENBQzFCLENBQUM7QUFDSCxDQUFDOzZHQTFSVyxlQUFlO2lIQUFmLGVBQWUsY0FGZixNQUFNOzRGQUVOLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTnV4ZW9Qcm92aWRlciwgUzNQcm92aWRlciB9IGZyb20gJy4vcHJvdmlkZXJzJztcclxuaW1wb3J0IHtcclxuXHRCYXRjaCxcclxuXHRCYXRjaEZpbGUsXHJcblx0Q2h1bmssXHJcblx0RmlsZUV2ZW50LFxyXG5cdEZpbGVFdmVudFR5cGUsXHJcblx0RmlsZU9wdGlvbixcclxuXHRGaWxlU3RhdHVzLFxyXG5cdFVwbG9hZGVSZXNwb25zZSxcclxuXHRVcGxvYWRQcm92aWRlclxyXG59IGZyb20gJy4vbW9kZWxzJztcclxuaW1wb3J0IHsgVVBMT0FERVJfQ09ORklHIH0gZnJvbSAnLi9jb25maWcnO1xyXG5pbXBvcnQge1xyXG5cdGNhdGNoRXJyb3IsXHJcblx0ZmluYWxpemUsXHJcblx0bWVyZ2VNYXAsXHJcblx0c3dpdGNoTWFwLFxyXG5cdHRhcCxcclxuXHRtYXAsXHJcblx0Zmlyc3QsXHJcblx0ZGlzdGluY3RVbnRpbENoYW5nZWQsXHJcblx0ZGVib3VuY2VUaW1lLFxyXG5cdHRha2VVbnRpbFxyXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBFTVBUWSwgZnJvbSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBVcGxvYWRlckhlbHBlciB9IGZyb20gJy4vaGVscGVycyc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwU3RhdHVzQ29kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IF9mbGF0TWFwIGZyb20gJ2xvZGFzaC9mbGF0TWFwJztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UsIE51eGVvUmVzcG9uc2UsIE9wZXJhdGlvbk9wdGlvbnMgfSBmcm9tICcuLi8uLi9zaGFyZWQnO1xyXG5pbXBvcnQgeyBJY29uU2VydmljZSB9IGZyb20gJy4uL2Rpc3BsYXktc3VpdGFibGUtaWNvbi9kaXNwbGF5LXN1aXRhYmxlLWljb24vaWNvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW52TWFuYWdlciB9IGZyb20gJy4uLy4uL2NvcmUvZW52JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBudXhlb0Jhc2VVcmwoKSB7XHJcblx0cmV0dXJuIGAke0Vudk1hbmFnZXIuZW52aXJvbm1lbnQubnV4ZW99L2FwaS92MS9gO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVcGxvYWRlclNlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZSB7XHJcblx0cmVhZG9ubHkgI2NhbmNlbFJlcXVlc3RzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHRyZWFkb25seSAjZmlsZXNJbmZvID0gbmV3IFN1YmplY3Q8RmlsZUV2ZW50PigpO1xyXG5cdCNiYXRjaEZpbGVzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxCYXRjaEZpbGU+PihbXSk7XHJcblx0cmVhZG9ubHkgZXZlbnRzJCA9IHRoaXMuI2ZpbGVzSW5mby5hc09ic2VydmFibGUoKTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRpbmplY3RvcjogSW5qZWN0b3IsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IG51eGVvUHJvdmlkZXI6IE51eGVvUHJvdmlkZXIsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IHMzUHJvdmlkZXI6IFMzUHJvdmlkZXIsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IGljb25TZXJ2aWNlOiBJY29uU2VydmljZVxyXG5cdCkge1xyXG5cdFx0c3VwZXIoaW5qZWN0b3IpO1xyXG5cdFx0VXBsb2FkZXJIZWxwZXIucHJlcGFyZUNvbmZpZygpO1xyXG5cdFx0dGhpcy4jc3RhcnRFeGVjdXRpb24oKTtcclxuXHR9XHJcblxyXG5cdHVwbG9hZChmaWxlc09yT3B0aW9uczogRmlsZVtdIHwgRmlsZU9wdGlvbik6IE9ic2VydmFibGU8RmlsZUV2ZW50PiB7XHJcblx0XHRjb25zdCBvcHRpb25zOiBGaWxlT3B0aW9uID0gQXJyYXkuaXNBcnJheShmaWxlc09yT3B0aW9ucykgPyB7IGZpbGVzOiBmaWxlc09yT3B0aW9ucyB9IDogeyAuLi5maWxlc09yT3B0aW9ucyB9O1xyXG5cclxuXHRcdGNvbnN0IGJhdGNoc0ZpbGUgPSBVcGxvYWRlckhlbHBlci5wcmVwYXJlRmlsZXMob3B0aW9ucywgMCk7XHJcblx0XHR0aGlzLiN1cGRhdGVGaWxlcyhbLi4udGhpcy4jZ2V0RmlsZXMoKSwgLi4uYmF0Y2hzRmlsZV0pO1xyXG5cdFx0cmV0dXJuIHRoaXMuI2ZpbGVzSW5mby5hc09ic2VydmFibGUoKTtcclxuXHR9XHJcblx0c3VibWl0KG9wdGlvbnM6IE9wZXJhdGlvbk9wdGlvbnMpOiBPYnNlcnZhYmxlPE51eGVvUmVzcG9uc2U+IHtcclxuXHRcdHJldHVybiB0aGlzLmN1c3RvbUF1dG9tYXRpb248TnV4ZW9SZXNwb25zZT4oe1xyXG5cdFx0XHRvcGVyYXRpb246IG9wdGlvbnMub3BlcmF0aW9uLFxyXG5cdFx0XHRjb250ZXh0OiBvcHRpb25zLmNvbnRleHQsXHJcblx0XHRcdGhlYWRlcnM6IG9wdGlvbnMuaGVhZGVycyxcclxuXHRcdFx0aW5wdXQ6IG9wdGlvbnMuaW5wdXQsXHJcblx0XHRcdHBhcmFtczogb3B0aW9ucy5wYXJhbXNcclxuXHRcdH0pLnBpcGUoVXBsb2FkZXJIZWxwZXIuY2F0Y2hFcnJvcigpLCBVcGxvYWRlckhlbHBlci5yZXRyeVdoZW4oKSk7XHJcblx0fVxyXG5cdGNhbmNlbChiYXRjaElkOiBzdHJpbmcpIHtcclxuXHRcdHJldHVybiB0aGlzLiNkZWxldGVCYXRjaChiYXRjaElkKTtcclxuXHR9XHJcblxyXG5cdHJlc2V0KCkge1xyXG5cdFx0dGhpcy4jYmF0Y2hGaWxlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8QmF0Y2hGaWxlPj4oW10pO1xyXG5cdFx0dGhpcy4jZmlsZXNJbmZvLm5leHQoeyBkYXRhOiBbXSwgdHlwZTogRmlsZUV2ZW50VHlwZS5SZXNldCB9KTtcclxuXHRcdHRoaXMuI3N0YXJ0RXhlY3V0aW9uKCk7XHJcblx0fVxyXG5cclxuXHRzdG9wKGZpbGVJZDogc3RyaW5nKSB7XHJcblx0XHRjb25zdCBmaWxlcyA9IHRoaXMuI2dldEZpbGVzKCk7XHJcblx0XHRjb25zdCBmaWxlID0gZmlsZXMuZmluZCgoZikgPT4gZi5pZCA9PSBmaWxlSWQpO1xyXG5cclxuXHRcdGlmIChmaWxlLnN0YXR1cyA9PSBGaWxlU3RhdHVzLkluUHJvZ3Jlc3MpIHtcclxuXHRcdFx0dGhpcy4jY2FuY2VsUmVxdWVzdHMubmV4dCgpO1xyXG5cdFx0XHR0aGlzLiNzdGFydEV4ZWN1dGlvbigpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGZpbGUuY2h1bmtzLmZpbHRlcigoYykgPT4gYy5zdGF0dXMgIT0gRmlsZVN0YXR1cy5Db21wbGV0ZWQpLmZvckVhY2goKGMpID0+IChjLnN0YXR1cyA9IEZpbGVTdGF0dXMuQ2FuY2VsZWQpKTtcclxuXHRcdGZpbGUuc3RhdHVzID0gRmlsZVN0YXR1cy5DYW5jZWxlZDtcclxuXHJcblx0XHR0aGlzLiN1cGRhdGVGaWxlcyhbLi4uZmlsZXNdKTtcclxuXHR9XHJcblx0cmVtb3ZlKGZpbGVJZDogc3RyaW5nKSB7XHJcblx0XHRyZXR1cm4gdGhpcy4jZGVsZXRlRmlsZShmaWxlSWQpO1xyXG5cdH1cclxuXHRyZXN1bWUoZmlsZUlkOiBzdHJpbmcpIHtcclxuXHRcdGNvbnN0IGZpbGVzID0gdGhpcy4jZ2V0RmlsZXMoKTtcclxuXHRcdGNvbnN0IGZpbGUgPSB0aGlzLiNnZXRGaWxlKGZpbGVJZCk7XHJcblx0XHRpZiAoZmlsZS5zdGF0dXMgPT0gRmlsZVN0YXR1cy5QZW5kaW5nKSByZXR1cm47XHJcblxyXG5cdFx0ZmlsZS5zdGF0dXMgPSBGaWxlU3RhdHVzLlBlbmRpbmc7XHJcblx0XHR0aGlzLiN1cGRhdGVGaWxlcyhbLi4uZmlsZXNdKTtcclxuXHJcblx0XHR0aGlzLiNnZXRGaWxlSW5mbyhmaWxlSWQpXHJcblx0XHRcdC5waXBlKGZpcnN0KCkpXHJcblx0XHRcdC5zdWJzY3JpYmUoKHVwbG9hZGVkKSA9PiB7XHJcblx0XHRcdFx0ZmlsZS5jaHVua3NcclxuXHRcdFx0XHRcdC5maWx0ZXIoKGMpID0+ICF1cGxvYWRlZC51cGxvYWRlZENodW5rSWRzLmluY2x1ZGVzKGMuaW5kZXgpKVxyXG5cdFx0XHRcdFx0LmZvckVhY2goKGMpID0+IChjLnN0YXR1cyA9IEZpbGVTdGF0dXMuUGVuZGluZykpO1xyXG5cdFx0XHRcdHRoaXMuI3VwZGF0ZUZpbGVzKFsuLi5maWxlc10pO1xyXG5cdFx0XHR9KTtcclxuXHR9XHJcblxyXG5cdCNzdGFydEV4ZWN1dGlvbigpIHtcclxuXHRcdHRoaXMuI2JhdGNoRmlsZXNcclxuXHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0ZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuXHRcdFx0XHRkZWJvdW5jZVRpbWUoMTAwKSxcclxuXHRcdFx0XHRzd2l0Y2hNYXAoKGJhdGNoRmlsZXMpID0+IHtcclxuXHRcdFx0XHRcdGNvbnN0IGZpbGVzV2l0aEJhdGNoSWQgPSBiYXRjaEZpbGVzLmZpbHRlcigoZmlsZSkgPT4gZmlsZS5iYXRjaElkKTtcclxuXHRcdFx0XHRcdGNvbnN0IGZpbGVzV2l0aG91dEJhdGNoSWQgPSBiYXRjaEZpbGVzLmZpbHRlcigoZmlsZSkgPT4gIWZpbGUuYmF0Y2hJZCk7XHJcblxyXG5cdFx0XHRcdFx0Y29uc3QgY2h1bmtSZXF1ZXN0cyA9IF9mbGF0TWFwKGZpbGVzV2l0aEJhdGNoSWQsIChmaWxlKSA9PiBmaWxlLmNodW5rcykuZmlsdGVyKFxyXG5cdFx0XHRcdFx0XHQoY2h1bmspID0+IGNodW5rLnN0YXR1cyA9PT0gRmlsZVN0YXR1cy5QZW5kaW5nXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0Y29uc3QgZmlsZVJlcXVlc3RzID0gZmlsZXNXaXRob3V0QmF0Y2hJZC5maWx0ZXIoKGZpbGUpID0+IGZpbGUuc3RhdHVzID09PSBGaWxlU3RhdHVzLlBlbmRpbmcpO1xyXG5cclxuXHRcdFx0XHRcdHJldHVybiBmcm9tKFsuLi5jaHVua1JlcXVlc3RzLCAuLi5maWxlUmVxdWVzdHNdKTtcclxuXHRcdFx0XHR9KSxcclxuXHRcdFx0XHRtZXJnZU1hcCgoZW50aXR5KSA9PiB7XHJcblx0XHRcdFx0XHRjb25zdCBmaWxlID0gZW50aXR5IGFzIEJhdGNoRmlsZTtcclxuXHRcdFx0XHRcdGlmIChmaWxlPy5iYXRjaElkKSB7XHJcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLiN1cGxvYWRDaHVuayhlbnRpdHkgYXMgQ2h1bmspO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuI2dlbmVyYXRlQmF0Y2goZmlsZT8uaWQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0sIFVQTE9BREVSX0NPTkZJRy5NQVhfQ09OQ1VSUkVOVF9SRVFVRVNUUyksXHJcblx0XHRcdFx0dGFrZVVudGlsKHRoaXMuI2NhbmNlbFJlcXVlc3RzKSxcclxuXHRcdFx0XHRmaW5hbGl6ZSgoKSA9PiBjb25zb2xlLmxvZygnQWxsIHJlcXVlc3RzIHByb2Nlc3NlZCcpKVxyXG5cdFx0XHQpXHJcblx0XHRcdC5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdGNvbXBsZXRlOiAoKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnUHJvY2Vzc2luZyBvZiByZXF1ZXN0cyBjb21wbGV0ZWQnKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdH1cclxuXHJcblx0I2dlbmVyYXRlQmF0Y2goZmlsZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFVwbG9hZGVSZXNwb25zZT4ge1xyXG5cdFx0Y29uc3QgZmlsZXMgPSB0aGlzLiNnZXRGaWxlcygpO1xyXG5cdFx0Y29uc3QgZmlsZSA9IHRoaXMuI2dldEZpbGUoZmlsZUlkKTtcclxuXHJcblx0XHRpZiAoZmlsZS5zdGF0dXMgPT09IEZpbGVTdGF0dXMuUGVuZGluZykge1xyXG5cdFx0XHRmaWxlLnN0YXR1cyA9IEZpbGVTdGF0dXMuSW5Qcm9ncmVzcztcclxuXHRcdFx0dGhpcy4jdXBkYXRlRmlsZXMoWy4uLmZpbGVzXSk7XHJcblxyXG5cdFx0XHRyZXR1cm4gdGhpcy4jY3JlYXRlQmF0Y2goKS5waXBlKFxyXG5cdFx0XHRcdFVwbG9hZGVySGVscGVyLmNhdGNoRXJyb3IoKSxcclxuXHRcdFx0XHR0YXAoKGJhdGNoSWQpID0+IHtcclxuXHRcdFx0XHRcdGZpbGUuYmF0Y2hJZCA9IGJhdGNoSWQ7XHJcblx0XHRcdFx0XHRmaWxlLmNodW5rcy5mb3JFYWNoKChjKSA9PiAoYy5iYXRjaElkID0gYmF0Y2hJZCkpO1xyXG5cdFx0XHRcdH0pLFxyXG5cdFx0XHRcdHRhcCgoKSA9PiB0aGlzLiN1cGRhdGVGaWxlcyhbLi4uZmlsZXNdKSksXHJcblx0XHRcdFx0Y2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLiNvblVwbG9hZEVycm9yKGZpbGVJZCk7XHJcblx0XHRcdFx0XHRyZXR1cm4gRU1QVFk7XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBFTVBUWTtcclxuXHR9XHJcblxyXG5cdCN1cGxvYWRDaHVuayhjaHVuazogQ2h1bmspOiBPYnNlcnZhYmxlPFVwbG9hZGVSZXNwb25zZT4ge1xyXG5cdFx0aWYgKGNodW5rLnN0YXR1cyA9PT0gRmlsZVN0YXR1cy5QZW5kaW5nKSB7XHJcblx0XHRcdGNodW5rLnN0YXR1cyA9IEZpbGVTdGF0dXMuSW5Qcm9ncmVzcztcclxuXHJcblx0XHRcdGNvbnN0IGZpbGVzID0gdGhpcy4jZ2V0RmlsZXMoKTtcclxuXHRcdFx0Y29uc3QgZmlsZSA9IHRoaXMuI2dldEZpbGUoY2h1bmsuZmlsZUlkKTtcclxuXHRcdFx0aWYgKGZpbGUuc3RhdHVzICE9IEZpbGVTdGF0dXMuSW5Qcm9ncmVzcykge1xyXG5cdFx0XHRcdGZpbGUuc3RhdHVzID0gRmlsZVN0YXR1cy5JblByb2dyZXNzO1xyXG5cdFx0XHRcdHRoaXMuI3VwZGF0ZUZpbGVzKFsuLi5maWxlc10pO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRyZXR1cm4gdGhpcy4jZ2V0UHJvdmlkZXIoZmlsZSlcclxuXHRcdFx0XHQudXBsb2FkKGZpbGUsIGNodW5rKVxyXG5cdFx0XHRcdC5waXBlKFxyXG5cdFx0XHRcdFx0VXBsb2FkZXJIZWxwZXIuY2F0Y2hFcnJvcigpLFxyXG5cdFx0XHRcdFx0dGFwKCgpID0+IHRoaXMuI29uVXBsb2FkRG9uZShjaHVuaykpLFxyXG5cdFx0XHRcdFx0Y2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcblx0XHRcdFx0XHRcdGlmIChlcnJvci5zdGF0dXMgPT09IEh0dHBTdGF0dXNDb2RlLlBlcm1hbmVudFJlZGlyZWN0KSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy4jb25VcGxvYWREb25lKGNodW5rKTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLiNvblVwbG9hZEVycm9yKGNodW5rLmZpbGVJZCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0cmV0dXJuIEVNUFRZO1xyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHQpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIEVNUFRZO1xyXG5cdH1cclxuXHQjb25VcGxvYWREb25lKGNodW5rOiBDaHVuaykge1xyXG5cdFx0Y29uc3QgZmlsZXMgPSB0aGlzLiNnZXRGaWxlcygpO1xyXG5cdFx0Y29uc3QgZmlsZSA9IHRoaXMuI2dldEZpbGUoY2h1bmsuZmlsZUlkKTtcclxuXHRcdGZpbGUuY2h1bmtzLmZpbmQoKGMpID0+IGMuaW5kZXggPT0gY2h1bmsuaW5kZXgpLnN0YXR1cyA9IEZpbGVTdGF0dXMuQ29tcGxldGVkO1xyXG5cclxuXHRcdGNvbnN0IHRvdGFsQ2h1bmtzID0gZmlsZS5jaHVua3MubGVuZ3RoO1xyXG5cdFx0Y29uc3QgY29tcGxldGVkQ2h1bmtzID0gZmlsZS5jaHVua3MuZmlsdGVyKChjKSA9PiBjLnN0YXR1cyA9PT0gRmlsZVN0YXR1cy5Db21wbGV0ZWQpLmxlbmd0aDtcclxuXHJcblx0XHRpZiAoY29tcGxldGVkQ2h1bmtzID09PSB0b3RhbENodW5rcykge1xyXG5cdFx0XHRmaWxlLnN0YXR1cyA9IEZpbGVTdGF0dXMuQ29tcGxldGVkO1xyXG5cdFx0XHRmaWxlLnByb2dyZXNzID0gMTAwO1xyXG5cdFx0XHR0aGlzLiNjb21wbGV0ZShmaWxlKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNvbnN0IHByb2dyZXNzID0gKGNvbXBsZXRlZENodW5rcyAvIHRvdGFsQ2h1bmtzKSAqIDEwMDtcclxuXHRcdFx0aWYgKGZpbGUucHJvZ3Jlc3MgIT0gcHJvZ3Jlc3MpIHtcclxuXHRcdFx0XHRmaWxlLnByb2dyZXNzID0gcHJvZ3Jlc3M7XHJcblx0XHRcdFx0dGhpcy4jdXBkYXRlRmlsZXMoWy4uLmZpbGVzXSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblx0I29uVXBsb2FkRXJyb3IoZmlsZUlkOiBzdHJpbmcpIHtcclxuXHRcdGNvbnN0IGZpbGVzID0gdGhpcy4jZ2V0RmlsZXMoKTtcclxuXHRcdGNvbnN0IGZpbGUgPSB0aGlzLiNnZXRGaWxlKGZpbGVJZCk7XHJcblx0XHRmaWxlLmNodW5rcy5mb3JFYWNoKChjKSA9PiAoYy5zdGF0dXMgPSBGaWxlU3RhdHVzLkVycm9yKSk7XHJcblx0XHRpZiAoZmlsZS5zdGF0dXMgIT0gRmlsZVN0YXR1cy5FcnJvcikge1xyXG5cdFx0XHRmaWxlLnN0YXR1cyA9IEZpbGVTdGF0dXMuRXJyb3I7XHJcblx0XHRcdHRoaXMuI3VwZGF0ZUZpbGVzKFsuLi5maWxlc10pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQjY29tcGxldGUoYmF0Y2hGaWxlOiBCYXRjaEZpbGUpIHtcclxuXHRcdHRoaXMuI2dldFByb3ZpZGVyKGJhdGNoRmlsZSlcclxuXHRcdFx0LmNvbXBsZXRlKGJhdGNoRmlsZSlcclxuXHRcdFx0LnBpcGUoZmlyc3QoKSlcclxuXHRcdFx0LnN1YnNjcmliZSgoKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgZmlsZXMgPSB0aGlzLiNnZXRGaWxlcygpO1xyXG5cdFx0XHRcdHRoaXMuI3VwZGF0ZUZpbGVzKFsuLi5maWxlc10pO1xyXG5cdFx0XHRcdHRoaXMuI3ByZXBhcmVFdmVudChmaWxlcywgYmF0Y2hGaWxlLmlkKTtcclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cdCNnZXRQcm92aWRlcihiYXRjaEZpbGU6IEJhdGNoRmlsZSkge1xyXG5cdFx0c3dpdGNoIChiYXRjaEZpbGUucHJvdmlkZXIpIHtcclxuXHRcdFx0Y2FzZSBVcGxvYWRQcm92aWRlci5OdXhlbzpcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5udXhlb1Byb3ZpZGVyO1xyXG5cdFx0XHRjYXNlIFVwbG9hZFByb3ZpZGVyLlMzOlxyXG5cdFx0XHRcdHJldHVybiB0aGlzLnMzUHJvdmlkZXI7XHJcblx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHVwbG9hZCBwcm92aWRlci4gUGxlYXNlIGNvbnRhY3Qgd2l0aCBOREYgZGV2ZWxvcGVycy4nKTtcclxuXHRcdH1cclxuXHR9XHJcblx0I3VwZGF0ZUZpbGVzKGZpbGVzOiBCYXRjaEZpbGVbXSkge1xyXG5cdFx0dGhpcy4jcHJlcGFyZUV2ZW50KGZpbGVzKTtcclxuXHRcdHRoaXMuI2JhdGNoRmlsZXMubmV4dChbLi4uZmlsZXNdKTtcclxuXHR9XHJcblx0I3ByZXBhcmVFdmVudChmaWxlczogQmF0Y2hGaWxlW10sIGZpbGVJZDogc3RyaW5nID0gbnVsbCkge1xyXG5cdFx0Y29uc3QgZmlsdGVyZWRGaWxlcyA9IGZpbGVJZCA/IGZpbGVzLmZpbHRlcigoZikgPT4gZi5pZCA9PT0gZmlsZUlkKSA6IGZpbGVzO1xyXG5cdFx0dGhpcy4jZmlsZXNJbmZvLm5leHQoe1xyXG5cdFx0XHR0eXBlOiBmaWxlSWQgPyBGaWxlRXZlbnRUeXBlLkNvbXBsZXRlIDogRmlsZUV2ZW50VHlwZS5DaGFuZ2VzLFxyXG5cdFx0XHRkYXRhOiBmaWx0ZXJlZEZpbGVzLm1hcCgoeyBiYXRjaElkLCBpZCwgaW5kZXgsIHByb2dyZXNzLCBzdGF0dXMsIHByb3ZpZGVyLCBkYXRhLCBtZXRhZGF0YSB9KSA9PiAoe1xyXG5cdFx0XHRcdGJhdGNoSWQsXHJcblx0XHRcdFx0aWQsXHJcblx0XHRcdFx0aW5kZXgsXHJcblx0XHRcdFx0cHJvZ3Jlc3MsXHJcblx0XHRcdFx0c3RhdHVzLFxyXG5cdFx0XHRcdHByb3ZpZGVyLFxyXG5cdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0bWV0YWRhdGEsXHJcblx0XHRcdFx0aWNvbjogdGhpcy5pY29uU2VydmljZS5nZXRGaWxlSWNvbihkYXRhKVxyXG5cdFx0XHR9KSlcclxuXHRcdH0pO1xyXG5cdH1cclxuXHQjZ2V0RmlsZShmaWxlSWQ6IHN0cmluZykge1xyXG5cdFx0Y29uc3QgZmlsZXMgPSB0aGlzLiNnZXRGaWxlcygpO1xyXG5cdFx0cmV0dXJuIGZpbGVzLmZpbmQoKGYpID0+IGYuaWQgPT0gZmlsZUlkKTtcclxuXHR9XHJcblx0I2dldEZpbGVzKCkge1xyXG5cdFx0cmV0dXJuIFsuLi50aGlzLiNiYXRjaEZpbGVzLmdldFZhbHVlKCldO1xyXG5cdH1cclxuXHJcblx0Ly8gbW92ZSBpdCB0byBudXhlbyBvdmVycmlkZSBzZXJ2aWNlXHJcblx0I2NyZWF0ZUJhdGNoKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcblx0XHRyZXR1cm4gdGhpcy5wb3N0PEJhdGNoPihgJHtudXhlb0Jhc2VVcmwoKX11cGxvYWRgKS5waXBlKFxyXG5cdFx0XHRVcGxvYWRlckhlbHBlci5jYXRjaEVycm9yKCksXHJcblx0XHRcdFVwbG9hZGVySGVscGVyLnJldHJ5V2hlbigpLFxyXG5cdFx0XHRtYXAoKGJhdGNoOiBCYXRjaCkgPT4ge1xyXG5cdFx0XHRcdHJldHVybiBiYXRjaC5iYXRjaElkO1xyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHR9XHJcblx0I2RlbGV0ZUJhdGNoKGJhdGNoSWQ6IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIHRoaXMuZGVsZXRlKGAke251eGVvQmFzZVVybCgpfXVwbG9hZC8ke2JhdGNoSWR9YCkucGlwZShcclxuXHRcdFx0VXBsb2FkZXJIZWxwZXIuY2F0Y2hFcnJvcigpLFxyXG5cdFx0XHRVcGxvYWRlckhlbHBlci5yZXRyeVdoZW4oKSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMucmVzZXQoKTtcclxuXHRcdFx0fSlcclxuXHRcdCk7XHJcblx0fVxyXG5cdCNkZWxldGVGaWxlKGZpbGVJZDogc3RyaW5nKSB7XHJcblx0XHRjb25zdCBmaWxlcyA9IHRoaXMuI2dldEZpbGVzKCk7XHJcblx0XHRjb25zdCBmaWxlID0gdGhpcy4jZ2V0RmlsZShmaWxlSWQpO1xyXG5cclxuXHRcdGZpbGUuc3RhdHVzID0gRmlsZVN0YXR1cy5QZW5kaW5nO1xyXG5cdFx0dGhpcy4jdXBkYXRlRmlsZXMoWy4uLmZpbGVzXSk7XHJcblxyXG5cdFx0cmV0dXJuIHRoaXMuZGVsZXRlKGAke251eGVvQmFzZVVybCgpfXVwbG9hZC8ke2ZpbGUuYmF0Y2hJZH0vJHtmaWxlLmluZGV4fWApLnBpcGUoXHJcblx0XHRcdFVwbG9hZGVySGVscGVyLmNhdGNoRXJyb3IoKSxcclxuXHRcdFx0VXBsb2FkZXJIZWxwZXIucmV0cnlXaGVuKCksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuXHRcdFx0XHR0aGlzLiN1cGRhdGVGaWxlcyhbLi4uZmlsZXMuZmlsdGVyKChmKSA9PiBmLmlkICE9IGZpbGVJZCldKTtcclxuXHRcdFx0fSlcclxuXHRcdCk7XHJcblx0fVxyXG5cdCNnZXRGaWxlSW5mbyhmaWxlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8VXBsb2FkZVJlc3BvbnNlPiB7XHJcblx0XHRjb25zdCBmaWxlID0gdGhpcy4jZ2V0RmlsZShmaWxlSWQpO1xyXG5cdFx0cmV0dXJuIHRoaXMuZ2V0PFVwbG9hZGVSZXNwb25zZT4oYCR7bnV4ZW9CYXNlVXJsKCl9dXBsb2FkLyR7ZmlsZS5iYXRjaElkfS8ke2ZpbGUuaW5kZXh9YCkucGlwZShcclxuXHRcdFx0VXBsb2FkZXJIZWxwZXIuY2F0Y2hFcnJvcigpLFxyXG5cdFx0XHRVcGxvYWRlckhlbHBlci5yZXRyeVdoZW4oKVxyXG5cdFx0KTtcclxuXHR9XHJcbn1cclxuIl19
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import * as i0 from "@angular/core";
|
|
2
|
-
import * as i1 from "./components/bottom-sheet/ndf-uploader-bottom-sheet.component";
|
|
3
|
-
import * as i2 from "@angular/common";
|
|
4
|
-
import * as i3 from "@ngx-translate/core";
|
|
5
|
-
import * as i4 from "@angular/material/dialog";
|
|
6
|
-
import * as i5 from "@angular/material/icon";
|
|
7
|
-
import * as i6 from "@angular/material/button";
|
|
8
|
-
import * as i7 from "@angular/material/bottom-sheet";
|
|
9
|
-
import * as i8 from "@angular/material/expansion";
|
|
10
|
-
import * as i9 from "@angular/material/tooltip";
|
|
11
|
-
import * as i10 from "@angular/material/progress-spinner";
|
|
12
|
-
export declare class UploaderModule {
|
|
13
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<UploaderModule, never>;
|
|
14
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<UploaderModule, [typeof i1.NdfUploaderBottomSheetComponent], [typeof i2.CommonModule, typeof i3.TranslateModule, typeof i4.MatDialogModule, typeof i5.MatIconModule, typeof i6.MatButtonModule, typeof i7.MatBottomSheetModule, typeof i8.MatExpansionModule, typeof i9.MatTooltipModule, typeof i10.MatProgressSpinnerModule], never>;
|
|
15
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<UploaderModule>;
|
|
16
|
-
}
|