ngx-image-cropper 7.0.3 → 7.1.1
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/esm2020/lib/component/image-cropper.component.mjs +50 -47
- package/esm2020/lib/services/crop.service.mjs +13 -15
- package/esm2020/lib/services/cropper-position.service.mjs +11 -12
- package/fesm2015/ngx-image-cropper.mjs +71 -71
- package/fesm2015/ngx-image-cropper.mjs.map +1 -1
- package/fesm2020/ngx-image-cropper.mjs +71 -71
- package/fesm2020/ngx-image-cropper.mjs.map +1 -1
- package/lib/component/image-cropper.component.d.ts +7 -5
- package/lib/services/crop.service.d.ts +3 -4
- package/lib/services/cropper-position.service.d.ts +1 -1
- package/package.json +2 -1
|
@@ -3,8 +3,8 @@ import { resizeCanvas } from '../utils/resize.utils';
|
|
|
3
3
|
import { percentage } from '../utils/percentage.utils';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export class CropService {
|
|
6
|
-
crop(
|
|
7
|
-
const imagePosition = this.getImagePosition(
|
|
6
|
+
crop(loadedImage, cropper, settings, output, maxSize) {
|
|
7
|
+
const imagePosition = this.getImagePosition(loadedImage, cropper, settings, maxSize);
|
|
8
8
|
const width = imagePosition.x2 - imagePosition.x1;
|
|
9
9
|
const height = imagePosition.y2 - imagePosition.y1;
|
|
10
10
|
const cropCanvas = document.createElement('canvas');
|
|
@@ -20,7 +20,7 @@ export class CropService {
|
|
|
20
20
|
}
|
|
21
21
|
const scaleX = (settings.transform.scale || 1) * (settings.transform.flipH ? -1 : 1);
|
|
22
22
|
const scaleY = (settings.transform.scale || 1) * (settings.transform.flipV ? -1 : 1);
|
|
23
|
-
const { translateH, translateV } = this.getCanvasTranslate(
|
|
23
|
+
const { translateH, translateV } = this.getCanvasTranslate(loadedImage, settings, maxSize);
|
|
24
24
|
const transformedImage = loadedImage.transformed;
|
|
25
25
|
ctx.setTransform(scaleX, 0, 0, scaleY, transformedImage.size.width / 2 + translateH, transformedImage.size.height / 2 + translateV);
|
|
26
26
|
ctx.translate(-imagePosition.x1 / scaleX, -imagePosition.y1 / scaleY);
|
|
@@ -32,7 +32,7 @@ export class CropService {
|
|
|
32
32
|
cropperPosition: { ...cropper }
|
|
33
33
|
};
|
|
34
34
|
if (settings.containWithinAspectRatio) {
|
|
35
|
-
result.offsetImagePosition = this.getOffsetImagePosition(
|
|
35
|
+
result.offsetImagePosition = this.getOffsetImagePosition(loadedImage, cropper, settings, maxSize);
|
|
36
36
|
}
|
|
37
37
|
const resizeRatio = this.getResizeRatio(width, height, settings);
|
|
38
38
|
if (resizeRatio !== 1) {
|
|
@@ -57,9 +57,9 @@ export class CropService {
|
|
|
57
57
|
}
|
|
58
58
|
return output;
|
|
59
59
|
}
|
|
60
|
-
getCanvasTranslate(
|
|
60
|
+
getCanvasTranslate(loadedImage, settings, maxSize) {
|
|
61
61
|
if (settings.transform.translateUnit === 'px') {
|
|
62
|
-
const ratio = this.getRatio(
|
|
62
|
+
const ratio = this.getRatio(loadedImage, maxSize);
|
|
63
63
|
return {
|
|
64
64
|
translateH: (settings.transform.translateH || 0) * ratio,
|
|
65
65
|
translateV: (settings.transform.translateV || 0) * ratio
|
|
@@ -72,12 +72,11 @@ export class CropService {
|
|
|
72
72
|
};
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
|
-
getRatio(
|
|
76
|
-
|
|
77
|
-
return loadedImage.transformed.size.width / sourceImageElement.offsetWidth;
|
|
75
|
+
getRatio(loadedImage, maxSize) {
|
|
76
|
+
return loadedImage.transformed.size.width / maxSize.width;
|
|
78
77
|
}
|
|
79
|
-
getImagePosition(
|
|
80
|
-
const ratio = this.getRatio(
|
|
78
|
+
getImagePosition(loadedImage, cropper, settings, maxSize) {
|
|
79
|
+
const ratio = this.getRatio(loadedImage, maxSize);
|
|
81
80
|
const out = {
|
|
82
81
|
x1: Math.round(cropper.x1 * ratio),
|
|
83
82
|
y1: Math.round(cropper.y1 * ratio),
|
|
@@ -92,10 +91,9 @@ export class CropService {
|
|
|
92
91
|
}
|
|
93
92
|
return out;
|
|
94
93
|
}
|
|
95
|
-
getOffsetImagePosition(
|
|
94
|
+
getOffsetImagePosition(loadedImage, cropper, settings, maxSize) {
|
|
96
95
|
const canvasRotation = settings.canvasRotation + loadedImage.exifTransform.rotate;
|
|
97
|
-
const
|
|
98
|
-
const ratio = loadedImage.transformed.size.width / sourceImageElement.offsetWidth;
|
|
96
|
+
const ratio = this.getRatio(loadedImage, maxSize);
|
|
99
97
|
let offsetX;
|
|
100
98
|
let offsetY;
|
|
101
99
|
if (canvasRotation % 2) {
|
|
@@ -146,4 +144,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
146
144
|
type: Injectable,
|
|
147
145
|
args: [{ providedIn: 'root' }]
|
|
148
146
|
}] });
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvcC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWltYWdlLWNyb3BwZXIvc3JjL2xpYi9zZXJ2aWNlcy9jcm9wLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQUl2RCxNQUFNLE9BQU8sV0FBVztJQUl0QixJQUFJLENBQUMsV0FBdUIsRUFBRSxXQUF3QixFQUFFLE9BQXdCLEVBQUUsUUFBeUIsRUFBRSxNQUFrQjtRQUM3SCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDekYsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEVBQUUsR0FBRyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQ2xELE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxFQUFFLEdBQUcsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUNuRCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBc0IsQ0FBQztRQUN6RSxVQUFVLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUN6QixVQUFVLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUUzQixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBSSxRQUFRLENBQUMsZUFBZSxJQUFJLElBQUksRUFBRTtZQUNwQyxHQUFHLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FB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O0lBQzdCLENBQUM7SUFFRCxVQUFVLENBQUMsUUFBeUI7UUFDbEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQzs7eUdBaktVLFdBQVc7NkdBQVgsV0FBVyxjQURDLE1BQU07NEZBQ2xCLFdBQVc7a0JBRHZCLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ3JvcHBlclBvc2l0aW9uLCBJbWFnZUNyb3BwZWRFdmVudCwgTG9hZGVkSW1hZ2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENyb3BwZXJTZXR0aW5ncyB9IGZyb20gJy4uL2ludGVyZmFjZXMvY3JvcHBlci5zZXR0aW5ncyc7XG5pbXBvcnQgeyByZXNpemVDYW52YXMgfSBmcm9tICcuLi91dGlscy9yZXNpemUudXRpbHMnO1xuaW1wb3J0IHsgcGVyY2VudGFnZSB9IGZyb20gJy4uL3V0aWxzL3BlcmNlbnRhZ2UudXRpbHMnO1xuaW1wb3J0IHsgT3V0cHV0VHlwZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY3JvcHBlci1vcHRpb25zLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIENyb3BTZXJ2aWNlIHtcblxuICBjcm9wKHNvdXJjZUltYWdlOiBFbGVtZW50UmVmLCBsb2FkZWRJbWFnZTogTG9hZGVkSW1hZ2UsIGNyb3BwZXI6IENyb3BwZXJQb3NpdGlvbiwgc2V0dGluZ3M6IENyb3BwZXJTZXR0aW5ncywgb3V0cHV0OiAnYmxvYicpOiBQcm9taXNlPEltYWdlQ3JvcHBlZEV2ZW50PiB8IG51bGw7XG4gIGNyb3Aoc291cmNlSW1hZ2U6IEVsZW1lbnRSZWYsIGxvYWRlZEltYWdlOiBMb2FkZWRJbWFnZSwgY3JvcHBlcjogQ3JvcHBlclBvc2l0aW9uLCBzZXR0aW5nczogQ3JvcHBlclNldHRpbmdzLCBvdXRwdXQ6ICdiYXNlNjQnKTogSW1hZ2VDcm9wcGVkRXZlbnQgfCBudWxsO1xuICBjcm9wKHNvdXJjZUltYWdlOiBFbGVtZW50UmVmLCBsb2FkZWRJbWFnZTogTG9hZGVkSW1hZ2UsIGNyb3BwZXI6IENyb3BwZXJQb3NpdGlvbiwgc2V0dGluZ3M6IENyb3BwZXJTZXR0aW5ncywgb3V0cHV0OiBPdXRwdXRUeXBlKTogUHJvbWlzZTxJbWFnZUNyb3BwZWRFdmVudD4gfCBJbWFnZUNyb3BwZWRFdmVudCB8IG51bGwge1xuICAgIGNvbnN0IGltYWdlUG9zaXRpb24gPSB0aGlzLmdldEltYWdlUG9zaXRpb24oc291cmNlSW1hZ2UsIGxvYWRlZEltYWdlLCBjcm9wcGVyLCBzZXR0aW5ncyk7XG4gICAgY29uc3Qgd2lkdGggPSBpbWFnZVBvc2l0aW9uLngyIC0gaW1hZ2VQb3NpdGlvbi54MTtcbiAgICBjb25zdCBoZWlnaHQgPSBpbWFnZVBvc2l0aW9uLnkyIC0gaW1hZ2VQb3NpdGlvbi55MTtcbiAgICBjb25zdCBjcm9wQ2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJykgYXMgSFRNTENhbnZhc0VsZW1lbnQ7XG4gICAgY3JvcENhbnZhcy53aWR0aCA9IHdpZHRoO1xuICAgIGNyb3BDYW52YXMuaGVpZ2h0ID0gaGVpZ2h0O1xuXG4gICAgY29uc3QgY3R4ID0gY3JvcENhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIGlmICghY3R4KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHNldHRpbmdzLmJhY2tncm91bmRDb2xvciAhPSBudWxsKSB7XG4gICAgICBjdHguZmlsbFN0eWxlID0gc2V0dGluZ3MuYmFja2dyb3VuZENvbG9yO1xuICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgIH1cblxuICAgIGNvbnN0IHNjYWxlWCA9IChzZXR0aW5ncy50cmFuc2Zvcm0uc2NhbGUgfHwgMSkgKiAoc2V0dGluZ3MudHJhbnNmb3JtLmZsaXBIID8gLTEgOiAxKTtcbiAgICBjb25zdCBzY2FsZVkgPSAoc2V0dGluZ3MudHJhbnNmb3JtLnNjYWxlIHx8IDEpICogKHNldHRpbmdzLnRyYW5zZm9ybS5mbGlwViA/IC0xIDogMSk7XG4gICAgY29uc3Qge3RyYW5zbGF0ZUgsIHRyYW5zbGF0ZVZ9ID0gdGhpcy5nZXRDYW52YXNUcmFuc2xhdGUoc291cmNlSW1hZ2UsIGxvYWRlZEltYWdlLCBzZXR0aW5ncyk7XG5cbiAgICBjb25zdCB0cmFuc2Zvcm1lZEltYWdlID0gbG9hZGVkSW1hZ2UudHJhbnNmb3JtZWQ7XG4gICAgY3R4LnNldFRyYW5zZm9ybShzY2FsZVgsIDAsIDAsIHNjYWxlWSwgdHJhbnNmb3JtZWRJbWFnZS5zaXplLndpZHRoIC8gMiArIHRyYW5zbGF0ZUgsIHRyYW5zZm9ybWVkSW1hZ2Uuc2l6ZS5oZWlnaHQgLyAyICsgdHJhbnNsYXRlVik7XG4gICAgY3R4LnRyYW5zbGF0ZSgtaW1hZ2VQb3NpdGlvbi54MSAvIHNjYWxlWCwgLWltYWdlUG9zaXRpb24ueTEgLyBzY2FsZVkpO1xuICAgIGN0eC5yb3RhdGUoKHNldHRpbmdzLnRyYW5zZm9ybS5yb3RhdGUgfHwgMCkgKiBNYXRoLlBJIC8gMTgwKTtcblxuICAgIGN0eC5kcmF3SW1hZ2UoXG4gICAgICB0cmFuc2Zvcm1lZEltYWdlLmltYWdlLFxuICAgICAgLXRyYW5zZm9ybWVkSW1hZ2Uuc2l6ZS53aWR0aCAvIDIsXG4gICAgICAtdHJhbnNmb3JtZWRJbWFnZS5zaXplLmhlaWdodCAvIDJcbiAgICApO1xuXG4gICAgY29uc3QgcmVzdWx0OiBJbWFnZUNyb3BwZWRFdmVudCA9IHtcbiAgICAgIHdpZHRoLCBoZWlnaHQsXG4gICAgICBpbWFnZVBvc2l0aW9uLFxuICAgICAgY3JvcHBlclBvc2l0aW9uOiB7Li4uY3JvcHBlcn1cbiAgICB9O1xuICAgIGlmIChzZXR0aW5ncy5jb250YWluV2l0aGluQXNwZWN0UmF0aW8pIHtcbiAgICAgIHJlc3VsdC5vZmZzZXRJbWFnZVBvc2l0aW9uID0gdGhpcy5nZXRPZmZzZXRJbWFnZVBvc2l0aW9uKHNvdXJjZUltYWdlLCBsb2FkZWRJbWFnZSwgY3JvcHBlciwgc2V0dGluZ3MpO1xuICAgIH1cbiAgICBjb25zdCByZXNpemVSYXRpbyA9IHRoaXMuZ2V0UmVzaXplUmF0aW8od2lkdGgsIGhlaWdodCwgc2V0dGluZ3MpO1xuICAgIGlmIChyZXNpemVSYXRpbyAhPT0gMSkge1xuICAgICAgcmVzdWx0LndpZHRoID0gTWF0aC5yb3VuZCh3aWR0aCAqIHJlc2l6ZVJhdGlvKTtcbiAgICAgIHJlc3VsdC5oZWlnaHQgPSBzZXR0aW5ncy5tYWludGFpbkFzcGVjdFJhdGlvXG4gICAgICAgID8gTWF0aC5yb3VuZChyZXN1bHQud2lkdGggLyBzZXR0aW5ncy5hc3BlY3RSYXRpbylcbiAgICAgICAgOiBNYXRoLnJvdW5kKGhlaWdodCAqIHJlc2l6ZVJhdGlvKTtcbiAgICAgIHJlc2l6ZUNhbnZhcyhjcm9wQ2FudmFzLCByZXN1bHQud2lkdGgsIHJlc3VsdC5oZWlnaHQpO1xuICAgIH1cbiAgICBpZiAob3V0cHV0ID09PSAnYmxvYicpIHtcbiAgICAgIHJldHVybiB0aGlzLmNyb3BUb0Jsb2IocmVzdWx0LCBjcm9wQ2FudmFzLCBzZXR0aW5ncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5iYXNlNjQgPSBjcm9wQ2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvJyArIHNldHRpbmdzLmZvcm1hdCwgdGhpcy5nZXRRdWFsaXR5KHNldHRpbmdzKSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY3JvcFRvQmxvYihvdXRwdXQ6IEltYWdlQ3JvcHBlZEV2ZW50LCBjcm9wQ2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCwgc2V0dGluZ3M6IENyb3BwZXJTZXR0aW5ncyk6IFByb21pc2U8SW1hZ2VDcm9wcGVkRXZlbnQ+IHtcbiAgICBvdXRwdXQuYmxvYiA9IGF3YWl0IG5ldyBQcm9taXNlPEJsb2IgfCBudWxsPihyZXNvbHZlID0+IGNyb3BDYW52YXMudG9CbG9iKHJlc29sdmUsICdpbWFnZS8nICsgc2V0dGluZ3MuZm9ybWF0LCB0aGlzLmdldFF1YWxpdHkoc2V0dGluZ3MpKSk7XG4gICAgaWYgKG91dHB1dC5ibG9iKSB7XG4gICAgICBvdXRwdXQub2JqZWN0VXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChvdXRwdXQuYmxvYik7XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH1cblxuICBwcml2YXRlIGdldENhbnZhc1RyYW5zbGF0ZShzb3VyY2VJbWFnZTogRWxlbWVudFJlZiwgbG9hZGVkSW1hZ2U6IExvYWRlZEltYWdlLCBzZXR0aW5nczogQ3JvcHBlclNldHRpbmdzKTogeyB0cmFuc2xhdGVIOiBudW1iZXIsIHRyYW5zbGF0ZVY6IG51bWJlciB9IHtcbiAgICBpZiAoc2V0dGluZ3MudHJhbnNmb3JtLnRyYW5zbGF0ZVVuaXQgPT09ICdweCcpIHtcbiAgICAgIGNvbnN0IHJhdGlvID0gdGhpcy5nZXRSYXRpbyhzb3VyY2VJbWFnZSwgbG9hZGVkSW1hZ2UpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHJhbnNsYXRlSDogKHNldHRpbmdzLnRyYW5zZm9ybS50cmFuc2xhdGVIIHx8IDApICogcmF0aW8sXG4gICAgICAgIHRyYW5zbGF0ZVY6IChzZXR0aW5ncy50cmFuc2Zvcm0udHJhbnNsYXRlViB8fCAwKSAqIHJhdGlvXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2xhdGVIOiBzZXR0aW5ncy50cmFuc2Zvcm0udHJhbnNsYXRlSCA/IHBlcmNlbnRhZ2Uoc2V0dGluZ3MudHJhbnNmb3JtLnRyYW5zbGF0ZUgsIGxvYWRlZEltYWdlLnRyYW5zZm9ybWVkLnNpemUud2lkdGgpIDogMCxcbiAgICAgICAgdHJhbnNsYXRlVjogc2V0dGluZ3MudHJhbnNmb3JtLnRyYW5zbGF0ZVYgPyBwZXJjZW50YWdlKHNldHRpbmdzLnRyYW5zZm9ybS50cmFuc2xhdGVWLCBsb2FkZWRJbWFnZS50cmFuc2Zvcm1lZC5zaXplLmhlaWdodCkgOiAwXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmF0aW8oc291cmNlSW1hZ2U6IEVsZW1lbnRSZWYsIGxvYWRlZEltYWdlOiBMb2FkZWRJbWFnZSk6IG51bWJlciB7XG4gICAgY29uc3Qgc291cmNlSW1hZ2VFbGVtZW50ID0gc291cmNlSW1hZ2UubmF0aXZlRWxlbWVudDtcbiAgICByZXR1cm4gbG9hZGVkSW1hZ2UudHJhbnNmb3JtZWQuc2l6ZS53aWR0aCAvIHNvdXJjZUltYWdlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW1hZ2VQb3NpdGlvbihzb3VyY2VJbWFnZTogRWxlbWVudFJlZiwgbG9hZGVkSW1hZ2U6IExvYWRlZEltYWdlLCBjcm9wcGVyOiBDcm9wcGVyUG9zaXRpb24sIHNldHRpbmdzOiBDcm9wcGVyU2V0dGluZ3MpOiBDcm9wcGVyUG9zaXRpb24ge1xuICAgIGNvbnN0IHJhdGlvID0gdGhpcy5nZXRSYXRpbyhzb3VyY2VJbWFnZSwgbG9hZGVkSW1hZ2UpO1xuICAgIGNvbnN0IG91dDogQ3JvcHBlclBvc2l0aW9uID0ge1xuICAgICAgeDE6IE1hdGgucm91bmQoY3JvcHBlci54MSAqIHJhdGlvKSxcbiAgICAgIHkxOiBNYXRoLnJvdW5kKGNyb3BwZXIueTEgKiByYXRpbyksXG4gICAgICB4MjogTWF0aC5yb3VuZChjcm9wcGVyLngyICogcmF0aW8pLFxuICAgICAgeTI6IE1hdGgucm91bmQoY3JvcHBlci55MiAqIHJhdGlvKVxuICAgIH07XG5cbiAgICBpZiAoIXNldHRpbmdzLmNvbnRhaW5XaXRoaW5Bc3BlY3RSYXRpbykge1xuICAgICAgb3V0LngxID0gTWF0aC5tYXgob3V0LngxLCAwKTtcbiAgICAgIG91dC55MSA9IE1hdGgubWF4KG91dC55MSwgMCk7XG4gICAgICBvdXQueDIgPSBNYXRoLm1pbihvdXQueDIsIGxvYWRlZEltYWdlLnRyYW5zZm9ybWVkLnNpemUud2lkdGgpO1xuICAgICAgb3V0LnkyID0gTWF0aC5taW4ob3V0LnkyLCBsb2FkZWRJbWFnZS50cmFuc2Zvcm1lZC5zaXplLmhlaWdodCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T2Zmc2V0SW1hZ2VQb3NpdGlvbihzb3VyY2VJbWFnZTogRWxlbWVudFJlZiwgbG9hZGVkSW1hZ2U6IExvYWRlZEltYWdlLCBjcm9wcGVyOiBDcm9wcGVyUG9zaXRpb24sIHNldHRpbmdzOiBDcm9wcGVyU2V0dGluZ3MpOiBDcm9wcGVyUG9zaXRpb24ge1xuICAgIGNvbnN0IGNhbnZhc1JvdGF0aW9uID0gc2V0dGluZ3MuY2FudmFzUm90YXRpb24gKyBsb2FkZWRJbWFnZS5leGlmVHJhbnNmb3JtLnJvdGF0ZTtcbiAgICBjb25zdCBzb3VyY2VJbWFnZUVsZW1lbnQgPSBzb3VyY2VJbWFnZS5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IHJhdGlvID0gbG9hZGVkSW1hZ2UudHJhbnNmb3JtZWQuc2l6ZS53aWR0aCAvIHNvdXJjZUltYWdlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICBsZXQgb2Zmc2V0WDogbnVtYmVyO1xuICAgIGxldCBvZmZzZXRZOiBudW1iZXI7XG5cbiAgICBpZiAoY2FudmFzUm90YXRpb24gJSAyKSB7XG4gICAgICBvZmZzZXRYID0gKGxvYWRlZEltYWdlLnRyYW5zZm9ybWVkLnNpemUud2lkdGggLSBsb2FkZWRJbWFnZS5vcmlnaW5hbC5zaXplLmhlaWdodCkgLyAyO1xuICAgICAgb2Zmc2V0WSA9IChsb2FkZWRJbWFnZS50cmFuc2Zvcm1lZC5zaXplLmhlaWdodCAtIGxvYWRlZEltYWdlLm9yaWdpbmFsLnNpemUud2lkdGgpIC8gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgb2Zmc2V0WCA9IChsb2FkZWRJbWFnZS50cmFuc2Zvcm1lZC5zaXplLndpZHRoIC0gbG9hZGVkSW1hZ2Uub3JpZ2luYWwuc2l6ZS53aWR0aCkgLyAyO1xuICAgICAgb2Zmc2V0WSA9IChsb2FkZWRJbWFnZS50cmFuc2Zvcm1lZC5zaXplLmhlaWdodCAtIGxvYWRlZEltYWdlLm9yaWdpbmFsLnNpemUuaGVpZ2h0KSAvIDI7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0OiBDcm9wcGVyUG9zaXRpb24gPSB7XG4gICAgICB4MTogTWF0aC5yb3VuZChjcm9wcGVyLngxICogcmF0aW8pIC0gb2Zmc2V0WCxcbiAgICAgIHkxOiBNYXRoLnJvdW5kKGNyb3BwZXIueTEgKiByYXRpbykgLSBvZmZzZXRZLFxuICAgICAgeDI6IE1hdGgucm91bmQoY3JvcHBlci54MiAqIHJhdGlvKSAtIG9mZnNldFgsXG4gICAgICB5MjogTWF0aC5yb3VuZChjcm9wcGVyLnkyICogcmF0aW8pIC0gb2Zmc2V0WVxuICAgIH07XG5cbiAgICBpZiAoIXNldHRpbmdzLmNvbnRhaW5XaXRoaW5Bc3BlY3RSYXRpbykge1xuICAgICAgb3V0LngxID0gTWF0aC5tYXgob3V0LngxLCAwKTtcbiAgICAgIG91dC55MSA9IE1hdGgubWF4KG91dC55MSwgMCk7XG4gICAgICBvdXQueDIgPSBNYXRoLm1pbihvdXQueDIsIGxvYWRlZEltYWdlLnRyYW5zZm9ybWVkLnNpemUud2lkdGgpO1xuICAgICAgb3V0LnkyID0gTWF0aC5taW4ob3V0LnkyLCBsb2FkZWRJbWFnZS50cmFuc2Zvcm1lZC5zaXplLmhlaWdodCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIGdldFJlc2l6ZVJhdGlvKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBzZXR0aW5nczogQ3JvcHBlclNldHRpbmdzKTogbnVtYmVyIHtcbiAgICBjb25zdCByYXRpb1dpZHRoID0gc2V0dGluZ3MucmVzaXplVG9XaWR0aCAvIHdpZHRoO1xuICAgIGNvbnN0IHJhdGlvSGVpZ2h0ID0gc2V0dGluZ3MucmVzaXplVG9IZWlnaHQgLyBoZWlnaHQ7XG4gICAgY29uc3QgcmF0aW9zID0gbmV3IEFycmF5PG51bWJlcj4oKTtcblxuICAgIGlmIChzZXR0aW5ncy5yZXNpemVUb1dpZHRoID4gMCkge1xuICAgICAgcmF0aW9zLnB1c2gocmF0aW9XaWR0aCk7XG4gICAgfVxuICAgIGlmIChzZXR0aW5ncy5yZXNpemVUb0hlaWdodCA+IDApIHtcbiAgICAgIHJhdGlvcy5wdXNoKHJhdGlvSGVpZ2h0KTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSByYXRpb3MubGVuZ3RoID09PSAwID8gMSA6IE1hdGgubWluKC4uLnJhdGlvcyk7XG5cbiAgICBpZiAocmVzdWx0ID4gMSAmJiAhc2V0dGluZ3Mub25seVNjYWxlRG93bikge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgubWluKHJlc3VsdCwgMSk7XG4gIH1cblxuICBnZXRRdWFsaXR5KHNldHRpbmdzOiBDcm9wcGVyU2V0dGluZ3MpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLm1pbigxLCBNYXRoLm1heCgwLCBzZXR0aW5ncy5pbWFnZVF1YWxpdHkgLyAxMDApKTtcbiAgfVxufVxuIl19
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvcC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWltYWdlLWNyb3BwZXIvc3JjL2xpYi9zZXJ2aWNlcy9jcm9wLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQUl2RCxNQUFNLE9BQU8sV0FBVztJQUl0QixJQUFJLENBQUMsV0FBd0IsRUFBRSxPQUF3QixFQUFFLFFBQXlCLEVBQUUsTUFBa0IsRUFBRSxPQUFtQjtRQUN6SCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDckYsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEVBQUUsR0FBRyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQ2xELE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxFQUFFLEdBQUcsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUNuRCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBc0IsQ0FBQztRQUN6RSxVQUFVLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUN6QixVQUFVLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUUzQixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBSSxRQUFRLENBQUMsZUFBZSxJQUFJLElBQUksRUFBRTtZQUNwQyxHQUFHLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7WUFDekMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztTQUNuQztRQUVELE1BQU0sTUFBTSxHQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JGLE1BQU0sTUFBTSxHQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JGLE1BQU0sRUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFekYsTUFBTSxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDO1FBQ2pELEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztRQUNwSSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBQ3RFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBRTdELEdBQUcsQ0FBQyxTQUFTLENBQ1gsZ0JBQWdCLENBQUMsS0FBSyxFQUN0QixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUNoQyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUNsQyxDQUFDO1FBRUYsTUFBTSxNQUFNLEdBQXNCO1lBQ2hDLEtBQUssRUFBRSxNQUFNO1lBQ2IsYUFBYTtZQUNiLGVBQWUsRUFBRSxFQUFDLEdBQUcsT0FBTyxFQUFDO1NBQzlCLENBQUM7UUFDRixJQUFJLFFBQVEsQ0FBQyx3QkFBd0IsRUFBRTtZQUNyQyxNQUFNLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ25HO1FBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2pFLElBQUksV0FBVyxLQUFLLENBQUMsRUFBRTtZQUNyQixNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxDQUFDO1lBQy9DLE1BQU0sQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLG1CQUFtQjtnQkFDMUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDO2dCQUNqRCxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUM7WUFDckMsWUFBWSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN2RDtRQUNELElBQUksTUFBTSxLQUFLLE1BQU0sRUFBRTtZQUNyQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUN0RDthQUFNO1lBQ0wsTUFBTSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUM1RixPQUFPLE1BQU0sQ0FBQztTQUNmO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBeUIsRUFBRSxVQUE2QixFQUFFLFFBQXlCO1FBQzFHLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxJQUFJLE9BQU8sQ0FBYyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNJLElBQUksTUFBTSxDQUFDLElBQUksRUFBRTtZQUNmLE1BQU0sQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDckQ7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8sa0JBQWtCLENBQUMsV0FBd0IsRUFBRSxRQUF5QixFQUFFLE9BQW1CO1FBQ2pHLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEtBQUssSUFBSSxFQUFFO1lBQzdDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2xELE9BQU87Z0JBQ0wsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSztnQkFDeEQsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSzthQUN6RCxDQUFDO1NBQ0g7YUFBTTtZQUNMLE9BQU87Z0JBQ0wsVUFBVSxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdILFVBQVUsRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQy9ILENBQUM7U0FDSDtJQUNILENBQUM7SUFFTyxRQUFRLENBQUMsV0FBd0IsRUFBRSxPQUFtQjtRQUM1RCxPQUFPLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQzVELENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxXQUF3QixFQUFFLE9BQXdCLEVBQUUsUUFBeUIsRUFBRSxPQUFtQjtRQUN6SCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNsRCxNQUFNLEdBQUcsR0FBb0I7WUFDM0IsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFDbEMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFDbEMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFDbEMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUM7U0FDbkMsQ0FBQztRQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsd0JBQXdCLEVBQUU7WUFDdEMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0IsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0IsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUQsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDaEU7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxXQUF3QixFQUFFLE9BQXdCLEVBQUUsUUFBeUIsRUFBRSxPQUFtQjtRQUMvSCxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1FBQ2xGLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELElBQUksT0FBZSxDQUFDO1FBQ3BCLElBQUksT0FBZSxDQUFDO1FBRXBCLElBQUksY0FBYyxHQUFHLENBQUMsRUFBRTtZQUN0QixPQUFPLEdBQUcsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RGLE9BQU8sR0FBRyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdkY7YUFBTTtZQUNMLE9BQU8sR0FBRyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckYsT0FBTyxHQUFHLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN4RjtRQUVELE1BQU0sR0FBRyxHQUFvQjtZQUMzQixFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLE9BQU87WUFDNUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxPQUFPO1lBQzVDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsT0FBTztZQUM1QyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLE9BQU87U0FDN0MsQ0FBQztRQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsd0JBQXdCLEVBQUU7WUFDdEMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0IsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0IsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUQsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDaEU7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBYSxFQUFFLE1BQWMsRUFBRSxRQUF5QjtRQUNyRSxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUNsRCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztRQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBRW5DLElBQUksUUFBUSxDQUFDLGFBQWEsR0FBRyxDQUFDLEVBQUU7WUFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN6QjtRQUNELElBQUksUUFBUSxDQUFDLGNBQWMsR0FBRyxDQUFDLEVBQUU7WUFDL0IsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUMxQjtRQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUU3RCxJQUFJLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFO1lBQ3pDLE9BQU8sTUFBTSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxVQUFVLENBQUMsUUFBeUI7UUFDbEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQzs7eUdBL0pVLFdBQVc7NkdBQVgsV0FBVyxjQURDLE1BQU07NEZBQ2xCLFdBQVc7a0JBRHZCLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ3JvcHBlclBvc2l0aW9uLCBEaW1lbnNpb25zLCBJbWFnZUNyb3BwZWRFdmVudCwgTG9hZGVkSW1hZ2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENyb3BwZXJTZXR0aW5ncyB9IGZyb20gJy4uL2ludGVyZmFjZXMvY3JvcHBlci5zZXR0aW5ncyc7XG5pbXBvcnQgeyByZXNpemVDYW52YXMgfSBmcm9tICcuLi91dGlscy9yZXNpemUudXRpbHMnO1xuaW1wb3J0IHsgcGVyY2VudGFnZSB9IGZyb20gJy4uL3V0aWxzL3BlcmNlbnRhZ2UudXRpbHMnO1xuaW1wb3J0IHsgT3V0cHV0VHlwZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY3JvcHBlci1vcHRpb25zLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIENyb3BTZXJ2aWNlIHtcblxuICBjcm9wKGxvYWRlZEltYWdlOiBMb2FkZWRJbWFnZSwgY3JvcHBlcjogQ3JvcHBlclBvc2l0aW9uLCBzZXR0aW5nczogQ3JvcHBlclNldHRpbmdzLCBvdXRwdXQ6ICdibG9iJywgbWF4U2l6ZTogRGltZW5zaW9ucyk6IFByb21pc2U8SW1hZ2VDcm9wcGVkRXZlbnQ+IHwgbnVsbDtcbiAgY3JvcChsb2FkZWRJbWFnZTogTG9hZGVkSW1hZ2UsIGNyb3BwZXI6IENyb3BwZXJQb3NpdGlvbiwgc2V0dGluZ3M6IENyb3BwZXJTZXR0aW5ncywgb3V0cHV0OiAnYmFzZTY0JywgbWF4U2l6ZTogRGltZW5zaW9ucyk6IEltYWdlQ3JvcHBlZEV2ZW50IHwgbnVsbDtcbiAgY3JvcChsb2FkZWRJbWFnZTogTG9hZGVkSW1hZ2UsIGNyb3BwZXI6IENyb3BwZXJQb3NpdGlvbiwgc2V0dGluZ3M6IENyb3BwZXJTZXR0aW5ncywgb3V0cHV0OiBPdXRwdXRUeXBlLCBtYXhTaXplOiBEaW1lbnNpb25zKTogUHJvbWlzZTxJbWFnZUNyb3BwZWRFdmVudD4gfCBJbWFnZUNyb3BwZWRFdmVudCB8IG51bGwge1xuICAgIGNvbnN0IGltYWdlUG9zaXRpb24gPSB0aGlzLmdldEltYWdlUG9zaXRpb24obG9hZGVkSW1hZ2UsIGNyb3BwZXIsIHNldHRpbmdzLCBtYXhTaXplKTtcbiAgICBjb25zdCB3aWR0aCA9IGltYWdlUG9zaXRpb24ueDIgLSBpbWFnZVBvc2l0aW9uLngxO1xuICAgIGNvbnN0IGhlaWdodCA9IGltYWdlUG9zaXRpb24ueTIgLSBpbWFnZVBvc2l0aW9uLnkxO1xuICAgIGNvbnN0IGNyb3BDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKSBhcyBIVE1MQ2FudmFzRWxlbWVudDtcbiAgICBjcm9wQ2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgY3JvcENhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XG5cbiAgICBjb25zdCBjdHggPSBjcm9wQ2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgaWYgKCFjdHgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAoc2V0dGluZ3MuYmFja2dyb3VuZENvbG9yICE9IG51bGwpIHtcbiAgICAgIGN0eC5maWxsU3R5bGUgPSBzZXR0aW5ncy5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICBjdHguZmlsbFJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2NhbGVYID0gKHNldHRpbmdzLnRyYW5zZm9ybS5zY2FsZSB8fCAxKSAqIChzZXR0aW5ncy50cmFuc2Zvcm0uZmxpcEggPyAtMSA6IDEpO1xuICAgIGNvbnN0IHNjYWxlWSA9IChzZXR0aW5ncy50cmFuc2Zvcm0uc2NhbGUgfHwgMSkgKiAoc2V0dGluZ3MudHJhbnNmb3JtLmZsaXBWID8gLTEgOiAxKTtcbiAgICBjb25zdCB7dHJhbnNsYXRlSCwgdHJhbnNsYXRlVn0gPSB0aGlzLmdldENhbnZhc1RyYW5zbGF0ZShsb2FkZWRJbWFnZSwgc2V0dGluZ3MsIG1heFNpemUpO1xuXG4gICAgY29uc3QgdHJhbnNmb3JtZWRJbWFnZSA9IGxvYWRlZEltYWdlLnRyYW5zZm9ybWVkO1xuICAgIGN0eC5zZXRUcmFuc2Zvcm0oc2NhbGVYLCAwLCAwLCBzY2FsZVksIHRyYW5zZm9ybWVkSW1hZ2Uuc2l6ZS53aWR0aCAvIDIgKyB0cmFuc2xhdGVILCB0cmFuc2Zvcm1lZEltYWdlLnNpemUuaGVpZ2h0IC8gMiArIHRyYW5zbGF0ZVYpO1xuICAgIGN0eC50cmFuc2xhdGUoLWltYWdlUG9zaXRpb24ueDEgLyBzY2FsZVgsIC1pbWFnZVBvc2l0aW9uLnkxIC8gc2NhbGVZKTtcbiAgICBjdHgucm90YXRlKChzZXR0aW5ncy50cmFuc2Zvcm0ucm90YXRlIHx8IDApICogTWF0aC5QSSAvIDE4MCk7XG5cbiAgICBjdHguZHJhd0ltYWdlKFxuICAgICAgdHJhbnNmb3JtZWRJbWFnZS5pbWFnZSxcbiAgICAgIC10cmFuc2Zvcm1lZEltYWdlLnNpemUud2lkdGggLyAyLFxuICAgICAgLXRyYW5zZm9ybWVkSW1hZ2Uuc2l6ZS5oZWlnaHQgLyAyXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3VsdDogSW1hZ2VDcm9wcGVkRXZlbnQgPSB7XG4gICAgICB3aWR0aCwgaGVpZ2h0LFxuICAgICAgaW1hZ2VQb3NpdGlvbixcbiAgICAgIGNyb3BwZXJQb3NpdGlvbjogey4uLmNyb3BwZXJ9XG4gICAgfTtcbiAgICBpZiAoc2V0dGluZ3MuY29udGFpbldpdGhpbkFzcGVjdFJhdGlvKSB7XG4gICAgICByZXN1bHQub2Zmc2V0SW1hZ2VQb3NpdGlvbiA9IHRoaXMuZ2V0T2Zmc2V0SW1hZ2VQb3NpdGlvbihsb2FkZWRJbWFnZSwgY3JvcHBlciwgc2V0dGluZ3MsIG1heFNpemUpO1xuICAgIH1cbiAgICBjb25zdCByZXNpemVSYXRpbyA9IHRoaXMuZ2V0UmVzaXplUmF0aW8od2lkdGgsIGhlaWdodCwgc2V0dGluZ3MpO1xuICAgIGlmIChyZXNpemVSYXRpbyAhPT0gMSkge1xuICAgICAgcmVzdWx0LndpZHRoID0gTWF0aC5yb3VuZCh3aWR0aCAqIHJlc2l6ZVJhdGlvKTtcbiAgICAgIHJlc3VsdC5oZWlnaHQgPSBzZXR0aW5ncy5tYWludGFpbkFzcGVjdFJhdGlvXG4gICAgICAgID8gTWF0aC5yb3VuZChyZXN1bHQud2lkdGggLyBzZXR0aW5ncy5hc3BlY3RSYXRpbylcbiAgICAgICAgOiBNYXRoLnJvdW5kKGhlaWdodCAqIHJlc2l6ZVJhdGlvKTtcbiAgICAgIHJlc2l6ZUNhbnZhcyhjcm9wQ2FudmFzLCByZXN1bHQud2lkdGgsIHJlc3VsdC5oZWlnaHQpO1xuICAgIH1cbiAgICBpZiAob3V0cHV0ID09PSAnYmxvYicpIHtcbiAgICAgIHJldHVybiB0aGlzLmNyb3BUb0Jsb2IocmVzdWx0LCBjcm9wQ2FudmFzLCBzZXR0aW5ncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5iYXNlNjQgPSBjcm9wQ2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvJyArIHNldHRpbmdzLmZvcm1hdCwgdGhpcy5nZXRRdWFsaXR5KHNldHRpbmdzKSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY3JvcFRvQmxvYihvdXRwdXQ6IEltYWdlQ3JvcHBlZEV2ZW50LCBjcm9wQ2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCwgc2V0dGluZ3M6IENyb3BwZXJTZXR0aW5ncyk6IFByb21pc2U8SW1hZ2VDcm9wcGVkRXZlbnQ+IHtcbiAgICBvdXRwdXQuYmxvYiA9IGF3YWl0IG5ldyBQcm9taXNlPEJsb2IgfCBudWxsPihyZXNvbHZlID0+IGNyb3BDYW52YXMudG9CbG9iKHJlc29sdmUsICdpbWFnZS8nICsgc2V0dGluZ3MuZm9ybWF0LCB0aGlzLmdldFF1YWxpdHkoc2V0dGluZ3MpKSk7XG4gICAgaWYgKG91dHB1dC5ibG9iKSB7XG4gICAgICBvdXRwdXQub2JqZWN0VXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChvdXRwdXQuYmxvYik7XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH1cblxuICBwcml2YXRlIGdldENhbnZhc1RyYW5zbGF0ZShsb2FkZWRJbWFnZTogTG9hZGVkSW1hZ2UsIHNldHRpbmdzOiBDcm9wcGVyU2V0dGluZ3MsIG1heFNpemU6IERpbWVuc2lvbnMpOiB7IHRyYW5zbGF0ZUg6IG51bWJlciwgdHJhbnNsYXRlVjogbnVtYmVyIH0ge1xuICAgIGlmIChzZXR0aW5ncy50cmFuc2Zvcm0udHJhbnNsYXRlVW5pdCA9PT0gJ3B4Jykge1xuICAgICAgY29uc3QgcmF0aW8gPSB0aGlzLmdldFJhdGlvKGxvYWRlZEltYWdlLCBtYXhTaXplKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRyYW5zbGF0ZUg6IChzZXR0aW5ncy50cmFuc2Zvcm0udHJhbnNsYXRlSCB8fCAwKSAqIHJhdGlvLFxuICAgICAgICB0cmFuc2xhdGVWOiAoc2V0dGluZ3MudHJhbnNmb3JtLnRyYW5zbGF0ZVYgfHwgMCkgKiByYXRpb1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHJhbnNsYXRlSDogc2V0dGluZ3MudHJhbnNmb3JtLnRyYW5zbGF0ZUggPyBwZXJjZW50YWdlKHNldHRpbmdzLnRyYW5zZm9ybS50cmFuc2xhdGVILCBsb2FkZWRJbWFnZS50cmFuc2Zvcm1lZC5zaXplLndpZHRoKSA6IDAsXG4gICAgICAgIHRyYW5zbGF0ZVY6IHNldHRpbmdzLnRyYW5zZm9ybS50cmFuc2xhdGVWID8gcGVyY2VudGFnZShzZXR0aW5ncy50cmFuc2Zvcm0udHJhbnNsYXRlViwgbG9hZGVkSW1hZ2UudHJhbnNmb3JtZWQuc2l6ZS5oZWlnaHQpIDogMFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFJhdGlvKGxvYWRlZEltYWdlOiBMb2FkZWRJbWFnZSwgbWF4U2l6ZTogRGltZW5zaW9ucyk6IG51bWJlciB7XG4gICAgcmV0dXJuIGxvYWRlZEltYWdlLnRyYW5zZm9ybWVkLnNpemUud2lkdGggLyBtYXhTaXplLndpZHRoO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbWFnZVBvc2l0aW9uKGxvYWRlZEltYWdlOiBMb2FkZWRJbWFnZSwgY3JvcHBlcjogQ3JvcHBlclBvc2l0aW9uLCBzZXR0aW5nczogQ3JvcHBlclNldHRpbmdzLCBtYXhTaXplOiBEaW1lbnNpb25zKTogQ3JvcHBlclBvc2l0aW9uIHtcbiAgICBjb25zdCByYXRpbyA9IHRoaXMuZ2V0UmF0aW8obG9hZGVkSW1hZ2UsIG1heFNpemUpO1xuICAgIGNvbnN0IG91dDogQ3JvcHBlclBvc2l0aW9uID0ge1xuICAgICAgeDE6IE1hdGgucm91bmQoY3JvcHBlci54MSAqIHJhdGlvKSxcbiAgICAgIHkxOiBNYXRoLnJvdW5kKGNyb3BwZXIueTEgKiByYXRpbyksXG4gICAgICB4MjogTWF0aC5yb3VuZChjcm9wcGVyLngyICogcmF0aW8pLFxuICAgICAgeTI6IE1hdGgucm91bmQoY3JvcHBlci55MiAqIHJhdGlvKVxuICAgIH07XG5cbiAgICBpZiAoIXNldHRpbmdzLmNvbnRhaW5XaXRoaW5Bc3BlY3RSYXRpbykge1xuICAgICAgb3V0LngxID0gTWF0aC5tYXgob3V0LngxLCAwKTtcbiAgICAgIG91dC55MSA9IE1hdGgubWF4KG91dC55MSwgMCk7XG4gICAgICBvdXQueDIgPSBNYXRoLm1pbihvdXQueDIsIGxvYWRlZEltYWdlLnRyYW5zZm9ybWVkLnNpemUud2lkdGgpO1xuICAgICAgb3V0LnkyID0gTWF0aC5taW4ob3V0LnkyLCBsb2FkZWRJbWFnZS50cmFuc2Zvcm1lZC5zaXplLmhlaWdodCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T2Zmc2V0SW1hZ2VQb3NpdGlvbihsb2FkZWRJbWFnZTogTG9hZGVkSW1hZ2UsIGNyb3BwZXI6IENyb3BwZXJQb3NpdGlvbiwgc2V0dGluZ3M6IENyb3BwZXJTZXR0aW5ncywgbWF4U2l6ZTogRGltZW5zaW9ucyk6IENyb3BwZXJQb3NpdGlvbiB7XG4gICAgY29uc3QgY2FudmFzUm90YXRpb24gPSBzZXR0aW5ncy5jYW52YXNSb3RhdGlvbiArIGxvYWRlZEltYWdlLmV4aWZUcmFuc2Zvcm0ucm90YXRlO1xuICAgIGNvbnN0IHJhdGlvID0gdGhpcy5nZXRSYXRpbyhsb2FkZWRJbWFnZSwgbWF4U2l6ZSk7XG4gICAgbGV0IG9mZnNldFg6IG51bWJlcjtcbiAgICBsZXQgb2Zmc2V0WTogbnVtYmVyO1xuXG4gICAgaWYgKGNhbnZhc1JvdGF0aW9uICUgMikge1xuICAgICAgb2Zmc2V0WCA9IChsb2FkZWRJbWFnZS50cmFuc2Zvcm1lZC5zaXplLndpZHRoIC0gbG9hZGVkSW1hZ2Uub3JpZ2luYWwuc2l6ZS5oZWlnaHQpIC8gMjtcbiAgICAgIG9mZnNldFkgPSAobG9hZGVkSW1hZ2UudHJhbnNmb3JtZWQuc2l6ZS5oZWlnaHQgLSBsb2FkZWRJbWFnZS5vcmlnaW5hbC5zaXplLndpZHRoKSAvIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9mZnNldFggPSAobG9hZGVkSW1hZ2UudHJhbnNmb3JtZWQuc2l6ZS53aWR0aCAtIGxvYWRlZEltYWdlLm9yaWdpbmFsLnNpemUud2lkdGgpIC8gMjtcbiAgICAgIG9mZnNldFkgPSAobG9hZGVkSW1hZ2UudHJhbnNmb3JtZWQuc2l6ZS5oZWlnaHQgLSBsb2FkZWRJbWFnZS5vcmlnaW5hbC5zaXplLmhlaWdodCkgLyAyO1xuICAgIH1cblxuICAgIGNvbnN0IG91dDogQ3JvcHBlclBvc2l0aW9uID0ge1xuICAgICAgeDE6IE1hdGgucm91bmQoY3JvcHBlci54MSAqIHJhdGlvKSAtIG9mZnNldFgsXG4gICAgICB5MTogTWF0aC5yb3VuZChjcm9wcGVyLnkxICogcmF0aW8pIC0gb2Zmc2V0WSxcbiAgICAgIHgyOiBNYXRoLnJvdW5kKGNyb3BwZXIueDIgKiByYXRpbykgLSBvZmZzZXRYLFxuICAgICAgeTI6IE1hdGgucm91bmQoY3JvcHBlci55MiAqIHJhdGlvKSAtIG9mZnNldFlcbiAgICB9O1xuXG4gICAgaWYgKCFzZXR0aW5ncy5jb250YWluV2l0aGluQXNwZWN0UmF0aW8pIHtcbiAgICAgIG91dC54MSA9IE1hdGgubWF4KG91dC54MSwgMCk7XG4gICAgICBvdXQueTEgPSBNYXRoLm1heChvdXQueTEsIDApO1xuICAgICAgb3V0LngyID0gTWF0aC5taW4ob3V0LngyLCBsb2FkZWRJbWFnZS50cmFuc2Zvcm1lZC5zaXplLndpZHRoKTtcbiAgICAgIG91dC55MiA9IE1hdGgubWluKG91dC55MiwgbG9hZGVkSW1hZ2UudHJhbnNmb3JtZWQuc2l6ZS5oZWlnaHQpO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQ7XG4gIH1cblxuICBnZXRSZXNpemVSYXRpbyh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgc2V0dGluZ3M6IENyb3BwZXJTZXR0aW5ncyk6IG51bWJlciB7XG4gICAgY29uc3QgcmF0aW9XaWR0aCA9IHNldHRpbmdzLnJlc2l6ZVRvV2lkdGggLyB3aWR0aDtcbiAgICBjb25zdCByYXRpb0hlaWdodCA9IHNldHRpbmdzLnJlc2l6ZVRvSGVpZ2h0IC8gaGVpZ2h0O1xuICAgIGNvbnN0IHJhdGlvcyA9IG5ldyBBcnJheTxudW1iZXI+KCk7XG5cbiAgICBpZiAoc2V0dGluZ3MucmVzaXplVG9XaWR0aCA+IDApIHtcbiAgICAgIHJhdGlvcy5wdXNoKHJhdGlvV2lkdGgpO1xuICAgIH1cbiAgICBpZiAoc2V0dGluZ3MucmVzaXplVG9IZWlnaHQgPiAwKSB7XG4gICAgICByYXRpb3MucHVzaChyYXRpb0hlaWdodCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gcmF0aW9zLmxlbmd0aCA9PT0gMCA/IDEgOiBNYXRoLm1pbiguLi5yYXRpb3MpO1xuXG4gICAgaWYgKHJlc3VsdCA+IDEgJiYgIXNldHRpbmdzLm9ubHlTY2FsZURvd24pIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLm1pbihyZXN1bHQsIDEpO1xuICB9XG5cbiAgZ2V0UXVhbGl0eShzZXR0aW5nczogQ3JvcHBlclNldHRpbmdzKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgc2V0dGluZ3MuaW1hZ2VRdWFsaXR5IC8gMTAwKSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,40 +1,39 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export class CropperPositionService {
|
|
4
|
-
resetCropperPosition(sourceImage, cropperPosition, settings) {
|
|
4
|
+
resetCropperPosition(sourceImage, cropperPosition, settings, maxSize) {
|
|
5
5
|
if (!sourceImage?.nativeElement) {
|
|
6
6
|
return;
|
|
7
7
|
}
|
|
8
|
-
const sourceImageElement = sourceImage.nativeElement;
|
|
9
8
|
if (settings.cropperStaticHeight && settings.cropperStaticWidth) {
|
|
10
9
|
cropperPosition.x1 = 0;
|
|
11
|
-
cropperPosition.x2 =
|
|
12
|
-
settings.cropperStaticWidth :
|
|
10
|
+
cropperPosition.x2 = maxSize.width > settings.cropperStaticWidth ?
|
|
11
|
+
settings.cropperStaticWidth : maxSize.width;
|
|
13
12
|
cropperPosition.y1 = 0;
|
|
14
|
-
cropperPosition.y2 =
|
|
15
|
-
settings.cropperStaticHeight :
|
|
13
|
+
cropperPosition.y2 = maxSize.height > settings.cropperStaticHeight ?
|
|
14
|
+
settings.cropperStaticHeight : maxSize.height;
|
|
16
15
|
}
|
|
17
16
|
else {
|
|
18
|
-
const cropperWidth = Math.min(settings.cropperScaledMaxWidth,
|
|
19
|
-
const cropperHeight = Math.min(settings.cropperScaledMaxHeight,
|
|
17
|
+
const cropperWidth = Math.min(settings.cropperScaledMaxWidth, maxSize.width);
|
|
18
|
+
const cropperHeight = Math.min(settings.cropperScaledMaxHeight, maxSize.height);
|
|
20
19
|
if (!settings.maintainAspectRatio) {
|
|
21
20
|
cropperPosition.x1 = 0;
|
|
22
21
|
cropperPosition.x2 = cropperWidth;
|
|
23
22
|
cropperPosition.y1 = 0;
|
|
24
23
|
cropperPosition.y2 = cropperHeight;
|
|
25
24
|
}
|
|
26
|
-
else if (
|
|
25
|
+
else if (maxSize.width / settings.aspectRatio < maxSize.height) {
|
|
27
26
|
cropperPosition.x1 = 0;
|
|
28
27
|
cropperPosition.x2 = cropperWidth;
|
|
29
28
|
const cropperHeightWithAspectRatio = cropperWidth / settings.aspectRatio;
|
|
30
|
-
cropperPosition.y1 = (
|
|
29
|
+
cropperPosition.y1 = (maxSize.height - cropperHeightWithAspectRatio) / 2;
|
|
31
30
|
cropperPosition.y2 = cropperPosition.y1 + cropperHeightWithAspectRatio;
|
|
32
31
|
}
|
|
33
32
|
else {
|
|
34
33
|
cropperPosition.y1 = 0;
|
|
35
34
|
cropperPosition.y2 = cropperHeight;
|
|
36
35
|
const cropperWidthWithAspectRatio = cropperHeight * settings.aspectRatio;
|
|
37
|
-
cropperPosition.x1 = (
|
|
36
|
+
cropperPosition.x1 = (maxSize.width - cropperWidthWithAspectRatio) / 2;
|
|
38
37
|
cropperPosition.x2 = cropperPosition.x1 + cropperWidthWithAspectRatio;
|
|
39
38
|
}
|
|
40
39
|
}
|
|
@@ -198,4 +197,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
198
197
|
type: Injectable,
|
|
199
198
|
args: [{ providedIn: 'root' }]
|
|
200
199
|
}] });
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvcHBlci1wb3NpdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWltYWdlLWNyb3BwZXIvc3JjL2xpYi9zZXJ2aWNlcy9jcm9wcGVyLXBvc2l0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLdkQsTUFBTSxPQUFPLHNCQUFzQjtJQUVqQyxvQkFBb0IsQ0FBQyxXQUF1QixFQUFFLGVBQWdDLEVBQUUsUUFBeUI7UUFDdkcsSUFBSSxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUU7WUFDL0IsT0FBTztTQUNSO1FBQ0QsTUFBTSxrQkFBa0IsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDO1FBQ3JELElBQUksUUFBUSxDQUFDLG1CQUFtQixJQUFJLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRTtZQUMvRCxlQUFlLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN2QixlQUFlLENBQUMsRUFBRSxHQUFHLGtCQUFrQixDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQztnQkFDakYsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUM7WUFDL0QsZUFBZSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdkIsZUFBZSxDQUFDLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQUM7Z0JBQ25GLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDO1NBQ2xFO2FBQU07WUFDTCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM5RixN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QUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7b0JBQ3hILGVBQWUsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQztpQkFDekg7Z0JBQ0QsTUFBTTtTQUNUO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLE9BQU8sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsT0FBTyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQzFELENBQUM7O29IQWxOVSxzQkFBc0I7d0hBQXRCLHNCQUFzQixjQURULE1BQU07NEZBQ25CLHNCQUFzQjtrQkFEbEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDcm9wcGVyUG9zaXRpb24sIERpbWVuc2lvbnMsIE1vdmVTdGFydCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ3JvcHBlclNldHRpbmdzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jcm9wcGVyLnNldHRpbmdzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBDcm9wcGVyUG9zaXRpb25TZXJ2aWNlIHtcblxuICByZXNldENyb3BwZXJQb3NpdGlvbihzb3VyY2VJbWFnZTogRWxlbWVudFJlZiwgY3JvcHBlclBvc2l0aW9uOiBDcm9wcGVyUG9zaXRpb24sIHNldHRpbmdzOiBDcm9wcGVyU2V0dGluZ3MpOiB2b2lkIHtcbiAgICBpZiAoIXNvdXJjZUltYWdlPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHNvdXJjZUltYWdlRWxlbWVudCA9IHNvdXJjZUltYWdlLm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKHNldHRpbmdzLmNyb3BwZXJTdGF0aWNIZWlnaHQgJiYgc2V0dGluZ3MuY3JvcHBlclN0YXRpY1dpZHRoKSB7XG4gICAgICBjcm9wcGVyUG9zaXRpb24ueDEgPSAwO1xuICAgICAgY3JvcHBlclBvc2l0aW9uLngyID0gc291cmNlSW1hZ2VFbGVtZW50Lm9mZnNldFdpZHRoID4gc2V0dGluZ3MuY3JvcHBlclN0YXRpY1dpZHRoID9cbiAgICAgICAgc2V0dGluZ3MuY3JvcHBlclN0YXRpY1dpZHRoIDogc291cmNlSW1hZ2VFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgY3JvcHBlclBvc2l0aW9uLnkxID0gMDtcbiAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiA9IHNvdXJjZUltYWdlRWxlbWVudC5vZmZzZXRIZWlnaHQgPiBzZXR0aW5ncy5jcm9wcGVyU3RhdGljSGVpZ2h0ID9cbiAgICAgICAgc2V0dGluZ3MuY3JvcHBlclN0YXRpY0hlaWdodCA6IHNvdXJjZUltYWdlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNyb3BwZXJXaWR0aCA9IE1hdGgubWluKHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNYXhXaWR0aCwgc291cmNlSW1hZ2VFbGVtZW50Lm9mZnNldFdpZHRoKTtcbiAgICAgIGNvbnN0IGNyb3BwZXJIZWlnaHQgPSBNYXRoLm1pbihzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWF4SGVpZ2h0LCBzb3VyY2VJbWFnZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KTtcbiAgICAgIGlmICghc2V0dGluZ3MubWFpbnRhaW5Bc3BlY3RSYXRpbykge1xuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDEgPSAwO1xuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDIgPSBjcm9wcGVyV2lkdGg7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MSA9IDA7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiA9IGNyb3BwZXJIZWlnaHQ7XG4gICAgICB9IGVsc2UgaWYgKHNvdXJjZUltYWdlRWxlbWVudC5vZmZzZXRXaWR0aCAvIHNldHRpbmdzLmFzcGVjdFJhdGlvIDwgc291cmNlSW1hZ2VFbGVtZW50Lm9mZnNldEhlaWdodCkge1xuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDEgPSAwO1xuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDIgPSBjcm9wcGVyV2lkdGg7XG4gICAgICAgIGNvbnN0IGNyb3BwZXJIZWlnaHRXaXRoQXNwZWN0UmF0aW8gPSBjcm9wcGVyV2lkdGggLyBzZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkxID0gKHNvdXJjZUltYWdlRWxlbWVudC5vZmZzZXRIZWlnaHQgLSBjcm9wcGVySGVpZ2h0V2l0aEFzcGVjdFJhdGlvKSAvIDI7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiA9IGNyb3BwZXJQb3NpdGlvbi55MSArIGNyb3BwZXJIZWlnaHRXaXRoQXNwZWN0UmF0aW87XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTEgPSAwO1xuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTIgPSBjcm9wcGVySGVpZ2h0O1xuICAgICAgICBjb25zdCBjcm9wcGVyV2lkdGhXaXRoQXNwZWN0UmF0aW8gPSBjcm9wcGVySGVpZ2h0ICogc2V0dGluZ3MuYXNwZWN0UmF0aW87XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MSA9IChzb3VyY2VJbWFnZUVsZW1lbnQub2Zmc2V0V2lkdGggLSBjcm9wcGVyV2lkdGhXaXRoQXNwZWN0UmF0aW8pIC8gMjtcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLngyID0gY3JvcHBlclBvc2l0aW9uLngxICsgY3JvcHBlcldpZHRoV2l0aEFzcGVjdFJhdGlvO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG1vdmUoZXZlbnQ6IGFueSwgbW92ZVN0YXJ0OiBNb3ZlU3RhcnQsIGNyb3BwZXJQb3NpdGlvbjogQ3JvcHBlclBvc2l0aW9uKSB7XG4gICAgY29uc3QgZGlmZlggPSB0aGlzLmdldENsaWVudFgoZXZlbnQpIC0gbW92ZVN0YXJ0LmNsaWVudFg7XG4gICAgY29uc3QgZGlmZlkgPSB0aGlzLmdldENsaWVudFkoZXZlbnQpIC0gbW92ZVN0YXJ0LmNsaWVudFk7XG5cbiAgICBjcm9wcGVyUG9zaXRpb24ueDEgPSBtb3ZlU3RhcnQueDEgKyBkaWZmWDtcbiAgICBjcm9wcGVyUG9zaXRpb24ueTEgPSBtb3ZlU3RhcnQueTEgKyBkaWZmWTtcbiAgICBjcm9wcGVyUG9zaXRpb24ueDIgPSBtb3ZlU3RhcnQueDIgKyBkaWZmWDtcbiAgICBjcm9wcGVyUG9zaXRpb24ueTIgPSBtb3ZlU3RhcnQueTIgKyBkaWZmWTtcbiAgfVxuXG4gIHJlc2l6ZShldmVudDogYW55LCBtb3ZlU3RhcnQ6IE1vdmVTdGFydCwgY3JvcHBlclBvc2l0aW9uOiBDcm9wcGVyUG9zaXRpb24sIG1heFNpemU6IERpbWVuc2lvbnMsIHNldHRpbmdzOiBDcm9wcGVyU2V0dGluZ3MpOiB2b2lkIHtcbiAgICBjb25zdCBtb3ZlWCA9IHRoaXMuZ2V0Q2xpZW50WChldmVudCkgLSBtb3ZlU3RhcnQuY2xpZW50WDtcbiAgICBjb25zdCBtb3ZlWSA9IHRoaXMuZ2V0Q2xpZW50WShldmVudCkgLSBtb3ZlU3RhcnQuY2xpZW50WTtcbiAgICBzd2l0Y2ggKG1vdmVTdGFydC5wb3NpdGlvbikge1xuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MSA9IE1hdGgubWluKE1hdGgubWF4KG1vdmVTdGFydC54MSArIG1vdmVYLCBjcm9wcGVyUG9zaXRpb24ueDIgLSBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWF4V2lkdGgpLFxuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MiAtIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNaW5XaWR0aCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wbGVmdCc6XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MSA9IE1hdGgubWluKE1hdGgubWF4KG1vdmVTdGFydC54MSArIG1vdmVYLCBjcm9wcGVyUG9zaXRpb24ueDIgLSBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWF4V2lkdGgpLFxuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MiAtIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNaW5XaWR0aCk7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MSA9IE1hdGgubWluKE1hdGgubWF4KG1vdmVTdGFydC55MSArIG1vdmVZLCBjcm9wcGVyUG9zaXRpb24ueTIgLSBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWF4SGVpZ2h0KSxcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTIgLSBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWluSGVpZ2h0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTEgPSBNYXRoLm1pbihNYXRoLm1heChtb3ZlU3RhcnQueTEgKyBtb3ZlWSwgY3JvcHBlclBvc2l0aW9uLnkyIC0gc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1heEhlaWdodCksXG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkyIC0gc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1pbkhlaWdodCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wcmlnaHQnOlxuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDIgPSBNYXRoLm1heChNYXRoLm1pbihtb3ZlU3RhcnQueDIgKyBtb3ZlWCwgY3JvcHBlclBvc2l0aW9uLngxICsgc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1heFdpZHRoKSxcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDEgKyBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWluV2lkdGgpO1xuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTEgPSBNYXRoLm1pbihNYXRoLm1heChtb3ZlU3RhcnQueTEgKyBtb3ZlWSwgY3JvcHBlclBvc2l0aW9uLnkyIC0gc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1heEhlaWdodCksXG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkyIC0gc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1pbkhlaWdodCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDIgPSBNYXRoLm1heChNYXRoLm1pbihtb3ZlU3RhcnQueDIgKyBtb3ZlWCwgY3JvcHBlclBvc2l0aW9uLngxICsgc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1heFdpZHRoKSxcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDEgKyBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWluV2lkdGgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2JvdHRvbXJpZ2h0JzpcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLngyID0gTWF0aC5tYXgoTWF0aC5taW4obW92ZVN0YXJ0LngyICsgbW92ZVgsIGNyb3BwZXJQb3NpdGlvbi54MSArIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNYXhXaWR0aCksXG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLngxICsgc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1pbldpZHRoKTtcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkyID0gTWF0aC5tYXgoTWF0aC5taW4obW92ZVN0YXJ0LnkyICsgbW92ZVksIGNyb3BwZXJQb3NpdGlvbi55MSArIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNYXhIZWlnaHQpLFxuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MSArIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNaW5IZWlnaHQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiA9IE1hdGgubWF4KE1hdGgubWluKG1vdmVTdGFydC55MiArIG1vdmVZLCBjcm9wcGVyUG9zaXRpb24ueTEgKyBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWF4SGVpZ2h0KSxcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTEgKyBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWluSGVpZ2h0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdib3R0b21sZWZ0JzpcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLngxID0gTWF0aC5taW4oTWF0aC5tYXgobW92ZVN0YXJ0LngxICsgbW92ZVgsIGNyb3BwZXJQb3NpdGlvbi54MiAtIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNYXhXaWR0aCksXG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLngyIC0gc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1pbldpZHRoKTtcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkyID0gTWF0aC5tYXgoTWF0aC5taW4obW92ZVN0YXJ0LnkyICsgbW92ZVksIGNyb3BwZXJQb3NpdGlvbi55MSArIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNYXhIZWlnaHQpLFxuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MSArIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNaW5IZWlnaHQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgIGNvbnN0IHNjYWxlID0gZXZlbnQuc2NhbGU7XG4gICAgICAgIGNvbnN0IG5ld1dpZHRoID0gTWF0aC5taW4oXG4gICAgICAgICAgTWF0aC5tYXgoc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1pbldpZHRoLCAoTWF0aC5hYnMobW92ZVN0YXJ0LngyIC0gbW92ZVN0YXJ0LngxKSkgKiBzY2FsZSksXG4gICAgICAgICAgc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1heFdpZHRoKTtcbiAgICAgICAgY29uc3QgbmV3SGVpZ2h0ID0gTWF0aC5taW4oXG4gICAgICAgICAgTWF0aC5tYXgoc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1pbkhlaWdodCwgKE1hdGguYWJzKG1vdmVTdGFydC55MiAtIG1vdmVTdGFydC55MSkpICogc2NhbGUpLFxuICAgICAgICAgIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNYXhIZWlnaHQpO1xuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDEgPSBtb3ZlU3RhcnQuY2xpZW50WCAtIG5ld1dpZHRoIC8gMjtcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLngyID0gbW92ZVN0YXJ0LmNsaWVudFggKyBuZXdXaWR0aCAvIDI7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MSA9IG1vdmVTdGFydC5jbGllbnRZIC0gbmV3SGVpZ2h0IC8gMjtcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkyID0gbW92ZVN0YXJ0LmNsaWVudFkgKyBuZXdIZWlnaHQgLyAyO1xuICAgICAgICBpZiAoY3JvcHBlclBvc2l0aW9uLngxIDwgMCkge1xuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MiAtPSBjcm9wcGVyUG9zaXRpb24ueDE7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLngxID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChjcm9wcGVyUG9zaXRpb24ueDIgPiBtYXhTaXplLndpZHRoKSB7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLngxIC09IChjcm9wcGVyUG9zaXRpb24ueDIgLSBtYXhTaXplLndpZHRoKTtcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDIgPSBtYXhTaXplLndpZHRoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjcm9wcGVyUG9zaXRpb24ueTEgPCAwKSB7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkyIC09IGNyb3BwZXJQb3NpdGlvbi55MTtcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTEgPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKGNyb3BwZXJQb3NpdGlvbi55MiA+IG1heFNpemUuaGVpZ2h0KSB7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkxIC09IChjcm9wcGVyUG9zaXRpb24ueTIgLSBtYXhTaXplLmhlaWdodCk7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkyID0gbWF4U2l6ZS5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKHNldHRpbmdzLm1haW50YWluQXNwZWN0UmF0aW8pIHtcbiAgICAgIHRoaXMuY2hlY2tBc3BlY3RSYXRpbyhtb3ZlU3RhcnQucG9zaXRpb24hLCBjcm9wcGVyUG9zaXRpb24sIG1heFNpemUsIHNldHRpbmdzKTtcbiAgICB9XG4gIH1cblxuICBjaGVja0FzcGVjdFJhdGlvKHBvc2l0aW9uOiBzdHJpbmcsIGNyb3BwZXJQb3NpdGlvbjogQ3JvcHBlclBvc2l0aW9uLCBtYXhTaXplOiBEaW1lbnNpb25zLCBzZXR0aW5nczogQ3JvcHBlclNldHRpbmdzKTogdm9pZCB7XG4gICAgbGV0IG92ZXJmbG93WCA9IDA7XG4gICAgbGV0IG92ZXJmbG93WSA9IDA7XG5cbiAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7XG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDIgPSBjcm9wcGVyUG9zaXRpb24ueDEgKyAoY3JvcHBlclBvc2l0aW9uLnkyIC0gY3JvcHBlclBvc2l0aW9uLnkxKSAqIHNldHRpbmdzLmFzcGVjdFJhdGlvO1xuICAgICAgICBvdmVyZmxvd1ggPSBNYXRoLm1heChjcm9wcGVyUG9zaXRpb24ueDIgLSBtYXhTaXplLndpZHRoLCAwKTtcbiAgICAgICAgb3ZlcmZsb3dZID0gTWF0aC5tYXgoMCAtIGNyb3BwZXJQb3NpdGlvbi55MSwgMCk7XG4gICAgICAgIGlmIChvdmVyZmxvd1ggPiAwIHx8IG92ZXJmbG93WSA+IDApIHtcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDIgLT0gKG92ZXJmbG93WSAqIHNldHRpbmdzLmFzcGVjdFJhdGlvKSA+IG92ZXJmbG93WCA/IChvdmVyZmxvd1kgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgOiBvdmVyZmxvd1g7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkxICs9IChvdmVyZmxvd1kgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgPiBvdmVyZmxvd1ggPyBvdmVyZmxvd1kgOiBvdmVyZmxvd1ggLyBzZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MiA9IGNyb3BwZXJQb3NpdGlvbi54MSArIChjcm9wcGVyUG9zaXRpb24ueTIgLSBjcm9wcGVyUG9zaXRpb24ueTEpICogc2V0dGluZ3MuYXNwZWN0UmF0aW87XG4gICAgICAgIG92ZXJmbG93WCA9IE1hdGgubWF4KGNyb3BwZXJQb3NpdGlvbi54MiAtIG1heFNpemUud2lkdGgsIDApO1xuICAgICAgICBvdmVyZmxvd1kgPSBNYXRoLm1heChjcm9wcGVyUG9zaXRpb24ueTIgLSBtYXhTaXplLmhlaWdodCwgMCk7XG4gICAgICAgIGlmIChvdmVyZmxvd1ggPiAwIHx8IG92ZXJmbG93WSA+IDApIHtcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDIgLT0gKG92ZXJmbG93WSAqIHNldHRpbmdzLmFzcGVjdFJhdGlvKSA+IG92ZXJmbG93WCA/IChvdmVyZmxvd1kgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgOiBvdmVyZmxvd1g7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkyIC09IChvdmVyZmxvd1kgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgPiBvdmVyZmxvd1ggPyBvdmVyZmxvd1kgOiAob3ZlcmZsb3dYIC8gc2V0dGluZ3MuYXNwZWN0UmF0aW8pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wbGVmdCc6XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MSA9IGNyb3BwZXJQb3NpdGlvbi55MiAtIChjcm9wcGVyUG9zaXRpb24ueDIgLSBjcm9wcGVyUG9zaXRpb24ueDEpIC8gc2V0dGluZ3MuYXNwZWN0UmF0aW87XG4gICAgICAgIG92ZXJmbG93WCA9IE1hdGgubWF4KDAgLSBjcm9wcGVyUG9zaXRpb24ueDEsIDApO1xuICAgICAgICBvdmVyZmxvd1kgPSBNYXRoLm1heCgwIC0gY3JvcHBlclBvc2l0aW9uLnkxLCAwKTtcbiAgICAgICAgaWYgKG92ZXJmbG93WCA+IDAgfHwgb3ZlcmZsb3dZID4gMCkge1xuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MSArPSAob3ZlcmZsb3dZICogc2V0dGluZ3MuYXNwZWN0UmF0aW8pID4gb3ZlcmZsb3dYID8gKG92ZXJmbG93WSAqIHNldHRpbmdzLmFzcGVjdFJhdGlvKSA6IG92ZXJmbG93WDtcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTEgKz0gKG92ZXJmbG93WSAqIHNldHRpbmdzLmFzcGVjdFJhdGlvKSA+IG92ZXJmbG93WCA/IG92ZXJmbG93WSA6IG92ZXJmbG93WCAvIHNldHRpbmdzLmFzcGVjdFJhdGlvO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wcmlnaHQnOlxuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTEgPSBjcm9wcGVyUG9zaXRpb24ueTIgLSAoY3JvcHBlclBvc2l0aW9uLngyIC0gY3JvcHBlclBvc2l0aW9uLngxKSAvIHNldHRpbmdzLmFzcGVjdFJhdGlvO1xuICAgICAgICBvdmVyZmxvd1ggPSBNYXRoLm1heChjcm9wcGVyUG9zaXRpb24ueDIgLSBtYXhTaXplLndpZHRoLCAwKTtcbiAgICAgICAgb3ZlcmZsb3dZID0gTWF0aC5tYXgoMCAtIGNyb3BwZXJQb3NpdGlvbi55MSwgMCk7XG4gICAgICAgIGlmIChvdmVyZmxvd1ggPiAwIHx8IG92ZXJmbG93WSA+IDApIHtcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDIgLT0gKG92ZXJmbG93WSAqIHNldHRpbmdzLmFzcGVjdFJhdGlvKSA+IG92ZXJmbG93WCA/IChvdmVyZmxvd1kgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgOiBvdmVyZmxvd1g7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkxICs9IChvdmVyZmxvd1kgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgPiBvdmVyZmxvd1ggPyBvdmVyZmxvd1kgOiBvdmVyZmxvd1ggLyBzZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgIGNhc2UgJ2JvdHRvbXJpZ2h0JzpcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkyID0gY3JvcHBlclBvc2l0aW9uLnkxICsgKGNyb3BwZXJQb3NpdGlvbi54MiAtIGNyb3BwZXJQb3NpdGlvbi54MSkgLyBzZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgb3ZlcmZsb3dYID0gTWF0aC5tYXgoY3JvcHBlclBvc2l0aW9uLngyIC0gbWF4U2l6ZS53aWR0aCwgMCk7XG4gICAgICAgIG92ZXJmbG93WSA9IE1hdGgubWF4KGNyb3BwZXJQb3NpdGlvbi55MiAtIG1heFNpemUuaGVpZ2h0LCAwKTtcbiAgICAgICAgaWYgKG92ZXJmbG93WCA+IDAgfHwgb3ZlcmZsb3dZID4gMCkge1xuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MiAtPSAob3ZlcmZsb3dZICogc2V0dGluZ3MuYXNwZWN0UmF0aW8pID4gb3ZlcmZsb3dYID8gKG92ZXJmbG93WSAqIHNldHRpbmdzLmFzcGVjdFJhdGlvKSA6IG92ZXJmbG93WDtcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTIgLT0gKG92ZXJmbG93WSAqIHNldHRpbmdzLmFzcGVjdFJhdGlvKSA+IG92ZXJmbG93WCA/IG92ZXJmbG93WSA6IG92ZXJmbG93WCAvIHNldHRpbmdzLmFzcGVjdFJhdGlvO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICBjYXNlICdib3R0b21sZWZ0JzpcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkyID0gY3JvcHBlclBvc2l0aW9uLnkxICsgKGNyb3BwZXJQb3NpdGlvbi54MiAtIGNyb3BwZXJQb3NpdGlvbi54MSkgLyBzZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgb3ZlcmZsb3dYID0gTWF0aC5tYXgoMCAtIGNyb3BwZXJQb3NpdGlvbi54MSwgMCk7XG4gICAgICAgIG92ZXJmbG93WSA9IE1hdGgubWF4KGNyb3BwZXJQb3NpdGlvbi55MiAtIG1heFNpemUuaGVpZ2h0LCAwKTtcbiAgICAgICAgaWYgKG92ZXJmbG93WCA+IDAgfHwgb3ZlcmZsb3dZID4gMCkge1xuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MSArPSAob3ZlcmZsb3dZICogc2V0dGluZ3MuYXNwZWN0UmF0aW8pID4gb3ZlcmZsb3dYID8gKG92ZXJmbG93WSAqIHNldHRpbmdzLmFzcGVjdFJhdGlvKSA6IG92ZXJmbG93WDtcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTIgLT0gKG92ZXJmbG93WSAqIHNldHRpbmdzLmFzcGVjdFJhdGlvKSA+IG92ZXJmbG93WCA/IG92ZXJmbG93WSA6IG92ZXJmbG93WCAvIHNldHRpbmdzLmFzcGVjdFJhdGlvO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLngyID0gY3JvcHBlclBvc2l0aW9uLngxICsgKGNyb3BwZXJQb3NpdGlvbi55MiAtIGNyb3BwZXJQb3NpdGlvbi55MSkgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkyID0gY3JvcHBlclBvc2l0aW9uLnkxICsgKGNyb3BwZXJQb3NpdGlvbi54MiAtIGNyb3BwZXJQb3NpdGlvbi54MSkgLyBzZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgY29uc3Qgb3ZlcmZsb3dYMSA9IE1hdGgubWF4KDAgLSBjcm9wcGVyUG9zaXRpb24ueDEsIDApO1xuICAgICAgICBjb25zdCBvdmVyZmxvd1gyID0gTWF0aC5tYXgoY3JvcHBlclBvc2l0aW9uLngyIC0gbWF4U2l6ZS53aWR0aCwgMCk7XG4gICAgICAgIGNvbnN0IG92ZXJmbG93WTEgPSBNYXRoLm1heChjcm9wcGVyUG9zaXRpb24ueTIgLSBtYXhTaXplLmhlaWdodCwgMCk7XG4gICAgICAgIGNvbnN0IG92ZXJmbG93WTIgPSBNYXRoLm1heCgwIC0gY3JvcHBlclBvc2l0aW9uLnkxLCAwKTtcbiAgICAgICAgaWYgKG92ZXJmbG93WDEgPiAwIHx8IG92ZXJmbG93WDIgPiAwIHx8IG92ZXJmbG93WTEgPiAwIHx8IG92ZXJmbG93WTIgPiAwKSB7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLngxICs9IChvdmVyZmxvd1kxICogc2V0dGluZ3MuYXNwZWN0UmF0aW8pID4gb3ZlcmZsb3dYMSA/IChvdmVyZmxvd1kxICogc2V0dGluZ3MuYXNwZWN0UmF0aW8pIDogb3ZlcmZsb3dYMTtcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDIgLT0gKG92ZXJmbG93WTIgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgPiBvdmVyZmxvd1gyID8gKG92ZXJmbG93WTIgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgOiBvdmVyZmxvd1gyO1xuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MSArPSAob3ZlcmZsb3dZMiAqIHNldHRpbmdzLmFzcGVjdFJhdGlvKSA+IG92ZXJmbG93WDIgPyBvdmVyZmxvd1kyIDogb3ZlcmZsb3dYMiAvIHNldHRpbmdzLmFzcGVjdFJhdGlvO1xuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiAtPSAob3ZlcmZsb3dZMSAqIHNldHRpbmdzLmFzcGVjdFJhdGlvKSA+IG92ZXJmbG93WDEgPyBvdmVyZmxvd1kxIDogb3ZlcmZsb3dYMSAvIHNldHRpbmdzLmFzcGVjdFJhdGlvO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGdldENsaWVudFgoZXZlbnQ6IGFueSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGV2ZW50LnRvdWNoZXM/LlswXS5jbGllbnRYIHx8IGV2ZW50LmNsaWVudFggfHwgMDtcbiAgfVxuXG4gIGdldENsaWVudFkoZXZlbnQ6IGFueSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGV2ZW50LnRvdWNoZXM/LlswXS5jbGllbnRZIHx8IGV2ZW50LmNsaWVudFkgfHwgMDtcbiAgfVxufVxuIl19
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvcHBlci1wb3NpdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWltYWdlLWNyb3BwZXIvc3JjL2xpYi9zZXJ2aWNlcy9jcm9wcGVyLXBvc2l0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLdkQsTUFBTSxPQUFPLHNCQUFzQjtJQUVqQyxvQkFBb0IsQ0FBQyxXQUF1QixFQUFFLGVBQWdDLEVBQUUsUUFBeUIsRUFBRSxPQUFtQjtRQUM1SCxJQUFJLENBQUMsV0FBVyxFQUFFLGFBQWEsRUFBRTtZQUMvQixPQUFPO1NBQ1I7UUFDRCxJQUFJLFFBQVEsQ0FBQyxtQkFBbUIsSUFBSSxRQUFRLENBQUMsa0JBQWtCLEVBQUU7WUFDL0QsZUFBZSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdkIsZUFBZSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUNoRSxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDOUMsZUFBZSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdkIsZUFBZSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUNsRSxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7U0FDakQ7YUFBTTtZQUNMLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3RSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FB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LENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQztvQkFDeEgsZUFBZSxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDO2lCQUN6SDtnQkFDRCxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsT0FBTyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVTtRQUNuQixPQUFPLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDMUQsQ0FBQzs7b0hBak5VLHNCQUFzQjt3SEFBdEIsc0JBQXNCLGNBRFQsTUFBTTs0RkFDbkIsc0JBQXNCO2tCQURsQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENyb3BwZXJQb3NpdGlvbiwgRGltZW5zaW9ucywgTW92ZVN0YXJ0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDcm9wcGVyU2V0dGluZ3MgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Nyb3BwZXIuc2V0dGluZ3MnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIENyb3BwZXJQb3NpdGlvblNlcnZpY2Uge1xuXG4gIHJlc2V0Q3JvcHBlclBvc2l0aW9uKHNvdXJjZUltYWdlOiBFbGVtZW50UmVmLCBjcm9wcGVyUG9zaXRpb246IENyb3BwZXJQb3NpdGlvbiwgc2V0dGluZ3M6IENyb3BwZXJTZXR0aW5ncywgbWF4U2l6ZTogRGltZW5zaW9ucyk6IHZvaWQge1xuICAgIGlmICghc291cmNlSW1hZ2U/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHNldHRpbmdzLmNyb3BwZXJTdGF0aWNIZWlnaHQgJiYgc2V0dGluZ3MuY3JvcHBlclN0YXRpY1dpZHRoKSB7XG4gICAgICBjcm9wcGVyUG9zaXRpb24ueDEgPSAwO1xuICAgICAgY3JvcHBlclBvc2l0aW9uLngyID0gbWF4U2l6ZS53aWR0aCA+IHNldHRpbmdzLmNyb3BwZXJTdGF0aWNXaWR0aCA/XG4gICAgICAgIHNldHRpbmdzLmNyb3BwZXJTdGF0aWNXaWR0aCA6IG1heFNpemUud2lkdGg7XG4gICAgICBjcm9wcGVyUG9zaXRpb24ueTEgPSAwO1xuICAgICAgY3JvcHBlclBvc2l0aW9uLnkyID0gbWF4U2l6ZS5oZWlnaHQgPiBzZXR0aW5ncy5jcm9wcGVyU3RhdGljSGVpZ2h0ID9cbiAgICAgICAgc2V0dGluZ3MuY3JvcHBlclN0YXRpY0hlaWdodCA6IG1heFNpemUuaGVpZ2h0O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjcm9wcGVyV2lkdGggPSBNYXRoLm1pbihzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWF4V2lkdGgsIG1heFNpemUud2lkdGgpO1xuICAgICAgY29uc3QgY3JvcHBlckhlaWdodCA9IE1hdGgubWluKHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNYXhIZWlnaHQsIG1heFNpemUuaGVpZ2h0KTtcbiAgICAgIGlmICghc2V0dGluZ3MubWFpbnRhaW5Bc3BlY3RSYXRpbykge1xuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDEgPSAwO1xuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDIgPSBjcm9wcGVyV2lkdGg7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MSA9IDA7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiA9IGNyb3BwZXJIZWlnaHQ7XG4gICAgICB9IGVsc2UgaWYgKG1heFNpemUud2lkdGggLyBzZXR0aW5ncy5hc3BlY3RSYXRpbyA8IG1heFNpemUuaGVpZ2h0KSB7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MSA9IDA7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MiA9IGNyb3BwZXJXaWR0aDtcbiAgICAgICAgY29uc3QgY3JvcHBlckhlaWdodFdpdGhBc3BlY3RSYXRpbyA9IGNyb3BwZXJXaWR0aCAvIHNldHRpbmdzLmFzcGVjdFJhdGlvO1xuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTEgPSAobWF4U2l6ZS5oZWlnaHQgLSBjcm9wcGVySGVpZ2h0V2l0aEFzcGVjdFJhdGlvKSAvIDI7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiA9IGNyb3BwZXJQb3NpdGlvbi55MSArIGNyb3BwZXJIZWlnaHRXaXRoQXNwZWN0UmF0aW87XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTEgPSAwO1xuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTIgPSBjcm9wcGVySGVpZ2h0O1xuICAgICAgICBjb25zdCBjcm9wcGVyV2lkdGhXaXRoQXNwZWN0UmF0aW8gPSBjcm9wcGVySGVpZ2h0ICogc2V0dGluZ3MuYXNwZWN0UmF0aW87XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MSA9IChtYXhTaXplLndpZHRoIC0gY3JvcHBlcldpZHRoV2l0aEFzcGVjdFJhdGlvKSAvIDI7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MiA9IGNyb3BwZXJQb3NpdGlvbi54MSArIGNyb3BwZXJXaWR0aFdpdGhBc3BlY3RSYXRpbztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBtb3ZlKGV2ZW50OiBhbnksIG1vdmVTdGFydDogTW92ZVN0YXJ0LCBjcm9wcGVyUG9zaXRpb246IENyb3BwZXJQb3NpdGlvbikge1xuICAgIGNvbnN0IGRpZmZYID0gdGhpcy5nZXRDbGllbnRYKGV2ZW50KSAtIG1vdmVTdGFydC5jbGllbnRYO1xuICAgIGNvbnN0IGRpZmZZID0gdGhpcy5nZXRDbGllbnRZKGV2ZW50KSAtIG1vdmVTdGFydC5jbGllbnRZO1xuXG4gICAgY3JvcHBlclBvc2l0aW9uLngxID0gbW92ZVN0YXJ0LngxICsgZGlmZlg7XG4gICAgY3JvcHBlclBvc2l0aW9uLnkxID0gbW92ZVN0YXJ0LnkxICsgZGlmZlk7XG4gICAgY3JvcHBlclBvc2l0aW9uLngyID0gbW92ZVN0YXJ0LngyICsgZGlmZlg7XG4gICAgY3JvcHBlclBvc2l0aW9uLnkyID0gbW92ZVN0YXJ0LnkyICsgZGlmZlk7XG4gIH1cblxuICByZXNpemUoZXZlbnQ6IGFueSwgbW92ZVN0YXJ0OiBNb3ZlU3RhcnQsIGNyb3BwZXJQb3NpdGlvbjogQ3JvcHBlclBvc2l0aW9uLCBtYXhTaXplOiBEaW1lbnNpb25zLCBzZXR0aW5nczogQ3JvcHBlclNldHRpbmdzKTogdm9pZCB7XG4gICAgY29uc3QgbW92ZVggPSB0aGlzLmdldENsaWVudFgoZXZlbnQpIC0gbW92ZVN0YXJ0LmNsaWVudFg7XG4gICAgY29uc3QgbW92ZVkgPSB0aGlzLmdldENsaWVudFkoZXZlbnQpIC0gbW92ZVN0YXJ0LmNsaWVudFk7XG4gICAgc3dpdGNoIChtb3ZlU3RhcnQucG9zaXRpb24pIHtcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDEgPSBNYXRoLm1pbihNYXRoLm1heChtb3ZlU3RhcnQueDEgKyBtb3ZlWCwgY3JvcHBlclBvc2l0aW9uLngyIC0gc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1heFdpZHRoKSxcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDIgLSBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWluV2lkdGgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcGxlZnQnOlxuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDEgPSBNYXRoLm1pbihNYXRoLm1heChtb3ZlU3RhcnQueDEgKyBtb3ZlWCwgY3JvcHBlclBvc2l0aW9uLngyIC0gc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1heFdpZHRoKSxcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDIgLSBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWluV2lkdGgpO1xuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTEgPSBNYXRoLm1pbihNYXRoLm1heChtb3ZlU3RhcnQueTEgKyBtb3ZlWSwgY3JvcHBlclBvc2l0aW9uLnkyIC0gc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1heEhlaWdodCksXG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkyIC0gc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1pbkhlaWdodCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkxID0gTWF0aC5taW4oTWF0aC5tYXgobW92ZVN0YXJ0LnkxICsgbW92ZVksIGNyb3BwZXJQb3NpdGlvbi55MiAtIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNYXhIZWlnaHQpLFxuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiAtIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNaW5IZWlnaHQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcHJpZ2h0JzpcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLngyID0gTWF0aC5tYXgoTWF0aC5taW4obW92ZVN0YXJ0LngyICsgbW92ZVgsIGNyb3BwZXJQb3NpdGlvbi54MSArIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNYXhXaWR0aCksXG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLngxICsgc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1pbldpZHRoKTtcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkxID0gTWF0aC5taW4oTWF0aC5tYXgobW92ZVN0YXJ0LnkxICsgbW92ZVksIGNyb3BwZXJQb3NpdGlvbi55MiAtIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNYXhIZWlnaHQpLFxuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiAtIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNaW5IZWlnaHQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLngyID0gTWF0aC5tYXgoTWF0aC5taW4obW92ZVN0YXJ0LngyICsgbW92ZVgsIGNyb3BwZXJQb3NpdGlvbi54MSArIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNYXhXaWR0aCksXG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLngxICsgc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1pbldpZHRoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdib3R0b21yaWdodCc6XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MiA9IE1hdGgubWF4KE1hdGgubWluKG1vdmVTdGFydC54MiArIG1vdmVYLCBjcm9wcGVyUG9zaXRpb24ueDEgKyBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWF4V2lkdGgpLFxuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MSArIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNaW5XaWR0aCk7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiA9IE1hdGgubWF4KE1hdGgubWluKG1vdmVTdGFydC55MiArIG1vdmVZLCBjcm9wcGVyUG9zaXRpb24ueTEgKyBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWF4SGVpZ2h0KSxcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTEgKyBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWluSGVpZ2h0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTIgPSBNYXRoLm1heChNYXRoLm1pbihtb3ZlU3RhcnQueTIgKyBtb3ZlWSwgY3JvcHBlclBvc2l0aW9uLnkxICsgc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1heEhlaWdodCksXG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkxICsgc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1pbkhlaWdodCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYm90dG9tbGVmdCc6XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MSA9IE1hdGgubWluKE1hdGgubWF4KG1vdmVTdGFydC54MSArIG1vdmVYLCBjcm9wcGVyUG9zaXRpb24ueDIgLSBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWF4V2lkdGgpLFxuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MiAtIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNaW5XaWR0aCk7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiA9IE1hdGgubWF4KE1hdGgubWluKG1vdmVTdGFydC55MiArIG1vdmVZLCBjcm9wcGVyUG9zaXRpb24ueTEgKyBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWF4SGVpZ2h0KSxcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTEgKyBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWluSGVpZ2h0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICBjb25zdCBzY2FsZSA9IGV2ZW50LnNjYWxlO1xuICAgICAgICBjb25zdCBuZXdXaWR0aCA9IE1hdGgubWluKFxuICAgICAgICAgIE1hdGgubWF4KHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNaW5XaWR0aCwgKE1hdGguYWJzKG1vdmVTdGFydC54MiAtIG1vdmVTdGFydC54MSkpICogc2NhbGUpLFxuICAgICAgICAgIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNYXhXaWR0aCk7XG4gICAgICAgIGNvbnN0IG5ld0hlaWdodCA9IE1hdGgubWluKFxuICAgICAgICAgIE1hdGgubWF4KHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNaW5IZWlnaHQsIChNYXRoLmFicyhtb3ZlU3RhcnQueTIgLSBtb3ZlU3RhcnQueTEpKSAqIHNjYWxlKSxcbiAgICAgICAgICBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWF4SGVpZ2h0KTtcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLngxID0gbW92ZVN0YXJ0LmNsaWVudFggLSBuZXdXaWR0aCAvIDI7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MiA9IG1vdmVTdGFydC5jbGllbnRYICsgbmV3V2lkdGggLyAyO1xuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTEgPSBtb3ZlU3RhcnQuY2xpZW50WSAtIG5ld0hlaWdodCAvIDI7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiA9IG1vdmVTdGFydC5jbGllbnRZICsgbmV3SGVpZ2h0IC8gMjtcbiAgICAgICAgaWYgKGNyb3BwZXJQb3NpdGlvbi54MSA8IDApIHtcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDIgLT0gY3JvcHBlclBvc2l0aW9uLngxO1xuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MSA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAoY3JvcHBlclBvc2l0aW9uLngyID4gbWF4U2l6ZS53aWR0aCkge1xuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MSAtPSAoY3JvcHBlclBvc2l0aW9uLngyIC0gbWF4U2l6ZS53aWR0aCk7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLngyID0gbWF4U2l6ZS53aWR0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3JvcHBlclBvc2l0aW9uLnkxIDwgMCkge1xuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiAtPSBjcm9wcGVyUG9zaXRpb24ueTE7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkxID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChjcm9wcGVyUG9zaXRpb24ueTIgPiBtYXhTaXplLmhlaWdodCkge1xuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MSAtPSAoY3JvcHBlclBvc2l0aW9uLnkyIC0gbWF4U2l6ZS5oZWlnaHQpO1xuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiA9IG1heFNpemUuaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChzZXR0aW5ncy5tYWludGFpbkFzcGVjdFJhdGlvKSB7XG4gICAgICB0aGlzLmNoZWNrQXNwZWN0UmF0aW8obW92ZVN0YXJ0LnBvc2l0aW9uISwgY3JvcHBlclBvc2l0aW9uLCBtYXhTaXplLCBzZXR0aW5ncyk7XG4gICAgfVxuICB9XG5cbiAgY2hlY2tBc3BlY3RSYXRpbyhwb3NpdGlvbjogc3RyaW5nLCBjcm9wcGVyUG9zaXRpb246IENyb3BwZXJQb3NpdGlvbiwgbWF4U2l6ZTogRGltZW5zaW9ucywgc2V0dGluZ3M6IENyb3BwZXJTZXR0aW5ncyk6IHZvaWQge1xuICAgIGxldCBvdmVyZmxvd1ggPSAwO1xuICAgIGxldCBvdmVyZmxvd1kgPSAwO1xuXG4gICAgc3dpdGNoIChwb3NpdGlvbikge1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLngyID0gY3JvcHBlclBvc2l0aW9uLngxICsgKGNyb3BwZXJQb3NpdGlvbi55MiAtIGNyb3BwZXJQb3NpdGlvbi55MSkgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgb3ZlcmZsb3dYID0gTWF0aC5tYXgoY3JvcHBlclBvc2l0aW9uLngyIC0gbWF4U2l6ZS53aWR0aCwgMCk7XG4gICAgICAgIG92ZXJmbG93WSA9IE1hdGgubWF4KDAgLSBjcm9wcGVyUG9zaXRpb24ueTEsIDApO1xuICAgICAgICBpZiAob3ZlcmZsb3dYID4gMCB8fCBvdmVyZmxvd1kgPiAwKSB7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLngyIC09IChvdmVyZmxvd1kgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgPiBvdmVyZmxvd1ggPyAob3ZlcmZsb3dZICogc2V0dGluZ3MuYXNwZWN0UmF0aW8pIDogb3ZlcmZsb3dYO1xuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MSArPSAob3ZlcmZsb3dZICogc2V0dGluZ3MuYXNwZWN0UmF0aW8pID4gb3ZlcmZsb3dYID8gb3ZlcmZsb3dZIDogb3ZlcmZsb3dYIC8gc2V0dGluZ3MuYXNwZWN0UmF0aW87XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDIgPSBjcm9wcGVyUG9zaXRpb24ueDEgKyAoY3JvcHBlclBvc2l0aW9uLnkyIC0gY3JvcHBlclBvc2l0aW9uLnkxKSAqIHNldHRpbmdzLmFzcGVjdFJhdGlvO1xuICAgICAgICBvdmVyZmxvd1ggPSBNYXRoLm1heChjcm9wcGVyUG9zaXRpb24ueDIgLSBtYXhTaXplLndpZHRoLCAwKTtcbiAgICAgICAgb3ZlcmZsb3dZID0gTWF0aC5tYXgoY3JvcHBlclBvc2l0aW9uLnkyIC0gbWF4U2l6ZS5oZWlnaHQsIDApO1xuICAgICAgICBpZiAob3ZlcmZsb3dYID4gMCB8fCBvdmVyZmxvd1kgPiAwKSB7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLngyIC09IChvdmVyZmxvd1kgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgPiBvdmVyZmxvd1ggPyAob3ZlcmZsb3dZICogc2V0dGluZ3MuYXNwZWN0UmF0aW8pIDogb3ZlcmZsb3dYO1xuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiAtPSAob3ZlcmZsb3dZICogc2V0dGluZ3MuYXNwZWN0UmF0aW8pID4gb3ZlcmZsb3dYID8gb3ZlcmZsb3dZIDogKG92ZXJmbG93WCAvIHNldHRpbmdzLmFzcGVjdFJhdGlvKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcGxlZnQnOlxuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTEgPSBjcm9wcGVyUG9zaXRpb24ueTIgLSAoY3JvcHBlclBvc2l0aW9uLngyIC0gY3JvcHBlclBvc2l0aW9uLngxKSAvIHNldHRpbmdzLmFzcGVjdFJhdGlvO1xuICAgICAgICBvdmVyZmxvd1ggPSBNYXRoLm1heCgwIC0gY3JvcHBlclBvc2l0aW9uLngxLCAwKTtcbiAgICAgICAgb3ZlcmZsb3dZID0gTWF0aC5tYXgoMCAtIGNyb3BwZXJQb3NpdGlvbi55MSwgMCk7XG4gICAgICAgIGlmIChvdmVyZmxvd1ggPiAwIHx8IG92ZXJmbG93WSA+IDApIHtcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDEgKz0gKG92ZXJmbG93WSAqIHNldHRpbmdzLmFzcGVjdFJhdGlvKSA+IG92ZXJmbG93WCA/IChvdmVyZmxvd1kgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgOiBvdmVyZmxvd1g7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkxICs9IChvdmVyZmxvd1kgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgPiBvdmVyZmxvd1ggPyBvdmVyZmxvd1kgOiBvdmVyZmxvd1ggLyBzZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcHJpZ2h0JzpcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkxID0gY3JvcHBlclBvc2l0aW9uLnkyIC0gKGNyb3BwZXJQb3NpdGlvbi54MiAtIGNyb3BwZXJQb3NpdGlvbi54MSkgLyBzZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgb3ZlcmZsb3dYID0gTWF0aC5tYXgoY3JvcHBlclBvc2l0aW9uLngyIC0gbWF4U2l6ZS53aWR0aCwgMCk7XG4gICAgICAgIG92ZXJmbG93WSA9IE1hdGgubWF4KDAgLSBjcm9wcGVyUG9zaXRpb24ueTEsIDApO1xuICAgICAgICBpZiAob3ZlcmZsb3dYID4gMCB8fCBvdmVyZmxvd1kgPiAwKSB7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLngyIC09IChvdmVyZmxvd1kgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgPiBvdmVyZmxvd1ggPyAob3ZlcmZsb3dZICogc2V0dGluZ3MuYXNwZWN0UmF0aW8pIDogb3ZlcmZsb3dYO1xuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MSArPSAob3ZlcmZsb3dZICogc2V0dGluZ3MuYXNwZWN0UmF0aW8pID4gb3ZlcmZsb3dYID8gb3ZlcmZsb3dZIDogb3ZlcmZsb3dYIC8gc2V0dGluZ3MuYXNwZWN0UmF0aW87XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICBjYXNlICdib3R0b21yaWdodCc6XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiA9IGNyb3BwZXJQb3NpdGlvbi55MSArIChjcm9wcGVyUG9zaXRpb24ueDIgLSBjcm9wcGVyUG9zaXRpb24ueDEpIC8gc2V0dGluZ3MuYXNwZWN0UmF0aW87XG4gICAgICAgIG92ZXJmbG93WCA9IE1hdGgubWF4KGNyb3BwZXJQb3NpdGlvbi54MiAtIG1heFNpemUud2lkdGgsIDApO1xuICAgICAgICBvdmVyZmxvd1kgPSBNYXRoLm1heChjcm9wcGVyUG9zaXRpb24ueTIgLSBtYXhTaXplLmhlaWdodCwgMCk7XG4gICAgICAgIGlmIChvdmVyZmxvd1ggPiAwIHx8IG92ZXJmbG93WSA+IDApIHtcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDIgLT0gKG92ZXJmbG93WSAqIHNldHRpbmdzLmFzcGVjdFJhdGlvKSA+IG92ZXJmbG93WCA/IChvdmVyZmxvd1kgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgOiBvdmVyZmxvd1g7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkyIC09IChvdmVyZmxvd1kgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgPiBvdmVyZmxvd1ggPyBvdmVyZmxvd1kgOiBvdmVyZmxvd1ggLyBzZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgY2FzZSAnYm90dG9tbGVmdCc6XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiA9IGNyb3BwZXJQb3NpdGlvbi55MSArIChjcm9wcGVyUG9zaXRpb24ueDIgLSBjcm9wcGVyUG9zaXRpb24ueDEpIC8gc2V0dGluZ3MuYXNwZWN0UmF0aW87XG4gICAgICAgIG92ZXJmbG93WCA9IE1hdGgubWF4KDAgLSBjcm9wcGVyUG9zaXRpb24ueDEsIDApO1xuICAgICAgICBvdmVyZmxvd1kgPSBNYXRoLm1heChjcm9wcGVyUG9zaXRpb24ueTIgLSBtYXhTaXplLmhlaWdodCwgMCk7XG4gICAgICAgIGlmIChvdmVyZmxvd1ggPiAwIHx8IG92ZXJmbG93WSA+IDApIHtcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDEgKz0gKG92ZXJmbG93WSAqIHNldHRpbmdzLmFzcGVjdFJhdGlvKSA+IG92ZXJmbG93WCA/IChvdmVyZmxvd1kgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgOiBvdmVyZmxvd1g7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkyIC09IChvdmVyZmxvd1kgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgPiBvdmVyZmxvd1ggPyBvdmVyZmxvd1kgOiBvdmVyZmxvd1ggLyBzZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MiA9IGNyb3BwZXJQb3NpdGlvbi54MSArIChjcm9wcGVyUG9zaXRpb24ueTIgLSBjcm9wcGVyUG9zaXRpb24ueTEpICogc2V0dGluZ3MuYXNwZWN0UmF0aW87XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiA9IGNyb3BwZXJQb3NpdGlvbi55MSArIChjcm9wcGVyUG9zaXRpb24ueDIgLSBjcm9wcGVyUG9zaXRpb24ueDEpIC8gc2V0dGluZ3MuYXNwZWN0UmF0aW87XG4gICAgICAgIGNvbnN0IG92ZXJmbG93WDEgPSBNYXRoLm1heCgwIC0gY3JvcHBlclBvc2l0aW9uLngxLCAwKTtcbiAgICAgICAgY29uc3Qgb3ZlcmZsb3dYMiA9IE1hdGgubWF4KGNyb3BwZXJQb3NpdGlvbi54MiAtIG1heFNpemUud2lkdGgsIDApO1xuICAgICAgICBjb25zdCBvdmVyZmxvd1kxID0gTWF0aC5tYXgoY3JvcHBlclBvc2l0aW9uLnkyIC0gbWF4U2l6ZS5oZWlnaHQsIDApO1xuICAgICAgICBjb25zdCBvdmVyZmxvd1kyID0gTWF0aC5tYXgoMCAtIGNyb3BwZXJQb3NpdGlvbi55MSwgMCk7XG4gICAgICAgIGlmIChvdmVyZmxvd1gxID4gMCB8fCBvdmVyZmxvd1gyID4gMCB8fCBvdmVyZmxvd1kxID4gMCB8fCBvdmVyZmxvd1kyID4gMCkge1xuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MSArPSAob3ZlcmZsb3dZMSAqIHNldHRpbmdzLmFzcGVjdFJhdGlvKSA+IG92ZXJmbG93WDEgPyAob3ZlcmZsb3dZMSAqIHNldHRpbmdzLmFzcGVjdFJhdGlvKSA6IG92ZXJmbG93WDE7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLngyIC09IChvdmVyZmxvd1kyICogc2V0dGluZ3MuYXNwZWN0UmF0aW8pID4gb3ZlcmZsb3dYMiA/IChvdmVyZmxvd1kyICogc2V0dGluZ3MuYXNwZWN0UmF0aW8pIDogb3ZlcmZsb3dYMjtcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTEgKz0gKG92ZXJmbG93WTIgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgPiBvdmVyZmxvd1gyID8gb3ZlcmZsb3dZMiA6IG92ZXJmbG93WDIgLyBzZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTIgLT0gKG92ZXJmbG93WTEgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgPiBvdmVyZmxvd1gxID8gb3ZlcmZsb3dZMSA6IG92ZXJmbG93WDEgLyBzZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBnZXRDbGllbnRYKGV2ZW50OiBhbnkpOiBudW1iZXIge1xuICAgIHJldHVybiBldmVudC50b3VjaGVzPy5bMF0uY2xpZW50WCB8fCBldmVudC5jbGllbnRYIHx8IDA7XG4gIH1cblxuICBnZXRDbGllbnRZKGV2ZW50OiBhbnkpOiBudW1iZXIge1xuICAgIHJldHVybiBldmVudC50b3VjaGVzPy5bMF0uY2xpZW50WSB8fCBldmVudC5jbGllbnRZIHx8IDA7XG4gIH1cbn1cbiJdfQ==
|