UNPKG

moh-common-lib

Version:

A library of Angular components, services, and styles for B.C. Government Ministry of Health (MoH).

203 lines 15.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { UUID } from 'angular2-uuid'; /** @enum {number} */ const CommonImageError = { WrongType: 0, TooSmall: 1, TooBig: 2, AlreadyExists: 3, Unknown: 4, CannotOpen: 5, PDFnotSupported: 6, CannotOpenPDF: 7, }; export { CommonImageError }; CommonImageError[CommonImageError.WrongType] = 'WrongType'; CommonImageError[CommonImageError.TooSmall] = 'TooSmall'; CommonImageError[CommonImageError.TooBig] = 'TooBig'; CommonImageError[CommonImageError.AlreadyExists] = 'AlreadyExists'; CommonImageError[CommonImageError.Unknown] = 'Unknown'; CommonImageError[CommonImageError.CannotOpen] = 'CannotOpen'; CommonImageError[CommonImageError.PDFnotSupported] = 'PDFnotSupported'; CommonImageError[CommonImageError.CannotOpenPDF] = 'CannotOpenPDF'; export class CommonImageProcessingError { // added errorDescription.PDF.JS gives proper error messages as invalid pdf structure or password protected pdf.Good for splunk tracking /** * @param {?} errorCode * @param {?=} errorDescription */ constructor(errorCode, errorDescription) { this.errorCode = errorCode; this.errorDescription = errorDescription; } } if (false) { /** @type {?} */ CommonImageProcessingError.prototype.commonImage; /** @type {?} */ CommonImageProcessingError.prototype.rawImageFile; /** @type {?} */ CommonImageProcessingError.prototype.maxSizeAllowed; /** @type {?} */ CommonImageProcessingError.prototype.errorCode; /** @type {?} */ CommonImageProcessingError.prototype.errorDescription; } /** * Image as uploaded by user * @template T */ export class CommonImage { /** * @param {?=} fileContent (optional) The base64 of an image. See `fileContent` property. */ constructor(fileContent) { this.attachmentOrder = 0; this.uuid = UUID.UUID(); if (fileContent) { this.fileContent = fileContent; } } /** * Returns the JSON of an image ready to be submitted to the API. You may * have to set attachmentOrder before calling this. * @return {?} */ toJSON() { return { attachmentOrder: this.attachmentOrder, // will be 0 - should it be 1? attachmentUuid: this.uuid, attachmentDocumentType: this.documentType }; } /** * @return {?} */ clone() { /** @type {?} */ const newImage = new CommonImage(); newImage.uuid = this.uuid; newImage.fileContent = this.fileContent; newImage.documentType = this.documentType; newImage.contentType = this.contentType; newImage.size = this.size; // number of bytes. newImage.sizeUnit = this.sizeUnit; newImage.sizeTxt = this.sizeTxt; newImage.naturalHeight = this.naturalHeight; newImage.naturalWidth = this.naturalWidth; newImage.name = this.name; newImage.id = this.id; newImage.error = this.error; newImage.attachmentOrder = this.attachmentOrder; return newImage; } /** * @return {?} */ calculateSize() { /** @type {?} */ const aMultiples = ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']; /** @type {?} */ const nBytes = this.size; /** @type {?} */ let sOutput = nBytes + ' bytes'; for (let nMultiple = 0, nApprox = nBytes / 1024; nApprox > 1; nApprox /= 1024, nMultiple++) { sOutput = `${nApprox.toFixed(3)} ${aMultiples[nMultiple]} (${nBytes} bytes)`; this.sizeUnit = aMultiples[nMultiple]; } this.sizeTxt = sOutput; } } if (false) { /** @type {?} */ CommonImage.prototype.uuid; /** * The base64 content of an image. Must already be base64 or some other stringable data-type. * * You should be able to do <img src='myCommonImage.fileContent'> to render the image. * @type {?} */ CommonImage.prototype.fileContent; /** @type {?} */ CommonImage.prototype.documentType; /** * ContentType should generally match the MIME type, but can be set as needed by application. * https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types * @type {?} */ CommonImage.prototype.contentType; /** @type {?} */ CommonImage.prototype.size; /** @type {?} */ CommonImage.prototype.sizeUnit; /** @type {?} */ CommonImage.prototype.sizeTxt; /** @type {?} */ CommonImage.prototype.naturalHeight; /** @type {?} */ CommonImage.prototype.naturalWidth; /** @type {?} */ CommonImage.prototype.name; /** @type {?} */ CommonImage.prototype.id; /** @type {?} */ CommonImage.prototype.error; /** @type {?} */ CommonImage.prototype.attachmentOrder; } /** * @record * @template T */ export function CommonAttachmentJson() { } if (false) { /** @type {?} */ CommonAttachmentJson.prototype.attachmentOrder; /** @type {?} */ CommonAttachmentJson.prototype.attachmentUuid; /** @type {?} */ CommonAttachmentJson.prototype.attachmentDocumentType; } /** * @record */ export function CommonImageScaleFactors() { } if (false) { /** @type {?} */ CommonImageScaleFactors.prototype.widthFactor; /** @type {?} */ CommonImageScaleFactors.prototype.heightFactor; /** * @param {?} scale * @return {?} */ CommonImageScaleFactors.prototype.scaleDown = function (scale) { }; } export class CommonImageScaleFactorsImpl { /** * @param {?} wFactor * @param {?} hFactor */ constructor(wFactor, hFactor) { this.widthFactor = wFactor; this.heightFactor = hFactor; } /** * @param {?} scale * @return {?} */ scaleDown(scale) { return new CommonImageScaleFactorsImpl(this.widthFactor * scale, this.heightFactor * scale); } } if (false) { /** @type {?} */ CommonImageScaleFactorsImpl.prototype.widthFactor; /** @type {?} */ CommonImageScaleFactorsImpl.prototype.heightFactor; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2VzLm1vZGVsLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbW9oLWNvbW1vbi1saWIvIiwic291cmNlcyI6WyJsaWIvbW9kZWxzL2ltYWdlcy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0lBSW5DLFlBQVM7SUFDVCxXQUFRO0lBQ1IsU0FBTTtJQUNOLGdCQUFhO0lBQ2IsVUFBTztJQUNQLGFBQVU7SUFDVixrQkFBZTtJQUNmLGdCQUFhOzs7Ozs7Ozs7OztBQUdmLE1BQU0sT0FBTywwQkFBMEI7Ozs7OztJQUtyQyxZQUFtQixTQUEyQixFQUFTLGdCQUF5QjtRQUE3RCxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUFTLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUztJQUVoRixDQUFDO0NBQ0Y7OztJQVBDLGlEQUEwQjs7SUFDMUIsa0RBQW9COztJQUNwQixvREFBd0I7O0lBRVosK0NBQWtDOztJQUFFLHNEQUFnQzs7Ozs7O0FBUWxGLE1BQU0sT0FBTyxXQUFXOzs7O0lBT3RCLFlBQVksV0FBb0I7UUFnQ2hDLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBL0IxQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLFdBQVcsRUFBRTtZQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQzs7Ozs7O0lBaUNELE1BQU07UUFDSixPQUFPO1lBQ0wsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlOztZQUNyQyxjQUFjLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDekIsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDMUMsQ0FBQztJQUNKLENBQUM7Ozs7SUFFRCxLQUFLOztjQUNHLFFBQVEsR0FBRyxJQUFJLFdBQVcsRUFBRTtRQUVsQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDMUIsUUFBUSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3hDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMxQyxRQUFRLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDeEMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsbUJBQW1CO1FBQzlDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNsQyxRQUFRLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDaEMsUUFBUSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzVDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMxQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDMUIsUUFBUSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3RCLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUM1QixRQUFRLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFFaEQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzs7OztJQUVELGFBQWE7O2NBQ0wsVUFBVSxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQzs7Y0FDckUsTUFBTSxHQUFXLElBQUksQ0FBQyxJQUFJOztZQUM1QixPQUFPLEdBQVcsTUFBTSxHQUFHLFFBQVE7UUFFdkMsS0FBSyxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLE1BQU0sR0FBRyxJQUFJLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFO1lBQzFGLE9BQU8sR0FBRyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLE1BQU0sU0FBUyxDQUFDO1lBQzdFLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3ZDO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztDQUNGOzs7SUFuRkMsMkJBQWE7Ozs7Ozs7SUFpQmIsa0NBQW9COztJQUNwQixtQ0FBZ0I7Ozs7OztJQU1oQixrQ0FBb0I7O0lBRXBCLDJCQUFhOztJQUNiLCtCQUFpQjs7SUFDakIsOEJBQWdCOztJQUNoQixvQ0FBc0I7O0lBQ3RCLG1DQUFxQjs7SUFDckIsMkJBQWE7O0lBR2IseUJBQVc7O0lBRVgsNEJBQXlCOztJQUN6QixzQ0FBNEI7Ozs7OztBQWdEOUIsMENBSUM7OztJQUhDLCtDQUF3Qjs7SUFDeEIsOENBQXVCOztJQUN2QixzREFBMEI7Ozs7O0FBRzVCLDZDQUtDOzs7SUFKQyw4Q0FBb0I7O0lBQ3BCLCtDQUFxQjs7Ozs7SUFFckIsbUVBQWtEOztBQUdwRCxNQUFNLE9BQU8sMkJBQTJCOzs7OztJQUl0QyxZQUFZLE9BQWUsRUFBRSxPQUFlO1FBQzFDLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDO0lBQzlCLENBQUM7Ozs7O0lBRUQsU0FBUyxDQUFDLEtBQWE7UUFDckIsT0FBTyxJQUFJLDJCQUEyQixDQUNwQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssRUFDeEIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0NBQ0Y7OztJQWJDLGtEQUFvQjs7SUFDcEIsbURBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVVVJRCB9IGZyb20gJ2FuZ3VsYXIyLXV1aWQnO1xyXG5cclxuLy8gTk9URTogSWYgeW91IGNoYW5nZSBhbnl0aGluZyBpbiB0aGlzIGVudW0sIGNoZWNrIGltYWdlLWVycm9yLW1vZGFsLmNvbXBvbmVudC5odG1sIGZvciB0ZXN0cyBhbmQgZmlsZS11cGxvYWRlci5jb21wb25lbnQudHM6XHJcbmV4cG9ydCBlbnVtIENvbW1vbkltYWdlRXJyb3Ige1xyXG4gIFdyb25nVHlwZSxcclxuICBUb29TbWFsbCxcclxuICBUb29CaWcsXHJcbiAgQWxyZWFkeUV4aXN0cyxcclxuICBVbmtub3duLFxyXG4gIENhbm5vdE9wZW4sXHJcbiAgUERGbm90U3VwcG9ydGVkLFxyXG4gIENhbm5vdE9wZW5QREYsXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb21tb25JbWFnZVByb2Nlc3NpbmdFcnJvciB7XHJcbiAgY29tbW9uSW1hZ2U/OiBDb21tb25JbWFnZTtcclxuICByYXdJbWFnZUZpbGU/OiBGaWxlO1xyXG4gIG1heFNpemVBbGxvd2VkPzogbnVtYmVyO1xyXG4gIC8vIGFkZGVkIGVycm9yRGVzY3JpcHRpb24uUERGLkpTIGdpdmVzIHByb3BlciBlcnJvciBtZXNzYWdlcyBhcyBpbnZhbGlkIHBkZiBzdHJ1Y3R1cmUgb3IgcGFzc3dvcmQgcHJvdGVjdGVkIHBkZi5Hb29kIGZvciBzcGx1bmsgdHJhY2tpbmdcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZXJyb3JDb2RlOiBDb21tb25JbWFnZUVycm9yLCBwdWJsaWMgZXJyb3JEZXNjcmlwdGlvbj86IHN0cmluZykge1xyXG5cclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBJbWFnZSBhcyB1cGxvYWRlZCBieSB1c2VyXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQ29tbW9uSW1hZ2U8VCA9IGFueT4ge1xyXG5cclxuICB1dWlkOiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwYXJhbSBmaWxlQ29udGVudCAob3B0aW9uYWwpIFRoZSBiYXNlNjQgb2YgYW4gaW1hZ2UuIFNlZSBgZmlsZUNvbnRlbnRgIHByb3BlcnR5LlxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKGZpbGVDb250ZW50Pzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnV1aWQgPSBVVUlELlVVSUQoKTtcclxuICAgIGlmIChmaWxlQ29udGVudCkge1xyXG4gICAgICB0aGlzLmZpbGVDb250ZW50ID0gZmlsZUNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgYmFzZTY0IGNvbnRlbnQgb2YgYW4gaW1hZ2UuICBNdXN0IGFscmVhZHkgYmUgYmFzZTY0IG9yIHNvbWUgb3RoZXIgc3RyaW5nYWJsZSBkYXRhLXR5cGUuXHJcbiAgICogXHJcbiAgICogWW91IHNob3VsZCBiZSBhYmxlIHRvIGRvIDxpbWcgc3JjPSdteUNvbW1vbkltYWdlLmZpbGVDb250ZW50Jz4gdG8gcmVuZGVyIHRoZSBpbWFnZS5cclxuICAgKi9cclxuICBmaWxlQ29udGVudDogc3RyaW5nO1xyXG4gIGRvY3VtZW50VHlwZTogVDtcclxuXHJcbiAgLyoqXHJcbiAgICogQ29udGVudFR5cGUgc2hvdWxkIGdlbmVyYWxseSBtYXRjaCB0aGUgTUlNRSB0eXBlLCBidXQgY2FuIGJlIHNldCBhcyBuZWVkZWQgYnkgYXBwbGljYXRpb24uXHJcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9CYXNpY3Nfb2ZfSFRUUC9NSU1FX3R5cGVzXHJcbiAgICovXHJcbiAgY29udGVudFR5cGU6IHN0cmluZztcclxuICAvLyBudW1iZXIgb2YgYnl0ZXMuXHJcbiAgc2l6ZTogbnVtYmVyO1xyXG4gIHNpemVVbml0OiBzdHJpbmc7XHJcbiAgc2l6ZVR4dDogc3RyaW5nO1xyXG4gIG5hdHVyYWxIZWlnaHQ6IG51bWJlcjtcclxuICBuYXR1cmFsV2lkdGg6IG51bWJlcjtcclxuICBuYW1lOiBzdHJpbmc7XHJcblxyXG4gIC8vIGZpbGUgdW5pcW5lc3MgY2hlY2tzdW1cclxuICBpZDogc3RyaW5nO1xyXG5cclxuICBlcnJvcj86IENvbW1vbkltYWdlRXJyb3I7XHJcbiAgYXR0YWNobWVudE9yZGVyOiBudW1iZXIgPSAwO1xyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBKU09OIG9mIGFuIGltYWdlIHJlYWR5IHRvIGJlIHN1Ym1pdHRlZCB0byB0aGUgQVBJLiAgWW91IG1heVxyXG4gICAqIGhhdmUgdG8gc2V0IGF0dGFjaG1lbnRPcmRlciBiZWZvcmUgY2FsbGluZyB0aGlzLlxyXG4gICAqL1xyXG4gIHRvSlNPTigpOiBDb21tb25BdHRhY2htZW50SnNvbjxUPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBhdHRhY2htZW50T3JkZXI6IHRoaXMuYXR0YWNobWVudE9yZGVyLCAvLyB3aWxsIGJlIDAgLSBzaG91bGQgaXQgYmUgMT9cclxuICAgICAgYXR0YWNobWVudFV1aWQ6IHRoaXMudXVpZCxcclxuICAgICAgYXR0YWNobWVudERvY3VtZW50VHlwZTogdGhpcy5kb2N1bWVudFR5cGVcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBjbG9uZSgpOiBDb21tb25JbWFnZSB7XHJcbiAgICBjb25zdCBuZXdJbWFnZSA9IG5ldyBDb21tb25JbWFnZSgpO1xyXG5cclxuICAgIG5ld0ltYWdlLnV1aWQgPSB0aGlzLnV1aWQ7XHJcbiAgICBuZXdJbWFnZS5maWxlQ29udGVudCA9IHRoaXMuZmlsZUNvbnRlbnQ7XHJcbiAgICBuZXdJbWFnZS5kb2N1bWVudFR5cGUgPSB0aGlzLmRvY3VtZW50VHlwZTtcclxuICAgIG5ld0ltYWdlLmNvbnRlbnRUeXBlID0gdGhpcy5jb250ZW50VHlwZTtcclxuICAgIG5ld0ltYWdlLnNpemUgPSB0aGlzLnNpemU7IC8vIG51bWJlciBvZiBieXRlcy5cclxuICAgIG5ld0ltYWdlLnNpemVVbml0ID0gdGhpcy5zaXplVW5pdDtcclxuICAgIG5ld0ltYWdlLnNpemVUeHQgPSB0aGlzLnNpemVUeHQ7XHJcbiAgICBuZXdJbWFnZS5uYXR1cmFsSGVpZ2h0ID0gdGhpcy5uYXR1cmFsSGVpZ2h0O1xyXG4gICAgbmV3SW1hZ2UubmF0dXJhbFdpZHRoID0gdGhpcy5uYXR1cmFsV2lkdGg7XHJcbiAgICBuZXdJbWFnZS5uYW1lID0gdGhpcy5uYW1lO1xyXG4gICAgbmV3SW1hZ2UuaWQgPSB0aGlzLmlkO1xyXG4gICAgbmV3SW1hZ2UuZXJyb3IgPSB0aGlzLmVycm9yO1xyXG4gICAgbmV3SW1hZ2UuYXR0YWNobWVudE9yZGVyID0gdGhpcy5hdHRhY2htZW50T3JkZXI7XHJcblxyXG4gICAgcmV0dXJuIG5ld0ltYWdlO1xyXG4gIH1cclxuXHJcbiAgY2FsY3VsYXRlU2l6ZSgpIHtcclxuICAgIGNvbnN0IGFNdWx0aXBsZXMgPSBbJ0tpQicsICdNaUInLCAnR2lCJywgJ1RpQicsICdQaUInLCAnRWlCJywgJ1ppQicsICdZaUInXTtcclxuICAgIGNvbnN0IG5CeXRlczogbnVtYmVyID0gdGhpcy5zaXplO1xyXG4gICAgbGV0IHNPdXRwdXQ6IHN0cmluZyA9IG5CeXRlcyArICcgYnl0ZXMnO1xyXG4gICAgXHJcbiAgICBmb3IgKGxldCBuTXVsdGlwbGUgPSAwLCBuQXBwcm94ID0gbkJ5dGVzIC8gMTAyNDsgbkFwcHJveCA+IDE7IG5BcHByb3ggLz0gMTAyNCwgbk11bHRpcGxlKyspIHtcclxuICAgICAgc091dHB1dCA9IGAke25BcHByb3gudG9GaXhlZCgzKX0gJHthTXVsdGlwbGVzW25NdWx0aXBsZV19ICgke25CeXRlc30gYnl0ZXMpYDtcclxuICAgICAgdGhpcy5zaXplVW5pdCA9IGFNdWx0aXBsZXNbbk11bHRpcGxlXTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNpemVUeHQgPSBzT3V0cHV0O1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb21tb25BdHRhY2htZW50SnNvbjxUPiB7XHJcbiAgYXR0YWNobWVudE9yZGVyOiBudW1iZXI7XHJcbiAgYXR0YWNobWVudFV1aWQ6IHN0cmluZztcclxuICBhdHRhY2htZW50RG9jdW1lbnRUeXBlOiBUO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbW1vbkltYWdlU2NhbGVGYWN0b3JzIHtcclxuICB3aWR0aEZhY3RvcjogbnVtYmVyO1xyXG4gIGhlaWdodEZhY3RvcjogbnVtYmVyO1xyXG5cclxuICBzY2FsZURvd24oc2NhbGU6IG51bWJlcik6IENvbW1vbkltYWdlU2NhbGVGYWN0b3JzO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29tbW9uSW1hZ2VTY2FsZUZhY3RvcnNJbXBsIGltcGxlbWVudHMgQ29tbW9uSW1hZ2VTY2FsZUZhY3RvcnMge1xyXG4gIHdpZHRoRmFjdG9yOiBudW1iZXI7XHJcbiAgaGVpZ2h0RmFjdG9yOiBudW1iZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHdGYWN0b3I6IG51bWJlciwgaEZhY3RvcjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLndpZHRoRmFjdG9yID0gd0ZhY3RvcjtcclxuICAgIHRoaXMuaGVpZ2h0RmFjdG9yID0gaEZhY3RvcjtcclxuICB9XHJcblxyXG4gIHNjYWxlRG93bihzY2FsZTogbnVtYmVyKTogQ29tbW9uSW1hZ2VTY2FsZUZhY3RvcnMge1xyXG4gICAgcmV0dXJuIG5ldyBDb21tb25JbWFnZVNjYWxlRmFjdG9yc0ltcGwoXHJcbiAgICAgIHRoaXMud2lkdGhGYWN0b3IgKiBzY2FsZSxcclxuICAgICAgdGhpcy5oZWlnaHRGYWN0b3IgKiBzY2FsZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==