@lukaskj/ts-utils 1.2.0 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/cjs/cache/index.cjs +182 -0
  2. package/dist/cjs/colors/index.cjs +115 -0
  3. package/dist/cjs/index.cjs +270 -0
  4. package/dist/cjs/neverthrow/index.cjs +69 -0
  5. package/dist/esm/cache/index.mjs +137 -0
  6. package/dist/esm/colors/index.mjs +72 -0
  7. package/dist/esm/index.mjs +217 -0
  8. package/dist/esm/neverthrow/index.mjs +24 -0
  9. package/package.json +20 -36
  10. package/dist/cache/index.cjs +0 -182
  11. package/dist/cache/index.mjs +0 -137
  12. package/dist/colors/index.cjs +0 -115
  13. package/dist/colors/index.mjs +0 -72
  14. package/dist/index.cjs +0 -270
  15. package/dist/index.mjs +0 -217
  16. package/dist/neverthrow/index.cjs +0 -69
  17. package/dist/neverthrow/index.mjs +0 -24
  18. /package/dist/{cache → types/cache}/cacheService.d.ts +0 -0
  19. /package/dist/{cache → types/cache}/constants.d.ts +0 -0
  20. /package/dist/{cache → types/cache}/index.d.ts +0 -0
  21. /package/dist/{cache → types/cache}/internal/types.d.ts +0 -0
  22. /package/dist/{cache → types/cache}/types.d.ts +0 -0
  23. /package/dist/{colors → types/colors}/index.d.ts +0 -0
  24. /package/dist/{index.d.ts → types/index.d.ts} +0 -0
  25. /package/dist/{neverthrow → types/neverthrow}/index.d.ts +0 -0
  26. /package/dist/{neverthrow → types/neverthrow}/tryCatch.d.ts +0 -0
  27. /package/dist/{types.d.ts → types/types.d.ts} +0 -0
  28. /package/dist/{utils → types/utils}/chunksToLines.d.ts +0 -0
  29. /package/dist/{utils → types/utils}/isCallable.d.ts +0 -0
  30. /package/dist/{utils → types/utils}/isNullOrUndefined.d.ts +0 -0
  31. /package/dist/{utils → types/utils}/isObject.d.ts +0 -0
  32. /package/dist/{utils → types/utils}/isPrimitive.d.ts +0 -0
  33. /package/dist/{utils → types/utils}/isPromise.d.ts +0 -0
  34. /package/dist/{utils → types/utils}/jsonParser.d.ts +0 -0
  35. /package/dist/{utils → types/utils}/randomString.d.ts +0 -0
  36. /package/dist/{utils → types/utils}/readStdinAsync.d.ts +0 -0
  37. /package/dist/{utils → types/utils}/sleep.d.ts +0 -0
