@adobe/helix-rum-enhancer 2.34.2 → 2.34.3

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.
@@ -11,345 +11,264 @@
11
11
  */
12
12
  (function (e) {
13
13
 
14
- var n,
15
- t,
16
- r,
17
- i,
18
- o,
19
- a = -1,
20
- c = function (e) {
21
- addEventListener("pageshow", function (n) {
22
- n.persisted && (a = n.timeStamp, e(n));
14
+ let t = -1;
15
+ const n = e => {
16
+ addEventListener("pageshow", n => {
17
+ n.persisted && (t = n.timeStamp, e(n));
23
18
  }, true);
24
19
  },
25
- u = function () {
26
- var e = self.performance && performance.getEntriesByType && performance.getEntriesByType("navigation")[0];
20
+ i = (e, t, n, i) => {
21
+ let o, s;
22
+ return r => {
23
+ t.value >= 0 && (r || i) && (s = t.value - (o ?? 0), (s || void 0 === o) && (o = t.value, t.delta = s, t.rating = ((e, t) => e > t[1] ? "poor" : e > t[0] ? "needs-improvement" : "good")(t.value, n), e(t)));
24
+ };
25
+ },
26
+ o = e => {
27
+ requestAnimationFrame(() => requestAnimationFrame(() => e()));
28
+ },
29
+ s = () => {
30
+ const e = performance.getEntriesByType("navigation")[0];
27
31
  if (e && e.responseStart > 0 && e.responseStart < performance.now()) return e;
28
32
  },
29
- s = function () {
30
- var e = u();
31
- return e && e.activationStart || 0;
33
+ r = () => {
34
+ const e = s();
35
+ return e?.activationStart ?? 0;
32
36
  },
33
- f = function (e, n) {
34
- var t = u(),
35
- r = "navigate";
36
- a >= 0 ? r = "back-forward-cache" : t && (document.prerendering || s() > 0 ? r = "prerender" : document.wasDiscarded ? r = "restore" : t.type && (r = t.type.replace(/_/g, "-")));
37
+ c = (e, n = -1) => {
38
+ const i = s();
39
+ let o = "navigate";
40
+ t >= 0 ? o = "back-forward-cache" : i && (document.prerendering || r() > 0 ? o = "prerender" : document.wasDiscarded ? o = "restore" : i.type && (o = i.type.replace(/_/g, "-")));
37
41
  return {
38
42
  name: e,
39
- value: void 0 === n ? -1 : n,
43
+ value: n,
40
44
  rating: "good",
41
45
  delta: 0,
42
46
  entries: [],
43
- id: "v4-".concat(Date.now(), "-").concat(Math.floor(8999999999999 * Math.random()) + 1e12),
44
- navigationType: r
47
+ id: `v5-${Date.now()}-${Math.floor(8999999999999 * Math.random()) + 1e12}`,
48
+ navigationType: o
45
49
  };
46
50
  },
47
- d = function (e, n, t) {
51
+ a = new WeakMap();
52
+ function d(e, t) {
53
+ return a.get(e) || a.set(e, new t()), a.get(e);
54
+ }
55
+ class h {
56
+ t;
57
+ i = 0;
58
+ o = [];
59
+ h(e) {
60
+ if (e.hadRecentInput) return;
61
+ const t = this.o[0],
62
+ n = this.o.at(-1);
63
+ this.i && t && n && e.startTime - n.startTime < 1e3 && e.startTime - t.startTime < 5e3 ? (this.i += e.value, this.o.push(e)) : (this.i = e.value, this.o = [e]), this.t?.(e);
64
+ }
65
+ }
66
+ const f = (e, t, n = {}) => {
48
67
  try {
49
68
  if (PerformanceObserver.supportedEntryTypes.includes(e)) {
50
- var r = new PerformanceObserver(function (e) {
51
- Promise.resolve().then(function () {
52
- n(e.getEntries());
69
+ const i = new PerformanceObserver(e => {
70
+ Promise.resolve().then(() => {
71
+ t(e.getEntries());
53
72
  });
54
73
  });
55
- return r.observe(Object.assign({
74
+ return i.observe({
56
75
  type: e,
57
- buffered: !0
58
- }, t || {})), r;
76
+ buffered: !0,
77
+ ...n
78
+ }), i;
59
79
  }
60
- } catch (e) {}
61
- },
62
- l = function (e, n, t, r) {
63
- var i, o;
64
- return function (a) {
65
- n.value >= 0 && (a || r) && ((o = n.value - (i || 0)) || void 0 === i) && (i = n.value, n.delta = o, n.rating = function (e, n) {
66
- return e > n[1] ? "poor" : e > n[0] ? "needs-improvement" : "good";
67
- }(n.value, t), e(n));
68
- };
69
- },
70
- p = function (e) {
71
- requestAnimationFrame(function () {
72
- return requestAnimationFrame(function () {
73
- return e();
74
- });
75
- });
76
- },
77
- v = function (e) {
78
- document.addEventListener("visibilitychange", function () {
79
- "hidden" === document.visibilityState && e();
80
- });
80
+ } catch {}
81
81
  },
82
- m = function (e) {
83
- var n = false;
84
- return function () {
85
- n || (e(), n = true);
82
+ u = e => {
83
+ let t = false;
84
+ return () => {
85
+ t || (e(), t = true);
86
86
  };
87
+ };
88
+ let l = -1;
89
+ const m = () => "hidden" !== document.visibilityState || document.prerendering ? 1 / 0 : 0,
90
+ g = e => {
91
+ "hidden" === document.visibilityState && l > -1 && (l = "visibilitychange" === e.type ? e.timeStamp : 0, p());
87
92
  },
88
- h = -1,
89
- g = function () {
90
- return "hidden" !== document.visibilityState || document.prerendering ? 1 / 0 : 0;
91
- },
92
- T = function (e) {
93
- "hidden" === document.visibilityState && h > -1 && (h = "visibilitychange" === e.type ? e.timeStamp : 0, E());
94
- },
95
- y = function () {
96
- addEventListener("visibilitychange", T, true), addEventListener("prerenderingchange", T, true);
93
+ v = () => {
94
+ addEventListener("visibilitychange", g, true), addEventListener("prerenderingchange", g, true);
97
95
  },
98
- E = function () {
99
- removeEventListener("visibilitychange", T, true), removeEventListener("prerenderingchange", T, true);
96
+ p = () => {
97
+ removeEventListener("visibilitychange", g, true), removeEventListener("prerenderingchange", g, true);
100
98
  },
101
- C = function () {
102
- return h < 0 && (h = g(), y(), c(function () {
103
- setTimeout(function () {
104
- h = g(), y();
105
- }, 0);
106
- })), {
99
+ y = () => {
100
+ if (l < 0) {
101
+ const e = document.prerendering ? void 0 : globalThis.performance.getEntriesByType("visibility-state").filter(e => "hidden" === e.name)[0]?.startTime;
102
+ l = e ?? m(), v(), n(() => {
103
+ setTimeout(() => {
104
+ l = m(), v();
105
+ });
106
+ });
107
+ }
108
+ return {
107
109
  get firstHiddenTime() {
108
- return h;
110
+ return l;
109
111
  }
110
112
  };
111
113
  },
112
- L = function (e) {
113
- document.prerendering ? addEventListener("prerenderingchange", function () {
114
- return e();
115
- }, true) : e();
114
+ b = e => {
115
+ document.prerendering ? addEventListener("prerenderingchange", () => e(), true) : e();
116
116
  },
117
- S = [1800, 3e3],
118
- b = function (e, n) {
119
- n = n || {}, L(function () {
120
- var t,
121
- r = C(),
122
- i = f("FCP"),
123
- o = d("paint", function (e) {
124
- e.forEach(function (e) {
125
- "first-contentful-paint" === e.name && (o.disconnect(), e.startTime < r.firstHiddenTime && (i.value = Math.max(e.startTime - s(), 0), i.entries.push(e), t(true)));
126
- });
127
- });
128
- o && (t = l(e, i, S, n.reportAllChanges), c(function (r) {
129
- i = f("FCP"), t = l(e, i, S, n.reportAllChanges), p(function () {
130
- i.value = performance.now() - r.timeStamp, t(true);
117
+ P = [1800, 3e3],
118
+ T = (e, t = {}) => {
119
+ b(() => {
120
+ const s = y();
121
+ let a,
122
+ d = c("FCP");
123
+ const h = f("paint", e => {
124
+ for (const t of e) "first-contentful-paint" === t.name && (h.disconnect(), t.startTime < s.firstHiddenTime && (d.value = Math.max(t.startTime - r(), 0), d.entries.push(t), a(true)));
125
+ });
126
+ h && (a = i(e, d, P, t.reportAllChanges), n(n => {
127
+ d = c("FCP"), a = i(e, d, P, t.reportAllChanges), o(() => {
128
+ d.value = performance.now() - n.timeStamp, a(true);
131
129
  });
132
130
  }));
133
131
  });
134
132
  },
135
- w = [.1, .25],
136
- I = 0,
137
- P = 1 / 0,
138
- A = 0,
139
- F = function (e) {
140
- e.forEach(function (e) {
141
- e.interactionId && (P = Math.min(P, e.interactionId), A = Math.max(A, e.interactionId), I = A ? (A - P) / 7 + 1 : 0);
142
- });
143
- },
144
- M = function () {
145
- return n ? I : performance.interactionCount || 0;
146
- },
147
- k = function () {
148
- "interactionCount" in performance || n || (n = d("event", F, {
133
+ E = [.1, .25];
134
+ let _ = 0,
135
+ L = 1 / 0,
136
+ M = 0;
137
+ const w = e => {
138
+ for (const t of e) t.interactionId && (L = Math.min(L, t.interactionId), M = Math.max(M, t.interactionId), _ = M ? (M - L) / 7 + 1 : 0);
139
+ };
140
+ let C;
141
+ const I = () => C ? _ : performance.interactionCount ?? 0,
142
+ F = () => {
143
+ "interactionCount" in performance || C || (C = f("event", w, {
149
144
  type: "event",
150
145
  buffered: true,
151
146
  durationThreshold: 0
152
147
  }));
153
- },
154
- D = [],
155
- B = new Map(),
156
- R = 0,
157
- x = function () {
158
- var e = Math.min(D.length - 1, Math.floor((M() - R) / 50));
159
- return D[e];
160
- },
161
- H = [],
162
- N = function (e) {
163
- if (H.forEach(function (n) {
164
- return n(e);
165
- }), e.interactionId || "first-input" === e.entryType) {
166
- var n = D[D.length - 1],
167
- t = B.get(e.interactionId);
168
- if (t || D.length < 10 || e.duration > n.latency) {
169
- if (t) e.duration > t.latency ? (t.entries = [e], t.latency = e.duration) : e.duration === t.latency && e.startTime === t.entries[0].startTime && t.entries.push(e);else {
170
- var r = {
171
- id: e.interactionId,
172
- latency: e.duration,
173
- entries: [e]
174
- };
175
- B.set(r.id, r), D.push(r);
176
- }
177
- D.sort(function (e, n) {
178
- return n.latency - e.latency;
179
- }), D.length > 10 && D.splice(10).forEach(function (e) {
180
- return B.delete(e.id);
181
- });
148
+ };
149
+ let k = 0;
150
+ class A {
151
+ u = [];
152
+ l = new Map();
153
+ m;
154
+ v;
155
+ p() {
156
+ k = I(), this.u.length = 0, this.l.clear();
157
+ }
158
+ P() {
159
+ const e = Math.min(this.u.length - 1, Math.floor((I() - k) / 50));
160
+ return this.u[e];
161
+ }
162
+ h(e) {
163
+ if (this.m?.(e), !e.interactionId && "first-input" !== e.entryType) return;
164
+ const t = this.u.at(-1);
165
+ let n = this.l.get(e.interactionId);
166
+ if (n || this.u.length < 10 || e.duration > t.T) {
167
+ if (n ? e.duration > n.T ? (n.entries = [e], n.T = e.duration) : e.duration === n.T && e.startTime === n.entries[0].startTime && n.entries.push(e) : (n = {
168
+ id: e.interactionId,
169
+ entries: [e],
170
+ T: e.duration
171
+ }, this.l.set(n.id, n), this.u.push(n)), this.u.sort((e, t) => t.T - e.T), this.u.length > 10) {
172
+ const e = this.u.splice(10);
173
+ for (const t of e) this.l.delete(t.id);
182
174
  }
175
+ this.v?.(n);
183
176
  }
177
+ }
178
+ }
179
+ const B = e => {
180
+ const t = globalThis.requestIdleCallback || setTimeout;
181
+ "hidden" === document.visibilityState ? e() : (t(e = u(e)), document.addEventListener("visibilitychange", e, {
182
+ once: true
183
+ }));
184
184
  },
185
- q = function (e) {
186
- var n = self.requestIdleCallback || self.setTimeout,
187
- t = -1;
188
- return e = m(e), "hidden" === document.visibilityState ? e() : (t = n(e), v(e)), t;
189
- },
190
- O = [200, 500],
191
- j = [2500, 4e3],
192
- V = {},
193
- _ = [800, 1800],
194
- z = function e(n) {
195
- document.prerendering ? L(function () {
196
- return e(n);
197
- }) : "complete" !== document.readyState ? addEventListener("load", function () {
198
- return e(n);
199
- }, true) : setTimeout(n, 0);
200
- },
201
- G = {
202
- passive: true,
203
- capture: true
204
- },
205
- J = new Date(),
206
- K = function (e, n) {
207
- t || (t = n, r = e, i = new Date(), W(removeEventListener), Q());
208
- },
209
- Q = function () {
210
- if (r >= 0 && r < i - J) {
211
- var e = {
212
- entryType: "first-input",
213
- name: t.type,
214
- target: t.target,
215
- cancelable: t.cancelable,
216
- startTime: t.timeStamp,
217
- processingStart: t.timeStamp + r
218
- };
219
- o.forEach(function (n) {
220
- n(e);
221
- }), o = [];
222
- }
223
- },
224
- U = function (e) {
225
- if (e.cancelable) {
226
- var n = (e.timeStamp > 1e12 ? new Date() : performance.now()) - e.timeStamp;
227
- "pointerdown" == e.type ? function (e, n) {
228
- var t = function () {
229
- K(e, n), i();
230
- },
231
- r = function () {
232
- i();
233
- },
234
- i = function () {
235
- removeEventListener("pointerup", t, G), removeEventListener("pointercancel", r, G);
236
- };
237
- addEventListener("pointerup", t, G), addEventListener("pointercancel", r, G);
238
- }(n, e) : K(n, e);
239
- }
240
- },
241
- W = function (e) {
242
- ["mousedown", "keydown", "touchstart", "pointerdown"].forEach(function (n) {
243
- return e(n, U, G);
244
- });
245
- },
246
- X = [100, 300];
247
- return e.CLSThresholds = w, e.FCPThresholds = S, e.FIDThresholds = X, e.INPThresholds = O, e.LCPThresholds = j, e.TTFBThresholds = _, e.onCLS = function (e, n) {
248
- n = n || {}, b(m(function () {
249
- var t,
250
- r = f("CLS", 0),
251
- i = 0,
252
- o = [],
253
- a = function (e) {
254
- e.forEach(function (e) {
255
- if (!e.hadRecentInput) {
256
- var n = o[0],
257
- t = o[o.length - 1];
258
- i && e.startTime - t.startTime < 1e3 && e.startTime - n.startTime < 5e3 ? (i += e.value, o.push(e)) : (i = e.value, o = [e]);
259
- }
260
- }), i > r.value && (r.value = i, r.entries = o, t());
185
+ N = [200, 500];
186
+ class S {
187
+ m;
188
+ h(e) {
189
+ this.m?.(e);
190
+ }
191
+ }
192
+ const q = [2500, 4e3],
193
+ O = [800, 1800],
194
+ V = e => {
195
+ document.prerendering ? b(() => V(e)) : "complete" !== document.readyState ? addEventListener("load", () => V(e), true) : setTimeout(e);
196
+ };
197
+ return e.CLSThresholds = E, e.FCPThresholds = P, e.INPThresholds = N, e.LCPThresholds = q, e.TTFBThresholds = O, e.onCLS = (e, t = {}) => {
198
+ T(u(() => {
199
+ let s,
200
+ r = c("CLS", 0);
201
+ const a = d(t, h),
202
+ u = e => {
203
+ for (const t of e) a.h(t);
204
+ a.i > r.value && (r.value = a.i, r.entries = a.o, s());
261
205
  },
262
- u = d("layout-shift", a);
263
- u && (t = l(e, r, w, n.reportAllChanges), v(function () {
264
- a(u.takeRecords()), t(true);
265
- }), c(function () {
266
- i = 0, r = f("CLS", 0), t = l(e, r, w, n.reportAllChanges), p(function () {
267
- return t();
268
- });
269
- }), setTimeout(t, 0));
206
+ l = f("layout-shift", u);
207
+ l && (s = i(e, r, E, t.reportAllChanges), document.addEventListener("visibilitychange", () => {
208
+ "hidden" === document.visibilityState && (u(l.takeRecords()), s(true));
209
+ }), n(() => {
210
+ a.i = 0, r = c("CLS", 0), s = i(e, r, E, t.reportAllChanges), o(() => s());
211
+ }), setTimeout(s));
270
212
  }));
271
- }, e.onFCP = b, e.onFID = function (e, n) {
272
- n = n || {}, L(function () {
273
- var i,
274
- a = C(),
275
- u = f("FID"),
276
- s = function (e) {
277
- e.startTime < a.firstHiddenTime && (u.value = e.processingStart - e.startTime, u.entries.push(e), i(true));
278
- },
279
- p = function (e) {
280
- e.forEach(s);
281
- },
282
- h = d("first-input", p);
283
- i = l(e, u, X, n.reportAllChanges), h && (v(m(function () {
284
- p(h.takeRecords()), h.disconnect();
285
- })), c(function () {
286
- var a;
287
- u = f("FID"), i = l(e, u, X, n.reportAllChanges), o = [], r = -1, t = null, W(addEventListener), a = s, o.push(a), Q();
288
- }));
289
- });
290
- }, e.onINP = function (e, n) {
291
- "PerformanceEventTiming" in self && "interactionId" in PerformanceEventTiming.prototype && (n = n || {}, L(function () {
292
- var t;
293
- k();
294
- var r,
295
- i = f("INP"),
296
- o = function (e) {
297
- q(function () {
298
- e.forEach(N);
299
- var n = x();
300
- n && n.latency !== i.value && (i.value = n.latency, i.entries = n.entries, r());
213
+ }, e.onFCP = T, e.onINP = (e, t = {}) => {
214
+ globalThis.PerformanceEventTiming && "interactionId" in PerformanceEventTiming.prototype && b(() => {
215
+ F();
216
+ let o,
217
+ s = c("INP");
218
+ const r = d(t, A),
219
+ a = e => {
220
+ B(() => {
221
+ for (const t of e) r.h(t);
222
+ const t = r.P();
223
+ t && t.T !== s.value && (s.value = t.T, s.entries = t.entries, o());
301
224
  });
302
225
  },
303
- a = d("event", o, {
304
- durationThreshold: null !== (t = n.durationThreshold) && void 0 !== t ? t : 40
226
+ h = f("event", a, {
227
+ durationThreshold: t.durationThreshold ?? 40
305
228
  });
306
- r = l(e, i, O, n.reportAllChanges), a && (a.observe({
229
+ o = i(e, s, N, t.reportAllChanges), h && (h.observe({
307
230
  type: "first-input",
308
231
  buffered: true
309
- }), v(function () {
310
- o(a.takeRecords()), r(true);
311
- }), c(function () {
312
- R = M(), D.length = 0, B.clear(), i = f("INP"), r = l(e, i, O, n.reportAllChanges);
232
+ }), document.addEventListener("visibilitychange", () => {
233
+ "hidden" === document.visibilityState && (a(h.takeRecords()), o(true));
234
+ }), n(() => {
235
+ r.p(), s = c("INP"), o = i(e, s, N, t.reportAllChanges);
313
236
  }));
314
- }));
315
- }, e.onLCP = function (e, n) {
316
- n = n || {}, L(function () {
317
- var t,
318
- r = C(),
319
- i = f("LCP"),
320
- o = function (e) {
321
- n.reportAllChanges || (e = e.slice(-1)), e.forEach(function (e) {
322
- e.startTime < r.firstHiddenTime && (i.value = Math.max(e.startTime - s(), 0), i.entries = [e], t());
323
- });
237
+ });
238
+ }, e.onLCP = (e, t = {}) => {
239
+ b(() => {
240
+ const s = y();
241
+ let a,
242
+ h = c("LCP");
243
+ const l = d(t, S),
244
+ m = e => {
245
+ t.reportAllChanges || (e = e.slice(-1));
246
+ for (const t of e) l.h(t), t.startTime < s.firstHiddenTime && (h.value = Math.max(t.startTime - r(), 0), h.entries = [t], a());
324
247
  },
325
- a = d("largest-contentful-paint", o);
326
- if (a) {
327
- t = l(e, i, j, n.reportAllChanges);
328
- var u = m(function () {
329
- V[i.id] || (o(a.takeRecords()), a.disconnect(), V[i.id] = true, t(true));
248
+ g = f("largest-contentful-paint", m);
249
+ if (g) {
250
+ a = i(e, h, q, t.reportAllChanges);
251
+ const s = u(() => {
252
+ m(g.takeRecords()), g.disconnect(), a(true);
330
253
  });
331
- ["keydown", "click"].forEach(function (e) {
332
- addEventListener(e, function () {
333
- return q(u);
334
- }, {
335
- once: true,
336
- capture: true
337
- });
338
- }), v(u), c(function (r) {
339
- i = f("LCP"), t = l(e, i, j, n.reportAllChanges), p(function () {
340
- i.value = performance.now() - r.timeStamp, V[i.id] = true, t(true);
254
+ for (const e of ["keydown", "click", "visibilitychange"]) addEventListener(e, () => B(s), {
255
+ capture: true,
256
+ once: true
257
+ });
258
+ n(n => {
259
+ h = c("LCP"), a = i(e, h, q, t.reportAllChanges), o(() => {
260
+ h.value = performance.now() - n.timeStamp, a(true);
341
261
  });
342
262
  });
343
263
  }
344
264
  });
345
- }, e.onTTFB = function (e, n) {
346
- n = n || {};
347
- var t = f("TTFB"),
348
- r = l(e, t, _, n.reportAllChanges);
349
- z(function () {
350
- var i = u();
351
- i && (t.value = Math.max(i.responseStart - s(), 0), t.entries = [i], r(true), c(function () {
352
- t = f("TTFB", 0), (r = l(e, t, _, n.reportAllChanges))(true);
265
+ }, e.onTTFB = (e, t = {}) => {
266
+ let o = c("TTFB"),
267
+ a = i(e, o, O, t.reportAllChanges);
268
+ V(() => {
269
+ const d = s();
270
+ d && (o.value = Math.max(d.responseStart - r(), 0), o.entries = [d], a(true), n(() => {
271
+ o = c("TTFB", 0), a = i(e, o, O, t.reportAllChanges), a(true);
353
272
  }));
354
273
  });
355
274
  }, e;
@@ -404,4 +323,4 @@ function addCWVTracking({
404
323
  }
405
324
 
406
325
  export { addCWVTracking as default };
407
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3d2Lm1hcC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vbm9kZV9tb2R1bGVzL3dlYi12aXRhbHMvZGlzdC93ZWItdml0YWxzLmlpZmUuanMiLCIuLi8uLi9wbHVnaW5zL2N3di5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgd2ViVml0YWxzPWZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO3ZhciBuLHQscixpLG8sYT0tMSxjPWZ1bmN0aW9uKGUpe2FkZEV2ZW50TGlzdGVuZXIoXCJwYWdlc2hvd1wiLChmdW5jdGlvbihuKXtuLnBlcnNpc3RlZCYmKGE9bi50aW1lU3RhbXAsZShuKSl9KSwhMCl9LHU9ZnVuY3Rpb24oKXt2YXIgZT1zZWxmLnBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlJiZwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKFwibmF2aWdhdGlvblwiKVswXTtpZihlJiZlLnJlc3BvbnNlU3RhcnQ+MCYmZS5yZXNwb25zZVN0YXJ0PHBlcmZvcm1hbmNlLm5vdygpKXJldHVybiBlfSxzPWZ1bmN0aW9uKCl7dmFyIGU9dSgpO3JldHVybiBlJiZlLmFjdGl2YXRpb25TdGFydHx8MH0sZj1mdW5jdGlvbihlLG4pe3ZhciB0PXUoKSxyPVwibmF2aWdhdGVcIjthPj0wP3I9XCJiYWNrLWZvcndhcmQtY2FjaGVcIjp0JiYoZG9jdW1lbnQucHJlcmVuZGVyaW5nfHxzKCk+MD9yPVwicHJlcmVuZGVyXCI6ZG9jdW1lbnQud2FzRGlzY2FyZGVkP3I9XCJyZXN0b3JlXCI6dC50eXBlJiYocj10LnR5cGUucmVwbGFjZSgvXy9nLFwiLVwiKSkpO3JldHVybntuYW1lOmUsdmFsdWU6dm9pZCAwPT09bj8tMTpuLHJhdGluZzpcImdvb2RcIixkZWx0YTowLGVudHJpZXM6W10saWQ6XCJ2NC1cIi5jb25jYXQoRGF0ZS5ub3coKSxcIi1cIikuY29uY2F0KE1hdGguZmxvb3IoODk5OTk5OTk5OTk5OSpNYXRoLnJhbmRvbSgpKSsxZTEyKSxuYXZpZ2F0aW9uVHlwZTpyfX0sZD1mdW5jdGlvbihlLG4sdCl7dHJ5e2lmKFBlcmZvcm1hbmNlT2JzZXJ2ZXIuc3VwcG9ydGVkRW50cnlUeXBlcy5pbmNsdWRlcyhlKSl7dmFyIHI9bmV3IFBlcmZvcm1hbmNlT2JzZXJ2ZXIoKGZ1bmN0aW9uKGUpe1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKGZ1bmN0aW9uKCl7bihlLmdldEVudHJpZXMoKSl9KSl9KSk7cmV0dXJuIHIub2JzZXJ2ZShPYmplY3QuYXNzaWduKHt0eXBlOmUsYnVmZmVyZWQ6ITB9LHR8fHt9KSkscn19Y2F0Y2goZSl7fX0sbD1mdW5jdGlvbihlLG4sdCxyKXt2YXIgaSxvO3JldHVybiBmdW5jdGlvbihhKXtuLnZhbHVlPj0wJiYoYXx8cikmJigobz1uLnZhbHVlLShpfHwwKSl8fHZvaWQgMD09PWkpJiYoaT1uLnZhbHVlLG4uZGVsdGE9byxuLnJhdGluZz1mdW5jdGlvbihlLG4pe3JldHVybiBlPm5bMV0/XCJwb29yXCI6ZT5uWzBdP1wibmVlZHMtaW1wcm92ZW1lbnRcIjpcImdvb2RcIn0obi52YWx1ZSx0KSxlKG4pKX19LHA9ZnVuY3Rpb24oZSl7cmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbigpe3JldHVybiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7cmV0dXJuIGUoKX0pKX0pKX0sdj1mdW5jdGlvbihlKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwidmlzaWJpbGl0eWNoYW5nZVwiLChmdW5jdGlvbigpe1wiaGlkZGVuXCI9PT1kb2N1bWVudC52aXNpYmlsaXR5U3RhdGUmJmUoKX0pKX0sbT1mdW5jdGlvbihlKXt2YXIgbj0hMTtyZXR1cm4gZnVuY3Rpb24oKXtufHwoZSgpLG49ITApfX0saD0tMSxnPWZ1bmN0aW9uKCl7cmV0dXJuXCJoaWRkZW5cIiE9PWRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZXx8ZG9jdW1lbnQucHJlcmVuZGVyaW5nPzEvMDowfSxUPWZ1bmN0aW9uKGUpe1wiaGlkZGVuXCI9PT1kb2N1bWVudC52aXNpYmlsaXR5U3RhdGUmJmg+LTEmJihoPVwidmlzaWJpbGl0eWNoYW5nZVwiPT09ZS50eXBlP2UudGltZVN0YW1wOjAsRSgpKX0seT1mdW5jdGlvbigpe2FkZEV2ZW50TGlzdGVuZXIoXCJ2aXNpYmlsaXR5Y2hhbmdlXCIsVCwhMCksYWRkRXZlbnRMaXN0ZW5lcihcInByZXJlbmRlcmluZ2NoYW5nZVwiLFQsITApfSxFPWZ1bmN0aW9uKCl7cmVtb3ZlRXZlbnRMaXN0ZW5lcihcInZpc2liaWxpdHljaGFuZ2VcIixULCEwKSxyZW1vdmVFdmVudExpc3RlbmVyKFwicHJlcmVuZGVyaW5nY2hhbmdlXCIsVCwhMCl9LEM9ZnVuY3Rpb24oKXtyZXR1cm4gaDwwJiYoaD1nKCkseSgpLGMoKGZ1bmN0aW9uKCl7c2V0VGltZW91dCgoZnVuY3Rpb24oKXtoPWcoKSx5KCl9KSwwKX0pKSkse2dldCBmaXJzdEhpZGRlblRpbWUoKXtyZXR1cm4gaH19fSxMPWZ1bmN0aW9uKGUpe2RvY3VtZW50LnByZXJlbmRlcmluZz9hZGRFdmVudExpc3RlbmVyKFwicHJlcmVuZGVyaW5nY2hhbmdlXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGUoKX0pLCEwKTplKCl9LFM9WzE4MDAsM2UzXSxiPWZ1bmN0aW9uKGUsbil7bj1ufHx7fSxMKChmdW5jdGlvbigpe3ZhciB0LHI9QygpLGk9ZihcIkZDUFwiKSxvPWQoXCJwYWludFwiLChmdW5jdGlvbihlKXtlLmZvckVhY2goKGZ1bmN0aW9uKGUpe1wiZmlyc3QtY29udGVudGZ1bC1wYWludFwiPT09ZS5uYW1lJiYoby5kaXNjb25uZWN0KCksZS5zdGFydFRpbWU8ci5maXJzdEhpZGRlblRpbWUmJihpLnZhbHVlPU1hdGgubWF4KGUuc3RhcnRUaW1lLXMoKSwwKSxpLmVudHJpZXMucHVzaChlKSx0KCEwKSkpfSkpfSkpO28mJih0PWwoZSxpLFMsbi5yZXBvcnRBbGxDaGFuZ2VzKSxjKChmdW5jdGlvbihyKXtpPWYoXCJGQ1BcIiksdD1sKGUsaSxTLG4ucmVwb3J0QWxsQ2hhbmdlcykscCgoZnVuY3Rpb24oKXtpLnZhbHVlPXBlcmZvcm1hbmNlLm5vdygpLXIudGltZVN0YW1wLHQoITApfSkpfSkpKX0pKX0sdz1bLjEsLjI1XSxJPTAsUD0xLzAsQT0wLEY9ZnVuY3Rpb24oZSl7ZS5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmludGVyYWN0aW9uSWQmJihQPU1hdGgubWluKFAsZS5pbnRlcmFjdGlvbklkKSxBPU1hdGgubWF4KEEsZS5pbnRlcmFjdGlvbklkKSxJPUE/KEEtUCkvNysxOjApfSkpfSxNPWZ1bmN0aW9uKCl7cmV0dXJuIG4/STpwZXJmb3JtYW5jZS5pbnRlcmFjdGlvbkNvdW50fHwwfSxrPWZ1bmN0aW9uKCl7XCJpbnRlcmFjdGlvbkNvdW50XCJpbiBwZXJmb3JtYW5jZXx8bnx8KG49ZChcImV2ZW50XCIsRix7dHlwZTpcImV2ZW50XCIsYnVmZmVyZWQ6ITAsZHVyYXRpb25UaHJlc2hvbGQ6MH0pKX0sRD1bXSxCPW5ldyBNYXAsUj0wLHg9ZnVuY3Rpb24oKXt2YXIgZT1NYXRoLm1pbihELmxlbmd0aC0xLE1hdGguZmxvb3IoKE0oKS1SKS81MCkpO3JldHVybiBEW2VdfSxIPVtdLE49ZnVuY3Rpb24oZSl7aWYoSC5mb3JFYWNoKChmdW5jdGlvbihuKXtyZXR1cm4gbihlKX0pKSxlLmludGVyYWN0aW9uSWR8fFwiZmlyc3QtaW5wdXRcIj09PWUuZW50cnlUeXBlKXt2YXIgbj1EW0QubGVuZ3RoLTFdLHQ9Qi5nZXQoZS5pbnRlcmFjdGlvbklkKTtpZih0fHxELmxlbmd0aDwxMHx8ZS5kdXJhdGlvbj5uLmxhdGVuY3kpe2lmKHQpZS5kdXJhdGlvbj50LmxhdGVuY3k/KHQuZW50cmllcz1bZV0sdC5sYXRlbmN5PWUuZHVyYXRpb24pOmUuZHVyYXRpb249PT10LmxhdGVuY3kmJmUuc3RhcnRUaW1lPT09dC5lbnRyaWVzWzBdLnN0YXJ0VGltZSYmdC5lbnRyaWVzLnB1c2goZSk7ZWxzZXt2YXIgcj17aWQ6ZS5pbnRlcmFjdGlvbklkLGxhdGVuY3k6ZS5kdXJhdGlvbixlbnRyaWVzOltlXX07Qi5zZXQoci5pZCxyKSxELnB1c2gocil9RC5zb3J0KChmdW5jdGlvbihlLG4pe3JldHVybiBuLmxhdGVuY3ktZS5sYXRlbmN5fSkpLEQubGVuZ3RoPjEwJiZELnNwbGljZSgxMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIEIuZGVsZXRlKGUuaWQpfSkpfX19LHE9ZnVuY3Rpb24oZSl7dmFyIG49c2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrfHxzZWxmLnNldFRpbWVvdXQsdD0tMTtyZXR1cm4gZT1tKGUpLFwiaGlkZGVuXCI9PT1kb2N1bWVudC52aXNpYmlsaXR5U3RhdGU/ZSgpOih0PW4oZSksdihlKSksdH0sTz1bMjAwLDUwMF0saj1bMjUwMCw0ZTNdLFY9e30sXz1bODAwLDE4MDBdLHo9ZnVuY3Rpb24gZShuKXtkb2N1bWVudC5wcmVyZW5kZXJpbmc/TCgoZnVuY3Rpb24oKXtyZXR1cm4gZShuKX0pKTpcImNvbXBsZXRlXCIhPT1kb2N1bWVudC5yZWFkeVN0YXRlP2FkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGUobil9KSwhMCk6c2V0VGltZW91dChuLDApfSxHPXtwYXNzaXZlOiEwLGNhcHR1cmU6ITB9LEo9bmV3IERhdGUsSz1mdW5jdGlvbihlLG4pe3R8fCh0PW4scj1lLGk9bmV3IERhdGUsVyhyZW1vdmVFdmVudExpc3RlbmVyKSxRKCkpfSxRPWZ1bmN0aW9uKCl7aWYocj49MCYmcjxpLUope3ZhciBlPXtlbnRyeVR5cGU6XCJmaXJzdC1pbnB1dFwiLG5hbWU6dC50eXBlLHRhcmdldDp0LnRhcmdldCxjYW5jZWxhYmxlOnQuY2FuY2VsYWJsZSxzdGFydFRpbWU6dC50aW1lU3RhbXAscHJvY2Vzc2luZ1N0YXJ0OnQudGltZVN0YW1wK3J9O28uZm9yRWFjaCgoZnVuY3Rpb24obil7bihlKX0pKSxvPVtdfX0sVT1mdW5jdGlvbihlKXtpZihlLmNhbmNlbGFibGUpe3ZhciBuPShlLnRpbWVTdGFtcD4xZTEyP25ldyBEYXRlOnBlcmZvcm1hbmNlLm5vdygpKS1lLnRpbWVTdGFtcDtcInBvaW50ZXJkb3duXCI9PWUudHlwZT9mdW5jdGlvbihlLG4pe3ZhciB0PWZ1bmN0aW9uKCl7SyhlLG4pLGkoKX0scj1mdW5jdGlvbigpe2koKX0saT1mdW5jdGlvbigpe3JlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVydXBcIix0LEcpLHJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVyY2FuY2VsXCIscixHKX07YWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJ1cFwiLHQsRyksYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJjYW5jZWxcIixyLEcpfShuLGUpOksobixlKX19LFc9ZnVuY3Rpb24oZSl7W1wibW91c2Vkb3duXCIsXCJrZXlkb3duXCIsXCJ0b3VjaHN0YXJ0XCIsXCJwb2ludGVyZG93blwiXS5mb3JFYWNoKChmdW5jdGlvbihuKXtyZXR1cm4gZShuLFUsRyl9KSl9LFg9WzEwMCwzMDBdO3JldHVybiBlLkNMU1RocmVzaG9sZHM9dyxlLkZDUFRocmVzaG9sZHM9UyxlLkZJRFRocmVzaG9sZHM9WCxlLklOUFRocmVzaG9sZHM9TyxlLkxDUFRocmVzaG9sZHM9aixlLlRURkJUaHJlc2hvbGRzPV8sZS5vbkNMUz1mdW5jdGlvbihlLG4pe249bnx8e30sYihtKChmdW5jdGlvbigpe3ZhciB0LHI9ZihcIkNMU1wiLDApLGk9MCxvPVtdLGE9ZnVuY3Rpb24oZSl7ZS5mb3JFYWNoKChmdW5jdGlvbihlKXtpZighZS5oYWRSZWNlbnRJbnB1dCl7dmFyIG49b1swXSx0PW9bby5sZW5ndGgtMV07aSYmZS5zdGFydFRpbWUtdC5zdGFydFRpbWU8MWUzJiZlLnN0YXJ0VGltZS1uLnN0YXJ0VGltZTw1ZTM/KGkrPWUudmFsdWUsby5wdXNoKGUpKTooaT1lLnZhbHVlLG89W2VdKX19KSksaT5yLnZhbHVlJiYoci52YWx1ZT1pLHIuZW50cmllcz1vLHQoKSl9LHU9ZChcImxheW91dC1zaGlmdFwiLGEpO3UmJih0PWwoZSxyLHcsbi5yZXBvcnRBbGxDaGFuZ2VzKSx2KChmdW5jdGlvbigpe2EodS50YWtlUmVjb3JkcygpKSx0KCEwKX0pKSxjKChmdW5jdGlvbigpe2k9MCxyPWYoXCJDTFNcIiwwKSx0PWwoZSxyLHcsbi5yZXBvcnRBbGxDaGFuZ2VzKSxwKChmdW5jdGlvbigpe3JldHVybiB0KCl9KSl9KSksc2V0VGltZW91dCh0LDApKX0pKSl9LGUub25GQ1A9YixlLm9uRklEPWZ1bmN0aW9uKGUsbil7bj1ufHx7fSxMKChmdW5jdGlvbigpe3ZhciBpLGE9QygpLHU9ZihcIkZJRFwiKSxzPWZ1bmN0aW9uKGUpe2Uuc3RhcnRUaW1lPGEuZmlyc3RIaWRkZW5UaW1lJiYodS52YWx1ZT1lLnByb2Nlc3NpbmdTdGFydC1lLnN0YXJ0VGltZSx1LmVudHJpZXMucHVzaChlKSxpKCEwKSl9LHA9ZnVuY3Rpb24oZSl7ZS5mb3JFYWNoKHMpfSxoPWQoXCJmaXJzdC1pbnB1dFwiLHApO2k9bChlLHUsWCxuLnJlcG9ydEFsbENoYW5nZXMpLGgmJih2KG0oKGZ1bmN0aW9uKCl7cChoLnRha2VSZWNvcmRzKCkpLGguZGlzY29ubmVjdCgpfSkpKSxjKChmdW5jdGlvbigpe3ZhciBhO3U9ZihcIkZJRFwiKSxpPWwoZSx1LFgsbi5yZXBvcnRBbGxDaGFuZ2VzKSxvPVtdLHI9LTEsdD1udWxsLFcoYWRkRXZlbnRMaXN0ZW5lciksYT1zLG8ucHVzaChhKSxRKCl9KSkpfSkpfSxlLm9uSU5QPWZ1bmN0aW9uKGUsbil7XCJQZXJmb3JtYW5jZUV2ZW50VGltaW5nXCJpbiBzZWxmJiZcImludGVyYWN0aW9uSWRcImluIFBlcmZvcm1hbmNlRXZlbnRUaW1pbmcucHJvdG90eXBlJiYobj1ufHx7fSxMKChmdW5jdGlvbigpe3ZhciB0O2soKTt2YXIgcixpPWYoXCJJTlBcIiksbz1mdW5jdGlvbihlKXtxKChmdW5jdGlvbigpe2UuZm9yRWFjaChOKTt2YXIgbj14KCk7biYmbi5sYXRlbmN5IT09aS52YWx1ZSYmKGkudmFsdWU9bi5sYXRlbmN5LGkuZW50cmllcz1uLmVudHJpZXMscigpKX0pKX0sYT1kKFwiZXZlbnRcIixvLHtkdXJhdGlvblRocmVzaG9sZDpudWxsIT09KHQ9bi5kdXJhdGlvblRocmVzaG9sZCkmJnZvaWQgMCE9PXQ/dDo0MH0pO3I9bChlLGksTyxuLnJlcG9ydEFsbENoYW5nZXMpLGEmJihhLm9ic2VydmUoe3R5cGU6XCJmaXJzdC1pbnB1dFwiLGJ1ZmZlcmVkOiEwfSksdigoZnVuY3Rpb24oKXtvKGEudGFrZVJlY29yZHMoKSkscighMCl9KSksYygoZnVuY3Rpb24oKXtSPU0oKSxELmxlbmd0aD0wLEIuY2xlYXIoKSxpPWYoXCJJTlBcIikscj1sKGUsaSxPLG4ucmVwb3J0QWxsQ2hhbmdlcyl9KSkpfSkpKX0sZS5vbkxDUD1mdW5jdGlvbihlLG4pe249bnx8e30sTCgoZnVuY3Rpb24oKXt2YXIgdCxyPUMoKSxpPWYoXCJMQ1BcIiksbz1mdW5jdGlvbihlKXtuLnJlcG9ydEFsbENoYW5nZXN8fChlPWUuc2xpY2UoLTEpKSxlLmZvckVhY2goKGZ1bmN0aW9uKGUpe2Uuc3RhcnRUaW1lPHIuZmlyc3RIaWRkZW5UaW1lJiYoaS52YWx1ZT1NYXRoLm1heChlLnN0YXJ0VGltZS1zKCksMCksaS5lbnRyaWVzPVtlXSx0KCkpfSkpfSxhPWQoXCJsYXJnZXN0LWNvbnRlbnRmdWwtcGFpbnRcIixvKTtpZihhKXt0PWwoZSxpLGosbi5yZXBvcnRBbGxDaGFuZ2VzKTt2YXIgdT1tKChmdW5jdGlvbigpe1ZbaS5pZF18fChvKGEudGFrZVJlY29yZHMoKSksYS5kaXNjb25uZWN0KCksVltpLmlkXT0hMCx0KCEwKSl9KSk7W1wia2V5ZG93blwiLFwiY2xpY2tcIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7YWRkRXZlbnRMaXN0ZW5lcihlLChmdW5jdGlvbigpe3JldHVybiBxKHUpfSkse29uY2U6ITAsY2FwdHVyZTohMH0pfSkpLHYodSksYygoZnVuY3Rpb24ocil7aT1mKFwiTENQXCIpLHQ9bChlLGksaixuLnJlcG9ydEFsbENoYW5nZXMpLHAoKGZ1bmN0aW9uKCl7aS52YWx1ZT1wZXJmb3JtYW5jZS5ub3coKS1yLnRpbWVTdGFtcCxWW2kuaWRdPSEwLHQoITApfSkpfSkpfX0pKX0sZS5vblRURkI9ZnVuY3Rpb24oZSxuKXtuPW58fHt9O3ZhciB0PWYoXCJUVEZCXCIpLHI9bChlLHQsXyxuLnJlcG9ydEFsbENoYW5nZXMpO3ooKGZ1bmN0aW9uKCl7dmFyIGk9dSgpO2kmJih0LnZhbHVlPU1hdGgubWF4KGkucmVzcG9uc2VTdGFydC1zKCksMCksdC5lbnRyaWVzPVtpXSxyKCEwKSxjKChmdW5jdGlvbigpe3Q9ZihcIlRURkJcIiwwKSwocj1sKGUsdCxfLG4ucmVwb3J0QWxsQ2hhbmdlcykpKCEwKX0pKSl9KSl9LGV9KHt9KTtcbiIsIi8qXG4gKiBDb3B5cmlnaHQgMjAyNCBBZG9iZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5XG4gKiBvZiB0aGUgTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyXG4gKiB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlNcbiAqIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZVxuICogZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMsIGltcG9ydC9uby1yZWxhdGl2ZS1wYWNrYWdlcywgbm8tdW51c2VkLXZhcnNcbmltcG9ydCAqIGFzIHdlYlZpdGFscyBmcm9tICcuLi9ub2RlX21vZHVsZXMvd2ViLXZpdGFscy9kaXN0L3dlYi12aXRhbHMuaWlmZS5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZENXVlRyYWNraW5nKHtcbiAgc2FtcGxlUlVNLCBzb3VyY2VTZWxlY3RvciwgdGFyZ2V0U2VsZWN0b3IsIGZmbGFncyxcbn0pIHtcbiAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGN3dlNjcmlwdCA9IG5ldyBVUkwoJy5ydW0vd2ViLXZpdGFscy9kaXN0L3dlYi12aXRhbHMuaWlmZS5qcycsIHNhbXBsZVJVTS5iYXNlVVJMKS5ocmVmO1xuICAgICAgLyogYzggaWdub3JlIG5leHQgMyAqL1xuICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYHNjcmlwdFtzcmM9XCIke2N3dlNjcmlwdH1cIl1gKSkge1xuICAgICAgICAvLyB3ZWIgdml0YWxzIHNjcmlwdCBoYXMgYmVlbiBsb2FkZWQgYWxyZWFkeVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgIHNjcmlwdC5zcmMgPSBjd3ZTY3JpcHQ7XG4gICAgICBzY3JpcHQub25sb2FkID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBzdG9yZUNXViA9IChtZWFzdXJlbWVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSB7IGN3djoge30gfTtcbiAgICAgICAgICBkYXRhLmN3dlttZWFzdXJlbWVudC5uYW1lXSA9IG1lYXN1cmVtZW50LnZhbHVlO1xuICAgICAgICAgIGlmIChtZWFzdXJlbWVudC5uYW1lID09PSAnTENQJyAmJiBtZWFzdXJlbWVudC5lbnRyaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHsgZWxlbWVudCB9ID0gbWVhc3VyZW1lbnQuZW50cmllcy5wb3AoKTtcbiAgICAgICAgICAgIGRhdGEudGFyZ2V0ID0gdGFyZ2V0U2VsZWN0b3IoZWxlbWVudCk7XG4gICAgICAgICAgICBkYXRhLnNvdXJjZSA9IHNvdXJjZVNlbGVjdG9yKGVsZW1lbnQpIHx8IChlbGVtZW50ICYmIGVsZW1lbnQub3V0ZXJIVE1MLnNsaWNlKDAsIDMwKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNhbXBsZVJVTSgnY3d2JywgZGF0YSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaXNFYWdlciA9IChtZXRyaWMpID0+IFsnQ0xTJywgJ0xDUCddLmluY2x1ZGVzKG1ldHJpYyk7XG5cbiAgICAgICAgLy8gV2hlbiBsb2FkaW5nIGB3ZWItdml0YWxzYCB1c2luZyBhIGNsYXNzaWMgc2NyaXB0LCBhbGwgdGhlIHB1YmxpY1xuICAgICAgICAvLyBtZXRob2RzIGNhbiBiZSBmb3VuZCBvbiB0aGUgYHdlYlZpdGFsc2AgZ2xvYmFsIG5hbWVzcGFjZS5cbiAgICAgICAgWydJTlAnLCAnVFRGQicsICdDTFMnLCAnTENQJ10uZm9yRWFjaCgobWV0cmljKSA9PiB7XG4gICAgICAgICAgY29uc3QgbWV0cmljRm4gPSB3aW5kb3cud2ViVml0YWxzW2BvbiR7bWV0cmljfWBdO1xuICAgICAgICAgIGlmICh0eXBlb2YgbWV0cmljRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGxldCBvcHRzID0ge307XG4gICAgICAgICAgICBmZmxhZ3MuZW5hYmxlZCgnZWFnZXJjd3YnLCAoKSA9PiB7XG4gICAgICAgICAgICAgIG9wdHMgPSB7IHJlcG9ydEFsbENoYW5nZXM6IGlzRWFnZXIobWV0cmljKSB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBtZXRyaWNGbihzdG9yZUNXViwgb3B0cyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgICAvKiBjOCBpZ25vcmUgbmV4dCAzICovXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIHNvbWV0aGluZyB3ZW50IHdyb25nXG4gICAgfVxuICB9LCAyMDAwKTsgLy8gd2FpdCBmb3IgZGVsYXllZFxufVxuIl0sIm5hbWVzIjpbImUiLCJuIiwidCIsInIiLCJpIiwibyIsImEiLCJjIiwiYWRkRXZlbnRMaXN0ZW5lciIsInBlcnNpc3RlZCIsInRpbWVTdGFtcCIsInUiLCJzZWxmIiwicGVyZm9ybWFuY2UiLCJnZXRFbnRyaWVzQnlUeXBlIiwicmVzcG9uc2VTdGFydCIsIm5vdyIsInMiLCJhY3RpdmF0aW9uU3RhcnQiLCJmIiwiZG9jdW1lbnQiLCJwcmVyZW5kZXJpbmciLCJ3YXNEaXNjYXJkZWQiLCJ0eXBlIiwicmVwbGFjZSIsIm5hbWUiLCJ2YWx1ZSIsInJhdGluZyIsImRlbHRhIiwiZW50cmllcyIsImlkIiwiY29uY2F0IiwiRGF0ZSIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsIm5hdmlnYXRpb25UeXBlIiwiZCIsIlBlcmZvcm1hbmNlT2JzZXJ2ZXIiLCJzdXBwb3J0ZWRFbnRyeVR5cGVzIiwiaW5jbHVkZXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJnZXRFbnRyaWVzIiwib2JzZXJ2ZSIsIk9iamVjdCIsImFzc2lnbiIsImJ1ZmZlcmVkIiwibCIsInAiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJ2IiwidmlzaWJpbGl0eVN0YXRlIiwibSIsImgiLCJnIiwiVCIsIkUiLCJ5IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIkMiLCJzZXRUaW1lb3V0IiwiZmlyc3RIaWRkZW5UaW1lIiwiTCIsIlMiLCJiIiwiZm9yRWFjaCIsImRpc2Nvbm5lY3QiLCJzdGFydFRpbWUiLCJtYXgiLCJwdXNoIiwicmVwb3J0QWxsQ2hhbmdlcyIsInciLCJJIiwiUCIsIkEiLCJGIiwiaW50ZXJhY3Rpb25JZCIsIm1pbiIsIk0iLCJpbnRlcmFjdGlvbkNvdW50IiwiayIsImR1cmF0aW9uVGhyZXNob2xkIiwiRCIsIkIiLCJNYXAiLCJSIiwieCIsImxlbmd0aCIsIkgiLCJOIiwiZW50cnlUeXBlIiwiZ2V0IiwiZHVyYXRpb24iLCJsYXRlbmN5Iiwic2V0Iiwic29ydCIsInNwbGljZSIsImRlbGV0ZSIsInEiLCJyZXF1ZXN0SWRsZUNhbGxiYWNrIiwiTyIsImoiLCJWIiwiXyIsInoiLCJyZWFkeVN0YXRlIiwiRyIsInBhc3NpdmUiLCJjYXB0dXJlIiwiSiIsIksiLCJXIiwiUSIsInRhcmdldCIsImNhbmNlbGFibGUiLCJwcm9jZXNzaW5nU3RhcnQiLCJVIiwiWCIsIkNMU1RocmVzaG9sZHMiLCJGQ1BUaHJlc2hvbGRzIiwiRklEVGhyZXNob2xkcyIsIklOUFRocmVzaG9sZHMiLCJMQ1BUaHJlc2hvbGRzIiwiVFRGQlRocmVzaG9sZHMiLCJvbkNMUyIsImhhZFJlY2VudElucHV0IiwidGFrZVJlY29yZHMiLCJvbkZDUCIsIm9uRklEIiwib25JTlAiLCJQZXJmb3JtYW5jZUV2ZW50VGltaW5nIiwicHJvdG90eXBlIiwiY2xlYXIiLCJvbkxDUCIsInNsaWNlIiwib25jZSIsIm9uVFRGQiIsImFkZENXVlRyYWNraW5nIiwic2FtcGxlUlVNIiwic291cmNlU2VsZWN0b3IiLCJ0YXJnZXRTZWxlY3RvciIsImZmbGFncyIsImN3dlNjcmlwdCIsIlVSTCIsImJhc2VVUkwiLCJocmVmIiwicXVlcnlTZWxlY3RvciIsInNjcmlwdCIsImNyZWF0ZUVsZW1lbnQiLCJzcmMiLCJvbmxvYWQiLCJzdG9yZUNXViIsIm1lYXN1cmVtZW50IiwiZGF0YSIsImN3diIsImVsZW1lbnQiLCJwb3AiLCJzb3VyY2UiLCJvdXRlckhUTUwiLCJpc0VhZ2VyIiwibWV0cmljIiwibWV0cmljRm4iLCJ3aW5kb3ciLCJ3ZWJWaXRhbHMiLCJvcHRzIiwiZW5hYmxlZCIsImhlYWQiLCJhcHBlbmRDaGlsZCIsImVycm9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztDQUFjLFVBQVNBLENBQUMsRUFBQzs7QUFBYyxFQUFBLElBQUlDLENBQUM7SUFBQ0MsQ0FBQztJQUFDQyxDQUFDO0lBQUNDLENBQUM7SUFBQ0MsQ0FBQztJQUFDQyxDQUFDLEdBQUMsRUFBRTtBQUFDQyxJQUFBQSxDQUFDLEdBQUMsVUFBU1AsQ0FBQyxFQUFDO0FBQUNRLE1BQUFBLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxVQUFTUCxDQUFDLEVBQUM7QUFBQ0EsUUFBQUEsQ0FBQyxDQUFDUSxTQUFTLEtBQUdILENBQUMsR0FBQ0wsQ0FBQyxDQUFDUyxTQUFTLEVBQUNWLENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLENBQUM7T0FBQyxFQUFFLElBQUUsQ0FBQztLQUFDO0lBQUNVLENBQUMsR0FBQyxZQUFVO0FBQUMsTUFBQSxJQUFJWCxDQUFDLEdBQUNZLElBQUksQ0FBQ0MsV0FBVyxJQUFFQSxXQUFXLENBQUNDLGdCQUFnQixJQUFFRCxXQUFXLENBQUNDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUFDLE1BQUEsSUFBR2QsQ0FBQyxJQUFFQSxDQUFDLENBQUNlLGFBQWEsR0FBQyxDQUFDLElBQUVmLENBQUMsQ0FBQ2UsYUFBYSxHQUFDRixXQUFXLENBQUNHLEdBQUcsRUFBRSxFQUFDLE9BQU9oQixDQUFDO0tBQUM7SUFBQ2lCLENBQUMsR0FBQyxZQUFVO0FBQUMsTUFBQSxJQUFJakIsQ0FBQyxHQUFDVyxDQUFDLEVBQUU7QUFBQyxNQUFBLE9BQU9YLENBQUMsSUFBRUEsQ0FBQyxDQUFDa0IsZUFBZSxJQUFFLENBQUM7S0FBQztBQUFDQyxJQUFBQSxDQUFDLEdBQUMsVUFBU25CLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO0FBQUMsTUFBQSxJQUFJQyxDQUFDLEdBQUNTLENBQUMsRUFBRTtB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
326
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3d2Lm1hcC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vbm9kZV9tb2R1bGVzL3dlYi12aXRhbHMvZGlzdC93ZWItdml0YWxzLmlpZmUuanMiLCIuLi8uLi9wbHVnaW5zL2N3di5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgd2ViVml0YWxzPWZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO2xldCB0PS0xO2NvbnN0IG49ZT0+e2FkZEV2ZW50TGlzdGVuZXIoXCJwYWdlc2hvd1wiLChuPT57bi5wZXJzaXN0ZWQmJih0PW4udGltZVN0YW1wLGUobikpfSksITApfSxpPShlLHQsbixpKT0+e2xldCBvLHM7cmV0dXJuIHI9Pnt0LnZhbHVlPj0wJiYocnx8aSkmJihzPXQudmFsdWUtKG8/PzApLChzfHx2b2lkIDA9PT1vKSYmKG89dC52YWx1ZSx0LmRlbHRhPXMsdC5yYXRpbmc9KChlLHQpPT5lPnRbMV0/XCJwb29yXCI6ZT50WzBdP1wibmVlZHMtaW1wcm92ZW1lbnRcIjpcImdvb2RcIikodC52YWx1ZSxuKSxlKHQpKSl9fSxvPWU9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT5lKCkpKSkpfSxzPSgpPT57Y29uc3QgZT1wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKFwibmF2aWdhdGlvblwiKVswXTtpZihlJiZlLnJlc3BvbnNlU3RhcnQ+MCYmZS5yZXNwb25zZVN0YXJ0PHBlcmZvcm1hbmNlLm5vdygpKXJldHVybiBlfSxyPSgpPT57Y29uc3QgZT1zKCk7cmV0dXJuIGU/LmFjdGl2YXRpb25TdGFydD8/MH0sYz0oZSxuPS0xKT0+e2NvbnN0IGk9cygpO2xldCBvPVwibmF2aWdhdGVcIjt0Pj0wP289XCJiYWNrLWZvcndhcmQtY2FjaGVcIjppJiYoZG9jdW1lbnQucHJlcmVuZGVyaW5nfHxyKCk+MD9vPVwicHJlcmVuZGVyXCI6ZG9jdW1lbnQud2FzRGlzY2FyZGVkP289XCJyZXN0b3JlXCI6aS50eXBlJiYobz1pLnR5cGUucmVwbGFjZSgvXy9nLFwiLVwiKSkpO3JldHVybntuYW1lOmUsdmFsdWU6bixyYXRpbmc6XCJnb29kXCIsZGVsdGE6MCxlbnRyaWVzOltdLGlkOmB2NS0ke0RhdGUubm93KCl9LSR7TWF0aC5mbG9vcig4OTk5OTk5OTk5OTk5Kk1hdGgucmFuZG9tKCkpKzFlMTJ9YCxuYXZpZ2F0aW9uVHlwZTpvfX0sYT1uZXcgV2Vha01hcDtmdW5jdGlvbiBkKGUsdCl7cmV0dXJuIGEuZ2V0KGUpfHxhLnNldChlLG5ldyB0KSxhLmdldChlKX1jbGFzcyBoe3Q7aT0wO289W107aChlKXtpZihlLmhhZFJlY2VudElucHV0KXJldHVybjtjb25zdCB0PXRoaXMub1swXSxuPXRoaXMuby5hdCgtMSk7dGhpcy5pJiZ0JiZuJiZlLnN0YXJ0VGltZS1uLnN0YXJ0VGltZTwxZTMmJmUuc3RhcnRUaW1lLXQuc3RhcnRUaW1lPDVlMz8odGhpcy5pKz1lLnZhbHVlLHRoaXMuby5wdXNoKGUpKToodGhpcy5pPWUudmFsdWUsdGhpcy5vPVtlXSksdGhpcy50Py4oZSl9fWNvbnN0IGY9KGUsdCxuPXt9KT0+e3RyeXtpZihQZXJmb3JtYW5jZU9ic2VydmVyLnN1cHBvcnRlZEVudHJ5VHlwZXMuaW5jbHVkZXMoZSkpe2NvbnN0IGk9bmV3IFBlcmZvcm1hbmNlT2JzZXJ2ZXIoKGU9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+e3QoZS5nZXRFbnRyaWVzKCkpfSkpfSkpO3JldHVybiBpLm9ic2VydmUoe3R5cGU6ZSxidWZmZXJlZDohMCwuLi5ufSksaX19Y2F0Y2h7fX0sdT1lPT57bGV0IHQ9ITE7cmV0dXJuKCk9Pnt0fHwoZSgpLHQ9ITApfX07bGV0IGw9LTE7Y29uc3QgbT0oKT0+XCJoaWRkZW5cIiE9PWRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZXx8ZG9jdW1lbnQucHJlcmVuZGVyaW5nPzEvMDowLGc9ZT0+e1wiaGlkZGVuXCI9PT1kb2N1bWVudC52aXNpYmlsaXR5U3RhdGUmJmw+LTEmJihsPVwidmlzaWJpbGl0eWNoYW5nZVwiPT09ZS50eXBlP2UudGltZVN0YW1wOjAscCgpKX0sdj0oKT0+e2FkZEV2ZW50TGlzdGVuZXIoXCJ2aXNpYmlsaXR5Y2hhbmdlXCIsZywhMCksYWRkRXZlbnRMaXN0ZW5lcihcInByZXJlbmRlcmluZ2NoYW5nZVwiLGcsITApfSxwPSgpPT57cmVtb3ZlRXZlbnRMaXN0ZW5lcihcInZpc2liaWxpdHljaGFuZ2VcIixnLCEwKSxyZW1vdmVFdmVudExpc3RlbmVyKFwicHJlcmVuZGVyaW5nY2hhbmdlXCIsZywhMCl9LHk9KCk9PntpZihsPDApe2NvbnN0IGU9ZG9jdW1lbnQucHJlcmVuZGVyaW5nP3ZvaWQgMDpnbG9iYWxUaGlzLnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUoXCJ2aXNpYmlsaXR5LXN0YXRlXCIpLmZpbHRlcigoZT0+XCJoaWRkZW5cIj09PWUubmFtZSkpWzBdPy5zdGFydFRpbWU7bD1lPz9tKCksdigpLG4oKCgpPT57c2V0VGltZW91dCgoKCk9PntsPW0oKSx2KCl9KSl9KSl9cmV0dXJue2dldCBmaXJzdEhpZGRlblRpbWUoKXtyZXR1cm4gbH19fSxiPWU9Pntkb2N1bWVudC5wcmVyZW5kZXJpbmc/YWRkRXZlbnRMaXN0ZW5lcihcInByZXJlbmRlcmluZ2NoYW5nZVwiLCgoKT0+ZSgpKSwhMCk6ZSgpfSxQPVsxODAwLDNlM10sVD0oZSx0PXt9KT0+e2IoKCgpPT57Y29uc3Qgcz15KCk7bGV0IGEsZD1jKFwiRkNQXCIpO2NvbnN0IGg9ZihcInBhaW50XCIsKGU9Pntmb3IoY29uc3QgdCBvZiBlKVwiZmlyc3QtY29udGVudGZ1bC1wYWludFwiPT09dC5uYW1lJiYoaC5kaXNjb25uZWN0KCksdC5zdGFydFRpbWU8cy5maXJzdEhpZGRlblRpbWUmJihkLnZhbHVlPU1hdGgubWF4KHQuc3RhcnRUaW1lLXIoKSwwKSxkLmVudHJpZXMucHVzaCh0KSxhKCEwKSkpfSkpO2gmJihhPWkoZSxkLFAsdC5yZXBvcnRBbGxDaGFuZ2VzKSxuKChuPT57ZD1jKFwiRkNQXCIpLGE9aShlLGQsUCx0LnJlcG9ydEFsbENoYW5nZXMpLG8oKCgpPT57ZC52YWx1ZT1wZXJmb3JtYW5jZS5ub3coKS1uLnRpbWVTdGFtcCxhKCEwKX0pKX0pKSl9KSl9LEU9Wy4xLC4yNV07bGV0IF89MCxMPTEvMCxNPTA7Y29uc3Qgdz1lPT57Zm9yKGNvbnN0IHQgb2YgZSl0LmludGVyYWN0aW9uSWQmJihMPU1hdGgubWluKEwsdC5pbnRlcmFjdGlvbklkKSxNPU1hdGgubWF4KE0sdC5pbnRlcmFjdGlvbklkKSxfPU0/KE0tTCkvNysxOjApfTtsZXQgQztjb25zdCBJPSgpPT5DP186cGVyZm9ybWFuY2UuaW50ZXJhY3Rpb25Db3VudD8/MCxGPSgpPT57XCJpbnRlcmFjdGlvbkNvdW50XCJpbiBwZXJmb3JtYW5jZXx8Q3x8KEM9ZihcImV2ZW50XCIsdyx7dHlwZTpcImV2ZW50XCIsYnVmZmVyZWQ6ITAsZHVyYXRpb25UaHJlc2hvbGQ6MH0pKX07bGV0IGs9MDtjbGFzcyBBe3U9W107bD1uZXcgTWFwO207djtwKCl7az1JKCksdGhpcy51Lmxlbmd0aD0wLHRoaXMubC5jbGVhcigpfVAoKXtjb25zdCBlPU1hdGgubWluKHRoaXMudS5sZW5ndGgtMSxNYXRoLmZsb29yKChJKCktaykvNTApKTtyZXR1cm4gdGhpcy51W2VdfWgoZSl7aWYodGhpcy5tPy4oZSksIWUuaW50ZXJhY3Rpb25JZCYmXCJmaXJzdC1pbnB1dFwiIT09ZS5lbnRyeVR5cGUpcmV0dXJuO2NvbnN0IHQ9dGhpcy51LmF0KC0xKTtsZXQgbj10aGlzLmwuZ2V0KGUuaW50ZXJhY3Rpb25JZCk7aWYobnx8dGhpcy51Lmxlbmd0aDwxMHx8ZS5kdXJhdGlvbj50LlQpe2lmKG4/ZS5kdXJhdGlvbj5uLlQ/KG4uZW50cmllcz1bZV0sbi5UPWUuZHVyYXRpb24pOmUuZHVyYXRpb249PT1uLlQmJmUuc3RhcnRUaW1lPT09bi5lbnRyaWVzWzBdLnN0YXJ0VGltZSYmbi5lbnRyaWVzLnB1c2goZSk6KG49e2lkOmUuaW50ZXJhY3Rpb25JZCxlbnRyaWVzOltlXSxUOmUuZHVyYXRpb259LHRoaXMubC5zZXQobi5pZCxuKSx0aGlzLnUucHVzaChuKSksdGhpcy51LnNvcnQoKChlLHQpPT50LlQtZS5UKSksdGhpcy51Lmxlbmd0aD4xMCl7Y29uc3QgZT10aGlzLnUuc3BsaWNlKDEwKTtmb3IoY29uc3QgdCBvZiBlKXRoaXMubC5kZWxldGUodC5pZCl9dGhpcy52Py4obil9fX1jb25zdCBCPWU9Pntjb25zdCB0PWdsb2JhbFRoaXMucmVxdWVzdElkbGVDYWxsYmFja3x8c2V0VGltZW91dDtcImhpZGRlblwiPT09ZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlP2UoKToodChlPXUoZSkpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ2aXNpYmlsaXR5Y2hhbmdlXCIsZSx7b25jZTohMH0pKX0sTj1bMjAwLDUwMF07Y2xhc3MgU3ttO2goZSl7dGhpcy5tPy4oZSl9fWNvbnN0IHE9WzI1MDAsNGUzXSxPPVs4MDAsMTgwMF0sVj1lPT57ZG9jdW1lbnQucHJlcmVuZGVyaW5nP2IoKCgpPT5WKGUpKSk6XCJjb21wbGV0ZVwiIT09ZG9jdW1lbnQucmVhZHlTdGF0ZT9hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLCgoKT0+VihlKSksITApOnNldFRpbWVvdXQoZSl9O3JldHVybiBlLkNMU1RocmVzaG9sZHM9RSxlLkZDUFRocmVzaG9sZHM9UCxlLklOUFRocmVzaG9sZHM9TixlLkxDUFRocmVzaG9sZHM9cSxlLlRURkJUaHJlc2hvbGRzPU8sZS5vbkNMUz0oZSx0PXt9KT0+e1QodSgoKCk9PntsZXQgcyxyPWMoXCJDTFNcIiwwKTtjb25zdCBhPWQodCxoKSx1PWU9Pntmb3IoY29uc3QgdCBvZiBlKWEuaCh0KTthLmk+ci52YWx1ZSYmKHIudmFsdWU9YS5pLHIuZW50cmllcz1hLm8scygpKX0sbD1mKFwibGF5b3V0LXNoaWZ0XCIsdSk7bCYmKHM9aShlLHIsRSx0LnJlcG9ydEFsbENoYW5nZXMpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ2aXNpYmlsaXR5Y2hhbmdlXCIsKCgpPT57XCJoaWRkZW5cIj09PWRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSYmKHUobC50YWtlUmVjb3JkcygpKSxzKCEwKSl9KSksbigoKCk9PnthLmk9MCxyPWMoXCJDTFNcIiwwKSxzPWkoZSxyLEUsdC5yZXBvcnRBbGxDaGFuZ2VzKSxvKCgoKT0+cygpKSl9KSksc2V0VGltZW91dChzKSl9KSkpfSxlLm9uRkNQPVQsZS5vbklOUD0oZSx0PXt9KT0+e2dsb2JhbFRoaXMuUGVyZm9ybWFuY2VFdmVudFRpbWluZyYmXCJpbnRlcmFjdGlvbklkXCJpbiBQZXJmb3JtYW5jZUV2ZW50VGltaW5nLnByb3RvdHlwZSYmYigoKCk9PntGKCk7bGV0IG8scz1jKFwiSU5QXCIpO2NvbnN0IHI9ZCh0LEEpLGE9ZT0+e0IoKCgpPT57Zm9yKGNvbnN0IHQgb2YgZSlyLmgodCk7Y29uc3QgdD1yLlAoKTt0JiZ0LlQhPT1zLnZhbHVlJiYocy52YWx1ZT10LlQscy5lbnRyaWVzPXQuZW50cmllcyxvKCkpfSkpfSxoPWYoXCJldmVudFwiLGEse2R1cmF0aW9uVGhyZXNob2xkOnQuZHVyYXRpb25UaHJlc2hvbGQ/PzQwfSk7bz1pKGUscyxOLHQucmVwb3J0QWxsQ2hhbmdlcyksaCYmKGgub2JzZXJ2ZSh7dHlwZTpcImZpcnN0LWlucHV0XCIsYnVmZmVyZWQ6ITB9KSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwidmlzaWJpbGl0eWNoYW5nZVwiLCgoKT0+e1wiaGlkZGVuXCI9PT1kb2N1bWVudC52aXNpYmlsaXR5U3RhdGUmJihhKGgudGFrZVJlY29yZHMoKSksbyghMCkpfSkpLG4oKCgpPT57ci5wKCkscz1jKFwiSU5QXCIpLG89aShlLHMsTix0LnJlcG9ydEFsbENoYW5nZXMpfSkpKX0pKX0sZS5vbkxDUD0oZSx0PXt9KT0+e2IoKCgpPT57Y29uc3Qgcz15KCk7bGV0IGEsaD1jKFwiTENQXCIpO2NvbnN0IGw9ZCh0LFMpLG09ZT0+e3QucmVwb3J0QWxsQ2hhbmdlc3x8KGU9ZS5zbGljZSgtMSkpO2Zvcihjb25zdCB0IG9mIGUpbC5oKHQpLHQuc3RhcnRUaW1lPHMuZmlyc3RIaWRkZW5UaW1lJiYoaC52YWx1ZT1NYXRoLm1heCh0LnN0YXJ0VGltZS1yKCksMCksaC5lbnRyaWVzPVt0XSxhKCkpfSxnPWYoXCJsYXJnZXN0LWNvbnRlbnRmdWwtcGFpbnRcIixtKTtpZihnKXthPWkoZSxoLHEsdC5yZXBvcnRBbGxDaGFuZ2VzKTtjb25zdCBzPXUoKCgpPT57bShnLnRha2VSZWNvcmRzKCkpLGcuZGlzY29ubmVjdCgpLGEoITApfSkpO2Zvcihjb25zdCBlIG9mW1wia2V5ZG93blwiLFwiY2xpY2tcIixcInZpc2liaWxpdHljaGFuZ2VcIl0pYWRkRXZlbnRMaXN0ZW5lcihlLCgoKT0+QihzKSkse2NhcHR1cmU6ITAsb25jZTohMH0pO24oKG49PntoPWMoXCJMQ1BcIiksYT1pKGUsaCxxLHQucmVwb3J0QWxsQ2hhbmdlcyksbygoKCk9PntoLnZhbHVlPXBlcmZvcm1hbmNlLm5vdygpLW4udGltZVN0YW1wLGEoITApfSkpfSkpfX0pKX0sZS5vblRURkI9KGUsdD17fSk9PntsZXQgbz1jKFwiVFRGQlwiKSxhPWkoZSxvLE8sdC5yZXBvcnRBbGxDaGFuZ2VzKTtWKCgoKT0+e2NvbnN0IGQ9cygpO2QmJihvLnZhbHVlPU1hdGgubWF4KGQucmVzcG9uc2VTdGFydC1yKCksMCksby5lbnRyaWVzPVtkXSxhKCEwKSxuKCgoKT0+e289YyhcIlRURkJcIiwwKSxhPWkoZSxvLE8sdC5yZXBvcnRBbGxDaGFuZ2VzKSxhKCEwKX0pKSl9KSl9LGV9KHt9KTtcbiIsIi8qXG4gKiBDb3B5cmlnaHQgMjAyNCBBZG9iZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5XG4gKiBvZiB0aGUgTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyXG4gKiB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlNcbiAqIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZVxuICogZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMsIGltcG9ydC9uby1yZWxhdGl2ZS1wYWNrYWdlcywgbm8tdW51c2VkLXZhcnNcbmltcG9ydCAqIGFzIHdlYlZpdGFscyBmcm9tICcuLi9ub2RlX21vZHVsZXMvd2ViLXZpdGFscy9kaXN0L3dlYi12aXRhbHMuaWlmZS5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZENXVlRyYWNraW5nKHtcbiAgc2FtcGxlUlVNLCBzb3VyY2VTZWxlY3RvciwgdGFyZ2V0U2VsZWN0b3IsIGZmbGFncyxcbn0pIHtcbiAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGN3dlNjcmlwdCA9IG5ldyBVUkwoJy5ydW0vd2ViLXZpdGFscy9kaXN0L3dlYi12aXRhbHMuaWlmZS5qcycsIHNhbXBsZVJVTS5iYXNlVVJMKS5ocmVmO1xuICAgICAgLyogYzggaWdub3JlIG5leHQgMyAqL1xuICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYHNjcmlwdFtzcmM9XCIke2N3dlNjcmlwdH1cIl1gKSkge1xuICAgICAgICAvLyB3ZWIgdml0YWxzIHNjcmlwdCBoYXMgYmVlbiBsb2FkZWQgYWxyZWFkeVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgIHNjcmlwdC5zcmMgPSBjd3ZTY3JpcHQ7XG4gICAgICBzY3JpcHQub25sb2FkID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBzdG9yZUNXViA9IChtZWFzdXJlbWVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSB7IGN3djoge30gfTtcbiAgICAgICAgICBkYXRhLmN3dlttZWFzdXJlbWVudC5uYW1lXSA9IG1lYXN1cmVtZW50LnZhbHVlO1xuICAgICAgICAgIGlmIChtZWFzdXJlbWVudC5uYW1lID09PSAnTENQJyAmJiBtZWFzdXJlbWVudC5lbnRyaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHsgZWxlbWVudCB9ID0gbWVhc3VyZW1lbnQuZW50cmllcy5wb3AoKTtcbiAgICAgICAgICAgIGRhdGEudGFyZ2V0ID0gdGFyZ2V0U2VsZWN0b3IoZWxlbWVudCk7XG4gICAgICAgICAgICBkYXRhLnNvdXJjZSA9IHNvdXJjZVNlbGVjdG9yKGVsZW1lbnQpIHx8IChlbGVtZW50ICYmIGVsZW1lbnQub3V0ZXJIVE1MLnNsaWNlKDAsIDMwKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNhbXBsZVJVTSgnY3d2JywgZGF0YSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaXNFYWdlciA9IChtZXRyaWMpID0+IFsnQ0xTJywgJ0xDUCddLmluY2x1ZGVzKG1ldHJpYyk7XG5cbiAgICAgICAgLy8gV2hlbiBsb2FkaW5nIGB3ZWItdml0YWxzYCB1c2luZyBhIGNsYXNzaWMgc2NyaXB0LCBhbGwgdGhlIHB1YmxpY1xuICAgICAgICAvLyBtZXRob2RzIGNhbiBiZSBmb3VuZCBvbiB0aGUgYHdlYlZpdGFsc2AgZ2xvYmFsIG5hbWVzcGFjZS5cbiAgICAgICAgWydJTlAnLCAnVFRGQicsICdDTFMnLCAnTENQJ10uZm9yRWFjaCgobWV0cmljKSA9PiB7XG4gICAgICAgICAgY29uc3QgbWV0cmljRm4gPSB3aW5kb3cud2ViVml0YWxzW2BvbiR7bWV0cmljfWBdO1xuICAgICAgICAgIGlmICh0eXBlb2YgbWV0cmljRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGxldCBvcHRzID0ge307XG4gICAgICAgICAgICBmZmxhZ3MuZW5hYmxlZCgnZWFnZXJjd3YnLCAoKSA9PiB7XG4gICAgICAgICAgICAgIG9wdHMgPSB7IHJlcG9ydEFsbENoYW5nZXM6IGlzRWFnZXIobWV0cmljKSB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBtZXRyaWNGbihzdG9yZUNXViwgb3B0cyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgICAvKiBjOCBpZ25vcmUgbmV4dCAzICovXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIHNvbWV0aGluZyB3ZW50IHdyb25nXG4gICAgfVxuICB9LCAyMDAwKTsgLy8gd2FpdCBmb3IgZGVsYXllZFxufVxuIl0sIm5hbWVzIjpbImUiLCJ0IiwibiIsImFkZEV2ZW50TGlzdGVuZXIiLCJwZXJzaXN0ZWQiLCJ0aW1lU3RhbXAiLCJpIiwibyIsInMiLCJyIiwidmFsdWUiLCJkZWx0YSIsInJhdGluZyIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsInBlcmZvcm1hbmNlIiwiZ2V0RW50cmllc0J5VHlwZSIsInJlc3BvbnNlU3RhcnQiLCJub3ciLCJhY3RpdmF0aW9uU3RhcnQiLCJjIiwiZG9jdW1lbnQiLCJwcmVyZW5kZXJpbmciLCJ3YXNEaXNjYXJkZWQiLCJ0eXBlIiwicmVwbGFjZSIsIm5hbWUiLCJlbnRyaWVzIiwiaWQiLCJEYXRlIiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwibmF2aWdhdGlvblR5cGUiLCJhIiwiV2Vha01hcCIsImQiLCJnZXQiLCJzZXQiLCJoIiwiaGFkUmVjZW50SW5wdXQiLCJhdCIsInN0YXJ0VGltZSIsInB1c2giLCJmIiwiUGVyZm9ybWFuY2VPYnNlcnZlciIsInN1cHBvcnRlZEVudHJ5VHlwZXMiLCJpbmNsdWRlcyIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsImdldEVudHJpZXMiLCJvYnNlcnZlIiwiYnVmZmVyZWQiLCJ1IiwibCIsIm0iLCJ2aXNpYmlsaXR5U3RhdGUiLCJnIiwicCIsInYiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwieSIsImdsb2JhbFRoaXMiLCJmaWx0ZXIiLCJzZXRUaW1lb3V0IiwiZmlyc3RIaWRkZW5UaW1lIiwiYiIsIlAiLCJUIiwiZGlzY29ubmVjdCIsIm1heCIsInJlcG9ydEFsbENoYW5nZXMiLCJFIiwiXyIsIkwiLCJNIiwidyIsImludGVyYWN0aW9uSWQiLCJtaW4iLCJDIiwiSSIsImludGVyYWN0aW9uQ291bnQiLCJGIiwiZHVyYXRpb25UaHJlc2hvbGQiLCJrIiwiQSIsIk1hcCIsImxlbmd0aCIsImNsZWFyIiwiZW50cnlUeXBlIiwiZHVyYXRpb24iLCJzb3J0Iiwic3BsaWNlIiwiZGVsZXRlIiwiQiIsInJlcXVlc3RJZGxlQ2FsbGJhY2siLCJvbmNlIiwiTiIsIlMiLCJxIiwiTyIsIlYiLCJyZWFkeVN0YXRlIiwiQ0xTVGhyZXNob2xkcyIsIkZDUFRocmVzaG9sZHMiLCJJTlBUaHJlc2hvbGRzIiwiTENQVGhyZXNob2xkcyIsIlRURkJUaHJlc2hvbGRzIiwib25DTFMiLCJ0YWtlUmVjb3JkcyIsIm9uRkNQIiwib25JTlAiLCJQZXJmb3JtYW5jZUV2ZW50VGltaW5nIiwicHJvdG90eXBlIiwib25MQ1AiLCJzbGljZSIsImNhcHR1cmUiLCJvblRURkIiLCJhZGRDV1ZUcmFja2luZyIsInNhbXBsZVJVTSIsInNvdXJjZVNlbGVjdG9yIiwidGFyZ2V0U2VsZWN0b3IiLCJmZmxhZ3MiLCJjd3ZTY3JpcHQiLCJVUkwiLCJiYXNlVVJMIiwiaHJlZiIsInF1ZXJ5U2VsZWN0b3IiLCJzY3JpcHQiLCJjcmVhdGVFbGVtZW50Iiwic3JjIiwib25sb2FkIiwic3RvcmVDV1YiLCJtZWFzdXJlbWVudCIsImRhdGEiLCJjd3YiLCJlbGVtZW50IiwicG9wIiwidGFyZ2V0Iiwic291cmNlIiwib3V0ZXJIVE1MIiwiaXNFYWdlciIsIm1ldHJpYyIsImZvckVhY2giLCJtZXRyaWNGbiIsIndpbmRvdyIsIndlYlZpdGFscyIsIm9wdHMiLCJlbmFibGVkIiwiaGVhZCIsImFwcGVuZENoaWxkIiwiZXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0NBQWMsVUFBU0EsQ0FBQyxFQUFDOztFQUFjLElBQUlDLENBQUMsR0FBQyxFQUFFO0VBQUMsTUFBTUMsQ0FBQyxHQUFDRixDQUFDLElBQUU7QUFBQ0csTUFBQUEsZ0JBQWdCLENBQUMsVUFBVSxFQUFFRCxDQUFDLElBQUU7QUFBQ0EsUUFBQUEsQ0FBQyxDQUFDRSxTQUFTLEtBQUdILENBQUMsR0FBQ0MsQ0FBQyxDQUFDRyxTQUFTLEVBQUNMLENBQUMsQ0FBQ0UsQ0FBQyxDQUFDLENBQUM7T0FBQyxFQUFFLElBQUUsQ0FBQztLQUFDO0lBQUNJLENBQUMsR0FBQ0EsQ0FBQ04sQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ0ksQ0FBQyxLQUFHO01BQUMsSUFBSUMsQ0FBQyxFQUFDQyxDQUFDO0FBQUMsTUFBQSxPQUFPQyxDQUFDLElBQUU7QUFBQ1IsUUFBQUEsQ0FBQyxDQUFDUyxLQUFLLElBQUUsQ0FBQyxLQUFHRCxDQUFDLElBQUVILENBQUMsQ0FBQyxLQUFHRSxDQUFDLEdBQUNQLENBQUMsQ0FBQ1MsS0FBSyxJQUFFSCxDQUFDLElBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQ0MsQ0FBQyxJQUFFLE1BQU0sS0FBR0QsQ0FBQyxNQUFJ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QUcsQ0FBQ0YsV0FBVyxDQUFDNUcsSUFBSSxDQUFDLEdBQUc0RyxXQUFXLENBQUMzSCxLQUFLO0FBQzlDLFVBQUEsSUFBSTJILFdBQVcsQ0FBQzVHLElBQUksS0FBSyxLQUFLLElBQUk0RyxXQUFXLENBQUMzRyxPQUFPLENBQUM2RCxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2hFLE1BQU07QUFBRWlELGNBQUFBO0FBQVEsYUFBQyxHQUFHSCxXQUFXLENBQUMzRyxPQUFPLENBQUMrRyxHQUFHLEVBQUU7QUFDN0NILFlBQUFBLElBQUksQ0FBQ0ksTUFBTSxHQUFHakIsY0FBYyxDQUFDZSxPQUFPLENBQUM7QUFDckNGLFlBQUFBLElBQUksQ0FBQ0ssTUFBTSxHQUFHbkIsY0FBYyxDQUFDZ0IsT0FBTyxDQUFDLElBQUtBLE9BQU8sSUFBSUEsT0FBTyxDQUFDSSxTQUFTLENBQUN6QixLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRTtBQUN0RjtBQUNBSSxVQUFBQSxTQUFTLENBQUMsS0FBSyxFQUFFZSxJQUFJLENBQUM7U0FDdkI7QUFFRCxRQUFBLE1BQU1PLE9BQU8sR0FBSUMsTUFBTSxJQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDaEcsUUFBUSxDQUFDZ0csTUFBTSxDQUFDO0FBSTNELFFBQUEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQ0MsT0FBTyxDQUFFRCxNQUFNLElBQUs7VUFDaEQsTUFBTUUsUUFBUSxHQUFHQyxNQUFNLENBQUNDLFNBQVMsQ0FBQyxDQUFBLEVBQUEsRUFBS0osTUFBTSxDQUFBLENBQUUsQ0FBQztBQUNoRCxVQUFBLElBQUksT0FBT0UsUUFBUSxLQUFLLFVBQVUsRUFBRTtZQUNsQyxJQUFJRyxJQUFJLEdBQUcsRUFBRTtBQUNiekIsWUFBQUEsTUFBTSxDQUFDMEIsT0FBTyxDQUFDLFVBQVUsRUFBRSxNQUFNO0FBQy9CRCxjQUFBQSxJQUFJLEdBQUc7Z0JBQUU1RSxnQkFBZ0IsRUFBRXNFLE9BQU8sQ0FBQ0MsTUFBTTtlQUFHO0FBQzlDLGFBQUMsQ0FBQztBQUNGRSxZQUFBQSxRQUFRLENBQUNaLFFBQVEsRUFBRWUsSUFBSSxDQUFDO0FBQzFCO0FBQ0YsU0FBQyxDQUFDO09BQ0g7QUFDRC9ILE1BQUFBLFFBQVEsQ0FBQ2lJLElBQUksQ0FBQ0MsV0FBVyxDQUFDdEIsTUFBTSxDQUFDO0FBRW5DLEtBQUMsQ0FBQyxPQUFPdUIsS0FBSyxFQUFFO0dBR2pCLEVBQUUsSUFBSSxDQUFDO0FBQ1Y7Ozs7IiwieF9nb29nbGVfaWdub3JlTGlzdCI6WzBdfQ==