@getopenpay/openpay-js-react 0.5.25 → 0.5.26-alpha.b87651e

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 (26) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/{Resource-CpYeGio5-Crlrtvzx.js → Resource-CEOg0ZP2-BPKGawzY.js} +2 -2
  3. package/dist/SimpleSpanProcessor-DRcuspHp-MWteF9oR.js +910 -0
  4. package/dist/{detect-resources-BQutTEeG-CLQLes2c.js → detect-resources-BKmk4tEe-CFF-LZfH.js} +113 -113
  5. package/dist/diag-api-D0EHkb_O-CZgFzAdr.js +6 -0
  6. package/dist/{index-CvuCprS8-B_Yax6-R.js → index-9vc6__ze-lX2RTErF.js} +2 -2
  7. package/dist/{index-BxfodL6B-wW9M3hrZ.js → index-BEqb-DSH-DXJeHdfn.js} +50 -50
  8. package/dist/{index-DZ1Er9UK-CFqxcZP4.js → index-BJHxqly1-Ce-ZdKv7.js} +2 -2
  9. package/dist/{index-Dbr9bp6a-sEQgAlIq.js → index-Bt6mVKrg-CEvBlQDI.js} +7 -7
  10. package/dist/index-CKkSVDgi.js +10292 -0
  11. package/dist/{index-By2_XDEC-BWEZq0hE.js → index-CTCUKKcI-C7YmhgKW.js} +2 -2
  12. package/dist/{index-NCAOVimP-BcCtrd4O.js → index-CmriBZOS-CD-cfNp2.js} +61 -61
  13. package/dist/{index-gOa9aopa-oVE-SOM0.js → index-DDjqRLG8--ztrGomN.js} +5 -5
  14. package/dist/{index-mdlHE8Fi-DDx5Cjgi.js → index-ORrwEOLv-Bl_QSsZ3.js} +2 -2
  15. package/dist/{index-TeVCMfiW-BtVV3Emw.js → index-beJqlqi4-CfPC7uGP.js} +24 -24
  16. package/dist/index.d.ts +15 -0
  17. package/dist/index.js +9 -9
  18. package/dist/{metrics-api-l2AFyrzy-MaTXNkC6.js → metrics-api-l101FK-4-BYGj2e-Y.js} +10 -10
  19. package/dist/{suppress-tracing-D5T6gdNh-B4bDPm8x.js → suppress-tracing-Bjw2QoK9-B-C6JSH0.js} +2 -2
  20. package/dist/{url-CHzjVJbO-CQh_-bbK.js → url-AGmPOn3p-Nf-yonf7.js} +49 -49
  21. package/dist/{utils-D8tO_9FV-Dz_8ziJx.js → utils-Bj96zPkA-CaIxOdMx.js} +12 -12
  22. package/dist/{utils-DAJoEkd6-DqcqG-Cu.js → utils-CdgT5_RS-Dm48SXHo.js} +2 -2
  23. package/package.json +1 -1
  24. package/dist/SimpleSpanProcessor-gnSJN3jD-DOHVdqI6.js +0 -910
  25. package/dist/diag-api-DQpLxQUF-Bq4RIuXi.js +0 -6
  26. package/dist/index-DznVXDC2.js +0 -10133
