@getopenpay/openpay-js-react 0.3.13-alpha.bdbda7a → 0.3.14-alpha.7c935e9

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.
Files changed (29) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/{Resource-mNYeZF9D-DyAeU6nH.js → Resource-Cop9xaM6-Dv_SxPOu.js} +3 -3
  3. package/dist/SimpleSpanProcessor-9kV5QZN6-BuFFAds_.js +957 -0
  4. package/dist/detect-resources-Co7y4Bj7-Dksp-HtG.js +854 -0
  5. package/dist/diag-api-BcnJqpNN-GNwTWFoK.js +6 -0
  6. package/dist/{index-C6VsGa_X-DnI1zZA6.js → index-3FlcnZo4-yMXmTJu5.js} +2 -2
  7. package/dist/{index-BufYIG0q-CphSOJz1.js → index-4CupDAc7-DKrvhgQB.js} +113 -113
  8. package/dist/index-7gPFY7FO.js +8062 -0
  9. package/dist/{index-Bzsy-QHz-BSCoOj2p.js → index-BaVoXoSd-_qIivw2-.js} +24 -24
  10. package/dist/{index-SDtMvSt9-B3WXwcGr.js → index-C6oDNsIa-qsH89wY8.js} +24 -24
  11. package/dist/{index-73Zci8QM-BH36xwJQ.js → index-Cg-JZyFn-Bhh_kgPU.js} +2 -2
  12. package/dist/index-D1fimpBa-DLcjrL94.js +830 -0
  13. package/dist/{index-hlw2CLDg-CvpGBRWb.js → index-DHcUNV2Z-Bp-w3FrE.js} +12 -12
  14. package/dist/{index-rsJVRXFy-BlJGDRfL.js → index-DKsinhH7-DkgYGujo.js} +5 -5
  15. package/dist/{index-C1QTH_fF-7edQgvhb.js → index-r9zjB7aF-CyRKvbA-.js} +8 -8
  16. package/dist/index.d.ts +27 -10
  17. package/dist/index.js +9 -8
  18. package/dist/{metrics-api-Boddpk8P-5Yd9BTNs.js → metrics-api-BVvZxaKB-CF_NUVDr.js} +9 -9
  19. package/dist/{sdk-info-Bhg46kME-KwjisWfA.js → sdk-info-B9LrSOP2-Dy6PPSM1.js} +2 -2
  20. package/dist/url-t7OCg4fr-DkzPIRtq.js +797 -0
  21. package/dist/{utils-BJLZP7xv-CsKnCWfD.js → utils-BaM96hbi-CTqsgfxk.js} +4 -4
  22. package/dist/{utils-Cp6QoutJ-BvvfzCHa.js → utils-DjkZObMB-TLhaKhkW.js} +2 -2
  23. package/package.json +1 -1
  24. package/dist/SimpleSpanProcessor-CLadx1Ry-DFbqCyTE.js +0 -957
  25. package/dist/detect-resources-BVj-Nv9j-D-K1Nx4L.js +0 -854
  26. package/dist/diag-api-DlzYu3FX-C5uOnDAk.js +0 -6
  27. package/dist/index-Cgr3OZtX.js +0 -7646
  28. package/dist/index-Y8rIshZP-BFN_roTi.js +0 -830
  29. package/dist/url-DKZ7gj4s-DwKrihmA.js +0 -797
