@bizdoc/core 1.13.0-next.7 → 1.13.3
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/assets/bizdoc-schema.json +1 -14
- package/esm2020/lib/admin/diff/configuration-diff.component.mjs +5 -2
- package/esm2020/lib/admin/form/workflow/node.component.mjs +3 -2
- package/esm2020/lib/admin/positions/positions-popup.component.mjs +1 -1
- package/esm2020/lib/browse/browse-items.component.mjs +11 -8
- package/esm2020/lib/browse/expanded-item/expanded-item.component.mjs +39 -30
- package/esm2020/lib/compose/action/action-picker.component.mjs +15 -14
- package/esm2020/lib/compose/action/action.base.mjs +8 -7
- package/esm2020/lib/compose/action/action.pane.dialog.exp.mjs +12 -11
- package/esm2020/lib/compose/action/assign-action.component.mjs +52 -26
- package/esm2020/lib/compose/attachments/attachments.component.mjs +3 -4
- package/esm2020/lib/compose/form.component.mjs +5 -6
- package/esm2020/lib/compose/trace/flow.component.mjs +128 -126
- package/esm2020/lib/compose/trace/trace.component.mjs +44 -36
- package/esm2020/lib/core/controls/file.input.mjs +6 -7
- package/esm2020/lib/core/layout/layout.component.mjs +2 -2
- package/esm2020/lib/core/mailbox.service.mjs +1 -1
- package/esm2020/lib/core/models.mjs +2 -9
- package/esm2020/lib/core/translations.mjs +12 -2
- package/esm2020/lib/cube/cube.service.mjs +13 -5
- package/esm2020/lib/cube/explore/explore-items.component.mjs +25 -14
- package/esm2020/lib/cube/grid/spreadsheet.component.mjs +62 -62
- package/fesm2015/bizdoc-core.mjs +535 -458
- package/fesm2015/bizdoc-core.mjs.map +1 -1
- package/fesm2020/bizdoc-core.mjs +529 -457
- package/fesm2020/bizdoc-core.mjs.map +1 -1
- package/lib/admin/diff/configuration-diff.component.d.ts +1 -0
- package/lib/browse/expanded-item/expanded-item.component.d.ts +1 -0
- package/lib/compose/action/action-picker.component.d.ts +2 -1
- package/lib/compose/action/action.base.d.ts +4 -2
- package/lib/compose/action/action.pane.dialog.exp.d.ts +2 -1
- package/lib/compose/action/assign-action.component.d.ts +16 -5
- package/lib/compose/trace/flow.component.d.ts +0 -1
- package/lib/compose/trace/trace.component.d.ts +5 -4
- package/lib/core/mailbox.service.d.ts +0 -1
- package/lib/core/models.d.ts +5 -13
- package/lib/core/translations.d.ts +10 -0
- package/lib/cube/cube.service.d.ts +7 -1
- package/package.json +1 -2
@@ -5,7 +5,6 @@ import { Subject, tap } from 'rxjs';
|
|
5
5
|
import { isArray } from '../functions';
|
6
6
|
import { AttachmentInfo } from '../info/attachment-info.service';
|
7
7
|
import { DOCUMENT_MODEL } from '../mailbox.service';
|
8
|
-
import { AttachmentMode } from '../models';
|
9
8
|
import { catchError } from 'rxjs';
|
10
9
|
import * as i0 from "@angular/core";
|
11
10
|
import * as i1 from "../mailbox.service";
|
@@ -108,7 +107,7 @@ export class FileInput {
|
|
108
107
|
checkOut(item) {
|
109
108
|
this._mailbox.checkOut(this._model.id, this._model.version, item.id).
|
110
109
|
subscribe(() => {
|
111
|
-
item.checkedOut =
|
110
|
+
item.checkedOut = true;
|
112
111
|
this.download(item);
|
113
112
|
});
|
114
113
|
}
|
@@ -288,7 +287,8 @@ export class FileInput {
|
|
288
287
|
this._pending.next(arr);
|
289
288
|
}
|
290
289
|
_createItem(id) {
|
291
|
-
const
|
290
|
+
//const log = this._model.log.filter(l => l.fileId == attachment.id && l.userId == this._session.userId),
|
291
|
+
const attachment = this._model.attachments.find(a => a.id === id), fileExt = AttachmentInfo.fileExt(attachment.fileName), icon = EXTENDED_ICONS[fileExt];
|
292
292
|
return {
|
293
293
|
...attachment,
|
294
294
|
hasPreview: AttachmentInfo.exists(attachment.contentType),
|
@@ -296,9 +296,8 @@ export class FileInput {
|
|
296
296
|
fileExt,
|
297
297
|
icon,
|
298
298
|
url: this._sanitizer.bypassSecurityTrustUrl(this._mailbox.formatDownloadUrl(this._model.documentId, attachment.id)),
|
299
|
-
checkedOut:
|
300
|
-
attachment.holdingId === this._session.userId
|
301
|
-
log.reverse().find(l => l.type === 'CheckOut').time : null
|
299
|
+
checkedOut: attachment.checkedOut &&
|
300
|
+
attachment.holdingId === this._session.userId
|
302
301
|
};
|
303
302
|
}
|
304
303
|
_upload(files) {
|
@@ -390,4 +389,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
|
|
390
389
|
type: HostBinding,
|
391
390
|
args: ['attr.aria-describedby']
|
392
391
|
}] } });
|
393
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9jb250cm9scy9maWxlLmlucHV0LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb3JlL2NvbnRyb2xzL2ZpbGUuaW5wdXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUksT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFFBQVEsRUFBTyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFtQixjQUFjLEVBQStCLE1BQU0sb0JBQW9CLENBQUM7QUFDbEcsT0FBTyxFQUFjLGNBQWMsRUFBa0IsTUFBTSxXQUFXLENBQUM7QUFLdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVsQyxNQUFNLGNBQWMsR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztBQVEvRixNQUFNLE9BQ0UsU0FBUztJQXdCZixZQUNVLGdCQUE0QixFQUM1QixRQUF3QixFQUN4QixVQUF3QixFQUN4Qixl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ZGluZywgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIFNlbGYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ0NvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiwgbWFwLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJy4uL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IEF0dGFjaG1lbnRJbmZvIH0gZnJvbSAnLi4vaW5mby9hdHRhY2htZW50LWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IEF0dGFjaG1lbnRFeHRyYSwgRE9DVU1FTlRfTU9ERUwsIE1haWxib3hTZXJ2aWNlLCBVcGxvYWRFdmVudCB9IGZyb20gJy4uL21haWxib3guc2VydmljZSc7XHJcbmltcG9ydCB7IEF0dGFjaG1lbnQsIEF0dGFjaG1lbnRNb2RlLCBSZWNpcGllbnRNb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi9wcm9tcHQuc2VydmljZSc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzJztcclxuXHJcbmNvbnN0IEVYVEVOREVEX0lDT05TID0geyAneGxzeCc6ICdleGNlbCcsICdkb2N4JzogJ3dvcmQnLCAncHB0eCc6ICdwb3dlcnBvaW50JywgJ3BkZic6ICdwZGYnIH07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJ2ZpbGUuaW5wdXQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJ2ZpbGUuaW5wdXQuc2NzcyddLFxyXG4gIGhvc3Q6IHsgY2xhc3M6ICdmaWxlLWRyb3BhYmxlJyB9LFxyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWZpbGUtdXBsb2FkJ1xyXG59KVxyXG5leHBvcnRcclxuICBjbGFzcyBGaWxlSW5wdXQgaW1wbGVtZW50cyBNYXRGb3JtRmllbGRDb250cm9sPG51bWJlciB8IG51bWJlcltdPiwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIHN0YXRpYyBuZXh0SWQgPSAwO1xyXG4gIEBIb3N0QmluZGluZygpIHJlYWRvbmx5IGlkID0gYHR5cGUtZmlsZS11cGxvYWQtJHtGaWxlSW5wdXQubmV4dElkKyt9YDtcclxuICByZWFkb25seSBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgX211bHRpcGxlID0gZmFsc2U7XHJcbiAgcHVibGljIGdldCBtdWx0aXBsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsZTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IG11bHRpcGxlKHZhbHVlKSB7XHJcbiAgICB0aGlzLl9tdWx0aXBsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGFjY2VwdCA9IG51bGw7XHJcbiAgQElucHV0KCkgaWNvbiA9ICdwdWJsaXNoJztcclxuICBAVmlld0NoaWxkKCdpbnB1dCcpIF9pbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICBpdGVtczogQXR0YWNobWVudEV4dHJhW107XHJcbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXI6IHN0cmluZztcclxuICBwcml2YXRlIF9yZXF1aXJlZDogYW55O1xyXG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuO1xyXG4gIHByaXZhdGUgX29uQ2hhbmdlOiBhbnk7XHJcbiAgcHJpdmF0ZSBfb25Ub3VjaGVkOiBhbnk7XHJcbiAgcHJpdmF0ZSBfdmFsdWU6IG51bWJlciB8IG51bWJlcltdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RyYWdEcm9wID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9wZW5kaW5nID0gbmV3IFN1YmplY3Q8RmlsZVtdPigpO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZHJvcGFibGVFbGVtZW50OiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSBfbWFpbGJveDogTWFpbGJveFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgIHByaXZhdGUgX2F0dGFjaG1lbnRJbmZvOiBBdHRhY2htZW50SW5mbyxcclxuICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcclxuICAgIEBJbmplY3QoRE9DVU1FTlRfTU9ERUwpIHByaXZhdGUgX21vZGVsOiBSZWNpcGllbnRNb2RlbDxhbnk+LFxyXG4gICkge1xyXG4gICAgaWYgKHRoaXMubmdDb250cm9sICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhhc1ZlcnNpb24oaXRlbTogQXR0YWNobWVudCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vZGVsLmF0dGFjaG1lbnRzLmZpbmQoYSA9PiBhLmZpbGVOYW1lID09PSBpdGVtLmZpbGVOYW1lICYmIGEuaWQgIT09IGl0ZW0uaWQpICE9IG51bGw7XHJcbiAgfVxyXG4gIGdldFZlcnNpb25zKGl0ZW06IEF0dGFjaG1lbnQpOiBBdHRhY2htZW50W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vZGVsLmF0dGFjaG1lbnRzLmZpbHRlcihhID0+IGEuZmlsZU5hbWUgPT09IGl0ZW0uZmlsZU5hbWUgJiYgYS5pZCAhPT0gaXRlbS5pZCk7XHJcbiAgfVxyXG4gIGRvd25sb2FkKGl0ZW06IEF0dGFjaG1lbnRFeHRyYSkge1xyXG4gICAgbG9jYXRpb24uaHJlZiA9IHRoaXMuX21haWxib3guZm9ybWF0RG93bmxvYWRVcmwodGhpcy5fbW9kZWwuZG9jdW1lbnRJZCwgaXRlbS5pZCk7XHJcbiAgICAoaXRlbSBhcyBBdHRhY2htZW50RXh0cmEpLnZpZXdlZCA9IG5ldyBEYXRlKCk7XHJcbiAgfVxyXG4gIHByZXZpZXdPckRvd25sb2FkKGl0ZW06IEF0dGFjaG1lbnRFeHRyYSkge1xyXG4gICAgaWYgKHRoaXMuY2FuUHJldmlldyhpdGVtKSlcclxuICAgICAgdGhpcy5vcGVuUHJldmlldyhpdGVtKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5kb3dubG9hZChpdGVtKTtcclxuICB9XHJcbiAgY2FuUHJldmlldyhpdGVtOiBBdHRhY2htZW50RXh0cmEpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBBdHRhY2htZW50SW5mby5leGlzdHMoaXRlbS5jb250ZW50VHlwZSk7XHJcbiAgfVxyXG4gIGNhbkVkaXQoaXRlbTogQXR0YWNobWVudEV4dHJhKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXRoaXMuX21vZGVsLmNvbXBsZXRlZCAmJiBpdGVtLnVzZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnVzZXJJZCAmJiAhaXRlbS5kZWxldGVkO1xyXG4gIH1cclxuICBvcGVuUHJldmlldyhpdGVtOiBBdHRhY2htZW50RXh0cmEpIHtcclxuICAgIHRoaXMuX2F0dGFjaG1lbnRJbmZvLnByZXZpZXcodGhpcy5fbW9kZWwsIGl0ZW0uaWQpO1xyXG4gIH1cclxuICBjYW5jZWwoaXRlbTogQXR0YWNobWVudEV4dHJhKSB7XHJcbiAgICB0aGlzLl9tb2RlbC5hdHRhY2htZW50cy5yZW1vdmUoaXRlbSk7XHJcbiAgfVxyXG4gIGNoZWNrSW4oaXRlbTogQXR0YWNobWVudEV4dHJhKSB7XHJcbiAgICBjb25zdCBhY2NlcHQgPSBpdGVtLmlzSW1hZ2UgPyAnaW1hZ2UvKicgOlxyXG4gICAgICAnLicgKyBBdHRhY2htZW50SW5mby5maWxlRXh0KGl0ZW0uZmlsZU5hbWUpICsgJywnICsgaXRlbS5jb250ZW50VHlwZTtcclxuICAgIHRoaXMuX3Byb21wdCh7IG11bHRpcGxlOiBmYWxzZSwgYWNjZXB0IH0pLnRoZW4oZmlsZXMgPT4ge1xyXG4gICAgICAvL2lmICghZmlsZXNbMF0ubmFtZS5zdGFydHNXaXRoKGl0ZW0uZmlsZU5hbWUpKSB7XHJcbiAgICAgIC8vICB0aGlzLl9zYi5lcnJvcih0aGlzLl90cmFuc2xhdGUuZ2V0KCdDaGVja0luTWF0Y2hFcnInLCBpdGVtLmZpbGVOYW1lKSk7XHJcbiAgICAgIC8vICByZXR1cm47XHJcbiAgICAgIC8vfVxyXG4gICAgICB0aGlzLl9tYWlsYm94LmNoZWNrSW4odGhpcy5fbW9kZWwuaWQsIHRoaXMuX21vZGVsLnZlcnNpb24sIGl0ZW0uaWQsIGZpbGVzWzBdKS5zdWJzY3JpYmUoYSA9PiB7XHJcbiAgICAgICAgLy9pZiAoYSBpbnN0YW5jZW9mIFVwbG9hZEV2ZW50KSB7XHJcbiAgICAgICAgLy8gIE9iamVjdC5hc3NpZ24oaXRlbSwge1xyXG4gICAgICAgIC8vICAgIHByb2dyZXNzOiBhLmxvYWRlZCAvIGEudG90YWxcclxuICAgICAgICAvLyAgfSk7XHJcbiAgICAgICAgLy8gIHJldHVybjtcclxuICAgICAgICAvL31cclxuICAgICAgICBPYmplY3QuYXNzaWduKGl0ZW0sIGEsIHsgcHJvZ3Jlc3M6IG51bGwsIGNoZWNrZWRPdXQ6IG51bGwgfSk7XHJcbiAgICAgICAgdGhpcy5fc2IudG9hc3QodGhpcy5fdHJhbnNsYXRlLmdldCgnQ2hlY2tlZEluJywgaXRlbS5maWxlTmFtZSkpO1xyXG4gICAgICB9LCBlID0+IHRoaXMuX2hhbmRsZUVycm9yKGUpKTtcclxuICAgIH1cclxuICAgIClcclxuICB9XHJcbiAgY2hlY2tPdXQoaXRlbTogQXR0YWNobWVudEV4dHJhKSB7XHJcbiAgICB0aGlzLl9tYWlsYm94LmNoZWNrT3V0KHRoaXMuX21vZGVsLmlkLCB0aGlzLl9tb2RlbC52ZXJzaW9uLCBpdGVtLmlkKS5cclxuICAgICAgc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpdGVtLmNoZWNrZWRPdXQgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIHRoaXMuZG93bmxvYWQoaXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBkaXNjYXJkKGl0ZW06IEF0dGFjaG1lbnRFeHRyYSkge1xyXG4gICAgY29uc3QgdGFzayA9ICgpID0+XHJcbiAgICAgIHRoaXMuX21haWxib3gucmVtb3ZlYXR0YWNobWVudCh0aGlzLl9tb2RlbC5pZCwgaXRlbS5pZCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpdGVtLmRlbGV0ZWQgPSB0cnVlO1xyXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICB0aGlzLml0ZW1zLnJlbW92ZShpdGVtKTtcclxuICAgICAgICAgIGlmICh0aGlzLml0ZW1zLmxlbmd0aClcclxuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLml0ZW1zLm1hcChpID0+IGkuaWQpO1xyXG4gICAgICAgICAgZWxzZSB0aGlzLml0ZW1zID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLml0ZW1zID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5fbW9kZWwuYXR0YWNobWVudHMucmVtb3ZlKGl0ZW0pO1xyXG4gICAgICB9LCBlID0+XHJcbiAgICAgICAgdGhpcy5faGFuZGxlRXJyb3IoZSkpO1xyXG4gICAgaWYgKHRoaXMuX21vZGVsLmRyYWZ0KVxyXG4gICAgICB0YXNrKCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuX3NiLmFzaygnRGVsZXRlRmlsZUFzaycsICdEZWxldGVGaWxlJywgeyBjb2xvcjogJ3dhcm4nIH0pLnN1YnNjcmliZShvayA9PlxyXG4gICAgICAgIG9rICYmIHRhc2soKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2hhbmRsZUVycm9yKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSk6IHZvaWQge1xyXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcclxuICAgICAgY2FzZSA0MDE6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgNDA5OiAvLyB2ZXJzaW9uIGNoYW5nZVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRoaXMuX3NiLmVycm9yKCdWZXJzaW9uRXJyJywgdGhpcy5fbW9kZWwubnVtYmVyKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgY2FzZSA0MDY6IC8vIHZhbGlkYXRpb24gZXhjZXB0aW9uXHJcbiAgICAgICAgdGhpcy5fc2IuZXJyb3JTdHJpbmcocmVzcG9uc2UuZXJyb3IpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuX2Ryb3BhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5fZHJhZ0Ryb3Auc3Vic2NyaWJlKG9rID0+IHtcclxuICAgICAgaWYgKG9rKSBjb250YWluZXIuY2xhc3NMaXN0LmFkZCgnZHJhZycpO1xyXG4gICAgICBlbHNlIGNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCdkcmFnJyk7XHJcbiAgICB9KTtcclxuICAgIGlmICghdGhpcy5fcGxhY2Vob2xkZXIpIHRoaXMuX3BsYWNlaG9sZGVyID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRHJhZ0ZpbGUnKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6ZHJvcCcsIFsnJGV2ZW50J10pXHJcbiAgaGFuZGxlRG9jdW1lbnREcm9wKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZURyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuX2RyYWdEcm9wLm5leHQoZmFsc2UpO1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkICYmIHRoaXMuX29uVG91Y2hlZCgpO1xyXG4gICAgY29uc3QgeyBpdGVtcyB9ID0gZXZlbnQuZGF0YVRyYW5zZmVyO1xyXG4gICAgY29uc3QgZmlsZXMgPSBbXSBhcyBGaWxlW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSBpdGVtc1tpXS5nZXRBc0ZpbGUoKTtcclxuICAgICAgZmlsZXMucHVzaChmaWxlKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNoZWNrZWRPdXQgPSB0aGlzLml0ZW1zLmZpbHRlcihpID0+IGkuY2hlY2tlZE91dCk7XHJcbiAgICBpZiAodGhpcy5pdGVtcyAmJiBjaGVja2VkT3V0Lmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBvYnNlcnZhYmxlcyA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBpdGVtIG9mIGNoZWNrZWRPdXQpIHtcclxuICAgICAgICBsZXQgZmlsZSA9IGZpbGVzLmZpbmQoZiA9PiBmLm5hbWUuc3RhcnRzV2l0aChpdGVtLmZpbGVOYW1lKSk7XHJcbiAgICAgICAgaWYgKGZpbGUpIHtcclxuICAgICAgICAgIGxldCBvYnNlcnZhYmxlID0gdGhpcy5fbWFpbGJveC5jaGVja0luKHRoaXMuX21vZGVsLmlkLCB0aGlzLl9tb2RlbC52ZXJzaW9uLCBpdGVtLmlkLCBmaWxlKS5cclxuICAgICAgICAgICAgcGlwZSh0YXAoZSA9PiB7XHJcbiAgICAgICAgICAgIC8vT2JqZWN0LmFzc2lnbihpdGVtLCBhLCB7IHByb2dyZXNzOiBudWxsIH0pO1xyXG4gICAgICAgICAgICB9KSwgY2F0Y2hFcnJvcihlID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVFcnJvcihlKTtcclxuICAgICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICBvYnNlcnZhYmxlcy5wdXNoKG9ic2VydmFibGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBmb3JrSm9pbihvYnNlcnZhYmxlcykuc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gZS5maWx0ZXIoZSA9PiBlKSBhcyBBdHRhY2htZW50W107XHJcbiAgICAgICAgYXR0YWNobWVudHMubGVuZ3RoICYmIHRoaXMuX3NiLnRvYXN0KFxyXG4gICAgICAgICAgYXR0YWNobWVudHMubGVuZ3RoID4gMSA/IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0NoZWNrZWRJbk4nLCBhdHRhY2htZW50cy5sZW5ndGgpIDpcclxuICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnQ2hlY2tlZEluJywgYXR0YWNobWVudHNbMF0uZmlsZU5hbWUpXHJcbiAgICAgICAgKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5fdXBsb2FkKGZpbGVzKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2VudGVyJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVFbnRlcihldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5fZHJhZ0Ryb3AubmV4dCh0cnVlKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVMZWF2ZShldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5fZHJhZ0Ryb3AubmV4dChmYWxzZSk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdvdmVyJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVPdmVyKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAhdGhpcy5kaXNhYmxlZCAmJiB0aGlzLl9kcmFnRHJvcC5uZXh0KHRydWUpO1xyXG4gIH1cclxuICB3cml0ZVZhbHVlKHZhbDogbnVtYmVyIHwgbnVtYmVyW10pOiB2b2lkIHtcclxuICAgIGlmICghdmFsKSB7XHJcbiAgICAgIHRoaXMuaXRlbXMgPSBudWxsO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0FycmF5KHZhbCkpXHJcbiAgICAgIHRoaXMuaXRlbXMgPVxyXG4gICAgICAgIHZhbC5tYXAoaSA9PiB0aGlzLl9jcmVhdGVJdGVtKGkpKTtcclxuICAgIGVsc2UgdGhpcy5pdGVtc1t0aGlzLl9jcmVhdGVJdGVtKHZhbCldO1xyXG4gIH1cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcbiAgQElucHV0KCkgZ2V0IHZhbHVlKCk6IG51bWJlciB8IG51bWJlcltdIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcbiAgc2V0IHZhbHVlKHZhbDogbnVtYmVyIHwgbnVtYmVyW10pIHtcclxuICAgIHRoaXMud3JpdGVWYWx1ZSh2YWwpO1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gIH1cclxuICBASW5wdXQoKSBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcclxuICB9XHJcbiAgc2V0IHBsYWNlaG9sZGVyKHBsaDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHBsaDtcclxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICB9XHJcbiAgZm9jdXNlZDogYm9vbGVhbjtcclxuICBnZXQgZW1wdHkoKTogYm9vbGVhbiB7IHJldHVybiAhdGhpcy5pdGVtczsgfVxyXG4gIHNob3VsZExhYmVsRmxvYXQ6IGJvb2xlYW47XHJcbiAgQElucHV0KClcclxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XHJcbiAgfVxyXG4gIHNldCByZXF1aXJlZChyZXE6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHJlcSk7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7IH1cclxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICB9XHJcbiAgZXJyb3JTdGF0ZSA9IGZhbHNlO1xyXG4gIGNvbnRyb2xUeXBlPzogc3RyaW5nID0gJ2JpemRvYy1maWxlLXVwbG9hZCc7XHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGVzY3JpYmVkYnknKSBkZXNjcmliZWRCeSA9ICcnO1xyXG4gIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pIHtcclxuICAgIHRoaXMuZGVzY3JpYmVkQnkgPSBpZHMuam9pbignICcpO1xyXG4gIH1cclxuICBvbkNvbnRhaW5lckNsaWNrKCk6IHZvaWQge1xyXG4gIH1cclxuICBwcm9tcHQoKSB7XHJcbiAgICB0aGlzLl9wcm9tcHQoKS50aGVuKHRoaXMuX3VwbG9hZC5iaW5kKHRoaXMpKVxyXG4gIH1cclxuICBwcml2YXRlIF9wcm9tcHQob3B0aW9ucz86IHsgbXVsdGlwbGU6IGJvb2xlYW4sIGFjY2VwdD86IHN0cmluZyB9KTogUHJvbWlzZTxGaWxlIHwgRmlsZVtdPiB7XHJcbiAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICBpZiAob3B0aW9ucy5hY2NlcHQpIHRoaXMuYWNjZXB0ID0gb3B0aW9ucy5hY2NlcHQ7XHJcbiAgICAgIGlmIChvcHRpb25zLm11bHRpcGxlICE9PSB1bmRlZmluZWQpIHRoaXMubXVsdGlwbGUgPSBvcHRpb25zLm11bHRpcGxlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIHRoaXMuX2lucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgdGhpcy5fcGVuZGluZy5zdWJzY3JpYmUocmVzb2x2ZSk7XHJcbiAgICB9KVxyXG4gIH1cclxuICBfY2hhbmdlKGV2dDogSW5wdXRFdmVudCkge1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkICYmIHRoaXMuX29uVG91Y2hlZCgpO1xyXG4gICAgY29uc3QgeyBmaWxlcyB9ID0gZXZ0LnNyY0VsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGNvbnN0IGFyciA9IFtdIGFzIEZpbGVbXTtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGZpbGUgPSBmaWxlcy5pdGVtKGkpO1xyXG4gICAgICBhcnIucHVzaChmaWxlKTtcclxuICAgIH1cclxuICAgIHRoaXMuX3BlbmRpbmcubmV4dChhcnIpO1xyXG4gIH1cclxuICBwcml2YXRlIF9jcmVhdGVJdGVtKGlkOiBudW1iZXIpOiBhbnkge1xyXG4gICAgY29uc3QgYXR0YWNobWVudCA9IHRoaXMuX21vZGVsLmF0dGFjaG1lbnRzLmZpbmQoYSA9PiBhLmlkID09PSBpZCksXHJcbiAgICAgIGxvZyA9IHRoaXMuX21vZGVsLmxvZy5maWx0ZXIobCA9PiBsLmZpbGVJZCA9PSBhdHRhY2htZW50LmlkICYmIGwudXNlcklkID09IHRoaXMuX3Nlc3Npb24udXNlcklkKSxcclxuICAgICAgZmlsZUV4dCA9IEF0dGFjaG1lbnRJbmZvLmZpbGVFeHQoYXR0YWNobWVudC5maWxlTmFtZSksXHJcbiAgICAgIGljb24gPSBFWFRFTkRFRF9JQ09OU1tmaWxlRXh0XTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIC4uLmF0dGFjaG1lbnQsXHJcbiAgICAgIGhhc1ByZXZpZXc6IEF0dGFjaG1lbnRJbmZvLmV4aXN0cyhhdHRhY2htZW50LmNvbnRlbnRUeXBlKSxcclxuICAgICAgaXNJbWFnZTogQXR0YWNobWVudEluZm8uaXNJbWFnZShhdHRhY2htZW50LmNvbnRlbnRUeXBlKSxcclxuICAgICAgZmlsZUV4dCxcclxuICAgICAgaWNvbixcclxuICAgICAgdXJsOiB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChcclxuICAgICAgICB0aGlzLl9tYWlsYm94LmZvcm1hdERvd25sb2FkVXJsKHRoaXMuX21vZGVsLmRvY3VtZW50SWQsIGF0dGFjaG1lbnQuaWQpKSxcclxuICAgICAgY2hlY2tlZE91dDpcclxuICAgICAgICAoYXR0YWNobWVudC5tb2RlICYgQXR0YWNobWVudE1vZGUuQ2hlY2tlZE91dCkgPT0gQXR0YWNobWVudE1vZGUuQ2hlY2tlZE91dCAmJlxyXG4gICAgICAgICAgYXR0YWNobWVudC5ob2xkaW5nSWQgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkID9cclxuICAgICAgICAgIGxvZy5yZXZlcnNlKCkuZmluZChsID0+IGwudHlwZSA9PT0gJ0NoZWNrT3V0JykudGltZSA6IG51bGxcclxuICAgIH0gYXMgQXR0YWNobWVudEV4dHJhO1xyXG4gIH1cclxuICBwcml2YXRlIF91cGxvYWQoZmlsZXM6IEZpbGVbXSkge1xyXG4gICAgY29uc3Qgb2JzZXJ2YWJsZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGZpbGUgb2YgZmlsZXMpIHtcclxuICAgICAgbGV0IG9ic2VydmFibGUgPSB0aGlzLl9tYWlsYm94LnVwbG9hZCh0aGlzLl9tb2RlbC5pZCwgdGhpcy5fbW9kZWwuZm9ybUlkLCB0aGlzLl9tb2RlbC52ZXJzaW9uLFxyXG4gICAgICAgIGZpbGUsIHsgaXNQcml2YXRlOiB0cnVlIH0pLlxyXG4gICAgICAgIHBpcGUodGFwKGUgPT4ge1xyXG4gICAgICAgICAgLy8gIGlmIChlLnByb2dyZXNzKSB7XHJcblxyXG4gICAgICAgICAgLy8gIH1cclxuICAgICAgICB9KSwgY2F0Y2hFcnJvcihlID0+IHtcclxuICAgICAgICAgIHRoaXMuX2hhbmRsZUVycm9yKGUpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcclxuICAgICAgICB9KSk7XHJcbiAgICAgIG9ic2VydmFibGVzLnB1c2gob2JzZXJ2YWJsZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gbnVsbDtcclxuICAgIGZvcmtKb2luKG9ic2VydmFibGVzKS5zdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgIGNvbnN0IGlkcyA9IFtdO1xyXG4gICAgICBpZiAoIXRoaXMuaXRlbXMpIHRoaXMuaXRlbXMgPSBbXTtcclxuICAgICAgZS5mb3JFYWNoKGEgPT4ge1xyXG4gICAgICAgIGlmICghYSkgcmV0dXJuO1xyXG4gICAgICAgIGlkcy5wdXNoKGEuaWQpO1xyXG4gICAgICAgIHRoaXMuX21vZGVsLmF0dGFjaG1lbnRzLnB1c2goYSk7XHJcbiAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHRoaXMuX2NyZWF0ZUl0ZW0oYS5pZCkpO1xyXG4gICAgICB9KVxyXG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSkgXHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLl92YWx1ZSA/ICh0aGlzLl92YWx1ZSBhcyBudW1iZXJbXSkuY29uY2F0KGlkcykgOiBpZHM7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLl92YWx1ZSA9IGlkc1swXTtcclxuICAgICAgdGhpcy5fb25DaGFuZ2UodGhpcy5fdmFsdWUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZHJhZ0Ryb3AuY29tcGxldGUoKTtcclxuICAgIHRoaXMuX3BlbmRpbmcuY29tcGxldGUoKTtcclxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxidXR0b24gbWF0LWJ1dHRvbiAqbmdJZj1cIiFpdGVtczsgZWxzZSBwcmV2aWV3XCIgKGNsaWNrKT1cInByb21wdCgpXCI+XHJcbiAgPG1hdC1pY29uIGNsYXNzPVwiZmlsbGVkXCI+e3tpY29ufX08L21hdC1pY29uPlxyXG4gIDxzcGFuIGNsYXNzPVwibWF0LWgzXCI+e3twbGFjZWhvbGRlcn19PC9zcGFuPlxyXG48L2J1dHRvbj5cclxuPGlucHV0IHR5cGU9XCJmaWxlXCIgI2lucHV0XHJcbiAgICAgICBbYWNjZXB0XT1hY2NlcHQgW211bHRpcGxlXT1tdWx0aXBsZSAoY2hhbmdlKT0nX2NoYW5nZSgkZXZlbnQpJyBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIiAvPlxyXG48bmctdGVtcGxhdGUgI3ByZXZpZXc+XHJcbiAgPGRpdiAqbmdGb3I9J2xldCBhIG9mIGl0ZW1zJyBjbGFzcz1cImF0dGFjaG1lbnQtaXRlbVwiXHJcbiAgICAgICBbY2xhc3MuZGVsZXRlZF09XCJhLmRlbGV0ZWRcIiBbY2xhc3MuZmFpbGVkXT1cImEuZmFpbGVkXCJcclxuICAgICAgIFtwcm9ncmVzc0luZGljYXRvcl09XCJhLnByb2dyZXNzXCI+XHJcbiAgICA8aW1nICpuZ0lmPVwiYS5pc0ltYWdlXCIgW3NyY109XCJhLnVybFwiIChjbGljayk9XCJvcGVuUHJldmlldyhhKVwiIGhlaWdodD1cIjgwXCIgY2xhc3M9XCJmaWxlLXByZXZpZXdcIj5cclxuICAgIDxkaXYgKm5nSWY9XCJhLmhhc1ByZXZpZXcgJiYgIWEuaXNJbWFnZVwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgY2xhc3M9XCJmaWxlLXByZXZpZXdcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9wZW5QcmV2aWV3KGEpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1ByZXZpZXcnfHRyYW5zbGF0ZVwiPjxtYXQtaWNvbiBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3JcIj5maW5kX2luX3BhZ2U8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICA8c3Bhbj4ue3thLmZpbGVFeHR9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPG1hdC1pY29uICpuZ0lmPVwiYS5pY29uXCIgW3N2Z0ljb25dPVwiYS5pY29uXCIgW2lubGluZV09XCJ0cnVlXCI+PC9tYXQtaWNvbj5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWxlLW92ZXJsYXkgcm93XCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZW5hbWVcIj57e2EuZmlsZU5hbWV9fTwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cIm9wdGlvbnNcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIFtiaXpkb2NUb29sdGlwXT1cIidPcHRpb25zJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPG1hdC1tZW51ICNtZW51PlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWEuZmFpbGVkXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhbkVkaXQoYSkgJiYgIWEuZmFpbGVkXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWEuY2hlY2tlZE91dFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImNoZWNrT3V0KGEpXCI+e3tcIkNoZWNrT3V0XCIgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInByb21wdCgpXCI+e3tcIkFkZFwiIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJjaGVja0luKGEpXCIgKm5nSWY9XCJhLmNoZWNrZWRPdXRcIj57e1wiQ2hlY2tJblwiIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImRvd25sb2FkKGEpXCI+e3tcIkRvd25sb2FkXCIgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAqbmdJZj1cImNhblByZXZpZXcoYSlcIiAoY2xpY2spPVwib3BlblByZXZpZXcoYSlcIj48bWF0LWljb24+bGFuZHNjYXBlPC9tYXQtaWNvbj4ge3tcIlByZXZpZXdcIiB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1ZlcnNpb24oYSlcIj5cclxuICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICpuZ0Zvcj1cImxldCB2IG9mIGdldFZlcnNpb25zKGEpXCIgKGNsaWNrKT1cInByZXZpZXdPckRvd25sb2FkKHYpXCI+e3t2LnRpbWUgfCAgYW1DYWxlbmRhcn19PC9idXR0b24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhbkVkaXQoYSlcIj5cclxuICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJkaXNjYXJkKGEpXCI+e3tcIkRpc2NhcmRcIiB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImNhbmNlbChhKVwiICpuZ0lmPVwiYS5mYWlsZWRcIj57e1wiQ2FuY2VsXCIgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgPC9tYXQtbWVudT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
392
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9jb250cm9scy9maWxlLmlucHV0LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb3JlL2NvbnRyb2xzL2ZpbGUuaW5wdXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUksT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFtQixjQUFjLEVBQStCLE1BQU0sb0JBQW9CLENBQUM7QUFNbEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVsQyxNQUFNLGNBQWMsR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztBQVEvRixNQUFNLE9BQ0UsU0FBUztJQXdCZixZQUNVLGdCQUE0QixFQUM1QixRQUF3QixFQUN4QixVQUF3QixFQUN4QixlQUErQixFQUMvQixVQUE0QixFQUM1QixRQUF3QixFQUN4QixHQUFrQixF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SUFBSTtzQkFBWixLQUFLO2dCQUNjLE1BQU07c0JBQXpCLFNBQVM7dUJBQUMsT0FBTztnQkFpSWxCLGtCQUFrQjtzQkFEakIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTXpDLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBdUNoQyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU1yQyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU1yQyxVQUFVO3NCQURULFlBQVk7dUJBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXdCdkIsS0FBSztzQkFBakIsS0FBSztnQkFPTyxXQUFXO3NCQUF2QixLQUFLO2dCQVdGLFFBQVE7c0JBRFgsS0FBSztnQkFTRixRQUFRO3NCQURYLEtBQUs7Z0JBUWdDLFdBQVc7c0JBQWhELFdBQVc7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIFNlbGYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ0NvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICcuLi9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50SW5mbyB9IGZyb20gJy4uL2luZm8vYXR0YWNobWVudC1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50RXh0cmEsIERPQ1VNRU5UX01PREVMLCBNYWlsYm94U2VydmljZSwgVXBsb2FkRXZlbnQgfSBmcm9tICcuLi9tYWlsYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50LCBSZWNpcGllbnRNb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi9wcm9tcHQuc2VydmljZSc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzJztcclxuXHJcbmNvbnN0IEVYVEVOREVEX0lDT05TID0geyAneGxzeCc6ICdleGNlbCcsICdkb2N4JzogJ3dvcmQnLCAncHB0eCc6ICdwb3dlcnBvaW50JywgJ3BkZic6ICdwZGYnIH07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJ2ZpbGUuaW5wdXQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJ2ZpbGUuaW5wdXQuc2NzcyddLFxyXG4gIGhvc3Q6IHsgY2xhc3M6ICdmaWxlLWRyb3BhYmxlJyB9LFxyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWZpbGUtdXBsb2FkJ1xyXG59KVxyXG5leHBvcnRcclxuICBjbGFzcyBGaWxlSW5wdXQgaW1wbGVtZW50cyBNYXRGb3JtRmllbGRDb250cm9sPG51bWJlciB8IG51bWJlcltdPiwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIHN0YXRpYyBuZXh0SWQgPSAwO1xyXG4gIEBIb3N0QmluZGluZygpIHJlYWRvbmx5IGlkID0gYHR5cGUtZmlsZS11cGxvYWQtJHtGaWxlSW5wdXQubmV4dElkKyt9YDtcclxuICByZWFkb25seSBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgX211bHRpcGxlID0gZmFsc2U7XHJcbiAgcHVibGljIGdldCBtdWx0aXBsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsZTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IG11bHRpcGxlKHZhbHVlKSB7XHJcbiAgICB0aGlzLl9tdWx0aXBsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGFjY2VwdCA9IG51bGw7XHJcbiAgQElucHV0KCkgaWNvbiA9ICdwdWJsaXNoJztcclxuICBAVmlld0NoaWxkKCdpbnB1dCcpIF9pbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICBpdGVtczogQXR0YWNobWVudEV4dHJhW107XHJcbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXI6IHN0cmluZztcclxuICBwcml2YXRlIF9yZXF1aXJlZDogYW55O1xyXG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuO1xyXG4gIHByaXZhdGUgX29uQ2hhbmdlOiBhbnk7XHJcbiAgcHJpdmF0ZSBfb25Ub3VjaGVkOiBhbnk7XHJcbiAgcHJpdmF0ZSBfdmFsdWU6IG51bWJlciB8IG51bWJlcltdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RyYWdEcm9wID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9wZW5kaW5nID0gbmV3IFN1YmplY3Q8RmlsZVtdPigpO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZHJvcGFibGVFbGVtZW50OiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSBfbWFpbGJveDogTWFpbGJveFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgIHByaXZhdGUgX2F0dGFjaG1lbnRJbmZvOiBBdHRhY2htZW50SW5mbyxcclxuICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcclxuICAgIEBJbmplY3QoRE9DVU1FTlRfTU9ERUwpIHByaXZhdGUgX21vZGVsOiBSZWNpcGllbnRNb2RlbDxhbnk+LFxyXG4gICkge1xyXG4gICAgaWYgKHRoaXMubmdDb250cm9sICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhhc1ZlcnNpb24oaXRlbTogQXR0YWNobWVudCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vZGVsLmF0dGFjaG1lbnRzLmZpbmQoYSA9PiBhLmZpbGVOYW1lID09PSBpdGVtLmZpbGVOYW1lICYmIGEuaWQgIT09IGl0ZW0uaWQpICE9IG51bGw7XHJcbiAgfVxyXG4gIGdldFZlcnNpb25zKGl0ZW06IEF0dGFjaG1lbnQpOiBBdHRhY2htZW50W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vZGVsLmF0dGFjaG1lbnRzLmZpbHRlcihhID0+IGEuZmlsZU5hbWUgPT09IGl0ZW0uZmlsZU5hbWUgJiYgYS5pZCAhPT0gaXRlbS5pZCk7XHJcbiAgfVxyXG4gIGRvd25sb2FkKGl0ZW06IEF0dGFjaG1lbnRFeHRyYSkge1xyXG4gICAgbG9jYXRpb24uaHJlZiA9IHRoaXMuX21haWxib3guZm9ybWF0RG93bmxvYWRVcmwodGhpcy5fbW9kZWwuZG9jdW1lbnRJZCwgaXRlbS5pZCk7XHJcbiAgICAoaXRlbSBhcyBBdHRhY2htZW50RXh0cmEpLnZpZXdlZCA9IG5ldyBEYXRlKCk7XHJcbiAgfVxyXG4gIHByZXZpZXdPckRvd25sb2FkKGl0ZW06IEF0dGFjaG1lbnRFeHRyYSkge1xyXG4gICAgaWYgKHRoaXMuY2FuUHJldmlldyhpdGVtKSlcclxuICAgICAgdGhpcy5vcGVuUHJldmlldyhpdGVtKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5kb3dubG9hZChpdGVtKTtcclxuICB9XHJcbiAgY2FuUHJldmlldyhpdGVtOiBBdHRhY2htZW50RXh0cmEpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBBdHRhY2htZW50SW5mby5leGlzdHMoaXRlbS5jb250ZW50VHlwZSk7XHJcbiAgfVxyXG4gIGNhbkVkaXQoaXRlbTogQXR0YWNobWVudEV4dHJhKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXRoaXMuX21vZGVsLmNvbXBsZXRlZCAmJiBpdGVtLnVzZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnVzZXJJZCAmJiAhaXRlbS5kZWxldGVkO1xyXG4gIH1cclxuICBvcGVuUHJldmlldyhpdGVtOiBBdHRhY2htZW50RXh0cmEpIHtcclxuICAgIHRoaXMuX2F0dGFjaG1lbnRJbmZvLnByZXZpZXcodGhpcy5fbW9kZWwsIGl0ZW0uaWQpO1xyXG4gIH1cclxuICBjYW5jZWwoaXRlbTogQXR0YWNobWVudEV4dHJhKSB7XHJcbiAgICB0aGlzLl9tb2RlbC5hdHRhY2htZW50cy5yZW1vdmUoaXRlbSk7XHJcbiAgfVxyXG4gIGNoZWNrSW4oaXRlbTogQXR0YWNobWVudEV4dHJhKSB7XHJcbiAgICBjb25zdCBhY2NlcHQgPSBpdGVtLmlzSW1hZ2UgPyAnaW1hZ2UvKicgOlxyXG4gICAgICAnLicgKyBBdHRhY2htZW50SW5mby5maWxlRXh0KGl0ZW0uZmlsZU5hbWUpICsgJywnICsgaXRlbS5jb250ZW50VHlwZTtcclxuICAgIHRoaXMuX3Byb21wdCh7IG11bHRpcGxlOiBmYWxzZSwgYWNjZXB0IH0pLnRoZW4oZmlsZXMgPT4ge1xyXG4gICAgICAvL2lmICghZmlsZXNbMF0ubmFtZS5zdGFydHNXaXRoKGl0ZW0uZmlsZU5hbWUpKSB7XHJcbiAgICAgIC8vICB0aGlzLl9zYi5lcnJvcih0aGlzLl90cmFuc2xhdGUuZ2V0KCdDaGVja0luTWF0Y2hFcnInLCBpdGVtLmZpbGVOYW1lKSk7XHJcbiAgICAgIC8vICByZXR1cm47XHJcbiAgICAgIC8vfVxyXG4gICAgICB0aGlzLl9tYWlsYm94LmNoZWNrSW4odGhpcy5fbW9kZWwuaWQsIHRoaXMuX21vZGVsLnZlcnNpb24sIGl0ZW0uaWQsIGZpbGVzWzBdKS5zdWJzY3JpYmUoYSA9PiB7XHJcbiAgICAgICAgLy9pZiAoYSBpbnN0YW5jZW9mIFVwbG9hZEV2ZW50KSB7XHJcbiAgICAgICAgLy8gIE9iamVjdC5hc3NpZ24oaXRlbSwge1xyXG4gICAgICAgIC8vICAgIHByb2dyZXNzOiBhLmxvYWRlZCAvIGEudG90YWxcclxuICAgICAgICAvLyAgfSk7XHJcbiAgICAgICAgLy8gIHJldHVybjtcclxuICAgICAgICAvL31cclxuICAgICAgICBPYmplY3QuYXNzaWduKGl0ZW0sIGEsIHsgcHJvZ3Jlc3M6IG51bGwsIGNoZWNrZWRPdXQ6IG51bGwgfSk7XHJcbiAgICAgICAgdGhpcy5fc2IudG9hc3QodGhpcy5fdHJhbnNsYXRlLmdldCgnQ2hlY2tlZEluJywgaXRlbS5maWxlTmFtZSkpO1xyXG4gICAgICB9LCBlID0+IHRoaXMuX2hhbmRsZUVycm9yKGUpKTtcclxuICAgIH1cclxuICAgIClcclxuICB9XHJcbiAgY2hlY2tPdXQoaXRlbTogQXR0YWNobWVudEV4dHJhKSB7XHJcbiAgICB0aGlzLl9tYWlsYm94LmNoZWNrT3V0KHRoaXMuX21vZGVsLmlkLCB0aGlzLl9tb2RlbC52ZXJzaW9uLCBpdGVtLmlkKS5cclxuICAgICAgc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpdGVtLmNoZWNrZWRPdXQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZG93bmxvYWQoaXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBkaXNjYXJkKGl0ZW06IEF0dGFjaG1lbnRFeHRyYSkge1xyXG4gICAgY29uc3QgdGFzayA9ICgpID0+XHJcbiAgICAgIHRoaXMuX21haWxib3gucmVtb3ZlYXR0YWNobWVudCh0aGlzLl9tb2RlbC5pZCwgaXRlbS5pZCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpdGVtLmRlbGV0ZWQgPSB0cnVlO1xyXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICB0aGlzLml0ZW1zLnJlbW92ZShpdGVtKTtcclxuICAgICAgICAgIGlmICh0aGlzLml0ZW1zLmxlbmd0aClcclxuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLml0ZW1zLm1hcChpID0+IGkuaWQpO1xyXG4gICAgICAgICAgZWxzZSB0aGlzLml0ZW1zID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLml0ZW1zID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5fbW9kZWwuYXR0YWNobWVudHMucmVtb3ZlKGl0ZW0pO1xyXG4gICAgICB9LCBlID0+XHJcbiAgICAgICAgdGhpcy5faGFuZGxlRXJyb3IoZSkpO1xyXG4gICAgaWYgKHRoaXMuX21vZGVsLmRyYWZ0KVxyXG4gICAgICB0YXNrKCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuX3NiLmFzaygnRGVsZXRlRmlsZUFzaycsICdEZWxldGVGaWxlJywgeyBjb2xvcjogJ3dhcm4nIH0pLnN1YnNjcmliZShvayA9PlxyXG4gICAgICAgIG9rICYmIHRhc2soKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2hhbmRsZUVycm9yKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSk6IHZvaWQge1xyXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcclxuICAgICAgY2FzZSA0MDE6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgNDA5OiAvLyB2ZXJzaW9uIGNoYW5nZVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRoaXMuX3NiLmVycm9yKCdWZXJzaW9uRXJyJywgdGhpcy5fbW9kZWwubnVtYmVyKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgY2FzZSA0MDY6IC8vIHZhbGlkYXRpb24gZXhjZXB0aW9uXHJcbiAgICAgICAgdGhpcy5fc2IuZXJyb3JTdHJpbmcocmVzcG9uc2UuZXJyb3IpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuX2Ryb3BhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5fZHJhZ0Ryb3Auc3Vic2NyaWJlKG9rID0+IHtcclxuICAgICAgaWYgKG9rKSBjb250YWluZXIuY2xhc3NMaXN0LmFkZCgnZHJhZycpO1xyXG4gICAgICBlbHNlIGNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCdkcmFnJyk7XHJcbiAgICB9KTtcclxuICAgIGlmICghdGhpcy5fcGxhY2Vob2xkZXIpIHRoaXMuX3BsYWNlaG9sZGVyID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRHJhZ0ZpbGUnKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6ZHJvcCcsIFsnJGV2ZW50J10pXHJcbiAgaGFuZGxlRG9jdW1lbnREcm9wKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZURyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuX2RyYWdEcm9wLm5leHQoZmFsc2UpO1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkICYmIHRoaXMuX29uVG91Y2hlZCgpO1xyXG4gICAgY29uc3QgeyBpdGVtcyB9ID0gZXZlbnQuZGF0YVRyYW5zZmVyO1xyXG4gICAgY29uc3QgZmlsZXMgPSBbXSBhcyBGaWxlW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSBpdGVtc1tpXS5nZXRBc0ZpbGUoKTtcclxuICAgICAgZmlsZXMucHVzaChmaWxlKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNoZWNrZWRPdXQgPSB0aGlzLml0ZW1zLmZpbHRlcihpID0+IGkuY2hlY2tlZE91dCk7XHJcbiAgICBpZiAodGhpcy5pdGVtcyAmJiBjaGVja2VkT3V0Lmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBvYnNlcnZhYmxlcyA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBpdGVtIG9mIGNoZWNrZWRPdXQpIHtcclxuICAgICAgICBsZXQgZmlsZSA9IGZpbGVzLmZpbmQoZiA9PiBmLm5hbWUuc3RhcnRzV2l0aChpdGVtLmZpbGVOYW1lKSk7XHJcbiAgICAgICAgaWYgKGZpbGUpIHtcclxuICAgICAgICAgIGxldCBvYnNlcnZhYmxlID0gdGhpcy5fbWFpbGJveC5jaGVja0luKHRoaXMuX21vZGVsLmlkLCB0aGlzLl9tb2RlbC52ZXJzaW9uLCBpdGVtLmlkLCBmaWxlKS5cclxuICAgICAgICAgICAgcGlwZSh0YXAoZSA9PiB7XHJcbiAgICAgICAgICAgICAgLy9PYmplY3QuYXNzaWduKGl0ZW0sIGEsIHsgcHJvZ3Jlc3M6IG51bGwgfSk7XHJcbiAgICAgICAgICAgIH0pLCBjYXRjaEVycm9yKGUgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuX2hhbmRsZUVycm9yKGUpO1xyXG4gICAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgIG9ic2VydmFibGVzLnB1c2gob2JzZXJ2YWJsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGZvcmtKb2luKG9ic2VydmFibGVzKS5zdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgICAgY29uc3QgYXR0YWNobWVudHMgPSBlLmZpbHRlcihlID0+IGUpIGFzIEF0dGFjaG1lbnRbXTtcclxuICAgICAgICBhdHRhY2htZW50cy5sZW5ndGggJiYgdGhpcy5fc2IudG9hc3QoXHJcbiAgICAgICAgICBhdHRhY2htZW50cy5sZW5ndGggPiAxID8gdGhpcy5fdHJhbnNsYXRlLmdldCgnQ2hlY2tlZEluTicsIGF0dGFjaG1lbnRzLmxlbmd0aCkgOlxyXG4gICAgICAgICAgICB0aGlzLl90cmFuc2xhdGUuZ2V0KCdDaGVja2VkSW4nLCBhdHRhY2htZW50c1swXS5maWxlTmFtZSlcclxuICAgICAgICApXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLl91cGxvYWQoZmlsZXMpO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCdkcmFnZW50ZXInLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUVudGVyKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAhdGhpcy5kaXNhYmxlZCAmJiB0aGlzLl9kcmFnRHJvcC5uZXh0KHRydWUpO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCdkcmFnbGVhdmUnLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUxlYXZlKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAhdGhpcy5kaXNhYmxlZCAmJiB0aGlzLl9kcmFnRHJvcC5uZXh0KGZhbHNlKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZHJhZ292ZXInLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZU92ZXIoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICF0aGlzLmRpc2FibGVkICYmIHRoaXMuX2RyYWdEcm9wLm5leHQodHJ1ZSk7XHJcbiAgfVxyXG4gIHdyaXRlVmFsdWUodmFsOiBudW1iZXIgfCBudW1iZXJbXSk6IHZvaWQge1xyXG4gICAgaWYgKCF2YWwpIHtcclxuICAgICAgdGhpcy5pdGVtcyA9IG51bGw7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzQXJyYXkodmFsKSlcclxuICAgICAgdGhpcy5pdGVtcyA9XHJcbiAgICAgICAgdmFsLm1hcChpID0+IHRoaXMuX2NyZWF0ZUl0ZW0oaSkpO1xyXG4gICAgZWxzZSB0aGlzLml0ZW1zW3RoaXMuX2NyZWF0ZUl0ZW0odmFsKV07XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcclxuICB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuICBASW5wdXQoKSBnZXQgdmFsdWUoKTogbnVtYmVyIHwgbnVtYmVyW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gIH1cclxuICBzZXQgdmFsdWUodmFsOiBudW1iZXIgfCBudW1iZXJbXSkge1xyXG4gICAgdGhpcy53cml0ZVZhbHVlKHZhbCk7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGdldCBwbGFjZWhvbGRlcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xyXG4gIH1cclxuICBzZXQgcGxhY2Vob2xkZXIocGxoOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gcGxoO1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gIH1cclxuICBmb2N1c2VkOiBib29sZWFuO1xyXG4gIGdldCBlbXB0eSgpOiBib29sZWFuIHsgcmV0dXJuICF0aGlzLml0ZW1zOyB9XHJcbiAgc2hvdWxkTGFiZWxGbG9hdDogYm9vbGVhbjtcclxuICBASW5wdXQoKVxyXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcclxuICB9XHJcbiAgc2V0IHJlcXVpcmVkKHJlcTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkocmVxKTtcclxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9kaXNhYmxlZDsgfVxyXG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gIH1cclxuICBlcnJvclN0YXRlID0gZmFsc2U7XHJcbiAgY29udHJvbFR5cGU/OiBzdHJpbmcgPSAnYml6ZG9jLWZpbGUtdXBsb2FkJztcclxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kZXNjcmliZWRieScpIGRlc2NyaWJlZEJ5ID0gJyc7XHJcbiAgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSkge1xyXG4gICAgdGhpcy5kZXNjcmliZWRCeSA9IGlkcy5qb2luKCcgJyk7XHJcbiAgfVxyXG4gIG9uQ29udGFpbmVyQ2xpY2soKTogdm9pZCB7XHJcbiAgfVxyXG4gIHByb21wdCgpIHtcclxuICAgIHRoaXMuX3Byb21wdCgpLnRoZW4odGhpcy5fdXBsb2FkLmJpbmQodGhpcykpXHJcbiAgfVxyXG4gIHByaXZhdGUgX3Byb21wdChvcHRpb25zPzogeyBtdWx0aXBsZTogYm9vbGVhbiwgYWNjZXB0Pzogc3RyaW5nIH0pOiBQcm9taXNlPEZpbGUgfCBGaWxlW10+IHtcclxuICAgIGlmIChvcHRpb25zKSB7XHJcbiAgICAgIGlmIChvcHRpb25zLmFjY2VwdCkgdGhpcy5hY2NlcHQgPSBvcHRpb25zLmFjY2VwdDtcclxuICAgICAgaWYgKG9wdGlvbnMubXVsdGlwbGUgIT09IHVuZGVmaW5lZCkgdGhpcy5tdWx0aXBsZSA9IG9wdGlvbnMubXVsdGlwbGU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgdGhpcy5faW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gICAgICB0aGlzLl9wZW5kaW5nLnN1YnNjcmliZShyZXNvbHZlKTtcclxuICAgIH0pXHJcbiAgfVxyXG4gIF9jaGFuZ2UoZXZ0OiBJbnB1dEV2ZW50KSB7XHJcbiAgICB0aGlzLl9vblRvdWNoZWQgJiYgdGhpcy5fb25Ub3VjaGVkKCk7XHJcbiAgICBjb25zdCB7IGZpbGVzIH0gPSBldnQuc3JjRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgY29uc3QgYXJyID0gW10gYXMgRmlsZVtdO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgZmlsZSA9IGZpbGVzLml0ZW0oaSk7XHJcbiAgICAgIGFyci5wdXNoKGZpbGUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fcGVuZGluZy5uZXh0KGFycik7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NyZWF0ZUl0ZW0oaWQ6IG51bWJlcik6IGFueSB7XHJcbiAgICAvL2NvbnN0IGxvZyA9IHRoaXMuX21vZGVsLmxvZy5maWx0ZXIobCA9PiBsLmZpbGVJZCA9PSBhdHRhY2htZW50LmlkICYmIGwudXNlcklkID09IHRoaXMuX3Nlc3Npb24udXNlcklkKSxcclxuICAgIGNvbnN0IGF0dGFjaG1lbnQgPSB0aGlzLl9tb2RlbC5hdHRhY2htZW50cy5maW5kKGEgPT4gYS5pZCA9PT0gaWQpLFxyXG4gICAgICBmaWxlRXh0ID0gQXR0YWNobWVudEluZm8uZmlsZUV4dChhdHRhY2htZW50LmZpbGVOYW1lKSxcclxuICAgICAgaWNvbiA9IEVYVEVOREVEX0lDT05TW2ZpbGVFeHRdO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4uYXR0YWNobWVudCxcclxuICAgICAgaGFzUHJldmlldzogQXR0YWNobWVudEluZm8uZXhpc3RzKGF0dGFjaG1lbnQuY29udGVudFR5cGUpLFxyXG4gICAgICBpc0ltYWdlOiBBdHRhY2htZW50SW5mby5pc0ltYWdlKGF0dGFjaG1lbnQuY29udGVudFR5cGUpLFxyXG4gICAgICBmaWxlRXh0LFxyXG4gICAgICBpY29uLFxyXG4gICAgICB1cmw6IHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKFxyXG4gICAgICAgIHRoaXMuX21haWxib3guZm9ybWF0RG93bmxvYWRVcmwodGhpcy5fbW9kZWwuZG9jdW1lbnRJZCwgYXR0YWNobWVudC5pZCkpLFxyXG4gICAgICBjaGVja2VkT3V0OlxyXG4gICAgICAgIGF0dGFjaG1lbnQuY2hlY2tlZE91dCAmJlxyXG4gICAgICAgIGF0dGFjaG1lbnQuaG9sZGluZ0lkID09PSB0aGlzLl9zZXNzaW9uLnVzZXJJZFxyXG4gICAgfSBhcyBBdHRhY2htZW50RXh0cmE7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3VwbG9hZChmaWxlczogRmlsZVtdKSB7XHJcbiAgICBjb25zdCBvYnNlcnZhYmxlcyA9IFtdO1xyXG4gICAgZm9yIChsZXQgZmlsZSBvZiBmaWxlcykge1xyXG4gICAgICBsZXQgb2JzZXJ2YWJsZSA9IHRoaXMuX21haWxib3gudXBsb2FkKHRoaXMuX21vZGVsLmlkLCB0aGlzLl9tb2RlbC5mb3JtSWQsIHRoaXMuX21vZGVsLnZlcnNpb24sXHJcbiAgICAgICAgZmlsZSwgeyBpc1ByaXZhdGU6IHRydWUgfSkuXHJcbiAgICAgICAgcGlwZSh0YXAoZSA9PiB7XHJcbiAgICAgICAgICAvLyAgaWYgKGUucHJvZ3Jlc3MpIHtcclxuXHJcbiAgICAgICAgICAvLyAgfVxyXG4gICAgICAgIH0pLCBjYXRjaEVycm9yKGUgPT4ge1xyXG4gICAgICAgICAgdGhpcy5faGFuZGxlRXJyb3IoZSk7XHJcbiAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xyXG4gICAgICAgIH0pKTtcclxuICAgICAgb2JzZXJ2YWJsZXMucHVzaChvYnNlcnZhYmxlKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2lucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBudWxsO1xyXG4gICAgZm9ya0pvaW4ob2JzZXJ2YWJsZXMpLnN1YnNjcmliZShlID0+IHtcclxuICAgICAgY29uc3QgaWRzID0gW107XHJcbiAgICAgIGlmICghdGhpcy5pdGVtcykgdGhpcy5pdGVtcyA9IFtdO1xyXG4gICAgICBlLmZvckVhY2goYSA9PiB7XHJcbiAgICAgICAgaWYgKCFhKSByZXR1cm47XHJcbiAgICAgICAgaWRzLnB1c2goYS5pZCk7XHJcbiAgICAgICAgdGhpcy5fbW9kZWwuYXR0YWNobWVudHMucHVzaChhKTtcclxuICAgICAgICB0aGlzLml0ZW1zLnB1c2godGhpcy5fY3JlYXRlSXRlbShhLmlkKSk7XHJcbiAgICAgIH0pXHJcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKVxyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5fdmFsdWUgPyAodGhpcy5fdmFsdWUgYXMgbnVtYmVyW10pLmNvbmNhdChpZHMpIDogaWRzO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBpZHNbMF07XHJcbiAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2RyYWdEcm9wLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLl9wZW5kaW5nLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8YnV0dG9uIG1hdC1idXR0b24gKm5nSWY9XCIhaXRlbXM7IGVsc2UgcHJldmlld1wiIChjbGljayk9XCJwcm9tcHQoKVwiPlxyXG4gIDxtYXQtaWNvbiBjbGFzcz1cImZpbGxlZFwiPnt7aWNvbn19PC9tYXQtaWNvbj5cclxuICA8c3BhbiBjbGFzcz1cIm1hdC1oM1wiPnt7cGxhY2Vob2xkZXJ9fTwvc3Bhbj5cclxuPC9idXR0b24+XHJcbjxpbnB1dCB0eXBlPVwiZmlsZVwiICNpbnB1dFxyXG4gICAgICAgW2FjY2VwdF09YWNjZXB0IFttdWx0aXBsZV09bXVsdGlwbGUgKGNoYW5nZSk9J19jaGFuZ2UoJGV2ZW50KScgc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgLz5cclxuPG5nLXRlbXBsYXRlICNwcmV2aWV3PlxyXG4gIDxkaXYgKm5nRm9yPSdsZXQgYSBvZiBpdGVtcycgY2xhc3M9XCJhdHRhY2htZW50LWl0ZW1cIlxyXG4gICAgICAgW2NsYXNzLmRlbGV0ZWRdPVwiYS5kZWxldGVkXCIgW2NsYXNzLmZhaWxlZF09XCJhLmZhaWxlZFwiXHJcbiAgICAgICBbcHJvZ3Jlc3NJbmRpY2F0b3JdPVwiYS5wcm9ncmVzc1wiPlxyXG4gICAgPGltZyAqbmdJZj1cImEuaXNJbWFnZVwiIFtzcmNdPVwiYS51cmxcIiAoY2xpY2spPVwib3BlblByZXZpZXcoYSlcIiBoZWlnaHQ9XCI4MFwiIGNsYXNzPVwiZmlsZS1wcmV2aWV3XCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiYS5oYXNQcmV2aWV3ICYmICFhLmlzSW1hZ2VcIiBmeExheW91dD1cImNvbHVtblwiIGNsYXNzPVwiZmlsZS1wcmV2aWV3XCI+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvcGVuUHJldmlldyhhKVwiIFtiaXpkb2NUb29sdGlwXT1cIidQcmV2aWV3J3x0cmFuc2xhdGVcIj48bWF0LWljb24gY2xhc3M9XCJtYXQtaWNvbi1ydGwtbWlycm9yXCI+ZmluZF9pbl9wYWdlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgPHNwYW4+Lnt7YS5maWxlRXh0fX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxtYXQtaWNvbiAqbmdJZj1cImEuaWNvblwiIFtzdmdJY29uXT1cImEuaWNvblwiIFtpbmxpbmVdPVwidHJ1ZVwiPjwvbWF0LWljb24+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsZS1vdmVybGF5IHJvd1wiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImZpbGVuYW1lXCI+e3thLmZpbGVOYW1lfX08L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJvcHRpb25zXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBbYml6ZG9jVG9vbHRpcF09XCInT3B0aW9ucycgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICA8bWF0LWljb24+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxtYXQtbWVudSAjbWVudT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhLmZhaWxlZFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5FZGl0KGEpICYmICFhLmZhaWxlZFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhLmNoZWNrZWRPdXRcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJjaGVja091dChhKVwiPnt7XCJDaGVja091dFwiIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJwcm9tcHQoKVwiPnt7XCJBZGRcIiB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiY2hlY2tJbihhKVwiICpuZ0lmPVwiYS5jaGVja2VkT3V0XCI+e3tcIkNoZWNrSW5cIiB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJkb3dubG9hZChhKVwiPnt7XCJEb3dubG9hZFwiIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nSWY9XCJjYW5QcmV2aWV3KGEpXCIgKGNsaWNrKT1cIm9wZW5QcmV2aWV3KGEpXCI+PG1hdC1pY29uPmxhbmRzY2FwZTwvbWF0LWljb24+IHt7XCJQcmV2aWV3XCIgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNWZXJzaW9uKGEpXCI+XHJcbiAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAqbmdGb3I9XCJsZXQgdiBvZiBnZXRWZXJzaW9ucyhhKVwiIChjbGljayk9XCJwcmV2aWV3T3JEb3dubG9hZCh2KVwiPnt7di50aW1lIHwgIGFtQ2FsZW5kYXJ9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5FZGl0KGEpXCI+XHJcbiAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZGlzY2FyZChhKVwiPnt7XCJEaXNjYXJkXCIgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJjYW5jZWwoYSlcIiAqbmdJZj1cImEuZmFpbGVkXCI+e3tcIkNhbmNlbFwiIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgIDwvbWF0LW1lbnU+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
@@ -66,7 +66,7 @@ export class LayoutComponent {
|
|
66
66
|
case (FieldType.Expression):
|
67
67
|
comp = ExpressionField;
|
68
68
|
break;
|
69
|
-
case (FieldType.
|
69
|
+
case (FieldType.Duration):
|
70
70
|
comp = TimespanField;
|
71
71
|
break;
|
72
72
|
case (FieldType.Address):
|
@@ -189,4 +189,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
|
|
189
189
|
type: ViewChild,
|
190
190
|
args: ['container', { static: true, read: ViewContainerRef }]
|
191
191
|
}] } });
|
192
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFzRyxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDaE4sT0FBTyxFQUFhLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBZ0MsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFP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QUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0NvbnRhaW5lclJlZiwgT25EZXN0cm95LCBDb21wb25lbnRSZWYsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBBZnRlclZpZXdJbml0LCBOZ1pvbmUsIFZpZXdDaGlsZCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZpZWxkSW5mbywgRmllbGRUeXBlLCBWYWxpZGF0aW9uVHlwZSB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRmllbGRCYXNlIH0gZnJvbSAnLi9pbnB1dC5iYXNlJztcclxuaW1wb3J0IHsgQ2hlY2tGaWVsZCB9IGZyb20gXCIuL2NoZWNrYm94LmZpZWxkXCI7XHJcbmltcG9ydCB7IFN3aXRjaEZpZWxkIH0gZnJvbSBcIi4vc3dpdGNoLmZpZWxkXCI7XHJcbmltcG9ydCB7IFRpbWVzcGFuRmllbGQgfSBmcm9tIFwiLi90aW1lc3Bhbi5maWVsZFwiO1xyXG5pbXBvcnQgeyBFeHByZXNzaW9uRmllbGQgfSBmcm9tIFwiLi9leHByZXNzaW9uLmZpZWxkXCI7XHJcbmltcG9ydCB7IFNlbGVjdEZpZWxkIH0gZnJvbSBcIi4vc2VsZWN0LmZpZWxkXCI7XHJcbmltcG9ydCB7IEF1dG9jb21wbGV0ZUZpZWxkIH0gZnJvbSBcIi4vYXV0b2NvbXBsZXRlLmZpZWxkXCI7XHJcbmltcG9ydCB7IERhdGVGaWVsZCB9IGZyb20gXCIuL2RhdGUuZmllbGRcIjtcclxuaW1wb3J0IHsgRGF0ZVJhbmdlRmllbGQgfSBmcm9tIFwiLi9kYXRlLXJhbmdlLmZpZWxkXCI7XHJcbmltcG9ydCB7IFRleHRhcmVhRmllbGQgfSBmcm9tIFwiLi90ZXh0YXJlYS5maWVsZFwiO1xyXG5pbXBvcnQgeyBOdW1lcmljRmllbGQgfSBmcm9tIFwiLi9udW1lcmljLmZpZWxkXCI7XHJcbmltcG9ydCB7IElucHV0RmllbGQgfSBmcm9tIFwiLi9pbnB1dC5maWVsZFwiO1xyXG5pbXBvcnQgeyBIdG1sRmllbGQgfSBmcm9tICcuL2h0bWwuZmllbGQnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1sYXlvdXQnLFxyXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRhaW5lciAjY29udGFpbmVyPjwvbmctY29udGFpbmVyPicsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGF5b3V0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgaG9zdDogeyBjbGFzczogJ2xheW91dCcgfVxyXG59KVxyXG4vKiogbGF5b3V0IGNvbXBvbmVudCovXHJcbmV4cG9ydCBjbGFzcyBMYXlvdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgZmllbGRzOiBGaWVsZEluZm9bXTtcclxuICBASW5wdXQoKSBtb2RlbCE6IHt9O1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSBtb2RlbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e30+KCk7XHJcbiAgQElucHV0KCkgZGlydHk6IGJvb2xlYW47XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGRpcnR5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBJbnB1dCgpIHBhcmFtczogYW55O1xyXG4gIEBJbnB1dCgpIHZhbGlkOiBib29sZWFuO1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSB2YWxpZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBjb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWY7XHJcbiAgcHJpdmF0ZSBfY21wUmVmOiBDb21wb25lbnRSZWY8YW55PjtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgcHJpdmF0ZSBfaW5zdGFuY2U6IGFueTtcclxuICBwcml2YXRlIF9jaGlsZHJlbjogRmllbGRCYXNlW107XHJcbiAgLyoqIGxheW91dCBjdG9yICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9yZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgcHJpdmF0ZSBfem9uZTogTmdab25lKSB7XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NoaWxkcmVuLmxlbmd0aCAmJiB0aGlzLmZvY3VzKCk7XHJcbiAgfVxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydmaWVsZHMnXSB8fCBjaGFuZ2VzWyd0ZW1wbGF0ZSddKSB7XHJcbiAgICAgIHRoaXMuX2NtcFJlZiAmJiB0aGlzLl9jbXBSZWYuZGVzdHJveSgpO1xyXG4gICAgICB0aGlzLmNyZWF0ZSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY2hhbmdlc1snbW9kZWwnXSkge1xyXG4gICAgICB0aGlzLl9pbnN0YW5jZS5mb3JtLnBhdGNoVmFsdWUodGhpcy5tb2RlbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBjcmVhdGUoKSB7XHJcbiAgICB0aGlzLmNvbnRhaW5lclJlZi5jbGVhcigpO1xyXG4gICAgdGhpcy5fY2hpbGRyZW4gPSB0aGlzLmZpZWxkcy5tYXAoZiA9PiB7XHJcbiAgICAgIGxldCBjb21wO1xyXG4gICAgICBzd2l0Y2ggKGYudHlwZSkge1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLlRleHQ6XHJcbiAgICAgICAgICBjb21wID0gVGV4dGFyZWFGaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLkh0bWw6XHJcbiAgICAgICAgICBjb21wID0gSHRtbEZpZWxkO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBGaWVsZFR5cGUuQ2hlY2s6XHJcbiAgICAgICAgICBjb21wID0gQ2hlY2tGaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLlN3aXRjaDpcclxuICAgICAgICAgIGNvbXAgPSBTd2l0Y2hGaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLkRhdGU6XHJcbiAgICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZVRpbWU6XHJcbiAgICAgICAgICBjb21wID0gRGF0ZUZpZWxkO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZVJhbmdlOlxyXG4gICAgICAgICAgY29tcCA9IERhdGVSYW5nZUZpZWxkO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAoRmllbGRUeXBlLkV4cHJlc3Npb24pOlxyXG4gICAgICAgICAgY29tcCA9IEV4cHJlc3Npb25GaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgKEZpZWxkVHlwZS5UaW1lU3Bhbik6XHJcbiAgICAgICAgICBjb21wID0gVGltZXNwYW5GaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgKEZpZWxkVHlwZS5BZGRyZXNzKTpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLlNlbGVjdDpcclxuICAgICAgICAgIGNvbXAgPSBTZWxlY3RGaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLkF1dG9jb21wbGV0ZTpcclxuICAgICAgICAgIGNvbXAgPSBBdXRvY29tcGxldGVGaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLk51bWJlcjpcclxuICAgICAgICBjYXNlIEZpZWxkVHlwZS5DdXJyZW5jeTpcclxuICAgICAgICBjYXNlIEZpZWxkVHlwZS5QZXJjZW50OlxyXG4gICAgICAgICAgY29tcCA9IE51bWVyaWNGaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBjb21wID0gSW5wdXRGaWVsZDtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5fcmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3Rvcnk8RmllbGRCYXNlPihjb21wKTtcclxuICAgICAgY29uc3QgY1JlZiA9IHRoaXMuY29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChmYWN0b3J5KTtcclxuICAgICAgY1JlZi5pbnN0YW5jZS5maWVsZCA9IGY7XHJcbiAgICAgIHRoaXMucGFyYW1zICYmIE9iamVjdC5hc3NpZ24oY1JlZi5pbnN0YW5jZSwgdGhpcy5wYXJhbXMpO1xyXG4gICAgICByZXR1cm4gY1JlZi5pbnN0YW5jZTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGNvbnRyb2xzID0ge307XHJcbiAgICB0aGlzLl9jaGlsZHJlbi5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICBjb25zdCB7IGNvbnRyb2wsIGZpZWxkIH0gPSBjO1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMubW9kZWxbZmllbGQubmFtZV0gIT09IHVuZGVmaW5lZCA/IHRoaXMubW9kZWxbZmllbGQubmFtZV0gOiBmaWVsZC5kZWZhdWx0VmFsdWU7XHJcbiAgICAgICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSAmJiBjb250cm9sLnNldFZhbHVlKHZhbHVlKTtcclxuICAgICAgY29udHJvbHNbZmllbGQubmFtZV0gPSBjb250cm9sO1xyXG4gICAgICBmaWVsZC52YWxpZGF0aW9ucyAmJlxyXG4gICAgICAgIHRoaXMuX3ZhbGlkYXRpb25zKGZpZWxkLCBjb250cm9sKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5mb3JtID0gbmV3IEZvcm1Hcm91cChjb250cm9scyk7XHJcbiAgICB0aGlzLl9iaW5kKHRoaXMuZm9ybSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF92YWxpZGF0aW9ucyhmaWVsZDogRmllbGRJbmZvLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcclxuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuICAgIGZpZWxkLnZhbGlkYXRpb25zLmZvckVhY2godiA9PiB7XHJcbiAgICAgIHN3aXRjaCAodi50eXBlKSB7XHJcbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZS5SZXF1aXJlZDpcclxuICAgICAgICAgIGlmIChmaWVsZC50eXBlID09PSBGaWVsZFR5cGUuQ2hlY2sgfHwgZmllbGQudHlwZSA9PT0gRmllbGRUeXBlLlN3aXRjaClcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWRUcnVlKTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZS5QYXR0ZXJuOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucGF0dGVybihmaWVsZC5wYXR0ZXJuKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFZhbGlkYXRpb25UeXBlLk1pbjpcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbihmaWVsZC5taW4pKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblR5cGUuTWF4OlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4KGZpZWxkLm1heCkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZS5NaW5MZW5ndGg6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgoZmllbGQubWluKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFZhbGlkYXRpb25UeXBlLk1heExlbmd0aDpcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aChmaWVsZC5tYXgpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblR5cGUuRW1haWw6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5lbWFpbCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFZhbGlkYXRpb25UeXBlLlJhbmdlOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluKGZpZWxkLm1pbikpO1xyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4KGZpZWxkLm1heCkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfYmluZChmb3JtOiBGb3JtR3JvdXApOiBhbnkge1xyXG4gICAgZm9ybS5wYXRjaFZhbHVlKHRoaXMubW9kZWwpO1xyXG4gICAgZm9ybS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShjID0+IHtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm1vZGVsLCBjKTtcclxuICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KGMpO1xyXG4gICAgfSk7XHJcbiAgICBmb3JtLnN0YXR1c0NoYW5nZXMucGlwZShzdGFydFdpdGgoKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmRpcnR5Q2hhbmdlLmVtaXQoZm9ybS5kaXJ0eSk7XHJcbiAgICAgIHRoaXMudmFsaWQgPSBmb3JtLnZhbGlkO1xyXG4gICAgICB0aGlzLnZhbGlkQ2hhbmdlLmVtaXQoZm9ybS52YWxpZCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgZm9jdXMoKSB7XHJcbiAgICB0aGlzLl9jaGlsZHJlblswXS5mb2N1cygpO1xyXG4gICAgLy90aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgIC8vICBjb25zdCBpbnAgPSAodGhpcy5jb250YWluZXJSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5xdWVyeVNlbGVjdG9yQWxsKCcubWF0LXNlbGVjdCwgdGV4dGFyZWEsIGlucHV0JylbMF07XHJcbiAgICAvLyAgaW5wICYmIChpbnAgYXMgSFRNTElucHV0RWxlbWVudCkuZm9jdXMoKTtcclxuICAgIC8vfSlcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcclxuICAgIHRoaXMuX2NtcFJlZiAmJiB0aGlzLl9jbXBSZWYuZGVzdHJveSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFzRyxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDaE4sT0FBTyxFQUFhLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBZ0MsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFP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QUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0NvbnRhaW5lclJlZiwgT25EZXN0cm95LCBDb21wb25lbnRSZWYsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBBZnRlclZpZXdJbml0LCBOZ1pvbmUsIFZpZXdDaGlsZCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZpZWxkSW5mbywgRmllbGRUeXBlLCBWYWxpZGF0aW9uVHlwZSB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRmllbGRCYXNlIH0gZnJvbSAnLi9pbnB1dC5iYXNlJztcclxuaW1wb3J0IHsgQ2hlY2tGaWVsZCB9IGZyb20gXCIuL2NoZWNrYm94LmZpZWxkXCI7XHJcbmltcG9ydCB7IFN3aXRjaEZpZWxkIH0gZnJvbSBcIi4vc3dpdGNoLmZpZWxkXCI7XHJcbmltcG9ydCB7IFRpbWVzcGFuRmllbGQgfSBmcm9tIFwiLi90aW1lc3Bhbi5maWVsZFwiO1xyXG5pbXBvcnQgeyBFeHByZXNzaW9uRmllbGQgfSBmcm9tIFwiLi9leHByZXNzaW9uLmZpZWxkXCI7XHJcbmltcG9ydCB7IFNlbGVjdEZpZWxkIH0gZnJvbSBcIi4vc2VsZWN0LmZpZWxkXCI7XHJcbmltcG9ydCB7IEF1dG9jb21wbGV0ZUZpZWxkIH0gZnJvbSBcIi4vYXV0b2NvbXBsZXRlLmZpZWxkXCI7XHJcbmltcG9ydCB7IERhdGVGaWVsZCB9IGZyb20gXCIuL2RhdGUuZmllbGRcIjtcclxuaW1wb3J0IHsgRGF0ZVJhbmdlRmllbGQgfSBmcm9tIFwiLi9kYXRlLXJhbmdlLmZpZWxkXCI7XHJcbmltcG9ydCB7IFRleHRhcmVhRmllbGQgfSBmcm9tIFwiLi90ZXh0YXJlYS5maWVsZFwiO1xyXG5pbXBvcnQgeyBOdW1lcmljRmllbGQgfSBmcm9tIFwiLi9udW1lcmljLmZpZWxkXCI7XHJcbmltcG9ydCB7IElucHV0RmllbGQgfSBmcm9tIFwiLi9pbnB1dC5maWVsZFwiO1xyXG5pbXBvcnQgeyBIdG1sRmllbGQgfSBmcm9tICcuL2h0bWwuZmllbGQnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1sYXlvdXQnLFxyXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRhaW5lciAjY29udGFpbmVyPjwvbmctY29udGFpbmVyPicsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGF5b3V0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgaG9zdDogeyBjbGFzczogJ2xheW91dCcgfVxyXG59KVxyXG4vKiogbGF5b3V0IGNvbXBvbmVudCovXHJcbmV4cG9ydCBjbGFzcyBMYXlvdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgZmllbGRzOiBGaWVsZEluZm9bXTtcclxuICBASW5wdXQoKSBtb2RlbCE6IHt9O1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSBtb2RlbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e30+KCk7XHJcbiAgQElucHV0KCkgZGlydHk6IGJvb2xlYW47XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGRpcnR5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBJbnB1dCgpIHBhcmFtczogYW55O1xyXG4gIEBJbnB1dCgpIHZhbGlkOiBib29sZWFuO1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSB2YWxpZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBjb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWY7XHJcbiAgcHJpdmF0ZSBfY21wUmVmOiBDb21wb25lbnRSZWY8YW55PjtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgcHJpdmF0ZSBfaW5zdGFuY2U6IGFueTtcclxuICBwcml2YXRlIF9jaGlsZHJlbjogRmllbGRCYXNlW107XHJcbiAgLyoqIGxheW91dCBjdG9yICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9yZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgcHJpdmF0ZSBfem9uZTogTmdab25lKSB7XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NoaWxkcmVuLmxlbmd0aCAmJiB0aGlzLmZvY3VzKCk7XHJcbiAgfVxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydmaWVsZHMnXSB8fCBjaGFuZ2VzWyd0ZW1wbGF0ZSddKSB7XHJcbiAgICAgIHRoaXMuX2NtcFJlZiAmJiB0aGlzLl9jbXBSZWYuZGVzdHJveSgpO1xyXG4gICAgICB0aGlzLmNyZWF0ZSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY2hhbmdlc1snbW9kZWwnXSkge1xyXG4gICAgICB0aGlzLl9pbnN0YW5jZS5mb3JtLnBhdGNoVmFsdWUodGhpcy5tb2RlbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBjcmVhdGUoKSB7XHJcbiAgICB0aGlzLmNvbnRhaW5lclJlZi5jbGVhcigpO1xyXG4gICAgdGhpcy5fY2hpbGRyZW4gPSB0aGlzLmZpZWxkcy5tYXAoZiA9PiB7XHJcbiAgICAgIGxldCBjb21wO1xyXG4gICAgICBzd2l0Y2ggKGYudHlwZSkge1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLlRleHQ6XHJcbiAgICAgICAgICBjb21wID0gVGV4dGFyZWFGaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLkh0bWw6XHJcbiAgICAgICAgICBjb21wID0gSHRtbEZpZWxkO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBGaWVsZFR5cGUuQ2hlY2s6XHJcbiAgICAgICAgICBjb21wID0gQ2hlY2tGaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLlN3aXRjaDpcclxuICAgICAgICAgIGNvbXAgPSBTd2l0Y2hGaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLkRhdGU6XHJcbiAgICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZVRpbWU6XHJcbiAgICAgICAgICBjb21wID0gRGF0ZUZpZWxkO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZVJhbmdlOlxyXG4gICAgICAgICAgY29tcCA9IERhdGVSYW5nZUZpZWxkO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAoRmllbGRUeXBlLkV4cHJlc3Npb24pOlxyXG4gICAgICAgICAgY29tcCA9IEV4cHJlc3Npb25GaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgKEZpZWxkVHlwZS5EdXJhdGlvbik6XHJcbiAgICAgICAgICBjb21wID0gVGltZXNwYW5GaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgKEZpZWxkVHlwZS5BZGRyZXNzKTpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLlNlbGVjdDpcclxuICAgICAgICAgIGNvbXAgPSBTZWxlY3RGaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLkF1dG9jb21wbGV0ZTpcclxuICAgICAgICAgIGNvbXAgPSBBdXRvY29tcGxldGVGaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLk51bWJlcjpcclxuICAgICAgICBjYXNlIEZpZWxkVHlwZS5DdXJyZW5jeTpcclxuICAgICAgICBjYXNlIEZpZWxkVHlwZS5QZXJjZW50OlxyXG4gICAgICAgICAgY29tcCA9IE51bWVyaWNGaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBjb21wID0gSW5wdXRGaWVsZDtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5fcmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3Rvcnk8RmllbGRCYXNlPihjb21wKTtcclxuICAgICAgY29uc3QgY1JlZiA9IHRoaXMuY29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChmYWN0b3J5KTtcclxuICAgICAgY1JlZi5pbnN0YW5jZS5maWVsZCA9IGY7XHJcbiAgICAgIHRoaXMucGFyYW1zICYmIE9iamVjdC5hc3NpZ24oY1JlZi5pbnN0YW5jZSwgdGhpcy5wYXJhbXMpO1xyXG4gICAgICByZXR1cm4gY1JlZi5pbnN0YW5jZTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGNvbnRyb2xzID0ge307XHJcbiAgICB0aGlzLl9jaGlsZHJlbi5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICBjb25zdCB7IGNvbnRyb2wsIGZpZWxkIH0gPSBjO1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMubW9kZWxbZmllbGQubmFtZV0gIT09IHVuZGVmaW5lZCA/IHRoaXMubW9kZWxbZmllbGQubmFtZV0gOiBmaWVsZC5kZWZhdWx0VmFsdWU7XHJcbiAgICAgICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSAmJiBjb250cm9sLnNldFZhbHVlKHZhbHVlKTtcclxuICAgICAgY29udHJvbHNbZmllbGQubmFtZV0gPSBjb250cm9sO1xyXG4gICAgICBmaWVsZC52YWxpZGF0aW9ucyAmJlxyXG4gICAgICAgIHRoaXMuX3ZhbGlkYXRpb25zKGZpZWxkLCBjb250cm9sKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5mb3JtID0gbmV3IEZvcm1Hcm91cChjb250cm9scyk7XHJcbiAgICB0aGlzLl9iaW5kKHRoaXMuZm9ybSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF92YWxpZGF0aW9ucyhmaWVsZDogRmllbGRJbmZvLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcclxuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuICAgIGZpZWxkLnZhbGlkYXRpb25zLmZvckVhY2godiA9PiB7XHJcbiAgICAgIHN3aXRjaCAodi50eXBlKSB7XHJcbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZS5SZXF1aXJlZDpcclxuICAgICAgICAgIGlmIChmaWVsZC50eXBlID09PSBGaWVsZFR5cGUuQ2hlY2sgfHwgZmllbGQudHlwZSA9PT0gRmllbGRUeXBlLlN3aXRjaClcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWRUcnVlKTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZS5QYXR0ZXJuOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucGF0dGVybihmaWVsZC5wYXR0ZXJuKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFZhbGlkYXRpb25UeXBlLk1pbjpcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbihmaWVsZC5taW4pKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblR5cGUuTWF4OlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4KGZpZWxkLm1heCkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZS5NaW5MZW5ndGg6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgoZmllbGQubWluKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFZhbGlkYXRpb25UeXBlLk1heExlbmd0aDpcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aChmaWVsZC5tYXgpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblR5cGUuRW1haWw6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5lbWFpbCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFZhbGlkYXRpb25UeXBlLlJhbmdlOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluKGZpZWxkLm1pbikpO1xyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4KGZpZWxkLm1heCkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfYmluZChmb3JtOiBGb3JtR3JvdXApOiBhbnkge1xyXG4gICAgZm9ybS5wYXRjaFZhbHVlKHRoaXMubW9kZWwpO1xyXG4gICAgZm9ybS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShjID0+IHtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm1vZGVsLCBjKTtcclxuICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KGMpO1xyXG4gICAgfSk7XHJcbiAgICBmb3JtLnN0YXR1c0NoYW5nZXMucGlwZShzdGFydFdpdGgoKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmRpcnR5Q2hhbmdlLmVtaXQoZm9ybS5kaXJ0eSk7XHJcbiAgICAgIHRoaXMudmFsaWQgPSBmb3JtLnZhbGlkO1xyXG4gICAgICB0aGlzLnZhbGlkQ2hhbmdlLmVtaXQoZm9ybS52YWxpZCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgZm9jdXMoKSB7XHJcbiAgICB0aGlzLl9jaGlsZHJlblswXS5mb2N1cygpO1xyXG4gICAgLy90aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgIC8vICBjb25zdCBpbnAgPSAodGhpcy5jb250YWluZXJSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5xdWVyeVNlbGVjdG9yQWxsKCcubWF0LXNlbGVjdCwgdGV4dGFyZWEsIGlucHV0JylbMF07XHJcbiAgICAvLyAgaW5wICYmIChpbnAgYXMgSFRNTElucHV0RWxlbWVudCkuZm9jdXMoKTtcclxuICAgIC8vfSlcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcclxuICAgIHRoaXMuX2NtcFJlZiAmJiB0aGlzLl9jbXBSZWYuZGVzdHJveSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
@@ -389,4 +389,4 @@ function reportprogress(filename) {
|
|
389
389
|
return r;
|
390
390
|
}));
|
391
391
|
}
|
392
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbGJveC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb3JlL21haWxib3guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBRUwsYUFBYSxFQUNNLFdBQVcsRUFBRSxZQUFZLEVBQzdDLE1BQU0sc0JBQXNCLENBQUM7QUFHOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7OztBQUsvQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQXFCLE9BQU8sQ0FBQyxDQUFDO0FBUzlFLE1BQU0sT0FBTyxjQUFjO0lBTXpCLFlBQW9CLFFBQXdCLEVBQ2xDLEtBQXlCLEVBQ2pDLFNBQXFCLEVBQ2IsS0FBaUI7UUFIUCxhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUNsQyxVQUFLLEdBQUwsS0FBSyxDQUFvQjtRQUV6QixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBUlYsYUFBUSxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQzlDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ2xELE1BQU07UUFDVSxZQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2QyxZQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQW1WdkQ7V0FDRztRQUNLLFlBQU8sR0FBRyxHQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQXNDLEVBQUUsRUFB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QUFRLEVBQUUsS0FBSyxDQUFDLEtBQUs7Z0JBQ25CLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUNoRCxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVE7WUFDbkIsS0FBSyxFQUFFLFVBQVU7U0FDbEIsQ0FBQyxDQUFDO0tBQ0o7SUFDRCxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN6QixPQUFPLElBQUksV0FBVyxDQUFDO1lBQ3JCLFFBQVEsRUFBRSxHQUFHO1lBQ2IsS0FBSyxFQUFFLE1BQU07U0FDZCxDQUFDLENBQUE7S0FDSDtJQUNELE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQztBQUNELE1BQU0sT0FBTyxXQUFXO0lBTXRCLFlBQVksT0FBTyxJQUFJLENBQUM7Q0FDekI7QUFFRCxTQUFTLGNBQWMsQ0FBQyxRQUFnQjtJQUN0QyxPQUFPLENBQUMsTUFBOEIsRUFBRSxFQUFFLENBQ3hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ2xCLHVDQUF1QztRQUN2QyxpQ0FBaUM7UUFDakMsZ0JBQWdCO1FBQ2hCLHNDQUFzQztRQUN0QyxvQ0FBb0M7UUFDcEMsT0FBTztRQUNQLDZDQUE2QztRQUM3QywyQ0FBMkM7UUFDM0MsNkJBQTZCO1FBQzdCLDJDQUEyQztRQUMzQywwQkFBMEI7UUFDMUIsS0FBSztRQUNMLFFBQVE7UUFDUiw2REFBNkQ7UUFDN0QsdUJBQXVCO1FBQ3ZCLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNSLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEh0dHBDbGllbnQsIEh0dHBFdmVudCxcclxuICBIdHRwRXZlbnRUeXBlLFxyXG4gIEh0dHBQcm9ncmVzc0V2ZW50LCBIdHRwUmVxdWVzdCwgSHR0cFJlc3BvbnNlXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb21tZW50LCBVc2VySW5mbywgUmVjaXBpZW50TW9kZWwsIEF0dGFjaG1lbnQsIFNjaGVkdWxlZEV2ZW50LCBIZWFkZXJNb2RlbCwgRG9jdW1lbnRNb2RlbCwgVm90ZSwgQ29tbWVudFZlcnNpb24sIENoYWluIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YXAsIHN3aXRjaE1hcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBjbGVhbnVwLCBpc0FycmF5IH0gZnJvbSAnLi9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBIdWJTZXJ2aWNlIH0gZnJvbSAnLi9odWIuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uSW1wbCB9IGZyb20gJy4vYXV0aGVudGljYXRpb24nO1xyXG5pbXBvcnQgeyBTYWZlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcblxyXG5leHBvcnQgY29uc3QgRE9DVU1FTlRfTU9ERUwgPSBuZXcgSW5qZWN0aW9uVG9rZW48RG9jdW1lbnRNb2RlbDxhbnk+PignbW9kZWwnKTtcclxuXHJcbmV4cG9ydCB0eXBlIEZpbHRlclR5cGUgPSAncmVjZW50JyB8ICd1bnJlYWQnIHwgJ2ZsYWdnZWQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VFdmVudDxUPiB7XHJcbiAgbW9kZWw6IFJlY2lwaWVudE1vZGVsPFQ+O1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgTWFpbGJveFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZSQgPSBuZXcgU3ViamVjdDxSZWNpcGllbnRNb2RlbDxhbnk+PigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlbGV0ZSQgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XHJcbiAgLyoqICovXHJcbiAgcHVibGljIHJlYWRvbmx5IGNoYW5nZWQgPSB0aGlzLl9jaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIHB1YmxpYyByZWFkb25seSBkZWxldGVkID0gdGhpcy5fZGVsZXRlJC5hc09ic2VydmFibGUoKTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2F1dGg6IEF1dGhlbnRpY2F0aW9uSW1wbCxcclxuICAgIG1lc3NhZ2luZzogSHViU2VydmljZSxcclxuICAgIHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQpIHtcclxuICAgIG1lc3NhZ2luZy5uZXckLlxyXG4gICAgICBzdWJzY3JpYmUobSA9PiB7XHJcbiAgICAgICAgaWYgKG0udXNlcklkICE9PSBfc2Vzc2lvbi5wcm9maWxlLnVzZXJJZCkgcmV0dXJuO1xyXG4gICAgICAgIF9zZXNzaW9uLnByb2ZpbGUuaW5ib3hDb3VudCsrO1xyXG4gICAgICAgIGNvbnN0IGZvbGRlciA9IF9zZXNzaW9uLnByb2ZpbGUuZm9sZGVycy5maW5kKGYgPT4gZi5uYW1lID09PSBtLm1vZGVsLmZvbGRlcklkKTtcclxuICAgICAgICBmb2xkZXIuY291bnQrKztcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIGZvcm1hdERvd25sb2FkVXJsKGRvY3VtZW50SWQ6IG51bWJlciwgZmlsZUlkOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLl9hdXRoLmdldEFjY2Vzc1Rva2VuKCk7XHJcbiAgICByZXR1cm4gYC9hcGkvYXR0YWNobWVudHMvJHtkb2N1bWVudElkfS8ke2ZpbGVJZH0/YWNjZXNzX3Rva2VuPSR7dG9rZW59YDtcclxuICB9XHJcbiAgZG93bmxvYWQoZG9jdW1lbnRJZDogbnVtYmVyLCBmaWxlSWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAvL25ldyBPYnNlcnZhYmxlPGFueT4ob2JzZXJ2ZSA9PiB7XHJcbiAgICAvLyAgb2JzZXJ2ZS5uZXh0KHt9KTtcclxuICAgIC8vICByZXR1cm4ge1xyXG4gICAgLy8gICAgdW5zdWJzY3JpYmUoKSB7IH1cclxuICAgIC8vICB9XHJcbiAgICAvL30pO1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0KGAvYXBpL2F0dGFjaG1lbnRzLyR7ZG9jdW1lbnRJZH0vJHtmaWxlSWR9YCwge1xyXG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicsXHJcbiAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlXHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmVtb3ZlYXR0YWNobWVudChyZWNpcGllbnRJZDogbnVtYmVyLCBmaWxlSWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5kZWxldGUoYC9hcGkvYXR0YWNobWVudHMvJHtyZWNpcGllbnRJZH0vJHtmaWxlSWR9YCk7XHJcbiAgfVxyXG4gIHJlYWQoaWQ6IG51bWJlciwgcmVhZDogYm9vbGVhbiwgZm9sZGVySWQ/OiBzdHJpbmcsIHJlY2VpdmVkPzogRGF0ZSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQoYC9hcGkvbWFpbGJveC9yZWFkLyR7aWR9YCwgdW5kZWZpbmVkLCB7IHBhcmFtczogeyByZWFkIH0gYXMgYW55IH0pLnBpcGUodGFwKCgpID0+XHJcbiAgICAgIGZvbGRlcklkICYmIHRoaXMuX3VwZGF0ZXVucmVhZGNvdW50ZXIocmVjZWl2ZWQsIGZvbGRlcklkLCByZWFkID8gMSA6IC0xKVxyXG4gICAgKSk7XHJcbiAgfVxyXG4gIGNvbW1lbnRzKGlkOiBudW1iZXIsIGJlZm9yZTogRGF0ZSk6IE9ic2VydmFibGU8Q29tbWVudFtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8Q29tbWVudFtdPihgL2FwaS9jb21tZW50cy8ke2lkfWAsIHsgcGFyYW1zOiB7IGJlZm9yZTogbmV3IERhdGUoYmVmb3JlKS50b0pTT04oKSB9IH0pO1xyXG4gIH1cclxuICB0YWdzKGlkOiBudW1iZXIsIHRhZ3M6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9tYWlsYm94L3RhZy8ke2lkfWAsIHsgdGFncyB9KS5waXBlKHRhcCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX2NoYW5nZSQubmV4dCh7IGlkLCB0YWdzIH0gYXMgYW55KTtcclxuICAgIH0pKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGRvY3VtZW50SWRcclxuICAgKiBAcGFyYW0gc3RhdGVJZFxyXG4gICAqIEBwYXJhbSB1c2VySWQgc3Vic3RpdHV0ZVxyXG4gICAqL1xyXG4gIGNoYW5nZVN0YXRlKGRvY3VtZW50SWQ6IG51bWJlciwgc3RhdGVJZDogc3RyaW5nLCB1c2VySWQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0KGAvYXBpL21haWxib3gvY2hhbmdlc3RhdGUvJHtkb2N1bWVudElkfWAsIHsgc3RhdGVJZCwgdXNlcklkIH0pO1xyXG4gIH1cclxuICBtb3ZlKGlkOiBudW1iZXIsIGZvbGRlcklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0KGAvYXBpL21haWxib3gvbW92ZS8ke2lkfT9mb2xkZXJJZD0ke2ZvbGRlcklkfWAsIHt9KS5waXBlKHRhcCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX2NoYW5nZSQubmV4dCh7XHJcbiAgICAgICAgaWQsXHJcbiAgICAgICAgZm9sZGVySWRcclxuICAgICAgfSBhcyBhbnkpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuICBjaGVja091dChyZWNpcGllbnRJZDogbnVtYmVyLCB2ZXJzaW9uOiBudW1iZXIsIGF0dGFjaG1lbnRJZDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQ8QXR0YWNobWVudD4oYC9hcGkvYXR0YWNobWVudHMvJHtyZWNpcGllbnRJZH0vJHthdHRhY2htZW50SWR9L2NoZWNrb3V0YCwgbnVsbCwgeyBwYXJhbXM6IHsgdmVyc2lvbiB9IH0pO1xyXG4gIH1cclxuICBjaGVja0luKHJlY2lwaWVudElkOiBudW1iZXIsIHZlcnNpb246IG51bWJlciwgYXR0YWNobWVudElkOiBudW1iZXIsIGZpbGU6IEZpbGUpOiBPYnNlcnZhYmxlPEF0dGFjaG1lbnQ+IHtcclxuICAgIGNvbnN0IGZkID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBmZC5hcHBlbmQoZmlsZS5uYW1lLCBmaWxlKTtcclxuICAgIGNvbnN0IHJlcSA9IG5ldyBIdHRwUmVxdWVzdCgnUFVUJyxcclxuICAgICAgYC9hcGkvYXR0YWNobWVudHMvJHtyZWNpcGllbnRJZH0vJHthdHRhY2htZW50SWR9L2NoZWNraW4/dmVyc2lvbj0ke3ZlcnNpb259YCwgZmQsIHtcclxuICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIC8vY29uc3QgaW5pdGlhbFN0YXRlOiBVcGxvYWRFdmVudCA9IHsgc3RhdGU6ICdQRU5ESU5HJywgcHJvZ3Jlc3M6IDAgfVxyXG4gICAgLy9jb25zdCBjYWxjdWxhdGVTdGF0ZSA9IChcclxuICAgIC8vICB1cGxvYWQ6IFVwbG9hZEV2ZW50LFxyXG4gICAgLy8gIGV2ZW50OiBIdHRwRXZlbnQ8dW5rbm93bj5cclxuICAgIC8vKTogVXBsb2FkRXZlbnQgPT4ge1xyXG4gICAgLy8gIC8vIGltcGxlbWVudGF0aW9uXHJcbiAgICAvL31cclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxhbnk+KG9ic2VydmUgPT4ge1xyXG4gICAgICB0aGlzLl9odHRwLnJlcXVlc3QocmVxKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIFByb2dyZXNzRXZlbnQpIHtcclxuICAgICAgICAgIC8vICBvYnNlcnZlLm5leHQobmV3IFVwbG9hZEV2ZW50KFxyXG4gICAgICAgICAgLy8gICAgZmlsZS5uYW1lLFxyXG4gICAgICAgICAgLy8gICAgKGV2ZW50IGFzIFByb2dyZXNzRXZlbnQpLmxvYWRlZCxcclxuICAgICAgICAgIC8vICAgIChldmVudCBhcyBQcm9ncmVzc0V2ZW50KS50b3RhbFxyXG4gICAgICAgICAgLy8gICkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcclxuICAgICAgICAgIGNvbnN0IHJlcyA9IGV2ZW50IGFzIEh0dHBSZXNwb25zZTxhbnk+O1xyXG4gICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICBjb25zdCBtb2RlbCA9IHJlcy5ib2R5IGFzIEF0dGFjaG1lbnQ7XHJcbiAgICAgICAgICAgIG9ic2VydmUubmV4dChtb2RlbCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIG9ic2VydmUuZXJyb3IoeyBzdGF0dXM6IHJlcy5zdGF0dXMsIGVycm9yOiByZXMuYm9keSB9KTtcclxuICAgICAgICAgIG9ic2VydmUuY29tcGxldGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGUgPT4ge1xyXG4gICAgICAgIG9ic2VydmUuZXJyb3IoZSk7XHJcbiAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICB1bnN1YnNjcmliZSgpIHtcclxuICAgICAgICAgIC8vcmVxLlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHVwbG9hZChyZWNpcGllbnRJZDogbnVtYmVyLCBmb3JtSWQ6IHN0cmluZywgdmVyc2lvbjogbnVtYmVyLCBmaWxlOiBGaWxlLCBvcHRpb25zPzogeyBpc1ByaXZhdGU/OiBib29sZWFuIH0pOiBPYnNlcnZhYmxlPEF0dGFjaG1lbnQ+O1xyXG4gIHVwbG9hZChyZWNpcGllbnRJZDogbnVtYmVyLCBmb3JtSWQ6IHN0cmluZywgdmVyc2lvbjogbnVtYmVyLCBmaWxlczogRmlsZVtdLCBvcHRpb25zPzogeyBpc1ByaXZhdGU/OiBib29sZWFuIH0pOiBPYnNlcnZhYmxlPEF0dGFjaG1lbnRbXT47XHJcbiAgdXBsb2FkKHJlY2lwaWVudElkOiBudW1iZXIsIGZvcm1JZDogc3RyaW5nLCB2ZXJzaW9uOiBudW1iZXIsIGZpbGVzOiBGaWxlIHwgRmlsZVtdLCBvcHRpb25zPzogeyBpc1ByaXZhdGU/OiBib29sZWFuIH0pOiBPYnNlcnZhYmxlPEF0dGFjaG1lbnQgfCBBdHRhY2htZW50W10+IHtcclxuICAgIGNvbnN0IGZkID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBpZiAoaXNBcnJheShmaWxlcykpIGZpbGVzLmZvckVhY2goZiA9PlxyXG4gICAgICBmZC5hcHBlbmQoZi5uYW1lLCBmKSk7XHJcbiAgICBlbHNlIGZkLmFwcGVuZChmaWxlcy5uYW1lLCBmaWxlcyk7XHJcbiAgICAvL2NvbnN0IGJ5dGVzUGVyQ2h1bmsgPSAyMCAqIDEwMjQgKiAxMDI0O1xyXG4gICAgLy8gYXF1aXJlIHRoZSBsb2NhdGlvbiBwcmlvciB0byBzZW5kaW5nIHRoZSByZXF1ZXN0XHJcbiAgICByZXR1cm4gdGhpcy5fd2l0aEdlb0xvY2F0aW9uKGZvcm1JZCkucGlwZShzd2l0Y2hNYXAocGFyYW1zID0+XHJcbiAgICAgIG5ldyBPYnNlcnZhYmxlPGFueT4ob2JzZXJ2ZSA9PiB7XHJcbiAgICAgICAgbGV0IHVybCA9IGAvYXBpL2F0dGFjaG1lbnRzLyR7cmVjaXBpZW50SWR9P3ZlcnNpb249JHt2ZXJzaW9ufWA7XHJcbiAgICAgICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKHAgPT4gdXJsICs9IGAmJHtwfT0ke3BhcmFtc1twXX1gKTtcclxuICAgICAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICAgICAgaWYgKG9wdGlvbnMuaXNQcml2YXRlKSB1cmwgKz0gJyZpc3ByaXZhdGU9dHJ1ZSdcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KCdQT1NUJywgdXJsLCBmZCwge1xyXG4gICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5faHR0cC5yZXF1ZXN0KHJlcSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIFByb2dyZXNzRXZlbnQpIHtcclxuICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiB1cGxvYWQgcHJvZ3Jlc3MgZXZlbnQuIENvbXB1dGUgYW5kIHNob3cgdGhlICUgZG9uZTpcclxuICAgICAgICAgICAgLy9jb25zdCBwZXJjZW50RG9uZSA9IE1hdGgucm91bmQoMTAwICogZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWwpO1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKGBGaWxlIGlzICR7cGVyY2VudERvbmV9JSB1cGxvYWRlZC5gKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgY29uc3QgcmVzID0gZXZlbnQgYXMgSHR0cFJlc3BvbnNlPGFueT47XHJcbiAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBjb25zdCBtb2RlbCA9IHJlcy5ib2R5IGFzIEF0dGFjaG1lbnRbXTtcclxuICAgICAgICAgICAgICBvYnNlcnZlLm5leHQoaXNBcnJheShmaWxlcykgPyBtb2RlbCA6IG1vZGVsWzBdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZS5lcnJvcih7IHN0YXR1czogcmVzLnN0YXR1cywgZXJyb3I6IHJlcy5ib2R5IH0pO1xyXG4gICAgICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgZSA9PiB7XHJcbiAgICAgICAgICBvYnNlcnZlLmVycm9yKGUpO1xyXG4gICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICB1bnN1YnNjcmliZSgpIHtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pKSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIHJldHJpZXZlIHNlbmRlcnNcclxuICAgKiBAcGFyYW0gbmFtZVxyXG4gICAqL1xyXG4gIHNlbmRlcnMobmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxVc2VySW5mb1tdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8VXNlckluZm9bXT4oJy9hcGkvbWFpbGJveC9zZW5kZXJzLycsIHtcclxuICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgbmFtZVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgZmxhZyhpZDogbnVtYmVyLCBmbGFnOiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9tYWlsYm94L2ZsYWcvJHtpZH0/ZmxhZz0ke2ZsYWd9YCwgbnVsbCkucGlwZSh0YXAoKCkgPT4gdGhpcy5fY2hhbmdlJC5uZXh0KHsgaWQsIGZsYWcgfSBhcyBhbnkpKSk7XHJcbiAgfVxyXG4gIHZpZXdlZGNvbW1lbnRzKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPHsgdGltZTogRGF0ZSB9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQ8eyB0aW1lOiBEYXRlIH0+KGAvYXBpL2NvbW1lbnRzL3ZpZXdlZC8ke2lkfWAsIHt9LCB7IGhlYWRlcnM6IHsgJ25vLXByb2dyZXNzJzogJ3RydWUnIH0gfSkucGlwZSh0YXAoKGU6IHsgdGltZTogRGF0ZSB9KSA9PiB0aGlzLl9jaGFuZ2UkLm5leHQoeyBpZCwgdmlld2VkOiBlLnRpbWUgfSBhcyBhbnkpKSk7XHJcbiAgfVxyXG4gIHR5cGluZyhpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9jb21tZW50cy90eXBpbmcvJHtpZH1gLCB7fSwgeyBoZWFkZXJzOiB7ICduby1wcm9ncmVzcyc6ICd0cnVlJyB9IH0pO1xyXG4gIH1cclxuICBjb3B5KGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFJlY2lwaWVudE1vZGVsPGFueT4+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8UmVjaXBpZW50TW9kZWw8YW55Pj4oYC9hcGkvbWFpbGJveC9jb3B5LyR7aWR9YCwge30pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gaWQgZG9jdW1lbnQgaWRcclxuICAgKiBAcGFyYW0gb3B0aW9uc1xyXG4gICAqL1xyXG4gIGNvbW1lbnQoaWQ6IG51bWJlciwgb3B0aW9uczoge1xyXG4gICAgdGV4dD86IHN0cmluZyxcclxuICAgIHJlc291cmNlPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcclxuICAgIGltYWdlPzogc3RyaW5nLFxyXG4gICAgcGFyZW50SWQ/OiBudW1iZXJcclxuICB9KTogT2JzZXJ2YWJsZTxDb21tZW50PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PENvbW1lbnQ+KGAvYXBpL2NvbW1lbnRzLyR7aWR9YCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIGNvbW1lbnR1cGRhdGUoaWQ6IG51bWJlciwgY29tbWVudElkOiBudW1iZXIsIG9wdGlvbnM6IHtcclxuICAgIHRleHQ/OiBzdHJpbmcsXHJcbiAgICBpbWFnZT86IHN0cmluZyxcclxuICAgIHJlc291cmNlPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfVxyXG4gIH0pOiBPYnNlcnZhYmxlPENvbW1lbnQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dDxDb21tZW50PihgL2FwaS9jb21tZW50cy9lZGl0LyR7aWR9LyR7Y29tbWVudElkfWAsIG9wdGlvbnMpO1xyXG4gIH1cclxuICBpbmZvPFQgPSBhbnk+KGRvY3VtZW50SWQ6IG51bWJlcik6IE9ic2VydmFibGU8RG9jdW1lbnRNb2RlbDxUPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PERvY3VtZW50TW9kZWw8VD4+KGAvYXBpL21haWxib3gvaW5mby8ke2RvY3VtZW50SWR9YCk7XHJcbiAgfVxyXG4gIHRpbWVsaW5lKGRvY3VtZW50SWQ6IG51bWJlcik6IE9ic2VydmFibGU8Q2hhaW4+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxDaGFpbj4oYC9hcGkvbWFpbGJveC90aW1lbGluZS8ke2RvY3VtZW50SWR9YCk7XHJcbiAgfVxyXG4gIHZvdGUoaWQ6IG51bWJlciwgY29tbWVudElkOiBudW1iZXIsIHZhbHVlOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdChgL2FwaS9jb21tZW50cy92b3RlLyR7aWR9LyR7Y29tbWVudElkfWAsIHt9LCB7IHBhcmFtczogeyB2YWx1ZTogdmFsdWUudG9TdHJpbmcoKSB9IH0pO1xyXG4gIH1cclxuICB2b3RlcyhpZDogbnVtYmVyLCBjb21tZW50SWQ6IG51bWJlcik6IE9ic2VydmFibGU8Vm90ZVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8Vm90ZVtdPihgL2FwaS9jb21tZW50cy92b3Rlcy8ke2lkfS8ke2NvbW1lbnRJZH1gKTtcclxuICB9XHJcbiAgZWRpdHMoaWQ6IG51bWJlciwgY29tbWVudElkOiBudW1iZXIpOiBPYnNlcnZhYmxlPENvbW1lbnRWZXJzaW9uW10+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxDb21tZW50VmVyc2lvbltdPihgL2FwaS9jb21tZW50cy9lZGl0cy8ke2lkfS8ke2NvbW1lbnRJZH1gKTtcclxuICB9XHJcbiAgZmluZEFsbChmaWx0ZXI6IHsgdHlwZT86IEZpbHRlclR5cGU7IGNvbnRhaW5zPzogc3RyaW5nOyBzdGF0ZT86IHN0cmluZzsgZm9ybT86IHN0cmluZzsgZm9sZGVySWQ/OiBzdHJpbmc7IHNlbmRlcklkPzogc3RyaW5nOyB9LFxyXG4gICAgb3B0aW9ucz86IHsgc2tpcD86IG51bWJlcjsgdGFrZT86IG51bWJlcjsgb3JkZXJCeT86ICd2YWx1ZScgfCAncmVjZWl2ZWQnIH0pOiBPYnNlcnZhYmxlPEhlYWRlck1vZGVsW10+IHtcclxuICAgIGNvbnN0IHBhcmFtczogYW55ID0geyAuLi5maWx0ZXIsIC4uLm9wdGlvbnMgfTtcclxuICAgIGNsZWFudXAocGFyYW1zKTtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxIZWFkZXJNb2RlbFtdPignL2FwaS9tYWlsJywgeyBwYXJhbXMgfSk7XHJcbiAgfVxyXG4gIGNyZWF0ZTxUID0gYW55Pihmb3JtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFJlY2lwaWVudE1vZGVsPFQ+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fd2l0aEdlb0xvY2F0aW9uKGZvcm0pLnBpcGUoc3dpdGNoTWFwKHAgPT5cclxuICAgICAgdGhpcy5faHR0cC5wb3N0PFJlY2lwaWVudE1vZGVsPGFueT4+KCcvYXBpL21haWwnLCBudWxsLCB7XHJcbiAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICBmb3JtLFxyXG4gICAgICAgICAgLi4ucFxyXG4gICAgICAgIH1cclxuICAgICAgfSkpLCB0aGlzLl9ub3RpZnk8VD4oKSk7XHJcbiAgfVxyXG4gIGdldDxUID0gYW55PihpZDogbnVtYmVyLCByZWFkPzogYm9vbGVhbik6IE9ic2VydmFibGU8UmVjaXBpZW50TW9kZWw8VD4+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZWNpcGllbnRNb2RlbDxUPj4oYC9hcGkvbWFpbC8ke2lkfWApLnBpcGUoXHJcbiAgICAgIHRhcCgobTogUmVjaXBpZW50TW9kZWwpID0+XHJcbiAgICAgICAgcmVhZCA9PT0gZmFsc2UgJiYgbS5yZWFkID09PSB0cnVlICYmXHJcbiAgICAgICAgdGhpcy5fdXBkYXRldW5yZWFkY291bnRlcihtLnJlY2VpdmVkLCBtLmZvbGRlcklkLCAtMSlcclxuICAgICAgKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3VwZGF0ZXVucmVhZGNvdW50ZXIoZGF0ZTogRGF0ZSwgZm9sZGVySWQ6IHN0cmluZywgdmFsOiBudW1iZXIpIHtcclxuICAgIGlmIChcclxuICAgICAgLy8gZGF0ZSBpcyBhYm92ZSB3YXRlcm1hcmtcclxuICAgICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm9wdGlvbnMuaW5ib3hWaWV3ICYmXHJcbiAgICAgIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5vcHRpb25zLmluYm94VmlldyA8IGRhdGVcclxuICAgIClcclxuICAgICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmluYm94Q291bnQgKz0gdmFsO1xyXG4gICAgLy8gZGVjcmVhc2VcclxuICAgIGNvbnN0IGZvbGRlciA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5mb2xkZXJzLlxyXG4gICAgICBmaW5kKGYgPT4gZi5uYW1lID09PSBmb2xkZXJJZCk7XHJcbiAgICBmb2xkZXIuY291bnQgKz0gdmFsO1xyXG4gIH1cclxuXHJcbiAgc2F2ZTxUID0gYW55PihpZDogbnVtYmVyLCBmb3JtOiBzdHJpbmcsIHZlcnNpb246IG51bWJlciwgbW9kZWw6IHt9LCBmaWxlcz86IEZpbGVbXSB8IEZpbGVMaXN0KTogT2JzZXJ2YWJsZTxSZWNpcGllbnRNb2RlbDxUPj4ge1xyXG4gICAgLy9jb25zdCBmZCA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgLy9jb25zdCBtb2RlbEJsb2IgPSBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkobW9kZWwpXSwge1xyXG4gICAgLy8gIHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgIC8vfSk7XHJcbiAgICAvL2ZkLmFwcGVuZCgnZm9ybS1kYXRhJywgbW9kZWxCbG9iKTtcclxuICAgIC8vaWYgKGZpbGVzKSB7XHJcbiAgICAvLyAgaWYgKGlzQXJyYXkoZmlsZXMpKSBmaWxlcy5mb3JFYWNoKGYgPT5cclxuICAgIC8vICAgIGZkLmFwcGVuZChmLm5hbWUsIGYpKTtcclxuICAgIC8vICBlbHNlIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIC8vICAgIGxldCBmaWxlID0gZmlsZXMuaXRlbShpKTtcclxuICAgIC8vICAgIGZkLmFwcGVuZChmaWxlLm5hbWUsIGZpbGUpO1xyXG4gICAgLy8gIH1cclxuICAgIC8vfVxyXG4gICAgLy8gIHJldHVybiB0aGlzLl93aXRoR2VvTG9jYXRpb24oZm9ybSkucGlwZShzd2l0Y2hNYXAocGFyYW1zID0+IHtcclxuICAgIC8vICAgIGxldCB1cmwgPSBgL2FwaS9tYWlsLyR7aWR9P3ZlcnNpb249JHt2ZXJzaW9ufWA7XHJcbiAgICAvLyAgICBPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2gocCA9PiB1cmwgKz0gYCYke3B9PSR7cGFyYW1zW3BdfWApO1xyXG4gICAgLy8gICAgY29uc3QgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KCdQVVQnLCB1cmwsIGZkLCB7XHJcbiAgICAvLyAgICB9KTtcclxuICAgIC8vICAgIHJldHVybiB0aGlzLl9odHRwLnJlcXVlc3QocmVxKS5waXBlKG1hcChldmVudCA9PiB7XHJcbiAgICAvLyAgICAgIGNvbnN0IHJlcyA9IGV2ZW50IGFzIEh0dHBSZXNwb25zZTxhbnk+O1xyXG4gICAgLy8gICAgICBpZiAocmVzLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAvLyAgICAgICAgY29uc3QgbW9kZWwgPSByZXMuYm9keSBhcyBSZWNpcGllbnRNb2RlbDxhbnk+O1xyXG4gICAgLy8gICAgICAgIHJldHVybiBtb2RlbDtcclxuICAgIC8vICAgICAgfVxyXG4gICAgLy8gICAgICBlbHNlXHJcbiAgICAvLyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoeyBzdGF0dXM6IHJlcy5zdGF0dXMsIGVycm9yOiByZXMuYm9keSB9KTtcclxuICAgIC8vICAgIH0pKVxyXG4gICAgLy8gIH0pLCB0aGlzLl9ub3RpZnk8VD4oKSk7XHJcbiAgICByZXR1cm4gdGhpcy5fd2l0aEdlb0xvY2F0aW9uKGZvcm0pLnBpcGUoc3dpdGNoTWFwKHBhcmFtcyA9PlxyXG4gICAgICB0aGlzLl9odHRwLnB1dDxSZWNpcGllbnRNb2RlbDxUPj4oYC9hcGkvbWFpbC8ke2lkfT92ZXJzaW9uPSR7dmVyc2lvbn1gLCBtb2RlbCwgeyBwYXJhbXMgfSkpLCB0aGlzLl9ub3RpZnk8VD4oKSk7XHJcbiAgfVxyXG4gIGRlbGV0ZShpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmRlbGV0ZShgL2FwaS9tYWlsLyR7aWR9YCkucGlwZSh0YXAoKCkgPT5cclxuICAgICAgdGhpcy5fZGVsZXRlJC5uZXh0KGlkKSkpO1xyXG4gIH1cclxuICByZW1vdmVjb21tZW50KGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZGVsZXRlKGAvYXBpL2NvbW1lbnRzLyR7aWR9YCkucGlwZSh0YXAoKCkgPT4geyB9KSk7XHJcbiAgfVxyXG4gIHN1Ym1pdDxUID0gYW55PihpZDogbnVtYmVyLCB2ZXJzaW9uOiBudW1iZXIsIGZvcm06IHN0cmluZywgbW9kZWw/OiBhbnksIHJlYWQ/OiBib29sZWFuLCBmb2xkZXJJZD86IHN0cmluZywgcmVjZWl2ZWQ/OiBEYXRlKTogT2JzZXJ2YWJsZTxSZWNpcGllbnRNb2RlbDxUPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dpdGhHZW9Mb2NhdGlvbihmb3JtKS5waXBlKHN3aXRjaE1hcChwYXJhbXMgPT5cclxuICAgICAgdGhpcy5faHR0cC5wdXQ8UmVjaXBpZW50TW9kZWw8YW55Pj4oYC9hcGkvbWFpbC8ke2lkfT92ZXJzaW9uPSR7dmVyc2lvbn0mZ289dHJ1ZWAsIG1vZGVsLCB7IHBhcmFtcyB9KSkpLnBpcGUoXHJcbiAgICAgICAgdGhpcy5fbm90aWZ5PFQ+KCkpO1xyXG4gIH1cclxuICBzZW5kPFQgPSBhbnk+KGlkOiBudW1iZXIsIHZlcnNpb246IG51bWJlciwgZm9ybTogc3RyaW5nLCBtb2RlbDogYW55LCBhY3Rpb246IHN0cmluZywgYWN0aW9uQXJnczoge30sIHJlYWQ/OiBib29sZWFuLCBmb2xkZXJJZD86IHN0cmluZywgcmVjZWl2ZWQ/OiBEYXRlKTogT2JzZXJ2YWJsZTxSZWNpcGllbnRNb2RlbDxUPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dpdGhHZW9Mb2NhdGlvbihmb3JtKS5waXBlKHN3aXRjaE1hcChwYXJhbXMgPT5cclxuICAgICAgdGhpcy5faHR0cC5wdXQ8UmVjaXBpZW50TW9kZWw8VD4+KGAvYXBpL21haWwvJHtpZH0/dmVyc2lvbj0ke3ZlcnNpb259JmFjdGlvbj0ke2FjdGlvbn1gLCBtb2RlbCwgeyBwYXJhbXM6IE9iamVjdC5hc3NpZ24ocGFyYW1zLCBhY3Rpb25BcmdzKSB9KSkpLnBpcGUoXHJcbiAgICAgICAgdGFwKCgpID0+XHJcbiAgICAgICAgICByZWFkID09PSBmYWxzZSAmJiB0aGlzLl91cGRhdGV1bnJlYWRjb3VudGVyKHJlY2VpdmVkLCBmb2xkZXJJZCwgLTEpXHJcbiAgICAgICAgKSxcclxuICAgICAgICB0aGlzLl9ub3RpZnk8VD4oKSk7XHJcbiAgfVxyXG4gIGV2ZW50cyhzdGFydGluZzogRGF0ZSwgZW5kaW5nPzogRGF0ZSwgY29udGFpbnM/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNjaGVkdWxlZEV2ZW50W10+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxTY2hlZHVsZWRFdmVudFtdPihgL2FwaS9ldmVudHNgLCB7XHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgIHN0YXJ0aW5nOiBzdGFydGluZy50b0pTT04oKSxcclxuICAgICAgICBlbmRpbmc6IGVuZGluZy50b0pTT04oKSxcclxuICAgICAgICBjb250YWluczogY29udGFpbnMgfHwgJydcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNoYW5nZUV2ZW50KGlkOiBudW1iZXIsIG9wdGlvbnM6IHsgc3RhcnRpbmc6IERhdGU7IGVuZGluZz86IERhdGU7IGNvbXBsZXRlPzogYm9vbGVhbiB9KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9ldmVudHMvJHtpZH1gLCBvcHRpb25zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogZ2V0IGdlbyBsb2NhdGlvbiBpZiBmb3JtIHNldHRpbmdzIHJlcXVpZXNcclxuICAgKiBAcGFyYW0gZm9ybVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3dpdGhHZW9Mb2NhdGlvbihmb3JtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHsgbG5nPzogc3RyaW5nOyBsYXQ/OiBzdHJpbmcgfT4ge1xyXG4gICAgY29uc3QgY29uZmlndXJhdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5mb3Jtcy5maW5kKGYgPT4gZi5uYW1lID09PSBmb3JtKTtcclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxhbnk+KG9ic2VydmUgPT4ge1xyXG4gICAgICBzd2l0Y2ggKGNvbmZpZ3VyYXRpb24ucG9zaXRpb24pIHtcclxuICAgICAgICBjYXNlICdSZXF1aXJlJzpcclxuICAgICAgICBjYXNlICdBc2snOlxyXG4gICAgICAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihyID0+IHtcclxuICAgICAgICAgICAgb2JzZXJ2ZS5uZXh0KHtcclxuICAgICAgICAgICAgICBsbmc6IHIuY29vcmRzLmxvbmdpdHVkZS50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgIGxhdDogci5jb29yZHMubGF0aXR1ZGUudG9TdHJpbmcoKVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5wb3NpdGlvbiA9PT0gJ0FzaycpXHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZS5uZXh0KHt9KTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIG9ic2VydmUuZXJyb3IoJ25vIHBvc2l0aW9uJyk7XHJcbiAgICAgICAgICAgIG9ic2VydmUuY29tcGxldGUoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIG9ic2VydmUubmV4dCh7fSk7XHJcbiAgICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKi9cclxuICBwcml2YXRlIF9ub3RpZnkgPSA8VD4oKSA9PiAob2JzZXJ2ZTogT2JzZXJ2YWJsZTxSZWNpcGllbnRNb2RlbDxUPj4pID0+IHtcclxuICAgIHJldHVybiBvYnNlcnZlLnBpcGUodGFwKG0gPT4ge1xyXG4gICAgICAobSBhcyBJdGVtRXh0cmEpLmxvYWRlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuX2NoYW5nZSQubmV4dChtKTtcclxuICAgIH0pKTtcclxuICB9O1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgSXRlbUV4dHJhIHtcclxuICBsb2FkaW5nPzogYm9vbGVhbjtcclxuICBsb2FkZWQ/OiBib29sZWFuO1xyXG4gIHdvcmtpbmc/OiBib29sZWFuO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQXR0YWNobWVudEV4dHJhIGV4dGVuZHMgQXR0YWNobWVudCB7XHJcbiAgdXJsOiBTYWZlVXJsO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgZmlsZUV4dDogc3RyaW5nO1xyXG4gIGlzSW1hZ2U6IGJvb2xlYW47XHJcbiAgcHJvZ3Jlc3M/OiBudW1iZXI7XHJcbiAgY2hlY2tlZE91dD86IERhdGU7XHJcbiAgdmlld2VkPzogRGF0ZTtcclxuICBmYWlsZWQ/OiBib29sZWFuO1xyXG59XHJcbmZ1bmN0aW9uIGlzSHR0cFJlc3BvbnNlPFQ+KGV2ZW50OiBIdHRwRXZlbnQ8VD4pOiBldmVudCBpcyBIdHRwUmVzcG9uc2U8VD4ge1xyXG4gIHJldHVybiBldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzSHR0cFByb2dyZXNzRXZlbnQoXHJcbiAgZXZlbnQ6IEh0dHBFdmVudDx1bmtub3duPlxyXG4pOiBldmVudCBpcyBIdHRwUHJvZ3Jlc3NFdmVudCB7XHJcbiAgcmV0dXJuIChcclxuICAgIGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuRG93bmxvYWRQcm9ncmVzcyB8fFxyXG4gICAgZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzc1xyXG4gIClcclxufVxyXG5mdW5jdGlvbiBjYWxjdWxhdGVTdGF0ZSh1cGxvYWQ6IFVwbG9hZEV2ZW50LCBldmVudDogSHR0cEV2ZW50PHVua25vd24+KTogVXBsb2FkRXZlbnQge1xyXG4gIGlmIChpc0h0dHBQcm9ncmVzc0V2ZW50KGV2ZW50KSkge1xyXG4gICAgcmV0dXJuIG5ldyBVcGxvYWRFdmVudCh7XHJcbiAgICAgIHByb2dyZXNzOiBldmVudC50b3RhbFxyXG4gICAgICAgID8gTWF0aC5yb3VuZCgoMTAwICogZXZlbnQubG9hZGVkKSAvIGV2ZW50LnRvdGFsKVxyXG4gICAgICAgIDogdXBsb2FkLnByb2dyZXNzLFxyXG4gICAgICBzdGF0ZTogJ3Byb2dyZXNzJyxcclxuICAgIH0pO1xyXG4gIH1cclxuICBpZiAoaXNIdHRwUmVzcG9uc2UoZXZlbnQpKSB7XHJcbiAgICByZXR1cm4gbmV3IFVwbG9hZEV2ZW50KHtcclxuICAgICAgcHJvZ3Jlc3M6IDEwMCxcclxuICAgICAgc3RhdGU6ICdkb25lJyxcclxuICAgIH0pXHJcbiAgfVxyXG4gIHJldHVybiB1cGxvYWRcclxufVxyXG5leHBvcnQgY2xhc3MgVXBsb2FkRXZlbnQge1xyXG4gIHJlYWRvbmx5IGZpbGVOYW1lOiBzdHJpbmc7XHJcbiAgcHJvZ3Jlc3M6IG51bWJlcjtcclxuICAvLyBieXRlc1xyXG4gIHRvdGFsOiBudW1iZXI7XHJcbiAgc3RhdGU6ICdwZW5kaW5nJyB8ICdwcm9ncmVzcycgfCAnZG9uZSc7XHJcbiAgY29uc3RydWN0b3Iob3B0aW9ucykgeyB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlcG9ydHByb2dyZXNzKGZpbGVuYW1lOiBzdHJpbmcpOiAoc291cmNlOiBPYnNlcnZhYmxlPEF0dGFjaG1lbnQ+KSA9PiBPYnNlcnZhYmxlPEF0dGFjaG1lbnQ+IHtcclxuICByZXR1cm4gKHNvdXJjZTogT2JzZXJ2YWJsZTxBdHRhY2htZW50PikgPT5cclxuICAgIHNvdXJjZS5waXBlKG1hcChyID0+IHtcclxuICAgICAgLy9pZiAoZXZlbnQgaW5zdGFuY2VvZiBQcm9ncmVzc0V2ZW50KSB7XHJcbiAgICAgIC8vICBvYnNlcnZlLm5leHQobmV3IFVwbG9hZEV2ZW50KFxyXG4gICAgICAvLyAgICBmaWxlLm5hbWUsXHJcbiAgICAgIC8vICAgIChldmVudCBhcyBQcm9ncmVzc0V2ZW50KS5sb2FkZWQsXHJcbiAgICAgIC8vICAgIChldmVudCBhcyBQcm9ncmVzc0V2ZW50KS50b3RhbFxyXG4gICAgICAvLyAgKSk7XHJcbiAgICAgIC8vfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xyXG4gICAgICAvLyAgY29uc3QgcmVzID0gZXZlbnQgYXMgSHR0cFJlc3BvbnNlPGFueT47XHJcbiAgICAgIC8vICBpZiAocmVzLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgIC8vICAgIGNvbnN0IG1vZGVsID0gcmVzLmJvZHkgYXMgQXR0YWNobWVudDtcclxuICAgICAgLy8gICAgb2JzZXJ2ZS5uZXh0KG1vZGVsKTtcclxuICAgICAgLy8gIH1cclxuICAgICAgLy8gIGVsc2VcclxuICAgICAgLy8gICAgb2JzZXJ2ZS5lcnJvcih7IHN0YXR1czogcmVzLnN0YXR1cywgZXJyb3I6IHJlcy5ib2R5IH0pO1xyXG4gICAgICAvLyAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICByZXR1cm4gcjtcclxuICAgIH0pKTtcclxufVxyXG4iXX0=
|
392
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbGJveC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb3JlL21haWxib3guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBRUwsYUFBYSxFQUNNLFdBQVcsRUFBRSxZQUFZLEVBQzdDLE1BQU0sc0JBQXNCLENBQUM7QUFHOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7OztBQUsvQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQXFCLE9BQU8sQ0FBQyxDQUFDO0FBUzlFLE1BQU0sT0FBTyxjQUFjO0lBTXpCLFlBQW9CLFFBQXdCLEVBQ2xDLEtBQXlCLEVBQ2pDLFNBQXFCLEVBQ2IsS0FBaUI7UUFIUCxhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUNsQyxVQUFLLEdBQUwsS0FBSyxDQUFvQjtRQUV6QixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBUlYsYUFBUSxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQzlDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ2xELE1BQU07UUFDVSxZQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2QyxZQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQW1WdkQ7V0FDRztRQUNLLFlBQU8sR0FBRyxHQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQXNDLEVBQUUsRUFB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QUFRLEVBQUUsS0FBSyxDQUFDLEtBQUs7Z0JBQ25CLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUNoRCxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVE7WUFDbkIsS0FBSyxFQUFFLFVBQVU7U0FDbEIsQ0FBQyxDQUFDO0tBQ0o7SUFDRCxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN6QixPQUFPLElBQUksV0FBVyxDQUFDO1lBQ3JCLFFBQVEsRUFBRSxHQUFHO1lBQ2IsS0FBSyxFQUFFLE1BQU07U0FDZCxDQUFDLENBQUE7S0FDSDtJQUNELE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQztBQUNELE1BQU0sT0FBTyxXQUFXO0lBTXRCLFlBQVksT0FBTyxJQUFJLENBQUM7Q0FDekI7QUFFRCxTQUFTLGNBQWMsQ0FBQyxRQUFnQjtJQUN0QyxPQUFPLENBQUMsTUFBOEIsRUFBRSxFQUFFLENBQ3hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ2xCLHVDQUF1QztRQUN2QyxpQ0FBaUM7UUFDakMsZ0JBQWdCO1FBQ2hCLHNDQUFzQztRQUN0QyxvQ0FBb0M7UUFDcEMsT0FBTztRQUNQLDZDQUE2QztRQUM3QywyQ0FBMkM7UUFDM0MsNkJBQTZCO1FBQzdCLDJDQUEyQztRQUMzQywwQkFBMEI7UUFDMUIsS0FBSztRQUNMLFFBQVE7UUFDUiw2REFBNkQ7UUFDN0QsdUJBQXVCO1FBQ3ZCLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNSLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEh0dHBDbGllbnQsIEh0dHBFdmVudCxcclxuICBIdHRwRXZlbnRUeXBlLFxyXG4gIEh0dHBQcm9ncmVzc0V2ZW50LCBIdHRwUmVxdWVzdCwgSHR0cFJlc3BvbnNlXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb21tZW50LCBVc2VySW5mbywgUmVjaXBpZW50TW9kZWwsIEF0dGFjaG1lbnQsIFNjaGVkdWxlZEV2ZW50LCBIZWFkZXJNb2RlbCwgRG9jdW1lbnRNb2RlbCwgVm90ZSwgQ29tbWVudFZlcnNpb24sIENoYWluIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YXAsIHN3aXRjaE1hcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBjbGVhbnVwLCBpc0FycmF5IH0gZnJvbSAnLi9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBIdWJTZXJ2aWNlIH0gZnJvbSAnLi9odWIuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uSW1wbCB9IGZyb20gJy4vYXV0aGVudGljYXRpb24nO1xyXG5pbXBvcnQgeyBTYWZlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcblxyXG5leHBvcnQgY29uc3QgRE9DVU1FTlRfTU9ERUwgPSBuZXcgSW5qZWN0aW9uVG9rZW48RG9jdW1lbnRNb2RlbDxhbnk+PignbW9kZWwnKTtcclxuXHJcbmV4cG9ydCB0eXBlIEZpbHRlclR5cGUgPSAncmVjZW50JyB8ICd1bnJlYWQnIHwgJ2ZsYWdnZWQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VFdmVudDxUPiB7XHJcbiAgbW9kZWw6IFJlY2lwaWVudE1vZGVsPFQ+O1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgTWFpbGJveFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZSQgPSBuZXcgU3ViamVjdDxSZWNpcGllbnRNb2RlbDxhbnk+PigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlbGV0ZSQgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XHJcbiAgLyoqICovXHJcbiAgcHVibGljIHJlYWRvbmx5IGNoYW5nZWQgPSB0aGlzLl9jaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIHB1YmxpYyByZWFkb25seSBkZWxldGVkID0gdGhpcy5fZGVsZXRlJC5hc09ic2VydmFibGUoKTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2F1dGg6IEF1dGhlbnRpY2F0aW9uSW1wbCxcclxuICAgIG1lc3NhZ2luZzogSHViU2VydmljZSxcclxuICAgIHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQpIHtcclxuICAgIG1lc3NhZ2luZy5uZXckLlxyXG4gICAgICBzdWJzY3JpYmUobSA9PiB7XHJcbiAgICAgICAgaWYgKG0udXNlcklkICE9PSBfc2Vzc2lvbi5wcm9maWxlLnVzZXJJZCkgcmV0dXJuO1xyXG4gICAgICAgIF9zZXNzaW9uLnByb2ZpbGUuaW5ib3hDb3VudCsrO1xyXG4gICAgICAgIGNvbnN0IGZvbGRlciA9IF9zZXNzaW9uLnByb2ZpbGUuZm9sZGVycy5maW5kKGYgPT4gZi5uYW1lID09PSBtLm1vZGVsLmZvbGRlcklkKTtcclxuICAgICAgICBmb2xkZXIuY291bnQrKztcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIGZvcm1hdERvd25sb2FkVXJsKGRvY3VtZW50SWQ6IG51bWJlciwgZmlsZUlkOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLl9hdXRoLmdldEFjY2Vzc1Rva2VuKCk7XHJcbiAgICByZXR1cm4gYC9hcGkvYXR0YWNobWVudHMvJHtkb2N1bWVudElkfS8ke2ZpbGVJZH0/YWNjZXNzX3Rva2VuPSR7dG9rZW59YDtcclxuICB9XHJcbiAgZG93bmxvYWQoZG9jdW1lbnRJZDogbnVtYmVyLCBmaWxlSWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAvL25ldyBPYnNlcnZhYmxlPGFueT4ob2JzZXJ2ZSA9PiB7XHJcbiAgICAvLyAgb2JzZXJ2ZS5uZXh0KHt9KTtcclxuICAgIC8vICByZXR1cm4ge1xyXG4gICAgLy8gICAgdW5zdWJzY3JpYmUoKSB7IH1cclxuICAgIC8vICB9XHJcbiAgICAvL30pO1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0KGAvYXBpL2F0dGFjaG1lbnRzLyR7ZG9jdW1lbnRJZH0vJHtmaWxlSWR9YCwge1xyXG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicsXHJcbiAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlXHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmVtb3ZlYXR0YWNobWVudChyZWNpcGllbnRJZDogbnVtYmVyLCBmaWxlSWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5kZWxldGUoYC9hcGkvYXR0YWNobWVudHMvJHtyZWNpcGllbnRJZH0vJHtmaWxlSWR9YCk7XHJcbiAgfVxyXG4gIHJlYWQoaWQ6IG51bWJlciwgcmVhZDogYm9vbGVhbiwgZm9sZGVySWQ/OiBzdHJpbmcsIHJlY2VpdmVkPzogRGF0ZSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQoYC9hcGkvbWFpbGJveC9yZWFkLyR7aWR9YCwgdW5kZWZpbmVkLCB7IHBhcmFtczogeyByZWFkIH0gYXMgYW55IH0pLnBpcGUodGFwKCgpID0+XHJcbiAgICAgIGZvbGRlcklkICYmIHRoaXMuX3VwZGF0ZXVucmVhZGNvdW50ZXIocmVjZWl2ZWQsIGZvbGRlcklkLCByZWFkID8gMSA6IC0xKVxyXG4gICAgKSk7XHJcbiAgfVxyXG4gIGNvbW1lbnRzKGlkOiBudW1iZXIsIGJlZm9yZTogRGF0ZSk6IE9ic2VydmFibGU8Q29tbWVudFtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8Q29tbWVudFtdPihgL2FwaS9jb21tZW50cy8ke2lkfWAsIHsgcGFyYW1zOiB7IGJlZm9yZTogbmV3IERhdGUoYmVmb3JlKS50b0pTT04oKSB9IH0pO1xyXG4gIH1cclxuICB0YWdzKGlkOiBudW1iZXIsIHRhZ3M6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9tYWlsYm94L3RhZy8ke2lkfWAsIHsgdGFncyB9KS5waXBlKHRhcCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX2NoYW5nZSQubmV4dCh7IGlkLCB0YWdzIH0gYXMgYW55KTtcclxuICAgIH0pKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGRvY3VtZW50SWRcclxuICAgKiBAcGFyYW0gc3RhdGVJZFxyXG4gICAqIEBwYXJhbSB1c2VySWQgc3Vic3RpdHV0ZVxyXG4gICAqL1xyXG4gIGNoYW5nZVN0YXRlKGRvY3VtZW50SWQ6IG51bWJlciwgc3RhdGVJZDogc3RyaW5nLCB1c2VySWQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0KGAvYXBpL21haWxib3gvY2hhbmdlc3RhdGUvJHtkb2N1bWVudElkfWAsIHsgc3RhdGVJZCwgdXNlcklkIH0pO1xyXG4gIH1cclxuICBtb3ZlKGlkOiBudW1iZXIsIGZvbGRlcklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0KGAvYXBpL21haWxib3gvbW92ZS8ke2lkfT9mb2xkZXJJZD0ke2ZvbGRlcklkfWAsIHt9KS5waXBlKHRhcCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX2NoYW5nZSQubmV4dCh7XHJcbiAgICAgICAgaWQsXHJcbiAgICAgICAgZm9sZGVySWRcclxuICAgICAgfSBhcyBhbnkpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuICBjaGVja091dChyZWNpcGllbnRJZDogbnVtYmVyLCB2ZXJzaW9uOiBudW1iZXIsIGF0dGFjaG1lbnRJZDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQ8QXR0YWNobWVudD4oYC9hcGkvYXR0YWNobWVudHMvJHtyZWNpcGllbnRJZH0vJHthdHRhY2htZW50SWR9L2NoZWNrb3V0YCwgbnVsbCwgeyBwYXJhbXM6IHsgdmVyc2lvbiB9IH0pO1xyXG4gIH1cclxuICBjaGVja0luKHJlY2lwaWVudElkOiBudW1iZXIsIHZlcnNpb246IG51bWJlciwgYXR0YWNobWVudElkOiBudW1iZXIsIGZpbGU6IEZpbGUpOiBPYnNlcnZhYmxlPEF0dGFjaG1lbnQ+IHtcclxuICAgIGNvbnN0IGZkID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBmZC5hcHBlbmQoZmlsZS5uYW1lLCBmaWxlKTtcclxuICAgIGNvbnN0IHJlcSA9IG5ldyBIdHRwUmVxdWVzdCgnUFVUJyxcclxuICAgICAgYC9hcGkvYXR0YWNobWVudHMvJHtyZWNpcGllbnRJZH0vJHthdHRhY2htZW50SWR9L2NoZWNraW4/dmVyc2lvbj0ke3ZlcnNpb259YCwgZmQsIHtcclxuICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIC8vY29uc3QgaW5pdGlhbFN0YXRlOiBVcGxvYWRFdmVudCA9IHsgc3RhdGU6ICdQRU5ESU5HJywgcHJvZ3Jlc3M6IDAgfVxyXG4gICAgLy9jb25zdCBjYWxjdWxhdGVTdGF0ZSA9IChcclxuICAgIC8vICB1cGxvYWQ6IFVwbG9hZEV2ZW50LFxyXG4gICAgLy8gIGV2ZW50OiBIdHRwRXZlbnQ8dW5rbm93bj5cclxuICAgIC8vKTogVXBsb2FkRXZlbnQgPT4ge1xyXG4gICAgLy8gIC8vIGltcGxlbWVudGF0aW9uXHJcbiAgICAvL31cclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxhbnk+KG9ic2VydmUgPT4ge1xyXG4gICAgICB0aGlzLl9odHRwLnJlcXVlc3QocmVxKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIFByb2dyZXNzRXZlbnQpIHtcclxuICAgICAgICAgIC8vICBvYnNlcnZlLm5leHQobmV3IFVwbG9hZEV2ZW50KFxyXG4gICAgICAgICAgLy8gICAgZmlsZS5uYW1lLFxyXG4gICAgICAgICAgLy8gICAgKGV2ZW50IGFzIFByb2dyZXNzRXZlbnQpLmxvYWRlZCxcclxuICAgICAgICAgIC8vICAgIChldmVudCBhcyBQcm9ncmVzc0V2ZW50KS50b3RhbFxyXG4gICAgICAgICAgLy8gICkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcclxuICAgICAgICAgIGNvbnN0IHJlcyA9IGV2ZW50IGFzIEh0dHBSZXNwb25zZTxhbnk+O1xyXG4gICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICBjb25zdCBtb2RlbCA9IHJlcy5ib2R5IGFzIEF0dGFjaG1lbnQ7XHJcbiAgICAgICAgICAgIG9ic2VydmUubmV4dChtb2RlbCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIG9ic2VydmUuZXJyb3IoeyBzdGF0dXM6IHJlcy5zdGF0dXMsIGVycm9yOiByZXMuYm9keSB9KTtcclxuICAgICAgICAgIG9ic2VydmUuY29tcGxldGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGUgPT4ge1xyXG4gICAgICAgIG9ic2VydmUuZXJyb3IoZSk7XHJcbiAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICB1bnN1YnNjcmliZSgpIHtcclxuICAgICAgICAgIC8vcmVxLlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHVwbG9hZChyZWNpcGllbnRJZDogbnVtYmVyLCBmb3JtSWQ6IHN0cmluZywgdmVyc2lvbjogbnVtYmVyLCBmaWxlOiBGaWxlLCBvcHRpb25zPzogeyBpc1ByaXZhdGU/OiBib29sZWFuIH0pOiBPYnNlcnZhYmxlPEF0dGFjaG1lbnQ+O1xyXG4gIHVwbG9hZChyZWNpcGllbnRJZDogbnVtYmVyLCBmb3JtSWQ6IHN0cmluZywgdmVyc2lvbjogbnVtYmVyLCBmaWxlczogRmlsZVtdLCBvcHRpb25zPzogeyBpc1ByaXZhdGU/OiBib29sZWFuIH0pOiBPYnNlcnZhYmxlPEF0dGFjaG1lbnRbXT47XHJcbiAgdXBsb2FkKHJlY2lwaWVudElkOiBudW1iZXIsIGZvcm1JZDogc3RyaW5nLCB2ZXJzaW9uOiBudW1iZXIsIGZpbGVzOiBGaWxlIHwgRmlsZVtdLCBvcHRpb25zPzogeyBpc1ByaXZhdGU/OiBib29sZWFuIH0pOiBPYnNlcnZhYmxlPEF0dGFjaG1lbnQgfCBBdHRhY2htZW50W10+IHtcclxuICAgIGNvbnN0IGZkID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBpZiAoaXNBcnJheShmaWxlcykpIGZpbGVzLmZvckVhY2goZiA9PlxyXG4gICAgICBmZC5hcHBlbmQoZi5uYW1lLCBmKSk7XHJcbiAgICBlbHNlIGZkLmFwcGVuZChmaWxlcy5uYW1lLCBmaWxlcyk7XHJcbiAgICAvL2NvbnN0IGJ5dGVzUGVyQ2h1bmsgPSAyMCAqIDEwMjQgKiAxMDI0O1xyXG4gICAgLy8gYXF1aXJlIHRoZSBsb2NhdGlvbiBwcmlvciB0byBzZW5kaW5nIHRoZSByZXF1ZXN0XHJcbiAgICByZXR1cm4gdGhpcy5fd2l0aEdlb0xvY2F0aW9uKGZvcm1JZCkucGlwZShzd2l0Y2hNYXAocGFyYW1zID0+XHJcbiAgICAgIG5ldyBPYnNlcnZhYmxlPGFueT4ob2JzZXJ2ZSA9PiB7XHJcbiAgICAgICAgbGV0IHVybCA9IGAvYXBpL2F0dGFjaG1lbnRzLyR7cmVjaXBpZW50SWR9P3ZlcnNpb249JHt2ZXJzaW9ufWA7XHJcbiAgICAgICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKHAgPT4gdXJsICs9IGAmJHtwfT0ke3BhcmFtc1twXX1gKTtcclxuICAgICAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICAgICAgaWYgKG9wdGlvbnMuaXNQcml2YXRlKSB1cmwgKz0gJyZpc3ByaXZhdGU9dHJ1ZSdcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KCdQT1NUJywgdXJsLCBmZCwge1xyXG4gICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5faHR0cC5yZXF1ZXN0KHJlcSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIFByb2dyZXNzRXZlbnQpIHtcclxuICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiB1cGxvYWQgcHJvZ3Jlc3MgZXZlbnQuIENvbXB1dGUgYW5kIHNob3cgdGhlICUgZG9uZTpcclxuICAgICAgICAgICAgLy9jb25zdCBwZXJjZW50RG9uZSA9IE1hdGgucm91bmQoMTAwICogZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWwpO1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKGBGaWxlIGlzICR7cGVyY2VudERvbmV9JSB1cGxvYWRlZC5gKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgY29uc3QgcmVzID0gZXZlbnQgYXMgSHR0cFJlc3BvbnNlPGFueT47XHJcbiAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBjb25zdCBtb2RlbCA9IHJlcy5ib2R5IGFzIEF0dGFjaG1lbnRbXTtcclxuICAgICAgICAgICAgICBvYnNlcnZlLm5leHQoaXNBcnJheShmaWxlcykgPyBtb2RlbCA6IG1vZGVsWzBdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZS5lcnJvcih7IHN0YXR1czogcmVzLnN0YXR1cywgZXJyb3I6IHJlcy5ib2R5IH0pO1xyXG4gICAgICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgZSA9PiB7XHJcbiAgICAgICAgICBvYnNlcnZlLmVycm9yKGUpO1xyXG4gICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICB1bnN1YnNjcmliZSgpIHtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pKSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIHJldHJpZXZlIHNlbmRlcnNcclxuICAgKiBAcGFyYW0gbmFtZVxyXG4gICAqL1xyXG4gIHNlbmRlcnMobmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxVc2VySW5mb1tdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8VXNlckluZm9bXT4oJy9hcGkvbWFpbGJveC9zZW5kZXJzLycsIHtcclxuICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgbmFtZVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgZmxhZyhpZDogbnVtYmVyLCBmbGFnOiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9tYWlsYm94L2ZsYWcvJHtpZH0/ZmxhZz0ke2ZsYWd9YCwgbnVsbCkucGlwZSh0YXAoKCkgPT4gdGhpcy5fY2hhbmdlJC5uZXh0KHsgaWQsIGZsYWcgfSBhcyBhbnkpKSk7XHJcbiAgfVxyXG4gIHZpZXdlZGNvbW1lbnRzKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPHsgdGltZTogRGF0ZSB9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQ8eyB0aW1lOiBEYXRlIH0+KGAvYXBpL2NvbW1lbnRzL3ZpZXdlZC8ke2lkfWAsIHt9LCB7IGhlYWRlcnM6IHsgJ25vLXByb2dyZXNzJzogJ3RydWUnIH0gfSkucGlwZSh0YXAoKGU6IHsgdGltZTogRGF0ZSB9KSA9PiB0aGlzLl9jaGFuZ2UkLm5leHQoeyBpZCwgdmlld2VkOiBlLnRpbWUgfSBhcyBhbnkpKSk7XHJcbiAgfVxyXG4gIHR5cGluZyhpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9jb21tZW50cy90eXBpbmcvJHtpZH1gLCB7fSwgeyBoZWFkZXJzOiB7ICduby1wcm9ncmVzcyc6ICd0cnVlJyB9IH0pO1xyXG4gIH1cclxuICBjb3B5KGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFJlY2lwaWVudE1vZGVsPGFueT4+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8UmVjaXBpZW50TW9kZWw8YW55Pj4oYC9hcGkvbWFpbGJveC9jb3B5LyR7aWR9YCwge30pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gaWQgZG9jdW1lbnQgaWRcclxuICAgKiBAcGFyYW0gb3B0aW9uc1xyXG4gICAqL1xyXG4gIGNvbW1lbnQoaWQ6IG51bWJlciwgb3B0aW9uczoge1xyXG4gICAgdGV4dD86IHN0cmluZyxcclxuICAgIHJlc291cmNlPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcclxuICAgIGltYWdlPzogc3RyaW5nLFxyXG4gICAgcGFyZW50SWQ/OiBudW1iZXJcclxuICB9KTogT2JzZXJ2YWJsZTxDb21tZW50PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PENvbW1lbnQ+KGAvYXBpL2NvbW1lbnRzLyR7aWR9YCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIGNvbW1lbnR1cGRhdGUoaWQ6IG51bWJlciwgY29tbWVudElkOiBudW1iZXIsIG9wdGlvbnM6IHtcclxuICAgIHRleHQ/OiBzdHJpbmcsXHJcbiAgICBpbWFnZT86IHN0cmluZyxcclxuICAgIHJlc291cmNlPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfVxyXG4gIH0pOiBPYnNlcnZhYmxlPENvbW1lbnQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dDxDb21tZW50PihgL2FwaS9jb21tZW50cy9lZGl0LyR7aWR9LyR7Y29tbWVudElkfWAsIG9wdGlvbnMpO1xyXG4gIH1cclxuICBpbmZvPFQgPSBhbnk+KGRvY3VtZW50SWQ6IG51bWJlcik6IE9ic2VydmFibGU8RG9jdW1lbnRNb2RlbDxUPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PERvY3VtZW50TW9kZWw8VD4+KGAvYXBpL21haWxib3gvaW5mby8ke2RvY3VtZW50SWR9YCk7XHJcbiAgfVxyXG4gIHRpbWVsaW5lKGRvY3VtZW50SWQ6IG51bWJlcik6IE9ic2VydmFibGU8Q2hhaW4+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxDaGFpbj4oYC9hcGkvbWFpbGJveC90aW1lbGluZS8ke2RvY3VtZW50SWR9YCk7XHJcbiAgfVxyXG4gIHZvdGUoaWQ6IG51bWJlciwgY29tbWVudElkOiBudW1iZXIsIHZhbHVlOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdChgL2FwaS9jb21tZW50cy92b3RlLyR7aWR9LyR7Y29tbWVudElkfWAsIHt9LCB7IHBhcmFtczogeyB2YWx1ZTogdmFsdWUudG9TdHJpbmcoKSB9IH0pO1xyXG4gIH1cclxuICB2b3RlcyhpZDogbnVtYmVyLCBjb21tZW50SWQ6IG51bWJlcik6IE9ic2VydmFibGU8Vm90ZVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8Vm90ZVtdPihgL2FwaS9jb21tZW50cy92b3Rlcy8ke2lkfS8ke2NvbW1lbnRJZH1gKTtcclxuICB9XHJcbiAgZWRpdHMoaWQ6IG51bWJlciwgY29tbWVudElkOiBudW1iZXIpOiBPYnNlcnZhYmxlPENvbW1lbnRWZXJzaW9uW10+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxDb21tZW50VmVyc2lvbltdPihgL2FwaS9jb21tZW50cy9lZGl0cy8ke2lkfS8ke2NvbW1lbnRJZH1gKTtcclxuICB9XHJcbiAgZmluZEFsbChmaWx0ZXI6IHsgdHlwZT86IEZpbHRlclR5cGU7IGNvbnRhaW5zPzogc3RyaW5nOyBzdGF0ZT86IHN0cmluZzsgZm9ybT86IHN0cmluZzsgZm9sZGVySWQ/OiBzdHJpbmc7IHNlbmRlcklkPzogc3RyaW5nOyB9LFxyXG4gICAgb3B0aW9ucz86IHsgc2tpcD86IG51bWJlcjsgdGFrZT86IG51bWJlcjsgb3JkZXJCeT86ICd2YWx1ZScgfCAncmVjZWl2ZWQnIH0pOiBPYnNlcnZhYmxlPEhlYWRlck1vZGVsW10+IHtcclxuICAgIGNvbnN0IHBhcmFtczogYW55ID0geyAuLi5maWx0ZXIsIC4uLm9wdGlvbnMgfTtcclxuICAgIGNsZWFudXAocGFyYW1zKTtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxIZWFkZXJNb2RlbFtdPignL2FwaS9tYWlsJywgeyBwYXJhbXMgfSk7XHJcbiAgfVxyXG4gIGNyZWF0ZTxUID0gYW55Pihmb3JtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFJlY2lwaWVudE1vZGVsPFQ+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fd2l0aEdlb0xvY2F0aW9uKGZvcm0pLnBpcGUoc3dpdGNoTWFwKHAgPT5cclxuICAgICAgdGhpcy5faHR0cC5wb3N0PFJlY2lwaWVudE1vZGVsPGFueT4+KCcvYXBpL21haWwnLCBudWxsLCB7XHJcbiAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICBmb3JtLFxyXG4gICAgICAgICAgLi4ucFxyXG4gICAgICAgIH1cclxuICAgICAgfSkpLCB0aGlzLl9ub3RpZnk8VD4oKSk7XHJcbiAgfVxyXG4gIGdldDxUID0gYW55PihpZDogbnVtYmVyLCByZWFkPzogYm9vbGVhbik6IE9ic2VydmFibGU8UmVjaXBpZW50TW9kZWw8VD4+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZWNpcGllbnRNb2RlbDxUPj4oYC9hcGkvbWFpbC8ke2lkfWApLnBpcGUoXHJcbiAgICAgIHRhcCgobTogUmVjaXBpZW50TW9kZWwpID0+XHJcbiAgICAgICAgcmVhZCA9PT0gZmFsc2UgJiYgbS5yZWFkID09PSB0cnVlICYmXHJcbiAgICAgICAgdGhpcy5fdXBkYXRldW5yZWFkY291bnRlcihtLnJlY2VpdmVkLCBtLmZvbGRlcklkLCAtMSlcclxuICAgICAgKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3VwZGF0ZXVucmVhZGNvdW50ZXIoZGF0ZTogRGF0ZSwgZm9sZGVySWQ6IHN0cmluZywgdmFsOiBudW1iZXIpIHtcclxuICAgIGlmIChcclxuICAgICAgLy8gZGF0ZSBpcyBhYm92ZSB3YXRlcm1hcmtcclxuICAgICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm9wdGlvbnMuaW5ib3hWaWV3ICYmXHJcbiAgICAgIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5vcHRpb25zLmluYm94VmlldyA8IGRhdGVcclxuICAgIClcclxuICAgICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmluYm94Q291bnQgKz0gdmFsO1xyXG4gICAgLy8gZGVjcmVhc2VcclxuICAgIGNvbnN0IGZvbGRlciA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5mb2xkZXJzLlxyXG4gICAgICBmaW5kKGYgPT4gZi5uYW1lID09PSBmb2xkZXJJZCk7XHJcbiAgICBmb2xkZXIuY291bnQgKz0gdmFsO1xyXG4gIH1cclxuXHJcbiAgc2F2ZTxUID0gYW55PihpZDogbnVtYmVyLCBmb3JtOiBzdHJpbmcsIHZlcnNpb246IG51bWJlciwgbW9kZWw6IHt9LCBmaWxlcz86IEZpbGVbXSB8IEZpbGVMaXN0KTogT2JzZXJ2YWJsZTxSZWNpcGllbnRNb2RlbDxUPj4ge1xyXG4gICAgLy9jb25zdCBmZCA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgLy9jb25zdCBtb2RlbEJsb2IgPSBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkobW9kZWwpXSwge1xyXG4gICAgLy8gIHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgIC8vfSk7XHJcbiAgICAvL2ZkLmFwcGVuZCgnZm9ybS1kYXRhJywgbW9kZWxCbG9iKTtcclxuICAgIC8vaWYgKGZpbGVzKSB7XHJcbiAgICAvLyAgaWYgKGlzQXJyYXkoZmlsZXMpKSBmaWxlcy5mb3JFYWNoKGYgPT5cclxuICAgIC8vICAgIGZkLmFwcGVuZChmLm5hbWUsIGYpKTtcclxuICAgIC8vICBlbHNlIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIC8vICAgIGxldCBmaWxlID0gZmlsZXMuaXRlbShpKTtcclxuICAgIC8vICAgIGZkLmFwcGVuZChmaWxlLm5hbWUsIGZpbGUpO1xyXG4gICAgLy8gIH1cclxuICAgIC8vfVxyXG4gICAgLy8gIHJldHVybiB0aGlzLl93aXRoR2VvTG9jYXRpb24oZm9ybSkucGlwZShzd2l0Y2hNYXAocGFyYW1zID0+IHtcclxuICAgIC8vICAgIGxldCB1cmwgPSBgL2FwaS9tYWlsLyR7aWR9P3ZlcnNpb249JHt2ZXJzaW9ufWA7XHJcbiAgICAvLyAgICBPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2gocCA9PiB1cmwgKz0gYCYke3B9PSR7cGFyYW1zW3BdfWApO1xyXG4gICAgLy8gICAgY29uc3QgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KCdQVVQnLCB1cmwsIGZkLCB7XHJcbiAgICAvLyAgICB9KTtcclxuICAgIC8vICAgIHJldHVybiB0aGlzLl9odHRwLnJlcXVlc3QocmVxKS5waXBlKG1hcChldmVudCA9PiB7XHJcbiAgICAvLyAgICAgIGNvbnN0IHJlcyA9IGV2ZW50IGFzIEh0dHBSZXNwb25zZTxhbnk+O1xyXG4gICAgLy8gICAgICBpZiAocmVzLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAvLyAgICAgICAgY29uc3QgbW9kZWwgPSByZXMuYm9keSBhcyBSZWNpcGllbnRNb2RlbDxhbnk+O1xyXG4gICAgLy8gICAgICAgIHJldHVybiBtb2RlbDtcclxuICAgIC8vICAgICAgfVxyXG4gICAgLy8gICAgICBlbHNlXHJcbiAgICAvLyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoeyBzdGF0dXM6IHJlcy5zdGF0dXMsIGVycm9yOiByZXMuYm9keSB9KTtcclxuICAgIC8vICAgIH0pKVxyXG4gICAgLy8gIH0pLCB0aGlzLl9ub3RpZnk8VD4oKSk7XHJcbiAgICByZXR1cm4gdGhpcy5fd2l0aEdlb0xvY2F0aW9uKGZvcm0pLnBpcGUoc3dpdGNoTWFwKHBhcmFtcyA9PlxyXG4gICAgICB0aGlzLl9odHRwLnB1dDxSZWNpcGllbnRNb2RlbDxUPj4oYC9hcGkvbWFpbC8ke2lkfT92ZXJzaW9uPSR7dmVyc2lvbn1gLCBtb2RlbCwgeyBwYXJhbXMgfSkpLCB0aGlzLl9ub3RpZnk8VD4oKSk7XHJcbiAgfVxyXG4gIGRlbGV0ZShpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmRlbGV0ZShgL2FwaS9tYWlsLyR7aWR9YCkucGlwZSh0YXAoKCkgPT5cclxuICAgICAgdGhpcy5fZGVsZXRlJC5uZXh0KGlkKSkpO1xyXG4gIH1cclxuICByZW1vdmVjb21tZW50KGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZGVsZXRlKGAvYXBpL2NvbW1lbnRzLyR7aWR9YCkucGlwZSh0YXAoKCkgPT4geyB9KSk7XHJcbiAgfVxyXG4gIHN1Ym1pdDxUID0gYW55PihpZDogbnVtYmVyLCB2ZXJzaW9uOiBudW1iZXIsIGZvcm06IHN0cmluZywgbW9kZWw/OiBhbnksIHJlYWQ/OiBib29sZWFuLCBmb2xkZXJJZD86IHN0cmluZywgcmVjZWl2ZWQ/OiBEYXRlKTogT2JzZXJ2YWJsZTxSZWNpcGllbnRNb2RlbDxUPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dpdGhHZW9Mb2NhdGlvbihmb3JtKS5waXBlKHN3aXRjaE1hcChwYXJhbXMgPT5cclxuICAgICAgdGhpcy5faHR0cC5wdXQ8UmVjaXBpZW50TW9kZWw8YW55Pj4oYC9hcGkvbWFpbC8ke2lkfT92ZXJzaW9uPSR7dmVyc2lvbn0mZ289dHJ1ZWAsIG1vZGVsLCB7IHBhcmFtcyB9KSkpLnBpcGUoXHJcbiAgICAgICAgdGhpcy5fbm90aWZ5PFQ+KCkpO1xyXG4gIH1cclxuICBzZW5kPFQgPSBhbnk+KGlkOiBudW1iZXIsIHZlcnNpb246IG51bWJlciwgZm9ybTogc3RyaW5nLCBtb2RlbDogYW55LCBhY3Rpb246IHN0cmluZywgYWN0aW9uQXJnczoge30sIHJlYWQ/OiBib29sZWFuLCBmb2xkZXJJZD86IHN0cmluZywgcmVjZWl2ZWQ/OiBEYXRlKTogT2JzZXJ2YWJsZTxSZWNpcGllbnRNb2RlbDxUPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dpdGhHZW9Mb2NhdGlvbihmb3JtKS5waXBlKHN3aXRjaE1hcChwYXJhbXMgPT5cclxuICAgICAgdGhpcy5faHR0cC5wdXQ8UmVjaXBpZW50TW9kZWw8VD4+KGAvYXBpL21haWwvJHtpZH0/dmVyc2lvbj0ke3ZlcnNpb259JmFjdGlvbj0ke2FjdGlvbn1gLCBtb2RlbCwgeyBwYXJhbXM6IE9iamVjdC5hc3NpZ24ocGFyYW1zLCBhY3Rpb25BcmdzKSB9KSkpLnBpcGUoXHJcbiAgICAgICAgdGFwKCgpID0+XHJcbiAgICAgICAgICByZWFkID09PSBmYWxzZSAmJiB0aGlzLl91cGRhdGV1bnJlYWRjb3VudGVyKHJlY2VpdmVkLCBmb2xkZXJJZCwgLTEpXHJcbiAgICAgICAgKSxcclxuICAgICAgICB0aGlzLl9ub3RpZnk8VD4oKSk7XHJcbiAgfVxyXG4gIGV2ZW50cyhzdGFydGluZzogRGF0ZSwgZW5kaW5nPzogRGF0ZSwgY29udGFpbnM/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNjaGVkdWxlZEV2ZW50W10+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxTY2hlZHVsZWRFdmVudFtdPihgL2FwaS9ldmVudHNgLCB7XHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgIHN0YXJ0aW5nOiBzdGFydGluZy50b0pTT04oKSxcclxuICAgICAgICBlbmRpbmc6IGVuZGluZy50b0pTT04oKSxcclxuICAgICAgICBjb250YWluczogY29udGFpbnMgfHwgJydcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNoYW5nZUV2ZW50KGlkOiBudW1iZXIsIG9wdGlvbnM6IHsgc3RhcnRpbmc6IERhdGU7IGVuZGluZz86IERhdGU7IGNvbXBsZXRlPzogYm9vbGVhbiB9KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9ldmVudHMvJHtpZH1gLCBvcHRpb25zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogZ2V0IGdlbyBsb2NhdGlvbiBpZiBmb3JtIHNldHRpbmdzIHJlcXVpZXNcclxuICAgKiBAcGFyYW0gZm9ybVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3dpdGhHZW9Mb2NhdGlvbihmb3JtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHsgbG5nPzogc3RyaW5nOyBsYXQ/OiBzdHJpbmcgfT4ge1xyXG4gICAgY29uc3QgY29uZmlndXJhdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5mb3Jtcy5maW5kKGYgPT4gZi5uYW1lID09PSBmb3JtKTtcclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxhbnk+KG9ic2VydmUgPT4ge1xyXG4gICAgICBzd2l0Y2ggKGNvbmZpZ3VyYXRpb24ucG9zaXRpb24pIHtcclxuICAgICAgICBjYXNlICdSZXF1aXJlJzpcclxuICAgICAgICBjYXNlICdBc2snOlxyXG4gICAgICAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihyID0+IHtcclxuICAgICAgICAgICAgb2JzZXJ2ZS5uZXh0KHtcclxuICAgICAgICAgICAgICBsbmc6IHIuY29vcmRzLmxvbmdpdHVkZS50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgIGxhdDogci5jb29yZHMubGF0aXR1ZGUudG9TdHJpbmcoKVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5wb3NpdGlvbiA9PT0gJ0FzaycpXHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZS5uZXh0KHt9KTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIG9ic2VydmUuZXJyb3IoJ25vIHBvc2l0aW9uJyk7XHJcbiAgICAgICAgICAgIG9ic2VydmUuY29tcGxldGUoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIG9ic2VydmUubmV4dCh7fSk7XHJcbiAgICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKi9cclxuICBwcml2YXRlIF9ub3RpZnkgPSA8VD4oKSA9PiAob2JzZXJ2ZTogT2JzZXJ2YWJsZTxSZWNpcGllbnRNb2RlbDxUPj4pID0+IHtcclxuICAgIHJldHVybiBvYnNlcnZlLnBpcGUodGFwKG0gPT4ge1xyXG4gICAgICAobSBhcyBJdGVtRXh0cmEpLmxvYWRlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuX2NoYW5nZSQubmV4dChtKTtcclxuICAgIH0pKTtcclxuICB9O1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgSXRlbUV4dHJhIHtcclxuICBsb2FkaW5nPzogYm9vbGVhbjtcclxuICBsb2FkZWQ/OiBib29sZWFuO1xyXG4gIHdvcmtpbmc/OiBib29sZWFuO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQXR0YWNobWVudEV4dHJhIGV4dGVuZHMgQXR0YWNobWVudCB7XHJcbiAgdXJsOiBTYWZlVXJsO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgZmlsZUV4dDogc3RyaW5nO1xyXG4gIGlzSW1hZ2U6IGJvb2xlYW47XHJcbiAgcHJvZ3Jlc3M/OiBudW1iZXI7XHJcbiAgdmlld2VkPzogRGF0ZTtcclxuICBmYWlsZWQ/OiBib29sZWFuO1xyXG59XHJcbmZ1bmN0aW9uIGlzSHR0cFJlc3BvbnNlPFQ+KGV2ZW50OiBIdHRwRXZlbnQ8VD4pOiBldmVudCBpcyBIdHRwUmVzcG9uc2U8VD4ge1xyXG4gIHJldHVybiBldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzSHR0cFByb2dyZXNzRXZlbnQoXHJcbiAgZXZlbnQ6IEh0dHBFdmVudDx1bmtub3duPlxyXG4pOiBldmVudCBpcyBIdHRwUHJvZ3Jlc3NFdmVudCB7XHJcbiAgcmV0dXJuIChcclxuICAgIGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuRG93bmxvYWRQcm9ncmVzcyB8fFxyXG4gICAgZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzc1xyXG4gIClcclxufVxyXG5mdW5jdGlvbiBjYWxjdWxhdGVTdGF0ZSh1cGxvYWQ6IFVwbG9hZEV2ZW50LCBldmVudDogSHR0cEV2ZW50PHVua25vd24+KTogVXBsb2FkRXZlbnQge1xyXG4gIGlmIChpc0h0dHBQcm9ncmVzc0V2ZW50KGV2ZW50KSkge1xyXG4gICAgcmV0dXJuIG5ldyBVcGxvYWRFdmVudCh7XHJcbiAgICAgIHByb2dyZXNzOiBldmVudC50b3RhbFxyXG4gICAgICAgID8gTWF0aC5yb3VuZCgoMTAwICogZXZlbnQubG9hZGVkKSAvIGV2ZW50LnRvdGFsKVxyXG4gICAgICAgIDogdXBsb2FkLnByb2dyZXNzLFxyXG4gICAgICBzdGF0ZTogJ3Byb2dyZXNzJyxcclxuICAgIH0pO1xyXG4gIH1cclxuICBpZiAoaXNIdHRwUmVzcG9uc2UoZXZlbnQpKSB7XHJcbiAgICByZXR1cm4gbmV3IFVwbG9hZEV2ZW50KHtcclxuICAgICAgcHJvZ3Jlc3M6IDEwMCxcclxuICAgICAgc3RhdGU6ICdkb25lJyxcclxuICAgIH0pXHJcbiAgfVxyXG4gIHJldHVybiB1cGxvYWRcclxufVxyXG5leHBvcnQgY2xhc3MgVXBsb2FkRXZlbnQge1xyXG4gIHJlYWRvbmx5IGZpbGVOYW1lOiBzdHJpbmc7XHJcbiAgcHJvZ3Jlc3M6IG51bWJlcjtcclxuICAvLyBieXRlc1xyXG4gIHRvdGFsOiBudW1iZXI7XHJcbiAgc3RhdGU6ICdwZW5kaW5nJyB8ICdwcm9ncmVzcycgfCAnZG9uZSc7XHJcbiAgY29uc3RydWN0b3Iob3B0aW9ucykgeyB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlcG9ydHByb2dyZXNzKGZpbGVuYW1lOiBzdHJpbmcpOiAoc291cmNlOiBPYnNlcnZhYmxlPEF0dGFjaG1lbnQ+KSA9PiBPYnNlcnZhYmxlPEF0dGFjaG1lbnQ+IHtcclxuICByZXR1cm4gKHNvdXJjZTogT2JzZXJ2YWJsZTxBdHRhY2htZW50PikgPT5cclxuICAgIHNvdXJjZS5waXBlKG1hcChyID0+IHtcclxuICAgICAgLy9pZiAoZXZlbnQgaW5zdGFuY2VvZiBQcm9ncmVzc0V2ZW50KSB7XHJcbiAgICAgIC8vICBvYnNlcnZlLm5leHQobmV3IFVwbG9hZEV2ZW50KFxyXG4gICAgICAvLyAgICBmaWxlLm5hbWUsXHJcbiAgICAgIC8vICAgIChldmVudCBhcyBQcm9ncmVzc0V2ZW50KS5sb2FkZWQsXHJcbiAgICAgIC8vICAgIChldmVudCBhcyBQcm9ncmVzc0V2ZW50KS50b3RhbFxyXG4gICAgICAvLyAgKSk7XHJcbiAgICAgIC8vfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xyXG4gICAgICAvLyAgY29uc3QgcmVzID0gZXZlbnQgYXMgSHR0cFJlc3BvbnNlPGFueT47XHJcbiAgICAgIC8vICBpZiAocmVzLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgIC8vICAgIGNvbnN0IG1vZGVsID0gcmVzLmJvZHkgYXMgQXR0YWNobWVudDtcclxuICAgICAgLy8gICAgb2JzZXJ2ZS5uZXh0KG1vZGVsKTtcclxuICAgICAgLy8gIH1cclxuICAgICAgLy8gIGVsc2VcclxuICAgICAgLy8gICAgb2JzZXJ2ZS5lcnJvcih7IHN0YXR1czogcmVzLnN0YXR1cywgZXJyb3I6IHJlcy5ib2R5IH0pO1xyXG4gICAgICAvLyAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICByZXR1cm4gcjtcclxuICAgIH0pKTtcclxufVxyXG4iXX0=
|