@@ -0,0 +1,910 @@
1
+ import { i as b, G as _, O as E, N as nt, l as ot, A as it, $ as st, a as at } from "./index-CKkSVDgi.js";
2
+ import { r as p } from "./diag-api-D0EHkb_O-CZgFzAdr.js";
3
+ import { dD as j, y as ut, dE as V, dF as ct, dG as I, p as lt, O as A, dH as pt, dI as ht, at as N, av as M, dJ as dt, au as ft } from "./url-AGmPOn3p-Nf-yonf7.js";
4
+ import { E as f, O as P, v as _t, V as mt, Z as vt, f as Y, S as St, n as yt, Q as C, l as Q, c as gt, d as Et, p as Tt, a as bt, b as v, e as Lt } from "./index-BEqb-DSH-DXJeHdfn.js";
5
+ import { u as Pt, a as wt } from "./suppress-tracing-Bjw2QoK9-B-C6JSH0.js";
6
+ import { R as H } from "./Resource-CEOg0ZP2-BPKGawzY.js";
7
+ import { a as U } from "./ExportResult-BacsqwKA-wgTHEn_9.js";
8
+ var At = "exception", B = function() {
9
+ return B = Object.assign || function(e) {
10
+ for (var t, r = 1, n = arguments.length; r < n; r++) {
11
+ t = arguments[r];
12
+ for (var i in t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
13
+ }
14
+ return e;
15
+ }, B.apply(this, arguments);
16
+ }, xt = function(e) {
17
+ var t = typeof Symbol == "function" && Symbol.iterator, r = t && e[t], n = 0;
18
+ if (r) return r.call(e);
19
+ if (e && typeof e.length == "number") return {
20
+ next: function() {
21
+ return e && n >= e.length && (e = void 0), { value: e && e[n++], done: !e };
22
+ }
23
+ };
24
+ throw new TypeError(t ? "Object is not iterable." : "Symbol.iterator is not defined.");
25
+ }, X = function(e, t) {
26
+ var r = typeof Symbol == "function" && e[Symbol.iterator];
27
+ if (!r) return e;
28
+ var n = r.call(e), i, o = [], s;
29
+ try {
30
+ for (; (t === void 0 || t-- > 0) && !(i = n.next()).done; ) o.push(i.value);
31
+ } catch (a) {
32
+ s = { error: a };
33
+ } finally {
34
+ try {
35
+ i && !i.done && (r = n.return) && r.call(n);
36
+ } finally {
37
+ if (s) throw s.error;
38
+ }
39
+ }
40
+ return o;
41
+ }, Ot = function(e, t, r) {
42
+ if (arguments.length === 2) for (var n = 0, i = t.length, o; n < i; n++)
43
+ (o || !(n in t)) && (o || (o = Array.prototype.slice.call(t, 0, n)), o[n] = t[n]);
44
+ return e.concat(o || Array.prototype.slice.call(t));
45
+ }, Ct = (
46
+ /** @class */
47
+ (function() {
48
+ function e(t, r, n, i, o, s, a, c, u, l) {
49
+ a === void 0 && (a = []), this.attributes = {}, this.links = [], this.events = [], this._droppedAttributesCount = 0, this._droppedEventsCount = 0, this._droppedLinksCount = 0, this.status = {
50
+ code: it.UNSET
51
+ }, this.endTime = [0, 0], this._ended = !1, this._duration = [-1, -1], this.name = n, this._spanContext = i, this.parentSpanId = s, this.kind = o, this.links = a;
52
+ var h = Date.now();
53
+ this._performanceStartTime = I.now(), this._performanceOffset = h - (this._performanceStartTime + dt()), this._startTimeProvided = c != null, this.startTime = this._getTime(c ?? h), this.resource = t.resource, this.instrumentationLibrary = t.instrumentationLibrary, this._spanLimits = t.getSpanLimits(), this._attributeValueLengthLimit = this._spanLimits.attributeValueLengthLimit || 0, l != null && this.setAttributes(l), this._spanProcessor = t.getActiveSpanProcessor(), this._spanProcessor.onStart(this, r);
54
+ }
55
+ return e.prototype.spanContext = function() {
56
+ return this._spanContext;
57
+ }, e.prototype.setAttribute = function(t, r) {
58
+ return r == null || this._isSpanEnded() ? this : t.length === 0 ? (p.warn("Invalid attribute key: " + t), this) : bt(r) ? Object.keys(this.attributes).length >= this._spanLimits.attributeCountLimit && !Object.prototype.hasOwnProperty.call(this.attributes, t) ? (this._droppedAttributesCount++, this) : (this.attributes[t] = this._truncateToSize(r), this) : (p.warn("Invalid attribute value set for key: " + t), this);
59
+ }, e.prototype.setAttributes = function(t) {
60
+ var r, n;
61
+ try {
62
+ for (var i = xt(Object.entries(t)), o = i.next(); !o.done; o = i.next()) {
63
+ var s = X(o.value, 2), a = s[0], c = s[1];
64
+ this.setAttribute(a, c);
65
+ }
66
+ } catch (u) {
67
+ r = { error: u };
68
+ } finally {
69
+ try {
70
+ o && !o.done && (n = i.return) && n.call(i);
71
+ } finally {
72
+ if (r) throw r.error;
73
+ }
74
+ }
75
+ return this;
76
+ }, e.prototype.addEvent = function(t, r, n) {
77
+ if (this._isSpanEnded())
78
+ return this;
79
+ if (this._spanLimits.eventCountLimit === 0)
80
+ return p.warn("No events allowed."), this._droppedEventsCount++, this;
81
+ this.events.length >= this._spanLimits.eventCountLimit && (this._droppedEventsCount === 0 && p.debug("Dropping extra events."), this.events.shift(), this._droppedEventsCount++), V(r) && (V(n) || (n = r), r = void 0);
82
+ var i = C(r);
83
+ return this.events.push({
84
+ name: t,
85
+ attributes: i,
86
+ time: this._getTime(n),
87
+ droppedAttributesCount: 0
88
+ }), this;
89
+ }, e.prototype.addLink = function(t) {
90
+ return this.links.push(t), this;
91
+ }, e.prototype.addLinks = function(t) {
92
+ var r;
93
+ return (r = this.links).push.apply(r, Ot([], X(t), !1)), this;
94
+ }, e.prototype.setStatus = function(t) {
95
+ return this._isSpanEnded() ? this : (this.status = B({}, t), this.status.message != null && typeof t.message != "string" && (p.warn("Dropping invalid status.message of type '" + typeof t.message + "', expected 'string'"), delete this.status.message), this);
96
+ }, e.prototype.updateName = function(t) {
97
+ return this._isSpanEnded() ? this : (this.name = t, this);
98
+ }, e.prototype.end = function(t) {
99
+ if (this._isSpanEnded()) {
100
+ p.error(this.name + " " + this._spanContext.traceId + "-" + this._spanContext.spanId + " - You can only call end() on a span once.");
101
+ return;
102
+ }
103
+ this._ended = !0, this.endTime = this._getTime(t), this._duration = ct(this.startTime, this.endTime), this._duration[0] < 0 && (p.warn("Inconsistent start and end time, startTime > endTime. Setting span duration to 0ms.", this.startTime, this.endTime), this.endTime = this.startTime.slice(), this._duration = [0, 0]), this._droppedEventsCount > 0 && p.warn("Dropped " + this._droppedEventsCount + " events because eventCountLimit reached"), this._spanProcessor.onEnd(this);
104
+ }, e.prototype._getTime = function(t) {
105
+ if (typeof t == "number" && t <= I.now())
106
+ return lt(t + this._performanceOffset);
107
+ if (typeof t == "number")
108
+ return A(t);
109
+ if (t instanceof Date)
110
+ return A(t.getTime());
111
+ if (pt(t))
112
+ return t;
113
+ if (this._startTimeProvided)
114
+ return A(Date.now());
115
+ var r = I.now() - this._performanceStartTime;
116
+ return ht(this.startTime, A(r));
117
+ }, e.prototype.isRecording = function() {
118
+ return this._ended === !1;
119
+ }, e.prototype.recordException = function(t, r) {
120
+ var n = {};
121
+ typeof t == "string" ? n[M] = t : t && (t.code ? n[N] = t.code.toString() : t.name && (n[N] = t.name), t.message && (n[M] = t.message), t.stack && (n[ft] = t.stack)), n[N] || n[M] ? this.addEvent(At, n, r) : p.warn("Failed to record an exception " + t);
122
+ }, Object.defineProperty(e.prototype, "duration", {
123
+ get: function() {
124
+ return this._duration;
125
+ },
126
+ enumerable: !1,
127
+ configurable: !0
128
+ }), Object.defineProperty(e.prototype, "ended", {
129
+ get: function() {
130
+ return this._ended;
131
+ },
132
+ enumerable: !1,
133
+ configurable: !0
134
+ }), Object.defineProperty(e.prototype, "droppedAttributesCount", {
135
+ get: function() {
136
+ return this._droppedAttributesCount;
137
+ },
138
+ enumerable: !1,
139
+ configurable: !0
140
+ }), Object.defineProperty(e.prototype, "droppedEventsCount", {
141
+ get: function() {
142
+ return this._droppedEventsCount;
143
+ },
144
+ enumerable: !1,
145
+ configurable: !0
146
+ }), Object.defineProperty(e.prototype, "droppedLinksCount", {
147
+ get: function() {
148
+ return this._droppedLinksCount;
149
+ },
150
+ enumerable: !1,
151
+ configurable: !0
152
+ }), e.prototype._isSpanEnded = function() {
153
+ return this._ended && p.warn("Can not execute the operation on ended Span {traceId: " + this._spanContext.traceId + ", spanId: " + this._spanContext.spanId + "}"), this._ended;
154
+ }, e.prototype._truncateToLimitUtil = function(t, r) {
155
+ return t.length <= r ? t : t.substring(0, r);
156
+ }, e.prototype._truncateToSize = function(t) {
157
+ var r = this, n = this._attributeValueLengthLimit;
158
+ return n <= 0 ? (p.warn("Attribute value limit must be positive, got " + n), t) : typeof t == "string" ? this._truncateToLimitUtil(t, n) : Array.isArray(t) ? t.map(function(i) {
159
+ return typeof i == "string" ? r._truncateToLimitUtil(i, n) : i;
160
+ }) : t;
161
+ }, e;
162
+ })()
163
+ ), L;
164
+ (function(e) {
165
+ e[e.NOT_RECORD = 0] = "NOT_RECORD", e[e.RECORD = 1] = "RECORD", e[e.RECORD_AND_SAMPLED = 2] = "RECORD_AND_SAMPLED";
166
+ })(L || (L = {}));
167
+ var R = (
168
+ /** @class */
169
+ (function() {
170
+ function e() {
171
+ }
172
+ return e.prototype.shouldSample = function() {
173
+ return {
174
+ decision: L.NOT_RECORD
175
+ };
176
+ }, e.prototype.toString = function() {
177
+ return "AlwaysOffSampler";
178
+ }, e;
179
+ })()
180
+ ), T = (
181
+ /** @class */
182
+ (function() {
183
+ function e() {
184
+ }
185
+ return e.prototype.shouldSample = function() {
186
+ return {
187
+ decision: L.RECORD_AND_SAMPLED
188
+ };
189
+ }, e.prototype.toString = function() {
190
+ return "AlwaysOnSampler";
191
+ }, e;
192
+ })()
193
+ ), D = (
194
+ /** @class */
195
+ (function() {
196
+ function e(t) {
197
+ var r, n, i, o;
198
+ this._root = t.root, this._root || (f(new Error("ParentBasedSampler must have a root sampler configured")), this._root = new T()), this._remoteParentSampled = (r = t.remoteParentSampled) !== null && r !== void 0 ? r : new T(), this._remoteParentNotSampled = (n = t.remoteParentNotSampled) !== null && n !== void 0 ? n : new R(), this._localParentSampled = (i = t.localParentSampled) !== null && i !== void 0 ? i : new T(), this._localParentNotSampled = (o = t.localParentNotSampled) !== null && o !== void 0 ? o : new R();
199
+ }
200
+ return e.prototype.shouldSample = function(t, r, n, i, o, s) {
201
+ var a = _.getSpanContext(t);
202
+ return !a || !st(a) ? this._root.shouldSample(t, r, n, i, o, s) : a.isRemote ? a.traceFlags & b.SAMPLED ? this._remoteParentSampled.shouldSample(t, r, n, i, o, s) : this._remoteParentNotSampled.shouldSample(t, r, n, i, o, s) : a.traceFlags & b.SAMPLED ? this._localParentSampled.shouldSample(t, r, n, i, o, s) : this._localParentNotSampled.shouldSample(t, r, n, i, o, s);
203
+ }, e.prototype.toString = function() {
204
+ return "ParentBased{root=" + this._root.toString() + ", remoteParentSampled=" + this._remoteParentSampled.toString() + ", remoteParentNotSampled=" + this._remoteParentNotSampled.toString() + ", localParentSampled=" + this._localParentSampled.toString() + ", localParentNotSampled=" + this._localParentNotSampled.toString() + "}";
205
+ }, e;
206
+ })()
207
+ ), q = (
208
+ /** @class */
209
+ (function() {
210
+ function e(t) {
211
+ t === void 0 && (t = 0), this._ratio = t, this._ratio = this._normalize(t), this._upperBound = Math.floor(this._ratio * 4294967295);
212
+ }
213
+ return e.prototype.shouldSample = function(t, r) {
214
+ return {
215
+ decision: at(r) && this._accumulate(r) < this._upperBound ? L.RECORD_AND_SAMPLED : L.NOT_RECORD
216
+ };
217
+ }, e.prototype.toString = function() {
218
+ return "TraceIdRatioBased{" + this._ratio + "}";
219
+ }, e.prototype._normalize = function(t) {
220
+ return typeof t != "number" || isNaN(t) ? 0 : t >= 1 ? 1 : t <= 0 ? 0 : t;
221
+ }, e.prototype._accumulate = function(t) {
222
+ for (var r = 0, n = 0; n < t.length / 8; n++) {
223
+ var i = n * 8, o = parseInt(t.slice(i, i + 8), 16);
224
+ r = (r ^ o) >>> 0;
225
+ }
226
+ return r;
227
+ }, e;
228
+ })()
229
+ ), Rt = v.AlwaysOn, g = 1;
230
+ function J() {
231
+ var e = P();
232
+ return {
233
+ sampler: $(e),
234
+ forceFlushTimeoutMillis: 3e4,
235
+ generalLimits: {
236
+ attributeValueLengthLimit: e.OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT,
237
+ attributeCountLimit: e.OTEL_ATTRIBUTE_COUNT_LIMIT
238
+ },
239
+ spanLimits: {
240
+ attributeValueLengthLimit: e.OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT,
241
+ attributeCountLimit: e.OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT,
242
+ linkCountLimit: e.OTEL_SPAN_LINK_COUNT_LIMIT,
243
+ eventCountLimit: e.OTEL_SPAN_EVENT_COUNT_LIMIT,
244
+ attributePerEventCountLimit: e.OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT,
245
+ attributePerLinkCountLimit: e.OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT
246
+ },
247
+ mergeResourceWithDefaults: !0
248
+ };
249
+ }
250
+ function $(e) {
251
+ switch (e === void 0 && (e = P()), e.OTEL_TRACES_SAMPLER) {
252
+ case v.AlwaysOn:
253
+ return new T();
254
+ case v.AlwaysOff:
255
+ return new R();
256
+ case v.ParentBasedAlwaysOn:
257
+ return new D({
258
+ root: new T()
259
+ });
260
+ case v.ParentBasedAlwaysOff:
261
+ return new D({
262
+ root: new R()
263
+ });
264
+ case v.TraceIdRatio:
265
+ return new q(Z(e));
266
+ case v.ParentBasedTraceIdRatio:
267
+ return new D({
268
+ root: new q(Z(e))
269
+ });
270
+ default:
271
+ return p.error('OTEL_TRACES_SAMPLER value "' + e.OTEL_TRACES_SAMPLER + " invalid, defaulting to " + Rt + '".'), new T();
272
+ }
273
+ }
274
+ function Z(e) {
275
+ if (e.OTEL_TRACES_SAMPLER_ARG === void 0 || e.OTEL_TRACES_SAMPLER_ARG === "")
276
+ return p.error("OTEL_TRACES_SAMPLER_ARG is blank, defaulting to " + g + "."), g;
277
+ var t = Number(e.OTEL_TRACES_SAMPLER_ARG);
278
+ return isNaN(t) ? (p.error("OTEL_TRACES_SAMPLER_ARG=" + e.OTEL_TRACES_SAMPLER_ARG + " was given, but it is invalid, defaulting to " + g + "."), g) : t < 0 || t > 1 ? (p.error("OTEL_TRACES_SAMPLER_ARG=" + e.OTEL_TRACES_SAMPLER_ARG + " was given, but it is out of range ([0..1]), defaulting to " + g + "."), g) : t;
279
+ }
280
+ function It(e) {
281
+ var t = {
282
+ sampler: $()
283
+ }, r = J(), n = Object.assign({}, r, t, e);
284
+ return n.generalLimits = Object.assign({}, r.generalLimits, e.generalLimits || {}), n.spanLimits = Object.assign({}, r.spanLimits, e.spanLimits || {}), n;
285
+ }
286
+ function Nt(e) {
287
+ var t, r, n, i, o, s, a, c, u, l, h, d, y = Object.assign({}, e.spanLimits), m = gt();
288
+ return y.attributeCountLimit = (s = (o = (i = (r = (t = e.spanLimits) === null || t === void 0 ? void 0 : t.attributeCountLimit) !== null && r !== void 0 ? r : (n = e.generalLimits) === null || n === void 0 ? void 0 : n.attributeCountLimit) !== null && i !== void 0 ? i : m.OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT) !== null && o !== void 0 ? o : m.OTEL_ATTRIBUTE_COUNT_LIMIT) !== null && s !== void 0 ? s : Et, y.attributeValueLengthLimit = (d = (h = (l = (c = (a = e.spanLimits) === null || a === void 0 ? void 0 : a.attributeValueLengthLimit) !== null && c !== void 0 ? c : (u = e.generalLimits) === null || u === void 0 ? void 0 : u.attributeValueLengthLimit) !== null && l !== void 0 ? l : m.OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT) !== null && h !== void 0 ? h : m.OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT) !== null && d !== void 0 ? d : Tt, Object.assign({}, e, { spanLimits: y });
289
+ }
290
+ var Mt = (
291
+ /** @class */
292
+ (function() {
293
+ function e(t, r) {
294
+ this._exporter = t, this._isExporting = !1, this._finishedSpans = [], this._droppedSpansCount = 0;
295
+ var n = P();
296
+ this._maxExportBatchSize = typeof r?.maxExportBatchSize == "number" ? r.maxExportBatchSize : n.OTEL_BSP_MAX_EXPORT_BATCH_SIZE, this._maxQueueSize = typeof r?.maxQueueSize == "number" ? r.maxQueueSize : n.OTEL_BSP_MAX_QUEUE_SIZE, this._scheduledDelayMillis = typeof r?.scheduledDelayMillis == "number" ? r.scheduledDelayMillis : n.OTEL_BSP_SCHEDULE_DELAY, this._exportTimeoutMillis = typeof r?.exportTimeoutMillis == "number" ? r.exportTimeoutMillis : n.OTEL_BSP_EXPORT_TIMEOUT, this._shutdownOnce = new Y(this._shutdown, this), this._maxExportBatchSize > this._maxQueueSize && (p.warn("BatchSpanProcessor: maxExportBatchSize must be smaller or equal to maxQueueSize, setting maxExportBatchSize to match maxQueueSize"), this._maxExportBatchSize = this._maxQueueSize);
297
+ }
298
+ return e.prototype.forceFlush = function() {
299
+ return this._shutdownOnce.isCalled ? this._shutdownOnce.promise : this._flushAll();
300
+ }, e.prototype.onStart = function(t, r) {
301
+ }, e.prototype.onEnd = function(t) {
302
+ this._shutdownOnce.isCalled || (t.spanContext().traceFlags & b.SAMPLED) !== 0 && this._addToBuffer(t);
303
+ }, e.prototype.shutdown = function() {
304
+ return this._shutdownOnce.call();
305
+ }, e.prototype._shutdown = function() {
306
+ var t = this;
307
+ return Promise.resolve().then(function() {
308
+ return t.onShutdown();
309
+ }).then(function() {
310
+ return t._flushAll();
311
+ }).then(function() {
312
+ return t._exporter.shutdown();
313
+ });
314
+ }, e.prototype._addToBuffer = function(t) {
315
+ if (this._finishedSpans.length >= this._maxQueueSize) {
316
+ this._droppedSpansCount === 0 && p.debug("maxQueueSize reached, dropping spans"), this._droppedSpansCount++;
317
+ return;
318
+ }
319
+ this._droppedSpansCount > 0 && (p.warn("Dropped " + this._droppedSpansCount + " spans because maxQueueSize reached"), this._droppedSpansCount = 0), this._finishedSpans.push(t), this._maybeStartTimer();
320
+ }, e.prototype._flushAll = function() {
321
+ var t = this;
322
+ return new Promise(function(r, n) {
323
+ for (var i = [], o = Math.ceil(t._finishedSpans.length / t._maxExportBatchSize), s = 0, a = o; s < a; s++)
324
+ i.push(t._flushOneBatch());
325
+ Promise.all(i).then(function() {
326
+ r();
327
+ }).catch(n);
328
+ });
329
+ }, e.prototype._flushOneBatch = function() {
330
+ var t = this;
331
+ return this._clearTimer(), this._finishedSpans.length === 0 ? Promise.resolve() : new Promise(function(r, n) {
332
+ var i = setTimeout(function() {
333
+ n(new Error("Timeout"));
334
+ }, t._exportTimeoutMillis);
335
+ E.with(Pt(E.active()), function() {
336
+ var o;
337
+ t._finishedSpans.length <= t._maxExportBatchSize ? (o = t._finishedSpans, t._finishedSpans = []) : o = t._finishedSpans.splice(0, t._maxExportBatchSize);
338
+ for (var s = function() {
339
+ return t._exporter.export(o, function(h) {
340
+ var d;
341
+ clearTimeout(i), h.code === U.SUCCESS ? r() : n((d = h.error) !== null && d !== void 0 ? d : new Error("BatchSpanProcessor: span export failed"));
342
+ });
343
+ }, a = null, c = 0, u = o.length; c < u; c++) {
344
+ var l = o[c];
345
+ l.resource.asyncAttributesPending && l.resource.waitForAsyncAttributes && (a ?? (a = []), a.push(l.resource.waitForAsyncAttributes()));
346
+ }
347
+ a === null ? s() : Promise.all(a).then(s, function(h) {
348
+ f(h), n(h);
349
+ });
350
+ });
351
+ });
352
+ }, e.prototype._maybeStartTimer = function() {
353
+ var t = this;
354
+ if (!this._isExporting) {
355
+ var r = function() {
356
+ t._isExporting = !0, t._flushOneBatch().finally(function() {
357
+ t._isExporting = !1, t._finishedSpans.length > 0 && (t._clearTimer(), t._maybeStartTimer());
358
+ }).catch(function(n) {
359
+ t._isExporting = !1, f(n);
360
+ });
361
+ };
362
+ if (this._finishedSpans.length >= this._maxExportBatchSize)
363
+ return r();
364
+ this._timer === void 0 && (this._timer = setTimeout(function() {
365
+ return r();
366
+ }, this._scheduledDelayMillis), St(this._timer));
367
+ }
368
+ }, e.prototype._clearTimer = function() {
369
+ this._timer !== void 0 && (clearTimeout(this._timer), this._timer = void 0);
370
+ }, e;
371
+ })()
372
+ ), Dt = /* @__PURE__ */ (function() {
373
+ var e = function(t, r) {
374
+ return e = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(n, i) {
375
+ n.__proto__ = i;
376
+ } || function(n, i) {
377
+ for (var o in i) Object.prototype.hasOwnProperty.call(i, o) && (n[o] = i[o]);
378
+ }, e(t, r);
379
+ };
380
+ return function(t, r) {
381
+ if (typeof r != "function" && r !== null)
382
+ throw new TypeError("Class extends value " + String(r) + " is not a constructor or null");
383
+ e(t, r);
384
+ function n() {
385
+ this.constructor = t;
386
+ }
387
+ t.prototype = r === null ? Object.create(r) : (n.prototype = r.prototype, new n());
388
+ };
389
+ })(), Bt = (
390
+ /** @class */
391
+ (function(e) {
392
+ Dt(t, e);
393
+ function t(r, n) {
394
+ var i = e.call(this, r, n) || this;
395
+ return i.onInit(n), i;
396
+ }
397
+ return t.prototype.onInit = function(r) {
398
+ var n = this;
399
+ r?.disableAutoFlushOnDocumentHide !== !0 && typeof document < "u" && (this._visibilityChangeListener = function() {
400
+ document.visibilityState === "hidden" && n.forceFlush().catch(function(i) {
401
+ f(i);
402
+ });
403
+ }, this._pageHideListener = function() {
404
+ n.forceFlush().catch(function(i) {
405
+ f(i);
406
+ });
407
+ }, document.addEventListener("visibilitychange", this._visibilityChangeListener), document.addEventListener("pagehide", this._pageHideListener));
408
+ }, t.prototype.onShutdown = function() {
409
+ typeof document < "u" && (this._visibilityChangeListener && document.removeEventListener("visibilitychange", this._visibilityChangeListener), this._pageHideListener && document.removeEventListener("pagehide", this._pageHideListener));
410
+ }, t;
411
+ })(Mt)
412
+ ), Ut = 8, Ft = 16, kt = (
413
+ /** @class */
414
+ /* @__PURE__ */ (function() {
415
+ function e() {
416
+ this.generateTraceId = K(Ft), this.generateSpanId = K(Ut);
417
+ }
418
+ return e;
419
+ })()
420
+ ), x = Array(32);
421
+ function K(e) {
422
+ return function() {
423
+ for (var t = 0; t < e * 2; t++)
424
+ x[t] = Math.floor(Math.random() * 16) + 48, x[t] >= 58 && (x[t] += 39);
425
+ return String.fromCharCode.apply(null, x.slice(0, e * 2));
426
+ };
427
+ }
428
+ var zt = (
429
+ /** @class */
430
+ (function() {
431
+ function e(t, r, n) {
432
+ this._tracerProvider = n;
433
+ var i = It(r);
434
+ this._sampler = i.sampler, this._generalLimits = i.generalLimits, this._spanLimits = i.spanLimits, this._idGenerator = r.idGenerator || new kt(), this.resource = n.resource, this.instrumentationLibrary = t;
435
+ }
436
+ return e.prototype.startSpan = function(t, r, n) {
437
+ var i, o, s;
438
+ r === void 0 && (r = {}), n === void 0 && (n = E.active()), r.root && (n = _.deleteSpan(n));
439
+ var a = _.getSpan(n);
440
+ if (wt(n)) {
441
+ p.debug("Instrumentation suppressed, returning Noop Span");
442
+ var c = _.wrapSpanContext(nt);
443
+ return c;
444
+ }
445
+ var u = a?.spanContext(), l = this._idGenerator.generateSpanId(), h, d, y;
446
+ !u || !_.isSpanContextValid(u) ? h = this._idGenerator.generateTraceId() : (h = u.traceId, d = u.traceState, y = u.spanId);
447
+ var m = (i = r.kind) !== null && i !== void 0 ? i : ot.INTERNAL, F = ((o = r.links) !== null && o !== void 0 ? o : []).map(function(G) {
448
+ return {
449
+ context: G.context,
450
+ attributes: C(G.attributes)
451
+ };
452
+ }), k = C(r.attributes), w = this._sampler.shouldSample(n, h, t, m, k, F);
453
+ d = (s = w.traceState) !== null && s !== void 0 ? s : d;
454
+ var tt = w.decision === Q.RECORD_AND_SAMPLED ? b.SAMPLED : b.NONE, z = { traceId: h, spanId: l, traceFlags: tt, traceState: d };
455
+ if (w.decision === Q.NOT_RECORD) {
456
+ p.debug("Recording is off, propagating context in a non-recording span");
457
+ var c = _.wrapSpanContext(z);
458
+ return c;
459
+ }
460
+ var et = C(Object.assign(k, w.attributes)), rt = new Ct(this, n, t, z, m, y, F, r.startTime, void 0, et);
461
+ return rt;
462
+ }, e.prototype.startActiveSpan = function(t, r, n, i) {
463
+ var o, s, a;
464
+ if (!(arguments.length < 2)) {
465
+ arguments.length === 2 ? a = r : arguments.length === 3 ? (o = r, a = n) : (o = r, s = n, a = i);
466
+ var c = s ?? E.active(), u = this.startSpan(t, o, c), l = _.setSpan(c, u);
467
+ return E.with(l, a, void 0, u);
468
+ }
469
+ }, e.prototype.getGeneralLimits = function() {
470
+ return this._generalLimits;
471
+ }, e.prototype.getSpanLimits = function() {
472
+ return this._spanLimits;
473
+ }, e.prototype.getActiveSpanProcessor = function() {
474
+ return this._tracerProvider.getActiveSpanProcessor();
475
+ }, e;
476
+ })()
477
+ ), O = function(e) {
478
+ var t = typeof Symbol == "function" && Symbol.iterator, r = t && e[t], n = 0;
479
+ if (r) return r.call(e);
480
+ if (e && typeof e.length == "number") return {
481
+ next: function() {
482
+ return e && n >= e.length && (e = void 0), { value: e && e[n++], done: !e };
483
+ }
484
+ };
485
+ throw new TypeError(t ? "Object is not iterable." : "Symbol.iterator is not defined.");
486
+ }, W = (
487
+ /** @class */
488
+ (function() {
489
+ function e(t) {
490
+ this._spanProcessors = t;
491
+ }
492
+ return e.prototype.forceFlush = function() {
493
+ var t, r, n = [];
494
+ try {
495
+ for (var i = O(this._spanProcessors), o = i.next(); !o.done; o = i.next()) {
496
+ var s = o.value;
497
+ n.push(s.forceFlush());
498
+ }
499
+ } catch (a) {
500
+ t = { error: a };
501
+ } finally {
502
+ try {
503
+ o && !o.done && (r = i.return) && r.call(i);
504
+ } finally {
505
+ if (t) throw t.error;
506
+ }
507
+ }
508
+ return new Promise(function(a) {
509
+ Promise.all(n).then(function() {
510
+ a();
511
+ }).catch(function(c) {
512
+ f(c || new Error("MultiSpanProcessor: forceFlush failed")), a();
513
+ });
514
+ });
515
+ }, e.prototype.onStart = function(t, r) {
516
+ var n, i;
517
+ try {
518
+ for (var o = O(this._spanProcessors), s = o.next(); !s.done; s = o.next()) {
519
+ var a = s.value;
520
+ a.onStart(t, r);
521
+ }
522
+ } catch (c) {
523
+ n = { error: c };
524
+ } finally {
525
+ try {
526
+ s && !s.done && (i = o.return) && i.call(o);
527
+ } finally {
528
+ if (n) throw n.error;
529
+ }
530
+ }
531
+ }, e.prototype.onEnd = function(t) {
532
+ var r, n;
533
+ try {
534
+ for (var i = O(this._spanProcessors), o = i.next(); !o.done; o = i.next()) {
535
+ var s = o.value;
536
+ s.onEnd(t);
537
+ }
538
+ } catch (a) {
539
+ r = { error: a };
540
+ } finally {
541
+ try {
542
+ o && !o.done && (n = i.return) && n.call(i);
543
+ } finally {
544
+ if (r) throw r.error;
545
+ }
546
+ }
547
+ }, e.prototype.shutdown = function() {
548
+ var t, r, n = [];
549
+ try {
550
+ for (var i = O(this._spanProcessors), o = i.next(); !o.done; o = i.next()) {
551
+ var s = o.value;
552
+ n.push(s.shutdown());
553
+ }
554
+ } catch (a) {
555
+ t = { error: a };
556
+ } finally {
557
+ try {
558
+ o && !o.done && (r = i.return) && r.call(i);
559
+ } finally {
560
+ if (t) throw t.error;
561
+ }
562
+ }
563
+ return new Promise(function(a, c) {
564
+ Promise.all(n).then(function() {
565
+ a();
566
+ }, c);
567
+ });
568
+ }, e;
569
+ })()
570
+ ), Gt = (
571
+ /** @class */
572
+ (function() {
573
+ function e() {
574
+ }
575
+ return e.prototype.onStart = function(t, r) {
576
+ }, e.prototype.onEnd = function(t) {
577
+ }, e.prototype.shutdown = function() {
578
+ return Promise.resolve();
579
+ }, e.prototype.forceFlush = function() {
580
+ return Promise.resolve();
581
+ }, e;
582
+ })()
583
+ ), jt = function(e, t) {
584
+ var r = typeof Symbol == "function" && e[Symbol.iterator];
585
+ if (!r) return e;
586
+ var n = r.call(e), i, o = [], s;
587
+ try {
588
+ for (; (t === void 0 || t-- > 0) && !(i = n.next()).done; ) o.push(i.value);
589
+ } catch (a) {
590
+ s = { error: a };
591
+ } finally {
592
+ try {
593
+ i && !i.done && (r = n.return) && r.call(n);
594
+ } finally {
595
+ if (s) throw s.error;
596
+ }
597
+ }
598
+ return o;
599
+ }, Vt = function(e, t, r) {
600
+ if (arguments.length === 2) for (var n = 0, i = t.length, o; n < i; n++)
601
+ (o || !(n in t)) && (o || (o = Array.prototype.slice.call(t, 0, n)), o[n] = t[n]);
602
+ return e.concat(o || Array.prototype.slice.call(t));
603
+ }, S;
604
+ (function(e) {
605
+ e[e.resolved = 0] = "resolved", e[e.timeout = 1] = "timeout", e[e.error = 2] = "error", e[e.unresolved = 3] = "unresolved";
606
+ })(S || (S = {}));
607
+ var te = (
608
+ /** @class */
609
+ (function() {
610
+ function e(t) {
611
+ t === void 0 && (t = {});
612
+ var r, n;
613
+ this._registeredSpanProcessors = [], this._tracers = /* @__PURE__ */ new Map();
614
+ var i = yt({}, J(), Nt(t));
615
+ if (this.resource = (r = i.resource) !== null && r !== void 0 ? r : H.empty(), i.mergeResourceWithDefaults && (this.resource = H.default().merge(this.resource)), this._config = Object.assign({}, i, {
616
+ resource: this.resource
617
+ }), !((n = t.spanProcessors) === null || n === void 0) && n.length)
618
+ this._registeredSpanProcessors = Vt([], jt(t.spanProcessors), !1), this.activeSpanProcessor = new W(this._registeredSpanProcessors);
619
+ else {
620
+ var o = this._buildExporterFromEnv();
621
+ if (o !== void 0) {
622
+ var s = new Bt(o);
623
+ this.activeSpanProcessor = s;
624
+ } else
625
+ this.activeSpanProcessor = new Gt();
626
+ }
627
+ }
628
+ return e.prototype.getTracer = function(t, r, n) {
629
+ var i = t + "@" + (r || "") + ":" + (n?.schemaUrl || "");
630
+ return this._tracers.has(i) || this._tracers.set(i, new zt({ name: t, version: r, schemaUrl: n?.schemaUrl }, this._config, this)), this._tracers.get(i);
631
+ }, e.prototype.addSpanProcessor = function(t) {
632
+ this._registeredSpanProcessors.length === 0 && this.activeSpanProcessor.shutdown().catch(function(r) {
633
+ return p.error("Error while trying to shutdown current span processor", r);
634
+ }), this._registeredSpanProcessors.push(t), this.activeSpanProcessor = new W(this._registeredSpanProcessors);
635
+ }, e.prototype.getActiveSpanProcessor = function() {
636
+ return this.activeSpanProcessor;
637
+ }, e.prototype.register = function(t) {
638
+ t === void 0 && (t = {}), _.setGlobalTracerProvider(this), t.propagator === void 0 && (t.propagator = this._buildPropagatorFromEnv()), t.contextManager && E.setGlobalContextManager(t.contextManager), t.propagator && ut.setGlobalPropagator(t.propagator);
639
+ }, e.prototype.forceFlush = function() {
640
+ var t = this._config.forceFlushTimeoutMillis, r = this._registeredSpanProcessors.map(function(n) {
641
+ return new Promise(function(i) {
642
+ var o, s = setTimeout(function() {
643
+ i(new Error("Span processor did not completed within timeout period of " + t + " ms")), o = S.timeout;
644
+ }, t);
645
+ n.forceFlush().then(function() {
646
+ clearTimeout(s), o !== S.timeout && (o = S.resolved, i(o));
647
+ }).catch(function(a) {
648
+ clearTimeout(s), o = S.error, i(a);
649
+ });
650
+ });
651
+ });
652
+ return new Promise(function(n, i) {
653
+ Promise.all(r).then(function(o) {
654
+ var s = o.filter(function(a) {
655
+ return a !== S.resolved;
656
+ });
657
+ s.length > 0 ? i(s) : n();
658
+ }).catch(function(o) {
659
+ return i([o]);
660
+ });
661
+ });
662
+ }, e.prototype.shutdown = function() {
663
+ return this.activeSpanProcessor.shutdown();
664
+ }, e.prototype._getPropagator = function(t) {
665
+ var r;
666
+ return (r = this.constructor._registeredPropagators.get(t)) === null || r === void 0 ? void 0 : r();
667
+ }, e.prototype._getSpanExporter = function(t) {
668
+ var r;
669
+ return (r = this.constructor._registeredExporters.get(t)) === null || r === void 0 ? void 0 : r();
670
+ }, e.prototype._buildPropagatorFromEnv = function() {
671
+ var t = this, r = Array.from(new Set(P().OTEL_PROPAGATORS)), n = r.map(function(o) {
672
+ var s = t._getPropagator(o);
673
+ return s || p.warn('Propagator "' + o + '" requested through environment variable is unavailable.'), s;
674
+ }), i = n.reduce(function(o, s) {
675
+ return s && o.push(s), o;
676
+ }, []);
677
+ if (i.length !== 0)
678
+ return r.length === 1 ? i[0] : new _t({
679
+ propagators: i
680
+ });
681
+ }, e.prototype._buildExporterFromEnv = function() {
682
+ var t = P().OTEL_TRACES_EXPORTER;
683
+ if (!(t === "none" || t === "")) {
684
+ var r = this._getSpanExporter(t);
685
+ return r || p.error('Exporter "' + t + '" requested through environment variable is unavailable.'), r;
686
+ }
687
+ }, e._registeredPropagators = /* @__PURE__ */ new Map([
688
+ ["tracecontext", function() {
689
+ return new mt();
690
+ }],
691
+ ["baggage", function() {
692
+ return new vt();
693
+ }]
694
+ ]), e._registeredExporters = /* @__PURE__ */ new Map(), e;
695
+ })()
696
+ ), Qt = function(e) {
697
+ var t = typeof Symbol == "function" && Symbol.iterator, r = t && e[t], n = 0;
698
+ if (r) return r.call(e);
699
+ if (e && typeof e.length == "number") return {
700
+ next: function() {
701
+ return e && n >= e.length && (e = void 0), { value: e && e[n++], done: !e };
702
+ }
703
+ };
704
+ throw new TypeError(t ? "Object is not iterable." : "Symbol.iterator is not defined.");
705
+ }, ee = (
706
+ /** @class */
707
+ (function() {
708
+ function e() {
709
+ }
710
+ return e.prototype.export = function(t, r) {
711
+ return this._sendSpans(t, r);
712
+ }, e.prototype.shutdown = function() {
713
+ return this._sendSpans([]), this.forceFlush();
714
+ }, e.prototype.forceFlush = function() {
715
+ return Promise.resolve();
716
+ }, e.prototype._exportInfo = function(t) {
717
+ var r;
718
+ return {
719
+ resource: {
720
+ attributes: t.resource.attributes
721
+ },
722
+ instrumentationScope: t.instrumentationLibrary,
723
+ traceId: t.spanContext().traceId,
724
+ parentId: t.parentSpanId,
725
+ traceState: (r = t.spanContext().traceState) === null || r === void 0 ? void 0 : r.serialize(),
726
+ name: t.name,
727
+ id: t.spanContext().spanId,
728
+ kind: t.kind,
729
+ timestamp: j(t.startTime),
730
+ duration: j(t.duration),
731
+ attributes: t.attributes,
732
+ status: t.status,
733
+ events: t.events,
734
+ links: t.links
735
+ };
736
+ }, e.prototype._sendSpans = function(t, r) {
737
+ var n, i;
738
+ try {
739
+ for (var o = Qt(t), s = o.next(); !s.done; s = o.next()) {
740
+ var a = s.value;
741
+ console.dir(this._exportInfo(a), { depth: 3 });
742
+ }
743
+ } catch (c) {
744
+ n = { error: c };
745
+ } finally {
746
+ try {
747
+ s && !s.done && (i = o.return) && i.call(o);
748
+ } finally {
749
+ if (n) throw n.error;
750
+ }
751
+ }
752
+ if (r)
753
+ return r({ code: U.SUCCESS });
754
+ }, e;
755
+ })()
756
+ ), Ht = function(e, t, r, n) {
757
+ function i(o) {
758
+ return o instanceof r ? o : new r(function(s) {
759
+ s(o);
760
+ });
761
+ }
762
+ return new (r || (r = Promise))(function(o, s) {
763
+ function a(l) {
764
+ try {
765
+ u(n.next(l));
766
+ } catch (h) {
767
+ s(h);
768
+ }
769
+ }
770
+ function c(l) {
771
+ try {
772
+ u(n.throw(l));
773
+ } catch (h) {
774
+ s(h);
775
+ }
776
+ }
777
+ function u(l) {
778
+ l.done ? o(l.value) : i(l.value).then(a, c);
779
+ }
780
+ u((n = n.apply(e, [])).next());
781
+ });
782
+ }, Xt = function(e, t) {
783
+ var r = { label: 0, sent: function() {
784
+ if (o[0] & 1) throw o[1];
785
+ return o[1];
786
+ }, trys: [], ops: [] }, n, i, o, s;
787
+ return s = { next: a(0), throw: a(1), return: a(2) }, typeof Symbol == "function" && (s[Symbol.iterator] = function() {
788
+ return this;
789
+ }), s;
790
+ function a(u) {
791
+ return function(l) {
792
+ return c([u, l]);
793
+ };
794
+ }
795
+ function c(u) {
796
+ if (n) throw new TypeError("Generator is already executing.");
797
+ for (; r; ) try {
798
+ if (n = 1, i && (o = u[0] & 2 ? i.return : u[0] ? i.throw || ((o = i.return) && o.call(i), 0) : i.next) && !(o = o.call(i, u[1])).done) return o;
799
+ switch (i = 0, o && (u = [u[0] & 2, o.value]), u[0]) {
800
+ case 0:
801
+ case 1:
802
+ o = u;
803
+ break;
804
+ case 4:
805
+ return r.label++, { value: u[1], done: !1 };
806
+ case 5:
807
+ r.label++, i = u[1], u = [0];
808
+ continue;
809
+ case 7:
810
+ u = r.ops.pop(), r.trys.pop();
811
+ continue;
812
+ default:
813
+ if (o = r.trys, !(o = o.length > 0 && o[o.length - 1]) && (u[0] === 6 || u[0] === 2)) {
814
+ r = 0;
815
+ continue;
816
+ }
817
+ if (u[0] === 3 && (!o || u[1] > o[0] && u[1] < o[3])) {
818
+ r.label = u[1];
819
+ break;
820
+ }
821
+ if (u[0] === 6 && r.label < o[1]) {
822
+ r.label = o[1], o = u;
823
+ break;
824
+ }
825
+ if (o && r.label < o[2]) {
826
+ r.label = o[2], r.ops.push(u);
827
+ break;
828
+ }
829
+ o[2] && r.ops.pop(), r.trys.pop();
830
+ continue;
831
+ }
832
+ u = t.call(e, r);
833
+ } catch (l) {
834
+ u = [6, l], i = 0;
835
+ } finally {
836
+ n = o = 0;
837
+ }
838
+ if (u[0] & 5) throw u[1];
839
+ return { value: u[0] ? u[1] : void 0, done: !0 };
840
+ }
841
+ }, re = (
842
+ /** @class */
843
+ (function() {
844
+ function e(t) {
845
+ this._exporter = t, this._shutdownOnce = new Y(this._shutdown, this), this._unresolvedExports = /* @__PURE__ */ new Set();
846
+ }
847
+ return e.prototype.forceFlush = function() {
848
+ return Ht(this, void 0, void 0, function() {
849
+ return Xt(this, function(t) {
850
+ switch (t.label) {
851
+ case 0:
852
+ return [4, Promise.all(Array.from(this._unresolvedExports))];
853
+ case 1:
854
+ return t.sent(), this._exporter.forceFlush ? [4, this._exporter.forceFlush()] : [3, 3];
855
+ case 2:
856
+ t.sent(), t.label = 3;
857
+ case 3:
858
+ return [
859
+ 2
860
+ /*return*/
861
+ ];
862
+ }
863
+ });
864
+ });
865
+ }, e.prototype.onStart = function(t, r) {
866
+ }, e.prototype.onEnd = function(t) {
867
+ var r = this, n, i;
868
+ if (!this._shutdownOnce.isCalled && (t.spanContext().traceFlags & b.SAMPLED) !== 0) {
869
+ var o = function() {
870
+ return Lt._export(r._exporter, [t]).then(function(a) {
871
+ var c;
872
+ a.code !== U.SUCCESS && f((c = a.error) !== null && c !== void 0 ? c : new Error("SimpleSpanProcessor: span export failed (status " + a + ")"));
873
+ }).catch(function(a) {
874
+ f(a);
875
+ });
876
+ };
877
+ if (t.resource.asyncAttributesPending) {
878
+ var s = (i = (n = t.resource).waitForAsyncAttributes) === null || i === void 0 ? void 0 : i.call(n).then(function() {
879
+ return s != null && r._unresolvedExports.delete(s), o();
880
+ }, function(a) {
881
+ return f(a);
882
+ });
883
+ s != null && this._unresolvedExports.add(s);
884
+ } else
885
+ o();
886
+ }
887
+ }, e.prototype.shutdown = function() {
888
+ return this._shutdownOnce.call();
889
+ }, e.prototype._shutdown = function() {
890
+ return this._exporter.shutdown();
891
+ }, e;
892
+ })()
893
+ );
894
+ export {
895
+ D as B,
896
+ Bt as D,
897
+ kt as G,
898
+ L as P,
899
+ R,
900
+ S,
901
+ q as W,
902
+ ee as e,
903
+ T as g,
904
+ Gt as j,
905
+ re as r,
906
+ te as t,
907
+ Ct as x,
908
+ zt as z
909
+ };
910
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiU2ltcGxlU3BhblByb2Nlc3Nvci1EUmN1c3BIcC0hfnswMDR9fi5qcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgaSBhcyBpciwgRyBhcyBHZSwgTyBhcyBPZSwgTiBhcyBOcywgbCBhcyBsdCwgQSBhcyBBZSwgJCBhcyAkbiwgYSBhcyBPcyB9IGZyb20gJy4vaW5kZXgtIX57MDA3fX4uanMnO1xuaW1wb3J0IHsgciB9IGZyb20gJy4vZGlhZy1hcGktRDBFSGtiX08tIX57MDBhfX4uanMnO1xuaW1wb3J0IHsgZEQgYXMgamUsIHkgYXMgeV8sIGRFIGFzIHFlLCBkRiBhcyBYZSwgZEcgYXMgUiQyLCBwIGFzIHBfLCBPIGFzIE8kMSwgZEggYXMgTl8sIGRJIGFzIGJfLCBhdCBhcyBOQSwgYXYgYXMgTUEsIGRKIGFzIHJfLCBhdSBhcyBlQSB9IGZyb20gJy4vdXJsLUFHbVBPbjNwLSF+ezAwYn1+LmpzJztcbmltcG9ydCB7IEUgYXMgRXIsIE8gYXMgT2UkMSwgdiBhcyB2ZSwgViBhcyBWZSwgWiBhcyBaciwgZiBhcyBmdCwgUyBhcyBTZSwgbiBhcyBudCwgUSBhcyBRciwgbCwgYyBhcyBjZSwgZCwgcCwgYSBhcyBhciwgYiBhcyB2LCBlIGFzIE90JDEgfSBmcm9tICcuL2luZGV4LUJFcWItRFNILSF+ezAwaX1+LmpzJztcbmltcG9ydCB7IHUsIGEgYXMgYSQxIH0gZnJvbSAnLi9zdXBwcmVzcy10cmFjaW5nLUJqdzJRb0s5LSF+ezAwbn1+LmpzJztcbmltcG9ydCB7IFIgYXMgUiQxIH0gZnJvbSAnLi9SZXNvdXJjZS1DRU9nMFpQMi0hfnswMDJ9fi5qcyc7XG5pbXBvcnQgeyBhIH0gZnJvbSAnLi9FeHBvcnRSZXN1bHQtQmFjc3F3S0EtIX57MDBsfX4uanMnO1xuXG52YXIgd3QgPSBcImV4Y2VwdGlvblwiLCBEID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBEID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbihyKSB7XG4gICAgZm9yICh2YXIgdCwgZSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBlIDwgbjsgZSsrKSB7XG4gICAgICB0ID0gYXJndW1lbnRzW2VdO1xuICAgICAgZm9yICh2YXIgbyBpbiB0KSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCwgbykgJiYgKHJbb10gPSB0W29dKTtcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH0sIEQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn0sIEN0ID0gZnVuY3Rpb24ocikge1xuICB2YXIgdCA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgZSA9IHQgJiYgclt0XSwgbiA9IDA7XG4gIGlmIChlKSByZXR1cm4gZS5jYWxsKHIpO1xuICBpZiAociAmJiB0eXBlb2Ygci5sZW5ndGggPT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiByICYmIG4gPj0gci5sZW5ndGggJiYgKHIgPSB2b2lkIDApLCB7IHZhbHVlOiByICYmIHJbbisrXSwgZG9uZTogIXIgfTtcbiAgICB9XG4gIH07XG4gIHRocm93IG5ldyBUeXBlRXJyb3IodCA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn0sIFggPSBmdW5jdGlvbihyLCB0KSB7XG4gIHZhciBlID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgcltTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIWUpIHJldHVybiByO1xuICB2YXIgbiA9IGUuY2FsbChyKSwgbywgaSA9IFtdLCBhO1xuICB0cnkge1xuICAgIGZvciAoOyAodCA9PT0gdm9pZCAwIHx8IHQtLSA+IDApICYmICEobyA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChvLnZhbHVlKTtcbiAgfSBjYXRjaCAocykge1xuICAgIGEgPSB7IGVycm9yOiBzIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIG8gJiYgIW8uZG9uZSAmJiAoZSA9IG4ucmV0dXJuKSAmJiBlLmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChhKSB0aHJvdyBhLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIE90ID0gZnVuY3Rpb24ociwgdCwgZSkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIG8gPSB0Lmxlbmd0aCwgaTsgbiA8IG87IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gdCkpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwgMCwgbikpLCBpW25dID0gdFtuXSk7XG4gIHJldHVybiByLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKTtcbn0sIHh0ID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiByJDEodCwgZSwgbiwgbywgaSwgYSwgcywgbCwgdSwgcCkge1xuICAgICAgcyA9PT0gdm9pZCAwICYmIChzID0gW10pLCB0aGlzLmF0dHJpYnV0ZXMgPSB7fSwgdGhpcy5saW5rcyA9IFtdLCB0aGlzLmV2ZW50cyA9IFtdLCB0aGlzLl9kcm9wcGVkQXR0cmlidXRlc0NvdW50ID0gMCwgdGhpcy5fZHJvcHBlZEV2ZW50c0NvdW50ID0gMCwgdGhpcy5fZHJvcHBlZExpbmtzQ291bnQgPSAwLCB0aGlzLnN0YXR1cyA9IHtcbiAgICAgICAgY29kZTogQWUuVU5TRVRcbiAgICAgIH0sIHRoaXMuZW5kVGltZSA9IFswLCAwXSwgdGhpcy5fZW5kZWQgPSBmYWxzZSwgdGhpcy5fZHVyYXRpb24gPSBbLTEsIC0xXSwgdGhpcy5uYW1lID0gbiwgdGhpcy5fc3BhbkNvbnRleHQgPSBvLCB0aGlzLnBhcmVudFNwYW5JZCA9IGEsIHRoaXMua2luZCA9IGksIHRoaXMubGlua3MgPSBzO1xuICAgICAgdmFyIGMgPSBEYXRlLm5vdygpO1xuICAgICAgdGhpcy5fcGVyZm9ybWFuY2VTdGFydFRpbWUgPSBSJDIubm93KCksIHRoaXMuX3BlcmZvcm1hbmNlT2Zmc2V0ID0gYyAtICh0aGlzLl9wZXJmb3JtYW5jZVN0YXJ0VGltZSArIHJfKCkpLCB0aGlzLl9zdGFydFRpbWVQcm92aWRlZCA9IGwgIT0gbnVsbCwgdGhpcy5zdGFydFRpbWUgPSB0aGlzLl9nZXRUaW1lKGwgPz8gYyksIHRoaXMucmVzb3VyY2UgPSB0LnJlc291cmNlLCB0aGlzLmluc3RydW1lbnRhdGlvbkxpYnJhcnkgPSB0Lmluc3RydW1lbnRhdGlvbkxpYnJhcnksIHRoaXMuX3NwYW5MaW1pdHMgPSB0LmdldFNwYW5MaW1pdHMoKSwgdGhpcy5fYXR0cmlidXRlVmFsdWVMZW5ndGhMaW1pdCA9IHRoaXMuX3NwYW5MaW1pdHMuYXR0cmlidXRlVmFsdWVMZW5ndGhMaW1pdCB8fCAwLCBwICE9IG51bGwgJiYgdGhpcy5zZXRBdHRyaWJ1dGVzKHApLCB0aGlzLl9zcGFuUHJvY2Vzc29yID0gdC5nZXRBY3RpdmVTcGFuUHJvY2Vzc29yKCksIHRoaXMuX3NwYW5Qcm9jZXNzb3Iub25TdGFydCh0aGlzLCBlKTtcbiAgICB9XG4gICAgcmV0dXJuIHIkMS5wcm90b3R5cGUuc3BhbkNvbnRleHQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zcGFuQ29udGV4dDtcbiAgICB9LCByJDEucHJvdG90eXBlLnNldEF0dHJpYnV0ZSA9IGZ1bmN0aW9uKHQsIGUpIHtcbiAgICAgIHJldHVybiBlID09IG51bGwgfHwgdGhpcy5faXNTcGFuRW5kZWQoKSA/IHRoaXMgOiB0Lmxlbmd0aCA9PT0gMCA/IChyLndhcm4oXCJJbnZhbGlkIGF0dHJpYnV0ZSBrZXk6IFwiICsgdCksIHRoaXMpIDogYXIoZSkgPyBPYmplY3Qua2V5cyh0aGlzLmF0dHJpYnV0ZXMpLmxlbmd0aCA+PSB0aGlzLl9zcGFuTGltaXRzLmF0dHJpYnV0ZUNvdW50TGltaXQgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmF0dHJpYnV0ZXMsIHQpID8gKHRoaXMuX2Ryb3BwZWRBdHRyaWJ1dGVzQ291bnQrKywgdGhpcykgOiAodGhpcy5hdHRyaWJ1dGVzW3RdID0gdGhpcy5fdHJ1bmNhdGVUb1NpemUoZSksIHRoaXMpIDogKHIud2FybihcIkludmFsaWQgYXR0cmlidXRlIHZhbHVlIHNldCBmb3Iga2V5OiBcIiArIHQpLCB0aGlzKTtcbiAgICB9LCByJDEucHJvdG90eXBlLnNldEF0dHJpYnV0ZXMgPSBmdW5jdGlvbih0KSB7XG4gICAgICB2YXIgZSwgbjtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIG8gPSBDdChPYmplY3QuZW50cmllcyh0KSksIGkgPSBvLm5leHQoKTsgIWkuZG9uZTsgaSA9IG8ubmV4dCgpKSB7XG4gICAgICAgICAgdmFyIGEgPSBYKGkudmFsdWUsIDIpLCBzID0gYVswXSwgbCA9IGFbMV07XG4gICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUocywgbCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKHUpIHtcbiAgICAgICAgZSA9IHsgZXJyb3I6IHUgfTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaSAmJiAhaS5kb25lICYmIChuID0gby5yZXR1cm4pICYmIG4uY2FsbChvKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAoZSkgdGhyb3cgZS5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSwgciQxLnByb3RvdHlwZS5hZGRFdmVudCA9IGZ1bmN0aW9uKHQsIGUsIG4pIHtcbiAgICAgIGlmICh0aGlzLl9pc1NwYW5FbmRlZCgpKVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIGlmICh0aGlzLl9zcGFuTGltaXRzLmV2ZW50Q291bnRMaW1pdCA9PT0gMClcbiAgICAgICAgcmV0dXJuIHIud2FybihcIk5vIGV2ZW50cyBhbGxvd2VkLlwiKSwgdGhpcy5fZHJvcHBlZEV2ZW50c0NvdW50KyssIHRoaXM7XG4gICAgICB0aGlzLmV2ZW50cy5sZW5ndGggPj0gdGhpcy5fc3BhbkxpbWl0cy5ldmVudENvdW50TGltaXQgJiYgKHRoaXMuX2Ryb3BwZWRFdmVudHNDb3VudCA9PT0gMCAmJiByLmRlYnVnKFwiRHJvcHBpbmcgZXh0cmEgZXZlbnRzLlwiKSwgdGhpcy5ldmVudHMuc2hpZnQoKSwgdGhpcy5fZHJvcHBlZEV2ZW50c0NvdW50KyspLCBxZShlKSAmJiAocWUobikgfHwgKG4gPSBlKSwgZSA9IHZvaWQgMCk7XG4gICAgICB2YXIgbyA9IFFyKGUpO1xuICAgICAgcmV0dXJuIHRoaXMuZXZlbnRzLnB1c2goe1xuICAgICAgICBuYW1lOiB0LFxuICAgICAgICBhdHRyaWJ1dGVzOiBvLFxuICAgICAgICB0aW1lOiB0aGlzLl9nZXRUaW1lKG4pLFxuICAgICAgICBkcm9wcGVkQXR0cmlidXRlc0NvdW50OiAwXG4gICAgICB9KSwgdGhpcztcbiAgICB9LCByJDEucHJvdG90eXBlLmFkZExpbmsgPSBmdW5jdGlvbih0KSB7XG4gICAgICByZXR1cm4gdGhpcy5saW5rcy5wdXNoKHQpLCB0aGlzO1xuICAgIH0sIHIkMS5wcm90b3R5cGUuYWRkTGlua3MgPSBmdW5jdGlvbih0KSB7XG4gICAgICB2YXIgZTtcbiAgICAgIHJldHVybiAoZSA9IHRoaXMubGlua3MpLnB1c2guYXBwbHkoZSwgT3QoW10sIFgodCksIGZhbHNlKSksIHRoaXM7XG4gICAgfSwgciQxLnByb3RvdHlwZS5zZXRTdGF0dXMgPSBmdW5jdGlvbih0KSB7XG4gICAgICByZXR1cm4gdGhpcy5faXNTcGFuRW5kZWQoKSA/IHRoaXMgOiAodGhpcy5zdGF0dXMgPSBEKHt9LCB0KSwgdGhpcy5zdGF0dXMubWVzc2FnZSAhPSBudWxsICYmIHR5cGVvZiB0Lm1lc3NhZ2UgIT0gXCJzdHJpbmdcIiAmJiAoci53YXJuKFwiRHJvcHBpbmcgaW52YWxpZCBzdGF0dXMubWVzc2FnZSBvZiB0eXBlICdcIiArIHR5cGVvZiB0Lm1lc3NhZ2UgKyBcIicsIGV4cGVjdGVkICdzdHJpbmcnXCIpLCBkZWxldGUgdGhpcy5zdGF0dXMubWVzc2FnZSksIHRoaXMpO1xuICAgIH0sIHIkMS5wcm90b3R5cGUudXBkYXRlTmFtZSA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pc1NwYW5FbmRlZCgpID8gdGhpcyA6ICh0aGlzLm5hbWUgPSB0LCB0aGlzKTtcbiAgICB9LCByJDEucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIGlmICh0aGlzLl9pc1NwYW5FbmRlZCgpKSB7XG4gICAgICAgIHIuZXJyb3IodGhpcy5uYW1lICsgXCIgXCIgKyB0aGlzLl9zcGFuQ29udGV4dC50cmFjZUlkICsgXCItXCIgKyB0aGlzLl9zcGFuQ29udGV4dC5zcGFuSWQgKyBcIiAtIFlvdSBjYW4gb25seSBjYWxsIGVuZCgpIG9uIGEgc3BhbiBvbmNlLlwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5fZW5kZWQgPSB0cnVlLCB0aGlzLmVuZFRpbWUgPSB0aGlzLl9nZXRUaW1lKHQpLCB0aGlzLl9kdXJhdGlvbiA9IFhlKHRoaXMuc3RhcnRUaW1lLCB0aGlzLmVuZFRpbWUpLCB0aGlzLl9kdXJhdGlvblswXSA8IDAgJiYgKHIud2FybihcIkluY29uc2lzdGVudCBzdGFydCBhbmQgZW5kIHRpbWUsIHN0YXJ0VGltZSA+IGVuZFRpbWUuIFNldHRpbmcgc3BhbiBkdXJhdGlvbiB0byAwbXMuXCIsIHRoaXMuc3RhcnRUaW1lLCB0aGlzLmVuZFRpbWUpLCB0aGlzLmVuZFRpbWUgPSB0aGlzLnN0YXJ0VGltZS5zbGljZSgpLCB0aGlzLl9kdXJhdGlvbiA9IFswLCAwXSksIHRoaXMuX2Ryb3BwZWRFdmVudHNDb3VudCA+IDAgJiYgci53YXJuKFwiRHJvcHBlZCBcIiArIHRoaXMuX2Ryb3BwZWRFdmVudHNDb3VudCArIFwiIGV2ZW50cyBiZWNhdXNlIGV2ZW50Q291bnRMaW1pdCByZWFjaGVkXCIpLCB0aGlzLl9zcGFuUHJvY2Vzc29yLm9uRW5kKHRoaXMpO1xuICAgIH0sIHIkMS5wcm90b3R5cGUuX2dldFRpbWUgPSBmdW5jdGlvbih0KSB7XG4gICAgICBpZiAodHlwZW9mIHQgPT0gXCJudW1iZXJcIiAmJiB0IDw9IFIkMi5ub3coKSlcbiAgICAgICAgcmV0dXJuIHBfKHQgKyB0aGlzLl9wZXJmb3JtYW5jZU9mZnNldCk7XG4gICAgICBpZiAodHlwZW9mIHQgPT0gXCJudW1iZXJcIilcbiAgICAgICAgcmV0dXJuIE8kMSh0KTtcbiAgICAgIGlmICh0IGluc3RhbmNlb2YgRGF0ZSlcbiAgICAgICAgcmV0dXJuIE8kMSh0LmdldFRpbWUoKSk7XG4gICAgICBpZiAoTl8odCkpXG4gICAgICAgIHJldHVybiB0O1xuICAgICAgaWYgKHRoaXMuX3N0YXJ0VGltZVByb3ZpZGVkKVxuICAgICAgICByZXR1cm4gTyQxKERhdGUubm93KCkpO1xuICAgICAgdmFyIGUgPSBSJDIubm93KCkgLSB0aGlzLl9wZXJmb3JtYW5jZVN0YXJ0VGltZTtcbiAgICAgIHJldHVybiBiXyh0aGlzLnN0YXJ0VGltZSwgTyQxKGUpKTtcbiAgICB9LCByJDEucHJvdG90eXBlLmlzUmVjb3JkaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZW5kZWQgPT09IGZhbHNlO1xuICAgIH0sIHIkMS5wcm90b3R5cGUucmVjb3JkRXhjZXB0aW9uID0gZnVuY3Rpb24odCwgZSkge1xuICAgICAgdmFyIG4gPSB7fTtcbiAgICAgIHR5cGVvZiB0ID09IFwic3RyaW5nXCIgPyBuW01BXSA9IHQgOiB0ICYmICh0LmNvZGUgPyBuW05BXSA9IHQuY29kZS50b1N0cmluZygpIDogdC5uYW1lICYmIChuW05BXSA9IHQubmFtZSksIHQubWVzc2FnZSAmJiAobltNQV0gPSB0Lm1lc3NhZ2UpLCB0LnN0YWNrICYmIChuW2VBXSA9IHQuc3RhY2spKSwgbltOQV0gfHwgbltNQV0gPyB0aGlzLmFkZEV2ZW50KHd0LCBuLCBlKSA6IHIud2FybihcIkZhaWxlZCB0byByZWNvcmQgYW4gZXhjZXB0aW9uIFwiICsgdCk7XG4gICAgfSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHIkMS5wcm90b3R5cGUsIFwiZHVyYXRpb25cIiwge1xuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2R1cmF0aW9uO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyJDEucHJvdG90eXBlLCBcImVuZGVkXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbmRlZDtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pLCBPYmplY3QuZGVmaW5lUHJvcGVydHkociQxLnByb3RvdHlwZSwgXCJkcm9wcGVkQXR0cmlidXRlc0NvdW50XCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kcm9wcGVkQXR0cmlidXRlc0NvdW50O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyJDEucHJvdG90eXBlLCBcImRyb3BwZWRFdmVudHNDb3VudFwiLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZHJvcHBlZEV2ZW50c0NvdW50O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyJDEucHJvdG90eXBlLCBcImRyb3BwZWRMaW5rc0NvdW50XCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kcm9wcGVkTGlua3NDb3VudDtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pLCByJDEucHJvdG90eXBlLl9pc1NwYW5FbmRlZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2VuZGVkICYmIHIud2FybihcIkNhbiBub3QgZXhlY3V0ZSB0aGUgb3BlcmF0aW9uIG9uIGVuZGVkIFNwYW4ge3RyYWNlSWQ6IFwiICsgdGhpcy5fc3BhbkNvbnRleHQudHJhY2VJZCArIFwiLCBzcGFuSWQ6IFwiICsgdGhpcy5fc3BhbkNvbnRleHQuc3BhbklkICsgXCJ9XCIpLCB0aGlzLl9lbmRlZDtcbiAgICB9LCByJDEucHJvdG90eXBlLl90cnVuY2F0ZVRvTGltaXRVdGlsID0gZnVuY3Rpb24odCwgZSkge1xuICAgICAgcmV0dXJuIHQubGVuZ3RoIDw9IGUgPyB0IDogdC5zdWJzdHJpbmcoMCwgZSk7XG4gICAgfSwgciQxLnByb3RvdHlwZS5fdHJ1bmNhdGVUb1NpemUgPSBmdW5jdGlvbih0KSB7XG4gICAgICB2YXIgZSA9IHRoaXMsIG4gPSB0aGlzLl9hdHRyaWJ1dGVWYWx1ZUxlbmd0aExpbWl0O1xuICAgICAgcmV0dXJuIG4gPD0gMCA/IChyLndhcm4oXCJBdHRyaWJ1dGUgdmFsdWUgbGltaXQgbXVzdCBiZSBwb3NpdGl2ZSwgZ290IFwiICsgbiksIHQpIDogdHlwZW9mIHQgPT0gXCJzdHJpbmdcIiA/IHRoaXMuX3RydW5jYXRlVG9MaW1pdFV0aWwodCwgbikgOiBBcnJheS5pc0FycmF5KHQpID8gdC5tYXAoZnVuY3Rpb24obykge1xuICAgICAgICByZXR1cm4gdHlwZW9mIG8gPT0gXCJzdHJpbmdcIiA/IGUuX3RydW5jYXRlVG9MaW1pdFV0aWwobywgbikgOiBvO1xuICAgICAgfSkgOiB0O1xuICAgIH0sIHIkMTtcbiAgfSkoKVxuKSwgUDtcbihmdW5jdGlvbihyKSB7XG4gIHJbci5OT1RfUkVDT1JEID0gMF0gPSBcIk5PVF9SRUNPUkRcIiwgcltyLlJFQ09SRCA9IDFdID0gXCJSRUNPUkRcIiwgcltyLlJFQ09SRF9BTkRfU0FNUExFRCA9IDJdID0gXCJSRUNPUkRfQU5EX1NBTVBMRURcIjtcbn0pKFAgfHwgKFAgPSB7fSkpO1xudmFyIFIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIHIoKSB7XG4gICAgfVxuICAgIHJldHVybiByLnByb3RvdHlwZS5zaG91bGRTYW1wbGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRlY2lzaW9uOiBQLk5PVF9SRUNPUkRcbiAgICAgIH07XG4gICAgfSwgci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIkFsd2F5c09mZlNhbXBsZXJcIjtcbiAgICB9LCByO1xuICB9KSgpXG4pLCBnID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiByKCkge1xuICAgIH1cbiAgICByZXR1cm4gci5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkZWNpc2lvbjogUC5SRUNPUkRfQU5EX1NBTVBMRURcbiAgICAgIH07XG4gICAgfSwgci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIkFsd2F5c09uU2FtcGxlclwiO1xuICAgIH0sIHI7XG4gIH0pKClcbiksIEIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIHIodCkge1xuICAgICAgdmFyIGUsIG4sIG8sIGk7XG4gICAgICB0aGlzLl9yb290ID0gdC5yb290LCB0aGlzLl9yb290IHx8IChFcihuZXcgRXJyb3IoXCJQYXJlbnRCYXNlZFNhbXBsZXIgbXVzdCBoYXZlIGEgcm9vdCBzYW1wbGVyIGNvbmZpZ3VyZWRcIikpLCB0aGlzLl9yb290ID0gbmV3IGcoKSksIHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQgPSAoZSA9IHQucmVtb3RlUGFyZW50U2FtcGxlZCkgIT09IG51bGwgJiYgZSAhPT0gdm9pZCAwID8gZSA6IG5ldyBnKCksIHRoaXMuX3JlbW90ZVBhcmVudE5vdFNhbXBsZWQgPSAobiA9IHQucmVtb3RlUGFyZW50Tm90U2FtcGxlZCkgIT09IG51bGwgJiYgbiAhPT0gdm9pZCAwID8gbiA6IG5ldyBSKCksIHRoaXMuX2xvY2FsUGFyZW50U2FtcGxlZCA9IChvID0gdC5sb2NhbFBhcmVudFNhbXBsZWQpICE9PSBudWxsICYmIG8gIT09IHZvaWQgMCA/IG8gOiBuZXcgZygpLCB0aGlzLl9sb2NhbFBhcmVudE5vdFNhbXBsZWQgPSAoaSA9IHQubG9jYWxQYXJlbnROb3RTYW1wbGVkKSAhPT0gbnVsbCAmJiBpICE9PSB2b2lkIDAgPyBpIDogbmV3IFIoKTtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLnNob3VsZFNhbXBsZSA9IGZ1bmN0aW9uKHQsIGUsIG4sIG8sIGksIGEpIHtcbiAgICAgIHZhciBzID0gR2UuZ2V0U3BhbkNvbnRleHQodCk7XG4gICAgICByZXR1cm4gIXMgfHwgISRuKHMpID8gdGhpcy5fcm9vdC5zaG91bGRTYW1wbGUodCwgZSwgbiwgbywgaSwgYSkgOiBzLmlzUmVtb3RlID8gcy50cmFjZUZsYWdzICYgaXIuU0FNUExFRCA/IHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQuc2hvdWxkU2FtcGxlKHQsIGUsIG4sIG8sIGksIGEpIDogdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZC5zaG91bGRTYW1wbGUodCwgZSwgbiwgbywgaSwgYSkgOiBzLnRyYWNlRmxhZ3MgJiBpci5TQU1QTEVEID8gdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkLnNob3VsZFNhbXBsZSh0LCBlLCBuLCBvLCBpLCBhKSA6IHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZC5zaG91bGRTYW1wbGUodCwgZSwgbiwgbywgaSwgYSk7XG4gICAgfSwgci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIlBhcmVudEJhc2Vke3Jvb3Q9XCIgKyB0aGlzLl9yb290LnRvU3RyaW5nKCkgKyBcIiwgcmVtb3RlUGFyZW50U2FtcGxlZD1cIiArIHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQudG9TdHJpbmcoKSArIFwiLCByZW1vdGVQYXJlbnROb3RTYW1wbGVkPVwiICsgdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZC50b1N0cmluZygpICsgXCIsIGxvY2FsUGFyZW50U2FtcGxlZD1cIiArIHRoaXMuX2xvY2FsUGFyZW50U2FtcGxlZC50b1N0cmluZygpICsgXCIsIGxvY2FsUGFyZW50Tm90U2FtcGxlZD1cIiArIHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZC50b1N0cmluZygpICsgXCJ9XCI7XG4gICAgfSwgcjtcbiAgfSkoKVxuKSwgVyA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcih0KSB7XG4gICAgICB0ID09PSB2b2lkIDAgJiYgKHQgPSAwKSwgdGhpcy5fcmF0aW8gPSB0LCB0aGlzLl9yYXRpbyA9IHRoaXMuX25vcm1hbGl6ZSh0KSwgdGhpcy5fdXBwZXJCb3VuZCA9IE1hdGguZmxvb3IodGhpcy5fcmF0aW8gKiA0Mjk0OTY3Mjk1KTtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLnNob3VsZFNhbXBsZSA9IGZ1bmN0aW9uKHQsIGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRlY2lzaW9uOiBPcyhlKSAmJiB0aGlzLl9hY2N1bXVsYXRlKGUpIDwgdGhpcy5fdXBwZXJCb3VuZCA/IFAuUkVDT1JEX0FORF9TQU1QTEVEIDogUC5OT1RfUkVDT1JEXG4gICAgICB9O1xuICAgIH0sIHIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJUcmFjZUlkUmF0aW9CYXNlZHtcIiArIHRoaXMuX3JhdGlvICsgXCJ9XCI7XG4gICAgfSwgci5wcm90b3R5cGUuX25vcm1hbGl6ZSA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdCAhPSBcIm51bWJlclwiIHx8IGlzTmFOKHQpID8gMCA6IHQgPj0gMSA/IDEgOiB0IDw9IDAgPyAwIDogdDtcbiAgICB9LCByLnByb3RvdHlwZS5fYWNjdW11bGF0ZSA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIGZvciAodmFyIGUgPSAwLCBuID0gMDsgbiA8IHQubGVuZ3RoIC8gODsgbisrKSB7XG4gICAgICAgIHZhciBvID0gbiAqIDgsIGkgPSBwYXJzZUludCh0LnNsaWNlKG8sIG8gKyA4KSwgMTYpO1xuICAgICAgICBlID0gKGUgXiBpKSA+Pj4gMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBlO1xuICAgIH0sIHI7XG4gIH0pKClcbiksIFJ0ID0gdi5BbHdheXNPbiwgRSA9IDE7XG5mdW5jdGlvbiBKKCkge1xuICB2YXIgciA9IE9lJDEoKTtcbiAgcmV0dXJuIHtcbiAgICBzYW1wbGVyOiAkKHIpLFxuICAgIGZvcmNlRmx1c2hUaW1lb3V0TWlsbGlzOiAzZTQsXG4gICAgZ2VuZXJhbExpbWl0czoge1xuICAgICAgYXR0cmlidXRlVmFsdWVMZW5ndGhMaW1pdDogci5PVEVMX0FUVFJJQlVURV9WQUxVRV9MRU5HVEhfTElNSVQsXG4gICAgICBhdHRyaWJ1dGVDb3VudExpbWl0OiByLk9URUxfQVRUUklCVVRFX0NPVU5UX0xJTUlUXG4gICAgfSxcbiAgICBzcGFuTGltaXRzOiB7XG4gICAgICBhdHRyaWJ1dGVWYWx1ZUxlbmd0aExpbWl0OiByLk9URUxfU1BBTl9BVFRSSUJVVEVfVkFMVUVfTEVOR1RIX0xJTUlULFxuICAgICAgYXR0cmlidXRlQ291bnRMaW1pdDogci5PVEVMX1NQQU5fQVRUUklCVVRFX0NPVU5UX0xJTUlULFxuICAgICAgbGlua0NvdW50TGltaXQ6IHIuT1RFTF9TUEFOX0xJTktfQ09VTlRfTElNSVQsXG4gICAgICBldmVudENvdW50TGltaXQ6IHIuT1RFTF9TUEFOX0VWRU5UX0NPVU5UX0xJTUlULFxuICAgICAgYXR0cmlidXRlUGVyRXZlbnRDb3VudExpbWl0OiByLk9URUxfU1BBTl9BVFRSSUJVVEVfUEVSX0VWRU5UX0NPVU5UX0xJTUlULFxuICAgICAgYXR0cmlidXRlUGVyTGlua0NvdW50TGltaXQ6IHIuT1RFTF9TUEFOX0FUVFJJQlVURV9QRVJfTElOS19DT1VOVF9MSU1JVFxuICAgIH0sXG4gICAgbWVyZ2VSZXNvdXJjZVdpdGhEZWZhdWx0czogdHJ1ZVxuICB9O1xufVxuZnVuY3Rpb24gJChyJDEpIHtcbiAgc3dpdGNoIChyJDEgPT09IHZvaWQgMCAmJiAociQxID0gT2UkMSgpKSwgciQxLk9URUxfVFJBQ0VTX1NBTVBMRVIpIHtcbiAgICBjYXNlIHYuQWx3YXlzT246XG4gICAgICByZXR1cm4gbmV3IGcoKTtcbiAgICBjYXNlIHYuQWx3YXlzT2ZmOlxuICAgICAgcmV0dXJuIG5ldyBSKCk7XG4gICAgY2FzZSB2LlBhcmVudEJhc2VkQWx3YXlzT246XG4gICAgICByZXR1cm4gbmV3IEIoe1xuICAgICAgICByb290OiBuZXcgZygpXG4gICAgICB9KTtcbiAgICBjYXNlIHYuUGFyZW50QmFzZWRBbHdheXNPZmY6XG4gICAgICByZXR1cm4gbmV3IEIoe1xuICAgICAgICByb290OiBuZXcgUigpXG4gICAgICB9KTtcbiAgICBjYXNlIHYuVHJhY2VJZFJhdGlvOlxuICAgICAgcmV0dXJuIG5ldyBXKFkociQxKSk7XG4gICAgY2FzZSB2LlBhcmVudEJhc2VkVHJhY2VJZFJhdGlvOlxuICAgICAgcmV0dXJuIG5ldyBCKHtcbiAgICAgICAgcm9vdDogbmV3IFcoWShyJDEpKVxuICAgICAgfSk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiByLmVycm9yKCdPVEVMX1RSQUNFU19TQU1QTEVSIHZhbHVlIFwiJyArIHIkMS5PVEVMX1RSQUNFU19TQU1QTEVSICsgXCIgaW52YWxpZCwgZGVmYXVsdGluZyB0byBcIiArIFJ0ICsgJ1wiLicpLCBuZXcgZygpO1xuICB9XG59XG5mdW5jdGlvbiBZKHIkMSkge1xuICBpZiAociQxLk9URUxfVFJBQ0VTX1NBTVBMRVJfQVJHID09PSB2b2lkIDAgfHwgciQxLk9URUxfVFJBQ0VTX1NBTVBMRVJfQVJHID09PSBcIlwiKVxuICAgIHJldHVybiByLmVycm9yKFwiT1RFTF9UUkFDRVNfU0FNUExFUl9BUkcgaXMgYmxhbmssIGRlZmF1bHRpbmcgdG8gXCIgKyBFICsgXCIuXCIpLCBFO1xuICB2YXIgdCA9IE51bWJlcihyJDEuT1RFTF9UUkFDRVNfU0FNUExFUl9BUkcpO1xuICByZXR1cm4gaXNOYU4odCkgPyAoci5lcnJvcihcIk9URUxfVFJBQ0VTX1NBTVBMRVJfQVJHPVwiICsgciQxLk9URUxfVFJBQ0VTX1NBTVBMRVJfQVJHICsgXCIgd2FzIGdpdmVuLCBidXQgaXQgaXMgaW52YWxpZCwgZGVmYXVsdGluZyB0byBcIiArIEUgKyBcIi5cIiksIEUpIDogdCA8IDAgfHwgdCA+IDEgPyAoci5lcnJvcihcIk9URUxfVFJBQ0VTX1NBTVBMRVJfQVJHPVwiICsgciQxLk9URUxfVFJBQ0VTX1NBTVBMRVJfQVJHICsgXCIgd2FzIGdpdmVuLCBidXQgaXQgaXMgb3V0IG9mIHJhbmdlIChbMC4uMV0pLCBkZWZhdWx0aW5nIHRvIFwiICsgRSArIFwiLlwiKSwgRSkgOiB0O1xufVxuZnVuY3Rpb24gSXQocikge1xuICB2YXIgdCA9IHtcbiAgICBzYW1wbGVyOiAkKClcbiAgfSwgZSA9IEooKSwgbiA9IE9iamVjdC5hc3NpZ24oe30sIGUsIHQsIHIpO1xuICByZXR1cm4gbi5nZW5lcmFsTGltaXRzID0gT2JqZWN0LmFzc2lnbih7fSwgZS5nZW5lcmFsTGltaXRzLCByLmdlbmVyYWxMaW1pdHMgfHwge30pLCBuLnNwYW5MaW1pdHMgPSBPYmplY3QuYXNzaWduKHt9LCBlLnNwYW5MaW1pdHMsIHIuc3BhbkxpbWl0cyB8fCB7fSksIG47XG59XG5mdW5jdGlvbiBOdChyKSB7XG4gIHZhciB0LCBlLCBuLCBvLCBpLCBhLCBzLCBsLCB1LCBwJDEsIGMsIGYsIHkgPSBPYmplY3QuYXNzaWduKHt9LCByLnNwYW5MaW1pdHMpLCBtID0gY2UoKTtcbiAgcmV0dXJuIHkuYXR0cmlidXRlQ291bnRMaW1pdCA9IChhID0gKGkgPSAobyA9IChlID0gKHQgPSByLnNwYW5MaW1pdHMpID09PSBudWxsIHx8IHQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHQuYXR0cmlidXRlQ291bnRMaW1pdCkgIT09IG51bGwgJiYgZSAhPT0gdm9pZCAwID8gZSA6IChuID0gci5nZW5lcmFsTGltaXRzKSA9PT0gbnVsbCB8fCBuID09PSB2b2lkIDAgPyB2b2lkIDAgOiBuLmF0dHJpYnV0ZUNvdW50TGltaXQpICE9PSBudWxsICYmIG8gIT09IHZvaWQgMCA/IG8gOiBtLk9URUxfU1BBTl9BVFRSSUJVVEVfQ09VTlRfTElNSVQpICE9PSBudWxsICYmIGkgIT09IHZvaWQgMCA/IGkgOiBtLk9URUxfQVRUUklCVVRFX0NPVU5UX0xJTUlUKSAhPT0gbnVsbCAmJiBhICE9PSB2b2lkIDAgPyBhIDogZCwgeS5hdHRyaWJ1dGVWYWx1ZUxlbmd0aExpbWl0ID0gKGYgPSAoYyA9IChwJDEgPSAobCA9IChzID0gci5zcGFuTGltaXRzKSA9PT0gbnVsbCB8fCBzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzLmF0dHJpYnV0ZVZhbHVlTGVuZ3RoTGltaXQpICE9PSBudWxsICYmIGwgIT09IHZvaWQgMCA/IGwgOiAodSA9IHIuZ2VuZXJhbExpbWl0cykgPT09IG51bGwgfHwgdSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdS5hdHRyaWJ1dGVWYWx1ZUxlbmd0aExpbWl0KSAhPT0gbnVsbCAmJiBwJDEgIT09IHZvaWQgMCA/IHAkMSA6IG0uT1RFTF9TUEFOX0FUVFJJQlVURV9WQUxVRV9MRU5HVEhfTElNSVQpICE9PSBudWxsICYmIGMgIT09IHZvaWQgMCA/IGMgOiBtLk9URUxfQVRUUklCVVRFX1ZBTFVFX0xFTkdUSF9MSU1JVCkgIT09IG51bGwgJiYgZiAhPT0gdm9pZCAwID8gZiA6IHAsIE9iamVjdC5hc3NpZ24oe30sIHIsIHsgc3BhbkxpbWl0czogeSB9KTtcbn1cbnZhciBNdCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gciQxKHQsIGUpIHtcbiAgICAgIHRoaXMuX2V4cG9ydGVyID0gdCwgdGhpcy5faXNFeHBvcnRpbmcgPSBmYWxzZSwgdGhpcy5fZmluaXNoZWRTcGFucyA9IFtdLCB0aGlzLl9kcm9wcGVkU3BhbnNDb3VudCA9IDA7XG4gICAgICB2YXIgbiA9IE9lJDEoKTtcbiAgICAgIHRoaXMuX21heEV4cG9ydEJhdGNoU2l6ZSA9IHR5cGVvZiBlPy5tYXhFeHBvcnRCYXRjaFNpemUgPT0gXCJudW1iZXJcIiA/IGUubWF4RXhwb3J0QmF0Y2hTaXplIDogbi5PVEVMX0JTUF9NQVhfRVhQT1JUX0JBVENIX1NJWkUsIHRoaXMuX21heFF1ZXVlU2l6ZSA9IHR5cGVvZiBlPy5tYXhRdWV1ZVNpemUgPT0gXCJudW1iZXJcIiA/IGUubWF4UXVldWVTaXplIDogbi5PVEVMX0JTUF9NQVhfUVVFVUVfU0laRSwgdGhpcy5fc2NoZWR1bGVkRGVsYXlNaWxsaXMgPSB0eXBlb2YgZT8uc2NoZWR1bGVkRGVsYXlNaWxsaXMgPT0gXCJudW1iZXJcIiA/IGUuc2NoZWR1bGVkRGVsYXlNaWxsaXMgOiBuLk9URUxfQlNQX1NDSEVEVUxFX0RFTEFZLCB0aGlzLl9leHBvcnRUaW1lb3V0TWlsbGlzID0gdHlwZW9mIGU/LmV4cG9ydFRpbWVvdXRNaWxsaXMgPT0gXCJudW1iZXJcIiA/IGUuZXhwb3J0VGltZW91dE1pbGxpcyA6IG4uT1RFTF9CU1BfRVhQT1JUX1RJTUVPVVQsIHRoaXMuX3NodXRkb3duT25jZSA9IG5ldyBmdCh0aGlzLl9zaHV0ZG93biwgdGhpcyksIHRoaXMuX21heEV4cG9ydEJhdGNoU2l6ZSA+IHRoaXMuX21heFF1ZXVlU2l6ZSAmJiAoci53YXJuKFwiQmF0Y2hTcGFuUHJvY2Vzc29yOiBtYXhFeHBvcnRCYXRjaFNpemUgbXVzdCBiZSBzbWFsbGVyIG9yIGVxdWFsIHRvIG1heFF1ZXVlU2l6ZSwgc2V0dGluZyBtYXhFeHBvcnRCYXRjaFNpemUgdG8gbWF0Y2ggbWF4UXVldWVTaXplXCIpLCB0aGlzLl9tYXhFeHBvcnRCYXRjaFNpemUgPSB0aGlzLl9tYXhRdWV1ZVNpemUpO1xuICAgIH1cbiAgICByZXR1cm4gciQxLnByb3RvdHlwZS5mb3JjZUZsdXNoID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2h1dGRvd25PbmNlLmlzQ2FsbGVkID8gdGhpcy5fc2h1dGRvd25PbmNlLnByb21pc2UgOiB0aGlzLl9mbHVzaEFsbCgpO1xuICAgIH0sIHIkMS5wcm90b3R5cGUub25TdGFydCA9IGZ1bmN0aW9uKHQsIGUpIHtcbiAgICB9LCByJDEucHJvdG90eXBlLm9uRW5kID0gZnVuY3Rpb24odCkge1xuICAgICAgdGhpcy5fc2h1dGRvd25PbmNlLmlzQ2FsbGVkIHx8ICh0LnNwYW5Db250ZXh0KCkudHJhY2VGbGFncyAmIGlyLlNBTVBMRUQpICE9PSAwICYmIHRoaXMuX2FkZFRvQnVmZmVyKHQpO1xuICAgIH0sIHIkMS5wcm90b3R5cGUuc2h1dGRvd24gPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zaHV0ZG93bk9uY2UuY2FsbCgpO1xuICAgIH0sIHIkMS5wcm90b3R5cGUuX3NodXRkb3duID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdCA9IHRoaXM7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHQub25TaHV0ZG93bigpO1xuICAgICAgfSkudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHQuX2ZsdXNoQWxsKCk7XG4gICAgICB9KS50aGVuKGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdC5fZXhwb3J0ZXIuc2h1dGRvd24oKTtcbiAgICAgIH0pO1xuICAgIH0sIHIkMS5wcm90b3R5cGUuX2FkZFRvQnVmZmVyID0gZnVuY3Rpb24odCkge1xuICAgICAgaWYgKHRoaXMuX2ZpbmlzaGVkU3BhbnMubGVuZ3RoID49IHRoaXMuX21heFF1ZXVlU2l6ZSkge1xuICAgICAgICB0aGlzLl9kcm9wcGVkU3BhbnNDb3VudCA9PT0gMCAmJiByLmRlYnVnKFwibWF4UXVldWVTaXplIHJlYWNoZWQsIGRyb3BwaW5nIHNwYW5zXCIpLCB0aGlzLl9kcm9wcGVkU3BhbnNDb3VudCsrO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLl9kcm9wcGVkU3BhbnNDb3VudCA+IDAgJiYgKHIud2FybihcIkRyb3BwZWQgXCIgKyB0aGlzLl9kcm9wcGVkU3BhbnNDb3VudCArIFwiIHNwYW5zIGJlY2F1c2UgbWF4UXVldWVTaXplIHJlYWNoZWRcIiksIHRoaXMuX2Ryb3BwZWRTcGFuc0NvdW50ID0gMCksIHRoaXMuX2ZpbmlzaGVkU3BhbnMucHVzaCh0KSwgdGhpcy5fbWF5YmVTdGFydFRpbWVyKCk7XG4gICAgfSwgciQxLnByb3RvdHlwZS5fZmx1c2hBbGwgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB0ID0gdGhpcztcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihlLCBuKSB7XG4gICAgICAgIGZvciAodmFyIG8gPSBbXSwgaSA9IE1hdGguY2VpbCh0Ll9maW5pc2hlZFNwYW5zLmxlbmd0aCAvIHQuX21heEV4cG9ydEJhdGNoU2l6ZSksIGEgPSAwLCBzID0gaTsgYSA8IHM7IGErKylcbiAgICAgICAgICBvLnB1c2godC5fZmx1c2hPbmVCYXRjaCgpKTtcbiAgICAgICAgUHJvbWlzZS5hbGwobykudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgICBlKCk7XG4gICAgICAgIH0pLmNhdGNoKG4pO1xuICAgICAgfSk7XG4gICAgfSwgciQxLnByb3RvdHlwZS5fZmx1c2hPbmVCYXRjaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHQgPSB0aGlzO1xuICAgICAgcmV0dXJuIHRoaXMuX2NsZWFyVGltZXIoKSwgdGhpcy5fZmluaXNoZWRTcGFucy5sZW5ndGggPT09IDAgPyBQcm9taXNlLnJlc29sdmUoKSA6IG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsIG4pIHtcbiAgICAgICAgdmFyIG8gPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgIG4obmV3IEVycm9yKFwiVGltZW91dFwiKSk7XG4gICAgICAgIH0sIHQuX2V4cG9ydFRpbWVvdXRNaWxsaXMpO1xuICAgICAgICBPZS53aXRoKHUoT2UuYWN0aXZlKCkpLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICB2YXIgaTtcbiAgICAgICAgICB0Ll9maW5pc2hlZFNwYW5zLmxlbmd0aCA8PSB0Ll9tYXhFeHBvcnRCYXRjaFNpemUgPyAoaSA9IHQuX2ZpbmlzaGVkU3BhbnMsIHQuX2ZpbmlzaGVkU3BhbnMgPSBbXSkgOiBpID0gdC5fZmluaXNoZWRTcGFucy5zcGxpY2UoMCwgdC5fbWF4RXhwb3J0QmF0Y2hTaXplKTtcbiAgICAgICAgICBmb3IgKHZhciBhJDEgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiB0Ll9leHBvcnRlci5leHBvcnQoaSwgZnVuY3Rpb24oYykge1xuICAgICAgICAgICAgICB2YXIgZjtcbiAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KG8pLCBjLmNvZGUgPT09IGEuU1VDQ0VTUyA/IGUoKSA6IG4oKGYgPSBjLmVycm9yKSAhPT0gbnVsbCAmJiBmICE9PSB2b2lkIDAgPyBmIDogbmV3IEVycm9yKFwiQmF0Y2hTcGFuUHJvY2Vzc29yOiBzcGFuIGV4cG9ydCBmYWlsZWRcIikpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSwgcyA9IG51bGwsIGwgPSAwLCB1ID0gaS5sZW5ndGg7IGwgPCB1OyBsKyspIHtcbiAgICAgICAgICAgIHZhciBwID0gaVtsXTtcbiAgICAgICAgICAgIHAucmVzb3VyY2UuYXN5bmNBdHRyaWJ1dGVzUGVuZGluZyAmJiBwLnJlc291cmNlLndhaXRGb3JBc3luY0F0dHJpYnV0ZXMgJiYgKHMgPz8gKHMgPSBbXSksIHMucHVzaChwLnJlc291cmNlLndhaXRGb3JBc3luY0F0dHJpYnV0ZXMoKSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzID09PSBudWxsID8gYSQxKCkgOiBQcm9taXNlLmFsbChzKS50aGVuKGEkMSwgZnVuY3Rpb24oYykge1xuICAgICAgICAgICAgRXIoYyksIG4oYyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgciQxLnByb3RvdHlwZS5fbWF5YmVTdGFydFRpbWVyID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdCA9IHRoaXM7XG4gICAgICBpZiAoIXRoaXMuX2lzRXhwb3J0aW5nKSB7XG4gICAgICAgIHZhciBlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdC5faXNFeHBvcnRpbmcgPSB0cnVlLCB0Ll9mbHVzaE9uZUJhdGNoKCkuZmluYWxseShmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHQuX2lzRXhwb3J0aW5nID0gZmFsc2UsIHQuX2ZpbmlzaGVkU3BhbnMubGVuZ3RoID4gMCAmJiAodC5fY2xlYXJUaW1lcigpLCB0Ll9tYXliZVN0YXJ0VGltZXIoKSk7XG4gICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24obikge1xuICAgICAgICAgICAgdC5faXNFeHBvcnRpbmcgPSBmYWxzZSwgRXIobik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLl9maW5pc2hlZFNwYW5zLmxlbmd0aCA+PSB0aGlzLl9tYXhFeHBvcnRCYXRjaFNpemUpXG4gICAgICAgICAgcmV0dXJuIGUoKTtcbiAgICAgICAgdGhpcy5fdGltZXIgPT09IHZvaWQgMCAmJiAodGhpcy5fdGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBlKCk7XG4gICAgICAgIH0sIHRoaXMuX3NjaGVkdWxlZERlbGF5TWlsbGlzKSwgU2UodGhpcy5fdGltZXIpKTtcbiAgICAgIH1cbiAgICB9LCByJDEucHJvdG90eXBlLl9jbGVhclRpbWVyID0gZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLl90aW1lciAhPT0gdm9pZCAwICYmIChjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpLCB0aGlzLl90aW1lciA9IHZvaWQgMCk7XG4gICAgfSwgciQxO1xuICB9KSgpXG4pLCBCdCA9IC8qIEBfX1BVUkVfXyAqLyAoZnVuY3Rpb24oKSB7XG4gIHZhciByID0gZnVuY3Rpb24odCwgZSkge1xuICAgIHJldHVybiByID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24obiwgbykge1xuICAgICAgbi5fX3Byb3RvX18gPSBvO1xuICAgIH0gfHwgZnVuY3Rpb24obiwgbykge1xuICAgICAgZm9yICh2YXIgaSBpbiBvKSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgaSkgJiYgKG5baV0gPSBvW2ldKTtcbiAgICB9LCByKHQsIGUpO1xuICB9O1xuICByZXR1cm4gZnVuY3Rpb24odCwgZSkge1xuICAgIGlmICh0eXBlb2YgZSAhPSBcImZ1bmN0aW9uXCIgJiYgZSAhPT0gbnVsbClcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGUpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgICByKHQsIGUpO1xuICAgIGZ1bmN0aW9uIG4oKSB7XG4gICAgICB0aGlzLmNvbnN0cnVjdG9yID0gdDtcbiAgICB9XG4gICAgdC5wcm90b3R5cGUgPSBlID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShlKSA6IChuLnByb3RvdHlwZSA9IGUucHJvdG90eXBlLCBuZXcgbigpKTtcbiAgfTtcbn0pKCksIER0ID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbihyKSB7XG4gICAgQnQodCwgcik7XG4gICAgZnVuY3Rpb24gdChlLCBuKSB7XG4gICAgICB2YXIgbyA9IHIuY2FsbCh0aGlzLCBlLCBuKSB8fCB0aGlzO1xuICAgICAgcmV0dXJuIG8ub25Jbml0KG4pLCBvO1xuICAgIH1cbiAgICByZXR1cm4gdC5wcm90b3R5cGUub25Jbml0ID0gZnVuY3Rpb24oZSkge1xuICAgICAgdmFyIG4gPSB0aGlzO1xuICAgICAgZT8uZGlzYWJsZUF1dG9GbHVzaE9uRG9jdW1lbnRIaWRlICE9PSB0cnVlICYmIHR5cGVvZiBkb2N1bWVudCA8IFwidVwiICYmICh0aGlzLl92aXNpYmlsaXR5Q2hhbmdlTGlzdGVuZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlID09PSBcImhpZGRlblwiICYmIG4uZm9yY2VGbHVzaCgpLmNhdGNoKGZ1bmN0aW9uKG8pIHtcbiAgICAgICAgICBFcihvKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCB0aGlzLl9wYWdlSGlkZUxpc3RlbmVyID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIG4uZm9yY2VGbHVzaCgpLmNhdGNoKGZ1bmN0aW9uKG8pIHtcbiAgICAgICAgICBFcihvKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwidmlzaWJpbGl0eWNoYW5nZVwiLCB0aGlzLl92aXNpYmlsaXR5Q2hhbmdlTGlzdGVuZXIpLCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwicGFnZWhpZGVcIiwgdGhpcy5fcGFnZUhpZGVMaXN0ZW5lcikpO1xuICAgIH0sIHQucHJvdG90eXBlLm9uU2h1dGRvd24gPSBmdW5jdGlvbigpIHtcbiAgICAgIHR5cGVvZiBkb2N1bWVudCA8IFwidVwiICYmICh0aGlzLl92aXNpYmlsaXR5Q2hhbmdlTGlzdGVuZXIgJiYgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInZpc2liaWxpdHljaGFuZ2VcIiwgdGhpcy5fdmlzaWJpbGl0eUNoYW5nZUxpc3RlbmVyKSwgdGhpcy5fcGFnZUhpZGVMaXN0ZW5lciAmJiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwicGFnZWhpZGVcIiwgdGhpcy5fcGFnZUhpZGVMaXN0ZW5lcikpO1xuICAgIH0sIHQ7XG4gIH0pKE10KVxuKSwgVXQgPSA4LCBGdCA9IDE2LCBHdCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAvKiBAX19QVVJFX18gKi8gKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIHIoKSB7XG4gICAgICB0aGlzLmdlbmVyYXRlVHJhY2VJZCA9IHEoRnQpLCB0aGlzLmdlbmVyYXRlU3BhbklkID0gcShVdCk7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9KSgpXG4pLCBDID0gQXJyYXkoMzIpO1xuZnVuY3Rpb24gcShyKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICBmb3IgKHZhciBlID0gMDsgZSA8IHIgKiAyOyBlKyspXG4gICAgICBDW2VdID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTYpICsgNDgsIENbZV0gPj0gNTggJiYgKENbZV0gKz0gMzkpO1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIEMuc2xpY2UoMCwgciAqIDIpKTtcbiAgfTtcbn1cbnZhciB6dCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gciQxKHQsIGUsIG4pIHtcbiAgICAgIHRoaXMuX3RyYWNlclByb3ZpZGVyID0gbjtcbiAgICAgIHZhciBvID0gSXQoZSk7XG4gICAgICB0aGlzLl9zYW1wbGVyID0gby5zYW1wbGVyLCB0aGlzLl9nZW5lcmFsTGltaXRzID0gby5nZW5lcmFsTGltaXRzLCB0aGlzLl9zcGFuTGltaXRzID0gby5zcGFuTGltaXRzLCB0aGlzLl9pZEdlbmVyYXRvciA9IGUuaWRHZW5lcmF0b3IgfHwgbmV3IEd0KCksIHRoaXMucmVzb3VyY2UgPSBuLnJlc291cmNlLCB0aGlzLmluc3RydW1lbnRhdGlvbkxpYnJhcnkgPSB0O1xuICAgIH1cbiAgICByZXR1cm4gciQxLnByb3RvdHlwZS5zdGFydFNwYW4gPSBmdW5jdGlvbih0LCBlLCBuKSB7XG4gICAgICB2YXIgbywgaSwgYTtcbiAgICAgIGUgPT09IHZvaWQgMCAmJiAoZSA9IHt9KSwgbiA9PT0gdm9pZCAwICYmIChuID0gT2UuYWN0aXZlKCkpLCBlLnJvb3QgJiYgKG4gPSBHZS5kZWxldGVTcGFuKG4pKTtcbiAgICAgIHZhciBzID0gR2UuZ2V0U3BhbihuKTtcbiAgICAgIGlmIChhJDEobikpIHtcbiAgICAgICAgci5kZWJ1ZyhcIkluc3RydW1lbnRhdGlvbiBzdXBwcmVzc2VkLCByZXR1cm5pbmcgTm9vcCBTcGFuXCIpO1xuICAgICAgICB2YXIgbCQxID0gR2Uud3JhcFNwYW5Db250ZXh0KE5zKTtcbiAgICAgICAgcmV0dXJuIGwkMTtcbiAgICAgIH1cbiAgICAgIHZhciB1ID0gcz8uc3BhbkNvbnRleHQoKSwgcCA9IHRoaXMuX2lkR2VuZXJhdG9yLmdlbmVyYXRlU3BhbklkKCksIGMsIGYsIHk7XG4gICAgICAhdSB8fCAhR2UuaXNTcGFuQ29udGV4dFZhbGlkKHUpID8gYyA9IHRoaXMuX2lkR2VuZXJhdG9yLmdlbmVyYXRlVHJhY2VJZCgpIDogKGMgPSB1LnRyYWNlSWQsIGYgPSB1LnRyYWNlU3RhdGUsIHkgPSB1LnNwYW5JZCk7XG4gICAgICB2YXIgbSA9IChvID0gZS5raW5kKSAhPT0gbnVsbCAmJiBvICE9PSB2b2lkIDAgPyBvIDogbHQuSU5URVJOQUwsIEYgPSAoKGkgPSBlLmxpbmtzKSAhPT0gbnVsbCAmJiBpICE9PSB2b2lkIDAgPyBpIDogW10pLm1hcChmdW5jdGlvbihqKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGV4dDogai5jb250ZXh0LFxuICAgICAgICAgIGF0dHJpYnV0ZXM6IFFyKGouYXR0cmlidXRlcylcbiAgICAgICAgfTtcbiAgICAgIH0pLCBHID0gUXIoZS5hdHRyaWJ1dGVzKSwgYiA9IHRoaXMuX3NhbXBsZXIuc2hvdWxkU2FtcGxlKG4sIGMsIHQsIG0sIEcsIEYpO1xuICAgICAgZiA9IChhID0gYi50cmFjZVN0YXRlKSAhPT0gbnVsbCAmJiBhICE9PSB2b2lkIDAgPyBhIDogZjtcbiAgICAgIHZhciB0dCA9IGIuZGVjaXNpb24gPT09IGwuUkVDT1JEX0FORF9TQU1QTEVEID8gaXIuU0FNUExFRCA6IGlyLk5PTkUsIHogPSB7IHRyYWNlSWQ6IGMsIHNwYW5JZDogcCwgdHJhY2VGbGFnczogdHQsIHRyYWNlU3RhdGU6IGYgfTtcbiAgICAgIGlmIChiLmRlY2lzaW9uID09PSBsLk5PVF9SRUNPUkQpIHtcbiAgICAgICAgci5kZWJ1ZyhcIlJlY29yZGluZyBpcyBvZmYsIHByb3BhZ2F0aW5nIGNvbnRleHQgaW4gYSBub24tcmVjb3JkaW5nIHNwYW5cIik7XG4gICAgICAgIHZhciBsJDEgPSBHZS53cmFwU3BhbkNvbnRleHQoeik7XG4gICAgICAgIHJldHVybiBsJDE7XG4gICAgICB9XG4gICAgICB2YXIgZXQgPSBRcihPYmplY3QuYXNzaWduKEcsIGIuYXR0cmlidXRlcykpLCBydCA9IG5ldyB4dCh0aGlzLCBuLCB0LCB6LCBtLCB5LCBGLCBlLnN0YXJ0VGltZSwgdm9pZCAwLCBldCk7XG4gICAgICByZXR1cm4gcnQ7XG4gICAgfSwgciQxLnByb3RvdHlwZS5zdGFydEFjdGl2ZVNwYW4gPSBmdW5jdGlvbih0LCBlLCBuLCBvKSB7XG4gICAgICB2YXIgaSwgYSwgcztcbiAgICAgIGlmICghKGFyZ3VtZW50cy5sZW5ndGggPCAyKSkge1xuICAgICAgICBhcmd1bWVudHMubGVuZ3RoID09PSAyID8gcyA9IGUgOiBhcmd1bWVudHMubGVuZ3RoID09PSAzID8gKGkgPSBlLCBzID0gbikgOiAoaSA9IGUsIGEgPSBuLCBzID0gbyk7XG4gICAgICAgIHZhciBsID0gYSA/PyBPZS5hY3RpdmUoKSwgdSA9IHRoaXMuc3RhcnRTcGFuKHQsIGksIGwpLCBwID0gR2Uuc2V0U3BhbihsLCB1KTtcbiAgICAgICAgcmV0dXJuIE9lLndpdGgocCwgcywgdm9pZCAwLCB1KTtcbiAgICAgIH1cbiAgICB9LCByJDEucHJvdG90eXBlLmdldEdlbmVyYWxMaW1pdHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9nZW5lcmFsTGltaXRzO1xuICAgIH0sIHIkMS5wcm90b3R5cGUuZ2V0U3BhbkxpbWl0cyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NwYW5MaW1pdHM7XG4gICAgfSwgciQxLnByb3RvdHlwZS5nZXRBY3RpdmVTcGFuUHJvY2Vzc29yID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhY2VyUHJvdmlkZXIuZ2V0QWN0aXZlU3BhblByb2Nlc3NvcigpO1xuICAgIH0sIHIkMTtcbiAgfSkoKVxuKSwgTyA9IGZ1bmN0aW9uKHIpIHtcbiAgdmFyIHQgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIGUgPSB0ICYmIHJbdF0sIG4gPSAwO1xuICBpZiAoZSkgcmV0dXJuIGUuY2FsbChyKTtcbiAgaWYgKHIgJiYgdHlwZW9mIHIubGVuZ3RoID09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gciAmJiBuID49IHIubGVuZ3RoICYmIChyID0gdm9pZCAwKSwgeyB2YWx1ZTogciAmJiByW24rK10sIGRvbmU6ICFyIH07XG4gICAgfVxuICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKHQgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59LCBLID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiByKHQpIHtcbiAgICAgIHRoaXMuX3NwYW5Qcm9jZXNzb3JzID0gdDtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLmZvcmNlRmx1c2ggPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB0LCBlLCBuID0gW107XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBvID0gTyh0aGlzLl9zcGFuUHJvY2Vzc29ycyksIGkgPSBvLm5leHQoKTsgIWkuZG9uZTsgaSA9IG8ubmV4dCgpKSB7XG4gICAgICAgICAgdmFyIGEgPSBpLnZhbHVlO1xuICAgICAgICAgIG4ucHVzaChhLmZvcmNlRmx1c2goKSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKHMpIHtcbiAgICAgICAgdCA9IHsgZXJyb3I6IHMgfTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaSAmJiAhaS5kb25lICYmIChlID0gby5yZXR1cm4pICYmIGUuY2FsbChvKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAodCkgdGhyb3cgdC5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHMpIHtcbiAgICAgICAgUHJvbWlzZS5hbGwobikudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgICBzKCk7XG4gICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGwpIHtcbiAgICAgICAgICBFcihsIHx8IG5ldyBFcnJvcihcIk11bHRpU3BhblByb2Nlc3NvcjogZm9yY2VGbHVzaCBmYWlsZWRcIikpLCBzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgci5wcm90b3R5cGUub25TdGFydCA9IGZ1bmN0aW9uKHQsIGUpIHtcbiAgICAgIHZhciBuLCBvO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgaSA9IE8odGhpcy5fc3BhblByb2Nlc3NvcnMpLCBhID0gaS5uZXh0KCk7ICFhLmRvbmU7IGEgPSBpLm5leHQoKSkge1xuICAgICAgICAgIHZhciBzID0gYS52YWx1ZTtcbiAgICAgICAgICBzLm9uU3RhcnQodCwgZSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGwpIHtcbiAgICAgICAgbiA9IHsgZXJyb3I6IGwgfTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYSAmJiAhYS5kb25lICYmIChvID0gaS5yZXR1cm4pICYmIG8uY2FsbChpKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAobikgdGhyb3cgbi5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIHIucHJvdG90eXBlLm9uRW5kID0gZnVuY3Rpb24odCkge1xuICAgICAgdmFyIGUsIG47XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBvID0gTyh0aGlzLl9zcGFuUHJvY2Vzc29ycyksIGkgPSBvLm5leHQoKTsgIWkuZG9uZTsgaSA9IG8ubmV4dCgpKSB7XG4gICAgICAgICAgdmFyIGEgPSBpLnZhbHVlO1xuICAgICAgICAgIGEub25FbmQodCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKHMpIHtcbiAgICAgICAgZSA9IHsgZXJyb3I6IHMgfTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaSAmJiAhaS5kb25lICYmIChuID0gby5yZXR1cm4pICYmIG4uY2FsbChvKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAoZSkgdGhyb3cgZS5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIHIucHJvdG90eXBlLnNodXRkb3duID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdCwgZSwgbiA9IFtdO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgbyA9IE8odGhpcy5fc3BhblByb2Nlc3NvcnMpLCBpID0gby5uZXh0KCk7ICFpLmRvbmU7IGkgPSBvLm5leHQoKSkge1xuICAgICAgICAgIHZhciBhID0gaS52YWx1ZTtcbiAgICAgICAgICBuLnB1c2goYS5zaHV0ZG93bigpKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAocykge1xuICAgICAgICB0ID0geyBlcnJvcjogcyB9O1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpICYmICFpLmRvbmUgJiYgKGUgPSBvLnJldHVybikgJiYgZS5jYWxsKG8pO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGlmICh0KSB0aHJvdyB0LmVycm9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocywgbCkge1xuICAgICAgICBQcm9taXNlLmFsbChuKS50aGVuKGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHMoKTtcbiAgICAgICAgfSwgbCk7XG4gICAgICB9KTtcbiAgICB9LCByO1xuICB9KSgpXG4pLCBqdCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcigpIHtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLm9uU3RhcnQgPSBmdW5jdGlvbih0LCBlKSB7XG4gICAgfSwgci5wcm90b3R5cGUub25FbmQgPSBmdW5jdGlvbih0KSB7XG4gICAgfSwgci5wcm90b3R5cGUuc2h1dGRvd24gPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9LCByLnByb3RvdHlwZS5mb3JjZUZsdXNoID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfSwgcjtcbiAgfSkoKVxuKSwga3QgPSBmdW5jdGlvbihyLCB0KSB7XG4gIHZhciBlID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgcltTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIWUpIHJldHVybiByO1xuICB2YXIgbiA9IGUuY2FsbChyKSwgbywgaSA9IFtdLCBhO1xuICB0cnkge1xuICAgIGZvciAoOyAodCA9PT0gdm9pZCAwIHx8IHQtLSA+IDApICYmICEobyA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChvLnZhbHVlKTtcbiAgfSBjYXRjaCAocykge1xuICAgIGEgPSB7IGVycm9yOiBzIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIG8gJiYgIW8uZG9uZSAmJiAoZSA9IG4ucmV0dXJuKSAmJiBlLmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChhKSB0aHJvdyBhLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIFZ0ID0gZnVuY3Rpb24ociwgdCwgZSkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIG8gPSB0Lmxlbmd0aCwgaTsgbiA8IG87IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gdCkpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwgMCwgbikpLCBpW25dID0gdFtuXSk7XG4gIHJldHVybiByLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKTtcbn0sIFM7XG4oZnVuY3Rpb24ocikge1xuICByW3IucmVzb2x2ZWQgPSAwXSA9IFwicmVzb2x2ZWRcIiwgcltyLnRpbWVvdXQgPSAxXSA9IFwidGltZW91dFwiLCByW3IuZXJyb3IgPSAyXSA9IFwiZXJyb3JcIiwgcltyLnVucmVzb2x2ZWQgPSAzXSA9IFwidW5yZXNvbHZlZFwiO1xufSkoUyB8fCAoUyA9IHt9KSk7XG52YXIgdGUgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIHIkMSh0KSB7XG4gICAgICB0ID09PSB2b2lkIDAgJiYgKHQgPSB7fSk7XG4gICAgICB2YXIgZSwgbjtcbiAgICAgIHRoaXMuX3JlZ2lzdGVyZWRTcGFuUHJvY2Vzc29ycyA9IFtdLCB0aGlzLl90cmFjZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgICAgIHZhciBvID0gbnQoe30sIEooKSwgTnQodCkpO1xuICAgICAgaWYgKHRoaXMucmVzb3VyY2UgPSAoZSA9IG8ucmVzb3VyY2UpICE9PSBudWxsICYmIGUgIT09IHZvaWQgMCA/IGUgOiBSJDEuZW1wdHkoKSwgby5tZXJnZVJlc291cmNlV2l0aERlZmF1bHRzICYmICh0aGlzLnJlc291cmNlID0gUiQxLmRlZmF1bHQoKS5tZXJnZSh0aGlzLnJlc291cmNlKSksIHRoaXMuX2NvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIG8sIHtcbiAgICAgICAgcmVzb3VyY2U6IHRoaXMucmVzb3VyY2VcbiAgICAgIH0pLCAhKChuID0gdC5zcGFuUHJvY2Vzc29ycykgPT09IG51bGwgfHwgbiA9PT0gdm9pZCAwKSAmJiBuLmxlbmd0aClcbiAgICAgICAgdGhpcy5fcmVnaXN0ZXJlZFNwYW5Qcm9jZXNzb3JzID0gVnQoW10sIGt0KHQuc3BhblByb2Nlc3NvcnMpLCBmYWxzZSksIHRoaXMuYWN0aXZlU3BhblByb2Nlc3NvciA9IG5ldyBLKHRoaXMuX3JlZ2lzdGVyZWRTcGFuUHJvY2Vzc29ycyk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgdmFyIGkgPSB0aGlzLl9idWlsZEV4cG9ydGVyRnJvbUVudigpO1xuICAgICAgICBpZiAoaSAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgdmFyIGEgPSBuZXcgRHQoaSk7XG4gICAgICAgICAgdGhpcy5hY3RpdmVTcGFuUHJvY2Vzc29yID0gYTtcbiAgICAgICAgfSBlbHNlXG4gICAgICAgICAgdGhpcy5hY3RpdmVTcGFuUHJvY2Vzc29yID0gbmV3IGp0KCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByJDEucHJvdG90eXBlLmdldFRyYWNlciA9IGZ1bmN0aW9uKHQsIGUsIG4pIHtcbiAgICAgIHZhciBvID0gdCArIFwiQFwiICsgKGUgfHwgXCJcIikgKyBcIjpcIiArIChuPy5zY2hlbWFVcmwgfHwgXCJcIik7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhY2Vycy5oYXMobykgfHwgdGhpcy5fdHJhY2Vycy5zZXQobywgbmV3IHp0KHsgbmFtZTogdCwgdmVyc2lvbjogZSwgc2NoZW1hVXJsOiBuPy5zY2hlbWFVcmwgfSwgdGhpcy5fY29uZmlnLCB0aGlzKSksIHRoaXMuX3RyYWNlcnMuZ2V0KG8pO1xuICAgIH0sIHIkMS5wcm90b3R5cGUuYWRkU3BhblByb2Nlc3NvciA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHRoaXMuX3JlZ2lzdGVyZWRTcGFuUHJvY2Vzc29ycy5sZW5ndGggPT09IDAgJiYgdGhpcy5hY3RpdmVTcGFuUHJvY2Vzc29yLnNodXRkb3duKCkuY2F0Y2goZnVuY3Rpb24oZSkge1xuICAgICAgICByZXR1cm4gci5lcnJvcihcIkVycm9yIHdoaWxlIHRyeWluZyB0byBzaHV0ZG93biBjdXJyZW50IHNwYW4gcHJvY2Vzc29yXCIsIGUpO1xuICAgICAgfSksIHRoaXMuX3JlZ2lzdGVyZWRTcGFuUHJvY2Vzc29ycy5wdXNoKHQpLCB0aGlzLmFjdGl2ZVNwYW5Qcm9jZXNzb3IgPSBuZXcgSyh0aGlzLl9yZWdpc3RlcmVkU3BhblByb2Nlc3NvcnMpO1xuICAgIH0sIHIkMS5wcm90b3R5cGUuZ2V0QWN0aXZlU3BhblByb2Nlc3NvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlU3BhblByb2Nlc3NvcjtcbiAgICB9LCByJDEucHJvdG90eXBlLnJlZ2lzdGVyID0gZnVuY3Rpb24odCkge1xuICAgICAgdCA9PT0gdm9pZCAwICYmICh0ID0ge30pLCBHZS5zZXRHbG9iYWxUcmFjZXJQcm92aWRlcih0aGlzKSwgdC5wcm9wYWdhdG9yID09PSB2b2lkIDAgJiYgKHQucHJvcGFnYXRvciA9IHRoaXMuX2J1aWxkUHJvcGFnYXRvckZyb21FbnYoKSksIHQuY29udGV4dE1hbmFnZXIgJiYgT2Uuc2V0R2xvYmFsQ29udGV4dE1hbmFnZXIodC5jb250ZXh0TWFuYWdlciksIHQucHJvcGFnYXRvciAmJiB5Xy5zZXRHbG9iYWxQcm9wYWdhdG9yKHQucHJvcGFnYXRvcik7XG4gICAgfSwgciQxLnByb3RvdHlwZS5mb3JjZUZsdXNoID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdCA9IHRoaXMuX2NvbmZpZy5mb3JjZUZsdXNoVGltZW91dE1pbGxpcywgZSA9IHRoaXMuX3JlZ2lzdGVyZWRTcGFuUHJvY2Vzc29ycy5tYXAoZnVuY3Rpb24obikge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24obykge1xuICAgICAgICAgIHZhciBpLCBhID0gc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIG8obmV3IEVycm9yKFwiU3BhbiBwcm9jZXNzb3IgZGlkIG5vdCBjb21wbGV0ZWQgd2l0aGluIHRpbWVvdXQgcGVyaW9kIG9mIFwiICsgdCArIFwiIG1zXCIpKSwgaSA9IFMudGltZW91dDtcbiAgICAgICAgICB9LCB0KTtcbiAgICAgICAgICBuLmZvcmNlRmx1c2goKS50aGVuKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGEpLCBpICE9PSBTLnRpbWVvdXQgJiYgKGkgPSBTLnJlc29sdmVkLCBvKGkpKTtcbiAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihzKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQoYSksIGkgPSBTLmVycm9yLCBvKHMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKG4sIG8pIHtcbiAgICAgICAgUHJvbWlzZS5hbGwoZSkudGhlbihmdW5jdGlvbihpKSB7XG4gICAgICAgICAgdmFyIGEgPSBpLmZpbHRlcihmdW5jdGlvbihzKSB7XG4gICAgICAgICAgICByZXR1cm4gcyAhPT0gUy5yZXNvbHZlZDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBhLmxlbmd0aCA+IDAgPyBvKGEpIDogbigpO1xuICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihpKSB7XG4gICAgICAgICAgcmV0dXJuIG8oW2ldKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LCByJDEucHJvdG90eXBlLnNodXRkb3duID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5hY3RpdmVTcGFuUHJvY2Vzc29yLnNodXRkb3duKCk7XG4gICAgfSwgciQxLnByb3RvdHlwZS5fZ2V0UHJvcGFnYXRvciA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHZhciBlO1xuICAgICAgcmV0dXJuIChlID0gdGhpcy5jb25zdHJ1Y3Rvci5fcmVnaXN0ZXJlZFByb3BhZ2F0b3JzLmdldCh0KSkgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZSgpO1xuICAgIH0sIHIkMS5wcm90b3R5cGUuX2dldFNwYW5FeHBvcnRlciA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHZhciBlO1xuICAgICAgcmV0dXJuIChlID0gdGhpcy5jb25zdHJ1Y3Rvci5fcmVnaXN0ZXJlZEV4cG9ydGVycy5nZXQodCkpID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUoKTtcbiAgICB9LCByJDEucHJvdG90eXBlLl9idWlsZFByb3BhZ2F0b3JGcm9tRW52ID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdCA9IHRoaXMsIGUgPSBBcnJheS5mcm9tKG5ldyBTZXQoT2UkMSgpLk9URUxfUFJPUEFHQVRPUlMpKSwgbiA9IGUubWFwKGZ1bmN0aW9uKGkpIHtcbiAgICAgICAgdmFyIGEgPSB0Ll9nZXRQcm9wYWdhdG9yKGkpO1xuICAgICAgICByZXR1cm4gYSB8fCByLndhcm4oJ1Byb3BhZ2F0b3IgXCInICsgaSArICdcIiByZXF1ZXN0ZWQgdGhyb3VnaCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyB1bmF2YWlsYWJsZS4nKSwgYTtcbiAgICAgIH0pLCBvID0gbi5yZWR1Y2UoZnVuY3Rpb24oaSwgYSkge1xuICAgICAgICByZXR1cm4gYSAmJiBpLnB1c2goYSksIGk7XG4gICAgICB9LCBbXSk7XG4gICAgICBpZiAoby5sZW5ndGggIT09IDApXG4gICAgICAgIHJldHVybiBlLmxlbmd0aCA9PT0gMSA/IG9bMF0gOiBuZXcgdmUoe1xuICAgICAgICAgIHByb3BhZ2F0b3JzOiBvXG4gICAgICAgIH0pO1xuICAgIH0sIHIkMS5wcm90b3R5cGUuX2J1aWxkRXhwb3J0ZXJGcm9tRW52ID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdCA9IE9lJDEoKS5PVEVMX1RSQUNFU19FWFBPUlRFUjtcbiAgICAgIGlmICghKHQgPT09IFwibm9uZVwiIHx8IHQgPT09IFwiXCIpKSB7XG4gICAgICAgIHZhciBlID0gdGhpcy5fZ2V0U3BhbkV4cG9ydGVyKHQpO1xuICAgICAgICByZXR1cm4gZSB8fCByLmVycm9yKCdFeHBvcnRlciBcIicgKyB0ICsgJ1wiIHJlcXVlc3RlZCB0aHJvdWdoIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHVuYXZhaWxhYmxlLicpLCBlO1xuICAgICAgfVxuICAgIH0sIHIkMS5fcmVnaXN0ZXJlZFByb3BhZ2F0b3JzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoW1xuICAgICAgW1widHJhY2Vjb250ZXh0XCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbmV3IFZlKCk7XG4gICAgICB9XSxcbiAgICAgIFtcImJhZ2dhZ2VcIiwgZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBuZXcgWnIoKTtcbiAgICAgIH1dXG4gICAgXSksIHIkMS5fcmVnaXN0ZXJlZEV4cG9ydGVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCksIHIkMTtcbiAgfSkoKVxuKSwgSHQgPSBmdW5jdGlvbihyKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBlID0gdCAmJiByW3RdLCBuID0gMDtcbiAgaWYgKGUpIHJldHVybiBlLmNhbGwocik7XG4gIGlmIChyICYmIHR5cGVvZiByLmxlbmd0aCA9PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHIgJiYgbiA+PSByLmxlbmd0aCAmJiAociA9IHZvaWQgMCksIHsgdmFsdWU6IHIgJiYgcltuKytdLCBkb25lOiAhciB9O1xuICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcih0ID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufSwgZWUgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIHIoKSB7XG4gICAgfVxuICAgIHJldHVybiByLnByb3RvdHlwZS5leHBvcnQgPSBmdW5jdGlvbih0LCBlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2VuZFNwYW5zKHQsIGUpO1xuICAgIH0sIHIucHJvdG90eXBlLnNodXRkb3duID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2VuZFNwYW5zKFtdKSwgdGhpcy5mb3JjZUZsdXNoKCk7XG4gICAgfSwgci5wcm90b3R5cGUuZm9yY2VGbHVzaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH0sIHIucHJvdG90eXBlLl9leHBvcnRJbmZvID0gZnVuY3Rpb24odCkge1xuICAgICAgdmFyIGU7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZXNvdXJjZToge1xuICAgICAgICAgIGF0dHJpYnV0ZXM6IHQucmVzb3VyY2UuYXR0cmlidXRlc1xuICAgICAgICB9LFxuICAgICAgICBpbnN0cnVtZW50YXRpb25TY29wZTogdC5pbnN0cnVtZW50YXRpb25MaWJyYXJ5LFxuICAgICAgICB0cmFjZUlkOiB0LnNwYW5Db250ZXh0KCkudHJhY2VJZCxcbiAgICAgICAgcGFyZW50SWQ6IHQucGFyZW50U3BhbklkLFxuICAgICAgICB0cmFjZVN0YXRlOiAoZSA9IHQuc3BhbkNvbnRleHQoKS50cmFjZVN0YXRlKSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnNlcmlhbGl6ZSgpLFxuICAgICAgICBuYW1lOiB0Lm5hbWUsXG4gICAgICAgIGlkOiB0LnNwYW5Db250ZXh0KCkuc3BhbklkLFxuICAgICAgICBraW5kOiB0LmtpbmQsXG4gICAgICAgIHRpbWVzdGFtcDogamUodC5zdGFydFRpbWUpLFxuICAgICAgICBkdXJhdGlvbjogamUodC5kdXJhdGlvbiksXG4gICAgICAgIGF0dHJpYnV0ZXM6IHQuYXR0cmlidXRlcyxcbiAgICAgICAgc3RhdHVzOiB0LnN0YXR1cyxcbiAgICAgICAgZXZlbnRzOiB0LmV2ZW50cyxcbiAgICAgICAgbGlua3M6IHQubGlua3NcbiAgICAgIH07XG4gICAgfSwgci5wcm90b3R5cGUuX3NlbmRTcGFucyA9IGZ1bmN0aW9uKHQsIGUpIHtcbiAgICAgIHZhciBuLCBvO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgaSA9IEh0KHQpLCBhJDEgPSBpLm5leHQoKTsgIWEkMS5kb25lOyBhJDEgPSBpLm5leHQoKSkge1xuICAgICAgICAgIHZhciBzID0gYSQxLnZhbHVlO1xuICAgICAgICAgIGNvbnNvbGUuZGlyKHRoaXMuX2V4cG9ydEluZm8ocyksIHsgZGVwdGg6IDMgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGwpIHtcbiAgICAgICAgbiA9IHsgZXJyb3I6IGwgfTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYSQxICYmICFhJDEuZG9uZSAmJiAobyA9IGkucmV0dXJuKSAmJiBvLmNhbGwoaSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKG4pIHRocm93IG4uZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChlKVxuICAgICAgICByZXR1cm4gZSh7IGNvZGU6IGEuU1VDQ0VTUyB9KTtcbiAgICB9LCByO1xuICB9KSgpXG4pLCBRdCA9IGZ1bmN0aW9uKHIsIHQsIGUsIG4pIHtcbiAgZnVuY3Rpb24gbyhpKSB7XG4gICAgcmV0dXJuIGkgaW5zdGFuY2VvZiBlID8gaSA6IG5ldyBlKGZ1bmN0aW9uKGEpIHtcbiAgICAgIGEoaSk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIG5ldyAoZSB8fCAoZSA9IFByb21pc2UpKShmdW5jdGlvbihpLCBhKSB7XG4gICAgZnVuY3Rpb24gcyhwKSB7XG4gICAgICB0cnkge1xuICAgICAgICB1KG4ubmV4dChwKSk7XG4gICAgICB9IGNhdGNoIChjKSB7XG4gICAgICAgIGEoYyk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGwocCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdShuLnRocm93KHApKTtcbiAgICAgIH0gY2F0Y2ggKGMpIHtcbiAgICAgICAgYShjKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gdShwKSB7XG4gICAgICBwLmRvbmUgPyBpKHAudmFsdWUpIDogbyhwLnZhbHVlKS50aGVuKHMsIGwpO1xuICAgIH1cbiAgICB1KChuID0gbi5hcHBseShyLCBbXSkpLm5leHQoKSk7XG4gIH0pO1xufSwgWHQgPSBmdW5jdGlvbihyLCB0KSB7XG4gIHZhciBlID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKGlbMF0gJiAxKSB0aHJvdyBpWzFdO1xuICAgIHJldHVybiBpWzFdO1xuICB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBuLCBvLCBpLCBhO1xuICByZXR1cm4gYSA9IHsgbmV4dDogcygwKSwgdGhyb3c6IHMoMSksIHJldHVybjogcygyKSB9LCB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiAoYVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0pLCBhO1xuICBmdW5jdGlvbiBzKHUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24ocCkge1xuICAgICAgcmV0dXJuIGwoW3UsIHBdKTtcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIGwodSkge1xuICAgIGlmIChuKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICBmb3IgKDsgZTsgKSB0cnkge1xuICAgICAgaWYgKG4gPSAxLCBvICYmIChpID0gdVswXSAmIDIgPyBvLnJldHVybiA6IHVbMF0gPyBvLnRocm93IHx8ICgoaSA9IG8ucmV0dXJuKSAmJiBpLmNhbGwobyksIDApIDogby5uZXh0KSAmJiAhKGkgPSBpLmNhbGwobywgdVsxXSkpLmRvbmUpIHJldHVybiBpO1xuICAgICAgc3dpdGNoIChvID0gMCwgaSAmJiAodSA9IFt1WzBdICYgMiwgaS52YWx1ZV0pLCB1WzBdKSB7XG4gICAgICAgIGNhc2UgMDpcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGkgPSB1O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgcmV0dXJuIGUubGFiZWwrKywgeyB2YWx1ZTogdVsxXSwgZG9uZTogITEgfTtcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgIGUubGFiZWwrKywgbyA9IHVbMV0sIHUgPSBbMF07XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgICB1ID0gZS5vcHMucG9wKCksIGUudHJ5cy5wb3AoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBpZiAoaSA9IGUudHJ5cywgIShpID0gaS5sZW5ndGggPiAwICYmIGlbaS5sZW5ndGggLSAxXSkgJiYgKHVbMF0gPT09IDYgfHwgdVswXSA9PT0gMikpIHtcbiAgICAgICAgICAgIGUgPSAwO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh1WzBdID09PSAzICYmICghaSB8fCB1WzFdID4gaVswXSAmJiB1WzFdIDwgaVszXSkpIHtcbiAgICAgICAgICAgIGUubGFiZWwgPSB1WzFdO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh1WzBdID09PSA2ICYmIGUubGFiZWwgPCBpWzFdKSB7XG4gICAgICAgICAgICBlLmxhYmVsID0gaVsxXSwgaSA9IHU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGkgJiYgZS5sYWJlbCA8IGlbMl0pIHtcbiAgICAgICAgICAgIGUubGFiZWwgPSBpWzJdLCBlLm9wcy5wdXNoKHUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlbMl0gJiYgZS5vcHMucG9wKCksIGUudHJ5cy5wb3AoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHUgPSB0LmNhbGwociwgZSk7XG4gICAgfSBjYXRjaCAocCkge1xuICAgICAgdSA9IFs2LCBwXSwgbyA9IDA7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIG4gPSBpID0gMDtcbiAgICB9XG4gICAgaWYgKHVbMF0gJiA1KSB0aHJvdyB1WzFdO1xuICAgIHJldHVybiB7IHZhbHVlOiB1WzBdID8gdVsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICB9XG59LCByZSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcih0KSB7XG4gICAgICB0aGlzLl9leHBvcnRlciA9IHQsIHRoaXMuX3NodXRkb3duT25jZSA9IG5ldyBmdCh0aGlzLl9zaHV0ZG93biwgdGhpcyksIHRoaXMuX3VucmVzb2x2ZWRFeHBvcnRzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLmZvcmNlRmx1c2ggPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBRdCh0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBYdCh0aGlzLCBmdW5jdGlvbih0KSB7XG4gICAgICAgICAgc3dpdGNoICh0LmxhYmVsKSB7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgIHJldHVybiBbNCwgUHJvbWlzZS5hbGwoQXJyYXkuZnJvbSh0aGlzLl91bnJlc29sdmVkRXhwb3J0cykpXTtcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgcmV0dXJuIHQuc2VudCgpLCB0aGlzLl9leHBvcnRlci5mb3JjZUZsdXNoID8gWzQsIHRoaXMuX2V4cG9ydGVyLmZvcmNlRmx1c2goKV0gOiBbMywgM107XG4gICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgIHQuc2VudCgpLCB0LmxhYmVsID0gMztcbiAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgLypyZXR1cm4qL1xuICAgICAgICAgICAgICBdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LCByLnByb3RvdHlwZS5vblN0YXJ0ID0gZnVuY3Rpb24odCwgZSkge1xuICAgIH0sIHIucHJvdG90eXBlLm9uRW5kID0gZnVuY3Rpb24odCkge1xuICAgICAgdmFyIGUgPSB0aGlzLCBuLCBvO1xuICAgICAgaWYgKCF0aGlzLl9zaHV0ZG93bk9uY2UuaXNDYWxsZWQgJiYgKHQuc3BhbkNvbnRleHQoKS50cmFjZUZsYWdzICYgaXIuU0FNUExFRCkgIT09IDApIHtcbiAgICAgICAgdmFyIGkgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gT3QkMS5fZXhwb3J0KGUuX2V4cG9ydGVyLCBbdF0pLnRoZW4oZnVuY3Rpb24ocykge1xuICAgICAgICAgICAgdmFyIGw7XG4gICAgICAgICAgICBzLmNvZGUgIT09IGEuU1VDQ0VTUyAmJiBFcigobCA9IHMuZXJyb3IpICE9PSBudWxsICYmIGwgIT09IHZvaWQgMCA/IGwgOiBuZXcgRXJyb3IoXCJTaW1wbGVTcGFuUHJvY2Vzc29yOiBzcGFuIGV4cG9ydCBmYWlsZWQgKHN0YXR1cyBcIiArIHMgKyBcIilcIikpO1xuICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKHMpIHtcbiAgICAgICAgICAgIEVyKHMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICBpZiAodC5yZXNvdXJjZS5hc3luY0F0dHJpYnV0ZXNQZW5kaW5nKSB7XG4gICAgICAgICAgdmFyIGEkMSA9IChvID0gKG4gPSB0LnJlc291cmNlKS53YWl0Rm9yQXN5bmNBdHRyaWJ1dGVzKSA9PT0gbnVsbCB8fCBvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvLmNhbGwobikudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiBhJDEgIT0gbnVsbCAmJiBlLl91bnJlc29sdmVkRXhwb3J0cy5kZWxldGUoYSQxKSwgaSgpO1xuICAgICAgICAgIH0sIGZ1bmN0aW9uKHMpIHtcbiAgICAgICAgICAgIHJldHVybiBFcihzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBhJDEgIT0gbnVsbCAmJiB0aGlzLl91bnJlc29sdmVkRXhwb3J0cy5hZGQoYSQxKTtcbiAgICAgICAgfSBlbHNlXG4gICAgICAgICAgaSgpO1xuICAgICAgfVxuICAgIH0sIHIucHJvdG90eXBlLnNodXRkb3duID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2h1dGRvd25PbmNlLmNhbGwoKTtcbiAgICB9LCByLnByb3RvdHlwZS5fc2h1dGRvd24gPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9leHBvcnRlci5zaHV0ZG93bigpO1xuICAgIH0sIHI7XG4gIH0pKClcbik7XG5cbmV4cG9ydCB7IEIsIER0IGFzIEQsIEd0IGFzIEcsIFAsIFIsIFMsIFcsIGVlIGFzIGUsIGcsIGp0IGFzIGosIHJlIGFzIHIsIHRlIGFzIHQsIHh0IGFzIHgsIHp0IGFzIHogfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLEtBQUtBLEdBQUksS0FBS0MsR0FBSSxLQUFLQyxHQUFJLEtBQUtDLElBQUksS0FBS0MsSUFBSSxLQUFLQyxJQUFJLEtBQUtDLElBQUksS0FBS0MsVUFBVTtBQUN2RixTQUFTLEtBQUFDLFNBQVM7QUFDbEIsU0FBUyxNQUFNQyxHQUFJLEtB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LGFBQWEsR0FBRztBQUNuRixZQUFJOEMsSUFBSSxXQUFXO0FBQ2pCLGlCQUFPVixHQUFLLFFBQVFPLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssU0FBU0ksR0FBRztBQUNyRCxnQkFBSWhCO0FBQ0osWUFBQWdCLEVBQUUsU0FBU1AsRUFBRSxXQUFXbEIsR0FBSVMsSUFBSWdCLEVBQUUsV0FBVyxRQUFRaEIsTUFBTSxTQUFTQSxJQUFJLElBQUksTUFBTSxxREFBcURnQixJQUFJLEdBQUcsQ0FBQztBQUFBLFVBQ2pKLENBQUMsRUFBRSxNQUFNLFNBQVNBLEdBQUc7QUFDbkIsWUFBQXpCLEVBQUd5QixDQUFDO0FBQUEsVUFDTixDQUFDO0FBQUEsUUFDSDtBQUNBLFlBQUksRUFBRSxTQUFTLHdCQUF3QjtBQUNyQyxjQUFJVCxLQUFPTSxLQUFLLElBQUksRUFBRSxVQUFVLDRCQUE0QixRQUFRQSxNQUFNLFNBQVMsU0FBU0EsRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLFdBQVc7QUFDcEgsbUJBQU9OLEtBQU8sUUFBUUssRUFBRSxtQkFBbUIsT0FBT0wsQ0FBRyxHQUFHUSxFQUFFO0FBQUEsVUFDNUQsR0FBRyxTQUFTQyxHQUFHO0FBQ2IsbUJBQU96QixFQUFHeUIsQ0FBQztBQUFBLFVBQ2IsQ0FBQztBQUNELFVBQUFULEtBQU8sUUFBUSxLQUFLLG1CQUFtQixJQUFJQSxDQUFHO0FBQUEsUUFDaEQ7QUFDRSxVQUFBUSxFQUFFO0FBQUEsTUFDTjtBQUFBLElBQ0YsR0FBR3RDLEVBQUUsVUFBVSxXQUFXLFdBQVc7QUFDbkMsYUFBTyxLQUFLLGNBQWMsS0FBSztBQUFBLElBQ2pDLEdBQUdBLEVBQUUsVUFBVSxZQUFZLFdBQVc7QUFDcEMsYUFBTyxLQUFLLFVBQVUsU0FBUztBQUFBLElBQ2pDLEdBQUdBO0FBQUEsRUFDTCxHQUFHO0FBQUE7IiwKICAibmFtZXMiOiBbImlyIiwgIkdlIiwgIk9lIiwgIk5zIiwgImx0IiwgIkFlIiwgIiRuIiwgIk9zIiwgInIiLCAiamUiLCAieV8iLCAicWUiLCAiWGUiLCAiUiQyIiwgInBfIiwgIk8kMSIsICJOXyIsICJiXyIsICJOQSIsICJNQSIsICJyXyIsICJlQSIsICJFciIsICJPZSQxIiwgInZlIiwgIlZlIiwgIlpyIiwgImZ0IiwgIlNlIiwgIm50IiwgIlFyIiwgImwiLCAiY2UiLCAiZCIsICJwIiwgImFyIiwgIk90JDEiLCAidSIsICJhJDEiLCAiUiQxIiwgImEiLCAid3QiLCAiRCIsICJlIiwgIm8iLCAiQ3QiLCAiaSIsICJzIiwgInh0IiwgInIkMSIsICJjIiwgIlAiLCAiZyIsICJCIiwgIlciLCAiRSIsICJZIiwgInAkMSIsICJmIiwgIkJ0IiwgIkR0IiwgIkd0IiwgInEiLCAiQyIsICJsJDEiLCAiaiIsICJHIiwgImIiLCAiSyIsICJqdCIsICJrdCIsICJIdCIsICJRdCJdCn0K