ngx-tethys 18.2.16 → 18.2.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/esm2022/i18n/i18n.mjs +1 -1
- package/esm2022/i18n/locales/de-de.mjs +8 -2
- package/esm2022/i18n/locales/en-us.mjs +8 -2
- package/esm2022/i18n/locales/ja-jp.mjs +8 -2
- package/esm2022/i18n/locales/zh-hans.mjs +8 -2
- package/esm2022/i18n/locales/zh-hant.mjs +8 -2
- package/esm2022/image/preview/image-preview.component.mjs +5 -5
- package/esm2022/version.mjs +2 -2
- package/fesm2022/ngx-tethys-i18n.mjs +35 -5
- package/fesm2022/ngx-tethys-i18n.mjs.map +1 -1
- package/fesm2022/ngx-tethys-image.mjs +4 -4
- package/fesm2022/ngx-tethys-image.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/i18n/i18n.d.ts +6 -0
- package/i18n/locales/de-de.d.ts +6 -0
- package/i18n/locales/en-us.d.ts +6 -0
- package/i18n/locales/ja-jp.d.ts +6 -0
- package/i18n/locales/zh-hans.d.ts +6 -0
- package/i18n/locales/zh-hant.d.ts +6 -0
- package/image/preview/image-preview.component.d.ts +3 -2
- package/package.json +1 -1
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
|
@@ -340,10 +340,10 @@ export class ThyImagePreview {
|
|
|
340
340
|
}
|
|
341
341
|
copyLink(event) {
|
|
342
342
|
if (event.isSuccess) {
|
|
343
|
-
this.notifyService.success(
|
|
343
|
+
this.notifyService.success(this.locale().copySuccess);
|
|
344
344
|
}
|
|
345
345
|
else {
|
|
346
|
-
this.notifyService.error(
|
|
346
|
+
this.notifyService.error(this.locale().copyError);
|
|
347
347
|
}
|
|
348
348
|
}
|
|
349
349
|
prev() {
|
|
@@ -395,14 +395,14 @@ export class ThyImagePreview {
|
|
|
395
395
|
this.previewImageWrapperTransform = `translate3d(${this.position.x}px, ${this.position.y}px, 0)`;
|
|
396
396
|
}
|
|
397
397
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThyImagePreview, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
398
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ThyImagePreview, isStandalone: true, selector: "thy-image-preview", outputs: { downloadClicked: "downloadClicked" }, host: { properties: { "class.thy-image-preview-moving": "isDragging" }, classAttribute: "thy-image-preview-wrap" }, viewQueries: [{ propertyName: "imageRef", first: true, predicate: ["imgRef"], descendants: true }, { propertyName: "imagePreviewWrapper", first: true, predicate: ["imagePreviewWrapper"], descendants: true, static: true }], exportAs: ["thyImagePreview"], ngImport: i0, template: "<div class=\"thy-image-preview\" [class.thy-image-preview-fullscreen]=\"isFullScreen\">\n @if (!isFullScreen) {\n <div class=\"thy-image-preview-header pl-10 pr-8\">\n <div class=\"thy-image-preview-header-info\">\n <p class=\"thy-image-name text-truncate\" [thyTooltipDisabled]=\"previewImage?.name?.length < 32\" [thyTooltip]=\"previewImage?.name\">\n {{ previewImage?.name }}\n </p>\n <span class=\"thy-image-size\"> {{ previewImage?.size }}</span>\n </div>\n <a thyAction thyIcon=\"close\" thyTooltip=\"\
|
|
398
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ThyImagePreview, isStandalone: true, selector: "thy-image-preview", outputs: { downloadClicked: "downloadClicked" }, host: { properties: { "class.thy-image-preview-moving": "isDragging" }, classAttribute: "thy-image-preview-wrap" }, viewQueries: [{ propertyName: "imageRef", first: true, predicate: ["imgRef"], descendants: true }, { propertyName: "imagePreviewWrapper", first: true, predicate: ["imagePreviewWrapper"], descendants: true, static: true }], exportAs: ["thyImagePreview"], ngImport: i0, template: "<div class=\"thy-image-preview\" [class.thy-image-preview-fullscreen]=\"isFullScreen\">\n @if (!isFullScreen) {\n <div class=\"thy-image-preview-header pl-10 pr-8\">\n <div class=\"thy-image-preview-header-info\">\n <p class=\"thy-image-name text-truncate\" [thyTooltipDisabled]=\"previewImage?.name?.length < 32\" [thyTooltip]=\"previewImage?.name\">\n {{ previewImage?.name }}\n </p>\n <span class=\"thy-image-size\"> {{ previewImage?.size }}</span>\n </div>\n <a thyAction thyIcon=\"close\" [thyTooltip]=\"locale().exitPreview\" href=\"javascript:;\" (click)=\"thyDialog.close()\"></a>\n </div>\n }\n @if (isFullScreen) {\n <a\n class=\"thy-image-preview-exit-fullscreen\"\n thyAction\n thyIcon=\"close\"\n href=\"javascript:;\"\n (click)=\"thyFullscreen.exit()\"\n [thyTooltip]=\"locale().exitFullScreen\"></a>\n }\n <div\n class=\"thy-image-preview-img-wrapper\"\n #imagePreviewWrapper\n cdkDrag\n [class.thy-image-preview-inside]=\"isInsideScreen\"\n [style.transform]=\"previewImageWrapperTransform\"\n [cdkDragFreeDragPosition]=\"position\"\n (cdkDragReleased)=\"dragReleased()\">\n @for (image of images; track $index; let imageIndex = $index) {\n @if (previewIndex === imageIndex && isLoadingDone) {\n <img #imgRef class=\"thy-image-preview-img\" [src]=\"image.objectURL || image.src\" [style.transform]=\"previewImageTransform\" />\n }\n }\n <thy-loading [thyDone]=\"isLoadingDone\"></thy-loading>\n </div>\n\n @if (images.length > 1 && !isFullScreen) {\n <div\n class=\"thy-image-preview-switch-left\"\n [thyTooltipDisabled]=\"previewIndex <= 0\"\n [thyTooltip]=\"locale().prev\"\n [class.thy-image-preview-switch-left-disabled]=\"previewIndex <= 0\"\n (click)=\"prev()\">\n <thy-icon thyIconName=\"angle-left-bold\"></thy-icon>\n </div>\n <div\n class=\"thy-image-preview-switch-right\"\n [thyTooltip]=\"locale().next\"\n [thyTooltipDisabled]=\"previewIndex >= images.length - 1\"\n [class.thy-image-preview-switch-right-disabled]=\"previewIndex >= images.length - 1\"\n (click)=\"next()\">\n <thy-icon thyIconName=\"angle-right-bold\"> </thy-icon>\n </div>\n }\n @if (!isFullScreen) {\n <thy-actions thySize=\"xs\" class=\"thy-image-preview-operations py-3 px-4\">\n @for (option of previewOperations; track $index; let i = $index) {\n @if (!['original-scale', 'fit-screen', 'copyLink'].includes(option.type) || currentImageMode === option.type) {\n <a\n href=\"javascript:;\"\n thyAction\n [thyActionIcon]=\"option.icon\"\n [thyTooltip]=\"option.name\"\n [thyTooltipOffset]=\"13\"\n (click)=\"option.action(previewImage)\"></a>\n }\n @if (option?.type === 'zoom-out') {\n <span class=\"mr-2\"> {{ (zoom * 100).toFixed(0) + '%' }} </span>\n }\n @if (option?.type === 'rotate-right') {\n <thy-divider class=\"ml-2\" [thyVertical]=\"true\"></thy-divider>\n }\n @if (option.type === 'copyLink') {\n <a\n href=\"javascript:;\"\n thyAction\n [thyCopyTips]=\"option.name\"\n [thyActionIcon]=\"option.icon\"\n [thyCopyTipsOffset]=\"13\"\n (thyCopy)=\"copyLink($event)\"\n [thyCopyContent]=\"previewImageOriginSrc\"\n [thyShowNotify]=\"false\"></a>\n }\n }\n <thy-divider [thyVertical]=\"true\"></thy-divider>\n <span class=\"thy-image-preview-operations-text\"> {{ previewIndex + 1 }} / {{ images.length }} </span>\n </thy-actions>\n }\n</div>\n", dependencies: [{ kind: "directive", type: ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: ThyAction, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: ThyLoading, selector: "thy-loading", inputs: ["thyDone", "thyTip", "thyIsMask"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "component", type: ThyActions, selector: "thy-actions", inputs: ["thySize"] }, { kind: "component", type: ThyDivider, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }, { kind: "directive", type: ThyCopyDirective, selector: "[thyCopy]", inputs: ["thyCopySuccessText", "thyCopyTips", "thyCopyTipsOffset", "thyCopyContent", "thyShowNotify"], outputs: ["thyCopy"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
399
399
|
}
|
|
400
400
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThyImagePreview, decorators: [{
|
|
401
401
|
type: Component,
|
|
402
402
|
args: [{ selector: 'thy-image-preview', exportAs: 'thyImagePreview', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
403
403
|
class: 'thy-image-preview-wrap',
|
|
404
404
|
'[class.thy-image-preview-moving]': 'isDragging'
|
|
405
|
-
}, standalone: true, imports: [ThyTooltipDirective, ThyAction, CdkDrag, ThyLoading, ThyIcon, ThyActions, ThyDivider, ThyCopyDirective], template: "<div class=\"thy-image-preview\" [class.thy-image-preview-fullscreen]=\"isFullScreen\">\n @if (!isFullScreen) {\n <div class=\"thy-image-preview-header pl-10 pr-8\">\n <div class=\"thy-image-preview-header-info\">\n <p class=\"thy-image-name text-truncate\" [thyTooltipDisabled]=\"previewImage?.name?.length < 32\" [thyTooltip]=\"previewImage?.name\">\n {{ previewImage?.name }}\n </p>\n <span class=\"thy-image-size\"> {{ previewImage?.size }}</span>\n </div>\n <a thyAction thyIcon=\"close\" thyTooltip=\"\
|
|
405
|
+
}, standalone: true, imports: [ThyTooltipDirective, ThyAction, CdkDrag, ThyLoading, ThyIcon, ThyActions, ThyDivider, ThyCopyDirective], template: "<div class=\"thy-image-preview\" [class.thy-image-preview-fullscreen]=\"isFullScreen\">\n @if (!isFullScreen) {\n <div class=\"thy-image-preview-header pl-10 pr-8\">\n <div class=\"thy-image-preview-header-info\">\n <p class=\"thy-image-name text-truncate\" [thyTooltipDisabled]=\"previewImage?.name?.length < 32\" [thyTooltip]=\"previewImage?.name\">\n {{ previewImage?.name }}\n </p>\n <span class=\"thy-image-size\"> {{ previewImage?.size }}</span>\n </div>\n <a thyAction thyIcon=\"close\" [thyTooltip]=\"locale().exitPreview\" href=\"javascript:;\" (click)=\"thyDialog.close()\"></a>\n </div>\n }\n @if (isFullScreen) {\n <a\n class=\"thy-image-preview-exit-fullscreen\"\n thyAction\n thyIcon=\"close\"\n href=\"javascript:;\"\n (click)=\"thyFullscreen.exit()\"\n [thyTooltip]=\"locale().exitFullScreen\"></a>\n }\n <div\n class=\"thy-image-preview-img-wrapper\"\n #imagePreviewWrapper\n cdkDrag\n [class.thy-image-preview-inside]=\"isInsideScreen\"\n [style.transform]=\"previewImageWrapperTransform\"\n [cdkDragFreeDragPosition]=\"position\"\n (cdkDragReleased)=\"dragReleased()\">\n @for (image of images; track $index; let imageIndex = $index) {\n @if (previewIndex === imageIndex && isLoadingDone) {\n <img #imgRef class=\"thy-image-preview-img\" [src]=\"image.objectURL || image.src\" [style.transform]=\"previewImageTransform\" />\n }\n }\n <thy-loading [thyDone]=\"isLoadingDone\"></thy-loading>\n </div>\n\n @if (images.length > 1 && !isFullScreen) {\n <div\n class=\"thy-image-preview-switch-left\"\n [thyTooltipDisabled]=\"previewIndex <= 0\"\n [thyTooltip]=\"locale().prev\"\n [class.thy-image-preview-switch-left-disabled]=\"previewIndex <= 0\"\n (click)=\"prev()\">\n <thy-icon thyIconName=\"angle-left-bold\"></thy-icon>\n </div>\n <div\n class=\"thy-image-preview-switch-right\"\n [thyTooltip]=\"locale().next\"\n [thyTooltipDisabled]=\"previewIndex >= images.length - 1\"\n [class.thy-image-preview-switch-right-disabled]=\"previewIndex >= images.length - 1\"\n (click)=\"next()\">\n <thy-icon thyIconName=\"angle-right-bold\"> </thy-icon>\n </div>\n }\n @if (!isFullScreen) {\n <thy-actions thySize=\"xs\" class=\"thy-image-preview-operations py-3 px-4\">\n @for (option of previewOperations; track $index; let i = $index) {\n @if (!['original-scale', 'fit-screen', 'copyLink'].includes(option.type) || currentImageMode === option.type) {\n <a\n href=\"javascript:;\"\n thyAction\n [thyActionIcon]=\"option.icon\"\n [thyTooltip]=\"option.name\"\n [thyTooltipOffset]=\"13\"\n (click)=\"option.action(previewImage)\"></a>\n }\n @if (option?.type === 'zoom-out') {\n <span class=\"mr-2\"> {{ (zoom * 100).toFixed(0) + '%' }} </span>\n }\n @if (option?.type === 'rotate-right') {\n <thy-divider class=\"ml-2\" [thyVertical]=\"true\"></thy-divider>\n }\n @if (option.type === 'copyLink') {\n <a\n href=\"javascript:;\"\n thyAction\n [thyCopyTips]=\"option.name\"\n [thyActionIcon]=\"option.icon\"\n [thyCopyTipsOffset]=\"13\"\n (thyCopy)=\"copyLink($event)\"\n [thyCopyContent]=\"previewImageOriginSrc\"\n [thyShowNotify]=\"false\"></a>\n }\n }\n <thy-divider [thyVertical]=\"true\"></thy-divider>\n <span class=\"thy-image-preview-operations-text\"> {{ previewIndex + 1 }} / {{ images.length }} </span>\n </thy-actions>\n }\n</div>\n" }]
|
|
406
406
|
}], propDecorators: { downloadClicked: [{
|
|
407
407
|
type: Output
|
|
408
408
|
}], imageRef: [{
|
|
@@ -412,4 +412,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
412
412
|
type: ViewChild,
|
|
413
413
|
args: ['imagePreviewWrapper', { static: true }]
|
|
414
414
|
}] } });
|
|
415
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvaW1hZ2UvcHJldmlldy9pbWFnZS1wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9pbWFnZS9wcmV2aWV3L2ltYWdlLXByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpELE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBRU4sTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0IsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9C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R0FBRSxPQUFPLHNNQUFFLFVBQVUsNkVBQUUsVUFBVSxxSkFBRSxnQkFBZ0I7OzRGQUV2RyxlQUFlO2tCQWIzQixTQUFTOytCQUNJLG1CQUFtQixZQUNuQixpQkFBaUIsbUJBRVYsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDRixLQUFLLEVBQUUsd0JBQXdCO3dCQUMvQixrQ0FBa0MsRUFBRSxZQUFZO3FCQUNuRCxjQUNXLElBQUksV0FDUCxDQUFDLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixDQUFDOzhCQVl2RyxlQUFlO3NCQUF4QixNQUFNO2dCQXNIaUMsUUFBUTtzQkFBL0MsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNjLG1CQUFtQjtzQkFBdEUsU0FBUzt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5cbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgTmdab25lLFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2lnbmFsLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFRoeUFjdGlvbiwgVGh5QWN0aW9ucyB9IGZyb20gJ25neC10ZXRoeXMvYWN0aW9uJztcbmltcG9ydCB7IFRoeUNvcHlEaXJlY3RpdmUsIFRoeUNvcHlFdmVudCB9IGZyb20gJ25neC10ZXRoeXMvY29weSc7XG5pbXBvcnQgeyBUaHlEaWFsb2cgfSBmcm9tICduZ3gtdGV0aHlzL2RpYWxvZyc7XG5pbXBvcnQgeyBUaHlEaXZpZGVyIH0gZnJvbSAnbmd4LXRldGh5cy9kaXZpZGVyJztcbmltcG9ydCB7IFRoeUZ1bGxzY3JlZW4gfSBmcm9tICduZ3gtdGV0aHlzL2Z1bGxzY3JlZW4nO1xuaW1wb3J0IHsgVGh5SWNvbiB9IGZyb20gJ25neC10ZXRoeXMvaWNvbic7XG5pbXBvcnQgeyBUaHlMb2FkaW5nIH0gZnJvbSAnbmd4LXRldGh5cy9sb2FkaW5nJztcbmltcG9ydCB7IFRoeU5vdGlmeVNlcnZpY2UgfSBmcm9tICduZ3gtdGV0aHlzL25vdGlmeSc7XG5pbXBvcnQgeyBUaHlUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnbmd4LXRldGh5cy90b29sdGlwJztcbmltcG9ydCB7IGdldENsaWVudFNpemUsIGdldEZpdENvbnRlbnRQb3NpdGlvbiwgZ2V0T2Zmc2V0LCBoZWxwZXJzLCBodW1hbml6ZUJ5dGVzLCBpc051bWJlciwgaXNVbmRlZmluZWRPck51bGwgfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbnRlcm5hbEltYWdlSW5mbywgVGh5SW1hZ2VJbmZvLCBUaHlJbWFnZVByZXZpZXdNb2RlLCBUaHlJbWFnZVByZXZpZXdPcGVyYXRpb24sIFRoeUltYWdlUHJldmlld09wdGlvbnMgfSBmcm9tICcuLi9pbWFnZS5jbGFzcyc7XG5pbXBvcnQgeyBmZXRjaEltYWdlQmxvYiB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGluamVjdExvY2FsZSwgVGh5SW1hZ2VMb2NhbGUgfSBmcm9tICduZ3gtdGV0aHlzL2kxOG4nO1xuXG5jb25zdCBpbml0aWFsUG9zaXRpb24gPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG59O1xuY29uc3QgSU1BR0VfTUFYX1pPT00gPSAzO1xuY29uc3QgSU1BR0VfTUlOX1pPT00gPSAwLjE7XG5jb25zdCBIT1JJWk9OVEFMX1NQQUNFID0gMTAwICogMjsgLy8gbGVmdDogMTAwcHg7IHJpZ2h0OiAxMDBweFxuY29uc3QgVkVSVElDQUxfU1BBQ0UgPSA5NiArIDEwNjsgLy8gdG9wOiA5NnB4OyBib3R0b206IDEwNnB4XG5cbi8qKlxuICog5Zu+54mH6aKE6KeI57uE5Lu2XG4gKiBAbmFtZSB0aHktaW1hZ2UtcHJldmlld1xuICogQG9yZGVyIDIwXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LWltYWdlLXByZXZpZXcnLFxuICAgIGV4cG9ydEFzOiAndGh5SW1hZ2VQcmV2aWV3JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW1hZ2UtcHJldmlldy5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAndGh5LWltYWdlLXByZXZpZXctd3JhcCcsXG4gICAgICAgICdbY2xhc3MudGh5LWltYWdlLXByZXZpZXctbW92aW5nXSc6ICdpc0RyYWdnaW5nJ1xuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbVGh5VG9vbHRpcERpcmVjdGl2ZSwgVGh5QWN0aW9uLCBDZGtEcmFnLCBUaHlMb2FkaW5nLCBUaHlJY29uLCBUaHlBY3Rpb25zLCBUaHlEaXZpZGVyLCBUaHlDb3B5RGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlJbWFnZVByZXZpZXcgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHRoeURpYWxvZyA9IGluamVjdChUaHlEaWFsb2cpO1xuICAgIHRoeUZ1bGxzY3JlZW4gPSBpbmplY3QoVGh5RnVsbHNjcmVlbik7XG4gICAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHByaXZhdGUgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG4gICAgcHJpdmF0ZSBub3RpZnlTZXJ2aWNlID0gaW5qZWN0KFRoeU5vdGlmeVNlcnZpY2UpO1xuICAgIHByaXZhdGUgaG9zdCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXIgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcbiAgICBwcml2YXRlIGxvY2FsZTogU2lnbmFsPFRoeUltYWdlTG9jYWxlPiA9IGluamVjdExvY2FsZSgnaW1hZ2UnKTtcblxuICAgIEBPdXRwdXQoKSBkb3dubG9hZENsaWNrZWQ6IEV2ZW50RW1pdHRlcjxUaHlJbWFnZUluZm8+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgaW1hZ2VzOiBJbnRlcm5hbEltYWdlSW5mb1tdID0gW107XG4gICAgcHJldmlld0luZGV4OiBudW1iZXIgPSAwO1xuICAgIHByZXZpZXdDb25maWc6IFRoeUltYWdlUHJldmlld09wdGlvbnM7XG4gICAgcHJldmlld0ltYWdlVHJhbnNmb3JtID0gJyc7XG4gICAgcHJldmlld0ltYWdlV3JhcHBlclRyYW5zZm9ybSA9ICcnO1xuICAgIHpvb21EaXNhYmxlZCA9IGZhbHNlO1xuICAgIHpvb206IG51bWJlciA9IDE7XG4gICAgcG9zaXRpb24gPSB7IC4uLmluaXRpYWxQb3NpdGlvbiB9O1xuICAgIGlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICBpc0xvYWRpbmdEb25lID0gZmFsc2U7XG4gICAgaXNGdWxsU2NyZWVuID0gZmFsc2U7XG4gICAgaXNJbnNpZGVTY3JlZW4gPSB0cnVlO1xuICAgIGN1cnJlbnRJbWFnZU1vZGU6IFRoeUltYWdlUHJldmlld01vZGUgPSAnb3JpZ2luYWwtc2NhbGUnO1xuICAgIHByZXZpZXdPcGVyYXRpb25zOiBUaHlJbWFnZVByZXZpZXdPcGVyYXRpb25bXTtcbiAgICBkZWZhdWx0UHJldmlld09wZXJhdGlvbnM6IFRoeUltYWdlUHJldmlld09wZXJhdGlvbltdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBpY29uOiAnem9vbS1vdXQnLFxuICAgICAgICAgICAgbmFtZTogdGhpcy5sb2NhbGUoKS56b29tT3V0LFxuICAgICAgICAgICAgYWN0aW9uOiAoaW1hZ2U6IFRoeUltYWdlSW5mbykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuem9vbU91dCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHR5cGU6ICd6b29tLW91dCdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWNvbjogJ3pvb20taW4nLFxuICAgICAgICAgICAgbmFtZTogdGhpcy5sb2NhbGUoKS56b29tSW4sXG4gICAgICAgICAgICBhY3Rpb246IChpbWFnZTogVGh5SW1hZ2VJbmZvKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy56b29tSW4oKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0eXBlOiAnem9vbS1pbidcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWNvbjogJ29uZS10by1vbmUnLFxuICAgICAgICAgICAgbmFtZTogdGhpcy5sb2NhbGUoKS5vcmlnaW5hbFNpemUsXG4gICAgICAgICAgICBhY3Rpb246IChpbWFnZTogVGh5SW1hZ2VJbmZvKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRPcmlnaW5hbFNpemUoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0eXBlOiAnb3JpZ2luYWwtc2NhbGUnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGljb246ICdtYXgtdmlldycsXG4gICAgICAgICAgICBuYW1lOiB0aGlzLmxvY2FsZSgpLmZpdFRvU2NyZWVuLFxuICAgICAgICAgICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGaXRTY3JlZW4oKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0eXBlOiAnZml0LXNjcmVlbidcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWNvbjogJ2V4cGFuZC1hcnJvd3MnLFxuICAgICAgICAgICAgbmFtZTogdGhpcy5sb2NhbGUoKS5mdWxsU2NyZWVuLFxuICAgICAgICAgICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mdWxsU2NyZWVuKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHlwZTogJ2Z1bGwtc2NyZWVuJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpY29uOiAncm90YXRlLXJpZ2h0JyxcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubG9jYWxlKCkuc3BpbixcbiAgICAgICAgICAgIGFjdGlvbjogKGltYWdlOiBUaHlJbWFnZUluZm8pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvdGF0ZVJpZ2h0KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHlwZTogJ3JvdGF0ZS1yaWdodCdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWNvbjogJ2Rvd25sb2FkJyxcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubG9jYWxlKCkuZG93bmxvYWQsXG4gICAgICAgICAgICBhY3Rpb246IChpbWFnZTogVGh5SW1hZ2VJbmZvKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZChpbWFnZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHlwZTogJ2Rvd25sb2FkJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpY29uOiAncHJldmlldycsXG4gICAgICAgICAgICBuYW1lOiB0aGlzLmxvY2FsZSgpLnZpZXdPcmlnaW5hbCxcbiAgICAgICAgICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudmlld09yaWdpbmFsKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHlwZTogJ3ZpZXctb3JpZ2luYWwnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGljb246ICdsaW5rLWluc2VydCcsXG4gICAgICAgICAgICBuYW1lOiB0aGlzLmxvY2FsZSgpLmNvcHlMaW5rLFxuICAgICAgICAgICAgdHlwZTogJ2NvcHlMaW5rJ1xuICAgICAgICB9XG4gICAgXTtcblxuICAgIHByaXZhdGUgcm90YXRlOiBudW1iZXI7XG5cbiAgICBnZXQgcHJldmlld0ltYWdlKCk6IEludGVybmFsSW1hZ2VJbmZvIHtcbiAgICAgICAgY29uc3QgaW1hZ2UgPSB0aGlzLmltYWdlc1t0aGlzLnByZXZpZXdJbmRleF07XG4gICAgICAgIGlmIChpbWFnZS5zaXplKSB7XG4gICAgICAgICAgICBpbWFnZS5zaXplID0gaXNOdW1iZXIoaW1hZ2Uuc2l6ZSkgPyBodW1hbml6ZUJ5dGVzKGltYWdlLnNpemUpIDogaW1hZ2Uuc2l6ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW1hZ2U7XG4gICAgfVxuXG4gICAgZ2V0IHByZXZpZXdJbWFnZU9yaWdpblNyYygpIHtcbiAgICAgICAgbGV0IGltYWdlU3JjID0gdGhpcy5wcmV2aWV3SW1hZ2Uub3JpZ2luPy5zcmMgfHwgdGhpcy5wcmV2aWV3SW1hZ2Uuc3JjO1xuICAgICAgICBpZiAoaW1hZ2VTcmMuc3RhcnRzV2l0aCgnLi8nKSkge1xuICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsgJy8nICsgaW1hZ2VTcmMuc3BsaXQoJy4vJylbMV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGltYWdlU3JjO1xuICAgIH1cblxuICAgIGdldCBkZWZhdWx0Wm9vbSgpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5wcmV2aWV3Q29uZmlnPy56b29tICYmIHRoaXMucHJldmlld0NvbmZpZz8uem9vbSA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByZXZpZXdDb25maWcuem9vbSA+PSBJTUFHRV9NQVhfWk9PTVxuICAgICAgICAgICAgICAgID8gSU1BR0VfTUFYX1pPT01cbiAgICAgICAgICAgICAgICA6IHRoaXMucHJldmlld0NvbmZpZy56b29tIDw9IElNQUdFX01JTl9aT09NXG4gICAgICAgICAgICAgICAgICA/IElNQUdFX01JTl9aT09NXG4gICAgICAgICAgICAgICAgICA6IHRoaXMucHJldmlld0NvbmZpZy56b29tO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZCgnaW1nUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pIGltYWdlUmVmITogRWxlbWVudFJlZjxIVE1MSW1hZ2VFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCdpbWFnZVByZXZpZXdXcmFwcGVyJywgeyBzdGF0aWM6IHRydWUgfSkgaW1hZ2VQcmV2aWV3V3JhcHBlciE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdFByZXZpZXcoKTtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LCAnY2xpY2snKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoZXZlbnQudGFyZ2V0ID09PSBldmVudC5jdXJyZW50VGFyZ2V0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaXNJbnNpZGVTY3JlZW4gJiYgdGhpcy5pbWFnZVByZXZpZXdXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhdGhpcy5wcmV2aWV3Q29uZmlnPy5kaXNhYmxlQ2xvc2VcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gIXRoaXMuaXNGdWxsU2NyZWVuICYmIHRoaXMudGh5RGlhbG9nLmNsb3NlKCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGZyb21FdmVudCh0aGlzLmltYWdlUHJldmlld1dyYXBwZXIubmF0aXZlRWxlbWVudCwgJ21vdXNlZG93bicpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNEcmFnZ2luZyA9ICF0aGlzLmlzSW5zaWRlU2NyZWVuICYmIHRydWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldE9yaWdpbmFsU2l6ZSgpIHtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICB0aGlzLmN1cnJlbnRJbWFnZU1vZGUgPSAnZml0LXNjcmVlbic7XG4gICAgICAgIHRoaXMuem9vbSA9IDE7XG4gICAgICAgIHRoaXMudXBkYXRlUHJldmlld0ltYWdlVHJhbnNmb3JtKCk7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlSW5zaWRlU2NyZWVuKCk7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nRG9uZSA9IHRydWU7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBzZXRGaXRTY3JlZW4oKSB7XG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgdGhpcy5pc0luc2lkZVNjcmVlbiA9IHRydWU7XG4gICAgICAgIHRoaXMudXBkYXRlUHJldmlld0ltYWdlKCk7XG4gICAgfVxuXG4gICAgdXNlRGVmYXVsdFpvb21VcGRhdGUoaXNVcGRhdGVJbWFnZVdyYXBwZXI6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy56b29tID0gdGhpcy5kZWZhdWx0Wm9vbTtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmdEb25lID0gdHJ1ZTtcbiAgICAgICAgdGhpcy51cGRhdGVQcmV2aWV3SW1hZ2VUcmFuc2Zvcm0oKTtcbiAgICAgICAgaWYgKGlzVXBkYXRlSW1hZ2VXcmFwcGVyKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVByZXZpZXdJbWFnZVdyYXBwZXJUcmFuc2Zvcm0oKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgdXNlQ2FsY3VsYXRlWm9vbVVwZGF0ZShpc1VwZGF0ZUltYWdlV3JhcHBlcj86IGJvb2xlYW4pIHtcbiAgICAgICAgbGV0IGltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICBpbWcuc3JjID0gdGhpcy5wcmV2aWV3SW1hZ2Uuc3JjO1xuICAgICAgICBpbWcub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyB3aWR0aDogb2Zmc2V0V2lkdGgsIGhlaWdodDogb2Zmc2V0SGVpZ2h0IH0gPSBnZXRDbGllbnRTaXplKCk7XG4gICAgICAgICAgICBjb25zdCBpbm5lcldpZHRoID0gb2Zmc2V0V2lkdGggLSBIT1JJWk9OVEFMX1NQQUNFO1xuICAgICAgICAgICAgY29uc3QgaW5uZXJIZWlnaHQgPSBvZmZzZXRIZWlnaHQgLSBWRVJUSUNBTF9TUEFDRTtcbiAgICAgICAgICAgIGNvbnN0IHsgbmF0dXJhbFdpZHRoLCBuYXR1cmFsSGVpZ2h0IH0gPSBpbWc7XG4gICAgICAgICAgICBjb25zdCB4UmF0aW8gPSBpbm5lcldpZHRoIC8gbmF0dXJhbFdpZHRoO1xuICAgICAgICAgICAgY29uc3QgeVJhdGlvID0gaW5uZXJIZWlnaHQgLyBuYXR1cmFsSGVpZ2h0O1xuICAgICAgICAgICAgY29uc3Qgem9vbSA9IE1hdGgubWluKHhSYXRpbywgeVJhdGlvKTtcbiAgICAgICAgICAgIGlmICh6b29tID4gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuem9vbSA9IDE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuem9vbSA9IHpvb207XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZ0RvbmUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQcmV2aWV3SW1hZ2VUcmFuc2Zvcm0oKTtcbiAgICAgICAgICAgIGlmIChpc1VwZGF0ZUltYWdlV3JhcHBlcikge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUHJldmlld0ltYWdlV3JhcHBlclRyYW5zZm9ybSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHVwZGF0ZVByZXZpZXdJbWFnZSgpIHtcbiAgICAgICAgdGhpcy5yZXNvbHZlUHJldmlld0ltYWdlKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgICAgIC8vIGVycm9yXG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdEb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBpbWFnZSBzaXplXG4gICAgICAgICAgICBpZiAoIXRoaXMucHJldmlld0ltYWdlLnNpemUgJiYgdGhpcy5wcmV2aWV3SW1hZ2UuYmxvYikge1xuICAgICAgICAgICAgICAgIHRoaXMucHJldmlld0ltYWdlLnNpemUgPSBodW1hbml6ZUJ5dGVzKHRoaXMucHJldmlld0ltYWdlLmJsb2Iuc2l6ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0Wm9vbSkge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlRGVmYXVsdFpvb21VcGRhdGUodHJ1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlQ2FsY3VsYXRlWm9vbVVwZGF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXNvbHZlUHJldmlld0ltYWdlKCkge1xuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8Qm9vbGVhbj4oc3Vic2NyaWJlciA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2aWV3SW1hZ2Uuc3JjLnN0YXJ0c1dpdGgoJ2Jsb2I6JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdJbWFnZS5vYmplY3RVUkwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKHRoaXMucHJldmlld0ltYWdlLnNyYyk7XG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2aWV3SW1hZ2Uub2JqZWN0VVJMIHx8ICF0aGlzLnByZXZpZXdDb25maWcucmVzb2x2ZVNpemUpIHtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmZXRjaEltYWdlQmxvYih0aGlzLnByZXZpZXdJbWFnZS5zcmMpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgYmxvYiA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmxDcmVhdG9yID0gd2luZG93LlVSTCB8fCB3aW5kb3cud2Via2l0VVJMO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2JqZWN0VVJMID0gdXJsQ3JlYXRvci5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdJbWFnZS5vYmplY3RVUkwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKG9iamVjdFVSTCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdJbWFnZS5ibG9iID0gYmxvYjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGluaXRQcmV2aWV3KCkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnByZXZpZXdDb25maWc/Lm9wZXJhdGlvbnMpICYmIHRoaXMucHJldmlld0NvbmZpZz8ub3BlcmF0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRPcGVyYXRpb25zTWFwID0gaGVscGVycy5rZXlCeSh0aGlzLmRlZmF1bHRQcmV2aWV3T3BlcmF0aW9ucywgJ3R5cGUnKTtcbiAgICAgICAgICAgIHRoaXMucHJldmlld09wZXJhdGlvbnMgPSB0aGlzLnByZXZpZXdDb25maWc/Lm9wZXJhdGlvbnMubWFwKG9wZXJhdGlvbiA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGhlbHBlcnMuaXNTdHJpbmcob3BlcmF0aW9uKSAmJiBkZWZhdWx0T3BlcmF0aW9uc01hcFtvcGVyYXRpb25dKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0T3BlcmF0aW9uc01hcFtvcGVyYXRpb25dO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb24gYXMgVGh5SW1hZ2VQcmV2aWV3T3BlcmF0aW9uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3T3BlcmF0aW9ucyA9IHRoaXMuZGVmYXVsdFByZXZpZXdPcGVyYXRpb25zO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucm90YXRlID0gdGhpcy5wcmV2aWV3Q29uZmlnPy5yb3RhdGUgPz8gMDtcbiAgICAgICAgdGhpcy51cGRhdGVQcmV2aWV3SW1hZ2UoKTtcbiAgICB9XG5cbiAgICBkb3dubG9hZChpbWFnZTogVGh5SW1hZ2VJbmZvKSB7XG4gICAgICAgIHRoaXMuZG93bmxvYWRDbGlja2VkLmVtaXQoaW1hZ2UpO1xuICAgICAgICBjb25zdCBzcmMgPSBpbWFnZS5vcmlnaW4/LnNyYyB8fCBpbWFnZS5zcmM7XG4gICAgICAgIGZldGNoSW1hZ2VCbG9iKHNyYylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShibG9iID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB1cmxDcmVhdG9yID0gd2luZG93LlVSTCB8fCB3aW5kb3cud2Via2l0VVJMO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9iamVjdFVSTCA9IHVybENyZWF0b3IuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgIGxldCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgIGEuZG93bmxvYWQgPSBpbWFnZS5uYW1lIHx8ICdkZWZhdWx0LnBuZyc7XG4gICAgICAgICAgICAgICAgYS5ocmVmID0gb2JqZWN0VVJMO1xuICAgICAgICAgICAgICAgIGEuY2xpY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHpvb21JbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuem9vbSA8IElNQUdFX01BWF9aT09NKSB7XG4gICAgICAgICAgICB0aGlzLnpvb20gPSBNYXRoLm1pbih0aGlzLnpvb20gKyAwLjEsIElNQUdFX01BWF9aT09NKTtcbiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlSW5zaWRlU2NyZWVuKCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVByZXZpZXdJbWFnZVRyYW5zZm9ybSgpO1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHsgLi4uaW5pdGlhbFBvc2l0aW9uIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB6b29tT3V0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy56b29tID4gSU1BR0VfTUlOX1pPT00pIHtcbiAgICAgICAgICAgIHRoaXMuem9vbSA9IE1hdGgubWF4KHRoaXMuem9vbSAtIDAuMSwgSU1BR0VfTUlOX1pPT00pO1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVJbnNpZGVTY3JlZW4oKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUHJldmlld0ltYWdlVHJhbnNmb3JtKCk7XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0geyAuLi5pbml0aWFsUG9zaXRpb24gfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNhbGN1bGF0ZUluc2lkZVNjcmVlbigpIHtcbiAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLmltYWdlUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggKiB0aGlzLnpvb207XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMuaW1hZ2VSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgKiB0aGlzLnpvb207XG4gICAgICAgIGNvbnN0IHsgd2lkdGg6IGNsaWVudFdpZHRoLCBoZWlnaHQ6IGNsaWVudEhlaWdodCB9ID0gZ2V0Q2xpZW50U2l6ZSgpO1xuICAgICAgICBpZiAod2lkdGggPj0gY2xpZW50V2lkdGggfHwgaGVpZ2h0ID49IGNsaWVudEhlaWdodCkge1xuICAgICAgICAgICAgdGhpcy5pc0luc2lkZVNjcmVlbiA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc0luc2lkZVNjcmVlbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2aWV3T3JpZ2luYWwoKSB7XG4gICAgICAgIHdpbmRvdy5vcGVuKHRoaXMucHJldmlld0ltYWdlPy5vcmlnaW4/LnNyYyB8fCB0aGlzLnByZXZpZXdJbWFnZS5zcmMsICdfYmxhbmsnKTtcbiAgICB9XG5cbiAgICByb3RhdGVSaWdodCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3RhdGUgKz0gOTA7XG4gICAgICAgIHRoaXMudXBkYXRlUHJldmlld0ltYWdlVHJhbnNmb3JtKCk7XG4gICAgfVxuXG4gICAgZnVsbFNjcmVlbigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy50aHktaW1hZ2UtcHJldmlldycpO1xuICAgICAgICB0aGlzLmlzRnVsbFNjcmVlbiA9IHRydWU7XG4gICAgICAgIGNvbnN0IGZ1bGxzY3JlZW5SZWYgPSB0aGlzLnRoeUZ1bGxzY3JlZW4ubGF1bmNoKHtcbiAgICAgICAgICAgIHRhcmdldDogdGFyZ2V0RWxlbWVudFxuICAgICAgICB9KTtcbiAgICAgICAgZnVsbHNjcmVlblJlZi5hZnRlckV4aXRlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzRnVsbFNjcmVlbiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvcHlMaW5rKGV2ZW50OiBUaHlDb3B5RXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmlzU3VjY2Vzcykge1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLnN1Y2Nlc3MoJ+WkjeWItuWbvueJh+WcsOWdgOaIkOWKnycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLmVycm9yKCflpI3liLblm77niYflnLDlnYDlpLHotKUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByZXYoKSB7XG4gICAgICAgIGlmICh0aGlzLnByZXZpZXdJbmRleCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMucHJldmlld0luZGV4LS07XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZ0RvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUHJldmlld0ltYWdlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZXh0KCkge1xuICAgICAgICBpZiAodGhpcy5wcmV2aWV3SW5kZXggPCB0aGlzLmltYWdlcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXdJbmRleCsrO1xuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdEb25lID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVByZXZpZXdJbWFnZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhZ1JlbGVhc2VkKCkge1xuICAgICAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLmltYWdlUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggKiB0aGlzLnpvb207XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMuaW1hZ2VSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgKiB0aGlzLnpvb207XG4gICAgICAgIGNvbnN0IHsgbGVmdCwgdG9wIH0gPSBnZXRPZmZzZXQodGhpcy5pbWFnZVJlZi5uYXRpdmVFbGVtZW50LCB3aW5kb3cpO1xuICAgICAgICBjb25zdCB7IHdpZHRoOiBjbGllbnRXaWR0aCwgaGVpZ2h0OiBjbGllbnRIZWlnaHQgfSA9IGdldENsaWVudFNpemUoKTtcbiAgICAgICAgY29uc3QgaXNSb3RhdGUgPSB0aGlzLnJvdGF0ZSAlIDE4MCAhPT0gMDtcbiAgICAgICAgY29uc3QgZml0Q29udGVudFBhcmFtcyA9IHtcbiAgICAgICAgICAgIHdpZHRoOiBpc1JvdGF0ZSA/IGhlaWdodCA6IHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBpc1JvdGF0ZSA/IHdpZHRoIDogaGVpZ2h0LFxuICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgIGNsaWVudFdpZHRoLFxuICAgICAgICAgICAgY2xpZW50SGVpZ2h0XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGZpdENvbnRlbnRQb3MgPSBnZXRGaXRDb250ZW50UG9zaXRpb24oZml0Q29udGVudFBhcmFtcyk7XG4gICAgICAgIGlmICghaXNVbmRlZmluZWRPck51bGwoZml0Q29udGVudFBvcy54KSB8fCAhaXNVbmRlZmluZWRPck51bGwoZml0Q29udGVudFBvcy55KSkge1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHsgLi4udGhpcy5wb3NpdGlvbiwgLi4uZml0Q29udGVudFBvcyB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50SW1hZ2VNb2RlID0gJ29yaWdpbmFsLXNjYWxlJztcbiAgICAgICAgdGhpcy5yb3RhdGUgPSB0aGlzLnByZXZpZXdDb25maWc/LnJvdGF0ZSA/PyAwO1xuICAgICAgICB0aGlzLnBvc2l0aW9uID0geyAuLi5pbml0aWFsUG9zaXRpb24gfTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlUHJldmlld0ltYWdlVHJhbnNmb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByZXZpZXdJbWFnZVRyYW5zZm9ybSA9IGBzY2FsZTNkKCR7dGhpcy56b29tfSwgJHt0aGlzLnpvb219LCAxKSByb3RhdGUoJHt0aGlzLnJvdGF0ZX1kZWcpYDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVByZXZpZXdJbWFnZVdyYXBwZXJUcmFuc2Zvcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJldmlld0ltYWdlV3JhcHBlclRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgke3RoaXMucG9zaXRpb24ueH1weCwgJHt0aGlzLnBvc2l0aW9uLnl9cHgsIDApYDtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidGh5LWltYWdlLXByZXZpZXdcIiBbY2xhc3MudGh5LWltYWdlLXByZXZpZXctZnVsbHNjcmVlbl09XCJpc0Z1bGxTY3JlZW5cIj5cbiAgQGlmICghaXNGdWxsU2NyZWVuKSB7XG4gICAgPGRpdiBjbGFzcz1cInRoeS1pbWFnZS1wcmV2aWV3LWhlYWRlciBwbC0xMCBwci04XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGh5LWltYWdlLXByZXZpZXctaGVhZGVyLWluZm9cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJ0aHktaW1hZ2UtbmFtZSB0ZXh0LXRydW5jYXRlXCIgW3RoeVRvb2x0aXBEaXNhYmxlZF09XCJwcmV2aWV3SW1hZ2U/Lm5hbWU/Lmxlbmd0aCA8IDMyXCIgW3RoeVRvb2x0aXBdPVwicHJldmlld0ltYWdlPy5uYW1lXCI+XG4gICAgICAgICAge3sgcHJldmlld0ltYWdlPy5uYW1lIH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aHktaW1hZ2Utc2l6ZVwiPiB7eyBwcmV2aWV3SW1hZ2U/LnNpemUgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxhIHRoeUFjdGlvbiB0aHlJY29uPVwiY2xvc2VcIiB0aHlUb29sdGlwPVwi6YCA5Ye66aKE6KeIXCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiIChjbGljayk9XCJ0aHlEaWFsb2cuY2xvc2UoKVwiPjwvYT5cbiAgICA8L2Rpdj5cbiAgfVxuICBAaWYgKGlzRnVsbFNjcmVlbikge1xuICAgIDxhXG4gICAgICBjbGFzcz1cInRoeS1pbWFnZS1wcmV2aWV3LWV4aXQtZnVsbHNjcmVlblwiXG4gICAgICB0aHlBY3Rpb25cbiAgICAgIHRoeUljb249XCJjbG9zZVwiXG4gICAgICB0aHlUb29sdGlwPVwi6YCA5Ye66aKE6KeIXCJcbiAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICAgKGNsaWNrKT1cInRoeUZ1bGxzY3JlZW4uZXhpdCgpXCJcbiAgICAgIHRoeVRvb2x0aXA9XCLpgIDlh7rlhajlsY9cIj48L2E+XG4gIH1cbiAgPGRpdlxuICAgIGNsYXNzPVwidGh5LWltYWdlLXByZXZpZXctaW1nLXdyYXBwZXJcIlxuICAgICNpbWFnZVByZXZpZXdXcmFwcGVyXG4gICAgY2RrRHJhZ1xuICAgIFtjbGFzcy50aHktaW1hZ2UtcHJldmlldy1pbnNpZGVdPVwiaXNJbnNpZGVTY3JlZW5cIlxuICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwicHJldmlld0ltYWdlV3JhcHBlclRyYW5zZm9ybVwiXG4gICAgW2Nka0RyYWdGcmVlRHJhZ1Bvc2l0aW9uXT1cInBvc2l0aW9uXCJcbiAgICAoY2RrRHJhZ1JlbGVhc2VkKT1cImRyYWdSZWxlYXNlZCgpXCI+XG4gICAgQGZvciAoaW1hZ2Ugb2YgaW1hZ2VzOyB0cmFjayAkaW5kZXg7IGxldCBpbWFnZUluZGV4ID0gJGluZGV4KSB7XG4gICAgICBAaWYgKHByZXZpZXdJbmRleCA9PT0gaW1hZ2VJbmRleCAmJiBpc0xvYWRpbmdEb25lKSB7XG4gICAgICAgIDxpbWcgI2ltZ1JlZiBjbGFzcz1cInRoeS1pbWFnZS1wcmV2aWV3LWltZ1wiIFtzcmNdPVwiaW1hZ2Uub2JqZWN0VVJMIHx8IGltYWdlLnNyY1wiIFtzdHlsZS50cmFuc2Zvcm1dPVwicHJldmlld0ltYWdlVHJhbnNmb3JtXCIgLz5cbiAgICAgIH1cbiAgICB9XG4gICAgPHRoeS1sb2FkaW5nIFt0aHlEb25lXT1cImlzTG9hZGluZ0RvbmVcIj48L3RoeS1sb2FkaW5nPlxuICA8L2Rpdj5cblxuICBAaWYgKGltYWdlcy5sZW5ndGggPiAxICYmICFpc0Z1bGxTY3JlZW4pIHtcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInRoeS1pbWFnZS1wcmV2aWV3LXN3aXRjaC1sZWZ0XCJcbiAgICAgIFt0aHlUb29sdGlwRGlzYWJsZWRdPVwicHJldmlld0luZGV4IDw9IDBcIlxuICAgICAgdGh5VG9vbHRpcD1cIuS4iuS4gOW8oFwiXG4gICAgICBbY2xhc3MudGh5LWltYWdlLXByZXZpZXctc3dpdGNoLWxlZnQtZGlzYWJsZWRdPVwicHJldmlld0luZGV4IDw9IDBcIlxuICAgICAgKGNsaWNrKT1cInByZXYoKVwiPlxuICAgICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiYW5nbGUtbGVmdC1ib2xkXCI+PC90aHktaWNvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInRoeS1pbWFnZS1wcmV2aWV3LXN3aXRjaC1yaWdodFwiXG4gICAgICB0aHlUb29sdGlwPVwi5LiL5LiA5bygXCJcbiAgICAgIFt0aHlUb29sdGlwRGlzYWJsZWRdPVwicHJldmlld0luZGV4ID49IGltYWdlcy5sZW5ndGggLSAxXCJcbiAgICAgIFtjbGFzcy50aHktaW1hZ2UtcHJldmlldy1zd2l0Y2gtcmlnaHQtZGlzYWJsZWRdPVwicHJldmlld0luZGV4ID49IGltYWdlcy5sZW5ndGggLSAxXCJcbiAgICAgIChjbGljayk9XCJuZXh0KClcIj5cbiAgICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cImFuZ2xlLXJpZ2h0LWJvbGRcIj4gPC90aHktaWNvbj5cbiAgICA8L2Rpdj5cbiAgfVxuICBAaWYgKCFpc0Z1bGxTY3JlZW4pIHtcbiAgICA8dGh5LWFjdGlvbnMgdGh5U2l6ZT1cInhzXCIgY2xhc3M9XCJ0aHktaW1hZ2UtcHJldmlldy1vcGVyYXRpb25zIHB5LTMgcHgtNFwiPlxuICAgICAgQGZvciAob3B0aW9uIG9mIHByZXZpZXdPcGVyYXRpb25zOyB0cmFjayAkaW5kZXg7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgIEBpZiAoIVsnb3JpZ2luYWwtc2NhbGUnLCAnZml0LXNjcmVlbicsICdjb3B5TGluayddLmluY2x1ZGVzKG9wdGlvbi50eXBlKSB8fCBjdXJyZW50SW1hZ2VNb2RlID09PSBvcHRpb24udHlwZSkge1xuICAgICAgICAgIDxhXG4gICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgICAgICAgIHRoeUFjdGlvblxuICAgICAgICAgICAgW3RoeUFjdGlvbkljb25dPVwib3B0aW9uLmljb25cIlxuICAgICAgICAgICAgW3RoeVRvb2x0aXBdPVwib3B0aW9uLm5hbWVcIlxuICAgICAgICAgICAgW3RoeVRvb2x0aXBPZmZzZXRdPVwiMTNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wdGlvbi5hY3Rpb24ocHJldmlld0ltYWdlKVwiPjwvYT5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKG9wdGlvbj8udHlwZSA9PT0gJ3pvb20tb3V0Jykge1xuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXItMlwiPiB7eyAoem9vbSAqIDEwMCkudG9GaXhlZCgwKSArICclJyB9fSA8L3NwYW4+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChvcHRpb24/LnR5cGUgPT09ICdyb3RhdGUtcmlnaHQnKSB7XG4gICAgICAgICAgPHRoeS1kaXZpZGVyIGNsYXNzPVwibWwtMlwiIFt0aHlWZXJ0aWNhbF09XCJ0cnVlXCI+PC90aHktZGl2aWRlcj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKG9wdGlvbi50eXBlID09PSAnY29weUxpbmsnKSB7XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICAgICAgICAgdGh5QWN0aW9uXG4gICAgICAgICAgICBbdGh5Q29weVRpcHNdPVwib3B0aW9uLm5hbWVcIlxuICAgICAgICAgICAgW3RoeUFjdGlvbkljb25dPVwib3B0aW9uLmljb25cIlxuICAgICAgICAgICAgW3RoeUNvcHlUaXBzT2Zmc2V0XT1cIjEzXCJcbiAgICAgICAgICAgICh0aHlDb3B5KT1cImNvcHlMaW5rKCRldmVudClcIlxuICAgICAgICAgICAgW3RoeUNvcHlDb250ZW50XT1cInByZXZpZXdJbWFnZU9yaWdpblNyY1wiXG4gICAgICAgICAgICBbdGh5U2hvd05vdGlmeV09XCJmYWxzZVwiPjwvYT5cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgPHRoeS1kaXZpZGVyIFt0aHlWZXJ0aWNhbF09XCJ0cnVlXCI+PC90aHktZGl2aWRlcj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGh5LWltYWdlLXByZXZpZXctb3BlcmF0aW9ucy10ZXh0XCI+IHt7IHByZXZpZXdJbmRleCArIDEgfX0gLyB7eyBpbWFnZXMubGVuZ3RoIH19IDwvc3Bhbj5cbiAgICA8L3RoeS1hY3Rpb25zPlxuICB9XG48L2Rpdj5cbiJdfQ==
|
|
415
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvaW1hZ2UvcHJldmlldy9pbWFnZS1wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9pbWFnZS9wcmV2aWV3L2ltYWdlLXByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpELE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBRU4sTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0IsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9C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QSw0Q0QvQmMsbUJBQW1CLDhUQUFFLFNBQVMsZ01BQUUsT0FBTyx3Y0FBRSxVQUFVLG9HQUFFLE9BQU8sc01BQUUsVUFBVSw2RUFBRSxVQUFVLHFKQUFFLGdCQUFnQjs7NEZBRXZHLGVBQWU7a0JBYjNCLFNBQVM7K0JBQ0ksbUJBQW1CLFlBQ25CLGlCQUFpQixtQkFFVix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNGLEtBQUssRUFBRSx3QkFBd0I7d0JBQy9CLGtDQUFrQyxFQUFFLFlBQVk7cUJBQ25ELGNBQ1csSUFBSSxXQUNQLENBQUMsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLENBQUM7OEJBWXZHLGVBQWU7c0JBQXhCLE1BQU07Z0JBc0hpQyxRQUFRO3NCQUEvQyxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ2MsbUJBQW1CO3NCQUF0RSxTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWcgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBOZ1pvbmUsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaWduYWwsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgVGh5QWN0aW9uLCBUaHlBY3Rpb25zIH0gZnJvbSAnbmd4LXRldGh5cy9hY3Rpb24nO1xuaW1wb3J0IHsgVGh5Q29weURpcmVjdGl2ZSwgVGh5Q29weUV2ZW50IH0gZnJvbSAnbmd4LXRldGh5cy9jb3B5JztcbmltcG9ydCB7IFRoeURpYWxvZyB9IGZyb20gJ25neC10ZXRoeXMvZGlhbG9nJztcbmltcG9ydCB7IFRoeURpdmlkZXIgfSBmcm9tICduZ3gtdGV0aHlzL2RpdmlkZXInO1xuaW1wb3J0IHsgVGh5RnVsbHNjcmVlbiB9IGZyb20gJ25neC10ZXRoeXMvZnVsbHNjcmVlbic7XG5pbXBvcnQgeyBUaHlJY29uIH0gZnJvbSAnbmd4LXRldGh5cy9pY29uJztcbmltcG9ydCB7IFRoeUxvYWRpbmcgfSBmcm9tICduZ3gtdGV0aHlzL2xvYWRpbmcnO1xuaW1wb3J0IHsgVGh5Tm90aWZ5U2VydmljZSB9IGZyb20gJ25neC10ZXRoeXMvbm90aWZ5JztcbmltcG9ydCB7IFRoeVRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICduZ3gtdGV0aHlzL3Rvb2x0aXAnO1xuaW1wb3J0IHsgZ2V0Q2xpZW50U2l6ZSwgZ2V0Rml0Q29udGVudFBvc2l0aW9uLCBnZXRPZmZzZXQsIGhlbHBlcnMsIGh1bWFuaXplQnl0ZXMsIGlzTnVtYmVyLCBpc1VuZGVmaW5lZE9yTnVsbCB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEludGVybmFsSW1hZ2VJbmZvLCBUaHlJbWFnZUluZm8sIFRoeUltYWdlUHJldmlld01vZGUsIFRoeUltYWdlUHJldmlld09wZXJhdGlvbiwgVGh5SW1hZ2VQcmV2aWV3T3B0aW9ucyB9IGZyb20gJy4uL2ltYWdlLmNsYXNzJztcbmltcG9ydCB7IGZldGNoSW1hZ2VCbG9iIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgaW5qZWN0TG9jYWxlLCBUaHlJbWFnZUxvY2FsZSB9IGZyb20gJ25neC10ZXRoeXMvaTE4bic7XG5cbmNvbnN0IGluaXRpYWxQb3NpdGlvbiA9IHtcbiAgICB4OiAwLFxuICAgIHk6IDBcbn07XG5jb25zdCBJTUFHRV9NQVhfWk9PTSA9IDM7XG5jb25zdCBJTUFHRV9NSU5fWk9PTSA9IDAuMTtcbmNvbnN0IEhPUklaT05UQUxfU1BBQ0UgPSAxMDAgKiAyOyAvLyBsZWZ0OiAxMDBweDsgcmlnaHQ6IDEwMHB4XG5jb25zdCBWRVJUSUNBTF9TUEFDRSA9IDk2ICsgMTA2OyAvLyB0b3A6IDk2cHg7IGJvdHRvbTogMTA2cHhcblxuLyoqXG4gKiDlm77niYfpooTop4jnu4Tku7ZcbiAqIEBuYW1lIHRoeS1pbWFnZS1wcmV2aWV3XG4gKiBAb3JkZXIgMjBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktaW1hZ2UtcHJldmlldycsXG4gICAgZXhwb3J0QXM6ICd0aHlJbWFnZVByZXZpZXcnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbWFnZS1wcmV2aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICd0aHktaW1hZ2UtcHJldmlldy13cmFwJyxcbiAgICAgICAgJ1tjbGFzcy50aHktaW1hZ2UtcHJldmlldy1tb3ZpbmddJzogJ2lzRHJhZ2dpbmcnXG4gICAgfSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtUaHlUb29sdGlwRGlyZWN0aXZlLCBUaHlBY3Rpb24sIENka0RyYWcsIFRoeUxvYWRpbmcsIFRoeUljb24sIFRoeUFjdGlvbnMsIFRoeURpdmlkZXIsIFRoeUNvcHlEaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIFRoeUltYWdlUHJldmlldyBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgdGh5RGlhbG9nID0gaW5qZWN0KFRoeURpYWxvZyk7XG4gICAgdGh5RnVsbHNjcmVlbiA9IGluamVjdChUaHlGdWxsc2NyZWVuKTtcbiAgICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcHJpdmF0ZSBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgICBwcml2YXRlIG5vdGlmeVNlcnZpY2UgPSBpbmplY3QoVGh5Tm90aWZ5U2VydmljZSk7XG4gICAgcHJpdmF0ZSBob3N0ID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgICBwcml2YXRlIHNhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xuICAgIHB1YmxpYyBsb2NhbGU6IFNpZ25hbDxUaHlJbWFnZUxvY2FsZT4gPSBpbmplY3RMb2NhbGUoJ2ltYWdlJyk7XG5cbiAgICBAT3V0cHV0KCkgZG93bmxvYWRDbGlja2VkOiBFdmVudEVtaXR0ZXI8VGh5SW1hZ2VJbmZvPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIGltYWdlczogSW50ZXJuYWxJbWFnZUluZm9bXSA9IFtdO1xuICAgIHByZXZpZXdJbmRleDogbnVtYmVyID0gMDtcbiAgICBwcmV2aWV3Q29uZmlnOiBUaHlJbWFnZVByZXZpZXdPcHRpb25zO1xuICAgIHByZXZpZXdJbWFnZVRyYW5zZm9ybSA9ICcnO1xuICAgIHByZXZpZXdJbWFnZVdyYXBwZXJUcmFuc2Zvcm0gPSAnJztcbiAgICB6b29tRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB6b29tOiBudW1iZXIgPSAxO1xuICAgIHBvc2l0aW9uID0geyAuLi5pbml0aWFsUG9zaXRpb24gfTtcbiAgICBpc0RyYWdnaW5nID0gZmFsc2U7XG4gICAgaXNMb2FkaW5nRG9uZSA9IGZhbHNlO1xuICAgIGlzRnVsbFNjcmVlbiA9IGZhbHNlO1xuICAgIGlzSW5zaWRlU2NyZWVuID0gdHJ1ZTtcbiAgICBjdXJyZW50SW1hZ2VNb2RlOiBUaHlJbWFnZVByZXZpZXdNb2RlID0gJ29yaWdpbmFsLXNjYWxlJztcbiAgICBwcmV2aWV3T3BlcmF0aW9uczogVGh5SW1hZ2VQcmV2aWV3T3BlcmF0aW9uW107XG4gICAgZGVmYXVsdFByZXZpZXdPcGVyYXRpb25zOiBUaHlJbWFnZVByZXZpZXdPcGVyYXRpb25bXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgaWNvbjogJ3pvb20tb3V0JyxcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubG9jYWxlKCkuem9vbU91dCxcbiAgICAgICAgICAgIGFjdGlvbjogKGltYWdlOiBUaHlJbWFnZUluZm8pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnpvb21PdXQoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0eXBlOiAnem9vbS1vdXQnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGljb246ICd6b29tLWluJyxcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubG9jYWxlKCkuem9vbUluLFxuICAgICAgICAgICAgYWN0aW9uOiAoaW1hZ2U6IFRoeUltYWdlSW5mbykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuem9vbUluKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHlwZTogJ3pvb20taW4nXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGljb246ICdvbmUtdG8tb25lJyxcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubG9jYWxlKCkub3JpZ2luYWxTaXplLFxuICAgICAgICAgICAgYWN0aW9uOiAoaW1hZ2U6IFRoeUltYWdlSW5mbykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0T3JpZ2luYWxTaXplKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHlwZTogJ29yaWdpbmFsLXNjYWxlJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpY29uOiAnbWF4LXZpZXcnLFxuICAgICAgICAgICAgbmFtZTogdGhpcy5sb2NhbGUoKS5maXRUb1NjcmVlbixcbiAgICAgICAgICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Rml0U2NyZWVuKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHlwZTogJ2ZpdC1zY3JlZW4nXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGljb246ICdleHBhbmQtYXJyb3dzJyxcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubG9jYWxlKCkuZnVsbFNjcmVlbixcbiAgICAgICAgICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZnVsbFNjcmVlbigpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHR5cGU6ICdmdWxsLXNjcmVlbidcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWNvbjogJ3JvdGF0ZS1yaWdodCcsXG4gICAgICAgICAgICBuYW1lOiB0aGlzLmxvY2FsZSgpLnNwaW4sXG4gICAgICAgICAgICBhY3Rpb246IChpbWFnZTogVGh5SW1hZ2VJbmZvKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3RhdGVSaWdodCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHR5cGU6ICdyb3RhdGUtcmlnaHQnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGljb246ICdkb3dubG9hZCcsXG4gICAgICAgICAgICBuYW1lOiB0aGlzLmxvY2FsZSgpLmRvd25sb2FkLFxuICAgICAgICAgICAgYWN0aW9uOiAoaW1hZ2U6IFRoeUltYWdlSW5mbykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZG93bmxvYWQoaW1hZ2UpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHR5cGU6ICdkb3dubG9hZCdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWNvbjogJ3ByZXZpZXcnLFxuICAgICAgICAgICAgbmFtZTogdGhpcy5sb2NhbGUoKS52aWV3T3JpZ2luYWwsXG4gICAgICAgICAgICBhY3Rpb246ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdPcmlnaW5hbCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHR5cGU6ICd2aWV3LW9yaWdpbmFsJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpY29uOiAnbGluay1pbnNlcnQnLFxuICAgICAgICAgICAgbmFtZTogdGhpcy5sb2NhbGUoKS5jb3B5TGluayxcbiAgICAgICAgICAgIHR5cGU6ICdjb3B5TGluaydcbiAgICAgICAgfVxuICAgIF07XG5cbiAgICBwcml2YXRlIHJvdGF0ZTogbnVtYmVyO1xuXG4gICAgZ2V0IHByZXZpZXdJbWFnZSgpOiBJbnRlcm5hbEltYWdlSW5mbyB7XG4gICAgICAgIGNvbnN0IGltYWdlID0gdGhpcy5pbWFnZXNbdGhpcy5wcmV2aWV3SW5kZXhdO1xuICAgICAgICBpZiAoaW1hZ2Uuc2l6ZSkge1xuICAgICAgICAgICAgaW1hZ2Uuc2l6ZSA9IGlzTnVtYmVyKGltYWdlLnNpemUpID8gaHVtYW5pemVCeXRlcyhpbWFnZS5zaXplKSA6IGltYWdlLnNpemU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGltYWdlO1xuICAgIH1cblxuICAgIGdldCBwcmV2aWV3SW1hZ2VPcmlnaW5TcmMoKSB7XG4gICAgICAgIGxldCBpbWFnZVNyYyA9IHRoaXMucHJldmlld0ltYWdlLm9yaWdpbj8uc3JjIHx8IHRoaXMucHJldmlld0ltYWdlLnNyYztcbiAgICAgICAgaWYgKGltYWdlU3JjLnN0YXJ0c1dpdGgoJy4vJykpIHtcbiAgICAgICAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24uaG9zdCArICcvJyArIGltYWdlU3JjLnNwbGl0KCcuLycpWzFdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbWFnZVNyYztcbiAgICB9XG5cbiAgICBnZXQgZGVmYXVsdFpvb20oKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMucHJldmlld0NvbmZpZz8uem9vbSAmJiB0aGlzLnByZXZpZXdDb25maWc/Lnpvb20gPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcmV2aWV3Q29uZmlnLnpvb20gPj0gSU1BR0VfTUFYX1pPT01cbiAgICAgICAgICAgICAgICA/IElNQUdFX01BWF9aT09NXG4gICAgICAgICAgICAgICAgOiB0aGlzLnByZXZpZXdDb25maWcuem9vbSA8PSBJTUFHRV9NSU5fWk9PTVxuICAgICAgICAgICAgICAgICAgPyBJTUFHRV9NSU5fWk9PTVxuICAgICAgICAgICAgICAgICAgOiB0aGlzLnByZXZpZXdDb25maWcuem9vbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBWaWV3Q2hpbGQoJ2ltZ1JlZicsIHsgc3RhdGljOiBmYWxzZSB9KSBpbWFnZVJlZiE6IEVsZW1lbnRSZWY8SFRNTEltYWdlRWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgnaW1hZ2VQcmV2aWV3V3JhcHBlcicsIHsgc3RhdGljOiB0cnVlIH0pIGltYWdlUHJldmlld1dyYXBwZXIhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluaXRQcmV2aWV3KCk7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGZyb21FdmVudCh0aGlzLmhvc3QubmF0aXZlRWxlbWVudCwgJ2NsaWNrJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZW50LnRhcmdldCA9PT0gZXZlbnQuY3VycmVudFRhcmdldCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmlzSW5zaWRlU2NyZWVuICYmIHRoaXMuaW1hZ2VQcmV2aWV3V3JhcHBlci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMucHJldmlld0NvbmZpZz8uZGlzYWJsZUNsb3NlXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+ICF0aGlzLmlzRnVsbFNjcmVlbiAmJiB0aGlzLnRoeURpYWxvZy5jbG9zZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBmcm9tRXZlbnQodGhpcy5pbWFnZVByZXZpZXdXcmFwcGVyLm5hdGl2ZUVsZW1lbnQsICdtb3VzZWRvd24nKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRHJhZ2dpbmcgPSAhdGhpcy5pc0luc2lkZVNjcmVlbiAmJiB0cnVlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRPcmlnaW5hbFNpemUoKSB7XG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgdGhpcy5jdXJyZW50SW1hZ2VNb2RlID0gJ2ZpdC1zY3JlZW4nO1xuICAgICAgICB0aGlzLnpvb20gPSAxO1xuICAgICAgICB0aGlzLnVwZGF0ZVByZXZpZXdJbWFnZVRyYW5zZm9ybSgpO1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZUluc2lkZVNjcmVlbigpO1xuICAgICAgICB0aGlzLmlzTG9hZGluZ0RvbmUgPSB0cnVlO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgc2V0Rml0U2NyZWVuKCkge1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIHRoaXMuaXNJbnNpZGVTY3JlZW4gPSB0cnVlO1xuICAgICAgICB0aGlzLnVwZGF0ZVByZXZpZXdJbWFnZSgpO1xuICAgIH1cblxuICAgIHVzZURlZmF1bHRab29tVXBkYXRlKGlzVXBkYXRlSW1hZ2VXcmFwcGVyOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuem9vbSA9IHRoaXMuZGVmYXVsdFpvb207XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nRG9uZSA9IHRydWU7XG4gICAgICAgIHRoaXMudXBkYXRlUHJldmlld0ltYWdlVHJhbnNmb3JtKCk7XG4gICAgICAgIGlmIChpc1VwZGF0ZUltYWdlV3JhcHBlcikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQcmV2aWV3SW1hZ2VXcmFwcGVyVHJhbnNmb3JtKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHVzZUNhbGN1bGF0ZVpvb21VcGRhdGUoaXNVcGRhdGVJbWFnZVdyYXBwZXI/OiBib29sZWFuKSB7XG4gICAgICAgIGxldCBpbWcgPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgaW1nLnNyYyA9IHRoaXMucHJldmlld0ltYWdlLnNyYztcbiAgICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgd2lkdGg6IG9mZnNldFdpZHRoLCBoZWlnaHQ6IG9mZnNldEhlaWdodCB9ID0gZ2V0Q2xpZW50U2l6ZSgpO1xuICAgICAgICAgICAgY29uc3QgaW5uZXJXaWR0aCA9IG9mZnNldFdpZHRoIC0gSE9SSVpPTlRBTF9TUEFDRTtcbiAgICAgICAgICAgIGNvbnN0IGlubmVySGVpZ2h0ID0gb2Zmc2V0SGVpZ2h0IC0gVkVSVElDQUxfU1BBQ0U7XG4gICAgICAgICAgICBjb25zdCB7IG5hdHVyYWxXaWR0aCwgbmF0dXJhbEhlaWdodCB9ID0gaW1nO1xuICAgICAgICAgICAgY29uc3QgeFJhdGlvID0gaW5uZXJXaWR0aCAvIG5hdHVyYWxXaWR0aDtcbiAgICAgICAgICAgIGNvbnN0IHlSYXRpbyA9IGlubmVySGVpZ2h0IC8gbmF0dXJhbEhlaWdodDtcbiAgICAgICAgICAgIGNvbnN0IHpvb20gPSBNYXRoLm1pbih4UmF0aW8sIHlSYXRpbyk7XG4gICAgICAgICAgICBpZiAoem9vbSA+IDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnpvb20gPSAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnpvb20gPSB6b29tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdEb25lID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUHJldmlld0ltYWdlVHJhbnNmb3JtKCk7XG4gICAgICAgICAgICBpZiAoaXNVcGRhdGVJbWFnZVdyYXBwZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVByZXZpZXdJbWFnZVdyYXBwZXJUcmFuc2Zvcm0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB1cGRhdGVQcmV2aWV3SW1hZ2UoKSB7XG4gICAgICAgIHRoaXMucmVzb2x2ZVByZXZpZXdJbWFnZSgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAvLyBlcnJvclxuICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nRG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaW1hZ2Ugc2l6ZVxuICAgICAgICAgICAgaWYgKCF0aGlzLnByZXZpZXdJbWFnZS5zaXplICYmIHRoaXMucHJldmlld0ltYWdlLmJsb2IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdJbWFnZS5zaXplID0gaHVtYW5pemVCeXRlcyh0aGlzLnByZXZpZXdJbWFnZS5ibG9iLnNpemUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuZGVmYXVsdFpvb20pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZURlZmF1bHRab29tVXBkYXRlKHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZUNhbGN1bGF0ZVpvb21VcGRhdGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVzb2x2ZVByZXZpZXdJbWFnZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPEJvb2xlYW4+KHN1YnNjcmliZXIgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldmlld0ltYWdlLnNyYy5zdGFydHNXaXRoKCdibG9iOicpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3SW1hZ2Uub2JqZWN0VVJMID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybCh0aGlzLnByZXZpZXdJbWFnZS5zcmMpO1xuICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dCh0cnVlKTtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMucHJldmlld0ltYWdlLm9iamVjdFVSTCB8fCAhdGhpcy5wcmV2aWV3Q29uZmlnLnJlc29sdmVTaXplKSB7XG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmV0Y2hJbWFnZUJsb2IodGhpcy5wcmV2aWV3SW1hZ2Uuc3JjKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgIGJsb2IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsQ3JlYXRvciA9IHdpbmRvdy5VUkwgfHwgd2luZG93LndlYmtpdFVSTDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9iamVjdFVSTCA9IHVybENyZWF0b3IuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3SW1hZ2Uub2JqZWN0VVJMID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChvYmplY3RVUkwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3SW1hZ2UuYmxvYiA9IGJsb2I7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbml0UHJldmlldygpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5wcmV2aWV3Q29uZmlnPy5vcGVyYXRpb25zKSAmJiB0aGlzLnByZXZpZXdDb25maWc/Lm9wZXJhdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0T3BlcmF0aW9uc01hcCA9IGhlbHBlcnMua2V5QnkodGhpcy5kZWZhdWx0UHJldmlld09wZXJhdGlvbnMsICd0eXBlJyk7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXdPcGVyYXRpb25zID0gdGhpcy5wcmV2aWV3Q29uZmlnPy5vcGVyYXRpb25zLm1hcChvcGVyYXRpb24gPT4ge1xuICAgICAgICAgICAgICAgIGlmIChoZWxwZXJzLmlzU3RyaW5nKG9wZXJhdGlvbikgJiYgZGVmYXVsdE9wZXJhdGlvbnNNYXBbb3BlcmF0aW9uXSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdE9wZXJhdGlvbnNNYXBbb3BlcmF0aW9uXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uIGFzIFRoeUltYWdlUHJldmlld09wZXJhdGlvbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJldmlld09wZXJhdGlvbnMgPSB0aGlzLmRlZmF1bHRQcmV2aWV3T3BlcmF0aW9ucztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJvdGF0ZSA9IHRoaXMucHJldmlld0NvbmZpZz8ucm90YXRlID8/IDA7XG4gICAgICAgIHRoaXMudXBkYXRlUHJldmlld0ltYWdlKCk7XG4gICAgfVxuXG4gICAgZG93bmxvYWQoaW1hZ2U6IFRoeUltYWdlSW5mbykge1xuICAgICAgICB0aGlzLmRvd25sb2FkQ2xpY2tlZC5lbWl0KGltYWdlKTtcbiAgICAgICAgY29uc3Qgc3JjID0gaW1hZ2Uub3JpZ2luPy5zcmMgfHwgaW1hZ2Uuc3JjO1xuICAgICAgICBmZXRjaEltYWdlQmxvYihzcmMpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoYmxvYiA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXJsQ3JlYXRvciA9IHdpbmRvdy5VUkwgfHwgd2luZG93LndlYmtpdFVSTDtcbiAgICAgICAgICAgICAgICBjb25zdCBvYmplY3RVUkwgPSB1cmxDcmVhdG9yLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgICBsZXQgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICBhLmRvd25sb2FkID0gaW1hZ2UubmFtZSB8fCAnZGVmYXVsdC5wbmcnO1xuICAgICAgICAgICAgICAgIGEuaHJlZiA9IG9iamVjdFVSTDtcbiAgICAgICAgICAgICAgICBhLmNsaWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB6b29tSW4oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnpvb20gPCBJTUFHRV9NQVhfWk9PTSkge1xuICAgICAgICAgICAgdGhpcy56b29tID0gTWF0aC5taW4odGhpcy56b29tICsgMC4xLCBJTUFHRV9NQVhfWk9PTSk7XG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZUluc2lkZVNjcmVlbigpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQcmV2aWV3SW1hZ2VUcmFuc2Zvcm0oKTtcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24gPSB7IC4uLmluaXRpYWxQb3NpdGlvbiB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgem9vbU91dCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuem9vbSA+IElNQUdFX01JTl9aT09NKSB7XG4gICAgICAgICAgICB0aGlzLnpvb20gPSBNYXRoLm1heCh0aGlzLnpvb20gLSAwLjEsIElNQUdFX01JTl9aT09NKTtcbiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlSW5zaWRlU2NyZWVuKCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVByZXZpZXdJbWFnZVRyYW5zZm9ybSgpO1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHsgLi4uaW5pdGlhbFBvc2l0aW9uIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjYWxjdWxhdGVJbnNpZGVTY3JlZW4oKSB7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5pbWFnZVJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoICogdGhpcy56b29tO1xuICAgICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmltYWdlUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0ICogdGhpcy56b29tO1xuICAgICAgICBjb25zdCB7IHdpZHRoOiBjbGllbnRXaWR0aCwgaGVpZ2h0OiBjbGllbnRIZWlnaHQgfSA9IGdldENsaWVudFNpemUoKTtcbiAgICAgICAgaWYgKHdpZHRoID49IGNsaWVudFdpZHRoIHx8IGhlaWdodCA+PSBjbGllbnRIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNJbnNpZGVTY3JlZW4gPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXNJbnNpZGVTY3JlZW4gPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmlld09yaWdpbmFsKCkge1xuICAgICAgICB3aW5kb3cub3Blbih0aGlzLnByZXZpZXdJbWFnZT8ub3JpZ2luPy5zcmMgfHwgdGhpcy5wcmV2aWV3SW1hZ2Uuc3JjLCAnX2JsYW5rJyk7XG4gICAgfVxuXG4gICAgcm90YXRlUmlnaHQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucm90YXRlICs9IDkwO1xuICAgICAgICB0aGlzLnVwZGF0ZVByZXZpZXdJbWFnZVRyYW5zZm9ybSgpO1xuICAgIH1cblxuICAgIGZ1bGxTY3JlZW4oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSB0aGlzLmhvc3QubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcudGh5LWltYWdlLXByZXZpZXcnKTtcbiAgICAgICAgdGhpcy5pc0Z1bGxTY3JlZW4gPSB0cnVlO1xuICAgICAgICBjb25zdCBmdWxsc2NyZWVuUmVmID0gdGhpcy50aHlGdWxsc2NyZWVuLmxhdW5jaCh7XG4gICAgICAgICAgICB0YXJnZXQ6IHRhcmdldEVsZW1lbnRcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bGxzY3JlZW5SZWYuYWZ0ZXJFeGl0ZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0Z1bGxTY3JlZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjb3B5TGluayhldmVudDogVGh5Q29weUV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5pc1N1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5U2VydmljZS5zdWNjZXNzKHRoaXMubG9jYWxlKCkuY29weVN1Y2Nlc3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLmVycm9yKHRoaXMubG9jYWxlKCkuY29weUVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByZXYoKSB7XG4gICAgICAgIGlmICh0aGlzLnByZXZpZXdJbmRleCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMucHJldmlld0luZGV4LS07XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZ0RvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUHJldmlld0ltYWdlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZXh0KCkge1xuICAgICAgICBpZiAodGhpcy5wcmV2aWV3SW5kZXggPCB0aGlzLmltYWdlcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXdJbmRleCsrO1xuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdEb25lID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVByZXZpZXdJbWFnZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhZ1JlbGVhc2VkKCkge1xuICAgICAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLmltYWdlUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggKiB0aGlzLnpvb207XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMuaW1hZ2VSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgKiB0aGlzLnpvb207XG4gICAgICAgIGNvbnN0IHsgbGVmdCwgdG9wIH0gPSBnZXRPZmZzZXQodGhpcy5pbWFnZVJlZi5uYXRpdmVFbGVtZW50LCB3aW5kb3cpO1xuICAgICAgICBjb25zdCB7IHdpZHRoOiBjbGllbnRXaWR0aCwgaGVpZ2h0OiBjbGllbnRIZWlnaHQgfSA9IGdldENsaWVudFNpemUoKTtcbiAgICAgICAgY29uc3QgaXNSb3RhdGUgPSB0aGlzLnJvdGF0ZSAlIDE4MCAhPT0gMDtcbiAgICAgICAgY29uc3QgZml0Q29udGVudFBhcmFtcyA9IHtcbiAgICAgICAgICAgIHdpZHRoOiBpc1JvdGF0ZSA/IGhlaWdodCA6IHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBpc1JvdGF0ZSA/IHdpZHRoIDogaGVpZ2h0LFxuICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgIGNsaWVudFdpZHRoLFxuICAgICAgICAgICAgY2xpZW50SGVpZ2h0XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGZpdENvbnRlbnRQb3MgPSBnZXRGaXRDb250ZW50UG9zaXRpb24oZml0Q29udGVudFBhcmFtcyk7XG4gICAgICAgIGlmICghaXNVbmRlZmluZWRPck51bGwoZml0Q29udGVudFBvcy54KSB8fCAhaXNVbmRlZmluZWRPck51bGwoZml0Q29udGVudFBvcy55KSkge1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHsgLi4udGhpcy5wb3NpdGlvbiwgLi4uZml0Q29udGVudFBvcyB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50SW1hZ2VNb2RlID0gJ29yaWdpbmFsLXNjYWxlJztcbiAgICAgICAgdGhpcy5yb3RhdGUgPSB0aGlzLnByZXZpZXdDb25maWc/LnJvdGF0ZSA/PyAwO1xuICAgICAgICB0aGlzLnBvc2l0aW9uID0geyAuLi5pbml0aWFsUG9zaXRpb24gfTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlUHJldmlld0ltYWdlVHJhbnNmb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByZXZpZXdJbWFnZVRyYW5zZm9ybSA9IGBzY2FsZTNkKCR7dGhpcy56b29tfSwgJHt0aGlzLnpvb219LCAxKSByb3RhdGUoJHt0aGlzLnJvdGF0ZX1kZWcpYDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVByZXZpZXdJbWFnZVdyYXBwZXJUcmFuc2Zvcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJldmlld0ltYWdlV3JhcHBlclRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgke3RoaXMucG9zaXRpb24ueH1weCwgJHt0aGlzLnBvc2l0aW9uLnl9cHgsIDApYDtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidGh5LWltYWdlLXByZXZpZXdcIiBbY2xhc3MudGh5LWltYWdlLXByZXZpZXctZnVsbHNjcmVlbl09XCJpc0Z1bGxTY3JlZW5cIj5cbiAgQGlmICghaXNGdWxsU2NyZWVuKSB7XG4gICAgPGRpdiBjbGFzcz1cInRoeS1pbWFnZS1wcmV2aWV3LWhlYWRlciBwbC0xMCBwci04XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGh5LWltYWdlLXByZXZpZXctaGVhZGVyLWluZm9cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJ0aHktaW1hZ2UtbmFtZSB0ZXh0LXRydW5jYXRlXCIgW3RoeVRvb2x0aXBEaXNhYmxlZF09XCJwcmV2aWV3SW1hZ2U/Lm5hbWU/Lmxlbmd0aCA8IDMyXCIgW3RoeVRvb2x0aXBdPVwicHJldmlld0ltYWdlPy5uYW1lXCI+XG4gICAgICAgICAge3sgcHJldmlld0ltYWdlPy5uYW1lIH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aHktaW1hZ2Utc2l6ZVwiPiB7eyBwcmV2aWV3SW1hZ2U/LnNpemUgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxhIHRoeUFjdGlvbiB0aHlJY29uPVwiY2xvc2VcIiBbdGh5VG9vbHRpcF09XCJsb2NhbGUoKS5leGl0UHJldmlld1wiIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiAoY2xpY2spPVwidGh5RGlhbG9nLmNsb3NlKClcIj48L2E+XG4gICAgPC9kaXY+XG4gIH1cbiAgQGlmIChpc0Z1bGxTY3JlZW4pIHtcbiAgICA8YVxuICAgICAgY2xhc3M9XCJ0aHktaW1hZ2UtcHJldmlldy1leGl0LWZ1bGxzY3JlZW5cIlxuICAgICAgdGh5QWN0aW9uXG4gICAgICB0aHlJY29uPVwiY2xvc2VcIlxuICAgICAgaHJlZj1cImphdmFzY3JpcHQ6O1wiXG4gICAgICAoY2xpY2spPVwidGh5RnVsbHNjcmVlbi5leGl0KClcIlxuICAgICAgW3RoeVRvb2x0aXBdPVwibG9jYWxlKCkuZXhpdEZ1bGxTY3JlZW5cIj48L2E+XG4gIH1cbiAgPGRpdlxuICAgIGNsYXNzPVwidGh5LWltYWdlLXByZXZpZXctaW1nLXdyYXBwZXJcIlxuICAgICNpbWFnZVByZXZpZXdXcmFwcGVyXG4gICAgY2RrRHJhZ1xuICAgIFtjbGFzcy50aHktaW1hZ2UtcHJldmlldy1pbnNpZGVdPVwiaXNJbnNpZGVTY3JlZW5cIlxuICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwicHJldmlld0ltYWdlV3JhcHBlclRyYW5zZm9ybVwiXG4gICAgW2Nka0RyYWdGcmVlRHJhZ1Bvc2l0aW9uXT1cInBvc2l0aW9uXCJcbiAgICAoY2RrRHJhZ1JlbGVhc2VkKT1cImRyYWdSZWxlYXNlZCgpXCI+XG4gICAgQGZvciAoaW1hZ2Ugb2YgaW1hZ2VzOyB0cmFjayAkaW5kZXg7IGxldCBpbWFnZUluZGV4ID0gJGluZGV4KSB7XG4gICAgICBAaWYgKHByZXZpZXdJbmRleCA9PT0gaW1hZ2VJbmRleCAmJiBpc0xvYWRpbmdEb25lKSB7XG4gICAgICAgIDxpbWcgI2ltZ1JlZiBjbGFzcz1cInRoeS1pbWFnZS1wcmV2aWV3LWltZ1wiIFtzcmNdPVwiaW1hZ2Uub2JqZWN0VVJMIHx8IGltYWdlLnNyY1wiIFtzdHlsZS50cmFuc2Zvcm1dPVwicHJldmlld0ltYWdlVHJhbnNmb3JtXCIgLz5cbiAgICAgIH1cbiAgICB9XG4gICAgPHRoeS1sb2FkaW5nIFt0aHlEb25lXT1cImlzTG9hZGluZ0RvbmVcIj48L3RoeS1sb2FkaW5nPlxuICA8L2Rpdj5cblxuICBAaWYgKGltYWdlcy5sZW5ndGggPiAxICYmICFpc0Z1bGxTY3JlZW4pIHtcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInRoeS1pbWFnZS1wcmV2aWV3LXN3aXRjaC1sZWZ0XCJcbiAgICAgIFt0aHlUb29sdGlwRGlzYWJsZWRdPVwicHJldmlld0luZGV4IDw9IDBcIlxuICAgICAgW3RoeVRvb2x0aXBdPVwibG9jYWxlKCkucHJldlwiXG4gICAgICBbY2xhc3MudGh5LWltYWdlLXByZXZpZXctc3dpdGNoLWxlZnQtZGlzYWJsZWRdPVwicHJldmlld0luZGV4IDw9IDBcIlxuICAgICAgKGNsaWNrKT1cInByZXYoKVwiPlxuICAgICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiYW5nbGUtbGVmdC1ib2xkXCI+PC90aHktaWNvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInRoeS1pbWFnZS1wcmV2aWV3LXN3aXRjaC1yaWdodFwiXG4gICAgICBbdGh5VG9vbHRpcF09XCJsb2NhbGUoKS5uZXh0XCJcbiAgICAgIFt0aHlUb29sdGlwRGlzYWJsZWRdPVwicHJldmlld0luZGV4ID49IGltYWdlcy5sZW5ndGggLSAxXCJcbiAgICAgIFtjbGFzcy50aHktaW1hZ2UtcHJldmlldy1zd2l0Y2gtcmlnaHQtZGlzYWJsZWRdPVwicHJldmlld0luZGV4ID49IGltYWdlcy5sZW5ndGggLSAxXCJcbiAgICAgIChjbGljayk9XCJuZXh0KClcIj5cbiAgICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cImFuZ2xlLXJpZ2h0LWJvbGRcIj4gPC90aHktaWNvbj5cbiAgICA8L2Rpdj5cbiAgfVxuICBAaWYgKCFpc0Z1bGxTY3JlZW4pIHtcbiAgICA8dGh5LWFjdGlvbnMgdGh5U2l6ZT1cInhzXCIgY2xhc3M9XCJ0aHktaW1hZ2UtcHJldmlldy1vcGVyYXRpb25zIHB5LTMgcHgtNFwiPlxuICAgICAgQGZvciAob3B0aW9uIG9mIHByZXZpZXdPcGVyYXRpb25zOyB0cmFjayAkaW5kZXg7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgIEBpZiAoIVsnb3JpZ2luYWwtc2NhbGUnLCAnZml0LXNjcmVlbicsICdjb3B5TGluayddLmluY2x1ZGVzKG9wdGlvbi50eXBlKSB8fCBjdXJyZW50SW1hZ2VNb2RlID09PSBvcHRpb24udHlwZSkge1xuICAgICAgICAgIDxhXG4gICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgICAgICAgIHRoeUFjdGlvblxuICAgICAgICAgICAgW3RoeUFjdGlvbkljb25dPVwib3B0aW9uLmljb25cIlxuICAgICAgICAgICAgW3RoeVRvb2x0aXBdPVwib3B0aW9uLm5hbWVcIlxuICAgICAgICAgICAgW3RoeVRvb2x0aXBPZmZzZXRdPVwiMTNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wdGlvbi5hY3Rpb24ocHJldmlld0ltYWdlKVwiPjwvYT5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKG9wdGlvbj8udHlwZSA9PT0gJ3pvb20tb3V0Jykge1xuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXItMlwiPiB7eyAoem9vbSAqIDEwMCkudG9GaXhlZCgwKSArICclJyB9fSA8L3NwYW4+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChvcHRpb24/LnR5cGUgPT09ICdyb3RhdGUtcmlnaHQnKSB7XG4gICAgICAgICAgPHRoeS1kaXZpZGVyIGNsYXNzPVwibWwtMlwiIFt0aHlWZXJ0aWNhbF09XCJ0cnVlXCI+PC90aHktZGl2aWRlcj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKG9wdGlvbi50eXBlID09PSAnY29weUxpbmsnKSB7XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICAgICAgICAgdGh5QWN0aW9uXG4gICAgICAgICAgICBbdGh5Q29weVRpcHNdPVwib3B0aW9uLm5hbWVcIlxuICAgICAgICAgICAgW3RoeUFjdGlvbkljb25dPVwib3B0aW9uLmljb25cIlxuICAgICAgICAgICAgW3RoeUNvcHlUaXBzT2Zmc2V0XT1cIjEzXCJcbiAgICAgICAgICAgICh0aHlDb3B5KT1cImNvcHlMaW5rKCRldmVudClcIlxuICAgICAgICAgICAgW3RoeUNvcHlDb250ZW50XT1cInByZXZpZXdJbWFnZU9yaWdpblNyY1wiXG4gICAgICAgICAgICBbdGh5U2hvd05vdGlmeV09XCJmYWxzZVwiPjwvYT5cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgPHRoeS1kaXZpZGVyIFt0aHlWZXJ0aWNhbF09XCJ0cnVlXCI+PC90aHktZGl2aWRlcj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGh5LWltYWdlLXByZXZpZXctb3BlcmF0aW9ucy10ZXh0XCI+IHt7IHByZXZpZXdJbmRleCArIDEgfX0gLyB7eyBpbWFnZXMubGVuZ3RoIH19IDwvc3Bhbj5cbiAgICA8L3RoeS1hY3Rpb25zPlxuICB9XG48L2Rpdj5cbiJdfQ==
|
package/esm2022/version.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Version } from '@angular/core';
|
|
2
|
-
export const VERSION = new Version('18.2.
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
export const VERSION = new Version('18.2.17');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmVyc2lvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IG5ldyBWZXJzaW9uKCcxOC4yLjE3Jyk7XG4iXX0=
|
|
@@ -224,7 +224,13 @@ var zhHansLocale = {
|
|
|
224
224
|
spin: '旋转',
|
|
225
225
|
download: '下载',
|
|
226
226
|
viewOriginal: '查看原图',
|
|
227
|
-
copyLink: '复制链接'
|
|
227
|
+
copyLink: '复制链接',
|
|
228
|
+
exitPreview: '退出预览',
|
|
229
|
+
exitFullScreen: '退出全屏',
|
|
230
|
+
copySuccess: '复制图片地址成功',
|
|
231
|
+
copyError: '复制图片地址失败',
|
|
232
|
+
prev: '上一张',
|
|
233
|
+
next: '下一张'
|
|
228
234
|
}
|
|
229
235
|
};
|
|
230
236
|
|
|
@@ -368,7 +374,13 @@ var zhHantLocale = {
|
|
|
368
374
|
spin: '旋轉',
|
|
369
375
|
download: '下載',
|
|
370
376
|
viewOriginal: '查看原圖',
|
|
371
|
-
copyLink: '複製連結'
|
|
377
|
+
copyLink: '複製連結',
|
|
378
|
+
exitPreview: '退出預覽',
|
|
379
|
+
exitFullScreen: '退出全屏',
|
|
380
|
+
copySuccess: '複製圖片地址成功',
|
|
381
|
+
copyError: '複製圖片地址失敗',
|
|
382
|
+
prev: '上一張',
|
|
383
|
+
next: '下一張'
|
|
372
384
|
}
|
|
373
385
|
};
|
|
374
386
|
|
|
@@ -512,7 +524,13 @@ var enUsLocale = {
|
|
|
512
524
|
spin: 'Spin',
|
|
513
525
|
download: 'Download',
|
|
514
526
|
viewOriginal: 'View original',
|
|
515
|
-
copyLink: 'Copy link'
|
|
527
|
+
copyLink: 'Copy link',
|
|
528
|
+
exitPreview: 'Exit preview',
|
|
529
|
+
exitFullScreen: 'Exit full screen',
|
|
530
|
+
copySuccess: 'Copied successfully',
|
|
531
|
+
copyError: 'Copy failed',
|
|
532
|
+
prev: 'Previous',
|
|
533
|
+
next: 'Next'
|
|
516
534
|
}
|
|
517
535
|
};
|
|
518
536
|
/**
|
|
@@ -677,7 +695,13 @@ var jaJpLocale = {
|
|
|
677
695
|
spin: '回転',
|
|
678
696
|
download: 'ダウンロード',
|
|
679
697
|
viewOriginal: '元の画像を表示',
|
|
680
|
-
copyLink: 'リンクをコピー'
|
|
698
|
+
copyLink: 'リンクをコピー',
|
|
699
|
+
exitPreview: 'プレビューを終了',
|
|
700
|
+
exitFullScreen: '全画面表示を終了',
|
|
701
|
+
copySuccess: '画像のURLをコピーしました',
|
|
702
|
+
copyError: '画像のURLをコピーできませんでした',
|
|
703
|
+
prev: '前の画像',
|
|
704
|
+
next: '次の画像'
|
|
681
705
|
}
|
|
682
706
|
};
|
|
683
707
|
|
|
@@ -821,7 +845,13 @@ var deDeLocale = {
|
|
|
821
845
|
spin: 'Drehen',
|
|
822
846
|
download: 'Herunterladen',
|
|
823
847
|
viewOriginal: 'Original anzeigen',
|
|
824
|
-
copyLink: 'Link kopieren'
|
|
848
|
+
copyLink: 'Link kopieren',
|
|
849
|
+
exitPreview: 'Vorschau beenden',
|
|
850
|
+
exitFullScreen: 'Vollbildmodus beenden',
|
|
851
|
+
copySuccess: 'Link erfolgreich kopiert',
|
|
852
|
+
copyError: 'Link kopieren fehlgeschlagen',
|
|
853
|
+
prev: 'Vorherige',
|
|
854
|
+
next: 'Nächste'
|
|
825
855
|
}
|
|
826
856
|
};
|
|
827
857
|
|