UNPKG

jsoniq

Version:

JSONiq implementation for JavaScript

114 lines (112 loc) 23.4 kB
"use strict"; require("jasmine2-pit"); var PUL_1 = require("../../../../lib/updates/PUL"); var PULComposition_1 = require("../../../../lib/updates/composition/PULComposition"); var Common_1 = require("./Common"); describe("RenameInObject Composition", () => { pit("Tests Aggregation with Insert", () => { var d0 = new PUL_1.default(); d0.insert("1", { a: 1 }); var d1 = new PUL_1.default(); d1.replaceInObject("1", [], "a", 2); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.replaceInObject.length).toBe(0); expect(delta.udps.insert.length).toBe(1); expect(delta.udps.insert[0].item["a"]).toBe(2); return Common_1.default.checkCompositionIntegrity(d0, d1, {}).then(result => { expect(result).toBe(true); }); }); pit("Tests Aggregation with InsertIntoObject (1)", () => { var d0 = new PUL_1.default(); d0.insertIntoObject("1", [], { a: 1 }); var d1 = new PUL_1.default(); d1.replaceInObject("1", [], "a", 2); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.replaceInObject.length).toBe(0); expect(delta.udps.insertIntoObject.length).toBe(1); expect(delta.udps.insertIntoObject[0].pairs["a"]).toBe(2); return Common_1.default.checkCompositionIntegrity(d0, d1, { "1": {} }).then(result => { expect(result).toBe(true); }); }); pit("Tests Aggregation with InsertIntoObject (2)", () => { var d0 = new PUL_1.default(); d0.insertIntoObject("1", ["a"], { b: 1, d: 1 }); var d1 = new PUL_1.default(); d1.replaceInObject("1", ["a"], "b", 2); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.replaceInObject.length).toBe(0); expect(delta.udps.insertIntoObject.length).toBe(1); expect(Common_1.default.isEqual(delta.udps.insertIntoObject[0].pairs, { b: 2, d: 1 })).toBe(true); return Common_1.default.checkCompositionIntegrity(d0, d1, { "1": { a: {} } }).then(result => { expect(result).toBe(true); }); }); pit("Tests Aggregation with ReplaceInObject (1)", () => { var d0 = new PUL_1.default(); d0.replaceInObject("1", [], "a", { b: 1 }); var d1 = new PUL_1.default(); d1.replaceInObject("1", ["a"], "b", 2); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.replaceInObject.length).toBe(1); expect(Common_1.default.isEqual(delta.udps.replaceInObject[0].item, { b: 2 })).toBe(true); return Common_1.default.checkCompositionIntegrity(d0, d1, { "1": { a: {} } }).then(result => { expect(result).toBe(true); }); }); pit("Tests Aggregation with ReplaceInObject (2)", () => { var d0 = new PUL_1.default(); d0.replaceInObject("1", ["a"], "b", { c: 1 }); var d1 = new PUL_1.default(); d1.replaceInObject("1", ["a", "b"], "c", 2); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.replaceInObject.length).toBe(1); expect(Common_1.default.isEqual(delta.udps.replaceInObject[0].item, { c: 2 })).toBe(true); return Common_1.default.checkCompositionIntegrity(d0, d1, { "1": { a: { b: 1 } } }).then(result => { expect(result).toBe(true); }); }); pit("Test Aggregation with RenameInObject (1)", () => { var d0 = new PUL_1.default(); d0.renameInObject("1", [], "a", "b"); var d1 = new PUL_1.default(); d1.replaceInObject("1", ["b"], "c", 2); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.renameInObject.length).toBe(1); expect(delta.udps.replaceInObject.length).toBe(1); expect(delta.udps.replaceInObject[0].ordPath.join(".")).toBe("a"); expect(Common_1.default.isEqual(delta.udps.replaceInObject[0].item, 2)).toBe(true); return Common_1.default.checkCompositionIntegrity(d0, d1, { "1": { a: { c: 1 } } }).then(result => { expect(result).toBe(true); }); }); pit("Test Aggregation with RenameInObject (2)", () => { var d0 = new PUL_1.default(); d0.renameInObject("1", ["a"], "c", "b"); var d1 = new PUL_1.default(); d1.replaceInObject("1", ["a"], "b", 2); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.renameInObject.length).toBe(1); expect(delta.udps.replaceInObject.length).toBe(1); expect(delta.udps.replaceInObject[0].ordPath.join(".")).toBe("a"); expect(delta.udps.replaceInObject[0].key).toBe("c"); return Common_1.default.checkCompositionIntegrity(d0, d1, { "1": { a: { c: { d: 2 } } } }).then(result => { expect(result).toBe(true); }); }); pit("Test Accumulation (1)", () => { var d0 = new PUL_1.default(); d0.renameInObject("1", [], "a", "z"); var d1 = new PUL_1.default(); d1.replaceInObject("1", ["b"], "c", 2); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.renameInObject.length).toBe(1); expect(delta.udps.replaceInObject.length).toBe(1); expect(delta.udps.replaceInObject[0].ordPath.join(".")).toBe("b"); return Common_1.default.checkCompositionIntegrity(d0, d1, { "1": { b: { c: 1 }, a: 1 } }).then(result => { expect(result).toBe(true); }); }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3RzL25vZGUvdXBkYXRlcy9jb21wb3NpdGlvbi9SZXBsYWNlSW5PYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUV4QixvQkFBZ0IsNkJBQTZCLENBQUMsQ0FBQTtBQUM5QywrQkFBMkIsb0RBQW9ELENBQUMsQ0FBQTtBQUNoRix1QkFBbUIsVUFBVSxDQUFDLENBQUE7QUFJOUIsUUFBUSxDQUFDLDRCQUE0QixFQUFFO0lBRW5DLEdBQUcsQ0FBQywrQkFBK0IsRUFBRTtRQUNqQyxJQUFJLEVBQUUsR0FBRyxJQUFJLGFBQUcsRUFBRSxDQUFDO1FBQ25CLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFekIsSUFBSSxFQUFFLEdBQUcsSUFBSSxhQUFHLEVBQUUsQ0FBQztRQUNuQixFQUFFLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXBDLElBQUksS0FBSyxHQUFHLHdCQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakQsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFL0MsTUFBTSxDQUFDLGdCQUFNLENBQUMseUJBQXlCLENB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QUFDLENBQUM7UUFFbEUsTUFBTSxDQUFDLGdCQUFNLENBQUMseUJBQXlCLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQ3ZGLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztBQUVQLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6InRlc3RzL25vZGUvdXBkYXRlcy9jb21wb3NpdGlvbi9SZXBsYWNlSW5PYmplY3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKFwiamFzbWluZTItcGl0XCIpO1xuXG5pbXBvcnQgUFVMIGZyb20gXCIuLi8uLi8uLi8uLi9saWIvdXBkYXRlcy9QVUxcIjtcbmltcG9ydCBQVUxDb21wb3NpdGlvbiBmcm9tIFwiLi4vLi4vLi4vLi4vbGliL3VwZGF0ZXMvY29tcG9zaXRpb24vUFVMQ29tcG9zaXRpb25cIjtcbmltcG9ydCBDb21tb24gZnJvbSBcIi4vQ29tbW9uXCI7XG5cbmRlY2xhcmUgZnVuY3Rpb24gcGl0KGV4cGVjdGF0aW9uOiBzdHJpbmcsIGFzc2VydGlvbj86IChkb25lOiAoKSA9PiB2b2lkKSA9PiBhbnkpOiB2b2lkO1xuXG5kZXNjcmliZShcIlJlbmFtZUluT2JqZWN0IENvbXBvc2l0aW9uXCIsICgpID0+IHtcblxuICAgIHBpdChcIlRlc3RzIEFnZ3JlZ2F0aW9uIHdpdGggSW5zZXJ0XCIsICgpID0+IHtcbiAgICAgICAgdmFyIGQwID0gbmV3IFBVTCgpO1xuICAgICAgICBkMC5pbnNlcnQoXCIxXCIsIHsgYTogMSB9KTtcblxuICAgICAgICB2YXIgZDEgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQxLnJlcGxhY2VJbk9iamVjdChcIjFcIiwgW10sIFwiYVwiLCAyKTtcblxuICAgICAgICB2YXIgZGVsdGEgPSBQVUxDb21wb3NpdGlvbi5jb21wb3NlKGQwLCBkMSwgdHJ1ZSk7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLnJlcGxhY2VJbk9iamVjdC5sZW5ndGgpLnRvQmUoMCk7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLmluc2VydC5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLmluc2VydFswXS5pdGVtW1wiYVwiXSkudG9CZSgyKTtcblxuICAgICAgICByZXR1cm4gQ29tbW9uLmNoZWNrQ29tcG9zaXRpb25JbnRlZ3JpdHkoZDAsIGQxLCB7fSkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBwaXQoXCJUZXN0cyBBZ2dyZWdhdGlvbiB3aXRoIEluc2VydEludG9PYmplY3QgKDEpXCIsICgpID0+IHtcbiAgICAgICAgdmFyIGQwID0gbmV3IFBVTCgpO1xuICAgICAgICBkMC5pbnNlcnRJbnRvT2JqZWN0KFwiMVwiLCBbXSwgeyBhOiAxIH0pO1xuXG4gICAgICAgIHZhciBkMSA9IG5ldyBQVUwoKTtcbiAgICAgICAgZDEucmVwbGFjZUluT2JqZWN0KFwiMVwiLCBbXSwgXCJhXCIsIDIpO1xuXG4gICAgICAgIHZhciBkZWx0YSA9IFBVTENvbXBvc2l0aW9uLmNvbXBvc2UoZDAsIGQxLCB0cnVlKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMucmVwbGFjZUluT2JqZWN0Lmxlbmd0aCkudG9CZSgwKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMuaW5zZXJ0SW50b09iamVjdC5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLmluc2VydEludG9PYmplY3RbMF0ucGFpcnNbXCJhXCJdKS50b0JlKDIpO1xuXG4gICAgICAgIHJldHVybiBDb21tb24uY2hlY2tDb21wb3NpdGlvbkludGVncml0eShkMCwgZDEsIHsgXCIxXCI6IHt9IH0pLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcGl0KFwiVGVzdHMgQWdncmVnYXRpb24gd2l0aCBJbnNlcnRJbnRvT2JqZWN0ICgyKVwiLCAoKSA9PiB7XG4gICAgICAgIHZhciBkMCA9IG5ldyBQVUwoKTtcbiAgICAgICAgZDAuaW5zZXJ0SW50b09iamVjdChcIjFcIiwgW1wiYVwiXSwgeyBiOiAxLCBkOiAxIH0pO1xuXG4gICAgICAgIHZhciBkMSA9IG5ldyBQVUwoKTtcbiAgICAgICAgZDEucmVwbGFjZUluT2JqZWN0KFwiMVwiLCBbXCJhXCJdLCBcImJcIiwgMik7XG5cbiAgICAgICAgdmFyIGRlbHRhID0gUFVMQ29tcG9zaXRpb24uY29tcG9zZShkMCwgZDEsIHRydWUpO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5yZXBsYWNlSW5PYmplY3QubGVuZ3RoKS50b0JlKDApO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5pbnNlcnRJbnRvT2JqZWN0Lmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgZXhwZWN0KFxuICAgICAgICAgICAgQ29tbW9uLmlzRXF1YWwoZGVsdGEudWRwcy5pbnNlcnRJbnRvT2JqZWN0WzBdLnBhaXJzLCB7IGI6IDIsIGQ6IDEgfSlcbiAgICAgICAgKS50b0JlKHRydWUpO1xuXG4gICAgICAgIHJldHVybiBDb21tb24uY2hlY2tDb21wb3NpdGlvbkludGVncml0eShkMCwgZDEsIHsgXCIxXCI6IHsgYToge30gfSB9KS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIHBpdChcIlRlc3RzIEFnZ3JlZ2F0aW9uIHdpdGggUmVwbGFjZUluT2JqZWN0ICgxKVwiLCAoKSA9PiB7XG4gICAgICAgIHZhciBkMCA9IG5ldyBQVUwoKTtcbiAgICAgICAgZDAucmVwbGFjZUluT2JqZWN0KFwiMVwiLCBbXSwgXCJhXCIsIHsgYjogMSB9KTtcblxuICAgICAgICB2YXIgZDEgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQxLnJlcGxhY2VJbk9iamVjdChcIjFcIiwgW1wiYVwiXSwgXCJiXCIsIDIpO1xuXG4gICAgICAgIHZhciBkZWx0YSA9IFBVTENvbXBvc2l0aW9uLmNvbXBvc2UoZDAsIGQxLCB0cnVlKTtcblxuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5yZXBsYWNlSW5PYmplY3QubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QoXG4gICAgICAgICAgICBDb21tb24uaXNFcXVhbChkZWx0YS51ZHBzLnJlcGxhY2VJbk9iamVjdFswXS5pdGVtLCB7IGI6IDIgfSlcbiAgICAgICAgKS50b0JlKHRydWUpO1xuXG4gICAgICAgIHJldHVybiBDb21tb24uY2hlY2tDb21wb3NpdGlvbkludGVncml0eShkMCwgZDEsIHsgXCIxXCI6IHsgYToge30gfSB9KS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIHBpdChcIlRlc3RzIEFnZ3JlZ2F0aW9uIHdpdGggUmVwbGFjZUluT2JqZWN0ICgyKVwiLCAoKSA9PiB7XG4gICAgICAgIHZhciBkMCA9IG5ldyBQVUwoKTtcbiAgICAgICAgZDAucmVwbGFjZUluT2JqZWN0KFwiMVwiLCBbXCJhXCJdLCBcImJcIiwgeyBjOiAxIH0pO1xuXG4gICAgICAgIHZhciBkMSA9IG5ldyBQVUwoKTtcbiAgICAgICAgZDEucmVwbGFjZUluT2JqZWN0KFwiMVwiLCBbXCJhXCIsIFwiYlwiXSwgXCJjXCIsIDIpO1xuXG4gICAgICAgIHZhciBkZWx0YSA9IFBVTENvbXBvc2l0aW9uLmNvbXBvc2UoZDAsIGQxLCB0cnVlKTtcblxuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5yZXBsYWNlSW5PYmplY3QubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QoXG4gICAgICAgICAgICBDb21tb24uaXNFcXVhbChkZWx0YS51ZHBzLnJlcGxhY2VJbk9iamVjdFswXS5pdGVtLCB7IGM6IDIgfSlcbiAgICAgICAgKS50b0JlKHRydWUpO1xuXG4gICAgICAgIHJldHVybiBDb21tb24uY2hlY2tDb21wb3NpdGlvbkludGVncml0eShkMCwgZDEsIHsgXCIxXCI6IHsgYTogeyBiOiAxIH0gfSB9KS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIHBpdChcIlRlc3QgQWdncmVnYXRpb24gd2l0aCBSZW5hbWVJbk9iamVjdCAoMSlcIiwgKCkgPT4ge1xuICAgICAgICB2YXIgZDAgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQwLnJlbmFtZUluT2JqZWN0KFwiMVwiLCBbXSwgXCJhXCIsIFwiYlwiKTtcblxuICAgICAgICB2YXIgZDEgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQxLnJlcGxhY2VJbk9iamVjdChcIjFcIiwgW1wiYlwiXSwgXCJjXCIsIDIpO1xuXG4gICAgICAgIHZhciBkZWx0YSA9IFBVTENvbXBvc2l0aW9uLmNvbXBvc2UoZDAsIGQxLCB0cnVlKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMucmVuYW1lSW5PYmplY3QubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5yZXBsYWNlSW5PYmplY3QubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5yZXBsYWNlSW5PYmplY3RbMF0ub3JkUGF0aC5qb2luKFwiLlwiKSkudG9CZShcImFcIik7XG4gICAgICAgIGV4cGVjdChcbiAgICAgICAgICAgIENvbW1vbi5pc0VxdWFsKGRlbHRhLnVkcHMucmVwbGFjZUluT2JqZWN0WzBdLml0ZW0sIDIpXG4gICAgICAgICkudG9CZSh0cnVlKTtcblxuICAgICAgICByZXR1cm4gQ29tbW9uLmNoZWNrQ29tcG9zaXRpb25JbnRlZ3JpdHkoZDAsIGQxLCB7IFwiMVwiOiB7IGE6IHsgYzogMSB9IH0gfSkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBwaXQoXCJUZXN0IEFnZ3JlZ2F0aW9uIHdpdGggUmVuYW1lSW5PYmplY3QgKDIpXCIsICgpID0+IHtcbiAgICAgICAgdmFyIGQwID0gbmV3IFBVTCgpO1xuICAgICAgICBkMC5yZW5hbWVJbk9iamVjdChcIjFcIiwgW1wiYVwiXSwgXCJjXCIsIFwiYlwiKTtcblxuICAgICAgICB2YXIgZDEgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQxLnJlcGxhY2VJbk9iamVjdChcIjFcIiwgW1wiYVwiXSwgXCJiXCIsIDIpO1xuXG4gICAgICAgIHZhciBkZWx0YSA9IFBVTENvbXBvc2l0aW9uLmNvbXBvc2UoZDAsIGQxLCB0cnVlKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMucmVuYW1lSW5PYmplY3QubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5yZXBsYWNlSW5PYmplY3QubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5yZXBsYWNlSW5PYmplY3RbMF0ub3JkUGF0aC5qb2luKFwiLlwiKSkudG9CZShcImFcIik7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLnJlcGxhY2VJbk9iamVjdFswXS5rZXkpLnRvQmUoXCJjXCIpO1xuXG4gICAgICAgIHJldHVybiBDb21tb24uY2hlY2tDb21wb3NpdGlvbkludGVncml0eShkMCwgZDEsIHsgXCIxXCI6IHsgYTogeyBjOiB7IGQ6IDIgfSB9IH0gfSkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBwaXQoXCJUZXN0IEFjY3VtdWxhdGlvbiAoMSlcIiwgKCkgPT4ge1xuICAgICAgICB2YXIgZDAgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQwLnJlbmFtZUluT2JqZWN0KFwiMVwiLCBbXSwgXCJhXCIsIFwielwiKTtcblxuICAgICAgICB2YXIgZDEgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQxLnJlcGxhY2VJbk9iamVjdChcIjFcIiwgW1wiYlwiXSwgXCJjXCIsIDIpO1xuXG4gICAgICAgIHZhciBkZWx0YSA9IFBVTENvbXBvc2l0aW9uLmNvbXBvc2UoZDAsIGQxLCB0cnVlKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMucmVuYW1lSW5PYmplY3QubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5yZXBsYWNlSW5PYmplY3QubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5yZXBsYWNlSW5PYmplY3RbMF0ub3JkUGF0aC5qb2luKFwiLlwiKSkudG9CZShcImJcIik7XG5cbiAgICAgICAgcmV0dXJuIENvbW1vbi5jaGVja0NvbXBvc2l0aW9uSW50ZWdyaXR5KGQwLCBkMSwgeyBcIjFcIjogeyBiOiB7IGM6IDEgfSwgYTogMSB9IH0pLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG59KTtcbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==