@pipeline-builder/pipeline-events 4.3.6 → 4.3.8

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.
package/lib/auth.js CHANGED
@@ -15,9 +15,28 @@ import { createPlatformCredential } from '@pipeline-builder/pipeline-core/lib/ha
15
15
  import { fetchWithTimeout, log } from './util.js';
16
16
  /** Refresh at this fraction of the token's life — never at the last moment. */
17
17
  const TOKEN_REFRESH_FRACTION = 0.8;
18
- /** Floor on the cached lifetime, so a surprisingly short TTL can't cause a
19
- * refresh storm (one exchange per batch at worst). */
20
- const MIN_TOKEN_CACHE_MS = 30_000;
18
+ /**
19
+ * No FLOOR on the cached lifetime, deliberately.
20
+ *
21
+ * There was one — 30s, "so a surprisingly short TTL can't cause a refresh
22
+ * storm" — and it broke this module's own contract. The cache held
23
+ * `max(30s, ttl * 0.8)`, so for any `expiresIn` under ~37s the floor WON and the
24
+ * container kept serving a token that had already died: at `expiresIn=10` the
25
+ * token expires at 10s and the cache held it for 30s. The batch then presents a
26
+ * dead token and takes a 401, which is precisely what "refresh EARLY (before
27
+ * expiry) so a batch never presents a token that dies mid-flight" exists to
28
+ * prevent.
29
+ *
30
+ * It was never reachable in practice — `API_KEY_TOKEN_TTL_SECONDS` is a
31
+ * hard-coded 300, which caches 240s — so this is a latent contradiction being
32
+ * removed before someone makes that TTL configurable and it becomes a live 401
33
+ * loop that looks like a credential problem.
34
+ *
35
+ * Dropping it costs nothing the floor actually bought: the worst case it named
36
+ * is "one exchange per batch", which is the SQS batch rate and is already the
37
+ * bound, floor or no floor. `cachedTokenExpiresAt` is now always strictly
38
+ * inside the token's life, which is the invariant the suite asserts.
39
+ */
21
40
  /** Per-request timeout for the exchange call. */
22
41
  const EXCHANGE_TIMEOUT_MS = 5000;
23
42
  /**
@@ -68,7 +87,7 @@ export async function getAuthToken() {
68
87
  throw new Error('Access-key exchange returned no access token');
69
88
  const ttlMs = (typeof body.data?.expiresIn === 'number' && body.data.expiresIn > 0 ? body.data.expiresIn : 300) * 1000;
70
89
  cachedToken = accessToken;
71
- cachedTokenExpiresAt = Date.now() + Math.max(MIN_TOKEN_CACHE_MS, ttlMs * TOKEN_REFRESH_FRACTION);
90
+ cachedTokenExpiresAt = Date.now() + ttlMs * TOKEN_REFRESH_FRACTION;
72
91
  log.info('Exchanged the stored service-account key for a platform token');
73
92
  return accessToken;
74
93
  }
@@ -90,4 +109,4 @@ export function _resetAuthForTests() {
90
109
  cachedTokenExpiresAt = 0;
91
110
  credential.reset();
92
111
  }
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7R0FVRztBQUVILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFbEQsK0VBQStFO0FBQy9FLE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxDQUFDO0FBQ25DO3VEQUN1RDtBQUN2RCxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQztBQUNsQyxpREFBaUQ7QUFDakQsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUM7QUFFakM7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsR0FBRyx3QkFBd0IsQ0FBQztJQUMxQyxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0I7SUFDbEQsU0FBUyxFQUFFLHFCQUFxQjtDQUNqQyxDQUFDLENBQUM7QUFFSCxJQUFJLFdBQVcsR0FBa0IsSUFBSSxDQUFDO0FBQ3RDLElBQUksb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBRTdCOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFlBQVk7SUFDaEMsSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLG9CQUFvQjtRQUFFLE9BQU8sV0FBVyxDQUFDO0lBRXpFLE1BQU0sT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLElBQUksQ0FBQyxPQUFPO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO0lBQ3BGLE1BQU0sR0FBRyxHQUFHLE1BQU0sVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBRXRDLG9GQUFvRjtJQUNwRixxRkFBcUY7SUFDckYscUZBQXFGO0lBQ3JGLE1BQU0sR0FBRyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsR0FBRyxPQUFPLDBCQUEwQixFQUFFO1FBQ3ZFLE1BQU0sRUFBRSxNQUFNO1FBQ2QsT0FBTyxFQUFFLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRTtRQUM3RSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0tBQzlCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUV4QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ1osNEVBQTRFO1FBQzVFLHlFQUF5RTtRQUN6RSwrQ0FBK0M7UUFDL0MsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQzdDLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0NBQWdDLEdBQUcsQ0FBQyxNQUFNLG1EQUFtRDtrQkFDM0Ysb0ZBQW9GLENBQ3ZGLENBQUM7UUFDSixDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUE0RCxDQUFDO0lBQzNHLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDO0lBQzNDLElBQUksQ0FBQyxXQUFXO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO0lBRWxGLE1BQU0sS0FBSyxHQUFHLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3ZILFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDMUIsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxHQUFHLHNCQUFzQixDQUFDLENBQUM7SUFDakcsR0FBRyxDQUFDLElBQUksQ0FBQywrREFBK0QsQ0FBQyxDQUFDO0lBQzFFLE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CO0lBQ2xDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDbkIsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUMxQixDQUFDO0FBRUQsMkRBQTJEO0FBQzNELE1BQU0sVUFBVSxrQkFBa0I7SUFDaEMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUNuQixvQkFBb0IsR0FBRyxDQUFDLENBQUM7SUFDekIsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBSZXBvcnRpbmctQVBJIGF1dGhlbnRpY2F0aW9uLiBUaGUgc3RvcmVkIGNyZWRlbnRpYWwgaXMgYW4gT1BBUVVFXG4gKiBzZXJ2aWNlLWFjY291bnQga2V5IChgcGJfc2Ff4oCmYCksIHRyYWRlZCBhdCBwbGF0Zm9ybSBmb3IgYSBzaG9ydC1saXZlZCBKV1QuXG4gKiBOb3RoaW5nIGlzIHZlcmlmaWVkIGhlcmU6IGFuIG9wYXF1ZSBrZXkgaGFzIG5vIGNsYWltcyBhbmQgbm8gc2lnbmF0dXJlLCBhbmRcbiAqIHRoZSBleGNoYW5nZSByZS1yZWFkcyB0aGUgYWNjb3VudCwgaXRzIG9yZyBhbmQgdGhlIGtleSdzIG93biBzdGF0ZSBldmVyeSB0aW1lLFxuICogd2hpY2ggaXMgd2hhdCBtYWtlcyBhIHJldm9jYXRpb24gdGFrZSBlZmZlY3Qgd2l0aGluIG9uZSB0b2tlbiBsaWZldGltZS5cbiAqXG4gKiBDb250cmFjdDogY2FjaGUgdGhlIHRva2VuIGluIHRoZSB3YXJtIGNvbnRhaW5lciwgcmVmcmVzaCBFQVJMWSAoYmVmb3JlXG4gKiBleHBpcnkpIHNvIGEgYmF0Y2ggbmV2ZXIgcHJlc2VudHMgYSB0b2tlbiB0aGF0IGRpZXMgbWlkLWZsaWdodCwgYW5kIGZhaWwgdGhlXG4gKiBiYXRjaCBvbiBhbiBleGNoYW5nZSBmYWlsdXJlIHJhdGhlciB0aGFuIHNoaXBwaW5nIGV2ZW50cyB1bmF1dGhlbnRpY2F0ZWQuXG4gKi9cblxuaW1wb3J0IHsgY3JlYXRlUGxhdGZvcm1DcmVkZW50aWFsIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtY29yZS9saWIvaGFuZGxlcnMvcGxhdGZvcm0tY3JlZGVudGlhbC5qcyc7XG5pbXBvcnQgeyBmZXRjaFdpdGhUaW1lb3V0LCBsb2cgfSBmcm9tICcuL3V0aWwuanMnO1xuXG4vKiogUmVmcmVzaCBhdCB0aGlzIGZyYWN0aW9uIG9mIHRoZSB0b2tlbidzIGxpZmUg4oCUIG5ldmVyIGF0IHRoZSBsYXN0IG1vbWVudC4gKi9cbmNvbnN0IFRPS0VOX1JFRlJFU0hfRlJBQ1RJT04gPSAwLjg7XG4vKiogRmxvb3Igb24gdGhlIGNhY2hlZCBsaWZldGltZSwgc28gYSBzdXJwcmlzaW5nbHkgc2hvcnQgVFRMIGNhbid0IGNhdXNlIGFcbiAqICByZWZyZXNoIHN0b3JtIChvbmUgZXhjaGFuZ2UgcGVyIGJhdGNoIGF0IHdvcnN0KS4gKi9cbmNvbnN0IE1JTl9UT0tFTl9DQUNIRV9NUyA9IDMwXzAwMDtcbi8qKiBQZXItcmVxdWVzdCB0aW1lb3V0IGZvciB0aGUgZXhjaGFuZ2UgY2FsbC4gKi9cbmNvbnN0IEVYQ0hBTkdFX1RJTUVPVVRfTVMgPSA1MDAwO1xuXG4vKipcbiAqIFRoZSBzZXJ2aWNlLWFjY291bnQga2V5OiBgUExBVEZPUk1fQUNDRVNTX0tFWWAgaWYgc2V0LCBvdGhlcndpc2UgdGhlXG4gKiBgcGFzc3dvcmRgIGZpZWxkIG9mIHRoZSBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IG5hbWVkIGJ5IGBQTEFURk9STV9TRUNSRVRfTkFNRWAuXG4gKiBBIHN0b3JlZCBKV1QgaXMgcmVmdXNlZCBsb3VkbHksIG5hbWluZyB0aGUgZml4LCBpbnN0ZWFkIG9mIGZhaWxpbmcgbGF0ZXIgYXMgYW5cbiAqIG9wYXF1ZSA0MDEgZnJvbSB0aGUgcmVwb3J0aW5nIEFQSS5cbiAqL1xuY29uc3QgY3JlZGVudGlhbCA9IGNyZWF0ZVBsYXRmb3JtQ3JlZGVudGlhbCh7XG4gIHNlY3JldE5hbWU6ICgpID0+IHByb2Nlc3MuZW52LlBMQVRGT1JNX1NFQ1JFVF9OQU1FLFxuICBlbnZLZXlWYXI6ICdQTEFURk9STV9BQ0NFU1NfS0VZJyxcbn0pO1xuXG5sZXQgY2FjaGVkVG9rZW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xubGV0IGNhY2hlZFRva2VuRXhwaXJlc0F0ID0gMDtcblxuLyoqXG4gKiBUcmFkZSB0aGUgc3RvcmVkIGtleSBmb3IgYSBzaG9ydC1saXZlZCBwbGF0Zm9ybSB0b2tlbiwgY2FjaGVkIHBlciB3YXJtXG4gKiBjb250YWluZXIgdW50aWwgaXQgaXMgODAlIHRocm91Z2ggaXRzIGxpZmUuIFRocm93cyBvbiBhbnkgZmFpbHVyZSwgd2hpY2ggZmFpbHNcbiAqIHRoZSBiYXRjaCBzbyBTUVMgcmV0cmllcyBpdCDigJQgYW4gdW5hdXRoZW50aWNhdGVkIHNoaXAgaXMgbmV2ZXIgYW4gb3B0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXV0aFRva2VuKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGlmIChjYWNoZWRUb2tlbiAmJiBEYXRlLm5vdygpIDwgY2FjaGVkVG9rZW5FeHBpcmVzQXQpIHJldHVybiBjYWNoZWRUb2tlbjtcblxuICBjb25zdCBiYXNlVXJsID0gKHByb2Nlc3MuZW52LlBMQVRGT1JNX0JBU0VfVVJMIHx8ICcnKS5yZXBsYWNlKC9cXC8rJC8sICcnKTtcbiAgaWYgKCFiYXNlVXJsKSB0aHJvdyBuZXcgRXJyb3IoJ1BMQVRGT1JNX0JBU0VfVVJMIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHJlcXVpcmVkJyk7XG4gIGNvbnN0IGtleSA9IGF3YWl0IGNyZWRlbnRpYWwuZ2V0S2V5KCk7XG5cbiAgLy8gU2FtZSBkZWFkbGluZSBhcyBiZWZvcmUsIHRocm91Z2ggdGhlIHBhY2thZ2UncyBvbmUgYm91bmRlZC1mZXRjaCBoZWxwZXI6IGEgbWFudWFsXG4gIC8vIGNvbnRyb2xsZXIgcGx1cyBhIHRpbWVyIGl0IGhhcyB0byByZW1lbWJlciB0byBjbGVhciBpcyBhIGxlYWsgd2FpdGluZyBmb3IgYW4gZWFybHlcbiAgLy8gYHJldHVybmAsIGFuZCB0d28gc3BlbGxpbmdzIG9mIFwidGltZSB0aGlzIG91dFwiIGlzIGhvdyBvbmUgb2YgdGhlbSBlbmRzIHVwIG1pc3NpbmcuXG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoV2l0aFRpbWVvdXQoYCR7YmFzZVVybH0vYXBpL2F1dGgvdG9rZW4vZXhjaGFuZ2VgLCB7XG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBrZXkgfSksXG4gIH0sIEVYQ0hBTkdFX1RJTUVPVVRfTVMpO1xuXG4gIGlmICghcmVzLm9rKSB7XG4gICAgLy8gQSByZWplY3RlZCBrZXkgaXMgdGhlIG9uZSBmYWlsdXJlIGFuIG9wZXJhdG9yIGhhcyB0byBhY3Qgb24sIGFuZCBwbGF0Zm9ybVxuICAgIC8vIGRlbGliZXJhdGVseSBhbnN3ZXJzIGV2ZXJ5IHJlZnVzYWwgdGhlIHNhbWUgd2F5IOKAlCBzbyBzYXkgd2hhdCB0byBjaGVja1xuICAgIC8vIHJhdGhlciB0aGFuIGVjaG9pbmcgYW4gdW5kaWZmZXJlbnRpYXRlZCA0MDEuXG4gICAgaWYgKHJlcy5zdGF0dXMgPT09IDQwMSB8fCByZXMuc3RhdHVzID09PSA0MDMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEFjY2Vzcy1rZXkgZXhjaGFuZ2UgcmVmdXNlZCAoJHtyZXMuc3RhdHVzfSkg4oCUIHRoZSBzdG9yZWQga2V5IGlzIHVua25vd24sIHJldm9rZWQsIGV4cGlyZWQsIGBcbiAgICAgICAgKyAnaXRzIHNlcnZpY2UgYWNjb3VudCBpcyBkaXNhYmxlZCwgb3IgdGhpcyBhZGRyZXNzIGlzIG91dHNpZGUgdGhlIGtleeKAmXMgSVAgYWxsb3dsaXN0JyxcbiAgICAgICk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgQWNjZXNzLWtleSBleGNoYW5nZSBmYWlsZWQ6ICR7cmVzLnN0YXR1c31gKTtcbiAgfVxuXG4gIGNvbnN0IGJvZHkgPSBhd2FpdCByZXMuanNvbigpLmNhdGNoKCgpID0+ICh7fSkpIGFzIHsgZGF0YT86IHsgYWNjZXNzVG9rZW4/OiBzdHJpbmc7IGV4cGlyZXNJbj86IG51bWJlciB9IH07XG4gIGNvbnN0IGFjY2Vzc1Rva2VuID0gYm9keS5kYXRhPy5hY2Nlc3NUb2tlbjtcbiAgaWYgKCFhY2Nlc3NUb2tlbikgdGhyb3cgbmV3IEVycm9yKCdBY2Nlc3Mta2V5IGV4Y2hhbmdlIHJldHVybmVkIG5vIGFjY2VzcyB0b2tlbicpO1xuXG4gIGNvbnN0IHR0bE1zID0gKHR5cGVvZiBib2R5LmRhdGE/LmV4cGlyZXNJbiA9PT0gJ251bWJlcicgJiYgYm9keS5kYXRhLmV4cGlyZXNJbiA+IDAgPyBib2R5LmRhdGEuZXhwaXJlc0luIDogMzAwKSAqIDEwMDA7XG4gIGNhY2hlZFRva2VuID0gYWNjZXNzVG9rZW47XG4gIGNhY2hlZFRva2VuRXhwaXJlc0F0ID0gRGF0ZS5ub3coKSArIE1hdGgubWF4KE1JTl9UT0tFTl9DQUNIRV9NUywgdHRsTXMgKiBUT0tFTl9SRUZSRVNIX0ZSQUNUSU9OKTtcbiAgbG9nLmluZm8oJ0V4Y2hhbmdlZCB0aGUgc3RvcmVkIHNlcnZpY2UtYWNjb3VudCBrZXkgZm9yIGEgcGxhdGZvcm0gdG9rZW4nKTtcbiAgcmV0dXJuIGFjY2Vzc1Rva2VuO1xufVxuXG4vKipcbiAqIERyb3AgZXZlcnl0aGluZyB0aGUgY29udGFpbmVyIGhvbGRzIGFib3V0IGl0cyBjcmVkZW50aWFsIGFmdGVyIGEgNDAxLzQwMyBmcm9tXG4gKiB0aGUgQVBJOiB0aGUgdG9rZW4sIGFuZCB0aGUgS0VZIOKAlCB0aGUgdG9rZW4tcmVuZXcgTGFtYmRhIHJvdGF0ZXMgdGhlIHNlY3JldFxuICogdW5kZXJuZWF0aCB1cywgc28gYSB3YXJtIGNvbnRhaW5lciB0aGF0IG9ubHkgcmUtZXhjaGFuZ2VkIHdvdWxkIGtlZXBcbiAqIHByZXNlbnRpbmcgdGhlIHJldGlyZWQga2V5IGZvcmV2ZXIuIEFuIGVudi1wcm92aWRlZCBrZXkgY2Fubm90IGNoYW5nZSB3aXRob3V0XG4gKiBhIG5ldyBjb250YWluZXIsIHNvIGl0IGlzIGtlcHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnZhbGlkYXRlQ3JlZGVudGlhbCgpOiB2b2lkIHtcbiAgY2FjaGVkVG9rZW4gPSBudWxsO1xuICBjYWNoZWRUb2tlbkV4cGlyZXNBdCA9IDA7XG4gIGNyZWRlbnRpYWwuaW52YWxpZGF0ZSgpO1xufVxuXG4vKiogQGludGVybmFsIFRlc3Qtb25seTogZm9yZ2V0IGV2ZXJ5IGNhY2hlZCBjcmVkZW50aWFsLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9yZXNldEF1dGhGb3JUZXN0cygpOiB2b2lkIHtcbiAgY2FjaGVkVG9rZW4gPSBudWxsO1xuICBjYWNoZWRUb2tlbkV4cGlyZXNBdCA9IDA7XG4gIGNyZWRlbnRpYWwucmVzZXQoKTtcbn1cbiJdfQ==
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL2F1dGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7OztHQVVHO0FBRUgsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDL0csT0FBTyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVsRCwrRUFBK0U7QUFDL0UsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLENBQUM7QUFDbkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILGlEQUFpRDtBQUNqRCxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQztBQUVqQzs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxHQUFHLHdCQUF3QixDQUFDO0lBQzFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQjtJQUNsRCxTQUFTLEVBQUUscUJBQXFCO0NBQ2pDLENBQUMsQ0FBQztBQUVILElBQUksV0FBVyxHQUFrQixJQUFJLENBQUM7QUFDdEMsSUFBSSxvQkFBb0IsR0FBRyxDQUFDLENBQUM7QUFFN0I7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsWUFBWTtJQUNoQyxJQUFJLFdBQVcsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsb0JBQW9CO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFFekUsTUFBTSxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUUsSUFBSSxDQUFDLE9BQU87UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7SUFDcEYsTUFBTSxHQUFHLEdBQUcsTUFBTSxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7SUFFdEMsb0ZBQW9GO0lBQ3BGLHFGQUFxRjtJQUNyRixxRkFBcUY7SUFDckYsTUFBTSxHQUFHLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxHQUFHLE9BQU8sMEJBQTBCLEVBQUU7UUFDdkUsTUFBTSxFQUFFLE1BQU07UUFDZCxPQUFPLEVBQUUsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFO1FBQzdFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7S0FDOUIsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBRXhCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDWiw0RUFBNEU7UUFDNUUseUVBQXlFO1FBQ3pFLCtDQUErQztRQUMvQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDN0MsTUFBTSxJQUFJLEtBQUssQ0FDYixnQ0FBZ0MsR0FBRyxDQUFDLE1BQU0sbURBQW1EO2tCQUMzRixvRkFBb0YsQ0FDdkYsQ0FBQztRQUNKLENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQTRELENBQUM7SUFDM0csTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUM7SUFDM0MsSUFBSSxDQUFDLFdBQVc7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7SUFFbEYsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDdkgsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUMxQixvQkFBb0IsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxHQUFHLHNCQUFzQixDQUFDO0lBQ25FLEdBQUcsQ0FBQyxJQUFJLENBQUMsK0RBQStELENBQUMsQ0FBQztJQUMxRSxPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQjtJQUNsQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQ25CLG9CQUFvQixHQUFHLENBQUMsQ0FBQztJQUN6QixVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDMUIsQ0FBQztBQUVELDJEQUEyRDtBQUMzRCxNQUFNLFVBQVUsa0JBQWtCO0lBQ2hDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDbkIsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUmVwb3J0aW5nLUFQSSBhdXRoZW50aWNhdGlvbi4gVGhlIHN0b3JlZCBjcmVkZW50aWFsIGlzIGFuIE9QQVFVRVxuICogc2VydmljZS1hY2NvdW50IGtleSAoYHBiX3NhX+KApmApLCB0cmFkZWQgYXQgcGxhdGZvcm0gZm9yIGEgc2hvcnQtbGl2ZWQgSldULlxuICogTm90aGluZyBpcyB2ZXJpZmllZCBoZXJlOiBhbiBvcGFxdWUga2V5IGhhcyBubyBjbGFpbXMgYW5kIG5vIHNpZ25hdHVyZSwgYW5kXG4gKiB0aGUgZXhjaGFuZ2UgcmUtcmVhZHMgdGhlIGFjY291bnQsIGl0cyBvcmcgYW5kIHRoZSBrZXkncyBvd24gc3RhdGUgZXZlcnkgdGltZSxcbiAqIHdoaWNoIGlzIHdoYXQgbWFrZXMgYSByZXZvY2F0aW9uIHRha2UgZWZmZWN0IHdpdGhpbiBvbmUgdG9rZW4gbGlmZXRpbWUuXG4gKlxuICogQ29udHJhY3Q6IGNhY2hlIHRoZSB0b2tlbiBpbiB0aGUgd2FybSBjb250YWluZXIsIHJlZnJlc2ggRUFSTFkgKGJlZm9yZVxuICogZXhwaXJ5KSBzbyBhIGJhdGNoIG5ldmVyIHByZXNlbnRzIGEgdG9rZW4gdGhhdCBkaWVzIG1pZC1mbGlnaHQsIGFuZCBmYWlsIHRoZVxuICogYmF0Y2ggb24gYW4gZXhjaGFuZ2UgZmFpbHVyZSByYXRoZXIgdGhhbiBzaGlwcGluZyBldmVudHMgdW5hdXRoZW50aWNhdGVkLlxuICovXG5cbmltcG9ydCB7IGNyZWF0ZVBsYXRmb3JtQ3JlZGVudGlhbCB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWNvcmUvbGliL2hhbmRsZXJzL3BsYXRmb3JtLWNyZWRlbnRpYWwuanMnO1xuaW1wb3J0IHsgZmV0Y2hXaXRoVGltZW91dCwgbG9nIH0gZnJvbSAnLi91dGlsLmpzJztcblxuLyoqIFJlZnJlc2ggYXQgdGhpcyBmcmFjdGlvbiBvZiB0aGUgdG9rZW4ncyBsaWZlIOKAlCBuZXZlciBhdCB0aGUgbGFzdCBtb21lbnQuICovXG5jb25zdCBUT0tFTl9SRUZSRVNIX0ZSQUNUSU9OID0gMC44O1xuLyoqXG4gKiBObyBGTE9PUiBvbiB0aGUgY2FjaGVkIGxpZmV0aW1lLCBkZWxpYmVyYXRlbHkuXG4gKlxuICogVGhlcmUgd2FzIG9uZSDigJQgMzBzLCBcInNvIGEgc3VycHJpc2luZ2x5IHNob3J0IFRUTCBjYW4ndCBjYXVzZSBhIHJlZnJlc2hcbiAqIHN0b3JtXCIg4oCUIGFuZCBpdCBicm9rZSB0aGlzIG1vZHVsZSdzIG93biBjb250cmFjdC4gVGhlIGNhY2hlIGhlbGRcbiAqIGBtYXgoMzBzLCB0dGwgKiAwLjgpYCwgc28gZm9yIGFueSBgZXhwaXJlc0luYCB1bmRlciB+MzdzIHRoZSBmbG9vciBXT04gYW5kIHRoZVxuICogY29udGFpbmVyIGtlcHQgc2VydmluZyBhIHRva2VuIHRoYXQgaGFkIGFscmVhZHkgZGllZDogYXQgYGV4cGlyZXNJbj0xMGAgdGhlXG4gKiB0b2tlbiBleHBpcmVzIGF0IDEwcyBhbmQgdGhlIGNhY2hlIGhlbGQgaXQgZm9yIDMwcy4gVGhlIGJhdGNoIHRoZW4gcHJlc2VudHMgYVxuICogZGVhZCB0b2tlbiBhbmQgdGFrZXMgYSA0MDEsIHdoaWNoIGlzIHByZWNpc2VseSB3aGF0IFwicmVmcmVzaCBFQVJMWSAoYmVmb3JlXG4gKiBleHBpcnkpIHNvIGEgYmF0Y2ggbmV2ZXIgcHJlc2VudHMgYSB0b2tlbiB0aGF0IGRpZXMgbWlkLWZsaWdodFwiIGV4aXN0cyB0b1xuICogcHJldmVudC5cbiAqXG4gKiBJdCB3YXMgbmV2ZXIgcmVhY2hhYmxlIGluIHByYWN0aWNlIOKAlCBgQVBJX0tFWV9UT0tFTl9UVExfU0VDT05EU2AgaXMgYVxuICogaGFyZC1jb2RlZCAzMDAsIHdoaWNoIGNhY2hlcyAyNDBzIOKAlCBzbyB0aGlzIGlzIGEgbGF0ZW50IGNvbnRyYWRpY3Rpb24gYmVpbmdcbiAqIHJlbW92ZWQgYmVmb3JlIHNvbWVvbmUgbWFrZXMgdGhhdCBUVEwgY29uZmlndXJhYmxlIGFuZCBpdCBiZWNvbWVzIGEgbGl2ZSA0MDFcbiAqIGxvb3AgdGhhdCBsb29rcyBsaWtlIGEgY3JlZGVudGlhbCBwcm9ibGVtLlxuICpcbiAqIERyb3BwaW5nIGl0IGNvc3RzIG5vdGhpbmcgdGhlIGZsb29yIGFjdHVhbGx5IGJvdWdodDogdGhlIHdvcnN0IGNhc2UgaXQgbmFtZWRcbiAqIGlzIFwib25lIGV4Y2hhbmdlIHBlciBiYXRjaFwiLCB3aGljaCBpcyB0aGUgU1FTIGJhdGNoIHJhdGUgYW5kIGlzIGFscmVhZHkgdGhlXG4gKiBib3VuZCwgZmxvb3Igb3Igbm8gZmxvb3IuIGBjYWNoZWRUb2tlbkV4cGlyZXNBdGAgaXMgbm93IGFsd2F5cyBzdHJpY3RseVxuICogaW5zaWRlIHRoZSB0b2tlbidzIGxpZmUsIHdoaWNoIGlzIHRoZSBpbnZhcmlhbnQgdGhlIHN1aXRlIGFzc2VydHMuXG4gKi9cbi8qKiBQZXItcmVxdWVzdCB0aW1lb3V0IGZvciB0aGUgZXhjaGFuZ2UgY2FsbC4gKi9cbmNvbnN0IEVYQ0hBTkdFX1RJTUVPVVRfTVMgPSA1MDAwO1xuXG4vKipcbiAqIFRoZSBzZXJ2aWNlLWFjY291bnQga2V5OiBgUExBVEZPUk1fQUNDRVNTX0tFWWAgaWYgc2V0LCBvdGhlcndpc2UgdGhlXG4gKiBgcGFzc3dvcmRgIGZpZWxkIG9mIHRoZSBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IG5hbWVkIGJ5IGBQTEFURk9STV9TRUNSRVRfTkFNRWAuXG4gKiBBIHN0b3JlZCBKV1QgaXMgcmVmdXNlZCBsb3VkbHksIG5hbWluZyB0aGUgZml4LCBpbnN0ZWFkIG9mIGZhaWxpbmcgbGF0ZXIgYXMgYW5cbiAqIG9wYXF1ZSA0MDEgZnJvbSB0aGUgcmVwb3J0aW5nIEFQSS5cbiAqL1xuY29uc3QgY3JlZGVudGlhbCA9IGNyZWF0ZVBsYXRmb3JtQ3JlZGVudGlhbCh7XG4gIHNlY3JldE5hbWU6ICgpID0+IHByb2Nlc3MuZW52LlBMQVRGT1JNX1NFQ1JFVF9OQU1FLFxuICBlbnZLZXlWYXI6ICdQTEFURk9STV9BQ0NFU1NfS0VZJyxcbn0pO1xuXG5sZXQgY2FjaGVkVG9rZW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xubGV0IGNhY2hlZFRva2VuRXhwaXJlc0F0ID0gMDtcblxuLyoqXG4gKiBUcmFkZSB0aGUgc3RvcmVkIGtleSBmb3IgYSBzaG9ydC1saXZlZCBwbGF0Zm9ybSB0b2tlbiwgY2FjaGVkIHBlciB3YXJtXG4gKiBjb250YWluZXIgdW50aWwgaXQgaXMgODAlIHRocm91Z2ggaXRzIGxpZmUuIFRocm93cyBvbiBhbnkgZmFpbHVyZSwgd2hpY2ggZmFpbHNcbiAqIHRoZSBiYXRjaCBzbyBTUVMgcmV0cmllcyBpdCDigJQgYW4gdW5hdXRoZW50aWNhdGVkIHNoaXAgaXMgbmV2ZXIgYW4gb3B0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXV0aFRva2VuKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGlmIChjYWNoZWRUb2tlbiAmJiBEYXRlLm5vdygpIDwgY2FjaGVkVG9rZW5FeHBpcmVzQXQpIHJldHVybiBjYWNoZWRUb2tlbjtcblxuICBjb25zdCBiYXNlVXJsID0gKHByb2Nlc3MuZW52LlBMQVRGT1JNX0JBU0VfVVJMIHx8ICcnKS5yZXBsYWNlKC9cXC8rJC8sICcnKTtcbiAgaWYgKCFiYXNlVXJsKSB0aHJvdyBuZXcgRXJyb3IoJ1BMQVRGT1JNX0JBU0VfVVJMIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHJlcXVpcmVkJyk7XG4gIGNvbnN0IGtleSA9IGF3YWl0IGNyZWRlbnRpYWwuZ2V0S2V5KCk7XG5cbiAgLy8gU2FtZSBkZWFkbGluZSBhcyBiZWZvcmUsIHRocm91Z2ggdGhlIHBhY2thZ2UncyBvbmUgYm91bmRlZC1mZXRjaCBoZWxwZXI6IGEgbWFudWFsXG4gIC8vIGNvbnRyb2xsZXIgcGx1cyBhIHRpbWVyIGl0IGhhcyB0byByZW1lbWJlciB0byBjbGVhciBpcyBhIGxlYWsgd2FpdGluZyBmb3IgYW4gZWFybHlcbiAgLy8gYHJldHVybmAsIGFuZCB0d28gc3BlbGxpbmdzIG9mIFwidGltZSB0aGlzIG91dFwiIGlzIGhvdyBvbmUgb2YgdGhlbSBlbmRzIHVwIG1pc3NpbmcuXG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoV2l0aFRpbWVvdXQoYCR7YmFzZVVybH0vYXBpL2F1dGgvdG9rZW4vZXhjaGFuZ2VgLCB7XG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBrZXkgfSksXG4gIH0sIEVYQ0hBTkdFX1RJTUVPVVRfTVMpO1xuXG4gIGlmICghcmVzLm9rKSB7XG4gICAgLy8gQSByZWplY3RlZCBrZXkgaXMgdGhlIG9uZSBmYWlsdXJlIGFuIG9wZXJhdG9yIGhhcyB0byBhY3Qgb24sIGFuZCBwbGF0Zm9ybVxuICAgIC8vIGRlbGliZXJhdGVseSBhbnN3ZXJzIGV2ZXJ5IHJlZnVzYWwgdGhlIHNhbWUgd2F5IOKAlCBzbyBzYXkgd2hhdCB0byBjaGVja1xuICAgIC8vIHJhdGhlciB0aGFuIGVjaG9pbmcgYW4gdW5kaWZmZXJlbnRpYXRlZCA0MDEuXG4gICAgaWYgKHJlcy5zdGF0dXMgPT09IDQwMSB8fCByZXMuc3RhdHVzID09PSA0MDMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEFjY2Vzcy1rZXkgZXhjaGFuZ2UgcmVmdXNlZCAoJHtyZXMuc3RhdHVzfSkg4oCUIHRoZSBzdG9yZWQga2V5IGlzIHVua25vd24sIHJldm9rZWQsIGV4cGlyZWQsIGBcbiAgICAgICAgKyAnaXRzIHNlcnZpY2UgYWNjb3VudCBpcyBkaXNhYmxlZCwgb3IgdGhpcyBhZGRyZXNzIGlzIG91dHNpZGUgdGhlIGtleeKAmXMgSVAgYWxsb3dsaXN0JyxcbiAgICAgICk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgQWNjZXNzLWtleSBleGNoYW5nZSBmYWlsZWQ6ICR7cmVzLnN0YXR1c31gKTtcbiAgfVxuXG4gIGNvbnN0IGJvZHkgPSBhd2FpdCByZXMuanNvbigpLmNhdGNoKCgpID0+ICh7fSkpIGFzIHsgZGF0YT86IHsgYWNjZXNzVG9rZW4/OiBzdHJpbmc7IGV4cGlyZXNJbj86IG51bWJlciB9IH07XG4gIGNvbnN0IGFjY2Vzc1Rva2VuID0gYm9keS5kYXRhPy5hY2Nlc3NUb2tlbjtcbiAgaWYgKCFhY2Nlc3NUb2tlbikgdGhyb3cgbmV3IEVycm9yKCdBY2Nlc3Mta2V5IGV4Y2hhbmdlIHJldHVybmVkIG5vIGFjY2VzcyB0b2tlbicpO1xuXG4gIGNvbnN0IHR0bE1zID0gKHR5cGVvZiBib2R5LmRhdGE/LmV4cGlyZXNJbiA9PT0gJ251bWJlcicgJiYgYm9keS5kYXRhLmV4cGlyZXNJbiA+IDAgPyBib2R5LmRhdGEuZXhwaXJlc0luIDogMzAwKSAqIDEwMDA7XG4gIGNhY2hlZFRva2VuID0gYWNjZXNzVG9rZW47XG4gIGNhY2hlZFRva2VuRXhwaXJlc0F0ID0gRGF0ZS5ub3coKSArIHR0bE1zICogVE9LRU5fUkVGUkVTSF9GUkFDVElPTjtcbiAgbG9nLmluZm8oJ0V4Y2hhbmdlZCB0aGUgc3RvcmVkIHNlcnZpY2UtYWNjb3VudCBrZXkgZm9yIGEgcGxhdGZvcm0gdG9rZW4nKTtcbiAgcmV0dXJuIGFjY2Vzc1Rva2VuO1xufVxuXG4vKipcbiAqIERyb3AgZXZlcnl0aGluZyB0aGUgY29udGFpbmVyIGhvbGRzIGFib3V0IGl0cyBjcmVkZW50aWFsIGFmdGVyIGEgNDAxLzQwMyBmcm9tXG4gKiB0aGUgQVBJOiB0aGUgdG9rZW4sIGFuZCB0aGUgS0VZIOKAlCB0aGUgdG9rZW4tcmVuZXcgTGFtYmRhIHJvdGF0ZXMgdGhlIHNlY3JldFxuICogdW5kZXJuZWF0aCB1cywgc28gYSB3YXJtIGNvbnRhaW5lciB0aGF0IG9ubHkgcmUtZXhjaGFuZ2VkIHdvdWxkIGtlZXBcbiAqIHByZXNlbnRpbmcgdGhlIHJldGlyZWQga2V5IGZvcmV2ZXIuIEFuIGVudi1wcm92aWRlZCBrZXkgY2Fubm90IGNoYW5nZSB3aXRob3V0XG4gKiBhIG5ldyBjb250YWluZXIsIHNvIGl0IGlzIGtlcHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnZhbGlkYXRlQ3JlZGVudGlhbCgpOiB2b2lkIHtcbiAgY2FjaGVkVG9rZW4gPSBudWxsO1xuICBjYWNoZWRUb2tlbkV4cGlyZXNBdCA9IDA7XG4gIGNyZWRlbnRpYWwuaW52YWxpZGF0ZSgpO1xufVxuXG4vKiogQGludGVybmFsIFRlc3Qtb25seTogZm9yZ2V0IGV2ZXJ5IGNhY2hlZCBjcmVkZW50aWFsLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9yZXNldEF1dGhGb3JUZXN0cygpOiB2b2lkIHtcbiAgY2FjaGVkVG9rZW4gPSBudWxsO1xuICBjYWNoZWRUb2tlbkV4cGlyZXNBdCA9IDA7XG4gIGNyZWRlbnRpYWwucmVzZXQoKTtcbn1cbiJdfQ==
@@ -108,4 +108,4 @@ export async function readSynthFailure(region, buildId) {
108
108
  return null;
109
109
  }
110
110
  }
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFpbHVyZS1yZWFzb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZmFpbHVyZS1yZWFzb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsb0JBQW9CLEVBQXFCLE1BQU0sMkRBQTJELENBQUM7QUFDdkksT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUF5Q3pDLElBQUksTUFBTSxHQUFXLE9BQU8sQ0FBQztBQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBcUIsQ0FBQztBQUU3QyxnRkFBZ0Y7QUFDaEYsTUFBTSxVQUFVLCtCQUErQixDQUFDLElBQXdCO0lBQ3RFLE1BQU0sR0FBRyxJQUFJLElBQUksT0FBTyxDQUFDO0lBQ3pCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNsQixDQUFDO0FBRUQsS0FBSyxVQUFVLE1BQU0sQ0FBQyxJQUEwQixFQUFFLE1BQWM7SUFDOUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLFdBQVc7UUFDOUIsQ0FBQyxDQUFDLE1BQU0sTUFBTSxDQUFrQiwyQkFBMkIsQ0FBQztRQUM1RCxDQUFDLENBQUMsTUFBTSxNQUFNLENBQWEsaUNBQWlDLENBQUMsQ0FBQztJQUNoRSxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLEVBQUUsQ0FBQztJQUNoQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNQLENBQUMsR0FBRyxJQUFJLEtBQUssV0FBVztZQUN0QixDQUFDLENBQUMsSUFBSyxHQUF1QixDQUFDLGVBQWUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzFELENBQUMsQ0FBQyxJQUFLLEdBQWtCLENBQUMsb0JBQW9CLENBQUMsRUFBRSxN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LFVBQVUsQ0FBQztZQUNqQyxhQUFhLEVBQUUsSUFBSSxvQkFBb0IsR0FBRztZQUMxQyxLQUFLLEVBQUUsQ0FBQztTQUNULENBQUMsQ0FBNkMsQ0FBQztRQUNoRCxLQUFLLE1BQU0sS0FBSyxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFFLENBQUM7WUFDckMsTUFBTSxPQUFPLEdBQUcsT0FBTyxLQUFLLENBQUMsT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDNUYsSUFBSSxPQUFPO2dCQUFFLE9BQU8sT0FBTyxDQUFDO1FBQzlCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsR0FBRyxDQUFDLElBQUksQ0FBQyxzRkFBc0YsRUFBRTtZQUMvRixPQUFPO1lBQ1AsS0FBSyxFQUFFLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7U0FDeEQsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBwYXJzZVN5bnRoRmFpbHVyZSwgU1lOVEhfRkFJTFVSRV9NQVJLRVIsIHR5cGUgU3ludGhGYWlsdXJlIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtY29yZS9saWIvY29yZS9zeW50aC1mYWlsdXJlLmpzJztcbmltcG9ydCB7IGxvYWRTZGssIGxvZyB9IGZyb20gJy4vdXRpbC5qcyc7XG5cbi8vIFN0cnVjdHVyZWQgZmFpbHVyZSByZWFzb25zIGZvciBmYWlsZWQgQ29kZUJ1aWxkIGFjdGlvbnMuXG4vL1xuLy8gQSBDb2RlUGlwZWxpbmUgYWN0aW9uLWZhaWx1cmUgZXZlbnQgY2FycmllcyBvbmx5IENvZGVCdWlsZCdzIGdlbmVyaWMgc3VtbWFyeVxuLy8gKFwiRXJyb3Igd2hpbGUgZXhlY3V0aW5nIGNvbW1hbmQ6IOKApiBleGl0IHN0YXR1cyAxXCIpLCBuZXZlciB0aGUgYnVpbGQgb3V0cHV0IOKAlFxuLy8gc28gV0hZIGEgc3ludGggcmVmdXNlZCBhIHBsdWdpbiAobm90IGluc3RhbGxlZCwgZGVuaWVkIGJ5IHBvbGljeSwgYmFkIHNpZ25hdHVyZSlcbi8vIHdhcyByZWFkYWJsZSBvbmx5IGluIHRoZSBidWlsZCBsb2cuIGBwaXBlbGluZS1tYW5hZ2VyIHBpcGVsaW5lIHN5bnRoYCBwcmludHNcbi8vIG9uZSBgUEJfU1lOVEhfRkFJTFVSRSB74oCmfWAgbGluZSB3aGVuIGl0IGZhaWxzIGluc2lkZSBDb2RlQnVpbGQ7IHRoaXMgbW9kdWxlXG4vLyBmaW5kcyB0aGF0IGxpbmUgaW4gdGhlIGZhaWxlZCBidWlsZCdzIENsb3VkV2F0Y2ggbG9nIHN0cmVhbS5cbi8vXG4vLyBJbi1hY2NvdW50IGFuZCBiZXN0LWVmZm9ydDogQmF0Y2hHZXRCdWlsZHMg4oaSIHRoZSBidWlsZCdzIGxvZyBncm91cC9zdHJlYW0g4oaSXG4vLyBGaWx0ZXJMb2dFdmVudHMgZm9yIHRoZSBtYXJrZXIuIEFueSBmYWlsdXJlIChubyBwZXJtaXNzaW9uLCBsb2dzIG5vdCB5ZXRcbi8vIGZsdXNoZWQsIG5vIG1hcmtlcikgeWllbGRzIG51bGwgYW5kIHRoZSBldmVudCBpcyBmb3J3YXJkZWQgd2l0aG91dCBpdCDigJQgYVxuLy8gbWlzc2luZyByZWFzb24gbXVzdCBuZXZlciBob2xkIHVwIGV2ZW50IGluZ2VzdGlvbi4gUmVxdWlyZXNcbi8vIGBjb2RlYnVpbGQ6QmF0Y2hHZXRCdWlsZHNgICsgYGxvZ3M6RmlsdGVyTG9nRXZlbnRzYCAoZXZlbnRzLXN0YWNrLmpzb24pLlxuLy9cbi8vIFRoZSBTREsgY2xpZW50cyBjb21lIGZyb20gdGhlIExhbWJkYSBydW50aW1lICh2YXJpYWJsZS1zcGVjaWZpZXIgbG9hZCwgbGlrZVxuLy8gQ29kZUNvbW1pdC9TUVMpLCBzbyB0aGV5IGFyZSBub3QgZGVwZW5kZW5jaWVzIG9mIHRoaXMgcGFja2FnZS5cblxuaW50ZXJmYWNlIFNka0NsaWVudCB7IHNlbmQoY29tbWFuZDogdW5rbm93bik6IFByb21pc2U8dW5rbm93bj4gfVxuaW50ZXJmYWNlIENvZGVCdWlsZE1vZHVsZSB7XG4gIENvZGVCdWlsZENsaWVudDogbmV3IChjb25maWc6IHsgcmVnaW9uOiBzdHJpbmcgfSkgPT4gU2RrQ2xpZW50O1xuICBCYXRjaEdldEJ1aWxkc0NvbW1hbmQ6IG5ldyAoaW5wdXQ6IHsgaWRzOiBzdHJpbmdbXSB9KSA9PiB1bmtub3duO1xufVxuXG4vKiogV2hhdCBgQmF0Y2hHZXRCdWlsZHNgIGFuc3dlcnMsIGZvciB0aGUgdHdvIHRoaW5ncyB0aGlzIG1vZHVsZSByZWFkcyBvZmYgaXQuICovXG5pbnRlcmZhY2UgQmF0Y2hHZXRCdWlsZHNPdXRwdXQge1xuICBidWlsZHM/OiBBcnJheTx7XG4gICAgbG9ncz86IHsgZ3JvdXBOYW1lPzogc3RyaW5nOyBzdHJlYW1OYW1lPzogc3RyaW5nIH07XG4gICAgZW52aXJvbm1lbnQ/OiB7IGNvbXB1dGVUeXBlPzogc3RyaW5nIH07XG4gIH0+O1xufVxuaW50ZXJmYWNlIExvZ3NNb2R1bGUge1xuICBDbG91ZFdhdGNoTG9nc0NsaWVudDogbmV3IChjb25maWc6IHsgcmVnaW9uOiBzdHJpbmcgfSkgPT4gU2RrQ2xpZW50O1xuICBGaWx0ZXJMb2dFdmVudHNDb21tYW5kOiBuZXcgKGlucHV0OiB7XG4gICAgbG9nR3JvdXBOYW1lOiBzdHJpbmc7IGxvZ1N0cmVhbU5hbWVzOiBzdHJpbmdbXTsgZmlsdGVyUGF0dGVybjogc3RyaW5nOyBsaW1pdDogbnVtYmVyO1xuICB9KSA9PiB1bmtub3duO1xufVxuXG50eXBlIExvYWRlciA9IDxUPihwa2c6IHN0cmluZykgPT4gUHJvbWlzZTxUPjtcbmxldCBsb2FkZXI6IExvYWRlciA9IGxvYWRTZGs7XG5jb25zdCBjbGllbnRzID0gbmV3IE1hcDxzdHJpbmcsIFNka0NsaWVudD4oKTtcblxuLyoqIEBpbnRlcm5hbCBUZXN0LW9ubHk6IHN1YnN0aXR1dGUgdGhlIFNESyBsb2FkZXIgKGFuZCBkcm9wIGNhY2hlZCBjbGllbnRzKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBfc2V0RmFpbHVyZVJlYXNvbkxvYWRlckZvclRlc3RzKG5leHQ6IExvYWRlciB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICBsb2FkZXIgPSBuZXh0ID8/IGxvYWRTZGs7XG4gIGNsaWVudHMuY2xlYXIoKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2xpZW50KGtpbmQ6ICdjb2RlYnVpbGQnIHwgJ2xvZ3MnLCByZWdpb246IHN0cmluZyk6IFByb21pc2U8eyBjbGllbnQ6IFNka0NsaWVudDsgbW9kOiBDb2RlQnVpbGRNb2R1bGUgfCBMb2dzTW9kdWxlIH0+IHtcbiAgY29uc3QgbW9kID0ga2luZCA9PT0gJ2NvZGVidWlsZCdcbiAgICA/IGF3YWl0IGxvYWRlcjxDb2RlQnVpbGRNb2R1bGU+KCdAYXdzLXNkay9jbGllbnQtY29kZWJ1aWxkJylcbiAgICA6IGF3YWl0IGxvYWRlcjxMb2dzTW9kdWxlPignQGF3cy1zZGsvY2xpZW50LWNsb3Vkd2F0Y2gtbG9ncycpO1xuICBjb25zdCBrZXkgPSBgJHtraW5kfToke3JlZ2lvbn1gO1xuICBsZXQgYyA9IGNsaWVudHMuZ2V0KGtleSk7XG4gIGlmICghYykge1xuICAgIGMgPSBraW5kID09PSAnY29kZWJ1aWxkJ1xuICAgICAgPyBuZXcgKG1vZCBhcyBDb2RlQnVpbGRNb2R1bGUpLkNvZGVCdWlsZENsaWVudCh7IHJlZ2lvbiB9KVxuICAgICAgOiBuZXcgKG1vZCBhcyBMb2dzTW9kdWxlKS5DbG91ZFdhdGNoTG9nc0NsaWVudCh7IHJlZ2lvbiB9KTtcbiAgICBjbGllbnRzLnNldChrZXksIGMpO1xuICB9XG4gIHJldHVybiB7IGNsaWVudDogYywgbW9kIH07XG59XG5cbi8qKiBBIENvZGVCdWlsZCBidWlsZCBpZDogYDxwcm9qZWN0Pjo8dXVpZD5gLiAqL1xuY29uc3QgQlVJTERfSURfUkUgPSAvXltBLVphLXowLTldW0EtWmEtejAtOV8tXXsxLDI1NH06WzAtOWEtZi1dezM2fSQvO1xuXG4vKipcbiAqIFRoZSBidWlsZCBpZCBvZiBhIGZhaWxlZCBDb2RlQnVpbGQgYWN0aW9uLCBmcm9tIHRoZSBldmVudCBkZXRhaWw7IG51bGwgZm9yIGFcbiAqIG5vbi1Db2RlQnVpbGQgYWN0aW9uIG9yIGFuIGV2ZW50IHRoYXQgY2FycmllcyBubyBleHRlcm5hbCBleGVjdXRpb24gaWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2RlQnVpbGRJZE9mKGRldGFpbDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgdHlwZSA9IGRldGFpbC50eXBlIGFzIHsgcHJvdmlkZXI/OiB1bmtub3duIH0gfCB1bmRlZmluZWQ7XG4gIGlmICh0eXBlPy5wcm92aWRlciAhPT0gdW5kZWZpbmVkICYmIHR5cGUucHJvdmlkZXIgIT09ICdDb2RlQnVpbGQnKSByZXR1cm4gbnVsbDtcbiAgY29uc3QgcmVzdWx0ID0gZGV0YWlsWydleGVjdXRpb24tcmVzdWx0J10gYXMgeyAnZXh0ZXJuYWwtZXhlY3V0aW9uLWlkJz86IHVua25vd24gfSB8IHVuZGVmaW5lZDtcbiAgY29uc3QgaWQgPSByZXN1bHQ/LlsnZXh0ZXJuYWwtZXhlY3V0aW9uLWlkJ107XG4gIHJldHVybiB0eXBlb2YgaWQgPT09ICdzdHJpbmcnICYmIEJVSUxEX0lEX1JFLnRlc3QoaWQpID8gaWQgOiBudWxsO1xufVxuXG4vKipcbiAqIFRoZSBjb21wdXRlIHNpemUgYSBmaW5pc2hlZCBDb2RlQnVpbGQgYWN0aW9uIHJhbiBvbiwgQVMgQVdTIFNQRUxMUyBJVFxuICogKGBCVUlMRF9HRU5FUkFMMV9NRURJVU1gKSwgb3IgbnVsbC5cbiAqXG4gKiBSZXR1cm5lZCByYXcgYW5kIG5hcnJvd2VkIHNlcnZlci1zaWRlIHJhdGhlciB0aGFuIGhlcmUsIGZvciBvbmUgaGFyZCByZWFzb246XG4gKiB0aGlzIExhbWJkYSBzaGlwcyBhcyBhIFNJTkdMRSBidW5kbGVkIGZpbGUsIGFuZCB0aGUgdm9jYWJ1bGFyeSBsaXZlcyBpbiB0aGVcbiAqIHBpcGVsaW5lLWNvcmUgYmFycmVsLCB3aGljaCBjYXJyaWVzIGR5bmFtaWMgaW1wb3J0cyB0aGF0IGJyZWFrIHRoYXQgY29uc3RyYWludFxuICogKGB0ZXN0L3NpbmdsZS1maWxlLWNvbnN0cmFpbnQudGVzdC50c2AgaXMgdGhlIGNoZWNrKS4gU2VuZGluZyB0aGUgcmF3IHN0cmluZ1xuICogYWxzbyBrZWVwcyB0aGUgc3RvcmVkIGBkZXRhaWwuY29tcHV0ZVR5cGVgIHRoZSBvYnNlcnZhdGlvbiByYXRoZXIgdGhhbiBhblxuICogaW50ZXJwcmV0YXRpb24gb2YgaXQuXG4gKlxuICogV0hZIElUIElTIFJFQUQgRlJPTSBBV1MgcmF0aGVyIHRoYW4gZnJvbSBvdXIgb3duIHN0b3JlZCBwaXBlbGluZSBjb25maWc6IHRoZVxuICogY29uZmlnIGhvbGRzIGEgc3RlcCdzIFJFUVVFU1RFRCBjb21wdXRlIHR5cGUsIGFuZCB3aGF0IHRoZSBidWlsZCBhY3R1YWxseSByYW5cbiAqIG9uIGlzIHdoYXQgY29uc3VtZWQgdkNQVSDigJQgYSBwaXBlbGluZSBlZGl0ZWQgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIHRoZSBmaW5pc2hcbiAqIHdvdWxkIG90aGVyd2lzZSBiZSBwcmljZWQgYWdhaW5zdCB0aGUgbmV3IHZhbHVlLiBgQmF0Y2hHZXRCdWlsZHNgIGFuc3dlcnMgdGhlXG4gKiBhdXRob3JpdGF0aXZlIG9uZSwgYW5kIHRoaXMgTGFtYmRhIGFscmVhZHkgaG9sZHMgdGhhdCBwZXJtaXNzaW9uIGZvciB0aGVcbiAqIGZhaWx1cmUtcmVhc29uIHJlYWQgYmVsb3cuXG4gKlxuICogQmVzdC1lZmZvcnQsIGxpa2UgZXZlcnl0aGluZyBlbHNlIGhlcmU6IGEgdGhyb3R0bGUgb3IgYSBtaXNzaW5nIHBlcm1pc3Npb25cbiAqIHlpZWxkcyBudWxsLCB0aGUgZXZlbnQgZm9yd2FyZHMgd2l0aG91dCB0aGUgZmllbGQsIGFuZCB0aGUgaW5nZXN0IHJlY29yZHMgdGhhdFxuICogYWN0aW9uIGFzIHVubWVhc3VyZWQgcmF0aGVyIHRoYW4gYXMgZnJlZS4gQSBzaXplIHRoYXQgY2Fubm90IGJlIHJlYWQgbXVzdCBub3RcbiAqIGJlIGd1ZXNzZWQg4oCUIFNNQUxMIGlzIHRoZSBjaGVhcGVzdCBhbmQgdGhlcmVmb3JlIHRoZSBtb3N0IGZsYXR0ZXJpbmcgZ3Vlc3MuXG4gKlxuICogTk9UIGZvbGRlZCBpbnRvIHtAbGluayByZWFkU3ludGhGYWlsdXJlfSwgd2hpY2ggbWFrZXMgdGhlIHNhbWUgY2FsbDogdGhhdCBvbmVcbiAqIHJ1bnMgb24gRkFJTEVEIGFjdGlvbnMgb25seSwgdGhpcyBvbmUgb24gZXZlcnkgdGVybWluYWwgQ29kZUJ1aWxkIGFjdGlvbiwgYW5kXG4gKiBzaGFyaW5nIGEgY2FjaGUgYmV0d2VlbiB0aGVtIHdvdWxkIG1lYW4gaG9sZGluZyBidWlsZCByZWNvcmRzIGZvciB0aGUgd2hvbGVcbiAqIGJhdGNoIHRvIHNhdmUgb25lIGNhbGwgb24gdGhlIG1pbm9yaXR5IHBhdGguXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkQnVpbGRDb21wdXRlKHJlZ2lvbjogc3RyaW5nLCBidWlsZElkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBjYiA9IGF3YWl0IGNsaWVudCgnY29kZWJ1aWxkJywgcmVnaW9uKTtcbiAgICBjb25zdCBvdXQgPSBhd2FpdCBjYi5jbGllbnQuc2VuZChcbiAgICAgIG5ldyAoY2IubW9kIGFzIENvZGVCdWlsZE1vZHVsZSkuQmF0Y2hHZXRCdWlsZHNDb21tYW5kKHsgaWRzOiBbYnVpbGRJZF0gfSksXG4gICAgKSBhcyBCYXRjaEdldEJ1aWxkc091dHB1dDtcbiAgICByZXR1cm4gb3V0LmJ1aWxkcz8uWzBdPy5lbnZpcm9ubWVudD8uY29tcHV0ZVR5cGUgPz8gbnVsbDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLndhcm4oJ0NvdWxkIG5vdCByZWFkIHRoZSBidWlsZFxcJ3MgY29tcHV0ZSBzaXplIChmb3J3YXJkaW5nIHdpdGhvdXQgaXQpJywge1xuICAgICAgYnVpbGRJZCwgZXJyb3I6IFN0cmluZyhlcnIpLFxuICAgIH0pO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKiBGaW5kIHRoZSBgUEJfU1lOVEhfRkFJTFVSRWAgbGluZSBpbiBhIGZhaWxlZCBidWlsZCdzIGxvZywgb3IgbnVsbC4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkU3ludGhGYWlsdXJlKHJlZ2lvbjogc3RyaW5nLCBidWlsZElkOiBzdHJpbmcpOiBQcm9taXNlPFN5bnRoRmFpbHVyZSB8IG51bGw+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBjYiA9IGF3YWl0IGNsaWVudCgnY29kZWJ1aWxkJywgcmVnaW9uKTtcbiAgICBjb25zdCBvdXQgPSBhd2FpdCBjYi5jbGllbnQuc2VuZChcbiAgICAgIG5ldyAoY2IubW9kIGFzIENvZGVCdWlsZE1vZHVsZSkuQmF0Y2hHZXRCdWlsZHNDb21tYW5kKHsgaWRzOiBbYnVpbGRJZF0gfSksXG4gICAgKSBhcyBCYXRjaEdldEJ1aWxkc091dHB1dDtcbiAgICBjb25zdCBsb2dzID0gb3V0LmJ1aWxkcz8uWzBdPy5sb2dzO1xuICAgIGlmICghbG9ncz8uZ3JvdXBOYW1lIHx8ICFsb2dzLnN0cmVhbU5hbWUpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgY3cgPSBhd2FpdCBjbGllbnQoJ2xvZ3MnLCByZWdpb24pO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGN3LmNsaWVudC5zZW5kKG5ldyAoY3cubW9kIGFzIExvZ3NNb2R1bGUpLkZpbHRlckxvZ0V2ZW50c0NvbW1hbmQoe1xuICAgICAgbG9nR3JvdXBOYW1lOiBsb2dzLmdyb3VwTmFtZSxcbiAgICAgIGxvZ1N0cmVhbU5hbWVzOiBbbG9ncy5zdHJlYW1OYW1lXSxcbiAgICAgIGZpbHRlclBhdHRlcm46IGBcIiR7U1lOVEhfRkFJTFVSRV9NQVJLRVJ9XCJgLFxuICAgICAgbGltaXQ6IDUsXG4gICAgfSkpIGFzIHsgZXZlbnRzPzogQXJyYXk8eyBtZXNzYWdlPzogc3RyaW5nIH0+IH07XG4gICAgZm9yIChjb25zdCBldmVudCBvZiByZXMuZXZlbnRzID8/IFtdKSB7XG4gICAgICBjb25zdCBmYWlsdXJlID0gdHlwZW9mIGV2ZW50Lm1lc3NhZ2UgPT09ICdzdHJpbmcnID8gcGFyc2VTeW50aEZhaWx1cmUoZXZlbnQubWVzc2FnZSkgOiBudWxsO1xuICAgICAgaWYgKGZhaWx1cmUpIHJldHVybiBmYWlsdXJlO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLndhcm4oJ0NvdWxkIG5vdCByZWFkIHRoZSBmYWlsZWQgYnVpbGRcXCdzIHN0cnVjdHVyZWQgZmFpbHVyZSByZWFzb24gKGZvcndhcmRpbmcgd2l0aG91dCBpdCknLCB7XG4gICAgICBidWlsZElkLFxuICAgICAgZXJyb3I6IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKSxcbiAgICB9KTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFpbHVyZS1yZWFzb24uanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9mYWlsdXJlLXJlYXNvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBcUIsTUFBTSwyREFBMkQsQ0FBQztBQUN2SSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQXlDekMsSUFBSSxNQUFNLEdBQVcsT0FBTyxDQUFDO0FBQzdCLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxFQUFxQixDQUFDO0FBRTdDLGdGQUFnRjtBQUNoRixNQUFNLFVBQVUsK0JBQStCLENBQUMsSUFBd0I7SUFDdEUsTUFBTSxHQUFHLElBQUksSUFBSSxPQUFPLENBQUM7SUFDekIsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ2xCLENBQUM7QUFFRCxLQUFLLFVBQVUsTUFBTSxDQUFDLElBQTBCLEVBQUUsTUFBYztJQUM5RCxNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssV0FBVztRQUM5QixDQUFDLENBQUMsTUFBTSxNQUFNLENBQWtCLDJCQUEyQixDQUFDO1FBQzVELENBQUMsQ0FBQyxNQUFNLE1BQU0sQ0FBYSxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLE1BQU0sRUFBRSxDQUFDO0lBQ2hDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1AsQ0FBQyxHQUFHLElBQUksS0FBSyxXQUFXO1lBQ3RCLENBQUMsQ0FBQyxJQUFLLEdBQXVCLENBQUMsZUFBZSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDMUQsQ0FBQyxDQUFDLElBQUssR0FBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENB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LGFBQWEsRUFBRSxJQUFJLG9CQUFvQixHQUFHO1lBQzFDLEtBQUssRUFBRSxDQUFDO1NBQ1QsQ0FBQyxDQUE2QyxDQUFDO1FBQ2hELEtBQUssTUFBTSxLQUFLLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNyQyxNQUFNLE9BQU8sR0FBRyxPQUFPLEtBQUssQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUM1RixJQUFJLE9BQU87Z0JBQUUsT0FBTyxPQUFPLENBQUM7UUFDOUIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDYixHQUFHLENBQUMsSUFBSSxDQUFDLHNGQUFzRixFQUFFO1lBQy9GLE9BQU87WUFDUCxLQUFLLEVBQUUsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztTQUN4RCxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IHBhcnNlU3ludGhGYWlsdXJlLCBTWU5USF9GQUlMVVJFX01BUktFUiwgdHlwZSBTeW50aEZhaWx1cmUgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1jb3JlL2xpYi9jb3JlL3N5bnRoLWZhaWx1cmUuanMnO1xuaW1wb3J0IHsgbG9hZFNkaywgbG9nIH0gZnJvbSAnLi91dGlsLmpzJztcblxuLy8gU3RydWN0dXJlZCBmYWlsdXJlIHJlYXNvbnMgZm9yIGZhaWxlZCBDb2RlQnVpbGQgYWN0aW9ucy5cbi8vXG4vLyBBIENvZGVQaXBlbGluZSBhY3Rpb24tZmFpbHVyZSBldmVudCBjYXJyaWVzIG9ubHkgQ29kZUJ1aWxkJ3MgZ2VuZXJpYyBzdW1tYXJ5XG4vLyAoXCJFcnJvciB3aGlsZSBleGVjdXRpbmcgY29tbWFuZDog4oCmIGV4aXQgc3RhdHVzIDFcIiksIG5ldmVyIHRoZSBidWlsZCBvdXRwdXQg4oCUXG4vLyBzbyBXSFkgYSBzeW50aCByZWZ1c2VkIGEgcGx1Z2luIChub3QgaW5zdGFsbGVkLCBkZW5pZWQgYnkgcG9saWN5LCBiYWQgc2lnbmF0dXJlKVxuLy8gd2FzIHJlYWRhYmxlIG9ubHkgaW4gdGhlIGJ1aWxkIGxvZy4gYHBpcGVsaW5lLW1hbmFnZXIgcGlwZWxpbmUgc3ludGhgIHByaW50c1xuLy8gb25lIGBQQl9TWU5USF9GQUlMVVJFIHvigKZ9YCBsaW5lIHdoZW4gaXQgZmFpbHMgaW5zaWRlIENvZGVCdWlsZDsgdGhpcyBtb2R1bGVcbi8vIGZpbmRzIHRoYXQgbGluZSBpbiB0aGUgZmFpbGVkIGJ1aWxkJ3MgQ2xvdWRXYXRjaCBsb2cgc3RyZWFtLlxuLy9cbi8vIEluLWFjY291bnQgYW5kIGJlc3QtZWZmb3J0OiBCYXRjaEdldEJ1aWxkcyDihpIgdGhlIGJ1aWxkJ3MgbG9nIGdyb3VwL3N0cmVhbSDihpJcbi8vIEZpbHRlckxvZ0V2ZW50cyBmb3IgdGhlIG1hcmtlci4gQW55IGZhaWx1cmUgKG5vIHBlcm1pc3Npb24sIGxvZ3Mgbm90IHlldFxuLy8gZmx1c2hlZCwgbm8gbWFya2VyKSB5aWVsZHMgbnVsbCBhbmQgdGhlIGV2ZW50IGlzIGZvcndhcmRlZCB3aXRob3V0IGl0IOKAlCBhXG4vLyBtaXNzaW5nIHJlYXNvbiBtdXN0IG5ldmVyIGhvbGQgdXAgZXZlbnQgaW5nZXN0aW9uLiBSZXF1aXJlc1xuLy8gYGNvZGVidWlsZDpCYXRjaEdldEJ1aWxkc2AgKyBgbG9nczpGaWx0ZXJMb2dFdmVudHNgIChldmVudHMtc3RhY2suanNvbikuXG4vL1xuLy8gVGhlIFNESyBjbGllbnRzIGNvbWUgZnJvbSB0aGUgTGFtYmRhIHJ1bnRpbWUgKHZhcmlhYmxlLXNwZWNpZmllciBsb2FkLCBsaWtlXG4vLyBDb2RlQ29tbWl0L1NRUyksIHNvIHRoZXkgYXJlIG5vdCBkZXBlbmRlbmNpZXMgb2YgdGhpcyBwYWNrYWdlLlxuXG5pbnRlcmZhY2UgU2RrQ2xpZW50IHsgc2VuZChjb21tYW5kOiB1bmtub3duKTogUHJvbWlzZTx1bmtub3duPiB9XG5pbnRlcmZhY2UgQ29kZUJ1aWxkTW9kdWxlIHtcbiAgQ29kZUJ1aWxkQ2xpZW50OiBuZXcgKGNvbmZpZzogeyByZWdpb246IHN0cmluZyB9KSA9PiBTZGtDbGllbnQ7XG4gIEJhdGNoR2V0QnVpbGRzQ29tbWFuZDogbmV3IChpbnB1dDogeyBpZHM6IHN0cmluZ1tdIH0pID0+IHVua25vd247XG59XG5cbi8qKiBXaGF0IGBCYXRjaEdldEJ1aWxkc2AgYW5zd2VycywgZm9yIHRoZSB0d28gdGhpbmdzIHRoaXMgbW9kdWxlIHJlYWRzIG9mZiBpdC4gKi9cbmludGVyZmFjZSBCYXRjaEdldEJ1aWxkc091dHB1dCB7XG4gIGJ1aWxkcz86IEFycmF5PHtcbiAgICBsb2dzPzogeyBncm91cE5hbWU/OiBzdHJpbmc7IHN0cmVhbU5hbWU/OiBzdHJpbmcgfTtcbiAgICBlbnZpcm9ubWVudD86IHsgY29tcHV0ZVR5cGU/OiBzdHJpbmcgfTtcbiAgfT47XG59XG5pbnRlcmZhY2UgTG9nc01vZHVsZSB7XG4gIENsb3VkV2F0Y2hMb2dzQ2xpZW50OiBuZXcgKGNvbmZpZzogeyByZWdpb246IHN0cmluZyB9KSA9PiBTZGtDbGllbnQ7XG4gIEZpbHRlckxvZ0V2ZW50c0NvbW1hbmQ6IG5ldyAoaW5wdXQ6IHtcbiAgICBsb2dHcm91cE5hbWU6IHN0cmluZzsgbG9nU3RyZWFtTmFtZXM6IHN0cmluZ1tdOyBmaWx0ZXJQYXR0ZXJuOiBzdHJpbmc7IGxpbWl0OiBudW1iZXI7XG4gIH0pID0+IHVua25vd247XG59XG5cbnR5cGUgTG9hZGVyID0gPFQ+KHBrZzogc3RyaW5nKSA9PiBQcm9taXNlPFQ+O1xubGV0IGxvYWRlcjogTG9hZGVyID0gbG9hZFNkaztcbmNvbnN0IGNsaWVudHMgPSBuZXcgTWFwPHN0cmluZywgU2RrQ2xpZW50PigpO1xuXG4vKiogQGludGVybmFsIFRlc3Qtb25seTogc3Vic3RpdHV0ZSB0aGUgU0RLIGxvYWRlciAoYW5kIGRyb3AgY2FjaGVkIGNsaWVudHMpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9zZXRGYWlsdXJlUmVhc29uTG9hZGVyRm9yVGVzdHMobmV4dDogTG9hZGVyIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gIGxvYWRlciA9IG5leHQgPz8gbG9hZFNkaztcbiAgY2xpZW50cy5jbGVhcigpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjbGllbnQoa2luZDogJ2NvZGVidWlsZCcgfCAnbG9ncycsIHJlZ2lvbjogc3RyaW5nKTogUHJvbWlzZTx7IGNsaWVudDogU2RrQ2xpZW50OyBtb2Q6IENvZGVCdWlsZE1vZHVsZSB8IExvZ3NNb2R1bGUgfT4ge1xuICBjb25zdCBtb2QgPSBraW5kID09PSAnY29kZWJ1aWxkJ1xuICAgID8gYXdhaXQgbG9hZGVyPENvZGVCdWlsZE1vZHVsZT4oJ0Bhd3Mtc2RrL2NsaWVudC1jb2RlYnVpbGQnKVxuICAgIDogYXdhaXQgbG9hZGVyPExvZ3NNb2R1bGU+KCdAYXdzLXNkay9jbGllbnQtY2xvdWR3YXRjaC1sb2dzJyk7XG4gIGNvbnN0IGtleSA9IGAke2tpbmR9OiR7cmVnaW9ufWA7XG4gIGxldCBjID0gY2xpZW50cy5nZXQoa2V5KTtcbiAgaWYgKCFjKSB7XG4gICAgYyA9IGtpbmQgPT09ICdjb2RlYnVpbGQnXG4gICAgICA/IG5ldyAobW9kIGFzIENvZGVCdWlsZE1vZHVsZSkuQ29kZUJ1aWxkQ2xpZW50KHsgcmVnaW9uIH0pXG4gICAgICA6IG5ldyAobW9kIGFzIExvZ3NNb2R1bGUpLkNsb3VkV2F0Y2hMb2dzQ2xpZW50KHsgcmVnaW9uIH0pO1xuICAgIGNsaWVudHMuc2V0KGtleSwgYyk7XG4gIH1cbiAgcmV0dXJuIHsgY2xpZW50OiBjLCBtb2QgfTtcbn1cblxuLyoqIEEgQ29kZUJ1aWxkIGJ1aWxkIGlkOiBgPHByb2plY3Q+Ojx1dWlkPmAuICovXG5jb25zdCBCVUlMRF9JRF9SRSA9IC9eW0EtWmEtejAtOV1bQS1aYS16MC05Xy1dezEsMjU0fTpbMC05YS1mLV17MzZ9JC87XG5cbi8qKlxuICogVGhlIGJ1aWxkIGlkIG9mIGEgZmFpbGVkIENvZGVCdWlsZCBhY3Rpb24sIGZyb20gdGhlIGV2ZW50IGRldGFpbDsgbnVsbCBmb3IgYVxuICogbm9uLUNvZGVCdWlsZCBhY3Rpb24gb3IgYW4gZXZlbnQgdGhhdCBjYXJyaWVzIG5vIGV4dGVybmFsIGV4ZWN1dGlvbiBpZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvZGVCdWlsZElkT2YoZGV0YWlsOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCB0eXBlID0gZGV0YWlsLnR5cGUgYXMgeyBwcm92aWRlcj86IHVua25vd24gfSB8IHVuZGVmaW5lZDtcbiAgaWYgKHR5cGU/LnByb3ZpZGVyICE9PSB1bmRlZmluZWQgJiYgdHlwZS5wcm92aWRlciAhPT0gJ0NvZGVCdWlsZCcpIHJldHVybiBudWxsO1xuICBjb25zdCByZXN1bHQgPSBkZXRhaWxbJ2V4ZWN1dGlvbi1yZXN1bHQnXSBhcyB7ICdleHRlcm5hbC1leGVjdXRpb24taWQnPzogdW5rbm93biB9IHwgdW5kZWZpbmVkO1xuICBjb25zdCBpZCA9IHJlc3VsdD8uWydleHRlcm5hbC1leGVjdXRpb24taWQnXTtcbiAgcmV0dXJuIHR5cGVvZiBpZCA9PT0gJ3N0cmluZycgJiYgQlVJTERfSURfUkUudGVzdChpZCkgPyBpZCA6IG51bGw7XG59XG5cbi8qKlxuICogVGhlIGNvbXB1dGUgc2l6ZSBhIGZpbmlzaGVkIENvZGVCdWlsZCBhY3Rpb24gcmFuIG9uLCBBUyBBV1MgU1BFTExTIElUXG4gKiAoYEJVSUxEX0dFTkVSQUwxX01FRElVTWApLCBvciBudWxsLlxuICpcbiAqIFJldHVybmVkIHJhdyBhbmQgbmFycm93ZWQgc2VydmVyLXNpZGUgcmF0aGVyIHRoYW4gaGVyZSwgZm9yIG9uZSBoYXJkIHJlYXNvbjpcbiAqIHRoaXMgTGFtYmRhIHNoaXBzIGFzIGEgU0lOR0xFIGJ1bmRsZWQgZmlsZSwgYW5kIHRoZSB2b2NhYnVsYXJ5IGxpdmVzIGluIHRoZVxuICogcGlwZWxpbmUtY29yZSBiYXJyZWwsIHdoaWNoIGNhcnJpZXMgZHluYW1pYyBpbXBvcnRzIHRoYXQgYnJlYWsgdGhhdCBjb25zdHJhaW50XG4gKiAoYHRlc3Qvc2luZ2xlLWZpbGUtY29uc3RyYWludC50ZXN0LnRzYCBpcyB0aGUgY2hlY2spLiBTZW5kaW5nIHRoZSByYXcgc3RyaW5nXG4gKiBhbHNvIGtlZXBzIHRoZSBzdG9yZWQgYGRldGFpbC5jb21wdXRlVHlwZWAgdGhlIG9ic2VydmF0aW9uIHJhdGhlciB0aGFuIGFuXG4gKiBpbnRlcnByZXRhdGlvbiBvZiBpdC5cbiAqXG4gKiBXSFkgSVQgSVMgUkVBRCBGUk9NIEFXUyByYXRoZXIgdGhhbiBmcm9tIG91ciBvd24gc3RvcmVkIHBpcGVsaW5lIGNvbmZpZzogdGhlXG4gKiBjb25maWcgaG9sZHMgYSBzdGVwJ3MgUkVRVUVTVEVEIGNvbXB1dGUgdHlwZSwgYW5kIHdoYXQgdGhlIGJ1aWxkIGFjdHVhbGx5IHJhblxuICogb24gaXMgd2hhdCBjb25zdW1lZCB2Q1BVIOKAlCBhIHBpcGVsaW5lIGVkaXRlZCBiZXR3ZWVuIHRoZSBzdGFydCBhbmQgdGhlIGZpbmlzaFxuICogd291bGQgb3RoZXJ3aXNlIGJlIHByaWNlZCBhZ2FpbnN0IHRoZSBuZXcgdmFsdWUuIGBCYXRjaEdldEJ1aWxkc2AgYW5zd2VycyB0aGVcbiAqIGF1dGhvcml0YXRpdmUgb25lLCBhbmQgdGhpcyBMYW1iZGEgYWxyZWFkeSBob2xkcyB0aGF0IHBlcm1pc3Npb24gZm9yIHRoZVxuICogZmFpbHVyZS1yZWFzb24gcmVhZCBiZWxvdy5cbiAqXG4gKiBCZXN0LWVmZm9ydCwgbGlrZSBldmVyeXRoaW5nIGVsc2UgaGVyZTogYSB0aHJvdHRsZSBvciBhIG1pc3NpbmcgcGVybWlzc2lvblxuICogeWllbGRzIG51bGwsIHRoZSBldmVudCBmb3J3YXJkcyB3aXRob3V0IHRoZSBmaWVsZCwgYW5kIHRoZSBpbmdlc3QgcmVjb3JkcyB0aGF0XG4gKiBhY3Rpb24gYXMgdW5tZWFzdXJlZCByYXRoZXIgdGhhbiBhcyBmcmVlLiBBIHNpemUgdGhhdCBjYW5ub3QgYmUgcmVhZCBtdXN0IG5vdFxuICogYmUgZ3Vlc3NlZCDigJQgU01BTEwgaXMgdGhlIGNoZWFwZXN0IGFuZCB0aGVyZWZvcmUgdGhlIG1vc3QgZmxhdHRlcmluZyBndWVzcy5cbiAqXG4gKiBOT1QgZm9sZGVkIGludG8ge0BsaW5rIHJlYWRTeW50aEZhaWx1cmV9LCB3aGljaCBtYWtlcyB0aGUgc2FtZSBjYWxsOiB0aGF0IG9uZVxuICogcnVucyBvbiBGQUlMRUQgYWN0aW9ucyBvbmx5LCB0aGlzIG9uZSBvbiBldmVyeSB0ZXJtaW5hbCBDb2RlQnVpbGQgYWN0aW9uLCBhbmRcbiAqIHNoYXJpbmcgYSBjYWNoZSBiZXR3ZWVuIHRoZW0gd291bGQgbWVhbiBob2xkaW5nIGJ1aWxkIHJlY29yZHMgZm9yIHRoZSB3aG9sZVxuICogYmF0Y2ggdG8gc2F2ZSBvbmUgY2FsbCBvbiB0aGUgbWlub3JpdHkgcGF0aC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRCdWlsZENvbXB1dGUocmVnaW9uOiBzdHJpbmcsIGJ1aWxkSWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICB0cnkge1xuICAgIGNvbnN0IGNiID0gYXdhaXQgY2xpZW50KCdjb2RlYnVpbGQnLCByZWdpb24pO1xuICAgIGNvbnN0IG91dCA9IGF3YWl0IGNiLmNsaWVudC5zZW5kKFxuICAgICAgbmV3IChjYi5tb2QgYXMgQ29kZUJ1aWxkTW9kdWxlKS5CYXRjaEdldEJ1aWxkc0NvbW1hbmQoeyBpZHM6IFtidWlsZElkXSB9KSxcbiAgICApIGFzIEJhdGNoR2V0QnVpbGRzT3V0cHV0O1xuICAgIHJldHVybiBvdXQuYnVpbGRzPy5bMF0/LmVudmlyb25tZW50Py5jb21wdXRlVHlwZSA/PyBudWxsO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2cud2FybignQ291bGQgbm90IHJlYWQgdGhlIGJ1aWxkXFwncyBjb21wdXRlIHNpemUgKGZvcndhcmRpbmcgd2l0aG91dCBpdCknLCB7XG4gICAgICBidWlsZElkLCBlcnJvcjogU3RyaW5nKGVyciksXG4gICAgfSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqIEZpbmQgdGhlIGBQQl9TWU5USF9GQUlMVVJFYCBsaW5lIGluIGEgZmFpbGVkIGJ1aWxkJ3MgbG9nLCBvciBudWxsLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRTeW50aEZhaWx1cmUocmVnaW9uOiBzdHJpbmcsIGJ1aWxkSWQ6IHN0cmluZyk6IFByb21pc2U8U3ludGhGYWlsdXJlIHwgbnVsbD4ge1xuICB0cnkge1xuICAgIGNvbnN0IGNiID0gYXdhaXQgY2xpZW50KCdjb2RlYnVpbGQnLCByZWdpb24pO1xuICAgIGNvbnN0IG91dCA9IGF3YWl0IGNiLmNsaWVudC5zZW5kKFxuICAgICAgbmV3IChjYi5tb2QgYXMgQ29kZUJ1aWxkTW9kdWxlKS5CYXRjaEdldEJ1aWxkc0NvbW1hbmQoeyBpZHM6IFtidWlsZElkXSB9KSxcbiAgICApIGFzIEJhdGNoR2V0QnVpbGRzT3V0cHV0O1xuICAgIGNvbnN0IGxvZ3MgPSBvdXQuYnVpbGRzPy5bMF0/LmxvZ3M7XG4gICAgaWYgKCFsb2dzPy5ncm91cE5hbWUgfHwgIWxvZ3Muc3RyZWFtTmFtZSkgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCBjdyA9IGF3YWl0IGNsaWVudCgnbG9ncycsIHJlZ2lvbik7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgY3cuY2xpZW50LnNlbmQobmV3IChjdy5tb2QgYXMgTG9nc01vZHVsZSkuRmlsdGVyTG9nRXZlbnRzQ29tbWFuZCh7XG4gICAgICBsb2dHcm91cE5hbWU6IGxvZ3MuZ3JvdXBOYW1lLFxuICAgICAgbG9nU3RyZWFtTmFtZXM6IFtsb2dzLnN0cmVhbU5hbWVdLFxuICAgICAgZmlsdGVyUGF0dGVybjogYFwiJHtTWU5USF9GQUlMVVJFX01BUktFUn1cImAsXG4gICAgICBsaW1pdDogNSxcbiAgICB9KSkgYXMgeyBldmVudHM/OiBBcnJheTx7IG1lc3NhZ2U/OiBzdHJpbmcgfT4gfTtcbiAgICBmb3IgKGNvbnN0IGV2ZW50IG9mIHJlcy5ldmVudHMgPz8gW10pIHtcbiAgICAgIGNvbnN0IGZhaWx1cmUgPSB0eXBlb2YgZXZlbnQubWVzc2FnZSA9PT0gJ3N0cmluZycgPyBwYXJzZVN5bnRoRmFpbHVyZShldmVudC5tZXNzYWdlKSA6IG51bGw7XG4gICAgICBpZiAoZmFpbHVyZSkgcmV0dXJuIGZhaWx1cmU7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2cud2FybignQ291bGQgbm90IHJlYWQgdGhlIGZhaWxlZCBidWlsZFxcJ3Mgc3RydWN0dXJlZCBmYWlsdXJlIHJlYXNvbiAoZm9yd2FyZGluZyB3aXRob3V0IGl0KScsIHtcbiAgICAgIGJ1aWxkSWQsXG4gICAgICBlcnJvcjogZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpLFxuICAgIH0pO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0=
package/lib/health.js CHANGED
@@ -190,4 +190,4 @@ export function _resetHealthForTests() {
190
190
  lastHealthAt = 0;
191
191
  lastRedriveAt = 0;
192
192
  }
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhbHRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2hlYWx0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQXlCbEcsSUFBSSxNQUE2QixDQUFDO0FBQ2xDLElBQUksa0JBQTBELENBQUM7QUFDL0QsS0FBSyxVQUFVLFNBQVMsQ0FBQyxNQUFjO0lBQ3JDLElBQUksQ0FBQyxNQUFNO1FBQUUsTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFZLHFCQUFxQixDQUFDLENBQUM7SUFDdEUsSUFBSSxDQUFDLGtCQUFrQjtRQUFFLGtCQUFrQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFDeEQsSUFBSSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxxRkFBcUY7QUFDckYsa0ZBQWtGO0FBQ2xGLG1GQUFtRjtBQUNuRixvRkFBb0Y7QUFDcEYsc0ZBQXNGO0FBQ3RGLE1BQU0sY0FBYyxHQUFHLElBQUksVUFBVSxDQUFpQixpQkFBaUIsQ0FBQyxDQUFDO0FBQ3pFLE1BQU0sZ0JBQWdCLEdB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LENBQUM7UUFDYixHQUFHLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0UsQ0FBQztBQUNILENBQUM7QUFFRCxpRkFBaUY7QUFDakYsTUFBTSxVQUFVLGVBQWUsQ0FBQyxNQUF5RjtJQUN2SCxLQUFLLE1BQU0sQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzFCLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM1RCxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDeEMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNQLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsR0FBRyxJQUFJO2dCQUFFLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsaUVBQWlFO0FBQ2pFLE1BQU0sVUFBVSxvQkFBb0I7SUFDbEMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZCLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDakIsYUFBYSxHQUFHLENBQUMsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGNvcnJlbGF0aW9uSGVhZGVycyB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWNvcmUvbGliL2NvcmUvYXVkaXQtY29ycmVsYXRpb24uanMnO1xuaW1wb3J0IHsgZ2V0QXV0aFRva2VuIH0gZnJvbSAnLi9hdXRoLmpzJztcbmltcG9ydCB7IGFyblJlZiwgQm91bmRlZE1hcCwgQ0FDSEVfTUFYX0VOVFJJRVMsIGZldGNoV2l0aFRpbWVvdXQsIGxvYWRTZGssIGxvZyB9IGZyb20gJy4vdXRpbC5qcyc7XG5cbi8vIERlbGl2ZXJ5IGhlYWx0aCArIHNlbGYtaGVhbGluZyBETFEgcmVkcml2ZS5cbi8vIEFmdGVyIGEgU1VDQ0VTU0ZVTCBiYXRjaCBQT1NUIHdlICh0aHJvdHRsZWQsIGJlc3QtZWZmb3J0KTpcbi8vICAgMS4gUE9TVCBhbiBpbmdlc3QtaGVhbHRoIHNpZ25hbCB0byAvYXBpL3JlcG9ydHMvaW5nZXN0LWhlYWx0aCBzbyB0aGUgUmVwb3J0cyBVSVxuLy8gICAgICBjYW4gc2hvdyBmbG93aW5nIC8gc3RhbGUgLyBkcm9wcGluZy5cbi8vICAgMi4gSWYgdGhlIERMUSBpcyBub24tZW1wdHksIG5vIG1vdmUgdGFzayBpcyBhbHJlYWR5IHJ1bm5pbmcsIEFORCB0aGUgb2xkZXN0IERMUVxuLy8gICAgICBtZXNzYWdlIGlzIHlvdW5nZXIgdGhhbiB0aGUgcG9pc29uLWFnZSBjZWlsaW5nLCBraWNrIG9mZiBhbiBTUVNcbi8vICAgICAgTWVzc2FnZU1vdmVUYXNrIChETFEg4oaSIG1haW4gcXVldWUpIHNvIHJldHJ5YWJsZSBmYWlsdXJlcyBzZWxmLWhlYWwgd2l0aG91dCBhXG4vLyAgICAgIG5ldyBBV1Mgc2VydmljZS4gVGhlIHJlcG9ydGluZyBpbmdlc3QncyBwYXJ0aWFsLXVuaXF1ZSBpbmRleCBkZWR1cGVzIGFueVxuLy8gICAgICByZWRlbGl2ZXJlZCBldmVudCwgc28gYSByZWRyaXZlIGNhbid0IGRvdWJsZS1jb3VudC5cbi8vIEd1YXJkczogb25seSBvbiBzdWNjZXNzLCBvbmUtYXQtYS10aW1lIChMaXN0TWVzc2FnZU1vdmVUYXNrcyksIGEgcG9pc29uLWFnZSBjZWlsaW5nXG4vLyAoc28gYSBtZXNzYWdlIHRoYXQgYWx3YXlzIGZhaWxzIGNhbid0IGxvb3AgRExR4oaSbWFpbuKGkkRMUSBmb3JldmVyKSwgYW5kIHRocm90dGxlZCB2aWFcbi8vIG1vZHVsZSB0aW1lc3RhbXBzLiBORVZFUiB0aHJvd3Mg4oCUIGEgZmFpbHVyZSBoZXJlIG11c3Qgbm90IGZhaWwgdGhlIGJhdGNoLlxuLy9cbi8vIElBTSByZXF1aXJlZCAoZG9jdW1lbnQgb25seSDigJQgZ3JhbnRlZCBvbiB0aGUgZXZlbnRzIHN0YWNrKTpcbi8vICAgc3FzOkdldFF1ZXVlQXR0cmlidXRlcywgc3FzOkxpc3RNZXNzYWdlTW92ZVRhc2tzLCBzcXM6U3RhcnRNZXNzYWdlTW92ZVRhc2sgKG9uIHRoZSBETFEpXG5cbmludGVyZmFjZSBTcXNDbGllbnRMaWtlIHsgc2VuZChjb21tYW5kOiB1bmtub3duKTogUHJvbWlzZTx1bmtub3duPiB9XG5pbnRlcmZhY2UgU3FzTW9kdWxlIHtcbiAgU1FTQ2xpZW50OiBuZXcgKGNvbmZpZzogeyByZWdpb246IHN0cmluZyB9KSA9PiBTcXNDbGllbnRMaWtlO1xuICBHZXRRdWV1ZUF0dHJpYnV0ZXNDb21tYW5kOiBuZXcgKGlucHV0OiB7IFF1ZXVlVXJsOiBzdHJpbmc7IEF0dHJpYnV0ZU5hbWVzOiBzdHJpbmdbXSB9KSA9PiB1bmtub3duO1xuICBMaXN0TWVzc2FnZU1vdmVUYXNrc0NvbW1hbmQ6IG5ldyAoaW5wdXQ6IHsgU291cmNlQXJuOiBzdHJpbmcgfSkgPT4gdW5rbm93bjtcbiAgU3RhcnRNZXNzYWdlTW92ZVRhc2tDb21tYW5kOiBuZXcgKGlucHV0OiB7IFNvdXJjZUFybjogc3RyaW5nOyBEZXN0aW5hdGlvbkFybj86IHN0cmluZyB9KSA9PiB1bmtub3duO1xufVxubGV0IHNxc01vZDogU3FzTW9kdWxlIHwgdW5kZWZpbmVkO1xubGV0IHNxc0NsaWVudHNCeVJlZ2lvbjogTWFwPHN0cmluZywgU3FzQ2xpZW50TGlrZT4gfCB1bmRlZmluZWQ7XG5hc3luYyBmdW5jdGlvbiBzcXNDbGllbnQocmVnaW9uOiBzdHJpbmcpOiBQcm9taXNlPFNxc0NsaWVudExpa2U+IHtcbiAgaWYgKCFzcXNNb2QpIHNxc01vZCA9IGF3YWl0IGxvYWRTZGs8U3FzTW9kdWxlPignQGF3cy1zZGsvY2xpZW50LXNxcycpO1xuICBpZiAoIXNxc0NsaWVudHNCeVJlZ2lvbikgc3FzQ2xpZW50c0J5UmVnaW9uID0gbmV3IE1hcCgpO1xuICBsZXQgY2xpZW50ID0gc3FzQ2xpZW50c0J5UmVnaW9uLmdldChyZWdpb24pO1xuICBpZiAoIWNsaWVudCkge1xuICAgIGNsaWVudCA9IG5ldyBzcXNNb2QuU1FTQ2xpZW50KHsgcmVnaW9uIH0pO1xuICAgIHNxc0NsaWVudHNCeVJlZ2lvbi5zZXQocmVnaW9uLCBjbGllbnQpO1xuICB9XG4gIHJldHVybiBjbGllbnQ7XG59XG5cbi8vIERlbGl2ZXJ5LWhlYWx0aCBjb3VudGVycyBhcmUgYXR0cmlidXRlZCBQRVIgUkVTT0xWRUQgT1JHICh0aGUgZm9yd2FyZGVyIGlzIGEgZmxlZXRcbi8vIExhbWJkYSBzZXJ2aW5nIG1hbnkgb3JnczsgYSBzaW5nbGUgZ2xvYmFsIGNvdW50ZXIgd291bGQgbWlzLWF0dHJpYnV0ZSBvbmUgb3JnJ3Ncbi8vIHRocm91Z2hwdXQgdG8gYW5vdGhlcikuIEtleWVkIGJ5IG9yZ0lkICgnJyBidWNrZXQgPSBwaXBlbGluZSB3aXRoIG5vIE9yZ0lkIHRhZykuXG4vLyBUaGUgRExRIGRlcHRoIChgZHJvcHBlZGApIGlzIGdlbnVpbmVseSBmbGVldC1nbG9iYWwg4oCUIG9uZSBzaGFyZWQgRExRIOKAlCBzbyBpdCBpcyBhXG4vLyBzaW5nbGUgc25hcHNob3QgcG9zdGVkIGFsb25nc2lkZSBlYWNoIG9yZydzIGhlYWx0aCwgZG9jdW1lbnRlZCBhcyB0aGUgc2hhcmVkIGRlcHRoLlxuY29uc3QgZm9yd2FyZGVkQnlPcmcgPSBuZXcgQm91bmRlZE1hcDxzdHJpbmcsIG51bWJlcj4oQ0FDSEVfTUFYX0VOVFJJRVMpO1xuY29uc3QgbGFzdEV2ZW50QXRCeU9yZyA9IG5ldyBCb3VuZGVkTWFwPHN0cmluZywgc3RyaW5nPihDQUNIRV9NQVhfRU5UUklFUyk7XG5sZXQgbGFzdEhlYWx0aEF0ID0gMDtcbmxldCBsYXN0UmVkcml2ZUF0ID0gMDtcbmNvbnN0IEhFQUxUSF9USFJPVFRMRV9NUyA9IDYwICogMTAwMDtcbmNvbnN0IFJFRFJJVkVfVEhST1RUTEVfTVMgPSA1ICogNjAgKiAxMDAwO1xuLy8gUG9pc29uLW1lc3NhZ2UgY2VpbGluZzogaWYgdGhlIG9sZGVzdCBETFEgbWVzc2FnZSBpcyBvbGRlciB0aGFuIHRoaXMsIHdlIFNUT1Bcbi8vIHJlZHJpdmluZyBpdCAoRExR4oaSbWFpbuKGkmZhaWzihpJETFEgd291bGQgbG9vcCBmb3JldmVyKS4gU3VjaCBtZXNzYWdlcyBhcmUgbGVmdCBmb3IgYW5cbi8vIGFsYXJtIC8gbWFudWFsIGluc3BlY3Rpb24gaW5zdGVhZCBvZiBjaHVybmluZyB0aGUgZmxlZXQgaW5kZWZpbml0ZWx5LlxuY29uc3QgTUFYX0RMUV9SRURSSVZFX0FHRV9TRUMgPSA2ICogNjAgKiA2MDsgLy8gNiBob3Vyc1xuXG4vKiogUGFyc2UgdGhlIFNRUyB0cmlnZ2VyIEFSTiBhbmQgZGVyaXZlIHRoZSBtYWluICsgRExRIEFSTnMgYW5kIHRoZSBETFEgVVJMLiAqL1xuZnVuY3Rpb24gZGVyaXZlUXVldWVzKG1haW5RdWV1ZUFybjogc3RyaW5nIHwgdW5kZWZpbmVkKTogeyByZWdpb246IHN0cmluZzsgbWFpbkFybjogc3RyaW5nOyBkbHFBcm46IHN0cmluZzsgZGxxVXJsOiBzdHJpbmcgfSB8IHVuZGVmaW5lZCB7XG4gIGlmICghbWFpblF1ZXVlQXJuKSByZXR1cm4gdW5kZWZpbmVkO1xuICAvLyBhcm46YXdzOnNxczp7cmVnaW9ufTp7YWNjb3VudH06e25hbWV9XG4gIGNvbnN0IHBhcnRzID0gbWFpblF1ZXVlQXJuLnNwbGl0KCc6Jyk7XG4gIGlmIChwYXJ0cy5sZW5ndGggPCA2IHx8IHBhcnRzWzJdICE9PSAnc3FzJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgWywgLCAsIHJlZ2lvbiwgYWNjb3VudCwgbmFtZV0gPSBwYXJ0cztcbiAgY29uc3QgZGxxQXJuID0gcHJvY2Vzcy5lbnYuRVZFTlRfRExRX0FSTiB8fCBgYXJuOmF3czpzcXM6JHtyZWdpb259OiR7YWNjb3VudH06JHtuYW1lfS1kbHFgO1xuICBjb25zdCBkbHFOYW1lID0gZGxxQXJuLnNwbGl0KCc6JykucG9wKCkgPz8gYCR7bmFtZX0tZGxxYDtcbiAgY29uc3QgZGxxVXJsID0gYGh0dHBzOi8vc3FzLiR7cmVnaW9ufS5hbWF6b25hd3MuY29tLyR7YWNjb3VudH0vJHtkbHFOYW1lfWA7XG4gIHJldHVybiB7IHJlZ2lvbiwgbWFpbkFybjogbWFpblF1ZXVlQXJuLCBkbHFBcm4sIGRscVVybCB9O1xufVxuXG4vKiogU25hcHNob3QgdGhlIERMUSBkZXB0aCArIHRoZSBhZ2UgKHNlY29uZHMpIG9mIGl0cyBvbGRlc3QgbWVzc2FnZSAoZm9yIHRoZVxuICogIHBvaXNvbi1tZXNzYWdlIHJlZHJpdmUgY2VpbGluZykuIE1pc3NpbmcvTmFOIGF0dHJpYnV0ZXMgZmFsbCBiYWNrIHRvIDAuICovXG5hc3luYyBmdW5jdGlvbiBkbHFTdGF0cyhyZWdpb246IHN0cmluZywgZGxxVXJsOiBzdHJpbmcpOiBQcm9taXNlPHsgZGVwdGg6IG51bWJlcjsgb2xkZXN0QWdlU2VjOiBudW1iZXIgfT4ge1xuICBpZiAoIXNxc01vZCkgc3FzTW9kID0gYXdhaXQgbG9hZFNkazxTcXNNb2R1bGU+KCdAYXdzLXNkay9jbGllbnQtc3FzJyk7XG4gIGNvbnN0IGNsaWVudCA9IGF3YWl0IHNxc0NsaWVudChyZWdpb24pO1xuICBjb25zdCBvdXQgPSBhd2FpdCBjbGllbnQuc2VuZChuZXcgc3FzTW9kLkdldFF1ZXVlQXR0cmlidXRlc0NvbW1hbmQoe1xuICAgIFF1ZXVlVXJsOiBkbHFVcmwsXG4gICAgQXR0cmlidXRlTmFtZXM6IFsnQXBwcm94aW1hdGVOdW1iZXJPZk1lc3NhZ2VzJywgJ0FwcHJveGltYXRlQWdlT2ZPbGRlc3RNZXNzYWdlJ10sXG4gIH0pKSBhcyB7IEF0dHJpYnV0ZXM/OiB7IEFwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlcz86IHN0cmluZzsgQXBwcm94aW1hdGVBZ2VPZk9sZGVzdE1lc3NhZ2U/OiBzdHJpbmcgfSB9O1xuICBjb25zdCBuID0gTnVtYmVyKG91dC5BdHRyaWJ1dGVzPy5BcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXMgPz8gJzAnKTtcbiAgY29uc3QgYWdlID0gTnVtYmVyKG91dC5BdHRyaWJ1dGVzPy5BcHByb3hpbWF0ZUFnZU9mT2xkZXN0TWVzc2FnZSA/PyAnMCcpO1xuICByZXR1cm4ge1xuICAgIGRlcHRoOiBOdW1iZXIuaXNGaW5pdGUobikgPyBuIDogMCxcbiAgICBvbGRlc3RBZ2VTZWM6IE51bWJlci5pc0Zpbml0ZShhZ2UpID8gYWdlIDogMCxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFzQWN0aXZlTW92ZVRhc2socmVnaW9uOiBzdHJpbmcsIGRscUFybjogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGlmICghc3FzTW9kKSBzcXNNb2QgPSBhd2FpdCBsb2FkU2RrPFNxc01vZHVsZT4oJ0Bhd3Mtc2RrL2NsaWVudC1zcXMnKTtcbiAgY29uc3QgY2xpZW50ID0gYXdhaXQgc3FzQ2xpZW50KHJlZ2lvbik7XG4gIGNvbnN0IG91dCA9IGF3YWl0IGNsaWVudC5zZW5kKG5ldyBzcXNNb2QuTGlzdE1lc3NhZ2VNb3ZlVGFza3NDb21tYW5kKHsgU291cmNlQXJuOiBkbHFBcm4gfSkpIGFzIHtcbiAgICBSZXN1bHRzPzogQXJyYXk8eyBTdGF0dXM/OiBzdHJpbmcgfT47XG4gIH07XG4gIHJldHVybiAob3V0LlJlc3VsdHMgPz8gW10pLnNvbWUodCA9PiB0LlN0YXR1cyA9PT0gJ1JVTk5JTkcnKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc3RhcnRNb3ZlVGFzayhyZWdpb246IHN0cmluZywgZGxxQXJuOiBzdHJpbmcsIG1haW5Bcm46IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIXNxc01vZCkgc3FzTW9kID0gYXdhaXQgbG9hZFNkazxTcXNNb2R1bGU+KCdAYXdzLXNkay9jbGllbnQtc3FzJyk7XG4gIGNvbnN0IGNsaWVudCA9IGF3YWl0IHNxc0NsaWVudChyZWdpb24pO1xuICBhd2FpdCBjbGllbnQuc2VuZChuZXcgc3FzTW9kLlN0YXJ0TWVzc2FnZU1vdmVUYXNrQ29tbWFuZCh7IFNvdXJjZUFybjogZGxxQXJuLCBEZXN0aW5hdGlvbkFybjogbWFpbkFybiB9KSk7XG59XG5cbi8qKiBQT1NUIG9uZSBvcmcncyBpbmdlc3QtaGVhbHRoIHNpZ25hbC4gUmV0dXJucyB0cnVlIG9ubHkgb24gYSBjb25maXJtZWQgMnh4IHNvIHRoZVxuICogIGNhbGxlciByZXNldHMgdGhhdCBvcmcncyBgZm9yd2FyZGVkYCBjb3VudGVyIE9OTFkgd2hlbiB0aGUgc2lnbmFsIHdhcyBhY2NlcHRlZFxuICogIChhIGRyb3BwZWQvZmFpbGVkIFBPU1QgbXVzdCBub3Qgc2lsZW50bHkgemVybyB0aGUgYWNjdW11bGF0ZWQgY291bnQpLiAqL1xuYXN5bmMgZnVuY3Rpb24gcG9zdEluZ2VzdEhlYWx0aChiYXNlVXJsOiBzdHJpbmcsIGJvZHk6IHsgb3JnSWQ/OiBzdHJpbmc7IGZvcndhcmRlZDogbnVtYmVyOyBkcm9wcGVkOiBudW1iZXI7IGxhc3RFdmVudEF0Pzogc3RyaW5nIH0sIHJlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgdG9rZW4gPSBhd2FpdCBnZXRBdXRoVG9rZW4oKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaFdpdGhUaW1lb3V0KGAke2Jhc2VVcmx9L2FwaS9yZXBvcnRzL2luZ2VzdC1oZWFsdGhgLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJywgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dG9rZW59YCwgLi4uY29ycmVsYXRpb25IZWFkZXJzKHsgcmVxdWVzdElkIH0pIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShib2R5KSxcbiAgICB9KTtcbiAgICBpZiAoIXJlcy5vaykge1xuICAgICAgbG9nLndhcm4oJ2luZ2VzdC1oZWFsdGggUE9TVCByZXR1cm5lZCBub24tMnh4IChpZ25vcmVkKScsIHsgc3RhdHVzOiByZXMuc3RhdHVzLCBvcmdJZDogYm9keS5vcmdJZCB9KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy53YXJuKCdpbmdlc3QtaGVhbHRoIFBPU1QgZmFpbGVkIChpZ25vcmVkKScsIHsgZXJyb3I6IFN0cmluZyhlcnIpLCBvcmdJZDogYm9keS5vcmdJZCB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBUaHJvdHRsZWQsIGJlc3QtZWZmb3J0IHBvc3Qtc3VjY2VzcyB3b3JrOiBlbWl0IHBlci1vcmcgaW5nZXN0LWhlYWx0aCBhbmQgc2VsZi1oZWFsXG4gKiB0aGUgRExRLiBOZXZlciB0aHJvd3MuIGBmb3J3YXJkZWRgL2BsYXN0RXZlbnRBdGAgYWNjdW11bGF0ZSBQRVIgT1JHIGFjcm9zcyBiYXRjaGVzXG4gKiBiZXR3ZWVuIGhlYWx0aCBwb3N0czsgYGRyb3BwZWRgIGlzIHRoZSBzaGFyZWQgZmxlZXQgRExRIGRlcHRoIHNuYXBzaG90LiBBIHBlci1vcmdcbiAqIGNvdW50ZXIgaXMgemVyb2VkIG9ubHkgYWZ0ZXIgdGhhdCBvcmcncyBoZWFsdGggUE9TVCBpcyBjb25maXJtZWQgMnh4LiBgcmVxdWVzdElkYFxuICogaXMgdGhlIGJhdGNoJ3MgcmVxdWVzdCBpZCAoc2VlIGluZGV4LnRzKSwgc2VudCBhcyBgWC1SZXF1ZXN0LUlkYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlcG9ydEhlYWx0aEFuZFJlZHJpdmUoYmFzZVVybDogc3RyaW5nLCBtYWluUXVldWVBcm46IHN0cmluZyB8IHVuZGVmaW5lZCwgcmVxdWVzdElkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgaWYgKG5vdyAtIGxhc3RIZWFsdGhBdCA8IEhFQUxUSF9USFJPVFRMRV9NUykgcmV0dXJuO1xuICBsYXN0SGVhbHRoQXQgPSBub3c7XG4gIHRyeSB7XG4gICAgY29uc3QgcSA9IGRlcml2ZVF1ZXVlcyhtYWluUXVldWVBcm4pO1xuICAgIGxldCBkZXB0aCA9IDA7XG4gICAgbGV0IG9sZGVzdEFnZVNlYyA9IDA7XG4gICAgaWYgKHEpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHN0YXRzID0gYXdhaXQgZGxxU3RhdHMocS5yZWdpb24sIHEuZGxxVXJsKTtcbiAgICAgICAgZGVwdGggPSBzdGF0cy5kZXB0aDtcbiAgICAgICAgb2xkZXN0QWdlU2VjID0gc3RhdHMub2xkZXN0QWdlU2VjO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZy53YXJuKCdETFEgc3RhdHMgY2hlY2sgZmFpbGVkIChpZ25vcmVkKScsIHsgZXJyb3I6IChlcnIgYXMgeyBuYW1lPzogc3RyaW5nIH0pPy5uYW1lID8/IFN0cmluZyhlcnIpIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFBvc3Qgb25lIGhlYWx0aCBzaWduYWwgcGVyIHJlc29sdmVkIG9yZywgYXR0cmlidXRpbmcgaXRzIG93biBmb3J3YXJkZWQgY291bnQgK1xuICAgIC8vIGxhc3QgZXZlbnQgdGltZS4gYGRyb3BwZWRgICh0aGUgc2hhcmVkIGZsZWV0IERMUSBkZXB0aCkgcmlkZXMgYWxvbmcgb24gZWFjaC5cbiAgICAvLyBTbmFwc2hvdCB0aGUga2V5cyBmaXJzdCBzbyB3ZSBkb24ndCBtdXRhdGUgdGhlIG1hcCB3aGlsZSBpdGVyYXRpbmcuXG4gICAgY29uc3Qgb3JnS2V5cyA9IG5ldyBTZXQoWy4uLmZvcndhcmRlZEJ5T3JnLmtleXMoKSwgLi4ubGFzdEV2ZW50QXRCeU9yZy5rZXlzKCldKTtcbiAgICBpZiAob3JnS2V5cy5zaXplID09PSAwKSBvcmdLZXlzLmFkZCgnJyk7IC8vIG5vdGhpbmcgZm9yd2FyZGVkIHlldCDihpIgc3RpbGwgcmVwb3J0IGRlcHRoXG4gICAgZm9yIChjb25zdCBrZXkgb2Ygb3JnS2V5cykge1xuICAgICAgY29uc3QgZm9yd2FyZGVkID0gZm9yd2FyZGVkQnlPcmcuZ2V0KGtleSkgPz8gMDtcbiAgICAgIGNvbnN0IGxhc3RFdmVudEF0ID0gbGFzdEV2ZW50QXRCeU9yZy5nZXQoa2V5KTtcbiAgICAgIGNvbnN0IG9rID0gYXdhaXQgcG9zdEluZ2VzdEhlYWx0aChiYXNlVXJsLCB7XG4gICAgICAgIC4uLihrZXkgPyB7IG9yZ0lkOiBrZXkgfSA6IHt9KSxcbiAgICAgICAgZm9yd2FyZGVkLFxuICAgICAgICBkcm9wcGVkOiBkZXB0aCxcbiAgICAgICAgbGFzdEV2ZW50QXQsXG4gICAgICB9LCByZXF1ZXN0SWQpO1xuICAgICAgLy8gUmVzZXQgdGhlIGZvcndhcmRlZCBjb3VudGVyIE9OTFkgb24gYSBjb25maXJtZWQgMnh4IOKAlCBhIGZhaWxlZC9kcm9wcGVkIFBPU1RcbiAgICAgIC8vIGtlZXBzIHRoZSBjb3VudCBzbyB0aGUgbmV4dCB0aWNrIHJlLXJlcG9ydHMgaXQgaW5zdGVhZCBvZiBsb3NpbmcgaXQuXG4gICAgICBpZiAob2spIGZvcndhcmRlZEJ5T3JnLnNldChrZXksIDApO1xuICAgIH1cblxuICAgIGlmIChxICYmIGRlcHRoID4gMCAmJiBub3cgLSBsYXN0UmVkcml2ZUF0ID49IFJFRFJJVkVfVEhST1RUTEVfTVMpIHtcbiAgICAgIC8vIFBvaXNvbi1tZXNzYWdlIGNlaWxpbmc6IG5ldmVyIHJlZHJpdmUgYSBETFEgd2hvc2Ugb2xkZXN0IG1lc3NhZ2UgaGFzIGFnZWRcbiAgICAgIC8vIHBhc3QgdGhlIGNlaWxpbmcg4oCUIHRoYXQgbWVzc2FnZSBrZWVwcyBmYWlsaW5nIGFuZCB3b3VsZCBsb29wIERMUeKGkm1haW7ihpJETFEuXG4gICAgICBpZiAob2xkZXN0QWdlU2VjID4gTUFYX0RMUV9SRURSSVZFX0FHRV9TRUMpIHtcbiAgICAgICAgbG9nLndhcm4oJ0RMUSBvbGRlc3QgbWVzc2FnZSBleGNlZWRzIHBvaXNvbi1hZ2UgY2VpbGluZyDigJQgc2tpcHBpbmcgcmVkcml2ZSAobmVlZHMgbWFudWFsIGF0dGVudGlvbiknLCB7XG4gICAgICAgICAgZGxxOiBhcm5SZWYocS5kbHFBcm4pLCBkcm9wcGVkOiBkZXB0aCwgb2xkZXN0QWdlU2VjLCBjZWlsaW5nU2VjOiBNQVhfRExRX1JFRFJJVkVfQUdFX1NFQyxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmICghKGF3YWl0IGhhc0FjdGl2ZU1vdmVUYXNrKHEucmVnaW9uLCBxLmRscUFybikpKSB7XG4gICAgICAgICAgICBsYXN0UmVkcml2ZUF0ID0gbm93O1xuICAgICAgICAgICAgYXdhaXQgc3RhcnRNb3ZlVGFzayhxLnJlZ2lvbiwgcS5kbHFBcm4sIHEubWFpbkFybik7XG4gICAgICAgICAgICBsb2cuaW5mbygnU3RhcnRlZCBzZWxmLWhlYWxpbmcgRExR4oaSbWFpbiByZWRyaXZlJywgeyBkbHE6IGFyblJlZihxLmRscUFybiksIGRyb3BwZWQ6IGRlcHRoLCBvbGRlc3RBZ2VTZWMgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBsb2cud2FybignRExRIHJlZHJpdmUgZmFpbGVkIChpZ25vcmVkKScsIHsgZXJyb3I6IChlcnIgYXMgeyBuYW1lPzogc3RyaW5nIH0pPy5uYW1lID8/IFN0cmluZyhlcnIpIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2cud2FybignaGVhbHRoL3JlZHJpdmUgc3RlcCBmYWlsZWQgKGlnbm9yZWQpJywgeyBlcnJvcjogU3RyaW5nKGVycikgfSk7XG4gIH1cbn1cblxuLyoqIENvdW50IGEgZm9yd2FyZGVkIGJhdGNoIHRvd2FyZCBlYWNoIHJlc29sdmVkIG9yZydzIGRlbGl2ZXJ5LWhlYWx0aCByZXBvcnQuICovXG5leHBvcnQgZnVuY3Rpb24gcmVjb3JkRm9yd2FyZGVkKGV2ZW50czogUmVhZG9ubHlBcnJheTx7IG9yZ0lkOiBzdHJpbmcgfCBudWxsOyBjb21wbGV0ZWRBdD86IHN0cmluZzsgc3RhcnRlZEF0Pzogc3RyaW5nIH0+KTogdm9pZCB7XG4gIGZvciAoY29uc3QgZSBvZiBldmVudHMpIHtcbiAgICBjb25zdCBrZXkgPSBlLm9yZ0lkID8/ICcnO1xuICAgIGZvcndhcmRlZEJ5T3JnLnNldChrZXksIChmb3J3YXJkZWRCeU9yZy5nZXQoa2V5KSA/PyAwKSArIDEpO1xuICAgIGNvbnN0IGF0ID0gZS5jb21wbGV0ZWRBdCB8fCBlLnN0YXJ0ZWRBdDtcbiAgICBpZiAoYXQpIHtcbiAgICAgIGNvbnN0IHByZXYgPSBsYXN0RXZlbnRBdEJ5T3JnLmdldChrZXkpO1xuICAgICAgaWYgKCFwcmV2IHx8IGF0ID4gcHJldikgbGFzdEV2ZW50QXRCeU9yZy5zZXQoa2V5LCBhdCk7XG4gICAgfVxuICB9XG59XG5cbi8qKiBAaW50ZXJuYWwgVGVzdC1vbmx5OiBmb3JnZXQgaGVhbHRoIGNvdW50ZXJzIGFuZCB0aHJvdHRsZXMuICovXG5leHBvcnQgZnVuY3Rpb24gX3Jlc2V0SGVhbHRoRm9yVGVzdHMoKTogdm9pZCB7XG4gIGZvcndhcmRlZEJ5T3JnLmNsZWFyKCk7XG4gIGxhc3RFdmVudEF0QnlPcmcuY2xlYXIoKTtcbiAgbGFzdEhlYWx0aEF0ID0gMDtcbiAgbGFzdFJlZHJpdmVBdCA9IDA7XG59XG4iXX0=
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhbHRoLmpzIiwic291cmNlcyI6WyIuLi9zcmMvaGVhbHRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDbkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBeUJsRyxJQUFJLE1BQTZCLENBQUM7QUFDbEMsSUFBSSxrQkFBMEQsQ0FBQztBQUMvRCxLQUFLLFVBQVUsU0FBUyxDQUFDLE1BQWM7SUFDckMsSUFBSSxDQUFDLE1BQU07UUFBRSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQVkscUJBQXFCLENBQUMsQ0FBQztJQUN0RSxJQUFJLENBQUMsa0JBQWtCO1FBQUUsa0JBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN4RCxJQUFJLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDMUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELHFGQUFxRjtBQUNyRixrRkFBa0Y7QUFDbEYsbUZBQW1GO0FBQ25GLG9GQUFvRjtBQUNwRixzRkFBc0Y7QUFDdEYsTUFBTSxjQUFjLEdBQUcsSUFBSSxVQUFVLENBQWlCLGlCQUFpQixDQUFDLENBQUM7QUFDekUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLFVBQVUsQ0FB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Q0FBQyxJQUFJLENBQUMsc0NBQXNDLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0FBQ0gsQ0FBQztBQUVELGlGQUFpRjtBQUNqRixNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQXlGO0lBQ3ZILEtBQUssTUFBTSxDQUFDLElBQUksTUFBTSxFQUFFLENBQUM7UUFDdkIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDMUIsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzVELE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN4QyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ1AsTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxHQUFHLElBQUk7Z0JBQUUsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4RCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxpRUFBaUU7QUFDakUsTUFBTSxVQUFVLG9CQUFvQjtJQUNsQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsWUFBWSxHQUFHLENBQUMsQ0FBQztJQUNqQixhQUFhLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgY29ycmVsYXRpb25IZWFkZXJzIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtY29yZS9saWIvY29yZS9hdWRpdC1jb3JyZWxhdGlvbi5qcyc7XG5pbXBvcnQgeyBnZXRBdXRoVG9rZW4gfSBmcm9tICcuL2F1dGguanMnO1xuaW1wb3J0IHsgYXJuUmVmLCBCb3VuZGVkTWFwLCBDQUNIRV9NQVhfRU5UUklFUywgZmV0Y2hXaXRoVGltZW91dCwgbG9hZFNkaywgbG9nIH0gZnJvbSAnLi91dGlsLmpzJztcblxuLy8gRGVsaXZlcnkgaGVhbHRoICsgc2VsZi1oZWFsaW5nIERMUSByZWRyaXZlLlxuLy8gQWZ0ZXIgYSBTVUNDRVNTRlVMIGJhdGNoIFBPU1Qgd2UgKHRocm90dGxlZCwgYmVzdC1lZmZvcnQpOlxuLy8gICAxLiBQT1NUIGFuIGluZ2VzdC1oZWFsdGggc2lnbmFsIHRvIC9hcGkvcmVwb3J0cy9pbmdlc3QtaGVhbHRoIHNvIHRoZSBSZXBvcnRzIFVJXG4vLyAgICAgIGNhbiBzaG93IGZsb3dpbmcgLyBzdGFsZSAvIGRyb3BwaW5nLlxuLy8gICAyLiBJZiB0aGUgRExRIGlzIG5vbi1lbXB0eSwgbm8gbW92ZSB0YXNrIGlzIGFscmVhZHkgcnVubmluZywgQU5EIHRoZSBvbGRlc3QgRExRXG4vLyAgICAgIG1lc3NhZ2UgaXMgeW91bmdlciB0aGFuIHRoZSBwb2lzb24tYWdlIGNlaWxpbmcsIGtpY2sgb2ZmIGFuIFNRU1xuLy8gICAgICBNZXNzYWdlTW92ZVRhc2sgKERMUSDihpIgbWFpbiBxdWV1ZSkgc28gcmV0cnlhYmxlIGZhaWx1cmVzIHNlbGYtaGVhbCB3aXRob3V0IGFcbi8vICAgICAgbmV3IEFXUyBzZXJ2aWNlLiBUaGUgcmVwb3J0aW5nIGluZ2VzdCdzIHBhcnRpYWwtdW5pcXVlIGluZGV4IGRlZHVwZXMgYW55XG4vLyAgICAgIHJlZGVsaXZlcmVkIGV2ZW50LCBzbyBhIHJlZHJpdmUgY2FuJ3QgZG91YmxlLWNvdW50LlxuLy8gR3VhcmRzOiBvbmx5IG9uIHN1Y2Nlc3MsIG9uZS1hdC1hLXRpbWUgKExpc3RNZXNzYWdlTW92ZVRhc2tzKSwgYSBwb2lzb24tYWdlIGNlaWxpbmdcbi8vIChzbyBhIG1lc3NhZ2UgdGhhdCBhbHdheXMgZmFpbHMgY2FuJ3QgbG9vcCBETFHihpJtYWlu4oaSRExRIGZvcmV2ZXIpLCBhbmQgdGhyb3R0bGVkIHZpYVxuLy8gbW9kdWxlIHRpbWVzdGFtcHMuIE5FVkVSIHRocm93cyDigJQgYSBmYWlsdXJlIGhlcmUgbXVzdCBub3QgZmFpbCB0aGUgYmF0Y2guXG4vL1xuLy8gSUFNIHJlcXVpcmVkIChkb2N1bWVudCBvbmx5IOKAlCBncmFudGVkIG9uIHRoZSBldmVudHMgc3RhY2spOlxuLy8gICBzcXM6R2V0UXVldWVBdHRyaWJ1dGVzLCBzcXM6TGlzdE1lc3NhZ2VNb3ZlVGFza3MsIHNxczpTdGFydE1lc3NhZ2VNb3ZlVGFzayAob24gdGhlIERMUSlcblxuaW50ZXJmYWNlIFNxc0NsaWVudExpa2UgeyBzZW5kKGNvbW1hbmQ6IHVua25vd24pOiBQcm9taXNlPHVua25vd24+IH1cbmludGVyZmFjZSBTcXNNb2R1bGUge1xuICBTUVNDbGllbnQ6IG5ldyAoY29uZmlnOiB7IHJlZ2lvbjogc3RyaW5nIH0pID0+IFNxc0NsaWVudExpa2U7XG4gIEdldFF1ZXVlQXR0cmlidXRlc0NvbW1hbmQ6IG5ldyAoaW5wdXQ6IHsgUXVldWVVcmw6IHN0cmluZzsgQXR0cmlidXRlTmFtZXM6IHN0cmluZ1tdIH0pID0+IHVua25vd247XG4gIExpc3RNZXNzYWdlTW92ZVRhc2tzQ29tbWFuZDogbmV3IChpbnB1dDogeyBTb3VyY2VBcm46IHN0cmluZyB9KSA9PiB1bmtub3duO1xuICBTdGFydE1lc3NhZ2VNb3ZlVGFza0NvbW1hbmQ6IG5ldyAoaW5wdXQ6IHsgU291cmNlQXJuOiBzdHJpbmc7IERlc3RpbmF0aW9uQXJuPzogc3RyaW5nIH0pID0+IHVua25vd247XG59XG5sZXQgc3FzTW9kOiBTcXNNb2R1bGUgfCB1bmRlZmluZWQ7XG5sZXQgc3FzQ2xpZW50c0J5UmVnaW9uOiBNYXA8c3RyaW5nLCBTcXNDbGllbnRMaWtlPiB8IHVuZGVmaW5lZDtcbmFzeW5jIGZ1bmN0aW9uIHNxc0NsaWVudChyZWdpb246IHN0cmluZyk6IFByb21pc2U8U3FzQ2xpZW50TGlrZT4ge1xuICBpZiAoIXNxc01vZCkgc3FzTW9kID0gYXdhaXQgbG9hZFNkazxTcXNNb2R1bGU+KCdAYXdzLXNkay9jbGllbnQtc3FzJyk7XG4gIGlmICghc3FzQ2xpZW50c0J5UmVnaW9uKSBzcXNDbGllbnRzQnlSZWdpb24gPSBuZXcgTWFwKCk7XG4gIGxldCBjbGllbnQgPSBzcXNDbGllbnRzQnlSZWdpb24uZ2V0KHJlZ2lvbik7XG4gIGlmICghY2xpZW50KSB7XG4gICAgY2xpZW50ID0gbmV3IHNxc01vZC5TUVNDbGllbnQoeyByZWdpb24gfSk7XG4gICAgc3FzQ2xpZW50c0J5UmVnaW9uLnNldChyZWdpb24sIGNsaWVudCk7XG4gIH1cbiAgcmV0dXJuIGNsaWVudDtcbn1cblxuLy8gRGVsaXZlcnktaGVhbHRoIGNvdW50ZXJzIGFyZSBhdHRyaWJ1dGVkIFBFUiBSRVNPTFZFRCBPUkcgKHRoZSBmb3J3YXJkZXIgaXMgYSBmbGVldFxuLy8gTGFtYmRhIHNlcnZpbmcgbWFueSBvcmdzOyBhIHNpbmdsZSBnbG9iYWwgY291bnRlciB3b3VsZCBtaXMtYXR0cmlidXRlIG9uZSBvcmcnc1xuLy8gdGhyb3VnaHB1dCB0byBhbm90aGVyKS4gS2V5ZWQgYnkgb3JnSWQgKCcnIGJ1Y2tldCA9IHBpcGVsaW5lIHdpdGggbm8gT3JnSWQgdGFnKS5cbi8vIFRoZSBETFEgZGVwdGggKGBkcm9wcGVkYCkgaXMgZ2VudWluZWx5IGZsZWV0LWdsb2JhbCDigJQgb25lIHNoYXJlZCBETFEg4oCUIHNvIGl0IGlzIGFcbi8vIHNpbmdsZSBzbmFwc2hvdCBwb3N0ZWQgYWxvbmdzaWRlIGVhY2ggb3JnJ3MgaGVhbHRoLCBkb2N1bWVudGVkIGFzIHRoZSBzaGFyZWQgZGVwdGguXG5jb25zdCBmb3J3YXJkZWRCeU9yZyA9IG5ldyBCb3VuZGVkTWFwPHN0cmluZywgbnVtYmVyPihDQUNIRV9NQVhfRU5UUklFUyk7XG5jb25zdCBsYXN0RXZlbnRBdEJ5T3JnID0gbmV3IEJvdW5kZWRNYXA8c3RyaW5nLCBzdHJpbmc+KENBQ0hFX01BWF9FTlRSSUVTKTtcbmxldCBsYXN0SGVhbHRoQXQgPSAwO1xubGV0IGxhc3RSZWRyaXZlQXQgPSAwO1xuY29uc3QgSEVBTFRIX1RIUk9UVExFX01TID0gNjAgKiAxMDAwO1xuY29uc3QgUkVEUklWRV9USFJPVFRMRV9NUyA9IDUgKiA2MCAqIDEwMDA7XG4vLyBQb2lzb24tbWVzc2FnZSBjZWlsaW5nOiBpZiB0aGUgb2xkZXN0IERMUSBtZXNzYWdlIGlzIG9sZGVyIHRoYW4gdGhpcywgd2UgU1RPUFxuLy8gcmVkcml2aW5nIGl0IChETFHihpJtYWlu4oaSZmFpbOKGkkRMUSB3b3VsZCBsb29wIGZvcmV2ZXIpLiBTdWNoIG1lc3NhZ2VzIGFyZSBsZWZ0IGZvciBhblxuLy8gYWxhcm0gLyBtYW51YWwgaW5zcGVjdGlvbiBpbnN0ZWFkIG9mIGNodXJuaW5nIHRoZSBmbGVldCBpbmRlZmluaXRlbHkuXG5jb25zdCBNQVhfRExRX1JFRFJJVkVfQUdFX1NFQyA9IDYgKiA2MCAqIDYwOyAvLyA2IGhvdXJzXG5cbi8qKiBQYXJzZSB0aGUgU1FTIHRyaWdnZXIgQVJOIGFuZCBkZXJpdmUgdGhlIG1haW4gKyBETFEgQVJOcyBhbmQgdGhlIERMUSBVUkwuICovXG5mdW5jdGlvbiBkZXJpdmVRdWV1ZXMobWFpblF1ZXVlQXJuOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB7IHJlZ2lvbjogc3RyaW5nOyBtYWluQXJuOiBzdHJpbmc7IGRscUFybjogc3RyaW5nOyBkbHFVcmw6IHN0cmluZyB9IHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFtYWluUXVldWVBcm4pIHJldHVybiB1bmRlZmluZWQ7XG4gIC8vIGFybjphd3M6c3FzOntyZWdpb259OnthY2NvdW50fTp7bmFtZX1cbiAgY29uc3QgcGFydHMgPSBtYWluUXVldWVBcm4uc3BsaXQoJzonKTtcbiAgaWYgKHBhcnRzLmxlbmd0aCA8IDYgfHwgcGFydHNbMl0gIT09ICdzcXMnKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBbLCAsICwgcmVnaW9uLCBhY2NvdW50LCBuYW1lXSA9IHBhcnRzO1xuICBjb25zdCBkbHFBcm4gPSBwcm9jZXNzLmVudi5FVkVOVF9ETFFfQVJOIHx8IGBhcm46YXdzOnNxczoke3JlZ2lvbn06JHthY2NvdW50fToke25hbWV9LWRscWA7XG4gIGNvbnN0IGRscU5hbWUgPSBkbHFBcm4uc3BsaXQoJzonKS5wb3AoKSA/PyBgJHtuYW1lfS1kbHFgO1xuICBjb25zdCBkbHFVcmwgPSBgaHR0cHM6Ly9zcXMuJHtyZWdpb259LmFtYXpvbmF3cy5jb20vJHthY2NvdW50fS8ke2RscU5hbWV9YDtcbiAgcmV0dXJuIHsgcmVnaW9uLCBtYWluQXJuOiBtYWluUXVldWVBcm4sIGRscUFybiwgZGxxVXJsIH07XG59XG5cbi8qKiBTbmFwc2hvdCB0aGUgRExRIGRlcHRoICsgdGhlIGFnZSAoc2Vjb25kcykgb2YgaXRzIG9sZGVzdCBtZXNzYWdlIChmb3IgdGhlXG4gKiAgcG9pc29uLW1lc3NhZ2UgcmVkcml2ZSBjZWlsaW5nKS4gTWlzc2luZy9OYU4gYXR0cmlidXRlcyBmYWxsIGJhY2sgdG8gMC4gKi9cbmFzeW5jIGZ1bmN0aW9uIGRscVN0YXRzKHJlZ2lvbjogc3RyaW5nLCBkbHFVcmw6IHN0cmluZyk6IFByb21pc2U8eyBkZXB0aDogbnVtYmVyOyBvbGRlc3RBZ2VTZWM6IG51bWJlciB9PiB7XG4gIGlmICghc3FzTW9kKSBzcXNNb2QgPSBhd2FpdCBsb2FkU2RrPFNxc01vZHVsZT4oJ0Bhd3Mtc2RrL2NsaWVudC1zcXMnKTtcbiAgY29uc3QgY2xpZW50ID0gYXdhaXQgc3FzQ2xpZW50KHJlZ2lvbik7XG4gIGNvbnN0IG91dCA9IGF3YWl0IGNsaWVudC5zZW5kKG5ldyBzcXNNb2QuR2V0UXVldWVBdHRyaWJ1dGVzQ29tbWFuZCh7XG4gICAgUXVldWVVcmw6IGRscVVybCxcbiAgICBBdHRyaWJ1dGVOYW1lczogWydBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXMnLCAnQXBwcm94aW1hdGVBZ2VPZk9sZGVzdE1lc3NhZ2UnXSxcbiAgfSkpIGFzIHsgQXR0cmlidXRlcz86IHsgQXBwcm94aW1hdGVOdW1iZXJPZk1lc3NhZ2VzPzogc3RyaW5nOyBBcHByb3hpbWF0ZUFnZU9mT2xkZXN0TWVzc2FnZT86IHN0cmluZyB9IH07XG4gIGNvbnN0IG4gPSBOdW1iZXIob3V0LkF0dHJpYnV0ZXM/LkFwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlcyA/PyAnMCcpO1xuICBjb25zdCBhZ2UgPSBOdW1iZXIob3V0LkF0dHJpYnV0ZXM/LkFwcHJveGltYXRlQWdlT2ZPbGRlc3RNZXNzYWdlID8/ICcwJyk7XG4gIHJldHVybiB7XG4gICAgZGVwdGg6IE51bWJlci5pc0Zpbml0ZShuKSA/IG4gOiAwLFxuICAgIG9sZGVzdEFnZVNlYzogTnVtYmVyLmlzRmluaXRlKGFnZSkgPyBhZ2UgOiAwLFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYXNBY3RpdmVNb3ZlVGFzayhyZWdpb246IHN0cmluZywgZGxxQXJuOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgaWYgKCFzcXNNb2QpIHNxc01vZCA9IGF3YWl0IGxvYWRTZGs8U3FzTW9kdWxlPignQGF3cy1zZGsvY2xpZW50LXNxcycpO1xuICBjb25zdCBjbGllbnQgPSBhd2FpdCBzcXNDbGllbnQocmVnaW9uKTtcbiAgY29uc3Qgb3V0ID0gYXdhaXQgY2xpZW50LnNlbmQobmV3IHNxc01vZC5MaXN0TWVzc2FnZU1vdmVUYXNrc0NvbW1hbmQoeyBTb3VyY2VBcm46IGRscUFybiB9KSkgYXMge1xuICAgIFJlc3VsdHM/OiBBcnJheTx7IFN0YXR1cz86IHN0cmluZyB9PjtcbiAgfTtcbiAgcmV0dXJuIChvdXQuUmVzdWx0cyA/PyBbXSkuc29tZSh0ID0+IHQuU3RhdHVzID09PSAnUlVOTklORycpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzdGFydE1vdmVUYXNrKHJlZ2lvbjogc3RyaW5nLCBkbHFBcm46IHN0cmluZywgbWFpbkFybjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghc3FzTW9kKSBzcXNNb2QgPSBhd2FpdCBsb2FkU2RrPFNxc01vZHVsZT4oJ0Bhd3Mtc2RrL2NsaWVudC1zcXMnKTtcbiAgY29uc3QgY2xpZW50ID0gYXdhaXQgc3FzQ2xpZW50KHJlZ2lvbik7XG4gIGF3YWl0IGNsaWVudC5zZW5kKG5ldyBzcXNNb2QuU3RhcnRNZXNzYWdlTW92ZVRhc2tDb21tYW5kKHsgU291cmNlQXJuOiBkbHFBcm4sIERlc3RpbmF0aW9uQXJuOiBtYWluQXJuIH0pKTtcbn1cblxuLyoqIFBPU1Qgb25lIG9yZydzIGluZ2VzdC1oZWFsdGggc2lnbmFsLiBSZXR1cm5zIHRydWUgb25seSBvbiBhIGNvbmZpcm1lZCAyeHggc28gdGhlXG4gKiAgY2FsbGVyIHJlc2V0cyB0aGF0IG9yZydzIGBmb3J3YXJkZWRgIGNvdW50ZXIgT05MWSB3aGVuIHRoZSBzaWduYWwgd2FzIGFjY2VwdGVkXG4gKiAgKGEgZHJvcHBlZC9mYWlsZWQgUE9TVCBtdXN0IG5vdCBzaWxlbnRseSB6ZXJvIHRoZSBhY2N1bXVsYXRlZCBjb3VudCkuICovXG5hc3luYyBmdW5jdGlvbiBwb3N0SW5nZXN0SGVhbHRoKGJhc2VVcmw6IHN0cmluZywgYm9keTogeyBvcmdJZD86IHN0cmluZzsgZm9yd2FyZGVkOiBudW1iZXI7IGRyb3BwZWQ6IG51bWJlcjsgbGFzdEV2ZW50QXQ/OiBzdHJpbmcgfSwgcmVxdWVzdElkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB0b2tlbiA9IGF3YWl0IGdldEF1dGhUb2tlbigpO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoV2l0aFRpbWVvdXQoYCR7YmFzZVVybH0vYXBpL3JlcG9ydHMvaW5nZXN0LWhlYWx0aGAsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHt0b2tlbn1gLCAuLi5jb3JyZWxhdGlvbkhlYWRlcnMoeyByZXF1ZXN0SWQgfSkgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGJvZHkpLFxuICAgIH0pO1xuICAgIGlmICghcmVzLm9rKSB7XG4gICAgICBsb2cud2FybignaW5nZXN0LWhlYWx0aCBQT1NUIHJldHVybmVkIG5vbi0yeHggKGlnbm9yZWQpJywgeyBzdGF0dXM6IHJlcy5zdGF0dXMsIG9yZ0lkOiBib2R5Lm9yZ0lkIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLndhcm4oJ2luZ2VzdC1oZWFsdGggUE9TVCBmYWlsZWQgKGlnbm9yZWQpJywgeyBlcnJvcjogU3RyaW5nKGVyciksIG9yZ0lkOiBib2R5Lm9yZ0lkIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFRocm90dGxlZCwgYmVzdC1lZmZvcnQgcG9zdC1zdWNjZXNzIHdvcms6IGVtaXQgcGVyLW9yZyBpbmdlc3QtaGVhbHRoIGFuZCBzZWxmLWhlYWxcbiAqIHRoZSBETFEuIE5ldmVyIHRocm93cy4gYGZvcndhcmRlZGAvYGxhc3RFdmVudEF0YCBhY2N1bXVsYXRlIFBFUiBPUkcgYWNyb3NzIGJhdGNoZXNcbiAqIGJldHdlZW4gaGVhbHRoIHBvc3RzOyBgZHJvcHBlZGAgaXMgdGhlIHNoYXJlZCBmbGVldCBETFEgZGVwdGggc25hcHNob3QuIEEgcGVyLW9yZ1xuICogY291bnRlciBpcyB6ZXJvZWQgb25seSBhZnRlciB0aGF0IG9yZydzIGhlYWx0aCBQT1NUIGlzIGNvbmZpcm1lZCAyeHguIGByZXF1ZXN0SWRgXG4gKiBpcyB0aGUgYmF0Y2gncyByZXF1ZXN0IGlkIChzZWUgaW5kZXgudHMpLCBzZW50IGFzIGBYLVJlcXVlc3QtSWRgLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVwb3J0SGVhbHRoQW5kUmVkcml2ZShiYXNlVXJsOiBzdHJpbmcsIG1haW5RdWV1ZUFybjogc3RyaW5nIHwgdW5kZWZpbmVkLCByZXF1ZXN0SWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICBpZiAobm93IC0gbGFzdEhlYWx0aEF0IDwgSEVBTFRIX1RIUk9UVExFX01TKSByZXR1cm47XG4gIGxhc3RIZWFsdGhBdCA9IG5vdztcbiAgdHJ5IHtcbiAgICBjb25zdCBxID0gZGVyaXZlUXVldWVzKG1haW5RdWV1ZUFybik7XG4gICAgbGV0IGRlcHRoID0gMDtcbiAgICBsZXQgb2xkZXN0QWdlU2VjID0gMDtcbiAgICBpZiAocSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgc3RhdHMgPSBhd2FpdCBkbHFTdGF0cyhxLnJlZ2lvbiwgcS5kbHFVcmwpO1xuICAgICAgICBkZXB0aCA9IHN0YXRzLmRlcHRoO1xuICAgICAgICBvbGRlc3RBZ2VTZWMgPSBzdGF0cy5vbGRlc3RBZ2VTZWM7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgbG9nLndhcm4oJ0RMUSBzdGF0cyBjaGVjayBmYWlsZWQgKGlnbm9yZWQpJywgeyBlcnJvcjogKGVyciBhcyB7IG5hbWU/OiBzdHJpbmcgfSk/Lm5hbWUgPz8gU3RyaW5nKGVycikgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUG9zdCBvbmUgaGVhbHRoIHNpZ25hbCBwZXIgcmVzb2x2ZWQgb3JnLCBhdHRyaWJ1dGluZyBpdHMgb3duIGZvcndhcmRlZCBjb3VudCArXG4gICAgLy8gbGFzdCBldmVudCB0aW1lLiBgZHJvcHBlZGAgKHRoZSBzaGFyZWQgZmxlZXQgRExRIGRlcHRoKSByaWRlcyBhbG9uZyBvbiBlYWNoLlxuICAgIC8vIFNuYXBzaG90IHRoZSBrZXlzIGZpcnN0IHNvIHdlIGRvbid0IG11dGF0ZSB0aGUgbWFwIHdoaWxlIGl0ZXJhdGluZy5cbiAgICBjb25zdCBvcmdLZXlzID0gbmV3IFNldChbLi4uZm9yd2FyZGVkQnlPcmcua2V5cygpLCAuLi5sYXN0RXZlbnRBdEJ5T3JnLmtleXMoKV0pO1xuICAgIGlmIChvcmdLZXlzLnNpemUgPT09IDApIG9yZ0tleXMuYWRkKCcnKTsgLy8gbm90aGluZyBmb3J3YXJkZWQgeWV0IOKGkiBzdGlsbCByZXBvcnQgZGVwdGhcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBvcmdLZXlzKSB7XG4gICAgICBjb25zdCBmb3J3YXJkZWQgPSBmb3J3YXJkZWRCeU9yZy5nZXQoa2V5KSA/PyAwO1xuICAgICAgY29uc3QgbGFzdEV2ZW50QXQgPSBsYXN0RXZlbnRBdEJ5T3JnLmdldChrZXkpO1xuICAgICAgY29uc3Qgb2sgPSBhd2FpdCBwb3N0SW5nZXN0SGVhbHRoKGJhc2VVcmwsIHtcbiAgICAgICAgLi4uKGtleSA/IHsgb3JnSWQ6IGtleSB9IDoge30pLFxuICAgICAgICBmb3J3YXJkZWQsXG4gICAgICAgIGRyb3BwZWQ6IGRlcHRoLFxuICAgICAgICBsYXN0RXZlbnRBdCxcbiAgICAgIH0sIHJlcXVlc3RJZCk7XG4gICAgICAvLyBSZXNldCB0aGUgZm9yd2FyZGVkIGNvdW50ZXIgT05MWSBvbiBhIGNvbmZpcm1lZCAyeHgg4oCUIGEgZmFpbGVkL2Ryb3BwZWQgUE9TVFxuICAgICAgLy8ga2VlcHMgdGhlIGNvdW50IHNvIHRoZSBuZXh0IHRpY2sgcmUtcmVwb3J0cyBpdCBpbnN0ZWFkIG9mIGxvc2luZyBpdC5cbiAgICAgIGlmIChvaykgZm9yd2FyZGVkQnlPcmcuc2V0KGtleSwgMCk7XG4gICAgfVxuXG4gICAgaWYgKHEgJiYgZGVwdGggPiAwICYmIG5vdyAtIGxhc3RSZWRyaXZlQXQgPj0gUkVEUklWRV9USFJPVFRMRV9NUykge1xuICAgICAgLy8gUG9pc29uLW1lc3NhZ2UgY2VpbGluZzogbmV2ZXIgcmVkcml2ZSBhIERMUSB3aG9zZSBvbGRlc3QgbWVzc2FnZSBoYXMgYWdlZFxuICAgICAgLy8gcGFzdCB0aGUgY2VpbGluZyDigJQgdGhhdCBtZXNzYWdlIGtlZXBzIGZhaWxpbmcgYW5kIHdvdWxkIGxvb3AgRExR4oaSbWFpbuKGkkRMUS5cbiAgICAgIGlmIChvbGRlc3RBZ2VTZWMgPiBNQVhfRExRX1JFRFJJVkVfQUdFX1NFQykge1xuICAgICAgICBsb2cud2FybignRExRIG9sZGVzdCBtZXNzYWdlIGV4Y2VlZHMgcG9pc29uLWFnZSBjZWlsaW5nIOKAlCBza2lwcGluZyByZWRyaXZlIChuZWVkcyBtYW51YWwgYXR0ZW50aW9uKScsIHtcbiAgICAgICAgICBkbHE6IGFyblJlZihxLmRscUFybiksIGRyb3BwZWQ6IGRlcHRoLCBvbGRlc3RBZ2VTZWMsIGNlaWxpbmdTZWM6IE1BWF9ETFFfUkVEUklWRV9BR0VfU0VDLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKCEoYXdhaXQgaGFzQWN0aXZlTW92ZVRhc2socS5yZWdpb24sIHEuZGxxQXJuKSkpIHtcbiAgICAgICAgICAgIGxhc3RSZWRyaXZlQXQgPSBub3c7XG4gICAgICAgICAgICBhd2FpdCBzdGFydE1vdmVUYXNrKHEucmVnaW9uLCBxLmRscUFybiwgcS5tYWluQXJuKTtcbiAgICAgICAgICAgIGxvZy5pbmZvKCdTdGFydGVkIHNlbGYtaGVhbGluZyBETFHihpJtYWluIHJlZHJpdmUnLCB7IGRscTogYXJuUmVmKHEuZGxxQXJuKSwgZHJvcHBlZDogZGVwdGgsIG9sZGVzdEFnZVNlYyB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGxvZy53YXJuKCdETFEgcmVkcml2ZSBmYWlsZWQgKGlnbm9yZWQpJywgeyBlcnJvcjogKGVyciBhcyB7IG5hbWU/OiBzdHJpbmcgfSk/Lm5hbWUgPz8gU3RyaW5nKGVycikgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy53YXJuKCdoZWFsdGgvcmVkcml2ZSBzdGVwIGZhaWxlZCAoaWdub3JlZCknLCB7IGVycm9yOiBTdHJpbmcoZXJyKSB9KTtcbiAgfVxufVxuXG4vKiogQ291bnQgYSBmb3J3YXJkZWQgYmF0Y2ggdG93YXJkIGVhY2ggcmVzb2x2ZWQgb3JnJ3MgZGVsaXZlcnktaGVhbHRoIHJlcG9ydC4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWNvcmRGb3J3YXJkZWQoZXZlbnRzOiBSZWFkb25seUFycmF5PHsgb3JnSWQ6IHN0cmluZyB8IG51bGw7IGNvbXBsZXRlZEF0Pzogc3RyaW5nOyBzdGFydGVkQXQ/OiBzdHJpbmcgfT4pOiB2b2lkIHtcbiAgZm9yIChjb25zdCBlIG9mIGV2ZW50cykge1xuICAgIGNvbnN0IGtleSA9IGUub3JnSWQgPz8gJyc7XG4gICAgZm9yd2FyZGVkQnlPcmcuc2V0KGtleSwgKGZvcndhcmRlZEJ5T3JnLmdldChrZXkpID8/IDApICsgMSk7XG4gICAgY29uc3QgYXQgPSBlLmNvbXBsZXRlZEF0IHx8IGUuc3RhcnRlZEF0O1xuICAgIGlmIChhdCkge1xuICAgICAgY29uc3QgcHJldiA9IGxhc3RFdmVudEF0QnlPcmcuZ2V0KGtleSk7XG4gICAgICBpZiAoIXByZXYgfHwgYXQgPiBwcmV2KSBsYXN0RXZlbnRBdEJ5T3JnLnNldChrZXksIGF0KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqIEBpbnRlcm5hbCBUZXN0LW9ubHk6IGZvcmdldCBoZWFsdGggY291bnRlcnMgYW5kIHRocm90dGxlcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBfcmVzZXRIZWFsdGhGb3JUZXN0cygpOiB2b2lkIHtcbiAgZm9yd2FyZGVkQnlPcmcuY2xlYXIoKTtcbiAgbGFzdEV2ZW50QXRCeU9yZy5jbGVhcigpO1xuICBsYXN0SGVhbHRoQXQgPSAwO1xuICBsYXN0UmVkcml2ZUF0ID0gMDtcbn1cbiJdfQ==
package/lib/index.js CHANGED
@@ -120,7 +120,6 @@ function fetchWithTimeout(url, init = {}, timeoutMs = FETCH_TIMEOUT_MS) {
120
120
 
121
121
  // src/auth.ts
122
122
  var TOKEN_REFRESH_FRACTION = 0.8;
123
- var MIN_TOKEN_CACHE_MS = 3e4;
124
123
  var EXCHANGE_TIMEOUT_MS = 5e3;
125
124
  var credential = createPlatformCredential({
126
125
  secretName: () => process.env.PLATFORM_SECRET_NAME,
@@ -151,7 +150,7 @@ async function getAuthToken() {
151
150
  if (!accessToken) throw new Error("Access-key exchange returned no access token");
152
151
  const ttlMs = (typeof body.data?.expiresIn === "number" && body.data.expiresIn > 0 ? body.data.expiresIn : 300) * 1e3;
153
152
  cachedToken = accessToken;
154
- cachedTokenExpiresAt = Date.now() + Math.max(MIN_TOKEN_CACHE_MS, ttlMs * TOKEN_REFRESH_FRACTION);
153
+ cachedTokenExpiresAt = Date.now() + ttlMs * TOKEN_REFRESH_FRACTION;
155
154
  log.info("Exchanged the stored service-account key for a platform token");
156
155
  return accessToken;
157
156
  }
package/lib/parse.js CHANGED
@@ -199,4 +199,4 @@ export async function parseRecord(record) {
199
199
  detail,
200
200
  };
201
201
  }
202
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGFyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUd0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBNERoQywrRUFBK0U7QUFDL0UsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDO0FBRTFCLG9FQUFvRTtBQUNwRSxTQUFTLFFBQVEsQ0FBQyxDQUFVO0lBQzFCLE9BQU8sT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3ZGLENBQUM7QUFFRCxrRkFBa0Y7QUFDbEYsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFFL0IsNEVBQTRFO0FBQzVFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0FBRTlCLDZFQUE2RTtBQUM3RSxTQUFTLFNBQVMsQ0FBQyxHQUFHLElBQWU7SUFDbkMsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNu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QUFFLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDbEcsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDdkMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVELE9BQU87UUFDTCxLQUFLO1FBQ0wsVUFBVTtRQUNWLFdBQVc7UUFDWCxTQUFTO1FBQ1QsTUFBTSxFQUFFLEtBQUs7UUFDYixXQUFXO1FBQ1gsU0FBUztRQUNULFVBQVU7UUFDVixZQUFZO1FBQ1osU0FBUztRQUNULFdBQVc7UUFDWCxVQUFVO1FBQ1YsR0FBRyxDQUFDLFNBQVMsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQy9CLEdBQUcsQ0FBQyxTQUFTLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUMvQixHQUFHLENBQUMsZUFBZSxJQUFJLEVBQUUsZUFBZSxFQUFFLENBQUM7UUFDM0MsR0FBRyxDQUFDLFdBQVcsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ25DLEdBQUcsQ0FBQyxXQUFXLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUNuQyxHQUFHLENBQUMsV0FBVyxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDbkMsR0FBRyxDQUFDLGFBQWEsSUFBSSxFQUFFLGFBQWEsRUFBRSxDQUFDO1FBQ3ZDLEdBQUcsQ0FBQyxlQUFlLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQztRQUMzQyxNQUFNO0tBQ1AsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBTUVNSZWNvcmQgfSBmcm9tICdhd3MtbGFtYmRhJztcbmltcG9ydCB7IGNvZGVCdWlsZElkT2YsIHJlYWRCdWlsZENvbXB1dGUsIHJlYWRTeW50aEZhaWx1cmUgfSBmcm9tICcuL2ZhaWx1cmUtcmVhc29uLmpzJztcbmltcG9ydCB7IGNsYXNzaWZ5U291cmNlLCByZXNvbHZlQ29tbWl0SW5mbyB9IGZyb20gJy4vc2NtLmpzJztcbmltcG9ydCB7IE1BWF9BVFRSLCByZXNvbHZlUGlwZWxpbmUgfSBmcm9tICcuL3RhZ3MuanMnO1xuaW1wb3J0IHsgbG9nIH0gZnJvbSAnLi91dGlsLmpzJztcblxuLy8gRXZlbnQgcGFyc2luZzogYW4gU1FTIHJlY29yZCDihpIgdGhlIG5vcm1hbGl6ZWQgcmVwb3J0aW5nIGV2ZW50LlxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZEV2ZW50IHtcbiAgLyoqXG4gICAqIFJlc29sdmVkIHBsYXRmb3JtIG9yZ0lkIChmcm9tIHRoZSBwaXBlbGluZSdzIE9yZ0lkIHRhZzsgbnVsbCB3aGVuIHVudGFnZ2VkKS5cbiAgICogSU5URVJOQUwg4oCUIHVzZWQgb25seSB0byBrZXkgdGhlIHBlci1vcmcgR2l0SHViIHRva2VuIGFuZCB0byBhdHRyaWJ1dGVcbiAgICogaW5nZXN0LWhlYWx0aC4gU3RyaXBwZWQgZnJvbSB0aGUgcGF5bG9hZCBQT1NUZWQgdG8gL3JlcG9ydHMvZXZlbnRzICh3aGljaFxuICAgKiByZXNvbHZlcyBvcmcgZnJvbSB0aGUgcGlwZWxpbmUgcmVnaXN0cnksIG5vdCB0aGUgYm9keSkuXG4gICAqL1xuICBvcmdJZDogc3RyaW5nIHwgbnVsbDtcbiAgcGlwZWxpbmVJZDogc3RyaW5nO1xuICBldmVudFNvdXJjZTogc3RyaW5nO1xuICBldmVudFR5cGU6IHN0cmluZztcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIGV4ZWN1dGlvbklkPzogc3RyaW5nO1xuICBzdGFnZU5hbWU/OiBzdHJpbmc7XG4gIGFjdGlvbk5hbWU/OiBzdHJpbmc7XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBmYWlsdXJlIHJlYXNvbiwgZnJvbSBhbiBBY3Rpb24gZXZlbnQnc1xuICAgKiAgYGV4ZWN1dGlvbi1yZXN1bHQuZXh0ZXJuYWwtZXhlY3V0aW9uLXN1bW1hcnlgLiBUaGUgbG9nIFVSTCArIGVycm9yLWNvZGVcbiAgICogIHN0YXkgaW4gYGRldGFpbGAgZm9yIGRyaWxsLWRvd24uICovXG4gIGVycm9yTWVzc2FnZT86IHN0cmluZztcbiAgc3RhcnRlZEF0Pzogc3RyaW5nO1xuICBjb21wbGV0ZWRBdD86IHN0cmluZztcbiAgZHVyYXRpb25Ncz86IG51bWJlcjtcbiAgLyoqIFNvdXJjZSBjb21taXQgaWQgKERPUkEgZGVwbG95IGF0dHJpYnV0aW9uKS4gVW5kZWZpbmVkIHdoZW4gdGhlIGV2ZW50XG4gICAqICBjYXJyaWVzIG5vIHNvdXJjZSByZXZpc2lvbiDigJQgc3RvcmVkIE5VTEwgZG93bnN0cmVhbS4gKi9cbiAgY29tbWl0U2hhPzogc3RyaW5nO1xuICAvKiogU291cmNlIGJyYW5jaC9yZWYgKERPUkEgZGVwbG95IGF0dHJpYnV0aW9uKS4gVW5kZWZpbmVkIHdoZW4gdW5hdmFpbGFibGUuICovXG4gIGNvbW1pdFJlZj86IHN0cmluZztcbiAgLyoqIE9sZGVzdC11bnNoaXBwZWQgY29tbWl0IHRpbWVzdGFtcCAoSVNPIDg2MDEpIGZvciB0aGUgcmFuZ2Ugc2luY2UgdGhlIGxhc3RcbiAgICogIGRlcGxveSDigJQgcmVzb2x2ZWQgaW4tYWNjb3VudC4gVW5kZWZpbmVkIHdoZW4gdW5yZXNvbHZhYmxlLiAqL1xuICBjb21taXRUaW1lc3RhbXA/OiBzdHJpbmc7XG4gIC8qKiBOdW1iZXIgb2YgY29tbWl0cyBpbiB0aGUgcmVzb2x2ZWQgcmFuZ2UgKOKJpTEpLiBVbmRlZmluZWQgd2hlbiB1bnJlc29sdmFibGUuICovXG4gIGNvbW1pdENvdW50PzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIGNvbXB1dGUgc2l6ZSBhIHRlcm1pbmFsIENvZGVCdWlsZCBhY3Rpb24gcmFuIG9uIChgU01BTExgIOKApiBgWDJfTEFSR0VgKSxcbiAgICogcmVhZCBmcm9tIEFXUy4gVW5kZWZpbmVkIGZvciBhIG5vbi1Db2RlQnVpbGQgYWN0aW9uLCBhIG5vbi10ZXJtaW5hbCBldmVudCxcbiAgICogb3Igd2hlbiB0aGUgcmVhZCBmYWlsZWQg4oCUIHRoZSBpbmdlc3QgdGhlbiByZWNvcmRzIHRoZSBhY3Rpb24gYXMgVU5NRUFTVVJFRFxuICAgKiByYXRoZXIgdGhhbiBhcyBmcmVlLCB3aGljaCBpcyB3aGF0IG1ha2VzIHRoZSBjb3ZlcmFnZSBnYXAgdmlzaWJsZSBpbnN0ZWFkIG9mXG4gICAqIGxvb2tpbmcgbGlrZSBpZGxlbmVzcy5cbiAgICpcbiAgICogSXRzIG93biBmaWVsZCByYXRoZXIgdGhhbiBhIGBkZXRhaWxgIGtleSwgZm9yIHRoZSByZWFzb24gYGZhaWx1cmVgIGhhcyBvbmU6XG4gICAqIGBkZXRhaWxgIGlzIGJvdW5kZWQgYXQgOCBLQiBhbmQgYWxyZWFkeSBzaGVkcyBjb250ZW50IHVuZGVyIHRoYXQgYm91bmQsIHNvIGFcbiAgICogb25lLXdvcmQgZmllbGQgcmlkaW5nIGluc2lkZSBpdCBpcyBhIGZpZWxkIHRoYXQgY2FuIGJlIGRyb3BwZWQgYnkgYW5cbiAgICogdW5yZWxhdGVkIHBheWxvYWQgZ2V0dGluZyBsYXJnZS5cbiAgICovXG4gIGNvbXB1dGVUeXBlPzogc3RyaW5nO1xuICAvKiogRGVwbG95IGVudmlyb25tZW50IOKAlCBzZXQgb25seSB3aGVuIHRoZSBldmVudCdzIHN0YWdlIGlzIGxpc3RlZCBpbiB0aGVcbiAgICogIHBpcGVsaW5lJ3MgYHBiLmRlcGxveXNgIHRhZy4gVW5kZWZpbmVkIG90aGVyd2lzZSAo4oeSIG5vdCBhIGRlcGxveSkuICovXG4gIGVudmlyb25tZW50Pzogc3RyaW5nO1xuICAvKiogVGhlIEV2ZW50QnJpZGdlIGV2ZW50IGBpZGAgKOKJpDEyOCkg4oCUIGxldHMgdGhlIHNlcnZlcidzIGF1ZGl0IHRyYWlsIG5hbWUgdGhlXG4gICAqICBleGFjdCBBV1MgZXZlbnQgYSByb3cgY2FtZSBmcm9tLiBVbmRlZmluZWQgd2hlbiB0aGUgYm9keSBjYXJyaWVzIG5vbmUuICovXG4gIHNvdXJjZUV2ZW50SWQ/OiBzdHJpbmc7XG4gIC8qKiBUaGUgU1FTIHJlY29yZCdzIG1lc3NhZ2VJZCAo4omkMTI4KSDigJQgdGhlIGRlbGl2ZXJ5IHRoYXQgY2FycmllZCB0aGUgZXZlbnQuICovXG4gIHNvdXJjZU1lc3NhZ2VJZD86IHN0cmluZztcbiAgZGV0YWlsOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqIENhcCBvbiBgc291cmNlRXZlbnRJZGAgLyBgc291cmNlTWVzc2FnZUlkYCDigJQgdGhlIHJlcG9ydGluZyBpbmdlc3QncyBtYXguICovXG5jb25zdCBNQVhfU09VUkNFX0lEID0gMTI4O1xuXG4vKiogQSBub24tZW1wdHkgc3RyaW5nIGNhcHBlZCB0byBgTUFYX1NPVVJDRV9JRGAsIGVsc2UgdW5kZWZpbmVkLiAqL1xuZnVuY3Rpb24gc291cmNlSWQodjogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB0eXBlb2YgdiA9PT0gJ3N0cmluZycgJiYgdi5sZW5ndGggPiAwID8gdi5zbGljZSgwLCBNQVhfU09VUkNFX0lEKSA6IHVuZGVmaW5lZDtcbn1cblxuLyoqIENhcCBvbiB0aGUgc3RvcmVkIGZhaWx1cmUgc3VtbWFyeSDigJQgQ29kZUJ1aWxkL0RlcGxveSBzdW1tYXJpZXMgY2FuIGJlIGxvbmcuICovXG5jb25zdCBNQVhfRVJST1JfTUVTU0FHRSA9IDQwMDA7XG5cbi8qKiBIZWFkcm9vbSB1bmRlciB0aGUgcmVwb3J0aW5nIGluZ2VzdCdzIDggS0Igc2VyaWFsaXplZCBgZGV0YWlsYCBib3VuZC4gKi9cbmNvbnN0IE1BWF9ERVRBSUxfQllURVMgPSA3NTAwO1xuXG4vKiogRmlyc3Qgbm9uLWVtcHR5IHN0cmluZyBhbW9uZyB0aGUgY2FuZGlkYXRlcywgY2FwcGVkIHRvIHRoZSBpbmdlc3QgbWF4LiAqL1xuZnVuY3Rpb24gZmlyc3RBdHRyKC4uLnZhbHM6IHVua25vd25bXSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3QgdiBvZiB2YWxzKSB7XG4gICAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJyAmJiB2Lmxlbmd0aCA+IDApIHJldHVybiB2LnNsaWNlKDAsIE1BWF9BVFRSKTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEJlc3QtZWZmb3J0IGV4dHJhY3Rpb24gb2YgdGhlIHNvdXJjZSBjb21taXQgaWQgKyByZWYgKGFuZCB0aGUgcmV2aXNpb24gVVJMLCB1c2VkXG4gKiBvbmx5IGluLWFjY291bnQgdG8gY2xhc3NpZnkgdGhlIHNvdXJjZSB0eXBlIGZvciBjb21taXQtcmFuZ2UgcmVzb2x1dGlvbikgZnJvbSBhXG4gKiBDb2RlUGlwZWxpbmUgZXZlbnQgZGV0YWlsLiBDb2RlUGlwZWxpbmUgc3VyZmFjZXMgdGhlIHNvdXJjZSByZXZpc2lvbiB1bmRlciBhIGZld1xuICogc2hhcGVzIGRlcGVuZGluZyBvbiB0aGUgZXZlbnQgdHlwZSAvIHNvdXJjZS1hY3Rpb247IHdlIGNoZWNrIHRoZSBrbm93biBvbmVzIGFuZFxuICogbGVhdmUgdGhlIGZpZWxkcyB1bmRlZmluZWQgd2hlbiBub25lIGFyZSBwcmVzZW50IChOVUxMIGRvd25zdHJlYW0pLiBOZXZlciBwdWxscyBhblxuICogQVJOL2FjY291bnQgaWQ6IG9ubHkgcmV2aXNpb24vYnJhbmNoL3VybCBzdHJpbmcgZmllbGRzIGFyZSByZWFkOyB0aGUgcmV2aXNpb25VcmxcbiAqIGlzIGNvbnN1bWVkIGluLWFjY291bnQgKHNvdXJjZSBjbGFzc2lmaWNhdGlvbikgYW5kIG5ldmVyIGZvcndhcmRlZCBvbiBpdHMgb3duLlxuICovXG5mdW5jdGlvbiBleHRyYWN0Q29tbWl0KGRldGFpbDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB7IGNvbW1pdFNoYT86IHN0cmluZzsgY29tbWl0UmVmPzogc3RyaW5nOyByZXZpc2lvblVybD86IHN0cmluZyB9IHtcbiAgLy8gYHNvdXJjZS1yZXZpc2lvbnNgIChrZWJhYiwgRXZlbnRCcmlkZ2UpIC8gYHNvdXJjZVJldmlzaW9uc2AgKGNhbWVsKSDigJQgZmlyc3QgZW50cnkuXG4gIGNvbnN0IHJldnMgPSAoZGV0YWlsWydzb3VyY2UtcmV2aXNpb25zJ10gPz8gZGV0YWlsLnNvdXJjZVJldmlzaW9ucykgYXNcbiAgICB8IEFycmF5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB8IHVuZGVmaW5lZDtcbiAgY29uc3QgZmlyc3RSZXYgPSBBcnJheS5pc0FycmF5KHJldnMpID8gcmV2c1swXSA6IHVuZGVmaW5lZDtcbiAgLy8gT24gc291cmNlIGFjdGlvbnMgdGhlIHJldmlzaW9uIGlkIGNhbiBhbHNvIHJpZGUgb24gYGV4ZWN1dGlvbi1yZXN1bHRgLlxuICBjb25zdCBleGVjUmVzdWx0ID0gZGV0YWlsWydleGVjdXRpb24tcmVzdWx0J10gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3QgY29tbWl0U2hhID0gZmlyc3RBdHRyKFxuICAgIGRldGFpbC5jb21taXRJZCxcbiAgICBkZXRhaWwucmV2aXNpb25JZCxcbiAgICBmaXJzdFJldj8ucmV2aXNpb25JZCxcbiAgICBleGVjUmVzdWx0Py5yZXZpc2lvbklkLFxuICApO1xuICBjb25zdCBjb21taXRSZWYgPSBmaXJzdEF0dHIoXG4gICAgZGV0YWlsLmNvbW1pdFJlZixcbiAgICBkZXRhaWwuYnJhbmNoLFxuICAgIGRldGFpbC5zb3VyY2VCcmFuY2gsXG4gICAgZmlyc3RSZXY/LmJyYW5jaE5hbWUsXG4gICAgZmlyc3RSZXY/LmJyYW5jaCxcbiAgKTtcbiAgY29uc3QgcmV2aXNpb25VcmwgPSB0eXBlb2YgZmlyc3RSZXY/LnJldmlzaW9uVXJsID09PSAnc3RyaW5nJyA/IGZpcnN0UmV2LnJldmlzaW9uVXJsIDogdW5kZWZpbmVkO1xuXG4gIHJldHVybiB7IC4uLihjb21taXRTaGEgJiYgeyBjb21taXRTaGEgfSksIC4uLihjb21taXRSZWYgJiYgeyBjb21taXRSZWYgfSksIC4uLihyZXZpc2lvblVybCAmJiB7IHJldmlzaW9uVXJsIH0pIH07XG59XG5cbmZ1bmN0aW9uIGNsYXNzaWZ5RXZlbnQoZGV0YWlsVHlwZTogc3RyaW5nKTogeyBldmVudFR5cGU6IHN0cmluZzsgZXZlbnRTb3VyY2U6IHN0cmluZyB9IHtcbiAgaWYgKGRldGFpbFR5cGUuaW5jbHVkZXMoJ1BpcGVsaW5lIEV4ZWN1dGlvbicpKSByZXR1cm4geyBldmVudFR5cGU6ICdQSVBFTElORScsIGV2ZW50U291cmNlOiAnY29kZXBpcGVsaW5lJyB9O1xuICBpZiAoZGV0YWlsVHlwZS5pbmNsdWRlcygnU3RhZ2UgRXhlY3V0aW9uJykpIHJldHVybiB7IGV2ZW50VHlwZTogJ1NUQUdFJywgZXZlbnRTb3VyY2U6ICdjb2RlcGlwZWxpbmUnIH07XG4gIGlmIChkZXRhaWxUeXBlLmluY2x1ZGVzKCdBY3Rpb24gRXhlY3V0aW9uJykpIHJldHVybiB7IGV2ZW50VHlwZTogJ0FDVElPTicsIGV2ZW50U291cmNlOiAnY29kZXBpcGVsaW5lJyB9O1xuICAvLyBDb2RlQnVpbGQgXCJCdWlsZCBTdGF0ZVwiIGV2ZW50cyBpZGVudGlmeSBhIGJ1aWxkICpwcm9qZWN0Kiwgbm90IGEgcGlwZWxpbmUsIHNvXG4gIC8vIHBhcnNlUmVjb3JkIGRyb3BzIHRoZW0gb24gdGhlIGBldmVudFNvdXJjZSAhPT0gJ2NvZGVwaXBlbGluZSdgIGNoZWNrIGJlbG93IOKAlFxuICAvLyB0aGUgJ0JVSUxEJyBldmVudFR5cGUgaXMgbmV2ZXIgcGVyc2lzdGVkIGhlcmUgKHBsdWdpbiBCVUlMRCBldmVudHMgYXJlXG4gIC8vIHJlY29yZGVkIGRpcmVjdGx5IGJ5IHRoZSBwbHVnaW4gc2VydmljZSkuIFRoZSAnY29kZWJ1aWxkJyBzb3VyY2UgaXMgd2hhdFxuICAvLyByb3V0ZXMgdGhlIGRyb3A7IGtlZXAgdGhpcyBicmFuY2ggb25seSBmb3IgdGhhdC5cbiAgaWYgKGRldGFpbFR5cGUuaW5jbHVkZXMoJ0J1aWxkIFN0YXRlJykpIHJldHVybiB7IGV2ZW50VHlwZTogJ0JVSUxEJywgZXZlbnRTb3VyY2U6ICdjb2RlYnVpbGQnIH07XG4gIHJldHVybiB7IGV2ZW50VHlwZTogJ1BJUEVMSU5FJywgZXZlbnRTb3VyY2U6ICdjb2RlcGlwZWxpbmUnIH07XG59XG5cbi8qKiBQYXJzZSArIHJlc29sdmUgb25lIHJlY29yZCB0byBhIHJlcG9ydGFibGUgZXZlbnQsIG9yIG51bGwgdG8gc2tpcCBpdC4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwYXJzZVJlY29yZChyZWNvcmQ6IFNRU1JlY29yZCk6IFByb21pc2U8UGFyc2VkRXZlbnQgfCBudWxsPiB7XG4gIGxldCBldmVudDoge1xuICAgICdpZCc/OiBzdHJpbmc7XG4gICAgJ2RldGFpbC10eXBlJzogc3RyaW5nO1xuICAgICdzb3VyY2UnOiBzdHJpbmc7XG4gICAgJ2RldGFpbCc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICd0aW1lJzogc3RyaW5nO1xuICAgICdyZWdpb24nOiBzdHJpbmc7XG4gICAgJ2FjY291bnQnOiBzdHJpbmc7XG4gIH07XG4gIC8vIEEgbWFsZm9ybWVkIGJvZHkgaXMgYSBkZWFkIG1lc3NhZ2UgKHJldHJ5aW5nIHdvbid0IGhlbHApIOKAlCBsb2cgKyBza2lwIGl0IHNvXG4gIC8vIGl0IGNhbid0IGZhaWwgdGhlIHdob2xlIGJhdGNoLiBSZXNvbHV0aW9uIGVycm9ycyBiZWxvdyAoZS5nLiBBY2Nlc3NEZW5pZWQpXG4gIC8vIGFyZSBOT1QgY2F1Z2h0IGhlcmU6IHRob3NlIGFyZSB0cmFuc2llbnQvaW5mcmEgYW5kIG11c3QgcHJvcGFnYXRlIHRvIHJldHJ5LlxuICB0cnkge1xuICAgIGV2ZW50ID0gSlNPTi5wYXJzZShyZWNvcmQuYm9keSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy53YXJuKCdTa2lwcGluZyBTUVMgcmVjb3JkIHdpdGggdW5wYXJzZWFibGUgYm9keScsIHsgbWVzc2FnZUlkOiByZWNvcmQubWVzc2FnZUlkLCBlcnJvcjogU3RyaW5nKGVycikgfSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCB7IGV2ZW50VHlwZSwgZXZlbnRTb3VyY2UgfSA9IGNsYXNzaWZ5RXZlbnQoZXZlbnRbJ2RldGFpbC10eXBlJ10pO1xuICBjb25zdCBkZXRhaWwgPSB7IC4uLmV2ZW50LmRldGFpbCB9O1xuICAvLyBUaGUgcmF3IGFjY291bnQgbmV2ZXIgbmVlZHMgdG8gbGVhdmUgQVdTIG5vdyDigJQgZHJvcCBpdCBmcm9tIHRoZSBwYXlsb2FkLlxuICBkZWxldGUgZGV0YWlsLmFjY291bnQ7XG5cbiAgLy8gQ29kZUJ1aWxkIFwiQnVpbGQgU3RhdGVcIiBldmVudHMgaWRlbnRpZnkgYSBidWlsZCAqcHJvamVjdCosIG5vdCBhIHBpcGVsaW5lLFxuICAvLyBhbmQgYSBwcm9qZWN0IGNhbiBiZSBzaGFyZWQgYWNyb3NzIHBpcGVsaW5lcyDigJQgdGhlcmUncyBubyBjbGVhbiAxOjEgbWFwcGluZ1xuICAvLyB0byBhIHBpcGVsaW5lIGlkLCBzbyBza2lwIHRoZW0uXG4gIGlmIChldmVudFNvdXJjZSAhPT0gJ2NvZGVwaXBlbGluZScpIHtcbiAgICBsb2cud2FybignU2tpcHBpbmcgbm9uLUNvZGVQaXBlbGluZSBldmVudCAobm8gcGlwZWxpbmUgdGFnIHRvIHJlc29sdmUpJywgeyBkZXRhaWxUeXBlOiBldmVudFsnZGV0YWlsLXR5cGUnXSB9KTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHBpcGVsaW5lTmFtZSA9IGRldGFpbC5waXBlbGluZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlmICghcGlwZWxpbmVOYW1lKSB7XG4gICAgbG9nLndhcm4oJ0NvZGVQaXBlbGluZSBldmVudCBtaXNzaW5nIHBpcGVsaW5lIG5hbWUg4oCUIHNraXBwaW5nJyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBSZXNvbHZlIHRoZSBwaXBlbGluZSdzIHBiLnBpcGVsaW5lLWlkICg9IHBsYXRmb3JtIHBpcGVsaW5lSWQpICsgcGIuZGVwbG95cyBtYXAuXG4gIC8vIFRoZSBBUk4gaXMgb25seSBhIHRyYW5zaWVudCBoYW5kbGUgZm9yIHRoZSB0YWcgbG9va3VwOyBpdCBpcyBuZXZlciBzdG9yZWQuXG4gIGNvbnN0IGFybiA9IGBhcm46YXdzOmNvZGVwaXBlbGluZToke2V2ZW50LnJlZ2lvbn06JHtldmVudC5hY2NvdW50fToke3BpcGVsaW5lTmFtZX1gO1xuICBjb25zdCB7IHBpcGVsaW5lSWQsIG9yZ0lkLCBkZXBsb3lzIH0gPSBhd2FpdCByZXNvbHZlUGlwZWxpbmUoYXJuLCBldmVudC5yZWdpb24pO1xuICBpZiAoIXBpcGVsaW5lSWQpIHJldHVybiBudWxsOyAvLyB1bnRhZ2dlZCAvIHVucmVnaXN0ZXJlZCDihpIgc2tpcFxuXG4gIC8vIEFXUyBkb2VzIG5vdCBhbHdheXMgc2VuZCBgc3RhcnQtdGltZWAuIGBldmVudC50aW1lYCBzdGFuZHMgaW4gZm9yIGl0IHNvIHRoZVxuICAvLyByb3cgc3RpbGwgbGFuZHMgaW4gdGhlIHJlcG9ydCB3aW5kb3dzLCB3aGljaCBmaWx0ZXIgb24gYHN0YXJ0ZWRfYXRgIOKAlCBidXQgaXRcbiAgLy8gaXMgTk9UIGEgbWVhc3VyZW1lbnQsIGFuZCB0aGUgZHVyYXRpb24gYmVsb3cgbXVzdCBub3QgYmUgY29tcHV0ZWQgZnJvbSBpdC5cbiAgY29uc3QgZGVjbGFyZWRTdGFydCA9IGRldGFpbFsnc3RhcnQtdGltZSddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgY29uc3Qgc3RhcnRlZEF0ID0gZGVjbGFyZWRTdGFydCB8fCBldmVudC50aW1lO1xuICBjb25zdCBzdGF0ZSA9IGRldGFpbC5zdGF0ZSBhcyBzdHJpbmc7XG5cbiAgbGV0IGR1cmF0aW9uTXM6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgbGV0IGNvbXBsZXRlZEF0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgaWYgKFsnU1VDQ0VFREVEJywgJ0ZBSUxFRCcsICdDQU5DRUxFRCcsICdTVE9QUEVEJ10uaW5jbHVkZXMoc3RhdGUpKSB7XG4gICAgY29tcGxldGVkQXQgPSBldmVudC50aW1lO1xuICAgIC8vIE9OTFkgZnJvbSBhIHN0YXJ0IEFXUyBhY3R1YWxseSBkZWNsYXJlZC4gV2l0aCB0aGUgZmFsbGJhY2ssIGBzdGFydGVkQXRgIGFuZFxuICAgIC8vIGBjb21wbGV0ZWRBdGAgYXJlIGJvdGggYGV2ZW50LnRpbWVgIG9uIGEgdGVybWluYWwgZXZlbnQsIHNvIHRoZSBkdXJhdGlvbiBjYW1lXG4gICAgLy8gb3V0IGFzIGV4YWN0bHkgMCDigJQgcmVwb3J0ZWQgYXMgYSByZWFsIG1lYXN1cmVtZW50LCBkcmFnZ2luZyBldmVyeSBhdmVyYWdlIGFuZFxuICAgIC8vIHA5NSBzdGFnZSBkdXJhdGlvbiB0b3dhcmQgemVybyB3aXRoIG5vIHNpZ24gYW55dGhpbmcgd2FzIG1pc3NpbmcuIFVua25vd24gaXNcbiAgICAvLyBsZWZ0IHVua25vd24gKE5VTEwpLCB3aGljaCB0aGUgcmVwb3J0cyBhbHJlYWR5IGhhbmRsZS5cbiAgICBpZiAoZGVjbGFyZWRTdGFydCkge1xuICAgICAgY29uc3QgbXMgPSBuZXcgRGF0ZShjb21wbGV0ZWRBdCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoZGVjbGFyZWRTdGFydCkuZ2V0VGltZSgpO1xuICAgICAgaWYgKE51bWJlci5pc0Zpbml0ZShtcykgJiYgbXMgPj0gMCkgZHVyYXRpb25NcyA9IG1zO1xuICAgIH1cbiAgfVxuXG4gIC8vIFByb21vdGUgdGhlIGZhaWx1cmUgcmVhc29uIHRvIGEgdHlwZWQgZmllbGQuIE9uIEFjdGlvbiBldmVudHMgQVdTIHB1dHMgdGhlXG4gIC8vIGh1bWFuLXJlYWRhYmxlIHN1bW1hcnkgKGFuZCBhIGxvZyBVUkwgKyBlcnJvci1jb2RlLCB3aGljaCBzdGF5IGluIGBkZXRhaWxgKVxuICAvLyB1bmRlciBgZXhlY3V0aW9uLXJlc3VsdGAuXG4gIGNvbnN0IHJlc3VsdCA9IGRldGFpbFsnZXhlY3V0aW9uLXJlc3VsdCddIGFzIHsgJ2V4dGVybmFsLWV4ZWN1dGlvbi1zdW1tYXJ5Jz86IHVua25vd24gfSB8IHVuZGVmaW5lZDtcbiAgY29uc3Qgc3VtbWFyeSA9IHJlc3VsdD8uWydleHRlcm5hbC1leGVjdXRpb24tc3VtbWFyeSddO1xuICBsZXQgZXJyb3JNZXNzYWdlID0gdHlwZW9mIHN1bW1hcnkgPT09ICdzdHJpbmcnICYmIHN1bW1hcnkubGVuZ3RoID4gMFxuICAgID8gc3VtbWFyeS5zbGljZSgwLCBNQVhfRVJST1JfTUVTU0FHRSlcbiAgICA6IHVuZGVmaW5lZDtcblxuICAvLyBBIGZhaWxlZCBDb2RlQnVpbGQgYWN0aW9uIG1heSBoYXZlIHByaW50ZWQgYSBzdHJ1Y3R1cmVkIHJlYXNvbiAodGhlIHN5bnRoJ3NcbiAgLy8gYFBCX1NZTlRIX0ZBSUxVUkVgIGxpbmUg4oCUIGEgcmVmdXNlZCBwbHVnaW4sIHdpdGggaXRzIGNvZGUpLiBDb2RlQnVpbGQnc1xuICAvLyBzdW1tYXJ5IG5ldmVyIGNhcnJpZXMgdGhlIGJ1aWxkIG91dHB1dCwgc28gcmVhZCBpdCBmcm9tIHRoZSBidWlsZCdzIGxvZyBhbmRcbiAgLy8gcHJvbW90ZSBpdDogdGhlIGNvZGUgKyBtZXNzYWdlIGJlY29tZSB0aGUgZmFpbHVyZSByZWFzb24sIHRoZSBwZXItcGx1Z2luXG4gIC8vIGxpc3QgcmlkZXMgaW4gYGRldGFpbC5wYkZhaWx1cmVgLiBCZXN0LWVmZm9ydCAoc2VlIGZhaWx1cmUtcmVhc29uLnRzKS5cbiAgLy8gVGhlIGNvbXB1dGUgc2l6ZSB0aGlzIGFjdGlvbiByYW4gb24sIGZvciB0aGUgdkNQVS1taW51dGUgZmlndXJlIFBoYXNlIDRcbiAgLy8gbWVhc3VyZXMuIE9ubHkgb24gYSBURVJNSU5BTCBDb2RlQnVpbGQgYWN0aW9uOiBhbiBpbi1wcm9ncmVzcyBldmVudCBoYXMgbm9cbiAgLy8gZHVyYXRpb24gdG8gcGFpciBpdCB3aXRoLCBzbyByZWFkaW5nIGl0IHRoZXJlIHdvdWxkIHNwZW5kIGFuIEFXUyBjYWxsIHRvXG4gIC8vIGxlYXJuIG5vdGhpbmcuIEJlc3QtZWZmb3J0IOKAlCBudWxsIGZvcndhcmRzIHdpdGhvdXQgdGhlIGZpZWxkLlxuICBsZXQgY29tcHV0ZVR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgaWYgKGV2ZW50VHlwZSA9PT0gJ0FDVElPTicgJiYgWydTVUNDRUVERUQnLCAnRkFJTEVEJywgJ1NUT1BQRUQnXS5pbmNsdWRlcyhzdGF0ZSkpIHtcbiAgICBjb25zdCBjYklkID0gY29kZUJ1aWxkSWRPZihkZXRhaWwpO1xuICAgIGNvbXB1dGVUeXBlID0gKGNiSWQgPyBhd2FpdCByZWFkQnVpbGRDb21wdXRlKGV2ZW50LnJlZ2lvbiwgY2JJZCkgOiBudWxsKSA/PyB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAoZXZlbnRUeXBlID09PSAnQUNUSU9OJyAmJiBzdGF0ZSA9PT0gJ0ZBSUxFRCcpIHtcbiAgICBjb25zdCBidWlsZElkID0gY29kZUJ1aWxkSWRPZihkZXRhaWwpO1xuICAgIGNvbnN0IGZhaWx1cmUgPSBidWlsZElkID8gYXdhaXQgcmVhZFN5bnRoRmFpbHVyZShldmVudC5yZWdpb24sIGJ1aWxkSWQpIDogbnVsbDtcbiAgICBpZiAoZmFpbHVyZSkge1xuICAgICAgZGV0YWlsLnBiRmFpbHVyZSA9IGZhaWx1cmU7XG4gICAgICAvLyBUaGUgaW5nZXN0IGJvdW5kcyBgZGV0YWlsYCBhdCA4IEtCIHNlcmlhbGl6ZWQ7IGtlZXAgdGhlIGNvZGVzLCBkcm9wIHRoZVxuICAgICAgLy8gcGVyLXBsdWdpbiBwcm9zZSBpZiB0aGUgd2hvbGUgdGhpbmcgd291bGQgbm90IGZpdC5cbiAgICAgIGlmIChKU09OLnN0cmluZ2lmeShkZXRhaWwpLmxlbmd0aCA+PSBNQVhfREVUQUlMX0JZVEVTKSB7XG4gICAgICAgIGRldGFpbC5wYkZhaWx1cmUgPSB7IC4uLmZhaWx1cmUsIHBsdWdpbnM6IGZhaWx1cmUucGx1Z2lucy5tYXAoKHsgcGx1Z2luLCBjb2RlIH0pID0+ICh7IHBsdWdpbiwgY29kZSB9KSkgfTtcbiAgICAgIH1cbiAgICAgIGVycm9yTWVzc2FnZSA9IGAke2ZhaWx1cmUuY29kZX06ICR7ZmFpbHVyZS5tZXNzYWdlfWAuc2xpY2UoMCwgTUFYX0VSUk9SX01FU1NBR0UpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEF1ZGl0IGNvcnJlbGF0aW9uIGJhY2sgdG8gdGhlIEFXUyBzaWRlOiB3aGljaCBFdmVudEJyaWRnZSBldmVudCwgY2FycmllZCBieVxuICAvLyB3aGljaCBTUVMgZGVsaXZlcnkuIEJvdGggYXJlIG9wYXF1ZSBpZHMgKG5vIEFSTiwgbm8gYWNjb3VudCkuXG4gIGNvbnN0IHNvdXJjZUV2ZW50SWQgPSBzb3VyY2VJZChldmVudC5pZCk7XG4gIGNvbnN0IHNvdXJjZU1lc3NhZ2VJZCA9IHNvdXJjZUlkKHJlY29yZC5tZXNzYWdlSWQpO1xuXG4gIC8vIERPUkEgZGVwbG95IGF0dHJpYnV0aW9uIOKAlCBhbGwgb3B0aW9uYWw6IG9taXR0ZWQgKHVuZGVmaW5lZCkgd2hlbiB0aGVcbiAgLy8gZXZlbnQvcGlwZWxpbmUgZG9lc24ndCBjYXJyeSB0aGVtLlxuICBjb25zdCB7IGNvbW1pdFNoYSwgY29tbWl0UmVmLCByZXZpc2lvblVybCB9ID0gZXh0cmFjdENvbW1pdChkZXRhaWwpO1xuXG4gIGNvbnN0IGV4ZWN1dGlvbklkID0gZGV0YWlsWydleGVjdXRpb24taWQnXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IHN0YWdlTmFtZSA9IGRldGFpbC5zdGFnZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IGFjdGlvbk5hbWUgPSBkZXRhaWwuYWN0aW9uIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvLyBFbnZpcm9ubWVudCAo4oeSIGlzRGVwbG95KSBpcyBzZXQgT05MWSB3aGVuIHRoaXMgZXZlbnQncyBzdGFnZSBpcyBsaXN0ZWQgaW4gdGhlXG4gIC8vIHBpcGVsaW5lJ3MgcGIuZGVwbG95cyB0YWcuIFBJUEVMSU5FIGV2ZW50cyBoYXZlIG5vIHN0YWdlIOKGkiBuZXZlciBhIGRlcGxveS5cbiAgY29uc3QgZW52aXJvbm1lbnQgPSBzdGFnZU5hbWUgPyBkZXBsb3lzLmdldChzdGFnZU5hbWUpIDogdW5kZWZpbmVkO1xuXG4gIC8vIFJlc29sdmUgdGhlIGNvbW1pdCByYW5nZSAob2xkZXN0LXVuc2hpcHBlZCB0aW1lc3RhbXAgKyBjb3VudCkgZm9yIGFueVxuICAvLyBldmVudCBjYXJyeWluZyBhIGNvbW1pdC4gQmVzdC1lZmZvcnQvaW4tYWNjb3VudDsgb21pdHRlZCBvbiBhbnkgZmFpbHVyZS5cbiAgLy8gR0FURUQgb24gYERPUkFfRU5BQkxFRGAgKHNldCBieSBgc2V0dXAtZXZlbnRzIC0td2l0aC1kb3JhYCk6IERPUkEgbGVhZCB0aW1lIGlzIGFuXG4gIC8vIGFkdmFuY2VkX3JlcG9ydGluZyBhZGQtb24sIHNvIG9yZ3Mgd2l0aG91dCBpdCBza2lwIHRoZSBTQ00vc2VjcmV0IGNvc3QgZW50aXJlbHkg4oCUXG4gIC8vIHN0YW5kYXJkIHJlcG9ydGluZyAoY29tbWl0U2hhICsgYWxsIG90aGVyIGZpZWxkcykgc3RpbGwgZm9yd2FyZHMgcmVnYXJkbGVzcy5cbiAgbGV0IGNvbW1pdFRpbWVzdGFtcDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBsZXQgY29tbWl0Q291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgaWYgKGNvbW1pdFNoYSAmJiBwcm9jZXNzLmVudi5ET1JBX0VOQUJMRUQgPT09ICd0cnVlJykge1xuICAgIGNvbnN0IHNyYyA9IGNsYXNzaWZ5U291cmNlKHJldmlzaW9uVXJsKTtcbiAgICBjb25zdCBpbmZvID0gYXdhaXQgcmVzb2x2ZUNvbW1pdEluZm8ocGlwZWxpbmVJZCwgb3JnSWQsIGV2ZW50LnJlZ2lvbiwgeyBzaGE6IGNvbW1pdFNoYSwgLi4uc3JjIH0pO1xuICAgIGNvbW1pdFRpbWVzdGFtcCA9IGluZm8uY29tbWl0VGltZXN0YW1wO1xuICAgIGNvbW1pdENvdW50ID0gaW5mby5jb21taXRDb3VudDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgb3JnSWQsXG4gICAgcGlwZWxpbmVJZCxcbiAgICBldmVudFNvdXJjZSxcbiAgICBldmVudFR5cGUsXG4gICAgc3RhdHVzOiBzdGF0ZSxcbiAgICBleGVjdXRpb25JZCxcbiAgICBzdGFnZU5hbWUsXG4gICAgYWN0aW9uTmFtZSxcbiAgICBlcnJvck1lc3NhZ2UsXG4gICAgc3RhcnRlZEF0LFxuICAgIGNvbXBsZXRlZEF0LFxuICAgIGR1cmF0aW9uTXMsXG4gICAgLi4uKGNvbW1pdFNoYSAmJiB7IGNvbW1pdFNoYSB9KSxcbiAgICAuLi4oY29tbWl0UmVmICYmIHsgY29tbWl0UmVmIH0pLFxuICAgIC4uLihjb21taXRUaW1lc3RhbXAgJiYgeyBjb21taXRUaW1lc3RhbXAgfSksXG4gICAgLi4uKGNvbW1pdENvdW50ICYmIHsgY29tbWl0Q291bnQgfSksXG4gICAgLi4uKGVudmlyb25tZW50ICYmIHsgZW52aXJvbm1lbnQgfSksXG4gICAgLi4uKGNvbXB1dGVUeXBlICYmIHsgY29tcHV0ZVR5cGUgfSksXG4gICAgLi4uKHNvdXJjZUV2ZW50SWQgJiYgeyBzb3VyY2VFdmVudElkIH0pLFxuICAgIC4uLihzb3VyY2VNZXNzYWdlSWQgJiYgeyBzb3VyY2VNZXNzYWdlSWQgfSksXG4gICAgZGV0YWlsLFxuICB9O1xufVxuIl19
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBR3RDLE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RixPQUFPLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUE0RGhDLCtFQUErRTtBQUMvRSxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUM7QUFFMUIsb0VBQW9FO0FBQ3BFLFNBQVMsUUFBUSxDQUFDLENBQVU7SUFDMUIsT0FBTyxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDdkYsQ0FBQztBQUVELGtGQUFrRjtBQUNsRixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQztBQUUvQiw0RUFBNEU7QUFDNUUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFFOUIsNkVBQTZFO0FBQzdFLFNBQVMsU0FBUyxDQUFDLEdBQUcsSUFBZTtJQUNuQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRDs7Ozs7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QUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNsRyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUN2QyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUNqQyxDQUFDO0lBRUQsT0FBTztRQUNMLEtBQUs7UUFDTCxVQUFVO1FBQ1YsV0FBVztRQUNYLFNBQVM7UUFDVCxNQUFNLEVBQUUsS0FBSztRQUNiLFdBQVc7UUFDWCxTQUFTO1FBQ1QsVUFBVTtRQUNWLFlBQVk7UUFDWixTQUFTO1FBQ1QsV0FBVztRQUNYLFVBQVU7UUFDVixHQUFHLENBQUMsU0FBUyxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDL0IsR0FBRyxDQUFDLFNBQVMsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQy9CLEdBQUcsQ0FBQyxlQUFlLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQztRQUMzQyxHQUFHLENBQUMsV0FBVyxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDbkMsR0FBRyxDQUFDLFdBQVcsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ25DLEdBQUcsQ0FBQyxXQUFXLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUNuQyxHQUFHLENBQUMsYUFBYSxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUM7UUFDdkMsR0FBRyxDQUFDLGVBQWUsSUFBSSxFQUFFLGVBQWUsRUFBRSxDQUFDO1FBQzNDLE1BQU07S0FDUCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IFNRU1JlY29yZCB9IGZyb20gJ2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgY29kZUJ1aWxkSWRPZiwgcmVhZEJ1aWxkQ29tcHV0ZSwgcmVhZFN5bnRoRmFpbHVyZSB9IGZyb20gJy4vZmFpbHVyZS1yZWFzb24uanMnO1xuaW1wb3J0IHsgY2xhc3NpZnlTb3VyY2UsIHJlc29sdmVDb21taXRJbmZvIH0gZnJvbSAnLi9zY20uanMnO1xuaW1wb3J0IHsgTUFYX0FUVFIsIHJlc29sdmVQaXBlbGluZSB9IGZyb20gJy4vdGFncy5qcyc7XG5pbXBvcnQgeyBsb2cgfSBmcm9tICcuL3V0aWwuanMnO1xuXG4vLyBFdmVudCBwYXJzaW5nOiBhbiBTUVMgcmVjb3JkIOKGkiB0aGUgbm9ybWFsaXplZCByZXBvcnRpbmcgZXZlbnQuXG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkRXZlbnQge1xuICAvKipcbiAgICogUmVzb2x2ZWQgcGxhdGZvcm0gb3JnSWQgKGZyb20gdGhlIHBpcGVsaW5lJ3MgT3JnSWQgdGFnOyBudWxsIHdoZW4gdW50YWdnZWQpLlxuICAgKiBJTlRFUk5BTCDigJQgdXNlZCBvbmx5IHRvIGtleSB0aGUgcGVyLW9yZyBHaXRIdWIgdG9rZW4gYW5kIHRvIGF0dHJpYnV0ZVxuICAgKiBpbmdlc3QtaGVhbHRoLiBTdHJpcHBlZCBmcm9tIHRoZSBwYXlsb2FkIFBPU1RlZCB0byAvcmVwb3J0cy9ldmVudHMgKHdoaWNoXG4gICAqIHJlc29sdmVzIG9yZyBmcm9tIHRoZSBwaXBlbGluZSByZWdpc3RyeSwgbm90IHRoZSBib2R5KS5cbiAgICovXG4gIG9yZ0lkOiBzdHJpbmcgfCBudWxsO1xuICBwaXBlbGluZUlkOiBzdHJpbmc7XG4gIGV2ZW50U291cmNlOiBzdHJpbmc7XG4gIGV2ZW50VHlwZTogc3RyaW5nO1xuICBzdGF0dXM6IHN0cmluZztcbiAgZXhlY3V0aW9uSWQ/OiBzdHJpbmc7XG4gIHN0YWdlTmFtZT86IHN0cmluZztcbiAgYWN0aW9uTmFtZT86IHN0cmluZztcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIGZhaWx1cmUgcmVhc29uLCBmcm9tIGFuIEFjdGlvbiBldmVudCdzXG4gICAqICBgZXhlY3V0aW9uLXJlc3VsdC5leHRlcm5hbC1leGVjdXRpb24tc3VtbWFyeWAuIFRoZSBsb2cgVVJMICsgZXJyb3ItY29kZVxuICAgKiAgc3RheSBpbiBgZGV0YWlsYCBmb3IgZHJpbGwtZG93bi4gKi9cbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuICBzdGFydGVkQXQ/OiBzdHJpbmc7XG4gIGNvbXBsZXRlZEF0Pzogc3RyaW5nO1xuICBkdXJhdGlvbk1zPzogbnVtYmVyO1xuICAvKiogU291cmNlIGNvbW1pdCBpZCAoRE9SQSBkZXBsb3kgYXR0cmlidXRpb24pLiBVbmRlZmluZWQgd2hlbiB0aGUgZXZlbnRcbiAgICogIGNhcnJpZXMgbm8gc291cmNlIHJldmlzaW9uIOKAlCBzdG9yZWQgTlVMTCBkb3duc3RyZWFtLiAqL1xuICBjb21taXRTaGE/OiBzdHJpbmc7XG4gIC8qKiBTb3VyY2UgYnJhbmNoL3JlZiAoRE9SQSBkZXBsb3kgYXR0cmlidXRpb24pLiBVbmRlZmluZWQgd2hlbiB1bmF2YWlsYWJsZS4gKi9cbiAgY29tbWl0UmVmPzogc3RyaW5nO1xuICAvKiogT2xkZXN0LXVuc2hpcHBlZCBjb21taXQgdGltZXN0YW1wIChJU08gODYwMSkgZm9yIHRoZSByYW5nZSBzaW5jZSB0aGUgbGFzdFxuICAgKiAgZGVwbG95IOKAlCByZXNvbHZlZCBpbi1hY2NvdW50LiBVbmRlZmluZWQgd2hlbiB1bnJlc29sdmFibGUuICovXG4gIGNvbW1pdFRpbWVzdGFtcD86IHN0cmluZztcbiAgLyoqIE51bWJlciBvZiBjb21taXRzIGluIHRoZSByZXNvbHZlZCByYW5nZSAo4omlMSkuIFVuZGVmaW5lZCB3aGVuIHVucmVzb2x2YWJsZS4gKi9cbiAgY29tbWl0Q291bnQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgY29tcHV0ZSBzaXplIGEgdGVybWluYWwgQ29kZUJ1aWxkIGFjdGlvbiByYW4gb24gKGBTTUFMTGAg4oCmIGBYMl9MQVJHRWApLFxuICAgKiByZWFkIGZyb20gQVdTLiBVbmRlZmluZWQgZm9yIGEgbm9uLUNvZGVCdWlsZCBhY3Rpb24sIGEgbm9uLXRlcm1pbmFsIGV2ZW50LFxuICAgKiBvciB3aGVuIHRoZSByZWFkIGZhaWxlZCDigJQgdGhlIGluZ2VzdCB0aGVuIHJlY29yZHMgdGhlIGFjdGlvbiBhcyBVTk1FQVNVUkVEXG4gICAqIHJhdGhlciB0aGFuIGFzIGZyZWUsIHdoaWNoIGlzIHdoYXQgbWFrZXMgdGhlIGNvdmVyYWdlIGdhcCB2aXNpYmxlIGluc3RlYWQgb2ZcbiAgICogbG9va2luZyBsaWtlIGlkbGVuZXNzLlxuICAgKlxuICAgKiBJdHMgb3duIGZpZWxkIHJhdGhlciB0aGFuIGEgYGRldGFpbGAga2V5LCBmb3IgdGhlIHJlYXNvbiBgZmFpbHVyZWAgaGFzIG9uZTpcbiAgICogYGRldGFpbGAgaXMgYm91bmRlZCBhdCA4IEtCIGFuZCBhbHJlYWR5IHNoZWRzIGNvbnRlbnQgdW5kZXIgdGhhdCBib3VuZCwgc28gYVxuICAgKiBvbmUtd29yZCBmaWVsZCByaWRpbmcgaW5zaWRlIGl0IGlzIGEgZmllbGQgdGhhdCBjYW4gYmUgZHJvcHBlZCBieSBhblxuICAgKiB1bnJlbGF0ZWQgcGF5bG9hZCBnZXR0aW5nIGxhcmdlLlxuICAgKi9cbiAgY29tcHV0ZVR5cGU/OiBzdHJpbmc7XG4gIC8qKiBEZXBsb3kgZW52aXJvbm1lbnQg4oCUIHNldCBvbmx5IHdoZW4gdGhlIGV2ZW50J3Mgc3RhZ2UgaXMgbGlzdGVkIGluIHRoZVxuICAgKiAgcGlwZWxpbmUncyBgcGIuZGVwbG95c2AgdGFnLiBVbmRlZmluZWQgb3RoZXJ3aXNlICjih5Igbm90IGEgZGVwbG95KS4gKi9cbiAgZW52aXJvbm1lbnQ/OiBzdHJpbmc7XG4gIC8qKiBUaGUgRXZlbnRCcmlkZ2UgZXZlbnQgYGlkYCAo4omkMTI4KSDigJQgbGV0cyB0aGUgc2VydmVyJ3MgYXVkaXQgdHJhaWwgbmFtZSB0aGVcbiAgICogIGV4YWN0IEFXUyBldmVudCBhIHJvdyBjYW1lIGZyb20uIFVuZGVmaW5lZCB3aGVuIHRoZSBib2R5IGNhcnJpZXMgbm9uZS4gKi9cbiAgc291cmNlRXZlbnRJZD86IHN0cmluZztcbiAgLyoqIFRoZSBTUVMgcmVjb3JkJ3MgbWVzc2FnZUlkICjiiaQxMjgpIOKAlCB0aGUgZGVsaXZlcnkgdGhhdCBjYXJyaWVkIHRoZSBldmVudC4gKi9cbiAgc291cmNlTWVzc2FnZUlkPzogc3RyaW5nO1xuICBkZXRhaWw6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKiogQ2FwIG9uIGBzb3VyY2VFdmVudElkYCAvIGBzb3VyY2VNZXNzYWdlSWRgIOKAlCB0aGUgcmVwb3J0aW5nIGluZ2VzdCdzIG1heC4gKi9cbmNvbnN0IE1BWF9TT1VSQ0VfSUQgPSAxMjg7XG5cbi8qKiBBIG5vbi1lbXB0eSBzdHJpbmcgY2FwcGVkIHRvIGBNQVhfU09VUkNFX0lEYCwgZWxzZSB1bmRlZmluZWQuICovXG5mdW5jdGlvbiBzb3VyY2VJZCh2OiB1bmtub3duKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHR5cGVvZiB2ID09PSAnc3RyaW5nJyAmJiB2Lmxlbmd0aCA+IDAgPyB2LnNsaWNlKDAsIE1BWF9TT1VSQ0VfSUQpIDogdW5kZWZpbmVkO1xufVxuXG4vKiogQ2FwIG9uIHRoZSBzdG9yZWQgZmFpbHVyZSBzdW1tYXJ5IOKAlCBDb2RlQnVpbGQvRGVwbG95IHN1bW1hcmllcyBjYW4gYmUgbG9uZy4gKi9cbmNvbnN0IE1BWF9FUlJPUl9NRVNTQUdFID0gNDAwMDtcblxuLyoqIEhlYWRyb29tIHVuZGVyIHRoZSByZXBvcnRpbmcgaW5nZXN0J3MgOCBLQiBzZXJpYWxpemVkIGBkZXRhaWxgIGJvdW5kLiAqL1xuY29uc3QgTUFYX0RFVEFJTF9CWVRFUyA9IDc1MDA7XG5cbi8qKiBGaXJzdCBub24tZW1wdHkgc3RyaW5nIGFtb25nIHRoZSBjYW5kaWRhdGVzLCBjYXBwZWQgdG8gdGhlIGluZ2VzdCBtYXguICovXG5mdW5jdGlvbiBmaXJzdEF0dHIoLi4udmFsczogdW5rbm93bltdKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgZm9yIChjb25zdCB2IG9mIHZhbHMpIHtcbiAgICBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYubGVuZ3RoID4gMCkgcmV0dXJuIHYuc2xpY2UoMCwgTUFYX0FUVFIpO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQmVzdC1lZmZvcnQgZXh0cmFjdGlvbiBvZiB0aGUgc291cmNlIGNvbW1pdCBpZCArIHJlZiAoYW5kIHRoZSByZXZpc2lvbiBVUkwsIHVzZWRcbiAqIG9ubHkgaW4tYWNjb3VudCB0byBjbGFzc2lmeSB0aGUgc291cmNlIHR5cGUgZm9yIGNvbW1pdC1yYW5nZSByZXNvbHV0aW9uKSBmcm9tIGFcbiAqIENvZGVQaXBlbGluZSBldmVudCBkZXRhaWwuIENvZGVQaXBlbGluZSBzdXJmYWNlcyB0aGUgc291cmNlIHJldmlzaW9uIHVuZGVyIGEgZmV3XG4gKiBzaGFwZXMgZGVwZW5kaW5nIG9uIHRoZSBldmVudCB0eXBlIC8gc291cmNlLWFjdGlvbjsgd2UgY2hlY2sgdGhlIGtub3duIG9uZXMgYW5kXG4gKiBsZWF2ZSB0aGUgZmllbGRzIHVuZGVmaW5lZCB3aGVuIG5vbmUgYXJlIHByZXNlbnQgKE5VTEwgZG93bnN0cmVhbSkuIE5ldmVyIHB1bGxzIGFuXG4gKiBBUk4vYWNjb3VudCBpZDogb25seSByZXZpc2lvbi9icmFuY2gvdXJsIHN0cmluZyBmaWVsZHMgYXJlIHJlYWQ7IHRoZSByZXZpc2lvblVybFxuICogaXMgY29uc3VtZWQgaW4tYWNjb3VudCAoc291cmNlIGNsYXNzaWZpY2F0aW9uKSBhbmQgbmV2ZXIgZm9yd2FyZGVkIG9uIGl0cyBvd24uXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RDb21taXQoZGV0YWlsOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHsgY29tbWl0U2hhPzogc3RyaW5nOyBjb21taXRSZWY/OiBzdHJpbmc7IHJldmlzaW9uVXJsPzogc3RyaW5nIH0ge1xuICAvLyBgc291cmNlLXJldmlzaW9uc2AgKGtlYmFiLCBFdmVudEJyaWRnZSkgLyBgc291cmNlUmV2aXNpb25zYCAoY2FtZWwpIOKAlCBmaXJzdCBlbnRyeS5cbiAgY29uc3QgcmV2cyA9IChkZXRhaWxbJ3NvdXJjZS1yZXZpc2lvbnMnXSA/PyBkZXRhaWwuc291cmNlUmV2aXNpb25zKSBhc1xuICAgIHwgQXJyYXk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHwgdW5kZWZpbmVkO1xuICBjb25zdCBmaXJzdFJldiA9IEFycmF5LmlzQXJyYXkocmV2cykgPyByZXZzWzBdIDogdW5kZWZpbmVkO1xuICAvLyBPbiBzb3VyY2UgYWN0aW9ucyB0aGUgcmV2aXNpb24gaWQgY2FuIGFsc28gcmlkZSBvbiBgZXhlY3V0aW9uLXJlc3VsdGAuXG4gIGNvbnN0IGV4ZWNSZXN1bHQgPSBkZXRhaWxbJ2V4ZWN1dGlvbi1yZXN1bHQnXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICBjb25zdCBjb21taXRTaGEgPSBmaXJzdEF0dHIoXG4gICAgZGV0YWlsLmNvbW1pdElkLFxuICAgIGRldGFpbC5yZXZpc2lvbklkLFxuICAgIGZpcnN0UmV2Py5yZXZpc2lvbklkLFxuICAgIGV4ZWNSZXN1bHQ/LnJldmlzaW9uSWQsXG4gICk7XG4gIGNvbnN0IGNvbW1pdFJlZiA9IGZpcnN0QXR0cihcbiAgICBkZXRhaWwuY29tbWl0UmVmLFxuICAgIGRldGFpbC5icmFuY2gsXG4gICAgZGV0YWlsLnNvdXJjZUJyYW5jaCxcbiAgICBmaXJzdFJldj8uYnJhbmNoTmFtZSxcbiAgICBmaXJzdFJldj8uYnJhbmNoLFxuICApO1xuICBjb25zdCByZXZpc2lvblVybCA9IHR5cGVvZiBmaXJzdFJldj8ucmV2aXNpb25VcmwgPT09ICdzdHJpbmcnID8gZmlyc3RSZXYucmV2aXNpb25VcmwgOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHsgLi4uKGNvbW1pdFNoYSAmJiB7IGNvbW1pdFNoYSB9KSwgLi4uKGNvbW1pdFJlZiAmJiB7IGNvbW1pdFJlZiB9KSwgLi4uKHJldmlzaW9uVXJsICYmIHsgcmV2aXNpb25VcmwgfSkgfTtcbn1cblxuZnVuY3Rpb24gY2xhc3NpZnlFdmVudChkZXRhaWxUeXBlOiBzdHJpbmcpOiB7IGV2ZW50VHlwZTogc3RyaW5nOyBldmVudFNvdXJjZTogc3RyaW5nIH0ge1xuICBpZiAoZGV0YWlsVHlwZS5pbmNsdWRlcygnUGlwZWxpbmUgRXhlY3V0aW9uJykpIHJldHVybiB7IGV2ZW50VHlwZTogJ1BJUEVMSU5FJywgZXZlbnRTb3VyY2U6ICdjb2RlcGlwZWxpbmUnIH07XG4gIGlmIChkZXRhaWxUeXBlLmluY2x1ZGVzKCdTdGFnZSBFeGVjdXRpb24nKSkgcmV0dXJuIHsgZXZlbnRUeXBlOiAnU1RBR0UnLCBldmVudFNvdXJjZTogJ2NvZGVwaXBlbGluZScgfTtcbiAgaWYgKGRldGFpbFR5cGUuaW5jbHVkZXMoJ0FjdGlvbiBFeGVjdXRpb24nKSkgcmV0dXJuIHsgZXZlbnRUeXBlOiAnQUNUSU9OJywgZXZlbnRTb3VyY2U6ICdjb2RlcGlwZWxpbmUnIH07XG4gIC8vIENvZGVCdWlsZCBcIkJ1aWxkIFN0YXRlXCIgZXZlbnRzIGlkZW50aWZ5IGEgYnVpbGQgKnByb2plY3QqLCBub3QgYSBwaXBlbGluZSwgc29cbiAgLy8gcGFyc2VSZWNvcmQgZHJvcHMgdGhlbSBvbiB0aGUgYGV2ZW50U291cmNlICE9PSAnY29kZXBpcGVsaW5lJ2AgY2hlY2sgYmVsb3cg4oCUXG4gIC8vIHRoZSAnQlVJTEQnIGV2ZW50VHlwZSBpcyBuZXZlciBwZXJzaXN0ZWQgaGVyZSAocGx1Z2luIEJVSUxEIGV2ZW50cyBhcmVcbiAgLy8gcmVjb3JkZWQgZGlyZWN0bHkgYnkgdGhlIHBsdWdpbiBzZXJ2aWNlKS4gVGhlICdjb2RlYnVpbGQnIHNvdXJjZSBpcyB3aGF0XG4gIC8vIHJvdXRlcyB0aGUgZHJvcDsga2VlcCB0aGlzIGJyYW5jaCBvbmx5IGZvciB0aGF0LlxuICBpZiAoZGV0YWlsVHlwZS5pbmNsdWRlcygnQnVpbGQgU3RhdGUnKSkgcmV0dXJuIHsgZXZlbnRUeXBlOiAnQlVJTEQnLCBldmVudFNvdXJjZTogJ2NvZGVidWlsZCcgfTtcbiAgcmV0dXJuIHsgZXZlbnRUeXBlOiAnUElQRUxJTkUnLCBldmVudFNvdXJjZTogJ2NvZGVwaXBlbGluZScgfTtcbn1cblxuLyoqIFBhcnNlICsgcmVzb2x2ZSBvbmUgcmVjb3JkIHRvIGEgcmVwb3J0YWJsZSBldmVudCwgb3IgbnVsbCB0byBza2lwIGl0LiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBhcnNlUmVjb3JkKHJlY29yZDogU1FTUmVjb3JkKTogUHJvbWlzZTxQYXJzZWRFdmVudCB8IG51bGw+IHtcbiAgbGV0IGV2ZW50OiB7XG4gICAgJ2lkJz86IHN0cmluZztcbiAgICAnZGV0YWlsLXR5cGUnOiBzdHJpbmc7XG4gICAgJ3NvdXJjZSc6IHN0cmluZztcbiAgICAnZGV0YWlsJzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgJ3RpbWUnOiBzdHJpbmc7XG4gICAgJ3JlZ2lvbic6IHN0cmluZztcbiAgICAnYWNjb3VudCc6IHN0cmluZztcbiAgfTtcbiAgLy8gQSBtYWxmb3JtZWQgYm9keSBpcyBhIGRlYWQgbWVzc2FnZSAocmV0cnlpbmcgd29uJ3QgaGVscCkg4oCUIGxvZyArIHNraXAgaXQgc29cbiAgLy8gaXQgY2FuJ3QgZmFpbCB0aGUgd2hvbGUgYmF0Y2guIFJlc29sdXRpb24gZXJyb3JzIGJlbG93IChlLmcuIEFjY2Vzc0RlbmllZClcbiAgLy8gYXJlIE5PVCBjYXVnaHQgaGVyZTogdGhvc2UgYXJlIHRyYW5zaWVudC9pbmZyYSBhbmQgbXVzdCBwcm9wYWdhdGUgdG8gcmV0cnkuXG4gIHRyeSB7XG4gICAgZXZlbnQgPSBKU09OLnBhcnNlKHJlY29yZC5ib2R5KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLndhcm4oJ1NraXBwaW5nIFNRUyByZWNvcmQgd2l0aCB1bnBhcnNlYWJsZSBib2R5JywgeyBtZXNzYWdlSWQ6IHJlY29yZC5tZXNzYWdlSWQsIGVycm9yOiBTdHJpbmcoZXJyKSB9KTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHsgZXZlbnRUeXBlLCBldmVudFNvdXJjZSB9ID0gY2xhc3NpZnlFdmVudChldmVudFsnZGV0YWlsLXR5cGUnXSk7XG4gIGNvbnN0IGRldGFpbCA9IHsgLi4uZXZlbnQuZGV0YWlsIH07XG4gIC8vIFRoZSByYXcgYWNjb3VudCBuZXZlciBuZWVkcyB0byBsZWF2ZSBBV1Mgbm93IOKAlCBkcm9wIGl0IGZyb20gdGhlIHBheWxvYWQuXG4gIGRlbGV0ZSBkZXRhaWwuYWNjb3VudDtcblxuICAvLyBDb2RlQnVpbGQgXCJCdWlsZCBTdGF0ZVwiIGV2ZW50cyBpZGVudGlmeSBhIGJ1aWxkICpwcm9qZWN0Kiwgbm90IGEgcGlwZWxpbmUsXG4gIC8vIGFuZCBhIHByb2plY3QgY2FuIGJlIHNoYXJlZCBhY3Jvc3MgcGlwZWxpbmVzIOKAlCB0aGVyZSdzIG5vIGNsZWFuIDE6MSBtYXBwaW5nXG4gIC8vIHRvIGEgcGlwZWxpbmUgaWQsIHNvIHNraXAgdGhlbS5cbiAgaWYgKGV2ZW50U291cmNlICE9PSAnY29kZXBpcGVsaW5lJykge1xuICAgIGxvZy53YXJuKCdTa2lwcGluZyBub24tQ29kZVBpcGVsaW5lIGV2ZW50IChubyBwaXBlbGluZSB0YWcgdG8gcmVzb2x2ZSknLCB7IGRldGFpbFR5cGU6IGV2ZW50WydkZXRhaWwtdHlwZSddIH0pO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgcGlwZWxpbmVOYW1lID0gZGV0YWlsLnBpcGVsaW5lIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgaWYgKCFwaXBlbGluZU5hbWUpIHtcbiAgICBsb2cud2FybignQ29kZVBpcGVsaW5lIGV2ZW50IG1pc3NpbmcgcGlwZWxpbmUgbmFtZSDigJQgc2tpcHBpbmcnKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIFJlc29sdmUgdGhlIHBpcGVsaW5lJ3MgcGIucGlwZWxpbmUtaWQgKD0gcGxhdGZvcm0gcGlwZWxpbmVJZCkgKyBwYi5kZXBsb3lzIG1hcC5cbiAgLy8gVGhlIEFSTiBpcyBvbmx5IGEgdHJhbnNpZW50IGhhbmRsZSBmb3IgdGhlIHRhZyBsb29rdXA7IGl0IGlzIG5ldmVyIHN0b3JlZC5cbiAgY29uc3QgYXJuID0gYGFybjphd3M6Y29kZXBpcGVsaW5lOiR7ZXZlbnQucmVnaW9ufToke2V2ZW50LmFjY291bnR9OiR7cGlwZWxpbmVOYW1lfWA7XG4gIGNvbnN0IHsgcGlwZWxpbmVJZCwgb3JnSWQsIGRlcGxveXMgfSA9IGF3YWl0IHJlc29sdmVQaXBlbGluZShhcm4sIGV2ZW50LnJlZ2lvbik7XG4gIGlmICghcGlwZWxpbmVJZCkgcmV0dXJuIG51bGw7IC8vIHVudGFnZ2VkIC8gdW5yZWdpc3RlcmVkIOKGkiBza2lwXG5cbiAgLy8gQVdTIGRvZXMgbm90IGFsd2F5cyBzZW5kIGBzdGFydC10aW1lYC4gYGV2ZW50LnRpbWVgIHN0YW5kcyBpbiBmb3IgaXQgc28gdGhlXG4gIC8vIHJvdyBzdGlsbCBsYW5kcyBpbiB0aGUgcmVwb3J0IHdpbmRvd3MsIHdoaWNoIGZpbHRlciBvbiBgc3RhcnRlZF9hdGAg4oCUIGJ1dCBpdFxuICAvLyBpcyBOT1QgYSBtZWFzdXJlbWVudCwgYW5kIHRoZSBkdXJhdGlvbiBiZWxvdyBtdXN0IG5vdCBiZSBjb21wdXRlZCBmcm9tIGl0LlxuICBjb25zdCBkZWNsYXJlZFN0YXJ0ID0gZGV0YWlsWydzdGFydC10aW1lJ10gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBjb25zdCBzdGFydGVkQXQgPSBkZWNsYXJlZFN0YXJ0IHx8IGV2ZW50LnRpbWU7XG4gIGNvbnN0IHN0YXRlID0gZGV0YWlsLnN0YXRlIGFzIHN0cmluZztcblxuICBsZXQgZHVyYXRpb25NczogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBsZXQgY29tcGxldGVkQXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBpZiAoWydTVUNDRUVERUQnLCAnRkFJTEVEJywgJ0NBTkNFTEVEJywgJ1NUT1BQRUQnXS5pbmNsdWRlcyhzdGF0ZSkpIHtcbiAgICBjb21wbGV0ZWRBdCA9IGV2ZW50LnRpbWU7XG4gICAgLy8gT05MWSBmcm9tIGEgc3RhcnQgQVdTIGFjdHVhbGx5IGRlY2xhcmVkLiBXaXRoIHRoZSBmYWxsYmFjaywgYHN0YXJ0ZWRBdGAgYW5kXG4gICAgLy8gYGNvbXBsZXRlZEF0YCBhcmUgYm90aCBgZXZlbnQudGltZWAgb24gYSB0ZXJtaW5hbCBldmVudCwgc28gdGhlIGR1cmF0aW9uIGNhbWVcbiAgICAvLyBvdXQgYXMgZXhhY3RseSAwIOKAlCByZXBvcnRlZCBhcyBhIHJlYWwgbWVhc3VyZW1lbnQsIGRyYWdnaW5nIGV2ZXJ5IGF2ZXJhZ2UgYW5kXG4gICAgLy8gcDk1IHN0YWdlIGR1cmF0aW9uIHRvd2FyZCB6ZXJvIHdpdGggbm8gc2lnbiBhbnl0aGluZyB3YXMgbWlzc2luZy4gVW5rbm93biBpc1xuICAgIC8vIGxlZnQgdW5rbm93biAoTlVMTCksIHdoaWNoIHRoZSByZXBvcnRzIGFscmVhZHkgaGFuZGxlLlxuICAgIGlmIChkZWNsYXJlZFN0YXJ0KSB7XG4gICAgICBjb25zdCBtcyA9IG5ldyBEYXRlKGNvbXBsZXRlZEF0KS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShkZWNsYXJlZFN0YXJ0KS5nZXRUaW1lKCk7XG4gICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKG1zKSAmJiBtcyA+PSAwKSBkdXJhdGlvbk1zID0gbXM7XG4gICAgfVxuICB9XG5cbiAgLy8gUHJvbW90ZSB0aGUgZmFpbHVyZSByZWFzb24gdG8gYSB0eXBlZCBmaWVsZC4gT24gQWN0aW9uIGV2ZW50cyBBV1MgcHV0cyB0aGVcbiAgLy8gaHVtYW4tcmVhZGFibGUgc3VtbWFyeSAoYW5kIGEgbG9nIFVSTCArIGVycm9yLWNvZGUsIHdoaWNoIHN0YXkgaW4gYGRldGFpbGApXG4gIC8vIHVuZGVyIGBleGVjdXRpb24tcmVzdWx0YC5cbiAgY29uc3QgcmVzdWx0ID0gZGV0YWlsWydleGVjdXRpb24tcmVzdWx0J10gYXMgeyAnZXh0ZXJuYWwtZXhlY3V0aW9uLXN1bW1hcnknPzogdW5rbm93biB9IHwgdW5kZWZpbmVkO1xuICBjb25zdCBzdW1tYXJ5ID0gcmVzdWx0Py5bJ2V4dGVybmFsLWV4ZWN1dGlvbi1zdW1tYXJ5J107XG4gIGxldCBlcnJvck1lc3NhZ2UgPSB0eXBlb2Ygc3VtbWFyeSA9PT0gJ3N0cmluZycgJiYgc3VtbWFyeS5sZW5ndGggPiAwXG4gICAgPyBzdW1tYXJ5LnNsaWNlKDAsIE1BWF9FUlJPUl9NRVNTQUdFKVxuICAgIDogdW5kZWZpbmVkO1xuXG4gIC8vIEEgZmFpbGVkIENvZGVCdWlsZCBhY3Rpb24gbWF5IGhhdmUgcHJpbnRlZCBhIHN0cnVjdHVyZWQgcmVhc29uICh0aGUgc3ludGgnc1xuICAvLyBgUEJfU1lOVEhfRkFJTFVSRWAgbGluZSDigJQgYSByZWZ1c2VkIHBsdWdpbiwgd2l0aCBpdHMgY29kZSkuIENvZGVCdWlsZCdzXG4gIC8vIHN1bW1hcnkgbmV2ZXIgY2FycmllcyB0aGUgYnVpbGQgb3V0cHV0LCBzbyByZWFkIGl0IGZyb20gdGhlIGJ1aWxkJ3MgbG9nIGFuZFxuICAvLyBwcm9tb3RlIGl0OiB0aGUgY29kZSArIG1lc3NhZ2UgYmVjb21lIHRoZSBmYWlsdXJlIHJlYXNvbiwgdGhlIHBlci1wbHVnaW5cbiAgLy8gbGlzdCByaWRlcyBpbiBgZGV0YWlsLnBiRmFpbHVyZWAuIEJlc3QtZWZmb3J0IChzZWUgZmFpbHVyZS1yZWFzb24udHMpLlxuICAvLyBUaGUgY29tcHV0ZSBzaXplIHRoaXMgYWN0aW9uIHJhbiBvbiwgZm9yIHRoZSB2Q1BVLW1pbnV0ZSBmaWd1cmUgUGhhc2UgNFxuICAvLyBtZWFzdXJlcy4gT25seSBvbiBhIFRFUk1JTkFMIENvZGVCdWlsZCBhY3Rpb246IGFuIGluLXByb2dyZXNzIGV2ZW50IGhhcyBub1xuICAvLyBkdXJhdGlvbiB0byBwYWlyIGl0IHdpdGgsIHNvIHJlYWRpbmcgaXQgdGhlcmUgd291bGQgc3BlbmQgYW4gQVdTIGNhbGwgdG9cbiAgLy8gbGVhcm4gbm90aGluZy4gQmVzdC1lZmZvcnQg4oCUIG51bGwgZm9yd2FyZHMgd2l0aG91dCB0aGUgZmllbGQuXG4gIGxldCBjb21wdXRlVHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpZiAoZXZlbnRUeXBlID09PSAnQUNUSU9OJyAmJiBbJ1NVQ0NFRURFRCcsICdGQUlMRUQnLCAnU1RPUFBFRCddLmluY2x1ZGVzKHN0YXRlKSkge1xuICAgIGNvbnN0IGNiSWQgPSBjb2RlQnVpbGRJZE9mKGRldGFpbCk7XG4gICAgY29tcHV0ZVR5cGUgPSAoY2JJZCA/IGF3YWl0IHJlYWRCdWlsZENvbXB1dGUoZXZlbnQucmVnaW9uLCBjYklkKSA6IG51bGwpID8/IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmIChldmVudFR5cGUgPT09ICdBQ1RJT04nICYmIHN0YXRlID09PSAnRkFJTEVEJykge1xuICAgIGNvbnN0IGJ1aWxkSWQgPSBjb2RlQnVpbGRJZE9mKGRldGFpbCk7XG4gICAgY29uc3QgZmFpbHVyZSA9IGJ1aWxkSWQgPyBhd2FpdCByZWFkU3ludGhGYWlsdXJlKGV2ZW50LnJlZ2lvbiwgYnVpbGRJZCkgOiBudWxsO1xuICAgIGlmIChmYWlsdXJlKSB7XG4gICAgICBkZXRhaWwucGJGYWlsdXJlID0gZmFpbHVyZTtcbiAgICAgIC8vIFRoZSBpbmdlc3QgYm91bmRzIGBkZXRhaWxgIGF0IDggS0Igc2VyaWFsaXplZDsga2VlcCB0aGUgY29kZXMsIGRyb3AgdGhlXG4gICAgICAvLyBwZXItcGx1Z2luIHByb3NlIGlmIHRoZSB3aG9sZSB0aGluZyB3b3VsZCBub3QgZml0LlxuICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGRldGFpbCkubGVuZ3RoID49IE1BWF9ERVRBSUxfQllURVMpIHtcbiAgICAgICAgZGV0YWlsLnBiRmFpbHVyZSA9IHsgLi4uZmFpbHVyZSwgcGx1Z2luczogZmFpbHVyZS5wbHVnaW5zLm1hcCgoeyBwbHVnaW4sIGNvZGUgfSkgPT4gKHsgcGx1Z2luLCBjb2RlIH0pKSB9O1xuICAgICAgfVxuICAgICAgZXJyb3JNZXNzYWdlID0gYCR7ZmFpbHVyZS5jb2RlfTogJHtmYWlsdXJlLm1lc3NhZ2V9YC5zbGljZSgwLCBNQVhfRVJST1JfTUVTU0FHRSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQXVkaXQgY29ycmVsYXRpb24gYmFjayB0byB0aGUgQVdTIHNpZGU6IHdoaWNoIEV2ZW50QnJpZGdlIGV2ZW50LCBjYXJyaWVkIGJ5XG4gIC8vIHdoaWNoIFNRUyBkZWxpdmVyeS4gQm90aCBhcmUgb3BhcXVlIGlkcyAobm8gQVJOLCBubyBhY2NvdW50KS5cbiAgY29uc3Qgc291cmNlRXZlbnRJZCA9IHNvdXJjZUlkKGV2ZW50LmlkKTtcbiAgY29uc3Qgc291cmNlTWVzc2FnZUlkID0gc291cmNlSWQocmVjb3JkLm1lc3NhZ2VJZCk7XG5cbiAgLy8gRE9SQSBkZXBsb3kgYXR0cmlidXRpb24g4oCUIGFsbCBvcHRpb25hbDogb21pdHRlZCAodW5kZWZpbmVkKSB3aGVuIHRoZVxuICAvLyBldmVudC9waXBlbGluZSBkb2Vzbid0IGNhcnJ5IHRoZW0uXG4gIGNvbnN0IHsgY29tbWl0U2hhLCBjb21taXRSZWYsIHJldmlzaW9uVXJsIH0gPSBleHRyYWN0Q29tbWl0KGRldGFpbCk7XG5cbiAgY29uc3QgZXhlY3V0aW9uSWQgPSBkZXRhaWxbJ2V4ZWN1dGlvbi1pZCddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgY29uc3Qgc3RhZ2VOYW1lID0gZGV0YWlsLnN0YWdlIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgY29uc3QgYWN0aW9uTmFtZSA9IGRldGFpbC5hY3Rpb24gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8vIEVudmlyb25tZW50ICjih5IgaXNEZXBsb3kpIGlzIHNldCBPTkxZIHdoZW4gdGhpcyBldmVudCdzIHN0YWdlIGlzIGxpc3RlZCBpbiB0aGVcbiAgLy8gcGlwZWxpbmUncyBwYi5kZXBsb3lzIHRhZy4gUElQRUxJTkUgZXZlbnRzIGhhdmUgbm8gc3RhZ2Ug4oaSIG5ldmVyIGEgZGVwbG95LlxuICBjb25zdCBlbnZpcm9ubWVudCA9IHN0YWdlTmFtZSA/IGRlcGxveXMuZ2V0KHN0YWdlTmFtZSkgOiB1bmRlZmluZWQ7XG5cbiAgLy8gUmVzb2x2ZSB0aGUgY29tbWl0IHJhbmdlIChvbGRlc3QtdW5zaGlwcGVkIHRpbWVzdGFtcCArIGNvdW50KSBmb3IgYW55XG4gIC8vIGV2ZW50IGNhcnJ5aW5nIGEgY29tbWl0LiBCZXN0LWVmZm9ydC9pbi1hY2NvdW50OyBvbWl0dGVkIG9uIGFueSBmYWlsdXJlLlxuICAvLyBHQVRFRCBvbiBgRE9SQV9FTkFCTEVEYCAoc2V0IGJ5IGBzZXR1cC1ldmVudHMgLS13aXRoLWRvcmFgKTogRE9SQSBsZWFkIHRpbWUgaXMgYW5cbiAgLy8gYWR2YW5jZWRfcmVwb3J0aW5nIGFkZC1vbiwgc28gb3JncyB3aXRob3V0IGl0IHNraXAgdGhlIFNDTS9zZWNyZXQgY29zdCBlbnRpcmVseSDigJRcbiAgLy8gc3RhbmRhcmQgcmVwb3J0aW5nIChjb21taXRTaGEgKyBhbGwgb3RoZXIgZmllbGRzKSBzdGlsbCBmb3J3YXJkcyByZWdhcmRsZXNzLlxuICBsZXQgY29tbWl0VGltZXN0YW1wOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGxldCBjb21taXRDb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBpZiAoY29tbWl0U2hhICYmIHByb2Nlc3MuZW52LkRPUkFfRU5BQkxFRCA9PT0gJ3RydWUnKSB7XG4gICAgY29uc3Qgc3JjID0gY2xhc3NpZnlTb3VyY2UocmV2aXNpb25VcmwpO1xuICAgIGNvbnN0IGluZm8gPSBhd2FpdCByZXNvbHZlQ29tbWl0SW5mbyhwaXBlbGluZUlkLCBvcmdJZCwgZXZlbnQucmVnaW9uLCB7IHNoYTogY29tbWl0U2hhLCAuLi5zcmMgfSk7XG4gICAgY29tbWl0VGltZXN0YW1wID0gaW5mby5jb21taXRUaW1lc3RhbXA7XG4gICAgY29tbWl0Q291bnQgPSBpbmZvLmNvbW1pdENvdW50O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBvcmdJZCxcbiAgICBwaXBlbGluZUlkLFxuICAgIGV2ZW50U291cmNlLFxuICAgIGV2ZW50VHlwZSxcbiAgICBzdGF0dXM6IHN0YXRlLFxuICAgIGV4ZWN1dGlvbklkLFxuICAgIHN0YWdlTmFtZSxcbiAgICBhY3Rpb25OYW1lLFxuICAgIGVycm9yTWVzc2FnZSxcbiAgICBzdGFydGVkQXQsXG4gICAgY29tcGxldGVkQXQsXG4gICAgZHVyYXRpb25NcyxcbiAgICAuLi4oY29tbWl0U2hhICYmIHsgY29tbWl0U2hhIH0pLFxuICAgIC4uLihjb21taXRSZWYgJiYgeyBjb21taXRSZWYgfSksXG4gICAgLi4uKGNvbW1pdFRpbWVzdGFtcCAmJiB7IGNvbW1pdFRpbWVzdGFtcCB9KSxcbiAgICAuLi4oY29tbWl0Q291bnQgJiYgeyBjb21taXRDb3VudCB9KSxcbiAgICAuLi4oZW52aXJvbm1lbnQgJiYgeyBlbnZpcm9ubWVudCB9KSxcbiAgICAuLi4oY29tcHV0ZVR5cGUgJiYgeyBjb21wdXRlVHlwZSB9KSxcbiAgICAuLi4oc291cmNlRXZlbnRJZCAmJiB7IHNvdXJjZUV2ZW50SWQgfSksXG4gICAgLi4uKHNvdXJjZU1lc3NhZ2VJZCAmJiB7IHNvdXJjZU1lc3NhZ2VJZCB9KSxcbiAgICBkZXRhaWwsXG4gIH07XG59XG4iXX0=
package/lib/scm.js CHANGED
@@ -325,4 +325,4 @@ export function _resetScmForTests() {
325
325
  scmCooldownUntil = 0;
326
326
  githubTokenByOrg.clear();
327
327
  }
328
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NjbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBOEIxRixvRkFBb0Y7QUFDcEYsZ0ZBQWdGO0FBQ2hGLCtFQUErRTtBQUMvRSxnRkFBZ0Y7QUFDaEYseUNBQXlDO0FBQ3pDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxVQUFVLENBQXFCLGlCQUFpQixDQUFDLENBQUM7QUFDaEYscUZBQXFGO0FBQ3JGLG1GQUFtRjtBQUNuRiwrRUFBK0U7QUFDL0UsOEVBQThFO0FBQzlFLDBEQUEwRDtBQUMxRCxNQUFNLGlCQUFpQixHQUFHLElBQUksVUFBVSxDQUFpQixpQkFBaUIsQ0FBQyxDQUFDO0FBQzVFLGdGQUFnRjtBQUNoRiw4RUFBOEU7QUFDOUUsdUNBQXVDO0FBQ3ZDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztBQUMzQywyRUFBMkU7QUFDM0UsTUFBTSxlQUFlLEdBQUcsSUFBSSxVQUFVLENBQWdELGlCQUFpQixDQUFDLENBQUM7QUFDekcsZ0ZBQWdGO0FBQ2hGLElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLE1BQU0sZUFBZSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3RDLHNGQUFzRjtBQUN0RixNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7QUFDM0Isa0ZBQWtGO0FBQ2xGLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDO0FBRWxDLCtFQUErRTtBQUMv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RUFBRSxDQUFDO0lBQzFCLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QixnQkFBZ0IsR0FBRyxDQUFDLENBQUM7SUFDckIsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBHZXRTZWNyZXRWYWx1ZUNvbW1hbmQsIFNlY3JldHNNYW5hZ2VyQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNlY3JldHMtbWFuYWdlcic7XG5pbXBvcnQgeyBnZXRBdXRoVG9rZW4gfSBmcm9tICcuL2F1dGguanMnO1xuaW1wb3J0IHsgQm91bmRlZE1hcCwgQ0FDSEVfTUFYX0VOVFJJRVMsIGZldGNoV2l0aFRpbWVvdXQsIGxvYWRTZGssIGxvZyB9IGZyb20gJy4vdXRpbC5qcyc7XG5cbi8vIEluLWFjY291bnQgY29tbWl0LXJhbmdlIHJlc29sdXRpb24uXG4vLyBGb3IgYSBzb3VyY2UvZGVwbG95IGV2ZW50IGNhcnJ5aW5nIGEgY29tbWl0U2hhIHdlIHJlc29sdmUgdGhlIGNvbW1pdCB0aW1lc3RhbXBcbi8vIChhbmQgaG93IG1hbnkgY29tbWl0cyBzaGlwcGVkKSBmb3IgdGhlIHJhbmdlIHNpbmNlIHRoZSBsYXN0IHJlc29sdmVkIHNoYSBvZiB0aGVcbi8vIHNhbWUgcGlwZWxpbmUg4oCUIGVudGlyZWx5IElOLUFDQ09VTlQsIHBlciBzb3VyY2UgdHlwZTpcbi8vICAg4oCiIENvZGVDb21taXQgIOKGkiBBV1MgU0RLIEdldENvbW1pdCAod2FsayBmaXJzdC1wYXJlbnRzIGJhY2sgdG8gdGhlIGJvdW5kYXJ5KS5cbi8vICAg4oCiIEdpdEh1Yi9Db2RlQ29ubmVjdGlvbnMtR2l0SHViIOKGkiBHaXRIdWIgUkVTVCBjb21wYXJlL2NvbW1pdHMgQVBJLiBBdXRoZW50aWNhdGVkXG4vLyAgICAgd2l0aCB0aGUgb3JnJ3MgYHBpcGVsaW5lLWJ1aWxkZXIve29yZ0lkfS9naXRodWItdG9rZW5gIHNlY3JldCB3aGVuIHByZXNlbnRcbi8vICAgICAoZGVyaXZlZCBmcm9tIFBMQVRGT1JNX1NFQ1JFVF9OQU1FKSwgb3RoZXJ3aXNlIGJlc3QtZWZmb3J0IHVuYXV0aGVudGljYXRlZC5cbi8vICAg4oCiIEJpdGJ1Y2tldCAgIOKGkiBCaXRidWNrZXQgUkVTVCBjb21taXQgQVBJIChzaW5nbGUtY29tbWl0OyByYW5nZSB3YWxrIG9taXR0ZWQpLlxuLy8gVGhlIG9sZGVzdCB1bnNoaXBwZWQgY29tbWl0J3MgdGltZXN0YW1wIOKGkiBgY29tbWl0VGltZXN0YW1wYDsgdGhlIG51bWJlciBvZiBjb21taXRzXG4vLyBpbiB0aGUgcmFuZ2Ug4oaSIGBjb21taXRDb3VudGAuIEV2ZXJ5dGhpbmcgaGVyZSBpcyBCRVNULUVGRk9SVDogb24gYW55IGZhaWx1cmUgdGhlXG4vLyBmaWVsZHMgYXJlIHNpbXBseSBvbWl0dGVkIChyZXBvcnRpbmcgZmFsbHMgYmFjayB0byBgdW5rbm93bmApLiBJdCBtdXN0IE5FVkVSIGZhaWxcbi8vIHRoZSBiYXRjaC5cbi8vXG4vLyBJQU0gcmVxdWlyZWQgYnkgdGhpcyBwYXRoIChkb2N1bWVudCBvbmx5IOKAlCBncmFudGVkIG9uIHRoZSBldmVudHMgc3RhY2spOlxuLy8gICDigKIgY29kZWNvbW1pdDpHZXRDb21taXQgICAgICAgICAgICAoQ29kZUNvbW1pdCBzb3VyY2VzKVxuLy8gICDigKIgc2VjcmV0c21hbmFnZXI6R2V0U2VjcmV0VmFsdWUgb24gYHBpcGVsaW5lLWJ1aWxkZXIvKi9naXRodWItdG9rZW5gICh0b2tlbiBTQ00gc291cmNlcylcblxudHlwZSBTb3VyY2VQcm92aWRlciA9ICdnaXRodWInIHwgJ2JpdGJ1Y2tldCcgfCAnY29kZWNvbW1pdCcgfCAndW5rbm93bic7XG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZVJlZiB7XG4gIHNoYTogc3RyaW5nO1xuICBwcm92aWRlcjogU291cmNlUHJvdmlkZXI7XG4gIG93bmVyPzogc3RyaW5nO1xuICByZXBvPzogc3RyaW5nO1xuICByZXBvc2l0b3J5TmFtZT86IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWl0SW5mbyB7IGNvbW1pdFRpbWVzdGFtcD86IHN0cmluZzsgY29tbWl0Q291bnQ/OiBudW1iZXIgfVxuXG4vLyBQZXItKHBpcGVsaW5lLHNoYSkgcmVzb2x2ZWQgcmVzdWx0IOKAlCBjb21wdXRlZCBvbmNlLCByZXVzZWQgYWNyb3NzIHRoZSBtYW55IGV2ZW50c1xuLy8gKFBJUEVMSU5FL1NUQUdFL0FDVElPTikgdGhhdCBzaGFyZSBhIHNvdXJjZSByZXZpc2lvbiBhbmQgYWNyb3NzIHJlZGVsaXZlcmllcy5cbi8vIE9ubHkgUkVTT0xWRUQgcmVzdWx0cyBhcmUgY2FjaGVkIOKAlCBhbiBlbXB0eSBge31gIChTQ00gY29vbGRvd24sIGEgdGltZW91dCwgYVxuLy8gNDA0IGZyb20gYSByZXBvIHdob3NlIHRva2VuIHdhcyBqdXN0IGFkZGVkKSBtdXN0IG5vdCBwaW4gXCJubyBjb21taXQgaW5mb1wiIGZvclxuLy8gdGhhdCBzaGEgZm9yIHRoZSBjb250YWluZXIncyBsaWZldGltZS5cbmNvbnN0IGNvbW1pdFJlc3VsdENhY2hlID0gbmV3IEJvdW5kZWRNYXA8c3RyaW5nLCBDb21taXRJbmZvPihDQUNIRV9NQVhfRU5UUklFUyk7XG4vLyBMYXN0IHNoYSB3ZSBzdWNjZXNzZnVsbHkgcmVzb2x2ZWQgcGVyIHBpcGVsaW5lIOKAlCB0aGUgZXhjbHVzaXZlIGxvd2VyIGJvdW5kIGZvciB0aGVcbi8vIG5leHQgcmFuZ2UgKFwiY29tbWl0cyBzaW5jZSB0aGUgbGFzdCBkZXBsb3lcIikuIEluLW1lbW9yeSwgc28gYSBjb2xkIHN0YXJ0IGVtcHRpZXNcbi8vIGl0OyBgZmV0Y2hMYXN0RGVwbG95ZWRTaGFgIHRoZW4gcmVhZHMgdGhlIGJvdW5kIGJhY2sgZnJvbSB0aGUgcmVwb3J0aW5nIEFQSSxcbi8vIGJlY2F1c2UgcmVzb2x2aW5nIGFzIGEgc2luZ2xlIGNvbW1pdCBtYWRlIGxlYWQgdGltZSBhbmQgY29tbWl0Q291bnQgZmFyIHRvb1xuLy8gc21hbGwgb24gZXZlcnkgZnJlc2ggY29udGFpbmVyIOKAlCB3aGljaCBpcyBtb3N0IG9mIHRoZW0uXG5jb25zdCBsYXN0U2hhQnlQaXBlbGluZSA9IG5ldyBCb3VuZGVkTWFwPHN0cmluZywgc3RyaW5nPihDQUNIRV9NQVhfRU5UUklFUyk7XG4vLyBQaXBlbGluZXMgd2hvc2UgYm91bmQgd2UgYWxyZWFkeSBhc2tlZCB0aGUgcmVwb3J0aW5nIEFQSSBmb3IgYW5kIGl0IGhhZCBub25lLlxuLy8gV2l0aG91dCB0aGlzLCBhIHBpcGVsaW5lIHRoYXQgZ2VudWluZWx5IGhhcyBuZXZlciBkZXBsb3llZCByZS1hc2tzIG9uIGV2ZXJ5XG4vLyBldmVudCBmb3IgdGhlIGxpZmUgb2YgdGhlIGNvbnRhaW5lci5cbmNvbnN0IG5vUmVjb3JkZWREZXBsb3kgPSBuZXcgU2V0PHN0cmluZz4oKTtcbi8vIFBlci1zaGEgQ29kZUNvbW1pdCBtZXRhZGF0YSBjYWNoZSAoZGF0ZSArIGZpcnN0LXBhcmVudCkgZm9yIHJhbmdlIHdhbGtzLlxuY29uc3QgY29tbWl0TWV0YUNhY2hlID0gbmV3IEJvdW5kZWRNYXA8c3RyaW5nLCB7IGRhdGU/OiBzdHJpbmc7IHBhcmVudHM/OiBzdHJpbmdbXSB9PihDQUNIRV9NQVhfRU5UUklFUyk7XG4vLyBTQ00gcmF0ZS1saW1pdCBjb29sZG93bjogYWZ0ZXIgYSA0MDMvNDI5IHdlIHN0b3AgY2FsbGluZyB0aGUgU0NNIGZvciBhIHdoaWxlLlxubGV0IHNjbUNvb2xkb3duVW50aWwgPSAwO1xuY29uc3QgU0NNX0NPT0xET1dOX01TID0gMiAqIDYwICogMTAwMDtcbi8vIENhcCB0aGUgQ29kZUNvbW1pdCBmaXJzdC1wYXJlbnQgd2FsayBzbyBhIGxvbmcgcmFuZ2UgY2FuJ3QgYmxvdyB0aGUgTGFtYmRhIHRpbWVvdXQuXG5jb25zdCBNQVhfQ09NTUlUX1dBTEsgPSA1MDtcbi8vIFBlci1yZXF1ZXN0IHRpbWVvdXQgZm9yIGV4dGVybmFsIFNDTSBjYWxscyAoZGVmZW5zaXZlIGFnYWluc3Qgc2xvdy9odW5nIGhvc3RzKS5cbmNvbnN0IFNDTV9GRVRDSF9USU1FT1VUX01TID0gMzAwMDtcblxuLy8gVGhlIGZvcndhcmRlciBpcyBhIGZsZWV0IExhbWJkYTogb25lIHdhcm0gY29udGFpbmVyIHJlc29sdmVzIGV2ZW50cyBmb3IgTUFOWVxuLy8gb3Jncywgc28gdGhlIEdpdEh1YiB0b2tlbiBNVVNUIGJlIGtleWVkIGJ5IHRoZSBldmVudCdzIHJlc29sdmVkIG9yZyAobm90IGEgc2luZ2xlXG4vLyBjb250YWluZXItZ2xvYmFsIHRva2VuKS4gRWFjaCBvcmcncyB0b2tlbiBsaXZlcyBhdCBgPHByZWZpeD4vPG9yZ0lkPi9naXRodWItdG9rZW5gLFxuLy8gZGVyaXZlZCBmcm9tIFBMQVRGT1JNX1NFQ1JFVF9OQU1FIChgPHByZWZpeD4vPGNvbnRhaW5lck9yZz4vcGxhdGZvcm1gKS4gbnVsbCBjYWNoZXNcbi8vIGEgZGVmaW5pdGl2ZSBtaXNzIChubyBzZWNyZXQgLyByZWFkIGZhaWxlZCkg4oaSIHVuYXV0aGVudGljYXRlZCBiZXN0LWVmZm9ydC5cbmNvbnN0IGdpdGh1YlRva2VuQnlPcmcgPSBuZXcgQm91bmRlZE1hcDxzdHJpbmcsIHN0cmluZyB8IG51bGw+KENBQ0hFX01BWF9FTlRSSUVTKTtcblxuLyoqXG4gKiBEZXJpdmUgYSBzcGVjaWZpYyBvcmcncyBnaXRodWItdG9rZW4gc2VjcmV0IG5hbWUgZnJvbSBQTEFURk9STV9TRUNSRVRfTkFNRVxuICogKGA8cHJlZml4Pi88Y29udGFpbmVyT3JnPi9wbGF0Zm9ybWApLiBXaXRoIGFuIGBvcmdJZGAgd2Ugc3dhcCB0aGUgb3JnIHNlZ21lbnRcbiAqIChgPHByZWZpeD4vPG9yZ0lkPi9naXRodWItdG9rZW5gKTsgd2l0aG91dCBvbmUgKHBpcGVsaW5lIGNhcnJpZWQgbm8gT3JnSWQgdGFnKSB3ZVxuICogZmFsbCBiYWNrIHRvIHRoZSBjb250YWluZXIncyBvd24gc2libGluZyBzZWNyZXQuIFJldHVybnMgdW5kZWZpbmVkIHdoZW5cbiAqIFBMQVRGT1JNX1NFQ1JFVF9OQU1FIGlzbid0IHRoZSBleHBlY3RlZCBgLi4uL3BsYXRmb3JtYCBzaGFwZS5cbiAqL1xuZnVuY3Rpb24gZ2l0aHViVG9rZW5TZWNyZXROYW1lKG9yZ0lkOiBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgbmFtZSA9IHByb2Nlc3MuZW52LlBMQVRGT1JNX1NFQ1JFVF9OQU1FO1xuICBpZiAoIW5hbWUgfHwgIW5hbWUuZW5kc1dpdGgoJy9wbGF0Zm9ybScpKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBiYXNlID0gbmFtZS5zbGljZSgwLCAtJy9wbGF0Zm9ybScubGVuZ3RoKTsgLy8gPHByZWZpeD4vPGNvbnRhaW5lck9yZz5cbiAgaWYgKG9yZ0lkKSB7XG4gICAgY29uc3Qgc2xhc2ggPSBiYXNlLmxhc3RJbmRleE9mKCcvJyk7XG4gICAgY29uc3QgcHJlZml4ID0gc2xhc2ggPiAwID8gYmFzZS5zbGljZSgwLCBzbGFzaCkgOiBiYXNlO1xuICAgIHJldHVybiBgJHtwcmVmaXh9LyR7b3JnSWR9L2dpdGh1Yi10b2tlbmA7XG4gIH1cbiAgcmV0dXJuIGAke2Jhc2V9L2dpdGh1Yi10b2tlbmA7XG59XG5cbi8qKiBSZWFkIChhbmQgY2FjaGUsIHBlciBvcmcpIHRoZSBvcmcgZ2l0aHViIHRva2VuOyBudWxsIOKGkiB1bmF1dGhlbnRpY2F0ZWQgYmVzdC1lZmZvcnQuICovXG5hc3luYyBmdW5jdGlvbiBnZXRHaXRIdWJUb2tlbihvcmdJZDogc3RyaW5nIHwgbnVsbCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICBjb25zdCBrZXkgPSBvcmdJZCA/PyAnJztcbiAgY29uc3QgY2FjaGVkID0gZ2l0aHViVG9rZW5CeU9yZy5nZXQoa2V5KTtcbiAgaWYgKGNhY2hlZCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gY2FjaGVkO1xuICBjb25zdCBzZWNyZXROYW1lID0gZ2l0aHViVG9rZW5TZWNyZXROYW1lKG9yZ0lkKTtcbiAgaWYgKCFzZWNyZXROYW1lKSB7IGdpdGh1YlRva2VuQnlPcmcuc2V0KGtleSwgbnVsbCk7IHJldHVybiBudWxsOyB9XG4gIGxldCB0b2tlbjogc3RyaW5nIHwgbnVsbDtcbiAgdHJ5IHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgU2VjcmV0c01hbmFnZXJDbGllbnQoe30pO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGNsaWVudC5zZW5kKG5ldyBHZXRTZWNyZXRWYWx1ZUNvbW1hbmQoeyBTZWNyZXRJZDogc2VjcmV0TmFtZSB9KSk7XG4gICAgLy8gVGhlIGdpdGh1Yi10b2tlbiBzZWNyZXQgaXMgYSBSQVcgdG9rZW4gc3RyaW5nIChub3QgSlNPTiDigJQgQ0RLIHJlc29sdmVzIGl0IHZpYVxuICAgIC8vIHRoZSBkZWZhdWx0IFNlY3JldFN0cmluZyB3aXRoIG5vIGtleSkuXG4gICAgdG9rZW4gPSByZXMuU2VjcmV0U3RyaW5nICYmIHJlcy5TZWNyZXRTdHJpbmcubGVuZ3RoID4gMCA/IHJlcy5TZWNyZXRTdHJpbmcudHJpbSgpIDogbnVsbDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLndhcm4oJ05vIGdpdGh1Yi10b2tlbiBzZWNyZXQg4oCUIEdpdEh1YiBjb21taXQgcmVzb2x1dGlvbiB3aWxsIGJlIHVuYXV0aGVudGljYXRlZCcsIHsgb3JnSWQsIGVycm9yOiAoZXJyIGFzIHsgbmFtZT86IHN0cmluZyB9KT8ubmFtZSB9KTtcbiAgICB0b2tlbiA9IG51bGw7XG4gIH1cbiAgZ2l0aHViVG9rZW5CeU9yZy5zZXQoa2V5LCB0b2tlbik7XG4gIHJldHVybiB0b2tlbjtcbn1cblxuLyoqIE5vcm1hbGl6ZSBhIGNvbW1pdCBkYXRlIHRvIElTTyA4NjAxLiBBY2NlcHRzIElTTyBzdHJpbmdzIGFuZCBDb2RlQ29tbWl0J3NcbiAqICBcIjxlcG9jaC1zZWNvbmRzPiArWlpaWlwiIGZvcm0uIFJldHVybnMgdW5kZWZpbmVkIHdoZW4gdW5wYXJzZWFibGUuICovXG5mdW5jdGlvbiB0b0lzbyh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgZXBvY2ggPSAvXihcXGR7OSx9KVxcYi8uZXhlYyh2YWx1ZS50cmltKCkpO1xuICBpZiAoZXBvY2gpIHtcbiAgICBjb25zdCBkID0gbmV3IERhdGUoTnVtYmVyKGVwb2NoWzFdKSAqIDEwMDApO1xuICAgIHJldHVybiBOdW1iZXIuaXNOYU4oZC5nZXRUaW1lKCkpID8gdW5kZWZpbmVkIDogZC50b0lTT1N0cmluZygpO1xuICB9XG4gIGNvbnN0IGQgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gIHJldHVybiBOdW1iZXIuaXNOYU4oZC5nZXRUaW1lKCkpID8gdW5kZWZpbmVkIDogZC50b0lTT1N0cmluZygpO1xufVxuXG4vKiogQ2xhc3NpZnkgYSBzb3VyY2UtcmV2aXNpb24gVVJMIGludG8gYSBwcm92aWRlciArIHJlcG8gY29vcmRpbmF0ZXMuICovXG5leHBvcnQgZnVuY3Rpb24gY2xhc3NpZnlTb3VyY2UodXJsOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBPbWl0PFNvdXJjZVJlZiwgJ3NoYSc+IHtcbiAgaWYgKCF1cmwpIHJldHVybiB7IHByb3ZpZGVyOiAndW5rbm93bicgfTtcbiAgdHJ5IHtcbiAgICBjb25zdCB1ID0gbmV3IFVSTCh1cmwpO1xuICAgIGNvbnN0IGhvc3QgPSB1Lmhvc3RuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGhvc3QgPT09ICdnaXRodWIuY29tJyB8fCBob3N0LmVuZHNXaXRoKCcuZ2l0aHViLmNvbScpKSB7XG4gICAgICBjb25zdCBwYXJ0cyA9IHUucGF0aG5hbWUuc3BsaXQoJy8nKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgICBpZiAocGFydHMubGVuZ3RoID49IDIpIHJldHVybiB7IHByb3ZpZGVyOiAnZ2l0aHViJywgb3duZXI6IHBhcnRzWzBdLCByZXBvOiBwYXJ0c1sxXS5yZXBsYWNlKC9cXC5naXQkLywgJycpIH07XG4gICAgfVxuICAgIGlmIChob3N0ID09PSAnYml0YnVja2V0Lm9yZycpIHtcbiAgICAgIGNvbnN0IHBhcnRzID0gdS5wYXRobmFtZS5zcGxpdCgnLycpLmZpbHRlcihCb29sZWFuKTtcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPj0gMikgcmV0dXJuIHsgcHJvdmlkZXI6ICdiaXRidWNrZXQnLCBvd25lcjogcGFydHNbMF0sIHJlcG86IHBhcnRzWzFdLnJlcGxhY2UoL1xcLmdpdCQvLCAnJykgfTtcbiAgICB9XG4gICAgaWYgKHUucGF0aG5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnY29kZWNvbW1pdCcpIHx8IHUuaGFzaC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdjb2RlY29tbWl0JykgfHwgdS5wYXRobmFtZS5pbmNsdWRlcygnL3JlcG9zaXRvcmllcy8nKSkge1xuICAgICAgY29uc3QgbSA9IC9yZXBvc2l0b3IoPzp5fGllcylcXC8oW14vIz9dKykvLmV4ZWModS5wYXRobmFtZSArIHUuaGFzaCk7XG4gICAgICBpZiAobSkgcmV0dXJuIHsgcHJvdmlkZXI6ICdjb2RlY29tbWl0JywgcmVwb3NpdG9yeU5hbWU6IGRlY29kZVVSSUNvbXBvbmVudChtWzFdKSB9O1xuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgLy8gbm90IGEgVVJMIOKGkiB1bmtub3duXG4gIH1cbiAgcmV0dXJuIHsgcHJvdmlkZXI6ICd1bmtub3duJyB9O1xufVxuXG5sZXQgY29kZWNvbW1pdENsaWVudHNCeVJlZ2lvbjogTWFwPHN0cmluZywgeyBzZW5kKGNvbW1hbmQ6IHVua25vd24pOiBQcm9taXNlPHVua25vd24+IH0+IHwgdW5kZWZpbmVkO1xuaW50ZXJmYWNlIENvZGVDb21taXRNb2R1bGUge1xuICBDb2RlQ29tbWl0Q2xpZW50OiBuZXcgKGNvbmZpZzogeyByZWdpb246IHN0cmluZyB9KSA9PiB7IHNlbmQoY29tbWFuZDogdW5rbm93bik6IFByb21pc2U8dW5rbm93bj4gfTtcbiAgR2V0Q29tbWl0Q29tbWFuZDogbmV3IChpbnB1dDogeyByZXBvc2l0b3J5TmFtZTogc3RyaW5nOyBjb21taXRJZDogc3RyaW5nIH0pID0+IHVua25vd247XG59XG5sZXQgY29kZWNvbW1pdE1vZDogQ29kZUNvbW1pdE1vZHVsZSB8IHVuZGVmaW5lZDtcbmFzeW5jIGZ1bmN0aW9uIGNvZGVDb21taXRDbGllbnQocmVnaW9uOiBzdHJpbmcpOiBQcm9taXNlPHsgc2VuZChjb21tYW5kOiB1bmtub3duKTogUHJvbWlzZTx1bmtub3duPiB9PiB7XG4gIGlmICghY29kZWNvbW1pdE1vZCkgY29kZWNvbW1pdE1vZCA9IGF3YWl0IGxvYWRTZGs8Q29kZUNvbW1pdE1vZHVsZT4oJ0Bhd3Mtc2RrL2NsaWVudC1jb2RlY29tbWl0Jyk7XG4gIGlmICghY29kZWNvbW1pdENsaWVudHNCeVJlZ2lvbikgY29kZWNvbW1pdENsaWVudHNCeVJlZ2lvbiA9IG5ldyBNYXAoKTtcbiAgbGV0IGNsaWVudCA9IGNvZGVjb21taXRDbGllbnRzQnlSZWdpb24uZ2V0KHJlZ2lvbik7XG4gIGlmICghY2xpZW50KSB7XG4gICAgY2xpZW50ID0gbmV3IGNvZGVjb21taXRNb2QuQ29kZUNvbW1pdENsaWVudCh7IHJlZ2lvbiB9KTtcbiAgICBjb2RlY29tbWl0Q2xpZW50c0J5UmVnaW9uLnNldChyZWdpb24sIGNsaWVudCk7XG4gIH1cbiAgcmV0dXJuIGNsaWVudDtcbn1cblxuLyoqIEZldGNoIChjYWNoZWQpIGEgc2luZ2xlIENvZGVDb21taXQgY29tbWl0J3MgZGF0ZSArIGZpcnN0IHBhcmVudHMgdmlhIEdldENvbW1pdC4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNvZGVDb21taXRNZXRhKHJlZ2lvbjogc3RyaW5nLCByZXBvc2l0b3J5TmFtZTogc3RyaW5nLCBjb21taXRJZDogc3RyaW5nKTogUHJvbWlzZTx7IGRhdGU/OiBzdHJpbmc7IHBhcmVudHM/OiBzdHJpbmdbXSB9IHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IGNhY2hlZCA9IGNvbW1pdE1ldGFDYWNoZS5nZXQoY29tbWl0SWQpO1xuICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuICBpZiAoIWNvZGVjb21taXRNb2QpIGNvZGVjb21taXRNb2QgPSBhd2FpdCBsb2FkU2RrPENvZGVDb21taXRNb2R1bGU+KCdAYXdzLXNkay9jbGllbnQtY29kZWNvbW1pdCcpO1xuICBjb25zdCBjbGllbnQgPSBhd2FpdCBjb2RlQ29tbWl0Q2xpZW50KHJlZ2lvbik7XG4gIGNvbnN0IG91dCA9IGF3YWl0IGNsaWVudC5zZW5kKG5ldyBjb2RlY29tbWl0TW9kLkdldENvbW1pdENvbW1hbmQoeyByZXBvc2l0b3J5TmFtZSwgY29tbWl0SWQgfSkpIGFzIHtcbiAgICBjb21taXQ/OiB7IGNvbW1pdHRlcj86IHsgZGF0ZT86IHN0cmluZyB9OyBhdXRob3I/OiB7IGRhdGU/OiBzdHJpbmcgfTsgcGFyZW50cz86IHN0cmluZ1tdIH07XG4gIH07XG4gIGNvbnN0IGNvbW1pdCA9IG91dC5jb21taXQ7XG4gIGNvbnN0IG1ldGEgPSB7IGRhdGU6IHRvSXNvKGNvbW1pdD8uY29tbWl0dGVyPy5kYXRlID8/IGNvbW1pdD8uYXV0aG9yPy5kYXRlKSwgcGFyZW50czogY29tbWl0Py5wYXJlbnRzIH07XG4gIGNvbW1pdE1ldGFDYWNoZS5zZXQoY29tbWl0SWQsIG1ldGEpO1xuICByZXR1cm4gbWV0YTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZUNvZGVDb21taXQocmVnaW9uOiBzdHJpbmcsIHJlcG9zaXRvcnlOYW1lOiBzdHJpbmcsIHNoYTogc3RyaW5nLCBzaW5jZVNoYT86IHN0cmluZyk6IFByb21pc2U8Q29tbWl0SW5mbz4ge1xuICBsZXQgY3VyOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBzaGE7XG4gIGxldCBjb3VudCA9IDA7XG4gIGxldCBvbGRlc3Q6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgbGV0IHRydW5jYXRlZCA9IGZhbHNlO1xuICBmb3IgKGxldCBpID0gMDsgOyBpKyspIHtcbiAgICBpZiAoIWN1cikgYnJlYWs7IC8vIHJlYWNoZWQgaGlzdG9yeSByb290IOKAlCB0aGUgd2hvbGUgcmFuZ2UgaXMgY292ZXJlZFxuICAgIGlmIChzaW5jZVNoYSAmJiBjdXIgPT09IHNpbmNlU2hhKSBicmVhazsgLy8gcmVhY2hlZCB0aGUgZXhjbHVzaXZlIGxvd2VyIGJvdW5kXG4gICAgaWYgKGkgPj0gTUFYX0NPTU1JVF9XQUxLKSB7IHRydW5jYXRlZCA9IHRydWU7IGJyZWFrOyB9IC8vIGhpdCB0aGUgY2FwIGJlZm9yZSB0aGUgYm91bmRhcnlcbiAgICBjb25zdCBtZXRhID0gYXdhaXQgY29kZUNvbW1pdE1ldGEocmVnaW9uLCByZXBvc2l0b3J5TmFtZSwgY3VyKTtcbiAgICBpZiAoIW1ldGE/LmRhdGUpIGJyZWFrO1xuICAgIGNvdW50Kys7XG4gICAgb2xkZXN0ID0gbWV0YS5kYXRlO1xuICAgIGlmICghc2luY2VTaGEpIGJyZWFrOyAvLyBubyByYW5nZSDihpIgc2luZ2xlIGNvbW1pdFxuICAgIGN1ciA9IG1ldGEucGFyZW50cz8uWzBdO1xuICB9XG4gIC8vIEEgdHJ1bmNhdGVkIHdhbGsgeWllbGRzIGEgY29tbWl0IE5FV0VSIHRoYW4gdGhlIHRydWUgb2xkZXN0LXVuc2hpcHBlZCBjb21taXQsXG4gIC8vIHdoaWNoIHdvdWxkIFVOREVSU1RBVEUgbGVhZCB0aW1lIOKAlCBvbWl0IHRoZSBmaWVsZHMgZW50aXJlbHkgcmF0aGVyIHRoYW4gcmVwb3J0IGFcbiAgLy8gd3JvbmcgKHRvby1zbWFsbCkgdmFsdWUuIFJlcG9ydGluZyBmYWxscyBiYWNrIHRvIGB1bmtub3duYC5cbiAgaWYgKHRydW5jYXRlZCkgcmV0dXJuIHt9O1xuICByZXR1cm4gb2xkZXN0ID8geyBjb21taXRUaW1lc3RhbXA6IG9sZGVzdCwgY29tbWl0Q291bnQ6IGNvdW50IH0gOiB7fTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZUdpdEh1Yihvd25lcjogc3RyaW5nLCByZXBvOiBzdHJpbmcsIHNoYTogc3RyaW5nLCBzaW5jZVNoYTogc3RyaW5nIHwgdW5kZWZpbmVkLCBvcmdJZDogc3RyaW5nIHwgbnVsbCk6IFByb21pc2U8Q29tbWl0SW5mbz4ge1xuICBjb25zdCB0b2tlbiA9IGF3YWl0IGdldEdpdEh1YlRva2VuKG9yZ0lkKTtcbiAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL3ZuZC5naXRodWIranNvbicsXG4gICAgJ1VzZXItQWdlbnQnOiAncGlwZWxpbmUtYnVpbGRlci1mb3J3YXJkZXInLFxuICAgICdYLUdpdEh1Yi1BcGktVmVyc2lvbic6ICcyMDIyLTExLTI4JyxcbiAgfTtcbiAgaWYgKHRva2VuKSBoZWFkZXJzLkF1dGhvcml6YXRpb24gPSBgQmVhcmVyICR7dG9rZW59YDtcbiAgY29uc3QgcmF0ZUxpbWl0ZWQgPSAocjogUmVzcG9uc2UpID0+IHIuc3RhdHVzID09PSA0MDMgfHwgci5zdGF0dXMgPT09IDQyOTtcblxuICBpZiAoc2luY2VTaGEpIHtcbiAgICBjb25zdCByID0gYXdhaXQgZmV0Y2hXaXRoVGltZW91dChgaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy8ke293bmVyfS8ke3JlcG99L2NvbXBhcmUvJHtzaW5jZVNoYX0uLi4ke3NoYX1gLCB7IGhlYWRlcnMgfSwgU0NNX0ZFVENIX1RJTUVPVVRfTVMpO1xuICAgIGlmIChyYXRlTGltaXRlZChyKSkgeyBzY21Db29sZG93blVudGlsID0gRGF0ZS5ub3coKSArIFNDTV9DT09MRE9XTl9NUzsgcmV0dXJuIHt9OyB9XG4gICAgaWYgKHIub2spIHtcbiAgICAgIGNvbnN0IGogPSBhd2FpdCByLmpzb24oKSBhcyB7IGNvbW1pdHM/OiBBcnJheTx7IGNvbW1pdD86IHsgY29tbWl0dGVyPzogeyBkYXRlPzogc3RyaW5nIH07IGF1dGhvcj86IHsgZGF0ZT86IHN0cmluZyB9IH0gfT4gfTtcbiAgICAgIGNvbnN0IGNvbW1pdHMgPSBBcnJheS5pc0FycmF5KGouY29tbWl0cykgPyBqLmNvbW1pdHMgOiBbXTtcbiAgICAgIGlmIChjb21taXRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3Qgb2xkZXN0ID0gdG9Jc28oY29tbWl0c1swXT8uY29tbWl0Py5jb21taXR0ZXI/LmRhdGUgPz8gY29tbWl0c1swXT8uY29tbWl0Py5hdXRob3I/LmRhdGUpO1xuICAgICAgICBpZiAob2xkZXN0KSByZXR1cm4geyBjb21taXRUaW1lc3RhbXA6IG9sZGVzdCwgY29tbWl0Q291bnQ6IGNvbW1pdHMubGVuZ3RoIH07XG4gICAgICB9XG4gICAgfVxuICAgIC8vIGZhbGwgdGhyb3VnaCB0byBzaW5nbGUtY29tbWl0IHJlc29sdXRpb25cbiAgfVxuICBjb25zdCByMiA9IGF3YWl0IGZldGNoV2l0aFRpbWVvdXQoYGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvJHtvd25lcn0vJHtyZXBvfS9jb21taXRzLyR7c2hhfWAsIHsgaGVhZGVycyB9LCBTQ01fRkVUQ0hfVElNRU9VVF9NUyk7XG4gIGlmIChyYXRlTGltaXRlZChyMikpIHsgc2NtQ29vbGRvd25VbnRpbCA9IERhdGUubm93KCkgKyBTQ01fQ09PTERPV05fTVM7IHJldHVybiB7fTsgfVxuICBpZiAocjIub2spIHtcbiAgICBjb25zdCBqID0gYXdhaXQgcjIuanNvbigpIGFzIHsgY29tbWl0PzogeyBjb21taXR0ZXI/OiB7IGRhdGU/OiBzdHJpbmcgfTsgYXV0aG9yPzogeyBkYXRlPzogc3RyaW5nIH0gfSB9O1xuICAgIGNvbnN0IGQgPSB0b0lzbyhqLmNvbW1pdD8uY29tbWl0dGVyPy5kYXRlID8/IGouY29tbWl0Py5hdXRob3I/LmRhdGUpO1xuICAgIGlmIChkKSByZXR1cm4geyBjb21taXRUaW1lc3RhbXA6IGQsIGNvbW1pdENvdW50OiAxIH07XG4gIH1cbiAgcmV0dXJuIHt9O1xufVxuXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlQml0YnVja2V0KG93bmVyOiBzdHJpbmcsIHJlcG86IHN0cmluZywgc2hhOiBzdHJpbmcpOiBQcm9taXNlPENvbW1pdEluZm8+IHtcbiAgY29uc3QgciA9IGF3YWl0IGZldGNoV2l0aFRpbWVvdXQoYGh0dHBzOi8vYXBpLmJpdGJ1Y2tldC5vcmcvMi4wL3JlcG9zaXRvcmllcy8ke293bmVyfS8ke3JlcG99L2NvbW1pdC8ke3NoYX1gLCB7XG4gICAgaGVhZGVyczogeyAnVXNlci1BZ2VudCc6ICdwaXBlbGluZS1idWlsZGVyLWZvcndhcmRlcicsICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgfSwgU0NNX0ZFVENIX1RJTUVPVVRfTVMpO1xuICBpZiAoci5zdGF0dXMgPT09IDQyOSkgeyBzY21Db29sZG93blVudGlsID0gRGF0ZS5ub3coKSArIFNDTV9DT09MRE9XTl9NUzsgcmV0dXJuIHt9OyB9XG4gIGlmIChyLm9rKSB7XG4gICAgY29uc3QgaiA9IGF3YWl0IHIuanNvbigpIGFzIHsgZGF0ZT86IHN0cmluZyB9O1xuICAgIGNvbnN0IGQgPSB0b0lzbyhqLmRhdGUpO1xuICAgIGlmIChkKSByZXR1cm4geyBjb21taXRUaW1lc3RhbXA6IGQsIGNvbW1pdENvdW50OiAxIH07XG4gIH1cbiAgcmV0dXJuIHt9O1xufVxuXG4vKipcbiAqIFJlc29sdmUgYGNvbW1pdFRpbWVzdGFtcGAgKyBgY29tbWl0Q291bnRgIGZvciBhIHNvdXJjZS9kZXBsb3kgZXZlbnQsIGluLWFjY291bnQsXG4gKiBiZXN0LWVmZm9ydC4gQ29tcHV0ZWQgb25jZSBwZXIgKHBpcGVsaW5lSWQsIHNoYSk7IGFkdmFuY2VzIHRoZSBwaXBlbGluZSdzIHJhbmdlXG4gKiBib3VuZGFyeSBvbmx5IG9uIHN1Y2Nlc3MuIE5ldmVyIHRocm93cyDigJQgcmV0dXJucyB7fSBvbiBhbnkgZmFpbHVyZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVDb21taXRJbmZvKHBpcGVsaW5lSWQ6IHN0cmluZywgb3JnSWQ6IHN0cmluZyB8IG51bGwsIHJlZ2lvbjogc3RyaW5nLCBzcmM6IFNvdXJjZVJlZik6IFByb21pc2U8Q29tbWl0SW5mbz4ge1xuICBpZiAoc3JjLnByb3ZpZGVyID09PSAndW5rbm93bicpIHJldHVybiB7fTtcbiAgY29uc3QgcmtleSA9IGAke3BpcGVsaW5lSWR9fCR7c3JjLnNoYX1gO1xuICBjb25zdCBjYWNoZWQgPSBjb21taXRSZXN1bHRDYWNoZS5nZXQocmtleSk7XG4gIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQ7XG5cbiAgLy8gQ29sZC1zdGFydCByZWNvdmVyeTogbm90aGluZyBpbiB0aGlzIGNvbnRhaW5lcidzIG1lbW9yeSwgc28gYXNrIHRoZSByZXBvcnRpbmdcbiAgLy8gQVBJIHdoYXQgdGhpcyBwaXBlbGluZSBsYXN0IHNoaXBwZWQuIFdpdGhvdXQgaXQgdGhlIHJhbmdlIGJlbG93IGNvbGxhcHNlcyB0b1xuICAvLyB0aGUgc2luZ2xlIG5ld2VzdCBjb21taXQuXG4gIGNvbnN0IHByZXYgPSBsYXN0U2hhQnlQaXBlbGluZS5nZXQocGlwZWxpbmVJZCkgPz8gYXdhaXQgZmV0Y2hMYXN0RGVwbG95ZWRTaGEocGlwZWxpbmVJZCk7XG4gIGNvbnN0IHNpbmNlU2hhID0gcHJldiAmJiBwcmV2ICE9PSBzcmMuc2hhID8gcHJldiA6IHVuZGVmaW5lZDtcblxuICBsZXQgaW5mbzogQ29tbWl0SW5mbyA9IHt9O1xuICB0cnkge1xuICAgIGlmIChzcmMucHJvdmlkZXIgPT09ICdjb2RlY29tbWl0JyAmJiBzcmMucmVwb3NpdG9yeU5hbWUpIHtcbiAgICAgIGluZm8gPSBhd2FpdCByZXNvbHZlQ29kZUNvbW1pdChyZWdpb24sIHNyYy5yZXBvc2l0b3J5TmFtZSwgc3JjLnNoYSwgc2luY2VTaGEpO1xuICAgIH0gZWxzZSBpZiAoc3JjLnByb3ZpZGVyID09PSAnZ2l0aHViJyAmJiBzcmMub3duZXIgJiYgc3JjLnJlcG8pIHtcbiAgICAgIGlmIChEYXRlLm5vdygpID49IHNjbUNvb2xkb3duVW50aWwpIGluZm8gPSBhd2FpdCByZXNvbHZlR2l0SHViKHNyYy5vd25lciwgc3JjLnJlcG8sIHNyYy5zaGEsIHNpbmNlU2hhLCBvcmdJZCk7XG4gICAgfSBlbHNlIGlmIChzcmMucHJvdmlkZXIgPT09ICdiaXRidWNrZXQnICYmIHNyYy5vd25lciAmJiBzcmMucmVwbykge1xuICAgICAgaWYgKERhdGUubm93KCkgPj0gc2NtQ29vbGRvd25VbnRpbCkgaW5mbyA9IGF3YWl0IHJlc29sdmVCaXRidWNrZXQoc3JjLm93bmVyLCBzcmMucmVwbywgc3JjLnNoYSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2cud2FybignQ29tbWl0IHJlc29sdXRpb24gZmFpbGVkIChvbWl0dGluZyBjb21taXRUaW1lc3RhbXAvY29tbWl0Q291bnQpJywgeyBwcm92aWRlcjogc3JjLnByb3ZpZGVyLCBlcnJvcjogKGVyciBhcyB7IG5hbWU/OiBzdHJpbmcgfSk/Lm5hbWUgPz8gU3RyaW5nKGVycikgfSk7XG4gICAgaW5mbyA9IHt9O1xuICB9XG5cbiAgaWYgKGluZm8uY29tbWl0VGltZXN0YW1wKSB7XG4gICAgY29tbWl0UmVzdWx0Q2FjaGUuc2V0KHJrZXksIGluZm8pO1xuICAgIGxhc3RTaGFCeVBpcGVsaW5lLnNldChwaXBlbGluZUlkLCBzcmMuc2hhKTtcbiAgfVxuICByZXR1cm4gaW5mbztcbn1cblxuLyoqXG4gKiBUaGUgZXhjbHVzaXZlIGxvd2VyIGJvdW5kIGZyb20gZHVyYWJsZSBzdG9yYWdlLCBmb3IgYSBjb250YWluZXIgd2hvc2UgbWVtb3J5IGlzXG4gKiBlbXB0eS4gQmVzdC1lZmZvcnQ6IG9uIEFOWSBmYWlsdXJlIHRoaXMgcmV0dXJucyB1bmRlZmluZWQgYW5kIHRoZSBjYWxsZXIgcmVzb2x2ZXNcbiAqIGEgc2luZ2xlIGNvbW1pdCBleGFjdGx5IGFzIGJlZm9yZSwgc28gYSByZXBvcnRpbmctQVBJIGJsaXAgZGVncmFkZXMgbGVhZCB0aW1lXG4gKiByYXRoZXIgdGhhbiBmYWlsaW5nIHRoZSBiYXRjaCAod2hpY2ggd291bGQgcmVkZWxpdmVyIGFscmVhZHktZm9yd2FyZGVkIGV2ZW50cykuXG4gKlxuICogTm8gYGVudmlyb25tZW50YCBpcyBzZW50OiB0aGlzIHJ1bnMgd2hpbGUgaGFuZGxpbmcgdGhlIFNPVVJDRSBldmVudCwgYW5kIHRoZVxuICogZXhlY3V0aW9uIGhhcyBub3QgcmVhY2hlZCBhIGRlcGxveSBzdGFnZSB5ZXQsIHNvIHRoZSBlbnZpcm9ubWVudCBpcyBub3QgeWV0XG4gKiBrbm93bi4gVGhlIEFQSSB0aGVuIGFuc3dlcnMgXCJsYXN0IHNoaXBwZWQgYW55d2hlcmVcIiwgd2hpY2ggaXMgdGhlIGNvcnJlY3QgYm91bmRcbiAqIGZvciBhbiBTQ00gcmFuZ2Ugd2Fsay5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZmV0Y2hMYXN0RGVwbG95ZWRTaGEocGlwZWxpbmVJZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgY29uc3QgYmFzZVVybCA9IHByb2Nlc3MuZW52LlBMQVRGT1JNX0JBU0VfVVJMO1xuICBpZiAoIWJhc2VVcmwgfHwgbm9SZWNvcmRlZERlcGxveS5oYXMocGlwZWxpbmVJZCkpIHJldHVybiB1bmRlZmluZWQ7XG4gIHRyeSB7XG4gICAgLy8gVGhlIHBhY2thZ2UncyBSRVBPUlRJTkcgYnVkZ2V0LCBkZWxpYmVyYXRlbHksIG5vdCBTQ01fRkVUQ0hfVElNRU9VVF9NUzogdGhpcyBpcyBhXG4gICAgLy8gY2FsbCB0byBvdXIgb3duIHJlcG9ydGluZyBzZXJ2aWNlLCBhbmQgdGhlIHRpZ2h0ZXIgU0NNIGRlYWRsaW5lIGV4aXN0cyBmb3JcbiAgICAvLyB0aGlyZC1wYXJ0eSBmb3JnZXMgd2UgY2Fubm90IHJlYXNvbiBhYm91dC5cbiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaFdpdGhUaW1lb3V0KFxuICAgICAgYCR7YmFzZVVybH0vYXBpL3JlcG9ydHMvZXZlbnRzL2xhc3QtZGVwbG95LWNvbW1pdD9waXBlbGluZUlkPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHBpcGVsaW5lSWQpfWAsXG4gICAgICB7IGhlYWRlcnM6IHsgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2F3YWl0IGdldEF1dGhUb2tlbigpfWAsIEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nIH0gfSxcbiAgICApO1xuICAgIGlmICghcmVzLm9rKSB7XG4gICAgICBsb2cud2FybignTGFzdC1kZXBsb3ktY29tbWl0IGxvb2t1cCBmYWlsZWQ7IHJlc29sdmluZyBhIHNpbmdsZSBjb21taXQnLCB7IHN0YXR1czogcmVzLnN0YXR1cyB9KTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IGJvZHkgPSBhd2FpdCByZXMuanNvbigpIGFzIHsgZGF0YT86IHsgY29tbWl0U2hhPzogc3RyaW5nIHwgbnVsbCB9IH07XG4gICAgY29uc3Qgc2hhID0gYm9keS5kYXRhPy5jb21taXRTaGEgPz8gdW5kZWZpbmVkO1xuICAgIGlmICghc2hhKSB7XG4gICAgICAvLyBBIHJlYWwgXCJuZXZlciBkZXBsb3llZFwiIGFuc3dlciDigJQgcmVtZW1iZXIgaXQgc28gd2UgYXNrIG9uY2UgcGVyIGNvbnRhaW5lci5cbiAgICAgIG5vUmVjb3JkZWREZXBsb3kuYWRkKHBpcGVsaW5lSWQpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgbGFzdFNoYUJ5UGlwZWxpbmUuc2V0KHBpcGVsaW5lSWQsIHNoYSk7XG4gICAgcmV0dXJuIHNoYTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLndhcm4oJ0xhc3QtZGVwbG95LWNvbW1pdCBsb29rdXAgZXJyb3JlZDsgcmVzb2x2aW5nIGEgc2luZ2xlIGNvbW1pdCcsIHtcbiAgICAgIGVycm9yOiAoZXJyIGFzIHsgbmFtZT86IHN0cmluZyB9KT8ubmFtZSA/PyBTdHJpbmcoZXJyKSxcbiAgICB9KTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKiBAaW50ZXJuYWwgVGVzdC1vbmx5OiBmb3JnZXQgcmVzb2x2ZWQgY29tbWl0cywgU0NNIGNvb2xkb3duIGFuZCBjYWNoZWQgdG9rZW5zLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9yZXNldFNjbUZvclRlc3RzKCk6IHZvaWQge1xuICBjb21taXRSZXN1bHRDYWNoZS5jbGVhcigpO1xuICBsYXN0U2hhQnlQaXBlbGluZS5jbGVhcigpO1xuICBub1JlY29yZGVkRGVwbG95LmNsZWFyKCk7XG4gIGNvbW1pdE1ldGFDYWNoZS5jbGVhcigpO1xuICBzY21Db29sZG93blVudGlsID0gMDtcbiAgZ2l0aHViVG9rZW5CeU9yZy5jbGVhcigpO1xufVxuIl19
328
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NtLmpzIiwic291cmNlcyI6WyIuLi9zcmMvc2NtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUE4QjFGLG9GQUFvRjtBQUNwRixnRkFBZ0Y7QUFDaEYsK0VBQStFO0FBQy9FLGdGQUFnRjtBQUNoRix5Q0FBeUM7QUFDekMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLFVBQVUsQ0FBcUIsaUJBQWlCLENBQUMsQ0FBQztBQUNoRixxRkFBcUY7QUFDckYsbUZBQW1GO0FBQ25GLCtFQUErRTtBQUMvRSw4RUFBOEU7QUFDOUUsMERBQTBEO0FBQzFELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxVQUFVLENBQWlCLGlCQUFpQixDQUFDLENBQUM7QUFDNUUsZ0ZBQWdGO0FBQ2hGLDhFQUE4RTtBQUM5RSx1Q0FBdUM7QUFDdkMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0FBQzNDLDJFQUEyRTtBQUMzRSxNQUFNLGVBQWUsR0FBRyxJQUFJLFVBQVUsQ0FBZ0QsaUJBQWlCLENBQUMsQ0FBQztBQUN6RyxnRkFBZ0Y7QUFDaEYsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7QUFDekIsTUFBTSxlQUFlLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDdEMsc0ZBQXNGO0FBQ3RGLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUMzQixrRkFBa0Y7QUFDbEYsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUM7QUFFbEMsK0VBQStFO0FBQy9FLG9GQUFvRjtBQUNwRixz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Z0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3hCLGdCQUFnQixHQUFHLENBQUMsQ0FBQztJQUNyQixnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IEdldFNlY3JldFZhbHVlQ29tbWFuZCwgU2VjcmV0c01hbmFnZXJDbGllbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc2VjcmV0cy1tYW5hZ2VyJztcbmltcG9ydCB7IGdldEF1dGhUb2tlbiB9IGZyb20gJy4vYXV0aC5qcyc7XG5pbXBvcnQgeyBCb3VuZGVkTWFwLCBDQUNIRV9NQVhfRU5UUklFUywgZmV0Y2hXaXRoVGltZW91dCwgbG9hZFNkaywgbG9nIH0gZnJvbSAnLi91dGlsLmpzJztcblxuLy8gSW4tYWNjb3VudCBjb21taXQtcmFuZ2UgcmVzb2x1dGlvbi5cbi8vIEZvciBhIHNvdXJjZS9kZXBsb3kgZXZlbnQgY2FycnlpbmcgYSBjb21taXRTaGEgd2UgcmVzb2x2ZSB0aGUgY29tbWl0IHRpbWVzdGFtcFxuLy8gKGFuZCBob3cgbWFueSBjb21taXRzIHNoaXBwZWQpIGZvciB0aGUgcmFuZ2Ugc2luY2UgdGhlIGxhc3QgcmVzb2x2ZWQgc2hhIG9mIHRoZVxuLy8gc2FtZSBwaXBlbGluZSDigJQgZW50aXJlbHkgSU4tQUNDT1VOVCwgcGVyIHNvdXJjZSB0eXBlOlxuLy8gICDigKIgQ29kZUNvbW1pdCAg4oaSIEFXUyBTREsgR2V0Q29tbWl0ICh3YWxrIGZpcnN0LXBhcmVudHMgYmFjayB0byB0aGUgYm91bmRhcnkpLlxuLy8gICDigKIgR2l0SHViL0NvZGVDb25uZWN0aW9ucy1HaXRIdWIg4oaSIEdpdEh1YiBSRVNUIGNvbXBhcmUvY29tbWl0cyBBUEkuIEF1dGhlbnRpY2F0ZWRcbi8vICAgICB3aXRoIHRoZSBvcmcncyBgcGlwZWxpbmUtYnVpbGRlci97b3JnSWR9L2dpdGh1Yi10b2tlbmAgc2VjcmV0IHdoZW4gcHJlc2VudFxuLy8gICAgIChkZXJpdmVkIGZyb20gUExBVEZPUk1fU0VDUkVUX05BTUUpLCBvdGhlcndpc2UgYmVzdC1lZmZvcnQgdW5hdXRoZW50aWNhdGVkLlxuLy8gICDigKIgQml0YnVja2V0ICAg4oaSIEJpdGJ1Y2tldCBSRVNUIGNvbW1pdCBBUEkgKHNpbmdsZS1jb21taXQ7IHJhbmdlIHdhbGsgb21pdHRlZCkuXG4vLyBUaGUgb2xkZXN0IHVuc2hpcHBlZCBjb21taXQncyB0aW1lc3RhbXAg4oaSIGBjb21taXRUaW1lc3RhbXBgOyB0aGUgbnVtYmVyIG9mIGNvbW1pdHNcbi8vIGluIHRoZSByYW5nZSDihpIgYGNvbW1pdENvdW50YC4gRXZlcnl0aGluZyBoZXJlIGlzIEJFU1QtRUZGT1JUOiBvbiBhbnkgZmFpbHVyZSB0aGVcbi8vIGZpZWxkcyBhcmUgc2ltcGx5IG9taXR0ZWQgKHJlcG9ydGluZyBmYWxscyBiYWNrIHRvIGB1bmtub3duYCkuIEl0IG11c3QgTkVWRVIgZmFpbFxuLy8gdGhlIGJhdGNoLlxuLy9cbi8vIElBTSByZXF1aXJlZCBieSB0aGlzIHBhdGggKGRvY3VtZW50IG9ubHkg4oCUIGdyYW50ZWQgb24gdGhlIGV2ZW50cyBzdGFjayk6XG4vLyAgIOKAoiBjb2RlY29tbWl0OkdldENvbW1pdCAgICAgICAgICAgIChDb2RlQ29tbWl0IHNvdXJjZXMpXG4vLyAgIOKAoiBzZWNyZXRzbWFuYWdlcjpHZXRTZWNyZXRWYWx1ZSBvbiBgcGlwZWxpbmUtYnVpbGRlci8qL2dpdGh1Yi10b2tlbmAgKHRva2VuIFNDTSBzb3VyY2VzKVxuXG50eXBlIFNvdXJjZVByb3ZpZGVyID0gJ2dpdGh1YicgfCAnYml0YnVja2V0JyB8ICdjb2RlY29tbWl0JyB8ICd1bmtub3duJztcbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlUmVmIHtcbiAgc2hhOiBzdHJpbmc7XG4gIHByb3ZpZGVyOiBTb3VyY2VQcm92aWRlcjtcbiAgb3duZXI/OiBzdHJpbmc7XG4gIHJlcG8/OiBzdHJpbmc7XG4gIHJlcG9zaXRvcnlOYW1lPzogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb21taXRJbmZvIHsgY29tbWl0VGltZXN0YW1wPzogc3RyaW5nOyBjb21taXRDb3VudD86IG51bWJlciB9XG5cbi8vIFBlci0ocGlwZWxpbmUsc2hhKSByZXNvbHZlZCByZXN1bHQg4oCUIGNvbXB1dGVkIG9uY2UsIHJldXNlZCBhY3Jvc3MgdGhlIG1hbnkgZXZlbnRzXG4vLyAoUElQRUxJTkUvU1RBR0UvQUNUSU9OKSB0aGF0IHNoYXJlIGEgc291cmNlIHJldmlzaW9uIGFuZCBhY3Jvc3MgcmVkZWxpdmVyaWVzLlxuLy8gT25seSBSRVNPTFZFRCByZXN1bHRzIGFyZSBjYWNoZWQg4oCUIGFuIGVtcHR5IGB7fWAgKFNDTSBjb29sZG93biwgYSB0aW1lb3V0LCBhXG4vLyA0MDQgZnJvbSBhIHJlcG8gd2hvc2UgdG9rZW4gd2FzIGp1c3QgYWRkZWQpIG11c3Qgbm90IHBpbiBcIm5vIGNvbW1pdCBpbmZvXCIgZm9yXG4vLyB0aGF0IHNoYSBmb3IgdGhlIGNvbnRhaW5lcidzIGxpZmV0aW1lLlxuY29uc3QgY29tbWl0UmVzdWx0Q2FjaGUgPSBuZXcgQm91bmRlZE1hcDxzdHJpbmcsIENvbW1pdEluZm8+KENBQ0hFX01BWF9FTlRSSUVTKTtcbi8vIExhc3Qgc2hhIHdlIHN1Y2Nlc3NmdWxseSByZXNvbHZlZCBwZXIgcGlwZWxpbmUg4oCUIHRoZSBleGNsdXNpdmUgbG93ZXIgYm91bmQgZm9yIHRoZVxuLy8gbmV4dCByYW5nZSAoXCJjb21taXRzIHNpbmNlIHRoZSBsYXN0IGRlcGxveVwiKS4gSW4tbWVtb3J5LCBzbyBhIGNvbGQgc3RhcnQgZW1wdGllc1xuLy8gaXQ7IGBmZXRjaExhc3REZXBsb3llZFNoYWAgdGhlbiByZWFkcyB0aGUgYm91bmQgYmFjayBmcm9tIHRoZSByZXBvcnRpbmcgQVBJLFxuLy8gYmVjYXVzZSByZXNvbHZpbmcgYXMgYSBzaW5nbGUgY29tbWl0IG1hZGUgbGVhZCB0aW1lIGFuZCBjb21taXRDb3VudCBmYXIgdG9vXG4vLyBzbWFsbCBvbiBldmVyeSBmcmVzaCBjb250YWluZXIg4oCUIHdoaWNoIGlzIG1vc3Qgb2YgdGhlbS5cbmNvbnN0IGxhc3RTaGFCeVBpcGVsaW5lID0gbmV3IEJvdW5kZWRNYXA8c3RyaW5nLCBzdHJpbmc+KENBQ0hFX01BWF9FTlRSSUVTKTtcbi8vIFBpcGVsaW5lcyB3aG9zZSBib3VuZCB3ZSBhbHJlYWR5IGFza2VkIHRoZSByZXBvcnRpbmcgQVBJIGZvciBhbmQgaXQgaGFkIG5vbmUuXG4vLyBXaXRob3V0IHRoaXMsIGEgcGlwZWxpbmUgdGhhdCBnZW51aW5lbHkgaGFzIG5ldmVyIGRlcGxveWVkIHJlLWFza3Mgb24gZXZlcnlcbi8vIGV2ZW50IGZvciB0aGUgbGlmZSBvZiB0aGUgY29udGFpbmVyLlxuY29uc3Qgbm9SZWNvcmRlZERlcGxveSA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuLy8gUGVyLXNoYSBDb2RlQ29tbWl0IG1ldGFkYXRhIGNhY2hlIChkYXRlICsgZmlyc3QtcGFyZW50KSBmb3IgcmFuZ2Ugd2Fsa3MuXG5jb25zdCBjb21taXRNZXRhQ2FjaGUgPSBuZXcgQm91bmRlZE1hcDxzdHJpbmcsIHsgZGF0ZT86IHN0cmluZzsgcGFyZW50cz86IHN0cmluZ1tdIH0+KENBQ0hFX01BWF9FTlRSSUVTKTtcbi8vIFNDTSByYXRlLWxpbWl0IGNvb2xkb3duOiBhZnRlciBhIDQwMy80Mjkgd2Ugc3RvcCBjYWxsaW5nIHRoZSBTQ00gZm9yIGEgd2hpbGUuXG5sZXQgc2NtQ29vbGRvd25VbnRpbCA9IDA7XG5jb25zdCBTQ01fQ09PTERPV05fTVMgPSAyICogNjAgKiAxMDAwO1xuLy8gQ2FwIHRoZSBDb2RlQ29tbWl0IGZpcnN0LXBhcmVudCB3YWxrIHNvIGEgbG9uZyByYW5nZSBjYW4ndCBibG93IHRoZSBMYW1iZGEgdGltZW91dC5cbmNvbnN0IE1BWF9DT01NSVRfV0FMSyA9IDUwO1xuLy8gUGVyLXJlcXVlc3QgdGltZW91dCBmb3IgZXh0ZXJuYWwgU0NNIGNhbGxzIChkZWZlbnNpdmUgYWdhaW5zdCBzbG93L2h1bmcgaG9zdHMpLlxuY29uc3QgU0NNX0ZFVENIX1RJTUVPVVRfTVMgPSAzMDAwO1xuXG4vLyBUaGUgZm9yd2FyZGVyIGlzIGEgZmxlZXQgTGFtYmRhOiBvbmUgd2FybSBjb250YWluZXIgcmVzb2x2ZXMgZXZlbnRzIGZvciBNQU5ZXG4vLyBvcmdzLCBzbyB0aGUgR2l0SHViIHRva2VuIE1VU1QgYmUga2V5ZWQgYnkgdGhlIGV2ZW50J3MgcmVzb2x2ZWQgb3JnIChub3QgYSBzaW5nbGVcbi8vIGNvbnRhaW5lci1nbG9iYWwgdG9rZW4pLiBFYWNoIG9yZydzIHRva2VuIGxpdmVzIGF0IGA8cHJlZml4Pi88b3JnSWQ+L2dpdGh1Yi10b2tlbmAsXG4vLyBkZXJpdmVkIGZyb20gUExBVEZPUk1fU0VDUkVUX05BTUUgKGA8cHJlZml4Pi88Y29udGFpbmVyT3JnPi9wbGF0Zm9ybWApLiBudWxsIGNhY2hlc1xuLy8gYSBkZWZpbml0aXZlIG1pc3MgKG5vIHNlY3JldCAvIHJlYWQgZmFpbGVkKSDihpIgdW5hdXRoZW50aWNhdGVkIGJlc3QtZWZmb3J0LlxuY29uc3QgZ2l0aHViVG9rZW5CeU9yZyA9IG5ldyBCb3VuZGVkTWFwPHN0cmluZywgc3RyaW5nIHwgbnVsbD4oQ0FDSEVfTUFYX0VOVFJJRVMpO1xuXG4vKipcbiAqIERlcml2ZSBhIHNwZWNpZmljIG9yZydzIGdpdGh1Yi10b2tlbiBzZWNyZXQgbmFtZSBmcm9tIFBMQVRGT1JNX1NFQ1JFVF9OQU1FXG4gKiAoYDxwcmVmaXg+Lzxjb250YWluZXJPcmc+L3BsYXRmb3JtYCkuIFdpdGggYW4gYG9yZ0lkYCB3ZSBzd2FwIHRoZSBvcmcgc2VnbWVudFxuICogKGA8cHJlZml4Pi88b3JnSWQ+L2dpdGh1Yi10b2tlbmApOyB3aXRob3V0IG9uZSAocGlwZWxpbmUgY2FycmllZCBubyBPcmdJZCB0YWcpIHdlXG4gKiBmYWxsIGJhY2sgdG8gdGhlIGNvbnRhaW5lcidzIG93biBzaWJsaW5nIHNlY3JldC4gUmV0dXJucyB1bmRlZmluZWQgd2hlblxuICogUExBVEZPUk1fU0VDUkVUX05BTUUgaXNuJ3QgdGhlIGV4cGVjdGVkIGAuLi4vcGxhdGZvcm1gIHNoYXBlLlxuICovXG5mdW5jdGlvbiBnaXRodWJUb2tlblNlY3JldE5hbWUob3JnSWQ6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBuYW1lID0gcHJvY2Vzcy5lbnYuUExBVEZPUk1fU0VDUkVUX05BTUU7XG4gIGlmICghbmFtZSB8fCAhbmFtZS5lbmRzV2l0aCgnL3BsYXRmb3JtJykpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IGJhc2UgPSBuYW1lLnNsaWNlKDAsIC0nL3BsYXRmb3JtJy5sZW5ndGgpOyAvLyA8cHJlZml4Pi88Y29udGFpbmVyT3JnPlxuICBpZiAob3JnSWQpIHtcbiAgICBjb25zdCBzbGFzaCA9IGJhc2UubGFzdEluZGV4T2YoJy8nKTtcbiAgICBjb25zdCBwcmVmaXggPSBzbGFzaCA+IDAgPyBiYXNlLnNsaWNlKDAsIHNsYXNoKSA6IGJhc2U7XG4gICAgcmV0dXJuIGAke3ByZWZpeH0vJHtvcmdJZH0vZ2l0aHViLXRva2VuYDtcbiAgfVxuICByZXR1cm4gYCR7YmFzZX0vZ2l0aHViLXRva2VuYDtcbn1cblxuLyoqIFJlYWQgKGFuZCBjYWNoZSwgcGVyIG9yZykgdGhlIG9yZyBnaXRodWIgdG9rZW47IG51bGwg4oaSIHVuYXV0aGVudGljYXRlZCBiZXN0LWVmZm9ydC4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEdpdEh1YlRva2VuKG9yZ0lkOiBzdHJpbmcgfCBudWxsKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gIGNvbnN0IGtleSA9IG9yZ0lkID8/ICcnO1xuICBjb25zdCBjYWNoZWQgPSBnaXRodWJUb2tlbkJ5T3JnLmdldChrZXkpO1xuICBpZiAoY2FjaGVkICE9PSB1bmRlZmluZWQpIHJldHVybiBjYWNoZWQ7XG4gIGNvbnN0IHNlY3JldE5hbWUgPSBnaXRodWJUb2tlblNlY3JldE5hbWUob3JnSWQpO1xuICBpZiAoIXNlY3JldE5hbWUpIHsgZ2l0aHViVG9rZW5CeU9yZy5zZXQoa2V5LCBudWxsKTsgcmV0dXJuIG51bGw7IH1cbiAgbGV0IHRva2VuOiBzdHJpbmcgfCBudWxsO1xuICB0cnkge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBTZWNyZXRzTWFuYWdlckNsaWVudCh7fSk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgY2xpZW50LnNlbmQobmV3IEdldFNlY3JldFZhbHVlQ29tbWFuZCh7IFNlY3JldElkOiBzZWNyZXROYW1lIH0pKTtcbiAgICAvLyBUaGUgZ2l0aHViLXRva2VuIHNlY3JldCBpcyBhIFJBVyB0b2tlbiBzdHJpbmcgKG5vdCBKU09OIOKAlCBDREsgcmVzb2x2ZXMgaXQgdmlhXG4gICAgLy8gdGhlIGRlZmF1bHQgU2VjcmV0U3RyaW5nIHdpdGggbm8ga2V5KS5cbiAgICB0b2tlbiA9IHJlcy5TZWNyZXRTdHJpbmcgJiYgcmVzLlNlY3JldFN0cmluZy5sZW5ndGggPiAwID8gcmVzLlNlY3JldFN0cmluZy50cmltKCkgOiBudWxsO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2cud2FybignTm8gZ2l0aHViLXRva2VuIHNlY3JldCDigJQgR2l0SHViIGNvbW1pdCByZXNvbHV0aW9uIHdpbGwgYmUgdW5hdXRoZW50aWNhdGVkJywgeyBvcmdJZCwgZXJyb3I6IChlcnIgYXMgeyBuYW1lPzogc3RyaW5nIH0pPy5uYW1lIH0pO1xuICAgIHRva2VuID0gbnVsbDtcbiAgfVxuICBnaXRodWJUb2tlbkJ5T3JnLnNldChrZXksIHRva2VuKTtcbiAgcmV0dXJuIHRva2VuO1xufVxuXG4vKiogTm9ybWFsaXplIGEgY29tbWl0IGRhdGUgdG8gSVNPIDg2MDEuIEFjY2VwdHMgSVNPIHN0cmluZ3MgYW5kIENvZGVDb21taXQnc1xuICogIFwiPGVwb2NoLXNlY29uZHM+ICtaWlpaXCIgZm9ybS4gUmV0dXJucyB1bmRlZmluZWQgd2hlbiB1bnBhcnNlYWJsZS4gKi9cbmZ1bmN0aW9uIHRvSXNvKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgfHwgdmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBlcG9jaCA9IC9eKFxcZHs5LH0pXFxiLy5leGVjKHZhbHVlLnRyaW0oKSk7XG4gIGlmIChlcG9jaCkge1xuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShOdW1iZXIoZXBvY2hbMV0pICogMTAwMCk7XG4gICAgcmV0dXJuIE51bWJlci5pc05hTihkLmdldFRpbWUoKSkgPyB1bmRlZmluZWQgOiBkLnRvSVNPU3RyaW5nKCk7XG4gIH1cbiAgY29uc3QgZCA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgcmV0dXJuIE51bWJlci5pc05hTihkLmdldFRpbWUoKSkgPyB1bmRlZmluZWQgOiBkLnRvSVNPU3RyaW5nKCk7XG59XG5cbi8qKiBDbGFzc2lmeSBhIHNvdXJjZS1yZXZpc2lvbiBVUkwgaW50byBhIHByb3ZpZGVyICsgcmVwbyBjb29yZGluYXRlcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGFzc2lmeVNvdXJjZSh1cmw6IHN0cmluZyB8IHVuZGVmaW5lZCk6IE9taXQ8U291cmNlUmVmLCAnc2hhJz4ge1xuICBpZiAoIXVybCkgcmV0dXJuIHsgcHJvdmlkZXI6ICd1bmtub3duJyB9O1xuICB0cnkge1xuICAgIGNvbnN0IHUgPSBuZXcgVVJMKHVybCk7XG4gICAgY29uc3QgaG9zdCA9IHUuaG9zdG5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoaG9zdCA9PT0gJ2dpdGh1Yi5jb20nIHx8IGhvc3QuZW5kc1dpdGgoJy5naXRodWIuY29tJykpIHtcbiAgICAgIGNvbnN0IHBhcnRzID0gdS5wYXRobmFtZS5zcGxpdCgnLycpLmZpbHRlcihCb29sZWFuKTtcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPj0gMikgcmV0dXJuIHsgcHJvdmlkZXI6ICdnaXRodWInLCBvd25lcjogcGFydHNbMF0sIHJlcG86IHBhcnRzWzFdLnJlcGxhY2UoL1xcLmdpdCQvLCAnJykgfTtcbiAgICB9XG4gICAgaWYgKGhvc3QgPT09ICdiaXRidWNrZXQub3JnJykge1xuICAgICAgY29uc3QgcGFydHMgPSB1LnBhdGhuYW1lLnNwbGl0KCcvJykuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+PSAyKSByZXR1cm4geyBwcm92aWRlcjogJ2JpdGJ1Y2tldCcsIG93bmVyOiBwYXJ0c1swXSwgcmVwbzogcGFydHNbMV0ucmVwbGFjZSgvXFwuZ2l0JC8sICcnKSB9O1xuICAgIH1cbiAgICBpZiAodS5wYXRobmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdjb2RlY29tbWl0JykgfHwgdS5oYXNoLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2NvZGVjb21taXQnKSB8fCB1LnBhdGhuYW1lLmluY2x1ZGVzKCcvcmVwb3NpdG9yaWVzLycpKSB7XG4gICAgICBjb25zdCBtID0gL3JlcG9zaXRvcig/Onl8aWVzKVxcLyhbXi8jP10rKS8uZXhlYyh1LnBhdGhuYW1lICsgdS5oYXNoKTtcbiAgICAgIGlmIChtKSByZXR1cm4geyBwcm92aWRlcjogJ2NvZGVjb21taXQnLCByZXBvc2l0b3J5TmFtZTogZGVjb2RlVVJJQ29tcG9uZW50KG1bMV0pIH07XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICAvLyBub3QgYSBVUkwg4oaSIHVua25vd25cbiAgfVxuICByZXR1cm4geyBwcm92aWRlcjogJ3Vua25vd24nIH07XG59XG5cbmxldCBjb2RlY29tbWl0Q2xpZW50c0J5UmVnaW9uOiBNYXA8c3RyaW5nLCB7IHNlbmQoY29tbWFuZDogdW5rbm93bik6IFByb21pc2U8dW5rbm93bj4gfT4gfCB1bmRlZmluZWQ7XG5pbnRlcmZhY2UgQ29kZUNvbW1pdE1vZHVsZSB7XG4gIENvZGVDb21taXRDbGllbnQ6IG5ldyAoY29uZmlnOiB7IHJlZ2lvbjogc3RyaW5nIH0pID0+IHsgc2VuZChjb21tYW5kOiB1bmtub3duKTogUHJvbWlzZTx1bmtub3duPiB9O1xuICBHZXRDb21taXRDb21tYW5kOiBuZXcgKGlucHV0OiB7IHJlcG9zaXRvcnlOYW1lOiBzdHJpbmc7IGNvbW1pdElkOiBzdHJpbmcgfSkgPT4gdW5rbm93bjtcbn1cbmxldCBjb2RlY29tbWl0TW9kOiBDb2RlQ29tbWl0TW9kdWxlIHwgdW5kZWZpbmVkO1xuYXN5bmMgZnVuY3Rpb24gY29kZUNvbW1pdENsaWVudChyZWdpb246IHN0cmluZyk6IFByb21pc2U8eyBzZW5kKGNvbW1hbmQ6IHVua25vd24pOiBQcm9taXNlPHVua25vd24+IH0+IHtcbiAgaWYgKCFjb2RlY29tbWl0TW9kKSBjb2RlY29tbWl0TW9kID0gYXdhaXQgbG9hZFNkazxDb2RlQ29tbWl0TW9kdWxlPignQGF3cy1zZGsvY2xpZW50LWNvZGVjb21taXQnKTtcbiAgaWYgKCFjb2RlY29tbWl0Q2xpZW50c0J5UmVnaW9uKSBjb2RlY29tbWl0Q2xpZW50c0J5UmVnaW9uID0gbmV3IE1hcCgpO1xuICBsZXQgY2xpZW50ID0gY29kZWNvbW1pdENsaWVudHNCeVJlZ2lvbi5nZXQocmVnaW9uKTtcbiAgaWYgKCFjbGllbnQpIHtcbiAgICBjbGllbnQgPSBuZXcgY29kZWNvbW1pdE1vZC5Db2RlQ29tbWl0Q2xpZW50KHsgcmVnaW9uIH0pO1xuICAgIGNvZGVjb21taXRDbGllbnRzQnlSZWdpb24uc2V0KHJlZ2lvbiwgY2xpZW50KTtcbiAgfVxuICByZXR1cm4gY2xpZW50O1xufVxuXG4vKiogRmV0Y2ggKGNhY2hlZCkgYSBzaW5nbGUgQ29kZUNvbW1pdCBjb21taXQncyBkYXRlICsgZmlyc3QgcGFyZW50cyB2aWEgR2V0Q29tbWl0LiAqL1xuYXN5bmMgZnVuY3Rpb24gY29kZUNvbW1pdE1ldGEocmVnaW9uOiBzdHJpbmcsIHJlcG9zaXRvcnlOYW1lOiBzdHJpbmcsIGNvbW1pdElkOiBzdHJpbmcpOiBQcm9taXNlPHsgZGF0ZT86IHN0cmluZzsgcGFyZW50cz86IHN0cmluZ1tdIH0gfCB1bmRlZmluZWQ+IHtcbiAgY29uc3QgY2FjaGVkID0gY29tbWl0TWV0YUNhY2hlLmdldChjb21taXRJZCk7XG4gIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQ7XG4gIGlmICghY29kZWNvbW1pdE1vZCkgY29kZWNvbW1pdE1vZCA9IGF3YWl0IGxvYWRTZGs8Q29kZUNvbW1pdE1vZHVsZT4oJ0Bhd3Mtc2RrL2NsaWVudC1jb2RlY29tbWl0Jyk7XG4gIGNvbnN0IGNsaWVudCA9IGF3YWl0IGNvZGVDb21taXRDbGllbnQocmVnaW9uKTtcbiAgY29uc3Qgb3V0ID0gYXdhaXQgY2xpZW50LnNlbmQobmV3IGNvZGVjb21taXRNb2QuR2V0Q29tbWl0Q29tbWFuZCh7IHJlcG9zaXRvcnlOYW1lLCBjb21taXRJZCB9KSkgYXMge1xuICAgIGNvbW1pdD86IHsgY29tbWl0dGVyPzogeyBkYXRlPzogc3RyaW5nIH07IGF1dGhvcj86IHsgZGF0ZT86IHN0cmluZyB9OyBwYXJlbnRzPzogc3RyaW5nW10gfTtcbiAgfTtcbiAgY29uc3QgY29tbWl0ID0gb3V0LmNvbW1pdDtcbiAgY29uc3QgbWV0YSA9IHsgZGF0ZTogdG9Jc28oY29tbWl0Py5jb21taXR0ZXI/LmRhdGUgPz8gY29tbWl0Py5hdXRob3I/LmRhdGUpLCBwYXJlbnRzOiBjb21taXQ/LnBhcmVudHMgfTtcbiAgY29tbWl0TWV0YUNhY2hlLnNldChjb21taXRJZCwgbWV0YSk7XG4gIHJldHVybiBtZXRhO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlQ29kZUNvbW1pdChyZWdpb246IHN0cmluZywgcmVwb3NpdG9yeU5hbWU6IHN0cmluZywgc2hhOiBzdHJpbmcsIHNpbmNlU2hhPzogc3RyaW5nKTogUHJvbWlzZTxDb21taXRJbmZvPiB7XG4gIGxldCBjdXI6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHNoYTtcbiAgbGV0IGNvdW50ID0gMDtcbiAgbGV0IG9sZGVzdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBsZXQgdHJ1bmNhdGVkID0gZmFsc2U7XG4gIGZvciAobGV0IGkgPSAwOyA7IGkrKykge1xuICAgIGlmICghY3VyKSBicmVhazsgLy8gcmVhY2hlZCBoaXN0b3J5IHJvb3Qg4oCUIHRoZSB3aG9sZSByYW5nZSBpcyBjb3ZlcmVkXG4gICAgaWYgKHNpbmNlU2hhICYmIGN1ciA9PT0gc2luY2VTaGEpIGJyZWFrOyAvLyByZWFjaGVkIHRoZSBleGNsdXNpdmUgbG93ZXIgYm91bmRcbiAgICBpZiAoaSA+PSBNQVhfQ09NTUlUX1dBTEspIHsgdHJ1bmNhdGVkID0gdHJ1ZTsgYnJlYWs7IH0gLy8gaGl0IHRoZSBjYXAgYmVmb3JlIHRoZSBib3VuZGFyeVxuICAgIGNvbnN0IG1ldGEgPSBhd2FpdCBjb2RlQ29tbWl0TWV0YShyZWdpb24sIHJlcG9zaXRvcnlOYW1lLCBjdXIpO1xuICAgIGlmICghbWV0YT8uZGF0ZSkgYnJlYWs7XG4gICAgY291bnQrKztcbiAgICBvbGRlc3QgPSBtZXRhLmRhdGU7XG4gICAgaWYgKCFzaW5jZVNoYSkgYnJlYWs7IC8vIG5vIHJhbmdlIOKGkiBzaW5nbGUgY29tbWl0XG4gICAgY3VyID0gbWV0YS5wYXJlbnRzPy5bMF07XG4gIH1cbiAgLy8gQSB0cnVuY2F0ZWQgd2FsayB5aWVsZHMgYSBjb21taXQgTkVXRVIgdGhhbiB0aGUgdHJ1ZSBvbGRlc3QtdW5zaGlwcGVkIGNvbW1pdCxcbiAgLy8gd2hpY2ggd291bGQgVU5ERVJTVEFURSBsZWFkIHRpbWUg4oCUIG9taXQgdGhlIGZpZWxkcyBlbnRpcmVseSByYXRoZXIgdGhhbiByZXBvcnQgYVxuICAvLyB3cm9uZyAodG9vLXNtYWxsKSB2YWx1ZS4gUmVwb3J0aW5nIGZhbGxzIGJhY2sgdG8gYHVua25vd25gLlxuICBpZiAodHJ1bmNhdGVkKSByZXR1cm4ge307XG4gIHJldHVybiBvbGRlc3QgPyB7IGNvbW1pdFRpbWVzdGFtcDogb2xkZXN0LCBjb21taXRDb3VudDogY291bnQgfSA6IHt9O1xufVxuXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlR2l0SHViKG93bmVyOiBzdHJpbmcsIHJlcG86IHN0cmluZywgc2hhOiBzdHJpbmcsIHNpbmNlU2hhOiBzdHJpbmcgfCB1bmRlZmluZWQsIG9yZ0lkOiBzdHJpbmcgfCBudWxsKTogUHJvbWlzZTxDb21taXRJbmZvPiB7XG4gIGNvbnN0IHRva2VuID0gYXdhaXQgZ2V0R2l0SHViVG9rZW4ob3JnSWQpO1xuICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vdm5kLmdpdGh1Yitqc29uJyxcbiAgICAnVXNlci1BZ2VudCc6ICdwaXBlbGluZS1idWlsZGVyLWZvcndhcmRlcicsXG4gICAgJ1gtR2l0SHViLUFwaS1WZXJzaW9uJzogJzIwMjItMTEtMjgnLFxuICB9O1xuICBpZiAodG9rZW4pIGhlYWRlcnMuQXV0aG9yaXphdGlvbiA9IGBCZWFyZXIgJHt0b2tlbn1gO1xuICBjb25zdCByYXRlTGltaXRlZCA9IChyOiBSZXNwb25zZSkgPT4gci5zdGF0dXMgPT09IDQwMyB8fCByLnN0YXR1cyA9PT0gNDI5O1xuXG4gIGlmIChzaW5jZVNoYSkge1xuICAgIGNvbnN0IHIgPSBhd2FpdCBmZXRjaFdpdGhUaW1lb3V0KGBodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zLyR7b3duZXJ9LyR7cmVwb30vY29tcGFyZS8ke3NpbmNlU2hhfS4uLiR7c2hhfWAsIHsgaGVhZGVycyB9LCBTQ01fRkVUQ0hfVElNRU9VVF9NUyk7XG4gICAgaWYgKHJhdGVMaW1pdGVkKHIpKSB7IHNjbUNvb2xkb3duVW50aWwgPSBEYXRlLm5vdygpICsgU0NNX0NPT0xET1dOX01TOyByZXR1cm4ge307IH1cbiAgICBpZiAoci5vaykge1xuICAgICAgY29uc3QgaiA9IGF3YWl0IHIuanNvbigpIGFzIHsgY29tbWl0cz86IEFycmF5PHsgY29tbWl0PzogeyBjb21taXR0ZXI/OiB7IGRhdGU/OiBzdHJpbmcgfTsgYXV0aG9yPzogeyBkYXRlPzogc3RyaW5nIH0gfSB9PiB9O1xuICAgICAgY29uc3QgY29tbWl0cyA9IEFycmF5LmlzQXJyYXkoai5jb21taXRzKSA/IGouY29tbWl0cyA6IFtdO1xuICAgICAgaWYgKGNvbW1pdHMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBvbGRlc3QgPSB0b0lzbyhjb21taXRzWzBdPy5jb21taXQ/LmNvbW1pdHRlcj8uZGF0ZSA/PyBjb21taXRzWzBdPy5jb21taXQ/LmF1dGhvcj8uZGF0ZSk7XG4gICAgICAgIGlmIChvbGRlc3QpIHJldHVybiB7IGNvbW1pdFRpbWVzdGFtcDogb2xkZXN0LCBjb21taXRDb3VudDogY29tbWl0cy5sZW5ndGggfTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gZmFsbCB0aHJvdWdoIHRvIHNpbmdsZS1jb21taXQgcmVzb2x1dGlvblxuICB9XG4gIGNvbnN0IHIyID0gYXdhaXQgZmV0Y2hXaXRoVGltZW91dChgaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy8ke293bmVyfS8ke3JlcG99L2NvbW1pdHMvJHtzaGF9YCwgeyBoZWFkZXJzIH0sIFNDTV9GRVRDSF9USU1FT1VUX01TKTtcbiAgaWYgKHJhdGVMaW1pdGVkKHIyKSkgeyBzY21Db29sZG93blVudGlsID0gRGF0ZS5ub3coKSArIFNDTV9DT09MRE9XTl9NUzsgcmV0dXJuIHt9OyB9XG4gIGlmIChyMi5vaykge1xuICAgIGNvbnN0IGogPSBhd2FpdCByMi5qc29uKCkgYXMgeyBjb21taXQ/OiB7IGNvbW1pdHRlcj86IHsgZGF0ZT86IHN0cmluZyB9OyBhdXRob3I/OiB7IGRhdGU/OiBzdHJpbmcgfSB9IH07XG4gICAgY29uc3QgZCA9IHRvSXNvKGouY29tbWl0Py5jb21taXR0ZXI/LmRhdGUgPz8gai5jb21taXQ/LmF1dGhvcj8uZGF0ZSk7XG4gICAgaWYgKGQpIHJldHVybiB7IGNvbW1pdFRpbWVzdGFtcDogZCwgY29tbWl0Q291bnQ6IDEgfTtcbiAgfVxuICByZXR1cm4ge307XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVCaXRidWNrZXQob3duZXI6IHN0cmluZywgcmVwbzogc3RyaW5nLCBzaGE6IHN0cmluZyk6IFByb21pc2U8Q29tbWl0SW5mbz4ge1xuICBjb25zdCByID0gYXdhaXQgZmV0Y2hXaXRoVGltZW91dChgaHR0cHM6Ly9hcGkuYml0YnVja2V0Lm9yZy8yLjAvcmVwb3NpdG9yaWVzLyR7b3duZXJ9LyR7cmVwb30vY29tbWl0LyR7c2hhfWAsIHtcbiAgICBoZWFkZXJzOiB7ICdVc2VyLUFnZW50JzogJ3BpcGVsaW5lLWJ1aWxkZXItZm9yd2FyZGVyJywgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LFxuICB9LCBTQ01fRkVUQ0hfVElNRU9VVF9NUyk7XG4gIGlmIChyLnN0YXR1cyA9PT0gNDI5KSB7IHNjbUNvb2xkb3duVW50aWwgPSBEYXRlLm5vdygpICsgU0NNX0NPT0xET1dOX01TOyByZXR1cm4ge307IH1cbiAgaWYgKHIub2spIHtcbiAgICBjb25zdCBqID0gYXdhaXQgci5qc29uKCkgYXMgeyBkYXRlPzogc3RyaW5nIH07XG4gICAgY29uc3QgZCA9IHRvSXNvKGouZGF0ZSk7XG4gICAgaWYgKGQpIHJldHVybiB7IGNvbW1pdFRpbWVzdGFtcDogZCwgY29tbWl0Q291bnQ6IDEgfTtcbiAgfVxuICByZXR1cm4ge307XG59XG5cbi8qKlxuICogUmVzb2x2ZSBgY29tbWl0VGltZXN0YW1wYCArIGBjb21taXRDb3VudGAgZm9yIGEgc291cmNlL2RlcGxveSBldmVudCwgaW4tYWNjb3VudCxcbiAqIGJlc3QtZWZmb3J0LiBDb21wdXRlZCBvbmNlIHBlciAocGlwZWxpbmVJZCwgc2hhKTsgYWR2YW5jZXMgdGhlIHBpcGVsaW5lJ3MgcmFuZ2VcbiAqIGJvdW5kYXJ5IG9ubHkgb24gc3VjY2Vzcy4gTmV2ZXIgdGhyb3dzIOKAlCByZXR1cm5zIHt9IG9uIGFueSBmYWlsdXJlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZUNvbW1pdEluZm8ocGlwZWxpbmVJZDogc3RyaW5nLCBvcmdJZDogc3RyaW5nIHwgbnVsbCwgcmVnaW9uOiBzdHJpbmcsIHNyYzogU291cmNlUmVmKTogUHJvbWlzZTxDb21taXRJbmZvPiB7XG4gIGlmIChzcmMucHJvdmlkZXIgPT09ICd1bmtub3duJykgcmV0dXJuIHt9O1xuICBjb25zdCBya2V5ID0gYCR7cGlwZWxpbmVJZH18JHtzcmMuc2hhfWA7XG4gIGNvbnN0IGNhY2hlZCA9IGNvbW1pdFJlc3VsdENhY2hlLmdldChya2V5KTtcbiAgaWYgKGNhY2hlZCkgcmV0dXJuIGNhY2hlZDtcblxuICAvLyBDb2xkLXN0YXJ0IHJlY292ZXJ5OiBub3RoaW5nIGluIHRoaXMgY29udGFpbmVyJ3MgbWVtb3J5LCBzbyBhc2sgdGhlIHJlcG9ydGluZ1xuICAvLyBBUEkgd2hhdCB0aGlzIHBpcGVsaW5lIGxhc3Qgc2hpcHBlZC4gV2l0aG91dCBpdCB0aGUgcmFuZ2UgYmVsb3cgY29sbGFwc2VzIHRvXG4gIC8vIHRoZSBzaW5nbGUgbmV3ZXN0IGNvbW1pdC5cbiAgY29uc3QgcHJldiA9IGxhc3RTaGFCeVBpcGVsaW5lLmdldChwaXBlbGluZUlkKSA/PyBhd2FpdCBmZXRjaExhc3REZXBsb3llZFNoYShwaXBlbGluZUlkKTtcbiAgY29uc3Qgc2luY2VTaGEgPSBwcmV2ICYmIHByZXYgIT09IHNyYy5zaGEgPyBwcmV2IDogdW5kZWZpbmVkO1xuXG4gIGxldCBpbmZvOiBDb21taXRJbmZvID0ge307XG4gIHRyeSB7XG4gICAgaWYgKHNyYy5wcm92aWRlciA9PT0gJ2NvZGVjb21taXQnICYmIHNyYy5yZXBvc2l0b3J5TmFtZSkge1xuICAgICAgaW5mbyA9IGF3YWl0IHJlc29sdmVDb2RlQ29tbWl0KHJlZ2lvbiwgc3JjLnJlcG9zaXRvcnlOYW1lLCBzcmMuc2hhLCBzaW5jZVNoYSk7XG4gICAgfSBlbHNlIGlmIChzcmMucHJvdmlkZXIgPT09ICdnaXRodWInICYmIHNyYy5vd25lciAmJiBzcmMucmVwbykge1xuICAgICAgaWYgKERhdGUubm93KCkgPj0gc2NtQ29vbGRvd25VbnRpbCkgaW5mbyA9IGF3YWl0IHJlc29sdmVHaXRIdWIoc3JjLm93bmVyLCBzcmMucmVwbywgc3JjLnNoYSwgc2luY2VTaGEsIG9yZ0lkKTtcbiAgICB9IGVsc2UgaWYgKHNyYy5wcm92aWRlciA9PT0gJ2JpdGJ1Y2tldCcgJiYgc3JjLm93bmVyICYmIHNyYy5yZXBvKSB7XG4gICAgICBpZiAoRGF0ZS5ub3coKSA+PSBzY21Db29sZG93blVudGlsKSBpbmZvID0gYXdhaXQgcmVzb2x2ZUJpdGJ1Y2tldChzcmMub3duZXIsIHNyYy5yZXBvLCBzcmMuc2hhKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy53YXJuKCdDb21taXQgcmVzb2x1dGlvbiBmYWlsZWQgKG9taXR0aW5nIGNvbW1pdFRpbWVzdGFtcC9jb21taXRDb3VudCknLCB7IHByb3ZpZGVyOiBzcmMucHJvdmlkZXIsIGVycm9yOiAoZXJyIGFzIHsgbmFtZT86IHN0cmluZyB9KT8ubmFtZSA/PyBTdHJpbmcoZXJyKSB9KTtcbiAgICBpbmZvID0ge307XG4gIH1cblxuICBpZiAoaW5mby5jb21taXRUaW1lc3RhbXApIHtcbiAgICBjb21taXRSZXN1bHRDYWNoZS5zZXQocmtleSwgaW5mbyk7XG4gICAgbGFzdFNoYUJ5UGlwZWxpbmUuc2V0KHBpcGVsaW5lSWQsIHNyYy5zaGEpO1xuICB9XG4gIHJldHVybiBpbmZvO1xufVxuXG4vKipcbiAqIFRoZSBleGNsdXNpdmUgbG93ZXIgYm91bmQgZnJvbSBkdXJhYmxlIHN0b3JhZ2UsIGZvciBhIGNvbnRhaW5lciB3aG9zZSBtZW1vcnkgaXNcbiAqIGVtcHR5LiBCZXN0LWVmZm9ydDogb24gQU5ZIGZhaWx1cmUgdGhpcyByZXR1cm5zIHVuZGVmaW5lZCBhbmQgdGhlIGNhbGxlciByZXNvbHZlc1xuICogYSBzaW5nbGUgY29tbWl0IGV4YWN0bHkgYXMgYmVmb3JlLCBzbyBhIHJlcG9ydGluZy1BUEkgYmxpcCBkZWdyYWRlcyBsZWFkIHRpbWVcbiAqIHJhdGhlciB0aGFuIGZhaWxpbmcgdGhlIGJhdGNoICh3aGljaCB3b3VsZCByZWRlbGl2ZXIgYWxyZWFkeS1mb3J3YXJkZWQgZXZlbnRzKS5cbiAqXG4gKiBObyBgZW52aXJvbm1lbnRgIGlzIHNlbnQ6IHRoaXMgcnVucyB3aGlsZSBoYW5kbGluZyB0aGUgU09VUkNFIGV2ZW50LCBhbmQgdGhlXG4gKiBleGVjdXRpb24gaGFzIG5vdCByZWFjaGVkIGEgZGVwbG95IHN0YWdlIHlldCwgc28gdGhlIGVudmlyb25tZW50IGlzIG5vdCB5ZXRcbiAqIGtub3duLiBUaGUgQVBJIHRoZW4gYW5zd2VycyBcImxhc3Qgc2hpcHBlZCBhbnl3aGVyZVwiLCB3aGljaCBpcyB0aGUgY29ycmVjdCBib3VuZFxuICogZm9yIGFuIFNDTSByYW5nZSB3YWxrLlxuICovXG5hc3luYyBmdW5jdGlvbiBmZXRjaExhc3REZXBsb3llZFNoYShwaXBlbGluZUlkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCBiYXNlVXJsID0gcHJvY2Vzcy5lbnYuUExBVEZPUk1fQkFTRV9VUkw7XG4gIGlmICghYmFzZVVybCB8fCBub1JlY29yZGVkRGVwbG95LmhhcyhwaXBlbGluZUlkKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgdHJ5IHtcbiAgICAvLyBUaGUgcGFja2FnZSdzIFJFUE9SVElORyBidWRnZXQsIGRlbGliZXJhdGVseSwgbm90IFNDTV9GRVRDSF9USU1FT1VUX01TOiB0aGlzIGlzIGFcbiAgICAvLyBjYWxsIHRvIG91ciBvd24gcmVwb3J0aW5nIHNlcnZpY2UsIGFuZCB0aGUgdGlnaHRlciBTQ00gZGVhZGxpbmUgZXhpc3RzIGZvclxuICAgIC8vIHRoaXJkLXBhcnR5IGZvcmdlcyB3ZSBjYW5ub3QgcmVhc29uIGFib3V0LlxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoV2l0aFRpbWVvdXQoXG4gICAgICBgJHtiYXNlVXJsfS9hcGkvcmVwb3J0cy9ldmVudHMvbGFzdC1kZXBsb3ktY29tbWl0P3BpcGVsaW5lSWQ9JHtlbmNvZGVVUklDb21wb25lbnQocGlwZWxpbmVJZCl9YCxcbiAgICAgIHsgaGVhZGVyczogeyBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7YXdhaXQgZ2V0QXV0aFRva2VuKCl9YCwgQWNjZXB0OiAnYXBwbGljYXRpb24vanNvbicgfSB9LFxuICAgICk7XG4gICAgaWYgKCFyZXMub2spIHtcbiAgICAgIGxvZy53YXJuKCdMYXN0LWRlcGxveS1jb21taXQgbG9va3VwIGZhaWxlZDsgcmVzb2x2aW5nIGEgc2luZ2xlIGNvbW1pdCcsIHsgc3RhdHVzOiByZXMuc3RhdHVzIH0pO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgYm9keSA9IGF3YWl0IHJlcy5qc29uKCkgYXMgeyBkYXRhPzogeyBjb21taXRTaGE/OiBzdHJpbmcgfCBudWxsIH0gfTtcbiAgICBjb25zdCBzaGEgPSBib2R5LmRhdGE/LmNvbW1pdFNoYSA/PyB1bmRlZmluZWQ7XG4gICAgaWYgKCFzaGEpIHtcbiAgICAgIC8vIEEgcmVhbCBcIm5ldmVyIGRlcGxveWVkXCIgYW5zd2VyIOKAlCByZW1lbWJlciBpdCBzbyB3ZSBhc2sgb25jZSBwZXIgY29udGFpbmVyLlxuICAgICAgbm9SZWNvcmRlZERlcGxveS5hZGQocGlwZWxpbmVJZCk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBsYXN0U2hhQnlQaXBlbGluZS5zZXQocGlwZWxpbmVJZCwgc2hhKTtcbiAgICByZXR1cm4gc2hhO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2cud2FybignTGFzdC1kZXBsb3ktY29tbWl0IGxvb2t1cCBlcnJvcmVkOyByZXNvbHZpbmcgYSBzaW5nbGUgY29tbWl0Jywge1xuICAgICAgZXJyb3I6IChlcnIgYXMgeyBuYW1lPzogc3RyaW5nIH0pPy5uYW1lID8/IFN0cmluZyhlcnIpLFxuICAgIH0pO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqIEBpbnRlcm5hbCBUZXN0LW9ubHk6IGZvcmdldCByZXNvbHZlZCBjb21taXRzLCBTQ00gY29vbGRvd24gYW5kIGNhY2hlZCB0b2tlbnMuICovXG5leHBvcnQgZnVuY3Rpb24gX3Jlc2V0U2NtRm9yVGVzdHMoKTogdm9pZCB7XG4gIGNvbW1pdFJlc3VsdENhY2hlLmNsZWFyKCk7XG4gIGxhc3RTaGFCeVBpcGVsaW5lLmNsZWFyKCk7XG4gIG5vUmVjb3JkZWREZXBsb3kuY2xlYXIoKTtcbiAgY29tbWl0TWV0YUNhY2hlLmNsZWFyKCk7XG4gIHNjbUNvb2xkb3duVW50aWwgPSAwO1xuICBnaXRodWJUb2tlbkJ5T3JnLmNsZWFyKCk7XG59XG4iXX0=
package/lib/tags.js CHANGED
@@ -122,4 +122,4 @@ export async function resolvePipeline(arn, region) {
122
122
  export function _resetTagsForTests() {
123
123
  resolvedByArn.clear();
124
124
  }
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90YWdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBWXZFLElBQUksZUFBK0MsQ0FBQztBQUNwRCxLQUFLLFVBQVUsZ0JBQWdCO0lBQzdCLElBQUksQ0FBQyxlQUFlO1FBQUUsZUFBZSxHQUFHLENBQUMsTUFBTSxNQUFNLENBQUMsOEJBQThCLENBQUMsQ0FBa0MsQ0FBQztJQUN4SCxPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDO0FBRUQsK0NBQStDO0FBQy9DLDBDQUEwQztBQUMxQywyQ0FBMkM7QUFDM0MsNkRBQTZEO0FBQzdELGlFQUFpRTtBQUNqRSxtRkFBbUY7QUFDbkYsa0ZBQWtGO0FBQ2xGLHFGQUFxRjtBQUNyRixFQUFFO0FBQ0Ysa0ZBQWtGO0FBQ2xGLGlGQUFpRjtBQUNqRiwwQ0FBMEM7QUFFMUMsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLENBQUM7QUFDekMsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDO0FBQ2pDLGdGQUFnRjtBQUNoRixpRkFBaUY7QUFDakYsNkVBQTZFO0FBQzdFLDZDQUE2QztBQUM3QyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUM7QUFDM0IsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQWtDLENBQUM7QUFHbEUsMEVBQTBFO0FBQzFFLGdGQUFnRjtBQUNoRixnRkFBZ0Y7QUFDaEYsK0VBQStFO0FBQy9FLGlFQUFpRTtBQUNqRSxNQUFNLGFBQWEsR0FBRyxJQUFJLFVBQVUsQ0FBd0csaUJBQWlCLENBQUMsQ0FBQztBQUMvSixNQUFNLGdCQUFnQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3ZDLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFZeEMsaUZBQWlGO0FBQ2pGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUM7QUFFNUI7Ozs7OztHQU1HO0FBQ0gsU0FBUyxZQUFZLENBQUMsS0FBeUI7SUFDN0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFDdEMsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLEdBQUcsQ0FBQztJQUN2QixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLElBQUksR0FBRyxJQUFJLENBQUM7WUFBRSxTQUFTO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZDLElBQUksS0FBSyxJQUFJLEdBQUc7WUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxLQUFLLFVBQVUsY0FBYyxDQUFDLE1BQWM7SUFDMUMsSUFBSSxNQUFNLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixNQUFNLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxNQUFNLGdCQUFnQixFQUFFLENBQUM7UUFDeEQsTUFBTSxHQUFHLElBQUksa0JBQWtCLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLGVBQWUsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGVBQWUsQ0FBQyxHQUFXLEVBQUUsTUFBYztJQUMvRCxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLDJFQUEyRTtJQUMzRSx1Q0FBdUM7SUFDdkMsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztRQUMxRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN6RixDQUFDO0lBQ0QsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsTUFBTSxFQUFFLDBCQUEwQixFQUFFLEdBQUcsTUFBTSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2hFLE1BQU0sR0FBRyxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLDBCQUEwQixDQUFDLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwRixNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssZUFBZSxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQztRQUNqRixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssVUFBVSxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQztRQUN2RSxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLFdBQVcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxVQUFVO1lBQUUsR0FBRyxDQUFDLElBQUksQ0FBQywrREFBK0QsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RILGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDYixNQUFNLElBQUksR0FBSSxHQUF5QixFQUFFLElBQUksQ0FBQztRQUM5QyxJQUFJLElBQUksS0FBSyx1QkFBdUIsRUFBRSxDQUFDO1lBQ3JDLDZFQUE2RTtZQUM3RSxHQUFHLENBQUMsS0FBSyxDQUFDLHFGQUFxRixFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUN6SSxNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7UUFDRCwrRUFBK0U7UUFDL0UsOEVBQThFO1FBQzlFLGdGQUFnRjtRQUNoRiw4RUFBOEU7UUFDOUUsa0VBQWtFO1FBQ2xFLE1BQU0sQ0FBQyxHQUFHLEdBQXVGLENBQUM7UUFDbEcsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUM7UUFDM0MsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLFVBQVUsSUFBSSxJQUFJO2VBQ2pDLENBQUMsT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLE1BQU0sSUFBSSxHQUFHLENBQUM7ZUFDN0MsZ0ZBQWdGLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN2RyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsR0FBRyxDQUFDLEtBQUssQ0FBQyxxRUFBcUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3hJLE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQztRQUNELEdBQUcsQ0FBQyxLQUFLLENBQUMsc0NBQXNDLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6RyxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDL0QsQ0FBQztBQUNILENBQUM7QUFFRCxzREFBc0Q7QUFDdEQsTUFBTSxVQUFVLGtCQUFrQjtJQUNoQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBhcm5SZWYsIEJvdW5kZWRNYXAsIENBQ0hFX01BWF9FTlRSSUVTLCBsb2cgfSBmcm9tICcuL3V0aWwuanMnO1xuXG4vLyBBV1MgTGFtYmRhJ3MgTm9kZSBydW50aW1lIHByb3ZpZGVzIEBhd3Mtc2RrIHYzLCBzbyB0aGUgQ29kZVBpcGVsaW5lIGNsaWVudCBpc1xuLy8gbG9hZGVkIGxhemlseSB2aWEgZHluYW1pYyBpbXBvcnQoKSDigJQgYSBzdGF0aWMgd29ya3NwYWNlIGRlcGVuZGVuY3kgd291bGRcbi8vIHBlcnR1cmIgdGhlIHNoYXJlZCBAYXdzLXNkayB2ZXJzaW9uIHRyZWUuIE1pbmltYWwgbG9jYWwgdHlwZXMga2VlcCB0aGUgY2FsbFxuLy8gc2l0ZXMgdHlwZS1jaGVja2VkLlxuaW50ZXJmYWNlIExpc3RUYWdzT3V0cHV0IHsgdGFncz86IEFycmF5PHsga2V5Pzogc3RyaW5nOyB2YWx1ZT86IHN0cmluZyB9PiB9XG5pbnRlcmZhY2UgQ29kZVBpcGVsaW5lQ2xpZW50TGlrZSB7IHNlbmQoY29tbWFuZDogdW5rbm93bik6IFByb21pc2U8TGlzdFRhZ3NPdXRwdXQ+IH1cbmludGVyZmFjZSBDb2RlUGlwZWxpbmVNb2R1bGUge1xuICBDb2RlUGlwZWxpbmVDbGllbnQ6IG5ldyAoY29uZmlnOiB7IHJlZ2lvbjogc3RyaW5nIH0pID0+IENvZGVQaXBlbGluZUNsaWVudExpa2U7XG4gIExpc3RUYWdzRm9yUmVzb3VyY2VDb21tYW5kOiBuZXcgKGlucHV0OiB7IHJlc291cmNlQXJuOiBzdHJpbmcgfSkgPT4gdW5rbm93bjtcbn1cbmxldCBjb2RlcGlwZWxpbmVNb2Q6IENvZGVQaXBlbGluZU1vZHVsZSB8IHVuZGVmaW5lZDtcbmFzeW5jIGZ1bmN0aW9uIGxvYWRDb2RlUGlwZWxpbmUoKTogUHJvbWlzZTxDb2RlUGlwZWxpbmVNb2R1bGU+IHtcbiAgaWYgKCFjb2RlcGlwZWxpbmVNb2QpIGNvZGVwaXBlbGluZU1vZCA9IChhd2FpdCBpbXBvcnQoJ0Bhd3Mtc2RrL2NsaWVudC1jb2RlcGlwZWxpbmUnKSkgYXMgdW5rbm93biBhcyBDb2RlUGlwZWxpbmVNb2R1bGU7XG4gIHJldHVybiBjb2RlcGlwZWxpbmVNb2Q7XG59XG5cbi8vIFRhZyByZXNvbHV0aW9uOiBwYi5waXBlbGluZS1pZCArIHBiLmRlcGxveXMuXG4vLyBQaXBlbGluZXMgYXJlIHRhZ2dlZCBhdCBDREsgc3ludGggd2l0aDpcbi8vICAgcGIucGlwZWxpbmUtaWQgPSA8cGxhdGZvcm0gcGlwZWxpbmVJZD5cbi8vICAgcGIuZGVwbG95cyAgICAgPSA8c3RhZ2U+OjxlbnY+IHBhaXJzIGpvaW5lZCBieSAnKycsIGUuZy5cbi8vICAgICAgICAgICAgICAgICAgICBcIkRlcGxveS1zdGc6c3RhZ2luZytEZXBsb3ktcHJvZDpwcm9kdWN0aW9uXCJcbi8vIFdlIHJlc29sdmUgdGhvc2UgdGFncyBmcm9tIHRoZSBsaXZlIENvZGVQaXBlbGluZSAocmVnaW9uLWF3YXJlKS4gVGhlIEFSTi9hY2NvdW50XG4vLyBuZXZlciBsZWF2ZSBBV1MsIGFuZCBuZXZlciByZWFjaCBhIGxvZyBsaW5lIGVpdGhlcjogbG9ncyBjYXJyeSBgYXJuUmVmKGFybilgLCBhXG4vLyBzaG9ydCBkaWdlc3QuIENhY2hlZCBwZXIgQVJOICh3YXJtLWNvbnRhaW5lcikgdG8gYXZvaWQgaGFtbWVyaW5nIHRoZSBMaXN0VGFncyBBUEkuXG4vL1xuLy8gUmVxdWlyZXMgdGhlIExhbWJkYSBleGVjdXRpb24gcm9sZSB0byBhbGxvdyBgY29kZXBpcGVsaW5lOkxpc3RUYWdzRm9yUmVzb3VyY2VgLlxuLy8gQWNjZXNzRGVuaWVkIGlzIGEgY29uZmlnIGVycm9yIChhbGVydCBsb3VkbHkpOyBhIG1pc3NpbmcgcGIucGlwZWxpbmUtaWQgdGFnIGlzXG4vLyB0cmVhdGVkIGFzIFwibm90IHlldCByZWdpc3RlcmVkXCIgKHNraXApLlxuXG5jb25zdCBQSVBFTElORV9JRF9UQUcgPSAncGIucGlwZWxpbmUtaWQnO1xuY29uc3QgREVQTE9ZU19UQUcgPSAncGIuZGVwbG95cyc7XG4vLyBDYW5vbmljYWwgcGVyLXBpcGVsaW5lIG9yZyB0YWcgKGFwcGxpZWQgYXQgc3ludGggYnkgcGlwZWxpbmUtY29yZSkuIEl0IGlzIHRoZVxuLy8gUkVTT0xWRUQgb3JnIGZvciBldmVyeSBldmVudCBvZiB0aGlzIHBpcGVsaW5lIOKAlCB1c2VkIHRvIGtleSB0aGUgcGVyLW9yZyBHaXRIdWJcbi8vIHRva2VuIGFuZCB0byBhdHRyaWJ1dGUgaW5nZXN0LWhlYWx0aC4gb3JnSWQgaXMgYSBwbGF0Zm9ybSBpZCwgbmV2ZXIgYW4gQVdTXG4vLyBhY2NvdW50IGlkLCBzbyBpdCBpcyBzYWZlIHRvIHJlYWQvZm9yd2FyZC5cbmNvbnN0IE9SR19JRF9UQUcgPSAnT3JnSWQnO1xuY29uc3QgY2xpZW50c0J5UmVnaW9uID0gbmV3IE1hcDxzdHJpbmcsIENvZGVQaXBlbGluZUNsaWVudExpa2U+KCk7XG5cblxuLy8gYHRzYCBsZXRzIEJPVEggb3V0Y29tZXMgZXhwaXJlOiBhIG5lZ2F0aXZlIChyZXNvbHZlZC1idXQtdW50YWdnZWQpIHNvIGFcbi8vIHBpcGVsaW5lIHRhZ2dlZCBBRlRFUiBpdHMgZmlyc3QgZXZlbnQgYmVjb21lcyByZXNvbHZhYmxlLCBhbmQgYSBwb3NpdGl2ZSBzbyBhXG4vLyByZS1zeW50aCB0aGF0IGNoYW5nZXMgYHBiLmRlcGxveXNgIChhIHN0YWdlIHJlbmFtZWQsIGFuIGVudmlyb25tZW50IGFkZGVkKSBvclxuLy8gYE9yZ0lkYCBpcyBwaWNrZWQgdXAgd2l0aG91dCByZWN5Y2xpbmcgdGhlIHdhcm0gY29udGFpbmVyIOKAlCBhIGxpZmV0aW1lIGNhY2hlXG4vLyB3b3VsZCBrZWVwIGF0dHJpYnV0aW5nIGRlcGxveXMgdG8gc3RhZ2VzIHRoYXQgbm8gbG9uZ2VyIGV4aXN0LlxuY29uc3QgcmVzb2x2ZWRCeUFybiA9IG5ldyBCb3VuZGVkTWFwPHN0cmluZywgeyBwaXBlbGluZUlkOiBzdHJpbmcgfCBudWxsOyBvcmdJZDogc3RyaW5nIHwgbnVsbDsgZGVwbG95czogTWFwPHN0cmluZywgc3RyaW5nPjsgdHM6IG51bWJlciB9PihDQUNIRV9NQVhfRU5UUklFUyk7XG5jb25zdCBORUdfQ0FDSEVfVFRMX01TID0gNSAqIDYwICogMTAwMDtcbmNvbnN0IFBPU19DQUNIRV9UVExfTVMgPSAxNSAqIDYwICogMTAwMDtcblxuLyoqIFJlc29sdmVkIHBpcGVsaW5lIG1ldGFkYXRhIHJlYWQgZnJvbSB0aGUgQ29kZVBpcGVsaW5lIHJlc291cmNlIHRhZ3MuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVkUGlwZWxpbmUge1xuICAvKiogUGxhdGZvcm0gcGlwZWxpbmVJZCAocGIucGlwZWxpbmUtaWQgdGFnKTsgbnVsbCB3aGVuIHVudGFnZ2VkL3VucmVnaXN0ZXJlZC4gKi9cbiAgcGlwZWxpbmVJZDogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFBsYXRmb3JtIG9yZ0lkIChPcmdJZCB0YWcpOyBudWxsIHdoZW4gdGhlIHBpcGVsaW5lIGNhcnJpZXMgbm8gb3JnIHRhZy4gKi9cbiAgb3JnSWQ6IHN0cmluZyB8IG51bGw7XG4gIC8qKiBNYXAgb2YgZGVwbG95LXN0YWdlIG5hbWUg4oaSIGVudmlyb25tZW50IChwYXJzZWQgZnJvbSBwYi5kZXBsb3lzKS4gRW1wdHkgd2hlbiBub25lLiAqL1xuICBkZXBsb3lzOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG4vKiogQ2FwIG9uIGNvbW1pdC9yZWYvZW52aXJvbm1lbnQgZmllbGRzIOKAlCB0aGUgaW5nZXN0IGNvbnRyYWN0IGFsbG93cyBtYXggMjU1LiAqL1xuZXhwb3J0IGNvbnN0IE1BWF9BVFRSID0gMjU1O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBgcGIuZGVwbG95c2AgdGFnIHZhbHVlIGludG8gYSBzdGFnZeKGkmVudmlyb25tZW50IG1hcC4gVGhlIHZhbHVlIGlzXG4gKiBgPHN0YWdlPjo8ZW52PmAgcGFpcnMgam9pbmVkIGJ5IGArYCAoQ29kZVBpcGVsaW5lLXRhZy1zYWZlOyBubyBKU09OKS4gQSBzdGFnZVxuICogcHJlc2VudCBoZXJlIGlzIGEgZGVwbG95OyBpdHMgbWFwcGVkIGVudmlyb25tZW50IGlzIHdoYXQgdGhlIGZvcndhcmRlciBzdGFtcHMgb25cbiAqIHRoYXQgc3RhZ2UncyBTVEFHRS9BQ1RJT04gZXZlbnRzIChET1JBIGRlcGxveSBhdHRyaWJ1dGlvbikuIE1hbGZvcm1lZCBwYWlycyBhcmVcbiAqIHNraXBwZWQgZGVmZW5zaXZlbHkuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRGVwbG95cyh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gIGNvbnN0IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gIGlmICghdmFsdWUpIHJldHVybiBtYXA7XG4gIGZvciAoY29uc3QgcGFpciBvZiB2YWx1ZS5zcGxpdCgnKycpKSB7XG4gICAgY29uc3QgaWR4ID0gcGFpci5pbmRleE9mKCc6Jyk7XG4gICAgaWYgKGlkeCA8PSAwKSBjb250aW51ZTtcbiAgICBjb25zdCBzdGFnZSA9IHBhaXIuc2xpY2UoMCwgaWR4KS50cmltKCk7XG4gICAgY29uc3QgZW52ID0gcGFpci5zbGljZShpZHggKyAxKS50cmltKCk7XG4gICAgaWYgKHN0YWdlICYmIGVudikgbWFwLnNldChzdGFnZSwgZW52LnNsaWNlKDAsIE1BWF9BVFRSKSk7XG4gIH1cbiAgcmV0dXJuIG1hcDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcGlwZWxpbmVDbGllbnQocmVnaW9uOiBzdHJpbmcpOiBQcm9taXNlPENvZGVQaXBlbGluZUNsaWVudExpa2U+IHtcbiAgbGV0IGNsaWVudCA9IGNsaWVudHNCeVJlZ2lvbi5nZXQocmVnaW9uKTtcbiAgaWYgKCFjbGllbnQpIHtcbiAgICBjb25zdCB7IENvZGVQaXBlbGluZUNsaWVudCB9ID0gYXdhaXQgbG9hZENvZGVQaXBlbGluZSgpO1xuICAgIGNsaWVudCA9IG5ldyBDb2RlUGlwZWxpbmVDbGllbnQoeyByZWdpb24gfSk7XG4gICAgY2xpZW50c0J5UmVnaW9uLnNldChyZWdpb24sIGNsaWVudCk7XG4gIH1cbiAgcmV0dXJuIGNsaWVudDtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGEgQ29kZVBpcGVsaW5lJ3MgdGFncyDihpIgdGhlIHBsYXRmb3JtIHBpcGVsaW5lSWQgKHBiLnBpcGVsaW5lLWlkKSBwbHVzIHRoZVxuICogZGVwbG95LXN0YWdl4oaSZW52aXJvbm1lbnQgbWFwIChwYi5kZXBsb3lzKS4gYHBpcGVsaW5lSWRgIGlzIG51bGwgd2hlbiB0aGUgcGlwZWxpbmVcbiAqIGhhcyBubyBwYi5waXBlbGluZS1pZCB0YWcgKHVucmVnaXN0ZXJlZCkuIFRocm93cyBvbiBBY2Nlc3NEZW5pZWQgc28gYSBtaXNzaW5nIElBTVxuICogZ3JhbnQgc3VyZmFjZXMgbG91ZGx5IGluc3RlYWQgb2Ygc2lsZW50bHkgZHJvcHBpbmcgZXZlcnkgZXZlbnQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlUGlwZWxpbmUoYXJuOiBzdHJpbmcsIHJlZ2lvbjogc3RyaW5nKTogUHJvbWlzZTxSZXNvbHZlZFBpcGVsaW5lPiB7XG4gIGNvbnN0IGNhY2hlZCA9IHJlc29sdmVkQnlBcm4uZ2V0KGFybik7XG4gIC8vIFNlcnZlIGEgaGl0IHVudGlsIGl0cyBUVEwgKHNob3J0IGZvciBhIG5lZ2F0aXZlLCBsb25nZXIgZm9yIGEgcG9zaXRpdmUpLFxuICAvLyB0aGVuIHJlLXJlc29sdmUgc28gdGFnIGNoYW5nZXMgbGFuZC5cbiAgaWYgKGNhY2hlZCAmJiBEYXRlLm5vdygpIC0gY2FjaGVkLnRzIDwgKGNhY2hlZC5waXBlbGluZUlkICE9PSBudWxsID8gUE9TX0NBQ0hFX1RUTF9NUyA6IE5FR19DQUNIRV9UVExfTVMpKSB7XG4gICAgcmV0dXJuIHsgcGlwZWxpbmVJZDogY2FjaGVkLnBpcGVsaW5lSWQsIG9yZ0lkOiBjYWNoZWQub3JnSWQsIGRlcGxveXM6IGNhY2hlZC5kZXBsb3lzIH07XG4gIH1cbiAgdHJ5IHtcbiAgICBjb25zdCBjbGllbnQgPSBhd2FpdCBwaXBlbGluZUNsaWVudChyZWdpb24pO1xuICAgIGNvbnN0IHsgTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmQgfSA9IGF3YWl0IGxvYWRDb2RlUGlwZWxpbmUoKTtcbiAgICBjb25zdCBvdXQgPSBhd2FpdCBjbGllbnQuc2VuZChuZXcgTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmQoeyByZXNvdXJjZUFybjogYXJuIH0pKTtcbiAgICBjb25zdCBwaXBlbGluZUlkID0gb3V0LnRhZ3M/LmZpbmQodCA9PiB0LmtleSA9PT0gUElQRUxJTkVfSURfVEFHKT8udmFsdWUgPz8gbnVsbDtcbiAgICBjb25zdCBvcmdJZCA9IG91dC50YWdzPy5maW5kKHQgPT4gdC5rZXkgPT09IE9SR19JRF9UQUcpPy52YWx1ZSA/PyBudWxsO1xuICAgIGNvbnN0IGRlcGxveXMgPSBwYXJzZURlcGxveXMob3V0LnRhZ3M/LmZpbmQodCA9PiB0LmtleSA9PT0gREVQTE9ZU19UQUcpPy52YWx1ZSk7XG4gICAgaWYgKCFwaXBlbGluZUlkKSBsb2cud2FybignUGlwZWxpbmUgbWlzc2luZyBwYi5waXBlbGluZS1pZCB0YWcg4oCUIHNraXBwaW5nIChyZWdpc3RlciBpdD8pJywgeyBwaXBlbGluZTogYXJuUmVmKGFybikgfSk7XG4gICAgcmVzb2x2ZWRCeUFybi5zZXQoYXJuLCB7IHBpcGVsaW5lSWQsIG9yZ0lkLCBkZXBsb3lzLCB0czogRGF0ZS5ub3coKSB9KTtcbiAgICByZXR1cm4geyBwaXBlbGluZUlkLCBvcmdJZCwgZGVwbG95cyB9O1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zdCBuYW1lID0gKGVyciBhcyB7IG5hbWU/OiBzdHJpbmcgfSk/Lm5hbWU7XG4gICAgaWYgKG5hbWUgPT09ICdBY2Nlc3NEZW5pZWRFeGNlcHRpb24nKSB7XG4gICAgICAvLyBEb24ndCBjYWNoZSDigJQgdGhpcyBpcyBhIGZpeGFibGUgbWlzY29uZmlnLCBub3QgYSBwcm9wZXJ0eSBvZiB0aGUgcGlwZWxpbmUuXG4gICAgICBsb2cuZXJyb3IoJ0FjY2Vzc0RlbmllZCBjYWxsaW5nIGNvZGVwaXBlbGluZTpMaXN0VGFnc0ZvclJlc291cmNlIOKAlCBncmFudCBpdCB0byB0aGUgTGFtYmRhIHJvbGUnLCB7IHBpcGVsaW5lOiBhcm5SZWYoYXJuKSwgZXJyb3I6IG5hbWUgfSk7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICAgIC8vIFRyYW5zaWVudC9pbmZyYSBlcnJvcnMgKHRocm90dGxpbmcsIHRpbWVvdXRzLCA1eHgpIE1VU1QgcHJvcGFnYXRlIHNvIHRoZSBTUVNcbiAgICAvLyBiYXRjaCBpcyByZXRyaWVkIHJhdGhlciB0aGFuIHNpbGVudGx5IGRyb3BwaW5nIHRoZSBldmVudCDigJQgYW4gZXZlbnQgZHJvcHBlZFxuICAgIC8vIEJFRk9SRSBpdCByZWFjaGVzIHRoZSBpbmdlc3QgaXMgbG9zdCBwZXJtYW5lbnRseSAodGhlIGluZ2VzdCdzIHBhcnRpYWwtdW5pcXVlXG4gICAgLy8gaW5kZXggb25seSBkZWR1cGVzIGV2ZW50cyB0aGF0IHdlcmUgYWN0dWFsbHkgUE9TVGVkKS4gT25seSBzd2FsbG93IHdoZW4gdGhlXG4gICAgLy8gZmFpbHVyZSBpcyBhIGRlZmluaXRpdmUgYW5zd2VyIHRoYXQgdGhpcyBBUk4gaGFzIG5vIHVzYWJsZSB0YWcuXG4gICAgY29uc3QgZSA9IGVyciBhcyB7IG5hbWU/OiBzdHJpbmc7ICRyZXRyeWFibGU/OiB1bmtub3duOyAkbWV0YWRhdGE/OiB7IGh0dHBTdGF0dXNDb2RlPzogbnVtYmVyIH0gfTtcbiAgICBjb25zdCBzdGF0dXMgPSBlLiRtZXRhZGF0YT8uaHR0cFN0YXR1c0NvZGU7XG4gICAgY29uc3QgcmV0cnlhYmxlID0gZS4kcmV0cnlhYmxlICE9IG51bGxcbiAgICAgIHx8ICh0eXBlb2Ygc3RhdHVzID09PSAnbnVtYmVyJyAmJiBzdGF0dXMgPj0gNTAwKVxuICAgICAgfHwgL3Rocm90dGx8dGltZW91dHx0b29tYW55cmVxdWVzdHN8c2VydmljZXVuYXZhaWxhYmxlfGVjb25ucmVzZXR8bmV0d29ya2luZ2Vycm9yL2kudGVzdChuYW1lID8/ICcnKTtcbiAgICBpZiAocmV0cnlhYmxlKSB7XG4gICAgICBsb2cuZXJyb3IoJ1RyYW5zaWVudCBlcnJvciByZXNvbHZpbmcgcGIucGlwZWxpbmUtaWQgdGFnIOKAlCB3aWxsIHJldHJ5IHRoZSBiYXRjaCcsIHsgcGlwZWxpbmU6IGFyblJlZihhcm4pLCBlcnJvcjogbmFtZSA/PyBTdHJpbmcoZXJyKSB9KTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gICAgbG9nLmVycm9yKCdGYWlsZWQgdG8gcmVzb2x2ZSBwYi5waXBlbGluZS1pZCB0YWcnLCB7IHBpcGVsaW5lOiBhcm5SZWYoYXJuKSwgZXJyb3I6IG5hbWUgPz8gU3RyaW5nKGVycikgfSk7XG4gICAgcmV0dXJuIHsgcGlwZWxpbmVJZDogbnVsbCwgb3JnSWQ6IG51bGwsIGRlcGxveXM6IG5ldyBNYXAoKSB9O1xuICB9XG59XG5cbi8qKiBAaW50ZXJuYWwgVGVzdC1vbmx5OiBmb3JnZXQgcmVzb2x2ZWQgcGlwZWxpbmVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9yZXNldFRhZ3NGb3JUZXN0cygpOiB2b2lkIHtcbiAgcmVzb2x2ZWRCeUFybi5jbGVhcigpO1xufVxuIl19
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFncy5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL3RhZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFZdkUsSUFBSSxlQUErQyxDQUFDO0FBQ3BELEtBQUssVUFBVSxnQkFBZ0I7SUFDN0IsSUFBSSxDQUFDLGVBQWU7UUFBRSxlQUFlLEdBQUcsQ0FBQyxNQUFNLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFrQyxDQUFDO0lBQ3hILE9BQU8sZUFBZSxDQUFDO0FBQ3pCLENBQUM7QUFFRCwrQ0FBK0M7QUFDL0MsMENBQTBDO0FBQzFDLDJDQUEyQztBQUMzQyw2REFBNkQ7QUFDN0QsaUVBQWlFO0FBQ2pFLG1GQUFtRjtBQUNuRixrRkFBa0Y7QUFDbEYscUZBQXFGO0FBQ3JGLEVBQUU7QUFDRixrRkFBa0Y7QUFDbEYsaUZBQWlGO0FBQ2pGLDBDQUEwQztBQUUxQyxNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQztBQUN6QyxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUM7QUFDakMsZ0ZBQWdGO0FBQ2hGLGlGQUFpRjtBQUNqRiw2RUFBNkU7QUFDN0UsNkNBQTZDO0FBQzdDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQztBQUMzQixNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBa0MsQ0FBQztBQUdsRSwwRUFBMEU7QUFDMUUsZ0ZBQWdGO0FBQ2hGLGdGQUFnRjtBQUNoRiwrRUFBK0U7QUFDL0UsaUVBQWlFO0FBQ2pFLE1BQU0sYUFBYSxHQUFHLElBQUksVUFBVSxDQUF3RyxpQkFBaUIsQ0FBQyxDQUFDO0FBQy9KLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDdkMsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FB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QUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUk7ZUFDakMsQ0FBQyxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksTUFBTSxJQUFJLEdBQUcsQ0FBQztlQUM3QyxnRkFBZ0YsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZHLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxHQUFHLENBQUMsS0FBSyxDQUFDLHFFQUFxRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDeEksTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDO1FBQ0QsR0FBRyxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pHLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUMvRCxDQUFDO0FBQ0gsQ0FBQztBQUVELHNEQUFzRDtBQUN0RCxNQUFNLFVBQVUsa0JBQWtCO0lBQ2hDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGFyblJlZiwgQm91bmRlZE1hcCwgQ0FDSEVfTUFYX0VOVFJJRVMsIGxvZyB9IGZyb20gJy4vdXRpbC5qcyc7XG5cbi8vIEFXUyBMYW1iZGEncyBOb2RlIHJ1bnRpbWUgcHJvdmlkZXMgQGF3cy1zZGsgdjMsIHNvIHRoZSBDb2RlUGlwZWxpbmUgY2xpZW50IGlzXG4vLyBsb2FkZWQgbGF6aWx5IHZpYSBkeW5hbWljIGltcG9ydCgpIOKAlCBhIHN0YXRpYyB3b3Jrc3BhY2UgZGVwZW5kZW5jeSB3b3VsZFxuLy8gcGVydHVyYiB0aGUgc2hhcmVkIEBhd3Mtc2RrIHZlcnNpb24gdHJlZS4gTWluaW1hbCBsb2NhbCB0eXBlcyBrZWVwIHRoZSBjYWxsXG4vLyBzaXRlcyB0eXBlLWNoZWNrZWQuXG5pbnRlcmZhY2UgTGlzdFRhZ3NPdXRwdXQgeyB0YWdzPzogQXJyYXk8eyBrZXk/OiBzdHJpbmc7IHZhbHVlPzogc3RyaW5nIH0+IH1cbmludGVyZmFjZSBDb2RlUGlwZWxpbmVDbGllbnRMaWtlIHsgc2VuZChjb21tYW5kOiB1bmtub3duKTogUHJvbWlzZTxMaXN0VGFnc091dHB1dD4gfVxuaW50ZXJmYWNlIENvZGVQaXBlbGluZU1vZHVsZSB7XG4gIENvZGVQaXBlbGluZUNsaWVudDogbmV3IChjb25maWc6IHsgcmVnaW9uOiBzdHJpbmcgfSkgPT4gQ29kZVBpcGVsaW5lQ2xpZW50TGlrZTtcbiAgTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmQ6IG5ldyAoaW5wdXQ6IHsgcmVzb3VyY2VBcm46IHN0cmluZyB9KSA9PiB1bmtub3duO1xufVxubGV0IGNvZGVwaXBlbGluZU1vZDogQ29kZVBpcGVsaW5lTW9kdWxlIHwgdW5kZWZpbmVkO1xuYXN5bmMgZnVuY3Rpb24gbG9hZENvZGVQaXBlbGluZSgpOiBQcm9taXNlPENvZGVQaXBlbGluZU1vZHVsZT4ge1xuICBpZiAoIWNvZGVwaXBlbGluZU1vZCkgY29kZXBpcGVsaW5lTW9kID0gKGF3YWl0IGltcG9ydCgnQGF3cy1zZGsvY2xpZW50LWNvZGVwaXBlbGluZScpKSBhcyB1bmtub3duIGFzIENvZGVQaXBlbGluZU1vZHVsZTtcbiAgcmV0dXJuIGNvZGVwaXBlbGluZU1vZDtcbn1cblxuLy8gVGFnIHJlc29sdXRpb246IHBiLnBpcGVsaW5lLWlkICsgcGIuZGVwbG95cy5cbi8vIFBpcGVsaW5lcyBhcmUgdGFnZ2VkIGF0IENESyBzeW50aCB3aXRoOlxuLy8gICBwYi5waXBlbGluZS1pZCA9IDxwbGF0Zm9ybSBwaXBlbGluZUlkPlxuLy8gICBwYi5kZXBsb3lzICAgICA9IDxzdGFnZT46PGVudj4gcGFpcnMgam9pbmVkIGJ5ICcrJywgZS5nLlxuLy8gICAgICAgICAgICAgICAgICAgIFwiRGVwbG95LXN0ZzpzdGFnaW5nK0RlcGxveS1wcm9kOnByb2R1Y3Rpb25cIlxuLy8gV2UgcmVzb2x2ZSB0aG9zZSB0YWdzIGZyb20gdGhlIGxpdmUgQ29kZVBpcGVsaW5lIChyZWdpb24tYXdhcmUpLiBUaGUgQVJOL2FjY291bnRcbi8vIG5ldmVyIGxlYXZlIEFXUywgYW5kIG5ldmVyIHJlYWNoIGEgbG9nIGxpbmUgZWl0aGVyOiBsb2dzIGNhcnJ5IGBhcm5SZWYoYXJuKWAsIGFcbi8vIHNob3J0IGRpZ2VzdC4gQ2FjaGVkIHBlciBBUk4gKHdhcm0tY29udGFpbmVyKSB0byBhdm9pZCBoYW1tZXJpbmcgdGhlIExpc3RUYWdzIEFQSS5cbi8vXG4vLyBSZXF1aXJlcyB0aGUgTGFtYmRhIGV4ZWN1dGlvbiByb2xlIHRvIGFsbG93IGBjb2RlcGlwZWxpbmU6TGlzdFRhZ3NGb3JSZXNvdXJjZWAuXG4vLyBBY2Nlc3NEZW5pZWQgaXMgYSBjb25maWcgZXJyb3IgKGFsZXJ0IGxvdWRseSk7IGEgbWlzc2luZyBwYi5waXBlbGluZS1pZCB0YWcgaXNcbi8vIHRyZWF0ZWQgYXMgXCJub3QgeWV0IHJlZ2lzdGVyZWRcIiAoc2tpcCkuXG5cbmNvbnN0IFBJUEVMSU5FX0lEX1RBRyA9ICdwYi5waXBlbGluZS1pZCc7XG5jb25zdCBERVBMT1lTX1RBRyA9ICdwYi5kZXBsb3lzJztcbi8vIENhbm9uaWNhbCBwZXItcGlwZWxpbmUgb3JnIHRhZyAoYXBwbGllZCBhdCBzeW50aCBieSBwaXBlbGluZS1jb3JlKS4gSXQgaXMgdGhlXG4vLyBSRVNPTFZFRCBvcmcgZm9yIGV2ZXJ5IGV2ZW50IG9mIHRoaXMgcGlwZWxpbmUg4oCUIHVzZWQgdG8ga2V5IHRoZSBwZXItb3JnIEdpdEh1YlxuLy8gdG9rZW4gYW5kIHRvIGF0dHJpYnV0ZSBpbmdlc3QtaGVhbHRoLiBvcmdJZCBpcyBhIHBsYXRmb3JtIGlkLCBuZXZlciBhbiBBV1Ncbi8vIGFjY291bnQgaWQsIHNvIGl0IGlzIHNhZmUgdG8gcmVhZC9mb3J3YXJkLlxuY29uc3QgT1JHX0lEX1RBRyA9ICdPcmdJZCc7XG5jb25zdCBjbGllbnRzQnlSZWdpb24gPSBuZXcgTWFwPHN0cmluZywgQ29kZVBpcGVsaW5lQ2xpZW50TGlrZT4oKTtcblxuXG4vLyBgdHNgIGxldHMgQk9USCBvdXRjb21lcyBleHBpcmU6IGEgbmVnYXRpdmUgKHJlc29sdmVkLWJ1dC11bnRhZ2dlZCkgc28gYVxuLy8gcGlwZWxpbmUgdGFnZ2VkIEFGVEVSIGl0cyBmaXJzdCBldmVudCBiZWNvbWVzIHJlc29sdmFibGUsIGFuZCBhIHBvc2l0aXZlIHNvIGFcbi8vIHJlLXN5bnRoIHRoYXQgY2hhbmdlcyBgcGIuZGVwbG95c2AgKGEgc3RhZ2UgcmVuYW1lZCwgYW4gZW52aXJvbm1lbnQgYWRkZWQpIG9yXG4vLyBgT3JnSWRgIGlzIHBpY2tlZCB1cCB3aXRob3V0IHJlY3ljbGluZyB0aGUgd2FybSBjb250YWluZXIg4oCUIGEgbGlmZXRpbWUgY2FjaGVcbi8vIHdvdWxkIGtlZXAgYXR0cmlidXRpbmcgZGVwbG95cyB0byBzdGFnZXMgdGhhdCBubyBsb25nZXIgZXhpc3QuXG5jb25zdCByZXNvbHZlZEJ5QXJuID0gbmV3IEJvdW5kZWRNYXA8c3RyaW5nLCB7IHBpcGVsaW5lSWQ6IHN0cmluZyB8IG51bGw7IG9yZ0lkOiBzdHJpbmcgfCBudWxsOyBkZXBsb3lzOiBNYXA8c3RyaW5nLCBzdHJpbmc+OyB0czogbnVtYmVyIH0+KENBQ0hFX01BWF9FTlRSSUVTKTtcbmNvbnN0IE5FR19DQUNIRV9UVExfTVMgPSA1ICogNjAgKiAxMDAwO1xuY29uc3QgUE9TX0NBQ0hFX1RUTF9NUyA9IDE1ICogNjAgKiAxMDAwO1xuXG4vKiogUmVzb2x2ZWQgcGlwZWxpbmUgbWV0YWRhdGEgcmVhZCBmcm9tIHRoZSBDb2RlUGlwZWxpbmUgcmVzb3VyY2UgdGFncy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZWRQaXBlbGluZSB7XG4gIC8qKiBQbGF0Zm9ybSBwaXBlbGluZUlkIChwYi5waXBlbGluZS1pZCB0YWcpOyBudWxsIHdoZW4gdW50YWdnZWQvdW5yZWdpc3RlcmVkLiAqL1xuICBwaXBlbGluZUlkOiBzdHJpbmcgfCBudWxsO1xuICAvKiogUGxhdGZvcm0gb3JnSWQgKE9yZ0lkIHRhZyk7IG51bGwgd2hlbiB0aGUgcGlwZWxpbmUgY2FycmllcyBubyBvcmcgdGFnLiAqL1xuICBvcmdJZDogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIE1hcCBvZiBkZXBsb3ktc3RhZ2UgbmFtZSDihpIgZW52aXJvbm1lbnQgKHBhcnNlZCBmcm9tIHBiLmRlcGxveXMpLiBFbXB0eSB3aGVuIG5vbmUuICovXG4gIGRlcGxveXM6IE1hcDxzdHJpbmcsIHN0cmluZz47XG59XG5cbi8qKiBDYXAgb24gY29tbWl0L3JlZi9lbnZpcm9ubWVudCBmaWVsZHMg4oCUIHRoZSBpbmdlc3QgY29udHJhY3QgYWxsb3dzIG1heCAyNTUuICovXG5leHBvcnQgY29uc3QgTUFYX0FUVFIgPSAyNTU7XG5cbi8qKlxuICogUGFyc2UgdGhlIGBwYi5kZXBsb3lzYCB0YWcgdmFsdWUgaW50byBhIHN0YWdl4oaSZW52aXJvbm1lbnQgbWFwLiBUaGUgdmFsdWUgaXNcbiAqIGA8c3RhZ2U+OjxlbnY+YCBwYWlycyBqb2luZWQgYnkgYCtgIChDb2RlUGlwZWxpbmUtdGFnLXNhZmU7IG5vIEpTT04pLiBBIHN0YWdlXG4gKiBwcmVzZW50IGhlcmUgaXMgYSBkZXBsb3k7IGl0cyBtYXBwZWQgZW52aXJvbm1lbnQgaXMgd2hhdCB0aGUgZm9yd2FyZGVyIHN0YW1wcyBvblxuICogdGhhdCBzdGFnZSdzIFNUQUdFL0FDVElPTiBldmVudHMgKERPUkEgZGVwbG95IGF0dHJpYnV0aW9uKS4gTWFsZm9ybWVkIHBhaXJzIGFyZVxuICogc2tpcHBlZCBkZWZlbnNpdmVseS5cbiAqL1xuZnVuY3Rpb24gcGFyc2VEZXBsb3lzKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIG1hcDtcbiAgZm9yIChjb25zdCBwYWlyIG9mIHZhbHVlLnNwbGl0KCcrJykpIHtcbiAgICBjb25zdCBpZHggPSBwYWlyLmluZGV4T2YoJzonKTtcbiAgICBpZiAoaWR4IDw9IDApIGNvbnRpbnVlO1xuICAgIGNvbnN0IHN0YWdlID0gcGFpci5zbGljZSgwLCBpZHgpLnRyaW0oKTtcbiAgICBjb25zdCBlbnYgPSBwYWlyLnNsaWNlKGlkeCArIDEpLnRyaW0oKTtcbiAgICBpZiAoc3RhZ2UgJiYgZW52KSBtYXAuc2V0KHN0YWdlLCBlbnYuc2xpY2UoMCwgTUFYX0FUVFIpKTtcbiAgfVxuICByZXR1cm4gbWFwO1xufVxuXG5hc3luYyBmdW5jdGlvbiBwaXBlbGluZUNsaWVudChyZWdpb246IHN0cmluZyk6IFByb21pc2U8Q29kZVBpcGVsaW5lQ2xpZW50TGlrZT4ge1xuICBsZXQgY2xpZW50ID0gY2xpZW50c0J5UmVnaW9uLmdldChyZWdpb24pO1xuICBpZiAoIWNsaWVudCkge1xuICAgIGNvbnN0IHsgQ29kZVBpcGVsaW5lQ2xpZW50IH0gPSBhd2FpdCBsb2FkQ29kZVBpcGVsaW5lKCk7XG4gICAgY2xpZW50ID0gbmV3IENvZGVQaXBlbGluZUNsaWVudCh7IHJlZ2lvbiB9KTtcbiAgICBjbGllbnRzQnlSZWdpb24uc2V0KHJlZ2lvbiwgY2xpZW50KTtcbiAgfVxuICByZXR1cm4gY2xpZW50O1xufVxuXG4vKipcbiAqIFJlc29sdmUgYSBDb2RlUGlwZWxpbmUncyB0YWdzIOKGkiB0aGUgcGxhdGZvcm0gcGlwZWxpbmVJZCAocGIucGlwZWxpbmUtaWQpIHBsdXMgdGhlXG4gKiBkZXBsb3ktc3RhZ2XihpJlbnZpcm9ubWVudCBtYXAgKHBiLmRlcGxveXMpLiBgcGlwZWxpbmVJZGAgaXMgbnVsbCB3aGVuIHRoZSBwaXBlbGluZVxuICogaGFzIG5vIHBiLnBpcGVsaW5lLWlkIHRhZyAodW5yZWdpc3RlcmVkKS4gVGhyb3dzIG9uIEFjY2Vzc0RlbmllZCBzbyBhIG1pc3NpbmcgSUFNXG4gKiBncmFudCBzdXJmYWNlcyBsb3VkbHkgaW5zdGVhZCBvZiBzaWxlbnRseSBkcm9wcGluZyBldmVyeSBldmVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVQaXBlbGluZShhcm46IHN0cmluZywgcmVnaW9uOiBzdHJpbmcpOiBQcm9taXNlPFJlc29sdmVkUGlwZWxpbmU+IHtcbiAgY29uc3QgY2FjaGVkID0gcmVzb2x2ZWRCeUFybi5nZXQoYXJuKTtcbiAgLy8gU2VydmUgYSBoaXQgdW50aWwgaXRzIFRUTCAoc2hvcnQgZm9yIGEgbmVnYXRpdmUsIGxvbmdlciBmb3IgYSBwb3NpdGl2ZSksXG4gIC8vIHRoZW4gcmUtcmVzb2x2ZSBzbyB0YWcgY2hhbmdlcyBsYW5kLlxuICBpZiAoY2FjaGVkICYmIERhdGUubm93KCkgLSBjYWNoZWQudHMgPCAoY2FjaGVkLnBpcGVsaW5lSWQgIT09IG51bGwgPyBQT1NfQ0FDSEVfVFRMX01TIDogTkVHX0NBQ0hFX1RUTF9NUykpIHtcbiAgICByZXR1cm4geyBwaXBlbGluZUlkOiBjYWNoZWQucGlwZWxpbmVJZCwgb3JnSWQ6IGNhY2hlZC5vcmdJZCwgZGVwbG95czogY2FjaGVkLmRlcGxveXMgfTtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHBpcGVsaW5lQ2xpZW50KHJlZ2lvbik7XG4gICAgY29uc3QgeyBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZCB9ID0gYXdhaXQgbG9hZENvZGVQaXBlbGluZSgpO1xuICAgIGNvbnN0IG91dCA9IGF3YWl0IGNsaWVudC5zZW5kKG5ldyBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZCh7IHJlc291cmNlQXJuOiBhcm4gfSkpO1xuICAgIGNvbnN0IHBpcGVsaW5lSWQgPSBvdXQudGFncz8uZmluZCh0ID0+IHQua2V5ID09PSBQSVBFTElORV9JRF9UQUcpPy52YWx1ZSA/PyBudWxsO1xuICAgIGNvbnN0IG9yZ0lkID0gb3V0LnRhZ3M/LmZpbmQodCA9PiB0LmtleSA9PT0gT1JHX0lEX1RBRyk/LnZhbHVlID8/IG51bGw7XG4gICAgY29uc3QgZGVwbG95cyA9IHBhcnNlRGVwbG95cyhvdXQudGFncz8uZmluZCh0ID0+IHQua2V5ID09PSBERVBMT1lTX1RBRyk/LnZhbHVlKTtcbiAgICBpZiAoIXBpcGVsaW5lSWQpIGxvZy53YXJuKCdQaXBlbGluZSBtaXNzaW5nIHBiLnBpcGVsaW5lLWlkIHRhZyDigJQgc2tpcHBpbmcgKHJlZ2lzdGVyIGl0PyknLCB7IHBpcGVsaW5lOiBhcm5SZWYoYXJuKSB9KTtcbiAgICByZXNvbHZlZEJ5QXJuLnNldChhcm4sIHsgcGlwZWxpbmVJZCwgb3JnSWQsIGRlcGxveXMsIHRzOiBEYXRlLm5vdygpIH0pO1xuICAgIHJldHVybiB7IHBpcGVsaW5lSWQsIG9yZ0lkLCBkZXBsb3lzIH07XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnN0IG5hbWUgPSAoZXJyIGFzIHsgbmFtZT86IHN0cmluZyB9KT8ubmFtZTtcbiAgICBpZiAobmFtZSA9PT0gJ0FjY2Vzc0RlbmllZEV4Y2VwdGlvbicpIHtcbiAgICAgIC8vIERvbid0IGNhY2hlIOKAlCB0aGlzIGlzIGEgZml4YWJsZSBtaXNjb25maWcsIG5vdCBhIHByb3BlcnR5IG9mIHRoZSBwaXBlbGluZS5cbiAgICAgIGxvZy5lcnJvcignQWNjZXNzRGVuaWVkIGNhbGxpbmcgY29kZXBpcGVsaW5lOkxpc3RUYWdzRm9yUmVzb3VyY2Ug4oCUIGdyYW50IGl0IHRvIHRoZSBMYW1iZGEgcm9sZScsIHsgcGlwZWxpbmU6IGFyblJlZihhcm4pLCBlcnJvcjogbmFtZSB9KTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gICAgLy8gVHJhbnNpZW50L2luZnJhIGVycm9ycyAodGhyb3R0bGluZywgdGltZW91dHMsIDV4eCkgTVVTVCBwcm9wYWdhdGUgc28gdGhlIFNRU1xuICAgIC8vIGJhdGNoIGlzIHJldHJpZWQgcmF0aGVyIHRoYW4gc2lsZW50bHkgZHJvcHBpbmcgdGhlIGV2ZW50IOKAlCBhbiBldmVudCBkcm9wcGVkXG4gICAgLy8gQkVGT1JFIGl0IHJlYWNoZXMgdGhlIGluZ2VzdCBpcyBsb3N0IHBlcm1hbmVudGx5ICh0aGUgaW5nZXN0J3MgcGFydGlhbC11bmlxdWVcbiAgICAvLyBpbmRleCBvbmx5IGRlZHVwZXMgZXZlbnRzIHRoYXQgd2VyZSBhY3R1YWxseSBQT1NUZWQpLiBPbmx5IHN3YWxsb3cgd2hlbiB0aGVcbiAgICAvLyBmYWlsdXJlIGlzIGEgZGVmaW5pdGl2ZSBhbnN3ZXIgdGhhdCB0aGlzIEFSTiBoYXMgbm8gdXNhYmxlIHRhZy5cbiAgICBjb25zdCBlID0gZXJyIGFzIHsgbmFtZT86IHN0cmluZzsgJHJldHJ5YWJsZT86IHVua25vd247ICRtZXRhZGF0YT86IHsgaHR0cFN0YXR1c0NvZGU/OiBudW1iZXIgfSB9O1xuICAgIGNvbnN0IHN0YXR1cyA9IGUuJG1ldGFkYXRhPy5odHRwU3RhdHVzQ29kZTtcbiAgICBjb25zdCByZXRyeWFibGUgPSBlLiRyZXRyeWFibGUgIT0gbnVsbFxuICAgICAgfHwgKHR5cGVvZiBzdGF0dXMgPT09ICdudW1iZXInICYmIHN0YXR1cyA+PSA1MDApXG4gICAgICB8fCAvdGhyb3R0bHx0aW1lb3V0fHRvb21hbnlyZXF1ZXN0c3xzZXJ2aWNldW5hdmFpbGFibGV8ZWNvbm5yZXNldHxuZXR3b3JraW5nZXJyb3IvaS50ZXN0KG5hbWUgPz8gJycpO1xuICAgIGlmIChyZXRyeWFibGUpIHtcbiAgICAgIGxvZy5lcnJvcignVHJhbnNpZW50IGVycm9yIHJlc29sdmluZyBwYi5waXBlbGluZS1pZCB0YWcg4oCUIHdpbGwgcmV0cnkgdGhlIGJhdGNoJywgeyBwaXBlbGluZTogYXJuUmVmKGFybiksIGVycm9yOiBuYW1lID8/IFN0cmluZyhlcnIpIH0pO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgICBsb2cuZXJyb3IoJ0ZhaWxlZCB0byByZXNvbHZlIHBiLnBpcGVsaW5lLWlkIHRhZycsIHsgcGlwZWxpbmU6IGFyblJlZihhcm4pLCBlcnJvcjogbmFtZSA/PyBTdHJpbmcoZXJyKSB9KTtcbiAgICByZXR1cm4geyBwaXBlbGluZUlkOiBudWxsLCBvcmdJZDogbnVsbCwgZGVwbG95czogbmV3IE1hcCgpIH07XG4gIH1cbn1cblxuLyoqIEBpbnRlcm5hbCBUZXN0LW9ubHk6IGZvcmdldCByZXNvbHZlZCBwaXBlbGluZXMuICovXG5leHBvcnQgZnVuY3Rpb24gX3Jlc2V0VGFnc0ZvclRlc3RzKCk6IHZvaWQge1xuICByZXNvbHZlZEJ5QXJuLmNsZWFyKCk7XG59XG4iXX0=
package/lib/util.js CHANGED
@@ -73,4 +73,4 @@ export const FETCH_TIMEOUT_MS = Number(process.env.REPORTING_FETCH_TIMEOUT_MS ??
73
73
  export function fetchWithTimeout(url, init = {}, timeoutMs = FETCH_TIMEOUT_MS) {
74
74
  return fetch(url, { ...init, signal: AbortSignal.timeout(timeoutMs) });
75
75
  }
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV6Qyw4REFBOEQ7QUFFOUQsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHO0lBQ2pCLElBQUksRUFBRSxDQUFDLEdBQVcsRUFBRSxJQUFjLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZJLElBQUksRUFBRSxDQUFDLEdBQVcsRUFBRSxJQUFjLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZJLEtBQUssRUFBRSxDQUFDLEdBQVcsRUFBRSxJQUFjLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0NBQzVJLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxNQUFNLE9BQU8sVUFBaUIsU0FBUSxHQUFTO0lBQ2hCLEdBQUc7SUFBaEMsWUFBNkIsR0FBVztRQUFJLEtBQUssRUFBRSxDQUFDO21CQUF2QixHQUFHO0lBQXFCLENBQUM7SUFDN0MsR0FBRyxDQUFDLEdBQU0sRUFBRSxLQUFRO1FBQzNCLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ25CLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxrQkFBa0I7UUFDdkMsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDakMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQztZQUN4QyxJQUFJLE1BQU0sS0FBSyxTQUFTO2dCQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFDLEdBQVc7SUFDaEMsT0FBTyxPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUM5RSxDQUFDO0FBRUQsaURBQWlEO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQztBQUV0QyxpRkFBaUY7QUFDakYsaUZBQWlGO0FBQ2pGLDBFQUEwRTtBQUMxRSw2RUFBNkU7QUFDN0UsTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPLENBQUksR0FBVztJQUMxQyxPQUFPLENBQUMsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQU0sQ0FBQztBQUNsQyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQztBQUUvRjs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEdBQVcsRUFBRSxJQUFJLEdBQWdCLEVBQUUsRUFBRSxTQUFTLEdBQUcsZ0JBQWdCO0lBQ2hHLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN6RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdub2RlOmNyeXB0byc7XG5cbi8qKiBTaGFyZWQgcGx1bWJpbmcgZm9yIHRoZSBldmVudC1pbmdlc3Rpb24gTGFtYmRhIG1vZHVsZXMuICovXG5cbmV4cG9ydCBjb25zdCBsb2cgPSB7XG4gIGluZm86IChtc2c6IHN0cmluZywgZGF0YT86IHVua25vd24pID0+IGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHsgbGV2ZWw6ICdJTkZPJywgbWVzc2FnZTogbXNnLCBkYXRhLCB0czogbmV3IERhdGUoKS50b0lTT1N0cmluZygpIH0pKSxcbiAgd2FybjogKG1zZzogc3RyaW5nLCBkYXRhPzogdW5rbm93bikgPT4gY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoeyBsZXZlbDogJ1dBUk4nLCBtZXNzYWdlOiBtc2csIGRhdGEsIHRzOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkgfSkpLFxuICBlcnJvcjogKG1zZzogc3RyaW5nLCBkYXRhPzogdW5rbm93bikgPT4gY29uc29sZS5lcnJvcihKU09OLnN0cmluZ2lmeSh7IGxldmVsOiAnRVJST1InLCBtZXNzYWdlOiBtc2csIGRhdGEsIHRzOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkgfSkpLFxufTtcblxuLyoqXG4gKiBBIE1hcCB0aGF0IGhvbGRzIGF0IG1vc3QgYG1heGAgZW50cmllcywgZXZpY3RpbmcgdGhlIGxlYXN0IHJlY2VudGx5IFNFVCBvbmUuXG4gKiBFdmVyeSBwZXIta2V5IGNhY2hlIGluIHRoaXMgbW9kdWxlIGlzIGtleWVkIGJ5IHNvbWV0aGluZyB1bmJvdW5kZWQgKHBpcGVsaW5lXG4gKiBBUk4sIHBpcGVsaW5lIMOXIGNvbW1pdCwgb3JnKSwgYW5kIGEgZmxlZXQgZm9yd2FyZGVyJ3Mgd2FybSBjb250YWluZXIgY2FuIGxpdmVcbiAqIGZvciBob3VycyBhY3Jvc3MgdGhvdXNhbmRzIG9mIHBpcGVsaW5lcyDigJQgYW4gdW5ib3VuZGVkIE1hcCBpcyBhIHNsb3cgbGVhayB0aGF0XG4gKiBlbmRzIGluIGFuIE9PTS1raWxsZWQgTGFtYmRhIGFuZCBhIHJlZGVsaXZlcmVkIGJhdGNoLlxuICovXG5leHBvcnQgY2xhc3MgQm91bmRlZE1hcDxLLCBWPiBleHRlbmRzIE1hcDxLLCBWPiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbWF4OiBudW1iZXIpIHsgc3VwZXIoKTsgfVxuICBvdmVycmlkZSBzZXQoa2V5OiBLLCB2YWx1ZTogVik6IHRoaXMge1xuICAgIGlmIChzdXBlci5oYXMoa2V5KSkge1xuICAgICAgc3VwZXIuZGVsZXRlKGtleSk7IC8vIHJlZnJlc2ggcmVjZW5jeVxuICAgIH0gZWxzZSBpZiAodGhpcy5zaXplID49IHRoaXMubWF4KSB7XG4gICAgICBjb25zdCBvbGRlc3QgPSB0aGlzLmtleXMoKS5uZXh0KCkudmFsdWU7XG4gICAgICBpZiAob2xkZXN0ICE9PSB1bmRlZmluZWQpIHN1cGVyLmRlbGV0ZShvbGRlc3QpO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuc2V0KGtleSwgdmFsdWUpO1xuICB9XG59XG5cbi8qKlxuICogQSBsb2ctc2FmZSBzdGFuZC1pbiBmb3IgYW4gQVJOOiBgYXJuIzwxMiBoZXggb2Ygc2hhMjU2PmAuIEV2ZXJ5IEFSTiBlbWJlZHMgdGhlXG4gKiBBV1MgYWNjb3VudCBpZCwgd2hpY2ggbXVzdCBuZXZlciByZWFjaCBDbG91ZFdhdGNoIOKAlCBidXQgYSBzdGFibGUgZGlnZXN0IHN0aWxsXG4gKiBsZXRzIGFuIG9wZXJhdG9yIGNvcnJlbGF0ZSBsb2cgbGluZXMgZm9yIHRoZSBzYW1lIHJlc291cmNlIChhbmQgbWF0Y2ggaXQgYnlcbiAqIGhhc2hpbmcgYW4gQVJOIHRoZXkgYWxyZWFkeSBob2xkKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFyblJlZihhcm46IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgYXJuIyR7Y3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKGFybikuZGlnZXN0KCdoZXgnKS5zbGljZSgwLCAxMil9YDtcbn1cblxuLyoqIFVwcGVyIGJvdW5kIGZvciBldmVyeSBwZXIta2V5IGNhY2hlIGJlbG93LiAqL1xuZXhwb3J0IGNvbnN0IENBQ0hFX01BWF9FTlRSSUVTID0gNTAwMDtcblxuLy8gVmFyaWFibGUtc3BlY2lmaWVyIGxvYWRlciBmb3IgU0RLIGNsaWVudHMgdGhhdCBhcmUgTk9UIGRldkRlcGVuZGVuY2llcyBvZiB0aGlzXG4vLyBwYWNrYWdlIChgQGF3cy1zZGsvY2xpZW50LWNvZGVjb21taXRgLCBgQGF3cy1zZGsvY2xpZW50LXNxc2Ag4oCUIHByZXNlbnQgb25seSBpblxuLy8gdGhlIExhbWJkYSBydW50aW1lIC8gamVzdCBtb2NrcykuIEEgYHN0cmluZ2Agc3BlY2lmaWVyIGtlZXBzIGB0c2NgIGZyb21cbi8vIHJlc29sdmluZyB0aGVtIGF0IGJ1aWxkIHRpbWUsIGFuZCB0aGUgYnVuZGxlIGxlYXZlcyBgQGF3cy1zZGsvKmAgZXh0ZXJuYWwuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFNkazxUPihwa2c6IHN0cmluZyk6IFByb21pc2U8VD4ge1xuICByZXR1cm4gKGF3YWl0IGltcG9ydChwa2cpKSBhcyBUO1xufVxuXG4vKipcbiAqIEhvdyBsb25nIG9uZSBvdXRib3VuZCBjYWxsIHRvIHRoZSByZXBvcnRpbmcgc2VydmljZSBtYXkgdGFrZS5cbiAqXG4gKiBBIExhbWJkYSBoYXMgbm8gc3VwZXJ2aXNvciB0byBub3RpY2UgaXQgaXMgc3R1Y2s6IGFuIHVudGltZWQgYGZldGNoYCBhZ2FpbnN0IGEgd2VkZ2VkXG4gKiByZXBvcnRpbmcgc2VydmljZSBob2xkcyB0aGUgaW52b2NhdGlvbiB1bnRpbCB0aGUgRlVOQ1RJT04ncyBvd24gdGltZW91dCwgd2hpY2ggYnVybnNcbiAqIHRoZSB3aG9sZSBidWRnZXQsIHJldHVybnMgbm8gYmF0Y2ggcmVzcG9uc2UsIGFuZCBsZXRzIFNRUyByZWRlbGl2ZXIgdGhlIHNhbWUgcmVjb3Jkc1xuICogdG8gdGhlIHNhbWUgd2VkZ2VkIGVuZHBvaW50LiBBIGJvdW5kZWQgY2FsbCBmYWlscyBmYXN0LCByZXBvcnRzIHRoZSBiYXRjaCBhcyBmYWlsZWQsXG4gKiBhbmQgbGV0cyB0aGUgcmV0cnkgaGFwcGVuIG9uIFNRUydzIHNjaGVkdWxlIHJhdGhlciB0aGFuIGJ5IGV4aGF1c3RpbmcgdGhlIGNsb2NrLlxuICpcbiAqIERlZmF1bHQgNXMsIHdlbGwgaW5zaWRlIGEgdHlwaWNhbCAzMHMgZnVuY3Rpb24gdGltZW91dCBldmVuIHdpdGggb25lIGF1dGggcmV0cnkuXG4gKi9cbmV4cG9ydCBjb25zdCBGRVRDSF9USU1FT1VUX01TID0gTnVtYmVyKHByb2Nlc3MuZW52LlJFUE9SVElOR19GRVRDSF9USU1FT1VUX01TID8/IDUwMDApIHx8IDUwMDA7XG5cbi8qKlxuICogYGZldGNoYCB3aXRoIGEgZGVhZGxpbmUuXG4gKlxuICogYEFib3J0U2lnbmFsLnRpbWVvdXRgIHJhdGhlciB0aGFuIGEgaGFuZC1yb2xsZWQgY29udHJvbGxlcjogaXQgaXMgb25lIGNhbGwsIGl0IGNhbm5vdFxuICogbGVhayB0aGUgdGltZXIsIGFuZCBpdCByZWplY3RzIHdpdGggYSBgVGltZW91dEVycm9yYCB0aGUgY2FsbGVycyBhbHJlYWR5IHRyZWF0IGFzIGFcbiAqIGZhaWxlZCBQT1NULiBFdmVyeSBvdXRib3VuZCBjYWxsIGluIHRoaXMgcGFja2FnZSBnb2VzIHRocm91Z2ggaGVyZSBzbyBhIG5ldyBvbmUgY2Fubm90XG4gKiBiZSBhZGRlZCB3aXRob3V0IGEgZGVhZGxpbmUgYnkgc2ltcGx5IGZvcmdldHRpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmZXRjaFdpdGhUaW1lb3V0KHVybDogc3RyaW5nLCBpbml0OiBSZXF1ZXN0SW5pdCA9IHt9LCB0aW1lb3V0TXMgPSBGRVRDSF9USU1FT1VUX01TKTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICByZXR1cm4gZmV0Y2godXJsLCB7IC4uLmluaXQsIHNpZ25hbDogQWJvcnRTaWduYWwudGltZW91dCh0aW1lb3V0TXMpIH0pO1xufVxuIl19
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXpDLDhEQUE4RDtBQUU5RCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUc7SUFDakIsSUFBSSxFQUFFLENBQUMsR0FBVyxFQUFFLElBQWMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkksSUFBSSxFQUFFLENBQUMsR0FBVyxFQUFFLElBQWMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkksS0FBSyxFQUFFLENBQUMsR0FBVyxFQUFFLElBQWMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7Q0FDNUksQ0FBQztBQUVGOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxVQUFpQixTQUFRLEdBQVM7SUFDaEIsR0FBRztJQUFoQyxZQUE2QixHQUFXO1FBQUksS0FBSyxFQUFFLENBQUM7bUJBQXZCLEdBQUc7SUFBcUIsQ0FBQztJQUM3QyxHQUFHLENBQUMsR0FBTSxFQUFFLEtBQVE7UUFDM0IsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGtCQUFrQjtRQUN2QyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNqQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ3hDLElBQUksTUFBTSxLQUFLLFNBQVM7Z0JBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0NBQ0Y7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxNQUFNLENBQUMsR0FBVztJQUNoQyxPQUFPLE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQzlFLENBQUM7QUFFRCxpREFBaUQ7QUFDakQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDO0FBRXRDLGlGQUFpRjtBQUNqRixpRkFBaUY7QUFDakYsMEVBQTBFO0FBQzFFLDZFQUE2RTtBQUM3RSxNQUFNLENBQUMsS0FBSyxVQUFVLE9BQU8sQ0FBSSxHQUFXO0lBQzFDLE9BQU8sQ0FBQyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBTSxDQUFDO0FBQ2xDLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO0FBRS9GOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsR0FBVyxFQUFFLElBQUksR0FBZ0IsRUFBRSxFQUFFLFNBQVMsR0FBRyxnQkFBZ0I7SUFDaEcsT0FBTyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ25vZGU6Y3J5cHRvJztcblxuLyoqIFNoYXJlZCBwbHVtYmluZyBmb3IgdGhlIGV2ZW50LWluZ2VzdGlvbiBMYW1iZGEgbW9kdWxlcy4gKi9cblxuZXhwb3J0IGNvbnN0IGxvZyA9IHtcbiAgaW5mbzogKG1zZzogc3RyaW5nLCBkYXRhPzogdW5rbm93bikgPT4gY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoeyBsZXZlbDogJ0lORk8nLCBtZXNzYWdlOiBtc2csIGRhdGEsIHRzOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkgfSkpLFxuICB3YXJuOiAobXNnOiBzdHJpbmcsIGRhdGE/OiB1bmtub3duKSA9PiBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7IGxldmVsOiAnV0FSTicsIG1lc3NhZ2U6IG1zZywgZGF0YSwgdHM6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSB9KSksXG4gIGVycm9yOiAobXNnOiBzdHJpbmcsIGRhdGE/OiB1bmtub3duKSA9PiBjb25zb2xlLmVycm9yKEpTT04uc3RyaW5naWZ5KHsgbGV2ZWw6ICdFUlJPUicsIG1lc3NhZ2U6IG1zZywgZGF0YSwgdHM6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSB9KSksXG59O1xuXG4vKipcbiAqIEEgTWFwIHRoYXQgaG9sZHMgYXQgbW9zdCBgbWF4YCBlbnRyaWVzLCBldmljdGluZyB0aGUgbGVhc3QgcmVjZW50bHkgU0VUIG9uZS5cbiAqIEV2ZXJ5IHBlci1rZXkgY2FjaGUgaW4gdGhpcyBtb2R1bGUgaXMga2V5ZWQgYnkgc29tZXRoaW5nIHVuYm91bmRlZCAocGlwZWxpbmVcbiAqIEFSTiwgcGlwZWxpbmUgw5cgY29tbWl0LCBvcmcpLCBhbmQgYSBmbGVldCBmb3J3YXJkZXIncyB3YXJtIGNvbnRhaW5lciBjYW4gbGl2ZVxuICogZm9yIGhvdXJzIGFjcm9zcyB0aG91c2FuZHMgb2YgcGlwZWxpbmVzIOKAlCBhbiB1bmJvdW5kZWQgTWFwIGlzIGEgc2xvdyBsZWFrIHRoYXRcbiAqIGVuZHMgaW4gYW4gT09NLWtpbGxlZCBMYW1iZGEgYW5kIGEgcmVkZWxpdmVyZWQgYmF0Y2guXG4gKi9cbmV4cG9ydCBjbGFzcyBCb3VuZGVkTWFwPEssIFY+IGV4dGVuZHMgTWFwPEssIFY+IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBtYXg6IG51bWJlcikgeyBzdXBlcigpOyB9XG4gIG92ZXJyaWRlIHNldChrZXk6IEssIHZhbHVlOiBWKTogdGhpcyB7XG4gICAgaWYgKHN1cGVyLmhhcyhrZXkpKSB7XG4gICAgICBzdXBlci5kZWxldGUoa2V5KTsgLy8gcmVmcmVzaCByZWNlbmN5XG4gICAgfSBlbHNlIGlmICh0aGlzLnNpemUgPj0gdGhpcy5tYXgpIHtcbiAgICAgIGNvbnN0IG9sZGVzdCA9IHRoaXMua2V5cygpLm5leHQoKS52YWx1ZTtcbiAgICAgIGlmIChvbGRlc3QgIT09IHVuZGVmaW5lZCkgc3VwZXIuZGVsZXRlKG9sZGVzdCk7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5zZXQoa2V5LCB2YWx1ZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIGxvZy1zYWZlIHN0YW5kLWluIGZvciBhbiBBUk46IGBhcm4jPDEyIGhleCBvZiBzaGEyNTY+YC4gRXZlcnkgQVJOIGVtYmVkcyB0aGVcbiAqIEFXUyBhY2NvdW50IGlkLCB3aGljaCBtdXN0IG5ldmVyIHJlYWNoIENsb3VkV2F0Y2gg4oCUIGJ1dCBhIHN0YWJsZSBkaWdlc3Qgc3RpbGxcbiAqIGxldHMgYW4gb3BlcmF0b3IgY29ycmVsYXRlIGxvZyBsaW5lcyBmb3IgdGhlIHNhbWUgcmVzb3VyY2UgKGFuZCBtYXRjaCBpdCBieVxuICogaGFzaGluZyBhbiBBUk4gdGhleSBhbHJlYWR5IGhvbGQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJuUmVmKGFybjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBhcm4jJHtjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoYXJuKS5kaWdlc3QoJ2hleCcpLnNsaWNlKDAsIDEyKX1gO1xufVxuXG4vKiogVXBwZXIgYm91bmQgZm9yIGV2ZXJ5IHBlci1rZXkgY2FjaGUgYmVsb3cuICovXG5leHBvcnQgY29uc3QgQ0FDSEVfTUFYX0VOVFJJRVMgPSA1MDAwO1xuXG4vLyBWYXJpYWJsZS1zcGVjaWZpZXIgbG9hZGVyIGZvciBTREsgY2xpZW50cyB0aGF0IGFyZSBOT1QgZGV2RGVwZW5kZW5jaWVzIG9mIHRoaXNcbi8vIHBhY2thZ2UgKGBAYXdzLXNkay9jbGllbnQtY29kZWNvbW1pdGAsIGBAYXdzLXNkay9jbGllbnQtc3FzYCDigJQgcHJlc2VudCBvbmx5IGluXG4vLyB0aGUgTGFtYmRhIHJ1bnRpbWUgLyBqZXN0IG1vY2tzKS4gQSBgc3RyaW5nYCBzcGVjaWZpZXIga2VlcHMgYHRzY2AgZnJvbVxuLy8gcmVzb2x2aW5nIHRoZW0gYXQgYnVpbGQgdGltZSwgYW5kIHRoZSBidW5kbGUgbGVhdmVzIGBAYXdzLXNkay8qYCBleHRlcm5hbC5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkU2RrPFQ+KHBrZzogc3RyaW5nKTogUHJvbWlzZTxUPiB7XG4gIHJldHVybiAoYXdhaXQgaW1wb3J0KHBrZykpIGFzIFQ7XG59XG5cbi8qKlxuICogSG93IGxvbmcgb25lIG91dGJvdW5kIGNhbGwgdG8gdGhlIHJlcG9ydGluZyBzZXJ2aWNlIG1heSB0YWtlLlxuICpcbiAqIEEgTGFtYmRhIGhhcyBubyBzdXBlcnZpc29yIHRvIG5vdGljZSBpdCBpcyBzdHVjazogYW4gdW50aW1lZCBgZmV0Y2hgIGFnYWluc3QgYSB3ZWRnZWRcbiAqIHJlcG9ydGluZyBzZXJ2aWNlIGhvbGRzIHRoZSBpbnZvY2F0aW9uIHVudGlsIHRoZSBGVU5DVElPTidzIG93biB0aW1lb3V0LCB3aGljaCBidXJuc1xuICogdGhlIHdob2xlIGJ1ZGdldCwgcmV0dXJucyBubyBiYXRjaCByZXNwb25zZSwgYW5kIGxldHMgU1FTIHJlZGVsaXZlciB0aGUgc2FtZSByZWNvcmRzXG4gKiB0byB0aGUgc2FtZSB3ZWRnZWQgZW5kcG9pbnQuIEEgYm91bmRlZCBjYWxsIGZhaWxzIGZhc3QsIHJlcG9ydHMgdGhlIGJhdGNoIGFzIGZhaWxlZCxcbiAqIGFuZCBsZXRzIHRoZSByZXRyeSBoYXBwZW4gb24gU1FTJ3Mgc2NoZWR1bGUgcmF0aGVyIHRoYW4gYnkgZXhoYXVzdGluZyB0aGUgY2xvY2suXG4gKlxuICogRGVmYXVsdCA1cywgd2VsbCBpbnNpZGUgYSB0eXBpY2FsIDMwcyBmdW5jdGlvbiB0aW1lb3V0IGV2ZW4gd2l0aCBvbmUgYXV0aCByZXRyeS5cbiAqL1xuZXhwb3J0IGNvbnN0IEZFVENIX1RJTUVPVVRfTVMgPSBOdW1iZXIocHJvY2Vzcy5lbnYuUkVQT1JUSU5HX0ZFVENIX1RJTUVPVVRfTVMgPz8gNTAwMCkgfHwgNTAwMDtcblxuLyoqXG4gKiBgZmV0Y2hgIHdpdGggYSBkZWFkbGluZS5cbiAqXG4gKiBgQWJvcnRTaWduYWwudGltZW91dGAgcmF0aGVyIHRoYW4gYSBoYW5kLXJvbGxlZCBjb250cm9sbGVyOiBpdCBpcyBvbmUgY2FsbCwgaXQgY2Fubm90XG4gKiBsZWFrIHRoZSB0aW1lciwgYW5kIGl0IHJlamVjdHMgd2l0aCBhIGBUaW1lb3V0RXJyb3JgIHRoZSBjYWxsZXJzIGFscmVhZHkgdHJlYXQgYXMgYVxuICogZmFpbGVkIFBPU1QuIEV2ZXJ5IG91dGJvdW5kIGNhbGwgaW4gdGhpcyBwYWNrYWdlIGdvZXMgdGhyb3VnaCBoZXJlIHNvIGEgbmV3IG9uZSBjYW5ub3RcbiAqIGJlIGFkZGVkIHdpdGhvdXQgYSBkZWFkbGluZSBieSBzaW1wbHkgZm9yZ2V0dGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZldGNoV2l0aFRpbWVvdXQodXJsOiBzdHJpbmcsIGluaXQ6IFJlcXVlc3RJbml0ID0ge30sIHRpbWVvdXRNcyA9IEZFVENIX1RJTUVPVVRfTVMpOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gIHJldHVybiBmZXRjaCh1cmwsIHsgLi4uaW5pdCwgc2lnbmFsOiBBYm9ydFNpZ25hbC50aW1lb3V0KHRpbWVvdXRNcykgfSk7XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pipeline-builder/pipeline-events",
3
- "description": "AWS Lambda handler for Pipeline Builder that ingests CodePipeline state-change events from EventBridge and forwards normalized payloads to the reporting service.",
3
+ "description": "Lambda that forwards CodePipeline state changes to Pipeline Builder reporting.",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/mwashburn160/pipeline-builder.git"
@@ -9,13 +9,13 @@
9
9
  "@aws-sdk/client-codepipeline": "3.1160.0",
10
10
  "@aws-sdk/client-secrets-manager": "3.1160.0",
11
11
  "@jest/globals": "30.5.2",
12
- "@pipeline-builder/pipeline-core": "4.4.6",
12
+ "@pipeline-builder/pipeline-core": "4.4.8",
13
13
  "@stylistic/eslint-plugin": "^2",
14
14
  "@types/aws-lambda": "8.10.164",
15
15
  "@types/node": "^26",
16
16
  "@typescript-eslint/eslint-plugin": "^8",
17
17
  "@typescript-eslint/parser": "^8",
18
- "@typescript/native": "npm:typescript@^7.0.2",
18
+ "@typescript/native": "npm:typescript@7.1.0-beta",
19
19
  "esbuild": "0.28.2",
20
20
  "eslint": "^9",
21
21
  "eslint-import-resolver-typescript": "^4.4.5",
@@ -83,7 +83,7 @@
83
83
  "registry": "https://registry.npmjs.org/",
84
84
  "provenance": true
85
85
  },
86
- "version": "4.3.6",
86
+ "version": "4.3.8",
87
87
  "bugs": {
88
88
  "url": "https://github.com/mwashburn160/pipeline-builder/issues"
89
89
  },
@@ -157,7 +157,7 @@
157
157
  "coverageThreshold": {
158
158
  "global": {
159
159
  "statements": 95,
160
- "branches": 78,
160
+ "branches": 84,
161
161
  "functions": 95,
162
162
  "lines": 95
163
163
  }