@getopenpay/openpay-js 0.3.4 → 0.3.5

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.
@@ -0,0 +1,797 @@
1
+ import { D as P, C as O_, b as s_, r as P_, u as R_, g as D_ } from "./index-DUAfQijD.js";
2
+ import { c as A } from "./utils-BGeftTvk.js";
3
+ var C_ = function(S, E) {
4
+ var T = typeof Symbol == "function" && S[Symbol.iterator];
5
+ if (!T) return S;
6
+ var a = T.call(S), _, r = [], N;
7
+ try {
8
+ for (; (E === void 0 || E-- > 0) && !(_ = a.next()).done; ) r.push(_.value);
9
+ } catch (M) {
10
+ N = { error: M };
11
+ } finally {
12
+ try {
13
+ _ && !_.done && (T = a.return) && T.call(a);
14
+ } finally {
15
+ if (N) throw N.error;
16
+ }
17
+ }
18
+ return r;
19
+ }, v_ = function(S) {
20
+ var E = typeof Symbol == "function" && Symbol.iterator, T = E && S[E], a = 0;
21
+ if (T) return T.call(S);
22
+ if (S && typeof S.length == "number") return {
23
+ next: function() {
24
+ return S && a >= S.length && (S = void 0), { value: S && S[a++], done: !S };
25
+ }
26
+ };
27
+ throw new TypeError(E ? "Object is not iterable." : "Symbol.iterator is not defined.");
28
+ }, t_ = (
29
+ /** @class */
30
+ function() {
31
+ function S(E) {
32
+ this._entries = E ? new Map(E) : /* @__PURE__ */ new Map();
33
+ }
34
+ return S.prototype.getEntry = function(E) {
35
+ var T = this._entries.get(E);
36
+ if (T)
37
+ return Object.assign({}, T);
38
+ }, S.prototype.getAllEntries = function() {
39
+ return Array.from(this._entries.entries()).map(function(E) {
40
+ var T = C_(E, 2), a = T[0], _ = T[1];
41
+ return [a, _];
42
+ });
43
+ }, S.prototype.setEntry = function(E, T) {
44
+ var a = new S(this._entries);
45
+ return a._entries.set(E, T), a;
46
+ }, S.prototype.removeEntry = function(E) {
47
+ var T = new S(this._entries);
48
+ return T._entries.delete(E), T;
49
+ }, S.prototype.removeEntries = function() {
50
+ for (var E, T, a = [], _ = 0; _ < arguments.length; _++)
51
+ a[_] = arguments[_];
52
+ var r = new S(this._entries);
53
+ try {
54
+ for (var N = v_(a), M = N.next(); !M.done; M = N.next()) {
55
+ var M_ = M.value;
56
+ r._entries.delete(M_);
57
+ }
58
+ } catch (e_) {
59
+ E = { error: e_ };
60
+ } finally {
61
+ try {
62
+ M && !M.done && (T = N.return) && T.call(N);
63
+ } finally {
64
+ if (E) throw E.error;
65
+ }
66
+ }
67
+ return r;
68
+ }, S.prototype.clear = function() {
69
+ return new S();
70
+ }, S;
71
+ }()
72
+ ), n_ = Symbol("BaggageEntryMetadata"), I_ = P.instance();
73
+ function L_(S) {
74
+ return S === void 0 && (S = {}), new t_(new Map(Object.entries(S)));
75
+ }
76
+ function f_(S) {
77
+ return typeof S != "string" && (I_.error("Cannot create baggage metadata from unknown type: " + typeof S), S = ""), {
78
+ __TYPE__: n_,
79
+ toString: function() {
80
+ return S;
81
+ }
82
+ };
83
+ }
84
+ var U_ = {
85
+ get: function(S, E) {
86
+ if (S != null)
87
+ return S[E];
88
+ },
89
+ keys: function(S) {
90
+ return S == null ? [] : Object.keys(S);
91
+ }
92
+ }, o_ = {
93
+ set: function(S, E, T) {
94
+ S != null && (S[E] = T);
95
+ }
96
+ }, V_ = (
97
+ /** @class */
98
+ function() {
99
+ function S() {
100
+ }
101
+ return S.prototype.inject = function(E, T) {
102
+ }, S.prototype.extract = function(E, T) {
103
+ return E;
104
+ }, S.prototype.fields = function() {
105
+ return [];
106
+ }, S;
107
+ }()
108
+ ), D = s_("OpenTelemetry Baggage Key");
109
+ function C(S) {
110
+ return S.getValue(D) || void 0;
111
+ }
112
+ function i_() {
113
+ return C(O_.getInstance().active());
114
+ }
115
+ function B_(S, E) {
116
+ return S.setValue(D, E);
117
+ }
118
+ function c_(S) {
119
+ return S.deleteValue(D);
120
+ }
121
+ var s = "propagation", d_ = new V_(), Y_ = (
122
+ /** @class */
123
+ function() {
124
+ function S() {
125
+ this.createBaggage = L_, this.getBaggage = C, this.getActiveBaggage = i_, this.setBaggage = B_, this.deleteBaggage = c_;
126
+ }
127
+ return S.getInstance = function() {
128
+ return this._instance || (this._instance = new S()), this._instance;
129
+ }, S.prototype.setGlobalPropagator = function(E) {
130
+ return P_(s, E, P.instance());
131
+ }, S.prototype.inject = function(E, T, a) {
132
+ return a === void 0 && (a = o_), this._getGlobalPropagator().inject(E, T, a);
133
+ }, S.prototype.extract = function(E, T, a) {
134
+ return a === void 0 && (a = U_), this._getGlobalPropagator().extract(E, T, a);
135
+ }, S.prototype.fields = function() {
136
+ return this._getGlobalPropagator().fields();
137
+ }, S.prototype.disable = function() {
138
+ R_(s, P.instance());
139
+ }, S.prototype._getGlobalPropagator = function() {
140
+ return D_(s) || d_;
141
+ }, S;
142
+ }()
143
+ ), y_ = Y_.getInstance(), R = performance, v = "aws.lambda.invoked_arn", t = "db.system", n = "db.connection_string", I = "db.user", L = "db.jdbc.driver_classname", U = "db.name", o = "db.statement", V = "db.operation", i = "db.mssql.instance_name", B = "db.cassandra.keyspace", c = "db.cassandra.page_size", d = "db.cassandra.consistency_level", Y = "db.cassandra.table", G = "db.cassandra.idempotence", u = "db.cassandra.speculative_execution_count", p = "db.cassandra.coordinator.id", H = "db.cassandra.coordinator.dc", b = "db.hbase.namespace", g = "db.redis.database_index", l = "db.mongodb.collection", m = "db.sql.table", f = "exception.type", y = "exception.message", F = "exception.stacktrace", h = "exception.escaped", K = "faas.trigger", W = "faas.execution", w = "faas.document.collection", X = "faas.document.operation", Q = "faas.document.time", x = "faas.document.name", k = "faas.time", q = "faas.cron", Z = "faas.coldstart", j = "faas.invoked_name", J = "faas.invoked_provider", z = "faas.invoked_region", $ = "net.transport", SS = "net.peer.ip", ES = "net.peer.port", TS = "net.peer.name", aS = "net.host.ip", _S = "net.host.port", AS = "net.host.name", rS = "net.host.connection.type", NS = "net.host.connection.subtype", MS = "net.host.carrier.name", eS = "net.host.carrier.mcc", OS = "net.host.carrier.mnc", sS = "net.host.carrier.icc", PS = "peer.service", RS = "enduser.id", DS = "enduser.role", CS = "enduser.scope", vS = "thread.id", tS = "thread.name", nS = "code.function", IS = "code.namespace", LS = "code.filepath", US = "code.lineno", oS = "http.method", VS = "http.url", iS = "http.target", BS = "http.host", cS = "http.scheme", dS = "http.status_code", YS = "http.flavor", GS = "http.user_agent", uS = "http.request_content_length", pS = "http.request_content_length_uncompressed", HS = "http.response_content_length", bS = "http.response_content_length_uncompressed", gS = "http.server_name", lS = "http.route", mS = "http.client_ip", fS = "aws.dynamodb.table_names", yS = "aws.dynamodb.consumed_capacity", FS = "aws.dynamodb.item_collection_metrics", hS = "aws.dynamodb.provisioned_read_capacity", KS = "aws.dynamodb.provisioned_write_capacity", WS = "aws.dynamodb.consistent_read", wS = "aws.dynamodb.projection", XS = "aws.dynamodb.limit", QS = "aws.dynamodb.attributes_to_get", xS = "aws.dynamodb.index_name", kS = "aws.dynamodb.select", qS = "aws.dynamodb.global_secondary_indexes", ZS = "aws.dynamodb.local_secondary_indexes", jS = "aws.dynamodb.exclusive_start_table", JS = "aws.dynamodb.table_count", zS = "aws.dynamodb.scan_forward", $S = "aws.dynamodb.segment", SE = "aws.dynamodb.total_segments", EE = "aws.dynamodb.count", TE = "aws.dynamodb.scanned_count", aE = "aws.dynamodb.attribute_definitions", _E = "aws.dynamodb.global_secondary_index_updates", AE = "messaging.system", rE = "messaging.destination", NE = "messaging.destination_kind", ME = "messaging.temp_destination", eE = "messaging.protocol", OE = "messaging.protocol_version", sE = "messaging.url", PE = "messaging.message_id", RE = "messaging.conversation_id", DE = "messaging.message_payload_size_bytes", CE = "messaging.message_payload_compressed_size_bytes", vE = "messaging.operation", tE = "messaging.consumer_id", nE = "messaging.rabbitmq.routing_key", IE = "messaging.kafka.message_key", LE = "messaging.kafka.consumer_group", UE = "messaging.kafka.client_id", oE = "messaging.kafka.partition", VE = "messaging.kafka.tombstone", iE = "rpc.system", BE = "rpc.service", cE = "rpc.method", dE = "rpc.grpc.status_code", YE = "rpc.jsonrpc.version", GE = "rpc.jsonrpc.request_id", uE = "rpc.jsonrpc.error_code", pE = "rpc.jsonrpc.error_message", HE = "message.type", bE = "message.id", gE = "message.compressed_size", lE = "message.uncompressed_size", F_ = v, h_ = t, K_ = n, W_ = I, w_ = L, X_ = U, Q_ = o, x_ = V, k_ = i, q_ = B, Z_ = c, j_ = d, J_ = Y, z_ = G, $_ = u, SA = p, EA = H, TA = b, aA = g, _A = l, AA = m, rA = f, NA = y, MA = F, eA = h, OA = K, sA = W, PA = w, RA = X, DA = Q, CA = x, vA = k, tA = q, nA = Z, IA = j, LA = J, UA = z, oA = $, VA = SS, iA = ES, BA = TS, cA = aS, dA = _S, YA = AS, GA = rS, uA = NS, pA = MS, HA = eS, bA = OS, gA = sS, lA = PS, mA = RS, fA = DS, yA = CS, FA = vS, hA = tS, KA = nS, WA = IS, wA = LS, XA = US, QA = oS, xA = VS, kA = iS, qA = BS, ZA = cS, jA = dS, JA = YS, zA = GS, $A = uS, Sr = pS, Er = HS, Tr = bS, ar = gS, _r = lS, Ar = mS, rr = fS, Nr = yS, Mr = FS, er = hS, Or = KS, sr = WS, Pr = wS, Rr = XS, Dr = QS, Cr = xS, vr = kS, tr = qS, nr = ZS, Ir = jS, Lr = JS, Ur = zS, or = $S, Vr = SE, ir = EE, Br = TE, cr = aE, dr = _E, Yr = AE, Gr = rE, ur = NE, pr = ME, Hr = eE, br = OE, gr = sE, lr = PE, mr = RE, fr = DE, yr = CE, Fr = vE, hr = tE, Kr = nE, Wr = IE, wr = LE, Xr = UE, Qr = oE, xr = VE, kr = iE, qr = BE, Zr = cE, jr = dE, Jr = YE, zr = GE, $r = uE, SN = pE, EN = HE, TN = bE, aN = gE, _N = lE, AN = /* @__PURE__ */ A([
144
+ v,
145
+ t,
146
+ n,
147
+ I,
148
+ L,
149
+ U,
150
+ o,
151
+ V,
152
+ i,
153
+ B,
154
+ c,
155
+ d,
156
+ Y,
157
+ G,
158
+ u,
159
+ p,
160
+ H,
161
+ b,
162
+ g,
163
+ l,
164
+ m,
165
+ f,
166
+ y,
167
+ F,
168
+ h,
169
+ K,
170
+ W,
171
+ w,
172
+ X,
173
+ Q,
174
+ x,
175
+ k,
176
+ q,
177
+ Z,
178
+ j,
179
+ J,
180
+ z,
181
+ $,
182
+ SS,
183
+ ES,
184
+ TS,
185
+ aS,
186
+ _S,
187
+ AS,
188
+ rS,
189
+ NS,
190
+ MS,
191
+ eS,
192
+ OS,
193
+ sS,
194
+ PS,
195
+ RS,
196
+ DS,
197
+ CS,
198
+ vS,
199
+ tS,
200
+ nS,
201
+ IS,
202
+ LS,
203
+ US,
204
+ oS,
205
+ VS,
206
+ iS,
207
+ BS,
208
+ cS,
209
+ dS,
210
+ YS,
211
+ GS,
212
+ uS,
213
+ pS,
214
+ HS,
215
+ bS,
216
+ gS,
217
+ lS,
218
+ mS,
219
+ fS,
220
+ yS,
221
+ FS,
222
+ hS,
223
+ KS,
224
+ WS,
225
+ wS,
226
+ XS,
227
+ QS,
228
+ xS,
229
+ kS,
230
+ qS,
231
+ ZS,
232
+ jS,
233
+ JS,
234
+ zS,
235
+ $S,
236
+ SE,
237
+ EE,
238
+ TE,
239
+ aE,
240
+ _E,
241
+ AE,
242
+ rE,
243
+ NE,
244
+ ME,
245
+ eE,
246
+ OE,
247
+ sE,
248
+ PE,
249
+ RE,
250
+ DE,
251
+ CE,
252
+ vE,
253
+ tE,
254
+ nE,
255
+ IE,
256
+ LE,
257
+ UE,
258
+ oE,
259
+ VE,
260
+ iE,
261
+ BE,
262
+ cE,
263
+ dE,
264
+ YE,
265
+ GE,
266
+ uE,
267
+ pE,
268
+ HE,
269
+ bE,
270
+ gE,
271
+ lE
272
+ ]), mE = "other_sql", fE = "mssql", yE = "mysql", FE = "oracle", hE = "db2", KE = "postgresql", WE = "redshift", wE = "hive", XE = "cloudscape", QE = "hsqldb", xE = "progress", kE = "maxdb", qE = "hanadb", ZE = "ingres", jE = "firstsql", JE = "edb", zE = "cache", $E = "adabas", ST = "firebird", ET = "derby", TT = "filemaker", aT = "informix", _T = "instantdb", AT = "interbase", rT = "mariadb", NT = "netezza", MT = "pervasive", eT = "pointbase", OT = "sqlite", sT = "sybase", PT = "teradata", RT = "vertica", DT = "h2", CT = "coldfusion", vT = "cassandra", tT = "hbase", nT = "mongodb", IT = "redis", LT = "couchbase", UT = "couchdb", oT = "cosmosdb", VT = "dynamodb", iT = "neo4j", BT = "geode", cT = "elasticsearch", dT = "memcached", YT = "cockroachdb", rN = mE, NN = fE, MN = yE, eN = FE, ON = hE, sN = KE, PN = WE, RN = wE, DN = XE, CN = QE, vN = xE, tN = kE, nN = qE, IN = ZE, LN = jE, UN = JE, oN = zE, VN = $E, iN = ST, BN = ET, cN = TT, dN = aT, YN = _T, GN = AT, uN = rT, pN = NT, HN = MT, bN = eT, gN = OT, lN = sT, mN = PT, fN = RT, yN = DT, FN = CT, hN = vT, KN = tT, WN = nT, wN = IT, XN = LT, QN = UT, xN = oT, kN = VT, qN = iT, ZN = BT, jN = cT, JN = dT, zN = YT, $N = /* @__PURE__ */ A([
273
+ mE,
274
+ fE,
275
+ yE,
276
+ FE,
277
+ hE,
278
+ KE,
279
+ WE,
280
+ wE,
281
+ XE,
282
+ QE,
283
+ xE,
284
+ kE,
285
+ qE,
286
+ ZE,
287
+ jE,
288
+ JE,
289
+ zE,
290
+ $E,
291
+ ST,
292
+ ET,
293
+ TT,
294
+ aT,
295
+ _T,
296
+ AT,
297
+ rT,
298
+ NT,
299
+ MT,
300
+ eT,
301
+ OT,
302
+ sT,
303
+ PT,
304
+ RT,
305
+ DT,
306
+ CT,
307
+ vT,
308
+ tT,
309
+ nT,
310
+ IT,
311
+ LT,
312
+ UT,
313
+ oT,
314
+ VT,
315
+ iT,
316
+ BT,
317
+ cT,
318
+ dT,
319
+ YT
320
+ ]), GT = "all", uT = "each_quorum", pT = "quorum", HT = "local_quorum", bT = "one", gT = "two", lT = "three", mT = "local_one", fT = "any", yT = "serial", FT = "local_serial", SM = GT, EM = uT, TM = pT, aM = HT, _M = bT, AM = gT, rM = lT, NM = mT, MM = fT, eM = yT, OM = FT, sM = /* @__PURE__ */ A([
321
+ GT,
322
+ uT,
323
+ pT,
324
+ HT,
325
+ bT,
326
+ gT,
327
+ lT,
328
+ mT,
329
+ fT,
330
+ yT,
331
+ FT
332
+ ]), hT = "datasource", KT = "http", WT = "pubsub", wT = "timer", XT = "other", PM = hT, RM = KT, DM = WT, CM = wT, vM = XT, tM = /* @__PURE__ */ A([
333
+ hT,
334
+ KT,
335
+ WT,
336
+ wT,
337
+ XT
338
+ ]), QT = "insert", xT = "edit", kT = "delete", nM = QT, IM = xT, LM = kT, UM = /* @__PURE__ */ A([
339
+ QT,
340
+ xT,
341
+ kT
342
+ ]), qT = "alibaba_cloud", ZT = "aws", jT = "azure", JT = "gcp", oM = qT, VM = ZT, iM = jT, BM = JT, cM = /* @__PURE__ */ A([
343
+ qT,
344
+ ZT,
345
+ jT,
346
+ JT
347
+ ]), zT = "ip_tcp", $T = "ip_udp", Sa = "ip", Ea = "unix", Ta = "pipe", aa = "inproc", _a = "other", dM = zT, YM = $T, GM = Sa, uM = Ea, pM = Ta, HM = aa, bM = _a, gM = /* @__PURE__ */ A([
348
+ zT,
349
+ $T,
350
+ Sa,
351
+ Ea,
352
+ Ta,
353
+ aa,
354
+ _a
355
+ ]), Aa = "wifi", ra = "wired", Na = "cell", Ma = "unavailable", ea = "unknown", lM = Aa, mM = ra, fM = Na, yM = Ma, FM = ea, hM = /* @__PURE__ */ A([
356
+ Aa,
357
+ ra,
358
+ Na,
359
+ Ma,
360
+ ea
361
+ ]), Oa = "gprs", sa = "edge", Pa = "umts", Ra = "cdma", Da = "evdo_0", Ca = "evdo_a", va = "cdma2000_1xrtt", ta = "hsdpa", na = "hsupa", Ia = "hspa", La = "iden", Ua = "evdo_b", oa = "lte", Va = "ehrpd", ia = "hspap", Ba = "gsm", ca = "td_scdma", da = "iwlan", Ya = "nr", Ga = "nrnsa", ua = "lte_ca", KM = Oa, WM = sa, wM = Pa, XM = Ra, QM = Da, xM = Ca, kM = va, qM = ta, ZM = na, jM = Ia, JM = La, zM = Ua, $M = oa, Se = Va, Ee = ia, Te = Ba, ae = ca, _e = da, Ae = Ya, re = Ga, Ne = ua, Me = /* @__PURE__ */ A([
362
+ Oa,
363
+ sa,
364
+ Pa,
365
+ Ra,
366
+ Da,
367
+ Ca,
368
+ va,
369
+ ta,
370
+ na,
371
+ Ia,
372
+ La,
373
+ Ua,
374
+ oa,
375
+ Va,
376
+ ia,
377
+ Ba,
378
+ ca,
379
+ da,
380
+ Ya,
381
+ Ga,
382
+ ua
383
+ ]), pa = "1.0", Ha = "1.1", ba = "2.0", ga = "SPDY", la = "QUIC", ee = pa, Oe = Ha, se = ba, Pe = ga, Re = la, De = {
384
+ HTTP_1_0: pa,
385
+ HTTP_1_1: Ha,
386
+ HTTP_2_0: ba,
387
+ SPDY: ga,
388
+ QUIC: la
389
+ }, ma = "queue", fa = "topic", Ce = ma, ve = fa, te = /* @__PURE__ */ A([
390
+ ma,
391
+ fa
392
+ ]), ya = "receive", Fa = "process", ne = ya, Ie = Fa, Le = /* @__PURE__ */ A([
393
+ ya,
394
+ Fa
395
+ ]), ha = 0, Ka = 1, Wa = 2, wa = 3, Xa = 4, Qa = 5, xa = 6, ka = 7, qa = 8, Za = 9, ja = 10, Ja = 11, za = 12, $a = 13, S_ = 14, E_ = 15, T_ = 16, Ue = ha, oe = Ka, Ve = Wa, ie = wa, Be = Xa, ce = Qa, de = xa, Ye = ka, Ge = qa, ue = Za, pe = ja, He = Ja, be = za, ge = $a, le = S_, me = E_, fe = T_, ye = {
396
+ OK: ha,
397
+ CANCELLED: Ka,
398
+ UNKNOWN: Wa,
399
+ INVALID_ARGUMENT: wa,
400
+ DEADLINE_EXCEEDED: Xa,
401
+ NOT_FOUND: Qa,
402
+ ALREADY_EXISTS: xa,
403
+ PERMISSION_DENIED: ka,
404
+ RESOURCE_EXHAUSTED: qa,
405
+ FAILED_PRECONDITION: Za,
406
+ ABORTED: ja,
407
+ OUT_OF_RANGE: Ja,
408
+ UNIMPLEMENTED: za,
409
+ INTERNAL: $a,
410
+ UNAVAILABLE: S_,
411
+ DATA_LOSS: E_,
412
+ UNAUTHENTICATED: T_
413
+ }, a_ = "SENT", __ = "RECEIVED", Fe = a_, he = __, Ke = /* @__PURE__ */ A([
414
+ a_,
415
+ __
416
+ ]), A_ = 9, G_ = 6, u_ = Math.pow(10, G_), e = Math.pow(10, A_);
417
+ function O(S) {
418
+ var E = S / 1e3, T = Math.trunc(E), a = Math.round(S % 1e3 * u_);
419
+ return [T, a];
420
+ }
421
+ function r_() {
422
+ var S = R.timeOrigin;
423
+ if (typeof S != "number") {
424
+ var E = R;
425
+ S = E.timing && E.timing.fetchStart;
426
+ }
427
+ return S;
428
+ }
429
+ function p_(S) {
430
+ var E = O(r_()), T = O(typeof S == "number" ? S : R.now());
431
+ return H_(E, T);
432
+ }
433
+ function We(S) {
434
+ if (N_(S))
435
+ return S;
436
+ if (typeof S == "number")
437
+ return S < r_() ? p_(S) : O(S);
438
+ if (S instanceof Date)
439
+ return O(S.getTime());
440
+ throw TypeError("Invalid input type");
441
+ }
442
+ function we(S, E) {
443
+ var T = E[0] - S[0], a = E[1] - S[1];
444
+ return a < 0 && (T -= 1, a += e), [T, a];
445
+ }
446
+ function Xe(S) {
447
+ var E = A_, T = "" + "0".repeat(E) + S[1] + "Z", a = T.substring(T.length - E - 1), _ = new Date(S[0] * 1e3).toISOString();
448
+ return _.replace("000Z", a);
449
+ }
450
+ function Qe(S) {
451
+ return S[0] * e + S[1];
452
+ }
453
+ function xe(S) {
454
+ return S[0] * 1e3 + S[1] / 1e6;
455
+ }
456
+ function ke(S) {
457
+ return S[0] * 1e6 + S[1] / 1e3;
458
+ }
459
+ function N_(S) {
460
+ return Array.isArray(S) && S.length === 2 && typeof S[0] == "number" && typeof S[1] == "number";
461
+ }
462
+ function qe(S) {
463
+ return N_(S) || typeof S == "number" || S instanceof Date;
464
+ }
465
+ function H_(S, E) {
466
+ var T = [S[0] + E[0], S[1] + E[1]];
467
+ return T[1] >= e && (T[1] -= e, T[0] += 1), T;
468
+ }
469
+ var b_ = function(S) {
470
+ var E = typeof Symbol == "function" && Symbol.iterator, T = E && S[E], a = 0;
471
+ if (T) return T.call(S);
472
+ if (S && typeof S.length == "number") return {
473
+ next: function() {
474
+ return S && a >= S.length && (S = void 0), { value: S && S[a++], done: !S };
475
+ }
476
+ };
477
+ throw new TypeError(E ? "Object is not iterable." : "Symbol.iterator is not defined.");
478
+ };
479
+ function g_(S, E) {
480
+ return typeof E == "string" ? S === E : !!S.match(E);
481
+ }
482
+ function Ze(S, E) {
483
+ var T, a;
484
+ if (!E)
485
+ return !1;
486
+ try {
487
+ for (var _ = b_(E), r = _.next(); !r.done; r = _.next()) {
488
+ var N = r.value;
489
+ if (g_(S, N))
490
+ return !0;
491
+ }
492
+ } catch (M) {
493
+ T = { error: M };
494
+ } finally {
495
+ try {
496
+ r && !r.done && (a = _.return) && a.call(_);
497
+ } finally {
498
+ if (T) throw T.error;
499
+ }
500
+ }
501
+ return !1;
502
+ }
503
+ export {
504
+ jN as $,
505
+ U_ as A,
506
+ o_ as B,
507
+ MM as C,
508
+ SM as D,
509
+ EM as E,
510
+ NM as F,
511
+ aM as G,
512
+ OM as H,
513
+ _M as I,
514
+ TM as J,
515
+ eM as K,
516
+ rM as L,
517
+ AM as M,
518
+ VN as N,
519
+ oN as O,
520
+ hN as P,
521
+ DN as Q,
522
+ zN as R,
523
+ Er as S,
524
+ FN as T,
525
+ xN as U,
526
+ XN as V,
527
+ QN as W,
528
+ ON as X,
529
+ BN as Y,
530
+ kN as Z,
531
+ UN as _,
532
+ Tr as a,
533
+ te as a$,
534
+ cN as a0,
535
+ iN as a1,
536
+ LN as a2,
537
+ ZN as a3,
538
+ yN as a4,
539
+ nN as a5,
540
+ KN as a6,
541
+ RN as a7,
542
+ CN as a8,
543
+ dN as a9,
544
+ IM as aA,
545
+ nM as aB,
546
+ oM as aC,
547
+ VM as aD,
548
+ iM as aE,
549
+ BM as aF,
550
+ PM as aG,
551
+ RM as aH,
552
+ vM as aI,
553
+ DM as aJ,
554
+ CM as aK,
555
+ UM as aL,
556
+ cM as aM,
557
+ tM as aN,
558
+ ee as aO,
559
+ Oe as aP,
560
+ se as aQ,
561
+ Re as aR,
562
+ Pe as aS,
563
+ De as aT,
564
+ he as aU,
565
+ Fe as aV,
566
+ Ce as aW,
567
+ ve as aX,
568
+ Ie as aY,
569
+ ne as aZ,
570
+ Ke as a_,
571
+ IN as aa,
572
+ YN as ab,
573
+ GN as ac,
574
+ uN as ad,
575
+ tN as ae,
576
+ JN as af,
577
+ WN as ag,
578
+ NN as ah,
579
+ MN as ai,
580
+ qN as aj,
581
+ pN as ak,
582
+ eN as al,
583
+ rN as am,
584
+ HN as an,
585
+ bN as ao,
586
+ sN as ap,
587
+ vN as aq,
588
+ wN as ar,
589
+ PN as as,
590
+ gN as at,
591
+ lN as au,
592
+ mN as av,
593
+ fN as aw,
594
+ sM as ax,
595
+ $N as ay,
596
+ LM as az,
597
+ jA as b,
598
+ Cr as b$,
599
+ Le as b0,
600
+ XM as b1,
601
+ kM as b2,
602
+ WM as b3,
603
+ Se as b4,
604
+ QM as b5,
605
+ xM as b6,
606
+ zM as b7,
607
+ KM as b8,
608
+ Te as b9,
609
+ gM as bA,
610
+ pe as bB,
611
+ de as bC,
612
+ oe as bD,
613
+ me as bE,
614
+ Be as bF,
615
+ ue as bG,
616
+ ge as bH,
617
+ ie as bI,
618
+ ce as bJ,
619
+ Ue as bK,
620
+ He as bL,
621
+ Ye as bM,
622
+ Ge as bN,
623
+ fe as bO,
624
+ le as bP,
625
+ be as bQ,
626
+ Ve as bR,
627
+ ye as bS,
628
+ Dr as bT,
629
+ cr as bU,
630
+ sr as bV,
631
+ Nr as bW,
632
+ ir as bX,
633
+ Ir as bY,
634
+ tr as bZ,
635
+ dr as b_,
636
+ qM as ba,
637
+ jM as bb,
638
+ Ee as bc,
639
+ ZM as bd,
640
+ JM as be,
641
+ _e as bf,
642
+ $M as bg,
643
+ Ne as bh,
644
+ Ae as bi,
645
+ re as bj,
646
+ ae as bk,
647
+ wM as bl,
648
+ fM as bm,
649
+ yM as bn,
650
+ FM as bo,
651
+ lM as bp,
652
+ mM as bq,
653
+ HM as br,
654
+ GM as bs,
655
+ dM as bt,
656
+ YM as bu,
657
+ bM as bv,
658
+ pM as bw,
659
+ uM as bx,
660
+ Me as by,
661
+ hM as bz,
662
+ qA as c,
663
+ _N as c$,
664
+ Mr as c0,
665
+ Rr as c1,
666
+ nr as c2,
667
+ Pr as c3,
668
+ er as c4,
669
+ Or as c5,
670
+ Br as c6,
671
+ Ur as c7,
672
+ or as c8,
673
+ vr as c9,
674
+ h_ as cA,
675
+ W_ as cB,
676
+ mA as cC,
677
+ fA as cD,
678
+ yA as cE,
679
+ eA as cF,
680
+ nA as cG,
681
+ tA as cH,
682
+ PA as cI,
683
+ CA as cJ,
684
+ RA as cK,
685
+ DA as cL,
686
+ sA as cM,
687
+ IA as cN,
688
+ LA as cO,
689
+ UA as cP,
690
+ vA as cQ,
691
+ OA as cR,
692
+ Ar as cS,
693
+ JA as cT,
694
+ $A as cU,
695
+ _r as cV,
696
+ ar as cW,
697
+ kA as cX,
698
+ aN as cY,
699
+ TN as cZ,
700
+ EN as c_,
701
+ Lr as ca,
702
+ rr as cb,
703
+ Vr as cc,
704
+ F_ as cd,
705
+ wA as ce,
706
+ KA as cf,
707
+ XA as cg,
708
+ WA as ch,
709
+ j_ as ci,
710
+ EA as cj,
711
+ SA as ck,
712
+ z_ as cl,
713
+ q_ as cm,
714
+ Z_ as cn,
715
+ $_ as co,
716
+ J_ as cp,
717
+ K_ as cq,
718
+ TA as cr,
719
+ w_ as cs,
720
+ _A as ct,
721
+ k_ as cu,
722
+ X_ as cv,
723
+ x_ as cw,
724
+ aA as cx,
725
+ AA as cy,
726
+ Q_ as cz,
727
+ ZA as d,
728
+ hr as d0,
729
+ mr as d1,
730
+ Gr as d2,
731
+ ur as d3,
732
+ Xr as d4,
733
+ wr as d5,
734
+ Wr as d6,
735
+ Qr as d7,
736
+ xr as d8,
737
+ lr as d9,
738
+ SN as dA,
739
+ zr as dB,
740
+ Jr as dC,
741
+ Zr as dD,
742
+ qr as dE,
743
+ kr as dF,
744
+ FA as dG,
745
+ hA as dH,
746
+ AN as dI,
747
+ xe as dJ,
748
+ Xe as dK,
749
+ yr as da,
750
+ fr as db,
751
+ Fr as dc,
752
+ Hr as dd,
753
+ br as de,
754
+ Kr as df,
755
+ Yr as dg,
756
+ pr as dh,
757
+ gr as di,
758
+ gA as dj,
759
+ HA as dk,
760
+ bA as dl,
761
+ pA as dm,
762
+ uA as dn,
763
+ GA as dp,
764
+ cA as dq,
765
+ YA as dr,
766
+ dA as ds,
767
+ VA as dt,
768
+ BA as du,
769
+ iA as dv,
770
+ oA as dw,
771
+ lA as dx,
772
+ jr as dy,
773
+ $r as dz,
774
+ zA as e,
775
+ QA as f,
776
+ xA as g,
777
+ Qe as h,
778
+ Ze as i,
779
+ p_ as j,
780
+ Sr as k,
781
+ qe as l,
782
+ O as m,
783
+ we as n,
784
+ R as o,
785
+ y_ as p,
786
+ N_ as q,
787
+ H_ as r,
788
+ rA as s,
789
+ We as t,
790
+ g_ as u,
791
+ NA as v,
792
+ r_ as w,
793
+ MA as x,
794
+ ke as y,
795
+ f_ as z
796
+ };
797
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidXJsLSF+ezAwOH1+LmpzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBEIGFzIERpYWdBUEksIEMgYXMgQ29udGV4dEFQSSwgYiBhcyBjcmVhdGVDb250ZXh0S2V5LCByIGFzIHJlZ2lzdGVyR2xvYmFsLCB1IGFzIHVucmVnaXN0ZXJHbG9iYWwsIGcgYXMgZ2V0R2xvYmFsIH0gZnJvbSAnLi9pbmRleC0hfnswMDV9fi5qcyc7XG5pbXBvcnQgeyBjIGFzIGNyZWF0ZUNvbnN0TWFwIH0gZnJvbSAnLi91dGlscy0hfnswMGJ9fi5qcyc7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX19yZWFkID0gKHVuZGVmaW5lZCAmJiB1bmRlZmluZWQuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gYXI7XG59O1xudmFyIF9fdmFsdWVzJDEgPSAodW5kZWZpbmVkICYmIHVuZGVmaW5lZC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykge1xuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59O1xudmFyIEJhZ2dhZ2VJbXBsID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEJhZ2dhZ2VJbXBsKGVudHJpZXMpIHtcbiAgICAgICAgdGhpcy5fZW50cmllcyA9IGVudHJpZXMgPyBuZXcgTWFwKGVudHJpZXMpIDogbmV3IE1hcCgpO1xuICAgIH1cbiAgICBCYWdnYWdlSW1wbC5wcm90b3R5cGUuZ2V0RW50cnkgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMuX2VudHJpZXMuZ2V0KGtleSk7XG4gICAgICAgIGlmICghZW50cnkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGVudHJ5KTtcbiAgICB9O1xuICAgIEJhZ2dhZ2VJbXBsLnByb3RvdHlwZS5nZXRBbGxFbnRyaWVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9lbnRyaWVzLmVudHJpZXMoKSkubWFwKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgdmFyIF9iID0gX19yZWFkKF9hLCAyKSwgayA9IF9iWzBdLCB2ID0gX2JbMV07XG4gICAgICAgICAgICByZXR1cm4gW2ssIHZdO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIEJhZ2dhZ2VJbXBsLnByb3RvdHlwZS5zZXRFbnRyeSA9IGZ1bmN0aW9uIChrZXksIGVudHJ5KSB7XG4gICAgICAgIHZhciBuZXdCYWdnYWdlID0gbmV3IEJhZ2dhZ2VJbXBsKHRoaXMuX2VudHJpZXMpO1xuICAgICAgICBuZXdCYWdnYWdlLl9lbnRyaWVzLnNldChrZXksIGVudHJ5KTtcbiAgICAgICAgcmV0dXJuIG5ld0JhZ2dhZ2U7XG4gICAgfTtcbiAgICBCYWdnYWdlSW1wbC5wcm90b3R5cGUucmVtb3ZlRW50cnkgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciBuZXdCYWdnYWdlID0gbmV3IEJhZ2dhZ2VJbXBsKHRoaXMuX2VudHJpZXMpO1xuICAgICAgICBuZXdCYWdnYWdlLl9lbnRyaWVzLmRlbGV0ZShrZXkpO1xuICAgICAgICByZXR1cm4gbmV3QmFnZ2FnZTtcbiAgICB9O1xuICAgIEJhZ2dhZ2VJbXBsLnByb3RvdHlwZS5yZW1vdmVFbnRyaWVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgdmFyIGtleXMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGtleXNbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbmV3QmFnZ2FnZSA9IG5ldyBCYWdnYWdlSW1wbCh0aGlzLl9lbnRyaWVzKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIGtleXNfMSA9IF9fdmFsdWVzJDEoa2V5cyksIGtleXNfMV8xID0ga2V5c18xLm5leHQoKTsgIWtleXNfMV8xLmRvbmU7IGtleXNfMV8xID0ga2V5c18xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBrZXlzXzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICBuZXdCYWdnYWdlLl9lbnRyaWVzLmRlbGV0ZShrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5c18xXzEgJiYgIWtleXNfMV8xLmRvbmUgJiYgKF9hID0ga2V5c18xLnJldHVybikpIF9hLmNhbGwoa2V5c18xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3QmFnZ2FnZTtcbiAgICB9O1xuICAgIEJhZ2dhZ2VJbXBsLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBCYWdnYWdlSW1wbCgpO1xuICAgIH07XG4gICAgcmV0dXJuIEJhZ2dhZ2VJbXBsO1xufSgpKTtcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogU3ltYm9sIHVzZWQgdG8gbWFrZSBCYWdnYWdlRW50cnlNZXRhZGF0YSBhbiBvcGFxdWUgdHlwZVxuICovXG52YXIgYmFnZ2FnZUVudHJ5TWV0YWRhdGFTeW1ib2wgPSBTeW1ib2woJ0JhZ2dhZ2VFbnRyeU1ldGFkYXRhJyk7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgZGlhZyA9IERpYWdBUEkuaW5zdGFuY2UoKTtcbi8qKlxuICogQ3JlYXRlIGEgbmV3IEJhZ2dhZ2Ugd2l0aCBvcHRpb25hbCBlbnRyaWVzXG4gKlxuICogQHBhcmFtIGVudHJpZXMgQW4gYXJyYXkgb2YgYmFnZ2FnZSBlbnRyaWVzIHRoZSBuZXcgYmFnZ2FnZSBzaG91bGQgY29udGFpblxuICovXG5mdW5jdGlvbiBjcmVhdGVCYWdnYWdlKGVudHJpZXMpIHtcbiAgICBpZiAoZW50cmllcyA9PT0gdm9pZCAwKSB7IGVudHJpZXMgPSB7fTsgfVxuICAgIHJldHVybiBuZXcgQmFnZ2FnZUltcGwobmV3IE1hcChPYmplY3QuZW50cmllcyhlbnRyaWVzKSkpO1xufVxuLyoqXG4gKiBDcmVhdGUgYSBzZXJpYWxpemFibGUgQmFnZ2FnZUVudHJ5TWV0YWRhdGEgb2JqZWN0IGZyb20gYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHN0ciBzdHJpbmcgbWV0YWRhdGEuIEZvcm1hdCBpcyBjdXJyZW50bHkgbm90IGRlZmluZWQgYnkgdGhlIHNwZWMgYW5kIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcuXG4gKlxuICovXG5mdW5jdGlvbiBiYWdnYWdlRW50cnlNZXRhZGF0YUZyb21TdHJpbmcoc3RyKSB7XG4gICAgaWYgKHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGRpYWcuZXJyb3IoXCJDYW5ub3QgY3JlYXRlIGJhZ2dhZ2UgbWV0YWRhdGEgZnJvbSB1bmtub3duIHR5cGU6IFwiICsgdHlwZW9mIHN0cik7XG4gICAgICAgIHN0ciA9ICcnO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBfX1RZUEVfXzogYmFnZ2FnZUVudHJ5TWV0YWRhdGFTeW1ib2wsXG4gICAgICAgIHRvU3RyaW5nOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyO1xuICAgICAgICB9LFxuICAgIH07XG59XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgZGVmYXVsdFRleHRNYXBHZXR0ZXIgPSB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoY2Fycmllciwga2V5KSB7XG4gICAgICAgIGlmIChjYXJyaWVyID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNhcnJpZXJba2V5XTtcbiAgICB9LFxuICAgIGtleXM6IGZ1bmN0aW9uIChjYXJyaWVyKSB7XG4gICAgICAgIGlmIChjYXJyaWVyID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoY2Fycmllcik7XG4gICAgfSxcbn07XG52YXIgZGVmYXVsdFRleHRNYXBTZXR0ZXIgPSB7XG4gICAgc2V0OiBmdW5jdGlvbiAoY2Fycmllciwga2V5LCB2YWx1ZSkge1xuICAgICAgICBpZiAoY2FycmllciA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY2FycmllcltrZXldID0gdmFsdWU7XG4gICAgfSxcbn07XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIE5vLW9wIGltcGxlbWVudGF0aW9ucyBvZiB7QGxpbmsgVGV4dE1hcFByb3BhZ2F0b3J9LlxuICovXG52YXIgTm9vcFRleHRNYXBQcm9wYWdhdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE5vb3BUZXh0TWFwUHJvcGFnYXRvcigpIHtcbiAgICB9XG4gICAgLyoqIE5vb3AgaW5qZWN0IGZ1bmN0aW9uIGRvZXMgbm90aGluZyAqL1xuICAgIE5vb3BUZXh0TWFwUHJvcGFnYXRvci5wcm90b3R5cGUuaW5qZWN0ID0gZnVuY3Rpb24gKF9jb250ZXh0LCBfY2FycmllcikgeyB9O1xuICAgIC8qKiBOb29wIGV4dHJhY3QgZnVuY3Rpb24gZG9lcyBub3RoaW5nIGFuZCByZXR1cm5zIHRoZSBpbnB1dCBjb250ZXh0ICovXG4gICAgTm9vcFRleHRNYXBQcm9wYWdhdG9yLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24gKGNvbnRleHQsIF9jYXJyaWVyKSB7XG4gICAgICAgIHJldHVybiBjb250ZXh0O1xuICAgIH07XG4gICAgTm9vcFRleHRNYXBQcm9wYWdhdG9yLnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9O1xuICAgIHJldHVybiBOb29wVGV4dE1hcFByb3BhZ2F0b3I7XG59KCkpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBCYWdnYWdlIGtleVxuICovXG52YXIgQkFHR0FHRV9LRVkgPSBjcmVhdGVDb250ZXh0S2V5KCdPcGVuVGVsZW1ldHJ5IEJhZ2dhZ2UgS2V5Jyk7XG4vKipcbiAqIFJldHJpZXZlIHRoZSBjdXJyZW50IGJhZ2dhZ2UgZnJvbSB0aGUgZ2l2ZW4gY29udGV4dFxuICpcbiAqIEBwYXJhbSB7Q29udGV4dH0gQ29udGV4dCB0aGF0IG1hbmFnZSBhbGwgY29udGV4dCB2YWx1ZXNcbiAqIEByZXR1cm5zIHtCYWdnYWdlfSBFeHRyYWN0ZWQgYmFnZ2FnZSBmcm9tIHRoZSBjb250ZXh0XG4gKi9cbmZ1bmN0aW9uIGdldEJhZ2dhZ2UoY29udGV4dCkge1xuICAgIHJldHVybiBjb250ZXh0LmdldFZhbHVlKEJBR0dBR0VfS0VZKSB8fCB1bmRlZmluZWQ7XG59XG4vKipcbiAqIFJldHJpZXZlIHRoZSBjdXJyZW50IGJhZ2dhZ2UgZnJvbSB0aGUgYWN0aXZlL2N1cnJlbnQgY29udGV4dFxuICpcbiAqIEByZXR1cm5zIHtCYWdnYWdlfSBFeHRyYWN0ZWQgYmFnZ2FnZSBmcm9tIHRoZSBjb250ZXh0XG4gKi9cbmZ1bmN0aW9uIGdldEFjdGl2ZUJhZ2dhZ2UoKSB7XG4gICAgcmV0dXJuIGdldEJhZ2dhZ2UoQ29udGV4dEFQSS5nZXRJbnN0YW5jZSgpLmFjdGl2ZSgpKTtcbn1cbi8qKlxuICogU3RvcmUgYSBiYWdnYWdlIGluIHRoZSBnaXZlbiBjb250ZXh0XG4gKlxuICogQHBhcmFtIHtDb250ZXh0fSBDb250ZXh0IHRoYXQgbWFuYWdlIGFsbCBjb250ZXh0IHZhbHVlc1xuICogQHBhcmFtIHtCYWdnYWdlfSBiYWdnYWdlIHRoYXQgd2lsbCBiZSBzZXQgaW4gdGhlIGFjdHVhbCBjb250ZXh0XG4gKi9cbmZ1bmN0aW9uIHNldEJhZ2dhZ2UoY29udGV4dCwgYmFnZ2FnZSkge1xuICAgIHJldHVybiBjb250ZXh0LnNldFZhbHVlKEJBR0dBR0VfS0VZLCBiYWdnYWdlKTtcbn1cbi8qKlxuICogRGVsZXRlIHRoZSBiYWdnYWdlIHN0b3JlZCBpbiB0aGUgZ2l2ZW4gY29udGV4dFxuICpcbiAqIEBwYXJhbSB7Q29udGV4dH0gQ29udGV4dCB0aGF0IG1hbmFnZSBhbGwgY29udGV4dCB2YWx1ZXNcbiAqL1xuZnVuY3Rpb24gZGVsZXRlQmFnZ2FnZShjb250ZXh0KSB7XG4gICAgcmV0dXJuIGNvbnRleHQuZGVsZXRlVmFsdWUoQkFHR0FHRV9LRVkpO1xufVxuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIEFQSV9OQU1FID0gJ3Byb3BhZ2F0aW9uJztcbnZhciBOT09QX1RFWFRfTUFQX1BST1BBR0FUT1IgPSBuZXcgTm9vcFRleHRNYXBQcm9wYWdhdG9yKCk7XG4vKipcbiAqIFNpbmdsZXRvbiBvYmplY3Qgd2hpY2ggcmVwcmVzZW50cyB0aGUgZW50cnkgcG9pbnQgdG8gdGhlIE9wZW5UZWxlbWV0cnkgUHJvcGFnYXRpb24gQVBJXG4gKi9cbnZhciBQcm9wYWdhdGlvbkFQSSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAvKiogRW1wdHkgcHJpdmF0ZSBjb25zdHJ1Y3RvciBwcmV2ZW50cyBlbmQgdXNlcnMgZnJvbSBjb25zdHJ1Y3RpbmcgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIEFQSSAqL1xuICAgIGZ1bmN0aW9uIFByb3BhZ2F0aW9uQVBJKCkge1xuICAgICAgICB0aGlzLmNyZWF0ZUJhZ2dhZ2UgPSBjcmVhdGVCYWdnYWdlO1xuICAgICAgICB0aGlzLmdldEJhZ2dhZ2UgPSBnZXRCYWdnYWdlO1xuICAgICAgICB0aGlzLmdldEFjdGl2ZUJhZ2dhZ2UgPSBnZXRBY3RpdmVCYWdnYWdlO1xuICAgICAgICB0aGlzLnNldEJhZ2dhZ2UgPSBzZXRCYWdnYWdlO1xuICAgICAgICB0aGlzLmRlbGV0ZUJhZ2dhZ2UgPSBkZWxldGVCYWdnYWdlO1xuICAgIH1cbiAgICAvKiogR2V0IHRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIFByb3BhZ2F0b3IgQVBJICovXG4gICAgUHJvcGFnYXRpb25BUEkuZ2V0SW5zdGFuY2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghdGhpcy5faW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2luc3RhbmNlID0gbmV3IFByb3BhZ2F0aW9uQVBJKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogU2V0IHRoZSBjdXJyZW50IHByb3BhZ2F0b3IuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBwcm9wYWdhdG9yIHdhcyBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCwgZWxzZSBmYWxzZVxuICAgICAqL1xuICAgIFByb3BhZ2F0aW9uQVBJLnByb3RvdHlwZS5zZXRHbG9iYWxQcm9wYWdhdG9yID0gZnVuY3Rpb24gKHByb3BhZ2F0b3IpIHtcbiAgICAgICAgcmV0dXJuIHJlZ2lzdGVyR2xvYmFsKEFQSV9OQU1FLCBwcm9wYWdhdG9yLCBEaWFnQVBJLmluc3RhbmNlKCkpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogSW5qZWN0IGNvbnRleHQgaW50byBhIGNhcnJpZXIgdG8gYmUgcHJvcGFnYXRlZCBpbnRlci1wcm9jZXNzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udGV4dCBDb250ZXh0IGNhcnJ5aW5nIHRyYWNpbmcgZGF0YSB0byBpbmplY3RcbiAgICAgKiBAcGFyYW0gY2FycmllciBjYXJyaWVyIHRvIGluamVjdCBjb250ZXh0IGludG9cbiAgICAgKiBAcGFyYW0gc2V0dGVyIEZ1bmN0aW9uIHVzZWQgdG8gc2V0IHZhbHVlcyBvbiB0aGUgY2FycmllclxuICAgICAqL1xuICAgIFByb3BhZ2F0aW9uQVBJLnByb3RvdHlwZS5pbmplY3QgPSBmdW5jdGlvbiAoY29udGV4dCwgY2Fycmllciwgc2V0dGVyKSB7XG4gICAgICAgIGlmIChzZXR0ZXIgPT09IHZvaWQgMCkgeyBzZXR0ZXIgPSBkZWZhdWx0VGV4dE1hcFNldHRlcjsgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0R2xvYmFsUHJvcGFnYXRvcigpLmluamVjdChjb250ZXh0LCBjYXJyaWVyLCBzZXR0ZXIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRXh0cmFjdCBjb250ZXh0IGZyb20gYSBjYXJyaWVyXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udGV4dCBDb250ZXh0IHdoaWNoIHRoZSBuZXdseSBjcmVhdGVkIGNvbnRleHQgd2lsbCBpbmhlcml0IGZyb21cbiAgICAgKiBAcGFyYW0gY2FycmllciBDYXJyaWVyIHRvIGV4dHJhY3QgY29udGV4dCBmcm9tXG4gICAgICogQHBhcmFtIGdldHRlciBGdW5jdGlvbiB1c2VkIHRvIGV4dHJhY3Qga2V5cyBmcm9tIGEgY2FycmllclxuICAgICAqL1xuICAgIFByb3BhZ2F0aW9uQVBJLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24gKGNvbnRleHQsIGNhcnJpZXIsIGdldHRlcikge1xuICAgICAgICBpZiAoZ2V0dGVyID09PSB2b2lkIDApIHsgZ2V0dGVyID0gZGVmYXVsdFRleHRNYXBHZXR0ZXI7IH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldEdsb2JhbFByb3BhZ2F0b3IoKS5leHRyYWN0KGNvbnRleHQsIGNhcnJpZXIsIGdldHRlcik7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBSZXR1cm4gYSBsaXN0IG9mIGFsbCBmaWVsZHMgd2hpY2ggbWF5IGJlIHVzZWQgYnkgdGhlIHByb3BhZ2F0b3IuXG4gICAgICovXG4gICAgUHJvcGFnYXRpb25BUEkucHJvdG90eXBlLmZpZWxkcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldEdsb2JhbFByb3BhZ2F0b3IoKS5maWVsZHMoKTtcbiAgICB9O1xuICAgIC8qKiBSZW1vdmUgdGhlIGdsb2JhbCBwcm9wYWdhdG9yICovXG4gICAgUHJvcGFnYXRpb25BUEkucHJvdG90eXBlLmRpc2FibGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHVucmVnaXN0ZXJHbG9iYWwoQVBJX05BTUUsIERpYWdBUEkuaW5zdGFuY2UoKSk7XG4gICAgfTtcbiAgICBQcm9wYWdhdGlvbkFQSS5wcm90b3R5cGUuX2dldEdsb2JhbFByb3BhZ2F0b3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBnZXRHbG9iYWwoQVBJX05BTUUpIHx8IE5PT1BfVEVYVF9NQVBfUFJPUEFHQVRPUjtcbiAgICB9O1xuICAgIHJldHVybiBQcm9wYWdhdGlvbkFQSTtcbn0oKSk7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vLyBTcGxpdCBtb2R1bGUtbGV2ZWwgdmFyaWFibGUgZGVmaW5pdGlvbiBpbnRvIHNlcGFyYXRlIGZpbGVzIHRvIGFsbG93XG4vLyB0cmVlLXNoYWtpbmcgb24gZWFjaCBhcGkgaW5zdGFuY2UuXG4vKiogRW50cnlwb2ludCBmb3IgcHJvcGFnYXRpb24gQVBJICovXG52YXIgcHJvcGFnYXRpb24gPSBQcm9wYWdhdGlvbkFQSS5nZXRJbnN0YW5jZSgpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIG90cGVyZm9ybWFuY2UgPSBwZXJmb3JtYW5jZTtcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRE8gTk9UIEVESVQsIHRoaXMgaXMgYW4gQXV0by1nZW5lcmF0ZWQgZmlsZSBmcm9tIHNjcmlwdHMvc2VtY29udi90ZW1wbGF0ZXMvL3RlbXBsYXRlcy9TZW1hbnRpY0F0dHJpYnV0ZXMudHMuajJcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDb25zdGFudCB2YWx1ZXMgZm9yIFNlbWFudGljQXR0cmlidXRlc1xuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUZW1wb3JhcnkgbG9jYWwgY29uc3RhbnRzIHRvIGFzc2lnbiB0byB0aGUgaW5kaXZpZHVhbCBleHBvcnRzIGFuZCB0aGUgbmFtZXNwYWNlZCB2ZXJzaW9uXG4vLyBSZXF1aXJlZCB0byBhdm9pZCB0aGUgbmFtZXNwYWNlIGV4cG9ydHMgdXNpbmcgdGhlIHVubWluaWZpYWJsZSBleHBvcnQgbmFtZXMgZm9yIHNvbWUgcGFja2FnZSB0eXBlc1xudmFyIFRNUF9BV1NfTEFNQkRBX0lOVk9LRURfQVJOID0gJ2F3cy5sYW1iZGEuaW52b2tlZF9hcm4nO1xudmFyIFRNUF9EQl9TWVNURU0gPSAnZGIuc3lzdGVtJztcbnZhciBUTVBfREJfQ09OTkVDVElPTl9TVFJJTkcgPSAnZGIuY29ubmVjdGlvbl9zdHJpbmcnO1xudmFyIFRNUF9EQl9VU0VSID0gJ2RiLnVzZXInO1xudmFyIFRNUF9EQl9KREJDX0RSSVZFUl9DTEFTU05BTUUgPSAnZGIuamRiYy5kcml2ZXJfY2xhc3NuYW1lJztcbnZhciBUTVBfREJfTkFNRSA9ICdkYi5uYW1lJztcbnZhciBUTVBfREJfU1RBVEVNRU5UID0gJ2RiLnN0YXRlbWVudCc7XG52YXIgVE1QX0RCX09QRVJBVElPTiA9ICdkYi5vcGVyYXRpb24nO1xudmFyIFRNUF9EQl9NU1NRTF9JTlNUQU5DRV9OQU1FID0gJ2RiLm1zc3FsLmluc3RhbmNlX25hbWUnO1xudmFyIFRNUF9EQl9DQVNTQU5EUkFfS0VZU1BBQ0UgPSAnZGIuY2Fzc2FuZHJhLmtleXNwYWNlJztcbnZhciBUTVBfREJfQ0FTU0FORFJBX1BBR0VfU0laRSA9ICdkYi5jYXNzYW5kcmEucGFnZV9zaXplJztcbnZhciBUTVBfREJfQ0FTU0FORFJBX0NPTlNJU1RFTkNZX0xFVkVMID0gJ2RiLmNhc3NhbmRyYS5jb25zaXN0ZW5jeV9sZXZlbCc7XG52YXIgVE1QX0RCX0NBU1NBTkRSQV9UQUJMRSA9ICdkYi5jYXNzYW5kcmEudGFibGUnO1xudmFyIFRNUF9EQl9DQVNTQU5EUkFfSURFTVBPVEVOQ0UgPSAnZGIuY2Fzc2FuZHJhLmlkZW1wb3RlbmNlJztcbnZhciBUTVBfREJfQ0FTU0FORFJBX1NQRUNVTEFUSVZFX0VYRUNVVElPTl9DT1VOVCA9ICdkYi5jYXNzYW5kcmEuc3BlY3VsYXRpdmVfZXhlY3V0aW9uX2NvdW50JztcbnZhciBUTVBfREJfQ0FTU0FORFJBX0NPT1JESU5BVE9SX0lEID0gJ2RiLmNhc3NhbmRyYS5jb29yZGluYXRvci5pZCc7XG52YXIgVE1QX0RCX0NBU1NBTkRSQV9DT09SRElOQVRPUl9EQyA9ICdkYi5jYXNzYW5kcmEuY29vcmRpbmF0b3IuZGMnO1xudmFyIFRNUF9EQl9IQkFTRV9OQU1FU1BBQ0UgPSAnZGIuaGJhc2UubmFtZXNwYWNlJztcbnZhciBUTVBfREJfUkVESVNfREFUQUJBU0VfSU5ERVggPSAnZGIucmVkaXMuZGF0YWJhc2VfaW5kZXgnO1xudmFyIFRNUF9EQl9NT05HT0RCX0NPTExFQ1RJT04gPSAnZGIubW9uZ29kYi5jb2xsZWN0aW9uJztcbnZhciBUTVBfREJfU1FMX1RBQkxFID0gJ2RiLnNxbC50YWJsZSc7XG52YXIgVE1QX0VYQ0VQVElPTl9UWVBFID0gJ2V4Y2VwdGlvbi50eXBlJztcbnZhciBUTVBfRVhDRVBUSU9OX01FU1NBR0UgPSAnZXhjZXB0aW9uLm1lc3NhZ2UnO1xudmFyIFRNUF9FWENFUFRJT05fU1RBQ0tUUkFDRSA9ICdleGNlcHRpb24uc3RhY2t0cmFjZSc7XG52YXIgVE1QX0VYQ0VQVElPTl9FU0NBUEVEID0gJ2V4Y2VwdGlvbi5lc2NhcGVkJztcbnZhciBUTVBfRkFBU19UUklHR0VSID0gJ2ZhYXMudHJpZ2dlcic7XG52YXIgVE1QX0ZBQVNfRVhFQ1VUSU9OID0gJ2ZhYXMuZXhlY3V0aW9uJztcbnZhciBUTVBfRkFBU19ET0NVTUVOVF9DT0xMRUNUSU9OID0gJ2ZhYXMuZG9jdW1lbnQuY29sbGVjdGlvbic7XG52YXIgVE1QX0ZBQVNfRE9DVU1FTlRfT1BFUkFUSU9OID0gJ2ZhYXMuZG9jdW1lbnQub3BlcmF0aW9uJztcbnZhciBUTVBfRkFBU19ET0NVTUVOVF9USU1FID0gJ2ZhYXMuZG9jdW1lbnQudGltZSc7XG52YXIgVE1QX0ZBQVNfRE9DVU1FTlRfTkFNRSA9ICdmYWFzLmRvY3VtZW50Lm5hbWUnO1xudmFyIFRNUF9GQUFTX1RJTUUgPSAnZmFhcy50aW1lJztcbnZhciBUTVBfRkFBU19DUk9OID0gJ2ZhYXMuY3Jvbic7XG52YXIgVE1QX0ZBQVNfQ09MRFNUQVJUID0gJ2ZhYXMuY29sZHN0YXJ0JztcbnZhciBUTVBfRkFBU19JTlZPS0VEX05BTUUgPSAnZmFhcy5pbnZva2VkX25hbWUnO1xudmFyIFRNUF9GQUFTX0lOVk9LRURfUFJPVklERVIgPSAnZmFhcy5pbnZva2VkX3Byb3ZpZGVyJztcbnZhciBUTVBfRkFBU19JTlZPS0VEX1JFR0lPTiA9ICdmYWFzLmludm9rZWRfcmVnaW9uJztcbnZhciBUTVBfTkVUX1RSQU5TUE9SVCA9ICduZXQudHJhbnNwb3J0JztcbnZhciBUTVBfTkVUX1BFRVJfSVAgPSAnbmV0LnBlZXIuaXAnO1xudmFyIFRNUF9ORVRfUEVFUl9QT1JUID0gJ25ldC5wZWVyLnBvcnQnO1xudmFyIFRNUF9ORVRfUEVFUl9OQU1FID0gJ25ldC5wZWVyLm5hbWUnO1xudmFyIFRNUF9ORVRfSE9TVF9JUCA9ICduZXQuaG9zdC5pcCc7XG52YXIgVE1QX05FVF9IT1NUX1BPUlQgPSAnbmV0Lmhvc3QucG9ydCc7XG52YXIgVE1QX05FVF9IT1NUX05BTUUgPSAnbmV0Lmhvc3QubmFtZSc7XG52YXIgVE1QX05FVF9IT1NUX0NPTk5FQ1RJT05fVFlQRSA9ICduZXQuaG9zdC5jb25uZWN0aW9uLnR5cGUnO1xudmFyIFRNUF9ORVRfSE9TVF9DT05ORUNUSU9OX1NVQlRZUEUgPSAnbmV0Lmhvc3QuY29ubmVjdGlvbi5zdWJ0eXBlJztcbnZhciBUTVBfTkVUX0hPU1RfQ0FSUklFUl9OQU1FID0gJ25ldC5ob3N0LmNhcnJpZXIubmFtZSc7XG52YXIgVE1QX05FVF9IT1NUX0NBUlJJRVJfTUNDID0gJ25ldC5ob3N0LmNhcnJpZXIubWNjJztcbnZhciBUTVBfTkVUX0hPU1RfQ0FSUklFUl9NTkMgPSAnbmV0Lmhvc3QuY2Fycmllci5tbmMnO1xudmFyIFRNUF9ORVRfSE9TVF9DQVJSSUVSX0lDQyA9ICduZXQuaG9zdC5jYXJyaWVyLmljYyc7XG52YXIgVE1QX1BFRVJfU0VSVklDRSA9ICdwZWVyLnNlcnZpY2UnO1xudmFyIFRNUF9FTkRVU0VSX0lEID0gJ2VuZHVzZXIuaWQnO1xudmFyIFRNUF9FTkRVU0VSX1JPTEUgPSAnZW5kdXNlci5yb2xlJztcbnZhciBUTVBfRU5EVVNFUl9TQ09QRSA9ICdlbmR1c2VyLnNjb3BlJztcbnZhciBUTVBfVEhSRUFEX0lEID0gJ3RocmVhZC5pZCc7XG52YXIgVE1QX1RIUkVBRF9OQU1FID0gJ3RocmVhZC5uYW1lJztcbnZhciBUTVBfQ09ERV9GVU5DVElPTiA9ICdjb2RlLmZ1bmN0aW9uJztcbnZhciBUTVBfQ09ERV9OQU1FU1BBQ0UgPSAnY29kZS5uYW1lc3BhY2UnO1xudmFyIFRNUF9DT0RFX0ZJTEVQQVRIID0gJ2NvZGUuZmlsZXBhdGgnO1xudmFyIFRNUF9DT0RFX0xJTkVOTyA9ICdjb2RlLmxpbmVubyc7XG52YXIgVE1QX0hUVFBfTUVUSE9EID0gJ2h0dHAubWV0aG9kJztcbnZhciBUTVBfSFRUUF9VUkwgPSAnaHR0cC51cmwnO1xudmFyIFRNUF9IVFRQX1RBUkdFVCA9ICdodHRwLnRhcmdldCc7XG52YXIgVE1QX0hUVFBfSE9TVCA9ICdodHRwLmhvc3QnO1xudmFyIFRNUF9IVFRQX1NDSEVNRSA9ICdodHRwLnNjaGVtZSc7XG52YXIgVE1QX0hUVFBfU1RBVFVTX0NPREUgPSAnaHR0cC5zdGF0dXNfY29kZSc7XG52YXIgVE1QX0hUVFBfRkxBVk9SID0gJ2h0dHAuZmxhdm9yJztcbnZhciBUTVBfSFRUUF9VU0VSX0FHRU5UID0gJ2h0dHAudXNlcl9hZ2VudCc7XG52YXIgVE1QX0hUVFBfUkVRVUVTVF9DT05URU5UX0xFTkdUSCA9ICdodHRwLnJlcXVlc3RfY29udGVudF9sZW5ndGgnO1xudmFyIFRNUF9IVFRQX1JFUVVFU1RfQ09OVEVOVF9MRU5HVEhfVU5DT01QUkVTU0VEID0gJ2h0dHAucmVxdWVzdF9jb250ZW50X2xlbmd0aF91bmNvbXByZXNzZWQnO1xudmFyIFRNUF9IVFRQX1JFU1BPTlNFX0NPTlRFTlRfTEVOR1RIID0gJ2h0dHAucmVzcG9uc2VfY29udGVudF9sZW5ndGgnO1xudmFyIFRNUF9IVFRQX1JFU1BPTlNFX0NPTlRFTlRfTEVOR1RIX1VOQ09NUFJFU1NFRCA9ICdodHRwLnJlc3BvbnNlX2NvbnRlbnRfbGVuZ3RoX3VuY29tcHJlc3NlZCc7XG52YXIgVE1QX0hUVFBfU0VSVkVSX05BTUUgPSAnaHR0cC5zZXJ2ZXJfbmFtZSc7XG52YXIgVE1QX0hUVFBfUk9VVEUgPSAnaHR0cC5yb3V0ZSc7XG52YXIgVE1QX0hUVFBfQ0xJRU5UX0lQID0gJ2h0dHAuY2xpZW50X2lwJztcbnZhciBUTVBfQVdTX0RZTkFNT0RCX1RBQkxFX05BTUVTID0gJ2F3cy5keW5hbW9kYi50YWJsZV9uYW1lcyc7XG52YXIgVE1QX0FXU19EWU5BTU9EQl9DT05TVU1FRF9DQVBBQ0lUWSA9ICdhd3MuZHluYW1vZGIuY29uc3VtZWRfY2FwYWNpdHknO1xudmFyIFRNUF9BV1NfRFlOQU1PREJfSVRFTV9DT0xMRUNUSU9OX01FVFJJQ1MgPSAnYXdzLmR5bmFtb2RiLml0ZW1fY29sbGVjdGlvbl9tZXRyaWNzJztcbnZhciBUTVBfQVdTX0RZTkFNT0RCX1BST1ZJU0lPTkVEX1JFQURfQ0FQQUNJVFkgPSAnYXdzLmR5bmFtb2RiLnByb3Zpc2lvbmVkX3JlYWRfY2FwYWNpdHknO1xudmFyIFRNUF9BV1NfRFlOQU1PREJfUFJPVklTSU9ORURfV1JJVEVfQ0FQQUNJVFkgPSAnYXdzLmR5bmFtb2RiLnByb3Zpc2lvbmVkX3dyaXRlX2NhcGFjaXR5JztcbnZhciBUTVBfQVdTX0RZTkFNT0RCX0NPTlNJU1RFTlRfUkVBRCA9ICdhd3MuZHluYW1vZGIuY29uc2lzdGVudF9yZWFkJztcbnZhciBUTVBfQVdTX0RZTkFNT0RCX1BST0pFQ1RJT04gPSAnYXdzLmR5bmFtb2RiLnByb2plY3Rpb24nO1xudmFyIFRNUF9BV1NfRFlOQU1PREJfTElNSVQgPSAnYXdzLmR5bmFtb2RiLmxpbWl0JztcbnZhciBUTVBfQVdTX0RZTkFNT0RCX0FUVFJJQlVURVNfVE9fR0VUID0gJ2F3cy5keW5hbW9kYi5hdHRyaWJ1dGVzX3RvX2dldCc7XG52YXIgVE1QX0FXU19EWU5BTU9EQl9JTkRFWF9OQU1FID0gJ2F3cy5keW5hbW9kYi5pbmRleF9uYW1lJztcbnZhciBUTVBfQVdTX0RZTkFNT0RCX1NFTEVDVCA9ICdhd3MuZHluYW1vZGIuc2VsZWN0JztcbnZhciBUTVBfQVdTX0RZTkFNT0RCX0dMT0JBTF9TRUNPTkRBUllfSU5ERVhFUyA9ICdhd3MuZHluYW1vZGIuZ2xvYmFsX3NlY29uZGFyeV9pbmRleGVzJztcbnZhciBUTVBfQVdTX0RZTkFNT0RCX0xPQ0FMX1NFQ09OREFSWV9JTkRFWEVTID0gJ2F3cy5keW5hbW9kYi5sb2NhbF9zZWNvbmRhcnlfaW5kZXhlcyc7XG52YXIgVE1QX0FXU19EWU5BTU9EQl9FWENMVVNJVkVfU1RBUlRfVEFCTEUgPSAnYXdzLmR5bmFtb2RiLmV4Y2x1c2l2ZV9zdGFydF90YWJsZSc7XG52YXIgVE1QX0FXU19EWU5BTU9EQl9UQUJMRV9DT1VOVCA9ICdhd3MuZHluYW1vZGIudGFibGVfY291bnQnO1xudmFyIFRNUF9BV1NfRFlOQU1PREJfU0NBTl9GT1JXQVJEID0gJ2F3cy5keW5hbW9kYi5zY2FuX2ZvcndhcmQnO1xudmFyIFRNUF9BV1NfRFlOQU1PREJfU0VHTUVOVCA9ICdhd3MuZHluYW1vZGIuc2VnbWVudCc7XG52YXIgVE1QX0FXU19EWU5BTU9EQl9UT1RBTF9TRUdNRU5UUyA9ICdhd3MuZHluYW1vZGIudG90YWxfc2VnbWVudHMnO1xudmFyIFRNUF9BV1NfRFlOQU1PREJfQ09VTlQgPSAnYXdzLmR5bmFtb2RiLmNvdW50JztcbnZhciBUTVBfQVdTX0RZTkFNT0RCX1NDQU5ORURfQ09VTlQgPSAnYXdzLmR5bmFtb2RiLnNjYW5uZWRfY291bnQnO1xudmFyIFRNUF9BV1NfRFlOQU1PREJfQVRUUklCVVRFX0RFRklOSVRJT05TID0gJ2F3cy5keW5hbW9kYi5hdHRyaWJ1dGVfZGVmaW5pdGlvbnMnO1xudmFyIFRNUF9BV1NfRFlOQU1PREJfR0xPQkFMX1NFQ09OREFSWV9JTkRFWF9VUERBVEVTID0gJ2F3cy5keW5hbW9kYi5nbG9iYWxfc2Vjb25kYXJ5X2luZGV4X3VwZGF0ZXMnO1xudmFyIFRNUF9NRVNTQUdJTkdfU1lTVEVNID0gJ21lc3NhZ2luZy5zeXN0ZW0nO1xudmFyIFRNUF9NRVNTQUdJTkdfREVTVElOQVRJT04gPSAnbWVzc2FnaW5nLmRlc3RpbmF0aW9uJztcbnZhciBUTVBfTUVTU0FHSU5HX0RFU1RJTkFUSU9OX0tJTkQgPSAnbWVzc2FnaW5nLmRlc3RpbmF0aW9uX2tpbmQnO1xudmFyIFRNUF9NRVNTQUdJTkdfVEVNUF9ERVNUSU5BVElPTiA9ICdtZXNzYWdpbmcudGVtcF9kZXN0aW5hdGlvbic7XG52YXIgVE1QX01FU1NBR0lOR19QUk9UT0NPTCA9ICdtZXNzYWdpbmcucHJvdG9jb2wnO1xudmFyIFRNUF9NRVNTQUdJTkdfUFJPVE9DT0xfVkVSU0lPTiA9ICdtZXNzYWdpbmcucHJvdG9jb2xfdmVyc2lvbic7XG52YXIgVE1QX01FU1NBR0lOR19VUkwgPSAnbWVzc2FnaW5nLnVybCc7XG52YXIgVE1QX01FU1NBR0lOR19NRVNTQUdFX0lEID0gJ21lc3NhZ2luZy5tZXNzYWdlX2lkJztcbnZhciBUTVBfTUVTU0FHSU5HX0NPTlZFUlNBVElPTl9JRCA9ICdtZXNzYWdpbmcuY29udmVyc2F0aW9uX2lkJztcbnZhciBUTVBfTUVTU0FHSU5HX01FU1NBR0VfUEFZTE9BRF9TSVpFX0JZVEVTID0gJ21lc3NhZ2luZy5tZXNzYWdlX3BheWxvYWRfc2l6ZV9ieXRlcyc7XG52YXIgVE1QX01FU1NBR0lOR19NRVNTQUdFX1BBWUxPQURfQ09NUFJFU1NFRF9TSVpFX0JZVEVTID0gJ21lc3NhZ2luZy5tZXNzYWdlX3BheWxvYWRfY29tcHJlc3NlZF9zaXplX2J5dGVzJztcbnZhciBUTVBfTUVTU0FHSU5HX09QRVJBVElPTiA9ICdtZXNzYWdpbmcub3BlcmF0aW9uJztcbnZhciBUTVBfTUVTU0FHSU5HX0NPTlNVTUVSX0lEID0gJ21lc3NhZ2luZy5jb25zdW1lcl9pZCc7XG52YXIgVE1QX01FU1NBR0lOR19SQUJCSVRNUV9ST1VUSU5HX0tFWSA9ICdtZXNzYWdpbmcucmFiYml0bXEucm91dGluZ19rZXknO1xudmFyIFRNUF9NRVNTQUdJTkdfS0FGS0FfTUVTU0FHRV9LRVkgPSAnbWVzc2FnaW5nLmthZmthLm1lc3NhZ2Vfa2V5JztcbnZhciBUTVBfTUVTU0FHSU5HX0tBRktBX0NPTlNVTUVSX0dST1VQID0gJ21lc3NhZ2luZy5rYWZrYS5jb25zdW1lcl9ncm91cCc7XG52YXIgVE1QX01FU1NBR0lOR19LQUZLQV9DTElFTlRfSUQgPSAnbWVzc2FnaW5nLmthZmthLmNsaWVudF9pZCc7XG52YXIgVE1QX01FU1NBR0lOR19LQUZLQV9QQVJUSVRJT04gPSAnbWVzc2FnaW5nLmthZmthLnBhcnRpdGlvbic7XG52YXIgVE1QX01FU1NBR0lOR19LQUZLQV9UT01CU1RPTkUgPSAnbWVzc2FnaW5nLmthZmthLnRvbWJzdG9uZSc7XG52YXIgVE1QX1JQQ19TWVNURU0gPSAncnBjLnN5c3RlbSc7XG52YXIgVE1QX1JQQ19TRVJWSUNFID0gJ3JwYy5zZXJ2aWNlJztcbnZhciBUTVBfUlBDX01FVEhPRCA9ICdycGMubWV0aG9kJztcbnZhciBUTVBfUlBDX0dSUENfU1RBVFVTX0NPREUgPSAncnBjLmdycGMuc3RhdHVzX2NvZGUnO1xudmFyIFRNUF9SUENfSlNPTlJQQ19WRVJTSU9OID0gJ3JwYy5qc29ucnBjLnZlcnNpb24nO1xudmFyIFRNUF9SUENfSlNPTlJQQ19SRVFVRVNUX0lEID0gJ3JwYy5qc29ucnBjLnJlcXVlc3RfaWQnO1xudmFyIFRNUF9SUENfSlNPTlJQQ19FUlJPUl9DT0RFID0gJ3JwYy5qc29ucnBjLmVycm9yX2NvZGUnO1xudmFyIFRNUF9SUENfSlNPTlJQQ19FUlJPUl9NRVNTQUdFID0gJ3JwYy5qc29ucnBjLmVycm9yX21lc3NhZ2UnO1xudmFyIFRNUF9NRVNTQUdFX1RZUEUgPSAnbWVzc2FnZS50eXBlJztcbnZhciBUTVBfTUVTU0FHRV9JRCA9ICdtZXNzYWdlLmlkJztcbnZhciBUTVBfTUVTU0FHRV9DT01QUkVTU0VEX1NJWkUgPSAnbWVzc2FnZS5jb21wcmVzc2VkX3NpemUnO1xudmFyIFRNUF9NRVNTQUdFX1VOQ09NUFJFU1NFRF9TSVpFID0gJ21lc3NhZ2UudW5jb21wcmVzc2VkX3NpemUnO1xuLyoqXG4gKiBUaGUgZnVsbCBpbnZva2VkIEFSTiBhcyBwcm92aWRlZCBvbiB0aGUgYENvbnRleHRgIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24gKGBMYW1iZGEtUnVudGltZS1JbnZva2VkLUZ1bmN0aW9uLUFybmAgaGVhZGVyIG9uIHRoZSBgL3J1bnRpbWUvaW52b2NhdGlvbi9uZXh0YCBhcHBsaWNhYmxlKS5cbiAqXG4gKiBOb3RlOiBUaGlzIG1heSBiZSBkaWZmZXJlbnQgZnJvbSBgZmFhcy5pZGAgaWYgYW4gYWxpYXMgaXMgaW52b2x2ZWQuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfQVdTX0xBTUJEQV9JTlZPS0VEX0FSTiBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfQVdTX0xBTUJEQV9JTlZPS0VEX0FSTiA9IFRNUF9BV1NfTEFNQkRBX0lOVk9LRURfQVJOO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9EQl9TWVNURU0gaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0RCX1NZU1RFTSA9IFRNUF9EQl9TWVNURU07XG4vKipcbiAqIFRoZSBjb25uZWN0aW9uIHN0cmluZyB1c2VkIHRvIGNvbm5lY3QgdG8gdGhlIGRhdGFiYXNlLiBJdCBpcyByZWNvbW1lbmRlZCB0byByZW1vdmUgZW1iZWRkZWQgY3JlZGVudGlhbHMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfREJfQ09OTkVDVElPTl9TVFJJTkcgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0RCX0NPTk5FQ1RJT05fU1RSSU5HID0gVE1QX0RCX0NPTk5FQ1RJT05fU1RSSU5HO1xuLyoqXG4gKiBVc2VybmFtZSBmb3IgYWNjZXNzaW5nIHRoZSBkYXRhYmFzZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9EQl9VU0VSIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19EQl9VU0VSID0gVE1QX0RCX1VTRVI7XG4vKipcbiAqIFRoZSBmdWxseS1xdWFsaWZpZWQgY2xhc3MgbmFtZSBvZiB0aGUgW0phdmEgRGF0YWJhc2UgQ29ubmVjdGl2aXR5IChKREJDKV0oaHR0cHM6Ly9kb2NzLm9yYWNsZS5jb20vamF2YXNlLzgvZG9jcy90ZWNobm90ZXMvZ3VpZGVzL2pkYmMvKSBkcml2ZXIgdXNlZCB0byBjb25uZWN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0RCX0pEQkNfRFJJVkVSX0NMQVNTTkFNRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfREJfSkRCQ19EUklWRVJfQ0xBU1NOQU1FID0gVE1QX0RCX0pEQkNfRFJJVkVSX0NMQVNTTkFNRTtcbi8qKlxuICogSWYgbm8gW3RlY2gtc3BlY2lmaWMgYXR0cmlidXRlXSgjY2FsbC1sZXZlbC1hdHRyaWJ1dGVzLWZvci1zcGVjaWZpYy10ZWNobm9sb2dpZXMpIGlzIGRlZmluZWQsIHRoaXMgYXR0cmlidXRlIGlzIHVzZWQgdG8gcmVwb3J0IHRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSBiZWluZyBhY2Nlc3NlZC4gRm9yIGNvbW1hbmRzIHRoYXQgc3dpdGNoIHRoZSBkYXRhYmFzZSwgdGhpcyBzaG91bGQgYmUgc2V0IHRvIHRoZSB0YXJnZXQgZGF0YWJhc2UgKGV2ZW4gaWYgdGhlIGNvbW1hbmQgZmFpbHMpLlxuICpcbiAqIE5vdGU6IEluIHNvbWUgU1FMIGRhdGFiYXNlcywgdGhlIGRhdGFiYXNlIG5hbWUgdG8gYmUgdXNlZCBpcyBjYWxsZWQgJiMzNDtzY2hlbWEgbmFtZSYjMzQ7LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0RCX05BTUUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0RCX05BTUUgPSBUTVBfREJfTkFNRTtcbi8qKlxuICogVGhlIGRhdGFiYXNlIHN0YXRlbWVudCBiZWluZyBleGVjdXRlZC5cbiAqXG4gKiBOb3RlOiBUaGUgdmFsdWUgbWF5IGJlIHNhbml0aXplZCB0byBleGNsdWRlIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9EQl9TVEFURU1FTlQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0RCX1NUQVRFTUVOVCA9IFRNUF9EQl9TVEFURU1FTlQ7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBvcGVyYXRpb24gYmVpbmcgZXhlY3V0ZWQsIGUuZy4gdGhlIFtNb25nb0RCIGNvbW1hbmQgbmFtZV0oaHR0cHM6Ly9kb2NzLm1vbmdvZGIuY29tL21hbnVhbC9yZWZlcmVuY2UvY29tbWFuZC8jZGF0YWJhc2Utb3BlcmF0aW9ucykgc3VjaCBhcyBgZmluZEFuZE1vZGlmeWAsIG9yIHRoZSBTUUwga2V5d29yZC5cbiAqXG4gKiBOb3RlOiBXaGVuIHNldHRpbmcgdGhpcyB0byBhbiBTUUwga2V5d29yZCwgaXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIGF0dGVtcHQgYW55IGNsaWVudC1zaWRlIHBhcnNpbmcgb2YgYGRiLnN0YXRlbWVudGAganVzdCB0byBnZXQgdGhpcyBwcm9wZXJ0eSwgYnV0IGl0IHNob3VsZCBiZSBzZXQgaWYgdGhlIG9wZXJhdGlvbiBuYW1lIGlzIHByb3ZpZGVkIGJ5IHRoZSBsaWJyYXJ5IGJlaW5nIGluc3RydW1lbnRlZC4gSWYgdGhlIFNRTCBzdGF0ZW1lbnQgaGFzIGFuIGFtYmlndW91cyBvcGVyYXRpb24sIG9yIHBlcmZvcm1zIG1vcmUgdGhhbiBvbmUgb3BlcmF0aW9uLCB0aGlzIHZhbHVlIG1heSBiZSBvbWl0dGVkLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0RCX09QRVJBVElPTiBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfREJfT1BFUkFUSU9OID0gVE1QX0RCX09QRVJBVElPTjtcbi8qKlxuICogVGhlIE1pY3Jvc29mdCBTUUwgU2VydmVyIFtpbnN0YW5jZSBuYW1lXShodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy9zcWwvY29ubmVjdC9qZGJjL2J1aWxkaW5nLXRoZS1jb25uZWN0aW9uLXVybD92aWV3PXNxbC1zZXJ2ZXItdmVyMTUpIGNvbm5lY3RpbmcgdG8uIFRoaXMgbmFtZSBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgcG9ydCBvZiBhIG5hbWVkIGluc3RhbmNlLlxuICpcbiAqIE5vdGU6IElmIHNldHRpbmcgYSBgZGIubXNzcWwuaW5zdGFuY2VfbmFtZWAsIGBuZXQucGVlci5wb3J0YCBpcyBubyBsb25nZXIgcmVxdWlyZWQgKGJ1dCBzdGlsbCByZWNvbW1lbmRlZCBpZiBub24tc3RhbmRhcmQpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0RCX01TU1FMX0lOU1RBTkNFX05BTUUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0RCX01TU1FMX0lOU1RBTkNFX05BTUUgPSBUTVBfREJfTVNTUUxfSU5TVEFOQ0VfTkFNRTtcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGtleXNwYWNlIGJlaW5nIGFjY2Vzc2VkLiBUbyBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGdlbmVyaWMgYGRiLm5hbWVgIGF0dHJpYnV0ZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9EQl9OQU1FIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19EQl9DQVNTQU5EUkFfS0VZU1BBQ0UgPSBUTVBfREJfQ0FTU0FORFJBX0tFWVNQQUNFO1xuLyoqXG4gKiBUaGUgZmV0Y2ggc2l6ZSB1c2VkIGZvciBwYWdpbmcsIGkuZS4gaG93IG1hbnkgcm93cyB3aWxsIGJlIHJldHVybmVkIGF0IG9uY2UuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfREJfQ0FTU0FORFJBX1BBR0VfU0laRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfREJfQ0FTU0FORFJBX1BBR0VfU0laRSA9IFRNUF9EQl9DQVNTQU5EUkFfUEFHRV9TSVpFO1xuLyoqXG4gKiBUaGUgY29uc2lzdGVuY3kgbGV2ZWwgb2YgdGhlIHF1ZXJ5LiBCYXNlZCBvbiBjb25zaXN0ZW5jeSB2YWx1ZXMgZnJvbSBbQ1FMXShodHRwczovL2RvY3MuZGF0YXN0YXguY29tL2VuL2Nhc3NhbmRyYS1vc3MvMy4wL2Nhc3NhbmRyYS9kbWwvZG1sQ29uZmlnQ29uc2lzdGVuY3kuaHRtbCkuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfREJfQ0FTU0FORFJBX0NPTlNJU1RFTkNZX0xFVkVMIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19EQl9DQVNTQU5EUkFfQ09OU0lTVEVOQ1lfTEVWRUwgPSBUTVBfREJfQ0FTU0FORFJBX0NPTlNJU1RFTkNZX0xFVkVMO1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgcHJpbWFyeSB0YWJsZSB0aGF0IHRoZSBvcGVyYXRpb24gaXMgYWN0aW5nIHVwb24sIGluY2x1ZGluZyB0aGUgc2NoZW1hIG5hbWUgKGlmIGFwcGxpY2FibGUpLlxuICpcbiAqIE5vdGU6IFRoaXMgbWlycm9ycyB0aGUgZGIuc3FsLnRhYmxlIGF0dHJpYnV0ZSBidXQgcmVmZXJlbmNlcyBjYXNzYW5kcmEgcmF0aGVyIHRoYW4gc3FsLiBJdCBpcyBub3QgcmVjb21tZW5kZWQgdG8gYXR0ZW1wdCBhbnkgY2xpZW50LXNpZGUgcGFyc2luZyBvZiBgZGIuc3RhdGVtZW50YCBqdXN0IHRvIGdldCB0aGlzIHByb3BlcnR5LCBidXQgaXQgc2hvdWxkIGJlIHNldCBpZiBpdCBpcyBwcm92aWRlZCBieSB0aGUgbGlicmFyeSBiZWluZyBpbnN0cnVtZW50ZWQuIElmIHRoZSBvcGVyYXRpb24gaXMgYWN0aW5nIHVwb24gYW4gYW5vbnltb3VzIHRhYmxlLCBvciBtb3JlIHRoYW4gb25lIHRhYmxlLCB0aGlzIHZhbHVlIE1VU1QgTk9UIGJlIHNldC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9EQl9DQVNTQU5EUkFfVEFCTEUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0RCX0NBU1NBTkRSQV9UQUJMRSA9IFRNUF9EQl9DQVNTQU5EUkFfVEFCTEU7XG4vKipcbiAqIFdoZXRoZXIgb3Igbm90IHRoZSBxdWVyeSBpcyBpZGVtcG90ZW50LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0RCX0NBU1NBTkRSQV9JREVNUE9URU5DRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfREJfQ0FTU0FORFJBX0lERU1QT1RFTkNFID0gVE1QX0RCX0NBU1NBTkRSQV9JREVNUE9URU5DRTtcbi8qKlxuICogVGhlIG51bWJlciBvZiB0aW1lcyBhIHF1ZXJ5IHdhcyBzcGVjdWxhdGl2ZWx5IGV4ZWN1dGVkLiBOb3Qgc2V0IG9yIGAwYCBpZiB0aGUgcXVlcnkgd2FzIG5vdCBleGVjdXRlZCBzcGVjdWxhdGl2ZWx5LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0RCX0NBU1NBTkRSQV9TUEVDVUxBVElWRV9FWEVDVVRJT05fQ09VTlQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0RCX0NBU1NBTkRSQV9TUEVDVUxBVElWRV9FWEVDVVRJT05fQ09VTlQgPSBUTVBfREJfQ0FTU0FORFJBX1NQRUNVTEFUSVZFX0VYRUNVVElPTl9DT1VOVDtcbi8qKlxuICogVGhlIElEIG9mIHRoZSBjb29yZGluYXRpbmcgbm9kZSBmb3IgYSBxdWVyeS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9EQl9DQVNTQU5EUkFfQ09PUkRJTkFUT1JfSUQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0RCX0NBU1NBTkRSQV9DT09SRElOQVRPUl9JRCA9IFRNUF9EQl9DQVNTQU5EUkFfQ09PUkRJTkFUT1JfSUQ7XG4vKipcbiAqIFRoZSBkYXRhIGNlbnRlciBvZiB0aGUgY29vcmRpbmF0aW5nIG5vZGUgZm9yIGEgcXVlcnkuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfREJfQ0FTU0FORFJBX0NPT1JESU5BVE9SX0RDIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19EQl9DQVNTQU5EUkFfQ09PUkRJTkFUT1JfREMgPSBUTVBfREJfQ0FTU0FORFJBX0NPT1JESU5BVE9SX0RDO1xuLyoqXG4gKiBUaGUgW0hCYXNlIG5hbWVzcGFjZV0oaHR0cHM6Ly9oYmFzZS5hcGFjaGUub3JnL2Jvb2suaHRtbCNfbmFtZXNwYWNlKSBiZWluZyBhY2Nlc3NlZC4gVG8gYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBnZW5lcmljIGBkYi5uYW1lYCBhdHRyaWJ1dGUuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfREJfTkFNRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfREJfSEJBU0VfTkFNRVNQQUNFID0gVE1QX0RCX0hCQVNFX05BTUVTUEFDRTtcbi8qKlxuICogVGhlIGluZGV4IG9mIHRoZSBkYXRhYmFzZSBiZWluZyBhY2Nlc3NlZCBhcyB1c2VkIGluIHRoZSBbYFNFTEVDVGAgY29tbWFuZF0oaHR0cHM6Ly9yZWRpcy5pby9jb21tYW5kcy9zZWxlY3QpLCBwcm92aWRlZCBhcyBhbiBpbnRlZ2VyLiBUbyBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGdlbmVyaWMgYGRiLm5hbWVgIGF0dHJpYnV0ZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9EQl9SRURJU19EQVRBQkFTRV9JTkRFWCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfREJfUkVESVNfREFUQUJBU0VfSU5ERVggPSBUTVBfREJfUkVESVNfREFUQUJBU0VfSU5ERVg7XG4vKipcbiAqIFRoZSBjb2xsZWN0aW9uIGJlaW5nIGFjY2Vzc2VkIHdpdGhpbiB0aGUgZGF0YWJhc2Ugc3RhdGVkIGluIGBkYi5uYW1lYC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9EQl9NT05HT0RCX0NPTExFQ1RJT04gaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0RCX01PTkdPREJfQ09MTEVDVElPTiA9IFRNUF9EQl9NT05HT0RCX0NPTExFQ1RJT047XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBwcmltYXJ5IHRhYmxlIHRoYXQgdGhlIG9wZXJhdGlvbiBpcyBhY3RpbmcgdXBvbiwgaW5jbHVkaW5nIHRoZSBzY2hlbWEgbmFtZSAoaWYgYXBwbGljYWJsZSkuXG4gKlxuICogTm90ZTogSXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIGF0dGVtcHQgYW55IGNsaWVudC1zaWRlIHBhcnNpbmcgb2YgYGRiLnN0YXRlbWVudGAganVzdCB0byBnZXQgdGhpcyBwcm9wZXJ0eSwgYnV0IGl0IHNob3VsZCBiZSBzZXQgaWYgaXQgaXMgcHJvdmlkZWQgYnkgdGhlIGxpYnJhcnkgYmVpbmcgaW5zdHJ1bWVudGVkLiBJZiB0aGUgb3BlcmF0aW9uIGlzIGFjdGluZyB1cG9uIGFuIGFub255bW91cyB0YWJsZSwgb3IgbW9yZSB0aGFuIG9uZSB0YWJsZSwgdGhpcyB2YWx1ZSBNVVNUIE5PVCBiZSBzZXQuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfREJfU1FMX1RBQkxFIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19EQl9TUUxfVEFCTEUgPSBUTVBfREJfU1FMX1RBQkxFO1xuLyoqXG4gKiBUaGUgdHlwZSBvZiB0aGUgZXhjZXB0aW9uIChpdHMgZnVsbHktcXVhbGlmaWVkIGNsYXNzIG5hbWUsIGlmIGFwcGxpY2FibGUpLiBUaGUgZHluYW1pYyB0eXBlIG9mIHRoZSBleGNlcHRpb24gc2hvdWxkIGJlIHByZWZlcnJlZCBvdmVyIHRoZSBzdGF0aWMgdHlwZSBpbiBsYW5ndWFnZXMgdGhhdCBzdXBwb3J0IGl0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0VYQ0VQVElPTl9UWVBFLlxuICovXG52YXIgU0VNQVRUUlNfRVhDRVBUSU9OX1RZUEUgPSBUTVBfRVhDRVBUSU9OX1RZUEU7XG4vKipcbiAqIFRoZSBleGNlcHRpb24gbWVzc2FnZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9FWENFUFRJT05fTUVTU0FHRS5cbiAqL1xudmFyIFNFTUFUVFJTX0VYQ0VQVElPTl9NRVNTQUdFID0gVE1QX0VYQ0VQVElPTl9NRVNTQUdFO1xuLyoqXG4gKiBBIHN0YWNrdHJhY2UgYXMgYSBzdHJpbmcgaW4gdGhlIG5hdHVyYWwgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBsYW5ndWFnZSBydW50aW1lLiBUaGUgcmVwcmVzZW50YXRpb24gaXMgdG8gYmUgZGV0ZXJtaW5lZCBhbmQgZG9jdW1lbnRlZCBieSBlYWNoIGxhbmd1YWdlIFNJRy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9FWENFUFRJT05fU1RBQ0tUUkFDRS5cbiAqL1xudmFyIFNFTUFUVFJTX0VYQ0VQVElPTl9TVEFDS1RSQUNFID0gVE1QX0VYQ0VQVElPTl9TVEFDS1RSQUNFO1xuLyoqXG4qIFNIT1VMRCBiZSBzZXQgdG8gdHJ1ZSBpZiB0aGUgZXhjZXB0aW9uIGV2ZW50IGlzIHJlY29yZGVkIGF0IGEgcG9pbnQgd2hlcmUgaXQgaXMga25vd24gdGhhdCB0aGUgZXhjZXB0aW9uIGlzIGVzY2FwaW5nIHRoZSBzY29wZSBvZiB0aGUgc3Bhbi5cbipcbiogTm90ZTogQW4gZXhjZXB0aW9uIGlzIGNvbnNpZGVyZWQgdG8gaGF2ZSBlc2NhcGVkIChvciBsZWZ0KSB0aGUgc2NvcGUgb2YgYSBzcGFuLFxuaWYgdGhhdCBzcGFuIGlzIGVuZGVkIHdoaWxlIHRoZSBleGNlcHRpb24gaXMgc3RpbGwgbG9naWNhbGx5ICYjMzQ7aW4gZmxpZ2h0JiMzNDsuXG5UaGlzIG1heSBiZSBhY3R1YWxseSAmIzM0O2luIGZsaWdodCYjMzQ7IGluIHNvbWUgbGFuZ3VhZ2VzIChlLmcuIGlmIHRoZSBleGNlcHRpb25cbmlzIHBhc3NlZCB0byBhIENvbnRleHQgbWFuYWdlciYjMzk7cyBgX19leGl0X19gIG1ldGhvZCBpbiBQeXRob24pIGJ1dCB3aWxsXG51c3VhbGx5IGJlIGNhdWdodCBhdCB0aGUgcG9pbnQgb2YgcmVjb3JkaW5nIHRoZSBleGNlcHRpb24gaW4gbW9zdCBsYW5ndWFnZXMuXG5cbkl0IGlzIHVzdWFsbHkgbm90IHBvc3NpYmxlIHRvIGRldGVybWluZSBhdCB0aGUgcG9pbnQgd2hlcmUgYW4gZXhjZXB0aW9uIGlzIHRocm93blxud2hldGhlciBpdCB3aWxsIGVzY2FwZSB0aGUgc2NvcGUgb2YgYSBzcGFuLlxuSG93ZXZlciwgaXQgaXMgdHJpdmlhbCB0byBrbm93IHRoYXQgYW4gZXhjZXB0aW9uXG53aWxsIGVzY2FwZSwgaWYgb25lIGNoZWNrcyBmb3IgYW4gYWN0aXZlIGV4Y2VwdGlvbiBqdXN0IGJlZm9yZSBlbmRpbmcgdGhlIHNwYW4sXG5hcyBkb25lIGluIHRoZSBbZXhhbXBsZSBhYm92ZV0oI2V4Y2VwdGlvbi1lbmQtZXhhbXBsZSkuXG5cbkl0IGZvbGxvd3MgdGhhdCBhbiBleGNlcHRpb24gbWF5IHN0aWxsIGVzY2FwZSB0aGUgc2NvcGUgb2YgdGhlIHNwYW5cbmV2ZW4gaWYgdGhlIGBleGNlcHRpb24uZXNjYXBlZGAgYXR0cmlidXRlIHdhcyBub3Qgc2V0IG9yIHNldCB0byBmYWxzZSxcbnNpbmNlIHRoZSBldmVudCBtaWdodCBoYXZlIGJlZW4gcmVjb3JkZWQgYXQgYSB0aW1lIHdoZXJlIGl0IHdhcyBub3RcbmNsZWFyIHdoZXRoZXIgdGhlIGV4Y2VwdGlvbiB3aWxsIGVzY2FwZS5cbipcbiogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfRVhDRVBUSU9OX0VTQ0FQRUQuXG4qL1xudmFyIFNFTUFUVFJTX0VYQ0VQVElPTl9FU0NBUEVEID0gVE1QX0VYQ0VQVElPTl9FU0NBUEVEO1xuLyoqXG4gKiBUeXBlIG9mIHRoZSB0cmlnZ2VyIG9uIHdoaWNoIHRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9GQUFTX1RSSUdHRVIgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0ZBQVNfVFJJR0dFUiA9IFRNUF9GQUFTX1RSSUdHRVI7XG4vKipcbiAqIFRoZSBleGVjdXRpb24gSUQgb2YgdGhlIGN1cnJlbnQgZnVuY3Rpb24gZXhlY3V0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0ZBQVNfSU5WT0NBVElPTl9JRCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfRkFBU19FWEVDVVRJT04gPSBUTVBfRkFBU19FWEVDVVRJT047XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBzb3VyY2Ugb24gd2hpY2ggdGhlIHRyaWdnZXJpbmcgb3BlcmF0aW9uIHdhcyBwZXJmb3JtZWQuIEZvciBleGFtcGxlLCBpbiBDbG91ZCBTdG9yYWdlIG9yIFMzIGNvcnJlc3BvbmRzIHRvIHRoZSBidWNrZXQgbmFtZSwgYW5kIGluIENvc21vcyBEQiB0byB0aGUgZGF0YWJhc2UgbmFtZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9GQUFTX0RPQ1VNRU5UX0NPTExFQ1RJT04gaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0ZBQVNfRE9DVU1FTlRfQ09MTEVDVElPTiA9IFRNUF9GQUFTX0RPQ1VNRU5UX0NPTExFQ1RJT047XG4vKipcbiAqIERlc2NyaWJlcyB0aGUgdHlwZSBvZiB0aGUgb3BlcmF0aW9uIHRoYXQgd2FzIHBlcmZvcm1lZCBvbiB0aGUgZGF0YS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9GQUFTX0RPQ1VNRU5UX09QRVJBVElPTiBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfRkFBU19ET0NVTUVOVF9PUEVSQVRJT04gPSBUTVBfRkFBU19ET0NVTUVOVF9PUEVSQVRJT047XG4vKipcbiAqIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHRpbWUgd2hlbiB0aGUgZGF0YSB3YXMgYWNjZXNzZWQgaW4gdGhlIFtJU08gODYwMV0oaHR0cHM6Ly93d3cuaXNvLm9yZy9pc28tODYwMS1kYXRlLWFuZC10aW1lLWZvcm1hdC5odG1sKSBmb3JtYXQgZXhwcmVzc2VkIGluIFtVVENdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi9OT1RFLWRhdGV0aW1lKS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9GQUFTX0RPQ1VNRU5UX1RJTUUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0ZBQVNfRE9DVU1FTlRfVElNRSA9IFRNUF9GQUFTX0RPQ1VNRU5UX1RJTUU7XG4vKipcbiAqIFRoZSBkb2N1bWVudCBuYW1lL3RhYmxlIHN1YmplY3RlZCB0byB0aGUgb3BlcmF0aW9uLiBGb3IgZXhhbXBsZSwgaW4gQ2xvdWQgU3RvcmFnZSBvciBTMyBpcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSwgYW5kIGluIENvc21vcyBEQiB0aGUgdGFibGUgbmFtZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9GQUFTX0RPQ1VNRU5UX05BTUUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0ZBQVNfRE9DVU1FTlRfTkFNRSA9IFRNUF9GQUFTX0RPQ1VNRU5UX05BTUU7XG4vKipcbiAqIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGZ1bmN0aW9uIGludm9jYXRpb24gdGltZSBpbiB0aGUgW0lTTyA4NjAxXShodHRwczovL3d3dy5pc28ub3JnL2lzby04NjAxLWRhdGUtYW5kLXRpbWUtZm9ybWF0Lmh0bWwpIGZvcm1hdCBleHByZXNzZWQgaW4gW1VUQ10oaHR0cHM6Ly93d3cudzMub3JnL1RSL05PVEUtZGF0ZXRpbWUpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0ZBQVNfVElNRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfRkFBU19USU1FID0gVE1QX0ZBQVNfVElNRTtcbi8qKlxuICogQSBzdHJpbmcgY29udGFpbmluZyB0aGUgc2NoZWR1bGUgcGVyaW9kIGFzIFtDcm9uIEV4cHJlc3Npb25dKGh0dHBzOi8vZG9jcy5vcmFjbGUuY29tL2NkL0UxMjA1OF8wMS9kb2MvZG9jLjEwMTQvZTEyMDMwL2Nyb25fZXhwcmVzc2lvbnMuaHRtKS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9GQUFTX0NST04gaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0ZBQVNfQ1JPTiA9IFRNUF9GQUFTX0NST047XG4vKipcbiAqIEEgYm9vbGVhbiB0aGF0IGlzIHRydWUgaWYgdGhlIHNlcnZlcmxlc3MgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgZm9yIHRoZSBmaXJzdCB0aW1lIChha2EgY29sZC1zdGFydCkuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfRkFBU19DT0xEU1RBUlQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0ZBQVNfQ09MRFNUQVJUID0gVE1QX0ZBQVNfQ09MRFNUQVJUO1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgaW52b2tlZCBmdW5jdGlvbi5cbiAqXG4gKiBOb3RlOiBTSE9VTEQgYmUgZXF1YWwgdG8gdGhlIGBmYWFzLm5hbWVgIHJlc291cmNlIGF0dHJpYnV0ZSBvZiB0aGUgaW52b2tlZCBmdW5jdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9GQUFTX0lOVk9LRURfTkFNRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfRkFBU19JTlZPS0VEX05BTUUgPSBUTVBfRkFBU19JTlZPS0VEX05BTUU7XG4vKipcbiAqIFRoZSBjbG91ZCBwcm92aWRlciBvZiB0aGUgaW52b2tlZCBmdW5jdGlvbi5cbiAqXG4gKiBOb3RlOiBTSE9VTEQgYmUgZXF1YWwgdG8gdGhlIGBjbG91ZC5wcm92aWRlcmAgcmVzb3VyY2UgYXR0cmlidXRlIG9mIHRoZSBpbnZva2VkIGZ1bmN0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0ZBQVNfSU5WT0tFRF9QUk9WSURFUiBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfRkFBU19JTlZPS0VEX1BST1ZJREVSID0gVE1QX0ZBQVNfSU5WT0tFRF9QUk9WSURFUjtcbi8qKlxuICogVGhlIGNsb3VkIHJlZ2lvbiBvZiB0aGUgaW52b2tlZCBmdW5jdGlvbi5cbiAqXG4gKiBOb3RlOiBTSE9VTEQgYmUgZXF1YWwgdG8gdGhlIGBjbG91ZC5yZWdpb25gIHJlc291cmNlIGF0dHJpYnV0ZSBvZiB0aGUgaW52b2tlZCBmdW5jdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9GQUFTX0lOVk9LRURfUkVHSU9OIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19GQUFTX0lOVk9LRURfUkVHSU9OID0gVE1QX0ZBQVNfSU5WT0tFRF9SRUdJT047XG4vKipcbiAqIFRyYW5zcG9ydCBwcm90b2NvbCB1c2VkLiBTZWUgbm90ZSBiZWxvdy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9ORVRfVFJBTlNQT1JUIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19ORVRfVFJBTlNQT1JUID0gVE1QX05FVF9UUkFOU1BPUlQ7XG4vKipcbiAqIFJlbW90ZSBhZGRyZXNzIG9mIHRoZSBwZWVyIChkb3R0ZWQgZGVjaW1hbCBmb3IgSVB2NCBvciBbUkZDNTk1Ml0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzU5NTIpIGZvciBJUHY2KS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9ORVRfUEVFUl9JUCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfTkVUX1BFRVJfSVAgPSBUTVBfTkVUX1BFRVJfSVA7XG4vKipcbiAqIFJlbW90ZSBwb3J0IG51bWJlci5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9ORVRfUEVFUl9QT1JUIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19ORVRfUEVFUl9QT1JUID0gVE1QX05FVF9QRUVSX1BPUlQ7XG4vKipcbiAqIFJlbW90ZSBob3N0bmFtZSBvciBzaW1pbGFyLCBzZWUgbm90ZSBiZWxvdy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9ORVRfUEVFUl9OQU1FIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19ORVRfUEVFUl9OQU1FID0gVE1QX05FVF9QRUVSX05BTUU7XG4vKipcbiAqIExpa2UgYG5ldC5wZWVyLmlwYCBidXQgZm9yIHRoZSBob3N0IElQLiBVc2VmdWwgaW4gY2FzZSBvZiBhIG11bHRpLUlQIGhvc3QuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTkVUX0hPU1RfSVAgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX05FVF9IT1NUX0lQID0gVE1QX05FVF9IT1NUX0lQO1xuLyoqXG4gKiBMaWtlIGBuZXQucGVlci5wb3J0YCBidXQgZm9yIHRoZSBob3N0IHBvcnQuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTkVUX0hPU1RfUE9SVCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfTkVUX0hPU1RfUE9SVCA9IFRNUF9ORVRfSE9TVF9QT1JUO1xuLyoqXG4gKiBMb2NhbCBob3N0bmFtZSBvciBzaW1pbGFyLCBzZWUgbm90ZSBiZWxvdy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9ORVRfSE9TVF9OQU1FIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19ORVRfSE9TVF9OQU1FID0gVE1QX05FVF9IT1NUX05BTUU7XG4vKipcbiAqIFRoZSBpbnRlcm5ldCBjb25uZWN0aW9uIHR5cGUgY3VycmVudGx5IGJlaW5nIHVzZWQgYnkgdGhlIGhvc3QuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTkVUV09SS19DT05ORUNUSU9OX1RZUEUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX05FVF9IT1NUX0NPTk5FQ1RJT05fVFlQRSA9IFRNUF9ORVRfSE9TVF9DT05ORUNUSU9OX1RZUEU7XG4vKipcbiAqIFRoaXMgZGVzY3JpYmVzIG1vcmUgZGV0YWlscyByZWdhcmRpbmcgdGhlIGNvbm5lY3Rpb24udHlwZS4gSXQgbWF5IGJlIHRoZSB0eXBlIG9mIGNlbGwgdGVjaG5vbG9neSBjb25uZWN0aW9uLCBidXQgaXQgY291bGQgYmUgdXNlZCBmb3IgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGEgd2lmaSBjb25uZWN0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX05FVFdPUktfQ09OTkVDVElPTl9TVUJUWVBFIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19ORVRfSE9TVF9DT05ORUNUSU9OX1NVQlRZUEUgPSBUTVBfTkVUX0hPU1RfQ09OTkVDVElPTl9TVUJUWVBFO1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgbW9iaWxlIGNhcnJpZXIuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTkVUV09SS19DQVJSSUVSX05BTUUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX05FVF9IT1NUX0NBUlJJRVJfTkFNRSA9IFRNUF9ORVRfSE9TVF9DQVJSSUVSX05BTUU7XG4vKipcbiAqIFRoZSBtb2JpbGUgY2FycmllciBjb3VudHJ5IGNvZGUuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTkVUV09SS19DQVJSSUVSX01DQyBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfTkVUX0hPU1RfQ0FSUklFUl9NQ0MgPSBUTVBfTkVUX0hPU1RfQ0FSUklFUl9NQ0M7XG4vKipcbiAqIFRoZSBtb2JpbGUgY2FycmllciBuZXR3b3JrIGNvZGUuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTkVUV09SS19DQVJSSUVSX01OQyBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfTkVUX0hPU1RfQ0FSUklFUl9NTkMgPSBUTVBfTkVUX0hPU1RfQ0FSUklFUl9NTkM7XG4vKipcbiAqIFRoZSBJU08gMzE2Ni0xIGFscGhhLTIgMi1jaGFyYWN0ZXIgY291bnRyeSBjb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgbW9iaWxlIGNhcnJpZXIgbmV0d29yay5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9ORVRXT1JLX0NBUlJJRVJfSUNDIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19ORVRfSE9TVF9DQVJSSUVSX0lDQyA9IFRNUF9ORVRfSE9TVF9DQVJSSUVSX0lDQztcbi8qKlxuICogVGhlIFtgc2VydmljZS5uYW1lYF0oLi4vLi4vcmVzb3VyY2Uvc2VtYW50aWNfY29udmVudGlvbnMvUkVBRE1FLm1kI3NlcnZpY2UpIG9mIHRoZSByZW1vdGUgc2VydmljZS4gU0hPVUxEIGJlIGVxdWFsIHRvIHRoZSBhY3R1YWwgYHNlcnZpY2UubmFtZWAgcmVzb3VyY2UgYXR0cmlidXRlIG9mIHRoZSByZW1vdGUgc2VydmljZSBpZiBhbnkuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfUEVFUl9TRVJWSUNFIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19QRUVSX1NFUlZJQ0UgPSBUTVBfUEVFUl9TRVJWSUNFO1xuLyoqXG4gKiBVc2VybmFtZSBvciBjbGllbnRfaWQgZXh0cmFjdGVkIGZyb20gdGhlIGFjY2VzcyB0b2tlbiBvciBbQXV0aG9yaXphdGlvbl0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzUjc2VjdGlvbi00LjIpIGhlYWRlciBpbiB0aGUgaW5ib3VuZCByZXF1ZXN0IGZyb20gb3V0c2lkZSB0aGUgc3lzdGVtLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0VORFVTRVJfSUQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0VORFVTRVJfSUQgPSBUTVBfRU5EVVNFUl9JRDtcbi8qKlxuICogQWN0dWFsL2Fzc3VtZWQgcm9sZSB0aGUgY2xpZW50IGlzIG1ha2luZyB0aGUgcmVxdWVzdCB1bmRlciBleHRyYWN0ZWQgZnJvbSB0b2tlbiBvciBhcHBsaWNhdGlvbiBzZWN1cml0eSBjb250ZXh0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0VORFVTRVJfUk9MRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfRU5EVVNFUl9ST0xFID0gVE1QX0VORFVTRVJfUk9MRTtcbi8qKlxuICogU2NvcGVzIG9yIGdyYW50ZWQgYXV0aG9yaXRpZXMgdGhlIGNsaWVudCBjdXJyZW50bHkgcG9zc2Vzc2VzIGV4dHJhY3RlZCBmcm9tIHRva2VuIG9yIGFwcGxpY2F0aW9uIHNlY3VyaXR5IGNvbnRleHQuIFRoZSB2YWx1ZSB3b3VsZCBjb21lIGZyb20gdGhlIHNjb3BlIGFzc29jaWF0ZWQgd2l0aCBhbiBbT0F1dGggMi4wIEFjY2VzcyBUb2tlbl0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY3NDkjc2VjdGlvbi0zLjMpIG9yIGFuIGF0dHJpYnV0ZSB2YWx1ZSBpbiBhIFtTQU1MIDIuMCBBc3NlcnRpb25dKGh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3NlY3VyaXR5L3NhbWwvUG9zdDIuMC9zc3RjLXNhbWwtdGVjaC1vdmVydmlldy0yLjAuaHRtbCkuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfRU5EVVNFUl9TQ09QRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfRU5EVVNFUl9TQ09QRSA9IFRNUF9FTkRVU0VSX1NDT1BFO1xuLyoqXG4gKiBDdXJyZW50ICYjMzQ7bWFuYWdlZCYjMzQ7IHRocmVhZCBJRCAoYXMgb3Bwb3NlZCB0byBPUyB0aHJlYWQgSUQpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX1RIUkVBRF9JRCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfVEhSRUFEX0lEID0gVE1QX1RIUkVBRF9JRDtcbi8qKlxuICogQ3VycmVudCB0aHJlYWQgbmFtZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9USFJFQURfTkFNRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfVEhSRUFEX05BTUUgPSBUTVBfVEhSRUFEX05BTUU7XG4vKipcbiAqIFRoZSBtZXRob2Qgb3IgZnVuY3Rpb24gbmFtZSwgb3IgZXF1aXZhbGVudCAodXN1YWxseSByaWdodG1vc3QgcGFydCBvZiB0aGUgY29kZSB1bml0JiMzOTtzIG5hbWUpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0NPREVfRlVOQ1RJT04gaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0NPREVfRlVOQ1RJT04gPSBUTVBfQ09ERV9GVU5DVElPTjtcbi8qKlxuICogVGhlICYjMzQ7bmFtZXNwYWNlJiMzNDsgd2l0aGluIHdoaWNoIGBjb2RlLmZ1bmN0aW9uYCBpcyBkZWZpbmVkLiBVc3VhbGx5IHRoZSBxdWFsaWZpZWQgY2xhc3Mgb3IgbW9kdWxlIG5hbWUsIHN1Y2ggdGhhdCBgY29kZS5uYW1lc3BhY2VgICsgc29tZSBzZXBhcmF0b3IgKyBgY29kZS5mdW5jdGlvbmAgZm9ybSBhIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29kZSB1bml0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0NPREVfTkFNRVNQQUNFIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19DT0RFX05BTUVTUEFDRSA9IFRNUF9DT0RFX05BTUVTUEFDRTtcbi8qKlxuICogVGhlIHNvdXJjZSBjb2RlIGZpbGUgbmFtZSB0aGF0IGlkZW50aWZpZXMgdGhlIGNvZGUgdW5pdCBhcyB1bmlxdWVseSBhcyBwb3NzaWJsZSAocHJlZmVyYWJseSBhbiBhYnNvbHV0ZSBmaWxlIHBhdGgpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0NPREVfRklMRVBBVEggaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0NPREVfRklMRVBBVEggPSBUTVBfQ09ERV9GSUxFUEFUSDtcbi8qKlxuICogVGhlIGxpbmUgbnVtYmVyIGluIGBjb2RlLmZpbGVwYXRoYCBiZXN0IHJlcHJlc2VudGluZyB0aGUgb3BlcmF0aW9uLiBJdCBTSE9VTEQgcG9pbnQgd2l0aGluIHRoZSBjb2RlIHVuaXQgbmFtZWQgaW4gYGNvZGUuZnVuY3Rpb25gLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0NPREVfTElORU5PIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19DT0RFX0xJTkVOTyA9IFRNUF9DT0RFX0xJTkVOTztcbi8qKlxuICogSFRUUCByZXF1ZXN0IG1ldGhvZC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9IVFRQX01FVEhPRCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfSFRUUF9NRVRIT0QgPSBUTVBfSFRUUF9NRVRIT0Q7XG4vKipcbiAqIEZ1bGwgSFRUUCByZXF1ZXN0IFVSTCBpbiB0aGUgZm9ybSBgc2NoZW1lOi8vaG9zdFs6cG9ydF0vcGF0aD9xdWVyeVsjZnJhZ21lbnRdYC4gVXN1YWxseSB0aGUgZnJhZ21lbnQgaXMgbm90IHRyYW5zbWl0dGVkIG92ZXIgSFRUUCwgYnV0IGlmIGl0IGlzIGtub3duLCBpdCBzaG91bGQgYmUgaW5jbHVkZWQgbmV2ZXJ0aGVsZXNzLlxuICpcbiAqIE5vdGU6IGBodHRwLnVybGAgTVVTVCBOT1QgY29udGFpbiBjcmVkZW50aWFscyBwYXNzZWQgdmlhIFVSTCBpbiBmb3JtIG9mIGBodHRwczovL3VzZXJuYW1lOnBhc3N3b3JkQHd3dy5leGFtcGxlLmNvbS9gLiBJbiBzdWNoIGNhc2UgdGhlIGF0dHJpYnV0ZSYjMzk7cyB2YWx1ZSBzaG91bGQgYmUgYGh0dHBzOi8vd3d3LmV4YW1wbGUuY29tL2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfSFRUUF9VUkwgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0hUVFBfVVJMID0gVE1QX0hUVFBfVVJMO1xuLyoqXG4gKiBUaGUgZnVsbCByZXF1ZXN0IHRhcmdldCBhcyBwYXNzZWQgaW4gYSBIVFRQIHJlcXVlc3QgbGluZSBvciBlcXVpdmFsZW50LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0hUVFBfVEFSR0VUIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19IVFRQX1RBUkdFVCA9IFRNUF9IVFRQX1RBUkdFVDtcbi8qKlxuICogVGhlIHZhbHVlIG9mIHRoZSBbSFRUUCBob3N0IGhlYWRlcl0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzAjc2VjdGlvbi01LjQpLiBBbiBlbXB0eSBIb3N0IGhlYWRlciBzaG91bGQgYWxzbyBiZSByZXBvcnRlZCwgc2VlIG5vdGUuXG4gKlxuICogTm90ZTogV2hlbiB0aGUgaGVhZGVyIGlzIHByZXNlbnQgYnV0IGVtcHR5IHRoZSBhdHRyaWJ1dGUgU0hPVUxEIGJlIHNldCB0byB0aGUgZW1wdHkgc3RyaW5nLiBOb3RlIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHNpdHVhdGlvbiB0aGF0IGlzIGV4cGVjdGVkIGluIGNlcnRhaW4gY2FzZXMsIGFjY29yZGluZyB0aGUgYWZvcmVtZW50aW9uZWQgW3NlY3Rpb24gb2YgUkZDIDcyMzBdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMwI3NlY3Rpb24tNS40KS4gV2hlbiB0aGUgaGVhZGVyIGlzIG5vdCBzZXQgdGhlIGF0dHJpYnV0ZSBNVVNUIE5PVCBiZSBzZXQuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfSFRUUF9IT1NUIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19IVFRQX0hPU1QgPSBUTVBfSFRUUF9IT1NUO1xuLyoqXG4gKiBUaGUgVVJJIHNjaGVtZSBpZGVudGlmeWluZyB0aGUgdXNlZCBwcm90b2NvbC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9IVFRQX1NDSEVNRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfSFRUUF9TQ0hFTUUgPSBUTVBfSFRUUF9TQ0hFTUU7XG4vKipcbiAqIFtIVFRQIHJlc3BvbnNlIHN0YXR1cyBjb2RlXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0hUVFBfU1RBVFVTX0NPREUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0hUVFBfU1RBVFVTX0NPREUgPSBUTVBfSFRUUF9TVEFUVVNfQ09ERTtcbi8qKlxuICogS2luZCBvZiBIVFRQIHByb3RvY29sIHVzZWQuXG4gKlxuICogTm90ZTogSWYgYG5ldC50cmFuc3BvcnRgIGlzIG5vdCBzcGVjaWZpZWQsIGl0IGNhbiBiZSBhc3N1bWVkIHRvIGJlIGBJUC5UQ1BgIGV4Y2VwdCBpZiBgaHR0cC5mbGF2b3JgIGlzIGBRVUlDYCwgaW4gd2hpY2ggY2FzZSBgSVAuVURQYCBpcyBhc3N1bWVkLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0hUVFBfRkxBVk9SIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19IVFRQX0ZMQVZPUiA9IFRNUF9IVFRQX0ZMQVZPUjtcbi8qKlxuICogVmFsdWUgb2YgdGhlIFtIVFRQIFVzZXItQWdlbnRdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNS41LjMpIGhlYWRlciBzZW50IGJ5IHRoZSBjbGllbnQuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfSFRUUF9VU0VSX0FHRU5UIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19IVFRQX1VTRVJfQUdFTlQgPSBUTVBfSFRUUF9VU0VSX0FHRU5UO1xuLyoqXG4gKiBUaGUgc2l6ZSBvZiB0aGUgcmVxdWVzdCBwYXlsb2FkIGJvZHkgaW4gYnl0ZXMuIFRoaXMgaXMgdGhlIG51bWJlciBvZiBieXRlcyB0cmFuc2ZlcnJlZCBleGNsdWRpbmcgaGVhZGVycyBhbmQgaXMgb2Z0ZW4sIGJ1dCBub3QgYWx3YXlzLCBwcmVzZW50IGFzIHRoZSBbQ29udGVudC1MZW5ndGhdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMwI3NlY3Rpb24tMy4zLjIpIGhlYWRlci4gRm9yIHJlcXVlc3RzIHVzaW5nIHRyYW5zcG9ydCBlbmNvZGluZywgdGhpcyBzaG91bGQgYmUgdGhlIGNvbXByZXNzZWQgc2l6ZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9IVFRQX1JFUVVFU1RfQ09OVEVOVF9MRU5HVEggaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0hUVFBfUkVRVUVTVF9DT05URU5UX0xFTkdUSCA9IFRNUF9IVFRQX1JFUVVFU1RfQ09OVEVOVF9MRU5HVEg7XG4vKipcbiAqIFRoZSBzaXplIG9mIHRoZSB1bmNvbXByZXNzZWQgcmVxdWVzdCBwYXlsb2FkIGJvZHkgYWZ0ZXIgdHJhbnNwb3J0IGRlY29kaW5nLiBOb3Qgc2V0IGlmIHRyYW5zcG9ydCBlbmNvZGluZyBub3QgdXNlZC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9IVFRQX1JFUVVFU1RfQ09OVEVOVF9MRU5HVEhfVU5DT01QUkVTU0VEIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19IVFRQX1JFUVVFU1RfQ09OVEVOVF9MRU5HVEhfVU5DT01QUkVTU0VEID0gVE1QX0hUVFBfUkVRVUVTVF9DT05URU5UX0xFTkdUSF9VTkNPTVBSRVNTRUQ7XG4vKipcbiAqIFRoZSBzaXplIG9mIHRoZSByZXNwb25zZSBwYXlsb2FkIGJvZHkgaW4gYnl0ZXMuIFRoaXMgaXMgdGhlIG51bWJlciBvZiBieXRlcyB0cmFuc2ZlcnJlZCBleGNsdWRpbmcgaGVhZGVycyBhbmQgaXMgb2Z0ZW4sIGJ1dCBub3QgYWx3YXlzLCBwcmVzZW50IGFzIHRoZSBbQ29udGVudC1MZW5ndGhdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMwI3NlY3Rpb24tMy4zLjIpIGhlYWRlci4gRm9yIHJlcXVlc3RzIHVzaW5nIHRyYW5zcG9ydCBlbmNvZGluZywgdGhpcyBzaG91bGQgYmUgdGhlIGNvbXByZXNzZWQgc2l6ZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9IVFRQX1JFU1BPTlNFX0NPTlRFTlRfTEVOR1RIIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19IVFRQX1JFU1BPTlNFX0NPTlRFTlRfTEVOR1RIID0gVE1QX0hUVFBfUkVTUE9OU0VfQ09OVEVOVF9MRU5HVEg7XG4vKipcbiAqIFRoZSBzaXplIG9mIHRoZSB1bmNvbXByZXNzZWQgcmVzcG9uc2UgcGF5bG9hZCBib2R5IGFmdGVyIHRyYW5zcG9ydCBkZWNvZGluZy4gTm90IHNldCBpZiB0cmFuc3BvcnQgZW5jb2Rpbmcgbm90IHVzZWQuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfSFRUUF9SRVNQT05TRV9DT05URU5UX0xFTkdUSF9VTkNPTVBSRVNTRUQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0hUVFBfUkVTUE9OU0VfQ09OVEVOVF9MRU5HVEhfVU5DT01QUkVTU0VEID0gVE1QX0hUVFBfUkVTUE9OU0VfQ09OVEVOVF9MRU5HVEhfVU5DT01QUkVTU0VEO1xuLyoqXG4gKiBUaGUgcHJpbWFyeSBzZXJ2ZXIgbmFtZSBvZiB0aGUgbWF0Y2hlZCB2aXJ0dWFsIGhvc3QuIFRoaXMgc2hvdWxkIGJlIG9idGFpbmVkIHZpYSBjb25maWd1cmF0aW9uLiBJZiBubyBzdWNoIGNvbmZpZ3VyYXRpb24gY2FuIGJlIG9idGFpbmVkLCB0aGlzIGF0dHJpYnV0ZSBNVVNUIE5PVCBiZSBzZXQgKCBgbmV0Lmhvc3QubmFtZWAgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCkuXG4gKlxuICogTm90ZTogYGh0dHAudXJsYCBpcyB1c3VhbGx5IG5vdCByZWFkaWx5IGF2YWlsYWJsZSBvbiB0aGUgc2VydmVyIHNpZGUgYnV0IHdvdWxkIGhhdmUgdG8gYmUgYXNzZW1ibGVkIGluIGEgY3VtYmVyc29tZSBhbmQgc29tZXRpbWVzIGxvc3N5IHByb2Nlc3MgZnJvbSBvdGhlciBpbmZvcm1hdGlvbiAoc2VlIGUuZy4gb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1weXRob24vcHVsbC8xNDgpLiBJdCBpcyB0aHVzIHByZWZlcnJlZCB0byBzdXBwbHkgdGhlIHJhdyBkYXRhIHRoYXQgaXMgYXZhaWxhYmxlLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0hUVFBfU0VSVkVSX05BTUUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0hUVFBfU0VSVkVSX05BTUUgPSBUTVBfSFRUUF9TRVJWRVJfTkFNRTtcbi8qKlxuICogVGhlIG1hdGNoZWQgcm91dGUgKHBhdGggdGVtcGxhdGUpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0hUVFBfUk9VVEUuXG4gKi9cbnZhciBTRU1BVFRSU19IVFRQX1JPVVRFID0gVE1QX0hUVFBfUk9VVEU7XG4vKipcbiogVGhlIElQIGFkZHJlc3Mgb2YgdGhlIG9yaWdpbmFsIGNsaWVudCBiZWhpbmQgYWxsIHByb3hpZXMsIGlmIGtub3duIChlLmcuIGZyb20gW1gtRm9yd2FyZGVkLUZvcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1gtRm9yd2FyZGVkLUZvcikpLlxuKlxuKiBOb3RlOiBUaGlzIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBhcyBgbmV0LnBlZXIuaXBgLCB3aGljaCB3b3VsZFxuaWRlbnRpZnkgdGhlIG5ldHdvcmstbGV2ZWwgcGVlciwgd2hpY2ggbWF5IGJlIGEgcHJveHkuXG5cblRoaXMgYXR0cmlidXRlIHNob3VsZCBiZSBzZXQgd2hlbiBhIHNvdXJjZSBvZiBpbmZvcm1hdGlvbiBkaWZmZXJlbnRcbmZyb20gdGhlIG9uZSB1c2VkIGZvciBgbmV0LnBlZXIuaXBgLCBpcyBhdmFpbGFibGUgZXZlbiBpZiB0aGF0IG90aGVyXG5zb3VyY2UganVzdCBjb25maXJtcyB0aGUgc2FtZSB2YWx1ZSBhcyBgbmV0LnBlZXIuaXBgLlxuUmF0aW9uYWxlOiBGb3IgYG5ldC5wZWVyLmlwYCwgb25lIHR5cGljYWxseSBkb2VzIG5vdCBrbm93IGlmIGl0XG5jb21lcyBmcm9tIGEgcHJveHksIHJldmVyc2UgcHJveHksIG9yIHRoZSBhY3R1YWwgY2xpZW50LiBTZXR0aW5nXG5gaHR0cC5jbGllbnRfaXBgIHdoZW4gaXQmIzM5O3MgdGhlIHNhbWUgYXMgYG5ldC5wZWVyLmlwYCBtZWFucyB0aGF0XG5vbmUgaXMgYXQgbGVhc3Qgc29tZXdoYXQgY29uZmlkZW50IHRoYXQgdGhlIGFkZHJlc3MgaXMgbm90IHRoYXQgb2ZcbnRoZSBjbG9zZXN0IHByb3h5LlxuKlxuKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9IVFRQX0NMSUVOVF9JUCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuKi9cbnZhciBTRU1BVFRSU19IVFRQX0NMSUVOVF9JUCA9IFRNUF9IVFRQX0NMSUVOVF9JUDtcbi8qKlxuICogVGhlIGtleXMgaW4gdGhlIGBSZXF1ZXN0SXRlbXNgIG9iamVjdCBmaWVsZC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9BV1NfRFlOQU1PREJfVEFCTEVfTkFNRVMgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9UQUJMRV9OQU1FUyA9IFRNUF9BV1NfRFlOQU1PREJfVEFCTEVfTkFNRVM7XG4vKipcbiAqIFRoZSBKU09OLXNlcmlhbGl6ZWQgdmFsdWUgb2YgZWFjaCBpdGVtIGluIHRoZSBgQ29uc3VtZWRDYXBhY2l0eWAgcmVzcG9uc2UgZmllbGQuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfQVdTX0RZTkFNT0RCX0NPTlNVTUVEX0NBUEFDSVRZIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19BV1NfRFlOQU1PREJfQ09OU1VNRURfQ0FQQUNJVFkgPSBUTVBfQVdTX0RZTkFNT0RCX0NPTlNVTUVEX0NBUEFDSVRZO1xuLyoqXG4gKiBUaGUgSlNPTi1zZXJpYWxpemVkIHZhbHVlIG9mIHRoZSBgSXRlbUNvbGxlY3Rpb25NZXRyaWNzYCByZXNwb25zZSBmaWVsZC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9BV1NfRFlOQU1PREJfSVRFTV9DT0xMRUNUSU9OX01FVFJJQ1MgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9JVEVNX0NPTExFQ1RJT05fTUVUUklDUyA9IFRNUF9BV1NfRFlOQU1PREJfSVRFTV9DT0xMRUNUSU9OX01FVFJJQ1M7XG4vKipcbiAqIFRoZSB2YWx1ZSBvZiB0aGUgYFByb3Zpc2lvbmVkVGhyb3VnaHB1dC5SZWFkQ2FwYWNpdHlVbml0c2AgcmVxdWVzdCBwYXJhbWV0ZXIuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfQVdTX0RZTkFNT0RCX1BST1ZJU0lPTkVEX1JFQURfQ0FQQUNJVFkgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9QUk9WSVNJT05FRF9SRUFEX0NBUEFDSVRZID0gVE1QX0FXU19EWU5BTU9EQl9QUk9WSVNJT05FRF9SRUFEX0NBUEFDSVRZO1xuLyoqXG4gKiBUaGUgdmFsdWUgb2YgdGhlIGBQcm92aXNpb25lZFRocm91Z2hwdXQuV3JpdGVDYXBhY2l0eVVuaXRzYCByZXF1ZXN0IHBhcmFtZXRlci5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9BV1NfRFlOQU1PREJfUFJPVklTSU9ORURfV1JJVEVfQ0FQQUNJVFkgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9QUk9WSVNJT05FRF9XUklURV9DQVBBQ0lUWSA9IFRNUF9BV1NfRFlOQU1PREJfUFJPVklTSU9ORURfV1JJVEVfQ0FQQUNJVFk7XG4vKipcbiAqIFRoZSB2YWx1ZSBvZiB0aGUgYENvbnNpc3RlbnRSZWFkYCByZXF1ZXN0IHBhcmFtZXRlci5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9BV1NfRFlOQU1PREJfQ09OU0lTVEVOVF9SRUFEIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19BV1NfRFlOQU1PREJfQ09OU0lTVEVOVF9SRUFEID0gVE1QX0FXU19EWU5BTU9EQl9DT05TSVNURU5UX1JFQUQ7XG4vKipcbiAqIFRoZSB2YWx1ZSBvZiB0aGUgYFByb2plY3Rpb25FeHByZXNzaW9uYCByZXF1ZXN0IHBhcmFtZXRlci5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9BV1NfRFlOQU1PREJfUFJPSkVDVElPTiBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfQVdTX0RZTkFNT0RCX1BST0pFQ1RJT04gPSBUTVBfQVdTX0RZTkFNT0RCX1BST0pFQ1RJT047XG4vKipcbiAqIFRoZSB2YWx1ZSBvZiB0aGUgYExpbWl0YCByZXF1ZXN0IHBhcmFtZXRlci5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9BV1NfRFlOQU1PREJfTElNSVQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9MSU1JVCA9IFRNUF9BV1NfRFlOQU1PREJfTElNSVQ7XG4vKipcbiAqIFRoZSB2YWx1ZSBvZiB0aGUgYEF0dHJpYnV0ZXNUb0dldGAgcmVxdWVzdCBwYXJhbWV0ZXIuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfQVdTX0RZTkFNT0RCX0FUVFJJQlVURVNfVE9fR0VUIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19BV1NfRFlOQU1PREJfQVRUUklCVVRFU19UT19HRVQgPSBUTVBfQVdTX0RZTkFNT0RCX0FUVFJJQlVURVNfVE9fR0VUO1xuLyoqXG4gKiBUaGUgdmFsdWUgb2YgdGhlIGBJbmRleE5hbWVgIHJlcXVlc3QgcGFyYW1ldGVyLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0FXU19EWU5BTU9EQl9JTkRFWF9OQU1FIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19BV1NfRFlOQU1PREJfSU5ERVhfTkFNRSA9IFRNUF9BV1NfRFlOQU1PREJfSU5ERVhfTkFNRTtcbi8qKlxuICogVGhlIHZhbHVlIG9mIHRoZSBgU2VsZWN0YCByZXF1ZXN0IHBhcmFtZXRlci5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9BV1NfRFlOQU1PREJfU0VMRUNUIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19BV1NfRFlOQU1PREJfU0VMRUNUID0gVE1QX0FXU19EWU5BTU9EQl9TRUxFQ1Q7XG4vKipcbiAqIFRoZSBKU09OLXNlcmlhbGl6ZWQgdmFsdWUgb2YgZWFjaCBpdGVtIG9mIHRoZSBgR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc2AgcmVxdWVzdCBmaWVsZC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9BV1NfRFlOQU1PREJfR0xPQkFMX1NFQ09OREFSWV9JTkRFWEVTIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19BV1NfRFlOQU1PREJfR0xPQkFMX1NFQ09OREFSWV9JTkRFWEVTID0gVE1QX0FXU19EWU5BTU9EQl9HTE9CQUxfU0VDT05EQVJZX0lOREVYRVM7XG4vKipcbiAqIFRoZSBKU09OLXNlcmlhbGl6ZWQgdmFsdWUgb2YgZWFjaCBpdGVtIG9mIHRoZSBgTG9jYWxTZWNvbmRhcnlJbmRleGVzYCByZXF1ZXN0IGZpZWxkLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0FXU19EWU5BTU9EQl9MT0NBTF9TRUNPTkRBUllfSU5ERVhFUyBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0xPQ0FMX1NFQ09OREFSWV9JTkRFWEVTID0gVE1QX0FXU19EWU5BTU9EQl9MT0NBTF9TRUNPTkRBUllfSU5ERVhFUztcbi8qKlxuICogVGhlIHZhbHVlIG9mIHRoZSBgRXhjbHVzaXZlU3RhcnRUYWJsZU5hbWVgIHJlcXVlc3QgcGFyYW1ldGVyLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0FXU19EWU5BTU9EQl9FWENMVVNJVkVfU1RBUlRfVEFCTEUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9FWENMVVNJVkVfU1RBUlRfVEFCTEUgPSBUTVBfQVdTX0RZTkFNT0RCX0VYQ0xVU0lWRV9TVEFSVF9UQUJMRTtcbi8qKlxuICogVGhlIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGBUYWJsZU5hbWVzYCByZXNwb25zZSBwYXJhbWV0ZXIuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfQVdTX0RZTkFNT0RCX1RBQkxFX0NPVU5UIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19BV1NfRFlOQU1PREJfVEFCTEVfQ09VTlQgPSBUTVBfQVdTX0RZTkFNT0RCX1RBQkxFX0NPVU5UO1xuLyoqXG4gKiBUaGUgdmFsdWUgb2YgdGhlIGBTY2FuSW5kZXhGb3J3YXJkYCByZXF1ZXN0IHBhcmFtZXRlci5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9BV1NfRFlOQU1PREJfU0NBTl9GT1JXQVJEIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19BV1NfRFlOQU1PREJfU0NBTl9GT1JXQVJEID0gVE1QX0FXU19EWU5BTU9EQl9TQ0FOX0ZPUldBUkQ7XG4vKipcbiAqIFRoZSB2YWx1ZSBvZiB0aGUgYFNlZ21lbnRgIHJlcXVlc3QgcGFyYW1ldGVyLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0FXU19EWU5BTU9EQl9TRUdNRU5UIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19BV1NfRFlOQU1PREJfU0VHTUVOVCA9IFRNUF9BV1NfRFlOQU1PREJfU0VHTUVOVDtcbi8qKlxuICogVGhlIHZhbHVlIG9mIHRoZSBgVG90YWxTZWdtZW50c2AgcmVxdWVzdCBwYXJhbWV0ZXIuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfQVdTX0RZTkFNT0RCX1RPVEFMX1NFR01FTlRTIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19BV1NfRFlOQU1PREJfVE9UQUxfU0VHTUVOVFMgPSBUTVBfQVdTX0RZTkFNT0RCX1RPVEFMX1NFR01FTlRTO1xuLyoqXG4gKiBUaGUgdmFsdWUgb2YgdGhlIGBDb3VudGAgcmVzcG9uc2UgcGFyYW1ldGVyLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0FXU19EWU5BTU9EQl9DT1VOVCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0NPVU5UID0gVE1QX0FXU19EWU5BTU9EQl9DT1VOVDtcbi8qKlxuICogVGhlIHZhbHVlIG9mIHRoZSBgU2Nhbm5lZENvdW50YCByZXNwb25zZSBwYXJhbWV0ZXIuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfQVdTX0RZTkFNT0RCX1NDQU5ORURfQ09VTlQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9TQ0FOTkVEX0NPVU5UID0gVE1QX0FXU19EWU5BTU9EQl9TQ0FOTkVEX0NPVU5UO1xuLyoqXG4gKiBUaGUgSlNPTi1zZXJpYWxpemVkIHZhbHVlIG9mIGVhY2ggaXRlbSBpbiB0aGUgYEF0dHJpYnV0ZURlZmluaXRpb25zYCByZXF1ZXN0IGZpZWxkLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0FXU19EWU5BTU9EQl9BVFRSSUJVVEVfREVGSU5JVElPTlMgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9BVFRSSUJVVEVfREVGSU5JVElPTlMgPSBUTVBfQVdTX0RZTkFNT0RCX0FUVFJJQlVURV9ERUZJTklUSU9OUztcbi8qKlxuICogVGhlIEpTT04tc2VyaWFsaXplZCB2YWx1ZSBvZiBlYWNoIGl0ZW0gaW4gdGhlIHRoZSBgR2xvYmFsU2Vjb25kYXJ5SW5kZXhVcGRhdGVzYCByZXF1ZXN0IGZpZWxkLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0FXU19EWU5BTU9EQl9HTE9CQUxfU0VDT05EQVJZX0lOREVYX1VQREFURVMgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9HTE9CQUxfU0VDT05EQVJZX0lOREVYX1VQREFURVMgPSBUTVBfQVdTX0RZTkFNT0RCX0dMT0JBTF9TRUNPTkRBUllfSU5ERVhfVVBEQVRFUztcbi8qKlxuICogQSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIG1lc3NhZ2luZyBzeXN0ZW0uXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTUVTU0FHSU5HX1NZU1RFTSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfTUVTU0FHSU5HX1NZU1RFTSA9IFRNUF9NRVNTQUdJTkdfU1lTVEVNO1xuLyoqXG4gKiBUaGUgbWVzc2FnZSBkZXN0aW5hdGlvbiBuYW1lLiBUaGlzIG1pZ2h0IGJlIGVxdWFsIHRvIHRoZSBzcGFuIG5hbWUgYnV0IGlzIHJlcXVpcmVkIG5ldmVydGhlbGVzcy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9NRVNTQUdJTkdfREVTVElOQVRJT05fTkFNRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfTUVTU0FHSU5HX0RFU1RJTkFUSU9OID0gVE1QX01FU1NBR0lOR19ERVNUSU5BVElPTjtcbi8qKlxuICogVGhlIGtpbmQgb2YgbWVzc2FnZSBkZXN0aW5hdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBSZW1vdmVkIGluIHNlbWNvbnYgdjEuMjAuMC5cbiAqL1xudmFyIFNFTUFUVFJTX01FU1NBR0lOR19ERVNUSU5BVElPTl9LSU5EID0gVE1QX01FU1NBR0lOR19ERVNUSU5BVElPTl9LSU5EO1xuLyoqXG4gKiBBIGJvb2xlYW4gdGhhdCBpcyB0cnVlIGlmIHRoZSBtZXNzYWdlIGRlc3RpbmF0aW9uIGlzIHRlbXBvcmFyeS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9NRVNTQUdJTkdfREVTVElOQVRJT05fVEVNUE9SQVJZIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19NRVNTQUdJTkdfVEVNUF9ERVNUSU5BVElPTiA9IFRNUF9NRVNTQUdJTkdfVEVNUF9ERVNUSU5BVElPTjtcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIHRyYW5zcG9ydCBwcm90b2NvbC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9ORVRXT1JLX1BST1RPQ09MX05BTUUuXG4gKi9cbnZhciBTRU1BVFRSU19NRVNTQUdJTkdfUFJPVE9DT0wgPSBUTVBfTUVTU0FHSU5HX1BST1RPQ09MO1xuLyoqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgdHJhbnNwb3J0IHByb3RvY29sLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX05FVFdPUktfUFJPVE9DT0xfVkVSU0lPTi5cbiAqL1xudmFyIFNFTUFUVFJTX01FU1NBR0lOR19QUk9UT0NPTF9WRVJTSU9OID0gVE1QX01FU1NBR0lOR19QUk9UT0NPTF9WRVJTSU9OO1xuLyoqXG4gKiBDb25uZWN0aW9uIHN0cmluZy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBSZW1vdmVkIGluIHNlbWNvbnYgdjEuMTcuMC5cbiAqL1xudmFyIFNFTUFUVFJTX01FU1NBR0lOR19VUkwgPSBUTVBfTUVTU0FHSU5HX1VSTDtcbi8qKlxuICogQSB2YWx1ZSB1c2VkIGJ5IHRoZSBtZXNzYWdpbmcgc3lzdGVtIGFzIGFuIGlkZW50aWZpZXIgZm9yIHRoZSBtZXNzYWdlLCByZXByZXNlbnRlZCBhcyBhIHN0cmluZy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9NRVNTQUdJTkdfTUVTU0FHRV9JRCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfTUVTU0FHSU5HX01FU1NBR0VfSUQgPSBUTVBfTUVTU0FHSU5HX01FU1NBR0VfSUQ7XG4vKipcbiAqIFRoZSBbY29udmVyc2F0aW9uIElEXSgjY29udmVyc2F0aW9ucykgaWRlbnRpZnlpbmcgdGhlIGNvbnZlcnNhdGlvbiB0byB3aGljaCB0aGUgbWVzc2FnZSBiZWxvbmdzLCByZXByZXNlbnRlZCBhcyBhIHN0cmluZy4gU29tZXRpbWVzIGNhbGxlZCAmIzM0O0NvcnJlbGF0aW9uIElEJiMzNDsuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTUVTU0FHSU5HX01FU1NBR0VfQ09OVkVSU0FUSU9OX0lEIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19NRVNTQUdJTkdfQ09OVkVSU0FUSU9OX0lEID0gVE1QX01FU1NBR0lOR19DT05WRVJTQVRJT05fSUQ7XG4vKipcbiAqIFRoZSAodW5jb21wcmVzc2VkKSBzaXplIG9mIHRoZSBtZXNzYWdlIHBheWxvYWQgaW4gYnl0ZXMuIEFsc28gdXNlIHRoaXMgYXR0cmlidXRlIGlmIGl0IGlzIHVua25vd24gd2hldGhlciB0aGUgY29tcHJlc3NlZCBvciB1bmNvbXByZXNzZWQgcGF5bG9hZCBzaXplIGlzIHJlcG9ydGVkLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX01FU1NBR0lOR19NRVNTQUdFX0JPRFlfU0laRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfTUVTU0FHSU5HX01FU1NBR0VfUEFZTE9BRF9TSVpFX0JZVEVTID0gVE1QX01FU1NBR0lOR19NRVNTQUdFX1BBWUxPQURfU0laRV9CWVRFUztcbi8qKlxuICogVGhlIGNvbXByZXNzZWQgc2l6ZSBvZiB0aGUgbWVzc2FnZSBwYXlsb2FkIGluIGJ5dGVzLlxuICpcbiAqIEBkZXByZWNhdGVkIFJlbW92ZWQgaW4gc2VtY29udiB2MS4yMi4wLlxuICovXG52YXIgU0VNQVRUUlNfTUVTU0FHSU5HX01FU1NBR0VfUEFZTE9BRF9DT01QUkVTU0VEX1NJWkVfQllURVMgPSBUTVBfTUVTU0FHSU5HX01FU1NBR0VfUEFZTE9BRF9DT01QUkVTU0VEX1NJWkVfQllURVM7XG4vKipcbiAqIEEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBraW5kIG9mIG1lc3NhZ2UgY29uc3VtcHRpb24gYXMgZGVmaW5lZCBpbiB0aGUgW09wZXJhdGlvbiBuYW1lc10oI29wZXJhdGlvbi1uYW1lcykgc2VjdGlvbiBhYm92ZS4gSWYgdGhlIG9wZXJhdGlvbiBpcyAmIzM0O3NlbmQmIzM0OywgdGhpcyBhdHRyaWJ1dGUgTVVTVCBOT1QgYmUgc2V0LCBzaW5jZSB0aGUgb3BlcmF0aW9uIGNhbiBiZSBpbmZlcnJlZCBmcm9tIHRoZSBzcGFuIGtpbmQgaW4gdGhhdCBjYXNlLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX01FU1NBR0lOR19PUEVSQVRJT04gaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX01FU1NBR0lOR19PUEVSQVRJT04gPSBUTVBfTUVTU0FHSU5HX09QRVJBVElPTjtcbi8qKlxuICogVGhlIGlkZW50aWZpZXIgZm9yIHRoZSBjb25zdW1lciByZWNlaXZpbmcgYSBtZXNzYWdlLiBGb3IgS2Fma2EsIHNldCBpdCB0byBge21lc3NhZ2luZy5rYWZrYS5jb25zdW1lcl9ncm91cH0gLSB7bWVzc2FnaW5nLmthZmthLmNsaWVudF9pZH1gLCBpZiBib3RoIGFyZSBwcmVzZW50LCBvciBvbmx5IGBtZXNzYWdpbmcua2Fma2EuY29uc3VtZXJfZ3JvdXBgLiBGb3IgYnJva2Vycywgc3VjaCBhcyBSYWJiaXRNUSBhbmQgQXJ0ZW1pcywgc2V0IGl0IHRvIHRoZSBgY2xpZW50X2lkYCBvZiB0aGUgY2xpZW50IGNvbnN1bWluZyB0aGUgbWVzc2FnZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBSZW1vdmVkIGluIHNlbWNvbnYgdjEuMjEuMC5cbiAqL1xudmFyIFNFTUFUVFJTX01FU1NBR0lOR19DT05TVU1FUl9JRCA9IFRNUF9NRVNTQUdJTkdfQ09OU1VNRVJfSUQ7XG4vKipcbiAqIFJhYmJpdE1RIG1lc3NhZ2Ugcm91dGluZyBrZXkuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTUVTU0FHSU5HX1JBQkJJVE1RX0RFU1RJTkFUSU9OX1JPVVRJTkdfS0VZIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19NRVNTQUdJTkdfUkFCQklUTVFfUk9VVElOR19LRVkgPSBUTVBfTUVTU0FHSU5HX1JBQkJJVE1RX1JPVVRJTkdfS0VZO1xuLyoqXG4gKiBNZXNzYWdlIGtleXMgaW4gS2Fma2EgYXJlIHVzZWQgZm9yIGdyb3VwaW5nIGFsaWtlIG1lc3NhZ2VzIHRvIGVuc3VyZSB0aGV5JiMzOTtyZSBwcm9jZXNzZWQgb24gdGhlIHNhbWUgcGFydGl0aW9uLiBUaGV5IGRpZmZlciBmcm9tIGBtZXNzYWdpbmcubWVzc2FnZV9pZGAgaW4gdGhhdCB0aGV5JiMzOTtyZSBub3QgdW5pcXVlLiBJZiB0aGUga2V5IGlzIGBudWxsYCwgdGhlIGF0dHJpYnV0ZSBNVVNUIE5PVCBiZSBzZXQuXG4gKlxuICogTm90ZTogSWYgdGhlIGtleSB0eXBlIGlzIG5vdCBzdHJpbmcsIGl0JiMzOTtzIHN0cmluZyByZXByZXNlbnRhdGlvbiBoYXMgdG8gYmUgc3VwcGxpZWQgZm9yIHRoZSBhdHRyaWJ1dGUuIElmIHRoZSBrZXkgaGFzIG5vIHVuYW1iaWd1b3VzLCBjYW5vbmljYWwgc3RyaW5nIGZvcm0sIGRvbiYjMzk7dCBpbmNsdWRlIGl0cyB2YWx1ZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9NRVNTQUdJTkdfS0FGS0FfTUVTU0FHRV9LRVkgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX01FU1NBR0lOR19LQUZLQV9NRVNTQUdFX0tFWSA9IFRNUF9NRVNTQUdJTkdfS0FGS0FfTUVTU0FHRV9LRVk7XG4vKipcbiAqIE5hbWUgb2YgdGhlIEthZmthIENvbnN1bWVyIEdyb3VwIHRoYXQgaXMgaGFuZGxpbmcgdGhlIG1lc3NhZ2UuIE9ubHkgYXBwbGllcyB0byBjb25zdW1lcnMsIG5vdCBwcm9kdWNlcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTUVTU0FHSU5HX0tBRktBX0NPTlNVTUVSX0dST1VQIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19NRVNTQUdJTkdfS0FGS0FfQ09OU1VNRVJfR1JPVVAgPSBUTVBfTUVTU0FHSU5HX0tBRktBX0NPTlNVTUVSX0dST1VQO1xuLyoqXG4gKiBDbGllbnQgSWQgZm9yIHRoZSBDb25zdW1lciBvciBQcm9kdWNlciB0aGF0IGlzIGhhbmRsaW5nIHRoZSBtZXNzYWdlLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX01FU1NBR0lOR19DTElFTlRfSUQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX01FU1NBR0lOR19LQUZLQV9DTElFTlRfSUQgPSBUTVBfTUVTU0FHSU5HX0tBRktBX0NMSUVOVF9JRDtcbi8qKlxuICogUGFydGl0aW9uIHRoZSBtZXNzYWdlIGlzIHNlbnQgdG8uXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTUVTU0FHSU5HX0tBRktBX0RFU1RJTkFUSU9OX1BBUlRJVElPTiBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfTUVTU0FHSU5HX0tBRktBX1BBUlRJVElPTiA9IFRNUF9NRVNTQUdJTkdfS0FGS0FfUEFSVElUSU9OO1xuLyoqXG4gKiBBIGJvb2xlYW4gdGhhdCBpcyB0cnVlIGlmIHRoZSBtZXNzYWdlIGlzIGEgdG9tYnN0b25lLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX01FU1NBR0lOR19LQUZLQV9NRVNTQUdFX1RPTUJTVE9ORSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfTUVTU0FHSU5HX0tBRktBX1RPTUJTVE9ORSA9IFRNUF9NRVNTQUdJTkdfS0FGS0FfVE9NQlNUT05FO1xuLyoqXG4gKiBBIHN0cmluZyBpZGVudGlmeWluZyB0aGUgcmVtb3Rpbmcgc3lzdGVtLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX1JQQ19TWVNURU0gaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX1JQQ19TWVNURU0gPSBUTVBfUlBDX1NZU1RFTTtcbi8qKlxuICogVGhlIGZ1bGwgKGxvZ2ljYWwpIG5hbWUgb2YgdGhlIHNlcnZpY2UgYmVpbmcgY2FsbGVkLCBpbmNsdWRpbmcgaXRzIHBhY2thZ2UgbmFtZSwgaWYgYXBwbGljYWJsZS5cbiAqXG4gKiBOb3RlOiBUaGlzIGlzIHRoZSBsb2dpY2FsIG5hbWUgb2YgdGhlIHNlcnZpY2UgZnJvbSB0aGUgUlBDIGludGVyZmFjZSBwZXJzcGVjdGl2ZSwgd2hpY2ggY2FuIGJlIGRpZmZlcmVudCBmcm9tIHRoZSBuYW1lIG9mIGFueSBpbXBsZW1lbnRpbmcgY2xhc3MuIFRoZSBgY29kZS5uYW1lc3BhY2VgIGF0dHJpYnV0ZSBtYXkgYmUgdXNlZCB0byBzdG9yZSB0aGUgbGF0dGVyIChkZXNwaXRlIHRoZSBhdHRyaWJ1dGUgbmFtZSwgaXQgbWF5IGluY2x1ZGUgYSBjbGFzcyBuYW1lOyBlLmcuLCBjbGFzcyB3aXRoIG1ldGhvZCBhY3R1YWxseSBleGVjdXRpbmcgdGhlIGNhbGwgb24gdGhlIHNlcnZlciBzaWRlLCBSUEMgY2xpZW50IHN0dWIgY2xhc3Mgb24gdGhlIGNsaWVudCBzaWRlKS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9SUENfU0VSVklDRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfUlBDX1NFUlZJQ0UgPSBUTVBfUlBDX1NFUlZJQ0U7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSAobG9naWNhbCkgbWV0aG9kIGJlaW5nIGNhbGxlZCwgbXVzdCBiZSBlcXVhbCB0byB0aGUgJG1ldGhvZCBwYXJ0IGluIHRoZSBzcGFuIG5hbWUuXG4gKlxuICogTm90ZTogVGhpcyBpcyB0aGUgbG9naWNhbCBuYW1lIG9mIHRoZSBtZXRob2QgZnJvbSB0aGUgUlBDIGludGVyZmFjZSBwZXJzcGVjdGl2ZSwgd2hpY2ggY2FuIGJlIGRpZmZlcmVudCBmcm9tIHRoZSBuYW1lIG9mIGFueSBpbXBsZW1lbnRpbmcgbWV0aG9kL2Z1bmN0aW9uLiBUaGUgYGNvZGUuZnVuY3Rpb25gIGF0dHJpYnV0ZSBtYXkgYmUgdXNlZCB0byBzdG9yZSB0aGUgbGF0dGVyIChlLmcuLCBtZXRob2QgYWN0dWFsbHkgZXhlY3V0aW5nIHRoZSBjYWxsIG9uIHRoZSBzZXJ2ZXIgc2lkZSwgUlBDIGNsaWVudCBzdHViIG1ldGhvZCBvbiB0aGUgY2xpZW50IHNpZGUpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX1JQQ19NRVRIT0QgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX1JQQ19NRVRIT0QgPSBUTVBfUlBDX01FVEhPRDtcbi8qKlxuICogVGhlIFtudW1lcmljIHN0YXR1cyBjb2RlXShodHRwczovL2dpdGh1Yi5jb20vZ3JwYy9ncnBjL2Jsb2IvdjEuMzMuMi9kb2Mvc3RhdHVzY29kZXMubWQpIG9mIHRoZSBnUlBDIHJlcXVlc3QuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfUlBDX0dSUENfU1RBVFVTX0NPREUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX1JQQ19HUlBDX1NUQVRVU19DT0RFID0gVE1QX1JQQ19HUlBDX1NUQVRVU19DT0RFO1xuLyoqXG4gKiBQcm90b2NvbCB2ZXJzaW9uIGFzIGluIGBqc29ucnBjYCBwcm9wZXJ0eSBvZiByZXF1ZXN0L3Jlc3BvbnNlLiBTaW5jZSBKU09OLVJQQyAxLjAgZG9lcyBub3Qgc3BlY2lmeSB0aGlzLCB0aGUgdmFsdWUgY2FuIGJlIG9taXR0ZWQuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfUlBDX0pTT05SUENfVkVSU0lPTiBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfUlBDX0pTT05SUENfVkVSU0lPTiA9IFRNUF9SUENfSlNPTlJQQ19WRVJTSU9OO1xuLyoqXG4gKiBgaWRgIHByb3BlcnR5IG9mIHJlcXVlc3Qgb3IgcmVzcG9uc2UuIFNpbmNlIHByb3RvY29sIGFsbG93cyBpZCB0byBiZSBpbnQsIHN0cmluZywgYG51bGxgIG9yIG1pc3NpbmcgKGZvciBub3RpZmljYXRpb25zKSwgdmFsdWUgaXMgZXhwZWN0ZWQgdG8gYmUgY2FzdCB0byBzdHJpbmcgZm9yIHNpbXBsaWNpdHkuIFVzZSBlbXB0eSBzdHJpbmcgaW4gY2FzZSBvZiBgbnVsbGAgdmFsdWUuIE9taXQgZW50aXJlbHkgaWYgdGhpcyBpcyBhIG5vdGlmaWNhdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9SUENfSlNPTlJQQ19SRVFVRVNUX0lEIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19SUENfSlNPTlJQQ19SRVFVRVNUX0lEID0gVE1QX1JQQ19KU09OUlBDX1JFUVVFU1RfSUQ7XG4vKipcbiAqIGBlcnJvci5jb2RlYCBwcm9wZXJ0eSBvZiByZXNwb25zZSBpZiBpdCBpcyBhbiBlcnJvciByZXNwb25zZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9SUENfSlNPTlJQQ19FUlJPUl9DT0RFIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19SUENfSlNPTlJQQ19FUlJPUl9DT0RFID0gVE1QX1JQQ19KU09OUlBDX0VSUk9SX0NPREU7XG4vKipcbiAqIGBlcnJvci5tZXNzYWdlYCBwcm9wZXJ0eSBvZiByZXNwb25zZSBpZiBpdCBpcyBhbiBlcnJvciByZXNwb25zZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9SUENfSlNPTlJQQ19FUlJPUl9NRVNTQUdFIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19SUENfSlNPTlJQQ19FUlJPUl9NRVNTQUdFID0gVE1QX1JQQ19KU09OUlBDX0VSUk9SX01FU1NBR0U7XG4vKipcbiAqIFdoZXRoZXIgdGhpcyBpcyBhIHJlY2VpdmVkIG9yIHNlbnQgbWVzc2FnZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9NRVNTQUdFX1RZUEUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX01FU1NBR0VfVFlQRSA9IFRNUF9NRVNTQUdFX1RZUEU7XG4vKipcbiAqIE1VU1QgYmUgY2FsY3VsYXRlZCBhcyB0d28gZGlmZmVyZW50IGNvdW50ZXJzIHN0YXJ0aW5nIGZyb20gYDFgIG9uZSBmb3Igc2VudCBtZXNzYWdlcyBhbmQgb25lIGZvciByZWNlaXZlZCBtZXNzYWdlLlxuICpcbiAqIE5vdGU6IFRoaXMgd2F5IHdlIGd1YXJhbnRlZSB0aGF0IHRoZSB2YWx1ZXMgd2lsbCBiZSBjb25zaXN0ZW50IGJldHdlZW4gZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9NRVNTQUdFX0lEIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19NRVNTQUdFX0lEID0gVE1QX01FU1NBR0VfSUQ7XG4vKipcbiAqIENvbXByZXNzZWQgc2l6ZSBvZiB0aGUgbWVzc2FnZSBpbiBieXRlcy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9NRVNTQUdFX0NPTVBSRVNTRURfU0laRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfTUVTU0FHRV9DT01QUkVTU0VEX1NJWkUgPSBUTVBfTUVTU0FHRV9DT01QUkVTU0VEX1NJWkU7XG4vKipcbiAqIFVuY29tcHJlc3NlZCBzaXplIG9mIHRoZSBtZXNzYWdlIGluIGJ5dGVzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX01FU1NBR0VfVU5DT01QUkVTU0VEX1NJWkUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX01FU1NBR0VfVU5DT01QUkVTU0VEX1NJWkUgPSBUTVBfTUVTU0FHRV9VTkNPTVBSRVNTRURfU0laRTtcbi8qKlxuICogQ3JlYXRlIGV4cG9ydGVkIFZhbHVlIE1hcCBmb3IgU2VtYW50aWNBdHRyaWJ1dGVzIHZhbHVlc1xuICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBTRU1BVFRSU19YWFhYWCBjb25zdGFudHMgcmF0aGVyIHRoYW4gdGhlIFNlbWFudGljQXR0cmlidXRlcy5YWFhYWCBmb3IgYnVuZGxlIG1pbmlmaWNhdGlvblxuICovXG52YXIgU2VtYW50aWNBdHRyaWJ1dGVzID0gXG4vKiNfX1BVUkVfXyovIGNyZWF0ZUNvbnN0TWFwKFtcbiAgICBUTVBfQVdTX0xBTUJEQV9JTlZPS0VEX0FSTixcbiAgICBUTVBfREJfU1lTVEVNLFxuICAgIFRNUF9EQl9DT05ORUNUSU9OX1NUUklORyxcbiAgICBUTVBfREJfVVNFUixcbiAgICBUTVBfREJfSkRCQ19EUklWRVJfQ0xBU1NOQU1FLFxuICAgIFRNUF9EQl9OQU1FLFxuICAgIFRNUF9EQl9TVEFURU1FTlQsXG4gICAgVE1QX0RCX09QRVJBVElPTixcbiAgICBUTVBfREJfTVNTUUxfSU5TVEFOQ0VfTkFNRSxcbiAgICBUTVBfREJfQ0FTU0FORFJBX0tFWVNQQUNFLFxuICAgIFRNUF9EQl9DQVNTQU5EUkFfUEFHRV9TSVpFLFxuICAgIFRNUF9EQl9DQVNTQU5EUkFfQ09OU0lTVEVOQ1lfTEVWRUwsXG4gICAgVE1QX0RCX0NBU1NBTkRSQV9UQUJMRSxcbiAgICBUTVBfREJfQ0FTU0FORFJBX0lERU1QT1RFTkNFLFxuICAgIFRNUF9EQl9DQVNTQU5EUkFfU1BFQ1VMQVRJVkVfRVhFQ1VUSU9OX0NPVU5ULFxuICAgIFRNUF9EQl9DQVNTQU5EUkFfQ09PUkRJTkFUT1JfSUQsXG4gICAgVE1QX0RCX0NBU1NBTkRSQV9DT09SRElOQVRPUl9EQyxcbiAgICBUTVBfREJfSEJBU0VfTkFNRVNQQUNFLFxuICAgIFRNUF9EQl9SRURJU19EQVRBQkFTRV9JTkRFWCxcbiAgICBUTVBfREJfTU9OR09EQl9DT0xMRUNUSU9OLFxuICAgIFRNUF9EQl9TUUxfVEFCTEUsXG4gICAgVE1QX0VYQ0VQVElPTl9UWVBFLFxuICAgIFRNUF9FWENFUFRJT05fTUVTU0FHRSxcbiAgICBUTVBfRVhDRVBUSU9OX1NUQUNLVFJBQ0UsXG4gICAgVE1QX0VYQ0VQVElPTl9FU0NBUEVELFxuICAgIFRNUF9GQUFTX1RSSUdHRVIsXG4gICAgVE1QX0ZBQVNfRVhFQ1VUSU9OLFxuICAgIFRNUF9GQUFTX0RPQ1VNRU5UX0NPTExFQ1RJT04sXG4gICAgVE1QX0ZBQVNfRE9DVU1FTlRfT1BFUkFUSU9OLFxuICAgIFRNUF9GQUFTX0RPQ1VNRU5UX1RJTUUsXG4gICAgVE1QX0ZBQVNfRE9DVU1FTlRfTkFNRSxcbiAgICBUTVBfRkFBU19USU1FLFxuICAgIFRNUF9GQUFTX0NST04sXG4gICAgVE1QX0ZBQVNfQ09MRFNUQVJULFxuICAgIFRNUF9GQUFTX0lOVk9LRURfTkFNRSxcbiAgICBUTVBfRkFBU19JTlZPS0VEX1BST1ZJREVSLFxuICAgIFRNUF9GQUFTX0lOVk9LRURfUkVHSU9OLFxuICAgIFRNUF9ORVRfVFJBTlNQT1JULFxuICAgIFRNUF9ORVRfUEVFUl9JUCxcbiAgICBUTVBfTkVUX1BFRVJfUE9SVCxcbiAgICBUTVBfTkVUX1BFRVJfTkFNRSxcbiAgICBUTVBfTkVUX0hPU1RfSVAsXG4gICAgVE1QX05FVF9IT1NUX1BPUlQsXG4gICAgVE1QX05FVF9IT1NUX05BTUUsXG4gICAgVE1QX05FVF9IT1NUX0NPTk5FQ1RJT05fVFlQRSxcbiAgICBUTVBfTkVUX0hPU1RfQ09OTkVDVElPTl9TVUJUWVBFLFxuICAgIFRNUF9ORVRfSE9TVF9DQVJSSUVSX05BTUUsXG4gICAgVE1QX05FVF9IT1NUX0NBUlJJRVJfTUNDLFxuICAgIFRNUF9ORVRfSE9TVF9DQVJSSUVSX01OQyxcbiAgICBUTVBfTkVUX0hPU1RfQ0FSUklFUl9JQ0MsXG4gICAgVE1QX1BFRVJfU0VSVklDRSxcbiAgICBUTVBfRU5EVVNFUl9JRCxcbiAgICBUTVBfRU5EVVNFUl9ST0xFLFxuICAgIFRNUF9FTkRVU0VSX1NDT1BFLFxuICAgIFRNUF9USFJFQURfSUQsXG4gICAgVE1QX1RIUkVBRF9OQU1FLFxuICAgIFRNUF9DT0RFX0ZVTkNUSU9OLFxuICAgIFRNUF9DT0RFX05BTUVTUEFDRSxcbiAgICBUTVBfQ09ERV9GSUxFUEFUSCxcbiAgICBUTVBfQ09ERV9MSU5FTk8sXG4gICAgVE1QX0hUVFBfTUVUSE9ELFxuICAgIFRNUF9IVFRQX1VSTCxcbiAgICBUTVBfSFRUUF9UQVJHRVQsXG4gICAgVE1QX0hUVFBfSE9TVCxcbiAgICBUTVBfSFRUUF9TQ0hFTUUsXG4gICAgVE1QX0hUVFBfU1RBVFVTX0NPREUsXG4gICAgVE1QX0hUVFBfRkxBVk9SLFxuICAgIFRNUF9IVFRQX1VTRVJfQUdFTlQsXG4gICAgVE1QX0hUVFBfUkVRVUVTVF9DT05URU5UX0xFTkdUSCxcbiAgICBUTVBfSFRUUF9SRVFVRVNUX0NPTlRFTlRfTEVOR1RIX1VOQ09NUFJFU1NFRCxcbiAgICBUTVBfSFRUUF9SRVNQT05TRV9DT05URU5UX0xFTkdUSCxcbiAgICBUTVBfSFRUUF9SRVNQT05TRV9DT05URU5UX0xFTkdUSF9VTkNPTVBSRVNTRUQsXG4gICAgVE1QX0hUVFBfU0VSVkVSX05BTUUsXG4gICAgVE1QX0hUVFBfUk9VVEUsXG4gICAgVE1QX0hUVFBfQ0xJRU5UX0lQLFxuICAgIFRNUF9BV1NfRFlOQU1PREJfVEFCTEVfTkFNRVMsXG4gICAgVE1QX0FXU19EWU5BTU9EQl9DT05TVU1FRF9DQVBBQ0lUWSxcbiAgICBUTVBfQVdTX0RZTkFNT0RCX0lURU1fQ09MTEVDVElPTl9NRVRSSUNTLFxuICAgIFRNUF9BV1NfRFlOQU1PREJfUFJPVklTSU9ORURfUkVBRF9DQVBBQ0lUWSxcbiAgICBUTVBfQVdTX0RZTkFNT0RCX1BST1ZJU0lPTkVEX1dSSVRFX0NBUEFDSVRZLFxuICAgIFRNUF9BV1NfRFlOQU1PREJfQ09OU0lTVEVOVF9SRUFELFxuICAgIFRNUF9BV1NfRFlOQU1PREJfUFJPSkVDVElPTixcbiAgICBUTVBfQVdTX0RZTkFNT0RCX0xJTUlULFxuICAgIFRNUF9BV1NfRFlOQU1PREJfQVRUUklCVVRFU19UT19HRVQsXG4gICAgVE1QX0FXU19EWU5BTU9EQl9JTkRFWF9OQU1FLFxuICAgIFRNUF9BV1NfRFlOQU1PREJfU0VMRUNULFxuICAgIFRNUF9BV1NfRFlOQU1PREJfR0xPQkFMX1NFQ09OREFSWV9JTkRFWEVTLFxuICAgIFRNUF9BV1NfRFlOQU1PREJfTE9DQUxfU0VDT05EQVJZX0lOREVYRVMsXG4gICAgVE1QX0FXU19EWU5BTU9EQl9FWENMVVNJVkVfU1RBUlRfVEFCTEUsXG4gICAgVE1QX0FXU19EWU5BTU9EQl9UQUJMRV9DT1VOVCxcbiAgICBUTVBfQVdTX0RZTkFNT0RCX1NDQU5fRk9SV0FSRCxcbiAgICBUTVBfQVdTX0RZTkFNT0RCX1NFR01FTlQsXG4gICAgVE1QX0FXU19EWU5BTU9EQl9UT1RBTF9TRUdNRU5UUyxcbiAgICBUTVBfQVdTX0RZTkFNT0RCX0NPVU5ULFxuICAgIFRNUF9BV1NfRFlOQU1PREJfU0NBTk5FRF9DT1VOVCxcbiAgICBUTVBfQVdTX0RZTkFNT0RCX0FUVFJJQlVURV9ERUZJTklUSU9OUyxcbiAgICBUTVBfQVdTX0RZTkFNT0RCX0dMT0JBTF9TRUNPTkRBUllfSU5ERVhfVVBEQVRFUyxcbiAgICBUTVBfTUVTU0FHSU5HX1NZU1RFTSxcbiAgICBUTVBfTUVTU0FHSU5HX0RFU1RJTkFUSU9OLFxuICAgIFRNUF9NRVNTQUdJTkdfREVTVElOQVRJT05fS0lORCxcbiAgICBUTVBfTUVTU0FHSU5HX1RFTVBfREVTVElOQVRJT04sXG4gICAgVE1QX01FU1NBR0lOR19QUk9UT0NPTCxcbiAgICBUTVBfTUVTU0FHSU5HX1BST1RPQ09MX1ZFUlNJT04sXG4gICAgVE1QX01FU1NBR0lOR19VUkwsXG4gICAgVE1QX01FU1NBR0lOR19NRVNTQUdFX0lELFxuICAgIFRNUF9NRVNTQUdJTkdfQ09OVkVSU0FUSU9OX0lELFxuICAgIFRNUF9NRVNTQUdJTkdfTUVTU0FHRV9QQVlMT0FEX1NJWkVfQllURVMsXG4gICAgVE1QX01FU1NBR0lOR19NRVNTQUdFX1BBWUxPQURfQ09NUFJFU1NFRF9TSVpFX0JZVEVTLFxuICAgIFRNUF9NRVNTQUdJTkdfT1BFUkFUSU9OLFxuICAgIFRNUF9NRVNTQUdJTkdfQ09OU1VNRVJfSUQsXG4gICAgVE1QX01FU1NBR0lOR19SQUJCSVRNUV9ST1VUSU5HX0tFWSxcbiAgICBUTVBfTUVTU0FHSU5HX0tBRktBX01FU1NBR0VfS0VZLFxuICAgIFRNUF9NRVNTQUdJTkdfS0FGS0FfQ09OU1VNRVJfR1JPVVAsXG4gICAgVE1QX01FU1NBR0lOR19LQUZLQV9DTElFTlRfSUQsXG4gICAgVE1QX01FU1NBR0lOR19LQUZLQV9QQVJUSVRJT04sXG4gICAgVE1QX01FU1NBR0lOR19LQUZLQV9UT01CU1RPTkUsXG4gICAgVE1QX1JQQ19TWVNURU0sXG4gICAgVE1QX1JQQ19TRVJWSUNFLFxuICAgIFRNUF9SUENfTUVUSE9ELFxuICAgIFRNUF9SUENfR1JQQ19TVEFUVVNfQ09ERSxcbiAgICBUTVBfUlBDX0pTT05SUENfVkVSU0lPTixcbiAgICBUTVBfUlBDX0pTT05SUENfUkVRVUVTVF9JRCxcbiAgICBUTVBfUlBDX0pTT05SUENfRVJST1JfQ09ERSxcbiAgICBUTVBfUlBDX0pTT05SUENfRVJST1JfTUVTU0FHRSxcbiAgICBUTVBfTUVTU0FHRV9UWVBFLFxuICAgIFRNUF9NRVNTQUdFX0lELFxuICAgIFRNUF9NRVNTQUdFX0NPTVBSRVNTRURfU0laRSxcbiAgICBUTVBfTUVTU0FHRV9VTkNPTVBSRVNTRURfU0laRSxcbl0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQ29uc3RhbnQgdmFsdWVzIGZvciBEYlN5c3RlbVZhbHVlcyBlbnVtIGRlZmluaXRpb25cbiAqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8vIFRlbXBvcmFyeSBsb2NhbCBjb25zdGFudHMgdG8gYXNzaWduIHRvIHRoZSBpbmRpdmlkdWFsIGV4cG9ydHMgYW5kIHRoZSBuYW1lc3BhY2VkIHZlcnNpb25cbi8vIFJlcXVpcmVkIHRvIGF2b2lkIHRoZSBuYW1lc3BhY2UgZXhwb3J0cyB1c2luZyB0aGUgdW5taW5pZmlhYmxlIGV4cG9ydCBuYW1lcyBmb3Igc29tZSBwYWNrYWdlIHR5cGVzXG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX09USEVSX1NRTCA9ICdvdGhlcl9zcWwnO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19NU1NRTCA9ICdtc3NxbCc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX01ZU1FMID0gJ215c3FsJztcbnZhciBUTVBfREJTWVNURU1WQUxVRVNfT1JBQ0xFID0gJ29yYWNsZSc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0RCMiA9ICdkYjInO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19QT1NUR1JFU1FMID0gJ3Bvc3RncmVzcWwnO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19SRURTSElGVCA9ICdyZWRzaGlmdCc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0hJVkUgPSAnaGl2ZSc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0NMT1VEU0NBUEUgPSAnY2xvdWRzY2FwZSc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0hTUUxEQiA9ICdoc3FsZGInO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19QUk9HUkVTUyA9ICdwcm9ncmVzcyc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX01BWERCID0gJ21heGRiJztcbnZhciBUTVBfREJTWVNURU1WQUxVRVNfSEFOQURCID0gJ2hhbmFkYic7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0lOR1JFUyA9ICdpbmdyZXMnO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19GSVJTVFNRTCA9ICdmaXJzdHNxbCc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0VEQiA9ICdlZGInO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19DQUNIRSA9ICdjYWNoZSc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0FEQUJBUyA9ICdhZGFiYXMnO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19GSVJFQklSRCA9ICdmaXJlYmlyZCc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0RFUkJZID0gJ2RlcmJ5JztcbnZhciBUTVBfREJTWVNURU1WQUxVRVNfRklMRU1BS0VSID0gJ2ZpbGVtYWtlcic7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0lORk9STUlYID0gJ2luZm9ybWl4JztcbnZhciBUTVBfREJTWVNURU1WQUxVRVNfSU5TVEFOVERCID0gJ2luc3RhbnRkYic7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0lOVEVSQkFTRSA9ICdpbnRlcmJhc2UnO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19NQVJJQURCID0gJ21hcmlhZGInO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19ORVRFWlpBID0gJ25ldGV6emEnO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19QRVJWQVNJVkUgPSAncGVydmFzaXZlJztcbnZhciBUTVBfREJTWVNURU1WQUxVRVNfUE9JTlRCQVNFID0gJ3BvaW50YmFzZSc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX1NRTElURSA9ICdzcWxpdGUnO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19TWUJBU0UgPSAnc3liYXNlJztcbnZhciBUTVBfREJTWVNURU1WQUxVRVNfVEVSQURBVEEgPSAndGVyYWRhdGEnO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19WRVJUSUNBID0gJ3ZlcnRpY2EnO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19IMiA9ICdoMic7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0NPTERGVVNJT04gPSAnY29sZGZ1c2lvbic7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0NBU1NBTkRSQSA9ICdjYXNzYW5kcmEnO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19IQkFTRSA9ICdoYmFzZSc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX01PTkdPREIgPSAnbW9uZ29kYic7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX1JFRElTID0gJ3JlZGlzJztcbnZhciBUTVBfREJTWVNURU1WQUxVRVNfQ09VQ0hCQVNFID0gJ2NvdWNoYmFzZSc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0NPVUNIREIgPSAnY291Y2hkYic7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0NPU01PU0RCID0gJ2Nvc21vc2RiJztcbnZhciBUTVBfREJTWVNURU1WQUxVRVNfRFlOQU1PREIgPSAnZHluYW1vZGInO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19ORU80SiA9ICduZW80aic7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0dFT0RFID0gJ2dlb2RlJztcbnZhciBUTVBfREJTWVNURU1WQUxVRVNfRUxBU1RJQ1NFQVJDSCA9ICdlbGFzdGljc2VhcmNoJztcbnZhciBUTVBfREJTWVNURU1WQUxVRVNfTUVNQ0FDSEVEID0gJ21lbWNhY2hlZCc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0NPQ0tST0FDSERCID0gJ2NvY2tyb2FjaGRiJztcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9PVEhFUl9TUUwgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX09USEVSX1NRTCA9IFRNUF9EQlNZU1RFTVZBTFVFU19PVEhFUl9TUUw7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfTVNTUUwgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX01TU1FMID0gVE1QX0RCU1lTVEVNVkFMVUVTX01TU1FMO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX01ZU1FMIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19NWVNRTCA9IFRNUF9EQlNZU1RFTVZBTFVFU19NWVNRTDtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9PUkFDTEUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX09SQUNMRSA9IFRNUF9EQlNZU1RFTVZBTFVFU19PUkFDTEU7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfREIyIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19EQjIgPSBUTVBfREJTWVNURU1WQUxVRVNfREIyO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX1BPU1RHUkVTUUwgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX1BPU1RHUkVTUUwgPSBUTVBfREJTWVNURU1WQUxVRVNfUE9TVEdSRVNRTDtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9SRURTSElGVCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfUkVEU0hJRlQgPSBUTVBfREJTWVNURU1WQUxVRVNfUkVEU0hJRlQ7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfSElWRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfSElWRSA9IFRNUF9EQlNZU1RFTVZBTFVFU19ISVZFO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX0NMT1VEU0NBUEUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX0NMT1VEU0NBUEUgPSBUTVBfREJTWVNURU1WQUxVRVNfQ0xPVURTQ0FQRTtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9IU1FMREIgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX0hTUUxEQiA9IFRNUF9EQlNZU1RFTVZBTFVFU19IU1FMREI7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfUFJPR1JFU1MgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX1BST0dSRVNTID0gVE1QX0RCU1lTVEVNVkFMVUVTX1BST0dSRVNTO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX01BWERCIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19NQVhEQiA9IFRNUF9EQlNZU1RFTVZBTFVFU19NQVhEQjtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9IQU5BREIgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX0hBTkFEQiA9IFRNUF9EQlNZU1RFTVZBTFVFU19IQU5BREI7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfSU5HUkVTIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19JTkdSRVMgPSBUTVBfREJTWVNURU1WQUxVRVNfSU5HUkVTO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX0ZJUlNUU1FMIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19GSVJTVFNRTCA9IFRNUF9EQlNZU1RFTVZBTFVFU19GSVJTVFNRTDtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9FREIgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX0VEQiA9IFRNUF9EQlNZU1RFTVZBTFVFU19FREI7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfQ0FDSEUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX0NBQ0hFID0gVE1QX0RCU1lTVEVNVkFMVUVTX0NBQ0hFO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX0FEQUJBUyBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfQURBQkFTID0gVE1QX0RCU1lTVEVNVkFMVUVTX0FEQUJBUztcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9GSVJFQklSRCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfRklSRUJJUkQgPSBUTVBfREJTWVNURU1WQUxVRVNfRklSRUJJUkQ7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfREVSQlkgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX0RFUkJZID0gVE1QX0RCU1lTVEVNVkFMVUVTX0RFUkJZO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX0ZJTEVNQUtFUiBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfRklMRU1BS0VSID0gVE1QX0RCU1lTVEVNVkFMVUVTX0ZJTEVNQUtFUjtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9JTkZPUk1JWCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfSU5GT1JNSVggPSBUTVBfREJTWVNURU1WQUxVRVNfSU5GT1JNSVg7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfSU5TVEFOVERCIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19JTlNUQU5UREIgPSBUTVBfREJTWVNURU1WQUxVRVNfSU5TVEFOVERCO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX0lOVEVSQkFTRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfSU5URVJCQVNFID0gVE1QX0RCU1lTVEVNVkFMVUVTX0lOVEVSQkFTRTtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9NQVJJQURCIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19NQVJJQURCID0gVE1QX0RCU1lTVEVNVkFMVUVTX01BUklBREI7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfTkVURVpaQSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfTkVURVpaQSA9IFRNUF9EQlNZU1RFTVZBTFVFU19ORVRFWlpBO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX1BFUlZBU0lWRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfUEVSVkFTSVZFID0gVE1QX0RCU1lTVEVNVkFMVUVTX1BFUlZBU0lWRTtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9QT0lOVEJBU0UgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX1BPSU5UQkFTRSA9IFRNUF9EQlNZU1RFTVZBTFVFU19QT0lOVEJBU0U7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfU1FMSVRFIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19TUUxJVEUgPSBUTVBfREJTWVNURU1WQUxVRVNfU1FMSVRFO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX1NZQkFTRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfU1lCQVNFID0gVE1QX0RCU1lTVEVNVkFMVUVTX1NZQkFTRTtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9URVJBREFUQSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfVEVSQURBVEEgPSBUTVBfREJTWVNURU1WQUxVRVNfVEVSQURBVEE7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfVkVSVElDQSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfVkVSVElDQSA9IFRNUF9EQlNZU1RFTVZBTFVFU19WRVJUSUNBO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX0gyIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19IMiA9IFRNUF9EQlNZU1RFTVZBTFVFU19IMjtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9DT0xERlVTSU9OIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19DT0xERlVTSU9OID0gVE1QX0RCU1lTVEVNVkFMVUVTX0NPTERGVVNJT047XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfQ0FTU0FORFJBIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19DQVNTQU5EUkEgPSBUTVBfREJTWVNURU1WQUxVRVNfQ0FTU0FORFJBO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX0hCQVNFIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19IQkFTRSA9IFRNUF9EQlNZU1RFTVZBTFVFU19IQkFTRTtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9NT05HT0RCIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19NT05HT0RCID0gVE1QX0RCU1lTVEVNVkFMVUVTX01PTkdPREI7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfUkVESVMgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX1JFRElTID0gVE1QX0RCU1lTVEVNVkFMVUVTX1JFRElTO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX0NPVUNIQkFTRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfQ09VQ0hCQVNFID0gVE1QX0RCU1lTVEVNVkFMVUVTX0NPVUNIQkFTRTtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9DT1VDSERCIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19DT1VDSERCID0gVE1QX0RCU1lTVEVNVkFMVUVTX0NPVUNIREI7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfQ09TTU9TREIgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX0NPU01PU0RCID0gVE1QX0RCU1lTVEVNVkFMVUVTX0NPU01PU0RCO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX0RZTkFNT0RCIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19EWU5BTU9EQiA9IFRNUF9EQlNZU1RFTVZBTFVFU19EWU5BTU9EQjtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9ORU80SiBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfTkVPNEogPSBUTVBfREJTWVNURU1WQUxVRVNfTkVPNEo7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfR0VPREUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX0dFT0RFID0gVE1QX0RCU1lTVEVNVkFMVUVTX0dFT0RFO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX0VMQVNUSUNTRUFSQ0ggaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX0VMQVNUSUNTRUFSQ0ggPSBUTVBfREJTWVNURU1WQUxVRVNfRUxBU1RJQ1NFQVJDSDtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9NRU1DQUNIRUQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX01FTUNBQ0hFRCA9IFRNUF9EQlNZU1RFTVZBTFVFU19NRU1DQUNIRUQ7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfQ09DS1JPQUNIREIgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX0NPQ0tST0FDSERCID0gVE1QX0RCU1lTVEVNVkFMVUVTX0NPQ0tST0FDSERCO1xuLyoqXG4gKiBUaGUgY29uc3RhbnQgbWFwIG9mIHZhbHVlcyBmb3IgRGJTeXN0ZW1WYWx1ZXMuXG4gKiBAZGVwcmVjYXRlZCBVc2UgdGhlIERCU1lTVEVNVkFMVUVTX1hYWFhYIGNvbnN0YW50cyByYXRoZXIgdGhhbiB0aGUgRGJTeXN0ZW1WYWx1ZXMuWFhYWFggZm9yIGJ1bmRsZSBtaW5pZmljYXRpb24uXG4gKi9cbnZhciBEYlN5c3RlbVZhbHVlcyA9IFxuLyojX19QVVJFX18qLyBjcmVhdGVDb25zdE1hcChbXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX09USEVSX1NRTCxcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfTVNTUUwsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX01ZU1FMLFxuICAgIFRNUF9EQlNZU1RFTVZBTFVFU19PUkFDTEUsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0RCMixcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfUE9TVEdSRVNRTCxcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfUkVEU0hJRlQsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0hJVkUsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0NMT1VEU0NBUEUsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0hTUUxEQixcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfUFJPR1JFU1MsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX01BWERCLFxuICAgIFRNUF9EQlNZU1RFTVZBTFVFU19IQU5BREIsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0lOR1JFUyxcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfRklSU1RTUUwsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0VEQixcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfQ0FDSEUsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0FEQUJBUyxcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfRklSRUJJUkQsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0RFUkJZLFxuICAgIFRNUF9EQlNZU1RFTVZBTFVFU19GSUxFTUFLRVIsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0lORk9STUlYLFxuICAgIFRNUF9EQlNZU1RFTVZBTFVFU19JTlNUQU5UREIsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0lOVEVSQkFTRSxcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfTUFSSUFEQixcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfTkVURVpaQSxcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfUEVSVkFTSVZFLFxuICAgIFRNUF9EQlNZU1RFTVZBTFVFU19QT0lOVEJBU0UsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX1NRTElURSxcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfU1lCQVNFLFxuICAgIFRNUF9EQlNZU1RFTVZBTFVFU19URVJBREFUQSxcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfVkVSVElDQSxcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfSDIsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0NPTERGVVNJT04sXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0NBU1NBTkRSQSxcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfSEJBU0UsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX01PTkdPREIsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX1JFRElTLFxuICAgIFRNUF9EQlNZU1RFTVZBTFVFU19DT1VDSEJBU0UsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0NPVUNIREIsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0NPU01PU0RCLFxuICAgIFRNUF9EQlNZU1RFTVZBTFVFU19EWU5BTU9EQixcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfTkVPNEosXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0dFT0RFLFxuICAgIFRNUF9EQlNZU1RFTVZBTFVFU19FTEFTVElDU0VBUkNILFxuICAgIFRNUF9EQlNZU1RFTVZBTFVFU19NRU1DQUNIRUQsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0NPQ0tST0FDSERCLFxuXSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBDb25zdGFudCB2YWx1ZXMgZm9yIERiQ2Fzc2FuZHJhQ29uc2lzdGVuY3lMZXZlbFZhbHVlcyBlbnVtIGRlZmluaXRpb25cbiAqXG4gKiBUaGUgY29uc2lzdGVuY3kgbGV2ZWwgb2YgdGhlIHF1ZXJ5LiBCYXNlZCBvbiBjb25zaXN0ZW5jeSB2YWx1ZXMgZnJvbSBbQ1FMXShodHRwczovL2RvY3MuZGF0YXN0YXguY29tL2VuL2Nhc3NhbmRyYS1vc3MvMy4wL2Nhc3NhbmRyYS9kbWwvZG1sQ29uZmlnQ29uc2lzdGVuY3kuaHRtbCkuXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vLyBUZW1wb3JhcnkgbG9jYWwgY29uc3RhbnRzIHRvIGFzc2lnbiB0byB0aGUgaW5kaXZpZHVhbCBleHBvcnRzIGFuZCB0aGUgbmFtZXNwYWNlZCB2ZXJzaW9uXG4vLyBSZXF1aXJlZCB0byBhdm9pZCB0aGUgbmFtZXNwYWNlIGV4cG9ydHMgdXNpbmcgdGhlIHVubWluaWZpYWJsZSBleHBvcnQgbmFtZXMgZm9yIHNvbWUgcGFja2FnZSB0eXBlc1xudmFyIFRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfQUxMID0gJ2FsbCc7XG52YXIgVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19FQUNIX1FVT1JVTSA9ICdlYWNoX3F1b3J1bSc7XG52YXIgVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19RVU9SVU0gPSAncXVvcnVtJztcbnZhciBUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0xPQ0FMX1FVT1JVTSA9ICdsb2NhbF9xdW9ydW0nO1xudmFyIFRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfT05FID0gJ29uZSc7XG52YXIgVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19UV08gPSAndHdvJztcbnZhciBUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX1RIUkVFID0gJ3RocmVlJztcbnZhciBUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0xPQ0FMX09ORSA9ICdsb2NhbF9vbmUnO1xudmFyIFRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfQU5ZID0gJ2FueSc7XG52YXIgVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19TRVJJQUwgPSAnc2VyaWFsJztcbnZhciBUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0xPQ0FMX1NFUklBTCA9ICdsb2NhbF9zZXJpYWwnO1xuLyoqXG4gKiBUaGUgY29uc2lzdGVuY3kgbGV2ZWwgb2YgdGhlIHF1ZXJ5LiBCYXNlZCBvbiBjb25zaXN0ZW5jeSB2YWx1ZXMgZnJvbSBbQ1FMXShodHRwczovL2RvY3MuZGF0YXN0YXguY29tL2VuL2Nhc3NhbmRyYS1vc3MvMy4wL2Nhc3NhbmRyYS9kbWwvZG1sQ29uZmlnQ29uc2lzdGVuY3kuaHRtbCkuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX0NBU1NBTkRSQV9DT05TSVNURU5DWV9MRVZFTF9WQUxVRV9BTEwgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19BTEwgPSBUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0FMTDtcbi8qKlxuICogVGhlIGNvbnNpc3RlbmN5IGxldmVsIG9mIHRoZSBxdWVyeS4gQmFzZWQgb24gY29uc2lzdGVuY3kgdmFsdWVzIGZyb20gW0NRTF0oaHR0cHM6Ly9kb2NzLmRhdGFzdGF4LmNvbS9lbi9jYXNzYW5kcmEtb3NzLzMuMC9jYXNzYW5kcmEvZG1sL2RtbENvbmZpZ0NvbnNpc3RlbmN5Lmh0bWwpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9DQVNTQU5EUkFfQ09OU0lTVEVOQ1lfTEVWRUxfVkFMVUVfRUFDSF9RVU9SVU0gaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19FQUNIX1FVT1JVTSA9IFRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfRUFDSF9RVU9SVU07XG4vKipcbiAqIFRoZSBjb25zaXN0ZW5jeSBsZXZlbCBvZiB0aGUgcXVlcnkuIEJhc2VkIG9uIGNvbnNpc3RlbmN5IHZhbHVlcyBmcm9tIFtDUUxdKGh0dHBzOi8vZG9jcy5kYXRhc3RheC5jb20vZW4vY2Fzc2FuZHJhLW9zcy8zLjAvY2Fzc2FuZHJhL2RtbC9kbWxDb25maWdDb25zaXN0ZW5jeS5odG1sKS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfQ0FTU0FORFJBX0NPTlNJU1RFTkNZX0xFVkVMX1ZBTFVFX1FVT1JVTSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX1FVT1JVTSA9IFRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfUVVPUlVNO1xuLyoqXG4gKiBUaGUgY29uc2lzdGVuY3kgbGV2ZWwgb2YgdGhlIHF1ZXJ5LiBCYXNlZCBvbiBjb25zaXN0ZW5jeSB2YWx1ZXMgZnJvbSBbQ1FMXShodHRwczovL2RvY3MuZGF0YXN0YXguY29tL2VuL2Nhc3NhbmRyYS1vc3MvMy4wL2Nhc3NhbmRyYS9kbWwvZG1sQ29uZmlnQ29uc2lzdGVuY3kuaHRtbCkuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX0NBU1NBTkRSQV9DT05TSVNURU5DWV9MRVZFTF9WQUxVRV9MT0NBTF9RVU9SVU0gaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19MT0NBTF9RVU9SVU0gPSBUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0xPQ0FMX1FVT1JVTTtcbi8qKlxuICogVGhlIGNvbnNpc3RlbmN5IGxldmVsIG9mIHRoZSBxdWVyeS4gQmFzZWQgb24gY29uc2lzdGVuY3kgdmFsdWVzIGZyb20gW0NRTF0oaHR0cHM6Ly9kb2NzLmRhdGFzdGF4LmNvbS9lbi9jYXNzYW5kcmEtb3NzLzMuMC9jYXNzYW5kcmEvZG1sL2RtbENvbmZpZ0NvbnNpc3RlbmN5Lmh0bWwpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9DQVNTQU5EUkFfQ09OU0lTVEVOQ1lfTEVWRUxfVkFMVUVfT05FIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfT05FID0gVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19PTkU7XG4vKipcbiAqIFRoZSBjb25zaXN0ZW5jeSBsZXZlbCBvZiB0aGUgcXVlcnkuIEJhc2VkIG9uIGNvbnNpc3RlbmN5IHZhbHVlcyBmcm9tIFtDUUxdKGh0dHBzOi8vZG9jcy5kYXRhc3RheC5jb20vZW4vY2Fzc2FuZHJhLW9zcy8zLjAvY2Fzc2FuZHJhL2RtbC9kbWxDb25maWdDb25zaXN0ZW5jeS5odG1sKS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfQ0FTU0FORFJBX0NPTlNJU1RFTkNZX0xFVkVMX1ZBTFVFX1RXTyBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX1RXTyA9IFRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfVFdPO1xuLyoqXG4gKiBUaGUgY29uc2lzdGVuY3kgbGV2ZWwgb2YgdGhlIHF1ZXJ5LiBCYXNlZCBvbiBjb25zaXN0ZW5jeSB2YWx1ZXMgZnJvbSBbQ1FMXShodHRwczovL2RvY3MuZGF0YXN0YXguY29tL2VuL2Nhc3NhbmRyYS1vc3MvMy4wL2Nhc3NhbmRyYS9kbWwvZG1sQ29uZmlnQ29uc2lzdGVuY3kuaHRtbCkuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX0NBU1NBTkRSQV9DT05TSVNURU5DWV9MRVZFTF9WQUxVRV9USFJFRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX1RIUkVFID0gVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19USFJFRTtcbi8qKlxuICogVGhlIGNvbnNpc3RlbmN5IGxldmVsIG9mIHRoZSBxdWVyeS4gQmFzZWQgb24gY29uc2lzdGVuY3kgdmFsdWVzIGZyb20gW0NRTF0oaHR0cHM6Ly9kb2NzLmRhdGFzdGF4LmNvbS9lbi9jYXNzYW5kcmEtb3NzLzMuMC9jYXNzYW5kcmEvZG1sL2RtbENvbmZpZ0NvbnNpc3RlbmN5Lmh0bWwpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9DQVNTQU5EUkFfQ09OU0lTVEVOQ1lfTEVWRUxfVkFMVUVfTE9DQUxfT05FIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfTE9DQUxfT05FID0gVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19MT0NBTF9PTkU7XG4vKipcbiAqIFRoZSBjb25zaXN0ZW5jeSBsZXZlbCBvZiB0aGUgcXVlcnkuIEJhc2VkIG9uIGNvbnNpc3RlbmN5IHZhbHVlcyBmcm9tIFtDUUxdKGh0dHBzOi8vZG9jcy5kYXRhc3RheC5jb20vZW4vY2Fzc2FuZHJhLW9zcy8zLjAvY2Fzc2FuZHJhL2RtbC9kbWxDb25maWdDb25zaXN0ZW5jeS5odG1sKS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfQ0FTU0FORFJBX0NPTlNJU1RFTkNZX0xFVkVMX1ZBTFVFX0FOWSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0FOWSA9IFRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfQU5ZO1xuLyoqXG4gKiBUaGUgY29uc2lzdGVuY3kgbGV2ZWwgb2YgdGhlIHF1ZXJ5LiBCYXNlZCBvbiBjb25zaXN0ZW5jeSB2YWx1ZXMgZnJvbSBbQ1FMXShodHRwczovL2RvY3MuZGF0YXN0YXguY29tL2VuL2Nhc3NhbmRyYS1vc3MvMy4wL2Nhc3NhbmRyYS9kbWwvZG1sQ29uZmlnQ29uc2lzdGVuY3kuaHRtbCkuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX0NBU1NBTkRSQV9DT05TSVNURU5DWV9MRVZFTF9WQUxVRV9TRVJJQUwgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19TRVJJQUwgPSBUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX1NFUklBTDtcbi8qKlxuICogVGhlIGNvbnNpc3RlbmN5IGxldmVsIG9mIHRoZSBxdWVyeS4gQmFzZWQgb24gY29uc2lzdGVuY3kgdmFsdWVzIGZyb20gW0NRTF0oaHR0cHM6Ly9kb2NzLmRhdGFzdGF4LmNvbS9lbi9jYXNzYW5kcmEtb3NzLzMuMC9jYXNzYW5kcmEvZG1sL2RtbENvbmZpZ0NvbnNpc3RlbmN5Lmh0bWwpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9DQVNTQU5EUkFfQ09OU0lTVEVOQ1lfTEVWRUxfVkFMVUVfTE9DQUxfU0VSSUFMIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfTE9DQUxfU0VSSUFMID0gVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19MT0NBTF9TRVJJQUw7XG4vKipcbiAqIFRoZSBjb25zdGFudCBtYXAgb2YgdmFsdWVzIGZvciBEYkNhc3NhbmRyYUNvbnNpc3RlbmN5TGV2ZWxWYWx1ZXMuXG4gKiBAZGVwcmVjYXRlZCBVc2UgdGhlIERCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19YWFhYWCBjb25zdGFudHMgcmF0aGVyIHRoYW4gdGhlIERiQ2Fzc2FuZHJhQ29uc2lzdGVuY3lMZXZlbFZhbHVlcy5YWFhYWCBmb3IgYnVuZGxlIG1pbmlmaWNhdGlvbi5cbiAqL1xudmFyIERiQ2Fzc2FuZHJhQ29uc2lzdGVuY3lMZXZlbFZhbHVlcyA9IFxuLyojX19QVVJFX18qLyBjcmVhdGVDb25zdE1hcChbXG4gICAgVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19BTEwsXG4gICAgVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19FQUNIX1FVT1JVTSxcbiAgICBUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX1FVT1JVTSxcbiAgICBUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0xPQ0FMX1FVT1JVTSxcbiAgICBUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX09ORSxcbiAgICBUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX1RXTyxcbiAgICBUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX1RIUkVFLFxuICAgIFRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfTE9DQUxfT05FLFxuICAgIFRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfQU5ZLFxuICAgIFRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfU0VSSUFMLFxuICAgIFRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfTE9DQUxfU0VSSUFMLFxuXSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBDb25zdGFudCB2YWx1ZXMgZm9yIEZhYXNUcmlnZ2VyVmFsdWVzIGVudW0gZGVmaW5pdGlvblxuICpcbiAqIFR5cGUgb2YgdGhlIHRyaWdnZXIgb24gd2hpY2ggdGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkLlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLy8gVGVtcG9yYXJ5IGxvY2FsIGNvbnN0YW50cyB0byBhc3NpZ24gdG8gdGhlIGluZGl2aWR1YWwgZXhwb3J0cyBhbmQgdGhlIG5hbWVzcGFjZWQgdmVyc2lvblxuLy8gUmVxdWlyZWQgdG8gYXZvaWQgdGhlIG5hbWVzcGFjZSBleHBvcnRzIHVzaW5nIHRoZSB1bm1pbmlmaWFibGUgZXhwb3J0IG5hbWVzIGZvciBzb21lIHBhY2thZ2UgdHlwZXNcbnZhciBUTVBfRkFBU1RSSUdHRVJWQUxVRVNfREFUQVNPVVJDRSA9ICdkYXRhc291cmNlJztcbnZhciBUTVBfRkFBU1RSSUdHRVJWQUxVRVNfSFRUUCA9ICdodHRwJztcbnZhciBUTVBfRkFBU1RSSUdHRVJWQUxVRVNfUFVCU1VCID0gJ3B1YnN1Yic7XG52YXIgVE1QX0ZBQVNUUklHR0VSVkFMVUVTX1RJTUVSID0gJ3RpbWVyJztcbnZhciBUTVBfRkFBU1RSSUdHRVJWQUxVRVNfT1RIRVIgPSAnb3RoZXInO1xuLyoqXG4gKiBUeXBlIG9mIHRoZSB0cmlnZ2VyIG9uIHdoaWNoIHRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgRkFBU19UUklHR0VSX1ZBTFVFX0RBVEFTT1VSQ0UgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIEZBQVNUUklHR0VSVkFMVUVTX0RBVEFTT1VSQ0UgPSBUTVBfRkFBU1RSSUdHRVJWQUxVRVNfREFUQVNPVVJDRTtcbi8qKlxuICogVHlwZSBvZiB0aGUgdHJpZ2dlciBvbiB3aGljaCB0aGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEZBQVNfVFJJR0dFUl9WQUxVRV9IVFRQIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBGQUFTVFJJR0dFUlZBTFVFU19IVFRQID0gVE1QX0ZBQVNUUklHR0VSVkFMVUVTX0hUVFA7XG4vKipcbiAqIFR5cGUgb2YgdGhlIHRyaWdnZXIgb24gd2hpY2ggdGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBGQUFTX1RSSUdHRVJfVkFMVUVfUFVCU1VCIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBGQUFTVFJJR0dFUlZBTFVFU19QVUJTVUIgPSBUTVBfRkFBU1RSSUdHRVJWQUxVRVNfUFVCU1VCO1xuLyoqXG4gKiBUeXBlIG9mIHRoZSB0cmlnZ2VyIG9uIHdoaWNoIHRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgRkFBU19UUklHR0VSX1ZBTFVFX1RJTUVSIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBGQUFTVFJJR0dFUlZBTFVFU19USU1FUiA9IFRNUF9GQUFTVFJJR0dFUlZBTFVFU19USU1FUjtcbi8qKlxuICogVHlwZSBvZiB0aGUgdHJpZ2dlciBvbiB3aGljaCB0aGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEZBQVNfVFJJR0dFUl9WQUxVRV9PVEhFUiBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgRkFBU1RSSUdHRVJWQUxVRVNfT1RIRVIgPSBUTVBfRkFBU1RSSUdHRVJWQUxVRVNfT1RIRVI7XG4vKipcbiAqIFRoZSBjb25zdGFudCBtYXAgb2YgdmFsdWVzIGZvciBGYWFzVHJpZ2dlclZhbHVlcy5cbiAqIEBkZXByZWNhdGVkIFVzZSB0aGUgRkFBU1RSSUdHRVJWQUxVRVNfWFhYWFggY29uc3RhbnRzIHJhdGhlciB0aGFuIHRoZSBGYWFzVHJpZ2dlclZhbHVlcy5YWFhYWCBmb3IgYnVuZGxlIG1pbmlmaWNhdGlvbi5cbiAqL1xudmFyIEZhYXNUcmlnZ2VyVmFsdWVzID0gXG4vKiNfX1BVUkVfXyovIGNyZWF0ZUNvbnN0TWFwKFtcbiAgICBUTVBfRkFBU1RSSUdHRVJWQUxVRVNfREFUQVNPVVJDRSxcbiAgICBUTVBfRkFBU1RSSUdHRVJWQUxVRVNfSFRUUCxcbiAgICBUTVBfRkFBU1RSSUdHRVJWQUxVRVNfUFVCU1VCLFxuICAgIFRNUF9GQUFTVFJJR0dFUlZBTFVFU19USU1FUixcbiAgICBUTVBfRkFBU1RSSUdHRVJWQUxVRVNfT1RIRVIsXG5dKTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIENvbnN0YW50IHZhbHVlcyBmb3IgRmFhc0RvY3VtZW50T3BlcmF0aW9uVmFsdWVzIGVudW0gZGVmaW5pdGlvblxuICpcbiAqIERlc2NyaWJlcyB0aGUgdHlwZSBvZiB0aGUgb3BlcmF0aW9uIHRoYXQgd2FzIHBlcmZvcm1lZCBvbiB0aGUgZGF0YS5cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8vIFRlbXBvcmFyeSBsb2NhbCBjb25zdGFudHMgdG8gYXNzaWduIHRvIHRoZSBpbmRpdmlkdWFsIGV4cG9ydHMgYW5kIHRoZSBuYW1lc3BhY2VkIHZlcnNpb25cbi8vIFJlcXVpcmVkIHRvIGF2b2lkIHRoZSBuYW1lc3BhY2UgZXhwb3J0cyB1c2luZyB0aGUgdW5taW5pZmlhYmxlIGV4cG9ydCBuYW1lcyBmb3Igc29tZSBwYWNrYWdlIHR5cGVzXG52YXIgVE1QX0ZBQVNET0NVTUVOVE9QRVJBVElPTlZBTFVFU19JTlNFUlQgPSAnaW5zZXJ0JztcbnZhciBUTVBfRkFBU0RPQ1VNRU5UT1BFUkFUSU9OVkFMVUVTX0VESVQgPSAnZWRpdCc7XG52YXIgVE1QX0ZBQVNET0NVTUVOVE9QRVJBVElPTlZBTFVFU19ERUxFVEUgPSAnZGVsZXRlJztcbi8qKlxuICogRGVzY3JpYmVzIHRoZSB0eXBlIG9mIHRoZSBvcGVyYXRpb24gdGhhdCB3YXMgcGVyZm9ybWVkIG9uIHRoZSBkYXRhLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBGQUFTX0RPQ1VNRU5UX09QRVJBVElPTl9WQUxVRV9JTlNFUlQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIEZBQVNET0NVTUVOVE9QRVJBVElPTlZBTFVFU19JTlNFUlQgPSBUTVBfRkFBU0RPQ1VNRU5UT1BFUkFUSU9OVkFMVUVTX0lOU0VSVDtcbi8qKlxuICogRGVzY3JpYmVzIHRoZSB0eXBlIG9mIHRoZSBvcGVyYXRpb24gdGhhdCB3YXMgcGVyZm9ybWVkIG9uIHRoZSBkYXRhLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBGQUFTX0RPQ1VNRU5UX09QRVJBVElPTl9WQUxVRV9FRElUIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBGQUFTRE9DVU1FTlRPUEVSQVRJT05WQUxVRVNfRURJVCA9IFRNUF9GQUFTRE9DVU1FTlRPUEVSQVRJT05WQUxVRVNfRURJVDtcbi8qKlxuICogRGVzY3JpYmVzIHRoZSB0eXBlIG9mIHRoZSBvcGVyYXRpb24gdGhhdCB3YXMgcGVyZm9ybWVkIG9uIHRoZSBkYXRhLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBGQUFTX0RPQ1VNRU5UX09QRVJBVElPTl9WQUxVRV9ERUxFVEUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIEZBQVNET0NVTUVOVE9QRVJBVElPTlZBTFVFU19ERUxFVEUgPSBUTVBfRkFBU0RPQ1VNRU5UT1BFUkFUSU9OVkFMVUVTX0RFTEVURTtcbi8qKlxuICogVGhlIGNvbnN0YW50IG1hcCBvZiB2YWx1ZXMgZm9yIEZhYXNEb2N1bWVudE9wZXJhdGlvblZhbHVlcy5cbiAqIEBkZXByZWNhdGVkIFVzZSB0aGUgRkFBU0RPQ1VNRU5UT1BFUkFUSU9OVkFMVUVTX1hYWFhYIGNvbnN0YW50cyByYXRoZXIgdGhhbiB0aGUgRmFhc0RvY3VtZW50T3BlcmF0aW9uVmFsdWVzLlhYWFhYIGZvciBidW5kbGUgbWluaWZpY2F0aW9uLlxuICovXG52YXIgRmFhc0RvY3VtZW50T3BlcmF0aW9uVmFsdWVzID0gXG4vKiNfX1BVUkVfXyovIGNyZWF0ZUNvbnN0TWFwKFtcbiAgICBUTVBfRkFBU0RPQ1VNRU5UT1BFUkFUSU9OVkFMVUVTX0lOU0VSVCxcbiAgICBUTVBfRkFBU0RPQ1VNRU5UT1BFUkFUSU9OVkFMVUVTX0VESVQsXG4gICAgVE1QX0ZBQVNET0NVTUVOVE9QRVJBVElPTlZBTFVFU19ERUxFVEUsXG5dKTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIENvbnN0YW50IHZhbHVlcyBmb3IgRmFhc0ludm9rZWRQcm92aWRlclZhbHVlcyBlbnVtIGRlZmluaXRpb25cbiAqXG4gKiBUaGUgY2xvdWQgcHJvdmlkZXIgb2YgdGhlIGludm9rZWQgZnVuY3Rpb24uXG4gKlxuICogTm90ZTogU0hPVUxEIGJlIGVxdWFsIHRvIHRoZSBgY2xvdWQucHJvdmlkZXJgIHJlc291cmNlIGF0dHJpYnV0ZSBvZiB0aGUgaW52b2tlZCBmdW5jdGlvbi5cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8vIFRlbXBvcmFyeSBsb2NhbCBjb25zdGFudHMgdG8gYXNzaWduIHRvIHRoZSBpbmRpdmlkdWFsIGV4cG9ydHMgYW5kIHRoZSBuYW1lc3BhY2VkIHZlcnNpb25cbi8vIFJlcXVpcmVkIHRvIGF2b2lkIHRoZSBuYW1lc3BhY2UgZXhwb3J0cyB1c2luZyB0aGUgdW5taW5pZmlhYmxlIGV4cG9ydCBuYW1lcyBmb3Igc29tZSBwYWNrYWdlIHR5cGVzXG52YXIgVE1QX0ZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfQUxJQkFCQV9DTE9VRCA9ICdhbGliYWJhX2Nsb3VkJztcbnZhciBUTVBfRkFBU0lOVk9LRURQUk9WSURFUlZBTFVFU19BV1MgPSAnYXdzJztcbnZhciBUTVBfRkFBU0lOVk9LRURQUk9WSURFUlZBTFVFU19BWlVSRSA9ICdhenVyZSc7XG52YXIgVE1QX0ZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfR0NQID0gJ2djcCc7XG4vKipcbiAqIFRoZSBjbG91ZCBwcm92aWRlciBvZiB0aGUgaW52b2tlZCBmdW5jdGlvbi5cbiAqXG4gKiBOb3RlOiBTSE9VTEQgYmUgZXF1YWwgdG8gdGhlIGBjbG91ZC5wcm92aWRlcmAgcmVzb3VyY2UgYXR0cmlidXRlIG9mIHRoZSBpbnZva2VkIGZ1bmN0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBGQUFTX0lOVk9LRURfUFJPVklERVJfVkFMVUVfQUxJQkFCQV9DTE9VRCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgRkFBU0lOVk9LRURQUk9WSURFUlZBTFVFU19BTElCQUJBX0NMT1VEID0gVE1QX0ZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfQUxJQkFCQV9DTE9VRDtcbi8qKlxuICogVGhlIGNsb3VkIHByb3ZpZGVyIG9mIHRoZSBpbnZva2VkIGZ1bmN0aW9uLlxuICpcbiAqIE5vdGU6IFNIT1VMRCBiZSBlcXVhbCB0byB0aGUgYGNsb3VkLnByb3ZpZGVyYCByZXNvdXJjZSBhdHRyaWJ1dGUgb2YgdGhlIGludm9rZWQgZnVuY3Rpb24uXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEZBQVNfSU5WT0tFRF9QUk9WSURFUl9WQUxVRV9BV1MgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIEZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfQVdTID0gVE1QX0ZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfQVdTO1xuLyoqXG4gKiBUaGUgY2xvdWQgcHJvdmlkZXIgb2YgdGhlIGludm9rZWQgZnVuY3Rpb24uXG4gKlxuICogTm90ZTogU0hPVUxEIGJlIGVxdWFsIHRvIHRoZSBgY2xvdWQucHJvdmlkZXJgIHJlc291cmNlIGF0dHJpYnV0ZSBvZiB0aGUgaW52b2tlZCBmdW5jdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgRkFBU19JTlZPS0VEX1BST1ZJREVSX1ZBTFVFX0FaVVJFIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBGQUFTSU5WT0tFRFBST1ZJREVSVkFMVUVTX0FaVVJFID0gVE1QX0ZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfQVpVUkU7XG4vKipcbiAqIFRoZSBjbG91ZCBwcm92aWRlciBvZiB0aGUgaW52b2tlZCBmdW5jdGlvbi5cbiAqXG4gKiBOb3RlOiBTSE9VTEQgYmUgZXF1YWwgdG8gdGhlIGBjbG91ZC5wcm92aWRlcmAgcmVzb3VyY2UgYXR0cmlidXRlIG9mIHRoZSBpbnZva2VkIGZ1bmN0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBGQUFTX0lOVk9LRURfUFJPVklERVJfVkFMVUVfR0NQIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBGQUFTSU5WT0tFRFBST1ZJREVSVkFMVUVTX0dDUCA9IFRNUF9GQUFTSU5WT0tFRFBST1ZJREVSVkFMVUVTX0dDUDtcbi8qKlxuICogVGhlIGNvbnN0YW50IG1hcCBvZiB2YWx1ZXMgZm9yIEZhYXNJbnZva2VkUHJvdmlkZXJWYWx1ZXMuXG4gKiBAZGVwcmVjYXRlZCBVc2UgdGhlIEZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfWFhYWFggY29uc3RhbnRzIHJhdGhlciB0aGFuIHRoZSBGYWFzSW52b2tlZFByb3ZpZGVyVmFsdWVzLlhYWFhYIGZvciBidW5kbGUgbWluaWZpY2F0aW9uLlxuICovXG52YXIgRmFhc0ludm9rZWRQcm92aWRlclZhbHVlcyA9IFxuLyojX19QVVJFX18qLyBjcmVhdGVDb25zdE1hcChbXG4gICAgVE1QX0ZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfQUxJQkFCQV9DTE9VRCxcbiAgICBUTVBfRkFBU0lOVk9LRURQUk9WSURFUlZBTFVFU19BV1MsXG4gICAgVE1QX0ZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfQVpVUkUsXG4gICAgVE1QX0ZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfR0NQLFxuXSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBDb25zdGFudCB2YWx1ZXMgZm9yIE5ldFRyYW5zcG9ydFZhbHVlcyBlbnVtIGRlZmluaXRpb25cbiAqXG4gKiBUcmFuc3BvcnQgcHJvdG9jb2wgdXNlZC4gU2VlIG5vdGUgYmVsb3cuXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vLyBUZW1wb3JhcnkgbG9jYWwgY29uc3RhbnRzIHRvIGFzc2lnbiB0byB0aGUgaW5kaXZpZHVhbCBleHBvcnRzIGFuZCB0aGUgbmFtZXNwYWNlZCB2ZXJzaW9uXG4vLyBSZXF1aXJlZCB0byBhdm9pZCB0aGUgbmFtZXNwYWNlIGV4cG9ydHMgdXNpbmcgdGhlIHVubWluaWZpYWJsZSBleHBvcnQgbmFtZXMgZm9yIHNvbWUgcGFja2FnZSB0eXBlc1xudmFyIFRNUF9ORVRUUkFOU1BPUlRWQUxVRVNfSVBfVENQID0gJ2lwX3RjcCc7XG52YXIgVE1QX05FVFRSQU5TUE9SVFZBTFVFU19JUF9VRFAgPSAnaXBfdWRwJztcbnZhciBUTVBfTkVUVFJBTlNQT1JUVkFMVUVTX0lQID0gJ2lwJztcbnZhciBUTVBfTkVUVFJBTlNQT1JUVkFMVUVTX1VOSVggPSAndW5peCc7XG52YXIgVE1QX05FVFRSQU5TUE9SVFZBTFVFU19QSVBFID0gJ3BpcGUnO1xudmFyIFRNUF9ORVRUUkFOU1BPUlRWQUxVRVNfSU5QUk9DID0gJ2lucHJvYyc7XG52YXIgVE1QX05FVFRSQU5TUE9SVFZBTFVFU19PVEhFUiA9ICdvdGhlcic7XG4vKipcbiAqIFRyYW5zcG9ydCBwcm90b2NvbCB1c2VkLiBTZWUgbm90ZSBiZWxvdy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTkVUX1RSQU5TUE9SVF9WQUxVRV9JUF9UQ1AgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIE5FVFRSQU5TUE9SVFZBTFVFU19JUF9UQ1AgPSBUTVBfTkVUVFJBTlNQT1JUVkFMVUVTX0lQX1RDUDtcbi8qKlxuICogVHJhbnNwb3J0IHByb3RvY29sIHVzZWQuIFNlZSBub3RlIGJlbG93LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBORVRfVFJBTlNQT1JUX1ZBTFVFX0lQX1VEUCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUVFJBTlNQT1JUVkFMVUVTX0lQX1VEUCA9IFRNUF9ORVRUUkFOU1BPUlRWQUxVRVNfSVBfVURQO1xuLyoqXG4gKiBUcmFuc3BvcnQgcHJvdG9jb2wgdXNlZC4gU2VlIG5vdGUgYmVsb3cuXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVtb3ZlZCBpbiB2MS4yMS4wLlxuICovXG52YXIgTkVUVFJBTlNQT1JUVkFMVUVTX0lQID0gVE1QX05FVFRSQU5TUE9SVFZBTFVFU19JUDtcbi8qKlxuICogVHJhbnNwb3J0IHByb3RvY29sIHVzZWQuIFNlZSBub3RlIGJlbG93LlxuICpcbiAqIEBkZXByZWNhdGVkIFJlbW92ZWQgaW4gdjEuMjEuMC5cbiAqL1xudmFyIE5FVFRSQU5TUE9SVFZBTFVFU19VTklYID0gVE1QX05FVFRSQU5TUE9SVFZBTFVFU19VTklYO1xuLyoqXG4gKiBUcmFuc3BvcnQgcHJvdG9jb2wgdXNlZC4gU2VlIG5vdGUgYmVsb3cuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIE5FVF9UUkFOU1BPUlRfVkFMVUVfUElQRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUVFJBTlNQT1JUVkFMVUVTX1BJUEUgPSBUTVBfTkVUVFJBTlNQT1JUVkFMVUVTX1BJUEU7XG4vKipcbiAqIFRyYW5zcG9ydCBwcm90b2NvbCB1c2VkLiBTZWUgbm90ZSBiZWxvdy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTkVUX1RSQU5TUE9SVF9WQUxVRV9JTlBST0MgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIE5FVFRSQU5TUE9SVFZBTFVFU19JTlBST0MgPSBUTVBfTkVUVFJBTlNQT1JUVkFMVUVTX0lOUFJPQztcbi8qKlxuICogVHJhbnNwb3J0IHByb3RvY29sIHVzZWQuIFNlZSBub3RlIGJlbG93LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBORVRfVFJBTlNQT1JUX1ZBTFVFX09USEVSIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBORVRUUkFOU1BPUlRWQUxVRVNfT1RIRVIgPSBUTVBfTkVUVFJBTlNQT1JUVkFMVUVTX09USEVSO1xuLyoqXG4gKiBUaGUgY29uc3RhbnQgbWFwIG9mIHZhbHVlcyBmb3IgTmV0VHJhbnNwb3J0VmFsdWVzLlxuICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBORVRUUkFOU1BPUlRWQUxVRVNfWFhYWFggY29uc3RhbnRzIHJhdGhlciB0aGFuIHRoZSBOZXRUcmFuc3BvcnRWYWx1ZXMuWFhYWFggZm9yIGJ1bmRsZSBtaW5pZmljYXRpb24uXG4gKi9cbnZhciBOZXRUcmFuc3BvcnRWYWx1ZXMgPSBcbi8qI19fUFVSRV9fKi8gY3JlYXRlQ29uc3RNYXAoW1xuICAgIFRNUF9ORVRUUkFOU1BPUlRWQUxVRVNfSVBfVENQLFxuICAgIFRNUF9ORVRUUkFOU1BPUlRWQUxVRVNfSVBfVURQLFxuICAgIFRNUF9ORVRUUkFOU1BPUlRWQUxVRVNfSVAsXG4gICAgVE1QX05FVFRSQU5TUE9SVFZBTFVFU19VTklYLFxuICAgIFRNUF9ORVRUUkFOU1BPUlRWQUxVRVNfUElQRSxcbiAgICBUTVBfTkVUVFJBTlNQT1JUVkFMVUVTX0lOUFJPQyxcbiAgICBUTVBfTkVUVFJBTlNQT1JUVkFMVUVTX09USEVSLFxuXSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBDb25zdGFudCB2YWx1ZXMgZm9yIE5ldEhvc3RDb25uZWN0aW9uVHlwZVZhbHVlcyBlbnVtIGRlZmluaXRpb25cbiAqXG4gKiBUaGUgaW50ZXJuZXQgY29ubmVjdGlvbiB0eXBlIGN1cnJlbnRseSBiZWluZyB1c2VkIGJ5IHRoZSBob3N0LlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLy8gVGVtcG9yYXJ5IGxvY2FsIGNvbnN0YW50cyB0byBhc3NpZ24gdG8gdGhlIGluZGl2aWR1YWwgZXhwb3J0cyBhbmQgdGhlIG5hbWVzcGFjZWQgdmVyc2lvblxuLy8gUmVxdWlyZWQgdG8gYXZvaWQgdGhlIG5hbWVzcGFjZSBleHBvcnRzIHVzaW5nIHRoZSB1bm1pbmlmaWFibGUgZXhwb3J0IG5hbWVzIGZvciBzb21lIHBhY2thZ2UgdHlwZXNcbnZhciBUTVBfTkVUSE9TVENPTk5FQ1RJT05UWVBFVkFMVUVTX1dJRkkgPSAnd2lmaSc7XG52YXIgVE1QX05FVEhPU1RDT05ORUNUSU9OVFlQRVZBTFVFU19XSVJFRCA9ICd3aXJlZCc7XG52YXIgVE1QX05FVEhPU1RDT05ORUNUSU9OVFlQRVZBTFVFU19DRUxMID0gJ2NlbGwnO1xudmFyIFRNUF9ORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfVU5BVkFJTEFCTEUgPSAndW5hdmFpbGFibGUnO1xudmFyIFRNUF9ORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfVU5LTk9XTiA9ICd1bmtub3duJztcbi8qKlxuICogVGhlIGludGVybmV0IGNvbm5lY3Rpb24gdHlwZSBjdXJyZW50bHkgYmVpbmcgdXNlZCBieSB0aGUgaG9zdC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTkVUV09SS19DT05ORUNUSU9OX1RZUEVfVkFMVUVfV0lGSSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUSE9TVENPTk5FQ1RJT05UWVBFVkFMVUVTX1dJRkkgPSBUTVBfTkVUSE9TVENPTk5FQ1RJT05UWVBFVkFMVUVTX1dJRkk7XG4vKipcbiAqIFRoZSBpbnRlcm5ldCBjb25uZWN0aW9uIHR5cGUgY3VycmVudGx5IGJlaW5nIHVzZWQgYnkgdGhlIGhvc3QuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIE5FVFdPUktfQ09OTkVDVElPTl9UWVBFX1ZBTFVFX1dJUkVEIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfV0lSRUQgPSBUTVBfTkVUSE9TVENPTk5FQ1RJT05UWVBFVkFMVUVTX1dJUkVEO1xuLyoqXG4gKiBUaGUgaW50ZXJuZXQgY29ubmVjdGlvbiB0eXBlIGN1cnJlbnRseSBiZWluZyB1c2VkIGJ5IHRoZSBob3N0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBORVRXT1JLX0NPTk5FQ1RJT05fVFlQRV9WQUxVRV9DRUxMIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfQ0VMTCA9IFRNUF9ORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfQ0VMTDtcbi8qKlxuICogVGhlIGludGVybmV0IGNvbm5lY3Rpb24gdHlwZSBjdXJyZW50bHkgYmVpbmcgdXNlZCBieSB0aGUgaG9zdC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTkVUV09SS19DT05ORUNUSU9OX1RZUEVfVkFMVUVfVU5BVkFJTEFCTEUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIE5FVEhPU1RDT05ORUNUSU9OVFlQRVZBTFVFU19VTkFWQUlMQUJMRSA9IFRNUF9ORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfVU5BVkFJTEFCTEU7XG4vKipcbiAqIFRoZSBpbnRlcm5ldCBjb25uZWN0aW9uIHR5cGUgY3VycmVudGx5IGJlaW5nIHVzZWQgYnkgdGhlIGhvc3QuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIE5FVFdPUktfQ09OTkVDVElPTl9UWVBFX1ZBTFVFX1VOS05PV04gaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIE5FVEhPU1RDT05ORUNUSU9OVFlQRVZBTFVFU19VTktOT1dOID0gVE1QX05FVEhPU1RDT05ORUNUSU9OVFlQRVZBTFVFU19VTktOT1dOO1xuLyoqXG4gKiBUaGUgY29uc3RhbnQgbWFwIG9mIHZhbHVlcyBmb3IgTmV0SG9zdENvbm5lY3Rpb25UeXBlVmFsdWVzLlxuICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfWFhYWFggY29uc3RhbnRzIHJhdGhlciB0aGFuIHRoZSBOZXRIb3N0Q29ubmVjdGlvblR5cGVWYWx1ZXMuWFhYWFggZm9yIGJ1bmRsZSBtaW5pZmljYXRpb24uXG4gKi9cbnZhciBOZXRIb3N0Q29ubmVjdGlvblR5cGVWYWx1ZXMgPSBcbi8qI19fUFVSRV9fKi8gY3JlYXRlQ29uc3RNYXAoW1xuICAgIFRNUF9ORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfV0lGSSxcbiAgICBUTVBfTkVUSE9TVENPTk5FQ1RJT05UWVBFVkFMVUVTX1dJUkVELFxuICAgIFRNUF9ORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfQ0VMTCxcbiAgICBUTVBfTkVUSE9TVENPTk5FQ1RJT05UWVBFVkFMVUVTX1VOQVZBSUxBQkxFLFxuICAgIFRNUF9ORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfVU5LTk9XTixcbl0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQ29uc3RhbnQgdmFsdWVzIGZvciBOZXRIb3N0Q29ubmVjdGlvblN1YnR5cGVWYWx1ZXMgZW51bSBkZWZpbml0aW9uXG4gKlxuICogVGhpcyBkZXNjcmliZXMgbW9yZSBkZXRhaWxzIHJlZ2FyZGluZyB0aGUgY29ubmVjdGlvbi50eXBlLiBJdCBtYXkgYmUgdGhlIHR5cGUgb2YgY2VsbCB0ZWNobm9sb2d5IGNvbm5lY3Rpb24sIGJ1dCBpdCBjb3VsZCBiZSB1c2VkIGZvciBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgYSB3aWZpIGNvbm5lY3Rpb24uXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vLyBUZW1wb3JhcnkgbG9jYWwgY29uc3RhbnRzIHRvIGFzc2lnbiB0byB0aGUgaW5kaXZpZHVhbCBleHBvcnRzIGFuZCB0aGUgbmFtZXNwYWNlZCB2ZXJzaW9uXG4vLyBSZXF1aXJlZCB0byBhdm9pZCB0aGUgbmFtZXNwYWNlIGV4cG9ydHMgdXNpbmcgdGhlIHVubWluaWZpYWJsZSBleHBvcnQgbmFtZXMgZm9yIHNvbWUgcGFja2FnZSB0eXBlc1xudmFyIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfR1BSUyA9ICdncHJzJztcbnZhciBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VER0UgPSAnZWRnZSc7XG52YXIgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19VTVRTID0gJ3VtdHMnO1xudmFyIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfQ0RNQSA9ICdjZG1hJztcbnZhciBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fMCA9ICdldmRvXzAnO1xudmFyIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfRVZET19BID0gJ2V2ZG9fYSc7XG52YXIgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19DRE1BMjAwMF8xWFJUVCA9ICdjZG1hMjAwMF8xeHJ0dCc7XG52YXIgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19IU0RQQSA9ICdoc2RwYSc7XG52YXIgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19IU1VQQSA9ICdoc3VwYSc7XG52YXIgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19IU1BBID0gJ2hzcGEnO1xudmFyIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSURFTiA9ICdpZGVuJztcbnZhciBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fQiA9ICdldmRvX2InO1xudmFyIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfTFRFID0gJ2x0ZSc7XG52YXIgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19FSFJQRCA9ICdlaHJwZCc7XG52YXIgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19IU1BBUCA9ICdoc3BhcCc7XG52YXIgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19HU00gPSAnZ3NtJztcbnZhciBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX1REX1NDRE1BID0gJ3RkX3NjZG1hJztcbnZhciBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0lXTEFOID0gJ2l3bGFuJztcbnZhciBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX05SID0gJ25yJztcbnZhciBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX05STlNBID0gJ25ybnNhJztcbnZhciBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0xURV9DQSA9ICdsdGVfY2EnO1xuLyoqXG4gKiBUaGlzIGRlc2NyaWJlcyBtb3JlIGRldGFpbHMgcmVnYXJkaW5nIHRoZSBjb25uZWN0aW9uLnR5cGUuIEl0IG1heSBiZSB0aGUgdHlwZSBvZiBjZWxsIHRlY2hub2xvZ3kgY29ubmVjdGlvbiwgYnV0IGl0IGNvdWxkIGJlIHVzZWQgZm9yIGRlc2NyaWJpbmcgZGV0YWlscyBhYm91dCBhIHdpZmkgY29ubmVjdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTkVUV09SS19DT05ORUNUSU9OX1NVQlRZUEVfVkFMVUVfR1BSUyBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0dQUlMgPSBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0dQUlM7XG4vKipcbiAqIFRoaXMgZGVzY3JpYmVzIG1vcmUgZGV0YWlscyByZWdhcmRpbmcgdGhlIGNvbm5lY3Rpb24udHlwZS4gSXQgbWF5IGJlIHRoZSB0eXBlIG9mIGNlbGwgdGVjaG5vbG9neSBjb25uZWN0aW9uLCBidXQgaXQgY291bGQgYmUgdXNlZCBmb3IgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGEgd2lmaSBjb25uZWN0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBORVRXT1JLX0NPTk5FQ1RJT05fU1VCVFlQRV9WQUxVRV9FREdFIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfRURHRSA9IFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfRURHRTtcbi8qKlxuICogVGhpcyBkZXNjcmliZXMgbW9yZSBkZXRhaWxzIHJlZ2FyZGluZyB0aGUgY29ubmVjdGlvbi50eXBlLiBJdCBtYXkgYmUgdGhlIHR5cGUgb2YgY2VsbCB0ZWNobm9sb2d5IGNvbm5lY3Rpb24sIGJ1dCBpdCBjb3VsZCBiZSB1c2VkIGZvciBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgYSB3aWZpIGNvbm5lY3Rpb24uXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIE5FVFdPUktfQ09OTkVDVElPTl9TVUJUWVBFX1ZBTFVFX1VNVFMgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIE5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19VTVRTID0gVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19VTVRTO1xuLyoqXG4gKiBUaGlzIGRlc2NyaWJlcyBtb3JlIGRldGFpbHMgcmVnYXJkaW5nIHRoZSBjb25uZWN0aW9uLnR5cGUuIEl0IG1heSBiZSB0aGUgdHlwZSBvZiBjZWxsIHRlY2hub2xvZ3kgY29ubmVjdGlvbiwgYnV0IGl0IGNvdWxkIGJlIHVzZWQgZm9yIGRlc2NyaWJpbmcgZGV0YWlscyBhYm91dCBhIHdpZmkgY29ubmVjdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTkVUV09SS19DT05ORUNUSU9OX1NVQlRZUEVfVkFMVUVfQ0RNQSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0NETUEgPSBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0NETUE7XG4vKipcbiAqIFRoaXMgZGVzY3JpYmVzIG1vcmUgZGV0YWlscyByZWdhcmRpbmcgdGhlIGNvbm5lY3Rpb24udHlwZS4gSXQgbWF5IGJlIHRoZSB0eXBlIG9mIGNlbGwgdGVjaG5vbG9neSBjb25uZWN0aW9uLCBidXQgaXQgY291bGQgYmUgdXNlZCBmb3IgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGEgd2lmaSBjb25uZWN0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBORVRXT1JLX0NPTk5FQ1RJT05fU1VCVFlQRV9WQUxVRV9FVkRPXzAgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIE5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19FVkRPXzAgPSBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fMDtcbi8qKlxuICogVGhpcyBkZXNjcmliZXMgbW9yZSBkZXRhaWxzIHJlZ2FyZGluZyB0aGUgY29ubmVjdGlvbi50eXBlLiBJdCBtYXkgYmUgdGhlIHR5cGUgb2YgY2VsbCB0ZWNobm9sb2d5IGNvbm5lY3Rpb24sIGJ1dCBpdCBjb3VsZCBiZSB1c2VkIGZvciBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgYSB3aWZpIGNvbm5lY3Rpb24uXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIE5FVFdPUktfQ09OTkVDVElPTl9TVUJUWVBFX1ZBTFVFX0VWRE9fQSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fQSA9IFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfRVZET19BO1xuLyoqXG4gKiBUaGlzIGRlc2NyaWJlcyBtb3JlIGRldGFpbHMgcmVnYXJkaW5nIHRoZSBjb25uZWN0aW9uLnR5cGUuIEl0IG1heSBiZSB0aGUgdHlwZSBvZiBjZWxsIHRlY2hub2xvZ3kgY29ubmVjdGlvbiwgYnV0IGl0IGNvdWxkIGJlIHVzZWQgZm9yIGRlc2NyaWJpbmcgZGV0YWlscyBhYm91dCBhIHdpZmkgY29ubmVjdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTkVUV09SS19DT05ORUNUSU9OX1NVQlRZUEVfVkFMVUVfQ0RNQTIwMDBfMVhSVFQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIE5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19DRE1BMjAwMF8xWFJUVCA9IFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfQ0RNQTIwMDBfMVhSVFQ7XG4vKipcbiAqIFRoaXMgZGVzY3JpYmVzIG1vcmUgZGV0YWlscyByZWdhcmRpbmcgdGhlIGNvbm5lY3Rpb24udHlwZS4gSXQgbWF5IGJlIHRoZSB0eXBlIG9mIGNlbGwgdGVjaG5vbG9neSBjb25uZWN0aW9uLCBidXQgaXQgY291bGQgYmUgdXNlZCBmb3IgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGEgd2lmaSBjb25uZWN0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBORVRXT1JLX0NPTk5FQ1RJT05fU1VCVFlQRV9WQUxVRV9IU0RQQSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0hTRFBBID0gVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19IU0RQQTtcbi8qKlxuICogVGhpcyBkZXNjcmliZXMgbW9yZSBkZXRhaWxzIHJlZ2FyZGluZyB0aGUgY29ubmVjdGlvbi50eXBlLiBJdCBtYXkgYmUgdGhlIHR5cGUgb2YgY2VsbCB0ZWNobm9sb2d5IGNvbm5lY3Rpb24sIGJ1dCBpdCBjb3VsZCBiZSB1c2VkIGZvciBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgYSB3aWZpIGNvbm5lY3Rpb24uXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIE5FVFdPUktfQ09OTkVDVElPTl9TVUJUWVBFX1ZBTFVFX0hTVVBBIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSFNVUEEgPSBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0hTVVBBO1xuLyoqXG4gKiBUaGlzIGRlc2NyaWJlcyBtb3JlIGRldGFpbHMgcmVnYXJkaW5nIHRoZSBjb25uZWN0aW9uLnR5cGUuIEl0IG1heSBiZSB0aGUgdHlwZSBvZiBjZWxsIHRlY2hub2xvZ3kgY29ubmVjdGlvbiwgYnV0IGl0IGNvdWxkIGJlIHVzZWQgZm9yIGRlc2NyaWJpbmcgZGV0YWlscyBhYm91dCBhIHdpZmkgY29ubmVjdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTkVUV09SS19DT05ORUNUSU9OX1NVQlRZUEVfVkFMVUVfSFNQQSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0hTUEEgPSBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0hTUEE7XG4vKipcbiAqIFRoaXMgZGVzY3JpYmVzIG1vcmUgZGV0YWlscyByZWdhcmRpbmcgdGhlIGNvbm5lY3Rpb24udHlwZS4gSXQgbWF5IGJlIHRoZSB0eXBlIG9mIGNlbGwgdGVjaG5vbG9neSBjb25uZWN0aW9uLCBidXQgaXQgY291bGQgYmUgdXNlZCBmb3IgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGEgd2lmaSBjb25uZWN0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBORVRXT1JLX0NPTk5FQ1RJT05fU1VCVFlQRV9WQUxVRV9JREVOIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSURFTiA9IFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSURFTjtcbi8qKlxuICogVGhpcyBkZXNjcmliZXMgbW9yZSBkZXRhaWxzIHJlZ2FyZGluZyB0aGUgY29ubmVjdGlvbi50eXBlLiBJdCBtYXkgYmUgdGhlIHR5cGUgb2YgY2VsbCB0ZWNobm9sb2d5IGNvbm5lY3Rpb24sIGJ1dCBpdCBjb3VsZCBiZSB1c2VkIGZvciBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgYSB3aWZpIGNvbm5lY3Rpb24uXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIE5FVFdPUktfQ09OTkVDVElPTl9TVUJUWVBFX1ZBTFVFX0VWRE9fQiBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fQiA9IFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfRVZET19CO1xuLyoqXG4gKiBUaGlzIGRlc2NyaWJlcyBtb3JlIGRldGFpbHMgcmVnYXJkaW5nIHRoZSBjb25uZWN0aW9uLnR5cGUuIEl0IG1heSBiZSB0aGUgdHlwZSBvZiBjZWxsIHRlY2hub2xvZ3kgY29ubmVjdGlvbiwgYnV0IGl0IGNvdWxkIGJlIHVzZWQgZm9yIGRlc2NyaWJpbmcgZGV0YWlscyBhYm91dCBhIHdpZmkgY29ubmVjdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTkVUV09SS19DT05ORUNUSU9OX1NVQlRZUEVfVkFMVUVfTFRFIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfTFRFID0gVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19MVEU7XG4vKipcbiAqIFRoaXMgZGVzY3JpYmVzIG1vcmUgZGV0YWlscyByZWdhcmRpbmcgdGhlIGNvbm5lY3Rpb24udHlwZS4gSXQgbWF5IGJlIHRoZSB0eXBlIG9mIGNlbGwgdGVjaG5vbG9neSBjb25uZWN0aW9uLCBidXQgaXQgY291bGQgYmUgdXNlZCBmb3IgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGEgd2lmaSBjb25uZWN0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBORVRXT1JLX0NPTk5FQ1RJT05fU1VCVFlQRV9WQUxVRV9FSFJQRCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VIUlBEID0gVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19FSFJQRDtcbi8qKlxuICogVGhpcyBkZXNjcmliZXMgbW9yZSBkZXRhaWxzIHJlZ2FyZGluZyB0aGUgY29ubmVjdGlvbi50eXBlLiBJdCBtYXkgYmUgdGhlIHR5cGUgb2YgY2VsbCB0ZWNobm9sb2d5IGNvbm5lY3Rpb24sIGJ1dCBpdCBjb3VsZCBiZSB1c2VkIGZvciBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgYSB3aWZpIGNvbm5lY3Rpb24uXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIE5FVFdPUktfQ09OTkVDVElPTl9TVUJUWVBFX1ZBTFVFX0hTUEFQIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSFNQQVAgPSBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0hTUEFQO1xuLyoqXG4gKiBUaGlzIGRlc2NyaWJlcyBtb3JlIGRldGFpbHMgcmVnYXJkaW5nIHRoZSBjb25uZWN0aW9uLnR5cGUuIEl0IG1heSBiZSB0aGUgdHlwZSBvZiBjZWxsIHRlY2hub2xvZ3kgY29ubmVjdGlvbiwgYnV0IGl0IGNvdWxkIGJlIHVzZWQgZm9yIGRlc2NyaWJpbmcgZGV0YWlscyBhYm91dCBhIHdpZmkgY29ubmVjdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTkVUV09SS19DT05ORUNUSU9OX1NVQlRZUEVfVkFMVUVfR1NNIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfR1NNID0gVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19HU007XG4vKipcbiAqIFRoaXMgZGVzY3JpYmVzIG1vcmUgZGV0YWlscyByZWdhcmRpbmcgdGhlIGNvbm5lY3Rpb24udHlwZS4gSXQgbWF5IGJlIHRoZSB0eXBlIG9mIGNlbGwgdGVjaG5vbG9neSBjb25uZWN0aW9uLCBidXQgaXQgY291bGQgYmUgdXNlZCBmb3IgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGEgd2lmaSBjb25uZWN0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBORVRXT1JLX0NPTk5FQ1RJT05fU1VCVFlQRV9WQUxVRV9URF9TQ0RNQSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX1REX1NDRE1BID0gVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19URF9TQ0RNQTtcbi8qKlxuICogVGhpcyBkZXNjcmliZXMgbW9yZSBkZXRhaWxzIHJlZ2FyZGluZyB0aGUgY29ubmVjdGlvbi50eXBlLiBJdCBtYXkgYmUgdGhlIHR5cGUgb2YgY2VsbCB0ZWNobm9sb2d5IGNvbm5lY3Rpb24sIGJ1dCBpdCBjb3VsZCBiZSB1c2VkIGZvciBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgYSB3aWZpIGNvbm5lY3Rpb24uXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIE5FVFdPUktfQ09OTkVDVElPTl9TVUJUWVBFX1ZBTFVFX0lXTEFOIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSVdMQU4gPSBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0lXTEFOO1xuLyoqXG4gKiBUaGlzIGRlc2NyaWJlcyBtb3JlIGRldGFpbHMgcmVnYXJkaW5nIHRoZSBjb25uZWN0aW9uLnR5cGUuIEl0IG1heSBiZSB0aGUgdHlwZSBvZiBjZWxsIHRlY2hub2xvZ3kgY29ubmVjdGlvbiwgYnV0IGl0IGNvdWxkIGJlIHVzZWQgZm9yIGRlc2NyaWJpbmcgZGV0YWlscyBhYm91dCBhIHdpZmkgY29ubmVjdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTkVUV09SS19DT05ORUNUSU9OX1NVQlRZUEVfVkFMVUVfTlIgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIE5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19OUiA9IFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfTlI7XG4vKipcbiAqIFRoaXMgZGVzY3JpYmVzIG1vcmUgZGV0YWlscyByZWdhcmRpbmcgdGhlIGNvbm5lY3Rpb24udHlwZS4gSXQgbWF5IGJlIHRoZSB0eXBlIG9mIGNlbGwgdGVjaG5vbG9neSBjb25uZWN0aW9uLCBidXQgaXQgY291bGQgYmUgdXNlZCBmb3IgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGEgd2lmaSBjb25uZWN0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBORVRXT1JLX0NPTk5FQ1RJT05fU1VCVFlQRV9WQUxVRV9OUk5TQSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX05STlNBID0gVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19OUk5TQTtcbi8qKlxuICogVGhpcyBkZXNjcmliZXMgbW9yZSBkZXRhaWxzIHJlZ2FyZGluZyB0aGUgY29ubmVjdGlvbi50eXBlLiBJdCBtYXkgYmUgdGhlIHR5cGUgb2YgY2VsbCB0ZWNobm9sb2d5IGNvbm5lY3Rpb24sIGJ1dCBpdCBjb3VsZCBiZSB1c2VkIGZvciBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgYSB3aWZpIGNvbm5lY3Rpb24uXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIE5FVFdPUktfQ09OTkVDVElPTl9TVUJUWVBFX1ZBTFVFX0xURV9DQSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0xURV9DQSA9IFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfTFRFX0NBO1xuLyoqXG4gKiBUaGUgY29uc3RhbnQgbWFwIG9mIHZhbHVlcyBmb3IgTmV0SG9zdENvbm5lY3Rpb25TdWJ0eXBlVmFsdWVzLlxuICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfWFhYWFggY29uc3RhbnRzIHJhdGhlciB0aGFuIHRoZSBOZXRIb3N0Q29ubmVjdGlvblN1YnR5cGVWYWx1ZXMuWFhYWFggZm9yIGJ1bmRsZSBtaW5pZmljYXRpb24uXG4gKi9cbnZhciBOZXRIb3N0Q29ubmVjdGlvblN1YnR5cGVWYWx1ZXMgPSBcbi8qI19fUFVSRV9fKi8gY3JlYXRlQ29uc3RNYXAoW1xuICAgIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfR1BSUyxcbiAgICBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VER0UsXG4gICAgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19VTVRTLFxuICAgIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfQ0RNQSxcbiAgICBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fMCxcbiAgICBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fQSxcbiAgICBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0NETUEyMDAwXzFYUlRULFxuICAgIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSFNEUEEsXG4gICAgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19IU1VQQSxcbiAgICBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0hTUEEsXG4gICAgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19JREVOLFxuICAgIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfRVZET19CLFxuICAgIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfTFRFLFxuICAgIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfRUhSUEQsXG4gICAgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19IU1BBUCxcbiAgICBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0dTTSxcbiAgICBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX1REX1NDRE1BLFxuICAgIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSVdMQU4sXG4gICAgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19OUixcbiAgICBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX05STlNBLFxuICAgIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfTFRFX0NBLFxuXSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBDb25zdGFudCB2YWx1ZXMgZm9yIEh0dHBGbGF2b3JWYWx1ZXMgZW51bSBkZWZpbml0aW9uXG4gKlxuICogS2luZCBvZiBIVFRQIHByb3RvY29sIHVzZWQuXG4gKlxuICogTm90ZTogSWYgYG5ldC50cmFuc3BvcnRgIGlzIG5vdCBzcGVjaWZpZWQsIGl0IGNhbiBiZSBhc3N1bWVkIHRvIGJlIGBJUC5UQ1BgIGV4Y2VwdCBpZiBgaHR0cC5mbGF2b3JgIGlzIGBRVUlDYCwgaW4gd2hpY2ggY2FzZSBgSVAuVURQYCBpcyBhc3N1bWVkLlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLy8gVGVtcG9yYXJ5IGxvY2FsIGNvbnN0YW50cyB0byBhc3NpZ24gdG8gdGhlIGluZGl2aWR1YWwgZXhwb3J0cyBhbmQgdGhlIG5hbWVzcGFjZWQgdmVyc2lvblxuLy8gUmVxdWlyZWQgdG8gYXZvaWQgdGhlIG5hbWVzcGFjZSBleHBvcnRzIHVzaW5nIHRoZSB1bm1pbmlmaWFibGUgZXhwb3J0IG5hbWVzIGZvciBzb21lIHBhY2thZ2UgdHlwZXNcbnZhciBUTVBfSFRUUEZMQVZPUlZBTFVFU19IVFRQXzFfMCA9ICcxLjAnO1xudmFyIFRNUF9IVFRQRkxBVk9SVkFMVUVTX0hUVFBfMV8xID0gJzEuMSc7XG52YXIgVE1QX0hUVFBGTEFWT1JWQUxVRVNfSFRUUF8yXzAgPSAnMi4wJztcbnZhciBUTVBfSFRUUEZMQVZPUlZBTFVFU19TUERZID0gJ1NQRFknO1xudmFyIFRNUF9IVFRQRkxBVk9SVkFMVUVTX1FVSUMgPSAnUVVJQyc7XG4vKipcbiAqIEtpbmQgb2YgSFRUUCBwcm90b2NvbCB1c2VkLlxuICpcbiAqIE5vdGU6IElmIGBuZXQudHJhbnNwb3J0YCBpcyBub3Qgc3BlY2lmaWVkLCBpdCBjYW4gYmUgYXNzdW1lZCB0byBiZSBgSVAuVENQYCBleGNlcHQgaWYgYGh0dHAuZmxhdm9yYCBpcyBgUVVJQ2AsIGluIHdoaWNoIGNhc2UgYElQLlVEUGAgaXMgYXNzdW1lZC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgSFRUUF9GTEFWT1JfVkFMVUVfSFRUUF8xXzAgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIEhUVFBGTEFWT1JWQUxVRVNfSFRUUF8xXzAgPSBUTVBfSFRUUEZMQVZPUlZBTFVFU19IVFRQXzFfMDtcbi8qKlxuICogS2luZCBvZiBIVFRQIHByb3RvY29sIHVzZWQuXG4gKlxuICogTm90ZTogSWYgYG5ldC50cmFuc3BvcnRgIGlzIG5vdCBzcGVjaWZpZWQsIGl0IGNhbiBiZSBhc3N1bWVkIHRvIGJlIGBJUC5UQ1BgIGV4Y2VwdCBpZiBgaHR0cC5mbGF2b3JgIGlzIGBRVUlDYCwgaW4gd2hpY2ggY2FzZSBgSVAuVURQYCBpcyBhc3N1bWVkLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBIVFRQX0ZMQVZPUl9WQUxVRV9IVFRQXzFfMSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgSFRUUEZMQVZPUlZBTFVFU19IVFRQXzFfMSA9IFRNUF9IVFRQRkxBVk9SVkFMVUVTX0hUVFBfMV8xO1xuLyoqXG4gKiBLaW5kIG9mIEhUVFAgcHJvdG9jb2wgdXNlZC5cbiAqXG4gKiBOb3RlOiBJZiBgbmV0LnRyYW5zcG9ydGAgaXMgbm90IHNwZWNpZmllZCwgaXQgY2FuIGJlIGFzc3VtZWQgdG8gYmUgYElQLlRDUGAgZXhjZXB0IGlmIGBodHRwLmZsYXZvcmAgaXMgYFFVSUNgLCBpbiB3aGljaCBjYXNlIGBJUC5VRFBgIGlzIGFzc3VtZWQuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEhUVFBfRkxBVk9SX1ZBTFVFX0hUVFBfMl8wIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBIVFRQRkxBVk9SVkFMVUVTX0hUVFBfMl8wID0gVE1QX0hUVFBGTEFWT1JWQUxVRVNfSFRUUF8yXzA7XG4vKipcbiAqIEtpbmQgb2YgSFRUUCBwcm90b2NvbCB1c2VkLlxuICpcbiAqIE5vdGU6IElmIGBuZXQudHJhbnNwb3J0YCBpcyBub3Qgc3BlY2lmaWVkLCBpdCBjYW4gYmUgYXNzdW1lZCB0byBiZSBgSVAuVENQYCBleGNlcHQgaWYgYGh0dHAuZmxhdm9yYCBpcyBgUVVJQ2AsIGluIHdoaWNoIGNhc2UgYElQLlVEUGAgaXMgYXNzdW1lZC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgSFRUUF9GTEFWT1JfVkFMVUVfU1BEWSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgSFRUUEZMQVZPUlZBTFVFU19TUERZID0gVE1QX0hUVFBGTEFWT1JWQUxVRVNfU1BEWTtcbi8qKlxuICogS2luZCBvZiBIVFRQIHByb3RvY29sIHVzZWQuXG4gKlxuICogTm90ZTogSWYgYG5ldC50cmFuc3BvcnRgIGlzIG5vdCBzcGVjaWZpZWQsIGl0IGNhbiBiZSBhc3N1bWVkIHRvIGJlIGBJUC5UQ1BgIGV4Y2VwdCBpZiBgaHR0cC5mbGF2b3JgIGlzIGBRVUlDYCwgaW4gd2hpY2ggY2FzZSBgSVAuVURQYCBpcyBhc3N1bWVkLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBIVFRQX0ZMQVZPUl9WQUxVRV9RVUlDIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBIVFRQRkxBVk9SVkFMVUVTX1FVSUMgPSBUTVBfSFRUUEZMQVZPUlZBTFVFU19RVUlDO1xuLyoqXG4gKiBUaGUgY29uc3RhbnQgbWFwIG9mIHZhbHVlcyBmb3IgSHR0cEZsYXZvclZhbHVlcy5cbiAqIEBkZXByZWNhdGVkIFVzZSB0aGUgSFRUUEZMQVZPUlZBTFVFU19YWFhYWCBjb25zdGFudHMgcmF0aGVyIHRoYW4gdGhlIEh0dHBGbGF2b3JWYWx1ZXMuWFhYWFggZm9yIGJ1bmRsZSBtaW5pZmljYXRpb24uXG4gKi9cbnZhciBIdHRwRmxhdm9yVmFsdWVzID0ge1xuICAgIEhUVFBfMV8wOiBUTVBfSFRUUEZMQVZPUlZBTFVFU19IVFRQXzFfMCxcbiAgICBIVFRQXzFfMTogVE1QX0hUVFBGTEFWT1JWQUxVRVNfSFRUUF8xXzEsXG4gICAgSFRUUF8yXzA6IFRNUF9IVFRQRkxBVk9SVkFMVUVTX0hUVFBfMl8wLFxuICAgIFNQRFk6IFRNUF9IVFRQRkxBVk9SVkFMVUVTX1NQRFksXG4gICAgUVVJQzogVE1QX0hUVFBGTEFWT1JWQUxVRVNfUVVJQyxcbn07XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBDb25zdGFudCB2YWx1ZXMgZm9yIE1lc3NhZ2luZ0Rlc3RpbmF0aW9uS2luZFZhbHVlcyBlbnVtIGRlZmluaXRpb25cbiAqXG4gKiBUaGUga2luZCBvZiBtZXNzYWdlIGRlc3RpbmF0aW9uLlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLy8gVGVtcG9yYXJ5IGxvY2FsIGNvbnN0YW50cyB0byBhc3NpZ24gdG8gdGhlIGluZGl2aWR1YWwgZXhwb3J0cyBhbmQgdGhlIG5hbWVzcGFjZWQgdmVyc2lvblxuLy8gUmVxdWlyZWQgdG8gYXZvaWQgdGhlIG5hbWVzcGFjZSBleHBvcnRzIHVzaW5nIHRoZSB1bm1pbmlmaWFibGUgZXhwb3J0IG5hbWVzIGZvciBzb21lIHBhY2thZ2UgdHlwZXNcbnZhciBUTVBfTUVTU0FHSU5HREVTVElOQVRJT05LSU5EVkFMVUVTX1FVRVVFID0gJ3F1ZXVlJztcbnZhciBUTVBfTUVTU0FHSU5HREVTVElOQVRJT05LSU5EVkFMVUVTX1RPUElDID0gJ3RvcGljJztcbi8qKlxuICogVGhlIGtpbmQgb2YgbWVzc2FnZSBkZXN0aW5hdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBSZW1vdmVkIGluIHNlbWNvbnYgdjEuMjAuMC5cbiAqL1xudmFyIE1FU1NBR0lOR0RFU1RJTkFUSU9OS0lORFZBTFVFU19RVUVVRSA9IFRNUF9NRVNTQUdJTkdERVNUSU5BVElPTktJTkRWQUxVRVNfUVVFVUU7XG4vKipcbiAqIFRoZSBraW5kIG9mIG1lc3NhZ2UgZGVzdGluYXRpb24uXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVtb3ZlZCBpbiBzZW1jb252IHYxLjIwLjAuXG4gKi9cbnZhciBNRVNTQUdJTkdERVNUSU5BVElPTktJTkRWQUxVRVNfVE9QSUMgPSBUTVBfTUVTU0FHSU5HREVTVElOQVRJT05LSU5EVkFMVUVTX1RPUElDO1xuLyoqXG4gKiBUaGUgY29uc3RhbnQgbWFwIG9mIHZhbHVlcyBmb3IgTWVzc2FnaW5nRGVzdGluYXRpb25LaW5kVmFsdWVzLlxuICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBNRVNTQUdJTkdERVNUSU5BVElPTktJTkRWQUxVRVNfWFhYWFggY29uc3RhbnRzIHJhdGhlciB0aGFuIHRoZSBNZXNzYWdpbmdEZXN0aW5hdGlvbktpbmRWYWx1ZXMuWFhYWFggZm9yIGJ1bmRsZSBtaW5pZmljYXRpb24uXG4gKi9cbnZhciBNZXNzYWdpbmdEZXN0aW5hdGlvbktpbmRWYWx1ZXMgPSBcbi8qI19fUFVSRV9fKi8gY3JlYXRlQ29uc3RNYXAoW1xuICAgIFRNUF9NRVNTQUdJTkdERVNUSU5BVElPTktJTkRWQUxVRVNfUVVFVUUsXG4gICAgVE1QX01FU1NBR0lOR0RFU1RJTkFUSU9OS0lORFZBTFVFU19UT1BJQyxcbl0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQ29uc3RhbnQgdmFsdWVzIGZvciBNZXNzYWdpbmdPcGVyYXRpb25WYWx1ZXMgZW51bSBkZWZpbml0aW9uXG4gKlxuICogQSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIGtpbmQgb2YgbWVzc2FnZSBjb25zdW1wdGlvbiBhcyBkZWZpbmVkIGluIHRoZSBbT3BlcmF0aW9uIG5hbWVzXSgjb3BlcmF0aW9uLW5hbWVzKSBzZWN0aW9uIGFib3ZlLiBJZiB0aGUgb3BlcmF0aW9uIGlzICYjMzQ7c2VuZCYjMzQ7LCB0aGlzIGF0dHJpYnV0ZSBNVVNUIE5PVCBiZSBzZXQsIHNpbmNlIHRoZSBvcGVyYXRpb24gY2FuIGJlIGluZmVycmVkIGZyb20gdGhlIHNwYW4ga2luZCBpbiB0aGF0IGNhc2UuXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vLyBUZW1wb3JhcnkgbG9jYWwgY29uc3RhbnRzIHRvIGFzc2lnbiB0byB0aGUgaW5kaXZpZHVhbCBleHBvcnRzIGFuZCB0aGUgbmFtZXNwYWNlZCB2ZXJzaW9uXG4vLyBSZXF1aXJlZCB0byBhdm9pZCB0aGUgbmFtZXNwYWNlIGV4cG9ydHMgdXNpbmcgdGhlIHVubWluaWZpYWJsZSBleHBvcnQgbmFtZXMgZm9yIHNvbWUgcGFja2FnZSB0eXBlc1xudmFyIFRNUF9NRVNTQUdJTkdPUEVSQVRJT05WQUxVRVNfUkVDRUlWRSA9ICdyZWNlaXZlJztcbnZhciBUTVBfTUVTU0FHSU5HT1BFUkFUSU9OVkFMVUVTX1BST0NFU1MgPSAncHJvY2Vzcyc7XG4vKipcbiAqIEEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBraW5kIG9mIG1lc3NhZ2UgY29uc3VtcHRpb24gYXMgZGVmaW5lZCBpbiB0aGUgW09wZXJhdGlvbiBuYW1lc10oI29wZXJhdGlvbi1uYW1lcykgc2VjdGlvbiBhYm92ZS4gSWYgdGhlIG9wZXJhdGlvbiBpcyAmIzM0O3NlbmQmIzM0OywgdGhpcyBhdHRyaWJ1dGUgTVVTVCBOT1QgYmUgc2V0LCBzaW5jZSB0aGUgb3BlcmF0aW9uIGNhbiBiZSBpbmZlcnJlZCBmcm9tIHRoZSBzcGFuIGtpbmQgaW4gdGhhdCBjYXNlLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBNRVNTQUdJTkdfT1BFUkFUSU9OX1RZUEVfVkFMVUVfUkVDRUlWRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTUVTU0FHSU5HT1BFUkFUSU9OVkFMVUVTX1JFQ0VJVkUgPSBUTVBfTUVTU0FHSU5HT1BFUkFUSU9OVkFMVUVTX1JFQ0VJVkU7XG4vKipcbiAqIEEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBraW5kIG9mIG1lc3NhZ2UgY29uc3VtcHRpb24gYXMgZGVmaW5lZCBpbiB0aGUgW09wZXJhdGlvbiBuYW1lc10oI29wZXJhdGlvbi1uYW1lcykgc2VjdGlvbiBhYm92ZS4gSWYgdGhlIG9wZXJhdGlvbiBpcyAmIzM0O3NlbmQmIzM0OywgdGhpcyBhdHRyaWJ1dGUgTVVTVCBOT1QgYmUgc2V0LCBzaW5jZSB0aGUgb3BlcmF0aW9uIGNhbiBiZSBpbmZlcnJlZCBmcm9tIHRoZSBzcGFuIGtpbmQgaW4gdGhhdCBjYXNlLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBNRVNTQUdJTkdfT1BFUkFUSU9OX1RZUEVfVkFMVUVfUFJPQ0VTUyBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTUVTU0FHSU5HT1BFUkFUSU9OVkFMVUVTX1BST0NFU1MgPSBUTVBfTUVTU0FHSU5HT1BFUkFUSU9OVkFMVUVTX1BST0NFU1M7XG4vKipcbiAqIFRoZSBjb25zdGFudCBtYXAgb2YgdmFsdWVzIGZvciBNZXNzYWdpbmdPcGVyYXRpb25WYWx1ZXMuXG4gKiBAZGVwcmVjYXRlZCBVc2UgdGhlIE1FU1NBR0lOR09QRVJBVElPTlZBTFVFU19YWFhYWCBjb25zdGFudHMgcmF0aGVyIHRoYW4gdGhlIE1lc3NhZ2luZ09wZXJhdGlvblZhbHVlcy5YWFhYWCBmb3IgYnVuZGxlIG1pbmlmaWNhdGlvbi5cbiAqL1xudmFyIE1lc3NhZ2luZ09wZXJhdGlvblZhbHVlcyA9IFxuLyojX19QVVJFX18qLyBjcmVhdGVDb25zdE1hcChbXG4gICAgVE1QX01FU1NBR0lOR09QRVJBVElPTlZBTFVFU19SRUNFSVZFLFxuICAgIFRNUF9NRVNTQUdJTkdPUEVSQVRJT05WQUxVRVNfUFJPQ0VTUyxcbl0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQ29uc3RhbnQgdmFsdWVzIGZvciBScGNHcnBjU3RhdHVzQ29kZVZhbHVlcyBlbnVtIGRlZmluaXRpb25cbiAqXG4gKiBUaGUgW251bWVyaWMgc3RhdHVzIGNvZGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ncnBjL2dycGMvYmxvYi92MS4zMy4yL2RvYy9zdGF0dXNjb2Rlcy5tZCkgb2YgdGhlIGdSUEMgcmVxdWVzdC5cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8vIFRlbXBvcmFyeSBsb2NhbCBjb25zdGFudHMgdG8gYXNzaWduIHRvIHRoZSBpbmRpdmlkdWFsIGV4cG9ydHMgYW5kIHRoZSBuYW1lc3BhY2VkIHZlcnNpb25cbi8vIFJlcXVpcmVkIHRvIGF2b2lkIHRoZSBuYW1lc3BhY2UgZXhwb3J0cyB1c2luZyB0aGUgdW5taW5pZmlhYmxlIGV4cG9ydCBuYW1lcyBmb3Igc29tZSBwYWNrYWdlIHR5cGVzXG52YXIgVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX09LID0gMDtcbnZhciBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfQ0FOQ0VMTEVEID0gMTtcbnZhciBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfVU5LTk9XTiA9IDI7XG52YXIgVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0lOVkFMSURfQVJHVU1FTlQgPSAzO1xudmFyIFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19ERUFETElORV9FWENFRURFRCA9IDQ7XG52YXIgVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX05PVF9GT1VORCA9IDU7XG52YXIgVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0FMUkVBRFlfRVhJU1RTID0gNjtcbnZhciBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfUEVSTUlTU0lPTl9ERU5JRUQgPSA3O1xudmFyIFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19SRVNPVVJDRV9FWEhBVVNURUQgPSA4O1xudmFyIFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19GQUlMRURfUFJFQ09ORElUSU9OID0gOTtcbnZhciBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfQUJPUlRFRCA9IDEwO1xudmFyIFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19PVVRfT0ZfUkFOR0UgPSAxMTtcbnZhciBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfVU5JTVBMRU1FTlRFRCA9IDEyO1xudmFyIFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19JTlRFUk5BTCA9IDEzO1xudmFyIFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19VTkFWQUlMQUJMRSA9IDE0O1xudmFyIFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19EQVRBX0xPU1MgPSAxNTtcbnZhciBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfVU5BVVRIRU5USUNBVEVEID0gMTY7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9PSyBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfT0sgPSBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfT0s7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9DQU5DRUxMRUQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0NBTkNFTExFRCA9IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19DQU5DRUxMRUQ7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9VTktOT1dOIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19VTktOT1dOID0gVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX1VOS05PV047XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9JTlZBTElEX0FSR1VNRU5UIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19JTlZBTElEX0FSR1VNRU5UID0gVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0lOVkFMSURfQVJHVU1FTlQ7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9ERUFETElORV9FWENFRURFRCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfREVBRExJTkVfRVhDRUVERUQgPSBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfREVBRExJTkVfRVhDRUVERUQ7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9OT1RfRk9VTkQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX05PVF9GT1VORCA9IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19OT1RfRk9VTkQ7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9BTFJFQURZX0VYSVNUUyBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfQUxSRUFEWV9FWElTVFMgPSBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfQUxSRUFEWV9FWElTVFM7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9QRVJNSVNTSU9OX0RFTklFRCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfUEVSTUlTU0lPTl9ERU5JRUQgPSBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfUEVSTUlTU0lPTl9ERU5JRUQ7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9SRVNPVVJDRV9FWEhBVVNURUQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX1JFU09VUkNFX0VYSEFVU1RFRCA9IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19SRVNPVVJDRV9FWEhBVVNURUQ7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9GQUlMRURfUFJFQ09ORElUSU9OIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19GQUlMRURfUFJFQ09ORElUSU9OID0gVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0ZBSUxFRF9QUkVDT05ESVRJT047XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9BQk9SVEVEIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19BQk9SVEVEID0gVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0FCT1JURUQ7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9PVVRfT0ZfUkFOR0UgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX09VVF9PRl9SQU5HRSA9IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19PVVRfT0ZfUkFOR0U7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9VTklNUExFTUVOVEVEIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19VTklNUExFTUVOVEVEID0gVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX1VOSU1QTEVNRU5URUQ7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9JTlRFUk5BTCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfSU5URVJOQUwgPSBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfSU5URVJOQUw7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9VTkFWQUlMQUJMRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfVU5BVkFJTEFCTEUgPSBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfVU5BVkFJTEFCTEU7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9EQVRBX0xPU1MgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0RBVEFfTE9TUyA9IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19EQVRBX0xPU1M7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9VTkFVVEhFTlRJQ0FURUQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX1VOQVVUSEVOVElDQVRFRCA9IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19VTkFVVEhFTlRJQ0FURUQ7XG4vKipcbiAqIFRoZSBjb25zdGFudCBtYXAgb2YgdmFsdWVzIGZvciBScGNHcnBjU3RhdHVzQ29kZVZhbHVlcy5cbiAqIEBkZXByZWNhdGVkIFVzZSB0aGUgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfWFhYWFggY29uc3RhbnRzIHJhdGhlciB0aGFuIHRoZSBScGNHcnBjU3RhdHVzQ29kZVZhbHVlcy5YWFhYWCBmb3IgYnVuZGxlIG1pbmlmaWNhdGlvbi5cbiAqL1xudmFyIFJwY0dycGNTdGF0dXNDb2RlVmFsdWVzID0ge1xuICAgIE9LOiBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfT0ssXG4gICAgQ0FOQ0VMTEVEOiBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfQ0FOQ0VMTEVELFxuICAgIFVOS05PV046IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19VTktOT1dOLFxuICAgIElOVkFMSURfQVJHVU1FTlQ6IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19JTlZBTElEX0FSR1VNRU5ULFxuICAgIERFQURMSU5FX0VYQ0VFREVEOiBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfREVBRExJTkVfRVhDRUVERUQsXG4gICAgTk9UX0ZPVU5EOiBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfTk9UX0ZPVU5ELFxuICAgIEFMUkVBRFlfRVhJU1RTOiBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfQUxSRUFEWV9FWElTVFMsXG4gICAgUEVSTUlTU0lPTl9ERU5JRUQ6IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19QRVJNSVNTSU9OX0RFTklFRCxcbiAgICBSRVNPVVJDRV9FWEhBVVNURUQ6IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19SRVNPVVJDRV9FWEhBVVNURUQsXG4gICAgRkFJTEVEX1BSRUNPTkRJVElPTjogVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0ZBSUxFRF9QUkVDT05ESVRJT04sXG4gICAgQUJPUlRFRDogVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0FCT1JURUQsXG4gICAgT1VUX09GX1JBTkdFOiBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfT1VUX09GX1JBTkdFLFxuICAgIFVOSU1QTEVNRU5URUQ6IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19VTklNUExFTUVOVEVELFxuICAgIElOVEVSTkFMOiBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfSU5URVJOQUwsXG4gICAgVU5BVkFJTEFCTEU6IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19VTkFWQUlMQUJMRSxcbiAgICBEQVRBX0xPU1M6IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19EQVRBX0xPU1MsXG4gICAgVU5BVVRIRU5USUNBVEVEOiBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfVU5BVVRIRU5USUNBVEVELFxufTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIENvbnN0YW50IHZhbHVlcyBmb3IgTWVzc2FnZVR5cGVWYWx1ZXMgZW51bSBkZWZpbml0aW9uXG4gKlxuICogV2hldGhlciB0aGlzIGlzIGEgcmVjZWl2ZWQgb3Igc2VudCBtZXNzYWdlLlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLy8gVGVtcG9yYXJ5IGxvY2FsIGNvbnN0YW50cyB0byBhc3NpZ24gdG8gdGhlIGluZGl2aWR1YWwgZXhwb3J0cyBhbmQgdGhlIG5hbWVzcGFjZWQgdmVyc2lvblxuLy8gUmVxdWlyZWQgdG8gYXZvaWQgdGhlIG5hbWVzcGFjZSBleHBvcnRzIHVzaW5nIHRoZSB1bm1pbmlmaWFibGUgZXhwb3J0IG5hbWVzIGZvciBzb21lIHBhY2thZ2UgdHlwZXNcbnZhciBUTVBfTUVTU0FHRVRZUEVWQUxVRVNfU0VOVCA9ICdTRU5UJztcbnZhciBUTVBfTUVTU0FHRVRZUEVWQUxVRVNfUkVDRUlWRUQgPSAnUkVDRUlWRUQnO1xuLyoqXG4gKiBXaGV0aGVyIHRoaXMgaXMgYSByZWNlaXZlZCBvciBzZW50IG1lc3NhZ2UuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIE1FU1NBR0VfVFlQRV9WQUxVRV9TRU5UIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBNRVNTQUdFVFlQRVZBTFVFU19TRU5UID0gVE1QX01FU1NBR0VUWVBFVkFMVUVTX1NFTlQ7XG4vKipcbiAqIFdoZXRoZXIgdGhpcyBpcyBhIHJlY2VpdmVkIG9yIHNlbnQgbWVzc2FnZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTUVTU0FHRV9UWVBFX1ZBTFVFX1JFQ0VJVkVEIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBNRVNTQUdFVFlQRVZBTFVFU19SRUNFSVZFRCA9IFRNUF9NRVNTQUdFVFlQRVZBTFVFU19SRUNFSVZFRDtcbi8qKlxuICogVGhlIGNvbnN0YW50IG1hcCBvZiB2YWx1ZXMgZm9yIE1lc3NhZ2VUeXBlVmFsdWVzLlxuICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBNRVNTQUdFVFlQRVZBTFVFU19YWFhYWCBjb25zdGFudHMgcmF0aGVyIHRoYW4gdGhlIE1lc3NhZ2VUeXBlVmFsdWVzLlhYWFhYIGZvciBidW5kbGUgbWluaWZpY2F0aW9uLlxuICovXG52YXIgTWVzc2FnZVR5cGVWYWx1ZXMgPSBcbi8qI19fUFVSRV9fKi8gY3JlYXRlQ29uc3RNYXAoW1xuICAgIFRNUF9NRVNTQUdFVFlQRVZBTFVFU19TRU5ULFxuICAgIFRNUF9NRVNTQUdFVFlQRVZBTFVFU19SRUNFSVZFRCxcbl0pO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIE5BTk9TRUNPTkRfRElHSVRTID0gOTtcbnZhciBOQU5PU0VDT05EX0RJR0lUU19JTl9NSUxMSVMgPSA2O1xudmFyIE1JTExJU0VDT05EU19UT19OQU5PU0VDT05EUyA9IE1hdGgucG93KDEwLCBOQU5PU0VDT05EX0RJR0lUU19JTl9NSUxMSVMpO1xudmFyIFNFQ09ORF9UT19OQU5PU0VDT05EUyA9IE1hdGgucG93KDEwLCBOQU5PU0VDT05EX0RJR0lUUyk7XG4vKipcbiAqIENvbnZlcnRzIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBmcm9tIGVwb2NoIHRvIEhyVGltZShbc2Vjb25kcywgcmVtYWluZGVyIGluIG5hbm9zZWNvbmRzXSkuXG4gKiBAcGFyYW0gZXBvY2hNaWxsaXNcbiAqL1xuZnVuY3Rpb24gbWlsbGlzVG9IclRpbWUoZXBvY2hNaWxsaXMpIHtcbiAgICB2YXIgZXBvY2hTZWNvbmRzID0gZXBvY2hNaWxsaXMgLyAxMDAwO1xuICAgIC8vIERlY2ltYWxzIG9ubHkuXG4gICAgdmFyIHNlY29uZHMgPSBNYXRoLnRydW5jKGVwb2NoU2Vjb25kcyk7XG4gICAgLy8gUm91bmQgc3ViLW5hbm9zZWNvbmQgYWNjdXJhY3kgdG8gbmFub3NlY29uZC5cbiAgICB2YXIgbmFub3MgPSBNYXRoLnJvdW5kKChlcG9jaE1pbGxpcyAlIDEwMDApICogTUlMTElTRUNPTkRTX1RPX05BTk9TRUNPTkRTKTtcbiAgICByZXR1cm4gW3NlY29uZHMsIG5hbm9zXTtcbn1cbmZ1bmN0aW9uIGdldFRpbWVPcmlnaW4oKSB7XG4gICAgdmFyIHRpbWVPcmlnaW4gPSBvdHBlcmZvcm1hbmNlLnRpbWVPcmlnaW47XG4gICAgaWYgKHR5cGVvZiB0aW1lT3JpZ2luICE9PSAnbnVtYmVyJykge1xuICAgICAgICB2YXIgcGVyZiA9IG90cGVyZm9ybWFuY2U7XG4gICAgICAgIHRpbWVPcmlnaW4gPSBwZXJmLnRpbWluZyAmJiBwZXJmLnRpbWluZy5mZXRjaFN0YXJ0O1xuICAgIH1cbiAgICByZXR1cm4gdGltZU9yaWdpbjtcbn1cbi8qKlxuICogUmV0dXJucyBhbiBocnRpbWUgY2FsY3VsYXRlZCB2aWEgcGVyZm9ybWFuY2UgY29tcG9uZW50LlxuICogQHBhcmFtIHBlcmZvcm1hbmNlTm93XG4gKi9cbmZ1bmN0aW9uIGhyVGltZShwZXJmb3JtYW5jZU5vdykge1xuICAgIHZhciB0aW1lT3JpZ2luID0gbWlsbGlzVG9IclRpbWUoZ2V0VGltZU9yaWdpbigpKTtcbiAgICB2YXIgbm93ID0gbWlsbGlzVG9IclRpbWUodHlwZW9mIHBlcmZvcm1hbmNlTm93ID09PSAnbnVtYmVyJyA/IHBlcmZvcm1hbmNlTm93IDogb3RwZXJmb3JtYW5jZS5ub3coKSk7XG4gICAgcmV0dXJuIGFkZEhyVGltZXModGltZU9yaWdpbiwgbm93KTtcbn1cbi8qKlxuICpcbiAqIENvbnZlcnRzIGEgVGltZUlucHV0IHRvIGFuIEhyVGltZSwgZGVmYXVsdHMgdG8gX2hydGltZSgpLlxuICogQHBhcmFtIHRpbWVcbiAqL1xuZnVuY3Rpb24gdGltZUlucHV0VG9IclRpbWUodGltZSkge1xuICAgIC8vIHByb2Nlc3MuaHJ0aW1lXG4gICAgaWYgKGlzVGltZUlucHV0SHJUaW1lKHRpbWUpKSB7XG4gICAgICAgIHJldHVybiB0aW1lO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgdGltZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgLy8gTXVzdCBiZSBhIHBlcmZvcm1hbmNlLm5vdygpIGlmIGl0J3Mgc21hbGxlciB0aGFuIHByb2Nlc3Mgc3RhcnQgdGltZS5cbiAgICAgICAgaWYgKHRpbWUgPCBnZXRUaW1lT3JpZ2luKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBoclRpbWUodGltZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBlcG9jaCBtaWxsaXNlY29uZHMgb3IgcGVyZm9ybWFuY2UudGltZU9yaWdpblxuICAgICAgICAgICAgcmV0dXJuIG1pbGxpc1RvSHJUaW1lKHRpbWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHRpbWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIHJldHVybiBtaWxsaXNUb0hyVGltZSh0aW1lLmdldFRpbWUoKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0aHJvdyBUeXBlRXJyb3IoJ0ludmFsaWQgaW5wdXQgdHlwZScpO1xuICAgIH1cbn1cbi8qKlxuICogUmV0dXJucyBhIGR1cmF0aW9uIG9mIHR3byBoclRpbWUuXG4gKiBAcGFyYW0gc3RhcnRUaW1lXG4gKiBAcGFyYW0gZW5kVGltZVxuICovXG5mdW5jdGlvbiBoclRpbWVEdXJhdGlvbihzdGFydFRpbWUsIGVuZFRpbWUpIHtcbiAgICB2YXIgc2Vjb25kcyA9IGVuZFRpbWVbMF0gLSBzdGFydFRpbWVbMF07XG4gICAgdmFyIG5hbm9zID0gZW5kVGltZVsxXSAtIHN0YXJ0VGltZVsxXTtcbiAgICAvLyBvdmVyZmxvd1xuICAgIGlmIChuYW5vcyA8IDApIHtcbiAgICAgICAgc2Vjb25kcyAtPSAxO1xuICAgICAgICAvLyBuZWdhdGVcbiAgICAgICAgbmFub3MgKz0gU0VDT05EX1RPX05BTk9TRUNPTkRTO1xuICAgIH1cbiAgICByZXR1cm4gW3NlY29uZHMsIG5hbm9zXTtcbn1cbi8qKlxuICogQ29udmVydCBoclRpbWUgdG8gdGltZXN0YW1wLCBmb3IgZXhhbXBsZSBcIjIwMTktMDUtMTRUMTc6MDA6MDAuMDAwMTIzNDU2WlwiXG4gKiBAcGFyYW0gdGltZVxuICovXG5mdW5jdGlvbiBoclRpbWVUb1RpbWVTdGFtcCh0aW1lKSB7XG4gICAgdmFyIHByZWNpc2lvbiA9IE5BTk9TRUNPTkRfRElHSVRTO1xuICAgIHZhciB0bXAgPSBcIlwiICsgJzAnLnJlcGVhdChwcmVjaXNpb24pICsgdGltZVsxXSArIFwiWlwiO1xuICAgIHZhciBuYW5vU3RyaW5nID0gdG1wLnN1YnN0cmluZyh0bXAubGVuZ3RoIC0gcHJlY2lzaW9uIC0gMSk7XG4gICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSh0aW1lWzBdICogMTAwMCkudG9JU09TdHJpbmcoKTtcbiAgICByZXR1cm4gZGF0ZS5yZXBsYWNlKCcwMDBaJywgbmFub1N0cmluZyk7XG59XG4vKipcbiAqIENvbnZlcnQgaHJUaW1lIHRvIG5hbm9zZWNvbmRzLlxuICogQHBhcmFtIHRpbWVcbiAqL1xuZnVuY3Rpb24gaHJUaW1lVG9OYW5vc2Vjb25kcyh0aW1lKSB7XG4gICAgcmV0dXJuIHRpbWVbMF0gKiBTRUNPTkRfVE9fTkFOT1NFQ09ORFMgKyB0aW1lWzFdO1xufVxuLyoqXG4gKiBDb252ZXJ0IGhyVGltZSB0byBtaWxsaXNlY29uZHMuXG4gKiBAcGFyYW0gdGltZVxuICovXG5mdW5jdGlvbiBoclRpbWVUb01pbGxpc2Vjb25kcyh0aW1lKSB7XG4gICAgcmV0dXJuIHRpbWVbMF0gKiAxZTMgKyB0aW1lWzFdIC8gMWU2O1xufVxuLyoqXG4gKiBDb252ZXJ0IGhyVGltZSB0byBtaWNyb3NlY29uZHMuXG4gKiBAcGFyYW0gdGltZVxuICovXG5mdW5jdGlvbiBoclRpbWVUb01pY3Jvc2Vjb25kcyh0aW1lKSB7XG4gICAgcmV0dXJuIHRpbWVbMF0gKiAxZTYgKyB0aW1lWzFdIC8gMWUzO1xufVxuLyoqXG4gKiBjaGVjayBpZiB0aW1lIGlzIEhyVGltZVxuICogQHBhcmFtIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIGlzVGltZUlucHV0SHJUaW1lKHZhbHVlKSB7XG4gICAgcmV0dXJuIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJlxuICAgICAgICB2YWx1ZS5sZW5ndGggPT09IDIgJiZcbiAgICAgICAgdHlwZW9mIHZhbHVlWzBdID09PSAnbnVtYmVyJyAmJlxuICAgICAgICB0eXBlb2YgdmFsdWVbMV0gPT09ICdudW1iZXInKTtcbn1cbi8qKlxuICogY2hlY2sgaWYgaW5wdXQgdmFsdWUgaXMgYSBjb3JyZWN0IHR5cGVzLlRpbWVJbnB1dFxuICogQHBhcmFtIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIGlzVGltZUlucHV0KHZhbHVlKSB7XG4gICAgcmV0dXJuIChpc1RpbWVJbnB1dEhyVGltZSh2YWx1ZSkgfHxcbiAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyB8fFxuICAgICAgICB2YWx1ZSBpbnN0YW5jZW9mIERhdGUpO1xufVxuLyoqXG4gKiBHaXZlbiAyIEhyVGltZSBmb3JtYXR0ZWQgdGltZXMsIHJldHVybiB0aGVpciBzdW0gYXMgYW4gSHJUaW1lLlxuICovXG5mdW5jdGlvbiBhZGRIclRpbWVzKHRpbWUxLCB0aW1lMikge1xuICAgIHZhciBvdXQgPSBbdGltZTFbMF0gKyB0aW1lMlswXSwgdGltZTFbMV0gKyB0aW1lMlsxXV07XG4gICAgLy8gTmFub3NlY29uZHNcbiAgICBpZiAob3V0WzFdID49IFNFQ09ORF9UT19OQU5PU0VDT05EUykge1xuICAgICAgICBvdXRbMV0gLT0gU0VDT05EX1RPX05BTk9TRUNPTkRTO1xuICAgICAgICBvdXRbMF0gKz0gMTtcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbn1cblxudmFyIF9fdmFsdWVzID0gKHVuZGVmaW5lZCAmJiB1bmRlZmluZWQuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5mdW5jdGlvbiB1cmxNYXRjaGVzKHVybCwgdXJsVG9NYXRjaCkge1xuICAgIGlmICh0eXBlb2YgdXJsVG9NYXRjaCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHVybCA9PT0gdXJsVG9NYXRjaDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiAhIXVybC5tYXRjaCh1cmxUb01hdGNoKTtcbiAgICB9XG59XG4vKipcbiAqIENoZWNrIGlmIHtAcGFyYW0gdXJsfSBzaG91bGQgYmUgaWdub3JlZCB3aGVuIGNvbXBhcmluZyBhZ2FpbnN0IHtAcGFyYW0gaWdub3JlZFVybHN9XG4gKiBAcGFyYW0gdXJsXG4gKiBAcGFyYW0gaWdub3JlZFVybHNcbiAqL1xuZnVuY3Rpb24gaXNVcmxJZ25vcmVkKHVybCwgaWdub3JlZFVybHMpIHtcbiAgICB2YXIgZV8xLCBfYTtcbiAgICBpZiAoIWlnbm9yZWRVcmxzKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgaWdub3JlZFVybHNfMSA9IF9fdmFsdWVzKGlnbm9yZWRVcmxzKSwgaWdub3JlZFVybHNfMV8xID0gaWdub3JlZFVybHNfMS5uZXh0KCk7ICFpZ25vcmVkVXJsc18xXzEuZG9uZTsgaWdub3JlZFVybHNfMV8xID0gaWdub3JlZFVybHNfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgIHZhciBpZ25vcmVVcmwgPSBpZ25vcmVkVXJsc18xXzEudmFsdWU7XG4gICAgICAgICAgICBpZiAodXJsTWF0Y2hlcyh1cmwsIGlnbm9yZVVybCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKGlnbm9yZWRVcmxzXzFfMSAmJiAhaWdub3JlZFVybHNfMV8xLmRvbmUgJiYgKF9hID0gaWdub3JlZFVybHNfMS5yZXR1cm4pKSBfYS5jYWxsKGlnbm9yZWRVcmxzXzEpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgeyBEQlNZU1RFTVZBTFVFU19FTEFTVElDU0VBUkNIIGFzICQsIGRlZmF1bHRUZXh0TWFwR2V0dGVyIGFzIEEsIGRlZmF1bHRUZXh0TWFwU2V0dGVyIGFzIEIsIERCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19BTlkgYXMgQywgREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0FMTCBhcyBELCBEQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfRUFDSF9RVU9SVU0gYXMgRSwgREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0xPQ0FMX09ORSBhcyBGLCBEQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfTE9DQUxfUVVPUlVNIGFzIEcsIERCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19MT0NBTF9TRVJJQUwgYXMgSCwgREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX09ORSBhcyBJLCBEQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfUVVPUlVNIGFzIEosIERCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19TRVJJQUwgYXMgSywgREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX1RIUkVFIGFzIEwsIERCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19UV08gYXMgTSwgREJTWVNURU1WQUxVRVNfQURBQkFTIGFzIE4sIERCU1lTVEVNVkFMVUVTX0NBQ0hFIGFzIE8sIERCU1lTVEVNVkFMVUVTX0NBU1NBTkRSQSBhcyBQLCBEQlNZU1RFTVZBTFVFU19DTE9VRFNDQVBFIGFzIFEsIERCU1lTVEVNVkFMVUVTX0NPQ0tST0FDSERCIGFzIFIsIFNFTUFUVFJTX0hUVFBfUkVTUE9OU0VfQ09OVEVOVF9MRU5HVEggYXMgUywgREJTWVNURU1WQUxVRVNfQ09MREZVU0lPTiBhcyBULCBEQlNZU1RFTVZBTFVFU19DT1NNT1NEQiBhcyBVLCBEQlNZU1RFTVZBTFVFU19DT1VDSEJBU0UgYXMgViwgREJTWVNURU1WQUxVRVNfQ09VQ0hEQiBhcyBXLCBEQlNZU1RFTVZBTFVFU19EQjIgYXMgWCwgREJTWVNURU1WQUxVRVNfREVSQlkgYXMgWSwgREJTWVNURU1WQUxVRVNfRFlOQU1PREIgYXMgWiwgREJTWVNURU1WQUxVRVNfRURCIGFzIF8sIFNFTUFUVFJTX0hUVFBfUkVTUE9OU0VfQ09OVEVOVF9MRU5HVEhfVU5DT01QUkVTU0VEIGFzIGEsIE1lc3NhZ2luZ0Rlc3RpbmF0aW9uS2luZFZhbHVlcyBhcyBhJCwgREJTWVNURU1WQUxVRVNfRklMRU1BS0VSIGFzIGEwLCBEQlNZU1RFTVZBTFVFU19GSVJFQklSRCBhcyBhMSwgREJTWVNURU1WQUxVRVNfRklSU1RTUUwgYXMgYTIsIERCU1lTVEVNVkFMVUVTX0dFT0RFIGFzIGEzLCBEQlNZU1RFTVZBTFVFU19IMiBhcyBhNCwgREJTWVNURU1WQUxVRVNfSEFOQURCIGFzIGE1LCBEQlNZU1RFTVZBTFVFU19IQkFTRSBhcyBhNiwgREJTWVNURU1WQUxVRVNfSElWRSBhcyBhNywgREJTWVNURU1WQUxVRVNfSFNRTERCIGFzIGE4LCBEQlNZU1RFTVZBTFVFU19JTkZPUk1JWCBhcyBhOSwgRkFBU0RPQ1VNRU5UT1BFUkFUSU9OVkFMVUVTX0VESVQgYXMgYUEsIEZBQVNET0NVTUVOVE9QRVJBVElPTlZBTFVFU19JTlNFUlQgYXMgYUIsIEZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfQUxJQkFCQV9DTE9VRCBhcyBhQywgRkFBU0lOVk9LRURQUk9WSURFUlZBTFVFU19BV1MgYXMgYUQsIEZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfQVpVUkUgYXMgYUUsIEZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfR0NQIGFzIGFGLCBGQUFTVFJJR0dFUlZBTFVFU19EQVRBU09VUkNFIGFzIGFHLCBGQUFTVFJJR0dFUlZBTFVFU19IVFRQIGFzIGFILCBGQUFTVFJJR0dFUlZBTFVFU19PVEhFUiBhcyBhSSwgRkFBU1RSSUdHRVJWQUxVRVNfUFVCU1VCIGFzIGFKLCBGQUFTVFJJR0dFUlZBTFVFU19USU1FUiBhcyBhSywgRmFhc0RvY3VtZW50T3BlcmF0aW9uVmFsdWVzIGFzIGFMLCBGYWFzSW52b2tlZFByb3ZpZGVyVmFsdWVzIGFzIGFNLCBGYWFzVHJpZ2dlclZhbHVlcyBhcyBhTiwgSFRUUEZMQVZPUlZBTFVFU19IVFRQXzFfMCBhcyBhTywgSFRUUEZMQVZPUlZBTFVFU19IVFRQXzFfMSBhcyBhUCwgSFRUUEZMQVZPUlZBTFVFU19IVFRQXzJfMCBhcyBhUSwgSFRUUEZMQVZPUlZBTFVFU19RVUlDIGFzIGFSLCBIVFRQRkxBVk9SVkFMVUVTX1NQRFkgYXMgYVMsIEh0dHBGbGF2b3JWYWx1ZXMgYXMgYVQsIE1FU1NBR0VUWVBFVkFMVUVTX1JFQ0VJVkVEIGFzIGFVLCBNRVNTQUdFVFlQRVZBTFVFU19TRU5UIGFzIGFWLCBNRVNTQUdJTkdERVNUSU5BVElPTktJTkRWQUxVRVNfUVVFVUUgYXMgYVcsIE1FU1NBR0lOR0RFU1RJTkFUSU9OS0lORFZBTFVFU19UT1BJQyBhcyBhWCwgTUVTU0FHSU5HT1BFUkFUSU9OVkFMVUVTX1BST0NFU1MgYXMgYVksIE1FU1NBR0lOR09QRVJBVElPTlZBTFVFU19SRUNFSVZFIGFzIGFaLCBNZXNzYWdlVHlwZVZhbHVlcyBhcyBhXywgREJTWVNURU1WQUxVRVNfSU5HUkVTIGFzIGFhLCBEQlNZU1RFTVZBTFVFU19JTlNUQU5UREIgYXMgYWIsIERCU1lTVEVNVkFMVUVTX0lOVEVSQkFTRSBhcyBhYywgREJTWVNURU1WQUxVRVNfTUFSSUFEQiBhcyBhZCwgREJTWVNURU1WQUxVRVNfTUFYREIgYXMgYWUsIERCU1lTVEVNVkFMVUVTX01FTUNBQ0hFRCBhcyBhZiwgREJTWVNURU1WQUxVRVNfTU9OR09EQiBhcyBhZywgREJTWVNURU1WQUxVRVNfTVNTUUwgYXMgYWgsIERCU1lTVEVNVkFMVUVTX01ZU1FMIGFzIGFpLCBEQlNZU1RFTVZBTFVFU19ORU80SiBhcyBhaiwgREJTWVNURU1WQUxVRVNfTkVURVpaQSBhcyBhaywgREJTWVNURU1WQUxVRVNfT1JBQ0xFIGFzIGFsLCBEQlNZU1RFTVZBTFVFU19PVEhFUl9TUUwgYXMgYW0sIERCU1lTVEVNVkFMVUVTX1BFUlZBU0lWRSBhcyBhbiwgREJTWVNURU1WQUxVRVNfUE9JTlRCQVNFIGFzIGFvLCBEQlNZU1RFTVZBTFVFU19QT1NUR1JFU1FMIGFzIGFwLCBEQlNZU1RFTVZBTFVFU19QUk9HUkVTUyBhcyBhcSwgREJTWVNURU1WQUxVRVNfUkVESVMgYXMgYXIsIERCU1lTVEVNVkFMVUVTX1JFRFNISUZUIGFzIGFzLCBEQlNZU1RFTVZBTFVFU19TUUxJVEUgYXMgYXQsIERCU1lTVEVNVkFMVUVTX1NZQkFTRSBhcyBhdSwgREJTWVNURU1WQUxVRVNfVEVSQURBVEEgYXMgYXYsIERCU1lTVEVNVkFMVUVTX1ZFUlRJQ0EgYXMgYXcsIERiQ2Fzc2FuZHJhQ29uc2lzdGVuY3lMZXZlbFZhbHVlcyBhcyBheCwgRGJTeXN0ZW1WYWx1ZXMgYXMgYXksIEZBQVNET0NVTUVOVE9QRVJBVElPTlZBTFVFU19ERUxFVEUgYXMgYXosIFNFTUFUVFJTX0hUVFBfU1RBVFVTX0NPREUgYXMgYiwgU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0lOREVYX05BTUUgYXMgYiQsIE1lc3NhZ2luZ09wZXJhdGlvblZhbHVlcyBhcyBiMCwgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0NETUEgYXMgYjEsIE5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19DRE1BMjAwMF8xWFJUVCBhcyBiMiwgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VER0UgYXMgYjMsIE5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19FSFJQRCBhcyBiNCwgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fMCBhcyBiNSwgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fQSBhcyBiNiwgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fQiBhcyBiNywgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0dQUlMgYXMgYjgsIE5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19HU00gYXMgYjksIE5ldFRyYW5zcG9ydFZhbHVlcyBhcyBiQSwgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfQUJPUlRFRCBhcyBiQiwgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfQUxSRUFEWV9FWElTVFMgYXMgYkMsIFJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0NBTkNFTExFRCBhcyBiRCwgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfREFUQV9MT1NTIGFzIGJFLCBSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19ERUFETElORV9FWENFRURFRCBhcyBiRiwgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfRkFJTEVEX1BSRUNPTkRJVElPTiBhcyBiRywgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfSU5URVJOQUwgYXMgYkgsIFJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0lOVkFMSURfQVJHVU1FTlQgYXMgYkksIFJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX05PVF9GT1VORCBhcyBiSiwgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfT0sgYXMgYkssIFJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX09VVF9PRl9SQU5HRSBhcyBiTCwgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfUEVSTUlTU0lPTl9ERU5JRUQgYXMgYk0sIFJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX1JFU09VUkNFX0VYSEFVU1RFRCBhcyBiTiwgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfVU5BVVRIRU5USUNBVEVEIGFzIGJPLCBSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19VTkFWQUlMQUJMRSBhcyBiUCwgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfVU5JTVBMRU1FTlRFRCBhcyBiUSwgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfVU5LTk9XTiBhcyBiUiwgUnBjR3JwY1N0YXR1c0NvZGVWYWx1ZXMgYXMgYlMsIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9BVFRSSUJVVEVTX1RPX0dFVCBhcyBiVCwgU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0FUVFJJQlVURV9ERUZJTklUSU9OUyBhcyBiVSwgU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0NPTlNJU1RFTlRfUkVBRCBhcyBiViwgU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0NPTlNVTUVEX0NBUEFDSVRZIGFzIGJXLCBTRU1BVFRSU19BV1NfRFlOQU1PREJfQ09VTlQgYXMgYlgsIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9FWENMVVNJVkVfU1RBUlRfVEFCTEUgYXMgYlksIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9HTE9CQUxfU0VDT05EQVJZX0lOREVYRVMgYXMgYlosIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9HTE9CQUxfU0VDT05EQVJZX0lOREVYX1VQREFURVMgYXMgYl8sIE5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19IU0RQQSBhcyBiYSwgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0hTUEEgYXMgYmIsIE5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19IU1BBUCBhcyBiYywgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0hTVVBBIGFzIGJkLCBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSURFTiBhcyBiZSwgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0lXTEFOIGFzIGJmLCBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfTFRFIGFzIGJnLCBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfTFRFX0NBIGFzIGJoLCBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfTlIgYXMgYmksIE5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19OUk5TQSBhcyBiaiwgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX1REX1NDRE1BIGFzIGJrLCBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfVU1UUyBhcyBibCwgTkVUSE9TVENPTk5FQ1RJT05UWVBFVkFMVUVTX0NFTEwgYXMgYm0sIE5FVEhPU1RDT05ORUNUSU9OVFlQRVZBTFVFU19VTkFWQUlMQUJMRSBhcyBibiwgTkVUSE9TVENPTk5FQ1RJT05UWVBFVkFMVUVTX1VOS05PV04gYXMgYm8sIE5FVEhPU1RDT05ORUNUSU9OVFlQRVZBTFVFU19XSUZJIGFzIGJwLCBORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfV0lSRUQgYXMgYnEsIE5FVFRSQU5TUE9SVFZBTFVFU19JTlBST0MgYXMgYnIsIE5FVFRSQU5TUE9SVFZBTFVFU19JUCBhcyBicywgTkVUVFJBTlNQT1JUVkFMVUVTX0lQX1RDUCBhcyBidCwgTkVUVFJBTlNQT1JUVkFMVUVTX0lQX1VEUCBhcyBidSwgTkVUVFJBTlNQT1JUVkFMVUVTX09USEVSIGFzIGJ2LCBORVRUUkFOU1BPUlRWQUxVRVNfUElQRSBhcyBidywgTkVUVFJBTlNQT1JUVkFMVUVTX1VOSVggYXMgYngsIE5ldEhvc3RDb25uZWN0aW9uU3VidHlwZVZhbHVlcyBhcyBieSwgTmV0SG9zdENvbm5lY3Rpb25UeXBlVmFsdWVzIGFzIGJ6LCBTRU1BVFRSU19IVFRQX0hPU1QgYXMgYywgU0VNQVRUUlNfTUVTU0FHRV9VTkNPTVBSRVNTRURfU0laRSBhcyBjJCwgU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0lURU1fQ09MTEVDVElPTl9NRVRSSUNTIGFzIGMwLCBTRU1BVFRSU19BV1NfRFlOQU1PREJfTElNSVQgYXMgYzEsIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9MT0NBTF9TRUNPTkRBUllfSU5ERVhFUyBhcyBjMiwgU0VNQVRUUlNfQVdTX0RZTkFNT0RCX1BST0pFQ1RJT04gYXMgYzMsIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9QUk9WSVNJT05FRF9SRUFEX0NBUEFDSVRZIGFzIGM0LCBTRU1BVFRSU19BV1NfRFlOQU1PREJfUFJPVklTSU9ORURfV1JJVEVfQ0FQQUNJVFkgYXMgYzUsIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9TQ0FOTkVEX0NPVU5UIGFzIGM2LCBTRU1BVFRSU19BV1NfRFlOQU1PREJfU0NBTl9GT1JXQVJEIGFzIGM3LCBTRU1BVFRSU19BV1NfRFlOQU1PREJfU0VHTUVOVCBhcyBjOCwgU0VNQVRUUlNfQVdTX0RZTkFNT0RCX1NFTEVDVCBhcyBjOSwgU0VNQVRUUlNfREJfU1lTVEVNIGFzIGNBLCBTRU1BVFRSU19EQl9VU0VSIGFzIGNCLCBTRU1BVFRSU19FTkRVU0VSX0lEIGFzIGNDLCBTRU1BVFRSU19FTkRVU0VSX1JPTEUgYXMgY0QsIFNFTUFUVFJTX0VORFVTRVJfU0NPUEUgYXMgY0UsIFNFTUFUVFJTX0VYQ0VQVElPTl9FU0NBUEVEIGFzIGNGLCBTRU1BVFRSU19GQUFTX0NPTERTVEFSVCBhcyBjRywgU0VNQVRUUlNfRkFBU19DUk9OIGFzIGNILCBTRU1BVFRSU19GQUFTX0RPQ1VNRU5UX0NPTExFQ1RJT04gYXMgY0ksIFNFTUFUVFJTX0ZBQVNfRE9DVU1FTlRfTkFNRSBhcyBjSiwgU0VNQVRUUlNfRkFBU19ET0NVTUVOVF9PUEVSQVRJT04gYXMgY0ssIFNFTUFUVFJTX0ZBQVNfRE9DVU1FTlRfVElNRSBhcyBjTCwgU0VNQVRUUlNfRkFBU19FWEVDVVRJT04gYXMgY00sIFNFTUFUVFJTX0ZBQVNfSU5WT0tFRF9OQU1FIGFzIGNOLCBTRU1BVFRSU19GQUFTX0lOVk9LRURfUFJPVklERVIgYXMgY08sIFNFTUFUVFJTX0ZBQVNfSU5WT0tFRF9SRUdJT04gYXMgY1AsIFNFTUFUVFJTX0ZBQVNfVElNRSBhcyBjUSwgU0VNQVRUUlNfRkFBU19UUklHR0VSIGFzIGNSLCBTRU1BVFRSU19IVFRQX0NMSUVOVF9JUCBhcyBjUywgU0VNQVRUUlNfSFRUUF9GTEFWT1IgYXMgY1QsIFNFTUFUVFJTX0hUVFBfUkVRVUVTVF9DT05URU5UX0xFTkdUSCBhcyBjVSwgU0VNQVRUUlNfSFRUUF9ST1VURSBhcyBjViwgU0VNQVRUUlNfSFRUUF9TRVJWRVJfTkFNRSBhcyBjVywgU0VNQVRUUlNfSFRUUF9UQVJHRVQgYXMgY1gsIFNFTUFUVFJTX01FU1NBR0VfQ09NUFJFU1NFRF9TSVpFIGFzIGNZLCBTRU1BVFRSU19NRVNTQUdFX0lEIGFzIGNaLCBTRU1BVFRSU19NRVNTQUdFX1RZUEUgYXMgY18sIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9UQUJMRV9DT1VOVCBhcyBjYSwgU0VNQVRUUlNfQVdTX0RZTkFNT0RCX1RBQkxFX05BTUVTIGFzIGNiLCBTRU1BVFRSU19BV1NfRFlOQU1PREJfVE9UQUxfU0VHTUVOVFMgYXMgY2MsIFNFTUFUVFJTX0FXU19MQU1CREFfSU5WT0tFRF9BUk4gYXMgY2QsIFNFTUFUVFJTX0NPREVfRklMRVBBVEggYXMgY2UsIFNFTUFUVFJTX0NPREVfRlVOQ1RJT04gYXMgY2YsIFNFTUFUVFJTX0NPREVfTElORU5PIGFzIGNnLCBTRU1BVFRSU19DT0RFX05BTUVTUEFDRSBhcyBjaCwgU0VNQVRUUlNfREJfQ0FTU0FORFJBX0NPTlNJU1RFTkNZX0xFVkVMIGFzIGNpLCBTRU1BVFRSU19EQl9DQVNTQU5EUkFfQ09PUkRJTkFUT1JfREMgYXMgY2osIFNFTUFUVFJTX0RCX0NBU1NBTkRSQV9DT09SRElOQVRPUl9JRCBhcyBjaywgU0VNQVRUUlNfREJfQ0FTU0FORFJBX0lERU1QT1RFTkNFIGFzIGNsLCBTRU1BVFRSU19EQl9DQVNTQU5EUkFfS0VZU1BBQ0UgYXMgY20sIFNFTUFUVFJTX0RCX0NBU1NBTkRSQV9QQUdFX1NJWkUgYXMgY24sIFNFTUFUVFJTX0RCX0NBU1NBTkRSQV9TUEVDVUxBVElWRV9FWEVDVVRJT05fQ09VTlQgYXMgY28sIFNFTUFUVFJTX0RCX0NBU1NBTkRSQV9UQUJMRSBhcyBjcCwgU0VNQVRUUlNfREJfQ09OTkVDVElPTl9TVFJJTkcgYXMgY3EsIFNFTUFUVFJTX0RCX0hCQVNFX05BTUVTUEFDRSBhcyBjciwgU0VNQVRUUlNfREJfSkRCQ19EUklWRVJfQ0xBU1NOQU1FIGFzIGNzLCBTRU1BVFRSU19EQl9NT05HT0RCX0NPTExFQ1RJT04gYXMgY3QsIFNFTUFUVFJTX0RCX01TU1FMX0lOU1RBTkNFX05BTUUgYXMgY3UsIFNFTUFUVFJTX0RCX05BTUUgYXMgY3YsIFNFTUFUVFJTX0RCX09QRVJBVElPTiBhcyBjdywgU0VNQVRUUlNfREJfUkVESVNfREFUQUJBU0VfSU5ERVggYXMgY3gsIFNFTUFUVFJTX0RCX1NRTF9UQUJMRSBhcyBjeSwgU0VNQVRUUlNfREJfU1RBVEVNRU5UIGFzIGN6LCBTRU1BVFRSU19IVFRQX1NDSEVNRSBhcyBkLCBTRU1BVFRSU19NRVNTQUdJTkdfQ09OU1VNRVJfSUQgYXMgZDAsIFNFTUFUVFJTX01FU1NBR0lOR19DT05WRVJTQVRJT05fSUQgYXMgZDEsIFNFTUFUVFJTX01FU1NBR0lOR19ERVNUSU5BVElPTiBhcyBkMiwgU0VNQVRUUlNfTUVTU0FHSU5HX0RFU1RJTkFUSU9OX0tJTkQgYXMgZDMsIFNFTUFUVFJTX01FU1NBR0lOR19LQUZLQV9DTElFTlRfSUQgYXMgZDQsIFNFTUFUVFJTX01FU1NBR0lOR19LQUZLQV9DT05TVU1FUl9HUk9VUCBhcyBkNSwgU0VNQVRUUlNfTUVTU0FHSU5HX0tBRktBX01FU1NBR0VfS0VZIGFzIGQ2LCBTRU1BVFRSU19NRVNTQUdJTkdfS0FGS0FfUEFSVElUSU9OIGFzIGQ3LCBTRU1BVFRSU19NRVNTQUdJTkdfS0FGS0FfVE9NQlNUT05FIGFzIGQ4LCBTRU1BVFRSU19NRVNTQUdJTkdfTUVTU0FHRV9JRCBhcyBkOSwgU0VNQVRUUlNfUlBDX0pTT05SUENfRVJST1JfTUVTU0FHRSBhcyBkQSwgU0VNQVRUUlNfUlBDX0pTT05SUENfUkVRVUVTVF9JRCBhcyBkQiwgU0VNQVRUUlNfUlBDX0pTT05SUENfVkVSU0lPTiBhcyBkQywgU0VNQVRUUlNfUlBDX01FVEhPRCBhcyBkRCwgU0VNQVRUUlNfUlBDX1NFUlZJQ0UgYXMgZEUsIFNFTUFUVFJTX1JQQ19TWVNURU0gYXMgZEYsIFNFTUFUVFJTX1RIUkVBRF9JRCBhcyBkRywgU0VNQVRUUlNfVEhSRUFEX05BTUUgYXMgZEgsIFNlbWFudGljQXR0cmlidXRlcyBhcyBkSSwgaHJUaW1lVG9NaWxsaXNlY29uZHMgYXMgZEosIGhyVGltZVRvVGltZVN0YW1wIGFzIGRLLCBTRU1BVFRSU19NRVNTQUdJTkdfTUVTU0FHRV9QQVlMT0FEX0NPTVBSRVNTRURfU0laRV9CWVRFUyBhcyBkYSwgU0VNQVRUUlNfTUVTU0FHSU5HX01FU1NBR0VfUEFZTE9BRF9TSVpFX0JZVEVTIGFzIGRiLCBTRU1BVFRSU19NRVNTQUdJTkdfT1BFUkFUSU9OIGFzIGRjLCBTRU1BVFRSU19NRVNTQUdJTkdfUFJPVE9DT0wgYXMgZGQsIFNFTUFUVFJTX01FU1NBR0lOR19QUk9UT0NPTF9WRVJTSU9OIGFzIGRlLCBTRU1BVFRSU19NRVNTQUdJTkdfUkFCQklUTVFfUk9VVElOR19LRVkgYXMgZGYsIFNFTUFUVFJTX01FU1NBR0lOR19TWVNURU0gYXMgZGcsIFNFTUFUVFJTX01FU1NBR0lOR19URU1QX0RFU1RJTkFUSU9OIGFzIGRoLCBTRU1BVFRSU19NRVNTQUdJTkdfVVJMIGFzIGRpLCBTRU1BVFRSU19ORVRfSE9TVF9DQVJSSUVSX0lDQyBhcyBkaiwgU0VNQVRUUlNfTkVUX0hPU1RfQ0FSUklFUl9NQ0MgYXMgZGssIFNFTUFUVFJTX05FVF9IT1NUX0NBUlJJRVJfTU5DIGFzIGRsLCBTRU1BVFRSU19ORVRfSE9TVF9DQVJSSUVSX05BTUUgYXMgZG0sIFNFTUFUVFJTX05FVF9IT1NUX0NPTk5FQ1RJT05fU1VCVFlQRSBhcyBkbiwgU0VNQVRUUlNfTkVUX0hPU1RfQ09OTkVDVElPTl9UWVBFIGFzIGRwLCBTRU1BVFRSU19ORVRfSE9TVF9JUCBhcyBkcSwgU0VNQVRUUlNfTkVUX0hPU1RfTkFNRSBhcyBkciwgU0VNQVRUUlNfTkVUX0hPU1RfUE9SVCBhcyBkcywgU0VNQVRUUlNfTkVUX1BFRVJfSVAgYXMgZHQsIFNFTUFUVFJTX05FVF9QRUVSX05BTUUgYXMgZHUsIFNFTUFUVFJTX05FVF9QRUVSX1BPUlQgYXMgZHYsIFNFTUFUVFJTX05FVF9UUkFOU1BPUlQgYXMgZHcsIFNFTUFUVFJTX1BFRVJfU0VSVklDRSBhcyBkeCwgU0VNQVRUUlNfUlBDX0dSUENfU1RBVFVTX0NPREUgYXMgZHksIFNFTUFUVFJTX1JQQ19KU09OUlBDX0VSUk9SX0NPREUgYXMgZHosIFNFTUFUVFJTX0hUVFBfVVNFUl9BR0VOVCBhcyBlLCBTRU1BVFRSU19IVFRQX01FVEhPRCBhcyBmLCBTRU1BVFRSU19IVFRQX1VSTCBhcyBnLCBoclRpbWVUb05hbm9zZWNvbmRzIGFzIGgsIGlzVXJsSWdub3JlZCBhcyBpLCBoclRpbWUgYXMgaiwgU0VNQVRUUlNfSFRUUF9SRVFVRVNUX0NPTlRFTlRfTEVOR1RIX1VOQ09NUFJFU1NFRCBhcyBrLCBpc1RpbWVJbnB1dCBhcyBsLCBtaWxsaXNUb0hyVGltZSBhcyBtLCBoclRpbWVEdXJhdGlvbiBhcyBuLCBvdHBlcmZvcm1hbmNlIGFzIG8sIHByb3BhZ2F0aW9uIGFzIHAsIGlzVGltZUlucHV0SHJUaW1lIGFzIHEsIGFkZEhyVGltZXMgYXMgciwgU0VNQVRUUlNfRVhDRVBUSU9OX1RZUEUgYXMgcywgdGltZUlucHV0VG9IclRpbWUgYXMgdCwgdXJsTWF0Y2hlcyBhcyB1LCBTRU1BVFRSU19FWENFUFRJT05fTUVTU0FHRSBhcyB2LCBnZXRUaW1lT3JpZ2luIGFzIHcsIFNFTUFUVFJTX0VYQ0VQVElPTl9TVEFDS1RSQUNFIGFzIHgsIGhyVGltZVRvTWljcm9zZWNvbmRzIGFzIHksIGJhZ2dhZ2VFbnRyeU1ldGFkYXRhRnJvbVN0cmluZyBhcyB6IH07Il0sCiAgIm1hcHBpbmdzIjogIkFBQUEsU0FBUyxLQUFLQSxHQUFTLEtBQUtDLElBQVksS0FBS0MsSUFBa0IsS0FBS0MsSUFBZ0IsS0FBS0MsSUFBa0IsS0FBS0MsVUFBaUI7QUFDakksU0FBUyxLQUFLQyxTQUFzQjtBQWlCcEMsSUFBSUMsS0FBNEMsU0FBVUMsR0FBR0MsR0FBRztBQUM1RCxNQUFJQyxJQUFJLE9BQU8sVUFBVyxjQUFjRixFQUFFLE9BQU8sUUFB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VCxFQUFlO0FBQUEsRUFDekJzRDtBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7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LFVBQUk3bEIsRUFBSyxPQUFNQSxFQUFJO0FBQUEsSUFBTztBQUFBLEVBQ3hDO0FBQ0EsU0FBTztBQUNYOyIsCiAgIm5hbWVzIjogWyJEaWFnQVBJIiwgIkNvbnRleHRBUEkiLCAiY3JlYXRlQ29udGV4dEtleSIsICJyZWdpc3Rlckdsb2JhbCIsICJ1bnJlZ2lzdGVyR2xvYmFsIiwgImdldEdsb2JhbCIsICJjcmVhdGVDb25zdE1hcCIsICJfX3JlYWQiLCAibyIsICJuIiwgIm0iLCAiaSIsICJyIiwgImFyIiwgImUiLCAiZXJyb3IiLCAiX192YWx1ZXMkMSIsICJzIiwgIkJhZ2dhZ2VJbXBsIiwgImVudHJpZXMiLCAia2V5IiwgImVudHJ5IiwgIl9hIiwgIl9iIiwgImsiLCAidiIsICJuZXdCYWdnYWdlIiwgImVfMSIsICJrZXlzIiwgIl9pIiwgImtleXNfMSIsICJrZXlzXzFfMSIsICJlXzFfMSIsICJiYWdnYWdlRW50cnlNZXRhZGF0YVN5bWJvbCIsICJkaWFnIiwgImNyZWF0ZUJhZ2dhZ2UiLCAiYmFnZ2FnZUVudHJ5TWV0YWRhdGFGcm9tU3RyaW5nIiwgInN0ciIsICJkZWZhdWx0VGV4dE1hcEdldHRlciIsICJjYXJyaWVyIiwgImRlZmF1bHRUZXh0TWFwU2V0dGVyIiwgInZhbHVlIiwgIk5vb3BUZXh0TWFwUHJvcGFnYXRvciIsICJfY29udGV4dCIsICJfY2FycmllciIsICJjb250ZXh0IiwgIkJBR0dBR0VfS0VZIiwgImdldEJhZ2dhZ2UiLCAiZ2V0QWN0aXZlQmFnZ2FnZSIsICJzZXRCYWdnYWdlIiwgImJhZ2dhZ2UiLCAiZGVsZXRlQmFnZ2FnZSIsICJBUElfTkFNRSIsICJOT09QX1RFWFRfTUFQX1BST1BBR0FUT1IiLCAiUHJvcGFnYXRpb25BUEkiLCAicHJvcGFnYXRvciIsICJzZXR0ZXIiLCAiZ2V0dGVyIiwgInByb3BhZ2F0aW9uIiwgIm90cGVyZm9ybWFuY2UiLCAiVE1QX0FXU19MQU1CREFfSU5WT0tFRF9BUk4iLCAiVE1QX0RCX1NZU1RFTSIsICJUTVBfREJfQ09OTkVDVElPTl9TVFJJTkciLCAiVE1QX0RCX1VTRVIiLCAiVE1QX0RCX0pEQkNfRFJJVkVSX0NMQVNTTkFNRSIsICJUTVBfREJfTkFNRSIsICJUTVBfREJfU1RBVEVNRU5UIiwgIlRNUF9EQl9PUEVSQVRJT04iLCAiVE1QX0RCX01TU1FMX0lOU1RBTkNFX05BTUUiLCAiVE1QX0RCX0NBU1NBTkRSQV9LRVlTUEFDRSIsICJUTVBfREJfQ0FTU0FORFJBX1BBR0VfU0laRSIsICJUTVBfREJfQ0FTU0FORFJBX0NPTlNJU1RFTkNZX0xFVkVMIiwgIlRNUF9EQl9DQVNTQU5EUkFfVEFCTEUiLCAiVE1QX0RCX0NBU1NBTkRSQV9JREVNUE9URU5DRSIsICJUTVBfREJfQ0FTU0FORFJBX1NQRUNVTEFUSVZFX0VYRUNVVElPTl9DT1VOVCIsICJUTVBfREJfQ0FTU0FORFJBX0NPT1JESU5BVE9SX0lEIiwgIlRNUF9EQl9DQVNTQU5EUkFfQ09PUkRJTkFUT1JfREMiLCAiVE1QX0RCX0hCQVNFX05BTUVTUEFDRSIsICJUTVBfREJfUkVESVNfREFUQUJBU0VfSU5ERVgiLCAiVE1QX0RCX01PTkdPREJfQ09MTEVDVElPTiIsICJUTVBfREJfU1FMX1RBQkxFIiwgIlRNUF9FWENFUFRJT05fVFlQRSIsICJUTVBfRVhDRVBUSU9OX01FU1NBR0UiLCAiVE1QX0VYQ0VQVElPTl9TVEFDS1RSQUNFIiwgIlRNUF9FWENFUFRJT05fRVNDQVBFRCIsICJUTVBfRkFBU19UUklHR0VSIiwgIlRNUF9GQUFTX0VYRUNVVElPTiIsICJUTVBfRkFBU19ET0NVTUVOVF9DT0xMRUNUSU9OIiwgIlRNUF9GQUFTX0RPQ1VNRU5UX09QRVJBVElPTiIsICJUTVBfRkFBU19ET0NVTUVOVF9USU1FIiwgIlRNUF9GQUFTX0RPQ1VNRU5UX05BTUUiLCAiVE1QX0ZBQVNfVElNRSIsICJUTVBfRkFBU19DUk9OIiwgIlRNUF9GQUFTX0NPTERTVEFSVCIsICJUTVBfRkFBU19JTlZPS0VEX05BTUUiLCAiVE1QX0ZBQVNfSU5WT0tFRF9QUk9WSURFUiIsICJUTVBfRkFBU19JTlZPS0VEX1JFR0lPTiIsICJUTVBfTkVUX1RSQU5TUE9SVCIsICJUTVBfTkVUX1BFRVJfSVAiLCAiVE1QX05FVF9QRUVSX1BPUlQiLCAiVE1QX05FVF9QRUVSX05BTUUiLCAiVE1QX05FVF9IT1NUX0lQIiwgIlRNUF9ORVRfSE9TVF9QT1JUIiwgIlRNUF9ORVRfSE9TVF9OQU1FIiwgIlRNUF9ORVRfSE9TVF9DT05ORUNUSU9OX1RZUEUiLCAiVE1QX05FVF9IT1NUX0NPTk5FQ1RJT05fU1VCVFlQRSIsICJUTVBfTkVUX0hPU1RfQ0FSUklFUl9OQU1FIiwgIlRNUF9ORVRfSE9TVF9DQVJSSUVSX01DQyIsICJUTVBfTkVUX0hPU1RfQ0FSUklFUl9NTkMiLCAiVE1QX05FVF9IT1NUX0NBUlJJRVJfSUNDIiwgIlRNUF9QRUVSX1NFUlZJQ0UiLCAiVE1QX0VORFVTRVJfSUQiLCAiVE1QX0VORFVTRVJfUk9MRSIsICJUTVBfRU5EVVNFUl9TQ09QRSIsICJUTVBfVEhSRUFEX0lEIiwgIlRNUF9USFJFQURfTkFNRSIsICJUTVBfQ09ERV9GVU5DVElPTiIsICJUTVBfQ09ERV9OQU1FU1BBQ0UiLCAiVE1QX0NPREVfRklMRVBBVEgiLCAiVE1QX0NPREVfTElORU5PIiwgIlRNUF9IVFRQX01FVEhPRCIsICJUTVBfSFRUUF9VUkwiLCAiVE1QX0hUVFBfVEFSR0VUIiwgIlRNUF9IVFRQX0hPU1QiLCAiVE1QX0hUVFBfU0NIRU1FIiwgIlRNUF9IVFRQX1NUQVRVU19DT0RFIiwgIlRNUF9IVFRQX0ZMQVZPUiIsICJUTVBfSFRUUF9VU0VSX0FHRU5UIiwgIlRNUF9IVFRQX1JFUVVFU1RfQ09OVEVOVF9MRU5HVEgiLCAiVE1QX0hUVFBfUkVRVUVTVF9DT05URU5UX0xFTkdUSF9VTkNPTVBSRVNTRUQiLCAiVE1QX0hUVFBfUkVTUE9OU0VfQ09OVEVOVF9MRU5HVEgiLCAiVE1QX0hUVFBfUkVTUE9OU0VfQ09OVEVOVF9MRU5HVEhfVU5DT01QUkVTU0VEIiwgIlRNUF9IVFRQX1NFUlZFUl9OQU1FIiwgIlRNUF9IVFRQX1JPVVRFIiwgIlRNUF9IVFRQX0NMSUVOVF9JUCIsICJUTVBfQVdTX0RZTkFNT0RCX1RBQkxFX05BTUVTIiwgIlRNUF9BV1NfRFlOQU1PREJfQ09OU1VNRURfQ0FQQUNJVFkiLCAiVE1QX0FXU19EWU5BTU9EQl9JVEVNX0NPTExFQ1RJT05fTUVUUklDUyIsICJUTVBfQVdTX0RZTkFNT0RCX1BST1ZJU0lPTkVEX1JFQURfQ0FQQUNJVFkiLCAiVE1QX0FXU19EWU5BTU9EQl9QUk9WSVNJT05FRF9XUklURV9DQVBBQ0lUWSIsICJUTVBfQVdTX0RZTkFNT0RCX0NPTlNJU1RFTlRfUkVBRCIsICJUTVBfQVdTX0RZTkFNT0RCX1BST0pFQ1RJT04iLCAiVE1QX0FXU19EWU5BTU9EQl9MSU1JVCIsICJUTVBfQVdTX0RZTkFNT0RCX0FUVFJJQlVURVNfVE9fR0VUIiwgIlRNUF9BV1NfRFlOQU1PREJfSU5ERVhfTkFNRSIsICJUTVBfQVdTX0RZTkFNT0RCX1NFTEVDVCIsICJUTVBfQVdTX0RZTkFNT0RCX0dMT0JBTF9TRUNPTkRBUllfSU5ERVhFUyIsICJUTVBfQVdTX0RZTkFNT0RCX0xPQ0FMX1NFQ09OREFSWV9JTkRFWEVTIiwgIlRNUF9BV1NfRFlOQU1PREJfRVhDTFVTSVZFX1NUQVJUX1RBQkxFIiwgIlRNUF9BV1NfRFlOQU1PREJfVEFCTEVfQ09VTlQiLCAiVE1QX0FXU19EWU5BTU9EQl9TQ0FOX0ZPUldBUkQiLCAiVE1QX0FXU19EWU5BTU9EQl9TRUdNRU5UIiwgIlRNUF9BV1NfRFlOQU1PREJfVE9UQUxfU0VHTUVOVFMiLCAiVE1QX0FXU19EWU5BTU9EQl9DT1VOVCIsICJUTVBfQVdTX0RZTkFNT0RCX1NDQU5ORURfQ09VTlQiLCAiVE1QX0FXU19EWU5BTU9EQl9BVFRSSUJVVEVfREVGSU5JVElPTlMiLCAiVE1QX0FXU19EWU5BTU9EQl9HTE9CQUxfU0VDT05EQVJZX0lOREVYX1VQREFURVMiLCAiVE1QX01FU1NBR0lOR19TWVNURU0iLCAiVE1QX01FU1NBR0lOR19ERVNUSU5BVElPTiIsICJUTVBfTUVTU0FHSU5HX0RFU1RJTkFUSU9OX0tJTkQiLCAiVE1QX01FU1NBR0lOR19URU1QX0RFU1RJTkFUSU9OIiwgIlRNUF9NRVNTQUdJTkdfUFJPVE9DT0wiLCAiVE1QX01FU1NBR0lOR19QUk9UT0NPTF9WRVJTSU9OIiwgIlRNUF9NRVNTQUdJTkdfVVJMIiwgIlRNUF9NRVNTQUdJTkdfTUVTU0FHRV9JRCIsICJUTVBfTUVTU0FHSU5HX0NPTlZFUlNBVElPTl9JRCIsICJUTVBfTUVTU0FHSU5HX01FU1NBR0VfUEFZTE9BRF9TSVpFX0JZVEVTIiwgIlRNUF9NRVNTQUdJTkdfTUVTU0FHRV9QQVlMT0FEX0NPTVBSRVNTRURfU0laRV9CWVRFUyIsICJUTVBfTUVTU0FHSU5HX09QRVJBVElPTiIsICJUTVBfTUVTU0FHSU5HX0NPTlNVTUVSX0lEIiwgIlRNUF9NRVNTQUdJTkdfUkFCQklUTVFfUk9VVElOR19LRVkiLCAiVE1QX01FU1NBR0lOR19LQUZLQV9NRVNTQUdFX0tFWSIsICJUTVBfTUVTU0FHSU5HX0tBRktBX0NPTlNVTUVSX0dST1VQIiwgIlRNUF9NRVNTQUdJTkdfS0FGS0FfQ0xJRU5UX0lEIiwgIlRNUF9NRVNTQUdJTkdfS0FGS0FfUEFSVElUSU9OIiwgIlRNUF9NRVNTQUdJTkdfS0FGS0FfVE9NQlNUT05FIiwgIlRNUF9SUENfU1lTVEVNIiwgIlRNUF9SUENfU0VSVklDRSIsICJUTVBfUlBDX01FVEhPRCIsICJUTVBfUlBDX0dSUENfU1RBVFVTX0NPREUiLCAiVE1QX1JQQ19KU09OUlBDX1ZFUlNJT04iLCAiVE1QX1JQQ19KU09OUlBDX1JFUVVFU1RfSUQiLCAiVE1QX1JQQ19KU09OUlBDX0VSUk9SX0NPREUiLCAiVE1QX1JQQ19KU09OUlBDX0VSUk9SX01FU1NBR0UiLCAiVE1QX01FU1NBR0VfVFlQRSIsICJUTVBfTUVTU0FHRV9JRCIsICJUTVBfTUVTU0FHRV9DT01QUkVTU0VEX1NJWkUiLCAiVE1QX01FU1NBR0VfVU5DT01QUkVTU0VEX1NJWkUiLCAiU0VNQVRUUlNfQVdTX0xBTUJEQV9JTlZPS0VEX0FSTiIsICJTRU1BVFRSU19EQl9TWVNURU0iLCAiU0VNQVRUUlNfREJfQ09OTkVDVElPTl9TVFJJTkciLCAiU0VNQVRUUlNfREJfVVNFUiIsICJTRU1BVFRSU19EQl9KREJDX0RSSVZFUl9DTEFTU05BTUUiLCAiU0VNQVRUUlNfREJfTkFNRSIsICJTRU1BVFRSU19EQl9TVEFURU1FTlQiLCAiU0VNQVRUUlNfREJfT1BFUkFUSU9OIiwgIlNFTUFUVFJTX0RCX01TU1FMX0lOU1RBTkNFX05BTUUiLCAiU0VNQVRUUlNfREJfQ0FTU0FORFJBX0tFWVNQQUNFIiwgIlNFTUFUVFJTX0RCX0NBU1NBTkRSQV9QQUdFX1NJWkUiLCAiU0VNQVRUUlNfREJfQ0FTU0FORFJBX0NPTlNJU1RFTkNZX0xFVkVMIiwgIlNFTUFUVFJTX0RCX0NBU1NBTkRSQV9UQUJMRSIsICJTRU1BVFRSU19EQl9DQVNTQU5EUkFfSURFTVBPVEVOQ0UiLCAiU0VNQVRUUlNfREJfQ0FTU0FORFJBX1NQRUNVTEFUSVZFX0VYRUNVVElPTl9DT1VOVCIsICJTRU1BVFRSU19EQl9DQVNTQU5EUkFfQ09PUkRJTkFUT1JfSUQiLCAiU0VNQVRUUlNfREJfQ0FTU0FORFJBX0NPT1JESU5BVE9SX0RDIiwgIlNFTUFUVFJTX0RCX0hCQVNFX05BTUVTUEFDRSIsICJTRU1BVFRSU19EQl9SRURJU19EQVRBQkFTRV9JTkRFWCIsICJTRU1BVFRSU19EQl9NT05HT0RCX0NPTExFQ1RJT04iLCAiU0VNQVRUUlNfREJfU1FMX1RBQkxFIiwgIlNFTUFUVFJTX0VYQ0VQVElPTl9UWVBFIiwgIlNFTUFUVFJTX0VYQ0VQVElPTl9NRVNTQUdFIiwgIlNFTUFUVFJTX0VYQ0VQVElPTl9TVEFDS1RSQUNFIiwgIlNFTUFUVFJTX0VYQ0VQVElPTl9FU0NBUEVEIiwgIlNFTUFUVFJTX0ZBQVNfVFJJR0dFUiIsICJTRU1BVFRSU19GQUFTX0VYRUNVVElPTiIsICJTRU1BVFRSU19GQUFTX0RPQ1VNRU5UX0NPTExFQ1RJT04iLCAiU0VNQVRUUlNfRkFBU19ET0NVTUVOVF9PUEVSQVRJT04iLCAiU0VNQVRUUlNfRkFBU19ET0NVTUVOVF9USU1FIiwgIlNFTUFUVFJTX0ZBQVNfRE9DVU1FTlRfTkFNRSIsICJTRU1BVFRSU19GQUFTX1RJTUUiLCAiU0VNQVRUUlNfRkFBU19DUk9OIiwgIlNFTUFUVFJTX0ZBQVNfQ09MRFNUQVJUIiwgIlNFTUFUVFJTX0ZBQVNfSU5WT0tFRF9OQU1FIiwgIlNFTUFUVFJTX0ZBQVNfSU5WT0tFRF9QUk9WSURFUiIsICJTRU1BVFRSU19GQUFTX0lOVk9LRURfUkVHSU9OIiwgIlNFTUFUVFJTX05FVF9UUkFOU1BPUlQiLCAiU0VNQVRUUlNfTkVUX1BFRVJfSVAiLCAiU0VNQVRUUlNfTkVUX1BFRVJfUE9SVCIsICJTRU1BVFRSU19ORVRfUEVFUl9OQU1FIiwgIlNFTUFUVFJTX05FVF9IT1NUX0lQIiwgIlNFTUFUVFJTX05FVF9IT1NUX1BPUlQiLCAiU0VNQVRUUlNfTkVUX0hPU1RfTkFNRSIsICJTRU1BVFRSU19ORVRfSE9TVF9DT05ORUNUSU9OX1RZUEUiLCAiU0VNQVRUUlNfTkVUX0hPU1RfQ09OTkVDVElPTl9TVUJUWVBFIiwgIlNFTUFUVFJTX05FVF9IT1NUX0NBUlJJRVJfTkFNRSIsICJTRU1BVFRSU19ORVRfSE9TVF9DQVJSSUVSX01DQyIsICJTRU1BVFRSU19ORVRfSE9TVF9DQVJSSUVSX01OQyIsICJTRU1BVFRSU19ORVRfSE9TVF9DQVJSSUVSX0lDQyIsICJTRU1BVFRSU19QRUVSX1NFUlZJQ0UiLCAiU0VNQVRUUlNfRU5EVVNFUl9JRCIsICJTRU1BVFRSU19FTkRVU0VSX1JPTEUiLCAiU0VNQVRUUlNfRU5EVVNFUl9TQ09QRSIsICJTRU1BVFRSU19USFJFQURfSUQiLCAiU0VNQVRUUlNfVEhSRUFEX05BTUUiLCAiU0VNQVRUUlNfQ09ERV9GVU5DVElPTiIsICJTRU1BVFRSU19DT0RFX05BTUVTUEFDRSIsICJTRU1BVFRSU19DT0RFX0ZJTEVQQVRIIiwgIlNFTUFUVFJTX0NPREVfTElORU5PIiwgIlNFTUFUVFJTX0hUVFBfTUVUSE9EIiwgIlNFTUFUVFJTX0hUVFBfVVJMIiwgIlNFTUFUVFJTX0hUVFBfVEFSR0VUIiwgIlNFTUFUVFJTX0hUVFBfSE9TVCIsICJTRU1BVFRSU19IVFRQX1NDSEVNRSIsICJTRU1BVFRSU19IVFRQX1NUQVRVU19DT0RFIiwgIlNFTUFUVFJTX0hUVFBfRkxBVk9SIiwgIlNFTUFUVFJTX0hUVFBfVVNFUl9BR0VOVCIsICJTRU1BVFRSU19IVFRQX1JFUVVFU1RfQ09OVEVOVF9MRU5HVEgiLCAiU0VNQVRUUlNfSFRUUF9SRVFVRVNUX0NPTlRFTlRfTEVOR1RIX1VOQ09NUFJFU1NFRCIsICJTRU1BVFRSU19IVFRQX1JFU1BPTlNFX0NPTlRFTlRfTEVOR1RIIiwgIlNFTUFUVFJTX0hUVFBfUkVTUE9OU0VfQ09OVEVOVF9MRU5HVEhfVU5DT01QUkVTU0VEIiwgIlNFTUFUVFJTX0hUVFBfU0VSVkVSX05BTUUiLCAiU0VNQVRUUlNfSFRUUF9ST1VURSIsICJTRU1BVFRSU19IVFRQX0NMSUVOVF9JUCIsICJTRU1BVFRSU19BV1NfRFlOQU1PREJfVEFCTEVfTkFNRVMiLCAiU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0NPTlNVTUVEX0NBUEFDSVRZIiwgIlNFTUFUVFJTX0FXU19EWU5BTU9EQl9JVEVNX0NPTExFQ1RJT05fTUVUUklDUyIsICJTRU1BVFRSU19BV1NfRFlOQU1PREJfUFJPVklTSU9ORURfUkVBRF9DQVBBQ0lUWSIsICJTRU1BVFRSU19BV1NfRFlOQU1PREJfUFJPVklTSU9ORURfV1JJVEVfQ0FQQUNJVFkiLCAiU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0NPTlNJU1RFTlRfUkVBRCIsICJTRU1BVFRSU19BV1NfRFlOQU1PREJfUFJPSkVDVElPTiIsICJTRU1BVFRSU19BV1NfRFlOQU1PREJfTElNSVQiLCAiU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0FUVFJJQlVURVNfVE9fR0VUIiwgIlNFTUFUVFJTX0FXU19EWU5BTU9EQl9JTkRFWF9OQU1FIiwgIlNFTUFUVFJTX0FXU19EWU5BTU9EQl9TRUxFQ1QiLCAiU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0dMT0JBTF9TRUNPTkRBUllfSU5ERVhFUyIsICJTRU1BVFRSU19BV1NfRFlOQU1PREJfTE9DQUxfU0VDT05EQVJZX0lOREVYRVMiLCAiU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0VYQ0xVU0lWRV9TVEFSVF9UQUJMRSIsICJTRU1BVFRSU19BV1NfRFlOQU1PREJfVEFCTEVfQ09VTlQiLCAiU0VNQVRUUlNfQVdTX0RZTkFNT0RCX1NDQU5fRk9SV0FSRCIsICJTRU1BVFRSU19BV1NfRFlOQU1PREJfU0VHTUVOVCIsICJTRU1BVFRSU19BV1NfRFlOQU1PREJfVE9UQUxfU0VHTUVOVFMiLCAiU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0NPVU5UIiwgIlNFTUFUVFJTX0FXU19EWU5BTU9EQl9TQ0FOTkVEX0NPVU5UIiwgIlNFTUFUVFJTX0FXU19EWU5BTU9EQl9BVFRSSUJVVEVfREVGSU5JVElPTlMiLCAiU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0dMT0JBTF9TRUNPTkRBUllfSU5ERVhfVVBEQVRFUyIsICJTRU1BVFRSU19NRVNTQUdJTkdfU1lTVEVNIiwgIlNFTUFUVFJTX01FU1NBR0lOR19ERVNUSU5BVElPTiIsICJTRU1BVFRSU19NRVNTQUdJTkdfREVTVElOQVRJT05fS0lORCIsICJTRU1BVFRSU19NRVNTQUdJTkdfVEVNUF9ERVNUSU5BVElPTiIsICJTRU1BVFRSU19NRVNTQUdJTkdfUFJPVE9DT0wiLCAiU0VNQVRUUlNfTUVTU0FHSU5HX1BST1RPQ09MX1ZFUlNJT04iLCAiU0VNQVRUUlNfTUVTU0FHSU5HX1VSTCIsICJTRU1BVFRSU19NRVNTQUdJTkdfTUVTU0FHRV9JRCIsICJTRU1BVFRSU19NRVNTQUdJTkdfQ09OVkVSU0FUSU9OX0lEIiwgIlNFTUFUVFJTX01FU1NBR0lOR19NRVNTQUdFX1BBWUxPQURfU0laRV9CWVRFUyIsICJTRU1BVFRSU19NRVNTQUdJTkdfTUVTU0FHRV9QQVlMT0FEX0NPTVBSRVNTRURfU0laRV9CWVRFUyIsICJTRU1BVFRSU19NRVNTQUdJTkdfT1BFUkFUSU9OIiwgIlNFTUFUVFJTX01FU1NBR0lOR19DT05TVU1FUl9JRCIsICJTRU1BVFRSU19NRVNTQUdJTkdfUkFCQklUTVFfUk9VVElOR19LRVkiLCAiU0VNQVRUUlNfTUVTU0FHSU5HX0tBRktBX01FU1NBR0VfS0VZIiwgIlNFTUFUVFJTX01FU1NBR0lOR19LQUZLQV9DT05TVU1FUl9HUk9VUCIsICJTRU1BVFRSU19NRVNTQUdJTkdfS0FGS0FfQ0xJRU5UX0lEIiwgIlNFTUFUVFJTX01FU1NBR0lOR19LQUZLQV9QQVJUSVRJT04iLCAiU0VNQVRUUlNfTUVTU0FHSU5HX0tBRktBX1RPTUJTVE9ORSIsICJTRU1BVFRSU19SUENfU1lTVEVNIiwgIlNFTUFUVFJTX1JQQ19TRVJWSUNFIiwgIlNFTUFUVFJTX1JQQ19NRVRIT0QiLCAiU0VNQVRUUlNfUlBDX0dSUENfU1RBVFVTX0NPREUiLCAiU0VNQVRUUlNfUlBDX0pTT05SUENfVkVSU0lPTiIsICJTRU1BVFRSU19SUENfSlNPTlJQQ19SRVFVRVNUX0lEIiwgIlNFTUFUVFJTX1JQQ19KU09OUlBDX0VSUk9SX0NPREUiLCAiU0VNQVRUUlNfUlBDX0pTT05SUENfRVJST1JfTUVTU0FHRSIsICJTRU1BVFRSU19NRVNTQUdFX1RZUEUiLCAiU0VNQVRUUlNfTUVTU0FHRV9JRCIsICJTRU1BVFRSU19NRVNTQUdFX0NPTVBSRVNTRURfU0laRSIsICJTRU1BVFRSU19NRVNTQUdFX1VOQ09NUFJFU1NFRF9TSVpFIiwgIlNlbWFudGljQXR0cmlidXRlcyIsICJUTVBfREJTWVNURU1WQUxVRVNfT1RIRVJfU1FMIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19NU1NRTCIsICJUTVBfREJTWVNURU1WQUxVRVNfTVlTUUwiLCAiVE1QX0RCU1lTVEVNVkFMVUVTX09SQUNMRSIsICJUTVBfREJTWVNURU1WQUxVRVNfREIyIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19QT1NUR1JFU1FMIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19SRURTSElGVCIsICJUTVBfREJTWVNURU1WQUxVRVNfSElWRSIsICJUTVBfREJTWVNURU1WQUxVRVNfQ0xPVURTQ0FQRSIsICJUTVBfREJTWVNURU1WQUxVRVNfSFNRTERCIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19QUk9HUkVTUyIsICJUTVBfREJTWVNURU1WQUxVRVNfTUFYREIiLCAiVE1QX0RCU1lTVEVNVkFMVUVTX0hBTkFEQiIsICJUTVBfREJTWVNURU1WQUxVRVNfSU5HUkVTIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19GSVJTVFNRTCIsICJUTVBfREJTWVNURU1WQUxVRVNfRURCIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19DQUNIRSIsICJUTVBfREJTWVNURU1WQUxVRVNfQURBQkFTIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19GSVJFQklSRCIsICJUTVBfREJTWVNURU1WQUxVRVNfREVSQlkiLCAiVE1QX0RCU1lTVEVNVkFMVUVTX0ZJTEVNQUtFUiIsICJUTVBfREJTWVNURU1WQUxVRVNfSU5GT1JNSVgiLCAiVE1QX0RCU1lTVEVNVkFMVUVTX0lOU1RBTlREQiIsICJUTVBfREJTWVNURU1WQUxVRVNfSU5URVJCQVNFIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19NQVJJQURCIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19ORVRFWlpBIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19QRVJWQVNJVkUiLCAiVE1QX0RCU1lTVEVNVkFMVUVTX1BPSU5UQkFTRSIsICJUTVBfREJTWVNURU1WQUxVRVNfU1FMSVRFIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19TWUJBU0UiLCAiVE1QX0RCU1lTVEVNVkFMVUVTX1RFUkFEQVRBIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19WRVJUSUNBIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19IMiIsICJUTVBfREJTWVNURU1WQUxVRVNfQ09MREZVU0lPTiIsICJUTVBfREJTWVNURU1WQUxVRVNfQ0FTU0FORFJBIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19IQkFTRSIsICJUTVBfREJTWVNURU1WQUxVRVNfTU9OR09EQiIsICJUTVBfREJTWVNURU1WQUxVRVNfUkVESVMiLCAiVE1QX0RCU1lTVEVNVkFMVUVTX0NPVUNIQkFTRSIsICJUTVBfREJTWVNURU1WQUxVRVNfQ09VQ0hEQiIsICJUTVBfREJTWVNURU1WQUxVRVNfQ09TTU9TREIiLCAiVE1QX0RCU1lTVEVNVkFMVUVTX0RZTkFNT0RCIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19ORU80SiIsICJUTVBfREJTWVNURU1WQUxVRVNfR0VPREUiLCAiVE1QX0RCU1lTVEVNVkFMVUVTX0VMQVNUSUNTRUFSQ0giLCAiVE1QX0RCU1lTVEVNVkFMVUVTX01FTUNBQ0hFRCIsICJUTVBfREJTWVNURU1WQUxVRVNfQ09DS1JPQUNIREIiLCAiREJTWVNURU1WQUxVRVNfT1RIRVJfU1FMIiwgIkRCU1lTVEVNVkFMVUVTX01TU1FMIiwgIkRCU1lTVEVNVkFMVUVTX01ZU1FMIiwgIkRCU1lTVEVNVkFMVUVTX09SQUNMRSIsICJEQlNZU1RFTVZBTFVFU19EQjIiLCAiREJTWVNURU1WQUxVRVNfUE9TVEdSRVNRTCIsICJEQlNZU1RFTVZBTFVFU19SRURTSElGVCIsICJEQlNZU1RFTVZBTFVFU19ISVZFIiwgIkRCU1lTVEVNVkFMVUVTX0NMT1VEU0NBUEUiLCAiREJTWVNURU1WQUxVRVNfSFNRTERCIiwgIkRCU1lTVEVNVkFMVUVTX1BST0dSRVNTIiwgIkRCU1lTVEVNVkFMVUVTX01BWERCIiwgIkRCU1lTVEVNVkFMVUVTX0hBTkFEQiIsICJEQlNZU1RFTVZBTFVFU19JTkdSRVMiLCAiREJTWVNURU1WQUxVRVNfRklSU1RTUUwiLCAiREJTWVNURU1WQUxVRVNfRURCIiwgIkRCU1lTVEVNVkFMVUVTX0NBQ0hFIiwgIkRCU1lTVEVNVkFMVUVTX0FEQUJBUyIsICJEQlNZU1RFTVZBTFVFU19GSVJFQklSRCIsICJEQlNZU1RFTVZBTFVFU19ERVJCWSIsICJEQlNZU1RFTVZBTFVFU19GSUxFTUFLRVIiLCAiREJTWVNURU1WQUxVRVNfSU5GT1JNSVgiLCAiREJTWVNURU1WQUxVRVNfSU5TVEFOVERCIiwgIkRCU1lTVEVNVkFMVUVTX0lOVEVSQkFTRSIsICJEQlNZU1RFTVZBTFVFU19NQVJJQURCIiwgIkRCU1lTVEVNVkFMVUVTX05FVEVaWkEiLCAiREJTWVNURU1WQUxVRVNfUEVSVkFTSVZFIiwgIkRCU1lTVEVNVkFMVUVTX1BPSU5UQkFTRSIsICJEQlNZU1RFTVZBTFVFU19TUUxJVEUiLCAiREJTWVNURU1WQUxVRVNfU1lCQVNFIiwgIkRCU1lTVEVNVkFMVUVTX1RFUkFEQVRBIiwgIkRCU1lTVEVNVkFMVUVTX1ZFUlRJQ0EiLCAiREJTWVNURU1WQUxVRVNfSDIiLCAiREJTWVNURU1WQUxVRVNfQ09MREZVU0lPTiIsICJEQlNZU1RFTVZBTFVFU19DQVNTQU5EUkEiLCAiREJTWVNURU1WQUxVRVNfSEJBU0UiLCAiREJTWVNURU1WQUxVRVNfTU9OR09EQiIsICJEQlNZU1RFTVZBTFVFU19SRURJUyIsICJEQlNZU1RFTVZBTFVFU19DT1VDSEJBU0UiLCAiREJTWVNURU1WQUxVRVNfQ09VQ0hEQiIsICJEQlNZU1RFTVZBTFVFU19DT1NNT1NEQiIsICJEQlNZU1RFTVZBTFVFU19EWU5BTU9EQiIsICJEQlNZU1RFTVZBTFVFU19ORU80SiIsICJEQlNZU1RFTVZBTFVFU19HRU9ERSIsICJEQlNZU1RFTVZBTFVFU19FTEFTVElDU0VBUkNIIiwgIkRCU1lTVEVNVkFMVUVTX01FTUNBQ0hFRCIsICJEQlNZU1RFTVZBTFVFU19DT0NLUk9BQ0hEQiIsICJEYlN5c3RlbVZhbHVlcyIsICJUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0FMTCIsICJUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0VBQ0hfUVVPUlVNIiwgIlRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfUVVPUlVNIiwgIlRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfTE9DQUxfUVVPUlVNIiwgIlRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfT05FIiwgIlRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfVFdPIiwgIlRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfVEhSRUUiLCAiVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19MT0NBTF9PTkUiLCAiVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19BTlkiLCAiVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19TRVJJQUwiLCAiVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19MT0NBTF9TRVJJQUwiLCAiREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0FMTCIsICJEQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfRUFDSF9RVU9SVU0iLCAiREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX1FVT1JVTSIsICJEQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfTE9DQUxfUVVPUlVNIiwgIkRCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19PTkUiLCAiREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX1RXTyIsICJEQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfVEhSRUUiLCAiREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0xPQ0FMX09ORSIsICJEQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfQU5ZIiwgIkRCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19TRVJJQUwiLCAiREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0xPQ0FMX1NFUklBTCIsICJEYkNhc3NhbmRyYUNvbnNpc3RlbmN5TGV2ZWxWYWx1ZXMiLCAiVE1QX0ZBQVNUUklHR0VSVkFMVUVTX0RBVEFTT1VSQ0UiLCAiVE1QX0ZBQVNUUklHR0VSVkFMVUVTX0hUVFAiLCAiVE1QX0ZBQVNUUklHR0VSVkFMVUVTX1BVQlNVQiIsICJUTVBfRkFBU1RSSUdHRVJWQUxVRVNfVElNRVIiLCAiVE1QX0ZBQVNUUklHR0VSVkFMVUVTX09USEVSIiwgIkZBQVNUUklHR0VSVkFMVUVTX0RBVEFTT1VSQ0UiLCAiRkFBU1RSSUdHRVJWQUxVRVNfSFRUUCIsICJGQUFTVFJJR0dFUlZBTFVFU19QVUJTVUIiLCAiRkFBU1RSSUdHRVJWQUxVRVNfVElNRVIiLCAiRkFBU1RSSUdHRVJWQUxVRVNfT1RIRVIiLCAiRmFhc1RyaWdnZXJWYWx1ZXMiLCAiVE1QX0ZBQVNET0NVTUVOVE9QRVJBVElPTlZBTFVFU19JTlNFUlQiLCAiVE1QX0ZBQVNET0NVTUVOVE9QRVJBVElPTlZBTFVFU19FRElUIiwgIlRNUF9GQUFTRE9DVU1FTlRPUEVSQVRJT05WQUxVRVNfREVMRVRFIiwgIkZBQVNET0NVTUVOVE9QRVJBVElPTlZBTFVFU19JTlNFUlQiLCAiRkFBU0RPQ1VNRU5UT1BFUkFUSU9OVkFMVUVTX0VESVQiLCAiRkFBU0RPQ1VNRU5UT1BFUkFUSU9OVkFMVUVTX0RFTEVURSIsICJGYWFzRG9jdW1lbnRPcGVyYXRpb25WYWx1ZXMiLCAiVE1QX0ZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfQUxJQkFCQV9DTE9VRCIsICJUTVBfRkFBU0lOVk9LRURQUk9WSURFUlZBTFVFU19BV1MiLCAiVE1QX0ZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfQVpVUkUiLCAiVE1QX0ZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfR0NQIiwgIkZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfQUxJQkFCQV9DTE9VRCIsICJGQUFTSU5WT0tFRFBST1ZJREVSVkFMVUVTX0FXUyIsICJGQUFTSU5WT0tFRFBST1ZJREVSVkFMVUVTX0FaVVJFIiwgIkZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfR0NQIiwgIkZhYXNJbnZva2VkUHJvdmlkZXJWYWx1ZXMiLCAiVE1QX05FVFRSQU5TUE9SVFZBTFVFU19JUF9UQ1AiLCAiVE1QX05FVFRSQU5TUE9SVFZBTFVFU19JUF9VRFAiLCAiVE1QX05FVFRSQU5TUE9SVFZBTFVFU19JUCIsICJUTVBfTkVUVFJBTlNQT1JUVkFMVUVTX1VOSVgiLCAiVE1QX05FVFRSQU5TUE9SVFZBTFVFU19QSVBFIiwgIlRNUF9ORVRUUkFOU1BPUlRWQUxVRVNfSU5QUk9DIiwgIlRNUF9ORVRUUkFOU1BPUlRWQUxVRVNfT1RIRVIiLCAiTkVUVFJBTlNQT1JUVkFMVUVTX0lQX1RDUCIsICJORVRUUkFOU1BPUlRWQUxVRVNfSVBfVURQIiwgIk5FVFRSQU5TUE9SVFZBTFVFU19JUCIsICJORVRUUkFOU1BPUlRWQUxVRVNfVU5JWCIsICJORVRUUkFOU1BPUlRWQUxVRVNfUElQRSIsICJORVRUUkFOU1BPUlRWQUxVRVNfSU5QUk9DIiwgIk5FVFRSQU5TUE9SVFZBTFVFU19PVEhFUiIsICJOZXRUcmFuc3BvcnRWYWx1ZXMiLCAiVE1QX05FVEhPU1RDT05ORUNUSU9OVFlQRVZBTFVFU19XSUZJIiwgIlRNUF9ORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfV0lSRUQiLCAiVE1QX05FVEhPU1RDT05ORUNUSU9OVFlQRVZBTFVFU19DRUxMIiwgIlRNUF9ORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfVU5BVkFJTEFCTEUiLCAiVE1QX05FVEhPU1RDT05ORUNUSU9OVFlQRVZBTFVFU19VTktOT1dOIiwgIk5FVEhPU1RDT05ORUNUSU9OVFlQRVZBTFVFU19XSUZJIiwgIk5FVEhPU1RDT05ORUNUSU9OVFlQRVZBTFVFU19XSVJFRCIsICJORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfQ0VMTCIsICJORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfVU5BVkFJTEFCTEUiLCAiTkVUSE9TVENPTk5FQ1RJT05UWVBFVkFMVUVTX1VOS05PV04iLCAiTmV0SG9zdENvbm5lY3Rpb25UeXBlVmFsdWVzIiwgIlRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfR1BSUyIsICJUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VER0UiLCAiVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19VTVRTIiwgIlRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfQ0RNQSIsICJUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fMCIsICJUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fQSIsICJUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0NETUEyMDAwXzFYUlRUIiwgIlRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSFNEUEEiLCAiVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19IU1VQQSIsICJUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0hTUEEiLCAiVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19JREVOIiwgIlRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfRVZET19CIiwgIlRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfTFRFIiwgIlRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfRUhSUEQiLCAiVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19IU1BBUCIsICJUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0dTTSIsICJUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX1REX1NDRE1BIiwgIlRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSVdMQU4iLCAiVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19OUiIsICJUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX05STlNBIiwgIlRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfTFRFX0NBIiwgIk5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19HUFJTIiwgIk5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19FREdFIiwgIk5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19VTVRTIiwgIk5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19DRE1BIiwgIk5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19FVkRPXzAiLCAiTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fQSIsICJORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfQ0RNQTIwMDBfMVhSVFQiLCAiTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0hTRFBBIiwgIk5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19IU1VQQSIsICJORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSFNQQSIsICJORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSURFTiIsICJORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfRVZET19CIiwgIk5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19MVEUiLCAiTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VIUlBEIiwgIk5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19IU1BBUCIsICJORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfR1NNIiwgIk5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19URF9TQ0RNQSIsICJORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSVdMQU4iLCAiTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX05SIiwgIk5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19OUk5TQSIsICJORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfTFRFX0NBIiwgIk5ldEhvc3RDb25uZWN0aW9uU3VidHlwZVZhbHVlcyIsICJUTVBfSFRUUEZMQVZPUlZBTFVFU19IVFRQXzFfMCIsICJUTVBfSFRUUEZMQVZPUlZBTFVFU19IVFRQXzFfMSIsICJUTVBfSFRUUEZMQVZPUlZBTFVFU19IVFRQXzJfMCIsICJUTVBfSFRUUEZMQVZPUlZBTFVFU19TUERZIiwgIlRNUF9IVFRQRkxBVk9SVkFMVUVTX1FVSUMiLCAiSFRUUEZMQVZPUlZBTFVFU19IVFRQXzFfMCIsICJIVFRQRkxBVk9SVkFMVUVTX0hUVFBfMV8xIiwgIkhUVFBGTEFWT1JWQUxVRVNfSFRUUF8yXzAiLCAiSFRUUEZMQVZPUlZBTFVFU19TUERZIiwgIkhUVFBGTEFWT1JWQUxVRVNfUVVJQyIsICJIdHRwRmxhdm9yVmFsdWVzIiwgIlRNUF9NRVNTQUdJTkdERVNUSU5BVElPTktJTkRWQUxVRVNfUVVFVUUiLCAiVE1QX01FU1NBR0lOR0RFU1RJTkFUSU9OS0lORFZBTFVFU19UT1BJQyIsICJNRVNTQUdJTkdERVNUSU5BVElPTktJTkRWQUxVRVNfUVVFVUUiLCAiTUVTU0FHSU5HREVTVElOQVRJT05LSU5EVkFMVUVTX1RPUElDIiwgIk1lc3NhZ2luZ0Rlc3RpbmF0aW9uS2luZFZhbHVlcyIsICJUTVBfTUVTU0FHSU5HT1BFUkFUSU9OVkFMVUVTX1JFQ0VJVkUiLCAiVE1QX01FU1NBR0lOR09QRVJBVElPTlZBTFVFU19QUk9DRVNTIiwgIk1FU1NBR0lOR09QRVJBVElPTlZBTFVFU19SRUNFSVZFIiwgIk1FU1NBR0lOR09QRVJBVElPTlZBTFVFU19QUk9DRVNTIiwgIk1lc3NhZ2luZ09wZXJhdGlvblZhbHVlcyIsICJUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfT0siLCAiVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0NBTkNFTExFRCIsICJUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfVU5LTk9XTiIsICJUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfSU5WQUxJRF9BUkdVTUVOVCIsICJUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfREVBRExJTkVfRVhDRUVERUQiLCAiVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX05PVF9GT1VORCIsICJUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfQUxSRUFEWV9FWElTVFMiLCAiVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX1BFUk1JU1NJT05fREVOSUVEIiwgIlRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19SRVNPVVJDRV9FWEhBVVNURUQiLCAiVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0ZBSUxFRF9QUkVDT05ESVRJT04iLCAiVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0FCT1JURUQiLCAiVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX09VVF9PRl9SQU5HRSIsICJUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfVU5JTVBMRU1FTlRFRCIsICJUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfSU5URVJOQUwiLCAiVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX1VOQVZBSUxBQkxFIiwgIlRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19EQVRBX0xPU1MiLCAiVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX1VOQVVUSEVOVElDQVRFRCIsICJSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19PSyIsICJSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19DQU5DRUxMRUQiLCAiUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfVU5LTk9XTiIsICJSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19JTlZBTElEX0FSR1VNRU5UIiwgIlJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0RFQURMSU5FX0VYQ0VFREVEIiwgIlJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX05PVF9GT1VORCIsICJSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19BTFJFQURZX0VYSVNUUyIsICJSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19QRVJNSVNTSU9OX0RFTklFRCIsICJSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19SRVNPVVJDRV9FWEhBVVNURUQiLCAiUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfRkFJTEVEX1BSRUNPTkRJVElPTiIsICJSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19BQk9SVEVEIiwgIlJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX09VVF9PRl9SQU5HRSIsICJSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19VTklNUExFTUVOVEVEIiwgIlJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0lOVEVSTkFMIiwgIlJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX1VOQVZBSUxBQkxFIiwgIlJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0RBVEFfTE9TUyIsICJSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19VTkFVVEhFTlRJQ0FURUQiLCAiUnBjR3JwY1N0YXR1c0NvZGVWYWx1ZXMiLCAiVE1QX01FU1NBR0VUWVBFVkFMVUVTX1NFTlQiLCAiVE1QX01FU1NBR0VUWVBFVkFMVUVTX1JFQ0VJVkVEIiwgIk1FU1NBR0VUWVBFVkFMVUVTX1NFTlQiLCAiTUVTU0FHRVRZUEVWQUxVRVNfUkVDRUlWRUQiLCAiTWVzc2FnZVR5cGVWYWx1ZXMiLCAiTkFOT1NFQ09ORF9ESUdJVFMiLCAiTkFOT1NFQ09ORF9ESUdJVFNfSU5fTUlMTElTIiwgIk1JTExJU0VDT05EU19UT19OQU5PU0VDT05EUyIsICJTRUNPTkRfVE9fTkFOT1NFQ09ORFMiLCAibWlsbGlzVG9IclRpbWUiLCAiZXBvY2hNaWxsaXMiLCAiZXBvY2hTZWNvbmRzIiwgInNlY29uZHMiLCAibmFub3MiLCAiZ2V0VGltZU9yaWdpbiIsICJ0aW1lT3JpZ2luIiwgInBlcmYiLCAiaHJUaW1lIiwgInBlcmZvcm1hbmNlTm93IiwgIm5vdyIsICJhZGRIclRpbWVzIiwgInRpbWVJbnB1dFRvSHJUaW1lIiwgInRpbWUiLCAiaXNUaW1lSW5wdXRIclRpbWUiLCAiaHJUaW1lRHVyYXRpb24iLCAic3RhcnRUaW1lIiwgImVuZFRpbWUiLCAiaHJUaW1lVG9UaW1lU3RhbXAiLCAicHJlY2lzaW9uIiwgInRtcCIsICJuYW5vU3RyaW5nIiwgImRhdGUiLCAiaHJUaW1lVG9OYW5vc2Vjb25kcyIsICJoclRpbWVUb01pbGxpc2Vjb25kcyIsICJoclRpbWVUb01pY3Jvc2Vjb25kcyIsICJpc1RpbWVJbnB1dCIsICJ0aW1lMSIsICJ0aW1lMiIsICJvdXQiLCAiX192YWx1ZXMiLCAidXJsTWF0Y2hlcyIsICJ1cmwiLCAidXJsVG9NYXRjaCIsICJpc1VybElnbm9yZWQiLCAiaWdub3JlZFVybHMiLCAiaWdub3JlZFVybHNfMSIsICJpZ25vcmVkVXJsc18xXzEiLCAiaWdub3JlVXJsIl0KfQo=