@gsp-svc/formdoc-upload 0.1.24 → 0.1.27
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/gsp-svc-formdoc-upload.umd.js +26 -2
- package/bundles/gsp-svc-formdoc-upload.umd.js.map +1 -1
- package/bundles/gsp-svc-formdoc-upload.umd.min.js +1 -1
- package/bundles/gsp-svc-formdoc-upload.umd.min.js.map +1 -1
- package/esm2015/gsp-svc-formdoc-upload.js +2 -2
- package/esm2015/lib/upload/entity/filestate.js +13 -0
- package/esm2015/lib/upload/entity/uploadfileinfo.js +3 -1
- package/esm2015/lib/upload/file-upload/file-upload.component.js +11 -3
- package/esm2015/public-api.js +2 -1
- package/esm5/gsp-svc-formdoc-upload.js +2 -2
- package/esm5/lib/upload/entity/filestate.js +13 -0
- package/esm5/lib/upload/entity/uploadfileinfo.js +3 -1
- package/esm5/lib/upload/file-upload/file-upload.component.js +13 -3
- package/esm5/public-api.js +2 -1
- package/fesm2015/gsp-svc-formdoc-upload.js +23 -4
- package/fesm2015/gsp-svc-formdoc-upload.js.map +1 -1
- package/fesm5/gsp-svc-formdoc-upload.js +25 -4
- package/fesm5/gsp-svc-formdoc-upload.js.map +1 -1
- package/gsp-svc-formdoc-upload.metadata.json +1 -1
- package/lib/upload/entity/filestate.d.ts +4 -0
- package/lib/upload/entity/uploadfileinfo.d.ts +2 -0
- package/lib/upload/file-upload/file-upload.component.d.ts +2 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -16,6 +16,7 @@ import { UUID } from 'angular2-uuid';
|
|
|
16
16
|
import { ExStorageFileInfo } from '../entity/extensionstoragefileinfo';
|
|
17
17
|
import { LoadingService } from '@farris/ui-loading';
|
|
18
18
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
19
|
+
import { FileState } from '../entity/filestate';
|
|
19
20
|
var FileUploadComponent = /** @class */ (function () {
|
|
20
21
|
function FileUploadComponent(msgService, uploadService, loadService, injector) {
|
|
21
22
|
this.msgService = msgService;
|
|
@@ -127,6 +128,10 @@ var FileUploadComponent = /** @class */ (function () {
|
|
|
127
128
|
*/
|
|
128
129
|
function ($event) {
|
|
129
130
|
var _this = this;
|
|
131
|
+
/** @type {?} */
|
|
132
|
+
var loading = this.loadService.show({
|
|
133
|
+
message: '正在上传文件……'
|
|
134
|
+
});
|
|
130
135
|
this.hasSelectedFile = true;
|
|
131
136
|
this.selectedFiles = document.querySelector('#file');
|
|
132
137
|
if (this.fileCount > 0) {
|
|
@@ -201,7 +206,7 @@ var FileUploadComponent = /** @class */ (function () {
|
|
|
201
206
|
* @return {?}
|
|
202
207
|
*/
|
|
203
208
|
function (x) { return x.fileName == selectedFile.name; })).metadataId;
|
|
204
|
-
_this.uploadFile(uuid, selectedFile, selectedFile.name);
|
|
209
|
+
_this.uploadFile(uuid, selectedFile, selectedFile.name, FileState.Update);
|
|
205
210
|
_this.uploadedFileTotal--;
|
|
206
211
|
if (_this.oldUploadedFileList.find((/**
|
|
207
212
|
* @param {?} x
|
|
@@ -277,6 +282,7 @@ var FileUploadComponent = /** @class */ (function () {
|
|
|
277
282
|
this.files = this.files.slice();
|
|
278
283
|
this.fileAllSelected = false;
|
|
279
284
|
$event.target.value = '';
|
|
285
|
+
loading.close();
|
|
280
286
|
};
|
|
281
287
|
/**
|
|
282
288
|
* @param {?} file
|
|
@@ -293,16 +299,19 @@ var FileUploadComponent = /** @class */ (function () {
|
|
|
293
299
|
* @param {?} uuid
|
|
294
300
|
* @param {?} selectedFile
|
|
295
301
|
* @param {?} fileName
|
|
302
|
+
* @param {?=} state
|
|
296
303
|
* @return {?}
|
|
297
304
|
*/
|
|
298
305
|
FileUploadComponent.prototype.uploadFile = /**
|
|
299
306
|
* @param {?} uuid
|
|
300
307
|
* @param {?} selectedFile
|
|
301
308
|
* @param {?} fileName
|
|
309
|
+
* @param {?=} state
|
|
302
310
|
* @return {?}
|
|
303
311
|
*/
|
|
304
|
-
function (uuid, selectedFile, fileName) {
|
|
312
|
+
function (uuid, selectedFile, fileName, state) {
|
|
305
313
|
var _this = this;
|
|
314
|
+
if (state === void 0) { state = FileState.New; }
|
|
306
315
|
/** @type {?} */
|
|
307
316
|
var fileInfo;
|
|
308
317
|
// let uuid = UUID.UUID();
|
|
@@ -340,6 +349,7 @@ var FileUploadComponent = /** @class */ (function () {
|
|
|
340
349
|
uploadFileInfo.metadataId = uuid;
|
|
341
350
|
uploadFileInfo.fileName = fileInfo.name;
|
|
342
351
|
uploadFileInfo.fileSize = fileInfo.size;
|
|
352
|
+
uploadFileInfo.state = state;
|
|
343
353
|
var _loop_2 = function () {
|
|
344
354
|
/** @type {?} */
|
|
345
355
|
var uploadInfo = new GspFormUploadEntity;
|
|
@@ -1044,4 +1054,4 @@ if (false) {
|
|
|
1044
1054
|
*/
|
|
1045
1055
|
FileUploadComponent.prototype.injector;
|
|
1046
1056
|
}
|
|
1047
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdzcC1zdmMvZm9ybWRvYy11cGxvYWQvIiwic291cmNlcyI6WyJsaWIvdXBsb2FkL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBWSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSXpEO0lBMkRFLDZCQUFvQixVQUEyQixFQUFVLGFBQTRCLEVBQVUsV0FBMkIsRUFBVSxRQUFtQjtRQUFuSSxlQUFVLEdBQVYsVUFBVSxD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M1hBQTJDOztpQkFFNUM7Ozs7Z0JBakJRLGVBQWU7Z0JBRmYsYUFBYTtnQkFVYixjQUFjO2dCQWY4QyxRQUFROzs7eUJBZ0YxRSxLQUFLO3lCQUNMLEtBQUs7MkJBQ0wsS0FBSzs0QkFDTCxLQUFLOzRCQUNMLEtBQUs7eUJBSUwsU0FBUyxTQUFDLFFBQVE7O0lBeWtCckIsMEJBQUM7Q0FBQSxBQTdvQkQsSUE2b0JDO1NBeG9CWSxtQkFBbUI7OztJQUU5QixvQ0FBdUI7O0lBQ3ZCLDZDQUE4Qjs7SUFDOUIsaURBQTBDOztJQUMxQywwQ0FBMkI7O0lBQzNCLDBDQUEyQjs7SUFDM0IsMkNBQTRCOztJQUM1Qix1Q0FBcUI7O0lBQ3JCLHNDQUF5Qjs7SUFDekIseUNBQXlCOztJQUN6Qiw0Q0FBbUI7O0lBRW5CLGdEQUE4Qjs7SUFFOUIsZ0RBQThEOztJQUM5RCxzREFBd0U7O0lBRXhFLDhDQUFpQzs7SUFFakMsOENBQWlDOztJQUVqQyw0Q0FBZ0M7O0lBRWhDLDZDQUErQzs7SUFHL0MsMkNBQWlEOztJQUVqRCwrQ0FBeUQ7O0lBRXpELDRDQUE4Qzs7SUFDOUMsOENBQWdEOztJQUdoRCwrQ0FBbUM7O0lBRW5DLGtEQUFpQzs7SUFDakMsOENBQXVDOztJQUV2Qyw2Q0FBb0M7O0lBRXBDLDRDQUEyQjs7SUFFM0IsZ0RBQThCOztJQUU5QixvREFBdUM7O0lBRXZDLG1EQUEwQjs7SUFDMUIsa0RBQXlCOztJQUd6Qiw4Q0FBdUI7O0lBR3ZCLHFDQUF3Qjs7SUFDeEIscUNBQXdCOztJQUN4Qix1Q0FBZ0M7O0lBQ2hDLHdDQUErQjs7SUFDL0Isd0NBQWtDOztJQUlsQyxxQ0FBOEM7O0lBK2Q5QyxnREFBNEM7Ozs7O0lBeGVoQyx5Q0FBbUM7Ozs7O0lBQUUsNENBQW9DOzs7OztJQUFFLDBDQUFtQzs7Ozs7SUFBRSx1Q0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgVGVtcGxhdGVSZWYsIE9wdGlvbmFsLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmlsZUluZm8gfSBmcm9tICcuLi9lbnRpdHkvZmlsZWluZm8nO1xuaW1wb3J0IHsgRG9jVHlwZSB9IGZyb20gJy4uL2VudGl0eS9kb2N0eXBlJztcbmltcG9ydCB7IEdzcEZvcm1Eb2NJbmZvIH0gZnJvbSAnLi4vZW50aXR5L2dzcGZvcm1kb2NpbmZvJztcbmltcG9ydCB7IE9wZXJhdGluZ01vZGVzIH0gZnJvbSAnLi4vZW50aXR5L29wZXJhdGluZ21vZGVzJztcbmltcG9ydCB7IFVwbG9hZFNlcnZpY2UgfSBmcm9tICcuLi91cGxvYWQuc2VydmljZSc7XG5pbXBvcnQgeyBVcGxvYWRGaWxlSW5mbyB9IGZyb20gJy4uL2VudGl0eS91cGxvYWRmaWxlaW5mbyc7XG5pbXBvcnQgeyBNZXNzYWdlclNlcnZpY2UgfSBmcm9tICdAZmFycmlzL3VpLW1lc3NhZ2VyJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBHc3BGb3JtVXBsb2FkRW50aXR5IH0gZnJvbSAnLi4vZW50aXR5L2dzcGZvcm11cGxvYWRlbnRpdHknO1xuaW1wb3J0IHsgVVVJRCB9IGZyb20gJ2FuZ3VsYXIyLXV1aWQnO1xuaW1wb3J0IHsgU3RvcmFnZUV4dGVuc2lvbiB9IGZyb20gJy4uL2VudGl0eS9zdG9yYWdlZXh0ZW5zaW9uJztcbmltcG9ydCB7IEV4U3RvcmFnZUZpbGVJbmZvIH0gZnJvbSAnLi4vZW50aXR5L2V4dGVuc2lvbnN0b3JhZ2VmaWxlaW5mbyc7XG5pbXBvcnQgeyBEcm9wTGlzdEVudGl0eSB9IGZyb20gJy4uL2VudGl0eS9kcm9wbGlzdGVudGl0eSc7XG5pbXBvcnQgeyBMb2FkaW5nU2VydmljZSB9IGZyb20gJ0BmYXJyaXMvdWktbG9hZGluZyc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IGZpbGxQcm9wZXJ0aWVzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9zcmMvdXRpbC9wcm9wZXJ0eSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZpbGUtdXBsb2FkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS11cGxvYWQuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBmaWxlczogRmlsZUluZm9bXSA9IFtdO1xuICBtZXRhZGF0YUlkTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgdXBsb2FkRmlsZUluZm9MaXN0OiBVcGxvYWRGaWxlSW5mb1tdID0gW107XG4gIGVyckZpbGVMaXN0OiBzdHJpbmdbXSA9IFtdO1xuICBlcnJUeXBlTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgbnVsbEZpbGVMaXN0OiBzdHJpbmdbXSA9IFtdO1xuICBzaG93VHlwZTogbnVtYmVyID0gMDtcbiAgbW91c2VPbjogYm9vbGVhbiA9IGZhbHNlO1xuICBidWZmZXJTaXplID0gMTAyNCAqIDEwMjQ7XG4gIHNlbGVjdGVkRmlsZXM6IGFueTtcblxuICBzZWxlY3RlZEZpbGVDb3VudDogbnVtYmVyID0gMDtcblxuICB1cGxvYWRJY29uQWRkcmVzcyA9ICcvcGxhdGZvcm0vcnVudGltZS9kZnMvaW1hZ2VzL3VwbG9hZC5zdmcnO1xuICB1cGxvYWRMaXR0bGVJY29uQWRkcmVzcyA9ICcvcGxhdGZvcm0vcnVudGltZS9kZnMvaW1hZ2VzL3VwbG9hZEljb24uc3ZnJztcblxuICBoYXNTZWxlY3RlZEZpbGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBmaWxlQWxsU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICB1cGxvYWRQcm9jZXNzID0geyB3aWR0aDogJzAlJyB9O1xuXG4gIGZpbGVUb3RhbENodW5rOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge307XG4gIC8vZmlsZVVwbG9hZFN0YXRlOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9O1xuICAvL2ZsYWc6IG51bWJlciA9IDA7XG4gIHJlcXVlc3RBcnJheTogQXJyYXk8T2JzZXJ2YWJsZTxhbnk+PiA9IG5ldyBBcnJheTtcblxuICByZXF1ZXN0Qm9keUFycmF5OiBBcnJheTxHc3BGb3JtVXBsb2FkRW50aXR5PiA9IG5ldyBBcnJheTtcblxuICB1cGxvYWRlZENodW5rOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge307XG4gIHVwbG9hZGVkUHJvY2VzczogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuXG4gIC8vYWxsU2VsZWN0ZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBzdG9yYWdlRXh0ZW5zaW9uOiBTdG9yYWdlRXh0ZW5zaW9uO1xuXG4gIGRlZmF1bHRQcm9wZXJ0eU5hbWU6IHN0cmluZyA9IFwiXCI7XG4gIHByb3BlcnRpZXNOYW1lczogRHJvcExpc3RFbnRpdHlbXSA9IFtdO1xuXG4gIHF1ZXVlTGlzdFN0eWxlID0geyB3aWR0aDogJzQ4MHB4JyB9O1xuXG4gIGRyb3BMaXN0VmFsdWU6IHN0cmluZyA9IFwiXCI7XG5cbiAgdXBsb2FkZWRGaWxlVG90YWw6IG51bWJlciA9IDA7XG5cbiAgaGF2ZUV4dGVuc2lvblByb3BlcnR5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgdXBsb2FkZWRGaWxlSW5mb0xpc3QgPSBbXTtcbiAgb2xkVXBsb2FkZWRGaWxlTGlzdCA9IFtdO1xuICAvL3VwbG9hZGVkTmFtZUxpc3QgPSBbXTtcblxuICBzYW1lTmFtZUFsbG93ZWQgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbXNnU2VydmljZTogTWVzc2FnZXJTZXJ2aWNlLCBwcml2YXRlIHVwbG9hZFNlcnZpY2U6IFVwbG9hZFNlcnZpY2UsIHByaXZhdGUgbG9hZFNlcnZpY2U6IExvYWRpbmdTZXJ2aWNlLCBwcml2YXRlIGluamVjdG9yPzogSW5qZWN0b3IpIHsgfVxuICBASW5wdXQoKSBmb3JtSWQ6IHN0cmluZztcbiAgQElucHV0KCkgcm9vdElkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZpbGVUeXBlOiBzdHJpbmcgPSBcIipcIjtcbiAgQElucHV0KCkgZmlsZUNvdW50OiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBvbGRJZExpc3Q6IHN0cmluZ1tdID0gW107XG5cbiAgLy9AT3V0cHV0KCkgb25DdXN0b21FdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQFZpZXdDaGlsZCgnb3BDZWxsJykgb3BDZWxsOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vaWYgKHRoaXMuc3RvcmFnZVNlcnZpY2UgIT0gbnVsbCkge1xuICAgIHRoaXMudXBsb2FkU2VydmljZS5nZXRTdG9yYWdlRXh0ZW5zaW9uSW5mbygpLnN1YnNjcmliZShcbiAgICAgIHJlcyA9PiB7XG4gICAgICAgIGlmIChyZXMgIT0gbnVsbCAmJiByZXMuZXJyb3IgPT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuc3RvcmFnZUV4dGVuc2lvbiA9IHJlcztcbiAgICAgICAgICB0aGlzLmRlZmF1bHRQcm9wZXJ0eU5hbWUgPSB0aGlzLnN0b3JhZ2VFeHRlbnNpb24uZGVmYXVsdFByb3BlcnR5TmFtZTtcbiAgICAgICAgICB0aGlzLnByb3BlcnRpZXNOYW1lcy5wdXNoKHsgaWQ6IFwiMFwiLCBuYW1lOiB0aGlzLnN0b3JhZ2VFeHRlbnNpb24uZGVmYXVsdFByb3BlcnR5TmFtZSB9KTtcbiAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgLy8gdGhpcy5wcm9wZXJ0aWVzTmFtZXMucHVzaCguLi4odGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmV4dGVuc2lvblByb3BlcnR5TmFtZUxpc3QpKTtcbiAgICAgICAgICB0aGlzLnN0b3JhZ2VFeHRlbnNpb24uZXh0ZW5zaW9uUHJvcGVydHlOYW1lTGlzdC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcm9wZXJ0aWVzTmFtZXMucHVzaCh7IGlkOiAoKytpKS50b1N0cmluZygpLCBuYW1lOiBlbGVtZW50IH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMucXVldWVMaXN0U3R5bGUud2lkdGggPSAnMzgwcHgnO1xuICAgICAgICAgIHRoaXMuaGF2ZUV4dGVuc2lvblByb3BlcnR5ID0gdHJ1ZTtcblxuICAgICAgICB9XG4gICAgICB9XG4gICAgKVxuXG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlLmdldFJvb3RTZXR0aW5nKHRoaXMucm9vdElkKS5zdWJzY3JpYmUoXG4gICAgICByZXMgPT4ge1xuICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgcmVzLmVycm9yID09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLnNhbWVOYW1lQWxsb3dlZCA9IHJlcy5zYW1lTmFtZUFsbG93ZWQ7XG4gICAgICAgICAgaWYgKCF0aGlzLnNhbWVOYW1lQWxsb3dlZCkge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmdldFVwbG9hZGVkRmlsZUluZm9MaXN0KHRoaXMuZm9ybUlkLCB0aGlzLnJvb3RJZCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICByZXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gbnVsbCAmJiByZXMuZXJyb3IgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdCA9IHJlcztcbiAgICAgICAgICAgICAgICAgIHRoaXMub2xkVXBsb2FkZWRGaWxlTGlzdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzKSk7O1xuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIClcbiAgICBpZiAodGhpcy5vbGRJZExpc3QgIT0gbnVsbCAmJiB0aGlzLm9sZElkTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY2FuY2VsKHRoaXMub2xkSWRMaXN0LCB0aGlzLnJvb3RJZCkuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cblxuICBmaWxlU2VsZWN0ZWQoJGV2ZW50KSB7XG4gICAgdGhpcy5oYXNTZWxlY3RlZEZpbGUgPSB0cnVlO1xuICAgIHRoaXMuc2VsZWN0ZWRGaWxlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNmaWxlJyk7XG5cbiAgICBpZiAodGhpcy5maWxlQ291bnQgPiAwKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEZpbGVzLmZpbGVzLmxlbmd0aCArIHRoaXMuZmlsZXMubGVuZ3RoID4gdGhpcy5maWxlQ291bnQpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkTnVtOiBudW1iZXIgPSAodGhpcy5zZWxlY3RlZEZpbGVzLmZpbGVzLmxlbmd0aCBhcyBudW1iZXIpICsgdGhpcy5maWxlcy5sZW5ndGg7XG4gICAgICAgIHRoaXMubXNnU2VydmljZS53YXJuaW5nKCflt7LpgInmi6knICsgc2VsZWN0ZWROdW0gKyAn5Liq5paH5Lu277yM6LaF6L+H57O757uf6K6+572u55qE5pWw6YeP6ZmQ5Yi2JyArIHRoaXMuZmlsZUNvdW50ICsgJ+S4qu+8jOivt+mHjeaWsOmAieaLqeS4iuS8oOaWh+S7tuOAgicpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy90aGlzLmZsYWcgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZWxlY3RlZEZpbGVzLmZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgc2VsZWN0ZWRGaWxlID0gdGhpcy5zZWxlY3RlZEZpbGVzLmZpbGVzW2ldO1xuICAgICAgLy9zZWxlY3RlZEZpbGUuc2xpY2VcbiAgICAgIGxldCB1dWlkID0gVVVJRC5VVUlEKCk7XG4gICAgICBpZiAoIXRoaXMuc2FtZU5hbWVBbGxvd2VkKSB7XG4gICAgICAgIGlmICh0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmZpbmQoeCA9PiB4LmZpbGVOYW1lID09IHNlbGVjdGVkRmlsZS5uYW1lKSAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gdGhpcy51cGxvYWRlZE5hbWVMaXN0LnB1c2goc2VsZWN0ZWRGaWxlLm5hbWUpO1xuICAgICAgICAgIC8vIHRoaXMubXNnU2VydmljZS5xdWVzdGlvbign5LmL5YmN5bey5LiK5Lyg6L+H5ZCM5ZCN5paH5Lu2OiAnICsgc2VsZWN0ZWRGaWxlLm5hbWUgKyAn77yM6ZyA6KaB5pu/5o2i5LmI77yfJywgKCkgPT4ge1xuICAgICAgICAgIC8vICAgdXVpZCA9IHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuZmluZCh4ID0+IHguZmlsZU5hbWUgPT0gc2VsZWN0ZWRGaWxlLm5hbWUpLm1ldGFkYXRhSWQ7XG4gICAgICAgICAgLy8gICB0aGlzLnVwbG9hZEZpbGUodXVpZCwgc2VsZWN0ZWRGaWxlKTtcbiAgICAgICAgICAvLyB9KVxuICAgICAgICAgIGNvbnN0IG1zZyA9IHRoaXMubXNnU2VydmljZS5zaG93KCd3YXJuaW5nJywgJ+W3suS4iuS8oOi/h+WQjOWQjeaWh+S7tjogJyArIHNlbGVjdGVkRmlsZS5uYW1lLCB7XG4gICAgICAgICAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHRleHQ6ICfph43lkb3lkI0nLFxuICAgICAgICAgICAgICAgICAgY2xzOiAnYnRuIGJ0bi1zZWNvbmRhcnknLFxuICAgICAgICAgICAgICAgICAgaGFuZGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBvbGROYW1lOiBzdHJpbmcgPSBzZWxlY3RlZEZpbGUubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5ld05hbWVcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZsYWcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IDE7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChmbGFnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgbmV3TmFtZSA9IG9sZE5hbWUuc3Vic3RyaW5nKDAsIG9sZE5hbWUubGFzdEluZGV4T2YoJy4nKSkgKyAnKCcgKyBpICsgJyknICsgb2xkTmFtZS5zdWJzdHJpbmcob2xkTmFtZS5sYXN0SW5kZXhPZignLicpKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5maW5kKHggPT4geC5maWxlTmFtZSA9PSBuZXdOYW1lKSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZSh1dWlkLCBzZWxlY3RlZEZpbGUsIG5ld05hbWUpO1xuICAgICAgICAgICAgICAgICAgICBtc2cuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHRleHQ6ICfmm7/mjaInLFxuICAgICAgICAgICAgICAgICAgY2xzOiAnYnRuIGJ0bi1zZWNvbmRhcnknLFxuICAgICAgICAgICAgICAgICAgaGFuZGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHV1aWQgPSB0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmZpbmQoeCA9PiB4LmZpbGVOYW1lID09IHNlbGVjdGVkRmlsZS5uYW1lKS5tZXRhZGF0YUlkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGUodXVpZCwgc2VsZWN0ZWRGaWxlLCBzZWxlY3RlZEZpbGUubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlVG90YWwtLTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub2xkVXBsb2FkZWRGaWxlTGlzdC5maW5kKHggPT4geC5maWxlTmFtZSA9PSBzZWxlY3RlZEZpbGUubmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZVRvdGFsKys7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5zcGxpY2UodGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5pbmRleE9mKHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuZmlsdGVyKHggPT4geC5maWxlTmFtZSA9PSBzZWxlY3RlZEZpbGUubmFtZSlbMF0pLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBtc2cuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHRleHQ6ICflj5bmtognLFxuICAgICAgICAgICAgICAgICAgY2xzOiAnYnRuIGJ0bi1zZWNvbmRhcnknLFxuICAgICAgICAgICAgICAgICAgaGFuZGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG1zZy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gaWYgKHRoaXMuZmlsZXMuZmluZCh4ID0+IHgubmFtZSA9PSBzZWxlY3RlZEZpbGUubmFtZSkgIT0gbnVsbCkge1xuICAgICAgLy8gICB0aGlzLmVyckZpbGVMaXN0LnB1c2goc2VsZWN0ZWRGaWxlLm5hbWUpO1xuICAgICAgLy8gICBjb250aW51ZTtcbiAgICAgIC8vIH1cblxuICAgICAgaWYgKHNlbGVjdGVkRmlsZS5zaXplID09IDApIHtcbiAgICAgICAgdGhpcy5udWxsRmlsZUxpc3QucHVzaChzZWxlY3RlZEZpbGUubmFtZSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvL3RoaXMuZmxhZyArPSBNYXRoLmNlaWwoc2VsZWN0ZWRGaWxlLnNpemUgLyB0aGlzLmJ1ZmZlclNpemUpO1xuICAgICAgLy9sZXQgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHRoaXMudXBsb2FkRmlsZSh1dWlkLCBzZWxlY3RlZEZpbGUsIHNlbGVjdGVkRmlsZS5uYW1lKTtcblxuICAgIH1cbiAgICAvLyBpZiAodGhpcy51cGxvYWRlZE5hbWVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAvLyAgIGxldCBuYW1lOiBzdHJpbmcgPSB0aGlzLmxpc3RUb1N0cmluZyh0aGlzLnVwbG9hZGVkTmFtZUxpc3QpO1xuICAgIC8vICAgdGhpcy5tc2dTZXJ2aWNlLndhcm5pbmcoJ+S5i+WJjeW3suS4iuS8oOi/h+WQjOWQjeaWh+S7tjogJyArIG5hbWUgKyAn6K+36YeN5paw6YCJ5oup5LiK5Lyg5paH5Lu244CCJyk7XG4gICAgLy8gICB0aGlzLnVwbG9hZGVkTmFtZUxpc3QgPSBbXTtcbiAgICAvLyB9XG5cbiAgICBpZiAodGhpcy5lcnJGaWxlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBsZXQgbmFtZTogc3RyaW5nID0gdGhpcy5saXN0VG9TdHJpbmcodGhpcy5lcnJGaWxlTGlzdCk7XG4gICAgICB0aGlzLm1zZ1NlcnZpY2Uud2FybmluZygn5bey5LiK5Lyg5ZCM5ZCN5paH5Lu2OiAnICsgbmFtZSArICfor7fph43mlrDpgInmi6nkuIrkvKDmlofku7bjgIInKTtcbiAgICAgIHRoaXMuZXJyRmlsZUxpc3QgPSBbXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5udWxsRmlsZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IG5hbWU6IHN0cmluZyA9IHRoaXMubGlzdFRvU3RyaW5nKHRoaXMubnVsbEZpbGVMaXN0KTtcbiAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cmluZygwLCBuYW1lLmxlbmd0aCAtIDEpO1xuICAgICAgdGhpcy5tc2dTZXJ2aWNlLndhcm5pbmcoJ+aWh+S7tjogICcgKyBuYW1lICsgJyDlpKflsI/kuLow77yM6K+36YeN5paw6YCJ5oup5LiK5Lyg5paH5Lu244CCJyk7XG4gICAgICB0aGlzLm51bGxGaWxlTGlzdCA9IFtdO1xuICAgIH1cbiAgICAvLyBpZiAodGhpcy5lcnJUeXBlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgLy8gICBsZXQgdHlwZTogc3RyaW5nID0gdGhpcy5saXN0VG9TdHJpbmcodGhpcy5lcnJUeXBlTGlzdCk7XG4gICAgLy8gICB0aGlzLm1zZ1NlcnZpY2Uud2FybmluZygn5LiN5pSv5oyB5LiK5Lyg57G75Z6L5Li6ICcgKyB0eXBlICsgJ+eahOaWh+S7tuivt+mHjeaWsOmAieaLqeS4iuS8oOaWh+S7tuOAgicpO1xuICAgIC8vICAgdGhpcy5lcnJUeXBlTGlzdCA9IFtdO1xuICAgIC8vIH1cbiAgICB0aGlzLmZpbGVzID0gdGhpcy5maWxlcy5zbGljZSgpO1xuICAgIHRoaXMuZmlsZUFsbFNlbGVjdGVkID0gZmFsc2U7XG4gICAgJGV2ZW50LnRhcmdldC52YWx1ZSA9ICcnO1xuICB9XG5cbiAgc2hvd0Vycm9yTWVzc2FnZShmaWxlKSB7XG4gICAgdGhpcy5tc2dTZXJ2aWNlLmVycm9yKCfkuIrkvKDpmYTku7blpLHotKXjgIInICsgZmlsZS5lcnJvck1lc3NhZ2UpO1xuICB9XG5cblxuICB1cGxvYWRGaWxlKHV1aWQ6IHN0cmluZywgc2VsZWN0ZWRGaWxlLCBmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IGZpbGVJbmZvOiBGaWxlSW5mbztcbiAgICAvLyBsZXQgdXVpZCA9IFVVSUQuVVVJRCgpO1xuICAgIC8vcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhzZWxlY3RlZEZpbGUpO1xuICAgIC8vcmVhZGVyLm9ubG9hZCA9IChlKSA9PiB7XG4gICAgZmlsZUluZm8gPSB7XG4gICAgICBpZDogdXVpZCxcbiAgICAgIG5hbWU6IGZpbGVOYW1lLFxuICAgICAgdHlwZTogc2VsZWN0ZWRGaWxlLnR5cGUsXG4gICAgICBzb3VyY2U6IFwiXCIsXG4gICAgICBzaXplOiB0aGlzLmdldEZpbGVTaXplKHNlbGVjdGVkRmlsZS5zaXplKSxcbiAgICAgIGZpbGVTaXplOiBzZWxlY3RlZEZpbGUuc2l6ZSxcbiAgICAgIHBpY0xpc3REaXNwbGF5TmFtZTogdGhpcy5nZXRQaWNMaXN0RGlzcGxheU5hbWUoZmlsZU5hbWUpLFxuICAgICAgcXVldWVMaXN0RGlzcGxheU5hbWU6IHRoaXMuZ2V0UXVldWVEaXNwbGF5TmFtZShmaWxlTmFtZSksXG4gICAgICAvL2NvbnRlbnQ6IHJlYWRlci5yZXN1bHQudG9TdHJpbmcoKSxcbiAgICAgIGhhc1VwbG9hZGVkOiBmYWxzZSxcbiAgICAgIG1vdXNlT246IGZhbHNlLFxuICAgICAgc2VsZWN0ZDogZmFsc2UsXG4gICAgICBpc1VwbG9hZGluZzogdHJ1ZSxcbiAgICAgIHVwbG9hZFJlc3VsdDogZmFsc2UsXG4gICAgICB1cGxvYWRQcm9jZXNzOiAwLFxuICAgICAgZXJyb3JNZXNzYWdlOiBcIlwiLFxuICAgICAgZXh0ZW5zaW9uRHJvcExpc3RJZDogMCxcbiAgICAgIGV4dGVuc2lvbk5hbWU6IFwiXCJcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdG9yYWdlRXh0ZW5zaW9uICE9IG51bGwpXG4gICAgICBmaWxlSW5mby5leHRlbnNpb25OYW1lID0gdGhpcy5kZWZhdWx0UHJvcGVydHlOYW1lO1xuICAgIGxldCBjaHVua1RvdGFsOiBudW1iZXIgPSBNYXRoLmNlaWwoc2VsZWN0ZWRGaWxlLnNpemUgLyB0aGlzLmJ1ZmZlclNpemUpO1xuICAgIGxldCBjaHVua0luZGV4OiBudW1iZXIgPSAwO1xuXG5cbiAgICB0aGlzLmZpbGVUb3RhbENodW5rW3V1aWRdID0gY2h1bmtUb3RhbDtcblxuICAgIGxldCB1cGxvYWRGaWxlSW5mbyA9IG5ldyBVcGxvYWRGaWxlSW5mbygpO1xuXG4gICAgdXBsb2FkRmlsZUluZm8ubWV0YWRhdGFJZCA9IHV1aWQ7XG4gICAgdXBsb2FkRmlsZUluZm8uZmlsZU5hbWUgPSBmaWxlSW5mby5uYW1lO1xuICAgIHVwbG9hZEZpbGVJbmZvLmZpbGVTaXplID0gZmlsZUluZm8uc2l6ZTtcblxuXG4gICAgd2hpbGUgKGNodW5rSW5kZXggPCBjaHVua1RvdGFsKSB7XG4gICAgICBsZXQgdXBsb2FkSW5mbyA9IG5ldyBHc3BGb3JtVXBsb2FkRW50aXR5O1xuICAgICAgdXBsb2FkSW5mby5mb3JtSWQgPSB0aGlzLmZvcm1JZDtcbiAgICAgIHVwbG9hZEluZm8ubW9kZSA9IE9wZXJhdGluZ01vZGVzLlRlbXA7XG4gICAgICB1cGxvYWRJbmZvLnJvb3RJZCA9IHRoaXMucm9vdElkO1xuXG4gICAgICBsZXQgZG9jSW5mbzogR3NwRm9ybURvY0luZm8gPSBuZXcgR3NwRm9ybURvY0luZm87XG5cbiAgICAgIGRvY0luZm8uZmlsZU5hbWUgPSBmaWxlTmFtZTtcbiAgICAgIGRvY0luZm8ubWV0YWRhdGFJZCA9IHV1aWQ7XG4gICAgICBkb2NJbmZvLnRvdGFsID0gY2h1bmtUb3RhbDtcblxuICAgICAgdGhpcy51cGxvYWRlZENodW5rW2RvY0luZm8ubWV0YWRhdGFJZF0gPSAwO1xuXG4gICAgICBsZXQgbmV4dFNpemUgPSBNYXRoLm1pbigoY2h1bmtJbmRleCArIDEpICogdGhpcy5idWZmZXJTaXplLCBzZWxlY3RlZEZpbGUuc2l6ZSk7XG4gICAgICBsZXQgZmlsZURhdGEgPSBzZWxlY3RlZEZpbGUuc2xpY2UoY2h1bmtJbmRleCAqIHRoaXMuYnVmZmVyU2l6ZSwgbmV4dFNpemUpO1xuICAgICAgbGV0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGZpbGVEYXRhKTtcbiAgICAgIGxldCBpbm5lckluZGV4ID0gY2h1bmtJbmRleDtcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIGRvY0luZm8uZmlsZUNvbnRlbnQgPSBidG9hKHJlYWRlci5yZXN1bHQudG9TdHJpbmcoKSk7XG5cbiAgICAgICAgZG9jSW5mby5pbmRleCA9IGlubmVySW5kZXg7XG4gICAgICAgIC8vY2h1bmtJbmRleCsrO1xuICAgICAgICBpZiAodGhpcy5oYXZlRXh0ZW5zaW9uUHJvcGVydHkpXG4gICAgICAgICAgZG9jSW5mby5leFByb3BlcnR5TmFtZSA9IHRoaXMuZGVmYXVsdFByb3BlcnR5TmFtZTtcbiAgICAgICAgLy9kb2NJbmZvLmlzTGFzdCA9IHRydWU7XG4gICAgICAgIHVwbG9hZEluZm8uZG9jSW5mbyA9IGRvY0luZm87XG5cbiAgICAgICAgbGV0IGluZm8gPSB1cGxvYWRJbmZvO1xuXG4gICAgICAgIC8vIHRoaXMucmVxdWVzdEFycmF5LnB1c2godGhpcy51cGxvYWRTZXJ2aWNlLnVwbG9hZEZpbGUodXBsb2FkSW5mbykpO1xuICAgICAgICB0aGlzLnJlcXVlc3RCb2R5QXJyYXkucHVzaChpbmZvKTtcblxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UudXBsb2FkRmlsZShpbmZvKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICBpZiAocmVzICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZXNbdGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKV0udXBsb2FkUmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLmlzVXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLmVycm9yTWVzc2FnZSA9IHJlcy5lcnJvci5NZXNzYWdlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZGVkQ2h1bmtbZG9jSW5mby5tZXRhZGF0YUlkXSsrO1xuICAgICAgICAgICAgdGhpcy5maWxlc1t0aGlzLmZpbGVzLmluZGV4T2YoZmlsZUluZm8pXS51cGxvYWRQcm9jZXNzID0gTnVtYmVyLnBhcnNlSW50KCh0aGlzLnVwbG9hZGVkQ2h1bmtbZG9jSW5mby5tZXRhZGF0YUlkXSAvIHRoaXMuZmlsZVRvdGFsQ2h1bmtbZG9jSW5mby5tZXRhZGF0YUlkXSAqIDEwMCkudG9GaXhlZCgwKSk7XG4gICAgICAgICAgICBpZiAodGhpcy51cGxvYWRlZENodW5rW2RvY0luZm8ubWV0YWRhdGFJZF0gPT0gdGhpcy5maWxlVG90YWxDaHVua1tkb2NJbmZvLm1ldGFkYXRhSWRdKSB7XG4gICAgICAgICAgICAgIHRoaXMuZmlsZXNbdGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKV0udXBsb2FkUmVzdWx0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy5maWxlc1t0aGlzLmZpbGVzLmluZGV4T2YoZmlsZUluZm8pXS5pc1VwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdCA9IHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LmNvbmNhdCh1cGxvYWRGaWxlSW5mbyk7XG4gICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QgPSB0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmNvbmNhdCh1cGxvYWRGaWxlSW5mbyk7XG4gICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlVG90YWwrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy9jb25zb2xlLmxvZyhjaHVua0luZGV4ICsgMSk7XG4gICAgICBjaHVua0luZGV4ID0gY2h1bmtJbmRleCArIDE7XG4gICAgfVxuXG4gICAgbGV0IHR5cGU6IHN0cmluZyA9IHNlbGVjdGVkRmlsZS50eXBlO1xuICAgIGlmICh0eXBlLmluY2x1ZGVzKFwidGlmZlwiKSkge1xuICAgICAgdGhpcy5hZGREb2NJbmZvKHNlbGVjdGVkRmlsZSwgZmlsZUluZm8sIERvY1R5cGUuT3RoZXIpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlLmluY2x1ZGVzKFwiaW1hZ2VcIikpIHtcbiAgICAgIHRoaXMuYWRkRG9jSW5mbyhzZWxlY3RlZEZpbGUsIGZpbGVJbmZvLCBEb2NUeXBlLkltYWdlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZS5pbmNsdWRlcyhcIndvcmRcIikpIHtcbiAgICAgIHRoaXMuYWRkRG9jSW5mbyhzZWxlY3RlZEZpbGUsIGZpbGVJbmZvLCBEb2NUeXBlLldvcmQpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlLmluY2x1ZGVzKFwicGRmXCIpKSB7XG4gICAgICB0aGlzLmFkZERvY0luZm8oc2VsZWN0ZWRGaWxlLCBmaWxlSW5mbywgRG9jVHlwZS5QZGYpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlLmluY2x1ZGVzKFwicGxhaW5cIikpIHtcbiAgICAgIHRoaXMuYWRkRG9jSW5mbyhzZWxlY3RlZEZpbGUsIGZpbGVJbmZvLCBEb2NUeXBlLlR4dCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUuaW5jbHVkZXMoXCJzaGVldFwiKSB8fCB0eXBlLmluY2x1ZGVzKFwiZXhjZWxcIikpIHtcbiAgICAgIHRoaXMuYWRkRG9jSW5mbyhzZWxlY3RlZEZpbGUsIGZpbGVJbmZvLCBEb2NUeXBlLkV4Y2VsKVxuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlLmluY2x1ZGVzKFwicG93ZXJwb2ludFwiKSB8fCB0eXBlLmluY2x1ZGVzKFwicHJlc2VudGF0aW9uXCIpKSB7XG4gICAgICB0aGlzLmFkZERvY0luZm8oc2VsZWN0ZWRGaWxlLCBmaWxlSW5mbywgRG9jVHlwZS5Qb3dlcnBvaW50KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmFkZERvY0luZm8oc2VsZWN0ZWRGaWxlLCBmaWxlSW5mbywgRG9jVHlwZS5PdGhlcik7XG4gICAgICAvLyBsZXQgbmFtZTogc3RyaW5nID0gc2VsZWN0ZWRGaWxlLm5hbWU7XG4gICAgICAvLyBsZXQgZXJyVHlwZSA9IG5hbWUuc3Vic3RyaW5nKHNlbGVjdGVkRmlsZS5uYW1lLmxhc3RJbmRleE9mKCcuJykpO1xuICAgICAgLy8gdGhpcy5lcnJUeXBlTGlzdC5wdXNoKGVyclR5cGUpO1xuICAgIH1cbiAgICBsZXQgaW5kZXggPSAtMTtcbiAgICB0aGlzLmZpbGVzLmZvckVhY2goeCA9PiB7XG4gICAgICBpZiAoeC5uYW1lID09IGZpbGVJbmZvLm5hbWUpIHtcbiAgICAgICAgaWYgKGluZGV4ID09IC0xKVxuICAgICAgICAgIGluZGV4ID0gdGhpcy5maWxlcy5pbmRleE9mKHgpO1xuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKGluZGV4ICE9IC0xICYmIGluZGV4ICE9IHRoaXMuZmlsZXMubGVuZ3RoIC0gMSkge1xuICAgICAgdGhpcy5maWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgdGhpcy51cGxvYWRGaWxlSW5mb0xpc3Quc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3Quc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlVG90YWwtLTtcbiAgICB9XG4gIH1cblxuXG4gIHNlbGVjdEFsbEZpbGUoKSB7XG5cbiAgICBpZiAoIXRoaXMuZmlsZUFsbFNlbGVjdGVkKSB7XG4gICAgICB0aGlzLmZpbGVzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIC8vIGxldCBvYmo6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnQubmFtZSk7XG4gICAgICAgIC8vIG9iai5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgZWxlbWVudC5zZWxlY3RkID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5maWxlQWxsU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zZWxlY3RlZEZpbGVDb3VudCA9IHRoaXMuZmlsZXMubGVuZ3RoO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgLy8gbGV0IG9iajogYW55ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudC5uYW1lKTtcbiAgICAgICAgLy8gb2JqLmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgZWxlbWVudC5zZWxlY3RkID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZmlsZUFsbFNlbGVjdGVkID0gZmFsc2U7XG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZUNvdW50ID0gMDtcbiAgICB9XG4gIH1cblxuXG4gIGNoZWNrb3V0U2VsZWN0RmlsZShmaWxlOiBGaWxlSW5mbykge1xuICAgIC8vIGxldCBvYmo6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZpbGVOYW1lKTtcbiAgICBmaWxlLnNlbGVjdGQgPSAhZmlsZS5zZWxlY3RkO1xuICAgIGlmIChmaWxlLnNlbGVjdGQpXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZUNvdW50Kys7XG4gICAgZWxzZVxuICAgICAgdGhpcy5zZWxlY3RlZEZpbGVDb3VudC0tO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRmlsZUNvdW50ID09IHRoaXMuZmlsZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmZpbGVBbGxTZWxlY3RlZCA9IHRydWU7XG4gICAgICAvL3RoaXMuaXNGaWxlQWxsU2VsZWN0ZWQoKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmZpbGVBbGxTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgLy90aGlzLmlzRmlsZUFsbFNlbGVjdGVkKCk7XG4gICAgfVxuXG4gIH1cblxuICBsaXN0RGVsZXRlRmlsZShmaWxlSW5mbzogRmlsZUluZm8pIHtcbiAgICBpZiAoZmlsZUluZm8uc2VsZWN0ZClcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQtLTtcbiAgICAvL2NvbnNvbGUubG9nKGZpbGVOYW1lKTtcbiAgICB0aGlzLmZpbGVzLnNwbGljZSh0aGlzLmZpbGVzLmluZGV4T2YoZmlsZUluZm8pLCAxKTtcbiAgICBpZiAoZmlsZUluZm8udXBsb2FkUmVzdWx0KSB7XG4gICAgICBsZXQgaWRMaXN0OiBzdHJpbmdbXSA9IFtdO1xuICAgICAgaWRMaXN0LnB1c2goZmlsZUluZm8uaWQpO1xuICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNhbmNlbChpZExpc3QsIHRoaXMucm9vdElkKS5zdWJzY3JpYmUoKTtcblxuICAgICAgdGhpcy51cGxvYWRGaWxlSW5mb0xpc3Quc3BsaWNlKHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LmluZGV4T2YodGhpcy51cGxvYWRGaWxlSW5mb0xpc3QuZmlsdGVyKHggPT4geC5maWxlTmFtZSA9PSBmaWxlSW5mby5uYW1lKVswXSksIDEpO1xuICAgICAgdGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5zcGxpY2UodGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5pbmRleE9mKHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuZmlsdGVyKHggPT4geC5maWxlTmFtZSA9PSBmaWxlSW5mby5uYW1lKVswXSksIDEpO1xuICAgICAgdGhpcy51cGxvYWRlZEZpbGVUb3RhbC0tO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3RlZEZpbGVDb3VudCA9PSAwKVxuICAgICAgdGhpcy5maWxlQWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGxpc3RNdWx0aXBsZURlbGV0ZUZpbGUoKSB7XG4gICAgbGV0IHNlbGVjdGVkRmlsZTogRmlsZUluZm9bXSA9IFtdO1xuICAgIHRoaXMuZmlsZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGxldCBvYmo6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnQubmFtZSk7XG4gICAgICBpZiAob2JqLmNoZWNrZWQpXG4gICAgICAgIHNlbGVjdGVkRmlsZS5wdXNoKGVsZW1lbnQpO1xuICAgIH0pXG4gICAgbGV0IG1ldGFkYXRhTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgICBzZWxlY3RlZEZpbGUuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIG1ldGFkYXRhTGlzdC5wdXNoKGVsZW1lbnQuaWQpO1xuICAgICAgdGhpcy5maWxlcy5zcGxpY2UodGhpcy5maWxlcy5pbmRleE9mKGVsZW1lbnQpLCAxKTtcbiAgICAgIGlmIChlbGVtZW50LnVwbG9hZFJlc3VsdCkge1xuICAgICAgICAvLyBsZXQgaWRMaXN0OiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAvLyBpZExpc3QucHVzaChmaWxlSW5mby5pZCk7XG4gICAgICAgIC8vIHRoaXMudXBsb2FkU2VydmljZS5jYW5jZWwoaWRMaXN0LCB0aGlzLnJvb3RJZCkuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgdGhpcy51cGxvYWRGaWxlSW5mb0xpc3Quc3BsaWNlKHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LmluZGV4T2YodGhpcy51cGxvYWRGaWxlSW5mb0xpc3QuZmlsdGVyKHggPT4geC5maWxlTmFtZSA9PSBlbGVtZW50Lm5hbWUpWzBdKSwgMSk7XG4gICAgICAgIHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3Quc3BsaWNlKHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuaW5kZXhPZih0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmZpbHRlcih4ID0+IHguZmlsZU5hbWUgPT0gZWxlbWVudC5uYW1lKVswXSksIDEpO1xuICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZVRvdGFsLS07XG4gICAgICB9XG4gICAgfSlcbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY2FuY2VsKG1ldGFkYXRhTGlzdCwgdGhpcy5yb290SWQpLnN1YnNjcmliZSgpO1xuXG4gICAgbGV0IGFsbEJveDogYW55ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhbGxDaGVja0JveFwiKTtcbiAgICBpZiAoYWxsQm94ICE9IG51bGwpXG4gICAgICBhbGxCb3guY2hlY2tlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQgPSAwO1xuICAgIHRoaXMuZmlsZUFsbFNlbGVjdGVkID0gZmFsc2U7XG4gIH1cblxuXG4gIGdldFBpY0xpc3REaXNwbGF5TmFtZShmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKGZpbGVOYW1lLmxlbmd0aCA8PSAxMClcbiAgICAgIHJldHVybiBmaWxlTmFtZTtcbiAgICBlbHNlIHtcbiAgICAgIGxldCBoZWFkQ29udGVudCA9IGZpbGVOYW1lLnN1YnN0cmluZygwLCAyKTtcbiAgICAgIGxldCB0YWlsQ29udGVudCA9IGZpbGVOYW1lLnN1YnN0cmluZyhmaWxlTmFtZS5sYXN0SW5kZXhPZignLicpIC0gMik7XG4gICAgICByZXR1cm4gaGVhZENvbnRlbnQgKyBcIuKAplwiICsgdGFpbENvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgZ2V0UXVldWVEaXNwbGF5TmFtZShmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZpbGVOYW1lO1xuICB9XG5cbiAgYWRkRG9jSW5mbyhzZWxlY3RkRmlsZSwgZmlsZUluZm86IEZpbGVJbmZvLCBkb2NUeXBlOiBEb2NUeXBlKSB7XG4gICAgc3dpdGNoIChkb2NUeXBlKSB7XG4gICAgICBjYXNlIERvY1R5cGUuV29yZDoge1xuICAgICAgICBmaWxlSW5mby5zb3VyY2UgPSBcIi9wbGF0Zm9ybS9ydW50aW1lL2Rmcy9pbWFnZXMvd29yZC5wbmdcIlxuICAgICAgICB0aGlzLmZpbGVzLnB1c2goZmlsZUluZm8pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBEb2NUeXBlLlBkZjoge1xuICAgICAgICBmaWxlSW5mby5zb3VyY2UgPSBcIi9wbGF0Zm9ybS9ydW50aW1lL2Rmcy9pbWFnZXMvcGRmLnBuZ1wiXG4gICAgICAgIHRoaXMuZmlsZXMucHVzaChmaWxlSW5mbyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIERvY1R5cGUuRXhjZWw6IHtcbiAgICAgICAgZmlsZUluZm8uc291cmNlID0gXCIvcGxhdGZvcm0vcnVudGltZS9kZnMvaW1hZ2VzL2V4Y2VsLnBuZ1wiO1xuICAgICAgICB0aGlzLmZpbGVzLnB1c2goZmlsZUluZm8pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBEb2NUeXBlLlR4dDoge1xuICAgICAgICBmaWxlSW5mby5zb3VyY2UgPSBcIi9wbGF0Zm9ybS9ydW50aW1lL2Rmcy9pbWFnZXMvdHh0LnBuZ1wiO1xuICAgICAgICB0aGlzLmZpbGVzLnB1c2goZmlsZUluZm8pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBEb2NUeXBlLlBvd2VycG9pbnQ6IHtcbiAgICAgICAgZmlsZUluZm8uc291cmNlID0gXCIvcGxhdGZvcm0vcnVudGltZS9kZnMvaW1hZ2VzL3BwdC5wbmdcIjtcbiAgICAgICAgdGhpcy5maWxlcy5wdXNoKGZpbGVJbmZvKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgRG9jVHlwZS5PdGhlcjoge1xuICAgICAgICBmaWxlSW5mby5zb3VyY2UgPSBcIi9wbGF0Zm9ybS9ydW50aW1lL2Rmcy9pbWFnZXMvZmlsZS5wbmdcIjtcbiAgICAgICAgdGhpcy5maWxlcy5wdXNoKGZpbGVJbmZvKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgRG9jVHlwZS5JbWFnZTpcbiAgICAgICAgbGV0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoc2VsZWN0ZEZpbGUpO1xuICAgICAgICByZWFkZXIub25sb2FkID0gKF9ldmVudCkgPT4ge1xuICAgICAgICAgIGxldCBpbWdVcmwgPSByZWFkZXIucmVzdWx0O1xuICAgICAgICAgIGlmICh0aGlzLmluamVjdG9yICE9IG51bGwpIHtcbiAgICAgICAgICAgIGxldCBzYW5pdGl6ZXIgPSB0aGlzLmluamVjdG9yLmdldChEb21TYW5pdGl6ZXIpO1xuICAgICAgICAgICAgZmlsZUluZm8uc291cmNlID0gc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChpbWdVcmwpO1xuICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgZmlsZUluZm8uc291cmNlID0gaW1nVXJsO1xuICAgICAgICAgIHRoaXMuZmlsZXMucHVzaChmaWxlSW5mbyk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gIH1cblxuICBsaXN0VG9TdHJpbmcoc3RyTGlzdDogc3RyaW5nW10pIHtcbiAgICBsZXQgbmFtZTogc3RyaW5nID0gXCJcIjtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ckxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgIG5hbWUgKz0gc3RyTGlzdFtpXSArIFwiLFwiO1xuICAgIH1cbiAgICByZXR1cm4gbmFtZTtcbiAgfVxuXG5cbiAgZXhTdG9yYWdlRmlsZUxpc3Q6IEV4U3RvcmFnZUZpbGVJbmZvW10gPSBbXTtcblxuICB0eXBlQ2hhbmdlKCRldmVudDogYW55LCBmaWxlOiBGaWxlSW5mbykge1xuICAgIGZpbGUuZXh0ZW5zaW9uTmFtZSA9ICRldmVudC5kYXRhLm5hbWU7XG4gICAgbGV0IGV4U3RvcmFnZUZpbGVJbmZvOiBFeFN0b3JhZ2VGaWxlSW5mbyA9IG5ldyBFeFN0b3JhZ2VGaWxlSW5mbztcbiAgICBpZiAoZmlsZS5leHRlbnNpb25OYW1lID09IHRoaXMuc3RvcmFnZUV4dGVuc2lvbi5kZWZhdWx0UHJvcGVydHlOYW1lKSB7XG4gICAgICBpZiAodGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5maWx0ZXIoeCA9PiB4Lm1ldGFkYXRhSWQgPT0gZmlsZS5pZCkubGVuZ3RoID4gMClcbiAgICAgICAgdGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5zcGxpY2UodGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5maW5kSW5kZXgoeCA9PiB4Lm1ldGFkYXRhSWQgPT0gZmlsZS5pZCksIDEpXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LmZpbHRlcih4ID0+IHgubWV0YWRhdGFJZCA9PSBmaWxlLmlkKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGV4U3RvcmFnZUZpbGVJbmZvID0gdGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5maWx0ZXIoeCA9PiB4Lm1ldGFkYXRhSWQgPT0gZmlsZS5pZClbMF07XG4gICAgICAgIGV4U3RvcmFnZUZpbGVJbmZvLmV4UHJvcGVydHlOYW1lID0gZmlsZS5leHRlbnNpb25OYW1lO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXhTdG9yYWdlRmlsZUluZm8ubWV0YWRhdGFJZCA9IGZpbGUuaWQ7XG4gICAgICAgIGV4U3RvcmFnZUZpbGVJbmZvLmV4UHJvcGVydHlOYW1lID0gZmlsZS5leHRlbnNpb25OYW1lO1xuICAgICAgICB0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LnB1c2goZXhTdG9yYWdlRmlsZUluZm8pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVwbG9hZCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICh0aGlzLnVwbG9hZGVkRmlsZVRvdGFsICE9IHRoaXMuZmlsZXMuZmlsdGVyKHggPT4geC5pc1VwbG9hZGluZyB8fCB4LnVwbG9hZFJlc3VsdCkubGVuZ3RoKSB7XG4gICAgICAvLyB0aGlzLm5vdGlmeVNlcnZpY2Uuc3VjY2Vzcyg8Tm90aWZ5T3B0aW9ucz57XG4gICAgICAvLyAgIG1zZzogJ+S/neWtmOaIkOWKn++8gScsIHRpbWVvdXQ6IDMwMDBcbiAgICAgIC8vIH0pO1xuICAgICAgdGhpcy5tc2dTZXJ2aWNlLndhcm5pbmcoJ+etieS4gOS4i++8jOaWh+aho+ato+WcqOS4iuS8oOOAgicpO1xuICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3RvcmFnZUV4dGVuc2lvbiA9PSBudWxsKVxuICAgICAgcmV0dXJuIG9mKHRoaXMudXBsb2FkRmlsZUluZm9MaXN0KTtcbiAgICBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmV4U3RvcmFnZUZpbGVMaXN0Lmxlbmd0aCA9PSAwKVxuICAgICAgICByZXR1cm4gb2YodGhpcy51cGxvYWRGaWxlSW5mb0xpc3QpO1xuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IGxvYWRpbmcgPSB0aGlzLmxvYWRTZXJ2aWNlLnNob3coe1xuICAgICAgICAgIG1lc3NhZ2U6ICfmraPlnKjlsIbmlofku7bkv53lrZjliLAnICsgdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmV4dGVuc2lvbk5hbWVcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZFNlcnZpY2UuY2hhbmdlU3RvcmFnZUluc3RhbmNlKHRoaXMuZXhTdG9yYWdlRmlsZUxpc3QsIHRoaXMucm9vdElkKS5waXBlKFxuICAgICAgICAgIG1hcChyZXMgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcyAhPSBudWxsKVxuICAgICAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2UuZXJyb3IoJ+S/neWtmOWIsCcgKyB0aGlzLnN0b3JhZ2VFeHRlbnNpb24uZXh0ZW5zaW9uTmFtZSArIFwi5aSx6LSl77yM5LiK5Lyg5paH5Lu26Ieq5Yqo5L+d5a2Y5YiwXCIgKyB0aGlzLnN0b3JhZ2VFeHRlbnNpb24uZGVmYXVsdFByb3BlcnR5TmFtZSArIFwi5a2Y5YKo44CCXCIgKyByZXMuZXJyb3IuTWVzc2FnZSk7XG4gICAgICAgICAgICBsb2FkaW5nLmNsb3NlKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRGaWxlSW5mb0xpc3Q7XG4gICAgICAgICAgfSkpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2FuY2VsKCkge1xuICAgIGlmICh0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5sZW5ndGggPT0gMClcbiAgICAgIHJldHVybjtcbiAgICB0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgdGhpcy5tZXRhZGF0YUlkTGlzdC5wdXNoKGVsZW1lbnQubWV0YWRhdGFJZCk7XG4gICAgfSlcbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY2FuY2VsKHRoaXMubWV0YWRhdGFJZExpc3QsIHRoaXMucm9vdElkKS5zdWJzY3JpYmUoKTtcblxuICB9XG5cbiAgZ2V0VXBsb2FkRmlsZUluZm9MaXN0KCkge1xuICAgIHJldHVybiB0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdDtcbiAgfVxuXG4gIGRlbGV0ZShmaWxlKSB7XG4gICAgdGhpcy5maWxlcy5zcGxpY2UodGhpcy5maWxlcy5pbmRleE9mKGZpbGUpLCAxKTtcbiAgICBpZiAoZmlsZS51cGxvYWRSZXN1bHQpXG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZVRvdGFsLS07XG4gICAgaWYgKHRoaXMuZXhTdG9yYWdlRmlsZUxpc3QuZmlsdGVyKHggPT4geC5tZXRhZGF0YUlkID09IGZpbGUuaWQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZXhTdG9yYWdlRmlsZUxpc3Quc3BsaWNlKHRoaXMuZXhTdG9yYWdlRmlsZUxpc3QuZmluZEluZGV4KHggPT4geC5tZXRhZGF0YUlkID09IGZpbGUuaWQpLCAxKTtcbiAgICB9XG4gICAgLy8gdmFyIG9iajphbnkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZmlsZScpO1xuICAgIC8vIG9iai5maWxlcy5yZW1vdmUoKTtcbiAgICAvL29iai52YWx1ZT0nJztcbiAgfVxuXG4gIGdldEZpbGVTaXplKHNpemU6IG51bWJlcikge1xuICAgIGlmIChzaXplIDwgMTAyNDAwKVxuICAgICAgcmV0dXJuIChzaXplIC8gMTAyNCkudG9GaXhlZCgxKSArIFwiS1wiO1xuICAgIGVsc2UgaWYgKHNpemUgPCAxMDI0ICogMTAyNClcbiAgICAgIHJldHVybiAoc2l6ZSAvIDEwMjQpLnRvRml4ZWQoMCkgKyBcIktcIjtcbiAgICBlbHNlIGlmIChzaXplIDwgMTAwICogMTAyNCAqIDEwMjQpXG4gICAgICByZXR1cm4gKHNpemUgLyAxMDI0IC8gMTAyNCkudG9GaXhlZCgxKSArIFwiTVwiO1xuICAgIGVsc2UgaWYgKHNpemUgPCAxMDI0ICogMTAyNCAqIDEwMjQpXG4gICAgICByZXR1cm4gKHNpemUgLyAxMDI0IC8gMTAyNCkudG9GaXhlZCgwKSArIFwiTVwiO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiAoc2l6ZSAvIDEwMjQgLyAxMDI0IC8gMTAyNCkudG9GaXhlZCgxKSArIFwiR1wiO1xuICB9XG4gIHNob3dCeUdyb3VwKCkge1xuICAgIHRoaXMuc2hvd1R5cGUgPSAwO1xuICAgIC8vIHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQgPSAwO1xuICB9XG5cbiAgc2hvd0J5TGlzdCgpIHtcbiAgICB0aGlzLnNob3dUeXBlID0gMTtcbiAgICAvLyB0aGlzLnNlbGVjdGVkRmlsZUNvdW50ID0gMDtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZpbGVDb3VudCAhPSAwICYmIHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQgPT0gdGhpcy5maWxlcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZmlsZUFsbFNlbGVjdGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBtb3VzZU92ZXIoZmlsZSkge1xuICAgIGZpbGUubW91c2VPbiA9IHRydWU7XG4gIH1cbiAgbW91c2VPdXQoZmlsZSkge1xuICAgIGZpbGUubW91c2VPbiA9IGZhbHNlO1xuICB9XG5cbn1cblxuXG4iXX0=
|
|
1057
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdzcC1zdmMvZm9ybWRvYy11cGxvYWQvIiwic291cmNlcyI6WyJsaWIvdXBsb2FkL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBWSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXpELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdoRDtJQTJERSw2QkFBb0IsVUFBMkIsRUFBVSxhQUE0QixF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OztJQUN4QixxQ0FBd0I7O0lBQ3hCLHVDQUFnQzs7SUFDaEMsd0NBQStCOztJQUMvQix3Q0FBa0M7O0lBSWxDLHFDQUE4Qzs7SUFxZTlDLGdEQUE0Qzs7Ozs7SUE5ZWhDLHlDQUFtQzs7Ozs7SUFBRSw0Q0FBb0M7Ozs7O0lBQUUsMENBQW1DOzs7OztJQUFFLHVDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVmlld0NoaWxkLCBUZW1wbGF0ZVJlZiwgT3B0aW9uYWwsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWxlSW5mbyB9IGZyb20gJy4uL2VudGl0eS9maWxlaW5mbyc7XG5pbXBvcnQgeyBEb2NUeXBlIH0gZnJvbSAnLi4vZW50aXR5L2RvY3R5cGUnO1xuaW1wb3J0IHsgR3NwRm9ybURvY0luZm8gfSBmcm9tICcuLi9lbnRpdHkvZ3NwZm9ybWRvY2luZm8nO1xuaW1wb3J0IHsgT3BlcmF0aW5nTW9kZXMgfSBmcm9tICcuLi9lbnRpdHkvb3BlcmF0aW5nbW9kZXMnO1xuaW1wb3J0IHsgVXBsb2FkU2VydmljZSB9IGZyb20gJy4uL3VwbG9hZC5zZXJ2aWNlJztcbmltcG9ydCB7IFVwbG9hZEZpbGVJbmZvIH0gZnJvbSAnLi4vZW50aXR5L3VwbG9hZGZpbGVpbmZvJztcbmltcG9ydCB7IE1lc3NhZ2VyU2VydmljZSB9IGZyb20gJ0BmYXJyaXMvdWktbWVzc2FnZXInO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEdzcEZvcm1VcGxvYWRFbnRpdHkgfSBmcm9tICcuLi9lbnRpdHkvZ3NwZm9ybXVwbG9hZGVudGl0eSc7XG5pbXBvcnQgeyBVVUlEIH0gZnJvbSAnYW5ndWxhcjItdXVpZCc7XG5pbXBvcnQgeyBTdG9yYWdlRXh0ZW5zaW9uIH0gZnJvbSAnLi4vZW50aXR5L3N0b3JhZ2VleHRlbnNpb24nO1xuaW1wb3J0IHsgRXhTdG9yYWdlRmlsZUluZm8gfSBmcm9tICcuLi9lbnRpdHkvZXh0ZW5zaW9uc3RvcmFnZWZpbGVpbmZvJztcbmltcG9ydCB7IERyb3BMaXN0RW50aXR5IH0gZnJvbSAnLi4vZW50aXR5L2Ryb3BsaXN0ZW50aXR5JztcbmltcG9ydCB7IExvYWRpbmdTZXJ2aWNlIH0gZnJvbSAnQGZhcnJpcy91aS1sb2FkaW5nJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgZmlsbFByb3BlcnRpZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlL3NyYy91dGlsL3Byb3BlcnR5JztcbmltcG9ydCB7IEZpbGVTdGF0ZSB9IGZyb20gJy4uL2VudGl0eS9maWxlc3RhdGUnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1maWxlLXVwbG9hZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgZmlsZXM6IEZpbGVJbmZvW10gPSBbXTtcbiAgbWV0YWRhdGFJZExpc3Q6IHN0cmluZ1tdID0gW107XG4gIHVwbG9hZEZpbGVJbmZvTGlzdDogVXBsb2FkRmlsZUluZm9bXSA9IFtdO1xuICBlcnJGaWxlTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgZXJyVHlwZUxpc3Q6IHN0cmluZ1tdID0gW107XG4gIG51bGxGaWxlTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgc2hvd1R5cGU6IG51bWJlciA9IDA7XG4gIG1vdXNlT246IGJvb2xlYW4gPSBmYWxzZTtcbiAgYnVmZmVyU2l6ZSA9IDEwMjQgKiAxMDI0O1xuICBzZWxlY3RlZEZpbGVzOiBhbnk7XG5cbiAgc2VsZWN0ZWRGaWxlQ291bnQ6IG51bWJlciA9IDA7XG5cbiAgdXBsb2FkSWNvbkFkZHJlc3MgPSAnL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy91cGxvYWQuc3ZnJztcbiAgdXBsb2FkTGl0dGxlSWNvbkFkZHJlc3MgPSAnL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy91cGxvYWRJY29uLnN2Zyc7XG5cbiAgaGFzU2VsZWN0ZWRGaWxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZmlsZUFsbFNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgdXBsb2FkUHJvY2VzcyA9IHsgd2lkdGg6ICcwJScgfTtcblxuICBmaWxlVG90YWxDaHVuazogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICAvL2ZpbGVVcGxvYWRTdGF0ZTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcbiAgLy9mbGFnOiBudW1iZXIgPSAwO1xuICByZXF1ZXN0QXJyYXk6IEFycmF5PE9ic2VydmFibGU8YW55Pj4gPSBuZXcgQXJyYXk7XG5cbiAgcmVxdWVzdEJvZHlBcnJheTogQXJyYXk8R3NwRm9ybVVwbG9hZEVudGl0eT4gPSBuZXcgQXJyYXk7XG5cbiAgdXBsb2FkZWRDaHVuazogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICB1cGxvYWRlZFByb2Nlc3M6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcblxuICAvL2FsbFNlbGVjdGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgc3RvcmFnZUV4dGVuc2lvbjogU3RvcmFnZUV4dGVuc2lvbjtcblxuICBkZWZhdWx0UHJvcGVydHlOYW1lOiBzdHJpbmcgPSBcIlwiO1xuICBwcm9wZXJ0aWVzTmFtZXM6IERyb3BMaXN0RW50aXR5W10gPSBbXTtcblxuICBxdWV1ZUxpc3RTdHlsZSA9IHsgd2lkdGg6ICc0ODBweCcgfTtcblxuICBkcm9wTGlzdFZhbHVlOiBzdHJpbmcgPSBcIlwiO1xuXG4gIHVwbG9hZGVkRmlsZVRvdGFsOiBudW1iZXIgPSAwO1xuXG4gIGhhdmVFeHRlbnNpb25Qcm9wZXJ0eTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHVwbG9hZGVkRmlsZUluZm9MaXN0ID0gW107XG4gIG9sZFVwbG9hZGVkRmlsZUxpc3QgPSBbXTtcbiAgLy91cGxvYWRlZE5hbWVMaXN0ID0gW107XG5cbiAgc2FtZU5hbWVBbGxvd2VkID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1zZ1NlcnZpY2U6IE1lc3NhZ2VyU2VydmljZSwgcHJpdmF0ZSB1cGxvYWRTZXJ2aWNlOiBVcGxvYWRTZXJ2aWNlLCBwcml2YXRlIGxvYWRTZXJ2aWNlOiBMb2FkaW5nU2VydmljZSwgcHJpdmF0ZSBpbmplY3Rvcj86IEluamVjdG9yKSB7IH1cbiAgQElucHV0KCkgZm9ybUlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJvb3RJZDogc3RyaW5nO1xuICBASW5wdXQoKSBmaWxlVHlwZTogc3RyaW5nID0gXCIqXCI7XG4gIEBJbnB1dCgpIGZpbGVDb3VudDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgb2xkSWRMaXN0OiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8vQE91dHB1dCgpIG9uQ3VzdG9tRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoJ29wQ2VsbCcpIG9wQ2VsbDogVGVtcGxhdGVSZWY8YW55PjtcblxuICBuZ09uSW5pdCgpIHtcbiAgICAvL2lmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlICE9IG51bGwpIHtcbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZ2V0U3RvcmFnZUV4dGVuc2lvbkluZm8oKS5zdWJzY3JpYmUoXG4gICAgICByZXMgPT4ge1xuICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgcmVzLmVycm9yID09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLnN0b3JhZ2VFeHRlbnNpb24gPSByZXM7XG4gICAgICAgICAgdGhpcy5kZWZhdWx0UHJvcGVydHlOYW1lID0gdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmRlZmF1bHRQcm9wZXJ0eU5hbWU7XG4gICAgICAgICAgdGhpcy5wcm9wZXJ0aWVzTmFtZXMucHVzaCh7IGlkOiBcIjBcIiwgbmFtZTogdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmRlZmF1bHRQcm9wZXJ0eU5hbWUgfSk7XG4gICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgIC8vIHRoaXMucHJvcGVydGllc05hbWVzLnB1c2goLi4uKHRoaXMuc3RvcmFnZUV4dGVuc2lvbi5leHRlbnNpb25Qcm9wZXJ0eU5hbWVMaXN0KSk7XG4gICAgICAgICAgdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmV4dGVuc2lvblByb3BlcnR5TmFtZUxpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJvcGVydGllc05hbWVzLnB1c2goeyBpZDogKCsraSkudG9TdHJpbmcoKSwgbmFtZTogZWxlbWVudCB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnF1ZXVlTGlzdFN0eWxlLndpZHRoID0gJzM4MHB4JztcbiAgICAgICAgICB0aGlzLmhhdmVFeHRlbnNpb25Qcm9wZXJ0eSA9IHRydWU7XG5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIClcblxuICAgIHRoaXMudXBsb2FkU2VydmljZS5nZXRSb290U2V0dGluZyh0aGlzLnJvb3RJZCkuc3Vic2NyaWJlKFxuICAgICAgcmVzID0+IHtcbiAgICAgICAgaWYgKHJlcyAhPSBudWxsICYmIHJlcy5lcnJvciA9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5zYW1lTmFtZUFsbG93ZWQgPSByZXMuc2FtZU5hbWVBbGxvd2VkO1xuICAgICAgICAgIGlmICghdGhpcy5zYW1lTmFtZUFsbG93ZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5nZXRVcGxvYWRlZEZpbGVJbmZvTGlzdCh0aGlzLmZvcm1JZCwgdGhpcy5yb290SWQpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgcmVzLmVycm9yID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QgPSByZXM7XG4gICAgICAgICAgICAgICAgICB0aGlzLm9sZFVwbG9hZGVkRmlsZUxpc3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlcykpOztcblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApXG4gICAgaWYgKHRoaXMub2xkSWRMaXN0ICE9IG51bGwgJiYgdGhpcy5vbGRJZExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNhbmNlbCh0aGlzLm9sZElkTGlzdCwgdGhpcy5yb290SWQpLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG5cbiAgZmlsZVNlbGVjdGVkKCRldmVudCkge1xuXG4gICAgY29uc3QgbG9hZGluZyA9IHRoaXMubG9hZFNlcnZpY2Uuc2hvdyh7XG4gICAgICBtZXNzYWdlOiAn5q2j5Zyo5LiK5Lyg5paH5Lu24oCm4oCmJ1xuICAgIH0pO1xuICAgIHRoaXMuaGFzU2VsZWN0ZWRGaWxlID0gdHJ1ZTtcbiAgICB0aGlzLnNlbGVjdGVkRmlsZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZmlsZScpO1xuXG4gICAgaWYgKHRoaXMuZmlsZUNvdW50ID4gMCkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWxlcy5maWxlcy5sZW5ndGggKyB0aGlzLmZpbGVzLmxlbmd0aCA+IHRoaXMuZmlsZUNvdW50KSB7XG4gICAgICAgIGxldCBzZWxlY3RlZE51bTogbnVtYmVyID0gKHRoaXMuc2VsZWN0ZWRGaWxlcy5maWxlcy5sZW5ndGggYXMgbnVtYmVyKSArIHRoaXMuZmlsZXMubGVuZ3RoO1xuICAgICAgICB0aGlzLm1zZ1NlcnZpY2Uud2FybmluZygn5bey6YCJ5oupJyArIHNlbGVjdGVkTnVtICsgJ+S4quaWh+S7tu+8jOi2hei/h+ezu+e7n+iuvue9rueahOaVsOmHj+mZkOWIticgKyB0aGlzLmZpbGVDb3VudCArICfkuKrvvIzor7fph43mlrDpgInmi6nkuIrkvKDmlofku7bjgIInKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vdGhpcy5mbGFnID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2VsZWN0ZWRGaWxlcy5maWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IHNlbGVjdGVkRmlsZSA9IHRoaXMuc2VsZWN0ZWRGaWxlcy5maWxlc1tpXTtcbiAgICAgIC8vc2VsZWN0ZWRGaWxlLnNsaWNlXG4gICAgICBsZXQgdXVpZCA9IFVVSUQuVVVJRCgpO1xuICAgICAgaWYgKCF0aGlzLnNhbWVOYW1lQWxsb3dlZCkge1xuICAgICAgICBpZiAodGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5maW5kKHggPT4geC5maWxlTmFtZSA9PSBzZWxlY3RlZEZpbGUubmFtZSkgIT0gbnVsbCkge1xuICAgICAgICAgIC8vIHRoaXMudXBsb2FkZWROYW1lTGlzdC5wdXNoKHNlbGVjdGVkRmlsZS5uYW1lKTtcbiAgICAgICAgICAvLyB0aGlzLm1zZ1NlcnZpY2UucXVlc3Rpb24oJ+S5i+WJjeW3suS4iuS8oOi/h+WQjOWQjeaWh+S7tjogJyArIHNlbGVjdGVkRmlsZS5uYW1lICsgJ++8jOmcgOimgeabv+aNouS5iO+8nycsICgpID0+IHtcbiAgICAgICAgICAvLyAgIHV1aWQgPSB0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmZpbmQoeCA9PiB4LmZpbGVOYW1lID09IHNlbGVjdGVkRmlsZS5uYW1lKS5tZXRhZGF0YUlkO1xuICAgICAgICAgIC8vICAgdGhpcy51cGxvYWRGaWxlKHV1aWQsIHNlbGVjdGVkRmlsZSk7XG4gICAgICAgICAgLy8gfSlcbiAgICAgICAgICBjb25zdCBtc2cgPSB0aGlzLm1zZ1NlcnZpY2Uuc2hvdygnd2FybmluZycsICflt7LkuIrkvKDov4flkIzlkI3mlofku7Y6ICcgKyBzZWxlY3RlZEZpbGUubmFtZSwge1xuICAgICAgICAgICAgaW5pdGlhbFN0YXRlOiB7XG4gICAgICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0ZXh0OiAn6YeN5ZG95ZCNJyxcbiAgICAgICAgICAgICAgICAgIGNsczogJ2J0biBidG4tc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgICAgICAgIGhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgb2xkTmFtZTogc3RyaW5nID0gc2VsZWN0ZWRGaWxlLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIGxldCBuZXdOYW1lXG4gICAgICAgICAgICAgICAgICAgIGxldCBmbGFnID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSAxO1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoZmxhZykge1xuICAgICAgICAgICAgICAgICAgICAgIG5ld05hbWUgPSBvbGROYW1lLnN1YnN0cmluZygwLCBvbGROYW1lLmxhc3RJbmRleE9mKCcuJykpICsgJygnICsgaSArICcpJyArIG9sZE5hbWUuc3Vic3RyaW5nKG9sZE5hbWUubGFzdEluZGV4T2YoJy4nKSk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuZmluZCh4ID0+IHguZmlsZU5hbWUgPT0gbmV3TmFtZSkgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBmbGFnID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGUodXVpZCwgc2VsZWN0ZWRGaWxlLCBuZXdOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgbXNnLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0ZXh0OiAn5pu/5o2iJyxcbiAgICAgICAgICAgICAgICAgIGNsczogJ2J0biBidG4tc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgICAgICAgIGhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB1dWlkID0gdGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5maW5kKHggPT4geC5maWxlTmFtZSA9PSBzZWxlY3RlZEZpbGUubmFtZSkubWV0YWRhdGFJZDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlKHV1aWQsIHNlbGVjdGVkRmlsZSwgc2VsZWN0ZWRGaWxlLm5hbWUsIEZpbGVTdGF0ZS5VcGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZVRvdGFsLS07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9sZFVwbG9hZGVkRmlsZUxpc3QuZmluZCh4ID0+IHguZmlsZU5hbWUgPT0gc2VsZWN0ZWRGaWxlLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVUb3RhbCsrO1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3Quc3BsaWNlKHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuaW5kZXhPZih0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmZpbHRlcih4ID0+IHguZmlsZU5hbWUgPT0gc2VsZWN0ZWRGaWxlLm5hbWUpWzBdKSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbXNnLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0ZXh0OiAn5Y+W5raIJyxcbiAgICAgICAgICAgICAgICAgIGNsczogJ2J0biBidG4tc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgICAgICAgIGhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBtc2cuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGlmICh0aGlzLmZpbGVzLmZpbmQoeCA9PiB4Lm5hbWUgPT0gc2VsZWN0ZWRGaWxlLm5hbWUpICE9IG51bGwpIHtcbiAgICAgIC8vICAgdGhpcy5lcnJGaWxlTGlzdC5wdXNoKHNlbGVjdGVkRmlsZS5uYW1lKTtcbiAgICAgIC8vICAgY29udGludWU7XG4gICAgICAvLyB9XG5cbiAgICAgIGlmIChzZWxlY3RlZEZpbGUuc2l6ZSA9PSAwKSB7XG4gICAgICAgIHRoaXMubnVsbEZpbGVMaXN0LnB1c2goc2VsZWN0ZWRGaWxlLm5hbWUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy90aGlzLmZsYWcgKz0gTWF0aC5jZWlsKHNlbGVjdGVkRmlsZS5zaXplIC8gdGhpcy5idWZmZXJTaXplKTtcbiAgICAgIC8vbGV0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICB0aGlzLnVwbG9hZEZpbGUodXVpZCwgc2VsZWN0ZWRGaWxlLCBzZWxlY3RlZEZpbGUubmFtZSk7XG5cbiAgICB9XG4gICAgLy8gaWYgKHRoaXMudXBsb2FkZWROYW1lTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgLy8gICBsZXQgbmFtZTogc3RyaW5nID0gdGhpcy5saXN0VG9TdHJpbmcodGhpcy51cGxvYWRlZE5hbWVMaXN0KTtcbiAgICAvLyAgIHRoaXMubXNnU2VydmljZS53YXJuaW5nKCfkuYvliY3lt7LkuIrkvKDov4flkIzlkI3mlofku7Y6ICcgKyBuYW1lICsgJ+ivt+mHjeaWsOmAieaLqeS4iuS8oOaWh+S7tuOAgicpO1xuICAgIC8vICAgdGhpcy51cGxvYWRlZE5hbWVMaXN0ID0gW107XG4gICAgLy8gfVxuXG4gICAgaWYgKHRoaXMuZXJyRmlsZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IG5hbWU6IHN0cmluZyA9IHRoaXMubGlzdFRvU3RyaW5nKHRoaXMuZXJyRmlsZUxpc3QpO1xuICAgICAgdGhpcy5tc2dTZXJ2aWNlLndhcm5pbmcoJ+W3suS4iuS8oOWQjOWQjeaWh+S7tjogJyArIG5hbWUgKyAn6K+36YeN5paw6YCJ5oup5LiK5Lyg5paH5Lu244CCJyk7XG4gICAgICB0aGlzLmVyckZpbGVMaXN0ID0gW107XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubnVsbEZpbGVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCBuYW1lOiBzdHJpbmcgPSB0aGlzLmxpc3RUb1N0cmluZyh0aGlzLm51bGxGaWxlTGlzdCk7XG4gICAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmcoMCwgbmFtZS5sZW5ndGggLSAxKTtcbiAgICAgIHRoaXMubXNnU2VydmljZS53YXJuaW5nKCfmlofku7Y6ICAnICsgbmFtZSArICcg5aSn5bCP5Li6MO+8jOivt+mHjeaWsOmAieaLqeS4iuS8oOaWh+S7tuOAgicpO1xuICAgICAgdGhpcy5udWxsRmlsZUxpc3QgPSBbXTtcbiAgICB9XG4gICAgLy8gaWYgKHRoaXMuZXJyVHlwZUxpc3QubGVuZ3RoID4gMCkge1xuICAgIC8vICAgbGV0IHR5cGU6IHN0cmluZyA9IHRoaXMubGlzdFRvU3RyaW5nKHRoaXMuZXJyVHlwZUxpc3QpO1xuICAgIC8vICAgdGhpcy5tc2dTZXJ2aWNlLndhcm5pbmcoJ+S4jeaUr+aMgeS4iuS8oOexu+Wei+S4uiAnICsgdHlwZSArICfnmoTmlofku7bor7fph43mlrDpgInmi6nkuIrkvKDmlofku7bjgIInKTtcbiAgICAvLyAgIHRoaXMuZXJyVHlwZUxpc3QgPSBbXTtcbiAgICAvLyB9XG4gICAgdGhpcy5maWxlcyA9IHRoaXMuZmlsZXMuc2xpY2UoKTtcbiAgICB0aGlzLmZpbGVBbGxTZWxlY3RlZCA9IGZhbHNlO1xuICAgICRldmVudC50YXJnZXQudmFsdWUgPSAnJztcbiAgICBsb2FkaW5nLmNsb3NlKCk7XG4gIH1cblxuICBzaG93RXJyb3JNZXNzYWdlKGZpbGUpIHtcbiAgICB0aGlzLm1zZ1NlcnZpY2UuZXJyb3IoJ+S4iuS8oOmZhOS7tuWksei0peOAgicgKyBmaWxlLmVycm9yTWVzc2FnZSk7XG4gIH1cblxuXG4gIHVwbG9hZEZpbGUodXVpZDogc3RyaW5nLCBzZWxlY3RlZEZpbGUsIGZpbGVOYW1lOiBzdHJpbmcsIHN0YXRlOiBGaWxlU3RhdGUgPSBGaWxlU3RhdGUuTmV3KSB7XG4gICAgbGV0IGZpbGVJbmZvOiBGaWxlSW5mbztcbiAgICAvLyBsZXQgdXVpZCA9IFVVSUQuVVVJRCgpO1xuICAgIC8vcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhzZWxlY3RlZEZpbGUpO1xuICAgIC8vcmVhZGVyLm9ubG9hZCA9IChlKSA9PiB7XG4gICAgZmlsZUluZm8gPSB7XG4gICAgICBpZDogdXVpZCxcbiAgICAgIG5hbWU6IGZpbGVOYW1lLFxuICAgICAgdHlwZTogc2VsZWN0ZWRGaWxlLnR5cGUsXG4gICAgICBzb3VyY2U6IFwiXCIsXG4gICAgICBzaXplOiB0aGlzLmdldEZpbGVTaXplKHNlbGVjdGVkRmlsZS5zaXplKSxcbiAgICAgIGZpbGVTaXplOiBzZWxlY3RlZEZpbGUuc2l6ZSxcbiAgICAgIHBpY0xpc3REaXNwbGF5TmFtZTogdGhpcy5nZXRQaWNMaXN0RGlzcGxheU5hbWUoZmlsZU5hbWUpLFxuICAgICAgcXVldWVMaXN0RGlzcGxheU5hbWU6IHRoaXMuZ2V0UXVldWVEaXNwbGF5TmFtZShmaWxlTmFtZSksXG4gICAgICAvL2NvbnRlbnQ6IHJlYWRlci5yZXN1bHQudG9TdHJpbmcoKSxcbiAgICAgIGhhc1VwbG9hZGVkOiBmYWxzZSxcbiAgICAgIG1vdXNlT246IGZhbHNlLFxuICAgICAgc2VsZWN0ZDogZmFsc2UsXG4gICAgICBpc1VwbG9hZGluZzogdHJ1ZSxcbiAgICAgIHVwbG9hZFJlc3VsdDogZmFsc2UsXG4gICAgICB1cGxvYWRQcm9jZXNzOiAwLFxuICAgICAgZXJyb3JNZXNzYWdlOiBcIlwiLFxuICAgICAgZXh0ZW5zaW9uRHJvcExpc3RJZDogMCxcbiAgICAgIGV4dGVuc2lvbk5hbWU6IFwiXCJcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdG9yYWdlRXh0ZW5zaW9uICE9IG51bGwpXG4gICAgICBmaWxlSW5mby5leHRlbnNpb25OYW1lID0gdGhpcy5kZWZhdWx0UHJvcGVydHlOYW1lO1xuICAgIGxldCBjaHVua1RvdGFsOiBudW1iZXIgPSBNYXRoLmNlaWwoc2VsZWN0ZWRGaWxlLnNpemUgLyB0aGlzLmJ1ZmZlclNpemUpO1xuICAgIGxldCBjaHVua0luZGV4OiBudW1iZXIgPSAwO1xuXG5cbiAgICB0aGlzLmZpbGVUb3RhbENodW5rW3V1aWRdID0gY2h1bmtUb3RhbDtcblxuICAgIGxldCB1cGxvYWRGaWxlSW5mbyA9IG5ldyBVcGxvYWRGaWxlSW5mbygpO1xuXG4gICAgdXBsb2FkRmlsZUluZm8ubWV0YWRhdGFJZCA9IHV1aWQ7XG4gICAgdXBsb2FkRmlsZUluZm8uZmlsZU5hbWUgPSBmaWxlSW5mby5uYW1lO1xuICAgIHVwbG9hZEZpbGVJbmZvLmZpbGVTaXplID0gZmlsZUluZm8uc2l6ZTtcbiAgICB1cGxvYWRGaWxlSW5mby5zdGF0ZSA9IHN0YXRlO1xuXG5cbiAgICB3aGlsZSAoY2h1bmtJbmRleCA8IGNodW5rVG90YWwpIHtcbiAgICAgIGxldCB1cGxvYWRJbmZvID0gbmV3IEdzcEZvcm1VcGxvYWRFbnRpdHk7XG4gICAgICB1cGxvYWRJbmZvLmZvcm1JZCA9IHRoaXMuZm9ybUlkO1xuICAgICAgdXBsb2FkSW5mby5tb2RlID0gT3BlcmF0aW5nTW9kZXMuVGVtcDtcbiAgICAgIHVwbG9hZEluZm8ucm9vdElkID0gdGhpcy5yb290SWQ7XG5cbiAgICAgIGxldCBkb2NJbmZvOiBHc3BGb3JtRG9jSW5mbyA9IG5ldyBHc3BGb3JtRG9jSW5mbztcblxuICAgICAgZG9jSW5mby5maWxlTmFtZSA9IGZpbGVOYW1lO1xuICAgICAgZG9jSW5mby5tZXRhZGF0YUlkID0gdXVpZDtcbiAgICAgIGRvY0luZm8udG90YWwgPSBjaHVua1RvdGFsO1xuXG4gICAgICB0aGlzLnVwbG9hZGVkQ2h1bmtbZG9jSW5mby5tZXRhZGF0YUlkXSA9IDA7XG5cbiAgICAgIGxldCBuZXh0U2l6ZSA9IE1hdGgubWluKChjaHVua0luZGV4ICsgMSkgKiB0aGlzLmJ1ZmZlclNpemUsIHNlbGVjdGVkRmlsZS5zaXplKTtcbiAgICAgIGxldCBmaWxlRGF0YSA9IHNlbGVjdGVkRmlsZS5zbGljZShjaHVua0luZGV4ICogdGhpcy5idWZmZXJTaXplLCBuZXh0U2l6ZSk7XG4gICAgICBsZXQgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZURhdGEpO1xuICAgICAgbGV0IGlubmVySW5kZXggPSBjaHVua0luZGV4O1xuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgZG9jSW5mby5maWxlQ29udGVudCA9IGJ0b2EocmVhZGVyLnJlc3VsdC50b1N0cmluZygpKTtcblxuICAgICAgICBkb2NJbmZvLmluZGV4ID0gaW5uZXJJbmRleDtcbiAgICAgICAgLy9jaHVua0luZGV4Kys7XG4gICAgICAgIGlmICh0aGlzLmhhdmVFeHRlbnNpb25Qcm9wZXJ0eSlcbiAgICAgICAgICBkb2NJbmZvLmV4UHJvcGVydHlOYW1lID0gdGhpcy5kZWZhdWx0UHJvcGVydHlOYW1lO1xuICAgICAgICAvL2RvY0luZm8uaXNMYXN0ID0gdHJ1ZTtcbiAgICAgICAgdXBsb2FkSW5mby5kb2NJbmZvID0gZG9jSW5mbztcblxuICAgICAgICBsZXQgaW5mbyA9IHVwbG9hZEluZm87XG5cbiAgICAgICAgLy8gdGhpcy5yZXF1ZXN0QXJyYXkucHVzaCh0aGlzLnVwbG9hZFNlcnZpY2UudXBsb2FkRmlsZSh1cGxvYWRJbmZvKSk7XG4gICAgICAgIHRoaXMucmVxdWVzdEJvZHlBcnJheS5wdXNoKGluZm8pO1xuXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS51cGxvYWRGaWxlKGluZm8pLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgIGlmIChyZXMgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5maWxlc1t0aGlzLmZpbGVzLmluZGV4T2YoZmlsZUluZm8pXS51cGxvYWRSZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZmlsZXNbdGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKV0uaXNVcGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZmlsZXNbdGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKV0uZXJyb3JNZXNzYWdlID0gcmVzLmVycm9yLk1lc3NhZ2U7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkZWRDaHVua1tkb2NJbmZvLm1ldGFkYXRhSWRdKys7XG4gICAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLnVwbG9hZFByb2Nlc3MgPSBOdW1iZXIucGFyc2VJbnQoKHRoaXMudXBsb2FkZWRDaHVua1tkb2NJbmZvLm1ldGFkYXRhSWRdIC8gdGhpcy5maWxlVG90YWxDaHVua1tkb2NJbmZvLm1ldGFkYXRhSWRdICogMTAwKS50b0ZpeGVkKDApKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnVwbG9hZGVkQ2h1bmtbZG9jSW5mby5tZXRhZGF0YUlkXSA9PSB0aGlzLmZpbGVUb3RhbENodW5rW2RvY0luZm8ubWV0YWRhdGFJZF0pIHtcbiAgICAgICAgICAgICAgdGhpcy5maWxlc1t0aGlzLmZpbGVzLmluZGV4T2YoZmlsZUluZm8pXS51cGxvYWRSZXN1bHQgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLmlzVXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0ID0gdGhpcy51cGxvYWRGaWxlSW5mb0xpc3QuY29uY2F0KHVwbG9hZEZpbGVJbmZvKTtcbiAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdCA9IHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuY29uY2F0KHVwbG9hZEZpbGVJbmZvKTtcbiAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVUb3RhbCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICAvL2NvbnNvbGUubG9nKGNodW5rSW5kZXggKyAxKTtcbiAgICAgIGNodW5rSW5kZXggPSBjaHVua0luZGV4ICsgMTtcbiAgICB9XG5cbiAgICBsZXQgdHlwZTogc3RyaW5nID0gc2VsZWN0ZWRGaWxlLnR5cGU7XG4gICAgaWYgKHR5cGUuaW5jbHVkZXMoXCJ0aWZmXCIpKSB7XG4gICAgICB0aGlzLmFkZERvY0luZm8oc2VsZWN0ZWRGaWxlLCBmaWxlSW5mbywgRG9jVHlwZS5PdGhlcik7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUuaW5jbHVkZXMoXCJpbWFnZVwiKSkge1xuICAgICAgdGhpcy5hZGREb2NJbmZvKHNlbGVjdGVkRmlsZSwgZmlsZUluZm8sIERvY1R5cGUuSW1hZ2UpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlLmluY2x1ZGVzKFwid29yZFwiKSkge1xuICAgICAgdGhpcy5hZGREb2NJbmZvKHNlbGVjdGVkRmlsZSwgZmlsZUluZm8sIERvY1R5cGUuV29yZCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUuaW5jbHVkZXMoXCJwZGZcIikpIHtcbiAgICAgIHRoaXMuYWRkRG9jSW5mbyhzZWxlY3RlZEZpbGUsIGZpbGVJbmZvLCBEb2NUeXBlLlBkZik7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUuaW5jbHVkZXMoXCJwbGFpblwiKSkge1xuICAgICAgdGhpcy5hZGREb2NJbmZvKHNlbGVjdGVkRmlsZSwgZmlsZUluZm8sIERvY1R5cGUuVHh0KTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZS5pbmNsdWRlcyhcInNoZWV0XCIpIHx8IHR5cGUuaW5jbHVkZXMoXCJleGNlbFwiKSkge1xuICAgICAgdGhpcy5hZGREb2NJbmZvKHNlbGVjdGVkRmlsZSwgZmlsZUluZm8sIERvY1R5cGUuRXhjZWwpXG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUuaW5jbHVkZXMoXCJwb3dlcnBvaW50XCIpIHx8IHR5cGUuaW5jbHVkZXMoXCJwcmVzZW50YXRpb25cIikpIHtcbiAgICAgIHRoaXMuYWRkRG9jSW5mbyhzZWxlY3RlZEZpbGUsIGZpbGVJbmZvLCBEb2NUeXBlLlBvd2VycG9pbnQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuYWRkRG9jSW5mbyhzZWxlY3RlZEZpbGUsIGZpbGVJbmZvLCBEb2NUeXBlLk90aGVyKTtcbiAgICAgIC8vIGxldCBuYW1lOiBzdHJpbmcgPSBzZWxlY3RlZEZpbGUubmFtZTtcbiAgICAgIC8vIGxldCBlcnJUeXBlID0gbmFtZS5zdWJzdHJpbmcoc2VsZWN0ZWRGaWxlLm5hbWUubGFzdEluZGV4T2YoJy4nKSk7XG4gICAgICAvLyB0aGlzLmVyclR5cGVMaXN0LnB1c2goZXJyVHlwZSk7XG4gICAgfVxuICAgIGxldCBpbmRleCA9IC0xO1xuICAgIHRoaXMuZmlsZXMuZm9yRWFjaCh4ID0+IHtcbiAgICAgIGlmICh4Lm5hbWUgPT0gZmlsZUluZm8ubmFtZSkge1xuICAgICAgICBpZiAoaW5kZXggPT0gLTEpXG4gICAgICAgICAgaW5kZXggPSB0aGlzLmZpbGVzLmluZGV4T2YoeCk7XG4gICAgICB9XG4gICAgfSlcbiAgICBpZiAoaW5kZXggIT0gLTEgJiYgaW5kZXggIT0gdGhpcy5maWxlcy5sZW5ndGggLSAxKSB7XG4gICAgICB0aGlzLmZpbGVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgdGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgdGhpcy51cGxvYWRlZEZpbGVUb3RhbC0tO1xuICAgIH1cbiAgfVxuXG5cbiAgc2VsZWN0QWxsRmlsZSgpIHtcblxuICAgIGlmICghdGhpcy5maWxlQWxsU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuZmlsZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgLy8gbGV0IG9iajogYW55ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudC5uYW1lKTtcbiAgICAgICAgLy8gb2JqLmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICBlbGVtZW50LnNlbGVjdGQgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmZpbGVBbGxTZWxlY3RlZCA9IHRydWU7XG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZUNvdW50ID0gdGhpcy5maWxlcy5sZW5ndGg7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWxlcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAvLyBsZXQgb2JqOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50Lm5hbWUpO1xuICAgICAgICAvLyBvYmouY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICBlbGVtZW50LnNlbGVjdGQgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5maWxlQWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQgPSAwO1xuICAgIH1cbiAgfVxuXG5cbiAgY2hlY2tvdXRTZWxlY3RGaWxlKGZpbGU6IEZpbGVJbmZvKSB7XG4gICAgLy8gbGV0IG9iajogYW55ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZmlsZU5hbWUpO1xuICAgIGZpbGUuc2VsZWN0ZCA9ICFmaWxlLnNlbGVjdGQ7XG4gICAgaWYgKGZpbGUuc2VsZWN0ZClcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQrKztcbiAgICBlbHNlXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZUNvdW50LS07XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQgPT0gdGhpcy5maWxlcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZmlsZUFsbFNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIC8vdGhpcy5pc0ZpbGVBbGxTZWxlY3RlZCgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuZmlsZUFsbFNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAvL3RoaXMuaXNGaWxlQWxsU2VsZWN0ZWQoKTtcbiAgICB9XG5cbiAgfVxuXG4gIGxpc3REZWxldGVGaWxlKGZpbGVJbmZvOiBGaWxlSW5mbykge1xuICAgIGlmIChmaWxlSW5mby5zZWxlY3RkKVxuICAgICAgdGhpcy5zZWxlY3RlZEZpbGVDb3VudC0tO1xuICAgIC8vY29uc29sZS5sb2coZmlsZU5hbWUpO1xuICAgIHRoaXMuZmlsZXMuc3BsaWNlKHRoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyksIDEpO1xuICAgIGlmIChmaWxlSW5mby51cGxvYWRSZXN1bHQpIHtcbiAgICAgIGxldCBpZExpc3Q6IHN0cmluZ1tdID0gW107XG4gICAgICBpZExpc3QucHVzaChmaWxlSW5mby5pZCk7XG4gICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY2FuY2VsKGlkTGlzdCwgdGhpcy5yb290SWQpLnN1YnNjcmliZSgpO1xuXG4gICAgICB0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5zcGxpY2UodGhpcy51cGxvYWRGaWxlSW5mb0xpc3QuaW5kZXhPZih0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5maWx0ZXIoeCA9PiB4LmZpbGVOYW1lID09IGZpbGVJbmZvLm5hbWUpWzBdKSwgMSk7XG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LnNwbGljZSh0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmluZGV4T2YodGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5maWx0ZXIoeCA9PiB4LmZpbGVOYW1lID09IGZpbGVJbmZvLm5hbWUpWzBdKSwgMSk7XG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZVRvdGFsLS07XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGVkRmlsZUNvdW50ID09IDApXG4gICAgICB0aGlzLmZpbGVBbGxTZWxlY3RlZCA9IGZhbHNlO1xuICB9XG5cbiAgbGlzdE11bHRpcGxlRGVsZXRlRmlsZSgpIHtcbiAgICBsZXQgc2VsZWN0ZWRGaWxlOiBGaWxlSW5mb1tdID0gW107XG4gICAgdGhpcy5maWxlcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgbGV0IG9iajogYW55ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudC5uYW1lKTtcbiAgICAgIGlmIChvYmouY2hlY2tlZClcbiAgICAgICAgc2VsZWN0ZWRGaWxlLnB1c2goZWxlbWVudCk7XG4gICAgfSlcbiAgICBsZXQgbWV0YWRhdGFMaXN0OiBzdHJpbmdbXSA9IFtdO1xuICAgIHNlbGVjdGVkRmlsZS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgbWV0YWRhdGFMaXN0LnB1c2goZWxlbWVudC5pZCk7XG4gICAgICB0aGlzLmZpbGVzLnNwbGljZSh0aGlzLmZpbGVzLmluZGV4T2YoZWxlbWVudCksIDEpO1xuICAgICAgaWYgKGVsZW1lbnQudXBsb2FkUmVzdWx0KSB7XG4gICAgICAgIC8vIGxldCBpZExpc3Q6IHN0cmluZ1tdID0gW107XG4gICAgICAgIC8vIGlkTGlzdC5wdXNoKGZpbGVJbmZvLmlkKTtcbiAgICAgICAgLy8gdGhpcy51cGxvYWRTZXJ2aWNlLmNhbmNlbChpZExpc3QsIHRoaXMucm9vdElkKS5zdWJzY3JpYmUoKTtcblxuICAgICAgICB0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5zcGxpY2UodGhpcy51cGxvYWRGaWxlSW5mb0xpc3QuaW5kZXhPZih0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5maWx0ZXIoeCA9PiB4LmZpbGVOYW1lID09IGVsZW1lbnQubmFtZSlbMF0pLCAxKTtcbiAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5zcGxpY2UodGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5pbmRleE9mKHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuZmlsdGVyKHggPT4geC5maWxlTmFtZSA9PSBlbGVtZW50Lm5hbWUpWzBdKSwgMSk7XG4gICAgICAgIHRoaXMudXBsb2FkZWRGaWxlVG90YWwtLTtcbiAgICAgIH1cbiAgICB9KVxuICAgIHRoaXMudXBsb2FkU2VydmljZS5jYW5jZWwobWV0YWRhdGFMaXN0LCB0aGlzLnJvb3RJZCkuc3Vic2NyaWJlKCk7XG5cbiAgICBsZXQgYWxsQm94OiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFsbENoZWNrQm94XCIpO1xuICAgIGlmIChhbGxCb3ggIT0gbnVsbClcbiAgICAgIGFsbEJveC5jaGVja2VkID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RlZEZpbGVDb3VudCA9IDA7XG4gICAgdGhpcy5maWxlQWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgfVxuXG5cbiAgZ2V0UGljTGlzdERpc3BsYXlOYW1lKGZpbGVOYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoZmlsZU5hbWUubGVuZ3RoIDw9IDEwKVxuICAgICAgcmV0dXJuIGZpbGVOYW1lO1xuICAgIGVsc2Uge1xuICAgICAgbGV0IGhlYWRDb250ZW50ID0gZmlsZU5hbWUuc3Vic3RyaW5nKDAsIDIpO1xuICAgICAgbGV0IHRhaWxDb250ZW50ID0gZmlsZU5hbWUuc3Vic3RyaW5nKGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuJykgLSAyKTtcbiAgICAgIHJldHVybiBoZWFkQ29udGVudCArIFwi4oCmXCIgKyB0YWlsQ29udGVudDtcbiAgICB9XG4gIH1cblxuICBnZXRRdWV1ZURpc3BsYXlOYW1lKGZpbGVOYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZmlsZU5hbWU7XG4gIH1cblxuICBhZGREb2NJbmZvKHNlbGVjdGRGaWxlLCBmaWxlSW5mbzogRmlsZUluZm8sIGRvY1R5cGU6IERvY1R5cGUpIHtcbiAgICBzd2l0Y2ggKGRvY1R5cGUpIHtcbiAgICAgIGNhc2UgRG9jVHlwZS5Xb3JkOiB7XG4gICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IFwiL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy93b3JkLnBuZ1wiXG4gICAgICAgIHRoaXMuZmlsZXMucHVzaChmaWxlSW5mbyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIERvY1R5cGUuUGRmOiB7XG4gICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IFwiL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy9wZGYucG5nXCJcbiAgICAgICAgdGhpcy5maWxlcy5wdXNoKGZpbGVJbmZvKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgRG9jVHlwZS5FeGNlbDoge1xuICAgICAgICBmaWxlSW5mby5zb3VyY2UgPSBcIi9wbGF0Zm9ybS9ydW50aW1lL2Rmcy9pbWFnZXMvZXhjZWwucG5nXCI7XG4gICAgICAgIHRoaXMuZmlsZXMucHVzaChmaWxlSW5mbyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIERvY1R5cGUuVHh0OiB7XG4gICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IFwiL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy90eHQucG5nXCI7XG4gICAgICAgIHRoaXMuZmlsZXMucHVzaChmaWxlSW5mbyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIERvY1R5cGUuUG93ZXJwb2ludDoge1xuICAgICAgICBmaWxlSW5mby5zb3VyY2UgPSBcIi9wbGF0Zm9ybS9ydW50aW1lL2Rmcy9pbWFnZXMvcHB0LnBuZ1wiO1xuICAgICAgICB0aGlzLmZpbGVzLnB1c2goZmlsZUluZm8pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBEb2NUeXBlLk90aGVyOiB7XG4gICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IFwiL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy9maWxlLnBuZ1wiO1xuICAgICAgICB0aGlzLmZpbGVzLnB1c2goZmlsZUluZm8pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBEb2NUeXBlLkltYWdlOlxuICAgICAgICBsZXQgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChzZWxlY3RkRmlsZSk7XG4gICAgICAgIHJlYWRlci5vbmxvYWQgPSAoX2V2ZW50KSA9PiB7XG4gICAgICAgICAgbGV0IGltZ1VybCA9IHJlYWRlci5yZXN1bHQ7XG4gICAgICAgICAgaWYgKHRoaXMuaW5qZWN0b3IgIT0gbnVsbCkge1xuICAgICAgICAgICAgbGV0IHNhbml0aXplciA9IHRoaXMuaW5qZWN0b3IuZ2V0KERvbVNhbml0aXplcik7XG4gICAgICAgICAgICBmaWxlSW5mby5zb3VyY2UgPSBzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKGltZ1VybCk7XG4gICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICBmaWxlSW5mby5zb3VyY2UgPSBpbWdVcmw7XG4gICAgICAgICAgdGhpcy5maWxlcy5wdXNoKGZpbGVJbmZvKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgfVxuXG4gIGxpc3RUb1N0cmluZyhzdHJMaXN0OiBzdHJpbmdbXSkge1xuICAgIGxldCBuYW1lOiBzdHJpbmcgPSBcIlwiO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgbmFtZSArPSBzdHJMaXN0W2ldICsgXCIsXCI7XG4gICAgfVxuICAgIHJldHVybiBuYW1lO1xuICB9XG5cblxuICBleFN0b3JhZ2VGaWxlTGlzdDogRXhTdG9yYWdlRmlsZUluZm9bXSA9IFtdO1xuXG4gIHR5cGVDaGFuZ2UoJGV2ZW50OiBhbnksIGZpbGU6IEZpbGVJbmZvKSB7XG4gICAgZmlsZS5leHRlbnNpb25OYW1lID0gJGV2ZW50LmRhdGEubmFtZTtcbiAgICBsZXQgZXhTdG9yYWdlRmlsZUluZm86IEV4U3RvcmFnZUZpbGVJbmZvID0gbmV3IEV4U3RvcmFnZUZpbGVJbmZvO1xuICAgIGlmIChmaWxlLmV4dGVuc2lvbk5hbWUgPT0gdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmRlZmF1bHRQcm9wZXJ0eU5hbWUpIHtcbiAgICAgIGlmICh0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LmZpbHRlcih4ID0+IHgubWV0YWRhdGFJZCA9PSBmaWxlLmlkKS5sZW5ndGggPiAwKVxuICAgICAgICB0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LnNwbGljZSh0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LmZpbmRJbmRleCh4ID0+IHgubWV0YWRhdGFJZCA9PSBmaWxlLmlkKSwgMSlcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuZXhTdG9yYWdlRmlsZUxpc3QuZmlsdGVyKHggPT4geC5tZXRhZGF0YUlkID09IGZpbGUuaWQpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZXhTdG9yYWdlRmlsZUluZm8gPSB0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LmZpbHRlcih4ID0+IHgubWV0YWRhdGFJZCA9PSBmaWxlLmlkKVswXTtcbiAgICAgICAgZXhTdG9yYWdlRmlsZUluZm8uZXhQcm9wZXJ0eU5hbWUgPSBmaWxlLmV4dGVuc2lvbk5hbWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleFN0b3JhZ2VGaWxlSW5mby5tZXRhZGF0YUlkID0gZmlsZS5pZDtcbiAgICAgICAgZXhTdG9yYWdlRmlsZUluZm8uZXhQcm9wZXJ0eU5hbWUgPSBmaWxlLmV4dGVuc2lvbk5hbWU7XG4gICAgICAgIHRoaXMuZXhTdG9yYWdlRmlsZUxpc3QucHVzaChleFN0b3JhZ2VGaWxlSW5mbyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBsb2FkKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKHRoaXMudXBsb2FkZWRGaWxlVG90YWwgIT0gdGhpcy5maWxlcy5maWx0ZXIoeCA9PiB4LmlzVXBsb2FkaW5nIHx8IHgudXBsb2FkUmVzdWx0KS5sZW5ndGgpIHtcbiAgICAgIC8vIHRoaXMubm90aWZ5U2VydmljZS5zdWNjZXNzKDxOb3RpZnlPcHRpb25zPntcbiAgICAgIC8vICAgbXNnOiAn5L+d5a2Y5oiQ5Yqf77yBJywgdGltZW91dDogMzAwMFxuICAgICAgLy8gfSk7XG4gICAgICB0aGlzLm1zZ1NlcnZpY2Uud2FybmluZygn562J5LiA5LiL77yM5paH5qGj5q2j5Zyo5LiK5Lyg44CCJyk7XG4gICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdG9yYWdlRXh0ZW5zaW9uID09IG51bGwpXG4gICAgICByZXR1cm4gb2YodGhpcy51cGxvYWRGaWxlSW5mb0xpc3QpO1xuICAgIGVsc2Uge1xuICAgICAgaWYgKHRoaXMuZXhTdG9yYWdlRmlsZUxpc3QubGVuZ3RoID09IDApXG4gICAgICAgIHJldHVybiBvZih0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdCk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgbG9hZGluZyA9IHRoaXMubG9hZFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgICAgbWVzc2FnZTogJ+ato+WcqOWwhuaWh+S7tuS/neWtmOWIsCcgKyB0aGlzLnN0b3JhZ2VFeHRlbnNpb24uZXh0ZW5zaW9uTmFtZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2FkU2VydmljZS5jaGFuZ2VTdG9yYWdlSW5zdGFuY2UodGhpcy5leFN0b3JhZ2VGaWxlTGlzdCwgdGhpcy5yb290SWQpLnBpcGUoXG4gICAgICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgICAgICBpZiAocmVzICE9IG51bGwpXG4gICAgICAgICAgICAgIHRoaXMubXNnU2VydmljZS5lcnJvcign5L+d5a2Y5YiwJyArIHRoaXMuc3RvcmFnZUV4dGVuc2lvbi5leHRlbnNpb25OYW1lICsgXCLlpLHotKXvvIzkuIrkvKDmlofku7boh6rliqjkv53lrZjliLBcIiArIHRoaXMuc3RvcmFnZUV4dGVuc2lvbi5kZWZhdWx0UHJvcGVydHlOYW1lICsgXCLlrZjlgqjjgIJcIiArIHJlcy5lcnJvci5NZXNzYWdlKTtcbiAgICAgICAgICAgIGxvYWRpbmcuY2xvc2UoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdDtcbiAgICAgICAgICB9KSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgaWYgKHRoaXMudXBsb2FkRmlsZUluZm9MaXN0Lmxlbmd0aCA9PSAwKVxuICAgICAgcmV0dXJuO1xuICAgIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICB0aGlzLm1ldGFkYXRhSWRMaXN0LnB1c2goZWxlbWVudC5tZXRhZGF0YUlkKTtcbiAgICB9KVxuICAgIHRoaXMudXBsb2FkU2VydmljZS5jYW5jZWwodGhpcy5tZXRhZGF0YUlkTGlzdCwgdGhpcy5yb290SWQpLnN1YnNjcmliZSgpO1xuXG4gIH1cblxuICBnZXRVcGxvYWRGaWxlSW5mb0xpc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0O1xuICB9XG5cbiAgZGVsZXRlKGZpbGUpIHtcbiAgICB0aGlzLmZpbGVzLnNwbGljZSh0aGlzLmZpbGVzLmluZGV4T2YoZmlsZSksIDEpO1xuICAgIGlmIChmaWxlLnVwbG9hZFJlc3VsdClcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlVG90YWwtLTtcbiAgICBpZiAodGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5maWx0ZXIoeCA9PiB4Lm1ldGFkYXRhSWQgPT0gZmlsZS5pZCkubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5zcGxpY2UodGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5maW5kSW5kZXgoeCA9PiB4Lm1ldGFkYXRhSWQgPT0gZmlsZS5pZCksIDEpO1xuICAgIH1cbiAgICAvLyB2YXIgb2JqOmFueSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNmaWxlJyk7XG4gICAgLy8gb2JqLmZpbGVzLnJlbW92ZSgpO1xuICAgIC8vb2JqLnZhbHVlPScnO1xuICB9XG5cbiAgZ2V0RmlsZVNpemUoc2l6ZTogbnVtYmVyKSB7XG4gICAgaWYgKHNpemUgPCAxMDI0MDApXG4gICAgICByZXR1cm4gKHNpemUgLyAxMDI0KS50b0ZpeGVkKDEpICsgXCJLXCI7XG4gICAgZWxzZSBpZiAoc2l6ZSA8IDEwMjQgKiAxMDI0KVxuICAgICAgcmV0dXJuIChzaXplIC8gMTAyNCkudG9GaXhlZCgwKSArIFwiS1wiO1xuICAgIGVsc2UgaWYgKHNpemUgPCAxMDAgKiAxMDI0ICogMTAyNClcbiAgICAgIHJldHVybiAoc2l6ZSAvIDEwMjQgLyAxMDI0KS50b0ZpeGVkKDEpICsgXCJNXCI7XG4gICAgZWxzZSBpZiAoc2l6ZSA8IDEwMjQgKiAxMDI0ICogMTAyNClcbiAgICAgIHJldHVybiAoc2l6ZSAvIDEwMjQgLyAxMDI0KS50b0ZpeGVkKDApICsgXCJNXCI7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIChzaXplIC8gMTAyNCAvIDEwMjQgLyAxMDI0KS50b0ZpeGVkKDEpICsgXCJHXCI7XG4gIH1cbiAgc2hvd0J5R3JvdXAoKSB7XG4gICAgdGhpcy5zaG93VHlwZSA9IDA7XG4gICAgLy8gdGhpcy5zZWxlY3RlZEZpbGVDb3VudCA9IDA7XG4gIH1cblxuICBzaG93QnlMaXN0KCkge1xuICAgIHRoaXMuc2hvd1R5cGUgPSAxO1xuICAgIC8vIHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQgPSAwO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRmlsZUNvdW50ICE9IDAgJiYgdGhpcy5zZWxlY3RlZEZpbGVDb3VudCA9PSB0aGlzLmZpbGVzLmxlbmd0aCkge1xuICAgICAgdGhpcy5maWxlQWxsU2VsZWN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG1vdXNlT3ZlcihmaWxlKSB7XG4gICAgZmlsZS5tb3VzZU9uID0gdHJ1ZTtcbiAgfVxuICBtb3VzZU91dChmaWxlKSB7XG4gICAgZmlsZS5tb3VzZU9uID0gZmFsc2U7XG4gIH1cblxufVxuXG5cbiJdfQ==
|
package/esm5/public-api.js
CHANGED
|
@@ -25,4 +25,5 @@ export { GspDocMetaProperty } from './lib/upload/entity/gspdocmetaproperty';
|
|
|
25
25
|
export { GspFormUploadEntity } from './lib/upload/entity/gspformuploadentity';
|
|
26
26
|
export { FileInfo } from './lib/upload/entity/fileinfo';
|
|
27
27
|
export { OperatingModes } from './lib/upload/entity/operatingmodes';
|
|
28
|
-
|
|
28
|
+
export { FileState } from './lib/upload/entity/filestate';
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bnc3Atc3ZjL2Zvcm1kb2MtdXBsb2FkLyIsInNvdXJjZXMiOlsicHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBTUEscUNBQWMsOEJBQThCLENBQUM7QUFDN0MsdUNBQWMsZ0NBQWdDLENBQUM7QUFDL0Msb0NBQWMsNkJBQTZCLENBQUM7QUFDNUMsbUNBQWMsd0NBQXdDLENBQUM7QUFDdkQsc0NBQWMsd0RBQXdELENBQUM7QUFDdkUsb0NBQWMsNEJBQTRCLENBQUM7QUFDM0MsOEJBQWMsNkJBQTZCLENBQUM7QUFDNUMsZ0NBQWMsK0JBQStCLENBQUM7QUFDOUMsb0NBQWMsZ0RBQWdELENBQUM7QUFDL0QsK0JBQWMsb0NBQW9DLENBQUM7QUFDbkQsaUNBQWMsNEJBQTRCLENBQUM7QUFDM0MsNEJBQWMsaUNBQWlDLENBQUM7QUFDaEQsd0NBQWMsNkNBQTZDLENBQUM7QUFDNUQsd0NBQWMsNkNBQTZDLENBQUM7QUFDNUQsd0NBQWMsNkNBQTZDLENBQUM7QUFDNUQsK0JBQWMsb0NBQW9DLENBQUM7QUFDbkQsbUNBQWMsd0NBQXdDLENBQUM7QUFDdkQsb0NBQWMseUNBQXlDLENBQUM7QUFDeEQseUJBQWMsOEJBQThCLENBQUM7QUFDN0MsK0JBQWMsb0NBQW9DLENBQUM7QUFDbkQsMEJBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGZvcm1kb2MtdXBsb2FkXG4gKi9cblxuaW1wb3J0IHsgZnJvbSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3JtZG9jLXVwbG9hZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm1kb2MtdXBsb2FkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3JtZG9jLXVwbG9hZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXBsb2FkZGlhbG9nL3VwbG9hZGRpYWxvZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXBsb2FkZGlhbG9nL3VwbG9hZGRpYWxvZy91cGxvYWRkaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VwbG9hZGRpYWxvZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VwbG9hZC91cGxvYWQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91cGxvYWQvZG93bmxvYWQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91cGxvYWQvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VwbG9hZC9lbnRpdHkvdXBsb2FkZmlsZWluZm8nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXBsb2FkL3VwbG9hZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXBsb2FkL2VudGl0eS91cGxvYWRsaW1pdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91cGxvYWQvZW50aXR5L2dzcGZvcm1kb2NvcGVyYXRlZW50aXR5JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VwbG9hZC9lbnRpdHkvZ3NwZm9ybXJlbW92ZWxpc3RlbnRpdHknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXBsb2FkL2VudGl0eS9nc3Bmb3JtdXBsb2FkbGlzdGVudGl0eSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91cGxvYWQvZW50aXR5L2dzcGZvcm1kb2NpbmZvJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VwbG9hZC9lbnRpdHkvZ3NwZG9jbWV0YXByb3BlcnR5JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VwbG9hZC9lbnRpdHkvZ3NwZm9ybXVwbG9hZGVudGl0eSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91cGxvYWQvZW50aXR5L2ZpbGVpbmZvJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VwbG9hZC9lbnRpdHkvb3BlcmF0aW5nbW9kZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXBsb2FkL2VudGl0eS9maWxlc3RhdGUnOyJdfQ==
|
|
@@ -11,7 +11,7 @@ import { ProgressModule } from '@farris/ui-progress';
|
|
|
11
11
|
import { FormsModule } from '@angular/forms';
|
|
12
12
|
import { ComboListModule } from '@farris/ui-combo-list';
|
|
13
13
|
import { HttpService } from '@ecp-caf/caf-common';
|
|
14
|
-
import { Injectable,
|
|
14
|
+
import { Injectable, Injector, ComponentFactoryResolver, NgModule, Component, ViewChild, Input, defineInjectable } from '@angular/core';
|
|
15
15
|
import { BsModalService } from '@farris/ui-modal';
|
|
16
16
|
import { of as of$1 } from 'rxjs';
|
|
17
17
|
import { HttpClientModule } from '@angular/common/http';
|
|
@@ -375,6 +375,18 @@ class GspFormUploadEntity {
|
|
|
375
375
|
class ExStorageFileInfo {
|
|
376
376
|
}
|
|
377
377
|
|
|
378
|
+
/**
|
|
379
|
+
* @fileoverview added by tsickle
|
|
380
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
381
|
+
*/
|
|
382
|
+
/** @enum {number} */
|
|
383
|
+
const FileState = {
|
|
384
|
+
New: 0,
|
|
385
|
+
Update: 1,
|
|
386
|
+
};
|
|
387
|
+
FileState[FileState.New] = 'New';
|
|
388
|
+
FileState[FileState.Update] = 'Update';
|
|
389
|
+
|
|
378
390
|
/**
|
|
379
391
|
* @fileoverview added by tsickle
|
|
380
392
|
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
@@ -486,6 +498,10 @@ class FileUploadComponent {
|
|
|
486
498
|
* @return {?}
|
|
487
499
|
*/
|
|
488
500
|
fileSelected($event) {
|
|
501
|
+
/** @type {?} */
|
|
502
|
+
const loading = this.loadService.show({
|
|
503
|
+
message: '正在上传文件……'
|
|
504
|
+
});
|
|
489
505
|
this.hasSelectedFile = true;
|
|
490
506
|
this.selectedFiles = document.querySelector('#file');
|
|
491
507
|
if (this.fileCount > 0) {
|
|
@@ -561,7 +577,7 @@ class FileUploadComponent {
|
|
|
561
577
|
* @return {?}
|
|
562
578
|
*/
|
|
563
579
|
x => x.fileName == selectedFile.name)).metadataId;
|
|
564
|
-
this.uploadFile(uuid, selectedFile, selectedFile.name);
|
|
580
|
+
this.uploadFile(uuid, selectedFile, selectedFile.name, FileState.Update);
|
|
565
581
|
this.uploadedFileTotal--;
|
|
566
582
|
if (this.oldUploadedFileList.find((/**
|
|
567
583
|
* @param {?} x
|
|
@@ -632,6 +648,7 @@ class FileUploadComponent {
|
|
|
632
648
|
this.files = this.files.slice();
|
|
633
649
|
this.fileAllSelected = false;
|
|
634
650
|
$event.target.value = '';
|
|
651
|
+
loading.close();
|
|
635
652
|
}
|
|
636
653
|
/**
|
|
637
654
|
* @param {?} file
|
|
@@ -644,9 +661,10 @@ class FileUploadComponent {
|
|
|
644
661
|
* @param {?} uuid
|
|
645
662
|
* @param {?} selectedFile
|
|
646
663
|
* @param {?} fileName
|
|
664
|
+
* @param {?=} state
|
|
647
665
|
* @return {?}
|
|
648
666
|
*/
|
|
649
|
-
uploadFile(uuid, selectedFile, fileName) {
|
|
667
|
+
uploadFile(uuid, selectedFile, fileName, state = FileState.New) {
|
|
650
668
|
/** @type {?} */
|
|
651
669
|
let fileInfo;
|
|
652
670
|
// let uuid = UUID.UUID();
|
|
@@ -684,6 +702,7 @@ class FileUploadComponent {
|
|
|
684
702
|
uploadFileInfo.metadataId = uuid;
|
|
685
703
|
uploadFileInfo.fileName = fileInfo.name;
|
|
686
704
|
uploadFileInfo.fileSize = fileInfo.size;
|
|
705
|
+
uploadFileInfo.state = state;
|
|
687
706
|
while (chunkIndex < chunkTotal) {
|
|
688
707
|
/** @type {?} */
|
|
689
708
|
let uploadInfo = new GspFormUploadEntity;
|
|
@@ -1664,6 +1683,6 @@ class FileInfo {
|
|
|
1664
1683
|
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
1665
1684
|
*/
|
|
1666
1685
|
|
|
1667
|
-
export { FormdocUploadService, FormdocUploadComponent, FormdocUploadModule, UploadDialogMoudle, UploadDialogComponent, UploadDialogService, UploadService, DownloadService, FileUploadComponent, UploadFileInfo, UploadModule, ɵa, UploadLimit, GspFormDocOperateEntity, GspFormRemoveListEntity, GspFormUploadListEntity, GspFormDocInfo, GspDocMetaProperty, GspFormUploadEntity, FileInfo, OperatingModes };
|
|
1686
|
+
export { FormdocUploadService, FormdocUploadComponent, FormdocUploadModule, UploadDialogMoudle, UploadDialogComponent, UploadDialogService, UploadService, DownloadService, FileUploadComponent, UploadFileInfo, UploadModule, ɵa, UploadLimit, GspFormDocOperateEntity, GspFormRemoveListEntity, GspFormUploadListEntity, GspFormDocInfo, GspDocMetaProperty, GspFormUploadEntity, FileInfo, OperatingModes, FileState };
|
|
1668
1687
|
|
|
1669
1688
|
//# sourceMappingURL=gsp-svc-formdoc-upload.js.map
|