ngx-spine
Version:
[](https://travis-ci.org/PoiScript/ngx-spine)
249 lines • 19 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/******************************************************************************
* Spine Runtimes License Agreement
* Last updated May 1, 2019. Replaces all prior versions.
*
* Copyright (c) 2013-2019, Esoteric Software LLC
*
* Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license
*
* Otherwise, it is permitted to integrate the Spine Runtimes into software
* or otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice.
*
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE LLC "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 ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS
* INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) 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 { M00, M01, M02, M03, M10, M11, M12, M13, M20, M21, M22, M23, M30, M31, M32, M33 } from "./Matrix4";
var Vector3 = /** @class */ (function () {
function Vector3(x, y, z) {
if (x === void 0) { x = 0; }
if (y === void 0) { y = 0; }
if (z === void 0) { z = 0; }
this.x = 0;
this.y = 0;
this.z = 0;
this.x = x;
this.y = y;
this.z = z;
}
/**
* @param {?} v
* @return {?}
*/
Vector3.prototype.setFrom = /**
* @param {?} v
* @return {?}
*/
function (v) {
this.x = v.x;
this.y = v.y;
this.z = v.z;
return this;
};
/**
* @param {?} x
* @param {?} y
* @param {?} z
* @return {?}
*/
Vector3.prototype.set = /**
* @param {?} x
* @param {?} y
* @param {?} z
* @return {?}
*/
function (x, y, z) {
this.x = x;
this.y = y;
this.z = z;
return this;
};
/**
* @param {?} v
* @return {?}
*/
Vector3.prototype.add = /**
* @param {?} v
* @return {?}
*/
function (v) {
this.x += v.x;
this.y += v.y;
this.z += v.z;
return this;
};
/**
* @param {?} v
* @return {?}
*/
Vector3.prototype.sub = /**
* @param {?} v
* @return {?}
*/
function (v) {
this.x -= v.x;
this.y -= v.y;
this.z -= v.z;
return this;
};
/**
* @param {?} s
* @return {?}
*/
Vector3.prototype.scale = /**
* @param {?} s
* @return {?}
*/
function (s) {
this.x *= s;
this.y *= s;
this.z *= s;
return this;
};
/**
* @return {?}
*/
Vector3.prototype.normalize = /**
* @return {?}
*/
function () {
/** @type {?} */
var len = this.length();
if (len == 0)
return this;
len = 1 / len;
this.x *= len;
this.y *= len;
this.z *= len;
return this;
};
/**
* @param {?} v
* @return {?}
*/
Vector3.prototype.cross = /**
* @param {?} v
* @return {?}
*/
function (v) {
return this.set(this.y * v.z - this.z * v.y, this.z * v.x - this.x * v.z, this.x * v.y - this.y * v.x);
};
/**
* @param {?} matrix
* @return {?}
*/
Vector3.prototype.multiply = /**
* @param {?} matrix
* @return {?}
*/
function (matrix) {
/** @type {?} */
var l_mat = matrix.values;
return this.set(this.x * l_mat[M00] +
this.y * l_mat[M01] +
this.z * l_mat[M02] +
l_mat[M03], this.x * l_mat[M10] +
this.y * l_mat[M11] +
this.z * l_mat[M12] +
l_mat[M13], this.x * l_mat[M20] +
this.y * l_mat[M21] +
this.z * l_mat[M22] +
l_mat[M23]);
};
/**
* @param {?} matrix
* @return {?}
*/
Vector3.prototype.project = /**
* @param {?} matrix
* @return {?}
*/
function (matrix) {
/** @type {?} */
var l_mat = matrix.values;
/** @type {?} */
var l_w = 1 /
(this.x * l_mat[M30] +
this.y * l_mat[M31] +
this.z * l_mat[M32] +
l_mat[M33]);
return this.set((this.x * l_mat[M00] +
this.y * l_mat[M01] +
this.z * l_mat[M02] +
l_mat[M03]) *
l_w, (this.x * l_mat[M10] +
this.y * l_mat[M11] +
this.z * l_mat[M12] +
l_mat[M13]) *
l_w, (this.x * l_mat[M20] +
this.y * l_mat[M21] +
this.z * l_mat[M22] +
l_mat[M23]) *
l_w);
};
/**
* @param {?} v
* @return {?}
*/
Vector3.prototype.dot = /**
* @param {?} v
* @return {?}
*/
function (v) {
return this.x * v.x + this.y * v.y + this.z * v.z;
};
/**
* @return {?}
*/
Vector3.prototype.length = /**
* @return {?}
*/
function () {
return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
};
/**
* @param {?} v
* @return {?}
*/
Vector3.prototype.distance = /**
* @param {?} v
* @return {?}
*/
function (v) {
/** @type {?} */
var a = v.x - this.x;
/** @type {?} */
var b = v.y - this.y;
/** @type {?} */
var c = v.z - this.z;
return Math.sqrt(a * a + b * b + c * c);
};
return Vector3;
}());
export { Vector3 };
if (false) {
/** @type {?} */
Vector3.prototype.x;
/** @type {?} */
Vector3.prototype.y;
/** @type {?} */
Vector3.prototype.z;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVjdG9yMy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1zcGluZS8iLCJzb3VyY2VzIjpbImxpYi9zcGluZS10cy93ZWJnbC9WZWN0b3IzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNkJBLE9BQU8sRUFFTCxHQUFHLEVBQ0gsR0FBRyxFQUNILEdBQUcsRUFDSCxHQUFHLEVBQ0gsR0FBRyxFQUNILEdBQUcsRUFDSCxHQUFHLEVBQ0gsR0FBRyxFQUNILEdBQUcsRUFDSCxHQUFHLEVBQ0gsR0FBRyxFQUNILEdBQUcsRUFDSCxHQUFHLEVBQ0gsR0FBRyxFQUNILEdBQUcsRUFDSCxHQUFHLEVBQ0osTUFBTSxXQUFXLENBQUM7QUFFbkI7SUFJRSxpQkFBWSxDQUFhLEVBQUUsQ0FBYSxFQUFFLENBQWE7UUFBM0Msa0JBQUEsRUFBQSxLQUFhO1FBQUUsa0JBQUEsRUFBQSxLQUFhO1FBQUUsa0JBQUEsRUFBQSxLQUFhO1FBSHZELE1BQUMsR0FBRyxDQUFDLENBQUM7UUFDTixNQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ04sTUFBQyxHQUFHLENBQUMsQ0FBQztRQUVKLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDWCxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNiLENBQUM7Ozs7O0lBQ0QseUJBQU87Ozs7SUFBUCxVQUFRLENBQVU7UUFDaEIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzs7Ozs7O0lBQ0QscUJBQUc7Ozs7OztJQUFILFVBQUksQ0FBUyxFQUFFLENBQVMsRUFB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Q25CLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNYLEdBQUcsQ0FDTixDQUFDO0lBQ0osQ0FBQzs7Ozs7SUFDRCxxQkFBRzs7OztJQUFILFVBQUksQ0FBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7OztJQUNELHdCQUFNOzs7SUFBTjtRQUNFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7Ozs7O0lBQ0QsMEJBQVE7Ozs7SUFBUixVQUFTLENBQVU7O1lBQ2IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7O1lBQ2hCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDOztZQUNoQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNwQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQ0gsY0FBQztBQUFELENBQUMsQUE5R0QsSUE4R0M7Ozs7SUE3R0Msb0JBQU07O0lBQ04sb0JBQU07O0lBQ04sb0JBQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XHJcbiAqIExhc3QgdXBkYXRlZCBNYXkgMSwgMjAxOS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxOSwgRXNvdGVyaWMgU29mdHdhcmUgTExDXHJcbiAqXHJcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xyXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxyXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxyXG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcclxuICpcclxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXHJcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcclxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxyXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcclxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXHJcbiAqXHJcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1NcclxuICogT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFU1xyXG4gKiBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTlxyXG4gKiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCxcclxuICogSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORyxcclxuICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLCBCVVNJTkVTU1xyXG4gKiBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZXHJcbiAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElOR1xyXG4gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsXHJcbiAqIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXHJcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuXHJcbmltcG9ydCB7XHJcbiAgTWF0cml4NCxcclxuICBNMDAsXHJcbiAgTTAxLFxyXG4gIE0wMixcclxuICBNMDMsXHJcbiAgTTEwLFxyXG4gIE0xMSxcclxuICBNMTIsXHJcbiAgTTEzLFxyXG4gIE0yMCxcclxuICBNMjEsXHJcbiAgTTIyLFxyXG4gIE0yMyxcclxuICBNMzAsXHJcbiAgTTMxLFxyXG4gIE0zMixcclxuICBNMzNcclxufSBmcm9tIFwiLi9NYXRyaXg0XCI7XHJcblxyXG5leHBvcnQgY2xhc3MgVmVjdG9yMyB7XHJcbiAgeCA9IDA7XHJcbiAgeSA9IDA7XHJcbiAgeiA9IDA7XHJcbiAgY29uc3RydWN0b3IoeDogbnVtYmVyID0gMCwgeTogbnVtYmVyID0gMCwgejogbnVtYmVyID0gMCkge1xyXG4gICAgdGhpcy54ID0geDtcclxuICAgIHRoaXMueSA9IHk7XHJcbiAgICB0aGlzLnogPSB6O1xyXG4gIH1cclxuICBzZXRGcm9tKHY6IFZlY3RvcjMpOiBWZWN0b3IzIHtcclxuICAgIHRoaXMueCA9IHYueDtcclxuICAgIHRoaXMueSA9IHYueTtcclxuICAgIHRoaXMueiA9IHYuejtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICBzZXQoeDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlcik6IFZlY3RvcjMge1xyXG4gICAgdGhpcy54ID0geDtcclxuICAgIHRoaXMueSA9IHk7XHJcbiAgICB0aGlzLnogPSB6O1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIGFkZCh2OiBWZWN0b3IzKTogVmVjdG9yMyB7XHJcbiAgICB0aGlzLnggKz0gdi54O1xyXG4gICAgdGhpcy55ICs9IHYueTtcclxuICAgIHRoaXMueiArPSB2Lno7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcbiAgc3ViKHY6IFZlY3RvcjMpOiBWZWN0b3IzIHtcclxuICAgIHRoaXMueCAtPSB2Lng7XHJcbiAgICB0aGlzLnkgLT0gdi55O1xyXG4gICAgdGhpcy56IC09IHYuejtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICBzY2FsZShzOiBudW1iZXIpOiBWZWN0b3IzIHtcclxuICAgIHRoaXMueCAqPSBzO1xyXG4gICAgdGhpcy55ICo9IHM7XHJcbiAgICB0aGlzLnogKj0gcztcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICBub3JtYWxpemUoKTogVmVjdG9yMyB7XHJcbiAgICBsZXQgbGVuID0gdGhpcy5sZW5ndGgoKTtcclxuICAgIGlmIChsZW4gPT0gMCkgcmV0dXJuIHRoaXM7XHJcbiAgICBsZW4gPSAxIC8gbGVuO1xyXG4gICAgdGhpcy54ICo9IGxlbjtcclxuICAgIHRoaXMueSAqPSBsZW47XHJcbiAgICB0aGlzLnogKj0gbGVuO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIGNyb3NzKHY6IFZlY3RvcjMpOiBWZWN0b3IzIHtcclxuICAgIHJldHVybiB0aGlzLnNldChcclxuICAgICAgdGhpcy55ICogdi56IC0gdGhpcy56ICogdi55LFxyXG4gICAgICB0aGlzLnogKiB2LnggLSB0aGlzLnggKiB2LnosXHJcbiAgICAgIHRoaXMueCAqIHYueSAtIHRoaXMueSAqIHYueFxyXG4gICAgKTtcclxuICB9XHJcbiAgbXVsdGlwbHkobWF0cml4OiBNYXRyaXg0KTogVmVjdG9yMyB7XHJcbiAgICBsZXQgbF9tYXQgPSBtYXRyaXgudmFsdWVzO1xyXG4gICAgcmV0dXJuIHRoaXMuc2V0KFxyXG4gICAgICB0aGlzLnggKiBsX21hdFtNMDBdICtcclxuICAgICAgICB0aGlzLnkgKiBsX21hdFtNMDFdICtcclxuICAgICAgICB0aGlzLnogKiBsX21hdFtNMDJdICtcclxuICAgICAgICBsX21hdFtNMDNdLFxyXG4gICAgICB0aGlzLnggKiBsX21hdFtNMTBdICtcclxuICAgICAgICB0aGlzLnkgKiBsX21hdFtNMTFdICtcclxuICAgICAgICB0aGlzLnogKiBsX21hdFtNMTJdICtcclxuICAgICAgICBsX21hdFtNMTNdLFxyXG4gICAgICB0aGlzLnggKiBsX21hdFtNMjBdICtcclxuICAgICAgICB0aGlzLnkgKiBsX21hdFtNMjFdICtcclxuICAgICAgICB0aGlzLnogKiBsX21hdFtNMjJdICtcclxuICAgICAgICBsX21hdFtNMjNdXHJcbiAgICApO1xyXG4gIH1cclxuICBwcm9qZWN0KG1hdHJpeDogTWF0cml4NCk6IFZlY3RvcjMge1xyXG4gICAgbGV0IGxfbWF0ID0gbWF0cml4LnZhbHVlcztcclxuICAgIGxldCBsX3cgPVxyXG4gICAgICAxIC9cclxuICAgICAgKHRoaXMueCAqIGxfbWF0W00zMF0gK1xyXG4gICAgICAgIHRoaXMueSAqIGxfbWF0W00zMV0gK1xyXG4gICAgICAgIHRoaXMueiAqIGxfbWF0W00zMl0gK1xyXG4gICAgICAgIGxfbWF0W00zM10pO1xyXG4gICAgcmV0dXJuIHRoaXMuc2V0KFxyXG4gICAgICAodGhpcy54ICogbF9tYXRbTTAwXSArXHJcbiAgICAgICAgdGhpcy55ICogbF9tYXRbTTAxXSArXHJcbiAgICAgICAgdGhpcy56ICogbF9tYXRbTTAyXSArXHJcbiAgICAgICAgbF9tYXRbTTAzXSkgKlxyXG4gICAgICAgIGxfdyxcclxuICAgICAgKHRoaXMueCAqIGxfbWF0W00xMF0gK1xyXG4gICAgICAgIHRoaXMueSAqIGxfbWF0W00xMV0gK1xyXG4gICAgICAgIHRoaXMueiAqIGxfbWF0W00xMl0gK1xyXG4gICAgICAgIGxfbWF0W00xM10pICpcclxuICAgICAgICBsX3csXHJcbiAgICAgICh0aGlzLnggKiBsX21hdFtNMjBdICtcclxuICAgICAgICB0aGlzLnkgKiBsX21hdFtNMjFdICtcclxuICAgICAgICB0aGlzLnogKiBsX21hdFtNMjJdICtcclxuICAgICAgICBsX21hdFtNMjNdKSAqXHJcbiAgICAgICAgbF93XHJcbiAgICApO1xyXG4gIH1cclxuICBkb3QodjogVmVjdG9yMyk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy54ICogdi54ICsgdGhpcy55ICogdi55ICsgdGhpcy56ICogdi56O1xyXG4gIH1cclxuICBsZW5ndGgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLnNxcnQodGhpcy54ICogdGhpcy54ICsgdGhpcy55ICogdGhpcy55ICsgdGhpcy56ICogdGhpcy56KTtcclxuICB9XHJcbiAgZGlzdGFuY2UodjogVmVjdG9yMyk6IG51bWJlciB7XHJcbiAgICBsZXQgYSA9IHYueCAtIHRoaXMueDtcclxuICAgIGxldCBiID0gdi55IC0gdGhpcy55O1xyXG4gICAgbGV0IGMgPSB2LnogLSB0aGlzLno7XHJcbiAgICByZXR1cm4gTWF0aC5zcXJ0KGEgKiBhICsgYiAqIGIgKyBjICogYyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==