@kulupu-linku/sona 0.1.10 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -3
- package/dist/client.d.ts +1 -802
- package/dist/client.js +103 -4
- package/dist/index.d.ts +1 -1159
- package/dist/index.js +148 -168
- package/dist/lib/client.d.ts +537 -0
- package/dist/lib/client.test.d.ts +27 -0
- package/dist/lib/index.d.ts +959 -0
- package/dist/lib/types.d.ts +17 -0
- package/dist/lib/utils.d.ts +13 -0
- package/dist/server/index.d.ts +392 -0
- package/dist/server/utils.d.ts +28 -0
- package/dist/server/v1/index.d.ts +394 -0
- package/dist/server/versioning.d.ts +2132 -0
- package/dist/utils-CnA4OULt.js +2777 -0
- package/dist/utils.d.ts +1 -16
- package/dist/utils.js +7 -12
- package/generated/languages.json +15 -0
- package/generated/word.json +16 -3
- package/generated/words.json +16 -3
- package/package.json +19 -15
- package/LICENSE +0 -674
- package/dist/chunk-QCIUEY5V.js +0 -38
- package/dist/types.d.ts +0 -2
- package/dist/types.js +0 -0
- package/generated/etymology.json +0 -20
- package/generated/representations.json +0 -43
- package/generated/resources.json +0 -30
- package/generated/sandbox.json +0 -302
package/dist/client.js
CHANGED
|
@@ -1,6 +1,105 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
var p = (t, i, e = {}) => {
|
|
2
|
+
let r = `${t}=${i}`;
|
|
3
|
+
return e && typeof e.maxAge == "number" && e.maxAge >= 0 && (r += `; Max-Age=${Math.floor(e.maxAge)}`), e.domain && (r += `; Domain=${e.domain}`), e.path && (r += `; Path=${e.path}`), e.expires && (r += `; Expires=${e.expires.toUTCString()}`), e.httpOnly && (r += "; HttpOnly"), e.secure && (r += "; Secure"), e.sameSite && (r += `; SameSite=${e.sameSite}`), e.partitioned && (r += "; Partitioned"), r;
|
|
4
|
+
}, v = (t, i, e = {}) => (i = encodeURIComponent(i), p(t, i, e)), P = (t, i) => (t = t.replace(/\/+$/, ""), t = t + "/", i = i.replace(/^\/+/, ""), t + i), d = (t, i) => {
|
|
5
|
+
for (const [e, r] of Object.entries(i)) {
|
|
6
|
+
const n = new RegExp("/:" + e + "(?:{[^/]+})?");
|
|
7
|
+
t = t.replace(n, `/${r}`);
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
}, x = (t) => t.replace(/\/index$/, "/");
|
|
11
|
+
function u(t) {
|
|
12
|
+
return typeof t == "object" && t !== null && !Array.isArray(t);
|
|
13
|
+
}
|
|
14
|
+
function y(t, i) {
|
|
15
|
+
if (!u(t) && !u(i))
|
|
16
|
+
return i;
|
|
17
|
+
const e = { ...t };
|
|
18
|
+
for (const r in i) {
|
|
19
|
+
const n = i[r];
|
|
20
|
+
u(e[r]) && u(n) ? e[r] = y(e[r], n) : e[r] = n;
|
|
21
|
+
}
|
|
22
|
+
return e;
|
|
23
|
+
}
|
|
24
|
+
var l = (t, i) => new Proxy(() => {
|
|
25
|
+
}, {
|
|
26
|
+
get(r, n) {
|
|
27
|
+
if (!(typeof n != "string" || n === "then"))
|
|
28
|
+
return l(t, [...i, n]);
|
|
29
|
+
},
|
|
30
|
+
apply(r, n, h) {
|
|
31
|
+
return t({
|
|
32
|
+
path: i,
|
|
33
|
+
args: h
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}), j = class {
|
|
37
|
+
constructor(t, i) {
|
|
38
|
+
this.queryParams = void 0, this.pathParams = {}, this.cType = void 0, this.fetch = (e, r) => {
|
|
39
|
+
if (e) {
|
|
40
|
+
if (e.query) {
|
|
41
|
+
for (const [s, o] of Object.entries(e.query))
|
|
42
|
+
if (o !== void 0)
|
|
43
|
+
if (this.queryParams || (this.queryParams = new URLSearchParams()), Array.isArray(o))
|
|
44
|
+
for (const f of o)
|
|
45
|
+
this.queryParams.append(s, f);
|
|
46
|
+
else
|
|
47
|
+
this.queryParams.set(s, o);
|
|
48
|
+
}
|
|
49
|
+
if (e.form) {
|
|
50
|
+
const s = new FormData();
|
|
51
|
+
for (const [o, f] of Object.entries(e.form))
|
|
52
|
+
s.append(o, f);
|
|
53
|
+
this.rBody = s;
|
|
54
|
+
}
|
|
55
|
+
e.json && (this.rBody = JSON.stringify(e.json), this.cType = "application/json"), e.param && (this.pathParams = e.param);
|
|
56
|
+
}
|
|
57
|
+
let n = this.method.toUpperCase(), h = !(n === "GET" || n === "HEAD");
|
|
58
|
+
const c = {
|
|
59
|
+
...(e == null ? void 0 : e.header) ?? {},
|
|
60
|
+
...r != null && r.headers ? r.headers : {}
|
|
61
|
+
};
|
|
62
|
+
if (e != null && e.cookie) {
|
|
63
|
+
const s = [];
|
|
64
|
+
for (const [o, f] of Object.entries(e.cookie))
|
|
65
|
+
s.push(v(o, f, { path: "/" }));
|
|
66
|
+
c.Cookie = s.join(",");
|
|
67
|
+
}
|
|
68
|
+
this.cType && (c["Content-Type"] = this.cType);
|
|
69
|
+
const m = new Headers(c ?? void 0);
|
|
70
|
+
let a = this.url;
|
|
71
|
+
return a = x(a), a = d(a, this.pathParams), this.queryParams && (a = a + "?" + this.queryParams.toString()), n = this.method.toUpperCase(), h = !(n === "GET" || n === "HEAD"), ((r == null ? void 0 : r.fetch) || fetch)(a, {
|
|
72
|
+
body: h ? this.rBody : void 0,
|
|
73
|
+
method: n,
|
|
74
|
+
headers: m
|
|
75
|
+
});
|
|
76
|
+
}, this.url = t, this.method = i;
|
|
77
|
+
}
|
|
78
|
+
}, $ = (t, i) => l((e) => {
|
|
79
|
+
const r = [...e.path];
|
|
80
|
+
let n = "";
|
|
81
|
+
if (/^\$/.test(r[r.length - 1])) {
|
|
82
|
+
const a = r.pop();
|
|
83
|
+
a && (n = a.replace(/^\$/, ""));
|
|
84
|
+
}
|
|
85
|
+
const h = r.join("/"), c = P(t, h);
|
|
86
|
+
if (n === "url")
|
|
87
|
+
return e.args[0] && e.args[0].param ? new URL(d(c, e.args[0].param)) : new URL(c);
|
|
88
|
+
const m = new j(c, n);
|
|
89
|
+
if (n) {
|
|
90
|
+
i ?? (i = {});
|
|
91
|
+
const a = y(i, { ...e.args[1] ?? {} });
|
|
92
|
+
return m.fetch(e.args[0], a);
|
|
93
|
+
}
|
|
94
|
+
return m;
|
|
95
|
+
}, []);
|
|
96
|
+
const q = ({
|
|
97
|
+
baseUrl: t = "https://api.linku.la/",
|
|
98
|
+
fetchFunc: i = fetch
|
|
99
|
+
}) => $(t, {
|
|
100
|
+
fetch: i
|
|
101
|
+
});
|
|
4
102
|
export {
|
|
5
|
-
client
|
|
103
|
+
q as client
|
|
6
104
|
};
|
|
105
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlcyI6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vaG9ub0A0LjAuMTAvbm9kZV9tb2R1bGVzL2hvbm8vZGlzdC91dGlscy9jb29raWUuanMiLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vaG9ub0A0LjAuMTAvbm9kZV9tb2R1bGVzL2hvbm8vZGlzdC9jbGllbnQvdXRpbHMuanMiLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vaG9ub0A0LjAuMTAvbm9kZV9tb2R1bGVzL2hvbm8vZGlzdC9jbGllbnQvY2xpZW50LmpzIiwiLi4vc3JjL2xpYi9jbGllbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL3V0aWxzL2Nvb2tpZS50c1xuaW1wb3J0IHsgZGVjb2RlVVJJQ29tcG9uZW50XyB9IGZyb20gXCIuL3VybC5qc1wiO1xudmFyIGFsZ29yaXRobSA9IHsgbmFtZTogXCJITUFDXCIsIGhhc2g6IFwiU0hBLTI1NlwiIH07XG52YXIgZ2V0Q3J5cHRvS2V5ID0gYXN5bmMgKHNlY3JldCkgPT4ge1xuICBjb25zdCBzZWNyZXRCdWYgPSB0eXBlb2Ygc2VjcmV0ID09PSBcInN0cmluZ1wiID8gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHNlY3JldCkgOiBzZWNyZXQ7XG4gIHJldHVybiBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleShcInJhd1wiLCBzZWNyZXRCdWYsIGFsZ29yaXRobSwgZmFsc2UsIFtcInNpZ25cIiwgXCJ2ZXJpZnlcIl0pO1xufTtcbnZhciBtYWtlU2lnbmF0dXJlID0gYXN5bmMgKHZhbHVlLCBzZWNyZXQpID0+IHtcbiAgY29uc3Qga2V5ID0gYXdhaXQgZ2V0Q3J5cHRvS2V5KHNlY3JldCk7XG4gIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuc2lnbihhbGdvcml0aG0ubmFtZSwga2V5LCBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodmFsdWUpKTtcbiAgcmV0dXJuIGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZSguLi5uZXcgVWludDhBcnJheShzaWduYXR1cmUpKSk7XG59O1xudmFyIHZlcmlmeVNpZ25hdHVyZSA9IGFzeW5jIChiYXNlNjRTaWduYXR1cmUsIHZhbHVlLCBzZWNyZXQpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzaWduYXR1cmVCaW5TdHIgPSBhdG9iKGJhc2U2NFNpZ25hdHVyZSk7XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gbmV3IFVpbnQ4QXJyYXkoc2lnbmF0dXJlQmluU3RyLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHNpZ25hdHVyZUJpblN0ci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgc2lnbmF0dXJlW2ldID0gc2lnbmF0dXJlQmluU3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCBjcnlwdG8uc3VidGxlLnZlcmlmeShhbGdvcml0aG0sIHNlY3JldCwgc2lnbmF0dXJlLCBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodmFsdWUpKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcbnZhciB2YWxpZENvb2tpZU5hbWVSZWdFeCA9IC9eW1xcdyEjJCUmJyouXmB8fistXSskLztcbnZhciB2YWxpZENvb2tpZVZhbHVlUmVnRXggPSAvXlsgISMtOjwtW1xcXS1+XSokLztcbnZhciBwYXJzZSA9IChjb29raWUsIG5hbWUpID0+IHtcbiAgY29uc3QgcGFpcnMgPSBjb29raWUudHJpbSgpLnNwbGl0KFwiO1wiKTtcbiAgcmV0dXJuIHBhaXJzLnJlZHVjZSgocGFyc2VkQ29va2llLCBwYWlyU3RyKSA9PiB7XG4gICAgcGFpclN0ciA9IHBhaXJTdHIudHJpbSgpO1xuICAgIGNvbnN0IHZhbHVlU3RhcnRQb3MgPSBwYWlyU3RyLmluZGV4T2YoXCI9XCIpO1xuICAgIGlmICh2YWx1ZVN0YXJ0UG9zID09PSAtMSkge1xuICAgICAgcmV0dXJuIHBhcnNlZENvb2tpZTtcbiAgICB9XG4gICAgY29uc3QgY29va2llTmFtZSA9IHBhaXJTdHIuc3Vic3RyaW5nKDAsIHZhbHVlU3RhcnRQb3MpLnRyaW0oKTtcbiAgICBpZiAobmFtZSAmJiBuYW1lICE9PSBjb29raWVOYW1lIHx8ICF2YWxpZENvb2tpZU5hbWVSZWdFeC50ZXN0KGNvb2tpZU5hbWUpKSB7XG4gICAgICByZXR1cm4gcGFyc2VkQ29va2llO1xuICAgIH1cbiAgICBsZXQgY29va2llVmFsdWUgPSBwYWlyU3RyLnN1YnN0cmluZyh2YWx1ZVN0YXJ0UG9zICsgMSkudHJpbSgpO1xuICAgIGlmIChjb29raWVWYWx1ZS5zdGFydHNXaXRoKCdcIicpICYmIGNvb2tpZVZhbHVlLmVuZHNXaXRoKCdcIicpKSB7XG4gICAgICBjb29raWVWYWx1ZSA9IGNvb2tpZVZhbHVlLnNsaWNlKDEsIC0xKTtcbiAgICB9XG4gICAgaWYgKHZhbGlkQ29va2llVmFsdWVSZWdFeC50ZXN0KGNvb2tpZVZhbHVlKSkge1xuICAgICAgcGFyc2VkQ29va2llW2Nvb2tpZU5hbWVdID0gZGVjb2RlVVJJQ29tcG9uZW50Xyhjb29raWVWYWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZWRDb29raWU7XG4gIH0sIHt9KTtcbn07XG52YXIgcGFyc2VTaWduZWQgPSBhc3luYyAoY29va2llLCBzZWNyZXQsIG5hbWUpID0+IHtcbiAgY29uc3QgcGFyc2VkQ29va2llID0ge307XG4gIGNvbnN0IHNlY3JldEtleSA9IGF3YWl0IGdldENyeXB0b0tleShzZWNyZXQpO1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXJzZShjb29raWUsIG5hbWUpKSkge1xuICAgIGNvbnN0IHNpZ25hdHVyZVN0YXJ0UG9zID0gdmFsdWUubGFzdEluZGV4T2YoXCIuXCIpO1xuICAgIGlmIChzaWduYXR1cmVTdGFydFBvcyA8IDEpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBzaWduZWRWYWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCBzaWduYXR1cmVTdGFydFBvcyk7XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gdmFsdWUuc3Vic3RyaW5nKHNpZ25hdHVyZVN0YXJ0UG9zICsgMSk7XG4gICAgaWYgKHNpZ25hdHVyZS5sZW5ndGggIT09IDQ0IHx8ICFzaWduYXR1cmUuZW5kc1dpdGgoXCI9XCIpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgaXNWZXJpZmllZCA9IGF3YWl0IHZlcmlmeVNpZ25hdHVyZShzaWduYXR1cmUsIHNpZ25lZFZhbHVlLCBzZWNyZXRLZXkpO1xuICAgIHBhcnNlZENvb2tpZVtrZXldID0gaXNWZXJpZmllZCA/IHNpZ25lZFZhbHVlIDogZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHBhcnNlZENvb2tpZTtcbn07XG52YXIgX3NlcmlhbGl6ZSA9IChuYW1lLCB2YWx1ZSwgb3B0ID0ge30pID0+IHtcbiAgbGV0IGNvb2tpZSA9IGAke25hbWV9PSR7dmFsdWV9YDtcbiAgaWYgKG9wdCAmJiB0eXBlb2Ygb3B0Lm1heEFnZSA9PT0gXCJudW1iZXJcIiAmJiBvcHQubWF4QWdlID49IDApIHtcbiAgICBjb29raWUgKz0gYDsgTWF4LUFnZT0ke01hdGguZmxvb3Iob3B0Lm1heEFnZSl9YDtcbiAgfVxuICBpZiAob3B0LmRvbWFpbikge1xuICAgIGNvb2tpZSArPSBgOyBEb21haW49JHtvcHQuZG9tYWlufWA7XG4gIH1cbiAgaWYgKG9wdC5wYXRoKSB7XG4gICAgY29va2llICs9IGA7IFBhdGg9JHtvcHQucGF0aH1gO1xuICB9XG4gIGlmIChvcHQuZXhwaXJlcykge1xuICAgIGNvb2tpZSArPSBgOyBFeHBpcmVzPSR7b3B0LmV4cGlyZXMudG9VVENTdHJpbmcoKX1gO1xuICB9XG4gIGlmIChvcHQuaHR0cE9ubHkpIHtcbiAgICBjb29raWUgKz0gXCI7IEh0dHBPbmx5XCI7XG4gIH1cbiAgaWYgKG9wdC5zZWN1cmUpIHtcbiAgICBjb29raWUgKz0gXCI7IFNlY3VyZVwiO1xuICB9XG4gIGlmIChvcHQuc2FtZVNpdGUpIHtcbiAgICBjb29raWUgKz0gYDsgU2FtZVNpdGU9JHtvcHQuc2FtZVNpdGV9YDtcbiAgfVxuICBpZiAob3B0LnBhcnRpdGlvbmVkKSB7XG4gICAgY29va2llICs9IFwiOyBQYXJ0aXRpb25lZFwiO1xuICB9XG4gIHJldHVybiBjb29raWU7XG59O1xudmFyIHNlcmlhbGl6ZSA9IChuYW1lLCB2YWx1ZSwgb3B0ID0ge30pID0+IHtcbiAgdmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpO1xuICByZXR1cm4gX3NlcmlhbGl6ZShuYW1lLCB2YWx1ZSwgb3B0KTtcbn07XG52YXIgc2VyaWFsaXplU2lnbmVkID0gYXN5bmMgKG5hbWUsIHZhbHVlLCBzZWNyZXQsIG9wdCA9IHt9KSA9PiB7XG4gIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IG1ha2VTaWduYXR1cmUodmFsdWUsIHNlY3JldCk7XG4gIHZhbHVlID0gYCR7dmFsdWV9LiR7c2lnbmF0dXJlfWA7XG4gIHZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKTtcbiAgcmV0dXJuIF9zZXJpYWxpemUobmFtZSwgdmFsdWUsIG9wdCk7XG59O1xuZXhwb3J0IHtcbiAgcGFyc2UsXG4gIHBhcnNlU2lnbmVkLFxuICBzZXJpYWxpemUsXG4gIHNlcmlhbGl6ZVNpZ25lZFxufTtcbiIsIi8vIHNyYy9jbGllbnQvdXRpbHMudHNcbnZhciBtZXJnZVBhdGggPSAoYmFzZSwgcGF0aCkgPT4ge1xuICBiYXNlID0gYmFzZS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpO1xuICBiYXNlID0gYmFzZSArIFwiL1wiO1xuICBwYXRoID0gcGF0aC5yZXBsYWNlKC9eXFwvKy8sIFwiXCIpO1xuICByZXR1cm4gYmFzZSArIHBhdGg7XG59O1xudmFyIHJlcGxhY2VVcmxQYXJhbSA9ICh1cmxTdHJpbmcsIHBhcmFtcykgPT4ge1xuICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhwYXJhbXMpKSB7XG4gICAgY29uc3QgcmVnID0gbmV3IFJlZ0V4cChcIi86XCIgKyBrICsgXCIoPzp7W14vXSt9KT9cIik7XG4gICAgdXJsU3RyaW5nID0gdXJsU3RyaW5nLnJlcGxhY2UocmVnLCBgLyR7dn1gKTtcbiAgfVxuICByZXR1cm4gdXJsU3RyaW5nO1xufTtcbnZhciByZW1vdmVJbmRleFN0cmluZyA9ICh1cmxTdGluZykgPT4ge1xuICByZXR1cm4gdXJsU3RpbmcucmVwbGFjZSgvXFwvaW5kZXgkLywgXCIvXCIpO1xufTtcbmZ1bmN0aW9uIGlzT2JqZWN0KGl0ZW0pIHtcbiAgcmV0dXJuIHR5cGVvZiBpdGVtID09PSBcIm9iamVjdFwiICYmIGl0ZW0gIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkoaXRlbSk7XG59XG5mdW5jdGlvbiBkZWVwTWVyZ2UodGFyZ2V0LCBzb3VyY2UpIHtcbiAgaWYgKCFpc09iamVjdCh0YXJnZXQpICYmICFpc09iamVjdChzb3VyY2UpKSB7XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuICBjb25zdCBtZXJnZWQgPSB7IC4uLnRhcmdldCB9O1xuICBmb3IgKGNvbnN0IGtleSBpbiBzb3VyY2UpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHNvdXJjZVtrZXldO1xuICAgIGlmIChpc09iamVjdChtZXJnZWRba2V5XSkgJiYgaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICBtZXJnZWRba2V5XSA9IGRlZXBNZXJnZShtZXJnZWRba2V5XSwgdmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtZXJnZWRba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbWVyZ2VkO1xufVxuZXhwb3J0IHtcbiAgZGVlcE1lcmdlLFxuICBtZXJnZVBhdGgsXG4gIHJlbW92ZUluZGV4U3RyaW5nLFxuICByZXBsYWNlVXJsUGFyYW1cbn07XG4iLCIvLyBzcmMvY2xpZW50L2NsaWVudC50c1xuaW1wb3J0IHsgc2VyaWFsaXplIH0gZnJvbSBcIi4uL3V0aWxzL2Nvb2tpZS5qc1wiO1xuaW1wb3J0IHsgZGVlcE1lcmdlLCBtZXJnZVBhdGgsIHJlbW92ZUluZGV4U3RyaW5nLCByZXBsYWNlVXJsUGFyYW0gfSBmcm9tIFwiLi91dGlscy5qc1wiO1xudmFyIGNyZWF0ZVByb3h5ID0gKGNhbGxiYWNrLCBwYXRoKSA9PiB7XG4gIGNvbnN0IHByb3h5ID0gbmV3IFByb3h5KCgpID0+IHtcbiAgfSwge1xuICAgIGdldChfb2JqLCBrZXkpIHtcbiAgICAgIGlmICh0eXBlb2Yga2V5ICE9PSBcInN0cmluZ1wiIHx8IGtleSA9PT0gXCJ0aGVuXCIpIHtcbiAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjcmVhdGVQcm94eShjYWxsYmFjaywgWy4uLnBhdGgsIGtleV0pO1xuICAgIH0sXG4gICAgYXBwbHkoXzEsIF8yLCBhcmdzKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soe1xuICAgICAgICBwYXRoLFxuICAgICAgICBhcmdzXG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcHJveHk7XG59O1xudmFyIENsaWVudFJlcXVlc3RJbXBsID0gY2xhc3Mge1xuICBjb25zdHJ1Y3Rvcih1cmwsIG1ldGhvZCkge1xuICAgIHRoaXMucXVlcnlQYXJhbXMgPSB2b2lkIDA7XG4gICAgdGhpcy5wYXRoUGFyYW1zID0ge307XG4gICAgdGhpcy5jVHlwZSA9IHZvaWQgMDtcbiAgICB0aGlzLmZldGNoID0gKGFyZ3MsIG9wdCkgPT4ge1xuICAgICAgaWYgKGFyZ3MpIHtcbiAgICAgICAgaWYgKGFyZ3MucXVlcnkpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhhcmdzLnF1ZXJ5KSkge1xuICAgICAgICAgICAgaWYgKHYgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucXVlcnlQYXJhbXMgfHwgKHRoaXMucXVlcnlQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCkpO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCB2MiBvZiB2KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeVBhcmFtcy5hcHBlbmQoaywgdjIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnNldChrLCB2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFyZ3MuZm9ybSkge1xuICAgICAgICAgIGNvbnN0IGZvcm0gPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhhcmdzLmZvcm0pKSB7XG4gICAgICAgICAgICBmb3JtLmFwcGVuZChrLCB2KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5yQm9keSA9IGZvcm07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFyZ3MuanNvbikge1xuICAgICAgICAgIHRoaXMuckJvZHkgPSBKU09OLnN0cmluZ2lmeShhcmdzLmpzb24pO1xuICAgICAgICAgIHRoaXMuY1R5cGUgPSBcImFwcGxpY2F0aW9uL2pzb25cIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXJncy5wYXJhbSkge1xuICAgICAgICAgIHRoaXMucGF0aFBhcmFtcyA9IGFyZ3MucGFyYW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxldCBtZXRob2RVcHBlckNhc2UgPSB0aGlzLm1ldGhvZC50b1VwcGVyQ2FzZSgpO1xuICAgICAgbGV0IHNldEJvZHkgPSAhKG1ldGhvZFVwcGVyQ2FzZSA9PT0gXCJHRVRcIiB8fCBtZXRob2RVcHBlckNhc2UgPT09IFwiSEVBRFwiKTtcbiAgICAgIGNvbnN0IGhlYWRlclZhbHVlcyA9IHtcbiAgICAgICAgLi4uYXJncz8uaGVhZGVyID8/IHt9LFxuICAgICAgICAuLi5vcHQ/LmhlYWRlcnMgPyBvcHQuaGVhZGVycyA6IHt9XG4gICAgICB9O1xuICAgICAgaWYgKGFyZ3M/LmNvb2tpZSkge1xuICAgICAgICBjb25zdCBjb29raWVzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGFyZ3MuY29va2llKSkge1xuICAgICAgICAgIGNvb2tpZXMucHVzaChzZXJpYWxpemUoa2V5LCB2YWx1ZSwgeyBwYXRoOiBcIi9cIiB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgaGVhZGVyVmFsdWVzW1wiQ29va2llXCJdID0gY29va2llcy5qb2luKFwiLFwiKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmNUeXBlKSB7XG4gICAgICAgIGhlYWRlclZhbHVlc1tcIkNvbnRlbnQtVHlwZVwiXSA9IHRoaXMuY1R5cGU7XG4gICAgICB9XG4gICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMoaGVhZGVyVmFsdWVzID8/IHZvaWQgMCk7XG4gICAgICBsZXQgdXJsID0gdGhpcy51cmw7XG4gICAgICB1cmwgPSByZW1vdmVJbmRleFN0cmluZyh1cmwpO1xuICAgICAgdXJsID0gcmVwbGFjZVVybFBhcmFtKHVybCwgdGhpcy5wYXRoUGFyYW1zKTtcbiAgICAgIGlmICh0aGlzLnF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgIHVybCA9IHVybCArIFwiP1wiICsgdGhpcy5xdWVyeVBhcmFtcy50b1N0cmluZygpO1xuICAgICAgfVxuICAgICAgbWV0aG9kVXBwZXJDYXNlID0gdGhpcy5tZXRob2QudG9VcHBlckNhc2UoKTtcbiAgICAgIHNldEJvZHkgPSAhKG1ldGhvZFVwcGVyQ2FzZSA9PT0gXCJHRVRcIiB8fCBtZXRob2RVcHBlckNhc2UgPT09IFwiSEVBRFwiKTtcbiAgICAgIHJldHVybiAob3B0Py5mZXRjaCB8fCBmZXRjaCkodXJsLCB7XG4gICAgICAgIGJvZHk6IHNldEJvZHkgPyB0aGlzLnJCb2R5IDogdm9pZCAwLFxuICAgICAgICBtZXRob2Q6IG1ldGhvZFVwcGVyQ2FzZSxcbiAgICAgICAgaGVhZGVyc1xuICAgICAgfSk7XG4gICAgfTtcbiAgICB0aGlzLnVybCA9IHVybDtcbiAgICB0aGlzLm1ldGhvZCA9IG1ldGhvZDtcbiAgfVxufTtcbnZhciBoYyA9IChiYXNlVXJsLCBvcHRpb25zKSA9PiBjcmVhdGVQcm94eSgob3B0cykgPT4ge1xuICBjb25zdCBwYXJ0cyA9IFsuLi5vcHRzLnBhdGhdO1xuICBsZXQgbWV0aG9kID0gXCJcIjtcbiAgaWYgKC9eXFwkLy50ZXN0KHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdKSkge1xuICAgIGNvbnN0IGxhc3QgPSBwYXJ0cy5wb3AoKTtcbiAgICBpZiAobGFzdCkge1xuICAgICAgbWV0aG9kID0gbGFzdC5yZXBsYWNlKC9eXFwkLywgXCJcIik7XG4gICAgfVxuICB9XG4gIGNvbnN0IHBhdGggPSBwYXJ0cy5qb2luKFwiL1wiKTtcbiAgY29uc3QgdXJsID0gbWVyZ2VQYXRoKGJhc2VVcmwsIHBhdGgpO1xuICBpZiAobWV0aG9kID09PSBcInVybFwiKSB7XG4gICAgaWYgKG9wdHMuYXJnc1swXSAmJiBvcHRzLmFyZ3NbMF0ucGFyYW0pIHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHJlcGxhY2VVcmxQYXJhbSh1cmwsIG9wdHMuYXJnc1swXS5wYXJhbSkpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFVSTCh1cmwpO1xuICB9XG4gIGNvbnN0IHJlcSA9IG5ldyBDbGllbnRSZXF1ZXN0SW1wbCh1cmwsIG1ldGhvZCk7XG4gIGlmIChtZXRob2QpIHtcbiAgICBvcHRpb25zID8/IChvcHRpb25zID0ge30pO1xuICAgIGNvbnN0IGFyZ3MgPSBkZWVwTWVyZ2Uob3B0aW9ucywgeyAuLi5vcHRzLmFyZ3NbMV0gPz8ge30gfSk7XG4gICAgcmV0dXJuIHJlcS5mZXRjaChvcHRzLmFyZ3NbMF0sIGFyZ3MpO1xuICB9XG4gIHJldHVybiByZXE7XG59LCBbXSk7XG5leHBvcnQge1xuICBoY1xufTtcbiIsImltcG9ydCB7IGhjIH0gZnJvbSBcImhvbm8vY2xpZW50XCI7XG5pbXBvcnQgdHlwZSB7IEFwcFR5cGUgfSBmcm9tIFwiJHNlcnZlclwiO1xuXG5leHBvcnQgY29uc3QgY2xpZW50ID0gKHtcblx0YmFzZVVybCA9IFwiaHR0cHM6Ly9hcGkubGlua3UubGEvXCIsXG5cdGZldGNoRnVuYyA9IGZldGNoLFxufToge1xuXHRiYXNlVXJsOiBzdHJpbmc7XG5cdGZldGNoRnVuYzogdHlwZW9mIGZldGNoO1xufSkgPT5cblx0aGM8QXBwVHlwZT4oYmFzZVVybCwge1xuXHRcdGZldGNoOiBmZXRjaEZ1bmMsXG5cdH0pO1xuXG5leHBvcnQgdHlwZSBBcGlUeXBlID0gQXBwVHlwZTtcbiJdLCJuYW1lcyI6WyJfc2VyaWFsaXplIiwibmFtZSIsInZhbHVlIiwib3B0IiwiY29va2llIiwic2VyaWFsaXplIiwibWVyZ2VQYXRoIiwiYmFzZSIsInBhdGgiLCJyZXBsYWNlVXJsUGFyYW0iLCJ1cmxTdHJpbmciLCJwYXJhbXMiLCJrIiwidiIsInJlZyIsInJlbW92ZUluZGV4U3RyaW5nIiwidXJsU3RpbmciLCJpc09iamVjdCIsIml0ZW0iLCJkZWVwTWVyZ2UiLCJ0YXJnZXQiLCJzb3VyY2UiLCJtZXJnZWQiLCJrZXkiLCJjcmVhdGVQcm94eSIsImNhbGxiYWNrIiwiX29iaiIsIl8xIiwiXzIiLCJhcmdzIiwiQ2xpZW50UmVxdWVzdEltcGwiLCJ1cmwiLCJtZXRob2QiLCJ2MiIsImZvcm0iLCJtZXRob2RVcHBlckNhc2UiLCJzZXRCb2R5IiwiaGVhZGVyVmFsdWVzIiwiY29va2llcyIsImhlYWRlcnMiLCJoYyIsImJhc2VVcmwiLCJvcHRpb25zIiwib3B0cyIsInBhcnRzIiwibGFzdCIsInJlcSIsImNsaWVudCIsImZldGNoRnVuYyJdLCJtYXBwaW5ncyI6IkFBa0VBLElBQUlBLElBQWEsQ0FBQ0MsR0FBTUMsR0FBT0MsSUFBTSxDQUFBLE1BQU87QUFDMUMsTUFBSUMsSUFBUyxHQUFHSCxDQUFJLElBQUlDLENBQUs7QUFDN0IsU0FBSUMsS0FBTyxPQUFPQSxFQUFJ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QUFDZixhQUFBQSxJQUFNaEIsRUFBa0JnQixDQUFHLEdBQzNCQSxJQUFNdEIsRUFBZ0JzQixHQUFLLEtBQUssVUFBVSxHQUN0QyxLQUFLLGdCQUNQQSxJQUFNQSxJQUFNLE1BQU0sS0FBSyxZQUFZLFNBQVEsSUFFN0NJLElBQWtCLEtBQUssT0FBTyxlQUM5QkMsSUFBVSxFQUFFRCxNQUFvQixTQUFTQSxNQUFvQixXQUNyRGhDLEtBQUEsZ0JBQUFBLEVBQUssVUFBUyxPQUFPNEIsR0FBSztBQUFBLFFBQ2hDLE1BQU1LLElBQVUsS0FBSyxRQUFRO0FBQUEsUUFDN0IsUUFBUUQ7QUFBQSxRQUNSLFNBQUFJO0FBQUEsTUFDUixDQUFPO0FBQUEsSUFDUCxHQUNJLEtBQUssTUFBTVIsR0FDWCxLQUFLLFNBQVNDO0FBQUEsRUFDZjtBQUNILEdBQ0lRLElBQUssQ0FBQ0MsR0FBU0MsTUFBWWxCLEVBQVksQ0FBQ21CLE1BQVM7QUFDbkQsUUFBTUMsSUFBUSxDQUFDLEdBQUdELEVBQUssSUFBSTtBQUMzQixNQUFJWCxJQUFTO0FBQ2IsTUFBSSxNQUFNLEtBQUtZLEVBQU1BLEVBQU0sU0FBUyxDQUFDLENBQUMsR0FBRztBQUN2QyxVQUFNQyxJQUFPRCxFQUFNO0FBQ25CLElBQUlDLE1BQ0ZiLElBQVNhLEVBQUssUUFBUSxPQUFPLEVBQUU7QUFBQSxFQUVsQztBQUNELFFBQU1yQyxJQUFPb0MsRUFBTSxLQUFLLEdBQUcsR0FDckJiLElBQU16QixFQUFVbUMsR0FBU2pDLENBQUk7QUFDbkMsTUFBSXdCLE1BQVc7QUFDYixXQUFJVyxFQUFLLEtBQUssQ0FBQyxLQUFLQSxFQUFLLEtBQUssQ0FBQyxFQUFFLFFBQ3hCLElBQUksSUFBSWxDLEVBQWdCc0IsR0FBS1ksRUFBSyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsSUFFbEQsSUFBSSxJQUFJWixDQUFHO0FBRXBCLFFBQU1lLElBQU0sSUFBSWhCLEVBQWtCQyxHQUFLQyxDQUFNO0FBQzdDLE1BQUlBLEdBQVE7QUFDVixJQUFBVSxNQUFZQSxJQUFVLENBQUE7QUFDdEIsVUFBTWIsSUFBT1YsRUFBVXVCLEdBQVMsRUFBRSxHQUFHQyxFQUFLLEtBQUssQ0FBQyxLQUFLLENBQUUsRUFBQSxDQUFFO0FBQ3pELFdBQU9HLEVBQUksTUFBTUgsRUFBSyxLQUFLLENBQUMsR0FBR2QsQ0FBSTtBQUFBLEVBQ3BDO0FBQ0QsU0FBT2lCO0FBQ1QsR0FBRyxFQUFFO0FDbEhFLE1BQU1DLElBQVMsQ0FBQztBQUFBLEVBQ3RCLFNBQUFOLElBQVU7QUFBQSxFQUNWLFdBQUFPLElBQVk7QUFDYixNQUlDUixFQUFZQyxHQUFTO0FBQUEsRUFDcEIsT0FBT087QUFDUixDQUFDOyIsInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlswLDEsMl19
|