payload 2.30.0 → 2.30.2
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/components/index.js +4 -4
- package/dist/admin/components/elements/DuplicateDocument/baseBeforeDuplicate.d.ts +6 -0
- package/dist/admin/components/elements/DuplicateDocument/baseBeforeDuplicate.d.ts.map +1 -0
- package/dist/admin/components/elements/DuplicateDocument/baseBeforeDuplicate.js +75 -0
- package/dist/admin/components/elements/DuplicateDocument/index.d.ts.map +1 -1
- package/dist/admin/components/elements/DuplicateDocument/index.js +7 -1
- package/dist/uploads/generateFileData.d.ts.map +1 -1
- package/dist/uploads/generateFileData.js +45 -16
- package/dist/uploads/imageResizer.d.ts.map +1 -1
- package/dist/uploads/imageResizer.js +19 -19
- package/dist/versions/drafts/appendVersionToQueryKey.d.ts +1 -1
- package/dist/versions/drafts/appendVersionToQueryKey.d.ts.map +1 -1
- package/dist/versions/drafts/appendVersionToQueryKey.js +2 -2
- package/dist/versions/drafts/getQueryDraftsSort.d.ts.map +1 -1
- package/dist/versions/drafts/getQueryDraftsSort.js +4 -1
- package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
- package/dist/versions/getLatestCollectionVersion.js +5 -3
- package/package.json +15 -15
|
@@ -112,23 +112,6 @@ const createImageName = ({ extension, height, outputImageName, width })=>{
|
|
|
112
112
|
if (withoutReduction && !originalImageIsSmallerXOrY) return 'resize';
|
|
113
113
|
return hasFocalPoint ? 'resizeWithFocalPoint' : 'resize';
|
|
114
114
|
};
|
|
115
|
-
/**
|
|
116
|
-
* Check if the image should be passed directly to sharp without payload adjusting properties.
|
|
117
|
-
*
|
|
118
|
-
* @param resizeConfig - object containing the requested dimensions and resize options
|
|
119
|
-
* @param original - the original image size
|
|
120
|
-
* @returns true if the image should passed directly to sharp
|
|
121
|
-
*/ const applyPayloadAdjustments = ({ fit, height, width, withoutEnlargement, withoutReduction }, original)=>{
|
|
122
|
-
if (fit === 'contain' || fit === 'inside') return false;
|
|
123
|
-
if (!(0, _isNumber.isNumber)(height) && !(0, _isNumber.isNumber)(width)) return false;
|
|
124
|
-
const targetAspectRatio = width / height;
|
|
125
|
-
const originalAspectRatio = original.width / original.height;
|
|
126
|
-
if (originalAspectRatio === targetAspectRatio) return false;
|
|
127
|
-
const skipEnlargement = withoutEnlargement && (original.height < height || original.width < width);
|
|
128
|
-
const skipReduction = withoutReduction && (original.height > height || original.width > width);
|
|
129
|
-
if (skipEnlargement || skipReduction) return false;
|
|
130
|
-
return true;
|
|
131
|
-
};
|
|
132
115
|
/**
|
|
133
116
|
* Sanitize the resize config. If the resize config has the `withoutReduction`
|
|
134
117
|
* property set to true, the `fit` and `position` properties will be set to `contain`
|
|
@@ -185,6 +168,23 @@ async function resizeAndTransformImageSizes({ config, dimensions, file, mimeType
|
|
|
185
168
|
const sharpBase = (0, _sharp.default)(file.tempFilePath || file.data, sharpOptions).rotate() // pass rotate() to auto-rotate based on EXIF data. https://github.com/payloadcms/payload/pull/3081
|
|
186
169
|
;
|
|
187
170
|
const originalImageMeta = await sharpBase.metadata();
|
|
171
|
+
let adjustedDimensions = {
|
|
172
|
+
...dimensions
|
|
173
|
+
};
|
|
174
|
+
// Images with an exif orientation of 5, 6, 7, or 8 are auto-rotated by sharp
|
|
175
|
+
// Need to adjust the dimensions to match the original image
|
|
176
|
+
if ([
|
|
177
|
+
5,
|
|
178
|
+
6,
|
|
179
|
+
7,
|
|
180
|
+
8
|
|
181
|
+
].includes(originalImageMeta.orientation)) {
|
|
182
|
+
adjustedDimensions = {
|
|
183
|
+
...dimensions,
|
|
184
|
+
height: dimensions.width,
|
|
185
|
+
width: dimensions.height
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
188
|
const resizeImageMeta = {
|
|
189
189
|
height: extractHeightFromImage(originalImageMeta),
|
|
190
190
|
width: originalImageMeta.width
|
|
@@ -203,7 +203,7 @@ async function resizeAndTransformImageSizes({ config, dimensions, file, mimeType
|
|
|
203
203
|
let resized = imageToResize;
|
|
204
204
|
if (resizeAction === 'resizeWithFocalPoint') {
|
|
205
205
|
let { height: resizeHeight, width: resizeWidth } = imageResizeConfig;
|
|
206
|
-
const originalAspectRatio =
|
|
206
|
+
const originalAspectRatio = adjustedDimensions.width / adjustedDimensions.height;
|
|
207
207
|
// Calculate resizeWidth based on original aspect ratio if it's undefined
|
|
208
208
|
if (resizeHeight && !resizeWidth) {
|
|
209
209
|
resizeWidth = Math.round(resizeHeight * originalAspectRatio);
|
|
@@ -338,4 +338,4 @@ async function resizeAndTransformImageSizes({ config, dimensions, file, mimeType
|
|
|
338
338
|
});
|
|
339
339
|
}
|
|
340
340
|
|
|
341
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2ltYWdlUmVzaXplci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFVwbG9hZGVkRmlsZSB9IGZyb20gJ2V4cHJlc3MtZmlsZXVwbG9hZCdcbmltcG9ydCB0eXBlIHsgU2hhcnAsIE1ldGFkYXRhIGFzIFNoYXJwTWV0YWRhdGEsIFNoYXJwT3B0aW9ucyB9IGZyb20gJ3NoYXJwJ1xuXG5pbXBvcnQgeyBmcm9tQnVmZmVyIH0gZnJvbSAnZmlsZS10eXBlJ1xuaW1wb3J0IGZzIGZyb20gJ2ZzJ1xuaW1wb3J0IHNhbml0aXplIGZyb20gJ3Nhbml0aXplLWZpbGVuYW1lJ1xuaW1wb3J0IHNoYXJwIGZyb20gJ3NoYXJwJ1xuXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfSBmcm9tICcuLi9jb2xsZWN0aW9ucy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHtcbiAgRmlsZVNpemUsXG4gIEZpbGVTaXplcyxcbiAgRmlsZVRvU2F2ZSxcbiAgSW1hZ2VTaXplLFxuICBQcm9iZWRJbWFnZVNpemUsXG4gIFVwbG9hZEVkaXRzLFxufSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4uL3V0aWxpdGllcy9pc051bWJlcidcbmltcG9ydCBmaWxlRXhpc3RzIGZyb20gJy4vZmlsZUV4aXN0cydcbmltcG9ydCB7IHR5cGUgV2l0aE1ldGFkYXRhLCBvcHRpb25hbGx5QXBwZW5kTWV0YWRhdGEgfSBmcm9tICcuL29wdGlvbmFsbHlBcHBlbmRNZXRhZGF0YSdcblxudHlwZSBSZXNpemVBcmdzID0ge1xuICBjb25maWc6IFNhbml0aXplZENvbGxlY3Rpb25Db25maWdcbiAgZGltZW5zaW9uczogUHJvYmVkSW1hZ2VTaXplXG4gIGZpbGU6IFVwbG9hZGVkRmlsZVxuICBtaW1lVHlwZTogc3RyaW5nXG4gIHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgc2F2ZWRGaWxlbmFtZTogc3RyaW5nXG4gIHN0YXRpY1BhdGg6IHN0cmluZ1xuICB1cGxvYWRFZGl0cz86IFVwbG9hZEVkaXRzXG4gIHdpdGhNZXRhZGF0YT86IFdpdGhNZXRhZGF0YVxufVxuXG4vKiogUmVzdWx0IGZyb20gcmVzaXppbmcgYW5kIHRyYW5zZm9ybWluZyB0aGUgcmVxdWVzdGVkIGltYWdlIHNpemVzICovXG50eXBlIEltYWdlU2l6ZXNSZXN1bHQgPSB7XG4gIGZvY2FsUG9pbnQ/OiBVcGxvYWRFZGl0c1snZm9jYWxQb2ludCddXG4gIHNpemVEYXRhOiBGaWxlU2l6ZXNcbiAgc2l6ZXNUb1NhdmU6IEZpbGVUb1NhdmVbXVxufVxuXG50eXBlIFNhbml0aXplZEltYWdlRGF0YSA9IHtcbiAgZXh0OiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG59XG5cbi8qKlxuICogU2FuaXRpemUgdGhlIGltYWdlIG5hbWUgYW5kIGV4dHJhY3QgdGhlIGV4dGVuc2lvbiBmcm9tIHRoZSBzb3VyY2UgaW1hZ2VcbiAqXG4gKiBAcGFyYW0gc291cmNlSW1hZ2UgLSB0aGUgc291cmNlIGltYWdlXG4gKiBAcmV0dXJucyB0aGUgc2FuaXRpemVkIG5hbWUgYW5kIGV4dGVuc2lvblxuICovXG5jb25zdCBnZXRTYW5pdGl6ZWRJbWFnZURhdGEgPSAoc291cmNlSW1hZ2U6IHN0cmluZyk6IFNhbml0aXplZEltYWdlRGF0YSA9PiB7XG4gIGNvbnN0IGV4dGVuc2lvbiA9IHNvdXJjZUltYWdlLnNwbGl0KCcuJykucG9wKClcbiAgY29uc3QgbmFtZSA9IHNhbml0aXplKHNvdXJjZUltYWdlLnN1YnN0cmluZygwLCBzb3VyY2VJbWFnZS5sYXN0SW5kZXhPZignLicpKSB8fCBzb3VyY2VJbWFnZSlcbiAgcmV0dXJuIHsgbmFtZSwgZXh0OiBleHRlbnNpb24gfVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBpbWFnZSBuYW1lIGJhc2VkIG9uIHRoZSBvdXRwdXQgaW1hZ2UgbmFtZSwgdGhlIGRpbWVuc2lvbnMgYW5kXG4gKiB0aGUgZXh0ZW5zaW9uLlxuICpcbiAqIElnbm9yZSB0aGUgZmFjdCB0aGF0IGR1cGxpY2F0ZSBuYW1lcyBjb3VsZCBoYXBwZW4gaWYgdGhlIHRoZXJlIGlzIG9uZVxuICogc2l6ZSB3aXRoIGB3aWR0aCBBTkQgaGVpZ2h0YCBhbmQgb25lIHdpdGggb25seSBgaGVpZ2h0IE9SIHdpZHRoYC4gQmVjYXVzZVxuICogc3BhY2UgaXMgZXhwZW5zaXZlLCB3ZSB3aWxsIHJldXNlIHRoZSBzYW1lIGltYWdlIGZvciBib3RoIHNpemVzLlxuICpcbiAqIEBwYXJhbSBvdXRwdXRJbWFnZU5hbWUgLSB0aGUgc2FuaXRpemVkIGltYWdlIG5hbWVcbiAqIEBwYXJhbSBidWZmZXJJbmZvIC0gdGhlIGJ1ZmZlciBpbmZvXG4gKiBAcGFyYW0gZXh0ZW5zaW9uIC0gdGhlIGV4dGVuc2lvbiB0byB1c2VcbiAqIEByZXR1cm5zIHRoZSBuZXcgaW1hZ2UgbmFtZSB0aGF0IGlzIG5vdCB0YWtlblxuICovXG5cbnR5cGUgQ3JlYXRlSW1hZ2VOYW1lQXJncyA9IHtcbiAgZXh0ZW5zaW9uOiBzdHJpbmdcbiAgaGVpZ2h0OiBudW1iZXJcbiAgb3V0cHV0SW1hZ2VOYW1lOiBzdHJpbmdcbiAgd2lkdGg6IG51bWJlclxufVxuY29uc3QgY3JlYXRlSW1hZ2VOYW1lID0gKHtcbiAgZXh0ZW5zaW9uLFxuICBoZWlnaHQsXG4gIG91dHB1dEltYWdlTmFtZSxcbiAgd2lkdGgsXG59OiBDcmVhdGVJbWFnZU5hbWVBcmdzKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGAke291dHB1dEltYWdlTmFtZX0tJHt3aWR0aH14JHtoZWlnaHR9LiR7ZXh0ZW5zaW9ufWBcbn1cblxudHlwZSBDcmVhdGVSZXN1bHRBcmdzID0ge1xuICBmaWxlbmFtZT86IEZpbGVTaXplWydmaWxlbmFtZSddXG4gIGZpbGVzaXplPzogRmlsZVNpemVbJ2ZpbGVzaXplJ11cbiAgaGVpZ2h0PzogRmlsZVNpemVbJ2hlaWdodCddXG4gIG1pbWVUeXBlPzogRmlsZVNpemVbJ21pbWVUeXBlJ11cbiAgbmFtZTogc3RyaW5nXG4gIHNpemVzVG9TYXZlPzogRmlsZVRvU2F2ZVtdXG4gIHdpZHRoPzogRmlsZVNpemVbJ3dpZHRoJ11cbn1cblxuLyoqXG4gKiBDcmVhdGUgdGhlIHJlc3VsdCBvYmplY3QgZm9yIHRoZSBpbWFnZSByZXNpemUgb3BlcmF0aW9uIGJhc2VkIG9uIHRoZVxuICogcHJvdmlkZWQgcGFyYW1ldGVycy4gSWYgdGhlIG5hbWUgaXMgbm90IHByb3ZpZGVkLCBhbiBlbXB0eSByZXN1bHQgb2JqZWN0XG4gKiBpcyByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gbmFtZSAtIHRoZSBuYW1lIG9mIHRoZSBpbWFnZVxuICogQHBhcmFtIGZpbGVuYW1lIC0gdGhlIGZpbGVuYW1lIG9mIHRoZSBpbWFnZVxuICogQHBhcmFtIHdpZHRoIC0gdGhlIHdpZHRoIG9mIHRoZSBpbWFnZVxuICogQHBhcmFtIGhlaWdodCAtIHRoZSBoZWlnaHQgb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gZmlsZXNpemUgLSB0aGUgZmlsZXNpemUgb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gbWltZVR5cGUgLSB0aGUgbWltZSB0eXBlIG9mIHRoZSBpbWFnZVxuICogQHBhcmFtIHNpemVzVG9TYXZlIC0gdGhlIHNpemVzIHRvIHNhdmVcbiAqIEByZXR1cm5zIHRoZSByZXN1bHQgb2JqZWN0XG4gKi9cbmNvbnN0IGNyZWF0ZVJlc3VsdCA9ICh7XG4gIG5hbWUsXG4gIGZpbGVuYW1lID0gbnVsbCxcbiAgZmlsZXNpemUgPSBudWxsLFxuICBoZWlnaHQgPSBudWxsLFxuICBtaW1lVHlwZSA9IG51bGwsXG4gIHNpemVzVG9TYXZlID0gW10sXG4gIHdpZHRoID0gbnVsbCxcbn06IENyZWF0ZVJlc3VsdEFyZ3MpOiBJbWFnZVNpemVzUmVzdWx0ID0+IHtcbiAgcmV0dXJuIHtcbiAgICBzaXplRGF0YToge1xuICAgICAgW25hbWVdOiB7XG4gICAgICAgIGZpbGVuYW1lLFxuICAgICAgICBmaWxlc2l6ZSxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICBtaW1lVHlwZSxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9LFxuICAgIH0sXG4gICAgc2l6ZXNUb1NhdmUsXG4gIH1cbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgd2hldGhlciBvciBub3QgdG8gcmVzaXplIHRoZSBpbWFnZS5cbiAqIC0gcmVzaXplIHVzaW5nIGltYWdlIGNvbmZpZ1xuICogLSByZXNpemUgdXNpbmcgaW1hZ2UgY29uZmlnIHdpdGggZm9jYWwgYWRqdXN0bWVudHNcbiAqIC0gZG8gbm90IHJlc2l6ZSBhdCBhbGxcbiAqXG4gKiBgaW1hZ2VSZXNpemVDb25maWcud2l0aG91dEVubGFyZ2VtZW50YDpcbiAqIC0gdW5kZWZpbmVkIFtkZWZhdWx0XTogdXBsb2FkaW5nIGltYWdlcyB3aXRoIHNtYWxsZXIgd2lkdGggQU5EIGhlaWdodCB0aGFuIHRoZSBpbWFnZSBzaXplIHdpbGwgcmV0dXJuIG51bGxcbiAqIC0gZmFsc2U6IGFsd2F5cyBlbmxhcmdlIGltYWdlcyB0byB0aGUgaW1hZ2Ugc2l6ZVxuICogLSB0cnVlOiBpZiB0aGUgaW1hZ2UgaXMgc21hbGxlciB0aGFuIHRoZSBpbWFnZSBzaXplLCByZXR1cm4gdGhlIG9yaWdpbmFsIGltYWdlXG4gKlxuICogYGltYWdlUmVzaXplQ29uZmlnLndpdGhvdXRSZWR1Y3Rpb25gOlxuICogLSBmYWxzZSBbZGVmYXVsdF06IGFsd2F5cyBlbmxhcmdlIGltYWdlcyB0byB0aGUgaW1hZ2Ugc2l6ZVxuICogLSB0cnVlOiBpZiB0aGUgaW1hZ2UgaXMgc21hbGxlciB0aGFuIHRoZSBpbWFnZSBzaXplLCByZXR1cm4gdGhlIG9yaWdpbmFsIGltYWdlXG4gKlxuICogQHJldHVybiAnb21pdCcgfCAncmVzaXplJyB8ICdyZXNpemVXaXRoRm9jYWxQb2ludCdcbiAqL1xuY29uc3QgZ2V0SW1hZ2VSZXNpemVBY3Rpb24gPSAoe1xuICBkaW1lbnNpb25zOiBvcmlnaW5hbEltYWdlLFxuICBoYXNGb2NhbFBvaW50LFxuICBpbWFnZVJlc2l6ZUNvbmZpZyxcbn06IHtcbiAgZGltZW5zaW9uczogUHJvYmVkSW1hZ2VTaXplXG4gIGhhc0ZvY2FsUG9pbnQ/OiBib29sZWFuXG4gIGltYWdlUmVzaXplQ29uZmlnOiBJbWFnZVNpemVcbn0pOiAnb21pdCcgfCAncmVzaXplJyB8ICdyZXNpemVXaXRoRm9jYWxQb2ludCcgPT4ge1xuICBjb25zdCB7XG4gICAgZml0LFxuICAgIGhlaWdodDogdGFyZ2V0SGVpZ2h0LFxuICAgIHdpZHRoOiB0YXJnZXRXaWR0aCxcbiAgICB3aXRob3V0RW5sYXJnZW1lbnQsXG4gICAgd2l0aG91dFJlZHVjdGlvbixcbiAgfSA9IGltYWdlUmVzaXplQ29uZmlnXG5cbiAgLy8gcHJldmVudCB1cHNjYWxpbmcgYnkgZGVmYXVsdCB3aGVuIHggYW5kIHkgYXJlIGJvdGggc21hbGxlciB0aGFuIHRhcmdldCBpbWFnZSBzaXplXG4gIGlmICh0YXJnZXRIZWlnaHQgJiYgdGFyZ2V0V2lkdGgpIHtcbiAgICBjb25zdCBvcmlnaW5hbEltYWdlSXNTbWFsbGVyWEFuZFkgPVxuICAgICAgb3JpZ2luYWxJbWFnZS53aWR0aCA8IHRhcmdldFdpZHRoICYmIG9yaWdpbmFsSW1hZ2UuaGVpZ2h0IDwgdGFyZ2V0SGVpZ2h0XG4gICAgaWYgKHdpdGhvdXRFbmxhcmdlbWVudCA9PT0gdW5kZWZpbmVkICYmIG9yaWdpbmFsSW1hZ2VJc1NtYWxsZXJYQW5kWSkge1xuICAgICAgcmV0dXJuICdvbWl0JyAvLyBwcmV2ZW50IGltYWdlIHNpemUgZnJvbSBiZWluZyBlbmxhcmdlZFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9yaWdpbmFsSW1hZ2VJc1NtYWxsZXJYT3JZID1cbiAgICBvcmlnaW5hbEltYWdlLndpZHRoIDwgdGFyZ2V0V2lkdGggfHwgb3JpZ2luYWxJbWFnZS5oZWlnaHQgPCB0YXJnZXRIZWlnaHRcbiAgaWYgKGZpdCA9PT0gJ2NvbnRhaW4nIHx8IGZpdCA9PT0gJ2luc2lkZScpIHJldHVybiAncmVzaXplJ1xuICBpZiAoIWlzTnVtYmVyKHRhcmdldEhlaWdodCkgJiYgIWlzTnVtYmVyKHRhcmdldFdpZHRoKSkgcmV0dXJuICdyZXNpemUnXG5cbiAgY29uc3QgdGFyZ2V0QXNwZWN0UmF0aW8gPSB0YXJnZXRXaWR0aCAvIHRhcmdldEhlaWdodFxuICBjb25zdCBvcmlnaW5hbEFzcGVjdFJhdGlvID0gb3JpZ2luYWxJbWFnZS53aWR0aCAvIG9yaWdpbmFsSW1hZ2UuaGVpZ2h0XG4gIGlmIChvcmlnaW5hbEFzcGVjdFJhdGlvID09PSB0YXJnZXRBc3BlY3RSYXRpbykgcmV0dXJuICdyZXNpemUnXG5cbiAgaWYgKHdpdGhvdXRFbmxhcmdlbWVudCAmJiBvcmlnaW5hbEltYWdlSXNTbWFsbGVyWE9yWSkgcmV0dXJuICdyZXNpemUnXG4gIGlmICh3aXRob3V0UmVkdWN0aW9uICYmICFvcmlnaW5hbEltYWdlSXNTbWFsbGVyWE9yWSkgcmV0dXJuICdyZXNpemUnXG5cbiAgcmV0dXJuIGhhc0ZvY2FsUG9pbnQgPyAncmVzaXplV2l0aEZvY2FsUG9pbnQnIDogJ3Jlc2l6ZSdcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgaW1hZ2Ugc2hvdWxkIGJlIHBhc3NlZCBkaXJlY3RseSB0byBzaGFycCB3aXRob3V0IHBheWxvYWQgYWRqdXN0aW5nIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIHJlc2l6ZUNvbmZpZyAtIG9iamVjdCBjb250YWluaW5nIHRoZSByZXF1ZXN0ZWQgZGltZW5zaW9ucyBhbmQgcmVzaXplIG9wdGlvbnNcbiAqIEBwYXJhbSBvcmlnaW5hbCAtIHRoZSBvcmlnaW5hbCBpbWFnZSBzaXplXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBpbWFnZSBzaG91bGQgcGFzc2VkIGRpcmVjdGx5IHRvIHNoYXJwXG4gKi9cbmNvbnN0IGFwcGx5UGF5bG9hZEFkanVzdG1lbnRzID0gKFxuICB7IGZpdCwgaGVpZ2h0LCB3aWR0aCwgd2l0aG91dEVubGFyZ2VtZW50LCB3aXRob3V0UmVkdWN0aW9uIH06IEltYWdlU2l6ZSxcbiAgb3JpZ2luYWw6IFByb2JlZEltYWdlU2l6ZSxcbikgPT4ge1xuICBpZiAoZml0ID09PSAnY29udGFpbicgfHwgZml0ID09PSAnaW5zaWRlJykgcmV0dXJuIGZhbHNlXG4gIGlmICghaXNOdW1iZXIoaGVpZ2h0KSAmJiAhaXNOdW1iZXIod2lkdGgpKSByZXR1cm4gZmFsc2VcblxuICBjb25zdCB0YXJnZXRBc3BlY3RSYXRpbyA9IHdpZHRoIC8gaGVpZ2h0XG4gIGNvbnN0IG9yaWdpbmFsQXNwZWN0UmF0aW8gPSBvcmlnaW5hbC53aWR0aCAvIG9yaWdpbmFsLmhlaWdodFxuICBpZiAob3JpZ2luYWxBc3BlY3RSYXRpbyA9PT0gdGFyZ2V0QXNwZWN0UmF0aW8pIHJldHVybiBmYWxzZVxuXG4gIGNvbnN0IHNraXBFbmxhcmdlbWVudCA9IHdpdGhvdXRFbmxhcmdlbWVudCAmJiAob3JpZ2luYWwuaGVpZ2h0IDwgaGVpZ2h0IHx8IG9yaWdpbmFsLndpZHRoIDwgd2lkdGgpXG4gIGNvbnN0IHNraXBSZWR1Y3Rpb24gPSB3aXRob3V0UmVkdWN0aW9uICYmIChvcmlnaW5hbC5oZWlnaHQgPiBoZWlnaHQgfHwgb3JpZ2luYWwud2lkdGggPiB3aWR0aClcbiAgaWYgKHNraXBFbmxhcmdlbWVudCB8fCBza2lwUmVkdWN0aW9uKSByZXR1cm4gZmFsc2VcblxuICByZXR1cm4gdHJ1ZVxufVxuXG4vKipcbiAqIFNhbml0aXplIHRoZSByZXNpemUgY29uZmlnLiBJZiB0aGUgcmVzaXplIGNvbmZpZyBoYXMgdGhlIGB3aXRob3V0UmVkdWN0aW9uYFxuICogcHJvcGVydHkgc2V0IHRvIHRydWUsIHRoZSBgZml0YCBhbmQgYHBvc2l0aW9uYCBwcm9wZXJ0aWVzIHdpbGwgYmUgc2V0IHRvIGBjb250YWluYFxuICogYW5kIGB0b3AgbGVmdGAgcmVzcGVjdGl2ZWx5LlxuICpcbiAqIEBwYXJhbSByZXNpemVDb25maWcgLSB0aGUgcmVzaXplIGNvbmZpZ1xuICogQHJldHVybnMgYSBzYW5pdGl6ZWQgcmVzaXplIGNvbmZpZ1xuICovXG5jb25zdCBzYW5pdGl6ZVJlc2l6ZUNvbmZpZyA9IChyZXNpemVDb25maWc6IEltYWdlU2l6ZSk6IEltYWdlU2l6ZSA9PiB7XG4gIGlmIChyZXNpemVDb25maWcud2l0aG91dFJlZHVjdGlvbikge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5yZXNpemVDb25maWcsXG4gICAgICAvLyBXaHkgZml0IGBjb250YWluYCBzaG91bGQgYWxzbyBiZSBzZXQgdG8gaHR0cHM6Ly9naXRodWIuY29tL2xvdmVsbC9zaGFycC9pc3N1ZXMvMzU5NVxuICAgICAgZml0OiByZXNpemVDb25maWc/LmZpdCB8fCAnY29udGFpbicsXG4gICAgICBwb3NpdGlvbjogcmVzaXplQ29uZmlnPy5wb3NpdGlvbiB8fCAnbGVmdCB0b3AnLFxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzaXplQ29uZmlnXG59XG5cbi8qKlxuICogVXNlZCB0byBleHRyYWN0IGhlaWdodCBmcm9tIGltYWdlcywgYW5pbWF0ZWQgb3Igbm90LlxuICpcbiAqIEBwYXJhbSBzaGFycE1ldGFkYXRhIC0gdGhlIHNoYXJwIG1ldGFkYXRhXG4gKiBAcmV0dXJucyB0aGUgaGVpZ2h0IG9mIHRoZSBpbWFnZVxuICovXG5mdW5jdGlvbiBleHRyYWN0SGVpZ2h0RnJvbUltYWdlKHNoYXJwTWV0YWRhdGE6IFNoYXJwTWV0YWRhdGEpOiBudW1iZXIge1xuICBpZiAoc2hhcnBNZXRhZGF0YT8ucGFnZXMpIHtcbiAgICByZXR1cm4gc2hhcnBNZXRhZGF0YS5oZWlnaHQgLyBzaGFycE1ldGFkYXRhLnBhZ2VzXG4gIH1cbiAgcmV0dXJuIHNoYXJwTWV0YWRhdGEuaGVpZ2h0XG59XG5cbi8qKlxuICogRm9yIHRoZSBwcm92aWRlZCBpbWFnZSBzaXplcywgaGFuZGxlIHRoZSByZXNpemluZyBhbmQgdGhlIHRyYW5zZm9ybXNcbiAqIChmb3JtYXQsIHRyaW0sIGV0Yy4pIG9mIGVhY2ggcmVxdWVzdGVkIGltYWdlIHNpemUgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9iamVjdC5cbiAqIFRoaXMgb25seSBoYW5kbGVzIHRoZSBpbWFnZSBzaXplcy4gVGhlIHRyYW5zZm9ybXMgb2YgdGhlIG9yaWdpbmFsIGltYWdlXG4gKiBhcmUgaGFuZGxlZCBpbiB7QGxpbmsgLi9nZW5lcmF0ZUZpbGVEYXRhLnRzfS5cbiAqXG4gKiBUaGUgaW1hZ2Ugd2lsbCBiZSByZXNpemVkIGFjY29yZGluZyB0byB0aGUgcHJvdmlkZWRcbiAqIHJlc2l6ZSBjb25maWcuIElmIG5vIGltYWdlIHNpemVzIGFyZSByZXF1ZXN0ZWQsIHRoZSByZXNvbHZlZCBkYXRhIHdpbGwgYmUgZW1wdHkuXG4gKiBGb3IgZXZlcnkgaW1hZ2UgdGhhdCBkb2VzIG5vdCBuZWVkIHRvIGJlIHJlc2l6ZWQsIGEgcmVzdWx0IG9iamVjdCB3aXRoIGBudWxsYFxuICogcGFyYW1ldGVycyB3aWxsIGJlIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSByZXNpemVDb25maWcgLSB0aGUgcmVzaXplIGNvbmZpZ1xuICogQHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgcmVzaXplIG9wZXJhdGlvbihzKVxuICovXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiByZXNpemVBbmRUcmFuc2Zvcm1JbWFnZVNpemVzKHtcbiAgY29uZmlnLFxuICBkaW1lbnNpb25zLFxuICBmaWxlLFxuICBtaW1lVHlwZSxcbiAgcmVxLFxuICBzYXZlZEZpbGVuYW1lLFxuICBzdGF0aWNQYXRoLFxuICB1cGxvYWRFZGl0cyxcbiAgd2l0aE1ldGFkYXRhLFxufTogUmVzaXplQXJncyk6IFByb21pc2U8SW1hZ2VTaXplc1Jlc3VsdD4ge1xuICBjb25zdCB7IGZvY2FsUG9pbnQ6IGZvY2FsUG9pbnRFbmFibGVkID0gdHJ1ZSwgaW1hZ2VTaXplcyB9ID0gY29uZmlnLnVwbG9hZFxuXG4gIC8vIEZvY2FsIHBvaW50IGFkanVzdG1lbnRzXG4gIGNvbnN0IGluY29taW5nRm9jYWxQb2ludCA9IHVwbG9hZEVkaXRzPy5mb2NhbFBvaW50XG4gICAgPyB7XG4gICAgICAgIHg6IGlzTnVtYmVyKHVwbG9hZEVkaXRzLmZvY2FsUG9pbnQueCkgPyBNYXRoLnJvdW5kKHVwbG9hZEVkaXRzLmZvY2FsUG9pbnQueCkgOiA1MCxcbiAgICAgICAgeTogaXNOdW1iZXIodXBsb2FkRWRpdHMuZm9jYWxQb2ludC55KSA/IE1hdGgucm91bmQodXBsb2FkRWRpdHMuZm9jYWxQb2ludC55KSA6IDUwLFxuICAgICAgfVxuICAgIDogdW5kZWZpbmVkXG5cbiAgY29uc3QgZGVmYXVsdFJlc3VsdDogSW1hZ2VTaXplc1Jlc3VsdCA9IHtcbiAgICAuLi4oZm9jYWxQb2ludEVuYWJsZWQgJiYgaW5jb21pbmdGb2NhbFBvaW50ICYmIHsgZm9jYWxQb2ludDogaW5jb21pbmdGb2NhbFBvaW50IH0pLFxuICAgIHNpemVEYXRhOiB7fSxcbiAgICBzaXplc1RvU2F2ZTogW10sXG4gIH1cblxuICAvLyBOb3RoaW5nIHRvIHJlc2l6ZSBoZXJlIHNvIHJldHVybiBhcyBlYXJseSBhcyBwb3NzaWJsZVxuICBpZiAoIWltYWdlU2l6ZXMpIHJldHVybiBkZWZhdWx0UmVzdWx0XG5cbiAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBmaWxlIGlzIGFuaW1hdGVkXG4gIGNvbnN0IGZpbGVJc0FuaW1hdGVkVHlwZSA9IFsnaW1hZ2UvYXZpZicsICdpbWFnZS9naWYnLCAnaW1hZ2Uvd2VicCddLmluY2x1ZGVzKGZpbGUubWltZXR5cGUpXG4gIGNvbnN0IHNoYXJwT3B0aW9uczogU2hhcnBPcHRpb25zID0ge31cblxuICBpZiAoZmlsZUlzQW5pbWF0ZWRUeXBlKSBzaGFycE9wdGlvbnMuYW5pbWF0ZWQgPSB0cnVlXG5cbiAgY29uc3Qgc2hhcnBCYXNlOiBTaGFycCB8IHVuZGVmaW5lZCA9IHNoYXJwKGZpbGUudGVtcEZpbGVQYXRoIHx8IGZpbGUuZGF0YSwgc2hhcnBPcHRpb25zKS5yb3RhdGUoKSAvLyBwYXNzIHJvdGF0ZSgpIHRvIGF1dG8tcm90YXRlIGJhc2VkIG9uIEVYSUYgZGF0YS4gaHR0cHM6Ly9naXRodWIuY29tL3BheWxvYWRjbXMvcGF5bG9hZC9wdWxsLzMwODFcbiAgY29uc3Qgb3JpZ2luYWxJbWFnZU1ldGEgPSBhd2FpdCBzaGFycEJhc2UubWV0YWRhdGEoKVxuXG4gIGNvbnN0IHJlc2l6ZUltYWdlTWV0YSA9IHtcbiAgICBoZWlnaHQ6IGV4dHJhY3RIZWlnaHRGcm9tSW1hZ2Uob3JpZ2luYWxJbWFnZU1ldGEpLFxuICAgIHdpZHRoOiBvcmlnaW5hbEltYWdlTWV0YS53aWR0aCxcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdHM6IEltYWdlU2l6ZXNSZXN1bHRbXSA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgIGltYWdlU2l6ZXMubWFwKGFzeW5jIChpbWFnZVJlc2l6ZUNvbmZpZyk6IFByb21pc2U8SW1hZ2VTaXplc1Jlc3VsdD4gPT4ge1xuICAgICAgaW1hZ2VSZXNpemVDb25maWcgPSBzYW5pdGl6ZVJlc2l6ZUNvbmZpZyhpbWFnZVJlc2l6ZUNvbmZpZylcblxuICAgICAgY29uc3QgcmVzaXplQWN0aW9uID0gZ2V0SW1hZ2VSZXNpemVBY3Rpb24oe1xuICAgICAgICBkaW1lbnNpb25zLFxuICAgICAgICBoYXNGb2NhbFBvaW50OiBCb29sZWFuKGluY29taW5nRm9jYWxQb2ludCksXG4gICAgICAgIGltYWdlUmVzaXplQ29uZmlnLFxuICAgICAgfSlcbiAgICAgIGlmIChyZXNpemVBY3Rpb24gPT09ICdvbWl0JykgcmV0dXJuIGNyZWF0ZVJlc3VsdCh7IG5hbWU6IGltYWdlUmVzaXplQ29uZmlnLm5hbWUgfSlcblxuICAgICAgY29uc3QgaW1hZ2VUb1Jlc2l6ZSA9IHNoYXJwQmFzZS5jbG9uZSgpXG4gICAgICBsZXQgcmVzaXplZCA9IGltYWdlVG9SZXNpemVcblxuICAgICAgaWYgKHJlc2l6ZUFjdGlvbiA9PT0gJ3Jlc2l6ZVdpdGhGb2NhbFBvaW50Jykge1xuICAgICAgICBsZXQgeyBoZWlnaHQ6IHJlc2l6ZUhlaWdodCwgd2lkdGg6IHJlc2l6ZVdpZHRoIH0gPSBpbWFnZVJlc2l6ZUNvbmZpZ1xuXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsQXNwZWN0UmF0aW8gPSBkaW1lbnNpb25zLndpZHRoIC8gZGltZW5zaW9ucy5oZWlnaHRcblxuICAgICAgICAvLyBDYWxjdWxhdGUgcmVzaXplV2lkdGggYmFzZWQgb24gb3JpZ2luYWwgYXNwZWN0IHJhdGlvIGlmIGl0J3MgdW5kZWZpbmVkXG4gICAgICAgIGlmIChyZXNpemVIZWlnaHQgJiYgIXJlc2l6ZVdpZHRoKSB7XG4gICAgICAgICAgcmVzaXplV2lkdGggPSBNYXRoLnJvdW5kKHJlc2l6ZUhlaWdodCAqIG9yaWdpbmFsQXNwZWN0UmF0aW8pXG4gICAgICAgIH1cblxuICAgICAgICAvLyBDYWxjdWxhdGUgcmVzaXplSGVpZ2h0IGJhc2VkIG9uIG9yaWdpbmFsIGFzcGVjdCByYXRpbyBpZiBpdCdzIHVuZGVmaW5lZFxuICAgICAgICBpZiAocmVzaXplV2lkdGggJiYgIXJlc2l6ZUhlaWdodCkge1xuICAgICAgICAgIHJlc2l6ZUhlaWdodCA9IE1hdGgucm91bmQocmVzaXplV2lkdGggLyBvcmlnaW5hbEFzcGVjdFJhdGlvKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFyZXNpemVIZWlnaHQpIHJlc2l6ZUhlaWdodCA9IHJlc2l6ZUltYWdlTWV0YS5oZWlnaHRcbiAgICAgICAgaWYgKCFyZXNpemVXaWR0aCkgcmVzaXplV2lkdGggPSByZXNpemVJbWFnZU1ldGEud2lkdGhcblxuICAgICAgICBjb25zdCByZXNpemVBc3BlY3RSYXRpbyA9IHJlc2l6ZVdpZHRoIC8gcmVzaXplSGVpZ2h0XG4gICAgICAgIGNvbnN0IHByaW9yaXRpemVIZWlnaHQgPSByZXNpemVBc3BlY3RSYXRpbyA8IG9yaWdpbmFsQXNwZWN0UmF0aW9cbiAgICAgICAgLy8gU2NhbGVzIHRoZSBpbWFnZSBiZWZvcmUgZXh0cmFjdGluZyBmcm9tIGl0XG4gICAgICAgIHJlc2l6ZWQgPSBpbWFnZVRvUmVzaXplLnJlc2l6ZSh7XG4gICAgICAgICAgaGVpZ2h0OiBwcmlvcml0aXplSGVpZ2h0ID8gcmVzaXplSGVpZ2h0IDogdW5kZWZpbmVkLFxuICAgICAgICAgIHdpZHRoOiBwcmlvcml0aXplSGVpZ2h0ID8gdW5kZWZpbmVkIDogcmVzaXplV2lkdGgsXG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3QgbWV0YWRhdGFBcHBlbmRlZEZpbGUgPSBhd2FpdCBvcHRpb25hbGx5QXBwZW5kTWV0YWRhdGEoe1xuICAgICAgICAgIHJlcSxcbiAgICAgICAgICBzaGFycEZpbGU6IHJlc2l6ZWQsXG4gICAgICAgICAgd2l0aE1ldGFkYXRhLFxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIE11c3QgcmVhZCBmcm9tIGJ1ZmZlciwgcmVzaXplZC5tZXRhZGF0YSB3aWxsIHJldHVybiB0aGUgb3JpZ2luYWwgaW1hZ2UgbWV0YWRhdGFcbiAgICAgICAgY29uc3QgeyBpbmZvIH0gPSBhd2FpdCBtZXRhZGF0YUFwcGVuZGVkRmlsZS50b0J1ZmZlcih7IHJlc29sdmVXaXRoT2JqZWN0OiB0cnVlIH0pXG5cbiAgICAgICAgcmVzaXplSW1hZ2VNZXRhLmhlaWdodCA9IGV4dHJhY3RIZWlnaHRGcm9tSW1hZ2Uoe1xuICAgICAgICAgIC4uLm9yaWdpbmFsSW1hZ2VNZXRhLFxuICAgICAgICAgIGhlaWdodDogaW5mby5oZWlnaHQsXG4gICAgICAgIH0pXG4gICAgICAgIHJlc2l6ZUltYWdlTWV0YS53aWR0aCA9IGluZm8ud2lkdGhcblxuICAgICAgICBjb25zdCBoYWxmUmVzaXplWCA9IHJlc2l6ZVdpZHRoIC8gMlxuICAgICAgICBjb25zdCB4Rm9jYWxDZW50ZXIgPSByZXNpemVJbWFnZU1ldGEud2lkdGggKiAoaW5jb21pbmdGb2NhbFBvaW50LnggLyAxMDApXG4gICAgICAgIGNvbnN0IGNhbGN1bGF0ZWRSaWdodFBpeGVsQm91bmQgPSB4Rm9jYWxDZW50ZXIgKyBoYWxmUmVzaXplWFxuICAgICAgICBsZXQgbGVmdEJvdW5kID0geEZvY2FsQ2VudGVyIC0gaGFsZlJlc2l6ZVhcblxuICAgICAgICAvLyBpZiB0aGUgcmlnaHQgYm91bmQgaXMgZ3JlYXRlciB0aGFuIHRoZSBpbWFnZSB3aWR0aCwgYWRqdXN0IHRoZSBsZWZ0IGJvdW5kXG4gICAgICAgIC8vIGtlZXBpbmcgZm9jdXMgb24gdGhlIHJpZ2h0XG4gICAgICAgIGlmIChjYWxjdWxhdGVkUmlnaHRQaXhlbEJvdW5kID4gcmVzaXplSW1hZ2VNZXRhLndpZHRoKSB7XG4gICAgICAgICAgbGVmdEJvdW5kID0gcmVzaXplSW1hZ2VNZXRhLndpZHRoIC0gcmVzaXplV2lkdGhcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIHRoZSBsZWZ0IGJvdW5kIGlzIGxlc3MgdGhhbiAwLCBhZGp1c3QgdGhlIGxlZnQgYm91bmQgdG8gMFxuICAgICAgICAvLyBrZWVwaW5nIHRoZSBmb2N1cyBvbiB0aGUgbGVmdFxuICAgICAgICBpZiAobGVmdEJvdW5kIDwgMCkgbGVmdEJvdW5kID0gMFxuXG4gICAgICAgIGNvbnN0IGhhbGZSZXNpemVZID0gcmVzaXplSGVpZ2h0IC8gMlxuICAgICAgICBjb25zdCB5Rm9jYWxDZW50ZXIgPSByZXNpemVJbWFnZU1ldGEuaGVpZ2h0ICogKGluY29taW5nRm9jYWxQb2ludC55IC8gMTAwKVxuICAgICAgICBjb25zdCBjYWxjdWxhdGVkQm90dG9tUGl4ZWxCb3VuZCA9IHlGb2NhbENlbnRlciArIGhhbGZSZXNpemVZXG4gICAgICAgIGxldCB0b3BCb3VuZCA9IHlGb2NhbENlbnRlciAtIGhhbGZSZXNpemVZXG5cbiAgICAgICAgLy8gaWYgdGhlIGJvdHRvbSBib3VuZCBpcyBncmVhdGVyIHRoYW4gdGhlIGltYWdlIGhlaWdodCwgYWRqdXN0IHRoZSB0b3AgYm91bmRcbiAgICAgICAgLy8ga2VlcGluZyB0aGUgaW1hZ2UgYXMgZmFyIHJpZ2h0IGFzIHBvc3NpYmxlXG4gICAgICAgIGlmIChjYWxjdWxhdGVkQm90dG9tUGl4ZWxCb3VuZCA+IHJlc2l6ZUltYWdlTWV0YS5oZWlnaHQpIHtcbiAgICAgICAgICB0b3BCb3VuZCA9IHJlc2l6ZUltYWdlTWV0YS5oZWlnaHQgLSByZXNpemVIZWlnaHRcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIHRoZSB0b3AgYm91bmQgaXMgbGVzcyB0aGFuIDAsIGFkanVzdCB0aGUgdG9wIGJvdW5kIHRvIDBcbiAgICAgICAgLy8ga2VlcGluZyB0aGUgaW1hZ2UgZm9jdXMgbmVhciB0aGUgdG9wXG4gICAgICAgIGlmICh0b3BCb3VuZCA8IDApIHRvcEJvdW5kID0gMFxuXG4gICAgICAgIHJlc2l6ZWQgPSByZXNpemVkLmV4dHJhY3Qoe1xuICAgICAgICAgIGhlaWdodDogcmVzaXplSGVpZ2h0LFxuICAgICAgICAgIGxlZnQ6IE1hdGguZmxvb3IobGVmdEJvdW5kKSxcbiAgICAgICAgICB0b3A6IE1hdGguZmxvb3IodG9wQm91bmQpLFxuICAgICAgICAgIHdpZHRoOiByZXNpemVXaWR0aCxcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc2l6ZWQgPSBpbWFnZVRvUmVzaXplLnJlc2l6ZShpbWFnZVJlc2l6ZUNvbmZpZylcbiAgICAgIH1cblxuICAgICAgaWYgKGltYWdlUmVzaXplQ29uZmlnLmZvcm1hdE9wdGlvbnMpIHtcbiAgICAgICAgcmVzaXplZCA9IHJlc2l6ZWQudG9Gb3JtYXQoXG4gICAgICAgICAgaW1hZ2VSZXNpemVDb25maWcuZm9ybWF0T3B0aW9ucy5mb3JtYXQsXG4gICAgICAgICAgaW1hZ2VSZXNpemVDb25maWcuZm9ybWF0T3B0aW9ucy5vcHRpb25zLFxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIGlmIChpbWFnZVJlc2l6ZUNvbmZpZy50cmltT3B0aW9ucykge1xuICAgICAgICByZXNpemVkID0gcmVzaXplZC50cmltKGltYWdlUmVzaXplQ29uZmlnLnRyaW1PcHRpb25zKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBtZXRhZGF0YUFwcGVuZGVkRmlsZSA9IGF3YWl0IG9wdGlvbmFsbHlBcHBlbmRNZXRhZGF0YSh7XG4gICAgICAgIHJlcSxcbiAgICAgICAgc2hhcnBGaWxlOiByZXNpemVkLFxuICAgICAgICB3aXRoTWV0YWRhdGEsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCB7IGRhdGE6IGJ1ZmZlckRhdGEsIGluZm86IGJ1ZmZlckluZm8gfSA9IGF3YWl0IG1ldGFkYXRhQXBwZW5kZWRGaWxlLnRvQnVmZmVyKHtcbiAgICAgICAgcmVzb2x2ZVdpdGhPYmplY3Q6IHRydWUsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBzYW5pdGl6ZWRJbWFnZSA9IGdldFNhbml0aXplZEltYWdlRGF0YShzYXZlZEZpbGVuYW1lKVxuXG4gICAgICBpZiAocmVxLnBheWxvYWRVcGxvYWRTaXplcykge1xuICAgICAgICByZXEucGF5bG9hZFVwbG9hZFNpemVzW2ltYWdlUmVzaXplQ29uZmlnLm5hbWVdID0gYnVmZmVyRGF0YVxuICAgICAgfVxuXG4gICAgICBjb25zdCBtaW1lSW5mbyA9IGF3YWl0IGZyb21CdWZmZXIoYnVmZmVyRGF0YSlcblxuICAgICAgY29uc3QgaW1hZ2VOYW1lV2l0aERpbWVuc2lvbnMgPSBpbWFnZVJlc2l6ZUNvbmZpZy5nZW5lcmF0ZUltYWdlTmFtZVxuICAgICAgICA/IGltYWdlUmVzaXplQ29uZmlnLmdlbmVyYXRlSW1hZ2VOYW1lKHtcbiAgICAgICAgICAgIGV4dGVuc2lvbjogbWltZUluZm8/LmV4dCB8fCBzYW5pdGl6ZWRJbWFnZS5leHQsXG4gICAgICAgICAgICBoZWlnaHQ6IGV4dHJhY3RIZWlnaHRGcm9tSW1hZ2Uoe1xuICAgICAgICAgICAgICAuLi5vcmlnaW5hbEltYWdlTWV0YSxcbiAgICAgICAgICAgICAgaGVpZ2h0OiBidWZmZXJJbmZvLmhlaWdodCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgb3JpZ2luYWxOYW1lOiBzYW5pdGl6ZWRJbWFnZS5uYW1lLFxuICAgICAgICAgICAgc2l6ZU5hbWU6IGltYWdlUmVzaXplQ29uZmlnLm5hbWUsXG4gICAgICAgICAgICB3aWR0aDogYnVmZmVySW5mby53aWR0aCxcbiAgICAgICAgICB9KVxuICAgICAgICA6IGNyZWF0ZUltYWdlTmFtZSh7XG4gICAgICAgICAgICBleHRlbnNpb246IG1pbWVJbmZvPy5leHQgfHwgc2FuaXRpemVkSW1hZ2UuZXh0LFxuICAgICAgICAgICAgaGVpZ2h0OiBleHRyYWN0SGVpZ2h0RnJvbUltYWdlKHtcbiAgICAgICAgICAgICAgLi4ub3JpZ2luYWxJbWFnZU1ldGEsXG4gICAgICAgICAgICAgIGhlaWdodDogYnVmZmVySW5mby5oZWlnaHQsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG91dHB1dEltYWdlTmFtZTogc2FuaXRpemVkSW1hZ2UubmFtZSxcbiAgICAgICAgICAgIHdpZHRoOiBidWZmZXJJbmZvLndpZHRoLFxuICAgICAgICAgIH0pXG5cbiAgICAgIGNvbnN0IGltYWdlUGF0aCA9IGAke3N0YXRpY1BhdGh9LyR7aW1hZ2VOYW1lV2l0aERpbWVuc2lvbnN9YFxuXG4gICAgICBpZiAoYXdhaXQgZmlsZUV4aXN0cyhpbWFnZVBhdGgpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZnMudW5saW5rU3luYyhpbWFnZVBhdGgpXG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIElnbm9yZSB1bmxpbmsgZXJyb3JzXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBoZWlnaHQsIHNpemUsIHdpZHRoIH0gPSBidWZmZXJJbmZvXG4gICAgICByZXR1cm4gY3JlYXRlUmVzdWx0KHtcbiAgICAgICAgbmFtZTogaW1hZ2VSZXNpemVDb25maWcubmFtZSxcbiAgICAgICAgZmlsZW5hbWU6IGltYWdlTmFtZVdpdGhEaW1lbnNpb25zLFxuICAgICAgICBmaWxlc2l6ZTogc2l6ZSxcbiAgICAgICAgaGVpZ2h0OlxuICAgICAgICAgIGZpbGVJc0FuaW1hdGVkVHlwZSAmJiBvcmlnaW5hbEltYWdlTWV0YS5wYWdlcyA/IGhlaWdodCAvIG9yaWdpbmFsSW1hZ2VNZXRhLnBhZ2VzIDogaGVpZ2h0LFxuICAgICAgICBtaW1lVHlwZTogbWltZUluZm8/Lm1pbWUgfHwgbWltZVR5cGUsXG4gICAgICAgIHNpemVzVG9TYXZlOiBbeyBidWZmZXI6IGJ1ZmZlckRhdGEsIHBhdGg6IGltYWdlUGF0aCB9XSxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9KVxuICAgIH0pLFxuICApXG5cbiAgcmV0dXJuIHJlc3VsdHMucmVkdWNlKFxuICAgIChhY2MsIHJlc3VsdCkgPT4ge1xuICAgICAgT2JqZWN0LmFzc2lnbihhY2Muc2l6ZURhdGEsIHJlc3VsdC5zaXplRGF0YSlcbiAgICAgIGFjYy5zaXplc1RvU2F2ZS5wdXNoKC4uLnJlc3VsdC5zaXplc1RvU2F2ZSlcbiAgICAgIHJldHVybiBhY2NcbiAgICB9LFxuICAgIHsgLi4uZGVmYXVsdFJlc3VsdCB9LFxuICApXG59XG4iXSwibmFtZXMiOlsicmVzaXplQW5kVHJhbnNmb3JtSW1hZ2VTaXplcyIsImdldFNhbml0aXplZEltYWdlRGF0YSIsInNvdXJjZUltYWdlIiwiZXh0ZW5zaW9uIiwic3BsaXQiLCJwb3AiLCJuYW1lIiwic2FuaXRpemUiLCJzdWJzdHJpbmciLCJsYXN0SW5kZXhPZiIsImV4dCIsImNyZWF0ZUltYWdlTmFtZSIsImhlaWdodCIsIm91dHB1dEltYWdlTmFtZSIsIndpZHRoIiwiY3JlYXRlUmVzdWx0IiwiZmlsZW5hbWUiLCJmaWxlc2l6ZSIsIm1pbWVUeXBlIiwic2l6ZXNUb1NhdmUiLCJzaXplRGF0YSIsImdldEltYWdlUmVzaXplQWN0aW9uIiwiZGltZW5zaW9ucyIsIm9yaWdpbmFsSW1hZ2UiLCJoYXNGb2NhbFBvaW50IiwiaW1hZ2VSZXNpemVDb25maWciLCJmaXQiLCJ0YXJnZXRIZWlnaHQiLCJ0YXJnZXRXaWR0aCIsIndpdGhvdXRFbmxhcmdlbWVudCIsIndpdGhvdXRSZWR1Y3Rpb24iLCJvcmlnaW5hbEltYWdlSXNTbWFsbGVyWEFuZFkiLCJ1bmRlZmluZWQiLCJvcmlnaW5hbEltYWdlSXNTbWFsbGVyWE9yWSIsImlzTnVtYmVyIiwidGFyZ2V0QXNwZWN0UmF0aW8iLCJvcmlnaW5hbEFzcGVjdFJhdGlvIiwiYXBwbHlQYXlsb2FkQWRqdXN0bWVudHMiLCJvcmlnaW5hbCIsInNraXBFbmxhcmdlbWVudCIsInNraXBSZWR1Y3Rpb24iLCJzYW5pdGl6ZVJlc2l6ZUNvbmZpZyIsInJlc2l6ZUNvbmZpZyIsInBvc2l0aW9uIiwiZXh0cmFjdEhlaWdodEZyb21JbWFnZSIsInNoYXJwTWV0YWRhdGEiLCJwYWdlcyIsImNvbmZpZyIsImZpbGUiLCJyZXEiLCJzYXZlZEZpbGVuYW1lIiwic3RhdGljUGF0aCIsInVwbG9hZEVkaXRzIiwid2l0aE1ldGFkYXRhIiwiZm9jYWxQb2ludCIsImZvY2FsUG9pbnRFbmFibGVkIiwiaW1hZ2VTaXplcyIsInVwbG9hZCIsImluY29taW5nRm9jYWxQb2ludCIsIngiLCJNYXRoIiwicm91bmQiLCJ5IiwiZGVmYXVsdFJlc3VsdCIsImZpbGVJc0FuaW1hdGVkVHlwZSIsImluY2x1ZGVzIiwibWltZXR5cGUiLCJzaGFycE9wdGlvbnMiLCJhbmltYXRlZCIsInNoYXJwQmFzZSIsInNoYXJwIiwidGVtcEZpbGVQYXRoIiwiZGF0YSIsInJvdGF0ZSIsIm9yaWdpbmFsSW1hZ2VNZXRhIiwibWV0YWRhdGEiLCJyZXNpemVJbWFnZU1ldGEiLCJyZXN1bHRzIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsInJlc2l6ZUFjdGlvbiIsIkJvb2xlYW4iLCJpbWFnZVRvUmVzaXplIiwiY2xvbmUiLCJyZXNpemVkIiwicmVzaXplSGVpZ2h0IiwicmVzaXplV2lkdGgiLCJyZXNpemVBc3BlY3RSYXRpbyIsInByaW9yaXRpemVIZWlnaHQiLCJyZXNpemUiLCJtZXRhZGF0YUFwcGVuZGVkRmlsZSIsIm9wdGlvbmFsbHlBcHBlbmRNZXRhZGF0YSIsInNoYXJwRmlsZSIsImluZm8iLCJ0b0J1ZmZlciIsInJlc29sdmVXaXRoT2JqZWN0IiwiaGFsZlJlc2l6ZVgiLCJ4Rm9jYWxDZW50ZXIiLCJjYWxjdWxhdGVkUmlnaHRQaXhlbEJvdW5kIiwibGVmdEJvdW5kIiwiaGFsZlJlc2l6ZVkiLCJ5Rm9jYWxDZW50ZXIiLCJjYWxjdWxhdGVkQm90dG9tUGl4ZWxCb3VuZCIsInRvcEJvdW5kIiwiZXh0cmFjdCIsImxlZnQiLCJmbG9vciIsInRvcCIsImZvcm1hdE9wdGlvbnMiLCJ0b0Zvcm1hdCIsImZvcm1hdCIsIm9wdGlvbnMiLCJ0cmltT3B0aW9ucyIsInRyaW0iLCJidWZmZXJEYXRhIiwiYnVmZmVySW5mbyIsInNhbml0aXplZEltYWdlIiwicGF5bG9hZFVwbG9hZFNpemVzIiwibWltZUluZm8iLCJmcm9tQnVmZmVyIiwiaW1hZ2VOYW1lV2l0aERpbWVuc2lvbnMiLCJnZW5lcmF0ZUltYWdlTmFtZSIsIm9yaWdpbmFsTmFtZSIsInNpemVOYW1lIiwiaW1hZ2VQYXRoIiwiZmlsZUV4aXN0cyIsImZzIiwidW5saW5rU3luYyIsInNpemUiLCJtaW1lIiwiYnVmZmVyIiwicGF0aCIsInJlZHVjZSIsImFjYyIsInJlc3VsdCIsIk9iamVjdCIsImFzc2lnbiIsInB1c2giXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiI7Ozs7K0JBMlBBOzs7Ozs7Ozs7Ozs7O0NBYUMsR0FDRDs7O2VBQThCQTs7OzBCQXRR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
|
|
341
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2ltYWdlUmVzaXplci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFVwbG9hZGVkRmlsZSB9IGZyb20gJ2V4cHJlc3MtZmlsZXVwbG9hZCdcbmltcG9ydCB0eXBlIHsgU2hhcnAsIE1ldGFkYXRhIGFzIFNoYXJwTWV0YWRhdGEsIFNoYXJwT3B0aW9ucyB9IGZyb20gJ3NoYXJwJ1xuXG5pbXBvcnQgeyBmcm9tQnVmZmVyIH0gZnJvbSAnZmlsZS10eXBlJ1xuaW1wb3J0IGZzIGZyb20gJ2ZzJ1xuaW1wb3J0IHNhbml0aXplIGZyb20gJ3Nhbml0aXplLWZpbGVuYW1lJ1xuaW1wb3J0IHNoYXJwIGZyb20gJ3NoYXJwJ1xuXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfSBmcm9tICcuLi9jb2xsZWN0aW9ucy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHtcbiAgRmlsZVNpemUsXG4gIEZpbGVTaXplcyxcbiAgRmlsZVRvU2F2ZSxcbiAgSW1hZ2VTaXplLFxuICBQcm9iZWRJbWFnZVNpemUsXG4gIFVwbG9hZEVkaXRzLFxufSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4uL3V0aWxpdGllcy9pc051bWJlcidcbmltcG9ydCBmaWxlRXhpc3RzIGZyb20gJy4vZmlsZUV4aXN0cydcbmltcG9ydCB7IHR5cGUgV2l0aE1ldGFkYXRhLCBvcHRpb25hbGx5QXBwZW5kTWV0YWRhdGEgfSBmcm9tICcuL29wdGlvbmFsbHlBcHBlbmRNZXRhZGF0YSdcblxudHlwZSBSZXNpemVBcmdzID0ge1xuICBjb25maWc6IFNhbml0aXplZENvbGxlY3Rpb25Db25maWdcbiAgZGltZW5zaW9uczogUHJvYmVkSW1hZ2VTaXplXG4gIGZpbGU6IFVwbG9hZGVkRmlsZVxuICBtaW1lVHlwZTogc3RyaW5nXG4gIHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgc2F2ZWRGaWxlbmFtZTogc3RyaW5nXG4gIHN0YXRpY1BhdGg6IHN0cmluZ1xuICB1cGxvYWRFZGl0cz86IFVwbG9hZEVkaXRzXG4gIHdpdGhNZXRhZGF0YT86IFdpdGhNZXRhZGF0YVxufVxuXG4vKiogUmVzdWx0IGZyb20gcmVzaXppbmcgYW5kIHRyYW5zZm9ybWluZyB0aGUgcmVxdWVzdGVkIGltYWdlIHNpemVzICovXG50eXBlIEltYWdlU2l6ZXNSZXN1bHQgPSB7XG4gIGZvY2FsUG9pbnQ/OiBVcGxvYWRFZGl0c1snZm9jYWxQb2ludCddXG4gIHNpemVEYXRhOiBGaWxlU2l6ZXNcbiAgc2l6ZXNUb1NhdmU6IEZpbGVUb1NhdmVbXVxufVxuXG50eXBlIFNhbml0aXplZEltYWdlRGF0YSA9IHtcbiAgZXh0OiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG59XG5cbi8qKlxuICogU2FuaXRpemUgdGhlIGltYWdlIG5hbWUgYW5kIGV4dHJhY3QgdGhlIGV4dGVuc2lvbiBmcm9tIHRoZSBzb3VyY2UgaW1hZ2VcbiAqXG4gKiBAcGFyYW0gc291cmNlSW1hZ2UgLSB0aGUgc291cmNlIGltYWdlXG4gKiBAcmV0dXJucyB0aGUgc2FuaXRpemVkIG5hbWUgYW5kIGV4dGVuc2lvblxuICovXG5jb25zdCBnZXRTYW5pdGl6ZWRJbWFnZURhdGEgPSAoc291cmNlSW1hZ2U6IHN0cmluZyk6IFNhbml0aXplZEltYWdlRGF0YSA9PiB7XG4gIGNvbnN0IGV4dGVuc2lvbiA9IHNvdXJjZUltYWdlLnNwbGl0KCcuJykucG9wKClcbiAgY29uc3QgbmFtZSA9IHNhbml0aXplKHNvdXJjZUltYWdlLnN1YnN0cmluZygwLCBzb3VyY2VJbWFnZS5sYXN0SW5kZXhPZignLicpKSB8fCBzb3VyY2VJbWFnZSlcbiAgcmV0dXJuIHsgbmFtZSwgZXh0OiBleHRlbnNpb24gfVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBpbWFnZSBuYW1lIGJhc2VkIG9uIHRoZSBvdXRwdXQgaW1hZ2UgbmFtZSwgdGhlIGRpbWVuc2lvbnMgYW5kXG4gKiB0aGUgZXh0ZW5zaW9uLlxuICpcbiAqIElnbm9yZSB0aGUgZmFjdCB0aGF0IGR1cGxpY2F0ZSBuYW1lcyBjb3VsZCBoYXBwZW4gaWYgdGhlIHRoZXJlIGlzIG9uZVxuICogc2l6ZSB3aXRoIGB3aWR0aCBBTkQgaGVpZ2h0YCBhbmQgb25lIHdpdGggb25seSBgaGVpZ2h0IE9SIHdpZHRoYC4gQmVjYXVzZVxuICogc3BhY2UgaXMgZXhwZW5zaXZlLCB3ZSB3aWxsIHJldXNlIHRoZSBzYW1lIGltYWdlIGZvciBib3RoIHNpemVzLlxuICpcbiAqIEBwYXJhbSBvdXRwdXRJbWFnZU5hbWUgLSB0aGUgc2FuaXRpemVkIGltYWdlIG5hbWVcbiAqIEBwYXJhbSBidWZmZXJJbmZvIC0gdGhlIGJ1ZmZlciBpbmZvXG4gKiBAcGFyYW0gZXh0ZW5zaW9uIC0gdGhlIGV4dGVuc2lvbiB0byB1c2VcbiAqIEByZXR1cm5zIHRoZSBuZXcgaW1hZ2UgbmFtZSB0aGF0IGlzIG5vdCB0YWtlblxuICovXG5cbnR5cGUgQ3JlYXRlSW1hZ2VOYW1lQXJncyA9IHtcbiAgZXh0ZW5zaW9uOiBzdHJpbmdcbiAgaGVpZ2h0OiBudW1iZXJcbiAgb3V0cHV0SW1hZ2VOYW1lOiBzdHJpbmdcbiAgd2lkdGg6IG51bWJlclxufVxuY29uc3QgY3JlYXRlSW1hZ2VOYW1lID0gKHtcbiAgZXh0ZW5zaW9uLFxuICBoZWlnaHQsXG4gIG91dHB1dEltYWdlTmFtZSxcbiAgd2lkdGgsXG59OiBDcmVhdGVJbWFnZU5hbWVBcmdzKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGAke291dHB1dEltYWdlTmFtZX0tJHt3aWR0aH14JHtoZWlnaHR9LiR7ZXh0ZW5zaW9ufWBcbn1cblxudHlwZSBDcmVhdGVSZXN1bHRBcmdzID0ge1xuICBmaWxlbmFtZT86IEZpbGVTaXplWydmaWxlbmFtZSddXG4gIGZpbGVzaXplPzogRmlsZVNpemVbJ2ZpbGVzaXplJ11cbiAgaGVpZ2h0PzogRmlsZVNpemVbJ2hlaWdodCddXG4gIG1pbWVUeXBlPzogRmlsZVNpemVbJ21pbWVUeXBlJ11cbiAgbmFtZTogc3RyaW5nXG4gIHNpemVzVG9TYXZlPzogRmlsZVRvU2F2ZVtdXG4gIHdpZHRoPzogRmlsZVNpemVbJ3dpZHRoJ11cbn1cblxuLyoqXG4gKiBDcmVhdGUgdGhlIHJlc3VsdCBvYmplY3QgZm9yIHRoZSBpbWFnZSByZXNpemUgb3BlcmF0aW9uIGJhc2VkIG9uIHRoZVxuICogcHJvdmlkZWQgcGFyYW1ldGVycy4gSWYgdGhlIG5hbWUgaXMgbm90IHByb3ZpZGVkLCBhbiBlbXB0eSByZXN1bHQgb2JqZWN0XG4gKiBpcyByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gbmFtZSAtIHRoZSBuYW1lIG9mIHRoZSBpbWFnZVxuICogQHBhcmFtIGZpbGVuYW1lIC0gdGhlIGZpbGVuYW1lIG9mIHRoZSBpbWFnZVxuICogQHBhcmFtIHdpZHRoIC0gdGhlIHdpZHRoIG9mIHRoZSBpbWFnZVxuICogQHBhcmFtIGhlaWdodCAtIHRoZSBoZWlnaHQgb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gZmlsZXNpemUgLSB0aGUgZmlsZXNpemUgb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gbWltZVR5cGUgLSB0aGUgbWltZSB0eXBlIG9mIHRoZSBpbWFnZVxuICogQHBhcmFtIHNpemVzVG9TYXZlIC0gdGhlIHNpemVzIHRvIHNhdmVcbiAqIEByZXR1cm5zIHRoZSByZXN1bHQgb2JqZWN0XG4gKi9cbmNvbnN0IGNyZWF0ZVJlc3VsdCA9ICh7XG4gIG5hbWUsXG4gIGZpbGVuYW1lID0gbnVsbCxcbiAgZmlsZXNpemUgPSBudWxsLFxuICBoZWlnaHQgPSBudWxsLFxuICBtaW1lVHlwZSA9IG51bGwsXG4gIHNpemVzVG9TYXZlID0gW10sXG4gIHdpZHRoID0gbnVsbCxcbn06IENyZWF0ZVJlc3VsdEFyZ3MpOiBJbWFnZVNpemVzUmVzdWx0ID0+IHtcbiAgcmV0dXJuIHtcbiAgICBzaXplRGF0YToge1xuICAgICAgW25hbWVdOiB7XG4gICAgICAgIGZpbGVuYW1lLFxuICAgICAgICBmaWxlc2l6ZSxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICBtaW1lVHlwZSxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9LFxuICAgIH0sXG4gICAgc2l6ZXNUb1NhdmUsXG4gIH1cbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgd2hldGhlciBvciBub3QgdG8gcmVzaXplIHRoZSBpbWFnZS5cbiAqIC0gcmVzaXplIHVzaW5nIGltYWdlIGNvbmZpZ1xuICogLSByZXNpemUgdXNpbmcgaW1hZ2UgY29uZmlnIHdpdGggZm9jYWwgYWRqdXN0bWVudHNcbiAqIC0gZG8gbm90IHJlc2l6ZSBhdCBhbGxcbiAqXG4gKiBgaW1hZ2VSZXNpemVDb25maWcud2l0aG91dEVubGFyZ2VtZW50YDpcbiAqIC0gdW5kZWZpbmVkIFtkZWZhdWx0XTogdXBsb2FkaW5nIGltYWdlcyB3aXRoIHNtYWxsZXIgd2lkdGggQU5EIGhlaWdodCB0aGFuIHRoZSBpbWFnZSBzaXplIHdpbGwgcmV0dXJuIG51bGxcbiAqIC0gZmFsc2U6IGFsd2F5cyBlbmxhcmdlIGltYWdlcyB0byB0aGUgaW1hZ2Ugc2l6ZVxuICogLSB0cnVlOiBpZiB0aGUgaW1hZ2UgaXMgc21hbGxlciB0aGFuIHRoZSBpbWFnZSBzaXplLCByZXR1cm4gdGhlIG9yaWdpbmFsIGltYWdlXG4gKlxuICogYGltYWdlUmVzaXplQ29uZmlnLndpdGhvdXRSZWR1Y3Rpb25gOlxuICogLSBmYWxzZSBbZGVmYXVsdF06IGFsd2F5cyBlbmxhcmdlIGltYWdlcyB0byB0aGUgaW1hZ2Ugc2l6ZVxuICogLSB0cnVlOiBpZiB0aGUgaW1hZ2UgaXMgc21hbGxlciB0aGFuIHRoZSBpbWFnZSBzaXplLCByZXR1cm4gdGhlIG9yaWdpbmFsIGltYWdlXG4gKlxuICogQHJldHVybiAnb21pdCcgfCAncmVzaXplJyB8ICdyZXNpemVXaXRoRm9jYWxQb2ludCdcbiAqL1xuY29uc3QgZ2V0SW1hZ2VSZXNpemVBY3Rpb24gPSAoe1xuICBkaW1lbnNpb25zOiBvcmlnaW5hbEltYWdlLFxuICBoYXNGb2NhbFBvaW50LFxuICBpbWFnZVJlc2l6ZUNvbmZpZyxcbn06IHtcbiAgZGltZW5zaW9uczogUHJvYmVkSW1hZ2VTaXplXG4gIGhhc0ZvY2FsUG9pbnQ/OiBib29sZWFuXG4gIGltYWdlUmVzaXplQ29uZmlnOiBJbWFnZVNpemVcbn0pOiAnb21pdCcgfCAncmVzaXplJyB8ICdyZXNpemVXaXRoRm9jYWxQb2ludCcgPT4ge1xuICBjb25zdCB7XG4gICAgZml0LFxuICAgIGhlaWdodDogdGFyZ2V0SGVpZ2h0LFxuICAgIHdpZHRoOiB0YXJnZXRXaWR0aCxcbiAgICB3aXRob3V0RW5sYXJnZW1lbnQsXG4gICAgd2l0aG91dFJlZHVjdGlvbixcbiAgfSA9IGltYWdlUmVzaXplQ29uZmlnXG5cbiAgLy8gcHJldmVudCB1cHNjYWxpbmcgYnkgZGVmYXVsdCB3aGVuIHggYW5kIHkgYXJlIGJvdGggc21hbGxlciB0aGFuIHRhcmdldCBpbWFnZSBzaXplXG4gIGlmICh0YXJnZXRIZWlnaHQgJiYgdGFyZ2V0V2lkdGgpIHtcbiAgICBjb25zdCBvcmlnaW5hbEltYWdlSXNTbWFsbGVyWEFuZFkgPVxuICAgICAgb3JpZ2luYWxJbWFnZS53aWR0aCA8IHRhcmdldFdpZHRoICYmIG9yaWdpbmFsSW1hZ2UuaGVpZ2h0IDwgdGFyZ2V0SGVpZ2h0XG4gICAgaWYgKHdpdGhvdXRFbmxhcmdlbWVudCA9PT0gdW5kZWZpbmVkICYmIG9yaWdpbmFsSW1hZ2VJc1NtYWxsZXJYQW5kWSkge1xuICAgICAgcmV0dXJuICdvbWl0JyAvLyBwcmV2ZW50IGltYWdlIHNpemUgZnJvbSBiZWluZyBlbmxhcmdlZFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9yaWdpbmFsSW1hZ2VJc1NtYWxsZXJYT3JZID1cbiAgICBvcmlnaW5hbEltYWdlLndpZHRoIDwgdGFyZ2V0V2lkdGggfHwgb3JpZ2luYWxJbWFnZS5oZWlnaHQgPCB0YXJnZXRIZWlnaHRcbiAgaWYgKGZpdCA9PT0gJ2NvbnRhaW4nIHx8IGZpdCA9PT0gJ2luc2lkZScpIHJldHVybiAncmVzaXplJ1xuICBpZiAoIWlzTnVtYmVyKHRhcmdldEhlaWdodCkgJiYgIWlzTnVtYmVyKHRhcmdldFdpZHRoKSkgcmV0dXJuICdyZXNpemUnXG5cbiAgY29uc3QgdGFyZ2V0QXNwZWN0UmF0aW8gPSB0YXJnZXRXaWR0aCAvIHRhcmdldEhlaWdodFxuICBjb25zdCBvcmlnaW5hbEFzcGVjdFJhdGlvID0gb3JpZ2luYWxJbWFnZS53aWR0aCAvIG9yaWdpbmFsSW1hZ2UuaGVpZ2h0XG4gIGlmIChvcmlnaW5hbEFzcGVjdFJhdGlvID09PSB0YXJnZXRBc3BlY3RSYXRpbykgcmV0dXJuICdyZXNpemUnXG5cbiAgaWYgKHdpdGhvdXRFbmxhcmdlbWVudCAmJiBvcmlnaW5hbEltYWdlSXNTbWFsbGVyWE9yWSkgcmV0dXJuICdyZXNpemUnXG4gIGlmICh3aXRob3V0UmVkdWN0aW9uICYmICFvcmlnaW5hbEltYWdlSXNTbWFsbGVyWE9yWSkgcmV0dXJuICdyZXNpemUnXG5cbiAgcmV0dXJuIGhhc0ZvY2FsUG9pbnQgPyAncmVzaXplV2l0aEZvY2FsUG9pbnQnIDogJ3Jlc2l6ZSdcbn1cblxuLyoqXG4gKiBTYW5pdGl6ZSB0aGUgcmVzaXplIGNvbmZpZy4gSWYgdGhlIHJlc2l6ZSBjb25maWcgaGFzIHRoZSBgd2l0aG91dFJlZHVjdGlvbmBcbiAqIHByb3BlcnR5IHNldCB0byB0cnVlLCB0aGUgYGZpdGAgYW5kIGBwb3NpdGlvbmAgcHJvcGVydGllcyB3aWxsIGJlIHNldCB0byBgY29udGFpbmBcbiAqIGFuZCBgdG9wIGxlZnRgIHJlc3BlY3RpdmVseS5cbiAqXG4gKiBAcGFyYW0gcmVzaXplQ29uZmlnIC0gdGhlIHJlc2l6ZSBjb25maWdcbiAqIEByZXR1cm5zIGEgc2FuaXRpemVkIHJlc2l6ZSBjb25maWdcbiAqL1xuY29uc3Qgc2FuaXRpemVSZXNpemVDb25maWcgPSAocmVzaXplQ29uZmlnOiBJbWFnZVNpemUpOiBJbWFnZVNpemUgPT4ge1xuICBpZiAocmVzaXplQ29uZmlnLndpdGhvdXRSZWR1Y3Rpb24pIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ucmVzaXplQ29uZmlnLFxuICAgICAgLy8gV2h5IGZpdCBgY29udGFpbmAgc2hvdWxkIGFsc28gYmUgc2V0IHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9sb3ZlbGwvc2hhcnAvaXNzdWVzLzM1OTVcbiAgICAgIGZpdDogcmVzaXplQ29uZmlnPy5maXQgfHwgJ2NvbnRhaW4nLFxuICAgICAgcG9zaXRpb246IHJlc2l6ZUNvbmZpZz8ucG9zaXRpb24gfHwgJ2xlZnQgdG9wJyxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc2l6ZUNvbmZpZ1xufVxuXG4vKipcbiAqIFVzZWQgdG8gZXh0cmFjdCBoZWlnaHQgZnJvbSBpbWFnZXMsIGFuaW1hdGVkIG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0gc2hhcnBNZXRhZGF0YSAtIHRoZSBzaGFycCBtZXRhZGF0YVxuICogQHJldHVybnMgdGhlIGhlaWdodCBvZiB0aGUgaW1hZ2VcbiAqL1xuZnVuY3Rpb24gZXh0cmFjdEhlaWdodEZyb21JbWFnZShzaGFycE1ldGFkYXRhOiBTaGFycE1ldGFkYXRhKTogbnVtYmVyIHtcbiAgaWYgKHNoYXJwTWV0YWRhdGE/LnBhZ2VzKSB7XG4gICAgcmV0dXJuIHNoYXJwTWV0YWRhdGEuaGVpZ2h0IC8gc2hhcnBNZXRhZGF0YS5wYWdlc1xuICB9XG4gIHJldHVybiBzaGFycE1ldGFkYXRhLmhlaWdodFxufVxuXG4vKipcbiAqIEZvciB0aGUgcHJvdmlkZWQgaW1hZ2Ugc2l6ZXMsIGhhbmRsZSB0aGUgcmVzaXppbmcgYW5kIHRoZSB0cmFuc2Zvcm1zXG4gKiAoZm9ybWF0LCB0cmltLCBldGMuKSBvZiBlYWNoIHJlcXVlc3RlZCBpbWFnZSBzaXplIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBvYmplY3QuXG4gKiBUaGlzIG9ubHkgaGFuZGxlcyB0aGUgaW1hZ2Ugc2l6ZXMuIFRoZSB0cmFuc2Zvcm1zIG9mIHRoZSBvcmlnaW5hbCBpbWFnZVxuICogYXJlIGhhbmRsZWQgaW4ge0BsaW5rIC4vZ2VuZXJhdGVGaWxlRGF0YS50c30uXG4gKlxuICogVGhlIGltYWdlIHdpbGwgYmUgcmVzaXplZCBhY2NvcmRpbmcgdG8gdGhlIHByb3ZpZGVkXG4gKiByZXNpemUgY29uZmlnLiBJZiBubyBpbWFnZSBzaXplcyBhcmUgcmVxdWVzdGVkLCB0aGUgcmVzb2x2ZWQgZGF0YSB3aWxsIGJlIGVtcHR5LlxuICogRm9yIGV2ZXJ5IGltYWdlIHRoYXQgZG9lcyBub3QgbmVlZCB0byBiZSByZXNpemVkLCBhIHJlc3VsdCBvYmplY3Qgd2l0aCBgbnVsbGBcbiAqIHBhcmFtZXRlcnMgd2lsbCBiZSByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gcmVzaXplQ29uZmlnIC0gdGhlIHJlc2l6ZSBjb25maWdcbiAqIEByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIHJlc2l6ZSBvcGVyYXRpb24ocylcbiAqL1xuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcmVzaXplQW5kVHJhbnNmb3JtSW1hZ2VTaXplcyh7XG4gIGNvbmZpZyxcbiAgZGltZW5zaW9ucyxcbiAgZmlsZSxcbiAgbWltZVR5cGUsXG4gIHJlcSxcbiAgc2F2ZWRGaWxlbmFtZSxcbiAgc3RhdGljUGF0aCxcbiAgdXBsb2FkRWRpdHMsXG4gIHdpdGhNZXRhZGF0YSxcbn06IFJlc2l6ZUFyZ3MpOiBQcm9taXNlPEltYWdlU2l6ZXNSZXN1bHQ+IHtcbiAgY29uc3QgeyBmb2NhbFBvaW50OiBmb2NhbFBvaW50RW5hYmxlZCA9IHRydWUsIGltYWdlU2l6ZXMgfSA9IGNvbmZpZy51cGxvYWRcblxuICAvLyBGb2NhbCBwb2ludCBhZGp1c3RtZW50c1xuICBjb25zdCBpbmNvbWluZ0ZvY2FsUG9pbnQgPSB1cGxvYWRFZGl0cz8uZm9jYWxQb2ludFxuICAgID8ge1xuICAgICAgICB4OiBpc051bWJlcih1cGxvYWRFZGl0cy5mb2NhbFBvaW50LngpID8gTWF0aC5yb3VuZCh1cGxvYWRFZGl0cy5mb2NhbFBvaW50LngpIDogNTAsXG4gICAgICAgIHk6IGlzTnVtYmVyKHVwbG9hZEVkaXRzLmZvY2FsUG9pbnQueSkgPyBNYXRoLnJvdW5kKHVwbG9hZEVkaXRzLmZvY2FsUG9pbnQueSkgOiA1MCxcbiAgICAgIH1cbiAgICA6IHVuZGVmaW5lZFxuXG4gIGNvbnN0IGRlZmF1bHRSZXN1bHQ6IEltYWdlU2l6ZXNSZXN1bHQgPSB7XG4gICAgLi4uKGZvY2FsUG9pbnRFbmFibGVkICYmIGluY29taW5nRm9jYWxQb2ludCAmJiB7IGZvY2FsUG9pbnQ6IGluY29taW5nRm9jYWxQb2ludCB9KSxcbiAgICBzaXplRGF0YToge30sXG4gICAgc2l6ZXNUb1NhdmU6IFtdLFxuICB9XG5cbiAgLy8gTm90aGluZyB0byByZXNpemUgaGVyZSBzbyByZXR1cm4gYXMgZWFybHkgYXMgcG9zc2libGVcbiAgaWYgKCFpbWFnZVNpemVzKSByZXR1cm4gZGVmYXVsdFJlc3VsdFxuXG4gIC8vIERldGVybWluZSBpZiB0aGUgZmlsZSBpcyBhbmltYXRlZFxuICBjb25zdCBmaWxlSXNBbmltYXRlZFR5cGUgPSBbJ2ltYWdlL2F2aWYnLCAnaW1hZ2UvZ2lmJywgJ2ltYWdlL3dlYnAnXS5pbmNsdWRlcyhmaWxlLm1pbWV0eXBlKVxuICBjb25zdCBzaGFycE9wdGlvbnM6IFNoYXJwT3B0aW9ucyA9IHt9XG5cbiAgaWYgKGZpbGVJc0FuaW1hdGVkVHlwZSkgc2hhcnBPcHRpb25zLmFuaW1hdGVkID0gdHJ1ZVxuXG4gIGNvbnN0IHNoYXJwQmFzZTogU2hhcnAgfCB1bmRlZmluZWQgPSBzaGFycChmaWxlLnRlbXBGaWxlUGF0aCB8fCBmaWxlLmRhdGEsIHNoYXJwT3B0aW9ucykucm90YXRlKCkgLy8gcGFzcyByb3RhdGUoKSB0byBhdXRvLXJvdGF0ZSBiYXNlZCBvbiBFWElGIGRhdGEuIGh0dHBzOi8vZ2l0aHViLmNvbS9wYXlsb2FkY21zL3BheWxvYWQvcHVsbC8zMDgxXG4gIGNvbnN0IG9yaWdpbmFsSW1hZ2VNZXRhID0gYXdhaXQgc2hhcnBCYXNlLm1ldGFkYXRhKClcblxuICBsZXQgYWRqdXN0ZWREaW1lbnNpb25zID0geyAuLi5kaW1lbnNpb25zIH1cblxuICAvLyBJbWFnZXMgd2l0aCBhbiBleGlmIG9yaWVudGF0aW9uIG9mIDUsIDYsIDcsIG9yIDggYXJlIGF1dG8tcm90YXRlZCBieSBzaGFycFxuICAvLyBOZWVkIHRvIGFkanVzdCB0aGUgZGltZW5zaW9ucyB0byBtYXRjaCB0aGUgb3JpZ2luYWwgaW1hZ2VcbiAgaWYgKFs1LCA2LCA3LCA4XS5pbmNsdWRlcyhvcmlnaW5hbEltYWdlTWV0YS5vcmllbnRhdGlvbikpIHtcbiAgICBhZGp1c3RlZERpbWVuc2lvbnMgPSB7XG4gICAgICAuLi5kaW1lbnNpb25zLFxuICAgICAgaGVpZ2h0OiBkaW1lbnNpb25zLndpZHRoLFxuICAgICAgd2lkdGg6IGRpbWVuc2lvbnMuaGVpZ2h0LFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJlc2l6ZUltYWdlTWV0YSA9IHtcbiAgICBoZWlnaHQ6IGV4dHJhY3RIZWlnaHRGcm9tSW1hZ2Uob3JpZ2luYWxJbWFnZU1ldGEpLFxuICAgIHdpZHRoOiBvcmlnaW5hbEltYWdlTWV0YS53aWR0aCxcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdHM6IEltYWdlU2l6ZXNSZXN1bHRbXSA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgIGltYWdlU2l6ZXMubWFwKGFzeW5jIChpbWFnZVJlc2l6ZUNvbmZpZyk6IFByb21pc2U8SW1hZ2VTaXplc1Jlc3VsdD4gPT4ge1xuICAgICAgaW1hZ2VSZXNpemVDb25maWcgPSBzYW5pdGl6ZVJlc2l6ZUNvbmZpZyhpbWFnZVJlc2l6ZUNvbmZpZylcblxuICAgICAgY29uc3QgcmVzaXplQWN0aW9uID0gZ2V0SW1hZ2VSZXNpemVBY3Rpb24oe1xuICAgICAgICBkaW1lbnNpb25zLFxuICAgICAgICBoYXNGb2NhbFBvaW50OiBCb29sZWFuKGluY29taW5nRm9jYWxQb2ludCksXG4gICAgICAgIGltYWdlUmVzaXplQ29uZmlnLFxuICAgICAgfSlcbiAgICAgIGlmIChyZXNpemVBY3Rpb24gPT09ICdvbWl0JykgcmV0dXJuIGNyZWF0ZVJlc3VsdCh7IG5hbWU6IGltYWdlUmVzaXplQ29uZmlnLm5hbWUgfSlcblxuICAgICAgY29uc3QgaW1hZ2VUb1Jlc2l6ZSA9IHNoYXJwQmFzZS5jbG9uZSgpXG4gICAgICBsZXQgcmVzaXplZCA9IGltYWdlVG9SZXNpemVcblxuICAgICAgaWYgKHJlc2l6ZUFjdGlvbiA9PT0gJ3Jlc2l6ZVdpdGhGb2NhbFBvaW50Jykge1xuICAgICAgICBsZXQgeyBoZWlnaHQ6IHJlc2l6ZUhlaWdodCwgd2lkdGg6IHJlc2l6ZVdpZHRoIH0gPSBpbWFnZVJlc2l6ZUNvbmZpZ1xuXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsQXNwZWN0UmF0aW8gPSBhZGp1c3RlZERpbWVuc2lvbnMud2lkdGggLyBhZGp1c3RlZERpbWVuc2lvbnMuaGVpZ2h0XG5cbiAgICAgICAgLy8gQ2FsY3VsYXRlIHJlc2l6ZVdpZHRoIGJhc2VkIG9uIG9yaWdpbmFsIGFzcGVjdCByYXRpbyBpZiBpdCdzIHVuZGVmaW5lZFxuICAgICAgICBpZiAocmVzaXplSGVpZ2h0ICYmICFyZXNpemVXaWR0aCkge1xuICAgICAgICAgIHJlc2l6ZVdpZHRoID0gTWF0aC5yb3VuZChyZXNpemVIZWlnaHQgKiBvcmlnaW5hbEFzcGVjdFJhdGlvKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2FsY3VsYXRlIHJlc2l6ZUhlaWdodCBiYXNlZCBvbiBvcmlnaW5hbCBhc3BlY3QgcmF0aW8gaWYgaXQncyB1bmRlZmluZWRcbiAgICAgICAgaWYgKHJlc2l6ZVdpZHRoICYmICFyZXNpemVIZWlnaHQpIHtcbiAgICAgICAgICByZXNpemVIZWlnaHQgPSBNYXRoLnJvdW5kKHJlc2l6ZVdpZHRoIC8gb3JpZ2luYWxBc3BlY3RSYXRpbylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcmVzaXplSGVpZ2h0KSByZXNpemVIZWlnaHQgPSByZXNpemVJbWFnZU1ldGEuaGVpZ2h0XG4gICAgICAgIGlmICghcmVzaXplV2lkdGgpIHJlc2l6ZVdpZHRoID0gcmVzaXplSW1hZ2VNZXRhLndpZHRoXG5cbiAgICAgICAgY29uc3QgcmVzaXplQXNwZWN0UmF0aW8gPSByZXNpemVXaWR0aCAvIHJlc2l6ZUhlaWdodFxuICAgICAgICBjb25zdCBwcmlvcml0aXplSGVpZ2h0ID0gcmVzaXplQXNwZWN0UmF0aW8gPCBvcmlnaW5hbEFzcGVjdFJhdGlvXG4gICAgICAgIC8vIFNjYWxlcyB0aGUgaW1hZ2UgYmVmb3JlIGV4dHJhY3RpbmcgZnJvbSBpdFxuICAgICAgICByZXNpemVkID0gaW1hZ2VUb1Jlc2l6ZS5yZXNpemUoe1xuICAgICAgICAgIGhlaWdodDogcHJpb3JpdGl6ZUhlaWdodCA/IHJlc2l6ZUhlaWdodCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICB3aWR0aDogcHJpb3JpdGl6ZUhlaWdodCA/IHVuZGVmaW5lZCA6IHJlc2l6ZVdpZHRoLFxuICAgICAgICB9KVxuXG4gICAgICAgIGNvbnN0IG1ldGFkYXRhQXBwZW5kZWRGaWxlID0gYXdhaXQgb3B0aW9uYWxseUFwcGVuZE1ldGFkYXRhKHtcbiAgICAgICAgICByZXEsXG4gICAgICAgICAgc2hhcnBGaWxlOiByZXNpemVkLFxuICAgICAgICAgIHdpdGhNZXRhZGF0YSxcbiAgICAgICAgfSlcblxuICAgICAgICAvLyBNdXN0IHJlYWQgZnJvbSBidWZmZXIsIHJlc2l6ZWQubWV0YWRhdGEgd2lsbCByZXR1cm4gdGhlIG9yaWdpbmFsIGltYWdlIG1ldGFkYXRhXG4gICAgICAgIGNvbnN0IHsgaW5mbyB9ID0gYXdhaXQgbWV0YWRhdGFBcHBlbmRlZEZpbGUudG9CdWZmZXIoeyByZXNvbHZlV2l0aE9iamVjdDogdHJ1ZSB9KVxuXG4gICAgICAgIHJlc2l6ZUltYWdlTWV0YS5oZWlnaHQgPSBleHRyYWN0SGVpZ2h0RnJvbUltYWdlKHtcbiAgICAgICAgICAuLi5vcmlnaW5hbEltYWdlTWV0YSxcbiAgICAgICAgICBoZWlnaHQ6IGluZm8uaGVpZ2h0LFxuICAgICAgICB9KVxuICAgICAgICByZXNpemVJbWFnZU1ldGEud2lkdGggPSBpbmZvLndpZHRoXG5cbiAgICAgICAgY29uc3QgaGFsZlJlc2l6ZVggPSByZXNpemVXaWR0aCAvIDJcbiAgICAgICAgY29uc3QgeEZvY2FsQ2VudGVyID0gcmVzaXplSW1hZ2VNZXRhLndpZHRoICogKGluY29taW5nRm9jYWxQb2ludC54IC8gMTAwKVxuICAgICAgICBjb25zdCBjYWxjdWxhdGVkUmlnaHRQaXhlbEJvdW5kID0geEZvY2FsQ2VudGVyICsgaGFsZlJlc2l6ZVhcbiAgICAgICAgbGV0IGxlZnRCb3VuZCA9IHhGb2NhbENlbnRlciAtIGhhbGZSZXNpemVYXG5cbiAgICAgICAgLy8gaWYgdGhlIHJpZ2h0IGJvdW5kIGlzIGdyZWF0ZXIgdGhhbiB0aGUgaW1hZ2Ugd2lkdGgsIGFkanVzdCB0aGUgbGVmdCBib3VuZFxuICAgICAgICAvLyBrZWVwaW5nIGZvY3VzIG9uIHRoZSByaWdodFxuICAgICAgICBpZiAoY2FsY3VsYXRlZFJpZ2h0UGl4ZWxCb3VuZCA+IHJlc2l6ZUltYWdlTWV0YS53aWR0aCkge1xuICAgICAgICAgIGxlZnRCb3VuZCA9IHJlc2l6ZUltYWdlTWV0YS53aWR0aCAtIHJlc2l6ZVdpZHRoXG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiB0aGUgbGVmdCBib3VuZCBpcyBsZXNzIHRoYW4gMCwgYWRqdXN0IHRoZSBsZWZ0IGJvdW5kIHRvIDBcbiAgICAgICAgLy8ga2VlcGluZyB0aGUgZm9jdXMgb24gdGhlIGxlZnRcbiAgICAgICAgaWYgKGxlZnRCb3VuZCA8IDApIGxlZnRCb3VuZCA9IDBcblxuICAgICAgICBjb25zdCBoYWxmUmVzaXplWSA9IHJlc2l6ZUhlaWdodCAvIDJcbiAgICAgICAgY29uc3QgeUZvY2FsQ2VudGVyID0gcmVzaXplSW1hZ2VNZXRhLmhlaWdodCAqIChpbmNvbWluZ0ZvY2FsUG9pbnQueSAvIDEwMClcbiAgICAgICAgY29uc3QgY2FsY3VsYXRlZEJvdHRvbVBpeGVsQm91bmQgPSB5Rm9jYWxDZW50ZXIgKyBoYWxmUmVzaXplWVxuICAgICAgICBsZXQgdG9wQm91bmQgPSB5Rm9jYWxDZW50ZXIgLSBoYWxmUmVzaXplWVxuXG4gICAgICAgIC8vIGlmIHRoZSBib3R0b20gYm91bmQgaXMgZ3JlYXRlciB0aGFuIHRoZSBpbWFnZSBoZWlnaHQsIGFkanVzdCB0aGUgdG9wIGJvdW5kXG4gICAgICAgIC8vIGtlZXBpbmcgdGhlIGltYWdlIGFzIGZhciByaWdodCBhcyBwb3NzaWJsZVxuICAgICAgICBpZiAoY2FsY3VsYXRlZEJvdHRvbVBpeGVsQm91bmQgPiByZXNpemVJbWFnZU1ldGEuaGVpZ2h0KSB7XG4gICAgICAgICAgdG9wQm91bmQgPSByZXNpemVJbWFnZU1ldGEuaGVpZ2h0IC0gcmVzaXplSGVpZ2h0XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiB0aGUgdG9wIGJvdW5kIGlzIGxlc3MgdGhhbiAwLCBhZGp1c3QgdGhlIHRvcCBib3VuZCB0byAwXG4gICAgICAgIC8vIGtlZXBpbmcgdGhlIGltYWdlIGZvY3VzIG5lYXIgdGhlIHRvcFxuICAgICAgICBpZiAodG9wQm91bmQgPCAwKSB0b3BCb3VuZCA9IDBcblxuICAgICAgICByZXNpemVkID0gcmVzaXplZC5leHRyYWN0KHtcbiAgICAgICAgICBoZWlnaHQ6IHJlc2l6ZUhlaWdodCxcbiAgICAgICAgICBsZWZ0OiBNYXRoLmZsb29yKGxlZnRCb3VuZCksXG4gICAgICAgICAgdG9wOiBNYXRoLmZsb29yKHRvcEJvdW5kKSxcbiAgICAgICAgICB3aWR0aDogcmVzaXplV2lkdGgsXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNpemVkID0gaW1hZ2VUb1Jlc2l6ZS5yZXNpemUoaW1hZ2VSZXNpemVDb25maWcpXG4gICAgICB9XG5cbiAgICAgIGlmIChpbWFnZVJlc2l6ZUNvbmZpZy5mb3JtYXRPcHRpb25zKSB7XG4gICAgICAgIHJlc2l6ZWQgPSByZXNpemVkLnRvRm9ybWF0KFxuICAgICAgICAgIGltYWdlUmVzaXplQ29uZmlnLmZvcm1hdE9wdGlvbnMuZm9ybWF0LFxuICAgICAgICAgIGltYWdlUmVzaXplQ29uZmlnLmZvcm1hdE9wdGlvbnMub3B0aW9ucyxcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBpZiAoaW1hZ2VSZXNpemVDb25maWcudHJpbU9wdGlvbnMpIHtcbiAgICAgICAgcmVzaXplZCA9IHJlc2l6ZWQudHJpbShpbWFnZVJlc2l6ZUNvbmZpZy50cmltT3B0aW9ucylcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWV0YWRhdGFBcHBlbmRlZEZpbGUgPSBhd2FpdCBvcHRpb25hbGx5QXBwZW5kTWV0YWRhdGEoe1xuICAgICAgICByZXEsXG4gICAgICAgIHNoYXJwRmlsZTogcmVzaXplZCxcbiAgICAgICAgd2l0aE1ldGFkYXRhLFxuICAgICAgfSlcblxuICAgICAgY29uc3QgeyBkYXRhOiBidWZmZXJEYXRhLCBpbmZvOiBidWZmZXJJbmZvIH0gPSBhd2FpdCBtZXRhZGF0YUFwcGVuZGVkRmlsZS50b0J1ZmZlcih7XG4gICAgICAgIHJlc29sdmVXaXRoT2JqZWN0OiB0cnVlLFxuICAgICAgfSlcblxuICAgICAgY29uc3Qgc2FuaXRpemVkSW1hZ2UgPSBnZXRTYW5pdGl6ZWRJbWFnZURhdGEoc2F2ZWRGaWxlbmFtZSlcblxuICAgICAgaWYgKHJlcS5wYXlsb2FkVXBsb2FkU2l6ZXMpIHtcbiAgICAgICAgcmVxLnBheWxvYWRVcGxvYWRTaXplc1tpbWFnZVJlc2l6ZUNvbmZpZy5uYW1lXSA9IGJ1ZmZlckRhdGFcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWltZUluZm8gPSBhd2FpdCBmcm9tQnVmZmVyKGJ1ZmZlckRhdGEpXG5cbiAgICAgIGNvbnN0IGltYWdlTmFtZVdpdGhEaW1lbnNpb25zID0gaW1hZ2VSZXNpemVDb25maWcuZ2VuZXJhdGVJbWFnZU5hbWVcbiAgICAgICAgPyBpbWFnZVJlc2l6ZUNvbmZpZy5nZW5lcmF0ZUltYWdlTmFtZSh7XG4gICAgICAgICAgICBleHRlbnNpb246IG1pbWVJbmZvPy5leHQgfHwgc2FuaXRpemVkSW1hZ2UuZXh0LFxuICAgICAgICAgICAgaGVpZ2h0OiBleHRyYWN0SGVpZ2h0RnJvbUltYWdlKHtcbiAgICAgICAgICAgICAgLi4ub3JpZ2luYWxJbWFnZU1ldGEsXG4gICAgICAgICAgICAgIGhlaWdodDogYnVmZmVySW5mby5oZWlnaHQsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG9yaWdpbmFsTmFtZTogc2FuaXRpemVkSW1hZ2UubmFtZSxcbiAgICAgICAgICAgIHNpemVOYW1lOiBpbWFnZVJlc2l6ZUNvbmZpZy5uYW1lLFxuICAgICAgICAgICAgd2lkdGg6IGJ1ZmZlckluZm8ud2lkdGgsXG4gICAgICAgICAgfSlcbiAgICAgICAgOiBjcmVhdGVJbWFnZU5hbWUoe1xuICAgICAgICAgICAgZXh0ZW5zaW9uOiBtaW1lSW5mbz8uZXh0IHx8IHNhbml0aXplZEltYWdlLmV4dCxcbiAgICAgICAgICAgIGhlaWdodDogZXh0cmFjdEhlaWdodEZyb21JbWFnZSh7XG4gICAgICAgICAgICAgIC4uLm9yaWdpbmFsSW1hZ2VNZXRhLFxuICAgICAgICAgICAgICBoZWlnaHQ6IGJ1ZmZlckluZm8uaGVpZ2h0LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBvdXRwdXRJbWFnZU5hbWU6IHNhbml0aXplZEltYWdlLm5hbWUsXG4gICAgICAgICAgICB3aWR0aDogYnVmZmVySW5mby53aWR0aCxcbiAgICAgICAgICB9KVxuXG4gICAgICBjb25zdCBpbWFnZVBhdGggPSBgJHtzdGF0aWNQYXRofS8ke2ltYWdlTmFtZVdpdGhEaW1lbnNpb25zfWBcblxuICAgICAgaWYgKGF3YWl0IGZpbGVFeGlzdHMoaW1hZ2VQYXRoKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGZzLnVubGlua1N5bmMoaW1hZ2VQYXRoKVxuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvLyBJZ25vcmUgdW5saW5rIGVycm9yc1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgaGVpZ2h0LCBzaXplLCB3aWR0aCB9ID0gYnVmZmVySW5mb1xuICAgICAgcmV0dXJuIGNyZWF0ZVJlc3VsdCh7XG4gICAgICAgIG5hbWU6IGltYWdlUmVzaXplQ29uZmlnLm5hbWUsXG4gICAgICAgIGZpbGVuYW1lOiBpbWFnZU5hbWVXaXRoRGltZW5zaW9ucyxcbiAgICAgICAgZmlsZXNpemU6IHNpemUsXG4gICAgICAgIGhlaWdodDpcbiAgICAgICAgICBmaWxlSXNBbmltYXRlZFR5cGUgJiYgb3JpZ2luYWxJbWFnZU1ldGEucGFnZXMgPyBoZWlnaHQgLyBvcmlnaW5hbEltYWdlTWV0YS5wYWdlcyA6IGhlaWdodCxcbiAgICAgICAgbWltZVR5cGU6IG1pbWVJbmZvPy5taW1lIHx8IG1pbWVUeXBlLFxuICAgICAgICBzaXplc1RvU2F2ZTogW3sgYnVmZmVyOiBidWZmZXJEYXRhLCBwYXRoOiBpbWFnZVBhdGggfV0sXG4gICAgICAgIHdpZHRoLFxuICAgICAgfSlcbiAgICB9KSxcbiAgKVxuXG4gIHJldHVybiByZXN1bHRzLnJlZHVjZShcbiAgICAoYWNjLCByZXN1bHQpID0+IHtcbiAgICAgIE9iamVjdC5hc3NpZ24oYWNjLnNpemVEYXRhLCByZXN1bHQuc2l6ZURhdGEpXG4gICAgICBhY2Muc2l6ZXNUb1NhdmUucHVzaCguLi5yZXN1bHQuc2l6ZXNUb1NhdmUpXG4gICAgICByZXR1cm4gYWNjXG4gICAgfSxcbiAgICB7IC4uLmRlZmF1bHRSZXN1bHQgfSxcbiAgKVxufVxuIl0sIm5hbWVzIjpbInJlc2l6ZUFuZFRyYW5zZm9ybUltYWdlU2l6ZXMiLCJnZXRTYW5pdGl6ZWRJbWFnZURhdGEiLCJzb3VyY2VJbWFnZSIsImV4dGVuc2lvbiIsInNwbGl0IiwicG9wIiwibmFtZSIsInNhbml0aXplIiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJleHQiLCJjcmVhdGVJbWFnZU5hbWUiLCJoZWlnaHQiLCJvdXRwdXRJbWFnZU5hbWUiLCJ3aWR0aCIsImNyZWF0ZVJlc3VsdCIsImZpbGVuYW1lIiwiZmlsZXNpemUiLCJtaW1lVHlwZSIsInNpemVzVG9TYXZlIiwic2l6ZURhdGEiLCJnZXRJbWFnZVJlc2l6ZUFjdGlvbiIsImRpbWVuc2lvbnMiLCJvcmlnaW5hbEltYWdlIiwiaGFzRm9jYWxQb2ludCIsImltYWdlUmVzaXplQ29uZmlnIiwiZml0IiwidGFyZ2V0SGVpZ2h0IiwidGFyZ2V0V2lkdGgiLCJ3aXRob3V0RW5sYXJnZW1lbnQiLCJ3aXRob3V0UmVkdWN0aW9uIiwib3JpZ2luYWxJbWFnZUlzU21hbGxlclhBbmRZIiwidW5kZWZpbmVkIiwib3JpZ2luYWxJbWFnZUlzU21hbGxlclhPclkiLCJpc051bWJlciIsInRhcmdldEFzcGVjdFJhdGlvIiwib3JpZ2luYWxBc3BlY3RSYXRpbyIsInNhbml0aXplUmVzaXplQ29uZmlnIiwicmVzaXplQ29uZmlnIiwicG9zaXRpb24iLCJleHRyYWN0SGVpZ2h0RnJvbUltYWdlIiwic2hhcnBNZXRhZGF0YSIsInBhZ2VzIiwiY29uZmlnIiwiZmlsZSIsInJlcSIsInNhdmVkRmlsZW5hbWUiLCJzdGF0aWNQYXRoIiwidXBsb2FkRWRpdHMiLCJ3aXRoTWV0YWRhdGEiLCJmb2NhbFBvaW50IiwiZm9jYWxQb2ludEVuYWJsZWQiLCJpbWFnZVNpemVzIiwidXBsb2FkIiwiaW5jb21pbmdGb2NhbFBvaW50IiwieCIsIk1hdGgiLCJyb3VuZCIsInkiLCJkZWZhdWx0UmVzdWx0IiwiZmlsZUlzQW5pbWF0ZWRUeXBlIiwiaW5jbHVkZXMiLCJtaW1ldHlwZSIsInNoYXJwT3B0aW9ucyIsImFuaW1hdGVkIiwic2hhcnBCYXNlIiwic2hhcnAiLCJ0ZW1wRmlsZVBhdGgiLCJkYXRhIiwicm90YXRlIiwib3JpZ2luYWxJbWFnZU1ldGEiLCJtZXRhZGF0YSIsImFkanVzdGVkRGltZW5zaW9ucyIsIm9yaWVudGF0aW9uIiwicmVzaXplSW1hZ2VNZXRhIiwicmVzdWx0cyIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJyZXNpemVBY3Rpb24iLCJCb29sZWFuIiwiaW1hZ2VUb1Jlc2l6ZSIsImNsb25lIiwicmVzaXplZCIsInJlc2l6ZUhlaWdodCIsInJlc2l6ZVdpZHRoIiwicmVzaXplQXNwZWN0UmF0aW8iLCJwcmlvcml0aXplSGVpZ2h0IiwicmVzaXplIiwibWV0YWRhdGFBcHBlbmRlZEZpbGUiLCJvcHRpb25hbGx5QXBwZW5kTWV0YWRhdGEiLCJzaGFycEZpbGUiLCJpbmZvIiwidG9CdWZmZXIiLCJyZXNvbHZlV2l0aE9iamVjdCIsImhhbGZSZXNpemVYIiwieEZvY2FsQ2VudGVyIiwiY2FsY3VsYXRlZFJpZ2h0UGl4ZWxCb3VuZCIsImxlZnRCb3VuZCIsImhhbGZSZXNpemVZIiwieUZvY2FsQ2VudGVyIiwiY2FsY3VsYXRlZEJvdHRvbVBpeGVsQm91bmQiLCJ0b3BCb3VuZCIsImV4dHJhY3QiLCJsZWZ0IiwiZmxvb3IiLCJ0b3AiLCJmb3JtYXRPcHRpb25zIiwidG9Gb3JtYXQiLCJmb3JtYXQiLCJvcHRpb25zIiwidHJpbU9wdGlvbnMiLCJ0cmltIiwiYnVmZmVyRGF0YSIsImJ1ZmZlckluZm8iLCJzYW5pdGl6ZWRJbWFnZSIsInBheWxvYWRVcGxvYWRTaXplcyIsIm1pbWVJbmZvIiwiZnJvbUJ1ZmZlciIsImltYWdlTmFtZVdpdGhEaW1lbnNpb25zIiwiZ2VuZXJhdGVJbWFnZU5hbWUiLCJvcmlnaW5hbE5hbWUiLCJzaXplTmFtZSIsImltYWdlUGF0aCIsImZpbGVFeGlzdHMiLCJmcyIsInVubGlua1N5bmMiLCJzaXplIiwibWltZSIsImJ1ZmZlciIsInBhdGgiLCJyZWR1Y2UiLCJhY2MiLCJyZXN1bHQiLCJPYmplY3QiLCJhc3NpZ24iLCJwdXNoIl0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiOzs7OytCQWtPQTs7Ozs7Ozs7Ozs7OztDQWFDLEdBQ0Q7OztlQUE4QkE7OzswQkE3T0g7MkRBQ1o7eUVBQ007OERBQ0g7MEJBYU87bUVBQ0Y7MENBQ3FDOzs7Ozs7QUEwQjVEOzs7OztDQUtDLEdBQ0QsTUFBTUMsd0JBQXdCLENBQUNDO0lBQzdCLE1BQU1DLFlBQVlELFlBQVlFLEtBQUssQ0FBQyxLQUFLQyxHQUFHO0lBQzVDLE1BQU1DLE9BQU9DLElBQUFBLHlCQUFRLEVBQUNMLFlBQVlNLFNBQVMsQ0FBQyxHQUFHTixZQUFZTyxXQUFXLENBQUMsU0FBU1A7SUFDaEYsT0FBTztRQUFFSTtRQUFNSSxLQUFLUDtJQUFVO0FBQ2hDO0FBc0JBLE1BQU1RLGtCQUFrQixDQUFDLEVBQ3ZCUixTQUFTLEVBQ1RTLE1BQU0sRUFDTkMsZUFBZSxFQUNmQyxLQUFLLEVBQ2U7SUFDcEIsT0FBTyxDQUFDLEVBQUVELGdCQUFnQixDQUFDLEVBQUVDLE1BQU0sQ0FBQyxFQUFFRixPQUFPLENBQUMsRUFBRVQsVUFBVSxDQUFDO0FBQzdEO0FBWUE7Ozs7Ozs7Ozs7Ozs7Q0FhQyxHQUNELE1BQU1ZLGVBQWUsQ0FBQyxFQUNwQlQsSUFBSSxFQUNKVSxXQUFXLElBQUksRUFDZkMsV0FBVyxJQUFJLEVBQ2ZMLFNBQVMsSUFBSSxFQUNiTSxXQUFXLElBQUksRUFDZkMsY0FBYyxFQUFFLEVBQ2hCTCxRQUFRLElBQUksRUFDSztJQUNqQixPQUFPO1FBQ0xNLFVBQVU7WUFDUixDQUFDZCxLQUFLLEVBQUU7Z0JBQ05VO2dCQUNBQztnQkFDQUw7Z0JBQ0FNO2dCQUNBSjtZQUNGO1FBQ0Y7UUFDQUs7SUFDRjtBQUNGO0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FnQkMsR0FDRCxNQUFNRSx1QkFBdUIsQ0FBQyxFQUM1QkMsWUFBWUMsYUFBYSxFQUN6QkMsYUFBYSxFQUNiQyxpQkFBaUIsRUFLbEI7SUFDQyxNQUFNLEVBQ0pDLEdBQUcsRUFDSGQsUUFBUWUsWUFBWSxFQUNwQmIsT0FBT2MsV0FBVyxFQUNsQkMsa0JBQWtCLEVBQ2xCQyxnQkFBZ0IsRUFDakIsR0FBR0w7SUFFSixvRkFBb0Y7SUFDcEYsSUFBSUUsZ0JBQWdCQyxhQUFhO1FBQy9CLE1BQU1HLDhCQUNKUixjQUFjVCxLQUFLLEdBQUdjLGVBQWVMLGNBQWNYLE1BQU0sR0FBR2U7UUFDOUQsSUFBSUUsdUJBQXVCRyxhQUFhRCw2QkFBNkI7WUFDbkUsT0FBTyxPQUFPLHlDQUF5Qzs7UUFDekQ7SUFDRjtJQUVBLE1BQU1FLDZCQUNKVixjQUFjVCxLQUFLLEdBQUdjLGVBQWVMLGNBQWNYLE1BQU0sR0FBR2U7SUFDOUQsSUFBSUQsUUFBUSxhQUFhQSxRQUFRLFVBQVUsT0FBTztJQUNsRCxJQUFJLENBQUNRLElBQUFBLGtCQUFRLEVBQUNQLGlCQUFpQixDQUFDTyxJQUFBQSxrQkFBUSxFQUFDTixjQUFjLE9BQU87SUFFOUQsTUFBTU8sb0JBQW9CUCxjQUFjRDtJQUN4QyxNQUFNUyxzQkFBc0JiLGNBQWNULEtBQUssR0FBR1MsY0FBY1gsTUFBTTtJQUN0RSxJQUFJd0Isd0JBQXdCRCxtQkFBbUIsT0FBTztJQUV0RCxJQUFJTixzQkFBc0JJLDRCQUE0QixPQUFPO0lBQzdELElBQUlILG9CQUFvQixDQUFDRyw0QkFBNEIsT0FBTztJQUU1RCxPQUFPVCxnQkFBZ0IseUJBQXlCO0FBQ2xEO0FBRUE7Ozs7Ozs7Q0FPQyxHQUNELE1BQU1hLHVCQUF1QixDQUFDQztJQUM1QixJQUFJQSxhQUFhUixnQkFBZ0IsRUFBRTtRQUNqQyxPQUFPO1lBQ0wsR0FBR1EsWUFBWTtZQUNmLHNGQUFzRjtZQUN0RlosS0FBS1ksY0FBY1osT0FBTztZQUMxQmEsVUFBVUQsY0FBY0MsWUFBWTtRQUN0QztJQUNGO0lBQ0EsT0FBT0Q7QUFDVDtBQUVBOzs7OztDQUtDLEdBQ0QsU0FBU0UsdUJBQXVCQyxhQUE0QjtJQUMxRCxJQUFJQSxlQUFlQyxPQUFPO1FBQ3hCLE9BQU9ELGNBQWM3QixNQUFNLEdBQUc2QixjQUFjQyxLQUFLO0lBQ25EO0lBQ0EsT0FBT0QsY0FBYzdCLE1BQU07QUFDN0I7QUFnQmUsZUFBZVosNkJBQTZCLEVBQ3pEMkMsTUFBTSxFQUNOckIsVUFBVSxFQUNWc0IsSUFBSSxFQUNKMUIsUUFBUSxFQUNSMkIsR0FBRyxFQUNIQyxhQUFhLEVBQ2JDLFVBQVUsRUFDVkMsV0FBVyxFQUNYQyxZQUFZLEVBQ0Q7SUFDWCxNQUFNLEVBQUVDLFlBQVlDLG9CQUFvQixJQUFJLEVBQUVDLFVBQVUsRUFBRSxHQUFHVCxPQUFPVSxNQUFNO0lBRTFFLDBCQUEwQjtJQUMxQixNQUFNQyxxQkFBcUJOLGFBQWFFLGFBQ3BDO1FBQ0VLLEdBQUdyQixJQUFBQSxrQkFBUSxFQUFDYyxZQUFZRSxVQUFVLENBQUNLLENBQUMsSUFBSUMsS0FBS0MsS0FBSyxDQUFDVCxZQUFZRSxVQUFVLENBQUNLLENBQUMsSUFBSTtRQUMvRUcsR0FBR3hCLElBQUFBLGtCQUFRLEVBQUNjLFlBQVlFLFVBQVUsQ0FBQ1EsQ0FBQyxJQUFJRixLQUFLQyxLQUFLLENBQUNULFlBQVlFLFVBQVUsQ0FBQ1EsQ0FBQyxJQUFJO0lBQ2pGLElBQ0ExQjtJQUVKLE1BQU0yQixnQkFBa0M7UUFDdEMsR0FBSVIscUJBQXFCRyxzQkFBc0I7WUFBRUosWUFBWUk7UUFBbUIsQ0FBQztRQUNqRmxDLFVBQVUsQ0FBQztRQUNYRCxhQUFhLEVBQUU7SUFDakI7SUFFQSx3REFBd0Q7SUFDeEQsSUFBSSxDQUFDaUMsWUFBWSxPQUFPTztJQUV4QixvQ0FBb0M7SUFDcEMsTUFBTUMscUJBQXFCO1FBQUM7UUFBYztRQUFhO0tBQWEsQ0FBQ0MsUUFBUSxDQUFDakIsS0FBS2tCLFFBQVE7SUFDM0YsTUFBTUMsZUFBNkIsQ0FBQztJQUVwQyxJQUFJSCxvQkFBb0JHLGFBQWFDLFFBQVEsR0FBRztJQUVoRCxNQUFNQyxZQUErQkMsSUFBQUEsY0FBSyxFQUFDdEIsS0FBS3VCLFlBQVksSUFBSXZCLEtBQUt3QixJQUFJLEVBQUVMLGNBQWNNLE1BQU0sR0FBRyxtR0FBbUc7O0lBQ3JNLE1BQU1DLG9CQUFvQixNQUFNTCxVQUFVTSxRQUFRO0lBRWxELElBQUlDLHFCQUFxQjtRQUFFLEdBQUdsRCxVQUFVO0lBQUM7SUFFekMsNkVBQTZFO0lBQzdFLDREQUE0RDtJQUM1RCxJQUFJO1FBQUM7UUFBRztRQUFHO1FBQUc7S0FBRSxDQUFDdUMsUUFBUSxDQUFDUyxrQkFBa0JHLFdBQVcsR0FBRztRQUN4REQscUJBQXFCO1lBQ25CLEdBQUdsRCxVQUFVO1lBQ2JWLFFBQVFVLFdBQVdSLEtBQUs7WUFDeEJBLE9BQU9RLFdBQVdWLE1BQU07UUFDMUI7SUFDRjtJQUVBLE1BQU04RCxrQkFBa0I7UUFDdEI5RCxRQUFRNEIsdUJBQXVCOEI7UUFDL0J4RCxPQUFPd0Qsa0JBQWtCeEQsS0FBSztJQUNoQztJQUVBLE1BQU02RCxVQUE4QixNQUFNQyxRQUFRQyxHQUFHLENBQ25EekIsV0FBVzBCLEdBQUcsQ0FBQyxPQUFPckQ7UUFDcEJBLG9CQUFvQlkscUJBQXFCWjtRQUV6QyxNQUFNc0QsZUFBZTFELHFCQUFxQjtZQUN4Q0M7WUFDQUUsZUFBZXdELFFBQVExQjtZQUN2QjdCO1FBQ0Y7UUFDQSxJQUFJc0QsaUJBQWlCLFFBQVEsT0FBT2hFLGFBQWE7WUFBRVQsTUFBTW1CLGtCQUFrQm5CLElBQUk7UUFBQztRQUVoRixNQUFNMkUsZ0JBQWdCaEIsVUFBVWlCLEtBQUs7UUFDckMsSUFBSUMsVUFBVUY7UUFFZCxJQUFJRixpQkFBaUIsd0JBQXdCO1lBQzNDLElBQUksRUFBRW5FLFFBQVF3RSxZQUFZLEVBQUV0RSxPQUFPdUUsV0FBVyxFQUFFLEdBQUc1RDtZQUVuRCxNQUFNVyxzQkFBc0JvQyxtQkFBbUIxRCxLQUFLLEdBQUcwRCxtQkFBbUI1RCxNQUFNO1lBRWhGLHlFQUF5RTtZQUN6RSxJQUFJd0UsZ0JBQWdCLENBQUNDLGFBQWE7Z0JBQ2hDQSxjQUFjN0IsS0FBS0MsS0FBSyxDQUFDMkIsZUFBZWhEO1lBQzFDO1lBRUEsMEVBQTBFO1lBQzFFLElBQUlpRCxlQUFlLENBQUNELGNBQWM7Z0JBQ2hDQSxlQUFlNUIsS0FBS0MsS0FBSyxDQUFDNEIsY0FBY2pEO1lBQzFDO1lBRUEsSUFBSSxDQUFDZ0QsY0FBY0EsZUFBZVYsZ0JBQWdCOUQsTUFBTTtZQUN4RCxJQUFJLENBQUN5RSxhQUFhQSxjQUFjWCxnQkFBZ0I1RCxLQUFLO1lBRXJELE1BQU13RSxvQkFBb0JELGNBQWNEO1lBQ3hDLE1BQU1HLG1CQUFtQkQsb0JBQW9CbEQ7WUFDN0MsNkNBQTZDO1lBQzdDK0MsVUFBVUYsY0FBY08sTUFBTSxDQUFDO2dCQUM3QjVFLFFBQVEyRSxtQkFBbUJILGVBQWVwRDtnQkFDMUNsQixPQUFPeUUsbUJBQW1CdkQsWUFBWXFEO1lBQ3hDO1lBRUEsTUFBTUksdUJBQXVCLE1BQU1DLElBQUFBLGtEQUF3QixFQUFDO2dCQUMxRDdDO2dCQUNBOEMsV0FBV1I7Z0JBQ1hsQztZQUNGO1lBRUEsa0ZBQWtGO1lBQ2xGLE1BQU0sRUFBRTJDLElBQUksRUFBRSxHQUFHLE1BQU1ILHFCQUFxQkksUUFBUSxDQUFDO2dCQUFFQyxtQkFBbUI7WUFBSztZQUUvRXBCLGdCQUFnQjlELE1BQU0sR0FBRzRCLHVCQUF1QjtnQkFDOUMsR0FBRzhCLGlCQUFpQjtnQkFDcEIxRCxRQUFRZ0YsS0FBS2hGLE1BQU07WUFDckI7WUFDQThELGdCQUFnQjVELEtBQUssR0FBRzhFLEtBQUs5RSxLQUFLO1lBRWxDLE1BQU1pRixjQUFjVixjQUFjO1lBQ2xDLE1BQU1XLGVBQWV0QixnQkFBZ0I1RCxLQUFLLEdBQUl3QyxDQUFBQSxtQkFBbUJDLENBQUMsR0FBRyxHQUFFO1lBQ3ZFLE1BQU0wQyw0QkFBNEJELGVBQWVEO1lBQ2pELElBQUlHLFlBQVlGLGVBQWVEO1lBRS9CLDRFQUE0RTtZQUM1RSw2QkFBNkI7WUFDN0IsSUFBSUUsNEJBQTRCdkIsZ0JBQWdCNUQsS0FBSyxFQUFFO2dCQUNyRG9GLFlBQVl4QixnQkFBZ0I1RCxLQUFLLEdBQUd1RTtZQUN0QztZQUVBLCtEQUErRDtZQUMvRCxnQ0FBZ0M7WUFDaEMsSUFBSWEsWUFBWSxHQUFHQSxZQUFZO1lBRS9CLE1BQU1DLGNBQWNmLGVBQWU7WUFDbkMsTUFBTWdCLGVBQWUxQixnQkFBZ0I5RCxNQUFNLEdBQUkwQyxDQUFBQSxtQkFBbUJJLENBQUMsR0FBRyxHQUFFO1lBQ3hFLE1BQU0yQyw2QkFBNkJELGVBQWVEO1lBQ2xELElBQUlHLFdBQVdGLGVBQWVEO1lBRTlCLDZFQUE2RTtZQUM3RSw2Q0FBNkM7WUFDN0MsSUFBSUUsNkJBQTZCM0IsZ0JBQWdCOUQsTUFBTSxFQUFFO2dCQUN2RDBGLFdBQVc1QixnQkFBZ0I5RCxNQUFNLEdBQUd3RTtZQUN0QztZQUVBLDZEQUE2RDtZQUM3RCx1Q0FBdUM7WUFDdkMsSUFBSWtCLFdBQVcsR0FBR0EsV0FBVztZQUU3Qm5CLFVBQVVBLFFBQVFvQixPQUFPLENBQUM7Z0JBQ3hCM0YsUUFBUXdFO2dCQUNSb0IsTUFBTWhELEtBQUtpRCxLQUFLLENBQUNQO2dCQUNqQlEsS0FBS2xELEtBQUtpRCxLQUFLLENBQUNIO2dCQUNoQnhGLE9BQU91RTtZQUNUO1FBQ0YsT0FBTztZQUNMRixVQUFVRixjQUFjTyxNQUFNLENBQUMvRDtRQUNqQztRQUVBLElBQUlBLGtCQUFrQmtGLGFBQWEsRUFBRTtZQUNuQ3hCLFVBQVVBLFFBQVF5QixRQUFRLENBQ3hCbkYsa0JBQWtCa0YsYUFBYSxDQUFDRSxNQUFNLEVBQ3RDcEYsa0JBQWtCa0YsYUFBYSxDQUFDRyxPQUFPO1FBRTNDO1FBRUEsSUFBSXJGLGtCQUFrQnNGLFdBQVcsRUFBRTtZQUNqQzVCLFVBQVVBLFFBQVE2QixJQUFJLENBQUN2RixrQkFBa0JzRixXQUFXO1FBQ3REO1FBRUEsTUFBTXRCLHVCQUF1QixNQUFNQyxJQUFBQSxrREFBd0IsRUFBQztZQUMxRDdDO1lBQ0E4QyxXQUFXUjtZQUNYbEM7UUFDRjtRQUVBLE1BQU0sRUFBRW1CLE1BQU02QyxVQUFVLEVBQUVyQixNQUFNc0IsVUFBVSxFQUFFLEdBQUcsTUFBTXpCLHFCQUFxQkksUUFBUSxDQUFDO1lBQ2pGQyxtQkFBbUI7UUFDckI7UUFFQSxNQUFNcUIsaUJBQWlCbEgsc0JBQXNCNkM7UUFFN0MsSUFBSUQsSUFBSXVFLGtCQUFrQixFQUFFO1lBQzFCdkUsSUFBSXVFLGtCQUFrQixDQUFDM0Ysa0JBQWtCbkIsSUFBSSxDQUFDLEdBQUcyRztRQUNuRDtRQUVBLE1BQU1JLFdBQVcsTUFBTUMsSUFBQUEsb0JBQVUsRUFBQ0w7UUFFbEMsTUFBTU0sMEJBQTBCOUYsa0JBQWtCK0YsaUJBQWlCLEdBQy9EL0Ysa0JBQWtCK0YsaUJBQWlCLENBQUM7WUFDbENySCxXQUFXa0gsVUFBVTNHLE9BQU95RyxlQUFlekcsR0FBRztZQUM5Q0UsUUFBUTRCLHVCQUF1QjtnQkFDN0IsR0FBRzhCLGlCQUFpQjtnQkFDcEIxRCxRQUFRc0csV0FBV3RHLE1BQU07WUFDM0I7WUFDQTZHLGNBQWNOLGVBQWU3RyxJQUFJO1lBQ2pDb0gsVUFBVWpHLGtCQUFrQm5CLElBQUk7WUFDaENRLE9BQU9vRyxXQUFXcEcsS0FBSztRQUN6QixLQUNBSCxnQkFBZ0I7WUFDZFIsV0FBV2tILFVBQVUzRyxPQUFPeUcsZUFBZXpHLEdBQUc7WUFDOUNFLFFBQVE0Qix1QkFBdUI7Z0JBQzdCLEdBQUc4QixpQkFBaUI7Z0JBQ3BCMUQsUUFBUXNHLFdBQVd0RyxNQUFNO1lBQzNCO1lBQ0FDLGlCQUFpQnNHLGVBQWU3RyxJQUFJO1lBQ3BDUSxPQUFPb0csV0FBV3BHLEtBQUs7UUFDekI7UUFFSixNQUFNNkcsWUFBWSxDQUFDLEVBQUU1RSxXQUFXLENBQUMsRUFBRXdFLHdCQUF3QixDQUFDO1FBRTVELElBQUksTUFBTUssSUFBQUEsbUJBQVUsRUFBQ0QsWUFBWTtZQUMvQixJQUFJO2dCQUNGRSxXQUFFLENBQUNDLFVBQVUsQ0FBQ0g7WUFDaEIsRUFBRSxPQUFNO1lBQ04sdUJBQXVCO1lBQ3pCO1FBQ0Y7UUFFQSxNQUFNLEVBQUUvRyxNQUFNLEVBQUVtSCxJQUFJLEVBQUVqSCxLQUFLLEVBQUUsR0FBR29HO1FBQ2hDLE9BQU9uRyxhQUFhO1lBQ2xCVCxNQUFNbUIsa0JBQWtCbkIsSUFBSTtZQUM1QlUsVUFBVXVHO1lBQ1Z0RyxVQUFVOEc7WUFDVm5ILFFBQ0VnRCxzQkFBc0JVLGtCQUFrQjVCLEtBQUssR0FBRzlCLFNBQVMwRCxrQkFBa0I1QixLQUFLLEdBQUc5QjtZQUNyRk0sVUFBVW1HLFVBQVVXLFFBQVE5RztZQUM1QkMsYUFBYTtnQkFBQztvQkFBRThHLFFBQVFoQjtvQkFBWWlCLE1BQU1QO2dCQUFVO2FBQUU7WUFDdEQ3RztRQUNGO0lBQ0Y7SUFHRixPQUFPNkQsUUFBUXdELE1BQU0sQ0FDbkIsQ0FBQ0MsS0FBS0M7UUFDSkMsT0FBT0MsTUFBTSxDQUFDSCxJQUFJaEgsUUFBUSxFQUFFaUgsT0FBT2pILFFBQVE7UUFDM0NnSCxJQUFJakgsV0FBVyxDQUFDcUgsSUFBSSxJQUFJSCxPQUFPbEgsV0FBVztRQUMxQyxPQUFPaUg7SUFDVCxHQUNBO1FBQUUsR0FBR3pFLGFBQWE7SUFBQztBQUV2QiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appendVersionToQueryKey.d.ts","sourceRoot":"","sources":["../../../src/versions/drafts/appendVersionToQueryKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAExC,eAAO,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"appendVersionToQueryKey.d.ts","sourceRoot":"","sources":["../../../src/versions/drafts/appendVersionToQueryKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAExC,eAAO,MAAM,uBAAuB,WAAW,KAAK,KAAQ,KAqB3D,CAAA"}
|
|
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "appendVersionToQueryKey", {
|
|
|
8
8
|
return appendVersionToQueryKey;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const appendVersionToQueryKey = (query)=>{
|
|
11
|
+
const appendVersionToQueryKey = (query = {})=>{
|
|
12
12
|
return Object.entries(query).reduce((res, [key, val])=>{
|
|
13
13
|
if ([
|
|
14
14
|
'AND',
|
|
@@ -34,4 +34,4 @@ const appendVersionToQueryKey = (query)=>{
|
|
|
34
34
|
}, {});
|
|
35
35
|
};
|
|
36
36
|
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJzaW9ucy9kcmFmdHMvYXBwZW5kVmVyc2lvblRvUXVlcnlLZXkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBXaGVyZSB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgYXBwZW5kVmVyc2lvblRvUXVlcnlLZXkgPSAocXVlcnk6IFdoZXJlID0ge30pOiBXaGVyZSA9PiB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhxdWVyeSkucmVkdWNlKChyZXMsIFtrZXksIHZhbF0pID0+IHtcbiAgICBpZiAoWydBTkQnLCAnT1InLCAnYW5kJywgJ29yJ10uaW5jbHVkZXMoa2V5KSAmJiBBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnJlcyxcbiAgICAgICAgW2tleS50b0xvd2VyQ2FzZSgpXTogdmFsLm1hcCgoc3ViUXVlcnkpID0+IGFwcGVuZFZlcnNpb25Ub1F1ZXJ5S2V5KHN1YlF1ZXJ5KSksXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGtleSAhPT0gJ2lkJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucmVzLFxuICAgICAgICBbYHZlcnNpb24uJHtrZXl9YF06IHZhbCxcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucmVzLFxuICAgICAgcGFyZW50OiB2YWwsXG4gICAgfVxuICB9LCB7fSlcbn1cbiJdLCJuYW1lcyI6WyJhcHBlbmRWZXJzaW9uVG9RdWVyeUtleSIsInF1ZXJ5IiwiT2JqZWN0IiwiZW50cmllcyIsInJlZHVjZSIsInJlcyIsImtleSIsInZhbCIsImluY2x1ZGVzIiwiQXJyYXkiLCJpc0FycmF5IiwidG9Mb3dlckNhc2UiLCJtYXAiLCJzdWJRdWVyeSIsInBhcmVudCJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiOzs7OytCQUVhQTs7O2VBQUFBOzs7QUFBTixNQUFNQSwwQkFBMEIsQ0FBQ0MsUUFBZSxDQUFDLENBQUM7SUFDdkQsT0FBT0MsT0FBT0MsT0FBTyxDQUFDRixPQUFPRyxNQUFNLENBQUMsQ0FBQ0MsS0FBSyxDQUFDQyxLQUFLQyxJQUFJO1FBQ2xELElBQUk7WUFBQztZQUFPO1lBQU07WUFBTztTQUFLLENBQUNDLFFBQVEsQ0FBQ0YsUUFBUUcsTUFBTUMsT0FBTyxDQUFDSCxNQUFNO1lBQ2xFLE9BQU87Z0JBQ0wsR0FBR0YsR0FBRztnQkFDTixDQUFDQyxJQUFJSyxXQUFXLEdBQUcsRUFBRUosSUFBSUssR0FBRyxDQUFDLENBQUNDLFdBQWFiLHdCQUF3QmE7WUFDckU7UUFDRjtRQUVBLElBQUlQLFFBQVEsTUFBTTtZQUNoQixPQUFPO2dCQUNMLEdBQUdELEdBQUc7Z0JBQ04sQ0FBQyxDQUFDLFFBQVEsRUFBRUMsSUFBSSxDQUFDLENBQUMsRUFBRUM7WUFDdEI7UUFDRjtRQUVBLE9BQU87WUFDTCxHQUFHRixHQUFHO1lBQ05TLFFBQVFQO1FBQ1Y7SUFDRixHQUFHLENBQUM7QUFDTiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getQueryDraftsSort.d.ts","sourceRoot":"","sources":["../../../src/versions/drafts/getQueryDraftsSort.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,kBAAkB,SAAU,MAAM,KAAG,
|
|
1
|
+
{"version":3,"file":"getQueryDraftsSort.d.ts","sourceRoot":"","sources":["../../../src/versions/drafts/getQueryDraftsSort.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,kBAAkB,SAAU,MAAM,KAAG,MAgBjD,CAAA"}
|
|
@@ -19,7 +19,10 @@ const getQueryDraftsSort = (sort)=>{
|
|
|
19
19
|
direction = '-';
|
|
20
20
|
orderBy = sort.substring(1);
|
|
21
21
|
}
|
|
22
|
+
if (orderBy === 'id') {
|
|
23
|
+
return `${direction}parent`;
|
|
24
|
+
}
|
|
22
25
|
return `${direction}version.${orderBy}`;
|
|
23
26
|
};
|
|
24
27
|
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJzaW9ucy9kcmFmdHMvZ2V0UXVlcnlEcmFmdHNTb3J0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGFrZXMgdGhlIGluY29taW5nIHNvcnQgYXJndW1lbnQgYW5kIHByZWZpeGVzIGl0IHdpdGggYHZlcnNpb25zLmAgYW5kIHByZXNlcnZlcyBhbnkgYC1gIHByZWZpeGVzIGZvciBkZXNjZW5kaW5nIG9yZGVyXG4gKiBAcGFyYW0gc29ydFxuICovXG5leHBvcnQgY29uc3QgZ2V0UXVlcnlEcmFmdHNTb3J0ID0gKHNvcnQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGlmICghc29ydCkgcmV0dXJuIHNvcnRcblxuICBsZXQgZGlyZWN0aW9uID0gJydcbiAgbGV0IG9yZGVyQnkgPSBzb3J0XG5cbiAgaWYgKHNvcnRbMF0gPT09ICctJykge1xuICAgIGRpcmVjdGlvbiA9ICctJ1xuICAgIG9yZGVyQnkgPSBzb3J0LnN1YnN0cmluZygxKVxuICB9XG5cbiAgaWYgKG9yZGVyQnkgPT09ICdpZCcpIHtcbiAgICByZXR1cm4gYCR7ZGlyZWN0aW9ufXBhcmVudGBcbiAgfVxuXG4gIHJldHVybiBgJHtkaXJlY3Rpb259dmVyc2lvbi4ke29yZGVyQnl9YFxufVxuIl0sIm5hbWVzIjpbImdldFF1ZXJ5RHJhZnRzU29ydCIsInNvcnQiLCJkaXJlY3Rpb24iLCJvcmRlckJ5Iiwic3Vic3RyaW5nIl0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQzs7OzsrQkFDWUE7OztlQUFBQTs7O0FBQU4sTUFBTUEscUJBQXFCLENBQUNDO0lBQ2pDLElBQUksQ0FBQ0EsTUFBTSxPQUFPQTtJQUVsQixJQUFJQyxZQUFZO0lBQ2hCLElBQUlDLFVBQVVGO0lBRWQsSUFBSUEsSUFBSSxDQUFDLEVBQUUsS0FBSyxLQUFLO1FBQ25CQyxZQUFZO1FBQ1pDLFVBQVVGLEtBQUtHLFNBQVMsQ0FBQztJQUMzQjtJQUVBLElBQUlELFlBQVksTUFBTTtRQUNwQixPQUFPLENBQUMsRUFBRUQsVUFBVSxNQUFNLENBQUM7SUFDN0I7SUFFQSxPQUFPLENBQUMsRUFBRUEsVUFBVSxRQUFRLEVBQUVDLFFBQVEsQ0FBQztBQUN6QyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getLatestCollectionVersion.d.ts","sourceRoot":"","sources":["../../src/versions/getLatestCollectionVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"getLatestCollectionVersion.d.ts","sourceRoot":"","sources":["../../src/versions/getLatestCollectionVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAO9C,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,yBAAyB,CAAA;IACjC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,WAAW,CAAA;IAClB,GAAG,CAAC,EAAE,cAAc,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,0BAA0B,qEAMpC,IAAI,eAkCN,CAAA"}
|
|
@@ -8,7 +8,9 @@ Object.defineProperty(exports, "getLatestCollectionVersion", {
|
|
|
8
8
|
return getLatestCollectionVersion;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
+
const _combineQueries = require("../database/combineQueries");
|
|
11
12
|
const _types = require("../types");
|
|
13
|
+
const _appendVersionToQueryKey = require("./drafts/appendVersionToQueryKey");
|
|
12
14
|
const getLatestCollectionVersion = async ({ id, config, payload, query, req })=>{
|
|
13
15
|
let latestVersion;
|
|
14
16
|
const hasConfigDb = Object.keys(config?.db ? config?.db : {}).length > 0;
|
|
@@ -19,11 +21,11 @@ const getLatestCollectionVersion = async ({ id, config, payload, query, req })=>
|
|
|
19
21
|
pagination: false,
|
|
20
22
|
req,
|
|
21
23
|
sort: '-updatedAt',
|
|
22
|
-
where: {
|
|
24
|
+
where: (0, _combineQueries.combineQueries)((0, _appendVersionToQueryKey.appendVersionToQueryKey)(query.where), {
|
|
23
25
|
parent: {
|
|
24
26
|
equals: id
|
|
25
27
|
}
|
|
26
|
-
}
|
|
28
|
+
})
|
|
27
29
|
});
|
|
28
30
|
[latestVersion] = docs;
|
|
29
31
|
}
|
|
@@ -50,4 +52,4 @@ const getLatestCollectionVersion = async ({ id, config, payload, query, req })=>
|
|
|
50
52
|
};
|
|
51
53
|
};
|
|
52
54
|
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJzaW9ucy9nZXRMYXRlc3RDb2xsZWN0aW9uVmVyc2lvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcsIFR5cGVXaXRoSUQgfSBmcm9tICcuLi9jb2xsZWN0aW9ucy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpbmRPbmVBcmdzIH0gZnJvbSAnLi4vZGF0YWJhc2UvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWQgfSBmcm9tICcuLi9wYXlsb2FkJ1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBUeXBlV2l0aFZlcnNpb24gfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBjb21iaW5lUXVlcmllcyB9IGZyb20gJy4uL2RhdGFiYXNlL2NvbWJpbmVRdWVyaWVzJ1xuaW1wb3J0IHsgZG9jSGFzVGltZXN0YW1wcyB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgYXBwZW5kVmVyc2lvblRvUXVlcnlLZXkgfSBmcm9tICcuL2RyYWZ0cy9hcHBlbmRWZXJzaW9uVG9RdWVyeUtleSdcblxudHlwZSBBcmdzID0ge1xuICBjb25maWc6IFNhbml0aXplZENvbGxlY3Rpb25Db25maWdcbiAgaWQ6IG51bWJlciB8IHN0cmluZ1xuICBwYXlsb2FkOiBQYXlsb2FkXG4gIHF1ZXJ5OiBGaW5kT25lQXJnc1xuICByZXE/OiBQYXlsb2FkUmVxdWVzdFxufVxuXG5leHBvcnQgY29uc3QgZ2V0TGF0ZXN0Q29sbGVjdGlvblZlcnNpb24gPSBhc3luYyA8VCBleHRlbmRzIFR5cGVXaXRoSUQgPSBhbnk+KHtcbiAgaWQsXG4gIGNvbmZpZyxcbiAgcGF5bG9hZCxcbiAgcXVlcnksXG4gIHJlcSxcbn06IEFyZ3MpOiBQcm9taXNlPFQ+ID0+IHtcbiAgbGV0IGxhdGVzdFZlcnNpb246IFR5cGVXaXRoVmVyc2lvbjxUPlxuXG4gIGNvbnN0IGhhc0NvbmZpZ0RiID0gT2JqZWN0LmtleXMoY29uZmlnPy5kYiA/IGNvbmZpZz8uZGIgOiB7fSkubGVuZ3RoID4gMFxuXG4gIGlmIChjb25maWcudmVyc2lvbnM/LmRyYWZ0cyAmJiAhaGFzQ29uZmlnRGIpIHtcbiAgICBjb25zdCB7IGRvY3MgfSA9IGF3YWl0IHBheWxvYWQuZGIuZmluZFZlcnNpb25zPFQ+KHtcbiAgICAgIGNvbGxlY3Rpb246IGNvbmZpZy5zbHVnLFxuICAgICAgbGltaXQ6IDEsXG4gICAgICBwYWdpbmF0aW9uOiBmYWxzZSxcbiAgICAgIHJlcSxcbiAgICAgIHNvcnQ6ICctdXBkYXRlZEF0JyxcbiAgICAgIHdoZXJlOiBjb21iaW5lUXVlcmllcyhhcHBlbmRWZXJzaW9uVG9RdWVyeUtleShxdWVyeS53aGVyZSksIHsgcGFyZW50OiB7IGVxdWFsczogaWQgfSB9KSxcbiAgICB9KVxuICAgIDtbbGF0ZXN0VmVyc2lvbl0gPSBkb2NzXG4gIH1cblxuICBsZXQgZG9jXG4gIGlmIChjb25maWc/LmRiPy5maW5kT25lKSB7XG4gICAgZG9jID0gYXdhaXQgY29uZmlnLmRiLmZpbmRPbmU8VD4oeyAuLi5xdWVyeSwgcmVxIH0pXG4gIH0gZWxzZSB7XG4gICAgZG9jID0gYXdhaXQgcGF5bG9hZC5kYi5maW5kT25lPFQ+KHsgLi4ucXVlcnksIHJlcSB9KVxuICB9XG5cbiAgaWYgKCFsYXRlc3RWZXJzaW9uIHx8IChkb2NIYXNUaW1lc3RhbXBzKGRvYykgJiYgbGF0ZXN0VmVyc2lvbi51cGRhdGVkQXQgPCBkb2MudXBkYXRlZEF0KSkge1xuICAgIHJldHVybiBkb2NcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4ubGF0ZXN0VmVyc2lvbi52ZXJzaW9uLFxuICAgIGlkLFxuICAgIGNyZWF0ZWRBdDogbGF0ZXN0VmVyc2lvbi5jcmVhdGVkQXQsXG4gICAgdXBkYXRlZEF0OiBsYXRlc3RWZXJzaW9uLnVwZGF0ZWRBdCxcbiAgfVxufVxuIl0sIm5hbWVzIjpbImdldExhdGVzdENvbGxlY3Rpb25WZXJzaW9uIiwiaWQiLCJjb25maWciLCJwYXlsb2FkIiwicXVlcnkiLCJyZXEiLCJsYXRlc3RWZXJzaW9uIiwiaGFzQ29uZmlnRGIiLCJPYmplY3QiLCJrZXlzIiwiZGIiLCJsZW5ndGgiLCJ2ZXJzaW9ucyIsImRyYWZ0cyIsImRvY3MiLCJmaW5kVmVyc2lvbnMiLCJjb2xsZWN0aW9uIiwic2x1ZyIsImxpbWl0IiwicGFnaW5hdGlvbiIsInNvcnQiLCJ3aGVyZSIsImNvbWJpbmVRdWVyaWVzIiwiYXBwZW5kVmVyc2lvblRvUXVlcnlLZXkiLCJwYXJlbnQiLCJlcXVhbHMiLCJkb2MiLCJmaW5kT25lIiwiZG9jSGFzVGltZXN0YW1wcyIsInVwZGF0ZWRBdCIsInZlcnNpb24iLCJjcmVhdGVkQXQiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6Ijs7OzsrQkFrQmFBOzs7ZUFBQUE7OztnQ0Faa0I7dUJBQ0U7eUNBQ087QUFVakMsTUFBTUEsNkJBQTZCLE9BQW1DLEVBQzNFQyxFQUFFLEVBQ0ZDLE1BQU0sRUFDTkMsT0FBTyxFQUNQQyxLQUFLLEVBQ0xDLEdBQUcsRUFDRTtJQUNMLElBQUlDO0lBRUosTUFBTUMsY0FBY0MsT0FBT0MsSUFBSSxDQUFDUCxRQUFRUSxLQUFLUixRQUFRUSxLQUFLLENBQUMsR0FBR0MsTUFBTSxHQUFHO0lBRXZFLElBQUlULE9BQU9VLFFBQVEsRUFBRUMsVUFBVSxDQUFDTixhQUFhO1FBQzNDLE1BQU0sRUFBRU8sSUFBSSxFQUFFLEdBQUcsTUFBTVgsUUFBUU8sRUFBRSxDQUFDSyxZQUFZLENBQUk7WUFDaERDLFlBQVlkLE9BQU9lLElBQUk7WUFDdkJDLE9BQU87WUFDUEMsWUFBWTtZQUNaZDtZQUNBZSxNQUFNO1lBQ05DLE9BQU9DLElBQUFBLDhCQUFjLEVBQUNDLElBQUFBLGdEQUF1QixFQUFDbkIsTUFBTWlCLEtBQUssR0FBRztnQkFBRUcsUUFBUTtvQkFBRUMsUUFBUXhCO2dCQUFHO1lBQUU7UUFDdkY7UUFDQyxDQUFDSyxjQUFjLEdBQUdRO0lBQ3JCO0lBRUEsSUFBSVk7SUFDSixJQUFJeEIsUUFBUVEsSUFBSWlCLFNBQVM7UUFDdkJELE1BQU0sTUFBTXhCLE9BQU9RLEVBQUUsQ0FBQ2lCLE9BQU8sQ0FBSTtZQUFFLEdBQUd2QixLQUFLO1lBQUVDO1FBQUk7SUFDbkQsT0FBTztRQUNMcUIsTUFBTSxNQUFNdkIsUUFBUU8sRUFBRSxDQUFDaUIsT0FBTyxDQUFJO1lBQUUsR0FBR3ZCLEtBQUs7WUFBRUM7UUFBSTtJQUNwRDtJQUVBLElBQUksQ0FBQ0MsaUJBQWtCc0IsSUFBQUEsdUJBQWdCLEVBQUNGLFFBQVFwQixjQUFjdUIsU0FBUyxHQUFHSCxJQUFJRyxTQUFTLEVBQUc7UUFDeEYsT0FBT0g7SUFDVDtJQUVBLE9BQU87UUFDTCxHQUFHcEIsY0FBY3dCLE9BQU87UUFDeEI3QjtRQUNBOEIsV0FBV3pCLGNBQWN5QixTQUFTO1FBQ2xDRixXQUFXdkIsY0FBY3VCLFNBQVM7SUFDcEM7QUFDRiJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "payload",
|
|
3
|
-
"version": "2.30.
|
|
3
|
+
"version": "2.30.2",
|
|
4
4
|
"description": "Node, React and MongoDB Headless CMS and Application Framework",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -13,13 +13,13 @@
|
|
|
13
13
|
"@date-io/date-fns": "2.16.0",
|
|
14
14
|
"@dnd-kit/core": "6.0.8",
|
|
15
15
|
"@dnd-kit/sortable": "7.0.2",
|
|
16
|
-
"@faceless-ui/modal": "2.0.
|
|
16
|
+
"@faceless-ui/modal": "2.0.2",
|
|
17
17
|
"@faceless-ui/scroll-info": "1.3.0",
|
|
18
|
-
"@faceless-ui/window-info": "2.1.
|
|
18
|
+
"@faceless-ui/window-info": "2.1.2",
|
|
19
19
|
"@monaco-editor/react": "4.5.1",
|
|
20
20
|
"@swc/core": "1.6.1",
|
|
21
21
|
"@swc/register": "0.1.10",
|
|
22
|
-
"body-parser": "1.20.
|
|
22
|
+
"body-parser": "1.20.3",
|
|
23
23
|
"body-scroll-lock": "4.0.0-beta.0",
|
|
24
24
|
"bson-objectid": "2.0.4",
|
|
25
25
|
"compression": "1.7.4",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"console-table-printer": "2.11.2",
|
|
29
29
|
"dataloader": "2.2.2",
|
|
30
30
|
"date-fns": "2.30.0",
|
|
31
|
-
"deep-equal": "2.2.
|
|
31
|
+
"deep-equal": "2.2.3",
|
|
32
32
|
"deepmerge": "4.3.1",
|
|
33
33
|
"dotenv": "8.6.0",
|
|
34
34
|
"express": "4.21.0",
|
|
@@ -55,14 +55,14 @@
|
|
|
55
55
|
"isomorphic-fetch": "3.0.0",
|
|
56
56
|
"joi": "17.9.2",
|
|
57
57
|
"json-schema-to-typescript": "14.0.5",
|
|
58
|
-
"jsonwebtoken": "9.0.
|
|
58
|
+
"jsonwebtoken": "9.0.2",
|
|
59
59
|
"jwt-decode": "3.1.2",
|
|
60
60
|
"md5": "2.3.0",
|
|
61
61
|
"method-override": "3.0.0",
|
|
62
62
|
"minimist": "1.2.8",
|
|
63
63
|
"mkdirp": "1.0.4",
|
|
64
64
|
"monaco-editor": "0.38.0",
|
|
65
|
-
"nodemailer": "6.9.
|
|
65
|
+
"nodemailer": "6.9.15",
|
|
66
66
|
"object-to-formdata": "4.5.1",
|
|
67
67
|
"passport": "0.6.0",
|
|
68
68
|
"passport-anonymous": "1.0.1",
|
|
@@ -90,11 +90,11 @@
|
|
|
90
90
|
"react-toastify": "10.0.5",
|
|
91
91
|
"sanitize-filename": "1.6.3",
|
|
92
92
|
"sass": "1.69.4",
|
|
93
|
-
"scheduler": "0.23.
|
|
93
|
+
"scheduler": "0.23.2",
|
|
94
94
|
"scmp": "2.1.0",
|
|
95
95
|
"sharp": "0.32.6",
|
|
96
|
-
"swc-loader": "0.2.
|
|
97
|
-
"terser-webpack-plugin": "5.3.
|
|
96
|
+
"swc-loader": "0.2.6",
|
|
97
|
+
"terser-webpack-plugin": "5.3.10",
|
|
98
98
|
"ts-essentials": "7.0.3",
|
|
99
99
|
"use-context-selector": "1.4.1",
|
|
100
100
|
"uuid": "9.0.1"
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
"devDependencies": {
|
|
103
103
|
"@release-it/conventional-changelog": "7.0.0",
|
|
104
104
|
"@types/asap": "2.0.0",
|
|
105
|
-
"@types/body-parser": "1.19.
|
|
105
|
+
"@types/body-parser": "1.19.5",
|
|
106
106
|
"@types/body-scroll-lock": "^3.1.0",
|
|
107
107
|
"@types/compression": "1.7.2",
|
|
108
108
|
"@types/express": "4.17.17",
|
|
@@ -115,14 +115,14 @@
|
|
|
115
115
|
"@types/isomorphic-fetch": "0.0.36",
|
|
116
116
|
"@types/joi": "14.3.4",
|
|
117
117
|
"@types/json-schema": "7.0.12",
|
|
118
|
-
"@types/jsonwebtoken": "
|
|
118
|
+
"@types/jsonwebtoken": "9.0.7",
|
|
119
119
|
"@types/method-override": "0.0.32",
|
|
120
120
|
"@types/mime": "2.0.3",
|
|
121
121
|
"@types/mini-css-extract-plugin": "^1.4.3",
|
|
122
122
|
"@types/minimist": "1.2.2",
|
|
123
123
|
"@types/mkdirp": "1.0.2",
|
|
124
124
|
"@types/node-fetch": "2.6.4",
|
|
125
|
-
"@types/nodemailer": "6.4.
|
|
125
|
+
"@types/nodemailer": "6.4.16",
|
|
126
126
|
"@types/passport": "1.0.12",
|
|
127
127
|
"@types/passport-anonymous": "1.0.3",
|
|
128
128
|
"@types/passport-jwt": "3.0.9",
|
|
@@ -159,9 +159,9 @@
|
|
|
159
159
|
"rimraf": "4.4.1",
|
|
160
160
|
"sass-loader": "12.6.0",
|
|
161
161
|
"serve-static": "1.15.0",
|
|
162
|
-
"swc-loader": "^0.2.
|
|
162
|
+
"swc-loader": "^0.2.6",
|
|
163
163
|
"terser": "5.19.2",
|
|
164
|
-
"terser-webpack-plugin": "^5.3.
|
|
164
|
+
"terser-webpack-plugin": "^5.3.10",
|
|
165
165
|
"url-loader": "4.1.1",
|
|
166
166
|
"vite": "^4.4.9",
|
|
167
167
|
"webpack": "^5.78.0",
|