@@ -1,830 +0,0 @@
1
- import { y as P, f as yt, dG as dt, dI as ht, p as mt, dD as gt, dH as vt, dJ as _t, b as St, dK as bt, dC as Tt, dF as Pt, a as Ot, O as At, dE as Et, W as wt, g as Rt } from "./url-DKZ7gj4s-DwKrihmA.js";
2
- import { P as E, I as K, b as w, s as Ct, Y as W, C as $ } from "./index-Cgr3OZtX.js";
3
- import { r as d } from "./diag-api-DlzYu3FX-C5uOnDAk.js";
4
- import { a as jt, A as J } from "./ExportResult-Bo1QOwfo-BBnR58Dk.js";
5
- import { bo as It, bp as Nt, br as xt, bs as Dt, bt as Mt, bq as kt, bm as Ut, bu as $t, O as Lt, bn as Bt, bv as Ft } from "./sdk-info-Bhg46kME-KwjisWfA.js";
6
- import { l as zt } from "./utils-BGeftTvk-CchVJ54o.js";
7
- var p;
8
- (function(t) {
9
- t[t.NOT_RECORD = 0] = "NOT_RECORD", t[t.RECORD = 1] = "RECORD", t[t.RECORD_AND_SAMPLED = 2] = "RECORD_AND_SAMPLED";
10
- })(p || (p = {}));
11
- var N = W("OpenTelemetry SDK Context Key SUPPRESS_TRACING");
12
- function q(t) {
13
- return t.setValue(N, !0);
14
- }
15
- function Ht(t) {
16
- return t.deleteValue(N);
17
- }
18
- function x(t) {
19
- return t.getValue(N) === !0;
20
- }
21
- var Vt = "=", R = ";", S = ",", O = "baggage", Kt = 180, Wt = 4096, Jt = 8192, qt = function(t, r) {
22
- var e = typeof Symbol == "function" && t[Symbol.iterator];
23
- if (!e) return t;
24
- var n = e.call(t), o, a = [], i;
25
- try {
26
- for (; (r === void 0 || r-- > 0) && !(o = n.next()).done; ) a.push(o.value);
27
- } catch (u) {
28
- i = { error: u };
29
- } finally {
30
- try {
31
- o && !o.done && (e = n.return) && e.call(n);
32
- } finally {
33
- if (i) throw i.error;
34
- }
35
- }
36
- return a;
37
- };
38
- function G(t) {
39
- return t.reduce(function(r, e) {
40
- var n = "" + r + (r !== "" ? S : "") + e;
41
- return n.length > Jt ? r : n;
42
- }, "");
43
- }
44
- function Q(t) {
45
- return t.getAllEntries().map(function(r) {
46
- var e = qt(r, 2), n = e[0], o = e[1], a = encodeURIComponent(n) + "=" + encodeURIComponent(o.value);
47
- return o.metadata !== void 0 && (a += R + o.metadata.toString()), a;
48
- });
49
- }
50
- function D(t) {
51
- var r = t.split(R);
52
- if (!(r.length <= 0)) {
53
- var e = r.shift();
54
- if (e) {
55
- var n = e.indexOf(Vt);
56
- if (!(n <= 0)) {
57
- var o = decodeURIComponent(e.substring(0, n).trim()), a = decodeURIComponent(e.substring(n + 1).trim()), i;
58
- return r.length > 0 && (i = yt(r.join(R))), { key: o, value: a, metadata: i };
59
- }
60
- }
61
- }
62
- }
63
- function Gt(t) {
64
- return typeof t != "string" || t.length === 0 ? {} : t.split(S).map(function(r) {
65
- return D(r);
66
- }).filter(function(r) {
67
- return r !== void 0 && r.value.length > 0;
68
- }).reduce(function(r, e) {
69
- return r[e.key] = e.value, r;
70
- }, {});
71
- }
72
- var Qt = (
73
- /** @class */
74
- function() {
75
- function t() {
76
- }
77
- return t.prototype.inject = function(r, e, n) {
78
- var o = P.getBaggage(r);
79
- if (!(!o || x(r))) {
80
- var a = Q(o).filter(function(u) {
81
- return u.length <= Wt;
82
- }).slice(0, Kt), i = G(a);
83
- i.length > 0 && n.set(e, O, i);
84
- }
85
- }, t.prototype.extract = function(r, e, n) {
86
- var o = n.get(e, O), a = Array.isArray(o) ? o.join(S) : o;
87
- if (!a)
88
- return r;
89
- var i = {};
90
- if (a.length === 0)
91
- return r;
92
- var u = a.split(S);
93
- return u.forEach(function(l) {
94
- var c = D(l);
95
- if (c) {
96
- var f = { value: c.value };
97
- c.metadata && (f.metadata = c.metadata), i[c.key] = f;
98
- }
99
- }), Object.entries(i).length === 0 ? r : P.setBaggage(r, P.createBaggage(i));
100
- }, t.prototype.fields = function() {
101
- return [O];
102
- }, t;
103
- }()
104
- ), Xt = (
105
- /** @class */
106
- function() {
107
- function t(r, e) {
108
- this._monotonicClock = e, this._epochMillis = r.now(), this._performanceMillis = e.now();
109
- }
110
- return t.prototype.now = function() {
111
- var r = this._monotonicClock.now() - this._performanceMillis;
112
- return this._epochMillis + r;
113
- }, t;
114
- }()
115
- ), X = function(t) {
116
- var r = typeof Symbol == "function" && Symbol.iterator, e = r && t[r], n = 0;
117
- if (e) return e.call(t);
118
- if (t && typeof t.length == "number") return {
119
- next: function() {
120
- return t && n >= t.length && (t = void 0), { value: t && t[n++], done: !t };
121
- }
122
- };
123
- throw new TypeError(r ? "Object is not iterable." : "Symbol.iterator is not defined.");
124
- }, Yt = function(t, r) {
125
- var e = typeof Symbol == "function" && t[Symbol.iterator];
126
- if (!e) return t;
127
- var n = e.call(t), o, a = [], i;
128
- try {
129
- for (; (r === void 0 || r-- > 0) && !(o = n.next()).done; ) a.push(o.value);
130
- } catch (u) {
131
- i = { error: u };
132
- } finally {
133
- try {
134
- o && !o.done && (e = n.return) && e.call(n);
135
- } finally {
136
- if (i) throw i.error;
137
- }
138
- }
139
- return a;
140
- };
141
- function Zt(t) {
142
- var r, e, n = {};
143
- if (typeof t != "object" || t == null)
144
- return n;
145
- try {
146
- for (var o = X(Object.entries(t)), a = o.next(); !a.done; a = o.next()) {
147
- var i = Yt(a.value, 2), u = i[0], l = i[1];
148
- if (!Y(u)) {
149
- d.warn("Invalid attribute key: " + u);
150
- continue;
151
- }
152
- if (!Z(l)) {
153
- d.warn("Invalid attribute value set for key: " + u);
154
- continue;
155
- }
156
- Array.isArray(l) ? n[u] = l.slice() : n[u] = l;
157
- }
158
- } catch (c) {
159
- r = { error: c };
160
- } finally {
161
- try {
162
- a && !a.done && (e = o.return) && e.call(o);
163
- } finally {
164
- if (r) throw r.error;
165
- }
166
- }
167
- return n;
168
- }
169
- function Y(t) {
170
- return typeof t == "string" && t.length > 0;
171
- }
172
- function Z(t) {
173
- return t == null ? !0 : Array.isArray(t) ? tr(t) : tt(t);
174
- }
175
- function tr(t) {
176
- var r, e, n;
177
- try {
178
- for (var o = X(t), a = o.next(); !a.done; a = o.next()) {
179
- var i = a.value;
180
- if (i != null) {
181
- if (!n) {
182
- if (tt(i)) {
183
- n = typeof i;
184
- continue;
185
- }
186
- return !1;
187
- }
188
- if (typeof i !== n)
189
- return !1;
190
- }
191
- }
192
- } catch (u) {
193
- r = { error: u };
194
- } finally {
195
- try {
196
- a && !a.done && (e = o.return) && e.call(o);
197
- } finally {
198
- if (r) throw r.error;
199
- }
200
- }
201
- return !0;
202
- }
203
- function tt(t) {
204
- switch (typeof t) {
205
- case "number":
206
- case "boolean":
207
- case "string":
208
- return !0;
209
- }
210
- return !1;
211
- }
212
- function rt() {
213
- return function(t) {
214
- d.error(rr(t));
215
- };
216
- }
217
- function rr(t) {
218
- return typeof t == "string" ? t : JSON.stringify(er(t));
219
- }
220
- function er(t) {
221
- for (var r = {}, e = t; e !== null; )
222
- Object.getOwnPropertyNames(e).forEach(function(n) {
223
- if (!r[n]) {
224
- var o = e[n];
225
- o && (r[n] = String(o));
226
- }
227
- }), e = Object.getPrototypeOf(e);
228
- return r;
229
- }
230
- var et = rt();
231
- function nr(t) {
232
- et = t;
233
- }
234
- function nt(t) {
235
- try {
236
- et(t);
237
- } catch {
238
- }
239
- }
240
- var or = function(t, r) {
241
- var e = typeof Symbol == "function" && t[Symbol.iterator];
242
- if (!e) return t;
243
- var n = e.call(t), o, a = [], i;
244
- try {
245
- for (; (r === void 0 || r-- > 0) && !(o = n.next()).done; ) a.push(o.value);
246
- } catch (u) {
247
- i = { error: u };
248
- } finally {
249
- try {
250
- o && !o.done && (e = n.return) && e.call(n);
251
- } finally {
252
- if (i) throw i.error;
253
- }
254
- }
255
- return a;
256
- }, ar = function(t, r, e) {
257
- if (arguments.length === 2) for (var n = 0, o = r.length, a; n < o; n++)
258
- (a || !(n in r)) && (a || (a = Array.prototype.slice.call(r, 0, n)), a[n] = r[n]);
259
- return t.concat(a || Array.prototype.slice.call(r));
260
- };
261
- function ir(t) {
262
- return btoa(String.fromCharCode.apply(String, ar([], or(J(t)), !1)));
263
- }
264
- var ur = 8, lr = 16, cr = (
265
- /** @class */
266
- /* @__PURE__ */ function() {
267
- function t() {
268
- this.generateTraceId = L(lr), this.generateSpanId = L(ur);
269
- }
270
- return t;
271
- }()
272
- ), h = Array(32);
273
- function L(t) {
274
- return function() {
275
- for (var r = 0; r < t * 2; r++)
276
- h[r] = Math.floor(Math.random() * 16) + 48, h[r] >= 58 && (h[r] += 39);
277
- return String.fromCharCode.apply(null, h.slice(0, t * 2));
278
- };
279
- }
280
- function sr(t) {
281
- }
282
- var fr = function(t) {
283
- var r = typeof Symbol == "function" && Symbol.iterator, e = r && t[r], n = 0;
284
- if (e) return e.call(t);
285
- if (t && typeof t.length == "number") return {
286
- next: function() {
287
- return t && n >= t.length && (t = void 0), { value: t && t[n++], done: !t };
288
- }
289
- };
290
- throw new TypeError(r ? "Object is not iterable." : "Symbol.iterator is not defined.");
291
- }, pr = (
292
- /** @class */
293
- function() {
294
- function t(r) {
295
- r === void 0 && (r = {});
296
- var e;
297
- this._propagators = (e = r.propagators) !== null && e !== void 0 ? e : [], this._fields = Array.from(new Set(this._propagators.map(function(n) {
298
- return typeof n.fields == "function" ? n.fields() : [];
299
- }).reduce(function(n, o) {
300
- return n.concat(o);
301
- }, [])));
302
- }
303
- return t.prototype.inject = function(r, e, n) {
304
- var o, a;
305
- try {
306
- for (var i = fr(this._propagators), u = i.next(); !u.done; u = i.next()) {
307
- var l = u.value;
308
- try {
309
- l.inject(r, e, n);
310
- } catch (c) {
311
- d.warn("Failed to inject with " + l.constructor.name + ". Err: " + c.message);
312
- }
313
- }
314
- } catch (c) {
315
- o = { error: c };
316
- } finally {
317
- try {
318
- u && !u.done && (a = i.return) && a.call(i);
319
- } finally {
320
- if (o) throw o.error;
321
- }
322
- }
323
- }, t.prototype.extract = function(r, e, n) {
324
- return this._propagators.reduce(function(o, a) {
325
- try {
326
- return a.extract(o, e, n);
327
- } catch (i) {
328
- d.warn("Failed to extract with " + a.constructor.name + ". Err: " + i.message);
329
- }
330
- return o;
331
- }, r);
332
- }, t.prototype.fields = function() {
333
- return this._fields.slice();
334
- }, t;
335
- }()
336
- ), C = "[_0-9a-z-*/]", yr = "[a-z]" + C + "{0,255}", dr = "[a-z0-9]" + C + "{0,240}@[a-z]" + C + "{0,13}", hr = new RegExp("^(?:" + yr + "|" + dr + ")$"), mr = /^[ -~]{0,255}[!-~]$/, gr = /,|=/;
337
- function vr(t) {
338
- return hr.test(t);
339
- }
340
- function _r(t) {
341
- return mr.test(t) && !gr.test(t);
342
- }
343
- var B = 32, Sr = 512, F = ",", z = "=", ot = (
344
- /** @class */
345
- function() {
346
- function t(r) {
347
- this._internalState = /* @__PURE__ */ new Map(), r && this._parse(r);
348
- }
349
- return t.prototype.set = function(r, e) {
350
- var n = this._clone();
351
- return n._internalState.has(r) && n._internalState.delete(r), n._internalState.set(r, e), n;
352
- }, t.prototype.unset = function(r) {
353
- var e = this._clone();
354
- return e._internalState.delete(r), e;
355
- }, t.prototype.get = function(r) {
356
- return this._internalState.get(r);
357
- }, t.prototype.serialize = function() {
358
- var r = this;
359
- return this._keys().reduce(function(e, n) {
360
- return e.push(n + z + r.get(n)), e;
361
- }, []).join(F);
362
- }, t.prototype._parse = function(r) {
363
- r.length > Sr || (this._internalState = r.split(F).reverse().reduce(function(e, n) {
364
- var o = n.trim(), a = o.indexOf(z);
365
- if (a !== -1) {
366
- var i = o.slice(0, a), u = o.slice(a + 1, n.length);
367
- vr(i) && _r(u) && e.set(i, u);
368
- }
369
- return e;
370
- }, /* @__PURE__ */ new Map()), this._internalState.size > B && (this._internalState = new Map(Array.from(this._internalState.entries()).reverse().slice(0, B))));
371
- }, t.prototype._keys = function() {
372
- return Array.from(this._internalState.keys()).reverse();
373
- }, t.prototype._clone = function() {
374
- var r = new t();
375
- return r._internalState = new Map(this._internalState), r;
376
- }, t;
377
- }()
378
- ), m = "traceparent", g = "tracestate", br = "00", Tr = "(?!ff)[\\da-f]{2}", Pr = "(?![0]{32})[\\da-f]{32}", Or = "(?![0]{16})[\\da-f]{16}", Ar = "[\\da-f]{2}", Er = new RegExp("^\\s?(" + Tr + ")-(" + Pr + ")-(" + Or + ")-(" + Ar + ")(-.*)?\\s?$");
379
- function at(t) {
380
- var r = Er.exec(t);
381
- return !r || r[1] === "00" && r[5] ? null : {
382
- traceId: r[2],
383
- spanId: r[3],
384
- traceFlags: parseInt(r[4], 16)
385
- };
386
- }
387
- var wr = (
388
- /** @class */
389
- function() {
390
- function t() {
391
- }
392
- return t.prototype.inject = function(r, e, n) {
393
- var o = E.getSpanContext(r);
394
- if (!(!o || x(r) || !K(o))) {
395
- var a = br + "-" + o.traceId + "-" + o.spanId + "-0" + Number(o.traceFlags || w.NONE).toString(16);
396
- n.set(e, m, a), o.traceState && n.set(e, g, o.traceState.serialize());
397
- }
398
- }, t.prototype.extract = function(r, e, n) {
399
- var o = n.get(e, m);
400
- if (!o)
401
- return r;
402
- var a = Array.isArray(o) ? o[0] : o;
403
- if (typeof a != "string")
404
- return r;
405
- var i = at(a);
406
- if (!i)
407
- return r;
408
- i.isRemote = !0;
409
- var u = n.get(e, g);
410
- if (u) {
411
- var l = Array.isArray(u) ? u.join(",") : u;
412
- i.traceState = new ot(typeof l == "string" ? l : void 0);
413
- }
414
- return E.setSpanContext(r, i);
415
- }, t.prototype.fields = function() {
416
- return [m, g];
417
- }, t;
418
- }()
419
- ), M = W("OpenTelemetry SDK Context Key RPC_METADATA"), j;
420
- (function(t) {
421
- t.HTTP = "http";
422
- })(j || (j = {}));
423
- function Rr(t, r) {
424
- return t.setValue(M, r);
425
- }
426
- function Cr(t) {
427
- return t.deleteValue(M);
428
- }
429
- function jr(t) {
430
- return t.getValue(M);
431
- }
432
- var I = (
433
- /** @class */
434
- function() {
435
- function t() {
436
- }
437
- return t.prototype.shouldSample = function() {
438
- return {
439
- decision: p.NOT_RECORD
440
- };
441
- }, t.prototype.toString = function() {
442
- return "AlwaysOffSampler";
443
- }, t;
444
- }()
445
- ), v = (
446
- /** @class */
447
- function() {
448
- function t() {
449
- }
450
- return t.prototype.shouldSample = function() {
451
- return {
452
- decision: p.RECORD_AND_SAMPLED
453
- };
454
- }, t.prototype.toString = function() {
455
- return "AlwaysOnSampler";
456
- }, t;
457
- }()
458
- ), Ir = (
459
- /** @class */
460
- function() {
461
- function t(r) {
462
- var e, n, o, a;
463
- this._root = r.root, this._root || (nt(new Error("ParentBasedSampler must have a root sampler configured")), this._root = new v()), this._remoteParentSampled = (e = r.remoteParentSampled) !== null && e !== void 0 ? e : new v(), this._remoteParentNotSampled = (n = r.remoteParentNotSampled) !== null && n !== void 0 ? n : new I(), this._localParentSampled = (o = r.localParentSampled) !== null && o !== void 0 ? o : new v(), this._localParentNotSampled = (a = r.localParentNotSampled) !== null && a !== void 0 ? a : new I();
464
- }
465
- return t.prototype.shouldSample = function(r, e, n, o, a, i) {
466
- var u = E.getSpanContext(r);
467
- return !u || !K(u) ? this._root.shouldSample(r, e, n, o, a, i) : u.isRemote ? u.traceFlags & w.SAMPLED ? this._remoteParentSampled.shouldSample(r, e, n, o, a, i) : this._remoteParentNotSampled.shouldSample(r, e, n, o, a, i) : u.traceFlags & w.SAMPLED ? this._localParentSampled.shouldSample(r, e, n, o, a, i) : this._localParentNotSampled.shouldSample(r, e, n, o, a, i);
468
- }, t.prototype.toString = function() {
469
- return "ParentBased{root=" + this._root.toString() + ", remoteParentSampled=" + this._remoteParentSampled.toString() + ", remoteParentNotSampled=" + this._remoteParentNotSampled.toString() + ", localParentSampled=" + this._localParentSampled.toString() + ", localParentNotSampled=" + this._localParentNotSampled.toString() + "}";
470
- }, t;
471
- }()
472
- ), Nr = (
473
- /** @class */
474
- function() {
475
- function t(r) {
476
- r === void 0 && (r = 0), this._ratio = r, this._ratio = this._normalize(r), this._upperBound = Math.floor(this._ratio * 4294967295);
477
- }
478
- return t.prototype.shouldSample = function(r, e) {
479
- return {
480
- decision: Ct(e) && this._accumulate(e) < this._upperBound ? p.RECORD_AND_SAMPLED : p.NOT_RECORD
481
- };
482
- }, t.prototype.toString = function() {
483
- return "TraceIdRatioBased{" + this._ratio + "}";
484
- }, t.prototype._normalize = function(r) {
485
- return typeof r != "number" || isNaN(r) ? 0 : r >= 1 ? 1 : r <= 0 ? 0 : r;
486
- }, t.prototype._accumulate = function(r) {
487
- for (var e = 0, n = 0; n < r.length / 8; n++) {
488
- var o = n * 8, a = parseInt(r.slice(o, o + 8), 16);
489
- e = (e ^ a) >>> 0;
490
- }
491
- return e;
492
- }, t;
493
- }()
494
- ), xr = "[object Object]", Dr = "[object Null]", Mr = "[object Undefined]", kr = Function.prototype, it = kr.toString, Ur = it.call(Object), $r = Lr(Object.getPrototypeOf, Object), ut = Object.prototype, lt = ut.hasOwnProperty, s = Symbol ? Symbol.toStringTag : void 0, ct = ut.toString;
495
- function Lr(t, r) {
496
- return function(e) {
497
- return t(r(e));
498
- };
499
- }
500
- function H(t) {
501
- if (!Br(t) || Fr(t) !== xr)
502
- return !1;
503
- var r = $r(t);
504
- if (r === null)
505
- return !0;
506
- var e = lt.call(r, "constructor") && r.constructor;
507
- return typeof e == "function" && e instanceof e && it.call(e) === Ur;
508
- }
509
- function Br(t) {
510
- return t != null && typeof t == "object";
511
- }
512
- function Fr(t) {
513
- return t == null ? t === void 0 ? Mr : Dr : s && s in Object(t) ? zr(t) : Hr(t);
514
- }
515
- function zr(t) {
516
- var r = lt.call(t, s), e = t[s], n = !1;
517
- try {
518
- t[s] = void 0, n = !0;
519
- } catch {
520
- }
521
- var o = ct.call(t);
522
- return n && (r ? t[s] = e : delete t[s]), o;
523
- }
524
- function Hr(t) {
525
- return ct.call(t);
526
- }
527
- var Vr = 20;
528
- function Kr() {
529
- for (var t = [], r = 0; r < arguments.length; r++)
530
- t[r] = arguments[r];
531
- for (var e = t.shift(), n = /* @__PURE__ */ new WeakMap(); t.length > 0; )
532
- e = st(e, t.shift(), 0, n);
533
- return e;
534
- }
535
- function A(t) {
536
- return b(t) ? t.slice() : t;
537
- }
538
- function st(t, r, e, n) {
539
- e === void 0 && (e = 0);
540
- var o;
541
- if (!(e > Vr)) {
542
- if (e++, _(t) || _(r) || ft(r))
543
- o = A(r);
544
- else if (b(t)) {
545
- if (o = t.slice(), b(r))
546
- for (var a = 0, i = r.length; a < i; a++)
547
- o.push(A(r[a]));
548
- else if (y(r))
549
- for (var u = Object.keys(r), a = 0, i = u.length; a < i; a++) {
550
- var l = u[a];
551
- o[l] = A(r[l]);
552
- }
553
- } else if (y(t))
554
- if (y(r)) {
555
- if (!Wr(t, r))
556
- return r;
557
- o = Object.assign({}, t);
558
- for (var u = Object.keys(r), a = 0, i = u.length; a < i; a++) {
559
- var l = u[a], c = r[l];
560
- if (_(c))
561
- typeof c > "u" ? delete o[l] : o[l] = c;
562
- else {
563
- var f = o[l], T = c;
564
- if (V(t, l, n) || V(r, l, n))
565
- delete o[l];
566
- else {
567
- if (y(f) && y(T)) {
568
- var k = n.get(f) || [], U = n.get(T) || [];
569
- k.push({ obj: t, key: l }), U.push({ obj: r, key: l }), n.set(f, k), n.set(T, U);
570
- }
571
- o[l] = st(o[l], c, e, n);
572
- }
573
- }
574
- }
575
- } else
576
- o = r;
577
- return o;
578
- }
579
- }
580
- function V(t, r, e) {
581
- for (var n = e.get(t[r]) || [], o = 0, a = n.length; o < a; o++) {
582
- var i = n[o];
583
- if (i.key === r && i.obj === t)
584
- return !0;
585
- }
586
- return !1;
587
- }
588
- function b(t) {
589
- return Array.isArray(t);
590
- }
591
- function ft(t) {
592
- return typeof t == "function";
593
- }
594
- function y(t) {
595
- return !_(t) && !b(t) && !ft(t) && typeof t == "object";
596
- }
597
- function _(t) {
598
- return typeof t == "string" || typeof t == "number" || typeof t == "boolean" || typeof t > "u" || t instanceof Date || t instanceof RegExp || t === null;
599
- }
600
- function Wr(t, r) {
601
- return !(!H(t) || !H(r));
602
- }
603
- var Jr = /* @__PURE__ */ function() {
604
- var t = function(r, e) {
605
- return t = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(n, o) {
606
- n.__proto__ = o;
607
- } || function(n, o) {
608
- for (var a in o) Object.prototype.hasOwnProperty.call(o, a) && (n[a] = o[a]);
609
- }, t(r, e);
610
- };
611
- return function(r, e) {
612
- if (typeof e != "function" && e !== null)
613
- throw new TypeError("Class extends value " + String(e) + " is not a constructor or null");
614
- t(r, e);
615
- function n() {
616
- this.constructor = r;
617
- }
618
- r.prototype = e === null ? Object.create(e) : (n.prototype = e.prototype, new n());
619
- };
620
- }(), pt = (
621
- /** @class */
622
- function(t) {
623
- Jr(r, t);
624
- function r(e) {
625
- var n = t.call(this, e) || this;
626
- return Object.setPrototypeOf(n, r.prototype), n;
627
- }
628
- return r;
629
- }(Error)
630
- );
631
- function qr(t, r) {
632
- var e, n = new Promise(function(o, a) {
633
- e = setTimeout(function() {
634
- a(new pt("Operation timed out."));
635
- }, r);
636
- });
637
- return Promise.race([t, n]).then(function(o) {
638
- return clearTimeout(e), o;
639
- }, function(o) {
640
- throw clearTimeout(e), o;
641
- });
642
- }
643
- function Gr(t) {
644
- return typeof t == "function" && typeof t.__original == "function" && typeof t.__unwrap == "function" && t.__wrapped === !0;
645
- }
646
- var Qr = (
647
- /** @class */
648
- function() {
649
- function t() {
650
- var r = this;
651
- this._promise = new Promise(function(e, n) {
652
- r._resolve = e, r._reject = n;
653
- });
654
- }
655
- return Object.defineProperty(t.prototype, "promise", {
656
- get: function() {
657
- return this._promise;
658
- },
659
- enumerable: !1,
660
- configurable: !0
661
- }), t.prototype.resolve = function(r) {
662
- this._resolve(r);
663
- }, t.prototype.reject = function(r) {
664
- this._reject(r);
665
- }, t;
666
- }()
667
- ), Xr = function(t, r) {
668
- var e = typeof Symbol == "function" && t[Symbol.iterator];
669
- if (!e) return t;
670
- var n = e.call(t), o, a = [], i;
671
- try {
672
- for (; (r === void 0 || r-- > 0) && !(o = n.next()).done; ) a.push(o.value);
673
- } catch (u) {
674
- i = { error: u };
675
- } finally {
676
- try {
677
- o && !o.done && (e = n.return) && e.call(n);
678
- } finally {
679
- if (i) throw i.error;
680
- }
681
- }
682
- return a;
683
- }, Yr = function(t, r, e) {
684
- if (arguments.length === 2) for (var n = 0, o = r.length, a; n < o; n++)
685
- (a || !(n in r)) && (a || (a = Array.prototype.slice.call(r, 0, n)), a[n] = r[n]);
686
- return t.concat(a || Array.prototype.slice.call(r));
687
- }, Zr = (
688
- /** @class */
689
- function() {
690
- function t(r, e) {
691
- this._callback = r, this._that = e, this._isCalled = !1, this._deferred = new Qr();
692
- }
693
- return Object.defineProperty(t.prototype, "isCalled", {
694
- get: function() {
695
- return this._isCalled;
696
- },
697
- enumerable: !1,
698
- configurable: !0
699
- }), Object.defineProperty(t.prototype, "promise", {
700
- get: function() {
701
- return this._deferred.promise;
702
- },
703
- enumerable: !1,
704
- configurable: !0
705
- }), t.prototype.call = function() {
706
- for (var r, e = this, n = [], o = 0; o < arguments.length; o++)
707
- n[o] = arguments[o];
708
- if (!this._isCalled) {
709
- this._isCalled = !0;
710
- try {
711
- Promise.resolve((r = this._callback).call.apply(r, Yr([this._that], Xr(n), !1))).then(function(a) {
712
- return e._deferred.resolve(a);
713
- }, function(a) {
714
- return e._deferred.reject(a);
715
- });
716
- } catch (a) {
717
- this._deferred.reject(a);
718
- }
719
- }
720
- return this._deferred.promise;
721
- }, t;
722
- }()
723
- );
724
- function te(t, r) {
725
- return new Promise(function(e) {
726
- $.with(q($.active()), function() {
727
- t.export(r, function(n) {
728
- e(n);
729
- });
730
- });
731
- });
732
- }
733
- var re = {
734
- getKeyPairs: Q,
735
- serializeKeyPairs: G,
736
- parseKeyPairsIntoRecord: Gt,
737
- parsePairKeyValue: D
738
- }, ee = {
739
- _export: te
740
- };
741
- const ce = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
742
- __proto__: null,
743
- AlwaysOffSampler: I,
744
- AlwaysOnSampler: v,
745
- AnchoredClock: Xt,
746
- BindOnceFuture: Zr,
747
- CompositePropagator: pr,
748
- DEFAULT_ATTRIBUTE_COUNT_LIMIT: It,
749
- DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT: Nt,
750
- DEFAULT_ENVIRONMENT: xt,
751
- DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT: Dt,
752
- DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT: Mt,
753
- get ExportResultCode() {
754
- return jt;
755
- },
756
- ParentBasedSampler: Ir,
757
- get RPCType() {
758
- return j;
759
- },
760
- RandomIdGenerator: cr,
761
- SDK_INFO: kt,
762
- TRACE_PARENT_HEADER: m,
763
- TRACE_STATE_HEADER: g,
764
- TimeoutError: pt,
765
- TraceIdRatioBasedSampler: Nr,
766
- TraceState: ot,
767
- get TracesSamplerValues() {
768
- return Ut;
769
- },
770
- VERSION: $t,
771
- W3CBaggagePropagator: Qt,
772
- W3CTraceContextPropagator: wr,
773
- _globalThis: zt,
774
- addHrTimes: dt,
775
- baggageUtils: re,
776
- callWithTimeout: qr,
777
- deleteRPCMetadata: Cr,
778
- getEnv: Lt,
779
- getEnvWithoutDefaults: Bt,
780
- getRPCMetadata: jr,
781
- getTimeOrigin: ht,
782
- globalErrorHandler: nt,
783
- hexToBase64: ir,
784
- hexToBinary: J,
785
- hrTime: mt,
786
- hrTimeDuration: gt,
787
- hrTimeToMicroseconds: vt,
788
- hrTimeToMilliseconds: _t,
789
- hrTimeToNanoseconds: St,
790
- hrTimeToTimeStamp: bt,
791
- internal: ee,
792
- isAttributeKey: Y,
793
- isAttributeValue: Z,
794
- isTimeInput: Tt,
795
- isTimeInputHrTime: Pt,
796
- isTracingSuppressed: x,
797
- isUrlIgnored: Ot,
798
- isWrapped: Gr,
799
- loggingErrorHandler: rt,
800
- merge: Kr,
801
- millisToHrTime: At,
802
- otperformance: Et,
803
- parseEnvironment: Ft,
804
- parseTraceParent: at,
805
- sanitizeAttributes: Zt,
806
- setGlobalErrorHandler: nr,
807
- setRPCMetadata: Rr,
808
- suppressTracing: q,
809
- timeInputToHrTime: wt,
810
- unrefTimer: sr,
811
- unsuppressTracing: Ht,
812
- urlMatches: Rt
813
- }, Symbol.toStringTag, { value: "Module" }));
814
- export {
815
- Qt as J,
816
- q as W,
817
- Z,
818
- Zt as a,
819
- pr as b,
820
- wr as c,
821
- Zr as d,
822
- Kr as k,
823
- ce as l,
824
- nt as n,
825
- p,
826
- sr as s,
827
- ee as t,
828
- x as w
829
- };
830
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtWThySXNoWlAtIX57MDBqfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHkgYXMgeV8sIGYgYXMgZl8sIGRHIGFzIEhfLCBkSSBhcyByXywgcCBhcyBwXywgZEQgYXMgd2UsIGRIIGFzIGtlJDEsIGRKIGFzIHhlLCBiIGFzIFFlJDEsIGRLIGFzIFhlJDEsIGRDIGFzIHFlJDEsIGRGIGFzIE5fLCBhIGFzIFplJDEsIE8sIGRFIGFzIFIkMSwgVyBhcyBXZSQxLCBnIGFzIGdfIH0gZnJvbSAnLi91cmwtREtaN2dqNHMtIX57MDA4fX4uanMnO1xuaW1wb3J0IHsgUCBhcyBQZSwgSSBhcyBJciQxLCBiIGFzIFB0LCBzIGFzIHNhLCBZIGFzIFlvLCBDIGFzIENlIH0gZnJvbSAnLi9pbmRleC0hfnswMDR9fi5qcyc7XG5pbXBvcnQgeyByIH0gZnJvbSAnLi9kaWFnLWFwaS1EbHpZdTNGWC0hfnswMDd9fi5qcyc7XG5pbXBvcnQgeyBhLCBBIGFzIEEkMSB9IGZyb20gJy4vRXhwb3J0UmVzdWx0LUJvMVFPd2ZvLSF+ezAwbH1+LmpzJztcbmltcG9ydCB7IGJvIGFzIFAkMSwgYnAgYXMgTSQxLCBiciBhcyBJJDEsIGJzIGFzIGtfLCBidCBhcyBKXywgYnEgYXMgWEEsIGJtIGFzIHIkMSwgYnUgYXMgJF8sIE8gYXMgT1QsIGJuIGFzIExULCBidiBhcyBVJDEgfSBmcm9tICcuL3Nkay1pbmZvLUJoZzQ2a01FLSF+ezAwZ31+LmpzJztcbmltcG9ydCB7IGwgfSBmcm9tICcuL3V0aWxzLUJHZWZ0VHZrLSF+ezAwYX1+LmpzJztcblxudmFyIHA7XG4oZnVuY3Rpb24oZSkge1xuICBlW2UuTk9UX1JFQ09SRCA9IDBdID0gXCJOT1RfUkVDT1JEXCIsIGVbZS5SRUNPUkQgPSAxXSA9IFwiUkVDT1JEXCIsIGVbZS5SRUNPUkRfQU5EX1NBTVBMRUQgPSAyXSA9IFwiUkVDT1JEX0FORF9TQU1QTEVEXCI7XG59KShwIHx8IChwID0ge30pKTtcbnZhciBOID0gWW8oXCJPcGVuVGVsZW1ldHJ5IFNESyBDb250ZXh0IEtleSBTVVBQUkVTU19UUkFDSU5HXCIpO1xuZnVuY3Rpb24gVyhlKSB7XG4gIHJldHVybiBlLnNldFZhbHVlKE4sICEwKTtcbn1cbmZ1bmN0aW9uIEZlKGUpIHtcbiAgcmV0dXJuIGUuZGVsZXRlVmFsdWUoTik7XG59XG5mdW5jdGlvbiB3KGUpIHtcbiAgcmV0dXJuIGUuZ2V0VmFsdWUoTikgPT09ICEwO1xufVxudmFyIHplID0gXCI9XCIsIEMgPSBcIjtcIiwgUyA9IFwiLFwiLCBQID0gXCJiYWdnYWdlXCIsIGtlID0gMTgwLCBZZSA9IDQwOTYsIFhlID0gODE5MiwgV2UgPSBmdW5jdGlvbihlLCByKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiBlO1xuICB2YXIgbiA9IHQuY2FsbChlKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAociA9PT0gdm9pZCAwIHx8IHItLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAodSkge1xuICAgIG8gPSB7IGVycm9yOiB1IH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn07XG5mdW5jdGlvbiAkKGUpIHtcbiAgcmV0dXJuIGUucmVkdWNlKGZ1bmN0aW9uKHIsIHQpIHtcbiAgICB2YXIgbiA9IFwiXCIgKyByICsgKHIgIT09IFwiXCIgPyBTIDogXCJcIikgKyB0O1xuICAgIHJldHVybiBuLmxlbmd0aCA+IFhlID8gciA6IG47XG4gIH0sIFwiXCIpO1xufVxuZnVuY3Rpb24gSihlKSB7XG4gIHJldHVybiBlLmdldEFsbEVudHJpZXMoKS5tYXAoZnVuY3Rpb24ocikge1xuICAgIHZhciB0ID0gV2UociwgMiksIG4gPSB0WzBdLCBhID0gdFsxXSwgaSA9IGVuY29kZVVSSUNvbXBvbmVudChuKSArIFwiPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KGEudmFsdWUpO1xuICAgIHJldHVybiBhLm1ldGFkYXRhICE9PSB2b2lkIDAgJiYgKGkgKz0gQyArIGEubWV0YWRhdGEudG9TdHJpbmcoKSksIGk7XG4gIH0pO1xufVxuZnVuY3Rpb24gRChlKSB7XG4gIHZhciByID0gZS5zcGxpdChDKTtcbiAgaWYgKCEoci5sZW5ndGggPD0gMCkpIHtcbiAgICB2YXIgdCA9IHIuc2hpZnQoKTtcbiAgICBpZiAodCkge1xuICAgICAgdmFyIG4gPSB0LmluZGV4T2YoemUpO1xuICAgICAgaWYgKCEobiA8PSAwKSkge1xuICAgICAgICB2YXIgYSA9IGRlY29kZVVSSUNvbXBvbmVudCh0LnN1YnN0cmluZygwLCBuKS50cmltKCkpLCBpID0gZGVjb2RlVVJJQ29tcG9uZW50KHQuc3Vic3RyaW5nKG4gKyAxKS50cmltKCkpLCBvO1xuICAgICAgICByZXR1cm4gci5sZW5ndGggPiAwICYmIChvID0gZl8oci5qb2luKEMpKSksIHsga2V5OiBhLCB2YWx1ZTogaSwgbWV0YWRhdGE6IG8gfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uICRlKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlICE9IFwic3RyaW5nXCIgfHwgZS5sZW5ndGggPT09IDAgPyB7fSA6IGUuc3BsaXQoUykubWFwKGZ1bmN0aW9uKHIpIHtcbiAgICByZXR1cm4gRChyKTtcbiAgfSkuZmlsdGVyKGZ1bmN0aW9uKHIpIHtcbiAgICByZXR1cm4gciAhPT0gdm9pZCAwICYmIHIudmFsdWUubGVuZ3RoID4gMDtcbiAgfSkucmVkdWNlKGZ1bmN0aW9uKHIsIHQpIHtcbiAgICByZXR1cm4gclt0LmtleV0gPSB0LnZhbHVlLCByO1xuICB9LCB7fSk7XG59XG52YXIgSmUgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uKHIsIHQsIG4pIHtcbiAgICAgIHZhciBhID0geV8uZ2V0QmFnZ2FnZShyKTtcbiAgICAgIGlmICghKCFhIHx8IHcocikpKSB7XG4gICAgICAgIHZhciBpID0gSihhKS5maWx0ZXIoZnVuY3Rpb24odSkge1xuICAgICAgICAgIHJldHVybiB1Lmxlbmd0aCA8PSBZZTtcbiAgICAgICAgfSkuc2xpY2UoMCwga2UpLCBvID0gJChpKTtcbiAgICAgICAgby5sZW5ndGggPiAwICYmIG4uc2V0KHQsIFAsIG8pO1xuICAgICAgfVxuICAgIH0sIGUucHJvdG90eXBlLmV4dHJhY3QgPSBmdW5jdGlvbihyLCB0LCBuKSB7XG4gICAgICB2YXIgYSA9IG4uZ2V0KHQsIFApLCBpID0gQXJyYXkuaXNBcnJheShhKSA/IGEuam9pbihTKSA6IGE7XG4gICAgICBpZiAoIWkpXG4gICAgICAgIHJldHVybiByO1xuICAgICAgdmFyIG8gPSB7fTtcbiAgICAgIGlmIChpLmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICB2YXIgdSA9IGkuc3BsaXQoUyk7XG4gICAgICByZXR1cm4gdS5mb3JFYWNoKGZ1bmN0aW9uKGYpIHtcbiAgICAgICAgdmFyIGwgPSBEKGYpO1xuICAgICAgICBpZiAobCkge1xuICAgICAgICAgIHZhciBjID0geyB2YWx1ZTogbC52YWx1ZSB9O1xuICAgICAgICAgIGwubWV0YWRhdGEgJiYgKGMubWV0YWRhdGEgPSBsLm1ldGFkYXRhKSwgb1tsLmtleV0gPSBjO1xuICAgICAgICB9XG4gICAgICB9KSwgT2JqZWN0LmVudHJpZXMobykubGVuZ3RoID09PSAwID8gciA6IHlfLnNldEJhZ2dhZ2UociwgeV8uY3JlYXRlQmFnZ2FnZShvKSk7XG4gICAgfSwgZS5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gW1BdO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgcWUgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZShyLCB0KSB7XG4gICAgICB0aGlzLl9tb25vdG9uaWNDbG9jayA9IHQsIHRoaXMuX2Vwb2NoTWlsbGlzID0gci5ub3coKSwgdGhpcy5fcGVyZm9ybWFuY2VNaWxsaXMgPSB0Lm5vdygpO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUubm93ID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgciA9IHRoaXMuX21vbm90b25pY0Nsb2NrLm5vdygpIC0gdGhpcy5fcGVyZm9ybWFuY2VNaWxsaXM7XG4gICAgICByZXR1cm4gdGhpcy5fZXBvY2hNaWxsaXMgKyByO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgcSA9IGZ1bmN0aW9uKGUpIHtcbiAgdmFyIHIgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIHQgPSByICYmIGVbcl0sIG4gPSAwO1xuICBpZiAodCkgcmV0dXJuIHQuY2FsbChlKTtcbiAgaWYgKGUgJiYgdHlwZW9mIGUubGVuZ3RoID09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZSAmJiBuID49IGUubGVuZ3RoICYmIChlID0gdm9pZCAwKSwgeyB2YWx1ZTogZSAmJiBlW24rK10sIGRvbmU6ICFlIH07XG4gICAgfVxuICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKHIgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59LCBRZSA9IGZ1bmN0aW9uKGUsIHIpIHtcbiAgdmFyIHQgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBlW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghdCkgcmV0dXJuIGU7XG4gIHZhciBuID0gdC5jYWxsKGUpLCBhLCBpID0gW10sIG87XG4gIHRyeSB7XG4gICAgZm9yICg7IChyID09PSB2b2lkIDAgfHwgci0tID4gMCkgJiYgIShhID0gbi5uZXh0KCkpLmRvbmU7ICkgaS5wdXNoKGEudmFsdWUpO1xuICB9IGNhdGNoICh1KSB7XG4gICAgbyA9IHsgZXJyb3I6IHUgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgYSAmJiAhYS5kb25lICYmICh0ID0gbi5yZXR1cm4pICYmIHQuY2FsbChuKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKG8pIHRocm93IG8uZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBpO1xufTtcbmZ1bmN0aW9uIFplKGUpIHtcbiAgdmFyIHIkMSwgdCwgbiA9IHt9O1xuICBpZiAodHlwZW9mIGUgIT0gXCJvYmplY3RcIiB8fCBlID09IG51bGwpXG4gICAgcmV0dXJuIG47XG4gIHRyeSB7XG4gICAgZm9yICh2YXIgYSA9IHEoT2JqZWN0LmVudHJpZXMoZSkpLCBpID0gYS5uZXh0KCk7ICFpLmRvbmU7IGkgPSBhLm5leHQoKSkge1xuICAgICAgdmFyIG8gPSBRZShpLnZhbHVlLCAyKSwgdSA9IG9bMF0sIGYgPSBvWzFdO1xuICAgICAgaWYgKCFRKHUpKSB7XG4gICAgICAgIHIud2FybihcIkludmFsaWQgYXR0cmlidXRlIGtleTogXCIgKyB1KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIVooZikpIHtcbiAgICAgICAgci53YXJuKFwiSW52YWxpZCBhdHRyaWJ1dGUgdmFsdWUgc2V0IGZvciBrZXk6IFwiICsgdSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgQXJyYXkuaXNBcnJheShmKSA/IG5bdV0gPSBmLnNsaWNlKCkgOiBuW3VdID0gZjtcbiAgICB9XG4gIH0gY2F0Y2ggKGwpIHtcbiAgICByJDEgPSB7IGVycm9yOiBsIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGkgJiYgIWkuZG9uZSAmJiAodCA9IGEucmV0dXJuKSAmJiB0LmNhbGwoYSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChyJDEpIHRocm93IHIkMS5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG47XG59XG5mdW5jdGlvbiBRKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwic3RyaW5nXCIgJiYgZS5sZW5ndGggPiAwO1xufVxuZnVuY3Rpb24gWihlKSB7XG4gIHJldHVybiBlID09IG51bGwgPyAhMCA6IEFycmF5LmlzQXJyYXkoZSkgPyBlcihlKSA6IGVlKGUpO1xufVxuZnVuY3Rpb24gZXIoZSkge1xuICB2YXIgciwgdCwgbjtcbiAgdHJ5IHtcbiAgICBmb3IgKHZhciBhID0gcShlKSwgaSA9IGEubmV4dCgpOyAhaS5kb25lOyBpID0gYS5uZXh0KCkpIHtcbiAgICAgIHZhciBvID0gaS52YWx1ZTtcbiAgICAgIGlmIChvICE9IG51bGwpIHtcbiAgICAgICAgaWYgKCFuKSB7XG4gICAgICAgICAgaWYgKGVlKG8pKSB7XG4gICAgICAgICAgICBuID0gdHlwZW9mIG87XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuICExO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgbyAhPT0gbilcbiAgICAgICAgICByZXR1cm4gITE7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoICh1KSB7XG4gICAgciA9IHsgZXJyb3I6IHUgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgaSAmJiAhaS5kb25lICYmICh0ID0gYS5yZXR1cm4pICYmIHQuY2FsbChhKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHIpIHRocm93IHIuZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiAhMDtcbn1cbmZ1bmN0aW9uIGVlKGUpIHtcbiAgc3dpdGNoICh0eXBlb2YgZSkge1xuICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgIHJldHVybiAhMDtcbiAgfVxuICByZXR1cm4gITE7XG59XG5mdW5jdGlvbiByZSgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGUpIHtcbiAgICByLmVycm9yKHJyKGUpKTtcbiAgfTtcbn1cbmZ1bmN0aW9uIHJyKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwic3RyaW5nXCIgPyBlIDogSlNPTi5zdHJpbmdpZnkodHIoZSkpO1xufVxuZnVuY3Rpb24gdHIoZSkge1xuICBmb3IgKHZhciByID0ge30sIHQgPSBlOyB0ICE9PSBudWxsOyApXG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkuZm9yRWFjaChmdW5jdGlvbihuKSB7XG4gICAgICBpZiAoIXJbbl0pIHtcbiAgICAgICAgdmFyIGEgPSB0W25dO1xuICAgICAgICBhICYmIChyW25dID0gU3RyaW5nKGEpKTtcbiAgICAgIH1cbiAgICB9KSwgdCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtcbiAgcmV0dXJuIHI7XG59XG52YXIgdGUgPSByZSgpO1xuZnVuY3Rpb24gbnIoZSkge1xuICB0ZSA9IGU7XG59XG5mdW5jdGlvbiBuZShlKSB7XG4gIHRyeSB7XG4gICAgdGUoZSk7XG4gIH0gY2F0Y2gge1xuICB9XG59XG52YXIgYXIgPSBmdW5jdGlvbihlLCByKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiBlO1xuICB2YXIgbiA9IHQuY2FsbChlKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAociA9PT0gdm9pZCAwIHx8IHItLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAodSkge1xuICAgIG8gPSB7IGVycm9yOiB1IH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIGlyID0gZnVuY3Rpb24oZSwgciwgdCkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIGEgPSByLmxlbmd0aCwgaTsgbiA8IGE7IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gcikpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwociwgMCwgbikpLCBpW25dID0gcltuXSk7XG4gIHJldHVybiBlLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIpKTtcbn07XG5mdW5jdGlvbiBvcihlKSB7XG4gIHJldHVybiBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBpcihbXSwgYXIoQSQxKGUpKSwgITEpKSk7XG59XG52YXIgdXIgPSA4LCBmciA9IDE2LCBsciA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAvKiBAX19QVVJFX18gKi8gZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICAgIHRoaXMuZ2VuZXJhdGVUcmFjZUlkID0gVihmciksIHRoaXMuZ2VuZXJhdGVTcGFuSWQgPSBWKHVyKTtcbiAgICB9XG4gICAgcmV0dXJuIGU7XG4gIH0oKVxuKSwgeSA9IEFycmF5KDMyKTtcbmZ1bmN0aW9uIFYoZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgZm9yICh2YXIgdCA9IDA7IHQgPCBlICogMjsgdCsrKVxuICAgICAgeVt0XSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDE2KSArIDQ4LCB5W3RdID49IDU4ICYmICh5W3RdICs9IDM5KTtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCB5LnNsaWNlKDAsIGUgKiAyKSk7XG4gIH07XG59XG5mdW5jdGlvbiBzcihlKSB7XG59XG52YXIgY3IgPSBmdW5jdGlvbihlKSB7XG4gIHZhciByID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCB0ID0gciAmJiBlW3JdLCBuID0gMDtcbiAgaWYgKHQpIHJldHVybiB0LmNhbGwoZSk7XG4gIGlmIChlICYmIHR5cGVvZiBlLmxlbmd0aCA9PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGUgJiYgbiA+PSBlLmxlbmd0aCAmJiAoZSA9IHZvaWQgMCksIHsgdmFsdWU6IGUgJiYgZVtuKytdLCBkb25lOiAhZSB9O1xuICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihyID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufSwgcHIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZShyKSB7XG4gICAgICByID09PSB2b2lkIDAgJiYgKHIgPSB7fSk7XG4gICAgICB2YXIgdDtcbiAgICAgIHRoaXMuX3Byb3BhZ2F0b3JzID0gKHQgPSByLnByb3BhZ2F0b3JzKSAhPT0gbnVsbCAmJiB0ICE9PSB2b2lkIDAgPyB0IDogW10sIHRoaXMuX2ZpZWxkcyA9IEFycmF5LmZyb20obmV3IFNldCh0aGlzLl9wcm9wYWdhdG9ycy5tYXAoZnVuY3Rpb24obikge1xuICAgICAgICByZXR1cm4gdHlwZW9mIG4uZmllbGRzID09IFwiZnVuY3Rpb25cIiA/IG4uZmllbGRzKCkgOiBbXTtcbiAgICAgIH0pLnJlZHVjZShmdW5jdGlvbihuLCBhKSB7XG4gICAgICAgIHJldHVybiBuLmNvbmNhdChhKTtcbiAgICAgIH0sIFtdKSkpO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuaW5qZWN0ID0gZnVuY3Rpb24ociQxLCB0LCBuKSB7XG4gICAgICB2YXIgYSwgaTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIG8gPSBjcih0aGlzLl9wcm9wYWdhdG9ycyksIHUgPSBvLm5leHQoKTsgIXUuZG9uZTsgdSA9IG8ubmV4dCgpKSB7XG4gICAgICAgICAgdmFyIGYgPSB1LnZhbHVlO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmLmluamVjdChyJDEsIHQsIG4pO1xuICAgICAgICAgIH0gY2F0Y2ggKGwpIHtcbiAgICAgICAgICAgIHIud2FybihcIkZhaWxlZCB0byBpbmplY3Qgd2l0aCBcIiArIGYuY29uc3RydWN0b3IubmFtZSArIFwiLiBFcnI6IFwiICsgbC5tZXNzYWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGwpIHtcbiAgICAgICAgYSA9IHsgZXJyb3I6IGwgfTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdSAmJiAhdS5kb25lICYmIChpID0gby5yZXR1cm4pICYmIGkuY2FsbChvKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAoYSkgdGhyb3cgYS5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIGUucHJvdG90eXBlLmV4dHJhY3QgPSBmdW5jdGlvbihyJDEsIHQsIG4pIHtcbiAgICAgIHJldHVybiB0aGlzLl9wcm9wYWdhdG9ycy5yZWR1Y2UoZnVuY3Rpb24oYSwgaSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBpLmV4dHJhY3QoYSwgdCwgbik7XG4gICAgICAgIH0gY2F0Y2ggKG8pIHtcbiAgICAgICAgICByLndhcm4oXCJGYWlsZWQgdG8gZXh0cmFjdCB3aXRoIFwiICsgaS5jb25zdHJ1Y3Rvci5uYW1lICsgXCIuIEVycjogXCIgKyBvLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfSwgciQxKTtcbiAgICB9LCBlLnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9maWVsZHMuc2xpY2UoKTtcbiAgICB9LCBlO1xuICB9KClcbiksIEkgPSBcIltfMC05YS16LSovXVwiLCBkciA9IFwiW2Etel1cIiArIEkgKyBcInswLDI1NX1cIiwgX3IgPSBcIlthLXowLTldXCIgKyBJICsgXCJ7MCwyNDB9QFthLXpdXCIgKyBJICsgXCJ7MCwxM31cIiwgeXIgPSBuZXcgUmVnRXhwKFwiXig/OlwiICsgZHIgKyBcInxcIiArIF9yICsgXCIpJFwiKSwgdnIgPSAvXlsgLX5dezAsMjU1fVshLX5dJC8sIGhyID0gLyx8PS87XG5mdW5jdGlvbiBtcihlKSB7XG4gIHJldHVybiB5ci50ZXN0KGUpO1xufVxuZnVuY3Rpb24gZ3IoZSkge1xuICByZXR1cm4gdnIudGVzdChlKSAmJiAhaHIudGVzdChlKTtcbn1cbnZhciBVID0gMzIsIFNyID0gNTEyLCBIID0gXCIsXCIsIEsgPSBcIj1cIiwgYWUgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZShyKSB7XG4gICAgICB0aGlzLl9pbnRlcm5hbFN0YXRlID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKSwgciAmJiB0aGlzLl9wYXJzZShyKTtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKHIsIHQpIHtcbiAgICAgIHZhciBuID0gdGhpcy5fY2xvbmUoKTtcbiAgICAgIHJldHVybiBuLl9pbnRlcm5hbFN0YXRlLmhhcyhyKSAmJiBuLl9pbnRlcm5hbFN0YXRlLmRlbGV0ZShyKSwgbi5faW50ZXJuYWxTdGF0ZS5zZXQociwgdCksIG47XG4gICAgfSwgZS5wcm90b3R5cGUudW5zZXQgPSBmdW5jdGlvbihyKSB7XG4gICAgICB2YXIgdCA9IHRoaXMuX2Nsb25lKCk7XG4gICAgICByZXR1cm4gdC5faW50ZXJuYWxTdGF0ZS5kZWxldGUociksIHQ7XG4gICAgfSwgZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24ocikge1xuICAgICAgcmV0dXJuIHRoaXMuX2ludGVybmFsU3RhdGUuZ2V0KHIpO1xuICAgIH0sIGUucHJvdG90eXBlLnNlcmlhbGl6ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHIgPSB0aGlzO1xuICAgICAgcmV0dXJuIHRoaXMuX2tleXMoKS5yZWR1Y2UoZnVuY3Rpb24odCwgbikge1xuICAgICAgICByZXR1cm4gdC5wdXNoKG4gKyBLICsgci5nZXQobikpLCB0O1xuICAgICAgfSwgW10pLmpvaW4oSCk7XG4gICAgfSwgZS5wcm90b3R5cGUuX3BhcnNlID0gZnVuY3Rpb24ocikge1xuICAgICAgci5sZW5ndGggPiBTciB8fCAodGhpcy5faW50ZXJuYWxTdGF0ZSA9IHIuc3BsaXQoSCkucmV2ZXJzZSgpLnJlZHVjZShmdW5jdGlvbih0LCBuKSB7XG4gICAgICAgIHZhciBhID0gbi50cmltKCksIGkgPSBhLmluZGV4T2YoSyk7XG4gICAgICAgIGlmIChpICE9PSAtMSkge1xuICAgICAgICAgIHZhciBvID0gYS5zbGljZSgwLCBpKSwgdSA9IGEuc2xpY2UoaSArIDEsIG4ubGVuZ3RoKTtcbiAgICAgICAgICBtcihvKSAmJiBncih1KSAmJiB0LnNldChvLCB1KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICAgIH0sIC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCkpLCB0aGlzLl9pbnRlcm5hbFN0YXRlLnNpemUgPiBVICYmICh0aGlzLl9pbnRlcm5hbFN0YXRlID0gbmV3IE1hcChBcnJheS5mcm9tKHRoaXMuX2ludGVybmFsU3RhdGUuZW50cmllcygpKS5yZXZlcnNlKCkuc2xpY2UoMCwgVSkpKSk7XG4gICAgfSwgZS5wcm90b3R5cGUuX2tleXMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuX2ludGVybmFsU3RhdGUua2V5cygpKS5yZXZlcnNlKCk7XG4gICAgfSwgZS5wcm90b3R5cGUuX2Nsb25lID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgciA9IG5ldyBlKCk7XG4gICAgICByZXR1cm4gci5faW50ZXJuYWxTdGF0ZSA9IG5ldyBNYXAodGhpcy5faW50ZXJuYWxTdGF0ZSksIHI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCB2ID0gXCJ0cmFjZXBhcmVudFwiLCBoID0gXCJ0cmFjZXN0YXRlXCIsIEFyID0gXCIwMFwiLCBFciA9IFwiKD8hZmYpW1xcXFxkYS1mXXsyfVwiLCBUciA9IFwiKD8hWzBdezMyfSlbXFxcXGRhLWZdezMyfVwiLCBQciA9IFwiKD8hWzBdezE2fSlbXFxcXGRhLWZdezE2fVwiLCBSciA9IFwiW1xcXFxkYS1mXXsyfVwiLCBPciA9IG5ldyBSZWdFeHAoXCJeXFxcXHM/KFwiICsgRXIgKyBcIiktKFwiICsgVHIgKyBcIiktKFwiICsgUHIgKyBcIiktKFwiICsgUnIgKyBcIikoLS4qKT9cXFxccz8kXCIpO1xuZnVuY3Rpb24gaWUoZSkge1xuICB2YXIgciA9IE9yLmV4ZWMoZSk7XG4gIHJldHVybiAhciB8fCByWzFdID09PSBcIjAwXCIgJiYgcls1XSA/IG51bGwgOiB7XG4gICAgdHJhY2VJZDogclsyXSxcbiAgICBzcGFuSWQ6IHJbM10sXG4gICAgdHJhY2VGbGFnczogcGFyc2VJbnQocls0XSwgMTYpXG4gIH07XG59XG52YXIgYnIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uKHIsIHQsIG4pIHtcbiAgICAgIHZhciBhID0gUGUuZ2V0U3BhbkNvbnRleHQocik7XG4gICAgICBpZiAoISghYSB8fCB3KHIpIHx8ICFJciQxKGEpKSkge1xuICAgICAgICB2YXIgaSA9IEFyICsgXCItXCIgKyBhLnRyYWNlSWQgKyBcIi1cIiArIGEuc3BhbklkICsgXCItMFwiICsgTnVtYmVyKGEudHJhY2VGbGFncyB8fCBQdC5OT05FKS50b1N0cmluZygxNik7XG4gICAgICAgIG4uc2V0KHQsIHYsIGkpLCBhLnRyYWNlU3RhdGUgJiYgbi5zZXQodCwgaCwgYS50cmFjZVN0YXRlLnNlcmlhbGl6ZSgpKTtcbiAgICAgIH1cbiAgICB9LCBlLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24ociwgdCwgbikge1xuICAgICAgdmFyIGEgPSBuLmdldCh0LCB2KTtcbiAgICAgIGlmICghYSlcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICB2YXIgaSA9IEFycmF5LmlzQXJyYXkoYSkgPyBhWzBdIDogYTtcbiAgICAgIGlmICh0eXBlb2YgaSAhPSBcInN0cmluZ1wiKVxuICAgICAgICByZXR1cm4gcjtcbiAgICAgIHZhciBvID0gaWUoaSk7XG4gICAgICBpZiAoIW8pXG4gICAgICAgIHJldHVybiByO1xuICAgICAgby5pc1JlbW90ZSA9ICEwO1xuICAgICAgdmFyIHUgPSBuLmdldCh0LCBoKTtcbiAgICAgIGlmICh1KSB7XG4gICAgICAgIHZhciBmID0gQXJyYXkuaXNBcnJheSh1KSA/IHUuam9pbihcIixcIikgOiB1O1xuICAgICAgICBvLnRyYWNlU3RhdGUgPSBuZXcgYWUodHlwZW9mIGYgPT0gXCJzdHJpbmdcIiA/IGYgOiB2b2lkIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFBlLnNldFNwYW5Db250ZXh0KHIsIG8pO1xuICAgIH0sIGUucHJvdG90eXBlLmZpZWxkcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFt2LCBoXTtcbiAgICB9LCBlO1xuICB9KClcbiksIEwgPSBZbyhcIk9wZW5UZWxlbWV0cnkgU0RLIENvbnRleHQgS2V5IFJQQ19NRVRBREFUQVwiKSwgajtcbihmdW5jdGlvbihlKSB7XG4gIGUuSFRUUCA9IFwiaHR0cFwiO1xufSkoaiB8fCAoaiA9IHt9KSk7XG5mdW5jdGlvbiBDcihlLCByKSB7XG4gIHJldHVybiBlLnNldFZhbHVlKEwsIHIpO1xufVxuZnVuY3Rpb24gSXIoZSkge1xuICByZXR1cm4gZS5kZWxldGVWYWx1ZShMKTtcbn1cbmZ1bmN0aW9uIGpyKGUpIHtcbiAgcmV0dXJuIGUuZ2V0VmFsdWUoTCk7XG59XG52YXIgTSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkZWNpc2lvbjogcC5OT1RfUkVDT1JEXG4gICAgICB9O1xuICAgIH0sIGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJBbHdheXNPZmZTYW1wbGVyXCI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBtID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zaG91bGRTYW1wbGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRlY2lzaW9uOiBwLlJFQ09SRF9BTkRfU0FNUExFRFxuICAgICAgfTtcbiAgICB9LCBlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFwiQWx3YXlzT25TYW1wbGVyXCI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBNciA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKHIpIHtcbiAgICAgIHZhciB0LCBuLCBhLCBpO1xuICAgICAgdGhpcy5fcm9vdCA9IHIucm9vdCwgdGhpcy5fcm9vdCB8fCAobmUobmV3IEVycm9yKFwiUGFyZW50QmFzZWRTYW1wbGVyIG11c3QgaGF2ZSBhIHJvb3Qgc2FtcGxlciBjb25maWd1cmVkXCIpKSwgdGhpcy5fcm9vdCA9IG5ldyBtKCkpLCB0aGlzLl9yZW1vdGVQYXJlbnRTYW1wbGVkID0gKHQgPSByLnJlbW90ZVBhcmVudFNhbXBsZWQpICE9PSBudWxsICYmIHQgIT09IHZvaWQgMCA/IHQgOiBuZXcgbSgpLCB0aGlzLl9yZW1vdGVQYXJlbnROb3RTYW1wbGVkID0gKG4gPSByLnJlbW90ZVBhcmVudE5vdFNhbXBsZWQpICE9PSBudWxsICYmIG4gIT09IHZvaWQgMCA/IG4gOiBuZXcgTSgpLCB0aGlzLl9sb2NhbFBhcmVudFNhbXBsZWQgPSAoYSA9IHIubG9jYWxQYXJlbnRTYW1wbGVkKSAhPT0gbnVsbCAmJiBhICE9PSB2b2lkIDAgPyBhIDogbmV3IG0oKSwgdGhpcy5fbG9jYWxQYXJlbnROb3RTYW1wbGVkID0gKGkgPSByLmxvY2FsUGFyZW50Tm90U2FtcGxlZCkgIT09IG51bGwgJiYgaSAhPT0gdm9pZCAwID8gaSA6IG5ldyBNKCk7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zaG91bGRTYW1wbGUgPSBmdW5jdGlvbihyLCB0LCBuLCBhLCBpLCBvKSB7XG4gICAgICB2YXIgdSA9IFBlLmdldFNwYW5Db250ZXh0KHIpO1xuICAgICAgcmV0dXJuICF1IHx8ICFJciQxKHUpID8gdGhpcy5fcm9vdC5zaG91bGRTYW1wbGUociwgdCwgbiwgYSwgaSwgbykgOiB1LmlzUmVtb3RlID8gdS50cmFjZUZsYWdzICYgUHQuU0FNUExFRCA/IHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQuc2hvdWxkU2FtcGxlKHIsIHQsIG4sIGEsIGksIG8pIDogdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZC5zaG91bGRTYW1wbGUociwgdCwgbiwgYSwgaSwgbykgOiB1LnRyYWNlRmxhZ3MgJiBQdC5TQU1QTEVEID8gdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkLnNob3VsZFNhbXBsZShyLCB0LCBuLCBhLCBpLCBvKSA6IHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZC5zaG91bGRTYW1wbGUociwgdCwgbiwgYSwgaSwgbyk7XG4gICAgfSwgZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIlBhcmVudEJhc2Vke3Jvb3Q9XCIgKyB0aGlzLl9yb290LnRvU3RyaW5nKCkgKyBcIiwgcmVtb3RlUGFyZW50U2FtcGxlZD1cIiArIHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQudG9TdHJpbmcoKSArIFwiLCByZW1vdGVQYXJlbnROb3RTYW1wbGVkPVwiICsgdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZC50b1N0cmluZygpICsgXCIsIGxvY2FsUGFyZW50U2FtcGxlZD1cIiArIHRoaXMuX2xvY2FsUGFyZW50U2FtcGxlZC50b1N0cmluZygpICsgXCIsIGxvY2FsUGFyZW50Tm90U2FtcGxlZD1cIiArIHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZC50b1N0cmluZygpICsgXCJ9XCI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBOciA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKHIpIHtcbiAgICAgIHIgPT09IHZvaWQgMCAmJiAociA9IDApLCB0aGlzLl9yYXRpbyA9IHIsIHRoaXMuX3JhdGlvID0gdGhpcy5fbm9ybWFsaXplKHIpLCB0aGlzLl91cHBlckJvdW5kID0gTWF0aC5mbG9vcih0aGlzLl9yYXRpbyAqIDQyOTQ5NjcyOTUpO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24ociwgdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVjaXNpb246IHNhKHQpICYmIHRoaXMuX2FjY3VtdWxhdGUodCkgPCB0aGlzLl91cHBlckJvdW5kID8gcC5SRUNPUkRfQU5EX1NBTVBMRUQgOiBwLk5PVF9SRUNPUkRcbiAgICAgIH07XG4gICAgfSwgZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIlRyYWNlSWRSYXRpb0Jhc2Vke1wiICsgdGhpcy5fcmF0aW8gKyBcIn1cIjtcbiAgICB9LCBlLnByb3RvdHlwZS5fbm9ybWFsaXplID0gZnVuY3Rpb24ocikge1xuICAgICAgcmV0dXJuIHR5cGVvZiByICE9IFwibnVtYmVyXCIgfHwgaXNOYU4ocikgPyAwIDogciA+PSAxID8gMSA6IHIgPD0gMCA/IDAgOiByO1xuICAgIH0sIGUucHJvdG90eXBlLl9hY2N1bXVsYXRlID0gZnVuY3Rpb24ocikge1xuICAgICAgZm9yICh2YXIgdCA9IDAsIG4gPSAwOyBuIDwgci5sZW5ndGggLyA4OyBuKyspIHtcbiAgICAgICAgdmFyIGEgPSBuICogOCwgaSA9IHBhcnNlSW50KHIuc2xpY2UoYSwgYSArIDgpLCAxNik7XG4gICAgICAgIHQgPSAodCBeIGkpID4+PiAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHQ7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCB3ciA9IFwiW29iamVjdCBPYmplY3RdXCIsIERyID0gXCJbb2JqZWN0IE51bGxdXCIsIExyID0gXCJbb2JqZWN0IFVuZGVmaW5lZF1cIiwgeHIgPSBGdW5jdGlvbi5wcm90b3R5cGUsIG9lID0geHIudG9TdHJpbmcsIEdyID0gb2UuY2FsbChPYmplY3QpLCBCciA9IFZyKE9iamVjdC5nZXRQcm90b3R5cGVPZiwgT2JqZWN0KSwgdWUgPSBPYmplY3QucHJvdG90eXBlLCBmZSA9IHVlLmhhc093blByb3BlcnR5LCBzID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdm9pZCAwLCBsZSA9IHVlLnRvU3RyaW5nO1xuZnVuY3Rpb24gVnIoZSwgcikge1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBlKHIodCkpO1xuICB9O1xufVxuZnVuY3Rpb24gRihlKSB7XG4gIGlmICghVXIoZSkgfHwgSHIoZSkgIT09IHdyKVxuICAgIHJldHVybiAhMTtcbiAgdmFyIHIgPSBCcihlKTtcbiAgaWYgKHIgPT09IG51bGwpXG4gICAgcmV0dXJuICEwO1xuICB2YXIgdCA9IGZlLmNhbGwociwgXCJjb25zdHJ1Y3RvclwiKSAmJiByLmNvbnN0cnVjdG9yO1xuICByZXR1cm4gdHlwZW9mIHQgPT0gXCJmdW5jdGlvblwiICYmIHQgaW5zdGFuY2VvZiB0ICYmIG9lLmNhbGwodCkgPT09IEdyO1xufVxuZnVuY3Rpb24gVXIoZSkge1xuICByZXR1cm4gZSAhPSBudWxsICYmIHR5cGVvZiBlID09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBIcihlKSB7XG4gIHJldHVybiBlID09IG51bGwgPyBlID09PSB2b2lkIDAgPyBMciA6IERyIDogcyAmJiBzIGluIE9iamVjdChlKSA/IEtyKGUpIDogRnIoZSk7XG59XG5mdW5jdGlvbiBLcihlKSB7XG4gIHZhciByID0gZmUuY2FsbChlLCBzKSwgdCA9IGVbc10sIG4gPSAhMTtcbiAgdHJ5IHtcbiAgICBlW3NdID0gdm9pZCAwLCBuID0gITA7XG4gIH0gY2F0Y2gge1xuICB9XG4gIHZhciBhID0gbGUuY2FsbChlKTtcbiAgcmV0dXJuIG4gJiYgKHIgPyBlW3NdID0gdCA6IGRlbGV0ZSBlW3NdKSwgYTtcbn1cbmZ1bmN0aW9uIEZyKGUpIHtcbiAgcmV0dXJuIGxlLmNhbGwoZSk7XG59XG52YXIgenIgPSAyMDtcbmZ1bmN0aW9uIGtyKCkge1xuICBmb3IgKHZhciBlID0gW10sIHIgPSAwOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKVxuICAgIGVbcl0gPSBhcmd1bWVudHNbcl07XG4gIGZvciAodmFyIHQgPSBlLnNoaWZ0KCksIG4gPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtNYXAoKTsgZS5sZW5ndGggPiAwOyApXG4gICAgdCA9IHNlKHQsIGUuc2hpZnQoKSwgMCwgbik7XG4gIHJldHVybiB0O1xufVxuZnVuY3Rpb24gUihlKSB7XG4gIHJldHVybiBBKGUpID8gZS5zbGljZSgpIDogZTtcbn1cbmZ1bmN0aW9uIHNlKGUsIHIsIHQsIG4pIHtcbiAgdCA9PT0gdm9pZCAwICYmICh0ID0gMCk7XG4gIHZhciBhO1xuICBpZiAoISh0ID4genIpKSB7XG4gICAgaWYgKHQrKywgZyhlKSB8fCBnKHIpIHx8IGNlKHIpKVxuICAgICAgYSA9IFIocik7XG4gICAgZWxzZSBpZiAoQShlKSkge1xuICAgICAgaWYgKGEgPSBlLnNsaWNlKCksIEEocikpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBvID0gci5sZW5ndGg7IGkgPCBvOyBpKyspXG4gICAgICAgICAgYS5wdXNoKFIocltpXSkpO1xuICAgICAgZWxzZSBpZiAoZChyKSlcbiAgICAgICAgZm9yICh2YXIgdSA9IE9iamVjdC5rZXlzKHIpLCBpID0gMCwgbyA9IHUubGVuZ3RoOyBpIDwgbzsgaSsrKSB7XG4gICAgICAgICAgdmFyIGYgPSB1W2ldO1xuICAgICAgICAgIGFbZl0gPSBSKHJbZl0pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChkKGUpKVxuICAgICAgaWYgKGQocikpIHtcbiAgICAgICAgaWYgKCFZcihlLCByKSlcbiAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgYSA9IE9iamVjdC5hc3NpZ24oe30sIGUpO1xuICAgICAgICBmb3IgKHZhciB1ID0gT2JqZWN0LmtleXMociksIGkgPSAwLCBvID0gdS5sZW5ndGg7IGkgPCBvOyBpKyspIHtcbiAgICAgICAgICB2YXIgZiA9IHVbaV0sIGwgPSByW2ZdO1xuICAgICAgICAgIGlmIChnKGwpKVxuICAgICAgICAgICAgdHlwZW9mIGwgPiBcInVcIiA/IGRlbGV0ZSBhW2ZdIDogYVtmXSA9IGw7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgYyA9IGFbZl0sIEUgPSBsO1xuICAgICAgICAgICAgaWYgKHooZSwgZiwgbikgfHwgeihyLCBmLCBuKSlcbiAgICAgICAgICAgICAgZGVsZXRlIGFbZl07XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKGQoYykgJiYgZChFKSkge1xuICAgICAgICAgICAgICAgIHZhciB4ID0gbi5nZXQoYykgfHwgW10sIEcgPSBuLmdldChFKSB8fCBbXTtcbiAgICAgICAgICAgICAgICB4LnB1c2goeyBvYmo6IGUsIGtleTogZiB9KSwgRy5wdXNoKHsgb2JqOiByLCBrZXk6IGYgfSksIG4uc2V0KGMsIHgpLCBuLnNldChFLCBHKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBhW2ZdID0gc2UoYVtmXSwgbCwgdCwgbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2VcbiAgICAgICAgYSA9IHI7XG4gICAgcmV0dXJuIGE7XG4gIH1cbn1cbmZ1bmN0aW9uIHooZSwgciwgdCkge1xuICBmb3IgKHZhciBuID0gdC5nZXQoZVtyXSkgfHwgW10sIGEgPSAwLCBpID0gbi5sZW5ndGg7IGEgPCBpOyBhKyspIHtcbiAgICB2YXIgbyA9IG5bYV07XG4gICAgaWYgKG8ua2V5ID09PSByICYmIG8ub2JqID09PSBlKVxuICAgICAgcmV0dXJuICEwO1xuICB9XG4gIHJldHVybiAhMTtcbn1cbmZ1bmN0aW9uIEEoZSkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShlKTtcbn1cbmZ1bmN0aW9uIGNlKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwiZnVuY3Rpb25cIjtcbn1cbmZ1bmN0aW9uIGQoZSkge1xuICByZXR1cm4gIWcoZSkgJiYgIUEoZSkgJiYgIWNlKGUpICYmIHR5cGVvZiBlID09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBnKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwic3RyaW5nXCIgfHwgdHlwZW9mIGUgPT0gXCJudW1iZXJcIiB8fCB0eXBlb2YgZSA9PSBcImJvb2xlYW5cIiB8fCB0eXBlb2YgZSA+IFwidVwiIHx8IGUgaW5zdGFuY2VvZiBEYXRlIHx8IGUgaW5zdGFuY2VvZiBSZWdFeHAgfHwgZSA9PT0gbnVsbDtcbn1cbmZ1bmN0aW9uIFlyKGUsIHIpIHtcbiAgcmV0dXJuICEoIUYoZSkgfHwgIUYocikpO1xufVxudmFyIFhyID0gLyogQF9fUFVSRV9fICovIGZ1bmN0aW9uKCkge1xuICB2YXIgZSA9IGZ1bmN0aW9uKHIsIHQpIHtcbiAgICByZXR1cm4gZSA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uKG4sIGEpIHtcbiAgICAgIG4uX19wcm90b19fID0gYTtcbiAgICB9IHx8IGZ1bmN0aW9uKG4sIGEpIHtcbiAgICAgIGZvciAodmFyIGkgaW4gYSkgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsIGkpICYmIChuW2ldID0gYVtpXSk7XG4gICAgfSwgZShyLCB0KTtcbiAgfTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHIsIHQpIHtcbiAgICBpZiAodHlwZW9mIHQgIT0gXCJmdW5jdGlvblwiICYmIHQgIT09IG51bGwpXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyh0KSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgZShyLCB0KTtcbiAgICBmdW5jdGlvbiBuKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IHI7XG4gICAgfVxuICAgIHIucHJvdG90eXBlID0gdCA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUodCkgOiAobi5wcm90b3R5cGUgPSB0LnByb3RvdHlwZSwgbmV3IG4oKSk7XG4gIH07XG59KCksIHBlID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKGUpIHtcbiAgICBYcihyLCBlKTtcbiAgICBmdW5jdGlvbiByKHQpIHtcbiAgICAgIHZhciBuID0gZS5jYWxsKHRoaXMsIHQpIHx8IHRoaXM7XG4gICAgICByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKG4sIHIucHJvdG90eXBlKSwgbjtcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH0oRXJyb3IpXG4pO1xuZnVuY3Rpb24gV3IoZSwgcikge1xuICB2YXIgdCwgbiA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKGksIG8pIHtcbiAgICB0ID0gc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgIG8obmV3IHBlKFwiT3BlcmF0aW9uIHRpbWVkIG91dC5cIikpO1xuICAgIH0sIHIpO1xuICB9KTtcbiAgcmV0dXJuIFByb21pc2UucmFjZShbZSwgbl0pLnRoZW4oZnVuY3Rpb24oYSkge1xuICAgIHJldHVybiBjbGVhclRpbWVvdXQodCksIGE7XG4gIH0sIGZ1bmN0aW9uKGEpIHtcbiAgICB0aHJvdyBjbGVhclRpbWVvdXQodCksIGE7XG4gIH0pO1xufVxuZnVuY3Rpb24gJHIoZSkge1xuICByZXR1cm4gdHlwZW9mIGUgPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBlLl9fb3JpZ2luYWwgPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBlLl9fdW53cmFwID09IFwiZnVuY3Rpb25cIiAmJiBlLl9fd3JhcHBlZCA9PT0gITA7XG59XG52YXIgSnIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICAgIHZhciByID0gdGhpcztcbiAgICAgIHRoaXMuX3Byb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbih0LCBuKSB7XG4gICAgICAgIHIuX3Jlc29sdmUgPSB0LCByLl9yZWplY3QgPSBuO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIFwicHJvbWlzZVwiLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvbWlzZTtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgZS5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uKHIpIHtcbiAgICAgIHRoaXMuX3Jlc29sdmUocik7XG4gICAgfSwgZS5wcm90b3R5cGUucmVqZWN0ID0gZnVuY3Rpb24ocikge1xuICAgICAgdGhpcy5fcmVqZWN0KHIpO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgcXIgPSBmdW5jdGlvbihlLCByKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiBlO1xuICB2YXIgbiA9IHQuY2FsbChlKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAociA9PT0gdm9pZCAwIHx8IHItLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAodSkge1xuICAgIG8gPSB7IGVycm9yOiB1IH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIFFyID0gZnVuY3Rpb24oZSwgciwgdCkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIGEgPSByLmxlbmd0aCwgaTsgbiA8IGE7IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gcikpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwociwgMCwgbikpLCBpW25dID0gcltuXSk7XG4gIHJldHVybiBlLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIpKTtcbn0sIFpyID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUociwgdCkge1xuICAgICAgdGhpcy5fY2FsbGJhY2sgPSByLCB0aGlzLl90aGF0ID0gdCwgdGhpcy5faXNDYWxsZWQgPSAhMSwgdGhpcy5fZGVmZXJyZWQgPSBuZXcgSnIoKTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwgXCJpc0NhbGxlZFwiLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDYWxsZWQ7XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwgXCJwcm9taXNlXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWZlcnJlZC5wcm9taXNlO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6ICExLFxuICAgICAgY29uZmlndXJhYmxlOiAhMFxuICAgIH0pLCBlLnByb3RvdHlwZS5jYWxsID0gZnVuY3Rpb24oKSB7XG4gICAgICBmb3IgKHZhciByLCB0ID0gdGhpcywgbiA9IFtdLCBhID0gMDsgYSA8IGFyZ3VtZW50cy5sZW5ndGg7IGErKylcbiAgICAgICAgblthXSA9IGFyZ3VtZW50c1thXTtcbiAgICAgIGlmICghdGhpcy5faXNDYWxsZWQpIHtcbiAgICAgICAgdGhpcy5faXNDYWxsZWQgPSAhMDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKHIgPSB0aGlzLl9jYWxsYmFjaykuY2FsbC5hcHBseShyLCBRcihbdGhpcy5fdGhhdF0sIHFyKG4pLCAhMSkpKS50aGVuKGZ1bmN0aW9uKGkpIHtcbiAgICAgICAgICAgIHJldHVybiB0Ll9kZWZlcnJlZC5yZXNvbHZlKGkpO1xuICAgICAgICAgIH0sIGZ1bmN0aW9uKGkpIHtcbiAgICAgICAgICAgIHJldHVybiB0Ll9kZWZlcnJlZC5yZWplY3QoaSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGkpIHtcbiAgICAgICAgICB0aGlzLl9kZWZlcnJlZC5yZWplY3QoaSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLl9kZWZlcnJlZC5wcm9taXNlO1xuICAgIH0sIGU7XG4gIH0oKVxuKTtcbmZ1bmN0aW9uIGV0KGUsIHIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQpIHtcbiAgICBDZS53aXRoKFcoQ2UuYWN0aXZlKCkpLCBmdW5jdGlvbigpIHtcbiAgICAgIGUuZXhwb3J0KHIsIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgdChuKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cbnZhciBydCA9IHtcbiAgZ2V0S2V5UGFpcnM6IEosXG4gIHNlcmlhbGl6ZUtleVBhaXJzOiAkLFxuICBwYXJzZUtleVBhaXJzSW50b1JlY29yZDogJGUsXG4gIHBhcnNlUGFpcktleVZhbHVlOiBEXG59LCB0dCA9IHtcbiAgX2V4cG9ydDogZXRcbn07XG5jb25zdCBsdCA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZnJlZXplKC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZGVmaW5lUHJvcGVydHkoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIEFsd2F5c09mZlNhbXBsZXI6IE0sXG4gIEFsd2F5c09uU2FtcGxlcjogbSxcbiAgQW5jaG9yZWRDbG9jazogcWUsXG4gIEJpbmRPbmNlRnV0dXJlOiBacixcbiAgQ29tcG9zaXRlUHJvcGFnYXRvcjogcHIsXG4gIERFRkFVTFRfQVRUUklCVVRFX0NPVU5UX0xJTUlUOiBQJDEsXG4gIERFRkFVTFRfQVRUUklCVVRFX1ZBTFVFX0xFTkdUSF9MSU1JVDogTSQxLFxuICBERUZBVUxUX0VOVklST05NRU5UOiBJJDEsXG4gIERFRkFVTFRfU1BBTl9BVFRSSUJVVEVfUEVSX0VWRU5UX0NPVU5UX0xJTUlUOiBrXyxcbiAgREVGQVVMVF9TUEFOX0FUVFJJQlVURV9QRVJfTElOS19DT1VOVF9MSU1JVDogSl8sXG4gIGdldCBFeHBvcnRSZXN1bHRDb2RlKCkge1xuICAgIHJldHVybiBhO1xuICB9LFxuICBQYXJlbnRCYXNlZFNhbXBsZXI6IE1yLFxuICBnZXQgUlBDVHlwZSgpIHtcbiAgICByZXR1cm4gajtcbiAgfSxcbiAgUmFuZG9tSWRHZW5lcmF0b3I6IGxyLFxuICBTREtfSU5GTzogWEEsXG4gIFRSQUNFX1BBUkVOVF9IRUFERVI6IHYsXG4gIFRSQUNFX1NUQVRFX0hFQURFUjogaCxcbiAgVGltZW91dEVycm9yOiBwZSxcbiAgVHJhY2VJZFJhdGlvQmFzZWRTYW1wbGVyOiBOcixcbiAgVHJhY2VTdGF0ZTogYWUsXG4gIGdldCBUcmFjZXNTYW1wbGVyVmFsdWVzKCkge1xuICAgIHJldHVybiByJDE7XG4gIH0sXG4gIFZFUlNJT046ICRfLFxuICBXM0NCYWdnYWdlUHJvcGFnYXRvcjogSmUsXG4gIFczQ1RyYWNlQ29udGV4dFByb3BhZ2F0b3I6IGJyLFxuICBfZ2xvYmFsVGhpczogbCxcbiAgYWRkSHJUaW1lczogSF8sXG4gIGJhZ2dhZ2VVdGlsczogcnQsXG4gIGNhbGxXaXRoVGltZW91dDogV3IsXG4gIGRlbGV0ZVJQQ01ldGFkYXRhOiBJcixcbiAgZ2V0RW52OiBPVCxcbiAgZ2V0RW52V2l0aG91dERlZmF1bHRzOiBMVCxcbiAgZ2V0UlBDTWV0YWRhdGE6IGpyLFxuICBnZXRUaW1lT3JpZ2luOiByXyxcbiAgZ2xvYmFsRXJyb3JIYW5kbGVyOiBuZSxcbiAgaGV4VG9CYXNlNjQ6IG9yLFxuICBoZXhUb0JpbmFyeTogQSQxLFxuICBoclRpbWU6IHBfLFxuICBoclRpbWVEdXJhdGlvbjogd2UsXG4gIGhyVGltZVRvTWljcm9zZWNvbmRzOiBrZSQxLFxuICBoclRpbWVUb01pbGxpc2Vjb25kczogeGUsXG4gIGhyVGltZVRvTmFub3NlY29uZHM6IFFlJDEsXG4gIGhyVGltZVRvVGltZVN0YW1wOiBYZSQxLFxuICBpbnRlcm5hbDogdHQsXG4gIGlzQXR0cmlidXRlS2V5OiBRLFxuICBpc0F0dHJpYnV0ZVZhbHVlOiBaLFxuICBpc1RpbWVJbnB1dDogcWUkMSxcbiAgaXNUaW1lSW5wdXRIclRpbWU6IE5fLFxuICBpc1RyYWNpbmdTdXBwcmVzc2VkOiB3LFxuICBpc1VybElnbm9yZWQ6IFplJDEsXG4gIGlzV3JhcHBlZDogJHIsXG4gIGxvZ2dpbmdFcnJvckhhbmRsZXI6IHJlLFxuICBtZXJnZToga3IsXG4gIG1pbGxpc1RvSHJUaW1lOiBPLFxuICBvdHBlcmZvcm1hbmNlOiBSJDEsXG4gIHBhcnNlRW52aXJvbm1lbnQ6IFUkMSxcbiAgcGFyc2VUcmFjZVBhcmVudDogaWUsXG4gIHNhbml0aXplQXR0cmlidXRlczogWmUsXG4gIHNldEdsb2JhbEVycm9ySGFuZGxlcjogbnIsXG4gIHNldFJQQ01ldGFkYXRhOiBDcixcbiAgc3VwcHJlc3NUcmFjaW5nOiBXLFxuICB0aW1lSW5wdXRUb0hyVGltZTogV2UkMSxcbiAgdW5yZWZUaW1lcjogc3IsXG4gIHVuc3VwcHJlc3NUcmFjaW5nOiBGZSxcbiAgdXJsTWF0Y2hlczogZ19cbn0sIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogXCJNb2R1bGVcIiB9KSk7XG5cbmV4cG9ydCB7IEplIGFzIEosIFcsIFosIFplIGFzIGEsIHByIGFzIGIsIGJyIGFzIGMsIFpyIGFzIGQsIGtyIGFzIGssIGx0IGFzIGwsIG5lIGFzIG4sIHAsIHNyIGFzIHMsIHR0IGFzIHQsIHcgfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLEtBQUtBLEdBQUksS0FBS0MsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLElBQUksS0FBS0MsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLElBQU0sTUFBTUMsSUFBSSxLQUFLQyxJQUFNLE1BQU1DLElBQU0sTUFBTUMsSUFBTSxNQUFNQyxJQUFJLEtBQUtDLElBQU0sS0FBQUMsSUFBRyxNQUFNQyxJQUFLLEtBQUtDLElBQU0sS0FBS0MsVUFBVTtBQUN4TCxTQUFTLEtBQUtDLEdBQUksS0FBS0MsR0FBTSxLQUFLQyxHQUFJLEtBQUtDLElBQUksS0FBS0MsR0FBSSxLQUFLQyxTQUFVO0FBQ3ZFLFNBQVMsS0FBQUMsU0FBUztBQUNsQixTQUFTLEtBQUFDLElBQUcsS0FBS0MsU0FBVztBQUM1QixTQUFTLE1BQU1DLElBQUssTUFBTUMsSUFBSyxNQUFNQyxJQUFLLE1BQU1DLElBQUksTUFBTUMsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLElBQUssTUFBTUMsSUFBSSxLQUFLQyxJQUFJLE1BQU1DLElBQUksTUFBTUMsVUFBVztBQUNqSSxT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Q0FBQyxDQUFDOyIsCiAgIm5hbWVzIjogWyJ5XyIsICJmXyIsICJIXyIsICJyXyIsICJwXyIsICJ3ZSIsICJrZSQxIiwgInhlIiwgIlFlJDEiLCAiWGUkMSIsICJxZSQxIiwgIk5fIiwgIlplJDEiLCAiTyIsICJSJDEiLCAiV2UkMSIsICJnXyIsICJQZSIsICJJciQxIiwgIlB0IiwgInNhIiwgIllvIiwgIkNlIiwgInIiLCAiYSIsICJBJDEiLCAiUCQxIiwgIk0kMSIsICJJJDEiLCAia18iLCAiSl8iLCAiWEEiLCAiciQxIiwgIiRfIiwgIk9UIiwgIkxUIiwgIlUkMSIsICJsIiwgImUiLCAiVyIsICJGZSIsICJ3IiwgInplIiwgIkMiLCAiUCIsICJrZSIsICJZZSIsICJYZSIsICJXZSIsICJ0IiwgImkiLCAibyIsICIkIiwgIkoiLCAiJGUiLCAiSmUiLCAiZiIsICJjIiwgInFlIiwgInEiLCAiUWUiLCAiWmUiLCAiUSIsICJlciIsICJlZSIsICJyZSIsICJ0ciIsICJ0ZSIsICJuZSIsICJhciIsICJpciIsICJvciIsICJmciIsICJsciIsICJWIiwgInkiLCAiY3IiLCAiSSIsICJkciIsICJfciIsICJ5ciIsICJ2ciIsICJociIsICJtciIsICJnciIsICJVIiwgIkgiLCAiSyIsICJhZSIsICJ2IiwgImgiLCAiQXIiLCAiRXIiLCAiVHIiLCAiUHIiLCAiUnIiLCAiT3IiLCAiaWUiLCAiYnIiLCAiTCIsICJDciIsICJJciIsICJNIiwgIm0iLCAiTXIiLCAid3IiLCAiTHIiLCAieHIiLCAib2UiLCAiR3IiLCAiQnIiLCAiVnIiLCAidWUiLCAiZmUiLCAibGUiLCAiRiIsICJVciIsICJIciIsICJLciIsICJGciIsICJ6ciIsICJrciIsICJzZSIsICJSIiwgIkEiLCAiZyIsICJjZSIsICJkIiwgIllyIiwgIkUiLCAieiIsICJ4IiwgIkciLCAiWHIiLCAicGUiLCAiV3IiLCAiJHIiLCAiSnIiLCAicXIiLCAiUXIiLCAiZXQiLCAicnQiLCAidHQiLCAibHQiXQp9Cg==