nsc-react-component 2.13.2 → 2.14.0
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/lib/base/upload/Upload.d.ts +7 -3
- package/lib/base/upload/Upload.js +87 -49
- package/lib/base/upload/Upload.js.map +1 -1
- package/lib/base/upload/index.d.ts +2 -45
- package/lib/base/upload/index.js +379 -362
- package/lib/base/upload/index.js.map +1 -1
- package/package.json +1 -1
- package/lib/base/upload/index copy.d.ts +0 -18
- package/lib/base/upload/index copy.js +0 -351
- package/lib/base/upload/index copy.js.map +0 -1
|
@@ -14,24 +14,28 @@ interface IUploadProps extends UploadProps {
|
|
|
14
14
|
fileCard?: boolean;
|
|
15
15
|
onListChange?: any;
|
|
16
16
|
checkSameFile?: boolean;
|
|
17
|
+
requestConfig?: any;
|
|
18
|
+
newVersion?: boolean;
|
|
17
19
|
}
|
|
18
20
|
export default class NscUpload extends React.PureComponent<IUploadProps, any> {
|
|
19
|
-
static Dragger: React.FC<import("antd/lib/upload").DraggerProps>;
|
|
20
21
|
state: {
|
|
21
22
|
fileList: any[];
|
|
22
23
|
viewId: string;
|
|
23
24
|
fileListStore: any[];
|
|
24
25
|
fileNames: any[];
|
|
25
26
|
};
|
|
27
|
+
uploadIngSize: number;
|
|
28
|
+
uploadSize: number;
|
|
29
|
+
uploadIngList: any[];
|
|
26
30
|
componentDidMount(): void;
|
|
27
|
-
convertFileList(list?: Array<Object>): void
|
|
31
|
+
convertFileList(list?: Array<Object>): Promise<void>;
|
|
28
32
|
componentDidUpdate(preProps: any, preState: any): void;
|
|
29
33
|
getFileList(): any[];
|
|
30
34
|
setFileList(fileList: Array<Object>): void;
|
|
31
35
|
beforeUpload(file: any, ofileList: any): Promise<boolean>;
|
|
32
36
|
checkFileType(file: any): boolean;
|
|
33
37
|
onProcess({ percent, file }: any): void;
|
|
34
|
-
onComplete(
|
|
38
|
+
onComplete(files: any): Promise<void>;
|
|
35
39
|
customRequest: (options: any) => Promise<void>;
|
|
36
40
|
onDelete(file: any): void;
|
|
37
41
|
render(): React.ReactNode;
|
|
@@ -15,14 +15,15 @@ import styles from "./index.less";
|
|
|
15
15
|
import cls from "classnames";
|
|
16
16
|
import FileIcon from "../common/FileIcon";
|
|
17
17
|
import { DeleteOutlined, DownloadOutlined, EyeOutlined } from "@ant-design/icons";
|
|
18
|
+
|
|
19
|
+
// import NscUploadDragger from "./Dragger";
|
|
20
|
+
|
|
18
21
|
const {
|
|
19
22
|
upload,
|
|
20
23
|
download,
|
|
21
|
-
previewDocument
|
|
24
|
+
previewDocument,
|
|
25
|
+
previewImage
|
|
22
26
|
} = file;
|
|
23
|
-
const {
|
|
24
|
-
Dragger
|
|
25
|
-
} = _Upload;
|
|
26
27
|
export default class NscUpload extends React.PureComponent {
|
|
27
28
|
constructor() {
|
|
28
29
|
super(...arguments);
|
|
@@ -32,12 +33,16 @@ export default class NscUpload extends React.PureComponent {
|
|
|
32
33
|
fileListStore: [],
|
|
33
34
|
fileNames: []
|
|
34
35
|
});
|
|
36
|
+
_defineProperty(this, "uploadIngSize", 0);
|
|
37
|
+
_defineProperty(this, "uploadSize", 0);
|
|
38
|
+
_defineProperty(this, "uploadIngList", []);
|
|
35
39
|
_defineProperty(this, "customRequest", async options => {
|
|
36
40
|
const file = options.file;
|
|
37
41
|
const {
|
|
38
42
|
onComplete,
|
|
39
43
|
onProcess,
|
|
40
|
-
sliceSize
|
|
44
|
+
sliceSize,
|
|
45
|
+
newVersion = true
|
|
41
46
|
} = this.props;
|
|
42
47
|
const onProgress = totalProgress => {
|
|
43
48
|
options.onProgress({
|
|
@@ -57,36 +62,43 @@ export default class NscUpload extends React.PureComponent {
|
|
|
57
62
|
file: file,
|
|
58
63
|
onProgress: onProgress,
|
|
59
64
|
partSize: sliceSize
|
|
60
|
-
});
|
|
65
|
+
}, this.props.requestConfig);
|
|
66
|
+
this.uploadIngSize = this.uploadIngSize + 1;
|
|
61
67
|
let fileId = null;
|
|
68
|
+
let ImgRes = null;
|
|
62
69
|
if (res.code == 200) {
|
|
63
70
|
fileId = res.data.attachId;
|
|
64
71
|
options.onSuccess();
|
|
72
|
+
if (this.props.listType == "picture-card" && newVersion) {
|
|
73
|
+
ImgRes = await previewImage(fileId, this.props.requestConfig);
|
|
74
|
+
}
|
|
65
75
|
} else {
|
|
66
76
|
options.onError();
|
|
67
77
|
}
|
|
68
|
-
this.
|
|
78
|
+
this.uploadIngList.push({
|
|
69
79
|
file: options.file,
|
|
70
80
|
fileId: fileId,
|
|
71
|
-
status: res.code == 200 ? "success" : "error"
|
|
81
|
+
status: res.code == 200 ? "success" : "error",
|
|
82
|
+
url: ImgRes ? ImgRes.data : null
|
|
72
83
|
});
|
|
84
|
+
if (this.uploadSize == this.uploadIngSize) {
|
|
85
|
+
this.onComplete(this.uploadIngList);
|
|
86
|
+
}
|
|
73
87
|
onComplete && onComplete({
|
|
74
88
|
file: options.file,
|
|
75
89
|
fileId: fileId,
|
|
76
90
|
status: res.code == 200 ? "success" : "error"
|
|
77
91
|
});
|
|
78
92
|
} catch (e) {
|
|
79
|
-
this.
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
});
|
|
93
|
+
if (this.uploadSize == this.uploadIngSize) {
|
|
94
|
+
this.onComplete(this.uploadIngList);
|
|
95
|
+
options.onError();
|
|
96
|
+
}
|
|
84
97
|
onComplete && onComplete({
|
|
85
98
|
file: options.file,
|
|
86
99
|
fileId: "",
|
|
87
100
|
status: "error"
|
|
88
101
|
});
|
|
89
|
-
options.onError();
|
|
90
102
|
}
|
|
91
103
|
});
|
|
92
104
|
}
|
|
@@ -95,29 +107,52 @@ export default class NscUpload extends React.PureComponent {
|
|
|
95
107
|
this.convertFileList();
|
|
96
108
|
}
|
|
97
109
|
}
|
|
98
|
-
convertFileList(list) {
|
|
110
|
+
async convertFileList(list) {
|
|
99
111
|
const {
|
|
100
|
-
fileList
|
|
112
|
+
fileList,
|
|
113
|
+
listType
|
|
101
114
|
} = this.props;
|
|
115
|
+
console.log("fileList", [...fileList]);
|
|
102
116
|
const newFileList = [];
|
|
103
117
|
let oldList = list ? list : fileList;
|
|
104
|
-
|
|
118
|
+
console.log("oldList", [...oldList]);
|
|
119
|
+
for (let i = 0; i < oldList.length; i++) {
|
|
120
|
+
let item = oldList[i];
|
|
105
121
|
let temp = _objectSpread(_objectSpread({}, item), {}, {
|
|
122
|
+
status: item.status,
|
|
106
123
|
name: item.name || item.fileName,
|
|
107
124
|
type: item.type,
|
|
108
|
-
size: item.size
|
|
125
|
+
size: item.size,
|
|
126
|
+
url: item.url
|
|
109
127
|
});
|
|
128
|
+
if (listType == "picture-card" && !item.url && item.fileId) {
|
|
129
|
+
let res = await previewImage(item.fileId, this.props.requestConfig);
|
|
130
|
+
if (res.code == 200) {
|
|
131
|
+
temp.url = res.data;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
110
134
|
newFileList.push(temp);
|
|
111
|
-
}
|
|
135
|
+
}
|
|
136
|
+
// oldList.map(async (item: any, index) => {
|
|
137
|
+
// let temp = {
|
|
138
|
+
// ...item,
|
|
139
|
+
// status: item.status,
|
|
140
|
+
// name: item.name || item.fileName,
|
|
141
|
+
// type: item.type,
|
|
142
|
+
// size: item.size,
|
|
143
|
+
// url: item.url,
|
|
144
|
+
// } as any;
|
|
145
|
+
// newFileList.push(temp);
|
|
146
|
+
// });
|
|
112
147
|
this.setState({
|
|
113
|
-
fileList: newFileList,
|
|
114
|
-
fileListStore: fileList
|
|
148
|
+
fileList: [...newFileList],
|
|
149
|
+
fileListStore: [...fileList]
|
|
115
150
|
});
|
|
116
151
|
}
|
|
117
152
|
componentDidUpdate(preProps, preState) {
|
|
118
153
|
if (this.props.fileList) {
|
|
119
154
|
if (JSON.stringify(this.props.fileList) !== JSON.stringify(this.state.fileListStore)) {
|
|
120
|
-
this.convertFileList();
|
|
155
|
+
this.convertFileList(this.props.fileList);
|
|
121
156
|
}
|
|
122
157
|
}
|
|
123
158
|
}
|
|
@@ -198,6 +233,7 @@ export default class NscUpload extends React.PureComponent {
|
|
|
198
233
|
this.setState({
|
|
199
234
|
fileList: newList
|
|
200
235
|
});
|
|
236
|
+
this.uploadSize = ofileList.length;
|
|
201
237
|
}
|
|
202
238
|
checkFileType(file) {
|
|
203
239
|
const {
|
|
@@ -234,22 +270,35 @@ export default class NscUpload extends React.PureComponent {
|
|
|
234
270
|
});
|
|
235
271
|
onListChange && onListChange(fileList);
|
|
236
272
|
}
|
|
237
|
-
onComplete(
|
|
273
|
+
async onComplete(files) {
|
|
274
|
+
this.uploadIngSize = 0;
|
|
275
|
+
this.uploadSize = 0;
|
|
276
|
+
this.uploadIngList = [];
|
|
238
277
|
const {
|
|
239
278
|
fileList
|
|
240
279
|
} = this.state;
|
|
280
|
+
const {
|
|
281
|
+
newVersion = true,
|
|
282
|
+
requestConfig = {}
|
|
283
|
+
} = this.props;
|
|
241
284
|
const newList = [];
|
|
242
|
-
fileList.map(item => {
|
|
285
|
+
fileList.map(async (item, index) => {
|
|
243
286
|
const newFile = _objectSpread({}, item);
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
287
|
+
files.map(async file => {
|
|
288
|
+
if (file.file.uid == item.uid) {
|
|
289
|
+
newFile.status = file.status == "success" ? "done" : file.status;
|
|
290
|
+
newFile.fileId = file.fileId;
|
|
291
|
+
newFile.url = file.url;
|
|
292
|
+
if (!newVersion) {
|
|
293
|
+
let url = "/jquick-resource/oss/endpoint/download-files?attachId=".concat(file.fileId, "&_tpk=").concat(window.localStorage.getItem("token"));
|
|
294
|
+
newFile.url = requestConfig.prefix ? requestConfig.prefix + url : "/api" + url;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
});
|
|
249
298
|
newList.push(newFile);
|
|
250
299
|
});
|
|
251
300
|
this.setState({
|
|
252
|
-
fileList: newList
|
|
301
|
+
fileList: [...newList]
|
|
253
302
|
});
|
|
254
303
|
const {
|
|
255
304
|
onListChange
|
|
@@ -286,9 +335,10 @@ export default class NscUpload extends React.PureComponent {
|
|
|
286
335
|
downloadIcon: null,
|
|
287
336
|
removeIcon: null,
|
|
288
337
|
previewIcon: null
|
|
289
|
-
}
|
|
338
|
+
},
|
|
339
|
+
requestConfig = {}
|
|
290
340
|
} = this.props;
|
|
291
|
-
const newprops = omit(this.props, ["sliceSize", "maxSize", "onComplete", "onProcess", "allowFileSuffix", "useDefaultList", "fileCard", "onListChange"]);
|
|
341
|
+
const newprops = omit(this.props, ["sliceSize", "maxSize", "onComplete", "onProcess", "allowFileSuffix", "useDefaultList", "fileCard", "onListChange", "newVersion", "requestConfig"]);
|
|
292
342
|
let defaultProps = {
|
|
293
343
|
customRequest: this.customRequest.bind(this),
|
|
294
344
|
multiple: true
|
|
@@ -319,7 +369,7 @@ export default class NscUpload extends React.PureComponent {
|
|
|
319
369
|
if (this.props.onPreview) {
|
|
320
370
|
this.props.onPreview(file);
|
|
321
371
|
} else {
|
|
322
|
-
previewDocument(file.fileId);
|
|
372
|
+
previewDocument(file.fileId, requestConfig);
|
|
323
373
|
}
|
|
324
374
|
},
|
|
325
375
|
style: {
|
|
@@ -330,7 +380,7 @@ export default class NscUpload extends React.PureComponent {
|
|
|
330
380
|
if (this.props.onDownload) {
|
|
331
381
|
this.props.onDownload(file);
|
|
332
382
|
} else {
|
|
333
|
-
download(file.fileId);
|
|
383
|
+
download(file.fileId, true, requestConfig);
|
|
334
384
|
}
|
|
335
385
|
},
|
|
336
386
|
style: {
|
|
@@ -360,14 +410,14 @@ export default class NscUpload extends React.PureComponent {
|
|
|
360
410
|
} else {
|
|
361
411
|
defaultProps = _objectSpread(_objectSpread({}, defaultProps), {}, {
|
|
362
412
|
onDownload: file => {
|
|
363
|
-
download(file.fileId);
|
|
413
|
+
download(file.fileId, true, requestConfig);
|
|
364
414
|
},
|
|
365
415
|
onRemove: file => {
|
|
366
416
|
this.onDelete(file);
|
|
367
417
|
},
|
|
368
418
|
onPreview: file => {
|
|
369
419
|
if (file !== null && file !== void 0 && file.fileId) {
|
|
370
|
-
previewDocument(file.fileId);
|
|
420
|
+
previewDocument(file.fileId, requestConfig);
|
|
371
421
|
}
|
|
372
422
|
},
|
|
373
423
|
showUploadList: _objectSpread({}, showUploadList)
|
|
@@ -376,19 +426,7 @@ export default class NscUpload extends React.PureComponent {
|
|
|
376
426
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Upload, _extends({}, defaultProps, newprops, {
|
|
377
427
|
beforeUpload: this.beforeUpload.bind(this),
|
|
378
428
|
fileList: this.state.fileList
|
|
379
|
-
// onChange={({ file, fileList, event }) => {
|
|
380
|
-
// console.log("onChangefile", file);
|
|
381
|
-
// console.log("onChangefileList", fileList);
|
|
382
|
-
// const { onChange, onListChange } = this.props;
|
|
383
|
-
// this.setState({
|
|
384
|
-
// fileList: fileList,
|
|
385
|
-
// });
|
|
386
|
-
// onListChange && onListChange(fileList);
|
|
387
|
-
// onChange && onChange({ file, fileList, event });
|
|
388
|
-
// }}
|
|
389
429
|
})));
|
|
390
430
|
}
|
|
391
431
|
}
|
|
392
|
-
// export default withZhLocale(NscUpload);
|
|
393
|
-
_defineProperty(NscUpload, "Dragger", Dragger);
|
|
394
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImZpbGUiLCJtZXNzYWdlIiwib21pdCIsImdldExlc3MiLCJzdHlsZXMiLCJjbHMiLCJGaWxlSWNvbiIsIkRlbGV0ZU91dGxpbmVkIiwiRG93bmxvYWRPdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwidXBsb2FkIiwiZG93bmxvYWQiLCJwcmV2aWV3RG9jdW1lbnQiLCJEcmFnZ2VyIiwiX1VwbG9hZCIsIk5zY1VwbG9hZCIsIlB1cmVDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsImFyZ3VtZW50cyIsIl9kZWZpbmVQcm9wZXJ0eSIsImZpbGVMaXN0Iiwidmlld0lkIiwiZmlsZUxpc3RTdG9yZSIsImZpbGVOYW1lcyIsIm9wdGlvbnMiLCJvbkNvbXBsZXRlIiwib25Qcm9jZXNzIiwic2xpY2VTaXplIiwicHJvcHMiLCJvblByb2dyZXNzIiwidG90YWxQcm9ncmVzcyIsInBlcmNlbnQiLCJyZXMiLCJwYXJ0U2l6ZSIsImZpbGVJZCIsImNvZGUiLCJkYXRhIiwiYXR0YWNoSWQiLCJvblN1Y2Nlc3MiLCJvbkVycm9yIiwic3RhdHVzIiwiZSIsImNvbXBvbmVudERpZE1vdW50IiwiY29udmVydEZpbGVMaXN0IiwibGlzdCIsIm5ld0ZpbGVMaXN0Iiwib2xkTGlzdCIsIm1hcCIsIml0ZW0iLCJ0ZW1wIiwiX29iamVjdFNwcmVhZCIsIm5hbWUiLCJmaWxlTmFtZSIsInR5cGUiLCJzaXplIiwicHVzaCIsInNldFN0YXRlIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJlUHJvcHMiLCJwcmVTdGF0ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0ZSIsImdldEZpbGVMaXN0Iiwic2V0RmlsZUxpc3QiLCJiZWZvcmVVcGxvYWQiLCJvZmlsZUxpc3QiLCJtYXhTaXplIiwiYWxsb3dGaWxlU3VmZml4IiwiY2hlY2tTYW1lRmlsZSIsIm1heENvdW50Iiwic2hvd1VwbG9hZExpc3QiLCJwcm9wc0xpc3QiLCJvbkxpc3RDaGFuZ2UiLCJjaGVja0ZpbGVUeXBlIiwiZXJyb3IiLCJjb25jYXQiLCJjaGVja0xpc3QiLCJpbmRleE9mIiwibmV3TGlzdCIsInVpZCIsImxlbmd0aCIsImkiLCJzcGxpY2UiLCJuYW1lcyIsInNwbGl0Iiwic3VmZml4IiwiX3JlZiIsIm5ld0ZpbGUiLCJ1cmwiLCJ3aW5kb3ciLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwib25EZWxldGUiLCJyZW5kZXIiLCJmaWxlQ2FyZCIsInNob3dEb3dubG9hZEljb24iLCJzaG93UHJldmlld0ljb24iLCJzaG93UmVtb3ZlSWNvbiIsImRvd25sb2FkSWNvbiIsInJlbW92ZUljb24iLCJwcmV2aWV3SWNvbiIsIm5ld3Byb3BzIiwiZGVmYXVsdFByb3BzIiwiY3VzdG9tUmVxdWVzdCIsImJpbmQiLCJtdWx0aXBsZSIsIml0ZW1SZW5kZXIiLCJvcmlnaW5Ob2RlIiwiY3VyckZpbGVMaXN0IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsIm9uQ2xpY2siLCJvblByZXZpZXciLCJzdHlsZSIsImN1cnNvciIsIm9uRG93bmxvYWQiLCJvblJlbW92ZSIsIndpZHRoIiwiRnJhZ21lbnQiLCJfZXh0ZW5kcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdXBsb2FkL1VwbG9hZC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IFVwbG9hZCwgVXBsb2FkUHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgZmlsZSBmcm9tIFwibnNjLWZpbGVcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uL21lc3NhZ2VcIjtcclxuaW1wb3J0IHdpdGhaaExvY2FsZSBmcm9tIFwiLi4vY29tbW9uL3dpdGhaaExvY2FsZVwiO1xyXG5pbXBvcnQgb21pdCBmcm9tIFwib21pdC5qc1wiO1xyXG5pbXBvcnQgeyBnZXRMZXNzIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBGaWxlSWNvbiBmcm9tIFwiLi4vY29tbW9uL0ZpbGVJY29uXCI7XHJcbmltcG9ydCB7XHJcbiAgRGVsZXRlT3V0bGluZWQsXHJcbiAgRG93bmxvYWRPdXRsaW5lZCxcclxuICBFeWVPdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IFBkZlZpZXdlciBmcm9tIFwiLi4vcGRmdml3ZXJcIjtcclxuY29uc3QgeyB1cGxvYWQsIGRvd25sb2FkLCBwcmV2aWV3RG9jdW1lbnQgfSA9IGZpbGU7XHJcbmNvbnN0IHsgRHJhZ2dlciB9ID0gVXBsb2FkO1xyXG5pbnRlcmZhY2UgSVVwbG9hZFByb3BzIGV4dGVuZHMgVXBsb2FkUHJvcHMge1xyXG4gIHNsaWNlU2l6ZT86IG51bWJlcjtcclxuICBtYXhTaXplPzogbnVtYmVyIHwgYm9vbGVhbjtcclxuICBvblByb2Nlc3M/OiAocHJvY2VzcykgPT4gdm9pZDtcclxuICBvbkNvbXBsZXRlPzogKHsgZmlsZSwgZmlsZUlkLCBzdGF0dXMgfSkgPT4gdm9pZDtcclxuICBhbGxvd0ZpbGVTdWZmaXg/OiBBcnJheTxTdHJpbmc+OyAvL+WFgeiuuOS4iuS8oOaJqeWxleWQjSzkuI3luKYuXHJcbiAgdXNlRGVmYXVsdExpc3Q/OiBib29sZWFuOyAvL+aYr+WQpuS9v+eUqOm7mOiupOeahGZpbGVMaXN0XHJcbiAgZmlsZUNhcmQ/OiBib29sZWFuO1xyXG4gIG9uTGlzdENoYW5nZT86IGFueTtcclxuICBjaGVja1NhbWVGaWxlPzogYm9vbGVhbjtcclxufVxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOc2NVcGxvYWQgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50PElVcGxvYWRQcm9wcywgYW55PiB7XHJcbiAgc3RhdGljIERyYWdnZXIgPSBEcmFnZ2VyO1xyXG4gIHN0YXRlID0geyBmaWxlTGlzdDogW10sIHZpZXdJZDogXCJcIiwgZmlsZUxpc3RTdG9yZTogW10sIGZpbGVOYW1lczogW10gfTtcclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGlmICh0aGlzLnByb3BzLmZpbGVMaXN0KSB7XHJcbiAgICAgIHRoaXMuY29udmVydEZpbGVMaXN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbnZlcnRGaWxlTGlzdChsaXN0PzogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5ld0ZpbGVMaXN0ID0gW107XHJcbiAgICBsZXQgb2xkTGlzdCA9IGxpc3QgPyBsaXN0IDogZmlsZUxpc3Q7XHJcbiAgICBvbGRMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGxldCB0ZW1wID0ge1xyXG4gICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgbmFtZTogaXRlbS5uYW1lIHx8IGl0ZW0uZmlsZU5hbWUsXHJcbiAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgIHNpemU6IGl0ZW0uc2l6ZSxcclxuICAgICAgfTtcclxuICAgICAgbmV3RmlsZUxpc3QucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGZpbGVMaXN0OiBuZXdGaWxlTGlzdCxcclxuICAgICAgZmlsZUxpc3RTdG9yZTogZmlsZUxpc3QsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZVByb3BzLCBwcmVTdGF0ZSkge1xyXG4gICAgaWYgKHRoaXMucHJvcHMuZmlsZUxpc3QpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMucHJvcHMuZmlsZUxpc3QpICE9PVxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuc3RhdGUuZmlsZUxpc3RTdG9yZSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5jb252ZXJ0RmlsZUxpc3QoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBnZXRGaWxlTGlzdCgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLmZpbGVMaXN0O1xyXG4gIH1cclxuICBzZXRGaWxlTGlzdChmaWxlTGlzdDogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgdGhpcy5jb252ZXJ0RmlsZUxpc3QoZmlsZUxpc3QpO1xyXG4gIH1cclxuICBhc3luYyBiZWZvcmVVcGxvYWQoZmlsZSwgb2ZpbGVMaXN0KSB7XHJcbiAgICBsZXQge1xyXG4gICAgICBtYXhTaXplID0gMTAwLFxyXG4gICAgICBhbGxvd0ZpbGVTdWZmaXgsXHJcbiAgICAgIGNoZWNrU2FtZUZpbGUgPSB0cnVlLFxyXG4gICAgICBtYXhDb3VudCxcclxuICAgICAgc2hvd1VwbG9hZExpc3QsXHJcbiAgICAgIGZpbGVMaXN0OiBwcm9wc0xpc3QsXHJcbiAgICAgIG9uTGlzdENoYW5nZSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IHsgZmlsZUxpc3QsIGZpbGVMaXN0U3RvcmUgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgc2l6ZTogbnVtYmVyO1xyXG4gICAgaWYgKGFsbG93RmlsZVN1ZmZpeCAmJiAhdGhpcy5jaGVja0ZpbGVUeXBlKGZpbGUpKSB7XHJcbiAgICAgIG1lc3NhZ2UuZXJyb3IoXHJcbiAgICAgICAgYCR7ZmlsZS5uYW1lfeaWh+S7tuexu+Wei+S4jeWFgeiuuOS4iuS8oO+8jOivt+S4iuS8oOWQjue8gOS4uiR7YWxsb3dGaWxlU3VmZml4feeahOexu+Wei+aWh+S7tu+8gWBcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKG1heFNpemUgIT09IGZhbHNlKSB7XHJcbiAgICAgIGlmIChtYXhTaXplID09PSB0cnVlKSB7XHJcbiAgICAgICAgbWF4U2l6ZSA9IDEwMDtcclxuICAgICAgfVxyXG4gICAgICBzaXplID0gbWF4U2l6ZSAqIDEwMjQgKiAxMDI0O1xyXG4gICAgICBpZiAoc2l6ZSA8IGZpbGUuc2l6ZSkge1xyXG4gICAgICAgIG1lc3NhZ2UuZXJyb3IoYCR7ZmlsZS5uYW1lfeaWh+S7tuWkp+Wwj+i2hei/hyR7bWF4U2l6ZX1N77yM6K+36YeN5paw5LiK5Lyg77yBYCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgZmlsZU5hbWVzID0gW107XHJcbiAgICBpZiAoY2hlY2tTYW1lRmlsZSkge1xyXG4gICAgICBjb25zdCBjaGVja0xpc3QgPSB0aGlzLnByb3BzLmZpbGVMaXN0ID8gZmlsZUxpc3RTdG9yZSA6IGZpbGVMaXN0O1xyXG4gICAgICBjaGVja0xpc3QubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgZmlsZU5hbWVzLnB1c2goaXRlbS5uYW1lIHx8IGl0ZW0uZmlsZU5hbWUpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmIChmaWxlTmFtZXMuaW5kZXhPZihmaWxlLm5hbWUpID4gLTEgJiYgc2hvd1VwbG9hZExpc3QgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgbWVzc2FnZS5lcnJvcihg5paH5Lu2JHtmaWxlLm5hbWV95bey5Zyo5LiK5Lyg5YiX6KGo5Lit77yM6K+36YeN5paw6YCJ5oup5paH5Lu277yBYCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucHJvcHMuYmVmb3JlVXBsb2FkKSB7XHJcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMucHJvcHMuYmVmb3JlVXBsb2FkKGZpbGUsIG9maWxlTGlzdCk7XHJcbiAgICAgIGlmIChyZXMgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBuZXdMaXN0ID0gWy4uLmZpbGVMaXN0XTtcclxuICAgIG9maWxlTGlzdC5tYXAoYXN5bmMgKGl0ZW0pID0+IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgICEoXHJcbiAgICAgICAgICAoYWxsb3dGaWxlU3VmZml4ICYmICF0aGlzLmNoZWNrRmlsZVR5cGUoaXRlbSkpIHx8XHJcbiAgICAgICAgICBzaXplIDwgaXRlbS5zaXplIHx8XHJcbiAgICAgICAgICAoY2hlY2tTYW1lRmlsZSAmJiBmaWxlTmFtZXMuaW5kZXhPZihpdGVtLm5hbWUpID4gLTEpXHJcbiAgICAgICAgKVxyXG4gICAgICApIHtcclxuICAgICAgICBjb25zdCB0ZW1wID0ge1xyXG4gICAgICAgICAgZmlsZU5hbWU6IGl0ZW0ubmFtZSxcclxuICAgICAgICAgIHBlcmNlbnQ6IDAsXHJcbiAgICAgICAgICBzdGF0dXM6IFwidXBsb2FkaW5nXCIsXHJcbiAgICAgICAgICB1aWQ6IGl0ZW0udWlkLFxyXG4gICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgICAgc2l6ZTogaXRlbS5zaXplLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgbmV3TGlzdC5wdXNoKHRlbXApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAobWF4Q291bnQgJiYgbmV3TGlzdC5sZW5ndGggPiBtYXhDb3VudCkge1xyXG4gICAgICBsZXQgbGVuZ3RoID0gbmV3TGlzdC5sZW5ndGggLSBtYXhDb3VudDtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgICAgIG5ld0xpc3Quc3BsaWNlKDAsIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKG5ld0xpc3QpO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGZpbGVMaXN0OiBuZXdMaXN0IH0pO1xyXG4gIH1cclxuICBjaGVja0ZpbGVUeXBlKGZpbGUpIHtcclxuICAgIGNvbnN0IHsgYWxsb3dGaWxlU3VmZml4IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmFtZXMgPSBmaWxlLm5hbWUuc3BsaXQoXCIuXCIpO1xyXG4gICAgY29uc3Qgc3VmZml4ID0gbmFtZXNbbmFtZXMubGVuZ3RoIC0gMV07XHJcbiAgICBpZiAoYWxsb3dGaWxlU3VmZml4LmluZGV4T2Yoc3VmZml4KSA+IC0xKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBvblByb2Nlc3MoeyBwZXJjZW50LCBmaWxlIH06IGFueSkge1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgb25MaXN0Q2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcbiAgICBmaWxlTGlzdC5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBuZXdGaWxlID0geyAuLi5pdGVtIH07XHJcbiAgICAgIGlmIChmaWxlLnVpZCA9PSBpdGVtLnVpZCkge1xyXG4gICAgICAgIG5ld0ZpbGUucGVyY2VudCA9IHBlcmNlbnQ7XHJcbiAgICAgIH1cclxuICAgICAgbmV3TGlzdC5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZmlsZUxpc3Q6IG5ld0xpc3QsXHJcbiAgICB9KTtcclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UoZmlsZUxpc3QpO1xyXG4gIH1cclxuICBvbkNvbXBsZXRlKGZpbGUpIHtcclxuICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBuZXdMaXN0OiBhbnkgPSBbXTtcclxuICAgIGZpbGVMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0ZpbGUgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgaWYgKGZpbGUuZmlsZS51aWQgPT0gaXRlbS51aWQpIHtcclxuICAgICAgICBuZXdGaWxlLnN0YXR1cyA9IGZpbGUuc3RhdHVzID09IFwic3VjY2Vzc1wiID8gXCJkb25lXCIgOiBmaWxlLnN0YXR1cztcclxuICAgICAgICBuZXdGaWxlLmZpbGVJZCA9IGZpbGUuZmlsZUlkO1xyXG4gICAgICAgIG5ld0ZpbGUudXJsID0gYC9hcGkvanF1aWNrLXJlc291cmNlL29zcy9lbmRwb2ludC9kb3dubG9hZC1maWxlcz9hdHRhY2hJZD0ke1xyXG4gICAgICAgICAgZmlsZS5maWxlSWRcclxuICAgICAgICB9Jl90cGs9JHt3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ0b2tlblwiKX1gO1xyXG4gICAgICB9XHJcbiAgICAgIG5ld0xpc3QucHVzaChuZXdGaWxlKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGZpbGVMaXN0OiBuZXdMaXN0LFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCB7IG9uTGlzdENoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgfVxyXG4gIGN1c3RvbVJlcXVlc3QgPSBhc3luYyAob3B0aW9ucykgPT4ge1xyXG4gICAgY29uc3QgZmlsZSA9IG9wdGlvbnMuZmlsZTtcclxuICAgIGNvbnN0IHsgb25Db21wbGV0ZSwgb25Qcm9jZXNzLCBzbGljZVNpemUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBvblByb2dyZXNzID0gKHRvdGFsUHJvZ3Jlc3M6IGFueSkgPT4ge1xyXG4gICAgICBvcHRpb25zLm9uUHJvZ3Jlc3MoeyBwZXJjZW50OiB0b3RhbFByb2dyZXNzIH0sIGZpbGUpO1xyXG4gICAgICB0aGlzLm9uUHJvY2Vzcyh7IHBlcmNlbnQ6IHRvdGFsUHJvZ3Jlc3MsIGZpbGU6IGZpbGUgfSk7XHJcbiAgICAgIG9uUHJvY2VzcyAmJiBvblByb2Nlc3MoeyBwZXJjZW50OiB0b3RhbFByb2dyZXNzLCBmaWxlOiBmaWxlIH0pO1xyXG4gICAgfTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlczogYW55ID0gYXdhaXQgdXBsb2FkKHtcclxuICAgICAgICBmaWxlOiBmaWxlLFxyXG4gICAgICAgIG9uUHJvZ3Jlc3M6IG9uUHJvZ3Jlc3MsXHJcbiAgICAgICAgcGFydFNpemU6IHNsaWNlU2l6ZSxcclxuICAgICAgfSk7XHJcbiAgICAgIGxldCBmaWxlSWQgPSBudWxsO1xyXG4gICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgZmlsZUlkID0gcmVzLmRhdGEuYXR0YWNoSWQ7XHJcbiAgICAgICAgb3B0aW9ucy5vblN1Y2Nlc3MoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBvcHRpb25zLm9uRXJyb3IoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9uQ29tcGxldGUoe1xyXG4gICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcclxuICAgICAgICBmaWxlSWQ6IGZpbGVJZCxcclxuICAgICAgICBzdGF0dXM6IHJlcy5jb2RlID09IDIwMCA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiLFxyXG4gICAgICB9KTtcclxuICAgICAgb25Db21wbGV0ZSAmJlxyXG4gICAgICAgIG9uQ29tcGxldGUoe1xyXG4gICAgICAgICAgZmlsZTogb3B0aW9ucy5maWxlLFxyXG4gICAgICAgICAgZmlsZUlkOiBmaWxlSWQsXHJcbiAgICAgICAgICBzdGF0dXM6IHJlcy5jb2RlID09IDIwMCA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICB0aGlzLm9uQ29tcGxldGUoe1xyXG4gICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcclxuICAgICAgICBmaWxlSWQ6IFwiXCIsXHJcbiAgICAgICAgc3RhdHVzOiBcImVycm9yXCIsXHJcbiAgICAgIH0pO1xyXG4gICAgICBvbkNvbXBsZXRlICYmXHJcbiAgICAgICAgb25Db21wbGV0ZSh7IGZpbGU6IG9wdGlvbnMuZmlsZSwgZmlsZUlkOiBcIlwiLCBzdGF0dXM6IFwiZXJyb3JcIiB9KTtcclxuICAgICAgb3B0aW9ucy5vbkVycm9yKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuICBvbkRlbGV0ZShmaWxlKSB7XHJcbiAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBvbkxpc3RDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBuZXdMaXN0OiBhbnkgPSBbXTtcclxuICAgIGZpbGVMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIC8v6YCa6L+H5paH5Lu25ZCN5Yik5pat77yM5LiK5Lyg5piv5paH5Lu25ZCN5piv5ZSv5LiA55qEXHJcbiAgICAgIGlmIChcclxuICAgICAgICBpdGVtLm5hbWUgIT09IGZpbGUubmFtZSB8fFxyXG4gICAgICAgIGl0ZW0uZmlsZUlkICE9PSBmaWxlLmZpbGVJZCB8fFxyXG4gICAgICAgIGl0ZW0udWlkICE9PSBmaWxlLnVpZFxyXG4gICAgICApIHtcclxuICAgICAgICBuZXdMaXN0LnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGZpbGVMaXN0OiBuZXdMaXN0LFxyXG4gICAgfSk7XHJcbiAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKG5ld0xpc3QpO1xyXG4gIH1cclxuICByZW5kZXIoKTogUmVhY3QuUmVhY3ROb2RlIHtcclxuICAgIGxldCB7XHJcbiAgICAgIGZpbGVMaXN0LFxyXG4gICAgICBmaWxlQ2FyZCxcclxuICAgICAgc2hvd1VwbG9hZExpc3QgPSB7XHJcbiAgICAgICAgc2hvd0Rvd25sb2FkSWNvbjogdHJ1ZSxcclxuICAgICAgICBzaG93UHJldmlld0ljb246IGZhbHNlLFxyXG4gICAgICAgIHNob3dSZW1vdmVJY29uOiB0cnVlLFxyXG4gICAgICAgIGRvd25sb2FkSWNvbjogbnVsbCxcclxuICAgICAgICByZW1vdmVJY29uOiBudWxsLFxyXG4gICAgICAgIHByZXZpZXdJY29uOiBudWxsLFxyXG4gICAgICB9IGFzIGFueSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3cHJvcHMgPSBvbWl0KHRoaXMucHJvcHMsIFtcclxuICAgICAgXCJzbGljZVNpemVcIixcclxuICAgICAgXCJtYXhTaXplXCIsXHJcbiAgICAgIFwib25Db21wbGV0ZVwiLFxyXG4gICAgICBcIm9uUHJvY2Vzc1wiLFxyXG4gICAgICBcImFsbG93RmlsZVN1ZmZpeFwiLFxyXG4gICAgICBcInVzZURlZmF1bHRMaXN0XCIsXHJcbiAgICAgIFwiZmlsZUNhcmRcIixcclxuICAgICAgXCJvbkxpc3RDaGFuZ2VcIixcclxuICAgIF0pO1xyXG4gICAgbGV0IGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgY3VzdG9tUmVxdWVzdDogdGhpcy5jdXN0b21SZXF1ZXN0LmJpbmQodGhpcyksXHJcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgfSBhcyBJVXBsb2FkUHJvcHM7XHJcbiAgICBpZiAoZmlsZUNhcmQpIHtcclxuICAgICAgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcclxuICAgICAgICBpdGVtUmVuZGVyOiAob3JpZ2luTm9kZSwgZmlsZTogYW55LCBjdXJyRmlsZUxpc3QpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG5hbWUgPSBmaWxlLm5hbWUgfHwgZmlsZS5maWxlTmFtZTtcclxuICAgICAgICAgIGNvbnN0IG5hbWVzID0gbmFtZT8uc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgICAgY29uc3Qgc3VmZml4ID0gbmFtZXMgPyBuYW1lc1tuYW1lcy5sZW5ndGggLSAxXSA6IFwiXCI7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZmlsZS1pdGVtXCIpfT5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50X2Vycm9yXCIpXTogZmlsZS5zdGF0dXMgPT0gXCJlcnJvclwiLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm1hcmstcGljdHVyZVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxGaWxlSWNvbiBzdWZmaXg9e3N1ZmZpeH0gZmlsZUlkPXtmaWxlLmZpbGVJZH0gLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5hbWVcIil9PlxyXG4gICAgICAgICAgICAgICAgICB7ZmlsZS5uYW1lIHx8IGZpbGUuZmlsZU5hbWV9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LnNob3dQcmV2aWV3SWNvbiAmJiBmaWxlLnN0YXR1cyA9PSBcImRvbmVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblByZXZpZXcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUHJldmlldyhmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aWV3RG9jdW1lbnQoZmlsZS5maWxlSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb24gPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPEV5ZU91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3Quc2hvd0Rvd25sb2FkSWNvbiAmJiBmaWxlLnN0YXR1cyA9PSBcImRvbmVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkRvd25sb2FkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkRvd25sb2FkKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkKGZpbGUuZmlsZUlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxEb3dubG9hZE91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3Quc2hvd1JlbW92ZUljb24gJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25SZW1vdmUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUmVtb3ZlKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25EZWxldGUoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvbiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RGVsZXRlT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICB7ZmlsZS5zdGF0dXMgPT0gXCJ1cGxvYWRpbmdcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwicHJvY2Vzc1wiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInBlcmNlbnRcIil9XHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IGZpbGUucGVyY2VudCArIFwiJVwiIH19XHJcbiAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcclxuICAgICAgICBvbkRvd25sb2FkOiAoZmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBkb3dubG9hZChmaWxlLmZpbGVJZCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvblJlbW92ZTogKGZpbGUpID0+IHtcclxuICAgICAgICAgIHRoaXMub25EZWxldGUoZmlsZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvblByZXZpZXc6IChmaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmaWxlPy5maWxlSWQpIHtcclxuICAgICAgICAgICAgcHJldmlld0RvY3VtZW50KGZpbGUuZmlsZUlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHNob3dVcGxvYWRMaXN0OiB7IC4uLnNob3dVcGxvYWRMaXN0IH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8PlxyXG4gICAgICAgIDxVcGxvYWRcclxuICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XHJcbiAgICAgICAgICB7Li4ubmV3cHJvcHN9XHJcbiAgICAgICAgICBiZWZvcmVVcGxvYWQ9e3RoaXMuYmVmb3JlVXBsb2FkLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICBmaWxlTGlzdD17dGhpcy5zdGF0ZS5maWxlTGlzdH1cclxuICAgICAgICAgIC8vIG9uQ2hhbmdlPXsoeyBmaWxlLCBmaWxlTGlzdCwgZXZlbnQgfSkgPT4ge1xyXG4gICAgICAgICAgLy8gICBjb25zb2xlLmxvZyhcIm9uQ2hhbmdlZmlsZVwiLCBmaWxlKTtcclxuICAgICAgICAgIC8vICAgY29uc29sZS5sb2coXCJvbkNoYW5nZWZpbGVMaXN0XCIsIGZpbGVMaXN0KTtcclxuICAgICAgICAgIC8vICAgY29uc3QgeyBvbkNoYW5nZSwgb25MaXN0Q2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgLy8gICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIC8vICAgICBmaWxlTGlzdDogZmlsZUxpc3QsXHJcbiAgICAgICAgICAvLyAgIH0pO1xyXG4gICAgICAgICAgLy8gICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKGZpbGVMaXN0KTtcclxuICAgICAgICAgIC8vICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UoeyBmaWxlLCBmaWxlTGlzdCwgZXZlbnQgfSk7XHJcbiAgICAgICAgICAvLyB9fVxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuLy8gZXhwb3J0IGRlZmF1bHQgd2l0aFpoTG9jYWxl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
|
|
432
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImZpbGUiLCJtZXNzYWdlIiwib21pdCIsImdldExlc3MiLCJzdHlsZXMiLCJjbHMiLCJGaWxlSWNvbiIsIkRlbGV0ZU91dGxpbmVkIiwiRG93bmxvYWRPdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwidXBsb2FkIiwiZG93bmxvYWQiLCJwcmV2aWV3RG9jdW1lbnQiLCJwcmV2aWV3SW1hZ2UiLCJOc2NVcGxvYWQiLCJQdXJlQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJhcmd1bWVudHMiLCJfZGVmaW5lUHJvcGVydHkiLCJmaWxlTGlzdCIsInZpZXdJZCIsImZpbGVMaXN0U3RvcmUiLCJmaWxlTmFtZXMiLCJvcHRpb25zIiwib25Db21wbGV0ZSIsIm9uUHJvY2VzcyIsInNsaWNlU2l6ZSIsIm5ld1ZlcnNpb24iLCJwcm9wcyIsIm9uUHJvZ3Jlc3MiLCJ0b3RhbFByb2dyZXNzIiwicGVyY2VudCIsInJlcyIsInBhcnRTaXplIiwicmVxdWVzdENvbmZpZyIsInVwbG9hZEluZ1NpemUiLCJmaWxlSWQiLCJJbWdSZXMiLCJjb2RlIiwiZGF0YSIsImF0dGFjaElkIiwib25TdWNjZXNzIiwibGlzdFR5cGUiLCJvbkVycm9yIiwidXBsb2FkSW5nTGlzdCIsInB1c2giLCJzdGF0dXMiLCJ1cmwiLCJ1cGxvYWRTaXplIiwiZSIsImNvbXBvbmVudERpZE1vdW50IiwiY29udmVydEZpbGVMaXN0IiwibGlzdCIsImNvbnNvbGUiLCJsb2ciLCJuZXdGaWxlTGlzdCIsIm9sZExpc3QiLCJpIiwibGVuZ3RoIiwiaXRlbSIsInRlbXAiLCJfb2JqZWN0U3ByZWFkIiwibmFtZSIsImZpbGVOYW1lIiwidHlwZSIsInNpemUiLCJzZXRTdGF0ZSIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByZVByb3BzIiwicHJlU3RhdGUiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhdGUiLCJnZXRGaWxlTGlzdCIsInNldEZpbGVMaXN0IiwiYmVmb3JlVXBsb2FkIiwib2ZpbGVMaXN0IiwibWF4U2l6ZSIsImFsbG93RmlsZVN1ZmZpeCIsImNoZWNrU2FtZUZpbGUiLCJtYXhDb3VudCIsInNob3dVcGxvYWRMaXN0IiwicHJvcHNMaXN0Iiwib25MaXN0Q2hhbmdlIiwiY2hlY2tGaWxlVHlwZSIsImVycm9yIiwiY29uY2F0IiwiY2hlY2tMaXN0IiwibWFwIiwiaW5kZXhPZiIsIm5ld0xpc3QiLCJ1aWQiLCJzcGxpY2UiLCJuYW1lcyIsInNwbGl0Iiwic3VmZml4IiwiX3JlZiIsIm5ld0ZpbGUiLCJmaWxlcyIsImluZGV4Iiwid2luZG93IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsInByZWZpeCIsIm9uRGVsZXRlIiwicmVuZGVyIiwiZmlsZUNhcmQiLCJzaG93RG93bmxvYWRJY29uIiwic2hvd1ByZXZpZXdJY29uIiwic2hvd1JlbW92ZUljb24iLCJkb3dubG9hZEljb24iLCJyZW1vdmVJY29uIiwicHJldmlld0ljb24iLCJuZXdwcm9wcyIsImRlZmF1bHRQcm9wcyIsImN1c3RvbVJlcXVlc3QiLCJiaW5kIiwibXVsdGlwbGUiLCJpdGVtUmVuZGVyIiwib3JpZ2luTm9kZSIsImN1cnJGaWxlTGlzdCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwib25QcmV2aWV3Iiwic3R5bGUiLCJjdXJzb3IiLCJvbkRvd25sb2FkIiwib25SZW1vdmUiLCJ3aWR0aCIsIkZyYWdtZW50IiwiX1VwbG9hZCIsIl9leHRlbmRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYmFzZS91cGxvYWQvVXBsb2FkLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgVXBsb2FkLCBVcGxvYWRQcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCBmaWxlIGZyb20gXCJuc2MtZmlsZVwiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vbWVzc2FnZVwiO1xyXG5pbXBvcnQgd2l0aFpoTG9jYWxlIGZyb20gXCIuLi9jb21tb24vd2l0aFpoTG9jYWxlXCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCB7IGdldExlc3MgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9pbmRleC5sZXNzXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IEZpbGVJY29uIGZyb20gXCIuLi9jb21tb24vRmlsZUljb25cIjtcclxuaW1wb3J0IHtcclxuICBEZWxldGVPdXRsaW5lZCxcclxuICBEb3dubG9hZE91dGxpbmVkLFxyXG4gIEV5ZU91dGxpbmVkLFxyXG59IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgUGRmVmlld2VyIGZyb20gXCIuLi9wZGZ2aXdlclwiO1xyXG4vLyBpbXBvcnQgTnNjVXBsb2FkRHJhZ2dlciBmcm9tIFwiLi9EcmFnZ2VyXCI7XHJcbmltcG9ydCB7IHBhcnNlIH0gZnJvbSBcIkBiYWJlbC9jb3JlXCI7XHJcbmNvbnN0IHsgdXBsb2FkLCBkb3dubG9hZCwgcHJldmlld0RvY3VtZW50LCBwcmV2aWV3SW1hZ2UgfSA9IGZpbGU7XHJcblxyXG5pbnRlcmZhY2UgSVVwbG9hZFByb3BzIGV4dGVuZHMgVXBsb2FkUHJvcHMge1xyXG4gIHNsaWNlU2l6ZT86IG51bWJlcjtcclxuICBtYXhTaXplPzogbnVtYmVyIHwgYm9vbGVhbjtcclxuICBvblByb2Nlc3M/OiAocHJvY2VzcykgPT4gdm9pZDtcclxuICBvbkNvbXBsZXRlPzogKHsgZmlsZSwgZmlsZUlkLCBzdGF0dXMgfSkgPT4gdm9pZDtcclxuICBhbGxvd0ZpbGVTdWZmaXg/OiBBcnJheTxTdHJpbmc+OyAvL+WFgeiuuOS4iuS8oOaJqeWxleWQjSzkuI3luKYuXHJcbiAgdXNlRGVmYXVsdExpc3Q/OiBib29sZWFuOyAvL+aYr+WQpuS9v+eUqOm7mOiupOeahGZpbGVMaXN0XHJcbiAgZmlsZUNhcmQ/OiBib29sZWFuO1xyXG4gIG9uTGlzdENoYW5nZT86IGFueTtcclxuICBjaGVja1NhbWVGaWxlPzogYm9vbGVhbjtcclxuICByZXF1ZXN0Q29uZmlnPzogYW55O1xyXG4gIG5ld1ZlcnNpb24/OiBib29sZWFuO1xyXG59XHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5zY1VwbG9hZCBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQ8SVVwbG9hZFByb3BzLCBhbnk+IHtcclxuICBzdGF0ZSA9IHtcclxuICAgIGZpbGVMaXN0OiBbXSxcclxuICAgIHZpZXdJZDogXCJcIixcclxuICAgIGZpbGVMaXN0U3RvcmU6IFtdLFxyXG4gICAgZmlsZU5hbWVzOiBbXSxcclxuICB9O1xyXG4gIHVwbG9hZEluZ1NpemUgPSAwO1xyXG4gIHVwbG9hZFNpemUgPSAwO1xyXG4gIHVwbG9hZEluZ0xpc3QgPSBbXTtcclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGlmICh0aGlzLnByb3BzLmZpbGVMaXN0KSB7XHJcbiAgICAgIHRoaXMuY29udmVydEZpbGVMaXN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFzeW5jIGNvbnZlcnRGaWxlTGlzdChsaXN0PzogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCwgbGlzdFR5cGUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zb2xlLmxvZyhcImZpbGVMaXN0XCIsIFsuLi5maWxlTGlzdF0pO1xyXG4gICAgY29uc3QgbmV3RmlsZUxpc3QgPSBbXTtcclxuICAgIGxldCBvbGRMaXN0ID0gbGlzdCA/IGxpc3QgOiBmaWxlTGlzdDtcclxuICAgIGNvbnNvbGUubG9nKFwib2xkTGlzdFwiLCBbLi4ub2xkTGlzdF0pO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvbGRMaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBpdGVtOiBhbnkgPSBvbGRMaXN0W2ldO1xyXG4gICAgICBsZXQgdGVtcCA9IHtcclxuICAgICAgICAuLi5pdGVtLFxyXG4gICAgICAgIHN0YXR1czogaXRlbS5zdGF0dXMsXHJcbiAgICAgICAgbmFtZTogaXRlbS5uYW1lIHx8IGl0ZW0uZmlsZU5hbWUsXHJcbiAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgIHNpemU6IGl0ZW0uc2l6ZSxcclxuICAgICAgICB1cmw6IGl0ZW0udXJsLFxyXG4gICAgICB9IGFzIGFueTtcclxuICAgICAgaWYgKGxpc3RUeXBlID09IFwicGljdHVyZS1jYXJkXCIgJiYgIWl0ZW0udXJsICYmIGl0ZW0uZmlsZUlkKSB7XHJcbiAgICAgICAgbGV0IHJlczogYW55ID0gYXdhaXQgcHJldmlld0ltYWdlKFxyXG4gICAgICAgICAgaXRlbS5maWxlSWQsXHJcbiAgICAgICAgICB0aGlzLnByb3BzLnJlcXVlc3RDb25maWdcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRlbXAudXJsID0gcmVzLmRhdGE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIG5ld0ZpbGVMaXN0LnB1c2godGVtcCk7XHJcbiAgICB9XHJcbiAgICAvLyBvbGRMaXN0Lm1hcChhc3luYyAoaXRlbTogYW55LCBpbmRleCkgPT4ge1xyXG4gICAgLy8gICBsZXQgdGVtcCA9IHtcclxuICAgIC8vICAgICAuLi5pdGVtLFxyXG4gICAgLy8gICAgIHN0YXR1czogaXRlbS5zdGF0dXMsXHJcbiAgICAvLyAgICAgbmFtZTogaXRlbS5uYW1lIHx8IGl0ZW0uZmlsZU5hbWUsXHJcbiAgICAvLyAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgLy8gICAgIHNpemU6IGl0ZW0uc2l6ZSxcclxuICAgIC8vICAgICB1cmw6IGl0ZW0udXJsLFxyXG4gICAgLy8gICB9IGFzIGFueTtcclxuICAgIC8vICAgbmV3RmlsZUxpc3QucHVzaCh0ZW1wKTtcclxuICAgIC8vIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGZpbGVMaXN0OiBbLi4ubmV3RmlsZUxpc3RdLFxyXG4gICAgICBmaWxlTGlzdFN0b3JlOiBbLi4uZmlsZUxpc3RdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmVQcm9wcywgcHJlU3RhdGUpIHtcclxuICAgIGlmICh0aGlzLnByb3BzLmZpbGVMaXN0KSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnByb3BzLmZpbGVMaXN0KSAhPT1cclxuICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnN0YXRlLmZpbGVMaXN0U3RvcmUpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuY29udmVydEZpbGVMaXN0KHRoaXMucHJvcHMuZmlsZUxpc3QpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldEZpbGVMaXN0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuZmlsZUxpc3Q7XHJcbiAgfVxyXG4gIHNldEZpbGVMaXN0KGZpbGVMaXN0OiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICB0aGlzLmNvbnZlcnRGaWxlTGlzdChmaWxlTGlzdCk7XHJcbiAgfVxyXG4gIGFzeW5jIGJlZm9yZVVwbG9hZChmaWxlLCBvZmlsZUxpc3QpIHtcclxuICAgIGxldCB7XHJcbiAgICAgIG1heFNpemUgPSAxMDAsXHJcbiAgICAgIGFsbG93RmlsZVN1ZmZpeCxcclxuICAgICAgY2hlY2tTYW1lRmlsZSA9IHRydWUsXHJcbiAgICAgIG1heENvdW50LFxyXG4gICAgICBzaG93VXBsb2FkTGlzdCxcclxuICAgICAgZmlsZUxpc3Q6IHByb3BzTGlzdCxcclxuICAgICAgb25MaXN0Q2hhbmdlLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgeyBmaWxlTGlzdCwgZmlsZUxpc3RTdG9yZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCBzaXplOiBudW1iZXI7XHJcbiAgICBpZiAoYWxsb3dGaWxlU3VmZml4ICYmICF0aGlzLmNoZWNrRmlsZVR5cGUoZmlsZSkpIHtcclxuICAgICAgbWVzc2FnZS5lcnJvcihcclxuICAgICAgICBgJHtmaWxlLm5hbWV95paH5Lu257G75Z6L5LiN5YWB6K645LiK5Lyg77yM6K+35LiK5Lyg5ZCO57yA5Li6JHthbGxvd0ZpbGVTdWZmaXh955qE57G75Z6L5paH5Lu277yBYFxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAobWF4U2l6ZSAhPT0gZmFsc2UpIHtcclxuICAgICAgaWYgKG1heFNpemUgPT09IHRydWUpIHtcclxuICAgICAgICBtYXhTaXplID0gMTAwO1xyXG4gICAgICB9XHJcbiAgICAgIHNpemUgPSBtYXhTaXplICogMTAyNCAqIDEwMjQ7XHJcbiAgICAgIGlmIChzaXplIDwgZmlsZS5zaXplKSB7XHJcbiAgICAgICAgbWVzc2FnZS5lcnJvcihgJHtmaWxlLm5hbWV95paH5Lu25aSn5bCP6LaF6L+HJHttYXhTaXplfU3vvIzor7fph43mlrDkuIrkvKDvvIFgKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBmaWxlTmFtZXMgPSBbXTtcclxuICAgIGlmIChjaGVja1NhbWVGaWxlKSB7XHJcbiAgICAgIGNvbnN0IGNoZWNrTGlzdCA9IHRoaXMucHJvcHMuZmlsZUxpc3QgPyBmaWxlTGlzdFN0b3JlIDogZmlsZUxpc3Q7XHJcbiAgICAgIGNoZWNrTGlzdC5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBmaWxlTmFtZXMucHVzaChpdGVtLm5hbWUgfHwgaXRlbS5maWxlTmFtZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKGZpbGVOYW1lcy5pbmRleE9mKGZpbGUubmFtZSkgPiAtMSAmJiBzaG93VXBsb2FkTGlzdCAhPT0gZmFsc2UpIHtcclxuICAgICAgICBtZXNzYWdlLmVycm9yKGDmlofku7Yke2ZpbGUubmFtZX3lt7LlnKjkuIrkvKDliJfooajkuK3vvIzor7fph43mlrDpgInmi6nmlofku7bvvIFgKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5wcm9wcy5iZWZvcmVVcGxvYWQpIHtcclxuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5wcm9wcy5iZWZvcmVVcGxvYWQoZmlsZSwgb2ZpbGVMaXN0KTtcclxuICAgICAgaWYgKHJlcyA9PT0gZmFsc2UpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IG5ld0xpc3QgPSBbLi4uZmlsZUxpc3RdO1xyXG4gICAgb2ZpbGVMaXN0Lm1hcChhc3luYyAoaXRlbSkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIShcclxuICAgICAgICAgIChhbGxvd0ZpbGVTdWZmaXggJiYgIXRoaXMuY2hlY2tGaWxlVHlwZShpdGVtKSkgfHxcclxuICAgICAgICAgIHNpemUgPCBpdGVtLnNpemUgfHxcclxuICAgICAgICAgIChjaGVja1NhbWVGaWxlICYmIGZpbGVOYW1lcy5pbmRleE9mKGl0ZW0ubmFtZSkgPiAtMSlcclxuICAgICAgICApXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IHRlbXAgPSB7XHJcbiAgICAgICAgICBmaWxlTmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICAgICAgcGVyY2VudDogMCxcclxuICAgICAgICAgIHN0YXR1czogXCJ1cGxvYWRpbmdcIixcclxuICAgICAgICAgIHVpZDogaXRlbS51aWQsXHJcbiAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXHJcbiAgICAgICAgICBzaXplOiBpdGVtLnNpemUsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBuZXdMaXN0LnB1c2godGVtcCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChtYXhDb3VudCAmJiBuZXdMaXN0Lmxlbmd0aCA+IG1heENvdW50KSB7XHJcbiAgICAgIGxldCBsZW5ndGggPSBuZXdMaXN0Lmxlbmd0aCAtIG1heENvdW50O1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbmV3TGlzdC5zcGxpY2UoMCwgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgZmlsZUxpc3Q6IG5ld0xpc3QgfSk7XHJcbiAgICB0aGlzLnVwbG9hZFNpemUgPSBvZmlsZUxpc3QubGVuZ3RoO1xyXG4gIH1cclxuICBjaGVja0ZpbGVUeXBlKGZpbGUpIHtcclxuICAgIGNvbnN0IHsgYWxsb3dGaWxlU3VmZml4IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmFtZXMgPSBmaWxlLm5hbWUuc3BsaXQoXCIuXCIpO1xyXG4gICAgY29uc3Qgc3VmZml4ID0gbmFtZXNbbmFtZXMubGVuZ3RoIC0gMV07XHJcbiAgICBpZiAoYWxsb3dGaWxlU3VmZml4LmluZGV4T2Yoc3VmZml4KSA+IC0xKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBvblByb2Nlc3MoeyBwZXJjZW50LCBmaWxlIH06IGFueSkge1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgb25MaXN0Q2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcbiAgICBmaWxlTGlzdC5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBuZXdGaWxlID0geyAuLi5pdGVtIH07XHJcbiAgICAgIGlmIChmaWxlLnVpZCA9PSBpdGVtLnVpZCkge1xyXG4gICAgICAgIG5ld0ZpbGUucGVyY2VudCA9IHBlcmNlbnQ7XHJcbiAgICAgIH1cclxuICAgICAgbmV3TGlzdC5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZmlsZUxpc3Q6IG5ld0xpc3QsXHJcbiAgICB9KTtcclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UoZmlsZUxpc3QpO1xyXG4gIH1cclxuICBhc3luYyBvbkNvbXBsZXRlKGZpbGVzKSB7XHJcbiAgICB0aGlzLnVwbG9hZEluZ1NpemUgPSAwO1xyXG4gICAgdGhpcy51cGxvYWRTaXplID0gMDtcclxuICAgIHRoaXMudXBsb2FkSW5nTGlzdCA9IFtdO1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgbmV3VmVyc2lvbiA9IHRydWUsIHJlcXVlc3RDb25maWcgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5ld0xpc3Q6IGFueSA9IFtdO1xyXG4gICAgZmlsZUxpc3QubWFwKGFzeW5jIChpdGVtOiBhbnksIGluZGV4KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0ZpbGUgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgZmlsZXMubWFwKGFzeW5jIChmaWxlKSA9PiB7XHJcbiAgICAgICAgaWYgKGZpbGUuZmlsZS51aWQgPT0gaXRlbS51aWQpIHtcclxuICAgICAgICAgIG5ld0ZpbGUuc3RhdHVzID0gZmlsZS5zdGF0dXMgPT0gXCJzdWNjZXNzXCIgPyBcImRvbmVcIiA6IGZpbGUuc3RhdHVzO1xyXG4gICAgICAgICAgbmV3RmlsZS5maWxlSWQgPSBmaWxlLmZpbGVJZDtcclxuICAgICAgICAgIG5ld0ZpbGUudXJsID0gZmlsZS51cmw7XHJcbiAgICAgICAgICBpZiAoIW5ld1ZlcnNpb24pIHtcclxuICAgICAgICAgICAgbGV0IHVybCA9IGAvanF1aWNrLXJlc291cmNlL29zcy9lbmRwb2ludC9kb3dubG9hZC1maWxlcz9hdHRhY2hJZD0ke1xyXG4gICAgICAgICAgICAgIGZpbGUuZmlsZUlkXHJcbiAgICAgICAgICAgIH0mX3Rwaz0ke3dpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInRva2VuXCIpfWA7XHJcbiAgICAgICAgICAgIG5ld0ZpbGUudXJsID0gcmVxdWVzdENvbmZpZy5wcmVmaXhcclxuICAgICAgICAgICAgICA/IHJlcXVlc3RDb25maWcucHJlZml4ICsgdXJsXHJcbiAgICAgICAgICAgICAgOiBcIi9hcGlcIiArIHVybDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBuZXdMaXN0LnB1c2gobmV3RmlsZSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBmaWxlTGlzdDogWy4uLm5ld0xpc3RdLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgeyBvbkxpc3RDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKG5ld0xpc3QpO1xyXG4gIH1cclxuICBjdXN0b21SZXF1ZXN0ID0gYXN5bmMgKG9wdGlvbnMpID0+IHtcclxuICAgIGNvbnN0IGZpbGUgPSBvcHRpb25zLmZpbGU7XHJcbiAgICBjb25zdCB7IG9uQ29tcGxldGUsIG9uUHJvY2Vzcywgc2xpY2VTaXplLCBuZXdWZXJzaW9uID0gdHJ1ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG9uUHJvZ3Jlc3MgPSAodG90YWxQcm9ncmVzczogYW55KSA9PiB7XHJcbiAgICAgIG9wdGlvbnMub25Qcm9ncmVzcyh7IHBlcmNlbnQ6IHRvdGFsUHJvZ3Jlc3MgfSwgZmlsZSk7XHJcbiAgICAgIHRoaXMub25Qcm9jZXNzKHsgcGVyY2VudDogdG90YWxQcm9ncmVzcywgZmlsZTogZmlsZSB9KTtcclxuICAgICAgb25Qcm9jZXNzICYmIG9uUHJvY2Vzcyh7IHBlcmNlbnQ6IHRvdGFsUHJvZ3Jlc3MsIGZpbGU6IGZpbGUgfSk7XHJcbiAgICB9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcmVzOiBhbnkgPSBhd2FpdCB1cGxvYWQoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgZmlsZTogZmlsZSxcclxuICAgICAgICAgIG9uUHJvZ3Jlc3M6IG9uUHJvZ3Jlc3MsXHJcbiAgICAgICAgICBwYXJ0U2l6ZTogc2xpY2VTaXplLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdGhpcy5wcm9wcy5yZXF1ZXN0Q29uZmlnXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMudXBsb2FkSW5nU2l6ZSA9IHRoaXMudXBsb2FkSW5nU2l6ZSArIDE7XHJcbiAgICAgIGxldCBmaWxlSWQgPSBudWxsO1xyXG4gICAgICBsZXQgSW1nUmVzID0gbnVsbDtcclxuICAgICAgaWYgKHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIGZpbGVJZCA9IHJlcy5kYXRhLmF0dGFjaElkO1xyXG4gICAgICAgIG9wdGlvbnMub25TdWNjZXNzKCk7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMubGlzdFR5cGUgPT0gXCJwaWN0dXJlLWNhcmRcIiAmJiBuZXdWZXJzaW9uKSB7XHJcbiAgICAgICAgICBJbWdSZXMgPSBhd2FpdCBwcmV2aWV3SW1hZ2UoZmlsZUlkLCB0aGlzLnByb3BzLnJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBvcHRpb25zLm9uRXJyb3IoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVwbG9hZEluZ0xpc3QucHVzaCh7XHJcbiAgICAgICAgZmlsZTogb3B0aW9ucy5maWxlLFxyXG4gICAgICAgIGZpbGVJZDogZmlsZUlkLFxyXG4gICAgICAgIHN0YXR1czogcmVzLmNvZGUgPT0gMjAwID8gXCJzdWNjZXNzXCIgOiBcImVycm9yXCIsXHJcbiAgICAgICAgdXJsOiBJbWdSZXMgPyBJbWdSZXMuZGF0YSA6IG51bGwsXHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAodGhpcy51cGxvYWRTaXplID09IHRoaXMudXBsb2FkSW5nU2l6ZSkge1xyXG4gICAgICAgIHRoaXMub25Db21wbGV0ZSh0aGlzLnVwbG9hZEluZ0xpc3QpO1xyXG4gICAgICB9XHJcbiAgICAgIG9uQ29tcGxldGUgJiZcclxuICAgICAgICBvbkNvbXBsZXRlKHtcclxuICAgICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcclxuICAgICAgICAgIGZpbGVJZDogZmlsZUlkLFxyXG4gICAgICAgICAgc3RhdHVzOiByZXMuY29kZSA9PSAyMDAgPyBcInN1Y2Nlc3NcIiA6IFwiZXJyb3JcIixcclxuICAgICAgICB9KTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgaWYgKHRoaXMudXBsb2FkU2l6ZSA9PSB0aGlzLnVwbG9hZEluZ1NpemUpIHtcclxuICAgICAgICB0aGlzLm9uQ29tcGxldGUodGhpcy51cGxvYWRJbmdMaXN0KTtcclxuICAgICAgICBvcHRpb25zLm9uRXJyb3IoKTtcclxuICAgICAgfVxyXG4gICAgICBvbkNvbXBsZXRlICYmXHJcbiAgICAgICAgb25Db21wbGV0ZSh7IGZpbGU6IG9wdGlvbnMuZmlsZSwgZmlsZUlkOiBcIlwiLCBzdGF0dXM6IFwiZXJyb3JcIiB9KTtcclxuICAgIH1cclxuICB9O1xyXG4gIG9uRGVsZXRlKGZpbGUpIHtcclxuICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IG9uTGlzdENoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5ld0xpc3Q6IGFueSA9IFtdO1xyXG4gICAgZmlsZUxpc3QubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgLy/pgJrov4fmlofku7blkI3liKTmlq3vvIzkuIrkvKDmmK/mlofku7blkI3mmK/llK/kuIDnmoRcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGl0ZW0ubmFtZSAhPT0gZmlsZS5uYW1lIHx8XHJcbiAgICAgICAgaXRlbS5maWxlSWQgIT09IGZpbGUuZmlsZUlkIHx8XHJcbiAgICAgICAgaXRlbS51aWQgIT09IGZpbGUudWlkXHJcbiAgICAgICkge1xyXG4gICAgICAgIG5ld0xpc3QucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZmlsZUxpc3Q6IG5ld0xpc3QsXHJcbiAgICB9KTtcclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgfVxyXG4gIHJlbmRlcigpOiBSZWFjdC5SZWFjdE5vZGUge1xyXG4gICAgbGV0IHtcclxuICAgICAgZmlsZUxpc3QsXHJcbiAgICAgIGZpbGVDYXJkLFxyXG4gICAgICBzaG93VXBsb2FkTGlzdCA9IHtcclxuICAgICAgICBzaG93RG93bmxvYWRJY29uOiB0cnVlLFxyXG4gICAgICAgIHNob3dQcmV2aWV3SWNvbjogZmFsc2UsXHJcbiAgICAgICAgc2hvd1JlbW92ZUljb246IHRydWUsXHJcbiAgICAgICAgZG93bmxvYWRJY29uOiBudWxsLFxyXG4gICAgICAgIHJlbW92ZUljb246IG51bGwsXHJcbiAgICAgICAgcHJldmlld0ljb246IG51bGwsXHJcbiAgICAgIH0gYXMgYW55LFxyXG4gICAgICByZXF1ZXN0Q29uZmlnID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5ld3Byb3BzID0gb21pdCh0aGlzLnByb3BzLCBbXHJcbiAgICAgIFwic2xpY2VTaXplXCIsXHJcbiAgICAgIFwibWF4U2l6ZVwiLFxyXG4gICAgICBcIm9uQ29tcGxldGVcIixcclxuICAgICAgXCJvblByb2Nlc3NcIixcclxuICAgICAgXCJhbGxvd0ZpbGVTdWZmaXhcIixcclxuICAgICAgXCJ1c2VEZWZhdWx0TGlzdFwiLFxyXG4gICAgICBcImZpbGVDYXJkXCIsXHJcbiAgICAgIFwib25MaXN0Q2hhbmdlXCIsXHJcbiAgICAgIFwibmV3VmVyc2lvblwiLFxyXG4gICAgICBcInJlcXVlc3RDb25maWdcIixcclxuICAgIF0pO1xyXG4gICAgbGV0IGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgY3VzdG9tUmVxdWVzdDogdGhpcy5jdXN0b21SZXF1ZXN0LmJpbmQodGhpcyksXHJcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgfSBhcyBJVXBsb2FkUHJvcHM7XHJcbiAgICBpZiAoZmlsZUNhcmQpIHtcclxuICAgICAgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcclxuICAgICAgICBpdGVtUmVuZGVyOiAob3JpZ2luTm9kZSwgZmlsZTogYW55LCBjdXJyRmlsZUxpc3QpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG5hbWUgPSBmaWxlLm5hbWUgfHwgZmlsZS5maWxlTmFtZTtcclxuICAgICAgICAgIGNvbnN0IG5hbWVzID0gbmFtZT8uc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgICAgY29uc3Qgc3VmZml4ID0gbmFtZXMgPyBuYW1lc1tuYW1lcy5sZW5ndGggLSAxXSA6IFwiXCI7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZmlsZS1pdGVtXCIpfT5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50X2Vycm9yXCIpXTogZmlsZS5zdGF0dXMgPT0gXCJlcnJvclwiLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm1hcmstcGljdHVyZVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxGaWxlSWNvbiBzdWZmaXg9e3N1ZmZpeH0gZmlsZUlkPXtmaWxlLmZpbGVJZH0gLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5hbWVcIil9PlxyXG4gICAgICAgICAgICAgICAgICB7ZmlsZS5uYW1lIHx8IGZpbGUuZmlsZU5hbWV9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LnNob3dQcmV2aWV3SWNvbiAmJiBmaWxlLnN0YXR1cyA9PSBcImRvbmVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblByZXZpZXcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUHJldmlldyhmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aWV3RG9jdW1lbnQoZmlsZS5maWxlSWQsIHJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb24gPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPEV5ZU91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3Quc2hvd0Rvd25sb2FkSWNvbiAmJiBmaWxlLnN0YXR1cyA9PSBcImRvbmVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkRvd25sb2FkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkRvd25sb2FkKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkKGZpbGUuZmlsZUlkLCB0cnVlLCByZXF1ZXN0Q29uZmlnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxEb3dubG9hZE91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3Quc2hvd1JlbW92ZUljb24gJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25SZW1vdmUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUmVtb3ZlKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25EZWxldGUoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvbiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RGVsZXRlT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICB7ZmlsZS5zdGF0dXMgPT0gXCJ1cGxvYWRpbmdcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwicHJvY2Vzc1wiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInBlcmNlbnRcIil9XHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IGZpbGUucGVyY2VudCArIFwiJVwiIH19XHJcbiAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcclxuICAgICAgICBvbkRvd25sb2FkOiAoZmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBkb3dubG9hZChmaWxlLmZpbGVJZCwgdHJ1ZSwgcmVxdWVzdENvbmZpZyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvblJlbW92ZTogKGZpbGUpID0+IHtcclxuICAgICAgICAgIHRoaXMub25EZWxldGUoZmlsZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvblByZXZpZXc6IChmaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmaWxlPy5maWxlSWQpIHtcclxuICAgICAgICAgICAgcHJldmlld0RvY3VtZW50KGZpbGUuZmlsZUlkLCByZXF1ZXN0Q29uZmlnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHNob3dVcGxvYWRMaXN0OiB7IC4uLnNob3dVcGxvYWRMaXN0IH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8PlxyXG4gICAgICAgIDxVcGxvYWRcclxuICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XHJcbiAgICAgICAgICB7Li4ubmV3cHJvcHN9XHJcbiAgICAgICAgICBiZWZvcmVVcGxvYWQ9e3RoaXMuYmVmb3JlVXBsb2FkLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICBmaWxlTGlzdD17dGhpcy5zdGF0ZS5maWxlTGlzdH1cclxuICAgICAgICAvPlxyXG4gICAgICA8Lz5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUtBLEtBQUssTUFBTSxPQUFPO0FBRTlCLE9BQU9DLElBQUksTUFBTSxVQUFVO0FBQzNCLE9BQU9DLE9BQU8sTUFBTSxZQUFZO0FBRWhDLE9BQU9DLElBQUksTUFBTSxTQUFTO0FBQzFCLFNBQVNDLE9BQU8sUUFBUSxhQUFhO0FBQ3JDLE9BQU9DLE1BQU0sTUFBTSxjQUFjO0FBQ2pDLE9BQU9DLEdBQUcsTUFBTSxZQUFZO0FBQzVCLE9BQU9DLFFBQVEsTUFBTSxvQkFBb0I7QUFDekMsU0FDRUMsY0FBYyxFQUNkQyxnQkFBZ0IsRUFDaEJDLFdBQVcsUUFDTixtQkFBbUI7O0FBRTFCOztBQUVBLE1BQU07RUFBRUMsTUFBTTtFQUFFQyxRQUFRO0VBQUVDLGVBQWU7RUFBRUM7QUFBYSxDQUFDLEdBQUdiLElBQUk7QUFlaEUsZUFBZSxNQUFNYyxTQUFTLFNBQVNmLEtBQUssQ0FBQ2dCLGFBQWEsQ0FBb0I7RUFBQUMsWUFBQTtJQUFBLFNBQUFDLFNBQUE7SUFBQUMsZUFBQSxnQkFDcEU7TUFDTkMsUUFBUSxFQUFFLEVBQUU7TUFDWkMsTUFBTSxFQUFFLEVBQUU7TUFDVkMsYUFBYSxFQUFFLEVBQUU7TUFDakJDLFNBQVMsRUFBRTtJQUNiLENBQUM7SUFBQUosZUFBQSx3QkFDZSxDQUFDO0lBQUFBLGVBQUEscUJBQ0osQ0FBQztJQUFBQSxlQUFBLHdCQUNFLEVBQUU7SUFBQUEsZUFBQSx3QkEwTUYsTUFBT0ssT0FBTyxJQUFLO01BQ2pDLE1BQU12QixJQUFJLEdBQUd1QixPQUFPLENBQUN2QixJQUFJO01BQ3pCLE1BQU07UUFBRXdCLFVBQVU7UUFBRUMsU0FBUztRQUFFQyxTQUFTO1FBQUVDLFVBQVUsR0FBRztNQUFLLENBQUMsR0FBRyxJQUFJLENBQUNDLEtBQUs7TUFDMUUsTUFBTUMsVUFBVSxHQUFJQyxhQUFrQixJQUFL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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Upload.js","names":["React","file","message","omit","getLess","styles","cls","FileIcon","DeleteOutlined","DownloadOutlined","EyeOutlined","upload","download","previewDocument","Dragger","_Upload","NscUpload","PureComponent","constructor","arguments","_defineProperty","fileList","viewId","fileListStore","fileNames","options","onComplete","onProcess","sliceSize","props","onProgress","totalProgress","percent","res","partSize","fileId","code","data","attachId","onSuccess","onError","status","e","componentDidMount","convertFileList","list","newFileList","oldList","map","item","temp","_objectSpread","name","fileName","type","size","push","setState","componentDidUpdate","preProps","preState","JSON","stringify","state","getFileList","setFileList","beforeUpload","ofileList","maxSize","allowFileSuffix","checkSameFile","maxCount","showUploadList","propsList","onListChange","checkFileType","error","concat","checkList","indexOf","newList","uid","length","i","splice","names","split","suffix","_ref","newFile","url","window","localStorage","getItem","onDelete","render","fileCard","showDownloadIcon","showPreviewIcon","showRemoveIcon","downloadIcon","removeIcon","previewIcon","newprops","defaultProps","customRequest","bind","multiple","itemRender","originNode","currFileList","createElement","className","onClick","onPreview","style","cursor","onDownload","onRemove","width","Fragment","_extends"],"sources":["../../../src/components/base/upload/Upload.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Upload, UploadProps } from \"antd\";\r\nimport file from \"nsc-file\";\r\nimport message from \"../message\";\r\nimport withZhLocale from \"../common/withZhLocale\";\r\nimport omit from \"omit.js\";\r\nimport { getLess } from \"../../utils\";\r\nimport styles from \"./index.less\";\r\nimport cls from \"classnames\";\r\nimport FileIcon from \"../common/FileIcon\";\r\nimport {\r\n DeleteOutlined,\r\n DownloadOutlined,\r\n EyeOutlined,\r\n} from \"@ant-design/icons\";\r\nimport PdfViewer from \"../pdfviwer\";\r\nconst { upload, download, previewDocument } = file;\r\nconst { Dragger } = Upload;\r\ninterface IUploadProps extends UploadProps {\r\n sliceSize?: number;\r\n maxSize?: number | boolean;\r\n onProcess?: (process) => void;\r\n onComplete?: ({ file, fileId, status }) => void;\r\n allowFileSuffix?: Array<String>; //允许上传扩展名,不带.\r\n useDefaultList?: boolean; //是否使用默认的fileList\r\n fileCard?: boolean;\r\n onListChange?: any;\r\n checkSameFile?: boolean;\r\n}\r\nexport default class NscUpload extends React.PureComponent<IUploadProps, any> {\r\n static Dragger = Dragger;\r\n state = { fileList: [], viewId: \"\", fileListStore: [], fileNames: [] };\r\n componentDidMount() {\r\n if (this.props.fileList) {\r\n this.convertFileList();\r\n }\r\n }\r\n convertFileList(list?: Array<Object>) {\r\n const { fileList } = this.props;\r\n const newFileList = [];\r\n let oldList = list ? list : fileList;\r\n oldList.map((item: any) => {\r\n let temp = {\r\n ...item,\r\n name: item.name || item.fileName,\r\n type: item.type,\r\n size: item.size,\r\n };\r\n newFileList.push(temp);\r\n });\r\n this.setState({\r\n fileList: newFileList,\r\n fileListStore: fileList,\r\n });\r\n }\r\n componentDidUpdate(preProps, preState) {\r\n if (this.props.fileList) {\r\n if (\r\n JSON.stringify(this.props.fileList) !==\r\n JSON.stringify(this.state.fileListStore)\r\n ) {\r\n this.convertFileList();\r\n }\r\n }\r\n }\r\n getFileList() {\r\n return this.state.fileList;\r\n }\r\n setFileList(fileList: Array<Object>) {\r\n this.convertFileList(fileList);\r\n }\r\n async beforeUpload(file, ofileList) {\r\n let {\r\n maxSize = 100,\r\n allowFileSuffix,\r\n checkSameFile = true,\r\n maxCount,\r\n showUploadList,\r\n fileList: propsList,\r\n onListChange,\r\n } = this.props;\r\n let { fileList, fileListStore } = this.state;\r\n let size: number;\r\n if (allowFileSuffix && !this.checkFileType(file)) {\r\n message.error(\r\n `${file.name}文件类型不允许上传,请上传后缀为${allowFileSuffix}的类型文件!`\r\n );\r\n return false;\r\n }\r\n if (maxSize !== false) {\r\n if (maxSize === true) {\r\n maxSize = 100;\r\n }\r\n size = maxSize * 1024 * 1024;\r\n if (size < file.size) {\r\n message.error(`${file.name}文件大小超过${maxSize}M,请重新上传!`);\r\n return false;\r\n }\r\n }\r\n let fileNames = [];\r\n if (checkSameFile) {\r\n const checkList = this.props.fileList ? fileListStore : fileList;\r\n checkList.map((item) => {\r\n fileNames.push(item.name || item.fileName);\r\n });\r\n\r\n if (fileNames.indexOf(file.name) > -1 && showUploadList !== false) {\r\n message.error(`文件${file.name}已在上传列表中,请重新选择文件!`);\r\n return false;\r\n }\r\n }\r\n\r\n if (this.props.beforeUpload) {\r\n const res = await this.props.beforeUpload(file, ofileList);\r\n if (res === false) {\r\n return false;\r\n }\r\n }\r\n const newList = [...fileList];\r\n ofileList.map(async (item) => {\r\n if (\r\n !(\r\n (allowFileSuffix && !this.checkFileType(item)) ||\r\n size < item.size ||\r\n (checkSameFile && fileNames.indexOf(item.name) > -1)\r\n )\r\n ) {\r\n const temp = {\r\n fileName: item.name,\r\n percent: 0,\r\n status: \"uploading\",\r\n uid: item.uid,\r\n name: item.name,\r\n type: item.type,\r\n size: item.size,\r\n };\r\n newList.push(temp);\r\n }\r\n });\r\n\r\n if (maxCount && newList.length > maxCount) {\r\n let length = newList.length - maxCount;\r\n for (let i = 0; i < length; i++) {\r\n newList.splice(0, 1);\r\n }\r\n }\r\n onListChange && onListChange(newList);\r\n this.setState({ fileList: newList });\r\n }\r\n checkFileType(file) {\r\n const { allowFileSuffix } = this.props;\r\n const names = file.name.split(\".\");\r\n const suffix = names[names.length - 1];\r\n if (allowFileSuffix.indexOf(suffix) > -1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n onProcess({ percent, file }: any) {\r\n const { fileList } = this.state;\r\n const { onListChange } = this.props;\r\n const newList: any = [];\r\n fileList.map((item: any) => {\r\n const newFile = { ...item };\r\n if (file.uid == item.uid) {\r\n newFile.percent = percent;\r\n }\r\n newList.push(newFile);\r\n });\r\n this.setState({\r\n fileList: newList,\r\n });\r\n onListChange && onListChange(fileList);\r\n }\r\n onComplete(file) {\r\n const { fileList } = this.state;\r\n const newList: any = [];\r\n fileList.map((item: any) => {\r\n const newFile = { ...item };\r\n if (file.file.uid == item.uid) {\r\n newFile.status = file.status == \"success\" ? \"done\" : file.status;\r\n newFile.fileId = file.fileId;\r\n newFile.url = `/api/jquick-resource/oss/endpoint/download-files?attachId=${\r\n file.fileId\r\n }&_tpk=${window.localStorage.getItem(\"token\")}`;\r\n }\r\n newList.push(newFile);\r\n });\r\n this.setState({\r\n fileList: newList,\r\n });\r\n const { onListChange } = this.props;\r\n onListChange && onListChange(newList);\r\n }\r\n customRequest = async (options) => {\r\n const file = options.file;\r\n const { onComplete, onProcess, sliceSize } = this.props;\r\n const onProgress = (totalProgress: any) => {\r\n options.onProgress({ percent: totalProgress }, file);\r\n this.onProcess({ percent: totalProgress, file: file });\r\n onProcess && onProcess({ percent: totalProgress, file: file });\r\n };\r\n try {\r\n const res: any = await upload({\r\n file: file,\r\n onProgress: onProgress,\r\n partSize: sliceSize,\r\n });\r\n let fileId = null;\r\n if (res.code == 200) {\r\n fileId = res.data.attachId;\r\n options.onSuccess();\r\n } else {\r\n options.onError();\r\n }\r\n this.onComplete({\r\n file: options.file,\r\n fileId: fileId,\r\n status: res.code == 200 ? \"success\" : \"error\",\r\n });\r\n onComplete &&\r\n onComplete({\r\n file: options.file,\r\n fileId: fileId,\r\n status: res.code == 200 ? \"success\" : \"error\",\r\n });\r\n } catch (e) {\r\n this.onComplete({\r\n file: options.file,\r\n fileId: \"\",\r\n status: \"error\",\r\n });\r\n onComplete &&\r\n onComplete({ file: options.file, fileId: \"\", status: \"error\" });\r\n options.onError();\r\n }\r\n };\r\n onDelete(file) {\r\n const { fileList } = this.state;\r\n const { onListChange } = this.props;\r\n const newList: any = [];\r\n fileList.map((item: any) => {\r\n //通过文件名判断,上传是文件名是唯一的\r\n if (\r\n item.name !== file.name ||\r\n item.fileId !== file.fileId ||\r\n item.uid !== file.uid\r\n ) {\r\n newList.push(item);\r\n }\r\n });\r\n this.setState({\r\n fileList: newList,\r\n });\r\n onListChange && onListChange(newList);\r\n }\r\n render(): React.ReactNode {\r\n let {\r\n fileList,\r\n fileCard,\r\n showUploadList = {\r\n showDownloadIcon: true,\r\n showPreviewIcon: false,\r\n showRemoveIcon: true,\r\n downloadIcon: null,\r\n removeIcon: null,\r\n previewIcon: null,\r\n } as any,\r\n } = this.props;\r\n const newprops = omit(this.props, [\r\n \"sliceSize\",\r\n \"maxSize\",\r\n \"onComplete\",\r\n \"onProcess\",\r\n \"allowFileSuffix\",\r\n \"useDefaultList\",\r\n \"fileCard\",\r\n \"onListChange\",\r\n ]);\r\n let defaultProps = {\r\n customRequest: this.customRequest.bind(this),\r\n multiple: true,\r\n } as IUploadProps;\r\n if (fileCard) {\r\n defaultProps = {\r\n ...defaultProps,\r\n itemRender: (originNode, file: any, currFileList) => {\r\n const name = file.name || file.fileName;\r\n const names = name?.split(\".\");\r\n const suffix = names ? names[names.length - 1] : \"\";\r\n return (\r\n <div className={getLess(styles, \"file-item\")}>\r\n <div\r\n className={cls(getLess(styles, \"content\"), {\r\n [getLess(styles, \"content_error\")]: file.status == \"error\",\r\n })}\r\n >\r\n <div className={getLess(styles, \"mark-picture\")}>\r\n <FileIcon suffix={suffix} fileId={file.fileId} />\r\n </div>\r\n <div className={getLess(styles, \"name\")}>\r\n {file.name || file.fileName}\r\n </div>\r\n <div className={getLess(styles, \"icon\")}>\r\n {showUploadList.showPreviewIcon && file.status == \"done\" && (\r\n <div\r\n onClick={() => {\r\n if (this.props.onPreview) {\r\n this.props.onPreview(file);\r\n } else {\r\n previewDocument(file.fileId);\r\n }\r\n }}\r\n style={{ cursor: \"pointer\" }}\r\n >\r\n {showUploadList.downloadIcon ? (\r\n showUploadList.downloadIcon\r\n ) : (\r\n <EyeOutlined />\r\n )}\r\n </div>\r\n )}\r\n {showUploadList.showDownloadIcon && file.status == \"done\" && (\r\n <div\r\n onClick={() => {\r\n if (this.props.onDownload) {\r\n this.props.onDownload(file);\r\n } else {\r\n download(file.fileId);\r\n }\r\n }}\r\n style={{ cursor: \"pointer\" }}\r\n >\r\n {showUploadList.downloadIcon ? (\r\n showUploadList.downloadIcon\r\n ) : (\r\n <DownloadOutlined />\r\n )}\r\n </div>\r\n )}\r\n {showUploadList.showRemoveIcon && (\r\n <div\r\n onClick={() => {\r\n if (this.props.onRemove) {\r\n this.props.onRemove(file);\r\n } else {\r\n this.onDelete(file);\r\n }\r\n }}\r\n style={{ cursor: \"pointer\" }}\r\n >\r\n {showUploadList.downloadIcon ? (\r\n showUploadList.downloadIcon\r\n ) : (\r\n <DeleteOutlined />\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n {file.status == \"uploading\" && (\r\n <div className={getLess(styles, \"process\")}>\r\n <div\r\n className={getLess(styles, \"percent\")}\r\n style={{ width: file.percent + \"%\" }}\r\n ></div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n },\r\n };\r\n } else {\r\n defaultProps = {\r\n ...defaultProps,\r\n onDownload: (file: any) => {\r\n download(file.fileId);\r\n },\r\n onRemove: (file) => {\r\n this.onDelete(file);\r\n },\r\n onPreview: (file: any) => {\r\n if (file?.fileId) {\r\n previewDocument(file.fileId);\r\n }\r\n },\r\n showUploadList: { ...showUploadList },\r\n };\r\n }\r\n return (\r\n <>\r\n <Upload\r\n {...defaultProps}\r\n {...newprops}\r\n beforeUpload={this.beforeUpload.bind(this)}\r\n fileList={this.state.fileList}\r\n // onChange={({ file, fileList, event }) => {\r\n // console.log(\"onChangefile\", file);\r\n // console.log(\"onChangefileList\", fileList);\r\n // const { onChange, onListChange } = this.props;\r\n // this.setState({\r\n // fileList: fileList,\r\n // });\r\n // onListChange && onListChange(fileList);\r\n // onChange && onChange({ file, fileList, event });\r\n // }}\r\n />\r\n </>\r\n );\r\n }\r\n}\r\n// export default withZhLocale(NscUpload);\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Upload.js","names":["React","file","message","omit","getLess","styles","cls","FileIcon","DeleteOutlined","DownloadOutlined","EyeOutlined","upload","download","previewDocument","previewImage","NscUpload","PureComponent","constructor","arguments","_defineProperty","fileList","viewId","fileListStore","fileNames","options","onComplete","onProcess","sliceSize","newVersion","props","onProgress","totalProgress","percent","res","partSize","requestConfig","uploadIngSize","fileId","ImgRes","code","data","attachId","onSuccess","listType","onError","uploadIngList","push","status","url","uploadSize","e","componentDidMount","convertFileList","list","console","log","newFileList","oldList","i","length","item","temp","_objectSpread","name","fileName","type","size","setState","componentDidUpdate","preProps","preState","JSON","stringify","state","getFileList","setFileList","beforeUpload","ofileList","maxSize","allowFileSuffix","checkSameFile","maxCount","showUploadList","propsList","onListChange","checkFileType","error","concat","checkList","map","indexOf","newList","uid","splice","names","split","suffix","_ref","newFile","files","index","window","localStorage","getItem","prefix","onDelete","render","fileCard","showDownloadIcon","showPreviewIcon","showRemoveIcon","downloadIcon","removeIcon","previewIcon","newprops","defaultProps","customRequest","bind","multiple","itemRender","originNode","currFileList","createElement","className","onClick","onPreview","style","cursor","onDownload","onRemove","width","Fragment","_Upload","_extends"],"sources":["../../../src/components/base/upload/Upload.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Upload, UploadProps } from \"antd\";\r\nimport file from \"nsc-file\";\r\nimport message from \"../message\";\r\nimport withZhLocale from \"../common/withZhLocale\";\r\nimport omit from \"omit.js\";\r\nimport { getLess } from \"../../utils\";\r\nimport styles from \"./index.less\";\r\nimport cls from \"classnames\";\r\nimport FileIcon from \"../common/FileIcon\";\r\nimport {\r\n DeleteOutlined,\r\n DownloadOutlined,\r\n EyeOutlined,\r\n} from \"@ant-design/icons\";\r\nimport PdfViewer from \"../pdfviwer\";\r\n// import NscUploadDragger from \"./Dragger\";\r\nimport { parse } from \"@babel/core\";\r\nconst { upload, download, previewDocument, previewImage } = file;\r\n\r\ninterface IUploadProps extends UploadProps {\r\n sliceSize?: number;\r\n maxSize?: number | boolean;\r\n onProcess?: (process) => void;\r\n onComplete?: ({ file, fileId, status }) => void;\r\n allowFileSuffix?: Array<String>; //允许上传扩展名,不带.\r\n useDefaultList?: boolean; //是否使用默认的fileList\r\n fileCard?: boolean;\r\n onListChange?: any;\r\n checkSameFile?: boolean;\r\n requestConfig?: any;\r\n newVersion?: boolean;\r\n}\r\nexport default class NscUpload extends React.PureComponent<IUploadProps, any> {\r\n state = {\r\n fileList: [],\r\n viewId: \"\",\r\n fileListStore: [],\r\n fileNames: [],\r\n };\r\n uploadIngSize = 0;\r\n uploadSize = 0;\r\n uploadIngList = [];\r\n componentDidMount() {\r\n if (this.props.fileList) {\r\n this.convertFileList();\r\n }\r\n }\r\n async convertFileList(list?: Array<Object>) {\r\n const { fileList, listType } = this.props;\r\n console.log(\"fileList\", [...fileList]);\r\n const newFileList = [];\r\n let oldList = list ? list : fileList;\r\n console.log(\"oldList\", [...oldList]);\r\n for (let i = 0; i < oldList.length; i++) {\r\n let item: any = oldList[i];\r\n let temp = {\r\n ...item,\r\n status: item.status,\r\n name: item.name || item.fileName,\r\n type: item.type,\r\n size: item.size,\r\n url: item.url,\r\n } as any;\r\n if (listType == \"picture-card\" && !item.url && item.fileId) {\r\n let res: any = await previewImage(\r\n item.fileId,\r\n this.props.requestConfig\r\n );\r\n if (res.code == 200) {\r\n temp.url = res.data;\r\n }\r\n }\r\n newFileList.push(temp);\r\n }\r\n // oldList.map(async (item: any, index) => {\r\n // let temp = {\r\n // ...item,\r\n // status: item.status,\r\n // name: item.name || item.fileName,\r\n // type: item.type,\r\n // size: item.size,\r\n // url: item.url,\r\n // } as any;\r\n // newFileList.push(temp);\r\n // });\r\n this.setState({\r\n fileList: [...newFileList],\r\n fileListStore: [...fileList],\r\n });\r\n }\r\n componentDidUpdate(preProps, preState) {\r\n if (this.props.fileList) {\r\n if (\r\n JSON.stringify(this.props.fileList) !==\r\n JSON.stringify(this.state.fileListStore)\r\n ) {\r\n this.convertFileList(this.props.fileList);\r\n }\r\n }\r\n }\r\n getFileList() {\r\n return this.state.fileList;\r\n }\r\n setFileList(fileList: Array<Object>) {\r\n this.convertFileList(fileList);\r\n }\r\n async beforeUpload(file, ofileList) {\r\n let {\r\n maxSize = 100,\r\n allowFileSuffix,\r\n checkSameFile = true,\r\n maxCount,\r\n showUploadList,\r\n fileList: propsList,\r\n onListChange,\r\n } = this.props;\r\n let { fileList, fileListStore } = this.state;\r\n let size: number;\r\n if (allowFileSuffix && !this.checkFileType(file)) {\r\n message.error(\r\n `${file.name}文件类型不允许上传,请上传后缀为${allowFileSuffix}的类型文件!`\r\n );\r\n return false;\r\n }\r\n if (maxSize !== false) {\r\n if (maxSize === true) {\r\n maxSize = 100;\r\n }\r\n size = maxSize * 1024 * 1024;\r\n if (size < file.size) {\r\n message.error(`${file.name}文件大小超过${maxSize}M,请重新上传!`);\r\n return false;\r\n }\r\n }\r\n let fileNames = [];\r\n if (checkSameFile) {\r\n const checkList = this.props.fileList ? fileListStore : fileList;\r\n checkList.map((item) => {\r\n fileNames.push(item.name || item.fileName);\r\n });\r\n\r\n if (fileNames.indexOf(file.name) > -1 && showUploadList !== false) {\r\n message.error(`文件${file.name}已在上传列表中,请重新选择文件!`);\r\n return false;\r\n }\r\n }\r\n\r\n if (this.props.beforeUpload) {\r\n const res = await this.props.beforeUpload(file, ofileList);\r\n if (res === false) {\r\n return false;\r\n }\r\n }\r\n const newList = [...fileList];\r\n ofileList.map(async (item) => {\r\n if (\r\n !(\r\n (allowFileSuffix && !this.checkFileType(item)) ||\r\n size < item.size ||\r\n (checkSameFile && fileNames.indexOf(item.name) > -1)\r\n )\r\n ) {\r\n const temp = {\r\n fileName: item.name,\r\n percent: 0,\r\n status: \"uploading\",\r\n uid: item.uid,\r\n name: item.name,\r\n type: item.type,\r\n size: item.size,\r\n };\r\n newList.push(temp);\r\n }\r\n });\r\n\r\n if (maxCount && newList.length > maxCount) {\r\n let length = newList.length - maxCount;\r\n for (let i = 0; i < length; i++) {\r\n newList.splice(0, 1);\r\n }\r\n }\r\n onListChange && onListChange(newList);\r\n this.setState({ fileList: newList });\r\n this.uploadSize = ofileList.length;\r\n }\r\n checkFileType(file) {\r\n const { allowFileSuffix } = this.props;\r\n const names = file.name.split(\".\");\r\n const suffix = names[names.length - 1];\r\n if (allowFileSuffix.indexOf(suffix) > -1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n onProcess({ percent, file }: any) {\r\n const { fileList } = this.state;\r\n const { onListChange } = this.props;\r\n const newList: any = [];\r\n fileList.map((item: any) => {\r\n const newFile = { ...item };\r\n if (file.uid == item.uid) {\r\n newFile.percent = percent;\r\n }\r\n newList.push(newFile);\r\n });\r\n this.setState({\r\n fileList: newList,\r\n });\r\n onListChange && onListChange(fileList);\r\n }\r\n async onComplete(files) {\r\n this.uploadIngSize = 0;\r\n this.uploadSize = 0;\r\n this.uploadIngList = [];\r\n const { fileList } = this.state;\r\n const { newVersion = true, requestConfig = {} } = this.props;\r\n const newList: any = [];\r\n fileList.map(async (item: any, index) => {\r\n const newFile = { ...item };\r\n files.map(async (file) => {\r\n if (file.file.uid == item.uid) {\r\n newFile.status = file.status == \"success\" ? \"done\" : file.status;\r\n newFile.fileId = file.fileId;\r\n newFile.url = file.url;\r\n if (!newVersion) {\r\n let url = `/jquick-resource/oss/endpoint/download-files?attachId=${\r\n file.fileId\r\n }&_tpk=${window.localStorage.getItem(\"token\")}`;\r\n newFile.url = requestConfig.prefix\r\n ? requestConfig.prefix + url\r\n : \"/api\" + url;\r\n }\r\n }\r\n });\r\n newList.push(newFile);\r\n });\r\n this.setState({\r\n fileList: [...newList],\r\n });\r\n\r\n const { onListChange } = this.props;\r\n onListChange && onListChange(newList);\r\n }\r\n customRequest = async (options) => {\r\n const file = options.file;\r\n const { onComplete, onProcess, sliceSize, newVersion = true } = this.props;\r\n const onProgress = (totalProgress: any) => {\r\n options.onProgress({ percent: totalProgress }, file);\r\n this.onProcess({ percent: totalProgress, file: file });\r\n onProcess && onProcess({ percent: totalProgress, file: file });\r\n };\r\n try {\r\n const res: any = await upload(\r\n {\r\n file: file,\r\n onProgress: onProgress,\r\n partSize: sliceSize,\r\n },\r\n this.props.requestConfig\r\n );\r\n this.uploadIngSize = this.uploadIngSize + 1;\r\n let fileId = null;\r\n let ImgRes = null;\r\n if (res.code == 200) {\r\n fileId = res.data.attachId;\r\n options.onSuccess();\r\n if (this.props.listType == \"picture-card\" && newVersion) {\r\n ImgRes = await previewImage(fileId, this.props.requestConfig);\r\n }\r\n } else {\r\n options.onError();\r\n }\r\n this.uploadIngList.push({\r\n file: options.file,\r\n fileId: fileId,\r\n status: res.code == 200 ? \"success\" : \"error\",\r\n url: ImgRes ? ImgRes.data : null,\r\n });\r\n if (this.uploadSize == this.uploadIngSize) {\r\n this.onComplete(this.uploadIngList);\r\n }\r\n onComplete &&\r\n onComplete({\r\n file: options.file,\r\n fileId: fileId,\r\n status: res.code == 200 ? \"success\" : \"error\",\r\n });\r\n } catch (e) {\r\n if (this.uploadSize == this.uploadIngSize) {\r\n this.onComplete(this.uploadIngList);\r\n options.onError();\r\n }\r\n onComplete &&\r\n onComplete({ file: options.file, fileId: \"\", status: \"error\" });\r\n }\r\n };\r\n onDelete(file) {\r\n const { fileList } = this.state;\r\n const { onListChange } = this.props;\r\n const newList: any = [];\r\n fileList.map((item: any) => {\r\n //通过文件名判断,上传是文件名是唯一的\r\n if (\r\n item.name !== file.name ||\r\n item.fileId !== file.fileId ||\r\n item.uid !== file.uid\r\n ) {\r\n newList.push(item);\r\n }\r\n });\r\n this.setState({\r\n fileList: newList,\r\n });\r\n onListChange && onListChange(newList);\r\n }\r\n render(): React.ReactNode {\r\n let {\r\n fileList,\r\n fileCard,\r\n showUploadList = {\r\n showDownloadIcon: true,\r\n showPreviewIcon: false,\r\n showRemoveIcon: true,\r\n downloadIcon: null,\r\n removeIcon: null,\r\n previewIcon: null,\r\n } as any,\r\n requestConfig = {},\r\n } = this.props;\r\n const newprops = omit(this.props, [\r\n \"sliceSize\",\r\n \"maxSize\",\r\n \"onComplete\",\r\n \"onProcess\",\r\n \"allowFileSuffix\",\r\n \"useDefaultList\",\r\n \"fileCard\",\r\n \"onListChange\",\r\n \"newVersion\",\r\n \"requestConfig\",\r\n ]);\r\n let defaultProps = {\r\n customRequest: this.customRequest.bind(this),\r\n multiple: true,\r\n } as IUploadProps;\r\n if (fileCard) {\r\n defaultProps = {\r\n ...defaultProps,\r\n itemRender: (originNode, file: any, currFileList) => {\r\n const name = file.name || file.fileName;\r\n const names = name?.split(\".\");\r\n const suffix = names ? names[names.length - 1] : \"\";\r\n return (\r\n <div className={getLess(styles, \"file-item\")}>\r\n <div\r\n className={cls(getLess(styles, \"content\"), {\r\n [getLess(styles, \"content_error\")]: file.status == \"error\",\r\n })}\r\n >\r\n <div className={getLess(styles, \"mark-picture\")}>\r\n <FileIcon suffix={suffix} fileId={file.fileId} />\r\n </div>\r\n <div className={getLess(styles, \"name\")}>\r\n {file.name || file.fileName}\r\n </div>\r\n <div className={getLess(styles, \"icon\")}>\r\n {showUploadList.showPreviewIcon && file.status == \"done\" && (\r\n <div\r\n onClick={() => {\r\n if (this.props.onPreview) {\r\n this.props.onPreview(file);\r\n } else {\r\n previewDocument(file.fileId, requestConfig);\r\n }\r\n }}\r\n style={{ cursor: \"pointer\" }}\r\n >\r\n {showUploadList.downloadIcon ? (\r\n showUploadList.downloadIcon\r\n ) : (\r\n <EyeOutlined />\r\n )}\r\n </div>\r\n )}\r\n {showUploadList.showDownloadIcon && file.status == \"done\" && (\r\n <div\r\n onClick={() => {\r\n if (this.props.onDownload) {\r\n this.props.onDownload(file);\r\n } else {\r\n download(file.fileId, true, requestConfig);\r\n }\r\n }}\r\n style={{ cursor: \"pointer\" }}\r\n >\r\n {showUploadList.downloadIcon ? (\r\n showUploadList.downloadIcon\r\n ) : (\r\n <DownloadOutlined />\r\n )}\r\n </div>\r\n )}\r\n {showUploadList.showRemoveIcon && (\r\n <div\r\n onClick={() => {\r\n if (this.props.onRemove) {\r\n this.props.onRemove(file);\r\n } else {\r\n this.onDelete(file);\r\n }\r\n }}\r\n style={{ cursor: \"pointer\" }}\r\n >\r\n {showUploadList.downloadIcon ? (\r\n showUploadList.downloadIcon\r\n ) : (\r\n <DeleteOutlined />\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n {file.status == \"uploading\" && (\r\n <div className={getLess(styles, \"process\")}>\r\n <div\r\n className={getLess(styles, \"percent\")}\r\n style={{ width: file.percent + \"%\" }}\r\n ></div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n },\r\n };\r\n } else {\r\n defaultProps = {\r\n ...defaultProps,\r\n onDownload: (file: any) => {\r\n download(file.fileId, true, requestConfig);\r\n },\r\n onRemove: (file) => {\r\n this.onDelete(file);\r\n },\r\n onPreview: (file: any) => {\r\n if (file?.fileId) {\r\n previewDocument(file.fileId, requestConfig);\r\n }\r\n },\r\n showUploadList: { ...showUploadList },\r\n };\r\n }\r\n return (\r\n <>\r\n <Upload\r\n {...defaultProps}\r\n {...newprops}\r\n beforeUpload={this.beforeUpload.bind(this)}\r\n fileList={this.state.fileList}\r\n />\r\n </>\r\n );\r\n }\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|