UNPKG

@specifai-net/appsync-template-tester

Version:

Unit test AppSync VTL resolvers, with popular frameworks such as Jest

116 lines 21.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const string_1 = require("../string"); describe("JavaString", () => { it("replaceAll", () => { const str = new string_1.JavaString("foo bar foo bar foo bar Foo"); const replacedStr = str.replaceAll("foo", "baz"); expect(replacedStr.toString()).toEqual("baz bar baz bar baz bar Foo"); expect(replacedStr.toIdString()).toEqual("baz bar baz bar baz bar Foo"); expect(replacedStr.toJSON()).toEqual("baz bar baz bar baz bar Foo"); }); it("length", () => { const str1 = new string_1.JavaString("foo"); expect(str1.length()).toEqual(3); }); it("concat", () => { const str1 = new string_1.JavaString("foo"); expect(str1.concat(new string_1.JavaString("bar")).toString()).toEqual("foobar"); }); it("contains", () => { const str = new string_1.JavaString("Lorem ipsum dolor sit amet, consectetur adipiscing elit"); expect(str.contains(new string_1.JavaString("ipsum"))).toEqual(true); expect(str.contains(new string_1.JavaString("DOLOR"))).toEqual(false); }); it("endsWith", () => { const str = new string_1.JavaString("Lorem ipsum dolor sit amet, consectetur adipiscing elit"); expect(str.endsWith(new string_1.JavaString("ipsum"))).toEqual(false); expect(str.endsWith(new string_1.JavaString("elit"))).toEqual(true); }); it("equals", () => { const str = new string_1.JavaString("Lorem ipsum dolor sit amet, consectetur adipiscing elit"); expect(str.equals(new string_1.JavaString("Lorem ipsum dolor sit amet, consectetur adipiscing elit"))).toEqual(true); expect(str.equals(new string_1.JavaString("ipsum"))).toEqual(false); }); it("indexOf", () => { const str = new string_1.JavaString("Lorem ipsum dolor sit amet, consectetur adipiscing elit"); expect(str.indexOf(new string_1.JavaString("ipsum"))).toEqual(6); expect(str.indexOf(new string_1.JavaString("ipsum"), 10)).toEqual(-1); }); it("isEmpty", () => { const emptyStr = new string_1.JavaString(""); expect(emptyStr.isEmpty()).toEqual(true); const str = new string_1.JavaString("foo bar"); expect(str.isEmpty()).toEqual(false); }); it("lastIndexOf", () => { const str = new string_1.JavaString("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem"); expect(str.lastIndexOf(new string_1.JavaString("Lorem"))).toEqual(57); expect(str.lastIndexOf(new string_1.JavaString("Lorem"), 10)).toEqual(0); expect(str.lastIndexOf(new string_1.JavaString("foo"))).toEqual(-1); }); it("matches", () => { const str = new string_1.JavaString("foo bar"); expect(str.matches("foo")).toEqual(true); expect(str.matches("lorem")).toEqual(false); expect(str.matches("(foo|test)")).toEqual(true); }); it("replace", () => { const str = new string_1.JavaString("foo foo bar"); expect(str.replace("foo", "bar").toString()).toEqual("bar bar bar"); expect(str.replace("test", "bar").toString()).toEqual("foo foo bar"); }); it("replaceFirst", () => { const str = new string_1.JavaString("foo foo bar"); expect(str.replaceFirst("foo", "bar").toString()).toEqual("bar foo bar"); expect(str.replaceFirst("test", "bar").toString()).toEqual("foo foo bar"); }); it("split", () => { const str = new string_1.JavaString("foo bar foo bar foo bar Foo"); const splitStr = str.split(new string_1.JavaString(" ")); expect(splitStr.length).toEqual(7); expect(splitStr.toJSON()).toEqual([ "foo", "bar", "foo", "bar", "foo", "bar", "Foo", ]); const splitStr2 = str.split(new string_1.JavaString("(foo)")); expect(splitStr2.length).toEqual(4); expect(splitStr2.toJSON()).toEqual(["", " bar ", " bar ", " bar Foo"]); }); it("startsWith", () => { const str = new string_1.JavaString("Lorem ipsum dolor sit amet, consectetur adipiscing elit"); expect(str.startsWith(new string_1.JavaString("ipsum"))).toEqual(false); expect(str.startsWith(new string_1.JavaString("Lorem"))).toEqual(true); expect(str.startsWith(new string_1.JavaString("Lorem"), 10)).toEqual(false); }); it("substring", () => { const str = new string_1.JavaString("Lorem ipsum dolor sit amet, consectetur adipiscing elit"); expect(str.substring(0).toString()).toEqual("Lorem ipsum dolor sit amet, consectetur adipiscing elit"); expect(str.substring(0, 1).toString()).toEqual("L"); expect(str.substring(6, 11).toString()).toEqual("ipsum"); }); it("toLowerCase", () => { const str = new string_1.JavaString("Foo BaR"); expect(str.toLowerCase().toString()).toEqual("foo bar"); }); it("toUpperCase", () => { const str = new string_1.JavaString("Foo BaR"); expect(str.toUpperCase().toString()).toEqual("FOO BAR"); }); it("trim", () => { const str = new string_1.JavaString("foo bar"); expect(str.trim().toString()).toEqual("foo bar"); const str2 = new string_1.JavaString(" foo bar"); expect(str2.trim().toString()).toEqual("foo bar"); const str3 = new string_1.JavaString(" foo bar "); expect(str3.trim().toString()).toEqual("foo bar"); const str4 = new string_1.JavaString("foo bar "); expect(str4.trim().toString()).toEqual("foo bar"); }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdmFsdWUtbWFwcGVyL3Rlc3RzL3N0cmluZy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsc0NBQXVDO0FBRXZDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO0lBQzFCLEVBQUUsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO1FBQ3BCLE1BQU0sR0FBRyxHQUFHLElBQUksbUJBQVUsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQzFELE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pELE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUN0RSxNQUFNLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDeEUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQ3RFLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDaEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxtQkFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtRQUNoQixNQUFNLElBQUksR0FBRyxJQUFJLG1CQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxtQkFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUUsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRTtRQUNsQixNQUFNLEdBQUcsR0FBRyxJQUFJLG1CQUFVLENBQ3hCLHlEQUF5RCxDQUMxRCxDQUFDO1FBQ0YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxtQkFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxtQkFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRTtRQUNsQixNQUFNLEdBQUcsR0FBRyxJQUFJLG1CQUFVLENBQ3hCLHlEQUF5RCxDQUMxRCxDQUFDO1FBQ0YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxtQkFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxtQkFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtRQUNoQixNQUFNLEdBQUcsR0FBRyxJQUFJLG1CQUFVLENBQ3hCLHlEQUF5RCxDQUMxRCxDQUFDO1FBQ0YsTUFBTSxDQUNKLEdBQUcsQ0FBQyxNQUFNLENBQ1IsSUFBSSxtQkFBVSxDQUNaLHlEQUF5RCxDQUMxRCxDQUNGLENBQ0YsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxtQkFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtRQUNqQixNQUFNLEdBQUcsR0FBRyxJQUFJLG1CQUFVLENBQ3hCLHlEQUF5RCxDQUMxRCxDQUFDO1FBQ0YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxtQkFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxtQkFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtRQUNqQixNQUFNLFFBQVEsR0FBRyxJQUFJLG1CQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6QyxNQUFNLEdBQUcsR0FBRyxJQUFJLG1CQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO1FBQ3JCLE1BQU0sR0FBRyxHQUFHLElBQUksbUJBQVUsQ0FDeEIsZ0VBQWdFLENBQ2pFLENBQUM7UUFDRixNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLG1CQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3RCxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLG1CQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFaEUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxtQkFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO1FBQ2pCLE1BQU0sR0FBRyxHQUFHLElBQUksbUJBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV0QyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO1FBQ2pCLE1BQU0sR0FBRyxHQUFHLElBQUksbUJBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUUxQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDcEUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZFLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUU7UUFDdEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxtQkFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN6RSxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDNUUsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNmLE1BQU0sR0FBRyxHQUFHLElBQUksbUJBQVUsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBRTFELE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxtQkFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDaEQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUNoQyxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1NBQ04sQ0FBQyxDQUFDO1FBRUgsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLG1CQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNyRCxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO1FBQ3BCLE1BQU0sR0FBRyxHQUFHLElBQUksbUJBQVUsQ0FDeEIseURBQXlELENBQzFELENBQUM7UUFDRixNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLG1CQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvRCxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLG1CQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU5RCxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLG1CQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckUsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRTtRQUNuQixNQUFNLEdBQUcsR0FBRyxJQUFJLG1CQUFVLENBQ3hCLHlEQUF5RCxDQUMxRCxDQUFDO1FBQ0YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQ3pDLHlEQUF5RCxDQUMxRCxDQUFDO1FBQ0YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzRCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO1FBQ3JCLE1BQU0sR0FBRyxHQUFHLElBQUksbUJBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7UUFDckIsTUFBTSxHQUFHLEdBQUcsSUFBSSxtQkFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtRQUNkLE1BQU0sR0FBRyxHQUFHLElBQUksbUJBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWpELE1BQU0sSUFBSSxHQUFHLElBQUksbUJBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMxQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWxELE1BQU0sSUFBSSxHQUFHLElBQUksbUJBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFbEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxtQkFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEphdmFTdHJpbmcgfSBmcm9tIFwiLi4vc3RyaW5nXCI7XG5cbmRlc2NyaWJlKFwiSmF2YVN0cmluZ1wiLCAoKSA9PiB7XG4gIGl0KFwicmVwbGFjZUFsbFwiLCAoKSA9PiB7XG4gICAgY29uc3Qgc3RyID0gbmV3IEphdmFTdHJpbmcoXCJmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBGb29cIik7XG4gICAgY29uc3QgcmVwbGFjZWRTdHIgPSBzdHIucmVwbGFjZUFsbChcImZvb1wiLCBcImJhelwiKTtcbiAgICBleHBlY3QocmVwbGFjZWRTdHIudG9TdHJpbmcoKSkudG9FcXVhbChcImJheiBiYXIgYmF6IGJhciBiYXogYmFyIEZvb1wiKTtcbiAgICBleHBlY3QocmVwbGFjZWRTdHIudG9JZFN0cmluZygpKS50b0VxdWFsKFwiYmF6IGJhciBiYXogYmFyIGJheiBiYXIgRm9vXCIpO1xuICAgIGV4cGVjdChyZXBsYWNlZFN0ci50b0pTT04oKSkudG9FcXVhbChcImJheiBiYXIgYmF6IGJhciBiYXogYmFyIEZvb1wiKTtcbiAgfSk7XG5cbiAgaXQoXCJsZW5ndGhcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHN0cjEgPSBuZXcgSmF2YVN0cmluZyhcImZvb1wiKTtcbiAgICBleHBlY3Qoc3RyMS5sZW5ndGgoKSkudG9FcXVhbCgzKTtcbiAgfSk7XG5cbiAgaXQoXCJjb25jYXRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHN0cjEgPSBuZXcgSmF2YVN0cmluZyhcImZvb1wiKTtcbiAgICBleHBlY3Qoc3RyMS5jb25jYXQobmV3IEphdmFTdHJpbmcoXCJiYXJcIikpLnRvU3RyaW5nKCkpLnRvRXF1YWwoXCJmb29iYXJcIik7XG4gIH0pO1xuXG4gIGl0KFwiY29udGFpbnNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHN0ciA9IG5ldyBKYXZhU3RyaW5nKFxuICAgICAgXCJMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0XCJcbiAgICApO1xuICAgIGV4cGVjdChzdHIuY29udGFpbnMobmV3IEphdmFTdHJpbmcoXCJpcHN1bVwiKSkpLnRvRXF1YWwodHJ1ZSk7XG4gICAgZXhwZWN0KHN0ci5jb250YWlucyhuZXcgSmF2YVN0cmluZyhcIkRPTE9SXCIpKSkudG9FcXVhbChmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KFwiZW5kc1dpdGhcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHN0ciA9IG5ldyBKYXZhU3RyaW5nKFxuICAgICAgXCJMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0XCJcbiAgICApO1xuICAgIGV4cGVjdChzdHIuZW5kc1dpdGgobmV3IEphdmFTdHJpbmcoXCJpcHN1bVwiKSkpLnRvRXF1YWwoZmFsc2UpO1xuICAgIGV4cGVjdChzdHIuZW5kc1dpdGgobmV3IEphdmFTdHJpbmcoXCJlbGl0XCIpKSkudG9FcXVhbCh0cnVlKTtcbiAgfSk7XG5cbiAgaXQoXCJlcXVhbHNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHN0ciA9IG5ldyBKYXZhU3RyaW5nKFxuICAgICAgXCJMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0XCJcbiAgICApO1xuICAgIGV4cGVjdChcbiAgICAgIHN0ci5lcXVhbHMoXG4gICAgICAgIG5ldyBKYXZhU3RyaW5nKFxuICAgICAgICAgIFwiTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdFwiXG4gICAgICAgIClcbiAgICAgIClcbiAgICApLnRvRXF1YWwodHJ1ZSk7XG4gICAgZXhwZWN0KHN0ci5lcXVhbHMobmV3IEphdmFTdHJpbmcoXCJpcHN1bVwiKSkpLnRvRXF1YWwoZmFsc2UpO1xuICB9KTtcblxuICBpdChcImluZGV4T2ZcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHN0ciA9IG5ldyBKYXZhU3RyaW5nKFxuICAgICAgXCJMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0XCJcbiAgICApO1xuICAgIGV4cGVjdChzdHIuaW5kZXhPZihuZXcgSmF2YVN0cmluZyhcImlwc3VtXCIpKSkudG9FcXVhbCg2KTtcbiAgICBleHBlY3Qoc3RyLmluZGV4T2YobmV3IEphdmFTdHJpbmcoXCJpcHN1bVwiKSwgMTApKS50b0VxdWFsKC0xKTtcbiAgfSk7XG5cbiAgaXQoXCJpc0VtcHR5XCIsICgpID0+IHtcbiAgICBjb25zdCBlbXB0eVN0ciA9IG5ldyBKYXZhU3RyaW5nKFwiXCIpO1xuICAgIGV4cGVjdChlbXB0eVN0ci5pc0VtcHR5KCkpLnRvRXF1YWwodHJ1ZSk7XG5cbiAgICBjb25zdCBzdHIgPSBuZXcgSmF2YVN0cmluZyhcImZvbyBiYXJcIik7XG4gICAgZXhwZWN0KHN0ci5pc0VtcHR5KCkpLnRvRXF1YWwoZmFsc2UpO1xuICB9KTtcblxuICBpdChcImxhc3RJbmRleE9mXCIsICgpID0+IHtcbiAgICBjb25zdCBzdHIgPSBuZXcgSmF2YVN0cmluZyhcbiAgICAgIFwiTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gTG9yZW1cIlxuICAgICk7XG4gICAgZXhwZWN0KHN0ci5sYXN0SW5kZXhPZihuZXcgSmF2YVN0cmluZyhcIkxvcmVtXCIpKSkudG9FcXVhbCg1Nyk7XG4gICAgZXhwZWN0KHN0ci5sYXN0SW5kZXhPZihuZXcgSmF2YVN0cmluZyhcIkxvcmVtXCIpLCAxMCkpLnRvRXF1YWwoMCk7XG5cbiAgICBleHBlY3Qoc3RyLmxhc3RJbmRleE9mKG5ldyBKYXZhU3RyaW5nKFwiZm9vXCIpKSkudG9FcXVhbCgtMSk7XG4gIH0pO1xuXG4gIGl0KFwibWF0Y2hlc1wiLCAoKSA9PiB7XG4gICAgY29uc3Qgc3RyID0gbmV3IEphdmFTdHJpbmcoXCJmb28gYmFyXCIpO1xuXG4gICAgZXhwZWN0KHN0ci5tYXRjaGVzKFwiZm9vXCIpKS50b0VxdWFsKHRydWUpO1xuICAgIGV4cGVjdChzdHIubWF0Y2hlcyhcImxvcmVtXCIpKS50b0VxdWFsKGZhbHNlKTtcbiAgICBleHBlY3Qoc3RyLm1hdGNoZXMoXCIoZm9vfHRlc3QpXCIpKS50b0VxdWFsKHRydWUpO1xuICB9KTtcblxuICBpdChcInJlcGxhY2VcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHN0ciA9IG5ldyBKYXZhU3RyaW5nKFwiZm9vIGZvbyBiYXJcIik7XG5cbiAgICBleHBlY3Qoc3RyLnJlcGxhY2UoXCJmb29cIiwgXCJiYXJcIikudG9TdHJpbmcoKSkudG9FcXVhbChcImJhciBiYXIgYmFyXCIpO1xuICAgIGV4cGVjdChzdHIucmVwbGFjZShcInRlc3RcIiwgXCJiYXJcIikudG9TdHJpbmcoKSkudG9FcXVhbChcImZvbyBmb28gYmFyXCIpO1xuICB9KTtcblxuICBpdChcInJlcGxhY2VGaXJzdFwiLCAoKSA9PiB7XG4gICAgY29uc3Qgc3RyID0gbmV3IEphdmFTdHJpbmcoXCJmb28gZm9vIGJhclwiKTtcblxuICAgIGV4cGVjdChzdHIucmVwbGFjZUZpcnN0KFwiZm9vXCIsIFwiYmFyXCIpLnRvU3RyaW5nKCkpLnRvRXF1YWwoXCJiYXIgZm9vIGJhclwiKTtcbiAgICBleHBlY3Qoc3RyLnJlcGxhY2VGaXJzdChcInRlc3RcIiwgXCJiYXJcIikudG9TdHJpbmcoKSkudG9FcXVhbChcImZvbyBmb28gYmFyXCIpO1xuICB9KTtcblxuICBpdChcInNwbGl0XCIsICgpID0+IHtcbiAgICBjb25zdCBzdHIgPSBuZXcgSmF2YVN0cmluZyhcImZvbyBiYXIgZm9vIGJhciBmb28gYmFyIEZvb1wiKTtcblxuICAgIGNvbnN0IHNwbGl0U3RyID0gc3RyLnNwbGl0KG5ldyBKYXZhU3RyaW5nKFwiIFwiKSk7XG4gICAgZXhwZWN0KHNwbGl0U3RyLmxlbmd0aCkudG9FcXVhbCg3KTtcbiAgICBleHBlY3Qoc3BsaXRTdHIudG9KU09OKCkpLnRvRXF1YWwoW1xuICAgICAgXCJmb29cIixcbiAgICAgIFwiYmFyXCIsXG4gICAgICBcImZvb1wiLFxuICAgICAgXCJiYXJcIixcbiAgICAgIFwiZm9vXCIsXG4gICAgICBcImJhclwiLFxuICAgICAgXCJGb29cIixcbiAgICBdKTtcblxuICAgIGNvbnN0IHNwbGl0U3RyMiA9IHN0ci5zcGxpdChuZXcgSmF2YVN0cmluZyhcIihmb28pXCIpKTtcbiAgICBleHBlY3Qoc3BsaXRTdHIyLmxlbmd0aCkudG9FcXVhbCg0KTtcbiAgICBleHBlY3Qoc3BsaXRTdHIyLnRvSlNPTigpKS50b0VxdWFsKFtcIlwiLCBcIiBiYXIgXCIsIFwiIGJhciBcIiwgXCIgYmFyIEZvb1wiXSk7XG4gIH0pO1xuXG4gIGl0KFwic3RhcnRzV2l0aFwiLCAoKSA9PiB7XG4gICAgY29uc3Qgc3RyID0gbmV3IEphdmFTdHJpbmcoXG4gICAgICBcIkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXRcIlxuICAgICk7XG4gICAgZXhwZWN0KHN0ci5zdGFydHNXaXRoKG5ldyBKYXZhU3RyaW5nKFwiaXBzdW1cIikpKS50b0VxdWFsKGZhbHNlKTtcbiAgICBleHBlY3Qoc3RyLnN0YXJ0c1dpdGgobmV3IEphdmFTdHJpbmcoXCJMb3JlbVwiKSkpLnRvRXF1YWwodHJ1ZSk7XG5cbiAgICBleHBlY3Qoc3RyLnN0YXJ0c1dpdGgobmV3IEphdmFTdHJpbmcoXCJMb3JlbVwiKSwgMTApKS50b0VxdWFsKGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoXCJzdWJzdHJpbmdcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHN0ciA9IG5ldyBKYXZhU3RyaW5nKFxuICAgICAgXCJMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0XCJcbiAgICApO1xuICAgIGV4cGVjdChzdHIuc3Vic3RyaW5nKDApLnRvU3RyaW5nKCkpLnRvRXF1YWwoXG4gICAgICBcIkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXRcIlxuICAgICk7XG4gICAgZXhwZWN0KHN0ci5zdWJzdHJpbmcoMCwgMSkudG9TdHJpbmcoKSkudG9FcXVhbChcIkxcIik7XG4gICAgZXhwZWN0KHN0ci5zdWJzdHJpbmcoNiwgMTEpLnRvU3RyaW5nKCkpLnRvRXF1YWwoXCJpcHN1bVwiKTtcbiAgfSk7XG5cbiAgaXQoXCJ0b0xvd2VyQ2FzZVwiLCAoKSA9PiB7XG4gICAgY29uc3Qgc3RyID0gbmV3IEphdmFTdHJpbmcoXCJGb28gQmFSXCIpO1xuICAgIGV4cGVjdChzdHIudG9Mb3dlckNhc2UoKS50b1N0cmluZygpKS50b0VxdWFsKFwiZm9vIGJhclwiKTtcbiAgfSk7XG5cbiAgaXQoXCJ0b1VwcGVyQ2FzZVwiLCAoKSA9PiB7XG4gICAgY29uc3Qgc3RyID0gbmV3IEphdmFTdHJpbmcoXCJGb28gQmFSXCIpO1xuICAgIGV4cGVjdChzdHIudG9VcHBlckNhc2UoKS50b1N0cmluZygpKS50b0VxdWFsKFwiRk9PIEJBUlwiKTtcbiAgfSk7XG5cbiAgaXQoXCJ0cmltXCIsICgpID0+IHtcbiAgICBjb25zdCBzdHIgPSBuZXcgSmF2YVN0cmluZyhcImZvbyBiYXJcIik7XG4gICAgZXhwZWN0KHN0ci50cmltKCkudG9TdHJpbmcoKSkudG9FcXVhbChcImZvbyBiYXJcIik7XG5cbiAgICBjb25zdCBzdHIyID0gbmV3IEphdmFTdHJpbmcoXCIgICBmb28gYmFyXCIpO1xuICAgIGV4cGVjdChzdHIyLnRyaW0oKS50b1N0cmluZygpKS50b0VxdWFsKFwiZm9vIGJhclwiKTtcblxuICAgIGNvbnN0IHN0cjMgPSBuZXcgSmF2YVN0cmluZyhcIiAgIGZvbyBiYXIgICAgICBcIik7XG4gICAgZXhwZWN0KHN0cjMudHJpbSgpLnRvU3RyaW5nKCkpLnRvRXF1YWwoXCJmb28gYmFyXCIpO1xuXG4gICAgY29uc3Qgc3RyNCA9IG5ldyBKYXZhU3RyaW5nKFwiZm9vIGJhciAgICAgIFwiKTtcbiAgICBleHBlY3Qoc3RyNC50cmltKCkudG9TdHJpbmcoKSkudG9FcXVhbChcImZvbyBiYXJcIik7XG4gIH0pO1xufSk7XG4iXX0=