UNPKG

webglimpse

Version:

Webglimpse is a data visualization library for the web.

143 lines 20.8 kB
/* * Copyright (c) 2014, Metron, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * 3. Neither the name of the copyright holder nor the names of its contributors * may be used to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ import { parseCssColor } from '../color'; import { hasval } from '../util/util'; export class TimelineAnnotationIconUi { constructor(icon) { this._setAttrs(icon); } _setAttrs(icon) { this._url = icon.url; this._displayWidth = icon.displayWidth; this._displayHeight = icon.displayHeight; this._hAlign = icon.hAlign; this._vAlign = icon.vAlign; this._hOffset = icon.hOffset; this._vOffset = icon.vOffset; } get url() { return this._url; } get displayWidth() { return this._displayWidth; } get displayHeight() { return this._displayHeight; } get hAlign() { return this._hAlign; } get vAlign() { return this._vAlign; } get hOffset() { return this._hOffset; } get vOffset() { return this._vOffset; } snapshot() { return { url: this._url, displayWidth: this._displayWidth, displayHeight: this._displayHeight, hAlign: this._hAlign, vAlign: this._vAlign, hOffset: this._hOffset, vOffset: this._vOffset }; } } export class TimelineAnnotationStyleUi { constructor(style) { this._styleGuid = style.styleGuid; this._setAttrs(style); } get styleGuid() { return this._styleGuid; } _setAttrs(style) { this._color = hasval(style.color) ? parseCssColor(style.color) : undefined; this._font = style.font; this._hTextOffset = style.hTextOffset; this._vTextOffset = style.vTextOffset; this._hTextAlign = style.hTextAlign; this._vTextAlign = style.vTextAlign; this._align = style.align; this._uiHint = style.uiHint; this._icons = hasval(style.color) ? style.icons.map((icon) => new TimelineAnnotationIconUi(icon)) : []; this._bgColor = hasval(style.bgColor) ? parseCssColor(style.bgColor) : undefined; this._bgPadding = style.bgPadding; this._bgBorderRadius = style.bgBorderRadius; } get numIcons() { return this._icons.length; } icon(index) { return this._icons[index]; } get color() { return this._color; } get font() { return this._font; } get hTextOffset() { return this._hTextOffset; } get vTextOffset() { return this._vTextOffset; } get hTextAlign() { return this._hTextAlign; } get vTextAlign() { return this._vTextAlign; } get align() { return this._align; } get uiHint() { return this._uiHint; } get bgColor() { return this._bgColor; } get bgPadding() { return this._bgPadding; } get bgBorderRadius() { return this._bgBorderRadius; } snapshot() { return { styleGuid: this._styleGuid, color: this._color.cssString, font: this._font, vTextOffset: this._hTextOffset, hTextOffset: this._vTextOffset, vTextAlign: this._hTextAlign, hTextAlign: this._vTextAlign, align: this._align, uiHint: this._uiHint, icons: this._icons.map((ui) => ui.snapshot()), bgColor: this._bgColor.cssString, bgPadding: this._bgPadding, bgBorderRadius: this._bgBorderRadius }; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmVfYW5ub3RhdGlvbl9zdHlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy93ZWJnbGltcHNlL3RpbWVsaW5lL3RpbWVsaW5lX2Fubm90YXRpb25fc3R5bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Qkc7QUFDSCxPQUFPLEVBQVMsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUE2QnRDLE1BQU0sT0FBTyx3QkFBd0I7SUFTakMsWUFBWSxJQUE0QjtRQUNwQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFTyxTQUFTLENBQUMsSUFBNEI7UUFDMUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN2QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLEdBQUcsS0FBYSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLElBQUksWUFBWSxLQUFhLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDekQsSUFBSSxhQUFhLEtBQWEsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FB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QUFFLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDN0MsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUztZQUNoQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDMUIsY0FBYyxFQUFFLElBQUksQ0FBQyxlQUFlO1NBQ3ZDLENBQUM7SUFDTixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQsIE1ldHJvbiwgSW5jLlxyXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKlxyXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLFxyXG4gKiBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XHJcbiAqXHJcbiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpc1xyXG4gKiAgICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cclxuICpcclxuICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLFxyXG4gKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uXHJcbiAqICAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxyXG4gKlxyXG4gKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9yc1xyXG4gKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dFxyXG4gKiAgICBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXHJcbiAqXHJcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgXCJBUyBJU1wiIEFORFxyXG4gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxyXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXHJcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SXHJcbiAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xyXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7XHJcbiAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTlxyXG4gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxyXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJU1xyXG4gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cclxuICovXHJcbmltcG9ydCB7IENvbG9yLCBwYXJzZUNzc0NvbG9yIH0gZnJvbSAnLi4vY29sb3InO1xyXG5pbXBvcnQgeyBoYXN2YWwgfSBmcm9tICcuLi91dGlsL3V0aWwnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUaW1lbGluZUFubm90YXRpb25JY29uIHtcclxuICAgIHVybDogc3RyaW5nO1xyXG4gICAgZGlzcGxheVdpZHRoOiBudW1iZXI7IC8vIGhvcml6b250YWwgc2l6ZSBvZiBpY29uIGluIHBpeGVsc1xyXG4gICAgZGlzcGxheUhlaWdodDogbnVtYmVyOyAvLyB2ZXJ0aWNhbCBzaXplIG9mIGljb24gaW4gcGl4ZWxzXHJcbiAgICBoQWxpZ246IG51bWJlcjsgLy8gcmVsYXRpdmUgbG9jYXRpb24gb2YgY2VudGVyIHBpeGVsIG9mIGljb24gKDA9bGVmdCBzaWRlLCAxPXJpZ2h0IHNpZGUpXHJcbiAgICB2QWxpZ246IG51bWJlcjsgLy8gcmVsYXRpdmUgbG9jYXRpb24gb2YgY2VudGVyIHBpeGVsIG9mIGljb24gKDA9bGVmdCBzaWRlLCAxPXJpZ2h0IHNpZGUpXHJcbiAgICBoT2Zmc2V0OiBudW1iZXI7IC8vIGNlbnRlciBwaXhlbCBob3Jpem9udGFsIG9mZnNldCBpbiBwaXhlbHNcclxuICAgIHZPZmZzZXQ6IG51bWJlcjsgLy8gY2VudGVyIHBpeGVsIHZlcnRpY2FsIG9mZnNldCBpbiBwaXhlbHNcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUaW1lbGluZUFubm90YXRpb25TdHlsZSB7XHJcbiAgICBzdHlsZUd1aWQ6IHN0cmluZztcclxuICAgIGNvbG9yPzogc3RyaW5nO1xyXG4gICAgZm9udD86IHN0cmluZzsgLy8gbGFiZWwgZm9udFxyXG4gICAgaFRleHRBbGlnbj86IG51bWJlcjsgLy8gcmVsYXRpdmUgbG9jYXRpb24gb2YgY2VudGVyIHBpeGVsIG9mIHRleHQgKDA9bGVmdCBzaWRlLCAxPXJpZ2h0IHNpZGUpXHJcbiAgICB2VGV4dEFsaWduPzogbnVtYmVyOyAvLyByZWxhdGl2ZSBsb2NhdGlvbiBvZiBjZW50ZXIgcGl4ZWwgb2YgdGV4dCAoMD1sZWZ0IHNpZGUsIDE9cmlnaHQgc2lkZSlcclxuICAgIGhUZXh0T2Zmc2V0PzogbnVtYmVyOyAvLyBob3Jpem9udGFsIG9mZnNldCBvZiB0aGUgbGFiZWwgdGV4dCBpbiBwaXhlbHNcclxuICAgIHZUZXh0T2Zmc2V0PzogbnVtYmVyOyAvLyB2ZXJ0aWNhbCBvZmZzZXQgb2YgdGhlIGxhYmVsIHRleHQgaW4gcGl4ZWxzXHJcbiAgICBhbGlnbj86IG51bWJlcjsgLy8gZm9yIGhvcml6b250YWwtbGluZSwgdmVydGljYWwtbGluZSBvbmx5LCByZWxhdGl2ZSBsb2NhdGlvbiBvZiB0ZXh0L2ljb25zIGFsb25nXHJcbiAgICAvLyBhbm5vdGF0aW9uIGxpbmUgKDAgPSBib3R0b20vbGVmdCwgMT10b3AvcmlnaHQpXHJcbiAgICB1aUhpbnQ/OiBzdHJpbmc7IC8vIG9uZSBvZjogcG9pbnQsIGhvcml6b250YWwtbGluZSwgdmVydGljYWwtbGluZVxyXG4gICAgaWNvbnM/OiBUaW1lbGluZUFubm90YXRpb25JY29uW107XHJcbiAgICBiZ0NvbG9yPzogc3RyaW5nO1xyXG4gICAgYmdQYWRkaW5nPzogbnVtYmVyO1xyXG4gICAgYmdCb3JkZXJSYWRpdXM/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUaW1lbGluZUFubm90YXRpb25JY29uVWkge1xyXG4gICAgcHJpdmF0ZSBfdXJsOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIF9kaXNwbGF5V2lkdGg6IG51bWJlcjtcclxuICAgIHByaXZhdGUgX2Rpc3BsYXlIZWlnaHQ6IG51bWJlcjtcclxuICAgIHByaXZhdGUgX2hBbGlnbjogbnVtYmVyO1xyXG4gICAgcHJpdmF0ZSBfdkFsaWduOiBudW1iZXI7XHJcbiAgICBwcml2YXRlIF9oT2Zmc2V0OiBudW1iZXI7XHJcbiAgICBwcml2YXRlIF92T2Zmc2V0OiBudW1iZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaWNvbjogVGltZWxpbmVBbm5vdGF0aW9uSWNvbikge1xyXG4gICAgICAgIHRoaXMuX3NldEF0dHJzKGljb24pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3NldEF0dHJzKGljb246IFRpbWVsaW5lQW5ub3RhdGlvbkljb24pIHtcclxuICAgICAgICB0aGlzLl91cmwgPSBpY29uLnVybDtcclxuICAgICAgICB0aGlzLl9kaXNwbGF5V2lkdGggPSBpY29uLmRpc3BsYXlXaWR0aDtcclxuICAgICAgICB0aGlzLl9kaXNwbGF5SGVpZ2h0ID0gaWNvbi5kaXNwbGF5SGVpZ2h0O1xyXG4gICAgICAgIHRoaXMuX2hBbGlnbiA9IGljb24uaEFsaWduO1xyXG4gICAgICAgIHRoaXMuX3ZBbGlnbiA9IGljb24udkFsaWduO1xyXG4gICAgICAgIHRoaXMuX2hPZmZzZXQgPSBpY29uLmhPZmZzZXQ7XHJcbiAgICAgICAgdGhpcy5fdk9mZnNldCA9IGljb24udk9mZnNldDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgdXJsKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl91cmw7IH1cclxuICAgIGdldCBkaXNwbGF5V2lkdGgoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX2Rpc3BsYXlXaWR0aDsgfVxyXG4gICAgZ2V0IGRpc3BsYXlIZWlnaHQoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX2Rpc3BsYXlIZWlnaHQ7IH1cclxuICAgIGdldCBoQWxpZ24oKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX2hBbGlnbjsgfVxyXG4gICAgZ2V0IHZBbGlnbigpOiBudW1iZXIgeyByZXR1cm4gdGhpcy5fdkFsaWduOyB9XHJcbiAgICBnZXQgaE9mZnNldCgpOiBudW1iZXIgeyByZXR1cm4gdGhpcy5faE9mZnNldDsgfVxyXG4gICAgZ2V0IHZPZmZzZXQoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX3ZPZmZzZXQ7IH1cclxuXHJcbiAgICBzbmFwc2hvdCgpOiBUaW1lbGluZUFubm90YXRpb25JY29uIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB1cmw6IHRoaXMuX3VybCxcclxuICAgICAgICAgICAgZGlzcGxheVdpZHRoOiB0aGlzLl9kaXNwbGF5V2lkdGgsXHJcbiAgICAgICAgICAgIGRpc3BsYXlIZWlnaHQ6IHRoaXMuX2Rpc3BsYXlIZWlnaHQsXHJcbiAgICAgICAgICAgIGhBbGlnbjogdGhpcy5faEFsaWduLFxyXG4gICAgICAgICAgICB2QWxpZ246IHRoaXMuX3ZBbGlnbixcclxuICAgICAgICAgICAgaE9mZnNldDogdGhpcy5faE9mZnNldCxcclxuICAgICAgICAgICAgdk9mZnNldDogdGhpcy5fdk9mZnNldFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFRpbWVsaW5lQW5ub3RhdGlvblN0eWxlVWkge1xyXG4gICAgcHJpdmF0ZSBfc3R5bGVHdWlkOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIF9jb2xvcjogQ29sb3I7XHJcbiAgICBwcml2YXRlIF9mb250OiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIF92VGV4dE9mZnNldDogbnVtYmVyO1xyXG4gICAgcHJpdmF0ZSBfaFRleHRPZmZzZXQ6IG51bWJlcjtcclxuICAgIHByaXZhdGUgX3ZUZXh0QWxpZ246IG51bWJlcjtcclxuICAgIHByaXZhdGUgX2hUZXh0QWxpZ246IG51bWJlcjtcclxuICAgIHByaXZhdGUgX2FsaWduOiBudW1iZXI7XHJcbiAgICBwcml2YXRlIF91aUhpbnQ6IHN0cmluZztcclxuICAgIHByaXZhdGUgX2ljb25zOiBUaW1lbGluZUFubm90YXRpb25JY29uVWlbXTtcclxuICAgIHByaXZhdGUgX2JnQ29sb3I/OiBDb2xvcjtcclxuICAgIHByaXZhdGUgX2JnUGFkZGluZz86IG51bWJlcjtcclxuICAgIHByaXZhdGUgX2JnQm9yZGVyUmFkaXVzPzogbnVtYmVyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHN0eWxlOiBUaW1lbGluZUFubm90YXRpb25TdHlsZSkge1xyXG4gICAgICAgIHRoaXMuX3N0eWxlR3VpZCA9IHN0eWxlLnN0eWxlR3VpZDtcclxuICAgICAgICB0aGlzLl9zZXRBdHRycyhzdHlsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHN0eWxlR3VpZCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zdHlsZUd1aWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc2V0QXR0cnMoc3R5bGU6IFRpbWVsaW5lQW5ub3RhdGlvblN0eWxlKSB7XHJcbiAgICAgICAgdGhpcy5fY29sb3IgPSBoYXN2YWwoc3R5bGUuY29sb3IpID8gcGFyc2VDc3NDb2xvcihzdHlsZS5jb2xvcikgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5fZm9udCA9IHN0eWxlLmZvbnQ7XHJcbiAgICAgICAgdGhpcy5faFRleHRPZmZzZXQgPSBzdHlsZS5oVGV4dE9mZnNldDtcclxuICAgICAgICB0aGlzLl92VGV4dE9mZnNldCA9IHN0eWxlLnZUZXh0T2Zmc2V0O1xyXG4gICAgICAgIHRoaXMuX2hUZXh0QWxpZ24gPSBzdHlsZS5oVGV4dEFsaWduO1xyXG4gICAgICAgIHRoaXMuX3ZUZXh0QWxpZ24gPSBzdHlsZS52VGV4dEFsaWduO1xyXG4gICAgICAgIHRoaXMuX2FsaWduID0gc3R5bGUuYWxpZ247XHJcbiAgICAgICAgdGhpcy5fdWlIaW50ID0gc3R5bGUudWlIaW50O1xyXG4gICAgICAgIHRoaXMuX2ljb25zID0gaGFzdmFsKHN0eWxlLmNvbG9yKSA/IHN0eWxlLmljb25zLm1hcCgoaWNvbikgPT4gbmV3IFRpbWVsaW5lQW5ub3RhdGlvbkljb25VaShpY29uKSkgOiBbXTtcclxuICAgICAgICB0aGlzLl9iZ0NvbG9yID0gaGFzdmFsKHN0eWxlLmJnQ29sb3IpID8gcGFyc2VDc3NDb2xvcihzdHlsZS5iZ0NvbG9yKSA6IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLl9iZ1BhZGRpbmcgPSBzdHlsZS5iZ1BhZGRpbmc7XHJcbiAgICAgICAgdGhpcy5fYmdCb3JkZXJSYWRpdXMgPSBzdHlsZS5iZ0JvcmRlclJhZGl1cztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgbnVtSWNvbnMoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faWNvbnMubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIGljb24oaW5kZXg6IG51bWJlcik6IFRpbWVsaW5lQW5ub3RhdGlvbkljb25VaSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ljb25zW2luZGV4XTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29sb3IoKTogQ29sb3Ige1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jb2xvcjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZm9udCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9mb250O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBoVGV4dE9mZnNldCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9oVGV4dE9mZnNldDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgdlRleHRPZmZzZXQoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdlRleHRPZmZzZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGhUZXh0QWxpZ24oKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faFRleHRBbGlnbjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgdlRleHRBbGlnbigpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl92VGV4dEFsaWduO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBhbGlnbigpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9hbGlnbjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgdWlIaW50KCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VpSGludDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYmdDb2xvcigpOiBDb2xvciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JnQ29sb3I7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGJnUGFkZGluZygpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9iZ1BhZGRpbmc7XHJcbiAgICB9XHJcbiAgICBnZXQgYmdCb3JkZXJSYWRpdXMoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYmdCb3JkZXJSYWRpdXM7XHJcbiAgICB9XHJcblxyXG4gICAgc25hcHNob3QoKTogVGltZWxpbmVBbm5vdGF0aW9uU3R5bGUge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHN0eWxlR3VpZDogdGhpcy5fc3R5bGVHdWlkLFxyXG4gICAgICAgICAgICBjb2xvcjogdGhpcy5fY29sb3IuY3NzU3RyaW5nLFxyXG4gICAgICAgICAgICBmb250OiB0aGlzLl9mb250LFxyXG4gICAgICAgICAgICB2VGV4dE9mZnNldDogdGhpcy5faFRleHRPZmZzZXQsXHJcbiAgICAgICAgICAgIGhUZXh0T2Zmc2V0OiB0aGlzLl92VGV4dE9mZnNldCxcclxuICAgICAgICAgICAgdlRleHRBbGlnbjogdGhpcy5faFRleHRBbGlnbixcclxuICAgICAgICAgICAgaFRleHRBbGlnbjogdGhpcy5fdlRleHRBbGlnbixcclxuICAgICAgICAgICAgYWxpZ246IHRoaXMuX2FsaWduLFxyXG4gICAgICAgICAgICB1aUhpbnQ6IHRoaXMuX3VpSGludCxcclxuICAgICAgICAgICAgaWNvbnM6IHRoaXMuX2ljb25zLm1hcCgodWkpID0+IHVpLnNuYXBzaG90KCkpLFxyXG4gICAgICAgICAgICBiZ0NvbG9yOiB0aGlzLl9iZ0NvbG9yLmNzc1N0cmluZyxcclxuICAgICAgICAgICAgYmdQYWRkaW5nOiB0aGlzLl9iZ1BhZGRpbmcsXHJcbiAgICAgICAgICAgIGJnQm9yZGVyUmFkaXVzOiB0aGlzLl9iZ0JvcmRlclJhZGl1c1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==