@sailfish-ai/sf-veritas 0.4.0 → 0.4.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.
@@ -1,32 +1,32 @@
1
- var bI = Object.defineProperty;
2
- var aI = (I, n, e) => n in I ? bI(I, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : I[n] = e;
3
- var Y = (I, n, e) => aI(I, typeof n != "symbol" ? n + "" : n, e);
4
- import * as dI from "fs/promises";
5
- import mI from "http";
6
- import ZI from "https";
7
- import fI from "os";
8
- import { s as WI } from "./source-map-Cr6YkjTd.js";
9
- import { Worker as pI } from "worker_threads";
10
- import { g as d, a as GI, C as Q } from "./contextManager-C2ONL8XY.js";
11
- import { resolve as yI } from "path";
12
- function BI(I) {
13
- return typeof I == "string" ? I : I == null ? "" : Array.isArray(I) ? I.map((n) => String(n)).join(`
14
- `) : String(I);
1
+ var an = Object.defineProperty;
2
+ var dn = (n, I, e) => I in n ? an(n, I, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[I] = e;
3
+ var Y = (n, I, e) => dn(n, typeof I != "symbol" ? I + "" : I, e);
4
+ import * as mn from "fs/promises";
5
+ import Zn from "http";
6
+ import fn from "https";
7
+ import Wn from "os";
8
+ import { s as pn } from "./source-map-Cr6YkjTd.js";
9
+ import { Worker as Gn } from "worker_threads";
10
+ import { g as d, a as yn, C as Q } from "./contextManager-CE9FcHd2.js";
11
+ import { resolve as Bn } from "path";
12
+ function Yn(n) {
13
+ return typeof n == "string" ? n : n == null ? "" : Array.isArray(n) ? n.map((I) => String(I)).join(`
14
+ `) : String(n);
15
15
  }
16
- function YI(I) {
16
+ function Vn(n) {
17
17
  try {
18
- return JSON.stringify(I), !0;
18
+ return JSON.stringify(n), !0;
19
19
  } catch {
20
20
  return !1;
21
21
  }
22
22
  }
23
- function TI(I) {
24
- const n = {}, e = [];
25
- if (I) for (const [t, c] of Object.entries(I)) YI(c) ? n[t] = c : e.push(t);
26
- return { traitsJson: JSON.stringify(n), excludedFields: e };
23
+ function jn(n) {
24
+ const I = {}, e = [];
25
+ if (n) for (const [c, t] of Object.entries(n)) Vn(t) ? I[c] = t : e.push(c);
26
+ return { traitsJson: JSON.stringify(I), excludedFields: e };
27
27
  }
28
28
  class v {
29
- constructor({ file: n, line: e, function: t, code: c, locals: l = {}, offender: g = !1, column: i }) {
29
+ constructor({ file: I, line: e, function: c, code: t, locals: i = {}, offender: g = !1, column: l }) {
30
30
  Y(this, "file");
31
31
  Y(this, "line");
32
32
  Y(this, "function");
@@ -34,441 +34,443 @@ class v {
34
34
  Y(this, "locals");
35
35
  Y(this, "offender");
36
36
  Y(this, "column");
37
- this.file = n, this.line = e, this.function = t, this.code = c, this.locals = l, this.offender = g, this.column = i;
37
+ this.file = I, this.line = e, this.function = c, this.code = t, this.locals = i, this.offender = g, this.column = l;
38
38
  }
39
39
  toDict() {
40
- const n = { file: this.file, line: this.line, function: this.function, code: this.code, locals: Object.fromEntries(Object.entries(this.locals).map(([e, t]) => [e, String(t)])) };
41
- return this.offender && (n.offender = this.offender), this.column !== void 0 && (n.column = this.column), n;
40
+ const I = { file: this.file, line: this.line, function: this.function, code: this.code, locals: Object.fromEntries(Object.entries(this.locals).map(([e, c]) => [e, String(c)])) };
41
+ return this.offender && (I.offender = this.offender), this.column !== void 0 && (I.column = this.column), I;
42
42
  }
43
43
  toJson() {
44
44
  return JSON.stringify(this.toDict());
45
45
  }
46
46
  }
47
47
  class T {
48
- static encode(n) {
49
- return n instanceof v ? n.toDict() : Array.isArray(n) ? n.map((e) => T.encode(e)) : typeof n == "object" && n !== null ? JSON.stringify(n) : n;
48
+ static encode(I) {
49
+ return I instanceof v ? I.toDict() : Array.isArray(I) ? I.map((e) => T.encode(e)) : typeof I == "object" && I !== null ? JSON.stringify(I) : I;
50
50
  }
51
- static stringify(n) {
52
- return JSON.stringify(T.encode(n), (e, t) => t instanceof v ? t.toDict() : t);
51
+ static stringify(I) {
52
+ return JSON.stringify(T.encode(I), (e, c) => c instanceof v ? c.toDict() : c);
53
53
  }
54
54
  }
55
55
  const H = process.env.SF_LOG_LOCATION || "auto";
56
56
  let k = null, U = !1;
57
- const cI = "__sf:", CI = Error.prepareStackTrace, P = ["/sf-veritas/", "/@sailfish-ai/", "/node_modules/", "/dist/", "/<", "/internal/", "node:"];
58
- function VI(I) {
59
- for (let n = 0; n < P.length; n++) if (I.includes(P[n])) return !0;
57
+ const tn = "__sf:", Cn = Error.prepareStackTrace, P = ["/sf-veritas/", "/@sailfish-ai/", "/node_modules/", "/dist/", "/<", "/internal/", "node:"];
58
+ function hn(n) {
59
+ for (let I = 0; I < P.length; I++) if (n.includes(P[I])) return !0;
60
60
  return !1;
61
61
  }
62
- function j(I) {
63
- let n = I;
64
- n.startsWith("file://") && (n = n.substring(7)), process.platform === "win32" && n.startsWith("/") && n.length > 2 && n[2] === ":" && (n = n.substring(1));
62
+ function j(n) {
63
+ let I = n;
64
+ I.startsWith("file://") && (I = I.substring(7)), process.platform === "win32" && I.startsWith("/") && I.length > 2 && I[2] === ":" && (I = I.substring(1));
65
65
  try {
66
- return yI(n);
66
+ return Bn(I);
67
67
  } catch {
68
- return I;
68
+ return n;
69
69
  }
70
70
  }
71
- const hI = process.env.SF_LOG_LOCATION_WALK_FRAMES === "true";
72
- function M(I) {
73
- const n = Error.stackTraceLimit;
74
- Error.stackTraceLimit = 8, Error.prepareStackTrace = (l, g) => g;
71
+ const Nn = process.env.SF_LOG_LOCATION_WALK_FRAMES === "true";
72
+ function M(n) {
73
+ const I = Error.stackTraceLimit;
74
+ Error.stackTraceLimit = 8, Error.prepareStackTrace = (i, g) => g;
75
75
  const e = {};
76
- Error.captureStackTrace(e, I);
77
- const t = e.stack;
78
- if (Error.prepareStackTrace = CI, Error.stackTraceLimit = n, !t || t.length === 0) return [null, null];
79
- for (let l = 0; l < t.length; l++) {
80
- const g = t[l].getFileName();
81
- if (g && !VI(g)) return [j(g), t[l].getLineNumber()];
76
+ Error.captureStackTrace(e, n);
77
+ const c = e.stack;
78
+ if (Error.prepareStackTrace = Cn, Error.stackTraceLimit = I, !c || c.length === 0) return [null, null];
79
+ for (let i = 0; i < c.length; i++) {
80
+ const g = c[i].getFileName();
81
+ if (g && !hn(g)) return [j(g), c[i].getLineNumber()];
82
82
  }
83
- const c = t[0].getFileName();
84
- return c ? [j(c), t[0].getLineNumber()] : [null, null];
83
+ const t = c[0].getFileName();
84
+ return t ? [j(t), c[0].getLineNumber()] : [null, null];
85
85
  }
86
- function eI(I, n, e) {
86
+ function en(n, I, e) {
87
87
  if (H === "off") return [null, null];
88
88
  if (e && (H === "auto" || H === "build-inject")) {
89
- const [t, c, l] = (function(g) {
89
+ const [c, t, i] = (function(g) {
90
90
  if (g.length === 0) return [null, null, !1];
91
- const i = g[g.length - 1];
92
- if (typeof i != "string" || !i.startsWith(cI)) return [null, null, !1];
93
- const C = i.lastIndexOf(":");
91
+ const l = g[g.length - 1];
92
+ if (typeof l != "string" || !l.startsWith(tn)) return [null, null, !1];
93
+ const C = l.lastIndexOf(":");
94
94
  if (C <= 5) return [null, null, !1];
95
- const s = i.substring(5, C), m = parseInt(i.substring(C + 1), 10);
96
- return isNaN(m) ? [null, null, !1] : [s, m, !0];
95
+ const A = l.substring(5, C), Z = parseInt(l.substring(C + 1), 10);
96
+ return isNaN(Z) ? [null, null, !1] : [A, Z, !0];
97
97
  })(e);
98
- if (l) return [t, c];
98
+ if (i) return [c, t];
99
99
  if (H === "build-inject") return [null, null];
100
100
  }
101
101
  if (H === "native") {
102
- const t = (function() {
102
+ const c = (function() {
103
103
  if (U) return k;
104
104
  U = !0;
105
105
  try {
106
- const c = require("../native/build/Release/sf_source_location.node");
107
- typeof c?.getCallerLocation == "function" && (k = c);
106
+ const t = require("../native/build/Release/sf_source_location.node");
107
+ typeof t?.getCallerLocation == "function" && (k = t);
108
108
  } catch {
109
109
  }
110
110
  return k;
111
111
  })();
112
- if (t) {
113
- const [c, l] = t.getCallerLocation(I ?? 2);
114
- if (c) return [c, l];
112
+ if (c) {
113
+ const [t, i] = c.getCallerLocation(n ?? 2);
114
+ if (t) return [t, i];
115
115
  }
116
116
  if (H === "native" && k) return [null, null];
117
117
  }
118
- return n ? hI ? M(n) : (function(t) {
119
- const c = Error.stackTraceLimit;
120
- Error.stackTraceLimit = 1, Error.prepareStackTrace = (s, m) => m;
121
- const l = {};
122
- Error.captureStackTrace(l, t);
123
- const g = l.stack;
124
- if (Error.prepareStackTrace = CI, Error.stackTraceLimit = c, !g || g.length === 0) return [null, null];
125
- const i = g[0], C = i.getFileName();
126
- return C ? [j(C), i.getLineNumber()] : [null, null];
127
- })(n) : M(eI);
118
+ return I ? Nn ? M(I) : (function(c) {
119
+ const t = Error.stackTraceLimit;
120
+ Error.stackTraceLimit = 1, Error.prepareStackTrace = (A, Z) => Z;
121
+ const i = {};
122
+ Error.captureStackTrace(i, c);
123
+ const g = i.stack;
124
+ if (Error.prepareStackTrace = Cn, Error.stackTraceLimit = t, !g || g.length === 0) return [null, null];
125
+ const l = g[0], C = l.getFileName();
126
+ return C ? [j(C), l.getLineNumber()] : [null, null];
127
+ })(I) : M(en);
128
128
  }
129
- function p(I) {
130
- if (I.length === 0) return I;
131
- const n = I[I.length - 1];
132
- return typeof n == "string" && n.startsWith(cI) ? I.slice(0, -1) : I;
129
+ function p(n) {
130
+ if (n.length === 0) return n;
131
+ const I = n[n.length - 1];
132
+ return typeof I == "string" && I.startsWith(tn) ? n.slice(0, -1) : n;
133
133
  }
134
- const E = console.log.bind(console), O = console.error.bind(console), _ = console.warn.bind(console), $ = console.info.bind(console), q = console.debug.bind(console), y = E, II = O;
135
- let b = !1;
134
+ const E = console.log.bind(console), O = console.error.bind(console), _ = console.warn.bind(console), $ = console.info.bind(console), q = console.debug.bind(console), y = E, nn = O;
135
+ let a = !1;
136
136
  const z = 8192;
137
- function NI(I) {
138
- if (I === null) return "null";
139
- if (I === void 0) return "undefined";
140
- const n = typeof I;
141
- if (n === "string") return I;
142
- if (n === "number" || n === "boolean") return String(I);
143
- if (n === "bigint") return I.toString() + "n";
144
- if (n === "symbol") return I.toString();
145
- if (n === "function") return `[Function: ${I.name || "anonymous"}]`;
146
- if (I instanceof Error) return I.stack || `${I.name}: ${I.message}`;
137
+ function Hn(n) {
138
+ if (n === null) return "null";
139
+ if (n === void 0) return "undefined";
140
+ const I = typeof n;
141
+ if (I === "string") return n;
142
+ if (I === "number" || I === "boolean") return String(n);
143
+ if (I === "bigint") return n.toString() + "n";
144
+ if (I === "symbol") return n.toString();
145
+ if (I === "function") return `[Function: ${n.name || "anonymous"}]`;
146
+ if (n instanceof Error) return n.stack || `${n.name}: ${n.message}`;
147
147
  try {
148
- const e = /* @__PURE__ */ new WeakSet(), t = [], c = /* @__PURE__ */ new Map(), l = JSON.stringify(I, function(i, C) {
148
+ const e = /* @__PURE__ */ new WeakSet(), c = [], t = /* @__PURE__ */ new Map(), i = JSON.stringify(n, function(l, C) {
149
149
  if (typeof C == "bigint") return C.toString() + "n";
150
150
  if (typeof C == "function") return `[Function: ${C.name || "anonymous"}]`;
151
151
  if (typeof C == "symbol") return C.toString();
152
152
  if (C === void 0) return "[undefined]";
153
- if (i !== "" && c.has(this)) {
154
- const s = c.get(this);
155
- if (s >= 20) return;
156
- c.set(this, s + 1);
153
+ if (l !== "" && t.has(this)) {
154
+ const A = t.get(this);
155
+ if (A >= 20) return;
156
+ t.set(this, A + 1);
157
157
  }
158
158
  if (C !== null && typeof C == "object") {
159
159
  if (e.has(C)) return "[Circular]";
160
- for (; t.length > 0 && t[t.length - 1] !== this; ) t.pop();
161
- if (t.length >= 3) return Array.isArray(C) ? `[Array(${C.length})]` : "[Object]";
162
- e.add(C), t.push(C), !Array.isArray(C) && Object.keys(C).length > 20 && c.set(C, 0);
160
+ for (; c.length > 0 && c[c.length - 1] !== this; ) c.pop();
161
+ if (c.length >= 3) return Array.isArray(C) ? `[Array(${C.length})]` : "[Object]";
162
+ e.add(C), c.push(C), !Array.isArray(C) && Object.keys(C).length > 20 && t.set(C, 0);
163
163
  }
164
164
  return C;
165
165
  });
166
- if (l === void 0) return String(I);
167
- let g = l;
168
- if (c.size > 0 && !Array.isArray(I) && c.has(I)) {
169
- const i = Object.keys(I).length;
170
- g = g.slice(0, -1) + `,"...":"${i - 20} more keys"}`;
166
+ if (i === void 0) return String(n);
167
+ let g = i;
168
+ if (t.size > 0 && !Array.isArray(n) && t.has(n)) {
169
+ const l = Object.keys(n).length;
170
+ g = g.slice(0, -1) + `,"...":"${l - 20} more keys"}`;
171
171
  }
172
172
  return g.length > 500 ? g.substring(0, 500) + "...[truncated]" : g;
173
173
  } catch {
174
- return String(I);
174
+ return String(n);
175
175
  }
176
176
  }
177
- function X(I) {
178
- if (I.length === 0) return "";
179
- if (I.length === 1 && typeof I[0] == "string") {
180
- const t = I[0];
181
- return t.length > z ? t.substring(0, z) + "...[truncated]" : t;
177
+ function X(n) {
178
+ if (n.length === 0) return "";
179
+ if (n.length === 1 && typeof n[0] == "string") {
180
+ const c = n[0];
181
+ return c.length > z ? c.substring(0, z) + "...[truncated]" : c;
182
182
  }
183
- let n, e = !0;
184
- for (let t = 0; t < I.length; t++) {
185
- const c = typeof I[t];
186
- if (c === "object" && I[t] !== null || c === "function" || c === "symbol") {
183
+ let I, e = !0;
184
+ for (let c = 0; c < n.length; c++) {
185
+ const t = typeof n[c];
186
+ if (t === "object" && n[c] !== null || t === "function" || t === "symbol") {
187
187
  e = !1;
188
188
  break;
189
189
  }
190
190
  }
191
191
  if (e) {
192
- const t = new Array(I.length);
193
- for (let c = 0; c < I.length; c++) {
194
- const l = I[c];
195
- t[c] = l === null ? "null" : l === void 0 ? "undefined" : typeof l == "string" ? l : String(l);
192
+ const c = new Array(n.length);
193
+ for (let t = 0; t < n.length; t++) {
194
+ const i = n[t];
195
+ c[t] = i === null ? "null" : i === void 0 ? "undefined" : typeof i == "string" ? i : String(i);
196
196
  }
197
- n = t.join(" ");
198
- } else n = I.map(NI).join(" ");
199
- return n.length > z ? n.substring(0, z) + "...[truncated]" : n;
197
+ I = c.join(" ");
198
+ } else I = n.map(Hn).join(" ");
199
+ return I.length > z ? I.substring(0, z) + "...[truncated]" : I;
200
200
  }
201
- function jI(I) {
202
- function n(g, i, C, s) {
203
- const m = GI();
204
- if (m?.logIgnoreRegex && m.logIgnoreRegex.test(i)) return;
205
- const [a, A] = eI(2, C, s);
206
- I.setOperationName("CollectLogs"), I.doSend([i, g, a, A]);
201
+ function En(n) {
202
+ function I(g, l, C, A) {
203
+ const Z = yn();
204
+ if (Z?.logIgnoreRegex && Z.logIgnoreRegex.test(l)) return;
205
+ const [m, o] = en(2, C, A);
206
+ n.setOperationName("CollectLogs"), n.doSend([l, g, m, o]);
207
207
  }
208
208
  const e = console.log = (...g) => {
209
- if (b) E(...p(g));
209
+ if (a) E(...p(g));
210
210
  else {
211
- b = !0;
211
+ a = !0;
212
212
  try {
213
- const i = p(g);
214
- n("INFO", X(i), e, g), E(...i);
213
+ const l = p(g);
214
+ I("INFO", X(l), e, g), E(...l);
215
215
  } finally {
216
- b = !1;
216
+ a = !1;
217
217
  }
218
218
  }
219
- }, t = console.error = (...g) => {
220
- if (b) O(...p(g));
219
+ }, c = console.error = (...g) => {
220
+ if (a) O(...p(g));
221
221
  else {
222
- b = !0;
222
+ a = !0;
223
223
  try {
224
- const i = p(g);
225
- n("ERROR", X(i), t, g), O(...i);
224
+ const l = p(g);
225
+ I("ERROR", X(l), c, g), O(...l);
226
226
  } finally {
227
- b = !1;
227
+ a = !1;
228
228
  }
229
229
  }
230
- }, c = console.warn = (...g) => {
231
- if (b) _(...p(g));
230
+ }, t = console.warn = (...g) => {
231
+ if (a) _(...p(g));
232
232
  else {
233
- b = !0;
233
+ a = !0;
234
234
  try {
235
- const i = p(g);
236
- n("WARN", X(i), c, g), _(...i);
235
+ const l = p(g);
236
+ I("WARN", X(l), t, g), _(...l);
237
237
  } finally {
238
- b = !1;
238
+ a = !1;
239
239
  }
240
240
  }
241
- }, l = console.info = (...g) => {
242
- if (b) $(...p(g));
241
+ }, i = console.info = (...g) => {
242
+ if (a) $(...p(g));
243
243
  else {
244
- b = !0;
244
+ a = !0;
245
245
  try {
246
- const i = p(g);
247
- n("INFO", X(i), l, g), $(...i);
246
+ const l = p(g);
247
+ I("INFO", X(l), i, g), $(...l);
248
248
  } finally {
249
- b = !1;
249
+ a = !1;
250
250
  }
251
251
  }
252
252
  };
253
253
  if (d().logLevel === "DEBUG") {
254
- const g = console.debug = (...i) => {
255
- if (b) q(...p(i));
254
+ const g = console.debug = (...l) => {
255
+ if (a) q(...p(l));
256
256
  else {
257
- b = !0;
257
+ a = !0;
258
258
  try {
259
- const C = p(i);
260
- n("DEBUG", X(C), g, i), q(...C);
259
+ const C = p(l);
260
+ I("DEBUG", X(C), g, l), q(...C);
261
261
  } finally {
262
- b = !1;
262
+ a = !1;
263
263
  }
264
264
  }
265
265
  };
266
266
  }
267
267
  }
268
268
  let S = 0;
269
- function EI(I) {
269
+ function On(n) {
270
270
  d().sfDebug && y("Initializing Exception Interceptor...");
271
271
  try {
272
- const g = oI();
273
- I?.setSupplementalFields?.({ isFromLocalService: g }), (async function(i) {
274
- if (tI) return;
275
- tI = !0;
272
+ const g = sn();
273
+ n?.setSupplementalFields?.({ isFromLocalService: g }), (async function(l) {
274
+ if (cn) return;
275
+ cn = !0;
276
276
  const C = process.env || {};
277
- if (lI(C.SF_IS_LOCAL) === void 0)
277
+ if (on(C.SF_IS_LOCAL) === void 0)
278
278
  try {
279
- await (async function(s) {
280
- const m = x("http://169.254.169.254/latest/meta-data/", {}, s), a = x("http://metadata.google.internal/computeMetadata/v1/instance/", { "Metadata-Flavor": "Google" }, s), A = x("http://169.254.169.254/metadata/instance?api-version=2021-02-01", { Metadata: "true" }, s);
281
- return (await Promise.allSettled([m, a, A])).some((f) => f.status === "fulfilled" && (f.value === "ok" || f.value === "http_error"));
282
- })(150) && V && (V = !1, i?.setSupplementalFields?.({ isFromLocalService: !1 }));
279
+ await (async function(A) {
280
+ const Z = x("http://169.254.169.254/latest/meta-data/", {}, A), m = x("http://metadata.google.internal/computeMetadata/v1/instance/", { "Metadata-Flavor": "Google" }, A), o = x("http://169.254.169.254/metadata/instance?api-version=2021-02-01", { Metadata: "true" }, A);
281
+ return (await Promise.allSettled([Z, m, o])).some((f) => f.status === "fulfilled" && (f.value === "ok" || f.value === "http_error"));
282
+ })(150) && V && (V = !1, l?.setSupplementalFields?.({ isFromLocalService: !1 }));
283
283
  } catch {
284
284
  }
285
- })(I).catch(() => {
285
+ })(n).catch(() => {
286
286
  });
287
287
  } catch {
288
288
  }
289
- const n = new pI(new URL("data:application/javascript;base64,Ly8gc3JjL2RlYnVnZ2VyV29ya2VyLnRzCmltcG9ydCB7IFNlc3Npb24gfSBmcm9tICJpbnNwZWN0b3IvcHJvbWlzZXMiOwppbXBvcnQgeyBwYXJlbnRQb3J0LCB3b3JrZXJEYXRhIH0gZnJvbSAid29ya2VyX3RocmVhZHMiOwpnbG9iYWwuc2ZEZWJ1ZyA9IHZvaWQgMDsKZ2xvYmFsLnN0YWNrRGVwdGhMb2NhbHMgPSB2b2lkIDA7Cmdsb2JhbC5ub2RlTW9kdWxlc1RvQ29sbGVjdExvY2FsVmFyaWFibGVzT24gPSB2b2lkIDA7CnZhciBzY3JpcHRTb3VyY2VDYWNoZSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CnZhciBub25BcHBGcmFtZVBhdHRlcm5zID0gWwogIC9ub2RlOmludGVybmFsLywKICAvaW50ZXJuYWxcLy8sCiAgL25vZGVfbW9kdWxlcy8sCiAgL25vZGU6ZnMvCl07CmFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NDYWxsRnJhbWVzKHNlc3Npb24sIGNhbGxGcmFtZXMsIGRlc2NyaXB0aW9uTGluZXMpIHsKICBjb25zdCBsaW1pdGVkQ2FsbEZyYW1lcyA9IGNhbGxGcmFtZXMuc2xpY2UoMCwgZ2xvYmFsLnN0YWNrRGVwdGhMb2NhbHMpOwogIGlmIChsaW1pdGVkQ2FsbEZyYW1lcy5sZW5ndGggPiAwKSB7CiAgICBjb25zdCBmaXJzdFVybCA9IGxpbWl0ZWRDYWxsRnJhbWVzWzBdLnVybCB8fCAiIjsKICAgIGlmIChub25BcHBGcmFtZVBhdHRlcm5zLnNvbWUoKHApID0+IHAudGVzdChmaXJzdFVybCkpKSB7CiAgICAgIHBhcmVudFBvcnQ/LnBvc3RNZXNzYWdlKHsgdHlwZTogImV4Y2VwdGlvbiIsIGZyYW1lczogW10gfSk7CiAgICAgIHJldHVybjsKICAgIH0KICB9CiAgY29uc3QgZnJhbWVzID0gYXdhaXQgUHJvbWlzZS5hbGwoCiAgICBsaW1pdGVkQ2FsbEZyYW1lcy5tYXAoYXN5bmMgKGZyYW1lLCBpbmRleCkgPT4gewogICAgICB0cnkgewogICAgICAgIGNvbnN0IHsgZnVuY3Rpb25OYW1lLCBsb2NhdGlvbiwgdXJsLCBzY29wZUNoYWluIH0gPSBmcmFtZTsKICAgICAgICBjb25zdCBsb2NhbFNjb3BlID0gc2NvcGVDaGFpbi5maW5kKChzY29wZSkgPT4gc2NvcGUudHlwZSA9PT0gImxvY2FsIik7CiAgICAgICAgbGV0IGNvZGUgPSAiPG5vdCBjYXB0dXJlZD4iOwogICAgICAgIGxldCBmaWxlID0gIiI7CiAgICAgICAgaWYgKHVybCAmJiB1cmwudHJpbSgpICE9PSAiIikgewogICAgICAgICAgZmlsZSA9IHVybDsKICAgICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0aW9uTGluZXNbaW5kZXhdKSB7CiAgICAgICAgICBmaWxlID0gZGVzY3JpcHRpb25MaW5lc1tpbmRleF0udHJpbSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBmaWxlID0gIjx1bmtub3duPiI7CiAgICAgICAgfQogICAgICAgIGlmIChsb2NhdGlvbiAmJiBsb2NhdGlvbi5zY3JpcHRJZCkgewogICAgICAgICAgY29uc3Qgc2NyaXB0SWQgPSBsb2NhdGlvbi5zY3JpcHRJZDsKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIGxldCBzY3JpcHRTb3VyY2UgPSBzY3JpcHRTb3VyY2VDYWNoZS5nZXQoc2NyaXB0SWQpOwogICAgICAgICAgICBpZiAoc2NyaXB0U291cmNlID09PSB2b2lkIDApIHsKICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzZXNzaW9uLnBvc3QoCiAgICAgICAgICAgICAgICAiRGVidWdnZXIuZ2V0U2NyaXB0U291cmNlIiwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgc2NyaXB0SWQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICApOwogICAgICAgICAgICAgIHNjcmlwdFNvdXJjZSA9IHJlc3VsdC5zY3JpcHRTb3VyY2U7CiAgICAgICAgICAgICAgc2NyaXB0U291cmNlQ2FjaGUuc2V0KHNjcmlwdElkLCBzY3JpcHRTb3VyY2UpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IHNvdXJjZUxpbmVzID0gc2NyaXB0U291cmNlLnNwbGl0KCJcbiIpOwogICAgICAgICAgICBjb2RlID0gc291cmNlTGluZXNbbG9jYXRpb24ubGluZU51bWJlcl0gfHwgIjxub3QgY2FwdHVyZWQ+IjsKICAgICAgICAgIH0gY2F0Y2ggKGVycikgewogICAgICAgICAgICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJbV29ya2VyXSBGYWlsZWQgdG8gZmV0Y2ggc2NyaXB0IHNvdXJjZToiLCBlcnIpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNvbnN0IGxvY2FscyA9IGxvY2FsU2NvcGU/Lm9iamVjdD8ub2JqZWN0SWQgPyBhd2FpdCBmZXRjaExvY2FsVmFyaWFibGVzKHNlc3Npb24sIGxvY2FsU2NvcGUub2JqZWN0Lm9iamVjdElkKSA6IHt9OwogICAgICAgIHJldHVybiB7CiAgICAgICAgICBmdW5jdGlvbjogZnVuY3Rpb25OYW1lIHx8ICI8YW5vbnltb3VzPiIsCiAgICAgICAgICBsb2NhbHMsCiAgICAgICAgICBmaWxlLAogICAgICAgICAgbGluZTogbG9jYXRpb24/LmxpbmVOdW1iZXIgfHwgMCwKICAgICAgICAgIGNvZGUKICAgICAgICB9OwogICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgIGlmIChnbG9iYWwuc2ZEZWJ1ZykgewogICAgICAgICAgY29uc29sZS5lcnJvcigiW1dvcmtlcl0gRXJyb3IgcHJvY2Vzc2luZyBjYWxsIGZyYW1lOiIsIGVycm9yKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIGZ1bmN0aW9uOiAiPGVycm9yPiIsCiAgICAgICAgICBsb2NhbHM6IHt9LAogICAgICAgICAgZmlsZTogIjx1bmtub3duPiIsCiAgICAgICAgICBsaW5lOiAwLAogICAgICAgICAgY29kZTogIjxub3QgY2FwdHVyZWQ+IgogICAgICAgIH07CiAgICAgIH0KICAgIH0pCiAgKTsKICBwYXJlbnRQb3J0Py5wb3N0TWVzc2FnZSh7IHR5cGU6ICJleGNlcHRpb24iLCBmcmFtZXMgfSk7Cn0KYXN5bmMgZnVuY3Rpb24gaGFuZGxlUGF1c2VkKHNlc3Npb24sIHBhcmFtcykgewogIGNvbnN0IHsgcmVhc29uLCBkYXRhLCBjYWxsRnJhbWVzIH0gPSBwYXJhbXM7CiAgaWYgKHJlYXNvbiAhPT0gImV4Y2VwdGlvbiIgJiYgcmVhc29uICE9PSAicHJvbWlzZVJlamVjdGlvbiIpIHsKICAgIHJldHVybjsKICB9CiAgY29uc3Qgbm9uQXBwUGF0dGVybnMgPSBbCiAgICAvbm9kZTppbnRlcm5hbC8sCiAgICAvaW50ZXJuYWxcLy8sCiAgICAvbm9kZV9tb2R1bGVzLywKICAgIC9ub2RlOmZzLwogIF07CiAgbGV0IGZpcnN0RnJhbWVMaW5lID0gIiI7CiAgbGV0IGRlc2NyaXB0aW9uTGluZXMgPSBbXTsKICBpZiAoZGF0YSAmJiB0eXBlb2YgZGF0YS5kZXNjcmlwdGlvbiA9PT0gInN0cmluZyIpIHsKICAgIGRlc2NyaXB0aW9uTGluZXMgPSBkYXRhLmRlc2NyaXB0aW9uLnNwbGl0KCJcbiIpLmZpbHRlcigobGluZSkgPT4gbGluZS50cmltKCkuc3RhcnRzV2l0aCgiYXQgIikpOwogICAgZmlyc3RGcmFtZUxpbmUgPSBkZXNjcmlwdGlvbkxpbmVzWzBdIHx8ICIiOwogICAgaWYgKCFmaXJzdEZyYW1lTGluZSkgewogICAgICByZXR1cm47CiAgICB9CiAgICBjb25zdCBlcnJvckZyb21Ob25BcHAgPSBub25BcHBQYXR0ZXJucy5zb21lKAogICAgICAocGF0dGVybikgPT4gcGF0dGVybi50ZXN0KGZpcnN0RnJhbWVMaW5lLnRyaW0oKSkKICAgICk7CiAgICBjb25zdCBub2RlTW9kdWxlc0xpc3QgPSBBcnJheS5pc0FycmF5KAogICAgICBnbG9iYWwubm9kZU1vZHVsZXNUb0NvbGxlY3RMb2NhbFZhcmlhYmxlc09uCiAgICApID8gZ2xvYmFsLm5vZGVNb2R1bGVzVG9Db2xsZWN0TG9jYWxWYXJpYWJsZXNPbiA6IFtdOwogICAgaWYgKGVycm9yRnJvbU5vbkFwcCkgewogICAgICBpZiAobm9kZU1vZHVsZXNMaXN0LmluY2x1ZGVzKCJfX2FsbF9fIikpIHsKICAgICAgICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgICAgICAgIGNvbnNvbGUubG9nKAogICAgICAgICAgICAiW1dvcmtlcl0gRXJyb3IgaXMgZnJvbSBub24tYXBwIHNvdXJjZSwgYnV0IGNhcHR1cmluZyBkdWUgdG8gX19hbGxfXyBydWxlLiIKICAgICAgICAgICk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKG5vZGVNb2R1bGVzTGlzdC5sZW5ndGggPiAwKSB7CiAgICAgICAgY29uc3QgaXNGcm9tQWxsb3dlZE5vZGVNb2R1bGUgPSBub2RlTW9kdWxlc0xpc3Quc29tZSgKICAgICAgICAgIChtb2R1bGVOYW1lKSA9PiBmaXJzdEZyYW1lTGluZS5pbmNsdWRlcyhgJHttb2R1bGVOYW1lfWApCiAgICAgICAgKTsKICAgICAgICBpZiAoIWlzRnJvbUFsbG93ZWROb2RlTW9kdWxlKSB7CiAgICAgICAgICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgICAgICAgICAgY29uc29sZS5sb2coCiAgICAgICAgICAgICAgIltXb3JrZXJdIEVycm9yIGFwcGVhcnMgdG8gYmUgdHJpZ2dlcmVkIGZyb20gbm9uLWFwcGxpY2F0aW9uIHNvdXJjZXM7IGlnbm9yaW5nLiIKICAgICAgICAgICAgKTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKGdsb2JhbC5zZkRlYnVnKSB7CiAgICAgICAgICBjb25zb2xlLmxvZygKICAgICAgICAgICAgIltXb3JrZXJdIEVycm9yIGFwcGVhcnMgdG8gYmUgdHJpZ2dlcmVkIGZyb20gbm9uLWFwcGxpY2F0aW9uIHNvdXJjZXM7IGlnbm9yaW5nLiIKICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgICAgfQogICAgfQogICAgYXdhaXQgcHJvY2Vzc0NhbGxGcmFtZXMoc2Vzc2lvbiwgY2FsbEZyYW1lcywgZGVzY3JpcHRpb25MaW5lcyk7CiAgfSBlbHNlIHsKICAgIHJldHVybjsKICB9Cn0KYXN5bmMgZnVuY3Rpb24gc3RhcnREZWJ1Z2dlcigpIHsKICBwYXJlbnRQb3J0Py5wb3N0TWVzc2FnZSh7IHR5cGU6ICJtZXNzYWdlIiwgcmVhZHlUb0dldFBhcmFtZXRlcnM6IHRydWUgfSk7CiAgbGV0IHJlc29sdmVNZXNzYWdlUHJvbWlzZTsKICBjb25zdCBtZXNzYWdlUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICByZXNvbHZlTWVzc2FnZVByb21pc2UgPSByZXNvbHZlOwogIH0pOwogIGxldCBpc1BhdXNlZCA9IGZhbHNlOwogIHBhcmVudFBvcnQ/Lm9uKCJtZXNzYWdlIiwgKG1lc3NhZ2UpID0+IHsKICAgIHRyeSB7CiAgICAgIGlmIChtZXNzYWdlPy50eXBlID09PSAicHJvY2Vzc0V4Y2VwdGlvbiIpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaWYgKG1lc3NhZ2U/LnNmRGVidWcgIT09IHZvaWQgMCAmJiBtZXNzYWdlPy5zdGFja0RlcHRoTG9jYWxzICE9PSB2b2lkIDApIHsKICAgICAgICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgICAgICAgIGNvbnNvbGUubG9nKCJVcGRhdGluZyBnbG9iYWwgZGVidWcgdmFyaWFibGVzLi4uIik7CiAgICAgICAgfQogICAgICAgIGdsb2JhbC5zZkRlYnVnID0gbWVzc2FnZS5zZkRlYnVnOwogICAgICAgIGdsb2JhbC5zdGFja0RlcHRoTG9jYWxzID0gbWVzc2FnZS5zdGFja0RlcHRoTG9jYWxzOwogICAgICAgIGdsb2JhbC5ub2RlTW9kdWxlc1RvQ29sbGVjdExvY2FsVmFyaWFibGVzT24gPSBtZXNzYWdlLm5vZGVNb2R1bGVzVG9Db2xsZWN0TG9jYWxWYXJpYWJsZXNPbjsKICAgICAgICByZXNvbHZlTWVzc2FnZVByb21pc2UoKTsKICAgICAgfQogICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgaWYgKGdsb2JhbC5zZkRlYnVnKSB7CiAgICAgICAgY29uc29sZS5lcnJvcigiXHUyNzRDIEVycm9yIGluIG1lc3NhZ2UgaGFuZGxpbmc6IiwgZXJyb3IpOwogICAgICB9CiAgICB9CiAgfSk7CiAgYXdhaXQgbWVzc2FnZVByb21pc2U7CiAgdHJ5IHsKICAgIGNvbnN0IHNlc3Npb24gPSBuZXcgU2Vzc2lvbigpOwogICAgc2Vzc2lvbi5jb25uZWN0VG9NYWluVGhyZWFkKCk7CiAgICBzZXNzaW9uLm9uKCJEZWJ1Z2dlci5yZXN1bWVkIiwgKCkgPT4gewogICAgICBpc1BhdXNlZCA9IGZhbHNlOwogICAgfSk7CiAgICBzZXNzaW9uLm9uKCJEZWJ1Z2dlci5wYXVzZWQiLCBhc3luYyAoZXZlbnQpID0+IHsKICAgICAgaXNQYXVzZWQgPSB0cnVlOwogICAgICBoYW5kbGVQYXVzZWQoc2Vzc2lvbiwgZXZlbnQucGFyYW1zKS50aGVuKAogICAgICAgIGFzeW5jICgpID0+IHsKICAgICAgICAgIGlmIChpc1BhdXNlZCkgewogICAgICAgICAgICBhd2FpdCBzZXNzaW9uLnBvc3QoIkRlYnVnZ2VyLnJlc3VtZSIpOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgYXN5bmMgKF8pID0+IHsKICAgICAgICAgIGlmIChpc1BhdXNlZCkgewogICAgICAgICAgICBhd2FpdCBzZXNzaW9uLnBvc3QoIkRlYnVnZ2VyLnJlc3VtZSIpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgKTsKICAgIH0pOwogICAgYXdhaXQgc2Vzc2lvbi5wb3N0KCJEZWJ1Z2dlci5lbmFibGUiKTsKICAgIGF3YWl0IHNlc3Npb24ucG9zdCgiRGVidWdnZXIuc2V0UGF1c2VPbkV4Y2VwdGlvbnMiLCB7CiAgICAgIHN0YXRlOiB3b3JrZXJEYXRhPy5jYXB0dXJlQWxsRXhjZXB0aW9ucyA/ICJhbGwiIDogInVuY2F1Z2h0IgogICAgfSk7CiAgfSBjYXRjaCAoZXJyb3IpIHsKICAgIGlmIChnbG9iYWwuc2ZEZWJ1ZykgewogICAgICBjb25zb2xlLmVycm9yKCJbV29ya2VyXSBlcnJvciAiLCBlcnJvcik7CiAgICB9CiAgfQogIGlmIChnbG9iYWwuc2ZEZWJ1ZykgewogICAgY29uc29sZS5sb2coIltXb3JrZXJdIERlYnVnZ2VyIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5LiIpOwogIH0KfQphc3luYyBmdW5jdGlvbiB1bnJvbGxPYmplY3Qoc2Vzc2lvbiwgb2JqZWN0SWQsIG5hbWUsIHZhcnMpIHsKICBjb25zdCBwcm9wZXJ0aWVzID0gYXdhaXQgc2Vzc2lvbi5wb3N0KCJSdW50aW1lLmdldFByb3BlcnRpZXMiLCB7CiAgICBvYmplY3RJZCwKICAgIG93blByb3BlcnRpZXM6IHRydWUKICB9KTsKICB2YXJzW25hbWVdID0gcHJvcGVydGllcy5yZXN1bHQubWFwKCh2KSA9PiBbdi5uYW1lLCB2LnZhbHVlPy52YWx1ZV0pLnJlZHVjZSgob2JqLCBba2V5LCB2YWxdKSA9PiB7CiAgICBvYmpba2V5XSA9IHZhbDsKICAgIHJldHVybiBvYmo7CiAgfSwge30pOwp9CmFzeW5jIGZ1bmN0aW9uIHVucm9sbEFycmF5KHNlc3Npb24sIG9iamVjdElkLCBuYW1lLCB2YXJzKSB7CiAgY29uc3QgcHJvcGVydGllcyA9IGF3YWl0IHNlc3Npb24ucG9zdCgiUnVudGltZS5nZXRQcm9wZXJ0aWVzIiwgewogICAgb2JqZWN0SWQsCiAgICBvd25Qcm9wZXJ0aWVzOiB0cnVlCiAgfSk7CiAgdmFyc1tuYW1lXSA9IHByb3BlcnRpZXMucmVzdWx0LmZpbHRlcigodikgPT4gdi5uYW1lICE9PSAibGVuZ3RoIiAmJiAhaXNOYU4ocGFyc2VJbnQodi5uYW1lLCAxMCkpKS5zb3J0KChhLCBiKSA9PiBwYXJzZUludChhLm5hbWUsIDEwKSAtIHBhcnNlSW50KGIubmFtZSwgMTApKS5tYXAoKHYpID0+IHYudmFsdWU/LnZhbHVlKTsKfQpmdW5jdGlvbiB1bnJvbGxPdGhlcihwcm9wLCB2YXJzKSB7CiAgaWYgKCFwcm9wLnZhbHVlKSB7CiAgICByZXR1cm47CiAgfQogIGlmICgidmFsdWUiIGluIHByb3AudmFsdWUpIHsKICAgIGlmIChwcm9wLnZhbHVlLnZhbHVlID09PSB2b2lkIDAgfHwgcHJvcC52YWx1ZS52YWx1ZSA9PT0gbnVsbCkgewogICAgICB2YXJzW3Byb3AubmFtZV0gPSBgPCR7cHJvcC52YWx1ZS52YWx1ZX0+YDsKICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyc1twcm9wLm5hbWVdID0gcHJvcC52YWx1ZS52YWx1ZTsKICAgIHJldHVybjsKICB9CiAgaWYgKCJkZXNjcmlwdGlvbiIgaW4gcHJvcC52YWx1ZSAmJiBwcm9wLnZhbHVlLnR5cGUgIT09ICJmdW5jdGlvbiIpIHsKICAgIHZhcnNbcHJvcC5uYW1lXSA9IGA8JHtwcm9wLnZhbHVlLmRlc2NyaXB0aW9ufT5gOwogICAgcmV0dXJuOwogIH0KICBpZiAocHJvcC52YWx1ZS50eXBlID09PSAidW5kZWZpbmVkIikgewogICAgdmFyc1twcm9wLm5hbWVdID0gIjx1bmRlZmluZWQ+IjsKICAgIHJldHVybjsKICB9Cn0KYXN5bmMgZnVuY3Rpb24gZmV0Y2hMb2NhbFZhcmlhYmxlcyhzZXNzaW9uLCBvYmplY3RJZCkgewogIGlmICghb2JqZWN0SWQpIHJldHVybiB7fTsKICB0cnkgewogICAgY29uc3QgeyByZXN1bHQgfSA9IGF3YWl0IHNlc3Npb24ucG9zdCgiUnVudGltZS5nZXRQcm9wZXJ0aWVzIiwgewogICAgICBvYmplY3RJZCwKICAgICAgb3duUHJvcGVydGllczogdHJ1ZQogICAgfSk7CiAgICBjb25zdCBwcm9wZXJ0aWVzID0gcmVzdWx0OwogICAgaWYgKHByb3BlcnRpZXMpIHsKICAgICAgY29uc3QgdmFyaWFibGVzID0ge307CiAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wZXJ0aWVzKSB7CiAgICAgICAgaWYgKHByb3A/LnZhbHVlPy5vYmplY3RJZCAmJiBwcm9wPy52YWx1ZS5jbGFzc05hbWUgPT09ICJBcnJheSIpIHsKICAgICAgICAgIGNvbnN0IGlkID0gcHJvcC52YWx1ZS5vYmplY3RJZDsKICAgICAgICAgIGF3YWl0IHVucm9sbEFycmF5KHNlc3Npb24sIGlkLCBwcm9wLm5hbWUsIHZhcmlhYmxlcyk7CiAgICAgICAgfSBlbHNlIGlmIChwcm9wPy52YWx1ZT8ub2JqZWN0SWQgJiYgcHJvcD8udmFsdWU/LmNsYXNzTmFtZSA9PT0gIk9iamVjdCIpIHsKICAgICAgICAgIGNvbnN0IGlkID0gcHJvcC52YWx1ZS5vYmplY3RJZDsKICAgICAgICAgIGF3YWl0IHVucm9sbE9iamVjdChzZXNzaW9uLCBpZCwgcHJvcC5uYW1lLCB2YXJpYWJsZXMpOwogICAgICAgIH0gZWxzZSBpZiAocHJvcD8udmFsdWUpIHsKICAgICAgICAgIHVucm9sbE90aGVyKHByb3AsIHZhcmlhYmxlcyk7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiB2YXJpYWJsZXM7CiAgICB9CiAgfSBjYXRjaCAoZXJyKSB7CiAgICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgICAgY29uc29sZS5lcnJvcigiW1dvcmtlcl0gRmFpbGVkIHRvIGZldGNoIGxvY2FsIHZhcmlhYmxlczoiLCBlcnIpOwogICAgfQogICAgcmV0dXJuIHt9OwogIH0KfQpzdGFydERlYnVnZ2VyKCkuY2F0Y2goKGVycm9yKSA9PiB7CiAgaWYgKGdsb2JhbC5zZkRlYnVnKSB7CiAgICBjb25zb2xlLmVycm9yKCJbV29ya2VyXSBGYWlsZWQgdG8gc3RhcnQgZGVidWdnZXI6IiwgZXJyb3IpOwogIH0KfSk7CnNldEludGVydmFsKCgpID0+IHsKfSwgMWU0KTsKZXhwb3J0IHsKICBwcm9jZXNzQ2FsbEZyYW1lcwp9Owo="), { workerData: { captureAllExceptions: !0 } });
289
+ const I = new Gn(new URL("data:application/javascript;base64,Ly8gc3JjL2RlYnVnZ2VyV29ya2VyLnRzCmltcG9ydCB7IFNlc3Npb24gfSBmcm9tICJpbnNwZWN0b3IvcHJvbWlzZXMiOwppbXBvcnQgeyBwYXJlbnRQb3J0LCB3b3JrZXJEYXRhIH0gZnJvbSAid29ya2VyX3RocmVhZHMiOwpnbG9iYWwuc2ZEZWJ1ZyA9IHZvaWQgMDsKZ2xvYmFsLnN0YWNrRGVwdGhMb2NhbHMgPSB2b2lkIDA7Cmdsb2JhbC5ub2RlTW9kdWxlc1RvQ29sbGVjdExvY2FsVmFyaWFibGVzT24gPSB2b2lkIDA7CnZhciBzY3JpcHRTb3VyY2VDYWNoZSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CnZhciBub25BcHBGcmFtZVBhdHRlcm5zID0gWwogIC9ub2RlOmludGVybmFsLywKICAvaW50ZXJuYWxcLy8sCiAgL25vZGVfbW9kdWxlcy8sCiAgL25vZGU6ZnMvCl07CmFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NDYWxsRnJhbWVzKHNlc3Npb24sIGNhbGxGcmFtZXMsIGRlc2NyaXB0aW9uTGluZXMpIHsKICBjb25zdCBsaW1pdGVkQ2FsbEZyYW1lcyA9IGNhbGxGcmFtZXMuc2xpY2UoMCwgZ2xvYmFsLnN0YWNrRGVwdGhMb2NhbHMpOwogIGlmIChsaW1pdGVkQ2FsbEZyYW1lcy5sZW5ndGggPiAwKSB7CiAgICBjb25zdCBmaXJzdFVybCA9IGxpbWl0ZWRDYWxsRnJhbWVzWzBdLnVybCB8fCAiIjsKICAgIGlmIChub25BcHBGcmFtZVBhdHRlcm5zLnNvbWUoKHApID0+IHAudGVzdChmaXJzdFVybCkpKSB7CiAgICAgIHBhcmVudFBvcnQ/LnBvc3RNZXNzYWdlKHsgdHlwZTogImV4Y2VwdGlvbiIsIGZyYW1lczogW10gfSk7CiAgICAgIHJldHVybjsKICAgIH0KICB9CiAgY29uc3QgZnJhbWVzID0gYXdhaXQgUHJvbWlzZS5hbGwoCiAgICBsaW1pdGVkQ2FsbEZyYW1lcy5tYXAoYXN5bmMgKGZyYW1lLCBpbmRleCkgPT4gewogICAgICB0cnkgewogICAgICAgIGNvbnN0IHsgZnVuY3Rpb25OYW1lLCBsb2NhdGlvbiwgdXJsLCBzY29wZUNoYWluIH0gPSBmcmFtZTsKICAgICAgICBjb25zdCBsb2NhbFNjb3BlID0gc2NvcGVDaGFpbi5maW5kKChzY29wZSkgPT4gc2NvcGUudHlwZSA9PT0gImxvY2FsIik7CiAgICAgICAgbGV0IGNvZGUgPSAiPG5vdCBjYXB0dXJlZD4iOwogICAgICAgIGxldCBmaWxlID0gIiI7CiAgICAgICAgaWYgKHVybCAmJiB1cmwudHJpbSgpICE9PSAiIikgewogICAgICAgICAgZmlsZSA9IHVybDsKICAgICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0aW9uTGluZXNbaW5kZXhdKSB7CiAgICAgICAgICBmaWxlID0gZGVzY3JpcHRpb25MaW5lc1tpbmRleF0udHJpbSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBmaWxlID0gIjx1bmtub3duPiI7CiAgICAgICAgfQogICAgICAgIGlmIChsb2NhdGlvbiAmJiBsb2NhdGlvbi5zY3JpcHRJZCkgewogICAgICAgICAgY29uc3Qgc2NyaXB0SWQgPSBsb2NhdGlvbi5zY3JpcHRJZDsKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIGxldCBzY3JpcHRTb3VyY2UgPSBzY3JpcHRTb3VyY2VDYWNoZS5nZXQoc2NyaXB0SWQpOwogICAgICAgICAgICBpZiAoc2NyaXB0U291cmNlID09PSB2b2lkIDApIHsKICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzZXNzaW9uLnBvc3QoCiAgICAgICAgICAgICAgICAiRGVidWdnZXIuZ2V0U2NyaXB0U291cmNlIiwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgc2NyaXB0SWQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICApOwogICAgICAgICAgICAgIHNjcmlwdFNvdXJjZSA9IHJlc3VsdC5zY3JpcHRTb3VyY2U7CiAgICAgICAgICAgICAgc2NyaXB0U291cmNlQ2FjaGUuc2V0KHNjcmlwdElkLCBzY3JpcHRTb3VyY2UpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IHNvdXJjZUxpbmVzID0gc2NyaXB0U291cmNlLnNwbGl0KCJcbiIpOwogICAgICAgICAgICBjb2RlID0gc291cmNlTGluZXNbbG9jYXRpb24ubGluZU51bWJlcl0gfHwgIjxub3QgY2FwdHVyZWQ+IjsKICAgICAgICAgIH0gY2F0Y2ggKGVycikgewogICAgICAgICAgICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJbV29ya2VyXSBGYWlsZWQgdG8gZmV0Y2ggc2NyaXB0IHNvdXJjZToiLCBlcnIpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNvbnN0IGxvY2FscyA9IGxvY2FsU2NvcGU/Lm9iamVjdD8ub2JqZWN0SWQgPyBhd2FpdCBmZXRjaExvY2FsVmFyaWFibGVzKHNlc3Npb24sIGxvY2FsU2NvcGUub2JqZWN0Lm9iamVjdElkKSA6IHt9OwogICAgICAgIHJldHVybiB7CiAgICAgICAgICBmdW5jdGlvbjogZnVuY3Rpb25OYW1lIHx8ICI8YW5vbnltb3VzPiIsCiAgICAgICAgICBsb2NhbHMsCiAgICAgICAgICBmaWxlLAogICAgICAgICAgbGluZTogbG9jYXRpb24/LmxpbmVOdW1iZXIgfHwgMCwKICAgICAgICAgIGNvZGUKICAgICAgICB9OwogICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgIGlmIChnbG9iYWwuc2ZEZWJ1ZykgewogICAgICAgICAgY29uc29sZS5lcnJvcigiW1dvcmtlcl0gRXJyb3IgcHJvY2Vzc2luZyBjYWxsIGZyYW1lOiIsIGVycm9yKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIGZ1bmN0aW9uOiAiPGVycm9yPiIsCiAgICAgICAgICBsb2NhbHM6IHt9LAogICAgICAgICAgZmlsZTogIjx1bmtub3duPiIsCiAgICAgICAgICBsaW5lOiAwLAogICAgICAgICAgY29kZTogIjxub3QgY2FwdHVyZWQ+IgogICAgICAgIH07CiAgICAgIH0KICAgIH0pCiAgKTsKICBwYXJlbnRQb3J0Py5wb3N0TWVzc2FnZSh7IHR5cGU6ICJleGNlcHRpb24iLCBmcmFtZXMgfSk7Cn0KYXN5bmMgZnVuY3Rpb24gaGFuZGxlUGF1c2VkKHNlc3Npb24sIHBhcmFtcykgewogIGNvbnN0IHsgcmVhc29uLCBkYXRhLCBjYWxsRnJhbWVzIH0gPSBwYXJhbXM7CiAgaWYgKHJlYXNvbiAhPT0gImV4Y2VwdGlvbiIgJiYgcmVhc29uICE9PSAicHJvbWlzZVJlamVjdGlvbiIpIHsKICAgIHJldHVybjsKICB9CiAgY29uc3Qgbm9uQXBwUGF0dGVybnMgPSBbCiAgICAvbm9kZTppbnRlcm5hbC8sCiAgICAvaW50ZXJuYWxcLy8sCiAgICAvbm9kZV9tb2R1bGVzLywKICAgIC9ub2RlOmZzLwogIF07CiAgbGV0IGZpcnN0RnJhbWVMaW5lID0gIiI7CiAgbGV0IGRlc2NyaXB0aW9uTGluZXMgPSBbXTsKICBpZiAoZGF0YSAmJiB0eXBlb2YgZGF0YS5kZXNjcmlwdGlvbiA9PT0gInN0cmluZyIpIHsKICAgIGRlc2NyaXB0aW9uTGluZXMgPSBkYXRhLmRlc2NyaXB0aW9uLnNwbGl0KCJcbiIpLmZpbHRlcigobGluZSkgPT4gbGluZS50cmltKCkuc3RhcnRzV2l0aCgiYXQgIikpOwogICAgZmlyc3RGcmFtZUxpbmUgPSBkZXNjcmlwdGlvbkxpbmVzWzBdIHx8ICIiOwogICAgaWYgKCFmaXJzdEZyYW1lTGluZSkgewogICAgICByZXR1cm47CiAgICB9CiAgICBjb25zdCBlcnJvckZyb21Ob25BcHAgPSBub25BcHBQYXR0ZXJucy5zb21lKAogICAgICAocGF0dGVybikgPT4gcGF0dGVybi50ZXN0KGZpcnN0RnJhbWVMaW5lLnRyaW0oKSkKICAgICk7CiAgICBjb25zdCBub2RlTW9kdWxlc0xpc3QgPSBBcnJheS5pc0FycmF5KAogICAgICBnbG9iYWwubm9kZU1vZHVsZXNUb0NvbGxlY3RMb2NhbFZhcmlhYmxlc09uCiAgICApID8gZ2xvYmFsLm5vZGVNb2R1bGVzVG9Db2xsZWN0TG9jYWxWYXJpYWJsZXNPbiA6IFtdOwogICAgaWYgKGVycm9yRnJvbU5vbkFwcCkgewogICAgICBpZiAobm9kZU1vZHVsZXNMaXN0LmluY2x1ZGVzKCJfX2FsbF9fIikpIHsKICAgICAgICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgICAgICAgIGNvbnNvbGUubG9nKAogICAgICAgICAgICAiW1dvcmtlcl0gRXJyb3IgaXMgZnJvbSBub24tYXBwIHNvdXJjZSwgYnV0IGNhcHR1cmluZyBkdWUgdG8gX19hbGxfXyBydWxlLiIKICAgICAgICAgICk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKG5vZGVNb2R1bGVzTGlzdC5sZW5ndGggPiAwKSB7CiAgICAgICAgY29uc3QgaXNGcm9tQWxsb3dlZE5vZGVNb2R1bGUgPSBub2RlTW9kdWxlc0xpc3Quc29tZSgKICAgICAgICAgIChtb2R1bGVOYW1lKSA9PiBmaXJzdEZyYW1lTGluZS5pbmNsdWRlcyhgJHttb2R1bGVOYW1lfWApCiAgICAgICAgKTsKICAgICAgICBpZiAoIWlzRnJvbUFsbG93ZWROb2RlTW9kdWxlKSB7CiAgICAgICAgICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgICAgICAgICAgY29uc29sZS5sb2coCiAgICAgICAgICAgICAgIltXb3JrZXJdIEVycm9yIGFwcGVhcnMgdG8gYmUgdHJpZ2dlcmVkIGZyb20gbm9uLWFwcGxpY2F0aW9uIHNvdXJjZXM7IGlnbm9yaW5nLiIKICAgICAgICAgICAgKTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKGdsb2JhbC5zZkRlYnVnKSB7CiAgICAgICAgICBjb25zb2xlLmxvZygKICAgICAgICAgICAgIltXb3JrZXJdIEVycm9yIGFwcGVhcnMgdG8gYmUgdHJpZ2dlcmVkIGZyb20gbm9uLWFwcGxpY2F0aW9uIHNvdXJjZXM7IGlnbm9yaW5nLiIKICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgICAgfQogICAgfQogICAgYXdhaXQgcHJvY2Vzc0NhbGxGcmFtZXMoc2Vzc2lvbiwgY2FsbEZyYW1lcywgZGVzY3JpcHRpb25MaW5lcyk7CiAgfSBlbHNlIHsKICAgIHJldHVybjsKICB9Cn0KYXN5bmMgZnVuY3Rpb24gc3RhcnREZWJ1Z2dlcigpIHsKICBwYXJlbnRQb3J0Py5wb3N0TWVzc2FnZSh7IHR5cGU6ICJtZXNzYWdlIiwgcmVhZHlUb0dldFBhcmFtZXRlcnM6IHRydWUgfSk7CiAgbGV0IHJlc29sdmVNZXNzYWdlUHJvbWlzZTsKICBjb25zdCBtZXNzYWdlUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICByZXNvbHZlTWVzc2FnZVByb21pc2UgPSByZXNvbHZlOwogIH0pOwogIGxldCBpc1BhdXNlZCA9IGZhbHNlOwogIHBhcmVudFBvcnQ/Lm9uKCJtZXNzYWdlIiwgKG1lc3NhZ2UpID0+IHsKICAgIHRyeSB7CiAgICAgIGlmIChtZXNzYWdlPy50eXBlID09PSAicHJvY2Vzc0V4Y2VwdGlvbiIpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaWYgKG1lc3NhZ2U/LnNmRGVidWcgIT09IHZvaWQgMCAmJiBtZXNzYWdlPy5zdGFja0RlcHRoTG9jYWxzICE9PSB2b2lkIDApIHsKICAgICAgICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgICAgICAgIGNvbnNvbGUubG9nKCJVcGRhdGluZyBnbG9iYWwgZGVidWcgdmFyaWFibGVzLi4uIik7CiAgICAgICAgfQogICAgICAgIGdsb2JhbC5zZkRlYnVnID0gbWVzc2FnZS5zZkRlYnVnOwogICAgICAgIGdsb2JhbC5zdGFja0RlcHRoTG9jYWxzID0gbWVzc2FnZS5zdGFja0RlcHRoTG9jYWxzOwogICAgICAgIGdsb2JhbC5ub2RlTW9kdWxlc1RvQ29sbGVjdExvY2FsVmFyaWFibGVzT24gPSBtZXNzYWdlLm5vZGVNb2R1bGVzVG9Db2xsZWN0TG9jYWxWYXJpYWJsZXNPbjsKICAgICAgICByZXNvbHZlTWVzc2FnZVByb21pc2UoKTsKICAgICAgfQogICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgaWYgKGdsb2JhbC5zZkRlYnVnKSB7CiAgICAgICAgY29uc29sZS5lcnJvcigiXHUyNzRDIEVycm9yIGluIG1lc3NhZ2UgaGFuZGxpbmc6IiwgZXJyb3IpOwogICAgICB9CiAgICB9CiAgfSk7CiAgYXdhaXQgbWVzc2FnZVByb21pc2U7CiAgdHJ5IHsKICAgIGNvbnN0IHNlc3Npb24gPSBuZXcgU2Vzc2lvbigpOwogICAgc2Vzc2lvbi5jb25uZWN0VG9NYWluVGhyZWFkKCk7CiAgICBzZXNzaW9uLm9uKCJEZWJ1Z2dlci5yZXN1bWVkIiwgKCkgPT4gewogICAgICBpc1BhdXNlZCA9IGZhbHNlOwogICAgfSk7CiAgICBzZXNzaW9uLm9uKCJEZWJ1Z2dlci5wYXVzZWQiLCBhc3luYyAoZXZlbnQpID0+IHsKICAgICAgaXNQYXVzZWQgPSB0cnVlOwogICAgICBoYW5kbGVQYXVzZWQoc2Vzc2lvbiwgZXZlbnQucGFyYW1zKS50aGVuKAogICAgICAgIGFzeW5jICgpID0+IHsKICAgICAgICAgIGlmIChpc1BhdXNlZCkgewogICAgICAgICAgICBhd2FpdCBzZXNzaW9uLnBvc3QoIkRlYnVnZ2VyLnJlc3VtZSIpOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgYXN5bmMgKF8pID0+IHsKICAgICAgICAgIGlmIChpc1BhdXNlZCkgewogICAgICAgICAgICBhd2FpdCBzZXNzaW9uLnBvc3QoIkRlYnVnZ2VyLnJlc3VtZSIpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgKTsKICAgIH0pOwogICAgYXdhaXQgc2Vzc2lvbi5wb3N0KCJEZWJ1Z2dlci5lbmFibGUiKTsKICAgIGF3YWl0IHNlc3Npb24ucG9zdCgiRGVidWdnZXIuc2V0UGF1c2VPbkV4Y2VwdGlvbnMiLCB7CiAgICAgIHN0YXRlOiB3b3JrZXJEYXRhPy5jYXB0dXJlQWxsRXhjZXB0aW9ucyA/ICJhbGwiIDogInVuY2F1Z2h0IgogICAgfSk7CiAgfSBjYXRjaCAoZXJyb3IpIHsKICAgIGlmIChnbG9iYWwuc2ZEZWJ1ZykgewogICAgICBjb25zb2xlLmVycm9yKCJbV29ya2VyXSBlcnJvciAiLCBlcnJvcik7CiAgICB9CiAgfQogIGlmIChnbG9iYWwuc2ZEZWJ1ZykgewogICAgY29uc29sZS5sb2coIltXb3JrZXJdIERlYnVnZ2VyIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5LiIpOwogIH0KfQphc3luYyBmdW5jdGlvbiB1bnJvbGxPYmplY3Qoc2Vzc2lvbiwgb2JqZWN0SWQsIG5hbWUsIHZhcnMpIHsKICBjb25zdCBwcm9wZXJ0aWVzID0gYXdhaXQgc2Vzc2lvbi5wb3N0KCJSdW50aW1lLmdldFByb3BlcnRpZXMiLCB7CiAgICBvYmplY3RJZCwKICAgIG93blByb3BlcnRpZXM6IHRydWUKICB9KTsKICB2YXJzW25hbWVdID0gcHJvcGVydGllcy5yZXN1bHQubWFwKCh2KSA9PiBbdi5uYW1lLCB2LnZhbHVlPy52YWx1ZV0pLnJlZHVjZSgob2JqLCBba2V5LCB2YWxdKSA9PiB7CiAgICBvYmpba2V5XSA9IHZhbDsKICAgIHJldHVybiBvYmo7CiAgfSwge30pOwp9CmFzeW5jIGZ1bmN0aW9uIHVucm9sbEFycmF5KHNlc3Npb24sIG9iamVjdElkLCBuYW1lLCB2YXJzKSB7CiAgY29uc3QgcHJvcGVydGllcyA9IGF3YWl0IHNlc3Npb24ucG9zdCgiUnVudGltZS5nZXRQcm9wZXJ0aWVzIiwgewogICAgb2JqZWN0SWQsCiAgICBvd25Qcm9wZXJ0aWVzOiB0cnVlCiAgfSk7CiAgdmFyc1tuYW1lXSA9IHByb3BlcnRpZXMucmVzdWx0LmZpbHRlcigodikgPT4gdi5uYW1lICE9PSAibGVuZ3RoIiAmJiAhaXNOYU4ocGFyc2VJbnQodi5uYW1lLCAxMCkpKS5zb3J0KChhLCBiKSA9PiBwYXJzZUludChhLm5hbWUsIDEwKSAtIHBhcnNlSW50KGIubmFtZSwgMTApKS5tYXAoKHYpID0+IHYudmFsdWU/LnZhbHVlKTsKfQpmdW5jdGlvbiB1bnJvbGxPdGhlcihwcm9wLCB2YXJzKSB7CiAgaWYgKCFwcm9wLnZhbHVlKSB7CiAgICByZXR1cm47CiAgfQogIGlmICgidmFsdWUiIGluIHByb3AudmFsdWUpIHsKICAgIGlmIChwcm9wLnZhbHVlLnZhbHVlID09PSB2b2lkIDAgfHwgcHJvcC52YWx1ZS52YWx1ZSA9PT0gbnVsbCkgewogICAgICB2YXJzW3Byb3AubmFtZV0gPSBgPCR7cHJvcC52YWx1ZS52YWx1ZX0+YDsKICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyc1twcm9wLm5hbWVdID0gcHJvcC52YWx1ZS52YWx1ZTsKICAgIHJldHVybjsKICB9CiAgaWYgKCJkZXNjcmlwdGlvbiIgaW4gcHJvcC52YWx1ZSAmJiBwcm9wLnZhbHVlLnR5cGUgIT09ICJmdW5jdGlvbiIpIHsKICAgIHZhcnNbcHJvcC5uYW1lXSA9IGA8JHtwcm9wLnZhbHVlLmRlc2NyaXB0aW9ufT5gOwogICAgcmV0dXJuOwogIH0KICBpZiAocHJvcC52YWx1ZS50eXBlID09PSAidW5kZWZpbmVkIikgewogICAgdmFyc1twcm9wLm5hbWVdID0gIjx1bmRlZmluZWQ+IjsKICAgIHJldHVybjsKICB9Cn0KYXN5bmMgZnVuY3Rpb24gZmV0Y2hMb2NhbFZhcmlhYmxlcyhzZXNzaW9uLCBvYmplY3RJZCkgewogIGlmICghb2JqZWN0SWQpIHJldHVybiB7fTsKICB0cnkgewogICAgY29uc3QgeyByZXN1bHQgfSA9IGF3YWl0IHNlc3Npb24ucG9zdCgiUnVudGltZS5nZXRQcm9wZXJ0aWVzIiwgewogICAgICBvYmplY3RJZCwKICAgICAgb3duUHJvcGVydGllczogdHJ1ZQogICAgfSk7CiAgICBjb25zdCBwcm9wZXJ0aWVzID0gcmVzdWx0OwogICAgaWYgKHByb3BlcnRpZXMpIHsKICAgICAgY29uc3QgdmFyaWFibGVzID0ge307CiAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wZXJ0aWVzKSB7CiAgICAgICAgaWYgKHByb3A/LnZhbHVlPy5vYmplY3RJZCAmJiBwcm9wPy52YWx1ZS5jbGFzc05hbWUgPT09ICJBcnJheSIpIHsKICAgICAgICAgIGNvbnN0IGlkID0gcHJvcC52YWx1ZS5vYmplY3RJZDsKICAgICAgICAgIGF3YWl0IHVucm9sbEFycmF5KHNlc3Npb24sIGlkLCBwcm9wLm5hbWUsIHZhcmlhYmxlcyk7CiAgICAgICAgfSBlbHNlIGlmIChwcm9wPy52YWx1ZT8ub2JqZWN0SWQgJiYgcHJvcD8udmFsdWU/LmNsYXNzTmFtZSA9PT0gIk9iamVjdCIpIHsKICAgICAgICAgIGNvbnN0IGlkID0gcHJvcC52YWx1ZS5vYmplY3RJZDsKICAgICAgICAgIGF3YWl0IHVucm9sbE9iamVjdChzZXNzaW9uLCBpZCwgcHJvcC5uYW1lLCB2YXJpYWJsZXMpOwogICAgICAgIH0gZWxzZSBpZiAocHJvcD8udmFsdWUpIHsKICAgICAgICAgIHVucm9sbE90aGVyKHByb3AsIHZhcmlhYmxlcyk7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiB2YXJpYWJsZXM7CiAgICB9CiAgfSBjYXRjaCAoZXJyKSB7CiAgICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgICAgY29uc29sZS5lcnJvcigiW1dvcmtlcl0gRmFpbGVkIHRvIGZldGNoIGxvY2FsIHZhcmlhYmxlczoiLCBlcnIpOwogICAgfQogICAgcmV0dXJuIHt9OwogIH0KfQpzdGFydERlYnVnZ2VyKCkuY2F0Y2goKGVycm9yKSA9PiB7CiAgaWYgKGdsb2JhbC5zZkRlYnVnKSB7CiAgICBjb25zb2xlLmVycm9yKCJbV29ya2VyXSBGYWlsZWQgdG8gc3RhcnQgZGVidWdnZXI6IiwgZXJyb3IpOwogIH0KfSk7CnNldEludGVydmFsKCgpID0+IHsKfSwgMWU0KTsKZXhwb3J0IHsKICBwcm9jZXNzQ2FsbEZyYW1lcwp9Owo="), { workerData: { captureAllExceptions: !0 } });
290
290
  let e = null;
291
- const t = /* @__PURE__ */ new WeakMap();
292
- n.on("message", async (g) => {
293
- if (typeof g == "string" && d().sfDebug && y(`[Worker] ${g}`), g.readyToGetParameters && n.postMessage({ sfDebug: d().sfDebug, stackDepthLocals: d().stackDepthLocals, nodeModulesToCollectLocalVariablesOn: d().nodeModulesToCollectLocalVariablesOn }), g.type === "exception") {
294
- const { frames: i } = g, C = e;
291
+ const c = /* @__PURE__ */ new WeakMap();
292
+ I.on("message", async (g) => {
293
+ if (typeof g == "string" && d().sfDebug && y(`[Worker] ${g}`), g.readyToGetParameters && I.postMessage({ sfDebug: d().sfDebug, stackDepthLocals: d().stackDepthLocals, nodeModulesToCollectLocalVariablesOn: d().nodeModulesToCollectLocalVariablesOn }), g.type === "exception") {
294
+ const { frames: l } = g, C = e;
295
295
  if (!C) return;
296
- const s = (function(a) {
297
- return a ? a.split(`
298
- `).slice(1).map((A) => {
299
- const f = /at (.+?) \((.+):(\d+):(\d+)\)/.exec(A) || /at (.+):(\d+):(\d+)/.exec(A);
296
+ const A = (function(m) {
297
+ return m ? m.split(`
298
+ `).slice(1).map((o) => {
299
+ const f = /at (.+?) \((.+):(\d+):(\d+)\)/.exec(o) || /at (.+):(\d+):(\d+)/.exec(o);
300
300
  if (f) {
301
- const [, W, B, r, Z] = f;
302
- return new v({ function: W || "<anonymous>", locals: {}, file: B || "<unknown>", line: parseInt(r, 10) || 0, code: "<not captured>", column: parseInt(Z) || 0 });
301
+ const [, W, B, r, b] = f;
302
+ return new v({ function: W || "<anonymous>", locals: {}, file: B || "<unknown>", line: parseInt(r, 10) || 0, code: "<not captured>", column: parseInt(b) || 0 });
303
303
  }
304
304
  return new v({ function: "<unknown>", locals: {}, file: "<unknown>", line: 0, code: "<not captured>", column: 0 });
305
305
  }) : [];
306
- })(BI(C.stack)), m = (function(a, A) {
306
+ })(Yn(C.stack)), Z = (function(m, o) {
307
307
  const f = [];
308
308
  let W = -1, B = -1;
309
- for (let r = 0; r < a.length; r++) {
310
- const Z = JI(a[r].file);
311
- if (B = r, Z !== "<unknown>") {
312
- for (let u = 0; u < A.length; u++) {
313
- const G = A[u];
314
- if (iI(G, Z) || typeof G.file == "string" && G.file.includes(Z)) {
315
- W = u, S = 0, d().sfDebug && y(`✅ Matched Frame Found: ${Z} @ Debugger Frame ${u}`);
309
+ for (let r = 0; r < m.length; r++) {
310
+ const b = wn(m[r].file);
311
+ if (B = r, b !== "<unknown>") {
312
+ for (let u = 0; u < o.length; u++) {
313
+ const G = o[u];
314
+ if (ln(G, b) || typeof G.file == "string" && G.file.includes(b)) {
315
+ W = u, S = 0, d().sfDebug && y(`✅ Matched Frame Found: ${b} @ Debugger Frame ${u}`);
316
316
  break;
317
317
  }
318
318
  }
319
319
  if (W !== -1) break;
320
320
  }
321
321
  }
322
- if (W === -1) return S === 10 ? (S = 0, a) : (++S, d().sfDebug && y(`"❌ No matching frame found. Checking once again, Attempt N ${S}"`), []);
322
+ if (W === -1) return S === 10 ? (S = 0, m) : (++S, d().sfDebug && y(`"❌ No matching frame found. Checking once again, Attempt N ${S}"`), []);
323
323
  d().sfDebug && y(`🔄 Merging from matched index ${W} onward...`);
324
- for (let r = 0; r < A.length; r++) {
325
- const Z = a[B + r], u = A[W + r];
326
- f.push(new v({ function: u?.function || Z?.function || "<anonymous>", locals: u?.locals || Z?.locals || {}, file: Z?.file || u?.file || "<unknown>", line: u?.line || Z?.line || 0, code: u?.code || Z?.code || "<not captured>" }));
324
+ for (let r = 0; r < o.length; r++) {
325
+ const b = m[B + r], u = o[W + r];
326
+ f.push(new v({ function: u?.function || b?.function || "<anonymous>", locals: u?.locals || b?.locals || {}, file: b?.file || u?.file || "<unknown>", line: u?.line || b?.line || 0, code: u?.code || b?.code || "<not captured>" }));
327
327
  }
328
328
  return f;
329
- })(s, i || []);
330
- if (m.length !== 0) {
329
+ })(A, l || []);
330
+ if (Z.length !== 0) {
331
331
  e = null;
332
- const a = d().stackDepthCodeTraceDepth, A = a === -1 ? m : m.slice(0, a + 1), f = Math.min(A.length, s.length);
333
- await Promise.all(Array.from({ length: f }, async (Z, u) => {
334
- const G = await (async function(sI, AI, rI) {
335
- const h = (function(o) {
336
- o.startsWith("at ") && (o = o.slice(3).trim());
337
- const N = o.match(/^(.*?)(:\d+)+(\.map)?$/);
338
- return N ? N[1] : o;
339
- })(sI);
332
+ const m = d().stackDepthCodeTraceDepth, o = m === -1 ? Z : Z.slice(0, m + 1);
333
+ if (!d().exceptionCaptureLocals) for (const b of o) b.locals = {};
334
+ const f = Math.min(o.length, A.length);
335
+ await Promise.all(Array.from({ length: f }, async (b, u) => {
336
+ const G = await (async function(An, rn, un) {
337
+ const h = (function(s) {
338
+ s.startsWith("at ") && (s = s.slice(3).trim());
339
+ const N = s.match(/^(.*?)(:\d+)+(\.map)?$/);
340
+ return N ? N[1] : s;
341
+ })(An);
340
342
  if (!h || h === "<unknown>") return null;
341
343
  const w = h + ".map";
342
344
  try {
343
- let o = K.get(w);
344
- if (o === void 0) {
345
- const R = await dI.readFile(w, "utf-8");
346
- o = R ? JSON.parse(R) : null, gI(w, o);
345
+ let s = K.get(w);
346
+ if (s === void 0) {
347
+ const R = await mn.readFile(w, "utf-8");
348
+ s = R ? JSON.parse(R) : null, gn(w, s);
347
349
  }
348
- if (!o) return null;
349
- let N = new WI.SourceMapConsumer(o).originalPositionFor({ line: AI, column: rI });
350
+ if (!s) return null;
351
+ let N = new pn.SourceMapConsumer(s).originalPositionFor({ line: rn, column: un });
350
352
  if (h && N.source) {
351
- const R = nI(h), D = o.sources.findIndex((F) => nI(F) === R);
353
+ const R = In(h), D = s.sources.findIndex((F) => In(F) === R);
352
354
  if (D === -1) d().sfDebug && y(`Source file "${h}" not found in the source map.`);
353
355
  else {
354
- const F = o.sourcesContent[D], uI = o.names.join(",");
356
+ const F = s.sourcesContent[D], bn = s.names.join(",");
355
357
  if (F)
356
358
  return { content: F.split(`
357
359
  `).slice(N.line - 1, N.line + 20).join(`
358
- `), name: uI, file: N.source };
360
+ `), name: bn, file: N.source };
359
361
  d().sfDebug && y(`No source content available for file "${h}".`);
360
362
  }
361
363
  }
362
- return { content: o.sourcesContent[0], name: o.names[0], file: o.file };
363
- } catch (o) {
364
- d().sfDebug && y(`Cant read/parse "${w}: Error - ".`, o), gI(w, null);
364
+ return { content: s.sourcesContent[0], name: s.names[0], file: s.file };
365
+ } catch (s) {
366
+ d().sfDebug && y(`Cant read/parse "${w}: Error - ".`, s), gn(w, null);
365
367
  }
366
368
  return null;
367
- })(A[u].file, s[u].line, s[u].column);
368
- G && (G.content != null && (A[u].code = G.content), G.file != null && (A[u].file = G.file));
369
- })), I.setOperationName("CollectExceptions");
369
+ })(o[u].file, A[u].line, A[u].column);
370
+ G && (G.content != null && (o[u].code = G.content), G.file != null && (o[u].file = G.file));
371
+ })), n.setOperationName("CollectExceptions");
370
372
  const W = C.message ? `${C.name}: ${C.message}` : C.name;
371
373
  d().sfDebug && y("error message is : ", W);
372
- const B = Q.getInstance(), r = t.get(C);
374
+ const B = Q.getInstance(), r = c.get(C);
373
375
  r ? (B.setTraceIdFor(r, r), B.runWithSession(r, () => {
374
- B.setTraceId(r), I.doSend(W, A);
375
- })) : I.doSend(W, A);
376
+ B.setTraceId(r), n.doSend(W, o);
377
+ })) : n.doSend(W, o);
376
378
  }
377
379
  }
378
- }), n.on("error", (g) => {
379
- II("[Worker Error]", g);
380
- }), n.on("exit", (g) => {
381
- II(`[Worker] Exited with code ${g}`);
382
- }), n.unref();
383
- const c = Error;
384
- function l(...g) {
385
- const i = new.target ?? l, C = Reflect.construct(c, g, i);
380
+ }), I.on("error", (g) => {
381
+ nn("[Worker Error]", g);
382
+ }), I.on("exit", (g) => {
383
+ nn(`[Worker] Exited with code ${g}`);
384
+ }), I.unref();
385
+ const t = Error;
386
+ function i(...g) {
387
+ const l = new.target ?? i, C = Reflect.construct(t, g, l);
386
388
  try {
387
- const s = Q.getInstance().getTraceId();
388
- t.set(C, s);
389
+ const A = Q.getInstance().getTraceId();
390
+ c.set(C, A);
389
391
  } catch {
390
392
  }
391
- return c.captureStackTrace && c.captureStackTrace(C, i), e = C, n.postMessage({ type: "processException", error: C.message }), C;
393
+ return t.captureStackTrace && t.captureStackTrace(C, l), e = C, I.postMessage({ type: "processException", error: C.message }), C;
392
394
  }
393
- l.prototype = c.prototype, Object.setPrototypeOf(l, c), globalThis.Error = l;
395
+ i.prototype = t.prototype, Object.setPrototypeOf(i, t), globalThis.Error = i;
394
396
  }
395
- function nI(I) {
396
- return I = (I = (I = I.replace(/^webpack:\/\/[^\/]+\/\.?\//, "")).replace(/^.*\/pages\//, "pages/")).replace(/\.(js|ts)$/, "");
397
+ function In(n) {
398
+ return n = (n = (n = n.replace(/^webpack:\/\/[^\/]+\/\.?\//, "")).replace(/^.*\/pages\//, "pages/")).replace(/\.(js|ts)$/, "");
397
399
  }
398
- const HI = 50, K = /* @__PURE__ */ new Map();
399
- function gI(I, n) {
400
- if (K.size >= HI) {
400
+ const Jn = 50, K = /* @__PURE__ */ new Map();
401
+ function gn(n, I) {
402
+ if (K.size >= Jn) {
401
403
  const e = K.keys().next().value;
402
404
  K.delete(e);
403
405
  }
404
- K.set(I, n);
406
+ K.set(n, I);
405
407
  }
406
- function JI(I) {
407
- return I?.split("/").pop() || "<unknown>";
408
+ function wn(n) {
409
+ return n?.split("/").pop() || "<unknown>";
408
410
  }
409
- function iI(I, n) {
410
- if (!I || typeof I != "object") return !1;
411
- for (const e of Object.values(I))
412
- if (typeof e == "string" && e.includes(n) || typeof e == "object" && iI(e, n)) return !0;
411
+ function ln(n, I) {
412
+ if (!n || typeof n != "object") return !1;
413
+ for (const e of Object.values(n))
414
+ if (typeof e == "string" && e.includes(I) || typeof e == "object" && ln(e, I)) return !0;
413
415
  return !1;
414
416
  }
415
- let V, J, L, tI = !1;
416
- function lI(I) {
417
- if (!I) return;
418
- const n = I.toLowerCase().trim();
419
- return !!["1", "true", "yes", "on"].includes(n) || !["0", "false", "no", "off"].includes(n) && void 0;
417
+ let V, J, L, cn = !1;
418
+ function on(n) {
419
+ if (!n) return;
420
+ const I = n.toLowerCase().trim();
421
+ return !!["1", "true", "yes", "on"].includes(I) || !["0", "false", "no", "off"].includes(I) && void 0;
420
422
  }
421
- function oI() {
423
+ function sn() {
422
424
  if (V !== void 0) return V;
423
- const I = process.env || {}, n = lI(I.SF_IS_LOCAL);
424
- if (n !== void 0) return V = n;
425
- const e = (I.SF_ENV || I.NODE_ENV || "").toLowerCase();
425
+ const n = process.env || {}, I = on(n.SF_IS_LOCAL);
426
+ if (I !== void 0) return V = I;
427
+ const e = (n.SF_ENV || n.NODE_ENV || "").toLowerCase();
426
428
  if (["local", "dev", "development"].includes(e)) return V = !0;
427
- if (["KUBERNETES_SERVICE_HOST", "AWS_EXECUTION_ENV", "ECS_CONTAINER_METADATA_URI", "ECS_CONTAINER_METADATA_URI_V4", "GAE_ENV", "K_SERVICE", "GOOGLE_CLOUD_PROJECT", "WEBSITE_INSTANCE_ID", "VERCEL", "NETLIFY", "DYNO", "RENDER", "FLY_APP_NAME", "RAILWAY_STATIC_URL", "CF_PAGES", "CLOUDFLARE"].some((c) => !!I[c])) return V = !1;
428
- const t = (fI.hostname?.() || I.HOSTNAME || "").toLowerCase();
429
- return V = !(t !== "localhost" && !t.endsWith(".local") && !t.includes("local"));
429
+ if (["KUBERNETES_SERVICE_HOST", "AWS_EXECUTION_ENV", "ECS_CONTAINER_METADATA_URI", "ECS_CONTAINER_METADATA_URI_V4", "GAE_ENV", "K_SERVICE", "GOOGLE_CLOUD_PROJECT", "WEBSITE_INSTANCE_ID", "VERCEL", "NETLIFY", "DYNO", "RENDER", "FLY_APP_NAME", "RAILWAY_STATIC_URL", "CF_PAGES", "CLOUDFLARE"].some((t) => !!n[t])) return V = !1;
430
+ const c = (Wn.hostname?.() || n.HOSTNAME || "").toLowerCase();
431
+ return V = !(c !== "localhost" && !c.endsWith(".local") && !c.includes("local"));
430
432
  }
431
- function x(I, n, e) {
432
- return new Promise((t) => {
433
+ function x(n, I, e) {
434
+ return new Promise((c) => {
433
435
  try {
434
- const c = new URL(I), l = (c.protocol === "https:" ? ZI : mI).request({ method: "GET", hostname: c.hostname, port: c.port || (c.protocol === "https:" ? 443 : 80), path: c.pathname + (c.search || ""), headers: n }, (g) => {
435
- g.resume(), g.statusCode && g.statusCode >= 200 && g.statusCode < 400 ? t("ok") : t("http_error");
436
+ const t = new URL(n), i = (t.protocol === "https:" ? fn : Zn).request({ method: "GET", hostname: t.hostname, port: t.port || (t.protocol === "https:" ? 443 : 80), path: t.pathname + (t.search || ""), headers: I }, (g) => {
437
+ g.resume(), g.statusCode && g.statusCode >= 200 && g.statusCode < 400 ? c("ok") : c("http_error");
436
438
  });
437
- l.on("error", () => t("error")), l.setTimeout(e, () => {
438
- l.destroy(), t("timeout");
439
- }), l.end();
439
+ i.on("error", () => c("error")), i.setTimeout(e, () => {
440
+ i.destroy(), c("timeout");
441
+ }), i.end();
440
442
  } catch {
441
- t("error");
443
+ c("error");
442
444
  }
443
445
  });
444
446
  }
445
- function wI() {
447
+ function Xn() {
446
448
  if (J !== void 0) return J;
447
- const I = process.env.SF_FUNCSPAN_RUNTIME_ENABLED;
448
- if (I === "true" || I === "1") return J = !0, !0;
449
- if (I === "false" || I === "0") return J = !1, !1;
449
+ const n = process.env.SF_FUNCSPAN_RUNTIME_ENABLED;
450
+ if (n === "true" || n === "1") return J = !0, !0;
451
+ if (n === "false" || n === "0") return J = !1, !1;
450
452
  try {
451
- const { isRuntimeModeConfigured: n } = require("../funcSpanConfigLoader");
452
- if (n && n()) return J = !0, !0;
453
+ const { isRuntimeModeConfigured: I } = require("../funcSpanConfigLoader");
454
+ if (I && I()) return J = !0, !0;
453
455
  } catch {
454
456
  }
455
457
  return J = !1, !1;
456
458
  }
457
- function XI() {
458
- return L !== void 0 || (L = !oI()), L;
459
+ function Sn() {
460
+ return L !== void 0 || (L = !sn()), L;
459
461
  }
460
- function OI() {
461
- return !!wI() && (!XI() || (console.warn("[FuncSpan Runtime] DISABLED in production environment"), !1));
462
+ function Dn() {
463
+ return !!Xn() && (!Sn() || (console.warn("[FuncSpan Runtime] DISABLED in production environment"), !1));
462
464
  }
463
465
  export {
464
466
  T as C,
465
- TI as a,
466
- II as b,
467
- BI as c,
468
- jI as d,
469
- EI as e,
470
- XI as f,
471
- wI as g,
467
+ jn as a,
468
+ nn as b,
469
+ Yn as c,
470
+ En as d,
471
+ On as e,
472
+ Sn as f,
473
+ Xn as g,
472
474
  y as i,
473
- OI as s
475
+ Dn as s
474
476
  };