package/dist/index.cjs DELETED
@@ -1,270 +0,0 @@
1
- var __create = Object.create;
2
- var __getProtoOf = Object.getPrototypeOf;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __toESM = (mod, isNodeMode, target) => {
8
- target = mod != null ? __create(__getProtoOf(mod)) : {};
9
- const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
- for (let key of __getOwnPropNames(mod))
11
- if (!__hasOwnProp.call(to, key))
12
- __defProp(to, key, {
13
- get: () => mod[key],
14
- enumerable: true
15
- });
16
- return to;
17
- };
18
- var __moduleCache = /* @__PURE__ */ new WeakMap;
19
- var __toCommonJS = (from) => {
20
- var entry = __moduleCache.get(from), desc;
21
- if (entry)
22
- return entry;
23
- entry = __defProp({}, "__esModule", { value: true });
24
- if (from && typeof from === "object" || typeof from === "function")
25
- __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
26
- get: () => from[key],
27
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
28
- }));
29
- __moduleCache.set(from, entry);
30
- return entry;
31
- };
32
- var __export = (target, all) => {
33
- for (var name in all)
34
- __defProp(target, name, {
35
- get: all[name],
36
- enumerable: true,
37
- configurable: true,
38
- set: (newValue) => all[name] = () => newValue
39
- });
40
- };
41
-
42
- // src/cache/index.ts
43
- var exports_cache = {};
44
- __export(exports_cache, {
45
- Cache: () => Cache,
46
- CACHE_TTL_NEVER_EXPIRE: () => CACHE_TTL_NEVER_EXPIRE
47
- });
48
- module.exports = __toCommonJS(exports_cache);
49
-
50
- // src/cache/cacheService.ts
51
- var import_types = require("node:util/types");
52
-
53
- // src/utils/isCallable.ts
54
- function isCallable(value) {
55
- return typeof value === "function";
56
- }
57
-
58
- // src/cache/cacheService.ts
59
- var defaultCacheOptions = {
60
- expirationThresholdMs: 0,
61
- ttlMs: 60 * 60 * 1000
62
- };
63
-
64
- class Cache {
65
- inMemoryCache = new Map;
66
- options;
67
- adapter;
68
- constructor(adapter, defaultOptions) {
69
- const options = adapter && !("getValue" in adapter) ? adapter : defaultOptions;
70
- if (adapter && "getValue" in adapter && "setValue" in adapter) {
71
- this.adapter = adapter;
72
- }
73
- this.options = {
74
- ...defaultCacheOptions,
75
- ...options
76
- };
77
- }
78
- async getFromAdapter(cacheKey) {
79
- if (!this.adapter) {
80
- return;
81
- }
82
- return this.adapter.getValue(cacheKey);
83
- }
84
- async saveToAdapter(cacheKey, value) {
85
- if (!this.adapter) {
86
- return;
87
- }
88
- return this.adapter.setValue(cacheKey, value);
89
- }
90
- async get(cacheKey, valueLoader, options = {}) {
91
- const mergedOptions = this.mergeOptions(options);
92
- const cachedValue = this.tryGetFromMemory(cacheKey);
93
- if (cachedValue !== undefined) {
94
- return cachedValue;
95
- }
96
- const freshValue = await this.tryGetFromValueLoader(valueLoader);
97
- if (freshValue !== undefined) {
98
- await this.cacheValue(cacheKey, freshValue, mergedOptions);
99
- return freshValue;
100
- }
101
- const adapterValue = await this.tryGetFromAdapter(cacheKey);
102
- if (adapterValue !== undefined) {
103
- await this.cacheValue(cacheKey, adapterValue, mergedOptions);
104
- return adapterValue;
105
- }
106
- }
107
- mergeOptions(options) {
108
- return {
109
- ttlMs: this.options.ttlMs,
110
- expirationThresholdMs: this.options.expirationThresholdMs,
111
- ...options
112
- };
113
- }
114
- tryGetFromMemory(cacheKey) {
115
- const cached = this.inMemoryCache.get(cacheKey);
116
- if (cached && !this.isExpired(cached.metadata)) {
117
- return cached.data;
118
- }
119
- return;
120
- }
121
- async tryGetFromAdapter(cacheKey) {
122
- const cached = await this.getFromAdapter(cacheKey);
123
- if (cached && !this.isExpired(cached.metadata)) {
124
- this.inMemoryCache.set(cacheKey, cached);
125
- return cached.data;
126
- }
127
- return;
128
- }
129
- async tryGetFromValueLoader(valueLoader) {
130
- if (valueLoader === undefined) {
131
- return;
132
- }
133
- if (isCallable(valueLoader)) {
134
- return await valueLoader();
135
- }
136
- if (import_types.isPromise(valueLoader)) {
137
- return await valueLoader;
138
- }
139
- return valueLoader;
140
- }
141
- async cacheValue(cacheKey, value, options) {
142
- const cacheData = this.createCacheEntry(value, options);
143
- await this.saveToAdapter(cacheKey, cacheData);
144
- this.inMemoryCache.set(cacheKey, cacheData);
145
- }
146
- createCacheEntry(value, options) {
147
- const now = Date.now();
148
- let expiresAt;
149
- if (options.ttlMs < 0) {
150
- expiresAt = -1;
151
- } else {
152
- expiresAt = now + options.ttlMs - options.expirationThresholdMs;
153
- }
154
- return {
155
- data: value,
156
- metadata: {
157
- createdAt: now,
158
- ttlMs: options.ttlMs,
159
- expirationThresholdMs: options.expirationThresholdMs,
160
- expiresAt
161
- }
162
- };
163
- }
164
- isExpired(metadata) {
165
- if (!metadata) {
166
- return true;
167
- }
168
- if (metadata.expiresAt < 0) {
169
- return false;
170
- }
171
- const expirationTime = metadata.expiresAt ?? (metadata.createdAt && metadata.ttlMs ? metadata.createdAt + metadata.ttlMs : undefined);
172
- if (expirationTime === undefined) {
173
- return true;
174
- }
175
- return Date.now() > expirationTime;
176
- }
177
- }
178
- // src/cache/constants.ts
179
- var CACHE_TTL_NEVER_EXPIRE = -1;
180
- // src/index.ts
181
- var exports_src = {};
182
- __export(exports_src, {
183
- tryCatchAsync: () => tryCatchAsync,
184
- tryCatch: () => tryCatch,
185
- streamToLines: () => streamToLines,
186
- sleep: () => sleep,
187
- randomString: () => randomString,
188
- jsonParser: () => jsonParser,
189
- isPrimitive: () => isPrimitive,
190
- isObject: () => isObject,
191
- isNullOrUndefined: () => isNullOrUndefined,
192
- isNullOrEmptyOrUndefined: () => isNullOrEmptyOrUndefined,
193
- chunksToLines: () => chunksToLines,
194
- Cache: () => Cache,
195
- CACHE_TTL_NEVER_EXPIRE: () => CACHE_TTL_NEVER_EXPIRE
196
- });
197
- module.exports = __toCommonJS(exports_src);
198
-
199
- // src/utils/chunksToLines.ts
200
- async function* streamToLines(chunks) {
201
- let previous = "";
202
- for await (const chunk of chunks) {
203
- previous += chunk;
204
- let eolIndex;
205
- while ((eolIndex = previous.indexOf(`
206
- `)) >= 0) {
207
- const line = previous.slice(0, eolIndex + 1);
208
- yield line?.trim() ?? "";
209
- previous = previous.slice(eolIndex + 1);
210
- }
211
- }
212
- if (previous.length > 0) {
213
- yield previous;
214
- }
215
- }
216
- var chunksToLines = streamToLines;
217
- // src/utils/isNullOrUndefined.ts
218
- var isNullOrUndefined = (value) => value === null || value === undefined;
219
- function isNullOrEmptyOrUndefined(value) {
220
- return value === undefined || value === null || value === "" || value.toString().trim() === "";
221
- }
222
- // src/utils/isObject.ts
223
- function isObject(input) {
224
- return Object.prototype.toString.apply(input) === "[object Object]";
225
- }
226
- // src/utils/isPrimitive.ts
227
- function isPrimitive(value) {
228
- return typeof value !== "object" && typeof value !== "function" || value === null || value instanceof Date;
229
- }
230
- // src/utils/jsonParser.ts
231
- var import_secure_json_parse = __toESM(require("secure-json-parse"));
232
- function jsonParser(input) {
233
- try {
234
- return { value: import_secure_json_parse.default.parse(input, { protoAction: "remove" }) };
235
- } catch (err) {
236
- return { err };
237
- }
238
- }
239
- // src/utils/randomString.ts
240
- function randomString(length = 6) {
241
- let result = "";
242
- const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
243
- const charactersLength = characters.length;
244
- for (let i = 0;i < length; i++) {
245
- result += characters.charAt(Math.floor(Math.random() * charactersLength));
246
- }
247
- return result;
248
- }
249
- // src/utils/sleep.ts
250
- var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
251
- // src/neverthrow/tryCatch.ts
252
- function tryCatch(fn) {
253
- try {
254
- const data = fn();
255
- return [data, undefined];
256
- } catch (error) {
257
- return [undefined, error];
258
- }
259
- }
260
- async function tryCatchAsync(promise) {
261
- try {
262
- const data = await promise;
263
- return [data, undefined];
264
- } catch (error) {
265
- return [undefined, error];
266
- }
267
- }
268
-
269
- //# debugId=455FB2E697529B5064756E2164756E21
270
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2NhY2hlL2NhY2hlU2VydmljZS50cyIsICIuLi9zcmMvdXRpbHMvaXNDYWxsYWJsZS50cyIsICIuLi9zcmMvY2FjaGUvY29uc3RhbnRzLnRzIiwgIi4uL3NyYy91dGlscy9jaHVua3NUb0xpbmVzLnRzIiwgIi4uL3NyYy91dGlscy9pc051bGxPclVuZGVmaW5lZC50cyIsICIuLi9zcmMvdXRpbHMvaXNPYmplY3QudHMiLCAiLi4vc3JjL3V0aWxzL2lzUHJpbWl0aXZlLnRzIiwgIi4uL3NyYy91dGlscy9qc29uUGFyc2VyLnRzIiwgIi4uL3NyYy91dGlscy9yYW5kb21TdHJpbmcudHMiLCAiLi4vc3JjL3V0aWxzL3NsZWVwLnRzIiwgIi4uL3NyYy9uZXZlcnRocm93L3RyeUNhdGNoLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWwogICAgImltcG9ydCB7IGlzUHJvbWlzZSB9IGZyb20gXCJub2RlOnV0aWwvdHlwZXNcIjtcbmltcG9ydCB7IGlzQ2FsbGFibGUgfSBmcm9tIFwiLi4vdXRpbHMvaXNDYWxsYWJsZS50c1wiO1xuaW1wb3J0IHR5cGUgeyBDYWNoZU1ldGFkYXRhT3B0aW9ucywgQ2FjaGVPcHRpb25zLCBDYWNoZVdpdGhNZXRhZGF0YSwgVmFsdWVMb2FkZXIgfSBmcm9tIFwiLi9pbnRlcm5hbC90eXBlcy50c1wiO1xuaW1wb3J0IHR5cGUgeyBDYWNoZU1ldGFkYXRhLCBJQ2FjaGVBZGFwdGVyIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcblxuY29uc3QgZGVmYXVsdENhY2hlT3B0aW9uczogQ2FjaGVPcHRpb25zID0ge1xuICBleHBpcmF0aW9uVGhyZXNob2xkTXM6IDAsXG4gIHR0bE1zOiA2MCAqIDYwICogMTAwMCxcbn07XG5cbmV4cG9ydCBjbGFzcyBDYWNoZTxUQWRhcHRlciBleHRlbmRzIElDYWNoZUFkYXB0ZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ+IHtcbiAgcHJpdmF0ZSBpbk1lbW9yeUNhY2hlOiBNYXA8c3RyaW5nLCBDYWNoZVdpdGhNZXRhZGF0YT4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogQ2FjaGVPcHRpb25zO1xuICBwcml2YXRlIHJlYWRvbmx5IGFkYXB0ZXI/OiBUQWRhcHRlcjtcblxuICBjb25zdHJ1Y3RvcihkZWZhdWx0T3B0aW9ucz86IFBhcnRpYWw8Q2FjaGVPcHRpb25zPik7XG4gIGNvbnN0cnVjdG9yKGFkYXB0ZXI/OiBUQWRhcHRlciwgZGVmYXVsdE9wdGlvbnM/OiBQYXJ0aWFsPENhY2hlT3B0aW9ucz4pO1xuICBjb25zdHJ1Y3RvcihhZGFwdGVyPzogVEFkYXB0ZXIgfCBQYXJ0aWFsPENhY2hlT3B0aW9ucz4sIGRlZmF1bHRPcHRpb25zPzogUGFydGlhbDxDYWNoZU9wdGlvbnM+KSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGFkYXB0ZXIgJiYgIShcImdldFZhbHVlXCIgaW4gYWRhcHRlcikgPyAoYWRhcHRlciBhcyBQYXJ0aWFsPENhY2hlT3B0aW9ucz4pIDogZGVmYXVsdE9wdGlvbnM7XG4gICAgaWYgKGFkYXB0ZXIgJiYgXCJnZXRWYWx1ZVwiIGluIGFkYXB0ZXIgJiYgXCJzZXRWYWx1ZVwiIGluIGFkYXB0ZXIpIHtcbiAgICAgIHRoaXMuYWRhcHRlciA9IGFkYXB0ZXIgYXMgVEFkYXB0ZXI7XG4gICAgfVxuXG4gICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgLi4uZGVmYXVsdENhY2hlT3B0aW9ucyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0RnJvbUFkYXB0ZXI8VD4oY2FjaGVLZXk6IHN0cmluZyk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghdGhpcy5hZGFwdGVyKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZ2V0VmFsdWUoY2FjaGVLZXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzYXZlVG9BZGFwdGVyPFQ+KGNhY2hlS2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmFkYXB0ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnNldFZhbHVlPFQ+KGNhY2hlS2V5LCB2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0PFQ+KFxuICAgIGNhY2hlS2V5OiBzdHJpbmcsXG4gICAgdmFsdWVMb2FkZXI/OiBWYWx1ZUxvYWRlcjxUPixcbiAgICBvcHRpb25zOiBQYXJ0aWFsPENhY2hlTWV0YWRhdGFPcHRpb25zPiA9IHt9LFxuICApOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBtZXJnZWRPcHRpb25zID0gdGhpcy5tZXJnZU9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAvLyBUcnkgaW4tbWVtb3J5IGNhY2hlIGZpcnN0XG4gICAgY29uc3QgY2FjaGVkVmFsdWUgPSB0aGlzLnRyeUdldEZyb21NZW1vcnk8VD4oY2FjaGVLZXkpO1xuICAgIGlmIChjYWNoZWRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gY2FjaGVkVmFsdWU7XG4gICAgfVxuXG4gICAgLy8gTG9hZCBmcmVzaCB2YWx1ZSBmcm9tIGxvYWRlciBmdW5jdGlvbiBmaXJzdFxuICAgIGNvbnN0IGZyZXNoVmFsdWUgPSBhd2FpdCB0aGlzLnRyeUdldEZyb21WYWx1ZUxvYWRlcih2YWx1ZUxvYWRlcik7XG4gICAgaWYgKGZyZXNoVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXdhaXQgdGhpcy5jYWNoZVZhbHVlKGNhY2hlS2V5LCBmcmVzaFZhbHVlLCBtZXJnZWRPcHRpb25zKTtcblxuICAgICAgcmV0dXJuIGZyZXNoVmFsdWU7XG4gICAgfVxuXG4gICAgLy8gVHJ5IGFkYXB0ZXIgY2FjaGUgc2Vjb25kXG4gICAgY29uc3QgYWRhcHRlclZhbHVlID0gYXdhaXQgdGhpcy50cnlHZXRGcm9tQWRhcHRlcjxUPihjYWNoZUtleSk7XG4gICAgaWYgKGFkYXB0ZXJWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhd2FpdCB0aGlzLmNhY2hlVmFsdWUoY2FjaGVLZXksIGFkYXB0ZXJWYWx1ZSwgbWVyZ2VkT3B0aW9ucyk7XG5cbiAgICAgIHJldHVybiBhZGFwdGVyVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZU9wdGlvbnMob3B0aW9uczogUGFydGlhbDxDYWNoZU1ldGFkYXRhT3B0aW9ucz4pOiBDYWNoZU1ldGFkYXRhT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR0bE1zOiB0aGlzLm9wdGlvbnMudHRsTXMsXG4gICAgICBleHBpcmF0aW9uVGhyZXNob2xkTXM6IHRoaXMub3B0aW9ucy5leHBpcmF0aW9uVGhyZXNob2xkTXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHRyeUdldEZyb21NZW1vcnk8VD4oY2FjaGVLZXk6IHN0cmluZyk6IFQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMuaW5NZW1vcnlDYWNoZS5nZXQoY2FjaGVLZXkpO1xuXG4gICAgaWYgKGNhY2hlZCAmJiAhdGhpcy5pc0V4cGlyZWQoY2FjaGVkLm1ldGFkYXRhKSkge1xuICAgICAgcmV0dXJuIGNhY2hlZC5kYXRhIGFzIFQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdHJ5R2V0RnJvbUFkYXB0ZXI8VD4oY2FjaGVLZXk6IHN0cmluZyk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGNhY2hlZCA9IGF3YWl0IHRoaXMuZ2V0RnJvbUFkYXB0ZXI8Q2FjaGVXaXRoTWV0YWRhdGE8VD4+KGNhY2hlS2V5KTtcblxuICAgIGlmIChjYWNoZWQgJiYgIXRoaXMuaXNFeHBpcmVkKGNhY2hlZC5tZXRhZGF0YSkpIHtcbiAgICAgIHRoaXMuaW5NZW1vcnlDYWNoZS5zZXQoY2FjaGVLZXksIGNhY2hlZCk7XG4gICAgICByZXR1cm4gY2FjaGVkLmRhdGE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdHJ5R2V0RnJvbVZhbHVlTG9hZGVyPFQ+KHZhbHVlTG9hZGVyPzogVmFsdWVMb2FkZXI8VD4pOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAodmFsdWVMb2FkZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoaXNDYWxsYWJsZSh2YWx1ZUxvYWRlcikpIHtcbiAgICAgIHJldHVybiBhd2FpdCB2YWx1ZUxvYWRlcigpO1xuICAgIH1cblxuICAgIGlmIChpc1Byb21pc2UodmFsdWVMb2FkZXIpKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdmFsdWVMb2FkZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlTG9hZGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjYWNoZVZhbHVlPFQ+KGNhY2hlS2V5OiBzdHJpbmcsIHZhbHVlOiBULCBvcHRpb25zOiBDYWNoZU1ldGFkYXRhT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNhY2hlRGF0YSA9IHRoaXMuY3JlYXRlQ2FjaGVFbnRyeSh2YWx1ZSwgb3B0aW9ucyk7XG5cbiAgICBhd2FpdCB0aGlzLnNhdmVUb0FkYXB0ZXIoY2FjaGVLZXksIGNhY2hlRGF0YSk7XG4gICAgdGhpcy5pbk1lbW9yeUNhY2hlLnNldChjYWNoZUtleSwgY2FjaGVEYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ2FjaGVFbnRyeTxUPih2YWx1ZTogVCwgb3B0aW9uczogQ2FjaGVNZXRhZGF0YU9wdGlvbnMpOiBDYWNoZVdpdGhNZXRhZGF0YTxUPiB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgaWYgKG9wdGlvbnMudHRsTXMgPCAwKSB7XG4gICAgICBleHBpcmVzQXQgPSAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXhwaXJlc0F0ID0gbm93ICsgb3B0aW9ucy50dGxNcyAtIG9wdGlvbnMuZXhwaXJhdGlvblRocmVzaG9sZE1zO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiB2YWx1ZSxcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIGNyZWF0ZWRBdDogbm93LFxuICAgICAgICB0dGxNczogb3B0aW9ucy50dGxNcyxcbiAgICAgICAgZXhwaXJhdGlvblRocmVzaG9sZE1zOiBvcHRpb25zLmV4cGlyYXRpb25UaHJlc2hvbGRNcyxcbiAgICAgICAgZXhwaXJlc0F0LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0V4cGlyZWQobWV0YWRhdGE/OiBDYWNoZU1ldGFkYXRhKTogYm9vbGVhbiB7XG4gICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKG1ldGFkYXRhLmV4cGlyZXNBdCA8IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBleHBpcmF0aW9uVGltZSA9XG4gICAgICBtZXRhZGF0YS5leHBpcmVzQXQgPz8gKG1ldGFkYXRhLmNyZWF0ZWRBdCAmJiBtZXRhZGF0YS50dGxNcyA/IG1ldGFkYXRhLmNyZWF0ZWRBdCArIG1ldGFkYXRhLnR0bE1zIDogdW5kZWZpbmVkKTtcblxuICAgIGlmIChleHBpcmF0aW9uVGltZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gRGF0ZS5ub3coKSA+IGV4cGlyYXRpb25UaW1lO1xuICB9XG59XG4iLAogICAgImV4cG9ydCBmdW5jdGlvbiBpc0NhbGxhYmxlKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBDYWxsYWJsZUZ1bmN0aW9uIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiO1xufVxuIiwKICAgICJleHBvcnQgY29uc3QgQ0FDSEVfVFRMX05FVkVSX0VYUElSRSA9IC0xO1xuIiwKICAgICIvKipcbiAqIENvbnZlcnRzIGFuIGFzeW5jIGl0ZXJhYmxlIG9mIHN0cmluZyBvciBVaW50OEFycmF5IGNodW5rcyBpbnRvIGFuIGFzeW5jIGl0ZXJhYmxlIG9mIGxpbmVzLlxuICogSGFuZGxlcyBjYXNlcyB3aGVyZSBsaW5lcyBtYXkgYmUgc3BsaXQgYWNyb3NzIG11bHRpcGxlIGNodW5rcy5cbiAqIFVzYWdlOlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHBpcGVsaW5lIH0gZnJvbSBcIm5vZGU6c3RyZWFtL3Byb21pc2VzXCI7XG4gKiBpbXBvcnQgeyBjcmVhdGVSZWFkU3RyZWFtIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbiAqIGltcG9ydCB7IHN0cmVhbVRvTGluZXMgfSBmcm9tIFwiQGx1a2Fza2ovdHMtdXRpbHNcIjtcbiAqXG4gKiBhc3luYyBmdW5jdGlvbiBwcm9jZXNzTGluZShjaHVuazogQXN5bmNJdGVyYWJsZTxzdHJpbmc+KSB7XG4gKiAgIGZvciBhd2FpdCAoY29uc3QgbGluZSBvZiBjaHVuaykge1xuICogICAgIGNvbnNvbGUubG9nKGxpbmUpO1xuICogICAgIHlpZWxkIGxpbmU7XG4gKiAgIH1cbiAqIH1cbiAqIGNvbnN0IHJlYWRTdHJlYW0gPSBjcmVhdGVSZWFkU3RyZWFtKFwicGF0aC90by9maWxlLnR4dFwiLCB7IGVuY29kaW5nOiBcInV0Zi04XCIgfSk7XG4gKiBhd2FpdCBwaXBlbGluZShyZWFkU3RyZWFtLCBzdHJlYW1Ub0xpbmVzLCBwcm9jZXNzLnN0ZG91dCkuY2F0Y2goKGVycikgPT4ge1xuICogICBjb25zb2xlLmVycm9yKGVycik7XG4gKiAgIHByb2Nlc3MuZXhpdCgxKTtcbiAqIH0pO1xuICogYGBgXG4gKiBAcGFyYW0gY2h1bmtzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogc3RyZWFtVG9MaW5lcyhjaHVua3M6IEFzeW5jSXRlcmFibGU8c3RyaW5nIHwgVWludDhBcnJheT4pIHtcbiAgbGV0IHByZXZpb3VzID0gXCJcIjtcblxuICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIGNodW5rcykge1xuICAgIHByZXZpb3VzICs9IGNodW5rO1xuICAgIGxldCBlb2xJbmRleDogbnVtYmVyO1xuXG4gICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0Fzc2lnbkluRXhwcmVzc2lvbnM6IFwiZXhwbGFuYXRpb25cIlxuICAgIHdoaWxlICgoZW9sSW5kZXggPSBwcmV2aW91cy5pbmRleE9mKFwiXFxuXCIpKSA+PSAwKSB7XG4gICAgICAvLyB0aGlzIGxpbmUgaW5jbHVkZXMgdGhlIEVPTFxuICAgICAgY29uc3QgbGluZSA9IHByZXZpb3VzLnNsaWNlKDAsIGVvbEluZGV4ICsgMSk7XG4gICAgICB5aWVsZCBsaW5lPy50cmltKCkgPz8gXCJcIjtcbiAgICAgIHByZXZpb3VzID0gcHJldmlvdXMuc2xpY2UoZW9sSW5kZXggKyAxKTtcbiAgICB9XG4gIH1cblxuICBpZiAocHJldmlvdXMubGVuZ3RoID4gMCkge1xuICAgIHlpZWxkIHByZXZpb3VzO1xuICB9XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgdXNlIHN0cmVhbVRvTGluZXNcbiAqL1xuZXhwb3J0IGNvbnN0IGNodW5rc1RvTGluZXMgPSBzdHJlYW1Ub0xpbmVzO1xuIiwKICAgICJleHBvcnQgY29uc3QgaXNOdWxsT3JVbmRlZmluZWQgPSAodmFsdWU6IGFueSk6IHZhbHVlIGlzIG51bGwgfCB1bmRlZmluZWQgPT4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZDtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbE9yRW1wdHlPclVuZGVmaW5lZCh2YWx1ZT86IGFueSB8IG51bGwpOiB2YWx1ZSBpcyBudWxsIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IFwiXCIgfHwgdmFsdWUudG9TdHJpbmcoKS50cmltKCkgPT09IFwiXCI7XG59XG4iLAogICAgIi8qKlxuICogVHlwZSBndWFyZCB0aGF0IGNoZWNrcyBpZiB0aGUgaW5wdXQgaXMgYSBwbGFpbiBKYXZhU2NyaXB0IG9iamVjdC5cbiAqIEBwYXJhbSB7YW55fSBpbnB1dCAtIFRoZSB2YWx1ZSB0byBjaGVja1xuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIGlucHV0IGlzIGEgcGxhaW4gb2JqZWN0LCBmYWxzZSBvdGhlcndpc2VcbiAqIEB0eXBlUGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IFR5cGUgZ3VhcmQgbmFycm93cyB0aGUgaW5wdXQgdHlwZSB0byBhIHN0cmluZy1rZXllZCBvYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0KGlucHV0OiBhbnkpOiBpbnB1dCBpcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkoaW5wdXQpID09PSBcIltvYmplY3QgT2JqZWN0XVwiO1xufVxuIiwKICAgICJleHBvcnQgZnVuY3Rpb24gaXNQcmltaXRpdmUodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgcmV0dXJuICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlIGluc3RhbmNlb2YgRGF0ZTtcbn1cbiIsCiAgICAiaW1wb3J0IHNqcyBmcm9tIFwic2VjdXJlLWpzb24tcGFyc2VcIjtcblxuLyoqXG4gKiBTYWZlbHkgcGFyc2VzIEpTT04gaW5wdXQgdXNpbmcgc2VjdXJlLWpzb24tcGFyc2Ugd2l0aCBwcm90b3R5cGUgcG9sbHV0aW9uIHByb3RlY3Rpb24uXG4gKiBAcGFyYW0ge2FueX0gaW5wdXQgLSBUaGUgaW5wdXQgdG8gYmUgcGFyc2VkIGFzIEpTT05cbiAqIEByZXR1cm5zIHt7IHZhbHVlPzogYW55LCBlcnI/OiBFcnJvciB9fSBBbiBvYmplY3QgY29udGFpbmluZyBlaXRoZXIgdGhlIHBhcnNlZCB2YWx1ZSBvciBhbiBlcnJvciBpZiBwYXJzaW5nIGZhaWxlZFxuICovXG5leHBvcnQgZnVuY3Rpb24ganNvblBhcnNlcihpbnB1dDogYW55KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHsgdmFsdWU6IHNqcy5wYXJzZShpbnB1dCwgeyBwcm90b0FjdGlvbjogXCJyZW1vdmVcIiB9KSB9O1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4geyBlcnIgfTtcbiAgfVxufVxuIiwKICAgICJleHBvcnQgZnVuY3Rpb24gcmFuZG9tU3RyaW5nKGxlbmd0aDogbnVtYmVyID0gNik6IHN0cmluZyB7XG4gIGxldCByZXN1bHQgPSBcIlwiO1xuICBjb25zdCBjaGFyYWN0ZXJzID0gXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OVwiO1xuICBjb25zdCBjaGFyYWN0ZXJzTGVuZ3RoID0gY2hhcmFjdGVycy5sZW5ndGg7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICByZXN1bHQgKz0gY2hhcmFjdGVycy5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcmFjdGVyc0xlbmd0aCkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG4iLAogICAgImV4cG9ydCBjb25zdCBzbGVlcCA9IChtczogbnVtYmVyKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xuIiwKICAgICIvLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS90M2RvdGdnL2E0ODZjNGFlNjZkMzJiZjE3YzA5YzczNjA5ZGFjYzViXG4vLyBUeXBlcyBmb3IgdGhlIHJlc3VsdCBvYmplY3Qgd2l0aCBkaXNjcmltaW5hdGVkIHVuaW9uXG4vLyB0eXBlIFN1Y2Nlc3M8VD4gPSB7XG4vLyAgIGRhdGE6IFQ7XG4vLyAgIGVycm9yOiBudWxsO1xuLy8gfTtcblxuLy8gdHlwZSBGYWlsdXJlPEU+ID0ge1xuLy8gICBkYXRhOiBudWxsO1xuLy8gICBlcnJvcjogRTtcbi8vIH07XG5cbi8vIGV4cG9ydCB0eXBlIFJlc3VsdDxULCBFID0gRXJyb3I+ID0gU3VjY2VzczxUPiB8IEZhaWx1cmU8RT47XG5cbmV4cG9ydCB0eXBlIFJlc3VsdDxULCBFPiA9IFt1bmRlZmluZWQsIEVdIHwgW1QsIHVuZGVmaW5lZF07XG5leHBvcnQgdHlwZSBQcm9taXNlUmVzdWx0PFQsIEU+ID0gUHJvbWlzZTxSZXN1bHQ8VCwgRT4+O1xuXG4vKipcbiAqIFdyYXBzIGEgc3luY2hyb25vdXMgZnVuY3Rpb24gaW4gYSB0cnktY2F0Y2ggYmxvY2sgYW5kIHJldHVybnMgYSBSZXN1bHQgdHVwbGUgY29udGFpbmluZyBlaXRoZXIgdGhlIHJldHVybmVkIHZhbHVlIG9yIHRoZSBjYXVnaHQgZXJyb3JcbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSBzdWNjZXNzZnVsIHJlc3VsdCB2YWx1ZVxuICogQHRlbXBsYXRlIEUgLSBUaGUgdHlwZSBvZiB0aGUgZXJyb3IgdmFsdWUsIG11c3QgZXh0ZW5kIEVycm9yXG4gKiBAcGFyYW0geygpID0+IFR9IGZuIC0gVGhlIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkXG4gKiBAcmV0dXJucyB7UmVzdWx0PFQsIEU+fSBBIHR1cGxlIGNvbnRhaW5pbmcgZWl0aGVyIFtkYXRhLCB1bmRlZmluZWRdIG9yIFt1bmRlZmluZWQsIGVycm9yXVxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBbZGF0YSwgZXJyb3JdID0gdHJ5Q2F0Y2goKCkgPT4gc29tZVJpc2t5T3BlcmF0aW9uKCkpO1xuICogaWYgKGVycm9yKSB7XG4gKiAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICogfSBlbHNlIHtcbiAqICAgY29uc29sZS5sb2coZGF0YSk7XG4gKiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cnlDYXRjaDxULCBFIGV4dGVuZHMgRXJyb3I+KGZuOiAoKSA9PiBUKTogUmVzdWx0PFQsIEU+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBkYXRhID0gZm4oKTtcbiAgICByZXR1cm4gW2RhdGEgYXMgVCwgdW5kZWZpbmVkXTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gW3VuZGVmaW5lZCwgZXJyb3IgYXMgRV07XG4gIH1cbn1cblxuLyoqXG4gKiBXcmFwcyBhIFByb21pc2UgaW4gYSB0cnktY2F0Y2ggYmxvY2sgYW5kIHJldHVybnMgYSBSZXN1bHQgb2JqZWN0IGNvbnRhaW5pbmcgZWl0aGVyIHRoZSByZXNvbHZlZCBkYXRhIG9yIHRoZSBjYXVnaHQgZXJyb3JcbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSBzdWNjZXNzZnVsIHJlc3VsdCB2YWx1ZVxuICogQHRlbXBsYXRlIEUgLSBUaGUgdHlwZSBvZiB0aGUgZXJyb3IgdmFsdWUsIGRlZmF1bHRzIHRvIEVycm9yXG4gKiBAcGFyYW0ge1Byb21pc2U8VD59IHByb21pc2UgLSBUaGUgcHJvbWlzZSB0byBiZSBleGVjdXRlZFxuICogQHJldHVybnMge1Byb21pc2U8UmVzdWx0PFQsIEU+Pn0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBSZXN1bHQgb2JqZWN0IGNvbnRhaW5pbmcgZWl0aGVyIHRoZSBkYXRhIG9yIGVycm9yXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHtkYXRhLCBlcnJvcn0gPSBhd2FpdCB0cnlDYXRjaEFzeW5jKHNvbWVQcm9taXNlKTtcbiAqIGlmIChlcnJvcikge1xuICogICBjb25zb2xlLmVycm9yKHJlc3VsdC5lcnJvcik7XG4gKiB9IGVsc2Uge1xuICogICBjb25zb2xlLmxvZyhkYXRhKTtcbiAqIH1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRyeUNhdGNoQXN5bmM8VCwgRSBleHRlbmRzIEVycm9yPihwcm9taXNlOiBQcm9taXNlPFQ+KTogUHJvbWlzZVJlc3VsdDxULCBFPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHByb21pc2U7XG4gICAgcmV0dXJuIFtkYXRhIGFzIFQsIHVuZGVmaW5lZF07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIFt1bmRlZmluZWQsIGVycm9yIGFzIEVdO1xuICB9XG59XG4iCiAgXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUEwQixJQUExQjs7O0FDQU8sU0FBUyxVQUFVLENBQUMsT0FBdUM7QUFBQSxFQUNoRSxPQUFPLE9BQU8sVUFBVTtBQUFBOzs7QURJMUIsSUFBTSxzQkFBb0M7QUFBQSxFQUN4Qyx1QkFBdUI7QUFBQSxFQUN2QixPQUFPLEtBQUssS0FBSztBQUNuQjtBQUFBO0FBRU8sTUFBTSxNQUE4RDtBQUFBLEVBQ2pFLGdCQUFnRCxJQUFJO0FBQUEsRUFDM0M7QUFBQSxFQUNBO0FBQUEsRUFJakIsV0FBVyxDQUFDLFNBQTRDLGdCQUF3QztBQUFBLElBQzlGLE1BQU0sVUFBVSxXQUFXLEVBQUUsY0FBYyxXQUFZLFVBQW9DO0FBQUEsSUFDM0YsSUFBSSxXQUFXLGNBQWMsV0FBVyxjQUFjLFNBQVM7QUFBQSxNQUM3RCxLQUFLLFVBQVU7QUFBQSxJQUNqQjtBQUFBLElBRUEsS0FBSyxVQUFVO0FBQUEsU0FDVjtBQUFBLFNBQ0E7QUFBQSxJQUNMO0FBQUE7QUFBQSxPQUdZLGVBQWlCLENBQUMsVUFBMEM7QUFBQSxJQUN4RSxJQUFJLENBQUMsS0FBSyxTQUFTO0FBQUEsTUFDakI7QUFBQSxJQUNGO0FBQUEsSUFFQSxPQUFPLEtBQUssUUFBUSxTQUFTLFFBQVE7QUFBQTtBQUFBLE9BR3pCLGNBQWdCLENBQUMsVUFBa0IsT0FBeUI7QUFBQSxJQUN4RSxJQUFJLENBQUMsS0FBSyxTQUFTO0FBQUEsTUFDakI7QUFBQSxJQUNGO0FBQUEsSUFFQSxPQUFPLEtBQUssUUFBUSxTQUFZLFVBQVUsS0FBSztBQUFBO0FBQUEsT0FHcEMsSUFBTSxDQUNqQixVQUNBLGFBQ0EsVUFBeUMsQ0FBQyxHQUNsQjtBQUFBLElBQ3hCLE1BQU0sZ0JBQWdCLEtBQUssYUFBYSxPQUFPO0FBQUEsSUFHL0MsTUFBTSxjQUFjLEtBQUssaUJBQW9CLFFBQVE7QUFBQSxJQUNyRCxJQUFJLGdCQUFnQixXQUFXO0FBQUEsTUFDN0IsT0FBTztBQUFBLElBQ1Q7QUFBQSxJQUdBLE1BQU0sYUFBYSxNQUFNLEtBQUssc0JBQXNCLFdBQVc7QUFBQSxJQUMvRCxJQUFJLGVBQWUsV0FBVztBQUFBLE1BQzVCLE1BQU0sS0FBSyxXQUFXLFVBQVUsWUFBWSxhQUFhO0FBQUEsTUFFekQsT0FBTztBQUFBLElBQ1Q7QUFBQSxJQUdBLE1BQU0sZUFBZSxNQUFNLEtBQUssa0JBQXFCLFFBQVE7QUFBQSxJQUM3RCxJQUFJLGlCQUFpQixXQUFXO0FBQUEsTUFDOUIsTUFBTSxLQUFLLFdBQVcsVUFBVSxjQUFjLGFBQWE7QUFBQSxNQUUzRCxPQUFPO0FBQUEsSUFDVDtBQUFBO0FBQUEsRUFHTSxZQUFZLENBQUMsU0FBOEQ7QUFBQSxJQUNqRixPQUFPO0FBQUEsTUFDTCxPQUFPLEtBQUssUUFBUTtBQUFBLE1BQ3BCLHVCQUF1QixLQUFLLFFBQVE7QUFBQSxTQUNqQztBQUFBLElBQ0w7QUFBQTtBQUFBLEVBR00sZ0JBQW1CLENBQUMsVUFBaUM7QUFBQSxJQUMzRCxNQUFNLFNBQVMsS0FBSyxjQUFjLElBQUksUUFBUTtBQUFBLElBRTlDLElBQUksVUFBVSxDQUFDLEtBQUssVUFBVSxPQUFPLFFBQVEsR0FBRztBQUFBLE1BQzlDLE9BQU8sT0FBTztBQUFBLElBQ2hCO0FBQUEsSUFFQTtBQUFBO0FBQUEsT0FHWSxrQkFBb0IsQ0FBQyxVQUEwQztBQUFBLElBQzNFLE1BQU0sU0FBUyxNQUFNLEtBQUssZUFBcUMsUUFBUTtBQUFBLElBRXZFLElBQUksVUFBVSxDQUFDLEtBQUssVUFBVSxPQUFPLFFBQVEsR0FBRztBQUFBLE1BQzlDLEtBQUssY0FBYyxJQUFJLFVBQVUsTUFBTTtBQUFBLE1BQ3ZDLE9BQU8sT0FBTztBQUFBLElBQ2hCO0FBQUEsSUFFQTtBQUFBO0FBQUEsT0FHWSxzQkFBd0IsQ0FBQyxhQUFzRDtBQUFBLElBQzNGLElBQUksZ0JBQWdCLFdBQVc7QUFBQSxNQUM3QjtBQUFBLElBQ0Y7QUFBQSxJQUVBLElBQUksV0FBVyxXQUFXLEdBQUc7QUFBQSxNQUMzQixPQUFPLE1BQU0sWUFBWTtBQUFBLElBQzNCO0FBQUEsSUFFQSxJQUFJLHVCQUFVLFdBQVcsR0FBRztBQUFBLE1BQzFCLE9BQU8sTUFBTTtBQUFBLElBQ2Y7QUFBQSxJQUVBLE9BQU87QUFBQTtBQUFBLE9BR0ssV0FBYSxDQUFDLFVBQWtCLE9BQVUsU0FBOEM7QUFBQSxJQUNwRyxNQUFNLFlBQVksS0FBSyxpQkFBaUIsT0FBTyxPQUFPO0FBQUEsSUFFdEQsTUFBTSxLQUFLLGNBQWMsVUFBVSxTQUFTO0FBQUEsSUFDNUMsS0FBSyxjQUFjLElBQUksVUFBVSxTQUFTO0FBQUE7QUFBQSxFQUdwQyxnQkFBbUIsQ0FBQyxPQUFVLFNBQXFEO0FBQUEsSUFDekYsTUFBTSxNQUFNLEtBQUssSUFBSTtBQUFBLElBQ3JCLElBQUk7QUFBQSxJQUNKLElBQUksUUFBUSxRQUFRLEdBQUc7QUFBQSxNQUNyQixZQUFZO0FBQUEsSUFDZCxFQUFPO0FBQUEsTUFDTCxZQUFZLE1BQU0sUUFBUSxRQUFRLFFBQVE7QUFBQTtBQUFBLElBRzVDLE9BQU87QUFBQSxNQUNMLE1BQU07QUFBQSxNQUNOLFVBQVU7QUFBQSxRQUNSLFdBQVc7QUFBQSxRQUNYLE9BQU8sUUFBUTtBQUFBLFFBQ2YsdUJBQXVCLFFBQVE7QUFBQSxRQUMvQjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUE7QUFBQSxFQUdNLFNBQVMsQ0FBQyxVQUFtQztBQUFBLElBQ25ELElBQUksQ0FBQyxVQUFVO0FBQUEsTUFDYixPQUFPO0FBQUEsSUFDVDtBQUFBLElBRUEsSUFBSSxTQUFTLFlBQVksR0FBRztBQUFBLE1BQzFCLE9BQU87QUFBQSxJQUNUO0FBQUEsSUFFQSxNQUFNLGlCQUNKLFNBQVMsY0FBYyxTQUFTLGFBQWEsU0FBUyxRQUFRLFNBQVMsWUFBWSxTQUFTLFFBQVE7QUFBQSxJQUV0RyxJQUFJLG1CQUFtQixXQUFXO0FBQUEsTUFDaEMsT0FBTztBQUFBLElBQ1Q7QUFBQSxJQUVBLE9BQU8sS0FBSyxJQUFJLElBQUk7QUFBQTtBQUV4Qjs7QUVyS08sSUFBTSx5QkFBeUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3VCdEMsZ0JBQXVCLGFBQWEsQ0FBQyxRQUE0QztBQUFBLEVBQy9FLElBQUksV0FBVztBQUFBLEVBRWYsaUJBQWlCLFNBQVMsUUFBUTtBQUFBLElBQ2hDLFlBQVk7QUFBQSxJQUNaLElBQUk7QUFBQSxJQUdKLFFBQVEsV0FBVyxTQUFTLFFBQVE7QUFBQSxDQUFJLE1BQU0sR0FBRztBQUFBLE1BRS9DLE1BQU0sT0FBTyxTQUFTLE1BQU0sR0FBRyxXQUFXLENBQUM7QUFBQSxNQUMzQyxNQUFNLE1BQU0sS0FBSyxLQUFLO0FBQUEsTUFDdEIsV0FBVyxTQUFTLE1BQU0sV0FBVyxDQUFDO0FBQUEsSUFDeEM7QUFBQSxFQUNGO0FBQUEsRUFFQSxJQUFJLFNBQVMsU0FBUyxHQUFHO0FBQUEsSUFDdkIsTUFBTTtBQUFBLEVBQ1I7QUFBQTtBQU1LLElBQU0sZ0JBQWdCOztBQy9DdEIsSUFBTSxvQkFBb0IsQ0FBQyxVQUEwQyxVQUFVLFFBQVEsVUFBVTtBQUVqRyxTQUFTLHdCQUF3QixDQUFDLE9BQStDO0FBQUEsRUFDdEYsT0FBTyxVQUFVLGFBQWEsVUFBVSxRQUFRLFVBQVUsTUFBTSxNQUFNLFNBQVMsRUFBRSxLQUFLLE1BQU07QUFBQTs7QUNHdkYsU0FBUyxRQUFRLENBQUMsT0FBMEM7QUFBQSxFQUNqRSxPQUFPLE9BQU8sVUFBVSxTQUFTLE1BQU0sS0FBSyxNQUFNO0FBQUE7O0FDUDdDLFNBQVMsV0FBVyxDQUFDLE9BQXlCO0FBQUEsRUFDbkQsT0FBUSxPQUFPLFVBQVUsWUFBWSxPQUFPLFVBQVUsY0FBZSxVQUFVLFFBQVEsaUJBQWlCO0FBQUE7O0FDRDFGLElBQWhCO0FBT08sU0FBUyxVQUFVLENBQUMsT0FBWTtBQUFBLEVBQ3JDLElBQUk7QUFBQSxJQUNGLE9BQU8sRUFBRSxPQUFPLGlDQUFJLE1BQU0sT0FBTyxFQUFFLGFBQWEsU0FBUyxDQUFDLEVBQUU7QUFBQSxJQUM1RCxPQUFPLEtBQUs7QUFBQSxJQUNaLE9BQU8sRUFBRSxJQUFJO0FBQUE7QUFBQTs7QUNYVixTQUFTLFlBQVksQ0FBQyxTQUFpQixHQUFXO0FBQUEsRUFDdkQsSUFBSSxTQUFTO0FBQUEsRUFDYixNQUFNLGFBQWE7QUFBQSxFQUNuQixNQUFNLG1CQUFtQixXQUFXO0FBQUEsRUFDcEMsU0FBUyxJQUFJLEVBQUcsSUFBSSxRQUFRLEtBQUs7QUFBQSxJQUMvQixVQUFVLFdBQVcsT0FBTyxLQUFLLE1BQU0sS0FBSyxPQUFPLElBQUksZ0JBQWdCLENBQUM7QUFBQSxFQUMxRTtBQUFBLEVBQ0EsT0FBTztBQUFBOztBQ1BGLElBQU0sUUFBUSxDQUFDLE9BQWUsSUFBSSxRQUFRLENBQUMsWUFBWSxXQUFXLFNBQVMsRUFBRSxDQUFDOztBQ2lDOUUsU0FBUyxRQUE0QixDQUFDLElBQTJCO0FBQUEsRUFDdEUsSUFBSTtBQUFBLElBQ0YsTUFBTSxPQUFPLEdBQUc7QUFBQSxJQUNoQixPQUFPLENBQUMsTUFBVyxTQUFTO0FBQUEsSUFDNUIsT0FBTyxPQUFPO0FBQUEsSUFDZCxPQUFPLENBQUMsV0FBVyxLQUFVO0FBQUE7QUFBQTtBQW9CakMsZUFBc0IsYUFBaUMsQ0FBQyxTQUEwQztBQUFBLEVBQ2hHLElBQUk7QUFBQSxJQUNGLE1BQU0sT0FBTyxNQUFNO0FBQUEsSUFDbkIsT0FBTyxDQUFDLE1BQVcsU0FBUztBQUFBLElBQzVCLE9BQU8sT0FBTztBQUFBLElBQ2QsT0FBTyxDQUFDLFdBQVcsS0FBVTtBQUFBO0FBQUE7IiwKICAiZGVidWdJZCI6ICI0NTVGQjJFNjk3NTI5QjUwNjQ3NTZFMjE2NDc1NkUyMSIsCiAgIm5hbWVzIjogW10KfQ==
package/dist/index.mjs DELETED
@@ -1,217 +0,0 @@
1
- // src/cache/cacheService.ts
2
- import { isPromise } from "node:util/types";
3
-
4
- // src/utils/isCallable.ts
5
- function isCallable(value) {
6
- return typeof value === "function";
7
- }
8
-
9
- // src/cache/cacheService.ts
10
- var defaultCacheOptions = {
11
- expirationThresholdMs: 0,
12
- ttlMs: 60 * 60 * 1000
13
- };
14
-
15
- class Cache {
16
- inMemoryCache = new Map;
17
- options;
18
- adapter;
19
- constructor(adapter, defaultOptions) {
20
- const options = adapter && !("getValue" in adapter) ? adapter : defaultOptions;
21
- if (adapter && "getValue" in adapter && "setValue" in adapter) {
22
- this.adapter = adapter;
23
- }
24
- this.options = {
25
- ...defaultCacheOptions,
26
- ...options
27
- };
28
- }
29
- async getFromAdapter(cacheKey) {
30
- if (!this.adapter) {
31
- return;
32
- }
33
- return this.adapter.getValue(cacheKey);
34
- }
35
- async saveToAdapter(cacheKey, value) {
36
- if (!this.adapter) {
37
- return;
38
- }
39
- return this.adapter.setValue(cacheKey, value);
40
- }
41
- async get(cacheKey, valueLoader, options = {}) {
42
- const mergedOptions = this.mergeOptions(options);
43
- const cachedValue = this.tryGetFromMemory(cacheKey);
44
- if (cachedValue !== undefined) {
45
- return cachedValue;
46
- }
47
- const freshValue = await this.tryGetFromValueLoader(valueLoader);
48
- if (freshValue !== undefined) {
49
- await this.cacheValue(cacheKey, freshValue, mergedOptions);
50
- return freshValue;
51
- }
52
- const adapterValue = await this.tryGetFromAdapter(cacheKey);
53
- if (adapterValue !== undefined) {
54
- await this.cacheValue(cacheKey, adapterValue, mergedOptions);
55
- return adapterValue;
56
- }
57
- }
58
- mergeOptions(options) {
59
- return {
60
- ttlMs: this.options.ttlMs,
61
- expirationThresholdMs: this.options.expirationThresholdMs,
62
- ...options
63
- };
64
- }
65
- tryGetFromMemory(cacheKey) {
66
- const cached = this.inMemoryCache.get(cacheKey);
67
- if (cached && !this.isExpired(cached.metadata)) {
68
- return cached.data;
69
- }
70
- return;
71
- }
72
- async tryGetFromAdapter(cacheKey) {
73
- const cached = await this.getFromAdapter(cacheKey);
74
- if (cached && !this.isExpired(cached.metadata)) {
75
- this.inMemoryCache.set(cacheKey, cached);
76
- return cached.data;
77
- }
78
- return;
79
- }
80
- async tryGetFromValueLoader(valueLoader) {
81
- if (valueLoader === undefined) {
82
- return;
83
- }
84
- if (isCallable(valueLoader)) {
85
- return await valueLoader();
86
- }
87
- if (isPromise(valueLoader)) {
88
- return await valueLoader;
89
- }
90
- return valueLoader;
91
- }
92
- async cacheValue(cacheKey, value, options) {
93
- const cacheData = this.createCacheEntry(value, options);
94
- await this.saveToAdapter(cacheKey, cacheData);
95
- this.inMemoryCache.set(cacheKey, cacheData);
96
- }
97
- createCacheEntry(value, options) {
98
- const now = Date.now();
99
- let expiresAt;
100
- if (options.ttlMs < 0) {
101
- expiresAt = -1;
102
- } else {
103
- expiresAt = now + options.ttlMs - options.expirationThresholdMs;
104
- }
105
- return {
106
- data: value,
107
- metadata: {
108
- createdAt: now,
109
- ttlMs: options.ttlMs,
110
- expirationThresholdMs: options.expirationThresholdMs,
111
- expiresAt
112
- }
113
- };
114
- }
115
- isExpired(metadata) {
116
- if (!metadata) {
117
- return true;
118
- }
119
- if (metadata.expiresAt < 0) {
120
- return false;
121
- }
122
- const expirationTime = metadata.expiresAt ?? (metadata.createdAt && metadata.ttlMs ? metadata.createdAt + metadata.ttlMs : undefined);
123
- if (expirationTime === undefined) {
124
- return true;
125
- }
126
- return Date.now() > expirationTime;
127
- }
128
- }
129
- // src/cache/constants.ts
130
- var CACHE_TTL_NEVER_EXPIRE = -1;
131
- // src/utils/chunksToLines.ts
132
- async function* streamToLines(chunks) {
133
- let previous = "";
134
- for await (const chunk of chunks) {
135
- previous += chunk;
136
- let eolIndex;
137
- while ((eolIndex = previous.indexOf(`
138
- `)) >= 0) {
139
- const line = previous.slice(0, eolIndex + 1);
140
- yield line?.trim() ?? "";
141
- previous = previous.slice(eolIndex + 1);
142
- }
143
- }
144
- if (previous.length > 0) {
145
- yield previous;
146
- }
147
- }
148
- var chunksToLines = streamToLines;
149
- // src/utils/isNullOrUndefined.ts
150
- var isNullOrUndefined = (value) => value === null || value === undefined;
151
- function isNullOrEmptyOrUndefined(value) {
152
- return value === undefined || value === null || value === "" || value.toString().trim() === "";
153
- }
154
- // src/utils/isObject.ts
155
- function isObject(input) {
156
- return Object.prototype.toString.apply(input) === "[object Object]";
157
- }
158
- // src/utils/isPrimitive.ts
159
- function isPrimitive(value) {
160
- return typeof value !== "object" && typeof value !== "function" || value === null || value instanceof Date;
161
- }
162
- // src/utils/jsonParser.ts
163
- import sjs from "secure-json-parse";
164
- function jsonParser(input) {
165
- try {
166
- return { value: sjs.parse(input, { protoAction: "remove" }) };
167
- } catch (err) {
168
- return { err };
169
- }
170
- }
171
- // src/utils/randomString.ts
172
- function randomString(length = 6) {
173
- let result = "";
174
- const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
175
- const charactersLength = characters.length;
176
- for (let i = 0;i < length; i++) {
177
- result += characters.charAt(Math.floor(Math.random() * charactersLength));
178
- }
179
- return result;
180
- }
181
- // src/utils/sleep.ts
182
- var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
183
- // src/neverthrow/tryCatch.ts
184
- function tryCatch(fn) {
185
- try {
186
- const data = fn();
187
- return [data, undefined];
188
- } catch (error) {
189
- return [undefined, error];
190
- }
191
- }
192
- async function tryCatchAsync(promise) {
193
- try {
194
- const data = await promise;
195
- return [data, undefined];
196
- } catch (error) {
197
- return [undefined, error];
198
- }
199
- }
200
- export {
201
- tryCatchAsync,
202
- tryCatch,
203
- streamToLines,
204
- sleep,
205
- randomString,
206
- jsonParser,
207
- isPrimitive,
208
- isObject,
209
- isNullOrUndefined,
210
- isNullOrEmptyOrUndefined,
211
- chunksToLines,
212
- Cache,
213
- CACHE_TTL_NEVER_EXPIRE
214
- };
215
-
216
- //# debugId=8E80E79AD07BAD6A64756E2164756E21
217
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2NhY2hlL2NhY2hlU2VydmljZS50cyIsICIuLi9zcmMvdXRpbHMvaXNDYWxsYWJsZS50cyIsICIuLi9zcmMvY2FjaGUvY29uc3RhbnRzLnRzIiwgIi4uL3NyYy91dGlscy9jaHVua3NUb0xpbmVzLnRzIiwgIi4uL3NyYy91dGlscy9pc051bGxPclVuZGVmaW5lZC50cyIsICIuLi9zcmMvdXRpbHMvaXNPYmplY3QudHMiLCAiLi4vc3JjL3V0aWxzL2lzUHJpbWl0aXZlLnRzIiwgIi4uL3NyYy91dGlscy9qc29uUGFyc2VyLnRzIiwgIi4uL3NyYy91dGlscy9yYW5kb21TdHJpbmcudHMiLCAiLi4vc3JjL3V0aWxzL3NsZWVwLnRzIiwgIi4uL3NyYy9uZXZlcnRocm93L3RyeUNhdGNoLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWwogICAgImltcG9ydCB7IGlzUHJvbWlzZSB9IGZyb20gXCJub2RlOnV0aWwvdHlwZXNcIjtcbmltcG9ydCB7IGlzQ2FsbGFibGUgfSBmcm9tIFwiLi4vdXRpbHMvaXNDYWxsYWJsZS50c1wiO1xuaW1wb3J0IHR5cGUgeyBDYWNoZU1ldGFkYXRhT3B0aW9ucywgQ2FjaGVPcHRpb25zLCBDYWNoZVdpdGhNZXRhZGF0YSwgVmFsdWVMb2FkZXIgfSBmcm9tIFwiLi9pbnRlcm5hbC90eXBlcy50c1wiO1xuaW1wb3J0IHR5cGUgeyBDYWNoZU1ldGFkYXRhLCBJQ2FjaGVBZGFwdGVyIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcblxuY29uc3QgZGVmYXVsdENhY2hlT3B0aW9uczogQ2FjaGVPcHRpb25zID0ge1xuICBleHBpcmF0aW9uVGhyZXNob2xkTXM6IDAsXG4gIHR0bE1zOiA2MCAqIDYwICogMTAwMCxcbn07XG5cbmV4cG9ydCBjbGFzcyBDYWNoZTxUQWRhcHRlciBleHRlbmRzIElDYWNoZUFkYXB0ZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ+IHtcbiAgcHJpdmF0ZSBpbk1lbW9yeUNhY2hlOiBNYXA8c3RyaW5nLCBDYWNoZVdpdGhNZXRhZGF0YT4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogQ2FjaGVPcHRpb25zO1xuICBwcml2YXRlIHJlYWRvbmx5IGFkYXB0ZXI/OiBUQWRhcHRlcjtcblxuICBjb25zdHJ1Y3RvcihkZWZhdWx0T3B0aW9ucz86IFBhcnRpYWw8Q2FjaGVPcHRpb25zPik7XG4gIGNvbnN0cnVjdG9yKGFkYXB0ZXI/OiBUQWRhcHRlciwgZGVmYXVsdE9wdGlvbnM/OiBQYXJ0aWFsPENhY2hlT3B0aW9ucz4pO1xuICBjb25zdHJ1Y3RvcihhZGFwdGVyPzogVEFkYXB0ZXIgfCBQYXJ0aWFsPENhY2hlT3B0aW9ucz4sIGRlZmF1bHRPcHRpb25zPzogUGFydGlhbDxDYWNoZU9wdGlvbnM+KSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGFkYXB0ZXIgJiYgIShcImdldFZhbHVlXCIgaW4gYWRhcHRlcikgPyAoYWRhcHRlciBhcyBQYXJ0aWFsPENhY2hlT3B0aW9ucz4pIDogZGVmYXVsdE9wdGlvbnM7XG4gICAgaWYgKGFkYXB0ZXIgJiYgXCJnZXRWYWx1ZVwiIGluIGFkYXB0ZXIgJiYgXCJzZXRWYWx1ZVwiIGluIGFkYXB0ZXIpIHtcbiAgICAgIHRoaXMuYWRhcHRlciA9IGFkYXB0ZXIgYXMgVEFkYXB0ZXI7XG4gICAgfVxuXG4gICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgLi4uZGVmYXVsdENhY2hlT3B0aW9ucyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0RnJvbUFkYXB0ZXI8VD4oY2FjaGVLZXk6IHN0cmluZyk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghdGhpcy5hZGFwdGVyKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZ2V0VmFsdWUoY2FjaGVLZXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzYXZlVG9BZGFwdGVyPFQ+KGNhY2hlS2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmFkYXB0ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnNldFZhbHVlPFQ+KGNhY2hlS2V5LCB2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0PFQ+KFxuICAgIGNhY2hlS2V5OiBzdHJpbmcsXG4gICAgdmFsdWVMb2FkZXI/OiBWYWx1ZUxvYWRlcjxUPixcbiAgICBvcHRpb25zOiBQYXJ0aWFsPENhY2hlTWV0YWRhdGFPcHRpb25zPiA9IHt9LFxuICApOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBtZXJnZWRPcHRpb25zID0gdGhpcy5tZXJnZU9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAvLyBUcnkgaW4tbWVtb3J5IGNhY2hlIGZpcnN0XG4gICAgY29uc3QgY2FjaGVkVmFsdWUgPSB0aGlzLnRyeUdldEZyb21NZW1vcnk8VD4oY2FjaGVLZXkpO1xuICAgIGlmIChjYWNoZWRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gY2FjaGVkVmFsdWU7XG4gICAgfVxuXG4gICAgLy8gTG9hZCBmcmVzaCB2YWx1ZSBmcm9tIGxvYWRlciBmdW5jdGlvbiBmaXJzdFxuICAgIGNvbnN0IGZyZXNoVmFsdWUgPSBhd2FpdCB0aGlzLnRyeUdldEZyb21WYWx1ZUxvYWRlcih2YWx1ZUxvYWRlcik7XG4gICAgaWYgKGZyZXNoVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXdhaXQgdGhpcy5jYWNoZVZhbHVlKGNhY2hlS2V5LCBmcmVzaFZhbHVlLCBtZXJnZWRPcHRpb25zKTtcblxuICAgICAgcmV0dXJuIGZyZXNoVmFsdWU7XG4gICAgfVxuXG4gICAgLy8gVHJ5IGFkYXB0ZXIgY2FjaGUgc2Vjb25kXG4gICAgY29uc3QgYWRhcHRlclZhbHVlID0gYXdhaXQgdGhpcy50cnlHZXRGcm9tQWRhcHRlcjxUPihjYWNoZUtleSk7XG4gICAgaWYgKGFkYXB0ZXJWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhd2FpdCB0aGlzLmNhY2hlVmFsdWUoY2FjaGVLZXksIGFkYXB0ZXJWYWx1ZSwgbWVyZ2VkT3B0aW9ucyk7XG5cbiAgICAgIHJldHVybiBhZGFwdGVyVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZU9wdGlvbnMob3B0aW9uczogUGFydGlhbDxDYWNoZU1ldGFkYXRhT3B0aW9ucz4pOiBDYWNoZU1ldGFkYXRhT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR0bE1zOiB0aGlzLm9wdGlvbnMudHRsTXMsXG4gICAgICBleHBpcmF0aW9uVGhyZXNob2xkTXM6IHRoaXMub3B0aW9ucy5leHBpcmF0aW9uVGhyZXNob2xkTXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHRyeUdldEZyb21NZW1vcnk8VD4oY2FjaGVLZXk6IHN0cmluZyk6IFQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMuaW5NZW1vcnlDYWNoZS5nZXQoY2FjaGVLZXkpO1xuXG4gICAgaWYgKGNhY2hlZCAmJiAhdGhpcy5pc0V4cGlyZWQoY2FjaGVkLm1ldGFkYXRhKSkge1xuICAgICAgcmV0dXJuIGNhY2hlZC5kYXRhIGFzIFQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdHJ5R2V0RnJvbUFkYXB0ZXI8VD4oY2FjaGVLZXk6IHN0cmluZyk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGNhY2hlZCA9IGF3YWl0IHRoaXMuZ2V0RnJvbUFkYXB0ZXI8Q2FjaGVXaXRoTWV0YWRhdGE8VD4+KGNhY2hlS2V5KTtcblxuICAgIGlmIChjYWNoZWQgJiYgIXRoaXMuaXNFeHBpcmVkKGNhY2hlZC5tZXRhZGF0YSkpIHtcbiAgICAgIHRoaXMuaW5NZW1vcnlDYWNoZS5zZXQoY2FjaGVLZXksIGNhY2hlZCk7XG4gICAgICByZXR1cm4gY2FjaGVkLmRhdGE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdHJ5R2V0RnJvbVZhbHVlTG9hZGVyPFQ+KHZhbHVlTG9hZGVyPzogVmFsdWVMb2FkZXI8VD4pOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAodmFsdWVMb2FkZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoaXNDYWxsYWJsZSh2YWx1ZUxvYWRlcikpIHtcbiAgICAgIHJldHVybiBhd2FpdCB2YWx1ZUxvYWRlcigpO1xuICAgIH1cblxuICAgIGlmIChpc1Byb21pc2UodmFsdWVMb2FkZXIpKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdmFsdWVMb2FkZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlTG9hZGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjYWNoZVZhbHVlPFQ+KGNhY2hlS2V5OiBzdHJpbmcsIHZhbHVlOiBULCBvcHRpb25zOiBDYWNoZU1ldGFkYXRhT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNhY2hlRGF0YSA9IHRoaXMuY3JlYXRlQ2FjaGVFbnRyeSh2YWx1ZSwgb3B0aW9ucyk7XG5cbiAgICBhd2FpdCB0aGlzLnNhdmVUb0FkYXB0ZXIoY2FjaGVLZXksIGNhY2hlRGF0YSk7XG4gICAgdGhpcy5pbk1lbW9yeUNhY2hlLnNldChjYWNoZUtleSwgY2FjaGVEYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ2FjaGVFbnRyeTxUPih2YWx1ZTogVCwgb3B0aW9uczogQ2FjaGVNZXRhZGF0YU9wdGlvbnMpOiBDYWNoZVdpdGhNZXRhZGF0YTxUPiB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgaWYgKG9wdGlvbnMudHRsTXMgPCAwKSB7XG4gICAgICBleHBpcmVzQXQgPSAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXhwaXJlc0F0ID0gbm93ICsgb3B0aW9ucy50dGxNcyAtIG9wdGlvbnMuZXhwaXJhdGlvblRocmVzaG9sZE1zO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiB2YWx1ZSxcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIGNyZWF0ZWRBdDogbm93LFxuICAgICAgICB0dGxNczogb3B0aW9ucy50dGxNcyxcbiAgICAgICAgZXhwaXJhdGlvblRocmVzaG9sZE1zOiBvcHRpb25zLmV4cGlyYXRpb25UaHJlc2hvbGRNcyxcbiAgICAgICAgZXhwaXJlc0F0LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0V4cGlyZWQobWV0YWRhdGE/OiBDYWNoZU1ldGFkYXRhKTogYm9vbGVhbiB7XG4gICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKG1ldGFkYXRhLmV4cGlyZXNBdCA8IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBleHBpcmF0aW9uVGltZSA9XG4gICAgICBtZXRhZGF0YS5leHBpcmVzQXQgPz8gKG1ldGFkYXRhLmNyZWF0ZWRBdCAmJiBtZXRhZGF0YS50dGxNcyA/IG1ldGFkYXRhLmNyZWF0ZWRBdCArIG1ldGFkYXRhLnR0bE1zIDogdW5kZWZpbmVkKTtcblxuICAgIGlmIChleHBpcmF0aW9uVGltZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gRGF0ZS5ub3coKSA+IGV4cGlyYXRpb25UaW1lO1xuICB9XG59XG4iLAogICAgImV4cG9ydCBmdW5jdGlvbiBpc0NhbGxhYmxlKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBDYWxsYWJsZUZ1bmN0aW9uIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiO1xufVxuIiwKICAgICJleHBvcnQgY29uc3QgQ0FDSEVfVFRMX05FVkVSX0VYUElSRSA9IC0xO1xuIiwKICAgICIvKipcbiAqIENvbnZlcnRzIGFuIGFzeW5jIGl0ZXJhYmxlIG9mIHN0cmluZyBvciBVaW50OEFycmF5IGNodW5rcyBpbnRvIGFuIGFzeW5jIGl0ZXJhYmxlIG9mIGxpbmVzLlxuICogSGFuZGxlcyBjYXNlcyB3aGVyZSBsaW5lcyBtYXkgYmUgc3BsaXQgYWNyb3NzIG11bHRpcGxlIGNodW5rcy5cbiAqIFVzYWdlOlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHBpcGVsaW5lIH0gZnJvbSBcIm5vZGU6c3RyZWFtL3Byb21pc2VzXCI7XG4gKiBpbXBvcnQgeyBjcmVhdGVSZWFkU3RyZWFtIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbiAqIGltcG9ydCB7IHN0cmVhbVRvTGluZXMgfSBmcm9tIFwiQGx1a2Fza2ovdHMtdXRpbHNcIjtcbiAqXG4gKiBhc3luYyBmdW5jdGlvbiBwcm9jZXNzTGluZShjaHVuazogQXN5bmNJdGVyYWJsZTxzdHJpbmc+KSB7XG4gKiAgIGZvciBhd2FpdCAoY29uc3QgbGluZSBvZiBjaHVuaykge1xuICogICAgIGNvbnNvbGUubG9nKGxpbmUpO1xuICogICAgIHlpZWxkIGxpbmU7XG4gKiAgIH1cbiAqIH1cbiAqIGNvbnN0IHJlYWRTdHJlYW0gPSBjcmVhdGVSZWFkU3RyZWFtKFwicGF0aC90by9maWxlLnR4dFwiLCB7IGVuY29kaW5nOiBcInV0Zi04XCIgfSk7XG4gKiBhd2FpdCBwaXBlbGluZShyZWFkU3RyZWFtLCBzdHJlYW1Ub0xpbmVzLCBwcm9jZXNzLnN0ZG91dCkuY2F0Y2goKGVycikgPT4ge1xuICogICBjb25zb2xlLmVycm9yKGVycik7XG4gKiAgIHByb2Nlc3MuZXhpdCgxKTtcbiAqIH0pO1xuICogYGBgXG4gKiBAcGFyYW0gY2h1bmtzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogc3RyZWFtVG9MaW5lcyhjaHVua3M6IEFzeW5jSXRlcmFibGU8c3RyaW5nIHwgVWludDhBcnJheT4pIHtcbiAgbGV0IHByZXZpb3VzID0gXCJcIjtcblxuICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIGNodW5rcykge1xuICAgIHByZXZpb3VzICs9IGNodW5rO1xuICAgIGxldCBlb2xJbmRleDogbnVtYmVyO1xuXG4gICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0Fzc2lnbkluRXhwcmVzc2lvbnM6IFwiZXhwbGFuYXRpb25cIlxuICAgIHdoaWxlICgoZW9sSW5kZXggPSBwcmV2aW91cy5pbmRleE9mKFwiXFxuXCIpKSA+PSAwKSB7XG4gICAgICAvLyB0aGlzIGxpbmUgaW5jbHVkZXMgdGhlIEVPTFxuICAgICAgY29uc3QgbGluZSA9IHByZXZpb3VzLnNsaWNlKDAsIGVvbEluZGV4ICsgMSk7XG4gICAgICB5aWVsZCBsaW5lPy50cmltKCkgPz8gXCJcIjtcbiAgICAgIHByZXZpb3VzID0gcHJldmlvdXMuc2xpY2UoZW9sSW5kZXggKyAxKTtcbiAgICB9XG4gIH1cblxuICBpZiAocHJldmlvdXMubGVuZ3RoID4gMCkge1xuICAgIHlpZWxkIHByZXZpb3VzO1xuICB9XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgdXNlIHN0cmVhbVRvTGluZXNcbiAqL1xuZXhwb3J0IGNvbnN0IGNodW5rc1RvTGluZXMgPSBzdHJlYW1Ub0xpbmVzO1xuIiwKICAgICJleHBvcnQgY29uc3QgaXNOdWxsT3JVbmRlZmluZWQgPSAodmFsdWU6IGFueSk6IHZhbHVlIGlzIG51bGwgfCB1bmRlZmluZWQgPT4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZDtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbE9yRW1wdHlPclVuZGVmaW5lZCh2YWx1ZT86IGFueSB8IG51bGwpOiB2YWx1ZSBpcyBudWxsIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IFwiXCIgfHwgdmFsdWUudG9TdHJpbmcoKS50cmltKCkgPT09IFwiXCI7XG59XG4iLAogICAgIi8qKlxuICogVHlwZSBndWFyZCB0aGF0IGNoZWNrcyBpZiB0aGUgaW5wdXQgaXMgYSBwbGFpbiBKYXZhU2NyaXB0IG9iamVjdC5cbiAqIEBwYXJhbSB7YW55fSBpbnB1dCAtIFRoZSB2YWx1ZSB0byBjaGVja1xuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIGlucHV0IGlzIGEgcGxhaW4gb2JqZWN0LCBmYWxzZSBvdGhlcndpc2VcbiAqIEB0eXBlUGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IFR5cGUgZ3VhcmQgbmFycm93cyB0aGUgaW5wdXQgdHlwZSB0byBhIHN0cmluZy1rZXllZCBvYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0KGlucHV0OiBhbnkpOiBpbnB1dCBpcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkoaW5wdXQpID09PSBcIltvYmplY3QgT2JqZWN0XVwiO1xufVxuIiwKICAgICJleHBvcnQgZnVuY3Rpb24gaXNQcmltaXRpdmUodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgcmV0dXJuICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlIGluc3RhbmNlb2YgRGF0ZTtcbn1cbiIsCiAgICAiaW1wb3J0IHNqcyBmcm9tIFwic2VjdXJlLWpzb24tcGFyc2VcIjtcblxuLyoqXG4gKiBTYWZlbHkgcGFyc2VzIEpTT04gaW5wdXQgdXNpbmcgc2VjdXJlLWpzb24tcGFyc2Ugd2l0aCBwcm90b3R5cGUgcG9sbHV0aW9uIHByb3RlY3Rpb24uXG4gKiBAcGFyYW0ge2FueX0gaW5wdXQgLSBUaGUgaW5wdXQgdG8gYmUgcGFyc2VkIGFzIEpTT05cbiAqIEByZXR1cm5zIHt7IHZhbHVlPzogYW55LCBlcnI/OiBFcnJvciB9fSBBbiBvYmplY3QgY29udGFpbmluZyBlaXRoZXIgdGhlIHBhcnNlZCB2YWx1ZSBvciBhbiBlcnJvciBpZiBwYXJzaW5nIGZhaWxlZFxuICovXG5leHBvcnQgZnVuY3Rpb24ganNvblBhcnNlcihpbnB1dDogYW55KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHsgdmFsdWU6IHNqcy5wYXJzZShpbnB1dCwgeyBwcm90b0FjdGlvbjogXCJyZW1vdmVcIiB9KSB9O1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4geyBlcnIgfTtcbiAgfVxufVxuIiwKICAgICJleHBvcnQgZnVuY3Rpb24gcmFuZG9tU3RyaW5nKGxlbmd0aDogbnVtYmVyID0gNik6IHN0cmluZyB7XG4gIGxldCByZXN1bHQgPSBcIlwiO1xuICBjb25zdCBjaGFyYWN0ZXJzID0gXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OVwiO1xuICBjb25zdCBjaGFyYWN0ZXJzTGVuZ3RoID0gY2hhcmFjdGVycy5sZW5ndGg7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICByZXN1bHQgKz0gY2hhcmFjdGVycy5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcmFjdGVyc0xlbmd0aCkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG4iLAogICAgImV4cG9ydCBjb25zdCBzbGVlcCA9IChtczogbnVtYmVyKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xuIiwKICAgICIvLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS90M2RvdGdnL2E0ODZjNGFlNjZkMzJiZjE3YzA5YzczNjA5ZGFjYzViXG4vLyBUeXBlcyBmb3IgdGhlIHJlc3VsdCBvYmplY3Qgd2l0aCBkaXNjcmltaW5hdGVkIHVuaW9uXG4vLyB0eXBlIFN1Y2Nlc3M8VD4gPSB7XG4vLyAgIGRhdGE6IFQ7XG4vLyAgIGVycm9yOiBudWxsO1xuLy8gfTtcblxuLy8gdHlwZSBGYWlsdXJlPEU+ID0ge1xuLy8gICBkYXRhOiBudWxsO1xuLy8gICBlcnJvcjogRTtcbi8vIH07XG5cbi8vIGV4cG9ydCB0eXBlIFJlc3VsdDxULCBFID0gRXJyb3I+ID0gU3VjY2VzczxUPiB8IEZhaWx1cmU8RT47XG5cbmV4cG9ydCB0eXBlIFJlc3VsdDxULCBFPiA9IFt1bmRlZmluZWQsIEVdIHwgW1QsIHVuZGVmaW5lZF07XG5leHBvcnQgdHlwZSBQcm9taXNlUmVzdWx0PFQsIEU+ID0gUHJvbWlzZTxSZXN1bHQ8VCwgRT4+O1xuXG4vKipcbiAqIFdyYXBzIGEgc3luY2hyb25vdXMgZnVuY3Rpb24gaW4gYSB0cnktY2F0Y2ggYmxvY2sgYW5kIHJldHVybnMgYSBSZXN1bHQgdHVwbGUgY29udGFpbmluZyBlaXRoZXIgdGhlIHJldHVybmVkIHZhbHVlIG9yIHRoZSBjYXVnaHQgZXJyb3JcbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSBzdWNjZXNzZnVsIHJlc3VsdCB2YWx1ZVxuICogQHRlbXBsYXRlIEUgLSBUaGUgdHlwZSBvZiB0aGUgZXJyb3IgdmFsdWUsIG11c3QgZXh0ZW5kIEVycm9yXG4gKiBAcGFyYW0geygpID0+IFR9IGZuIC0gVGhlIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkXG4gKiBAcmV0dXJucyB7UmVzdWx0PFQsIEU+fSBBIHR1cGxlIGNvbnRhaW5pbmcgZWl0aGVyIFtkYXRhLCB1bmRlZmluZWRdIG9yIFt1bmRlZmluZWQsIGVycm9yXVxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBbZGF0YSwgZXJyb3JdID0gdHJ5Q2F0Y2goKCkgPT4gc29tZVJpc2t5T3BlcmF0aW9uKCkpO1xuICogaWYgKGVycm9yKSB7XG4gKiAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICogfSBlbHNlIHtcbiAqICAgY29uc29sZS5sb2coZGF0YSk7XG4gKiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cnlDYXRjaDxULCBFIGV4dGVuZHMgRXJyb3I+KGZuOiAoKSA9PiBUKTogUmVzdWx0PFQsIEU+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBkYXRhID0gZm4oKTtcbiAgICByZXR1cm4gW2RhdGEgYXMgVCwgdW5kZWZpbmVkXTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gW3VuZGVmaW5lZCwgZXJyb3IgYXMgRV07XG4gIH1cbn1cblxuLyoqXG4gKiBXcmFwcyBhIFByb21pc2UgaW4gYSB0cnktY2F0Y2ggYmxvY2sgYW5kIHJldHVybnMgYSBSZXN1bHQgb2JqZWN0IGNvbnRhaW5pbmcgZWl0aGVyIHRoZSByZXNvbHZlZCBkYXRhIG9yIHRoZSBjYXVnaHQgZXJyb3JcbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSBzdWNjZXNzZnVsIHJlc3VsdCB2YWx1ZVxuICogQHRlbXBsYXRlIEUgLSBUaGUgdHlwZSBvZiB0aGUgZXJyb3IgdmFsdWUsIGRlZmF1bHRzIHRvIEVycm9yXG4gKiBAcGFyYW0ge1Byb21pc2U8VD59IHByb21pc2UgLSBUaGUgcHJvbWlzZSB0byBiZSBleGVjdXRlZFxuICogQHJldHVybnMge1Byb21pc2U8UmVzdWx0PFQsIEU+Pn0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBSZXN1bHQgb2JqZWN0IGNvbnRhaW5pbmcgZWl0aGVyIHRoZSBkYXRhIG9yIGVycm9yXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHtkYXRhLCBlcnJvcn0gPSBhd2FpdCB0cnlDYXRjaEFzeW5jKHNvbWVQcm9taXNlKTtcbiAqIGlmIChlcnJvcikge1xuICogICBjb25zb2xlLmVycm9yKHJlc3VsdC5lcnJvcik7XG4gKiB9IGVsc2Uge1xuICogICBjb25zb2xlLmxvZyhkYXRhKTtcbiAqIH1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRyeUNhdGNoQXN5bmM8VCwgRSBleHRlbmRzIEVycm9yPihwcm9taXNlOiBQcm9taXNlPFQ+KTogUHJvbWlzZVJlc3VsdDxULCBFPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHByb21pc2U7XG4gICAgcmV0dXJuIFtkYXRhIGFzIFQsIHVuZGVmaW5lZF07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIFt1bmRlZmluZWQsIGVycm9yIGFzIEVdO1xuICB9XG59XG4iCiAgXSwKICAibWFwcGluZ3MiOiAiO0FBQUE7OztBQ0FPLFNBQVMsVUFBVSxDQUFDLE9BQXVDO0FBQUEsRUFDaEUsT0FBTyxPQUFPLFVBQVU7QUFBQTs7O0FESTFCLElBQU0sc0JBQW9DO0FBQUEsRUFDeEMsdUJBQXVCO0FBQUEsRUFDdkIsT0FBTyxLQUFLLEtBQUs7QUFDbkI7QUFBQTtBQUVPLE1BQU0sTUFBOEQ7QUFBQSxFQUNqRSxnQkFBZ0QsSUFBSTtBQUFBLEVBQzNDO0FBQUEsRUFDQTtBQUFBLEVBSWpCLFdBQVcsQ0FBQyxTQUE0QyxnQkFBd0M7QUFBQSxJQUM5RixNQUFNLFVBQVUsV0FBVyxFQUFFLGNBQWMsV0FBWSxVQUFvQztBQUFBLElBQzNGLElBQUksV0FBVyxjQUFjLFdBQVcsY0FBYyxTQUFTO0FBQUEsTUFDN0QsS0FBSyxVQUFVO0FBQUEsSUFDakI7QUFBQSxJQUVBLEtBQUssVUFBVTtBQUFBLFNBQ1Y7QUFBQSxTQUNBO0FBQUEsSUFDTDtBQUFBO0FBQUEsT0FHWSxlQUFpQixDQUFDLFVBQTBDO0FBQUEsSUFDeEUsSUFBSSxDQUFDLEtBQUssU0FBUztBQUFBLE1BQ2pCO0FBQUEsSUFDRjtBQUFBLElBRUEsT0FBTyxLQUFLLFFBQVEsU0FBUyxRQUFRO0FBQUE7QUFBQSxPQUd6QixjQUFnQixDQUFDLFVBQWtCLE9BQXlCO0FBQUEsSUFDeEUsSUFBSSxDQUFDLEtBQUssU0FBUztBQUFBLE1BQ2pCO0FBQUEsSUFDRjtBQUFBLElBRUEsT0FBTyxLQUFLLFFBQVEsU0FBWSxVQUFVLEtBQUs7QUFBQTtBQUFBLE9BR3BDLElBQU0sQ0FDakIsVUFDQSxhQUNBLFVBQXlDLENBQUMsR0FDbEI7QUFBQSxJQUN4QixNQUFN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LFNBQVMsQ0FBQyxFQUFFO0FBQUEsSUFDNUQsT0FBTyxLQUFLO0FBQUEsSUFDWixPQUFPLEVBQUUsSUFBSTtBQUFBO0FBQUE7O0FDWFYsU0FBUyxZQUFZLENBQUMsU0FBaUIsR0FBVztBQUFBLEVBQ3ZELElBQUksU0FBUztBQUFBLEVBQ2IsTUFBTSxhQUFhO0FBQUEsRUFDbkIsTUFBTSxtQkFBbUIsV0FBVztBQUFBLEVBQ3BDLFNBQVMsSUFBSSxFQUFHLElBQUksUUFBUSxLQUFLO0FBQUEsSUFDL0IsVUFBVSxXQUFXLE9BQU8sS0FBSyxNQUFNLEtBQUssT0FBTyxJQUFJLGdCQUFnQixDQUFDO0FBQUEsRUFDMUU7QUFBQSxFQUNBLE9BQU87QUFBQTs7QUNQRixJQUFNLFFBQVEsQ0FBQyxPQUFlLElBQUksUUFBUSxDQUFDLFlBQVksV0FBVyxTQUFTLEVBQUUsQ0FBQzs7QUNpQzlFLFNBQVMsUUFBNEIsQ0FBQyxJQUEyQjtBQUFBLEVBQ3RFLElBQUk7QUFBQSxJQUNGLE1BQU0sT0FBTyxHQUFHO0FBQUEsSUFDaEIsT0FBTyxDQUFDLE1BQVcsU0FBUztBQUFBLElBQzVCLE9BQU8sT0FBTztBQUFBLElBQ2QsT0FBTyxDQUFDLFdBQVcsS0FBVTtBQUFBO0FBQUE7QUFvQmpDLGVBQXNCLGFBQWlDLENBQUMsU0FBMEM7QUFBQSxFQUNoRyxJQUFJO0FBQUEsSUFDRixNQUFNLE9BQU8sTUFBTTtBQUFBLElBQ25CLE9BQU8sQ0FBQyxNQUFXLFNBQVM7QUFBQSxJQUM1QixPQUFPLE9BQU87QUFBQSxJQUNkLE9BQU8sQ0FBQyxXQUFXLEtBQVU7QUFBQTtBQUFBOyIsCiAgImRlYnVnSWQiOiAiOEU4MEU3OUFEMDdCQUQ2QTY0NzU2RTIxNjQ3NTZFMjEiLAogICJuYW1lcyI6IFtdCn0=
@@ -1,69 +0,0 @@
1
- var __create = Object.create;
2
- var __getProtoOf = Object.getPrototypeOf;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __toESM = (mod, isNodeMode, target) => {
8
- target = mod != null ? __create(__getProtoOf(mod)) : {};
9
- const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
- for (let key of __getOwnPropNames(mod))
11
- if (!__hasOwnProp.call(to, key))
12
- __defProp(to, key, {
13
- get: () => mod[key],
14
- enumerable: true
15
- });
16
- return to;
17
- };
18
- var __moduleCache = /* @__PURE__ */ new WeakMap;
19
- var __toCommonJS = (from) => {
20
- var entry = __moduleCache.get(from), desc;
21
- if (entry)
22
- return entry;
23
- entry = __defProp({}, "__esModule", { value: true });
24
- if (from && typeof from === "object" || typeof from === "function")
25
- __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
26
- get: () => from[key],
27
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
28
- }));
29
- __moduleCache.set(from, entry);
30
- return entry;
31
- };
32
- var __export = (target, all) => {
33
- for (var name in all)
34
- __defProp(target, name, {
35
- get: all[name],
36
- enumerable: true,
37
- configurable: true,
38
- set: (newValue) => all[name] = () => newValue
39
- });
40
- };
41
-
42
- // src/neverthrow/index.ts
43
- var exports_neverthrow = {};
44
- __export(exports_neverthrow, {
45
- tryCatchAsync: () => tryCatchAsync,
46
- tryCatch: () => tryCatch
47
- });
48
- module.exports = __toCommonJS(exports_neverthrow);
49
-
50
- // src/neverthrow/tryCatch.ts
51
- function tryCatch(fn) {
52
- try {
53
- const data = fn();
54
- return [data, undefined];
55
- } catch (error) {
56
- return [undefined, error];
57
- }
58
- }
59
- async function tryCatchAsync(promise) {
60
- try {
61
- const data = await promise;
62
- return [data, undefined];
63
- } catch (error) {
64
- return [undefined, error];
65
- }
66
- }
67
-
68
- //# debugId=E33DF9FD309B2CCD64756E2164756E21
69
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25ldmVydGhyb3cvdHJ5Q2F0Y2gudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vdDNkb3RnZy9hNDg2YzRhZTY2ZDMyYmYxN2MwOWM3MzYwOWRhY2M1YlxuLy8gVHlwZXMgZm9yIHRoZSByZXN1bHQgb2JqZWN0IHdpdGggZGlzY3JpbWluYXRlZCB1bmlvblxuLy8gdHlwZSBTdWNjZXNzPFQ+ID0ge1xuLy8gICBkYXRhOiBUO1xuLy8gICBlcnJvcjogbnVsbDtcbi8vIH07XG5cbi8vIHR5cGUgRmFpbHVyZTxFPiA9IHtcbi8vICAgZGF0YTogbnVsbDtcbi8vICAgZXJyb3I6IEU7XG4vLyB9O1xuXG4vLyBleHBvcnQgdHlwZSBSZXN1bHQ8VCwgRSA9IEVycm9yPiA9IFN1Y2Nlc3M8VD4gfCBGYWlsdXJlPEU+O1xuXG5leHBvcnQgdHlwZSBSZXN1bHQ8VCwgRT4gPSBbdW5kZWZpbmVkLCBFXSB8IFtULCB1bmRlZmluZWRdO1xuZXhwb3J0IHR5cGUgUHJvbWlzZVJlc3VsdDxULCBFPiA9IFByb21pc2U8UmVzdWx0PFQsIEU+PjtcblxuLyoqXG4gKiBXcmFwcyBhIHN5bmNocm9ub3VzIGZ1bmN0aW9uIGluIGEgdHJ5LWNhdGNoIGJsb2NrIGFuZCByZXR1cm5zIGEgUmVzdWx0IHR1cGxlIGNvbnRhaW5pbmcgZWl0aGVyIHRoZSByZXR1cm5lZCB2YWx1ZSBvciB0aGUgY2F1Z2h0IGVycm9yXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgc3VjY2Vzc2Z1bCByZXN1bHQgdmFsdWVcbiAqIEB0ZW1wbGF0ZSBFIC0gVGhlIHR5cGUgb2YgdGhlIGVycm9yIHZhbHVlLCBtdXN0IGV4dGVuZCBFcnJvclxuICogQHBhcmFtIHsoKSA9PiBUfSBmbiAtIFRoZSBmdW5jdGlvbiB0byBiZSBleGVjdXRlZFxuICogQHJldHVybnMge1Jlc3VsdDxULCBFPn0gQSB0dXBsZSBjb250YWluaW5nIGVpdGhlciBbZGF0YSwgdW5kZWZpbmVkXSBvciBbdW5kZWZpbmVkLCBlcnJvcl1cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgW2RhdGEsIGVycm9yXSA9IHRyeUNhdGNoKCgpID0+IHNvbWVSaXNreU9wZXJhdGlvbigpKTtcbiAqIGlmIChlcnJvcikge1xuICogICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAqIH0gZWxzZSB7XG4gKiAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJ5Q2F0Y2g8VCwgRSBleHRlbmRzIEVycm9yPihmbjogKCkgPT4gVCk6IFJlc3VsdDxULCBFPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGZuKCk7XG4gICAgcmV0dXJuIFtkYXRhIGFzIFQsIHVuZGVmaW5lZF07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIFt1bmRlZmluZWQsIGVycm9yIGFzIEVdO1xuICB9XG59XG5cbi8qKlxuICogV3JhcHMgYSBQcm9taXNlIGluIGEgdHJ5LWNhdGNoIGJsb2NrIGFuZCByZXR1cm5zIGEgUmVzdWx0IG9iamVjdCBjb250YWluaW5nIGVpdGhlciB0aGUgcmVzb2x2ZWQgZGF0YSBvciB0aGUgY2F1Z2h0IGVycm9yXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgc3VjY2Vzc2Z1bCByZXN1bHQgdmFsdWVcbiAqIEB0ZW1wbGF0ZSBFIC0gVGhlIHR5cGUgb2YgdGhlIGVycm9yIHZhbHVlLCBkZWZhdWx0cyB0byBFcnJvclxuICogQHBhcmFtIHtQcm9taXNlPFQ+fSBwcm9taXNlIC0gVGhlIHByb21pc2UgdG8gYmUgZXhlY3V0ZWRcbiAqIEByZXR1cm5zIHtQcm9taXNlPFJlc3VsdDxULCBFPj59IEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgUmVzdWx0IG9iamVjdCBjb250YWluaW5nIGVpdGhlciB0aGUgZGF0YSBvciBlcnJvclxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCB7ZGF0YSwgZXJyb3J9ID0gYXdhaXQgdHJ5Q2F0Y2hBc3luYyhzb21lUHJvbWlzZSk7XG4gKiBpZiAoZXJyb3IpIHtcbiAqICAgY29uc29sZS5lcnJvcihyZXN1bHQuZXJyb3IpO1xuICogfSBlbHNlIHtcbiAqICAgY29uc29sZS5sb2coZGF0YSk7XG4gKiB9XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cnlDYXRjaEFzeW5jPFQsIEUgZXh0ZW5kcyBFcnJvcj4ocHJvbWlzZTogUHJvbWlzZTxUPik6IFByb21pc2VSZXN1bHQ8VCwgRT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBwcm9taXNlO1xuICAgIHJldHVybiBbZGF0YSBhcyBULCB1bmRlZmluZWRdO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBbdW5kZWZpbmVkLCBlcnJvciBhcyBFXTtcbiAgfVxufVxuIgogIF0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQ08sU0FBUyxRQUE0QixDQUFDLElBQTJCO0FBQUEsRUFDdEUsSUFBSTtBQUFBLElBQ0YsTUFBTSxPQUFPLEdBQUc7QUFBQSxJQUNoQixPQUFPLENBQUMsTUFBVyxTQUFTO0FBQUEsSUFDNUIsT0FBTyxPQUFPO0FBQUEsSUFDZCxPQUFPLENBQUMsV0FBVyxLQUFVO0FBQUE7QUFBQTtBQW9CakMsZUFBc0IsYUFBaUMsQ0FBQyxTQUEwQztBQUFBLEVBQ2hHLElBQUk7QUFBQSxJQUNGLE1BQU0sT0FBTyxNQUFNO0FBQUEsSUFDbkIsT0FBTyxDQUFDLE1BQVcsU0FBUztBQUFBLElBQzVCLE9BQU8sT0FBTztBQUFBLElBQ2QsT0FBTyxDQUFDLFdBQVcsS0FBVTtBQUFBO0FBQUE7IiwKICAiZGVidWdJZCI6ICJFMzNERjlGRDMwOUIyQ0NENjQ3NTZFMjE2NDc1NkUyMSIsCiAgIm5hbWVzIjogW10KfQ==
@@ -1,24 +0,0 @@
1
- // src/neverthrow/tryCatch.ts
2
- function tryCatch(fn) {
3
- try {
4
- const data = fn();
5
- return [data, undefined];
6
- } catch (error) {
7
- return [undefined, error];
8
- }
9
- }
10
- async function tryCatchAsync(promise) {
11
- try {
12
- const data = await promise;
13
- return [data, undefined];
14
- } catch (error) {
15
- return [undefined, error];
16
- }
17
- }
18
- export {
19
- tryCatchAsync,
20
- tryCatch
21
- };
22
-
23
- //# debugId=5E0040E9752F227C64756E2164756E21
24
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25ldmVydGhyb3cvdHJ5Q2F0Y2gudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vdDNkb3RnZy9hNDg2YzRhZTY2ZDMyYmYxN2MwOWM3MzYwOWRhY2M1YlxuLy8gVHlwZXMgZm9yIHRoZSByZXN1bHQgb2JqZWN0IHdpdGggZGlzY3JpbWluYXRlZCB1bmlvblxuLy8gdHlwZSBTdWNjZXNzPFQ+ID0ge1xuLy8gICBkYXRhOiBUO1xuLy8gICBlcnJvcjogbnVsbDtcbi8vIH07XG5cbi8vIHR5cGUgRmFpbHVyZTxFPiA9IHtcbi8vICAgZGF0YTogbnVsbDtcbi8vICAgZXJyb3I6IEU7XG4vLyB9O1xuXG4vLyBleHBvcnQgdHlwZSBSZXN1bHQ8VCwgRSA9IEVycm9yPiA9IFN1Y2Nlc3M8VD4gfCBGYWlsdXJlPEU+O1xuXG5leHBvcnQgdHlwZSBSZXN1bHQ8VCwgRT4gPSBbdW5kZWZpbmVkLCBFXSB8IFtULCB1bmRlZmluZWRdO1xuZXhwb3J0IHR5cGUgUHJvbWlzZVJlc3VsdDxULCBFPiA9IFByb21pc2U8UmVzdWx0PFQsIEU+PjtcblxuLyoqXG4gKiBXcmFwcyBhIHN5bmNocm9ub3VzIGZ1bmN0aW9uIGluIGEgdHJ5LWNhdGNoIGJsb2NrIGFuZCByZXR1cm5zIGEgUmVzdWx0IHR1cGxlIGNvbnRhaW5pbmcgZWl0aGVyIHRoZSByZXR1cm5lZCB2YWx1ZSBvciB0aGUgY2F1Z2h0IGVycm9yXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgc3VjY2Vzc2Z1bCByZXN1bHQgdmFsdWVcbiAqIEB0ZW1wbGF0ZSBFIC0gVGhlIHR5cGUgb2YgdGhlIGVycm9yIHZhbHVlLCBtdXN0IGV4dGVuZCBFcnJvclxuICogQHBhcmFtIHsoKSA9PiBUfSBmbiAtIFRoZSBmdW5jdGlvbiB0byBiZSBleGVjdXRlZFxuICogQHJldHVybnMge1Jlc3VsdDxULCBFPn0gQSB0dXBsZSBjb250YWluaW5nIGVpdGhlciBbZGF0YSwgdW5kZWZpbmVkXSBvciBbdW5kZWZpbmVkLCBlcnJvcl1cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgW2RhdGEsIGVycm9yXSA9IHRyeUNhdGNoKCgpID0+IHNvbWVSaXNreU9wZXJhdGlvbigpKTtcbiAqIGlmIChlcnJvcikge1xuICogICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAqIH0gZWxzZSB7XG4gKiAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJ5Q2F0Y2g8VCwgRSBleHRlbmRzIEVycm9yPihmbjogKCkgPT4gVCk6IFJlc3VsdDxULCBFPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGZuKCk7XG4gICAgcmV0dXJuIFtkYXRhIGFzIFQsIHVuZGVmaW5lZF07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIFt1bmRlZmluZWQsIGVycm9yIGFzIEVdO1xuICB9XG59XG5cbi8qKlxuICogV3JhcHMgYSBQcm9taXNlIGluIGEgdHJ5LWNhdGNoIGJsb2NrIGFuZCByZXR1cm5zIGEgUmVzdWx0IG9iamVjdCBjb250YWluaW5nIGVpdGhlciB0aGUgcmVzb2x2ZWQgZGF0YSBvciB0aGUgY2F1Z2h0IGVycm9yXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgc3VjY2Vzc2Z1bCByZXN1bHQgdmFsdWVcbiAqIEB0ZW1wbGF0ZSBFIC0gVGhlIHR5cGUgb2YgdGhlIGVycm9yIHZhbHVlLCBkZWZhdWx0cyB0byBFcnJvclxuICogQHBhcmFtIHtQcm9taXNlPFQ+fSBwcm9taXNlIC0gVGhlIHByb21pc2UgdG8gYmUgZXhlY3V0ZWRcbiAqIEByZXR1cm5zIHtQcm9taXNlPFJlc3VsdDxULCBFPj59IEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgUmVzdWx0IG9iamVjdCBjb250YWluaW5nIGVpdGhlciB0aGUgZGF0YSBvciBlcnJvclxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCB7ZGF0YSwgZXJyb3J9ID0gYXdhaXQgdHJ5Q2F0Y2hBc3luYyhzb21lUHJvbWlzZSk7XG4gKiBpZiAoZXJyb3IpIHtcbiAqICAgY29uc29sZS5lcnJvcihyZXN1bHQuZXJyb3IpO1xuICogfSBlbHNlIHtcbiAqICAgY29uc29sZS5sb2coZGF0YSk7XG4gKiB9XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cnlDYXRjaEFzeW5jPFQsIEUgZXh0ZW5kcyBFcnJvcj4ocHJvbWlzZTogUHJvbWlzZTxUPik6IFByb21pc2VSZXN1bHQ8VCwgRT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBwcm9taXNlO1xuICAgIHJldHVybiBbZGF0YSBhcyBULCB1bmRlZmluZWRdO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBbdW5kZWZpbmVkLCBlcnJvciBhcyBFXTtcbiAgfVxufVxuIgogIF0sCiAgIm1hcHBpbmdzIjogIjtBQWlDTyxTQUFTLFFBQTRCLENBQUMsSUFBMkI7QUFBQSxFQUN0RSxJQUFJO0FBQUEsSUFDRixNQUFNLE9BQU8sR0FBRztBQUFBLElBQ2hCLE9BQU8sQ0FBQyxNQUFXLFNBQVM7QUFBQSxJQUM1QixPQUFPLE9BQU87QUFBQSxJQUNkLE9BQU8sQ0FBQyxXQUFXLEtBQVU7QUFBQTtBQUFBO0FBb0JqQyxlQUFzQixhQUFpQyxDQUFDLFNBQTBDO0FBQUEsRUFDaEcsSUFBSTtBQUFBLElBQ0YsTUFBTSxPQUFPLE1BQU07QUFBQSxJQUNuQixPQUFPLENBQUMsTUFBVyxTQUFTO0FBQUEsSUFDNUIsT0FBTyxPQUFPO0FBQUEsSUFDZCxPQUFPLENBQUMsV0FBVyxLQUFVO0FBQUE7QUFBQTsiLAogICJkZWJ1Z0lkIjogIjVFMDA0MEU5NzUyRjIyN0M2NDc1NkUyMTY0NzU2RTIxIiwKICAibmFtZXMiOiBbXQp9
File without changes
File without changes