@discordeno/gateway 19.0.0-next.e610091 → 19.0.0-next.f072d12
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/README.md +1 -1
- package/dist/Shard.d.ts +3 -3
- package/dist/Shard.d.ts.map +1 -1
- package/dist/Shard.js +2 -2
- package/dist/types.d.ts +1 -1
- package/dist/types.js +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
package/dist/Shard.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import WebSocket from 'ws';
|
|
|
4
4
|
import type { RequestMemberRequest } from './manager.js';
|
|
5
5
|
import type { BotStatusUpdate, ShardEvents, ShardGatewayConfig, ShardHeart, ShardSocketRequest, StatusUpdate, UpdateVoiceState } from './types.js';
|
|
6
6
|
import { ShardState } from './types.js';
|
|
7
|
-
export declare class
|
|
7
|
+
export declare class DiscordenoShard {
|
|
8
8
|
/** The id of the shard */
|
|
9
9
|
id: number;
|
|
10
10
|
/** The connection config details that this shard will used to connect to discord. */
|
|
@@ -54,7 +54,7 @@ export declare class Shard {
|
|
|
54
54
|
/** Close the socket connection to discord if present. */
|
|
55
55
|
close(code: number, reason: string): void;
|
|
56
56
|
/** Connect the shard with the gateway and start heartbeating. This will not identify the shard to the gateway. */
|
|
57
|
-
connect(): Promise<
|
|
57
|
+
connect(): Promise<DiscordenoShard>;
|
|
58
58
|
/** Identify the shard to the gateway. If not connected, this will also connect the shard to the gateway. */
|
|
59
59
|
identify(): Promise<void>;
|
|
60
60
|
/** Check whether the connection to Discord is currently open. */
|
|
@@ -162,5 +162,5 @@ export interface ShardCreateOptions {
|
|
|
162
162
|
/** The event handlers for events on the shard. */
|
|
163
163
|
events: ShardEvents;
|
|
164
164
|
}
|
|
165
|
-
export default
|
|
165
|
+
export default DiscordenoShard;
|
|
166
166
|
//# sourceMappingURL=Shard.d.ts.map
|
package/dist/Shard.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Shard.d.ts","sourceRoot":"","sources":["../src/Shard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EACT,QAAQ,EACR,qBAAqB,EAErB,aAAa,EAEb,mBAAmB,EACpB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAY,UAAU,EAAoC,MAAM,mBAAmB,CAAA;AAE1F,OAAO,SAAS,MAAM,IAAI,CAAA;AAC1B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClJ,OAAO,EAAyB,UAAU,EAAE,MAAM,YAAY,CAAA;AAE9D,qBAAa,
|
|
1
|
+
{"version":3,"file":"Shard.d.ts","sourceRoot":"","sources":["../src/Shard.ts"],"names":[],"mappings":"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"}
|
package/dist/Shard.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{GatewayCloseEventCodes as e,GatewayIntents as t,GatewayOpcodes as s}from"@discordeno/types";import{camelize as i,Collection as n,createLeakyBucket as a,delay as r,logger as h}from"@discordeno/utils";import{inflateSync as o}from"node:zlib";import d from"ws";import{ShardSocketCloseCodes as c,ShardState as l}from"./types.js";export class
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9TaGFyZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIEF0TGVhc3RPbmUsXG4gIEJpZ1N0cmluZyxcbiAgQ2FtZWxpemUsXG4gIERpc2NvcmRHYXRld2F5UGF5bG9hZCxcbiAgRGlzY29yZEhlbGxvLFxuICBEaXNjb3JkTWVtYmVyLFxuICBEaXNjb3JkUmVhZHksXG4gIFJlcXVlc3RHdWlsZE1lbWJlcnMsXG59IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgR2F0ZXdheUNsb3NlRXZlbnRDb2RlcywgR2F0ZXdheUludGVudHMsIEdhdGV3YXlPcGNvZGVzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBjYW1lbGl6ZSwgQ29sbGVjdGlvbiwgY3JlYXRlTGVha3lCdWNrZXQsIGRlbGF5LCBsb2dnZXIgfSBmcm9tICdAZGlzY29yZGVuby91dGlscydcbmltcG9ydCB7IGluZmxhdGVTeW5jIH0gZnJvbSAnbm9kZTp6bGliJ1xuaW1wb3J0IFdlYlNvY2tldCBmcm9tICd3cydcbmltcG9ydCB0eXBlIHsgUmVxdWVzdE1lbWJlclJlcXVlc3QgfSBmcm9tICcuL21hbmFnZXIuanMnXG5pbXBvcnQgdHlwZSB7IEJvdFN0YXR1c1VwZGF0ZSwgU2hhcmRFdmVudHMsIFNoYXJkR2F0ZXdheUNvbmZpZywgU2hhcmRIZWFydCwgU2hhcmRTb2NrZXRSZXF1ZXN0LCBTdGF0dXNVcGRhdGUsIFVwZGF0ZVZvaWNlU3RhdGUgfSBmcm9tICcuL3R5cGVzLmpzJ1xuaW1wb3J0IHsgU2hhcmRTb2NrZXRDbG9zZUNvZGVzLCBTaGFyZFN0YXRlIH0gZnJvbSAnLi90eXBlcy5qcydcblxuZXhwb3J0IGNsYXNzIFNoYXJkIHtcbiAgLyoqIFRoZSBpZCBvZiB0aGUgc2hhcmQgKi9cbiAgaWQ6IG51bWJlclxuICAvKiogVGhlIGNvbm5lY3Rpb24gY29uZmlnIGRldGFpbHMgdGhhdCB0aGlzIHNoYXJkIHdpbGwgdXNlZCB0byBjb25uZWN0IHRvIGRpc2NvcmQuICovXG4gIGNvbm5lY3Rpb246IFNoYXJkR2F0ZXdheUNvbmZpZ1xuICAvKiogVGhpcyBjb250YWlucyBhbGwgdGhlIGhlYXJ0YmVhdCBpbmZvcm1hdGlvbiAqL1xuICBoZWFydDogU2hhcmRIZWFydFxuICAvKiogVGhlIG1heGltdW0gb2YgcmVxdWVzdHMgd2hpY2ggY2FuIGJlIHNlbmQgdG8gZGlzY29yZCBwZXIgcmF0ZSBsaW1pdCB0aWNrLiBUeXBpY2FsbHkgdGhpcyB2YWx1ZSBzaG91bGQgbm90IGJlIGNoYW5nZWQuICovXG4gIG1heFJlcXVlc3RzUGVyUmF0ZUxpbWl0VGljazogbnVtYmVyID0gMTIwXG4gIC8qKiBUaGUgcHJldmlvdXMgcGF5bG9hZCBzZXF1ZW5jZSBudW1iZXIuICovXG4gIHByZXZpb3VzU2VxdWVuY2VOdW1iZXI6IG51bWJlciB8IG51bGwgPSBudWxsXG4gIC8qKiBJbiB3aGljaCBpbnRlcnZhbCAoaW4gbWlsbGlzZWNvbmRzKSB0aGUgZ2F0ZXdheSByZXNldHMgaXQncyByYXRlIGxpbWl0LiAqL1xuICByYXRlTGltaXRSZXNldEludGVydmFsOiBudW1iZXIgPSA2MDAwMFxuICAvKiogQ3VycmVudCBzZXNzaW9uIGlkIG9mIHRoZSBzaGFyZCBpZiBwcmVzZW50LiAqL1xuICBzZXNzaW9uSWQ/OiBzdHJpbmdcbiAgLyoqIFRoaXMgY29udGFpbnMgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIHRvIERpc2NvcmQsIGlmIGN1cnJlbnRseSBjb25uZWN0ZWQuICovXG4gIHNvY2tldD86IFdlYlNvY2tldFxuICAvKiogQ3VycmVudCBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgdGhpcy4gKi9cbiAgc3RhdGUgPSBTaGFyZFN0YXRlLk9mZmxpbmVcbiAgLyoqIFRoZSB1cmwgcHJvdmlkZWQgYnkgZGlzY29yZCB0byB1c2Ugd2hlbiByZXN1bWluZyBhIGNvbm5lY3Rpb24gZm9yIHRoaXMgdGhpcy4gKi9cbiAgcmVzdW1lR2F0ZXdheVVybDogc3RyaW5nID0gJydcbiAgLyoqIFRoZSBzaGFyZCByZWxhdGVkIGV2ZW50IGhhbmRsZXJzLiAqL1xuICBldmVudHM6IFNoYXJkRXZlbnRzID0ge31cbiAgLyoqIENhY2hlIGZvciBwZW5kaW5nIGdhdGV3YXkgcmVxdWVzdHMgd2hpY2ggc2hvdWxkIGhhdmUgYmVlbiBzZW5kIHdoaWxlIHRoZSBnYXRld2F5IHdlbnQgb2ZmbGluZS4gKi9cbiAgb2ZmbGluZVNlbmRRdWV1ZTogQXJyYXk8KF8/OiB1bmtub3duKSA9PiB2b2lkPiA9IFtdXG4gIC8qKiBSZXNvbHZlIGludGVybmFsIHdhaXRpbmcgc3RhdGVzLiBNYXBwZWQgYnkgU2VsZWN0ZWRFdmVudHMgPT4gUmVzb2x2ZUZ1bmN0aW9uICovXG4gIHJlc29sdmVzID0gbmV3IE1hcDwnUkVBRFknIHwgJ1JFU1VNRUQnIHwgJ0lOVkFMSURfU0VTU0lPTicsIChwYXlsb2FkOiBEaXNjb3JkR2F0ZXdheVBheWxvYWQpID0+IHZvaWQ+KClcbiAgLyoqIFNoYXJkIGJ1Y2tldC4gT25seSBhY2Nlc3MgdGhpcyBpZiB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcuIEJ1Y2tldCBmb3IgaGFuZGxpbmcgc2hhcmQgcmVxdWVzdCByYXRlIGxpbWl0cy4gKi9cbiAgYnVja2V0ID0gY3JlYXRlTGVha3lCdWNrZXQoe1xuICAgIG1heDogMTIwLFxuICAgIHJlZmlsbEludGVydmFsOiA2MDAwMCxcbiAgICByZWZpbGxBbW91bnQ6IDEyMCxcbiAgfSlcblxuICAvKiogVGhpcyBtYW5hZ2VycyBjYWNoZSByZWxhdGVkIHNldHRpbmdzLiAqL1xuICBjYWNoZSA9IHtcbiAgICByZXF1ZXN0TWVtYmVyczoge1xuICAgICAgLyoqXG4gICAgICAgKiBXaGV0aGVyIG9yIG5vdCByZXF1ZXN0IG1lbWJlciByZXF1ZXN0cyBzaG91bGQgYmUgY2FjaGVkLlxuICAgICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgICAqL1xuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAvKiogVGhlIHBlbmRpbmcgcmVxdWVzdHMuICovXG4gICAgICBwZW5kaW5nOiBuZXcgQ29sbGVjdGlvbjxzdHJpbmcsIFJlcXVlc3RNZW1iZXJSZXF1ZXN0PigpLFxuICAgIH0sXG4gIH1cblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTaGFyZENyZWF0ZU9wdGlvbnMpIHtcbiAgICB0aGlzLmlkID0gb3B0aW9ucy5pZFxuICAgIHRoaXMuY29ubmVjdGlvbiA9IG9wdGlvbnMuY29ubmVjdGlvblxuICAgIHRoaXMuZXZlbnRzID0gb3B0aW9ucy5ldmVudHNcblxuICAgIHRoaXMuaGVhcnQgPSB7XG4gICAgICBhY2tub3dsZWRnZWQ6IGZhbHNlLFxuICAgICAgaW50ZXJ2YWw6IDQ1MDAwLFxuICAgIH1cbiAgfVxuXG4gIC8qKiBUaGUgZ2F0ZXdheSBjb25maWd1cmF0aW9uIHdoaWNoIGlzIHVzZWQgdG8gY29ubmVjdCB0byBEaXNjb3JkLiAqL1xuICBnZXQgZ2F0ZXdheUNvbmZpZygpOiBTaGFyZEdhdGV3YXlDb25maWcge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb25cbiAgfVxuXG4gIC8qKiBDYWxjdWxhdGUgdGhlIGFtb3VudCBvZiByZXF1ZXN0cyB3aGljaCBjYW4gc2FmZWx5IGJlIG1hZGUgcGVyIHJhdGUgbGltaXQgaW50ZXJ2YWwsIGJlZm9yZSB0aGUgZ2F0ZXdheSBnZXRzIGRpc2Nvbm5lY3RlZCBkdWUgdG8gYW4gZXhjZWVkZWQgcmF0ZSBsaW1pdC4gKi9cbiAgY2FsY3VsYXRlU2FmZVJlcXVlc3RzKCk6IG51bWJlciB7XG4gICAgLy8gKiAyIGFkZHMgZXh0cmEgc2FmZXR5IGxheWVyIGZvciBkaXNjb3JkcyBPUCAxIHJlcXVlc3RzIHRoYXQgd2UgbmVlZCB0byByZXNwb25kIHRvXG4gICAgY29uc3Qgc2FmZVJlcXVlc3RzID0gdGhpcy5tYXhSZXF1ZXN0c1BlclJhdGVMaW1pdFRpY2sgLSBNYXRoLmNlaWwodGhpcy5yYXRlTGltaXRSZXNldEludGVydmFsIC8gdGhpcy5oZWFydC5pbnRlcnZhbCkgKiAyXG5cbiAgICByZXR1cm4gc2FmZVJlcXVlc3RzIDwgMCA/IDAgOiBzYWZlUmVxdWVzdHNcbiAgfVxuXG4gIGFzeW5jIGNoZWNrT2ZmbGluZShoaWdoUHJpb3JpdHk6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuaXNPcGVuKCkpIHtcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgIC8vIEhpZ2hlciBwcmlvcml0eSByZXF1ZXN0cyBnZXQgYWRkZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYXJyYXkuXG4gICAgICAgIGlmIChoaWdoUHJpb3JpdHkpIHRoaXMub2ZmbGluZVNlbmRRdWV1ZS51bnNoaWZ0KHJlc29sdmUpXG4gICAgICAgIGVsc2UgdGhpcy5vZmZsaW5lU2VuZFF1ZXVlLnB1c2gocmVzb2x2ZSlcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLyoqIENsb3NlIHRoZSBzb2NrZXQgY29ubmVjdGlvbiB0byBkaXNjb3JkIGlmIHByZXNlbnQuICovXG4gIGNsb3NlKGNvZGU6IG51bWJlciwgcmVhc29uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zb2NrZXQ/LnJlYWR5U3RhdGUgIT09IFdlYlNvY2tldC5PUEVOKSByZXR1cm5cblxuICAgIHJldHVybiB0aGlzLnNvY2tldD8uY2xvc2UoY29kZSwgcmVhc29uKVxuICB9XG5cbiAgLyoqIENvbm5lY3QgdGhlIHNoYXJkIHdpdGggdGhlIGdhdGV3YXkgYW5kIHN0YXJ0IGhlYXJ0YmVhdGluZy4gVGhpcyB3aWxsIG5vdCBpZGVudGlmeSB0aGUgc2hhcmQgdG8gdGhlIGdhdGV3YXkuICovXG4gIGFzeW5jIGNvbm5lY3QoKTogUHJvbWlzZTxTaGFyZD4ge1xuICAgIC8vIE9ubHkgc2V0IHRoZSBzaGFyZCB0byBgQ29ubmVjdGluZ2Agc3RhdGUsXG4gICAgLy8gaWYgdGhlIGNvbm5lY3Rpb24gcmVxdWVzdCBkb2VzIG5vdCBjb21lIGZyb20gYW4gaWRlbnRpZnkgb3IgcmVzdW1lIGFjdGlvbi5cbiAgICBpZiAoIVtTaGFyZFN0YXRlLklkZW50aWZ5aW5nLCBTaGFyZFN0YXRlLlJlc3VtaW5nXS5pbmNsdWRlcyh0aGlzLnN0YXRlKSkge1xuICAgICAgdGhpcy5zdGF0ZSA9IFNoYXJkU3RhdGUuQ29ubmVjdGluZ1xuICAgIH1cbiAgICB0aGlzLmV2ZW50cy5jb25uZWN0aW5nPy4odGhpcylcblxuICAgIGxldCB1cmwgPSBuZXcgVVJMKHRoaXMuZ2F0ZXdheUNvbmZpZy51cmwpXG4gICAgLy8gSWYgbm90IGNvbm5lY3RpbmcgdG8gYSBwcm94eSBidXQgZGlyZWN0bHkgdG8gZGlzY29yZCBuZWVkIHRvIGhhbmRsZSByZXN1bWluZ1xuICAgIGlmICh1cmwub3JpZ2luID09PSAnd3NzOi8vZ2F0ZXdheS5kaXNjb3JkLmdnJykge1xuICAgICAgaWYgKHRoaXMuc3RhdGUgPT09IFNoYXJkU3RhdGUuUmVzdW1pbmcpIHtcbiAgICAgICAgdXJsID0gbmV3IFVSTCh0aGlzLnJlc3VtZUdhdGV3YXlVcmwpXG4gICAgICB9XG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgndicsIHRoaXMuZ2F0ZXdheUNvbmZpZy52ZXJzaW9uLnRvU3RyaW5nKCkpXG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnZW5jb2RpbmcnLCAnanNvbicpXG4gICAgfVxuXG4gICAgY29uc3Qgc29ja2V0ID0gbmV3IFdlYlNvY2tldCh1cmwudG9TdHJpbmcoKSlcblxuICAgIHRoaXMuc29ja2V0ID0gc29ja2V0XG5cbiAgICAvLyBUT0RPOiBwcm9wZXIgZXZlbnQgaGFuZGxpbmdcbiAgICBzb2NrZXQub25lcnJvciA9IChldmVudCkgPT4gY29uc29sZS5sb2coeyBlcnJvcjogZXZlbnQgfSlcblxuICAgIHNvY2tldC5vbmNsb3NlID0gYXN5bmMgKGV2ZW50KSA9PiBhd2FpdCB0aGlzLmhhbmRsZUNsb3NlKGV2ZW50KVxuXG4gICAgc29ja2V0Lm9ubWVzc2FnZSA9IGFzeW5jIChtZXNzYWdlKSA9PiBhd2FpdCB0aGlzLmhhbmRsZU1lc3NhZ2UobWVzc2FnZSlcblxuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgc29ja2V0Lm9ub3BlbiA9ICgpID0+IHtcbiAgICAgICAgLy8gT25seSBzZXQgdGhlIHNoYXJkIHRvIGBVbmlkZW50aWZpZWRgIHN0YXRlLFxuICAgICAgICAvLyBpZiB0aGUgY29ubmVjdGlvbiByZXF1ZXN0IGRvZXMgbm90IGNvbWUgZnJvbSBhbiBpZGVudGlmeSBvciByZXN1bWUgYWN0aW9uLlxuICAgICAgICBpZiAoIVtTaGFyZFN0YXRlLklkZW50aWZ5aW5nLCBTaGFyZFN0YXRlLlJlc3VtaW5nXS5pbmNsdWRlcyh0aGlzLnN0YXRlKSkge1xuICAgICAgICAgIHRoaXMuc3RhdGUgPSBTaGFyZFN0YXRlLlVuaWRlbnRpZmllZFxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZXZlbnRzLmNvbm5lY3RlZD8uKHRoaXMpXG5cbiAgICAgICAgcmVzb2x2ZSh0aGlzKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKiogSWRlbnRpZnkgdGhlIHNoYXJkIHRvIHRoZSBnYXRld2F5LiBJZiBub3QgY29ubmVjdGVkLCB0aGlzIHdpbGwgYWxzbyBjb25uZWN0IHRoZSBzaGFyZCB0byB0aGUgZ2F0ZXdheS4gKi9cbiAgYXN5bmMgaWRlbnRpZnkoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gQSBuZXcgaWRlbnRpZnkgaGFzIGJlZW4gcmVxdWVzdGVkIGV2ZW4gdGhvdWdoIHRoZXJlIGlzIGFscmVhZHkgYSBjb25uZWN0aW9uIG9wZW4uXG4gICAgLy8gVGhlcmVmb3JlIHdlIG5lZWQgdG8gY2xvc2UgdGhlIG9sZCBjb25uZWN0aW9uIGFuZCBoZWFydGJlYXRpbmcgYmVmb3JlIGNyZWF0aW5nIGEgbmV3IG9uZS5cbiAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgY29uc29sZS5sb2coYENMT1NJTkcgRVhJU1RJTkcgU0hBUkQ6ICMke3RoaXMuaWR9YClcbiAgICAgIHRoaXMuY2xvc2UoU2hhcmRTb2NrZXRDbG9zZUNvZGVzLlJlSWRlbnRpZnlpbmcsICdSZS1pZGVudGlmeWluZyBjbG9zdXJlIG9mIG9sZCBjb25uZWN0aW9uLicpXG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSA9IFNoYXJkU3RhdGUuSWRlbnRpZnlpbmdcbiAgICB0aGlzLmV2ZW50cy5pZGVudGlmeWluZz8uKHRoaXMpXG5cbiAgICAvLyBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBzaGFyZCBpcyBpbiBIZWFydGJlYXRpbmcgc3RhdGUgYnV0IG5vdCBpZGVudGlmaWVkLFxuICAgIC8vIHNvIGNoZWNrIHdoZXRoZXIgdGhlcmUgaXMgYWxyZWFkeSBhIGdhdGV3YXkgY29ubmVjdGlvbiBleGlzdGluZy5cbiAgICAvLyBJZiBub3Qgd2UgbmVlZCB0byBjcmVhdGUgb25lIGJlZm9yZSB3ZSBpZGVudGlmeS5cbiAgICBpZiAoIXRoaXMuaXNPcGVuKCkpIHtcbiAgICAgIGF3YWl0IHRoaXMuY29ubmVjdCgpXG4gICAgfVxuXG4gICAgLy8gV2FpdCB1bnRpbCBhbiBpZGVudGlmeSBpcyBmcmVlIGZvciB0aGlzIHRoaXMuXG4gICAgYXdhaXQgdGhpcy5yZXF1ZXN0SWRlbnRpZnkoKVxuXG4gICAgdGhpcy5zZW5kKFxuICAgICAge1xuICAgICAgICBvcDogR2F0ZXdheU9wY29kZXMuSWRlbnRpZnksXG4gICAgICAgIGQ6IHtcbiAgICAgICAgICB0b2tlbjogYEJvdCAke3RoaXMuZ2F0ZXdheUNvbmZpZy50b2tlbn1gLFxuICAgICAgICAgIGNvbXByZXNzOiB0aGlzLmdhdGV3YXlDb25maWcuY29tcHJlc3MsXG4gICAgICAgICAgcHJvcGVydGllczogdGhpcy5nYXRld2F5Q29uZmlnLnByb3BlcnRpZXMsXG4gICAgICAgICAgaW50ZW50czogdGhpcy5nYXRld2F5Q29uZmlnLmludGVudHMsXG4gICAgICAgICAgc2hhcmQ6IFt0aGlzLmlkLCB0aGlzLmdhdGV3YXlDb25maWcudG90YWxTaGFyZHNdLFxuICAgICAgICAgIHByZXNlbmNlOiBhd2FpdCB0aGlzLm1ha2VQcmVzZW5jZT8uKCksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdHJ1ZSxcbiAgICApXG5cbiAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIHRoaXMucmVzb2x2ZXMuc2V0KCdSRUFEWScsICgpID0+IHtcbiAgICAgICAgdGhpcy5ldmVudHMuaWRlbnRpZmllZD8uKHRoaXMpXG4gICAgICAgIHJlc29sdmUoKVxuICAgICAgfSlcbiAgICAgIC8vIFdoZW4gaWRlbnRpZnlpbmcgdG9vIGZhc3QsXG4gICAgICAvLyBEaXNjb3JkIHNlbmRzIGFuIGludmFsaWQgc2Vzc2lvbiBwYXlsb2FkLlxuICAgICAgLy8gVGhpcyBjYW4gc2FmZWx5IGJlIGlnbm9yZWQgdGhvdWdoIGFuZCB0aGUgc2hhcmQgc3RhcnRzIGEgbmV3IGlkZW50aWZ5IGFjdGlvbi5cbiAgICAgIHRoaXMucmVzb2x2ZXMuc2V0KCdJTlZBTElEX1NFU1NJT04nLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVzb2x2ZXMuZGVsZXRlKCdSRUFEWScpXG4gICAgICAgIHJlc29sdmUoKVxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgLyoqIENoZWNrIHdoZXRoZXIgdGhlIGNvbm5lY3Rpb24gdG8gRGlzY29yZCBpcyBjdXJyZW50bHkgb3Blbi4gKi9cbiAgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNvY2tldD8ucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU5cbiAgfVxuXG4gIC8qKiBBdHRlbXB0IHRvIHJlc3VtZSB0aGUgcHJldmlvdXMgc2hhcmRzIHNlc3Npb24gd2l0aCB0aGUgZ2F0ZXdheS4gKi9cbiAgYXN5bmMgcmVzdW1lKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vICAgZ2F0ZXdheS5kZWJ1ZyhcIkdXIFJFU1VNSU5HXCIsIHsgc2hhcmRJZCB9KTtcbiAgICAvLyBJdCBoYXMgYmVlbiByZXF1ZXN0ZWQgdG8gcmVzdW1lIHRoZSBTaGFyZHMgc2Vzc2lvbi5cbiAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHNoYXJkIGlzIHN0aWxsIGNvbm5lY3RlZCB3aXRoIERpc2NvcmQncyBnYXRld2F5IHRoZXJlZm9yZSB3ZSBuZWVkIHRvIGZvcmNlZnVsbHkgY2xvc2UgaXQuXG4gICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgIHRoaXMuY2xvc2UoU2hhcmRTb2NrZXRDbG9zZUNvZGVzLlJlc3VtZUNsb3NpbmdPbGRDb25uZWN0aW9uLCAnUmVjb25uZWN0aW5nIHRoZSBzaGFyZCwgY2xvc2luZyBvbGQgY29ubmVjdGlvbi4nKVxuICAgIH1cblxuICAgIC8vIFNoYXJkIGhhcyBuZXZlciBpZGVudGlmaWVkLCBzbyB3ZSBjYW5ub3QgcmVzdW1lLlxuICAgIGlmICghdGhpcy5zZXNzaW9uSWQpIHtcbiAgICAgIC8vIGdhdGV3YXkuZGVidWcoXG4gICAgICAvLyAgIFwiR1cgREVCVUdcIixcbiAgICAgIC8vICAgYFtFcnJvcl0gVHJ5aW5nIHRvIHJlc3VtZSBhIHNoYXJkIChpZDogJHtzaGFyZElkfSkgdGhhdCB3YXMgbm90IGZpcnN0IGlkZW50aWZpZWQuYCxcbiAgICAgIC8vICk7XG5cbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmlkZW50aWZ5KClcblxuICAgICAgLy8gdGhyb3cgbmV3IEVycm9yKGBbU0hBUkRdIFRyeWluZyB0byByZXN1bWUgYSBzaGFyZCAoaWQ6ICR7dGhpcy5pZH0pIHdoaWNoIHdhcyBuZXZlciBpZGVudGlmaWVkYCk7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSA9IFNoYXJkU3RhdGUuUmVzdW1pbmdcblxuICAgIC8vIEJlZm9yZSB3ZSBjYW4gcmVzdW1lLCB3ZSBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBjb25uZWN0aW9uIHdpdGggRGlzY29yZCdzIGdhdGV3YXkuXG4gICAgYXdhaXQgdGhpcy5jb25uZWN0KClcblxuICAgIHRoaXMuc2VuZChcbiAgICAgIHtcbiAgICAgICAgb3A6IEdhdGV3YXlPcGNvZGVzLlJlc3VtZSxcbiAgICAgICAgZDoge1xuICAgICAgICAgIHRva2VuOiBgQm90ICR7dGhpcy5nYXRld2F5Q29uZmlnLnRva2VufWAsXG4gICAgICAgICAgc2Vzc2lvbl9pZDogdGhpcy5zZXNzaW9uSWQsXG4gICAgICAgICAgc2VxOiB0aGlzLnByZXZpb3VzU2VxdWVuY2VOdW1iZXIgPz8gMCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0cnVlLFxuICAgIClcblxuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgdGhpcy5yZXNvbHZlcy5zZXQoJ1JFU1VNRUQnLCAoKSA9PiByZXNvbHZlKCkpXG4gICAgICAvLyBJZiBpdCBpcyBhdHRlbXB0ZWQgdG8gcmVzdW1lIHdpdGggYW4gaW52YWxpZCBzZXNzaW9uIGlkLFxuICAgICAgLy8gRGlzY29yZCBzZW5kcyBhbiBpbnZhbGlkIHNlc3Npb24gcGF5bG9hZFxuICAgICAgLy8gTm90IGVycm9yaW5nIGhlcmUgc2luY2UgaXQgaXMgZWFzeSB0aGF0IHRoaXMgaGFwcGVucywgYWxzbyBpdCB3b3VsZCBiZSBub3QgY2F0Y2hhYmxlXG4gICAgICB0aGlzLnJlc29sdmVzLnNldCgnSU5WQUxJRF9TRVNTSU9OJywgKCkgPT4ge1xuICAgICAgICB0aGlzLnJlc29sdmVzLmRlbGV0ZSgnUkVTVU1FRCcpXG4gICAgICAgIHJlc29sdmUoKVxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgLyoqIFNlbmQgYSBtZXNzYWdlIHRvIERpc2NvcmQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2hpZ2hQcmlvcml0eT1mYWxzZV0gLSBXaGV0aGVyIHRoaXMgbWVzc2FnZSBzaG91bGQgYmUgc2VuZCBhc2FwLlxuICAgKi9cbiAgYXN5bmMgc2VuZChtZXNzYWdlOiBTaGFyZFNvY2tldFJlcXVlc3QsIGhpZ2hQcmlvcml0eSA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gQmVmb3JlIGFjcXVpcmluZyBhIHRva2VuIGZyb20gdGhlIGJ1Y2tldCwgY2hlY2sgd2hldGhlciB0aGUgc2hhcmQgaXMgY3VycmVudGx5IG9mZmxpbmUgb3Igbm90LlxuICAgIC8vIEVsc2UgYnVja2V0IGFuZCB0b2tlbiB3YWl0IHRpbWUganVzdCBnZXQgd2FzdGVkLlxuICAgIGF3YWl0IHRoaXMuY2hlY2tPZmZsaW5lKGhpZ2hQcmlvcml0eSlcblxuICAgIGF3YWl0IHRoaXMuYnVja2V0LmFjcXVpcmUoMSwgaGlnaFByaW9yaXR5KVxuXG4gICAgLy8gSXQncyBwb3NzaWJsZSwgdGhhdCB0aGUgc2hhcmQgd2VudCBvZmZsaW5lIGFmdGVyIGEgdG9rZW4gaGFzIGJlZW4gYWNxdWlyZWQgZnJvbSB0aGUgYnVja2V0LlxuICAgIGF3YWl0IHRoaXMuY2hlY2tPZmZsaW5lKGhpZ2hQcmlvcml0eSlcblxuICAgIHRoaXMuc29ja2V0Py5zZW5kKEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpKVxuICB9XG5cbiAgLyoqIFNodXRkb3duIHRoZSB0aGlzLiBGb3JjZWZ1bGx5IGRpc2Nvbm5lY3QgdGhlIHNoYXJkIGZyb20gRGlzY29yZC4gVGhlIHNoYXJkIG1heSBub3QgYXR0ZW1wdCB0byByZWNvbm5lY3Qgd2l0aCBEaXNjb3JkLiAqL1xuICBhc3luYyBzaHV0ZG93bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmNsb3NlKFNoYXJkU29ja2V0Q2xvc2VDb2Rlcy5TaHV0ZG93biwgJ1NoYXJkIHNodXR0aW5nIGRvd24uJylcbiAgICB0aGlzLnN0YXRlID0gU2hhcmRTdGF0ZS5PZmZsaW5lXG4gIH1cblxuICAvKiogSGFuZGxlIGEgZ2F0ZXdheSBjb25uZWN0aW9uIGNsb3NlLiAqL1xuICBhc3luYyBoYW5kbGVDbG9zZShjbG9zZTogV2ViU29ja2V0LkNsb3NlRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyAgIGdhdGV3YXkuZGVidWcoXCJHVyBDTE9TRURcIiwgeyBzaGFyZElkLCBwYXlsb2FkOiBldmVudCB9KTtcblxuICAgIHRoaXMuc3RvcEhlYXJ0YmVhdGluZygpXG5cbiAgICBzd2l0Y2ggKGNsb3NlLmNvZGUpIHtcbiAgICAgIGNhc2UgU2hhcmRTb2NrZXRDbG9zZUNvZGVzLlRlc3RpbmdGaW5pc2hlZDoge1xuICAgICAgICB0aGlzLnN0YXRlID0gU2hhcmRTdGF0ZS5PZmZsaW5lXG4gICAgICAgIHRoaXMuZXZlbnRzLmRpc2Nvbm5lY3RlZD8uKHRoaXMpXG5cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICAvLyBPbiB0aGVzZSBjb2RlcyBhIG1hbnVhbCBzdGFydCB3aWxsIGJlIGRvbmUuXG4gICAgICBjYXNlIFNoYXJkU29ja2V0Q2xvc2VDb2Rlcy5TaHV0ZG93bjpcbiAgICAgIGNhc2UgU2hhcmRTb2NrZXRDbG9zZUNvZGVzLlJlSWRlbnRpZnlpbmc6XG4gICAgICBjYXNlIFNoYXJkU29ja2V0Q2xvc2VDb2Rlcy5SZXNoYXJkZWQ6XG4gICAgICBjYXNlIFNoYXJkU29ja2V0Q2xvc2VDb2Rlcy5SZXN1bWVDbG9zaW5nT2xkQ29ubmVjdGlvbjpcbiAgICAgIGNhc2UgU2hhcmRTb2NrZXRDbG9zZUNvZGVzLlpvbWJpZWRDb25uZWN0aW9uOiB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBTaGFyZFN0YXRlLkRpc2Nvbm5lY3RlZFxuICAgICAgICB0aGlzLmV2ZW50cy5kaXNjb25uZWN0ZWQ/Lih0aGlzKVxuXG4gICAgICAgIC8vIGdhdGV3YXkuZGVidWcoXCJHVyBDTE9TRURfUkVDT05ORUNUXCIsIHsgc2hhcmRJZCwgcGF5bG9hZDogZXZlbnQgfSk7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgLy8gR2F0ZXdheSBjb25uZWN0aW9uIGNsb3NlcyB3aGljaCByZXF1aXJlIGEgbmV3IGlkZW50aWZ5LlxuICAgICAgY2FzZSBHYXRld2F5Q2xvc2VFdmVudENvZGVzLlVua25vd25PcGNvZGU6XG4gICAgICBjYXNlIEdhdGV3YXlDbG9zZUV2ZW50Q29kZXMuTm90QXV0aGVudGljYXRlZDpcbiAgICAgIGNhc2UgR2F0ZXdheUNsb3NlRXZlbnRDb2Rlcy5JbnZhbGlkU2VxOlxuICAgICAgY2FzZSBHYXRld2F5Q2xvc2VFdmVudENvZGVzLlJhdGVMaW1pdGVkOlxuICAgICAgY2FzZSBHYXRld2F5Q2xvc2VFdmVudENvZGVzLlNlc3Npb25UaW1lZE91dDoge1xuICAgICAgICB0aGlzLnN0YXRlID0gU2hhcmRTdGF0ZS5JZGVudGlmeWluZ1xuICAgICAgICB0aGlzLmV2ZW50cy5kaXNjb25uZWN0ZWQ/Lih0aGlzKVxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmlkZW50aWZ5KClcbiAgICAgIH1cbiAgICAgIC8vIFdoZW4gdGhlc2UgY29kZXMgYXJlIHJlY2VpdmVkIHNvbWV0aGluZyB3ZW50IHJlYWxseSB3cm9uZy5cbiAgICAgIC8vIE9uIHRob3NlIHdlIGNhbm5vdCBzdGFydCBhIHJlY29ubmVjdCBhdHRlbXB0LlxuICAgICAgY2FzZSBHYXRld2F5Q2xvc2VFdmVudENvZGVzLkF1dGhlbnRpY2F0aW9uRmFpbGVkOlxuICAgICAgY2FzZSBHYXRld2F5Q2xvc2VFdmVudENvZGVzLkludmFsaWRTaGFyZDpcbiAgICAgIGNhc2UgR2F0ZXdheUNsb3NlRXZlbnRDb2Rlcy5TaGFyZGluZ1JlcXVpcmVkOlxuICAgICAgY2FzZSBHYXRld2F5Q2xvc2VFdmVudENvZGVzLkludmFsaWRBcGlWZXJzaW9uOlxuICAgICAgY2FzZSBHYXRld2F5Q2xvc2VFdmVudENvZGVzLkludmFsaWRJbnRlbnRzOlxuICAgICAgY2FzZSBHYXRld2F5Q2xvc2VFdmVudENvZGVzLkRpc2FsbG93ZWRJbnRlbnRzOiB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBTaGFyZFN0YXRlLk9mZmxpbmVcbiAgICAgICAgdGhpcy5ldmVudHMuZGlzY29ubmVjdGVkPy4odGhpcylcblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoY2xvc2UucmVhc29uIHx8ICdEaXNjb3JkIGdhdmUgbm8gcmVhc29uISBHRyEgWW91IGJyb2tlIERpc2NvcmQhJylcbiAgICAgIH1cbiAgICAgIC8vIEdhdGV3YXkgY29ubmVjdGlvbiBjbG9zZXMgb24gd2hpY2ggYSByZXN1bWUgaXMgYWxsb3dlZC5cbiAgICAgIGNhc2UgR2F0ZXdheUNsb3NlRXZlbnRDb2Rlcy5Vbmtub3duRXJyb3I6XG4gICAgICBjYXNlIEdhdGV3YXlDbG9zZUV2ZW50Q29kZXMuRGVjb2RlRXJyb3I6XG4gICAgICBjYXNlIEdhdGV3YXlDbG9zZUV2ZW50Q29kZXMuQWxyZWFkeUF1dGhlbnRpY2F0ZWQ6XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBTaGFyZFN0YXRlLlJlc3VtaW5nXG4gICAgICAgIHRoaXMuZXZlbnRzLmRpc2Nvbm5lY3RlZD8uKHRoaXMpXG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucmVzdW1lKClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogSGFuZGxlcyBhIGluY29taW5nIGdhdGV3YXkgcGFja2V0LiAqL1xuICBhc3luYyBoYW5kbGVEaXNjb3JkUGFja2V0KHBhY2tldDogRGlzY29yZEdhdGV3YXlQYXlsb2FkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gRWRnZSBjYXNlIHN0YXJ0OiBodHRwczovL2dpdGh1Yi5jb20vZGlzY29yZGVuby9kaXNjb3JkZW5vL2lzc3Vlcy8yMzExXG4gICAgdGhpcy5oZWFydC5sYXN0QWNrID0gRGF0ZS5ub3coKVxuICAgIC8vIE1hbnVhbGx5IGNhbGN1bGF0aW5nIHRoZSByb3VuZCB0cmlwIHRpbWUgZm9yIHVzZXJzIHdobyBuZWVkIGl0LlxuICAgIGlmICh0aGlzLmhlYXJ0Lmxhc3RCZWF0ICYmICF0aGlzLmhlYXJ0LmFja25vd2xlZGdlZCkge1xuICAgICAgdGhpcy5oZWFydC5ydHQgPSB0aGlzLmhlYXJ0Lmxhc3RBY2sgLSB0aGlzLmhlYXJ0Lmxhc3RCZWF0XG4gICAgfVxuICAgIHRoaXMuaGVhcnQuYWNrbm93bGVkZ2VkID0gdHJ1ZVxuICAgIC8vIEVkZ2UgY2FzZSBlbmQhXG5cbiAgICBzd2l0Y2ggKHBhY2tldC5vcCkge1xuICAgICAgY2FzZSBHYXRld2F5T3Bjb2Rlcy5IZWFydGJlYXQ6IHtcbiAgICAgICAgLy8gVE9ETzogY2FuIHRoaXMgYWN0dWFsbHkgaGFwcGVuXG4gICAgICAgIGlmICghdGhpcy5pc09wZW4oKSkgcmV0dXJuXG5cbiAgICAgICAgdGhpcy5oZWFydC5sYXN0QmVhdCA9IERhdGUubm93KClcbiAgICAgICAgLy8gRGlzY29yZCByYW5kb21seSBzZW5kcyB0aGlzIHJlcXVpcmluZyBhbiBpbW1lZGlhdGUgaGVhcnRiZWF0IGJhY2suXG4gICAgICAgIC8vIFVzaW5nIGEgZGlyZWN0IHNvY2tldC5zZW5kIGNhbGwgaGVyZSBiZWNhdXNlIGhlYXJ0YmVhdCByZXF1ZXN0cyBhcmUgcmVzZXJ2ZWQgYnkgdXMuXG4gICAgICAgIHRoaXMuc29ja2V0Py5zZW5kKFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIG9wOiBHYXRld2F5T3Bjb2Rlcy5IZWFydGJlYXQsXG4gICAgICAgICAgICBkOiB0aGlzLnByZXZpb3VzU2VxdWVuY2VOdW1iZXIsXG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgICAgdGhpcy5ldmVudHMuaGVhcnRiZWF0Py4odGhpcylcblxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSBHYXRld2F5T3Bjb2Rlcy5IZWxsbzoge1xuICAgICAgICBjb25zdCBpbnRlcnZhbCA9IChwYWNrZXQuZCBhcyBEaXNjb3JkSGVsbG8pLmhlYXJ0YmVhdF9pbnRlcnZhbFxuXG4gICAgICAgIHRoaXMuc3RhcnRIZWFydGJlYXRpbmcoaW50ZXJ2YWwpXG5cbiAgICAgICAgaWYgKHRoaXMuc3RhdGUgIT09IFNoYXJkU3RhdGUuUmVzdW1pbmcpIHtcbiAgICAgICAgICAvLyBIRUxMTyBoYXMgYmVlbiBzZW5kIG9uIGEgbm9uIHJlc3VtZSBhY3Rpb24uXG4gICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoZSBzaGFyZCBzdGFydHMgYSBuZXcgc2Vzc2lvbixcbiAgICAgICAgICAvLyB0aGVyZWZvcmUgdGhlIHJhdGUgbGltaXQgaW50ZXJ2YWwgaGFzIGJlZW4gcmVzZXQgdG9vLlxuICAgICAgICAgIHRoaXMuYnVja2V0ID0gY3JlYXRlTGVha3lCdWNrZXQoe1xuICAgICAgICAgICAgbWF4OiB0aGlzLmNhbGN1bGF0ZVNhZmVSZXF1ZXN0cygpLFxuICAgICAgICAgICAgcmVmaWxsSW50ZXJ2YWw6IDYwMDAwLFxuICAgICAgICAgICAgcmVmaWxsQW1vdW50OiB0aGlzLmNhbGN1bGF0ZVNhZmVSZXF1ZXN0cygpLFxuICAgICAgICAgICAgLy8gV2FpdGluZyBhY3F1aXJlcyBzaG91bGQgbm90IGJlIGxvc3Qgb24gYSByZS1pZGVudGlmeS5cbiAgICAgICAgICAgIHdhaXRpbmc6IHRoaXMuYnVja2V0LndhaXRpbmcsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZXZlbnRzLmhlbGxvPy4odGhpcylcblxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSBHYXRld2F5T3Bjb2Rlcy5IZWFydGJlYXRBQ0s6IHtcbiAgICAgICAgdGhpcy5ldmVudHMuaGVhcnRiZWF0QWNrPy4odGhpcylcblxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSBHYXRld2F5T3Bjb2Rlcy5SZWNvbm5lY3Q6IHtcbiAgICAgICAgLy8gICBnYXRld2F5LmRlYnVnKFwiR1cgUkVDT05ORUNUXCIsIHsgc2hhcmRJZCB9KTtcblxuICAgICAgICB0aGlzLmV2ZW50cy5yZXF1ZXN0ZWRSZWNvbm5lY3Q/Lih0aGlzKVxuXG4gICAgICAgIGF3YWl0IHRoaXMucmVzdW1lKClcblxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSBHYXRld2F5T3Bjb2Rlcy5JbnZhbGlkU2Vzc2lvbjoge1xuICAgICAgICAvLyAgIGdhdGV3YXkuZGVidWcoXCJHVyBJTlZBTElEX1NFU1NJT05cIiwgeyBzaGFyZElkLCBwYXlsb2FkOiBwYWNrZXQgfSk7XG4gICAgICAgIGNvbnN0IHJlc3VtYWJsZSA9IHBhY2tldC5kIGFzIGJvb2xlYW5cblxuICAgICAgICB0aGlzLmV2ZW50cy5pbnZhbGlkU2Vzc2lvbj8uKHRoaXMsIHJlc3VtYWJsZSlcblxuICAgICAgICAvLyBXZSBuZWVkIHRvIHdhaXQgZm9yIGEgcmFuZG9tIGFtb3VudCBvZiB0aW1lIGJldHdlZW4gMSBhbmQgNVxuICAgICAgICAvLyBSZWZlcmVuY2U6IGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5I3Jlc3VtaW5nXG4gICAgICAgIGF3YWl0IGRlbGF5KE1hdGguZmxvb3IoKE1hdGgucmFuZG9tKCkgKiA0ICsgMSkgKiAxMDAwKSlcblxuICAgICAgICB0aGlzLnJlc29sdmVzLmdldCgnSU5WQUxJRF9TRVNTSU9OJyk/LihwYWNrZXQpXG4gICAgICAgIHRoaXMucmVzb2x2ZXMuZGVsZXRlKCdJTlZBTElEX1NFU1NJT04nKVxuXG4gICAgICAgIC8vIFdoZW4gcmVzdW1hYmxlIGlzIGZhbHNlIHdlIG5lZWQgdG8gcmUtaWRlbnRpZnlcbiAgICAgICAgaWYgKCFyZXN1bWFibGUpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmlkZW50aWZ5KClcblxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgc2Vzc2lvbiBpcyBpbnZhbGlkIGJ1dCBhcHBhcmVudGx5IGl0IGlzIHJlc3VtYWJsZVxuICAgICAgICBhd2FpdCB0aGlzLnJlc3VtZSgpXG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFja2V0LnQgPT09ICdSRVNVTUVEJykge1xuICAgICAgLy8gZ2F0ZXdheS5kZWJ1ZyhcIkdXIFJFU1VNRURcIiwgeyBzaGFyZElkIH0pO1xuXG4gICAgICB0aGlzLnN0YXRlID0gU2hhcmRTdGF0ZS5Db25uZWN0ZWRcbiAgICAgIHRoaXMuZXZlbnRzLnJlc3VtZWQ/Lih0aGlzKVxuXG4gICAgICAvLyBDb250aW51ZSB0aGUgcmVxdWVzdHMgd2hpY2ggaGF2ZSBiZWVuIHF1ZXVlZCBzaW5jZSB0aGUgc2hhcmQgd2VudCBvZmZsaW5lLlxuICAgICAgdGhpcy5vZmZsaW5lU2VuZFF1ZXVlLm1hcCgocmVzb2x2ZSkgPT4gcmVzb2x2ZSgpKVxuXG4gICAgICB0aGlzLnJlc29sdmVzLmdldCgnUkVTVU1FRCcpPy4ocGFja2V0KVxuICAgICAgdGhpcy5yZXNvbHZlcy5kZWxldGUoJ1JFU1VNRUQnKVxuICAgIH0gZWxzZSBpZiAocGFja2V0LnQgPT09ICdSRUFEWScpIHtcbiAgICAgIC8vIEltcG9ydGFudCBmb3IgZnV0dXJlIHJlc3VtZXMuXG5cbiAgICAgIGNvbnN0IHBheWxvYWQgPSBwYWNrZXQuZCBhcyBEaXNjb3JkUmVhZHlcblxuICAgICAgdGhpcy5yZXN1bWVHYXRld2F5VXJsID0gcGF5bG9hZC5yZXN1bWVfZ2F0ZXdheV91cmxcblxuICAgICAgdGhpcy5zZXNzaW9uSWQgPSBwYXlsb2FkLnNlc3Npb25faWRcbiAgICAgIHRoaXMuc3RhdGUgPSBTaGFyZFN0YXRlLkNvbm5lY3RlZFxuXG4gICAgICAvLyBDb250aW51ZSB0aGUgcmVxdWVzdHMgd2hpY2ggaGF2ZSBiZWVuIHF1ZXVlZCBzaW5jZSB0aGUgc2hhcmQgd2VudCBvZmZsaW5lLlxuICAgICAgLy8gSW1wb3J0YW50IHdoZW4gdGhpcyBpcyBhIHJlLWlkZW50aWZ5XG4gICAgICB0aGlzLm9mZmxpbmVTZW5kUXVldWUubWFwKChyZXNvbHZlKSA9PiByZXNvbHZlKCkpXG5cbiAgICAgIHRoaXMucmVzb2x2ZXMuZ2V0KCdSRUFEWScpPy4ocGFja2V0KVxuICAgICAgdGhpcy5yZXNvbHZlcy5kZWxldGUoJ1JFQURZJylcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgdGhlIHNlcXVlbmNlIG51bWJlciBpZiBpdCBpcyBwcmVzZW50XG4gICAgLy8gYHNgIGNhbiBiZSBlaXRoZXIgYG51bGxgIG9yIGEgYG51bWJlcmAuXG4gICAgLy8gSW4gb3JkZXIgdG8gcHJldmVudCB1cGRhdGUgbWlzc2VzIHdoZW4gYHNgIGlzIGAwYCB3ZSBjaGVjayBhZ2FpbnN0IG51bGwuXG4gICAgaWYgKHBhY2tldC5zICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnByZXZpb3VzU2VxdWVuY2VOdW1iZXIgPSBwYWNrZXQuc1xuICAgIH1cblxuICAgIC8vIFRoZSBuZWNlc3NhcnkgaGFuZGxpbmcgcmVxdWlyZWQgZm9yIHRoZSBTaGFyZHMgY29ubmVjdGlvbiBoYXMgYmVlbiBmaW5pc2hlZC5cbiAgICAvLyBOb3cgdGhlIGV2ZW50IGNhbiBiZSBzYWZlbHkgZm9yd2FyZGVkLlxuICAgIHRoaXMuZXZlbnRzLm1lc3NhZ2U/Lih0aGlzLCBjYW1lbGl6ZShwYWNrZXQpKVxuICB9XG5cbiAgLyoqIEhhbmRsZSBhbiBpbmNvbWluZyBnYXRld2F5IG1lc3NhZ2UuICovXG4gIGFzeW5jIGhhbmRsZU1lc3NhZ2UobWVzc2FnZTogV2ViU29ja2V0Lk1lc3NhZ2VFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCBwcmVQcm9jZXNzTWVzc2FnZSA9IG1lc3NhZ2UuZGF0YVxuXG4gICAgLy8gSWYgbWVzc2FnZSBjb21wcmVzc2lvbiBpcyBlbmFibGVkLFxuICAgIC8vIERpc2NvcmQgbWlnaHQgc2VuZCB6bGliIGNvbXByZXNzZWQgcGF5bG9hZHMuXG4gICAgaWYgKHRoaXMuZ2F0ZXdheUNvbmZpZy5jb21wcmVzcyAmJiBwcmVQcm9jZXNzTWVzc2FnZSBpbnN0YW5jZW9mIEJsb2IpIHtcbiAgICAgIHByZVByb2Nlc3NNZXNzYWdlID0gaW5mbGF0ZVN5bmMoYXdhaXQgcHJlUHJvY2Vzc01lc3NhZ2UuYXJyYXlCdWZmZXIoKSkudG9TdHJpbmcoKVxuICAgIH1cblxuICAgIC8vIFNhZmVndWFyZCBpbmNhc2UgZGVjb21wcmVzc2lvbiBmYWlsZWQgdG8gbWFrZSBhIHN0cmluZy5cbiAgICBpZiAodHlwZW9mIHByZVByb2Nlc3NNZXNzYWdlICE9PSAnc3RyaW5nJykgcmV0dXJuXG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5oYW5kbGVEaXNjb3JkUGFja2V0KEpTT04ucGFyc2UocHJlUHJvY2Vzc01lc3NhZ2UpIGFzIERpc2NvcmRHYXRld2F5UGF5bG9hZClcbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVycmlkZSBpbiBvcmRlciB0byBtYWtlIHRoZSBzaGFyZHMgcHJlc2VuY2UuXG4gICAqIGFzeW5jIGluIGNhc2UgZGV2cyBjcmVhdGUgdGhlIHByZXNlbmNlIGJhc2VkIG9uIGVnLiBkYXRhYmFzZSB2YWx1ZXMuXG4gICAqIFBhc3NpbmcgdGhlIHNoYXJkJ3MgaWQgdGhlcmUgdG8gbWFrZSBpdCBlYXNpZXIgZm9yIHRoZSBkZXYgdG8gdXNlIHRoaXMgZnVuY3Rpb24uXG4gICAqL1xuICBhc3luYyBtYWtlUHJlc2VuY2UoKTogUHJvbWlzZTxCb3RTdGF0dXNVcGRhdGUgfCB1bmRlZmluZWQ+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1yZXR1cm5cbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qKiBUaGlzIGZ1bmN0aW9uIGNvbW11bmljYXRlcyB3aXRoIHRoZSBtYW5hZ2VtZW50IHByb2Nlc3MsIGluIG9yZGVyIHRvIGtub3cgd2hldGhlciBpdHMgZnJlZSB0byBpZGVudGlmeS4gV2hlbiB0aGlzIGZ1bmN0aW9uIHJlc29sdmVzLCB0aGlzIG1lYW5zIHRoYXQgdGhlIHNoYXJkIGlzIGFsbG93ZWQgdG8gc2VuZCBhbiBpZGVudGlmeSBwYXlsb2FkIHRvIGRpc2NvcmQuICovXG4gIGFzeW5jIHJlcXVlc3RJZGVudGlmeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBUT0RPOiBob3cgdG8gaGFuZGxlIHRoaXNcbiAgICAvLyByZXR1cm4gYXdhaXQgb3B0aW9ucy5yZXF1ZXN0SWRlbnRpZnkodGhpcy5pZClcbiAgfVxuXG4gIC8qKiBTdGFydCBzZW5kaW5nIGhlYXJ0YmVhdCBwYXlsb2FkcyB0byBEaXNjb3JkIGluIHRoZSBwcm92aWRlZCBpbnRlcnZhbC4gKi9cbiAgc3RhcnRIZWFydGJlYXRpbmcoaW50ZXJ2YWw6IG51bWJlcik6IHZvaWQge1xuICAgIC8vICAgZ2F0ZXdheS5kZWJ1ZyhcIkdXIEhFQVJUQkVBVElOR19TVEFSVEVEXCIsIHsgc2hhcmRJZCwgaW50ZXJ2YWwgfSk7XG5cbiAgICB0aGlzLmhlYXJ0LmludGVydmFsID0gaW50ZXJ2YWxcblxuICAgIC8vIE9ubHkgc2V0IHRoZSBzaGFyZCdzIHN0YXRlIHRvIGBVbmlkZW50aWZpZWRgXG4gICAgLy8gaWYgaGVhcnRiZWF0aW5nIGhhcyBub3QgYmVlbiBzdGFydGVkIGR1ZSB0byBhbiBpZGVudGlmeSBvciByZXN1bWUgYWN0aW9uLlxuICAgIGlmIChbU2hhcmRTdGF0ZS5EaXNjb25uZWN0ZWQsIFNoYXJkU3RhdGUuT2ZmbGluZV0uaW5jbHVkZXModGhpcy5zdGF0ZSkpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSBTaGFyZFN0YXRlLlVuaWRlbnRpZmllZFxuICAgIH1cblxuICAgIC8vIFRoZSBmaXJzdCBoZWFydGJlYXQgbmVlZHMgdG8gYmUgc2VuZCB3aXRoIGEgcmFuZG9tIGRlbGF5IGJldHdlZW4gYDBgIGFuZCBgaW50ZXJ2YWxgXG4gICAgLy8gVXNpbmcgYSBgc2V0VGltZW91dChfLCBqaXR0ZXIpYCBoZXJlIHRvIGFjY29tcGxpc2ggdGhhdC5cbiAgICAvLyBgTWF0aC5yYW5kb20oKWAgY2FuIGJlIGAwYCBzbyB3ZSB1c2UgYDAuNWAgaWYgdGhpcyBoYXBwZW5zXG4gICAgLy8gUmVmZXJlbmNlOiBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy90b3BpY3MvZ2F0ZXdheSNoZWFydGJlYXRpbmdcbiAgICBjb25zdCBqaXR0ZXIgPSBNYXRoLmNlaWwodGhpcy5oZWFydC5pbnRlcnZhbCAqIChNYXRoLnJhbmRvbSgpIHx8IDAuNSkpXG4gICAgdGhpcy5oZWFydC50aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5pc09wZW4oKSkgcmV0dXJuXG5cbiAgICAgIC8vIFVzaW5nIGEgZGlyZWN0IHNvY2tldC5zZW5kIGNhbGwgaGVyZSBiZWNhdXNlIGhlYXJ0YmVhdCByZXF1ZXN0cyBhcmUgcmVzZXJ2ZWQgYnkgdXMuXG4gICAgICB0aGlzLnNvY2tldD8uc2VuZChcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIG9wOiBHYXRld2F5T3Bjb2Rlcy5IZWFydGJlYXQsXG4gICAgICAgICAgZDogdGhpcy5wcmV2aW91c1NlcXVlbmNlTnVtYmVyLFxuICAgICAgICB9KSxcbiAgICAgIClcblxuICAgICAgdGhpcy5oZWFydC5sYXN0QmVhdCA9IERhdGUubm93KClcbiAgICAgIHRoaXMuaGVhcnQuYWNrbm93bGVkZ2VkID0gZmFsc2VcblxuICAgICAgLy8gQWZ0ZXIgdGhlIHJhbmRvbSBoZWFydGJlYXQgaml0dGVyIHdlIGNhbiBzdGFydCBhIG5vcm1hbCBpbnRlcnZhbC5cbiAgICAgIHRoaXMuaGVhcnQuaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT3BlbigpKSByZXR1cm5cbiAgICAgICAgLy8gZ2F0ZXdheS5kZWJ1ZyhcIkdXIERFQlVHXCIsIGBSdW5uaW5nIHNldEludGVydmFsIGluIGhlYXJ0YmVhdCBmaWxlLiBTaGFyZDogJHtzaGFyZElkfWApO1xuXG4gICAgICAgIC8vIGdhdGV3YXkuZGVidWcoXCJHVyBIRUFSVEJFQVRJTkdcIiwgeyBzaGFyZElkLCBzaGFyZDogY3VycmVudFNoYXJkIH0pO1xuXG4gICAgICAgIC8vIFRoZSBTaGFyZCBkaWQgbm90IHJlY2VpdmUgYSBoZWFydGJlYXQgQUNLIGZyb20gRGlzY29yZCBpbiB0aW1lLFxuICAgICAgICAvLyB0aGVyZWZvcmUgd2UgaGF2ZSB0byBhc3N1bWUgdGhhdCB0aGUgY29ubmVjdGlvbiBoYXMgZmFpbGVkIG9yIGdvdCBcInpvbWJpZWRcIi5cbiAgICAgICAgLy8gVGhlIFNoYXJkIG5lZWRzIHRvIHN0YXJ0IGEgcmUtaWRlbnRpZnkgYWN0aW9uIGFjY29yZGluZ2x5LlxuICAgICAgICAvLyBSZWZlcmVuY2U6IGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5I2hlYXJ0YmVhdGluZy1leGFtcGxlLWdhdGV3YXktaGVhcnRiZWF0LWFja1xuICAgICAgICBpZiAoIXRoaXMuaGVhcnQuYWNrbm93bGVkZ2VkKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZShTaGFyZFNvY2tldENsb3NlQ29kZXMuWm9tYmllZENvbm5lY3Rpb24sICdab21iaWVkIGNvbm5lY3Rpb24sIGRpZCBub3QgcmVjZWl2ZSBhbiBoZWFydGJlYXQgQUNLIGluIHRpbWUuJylcblxuICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmlkZW50aWZ5KClcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGVhcnQuYWNrbm93bGVkZ2VkID0gZmFsc2VcblxuICAgICAgICAvLyBVc2luZyBhIGRpcmVjdCBzb2NrZXQuc2VuZCBjYWxsIGhlcmUgYmVjYXVzZSBoZWFydGJlYXQgcmVxdWVzdHMgYXJlIHJlc2VydmVkIGJ5IHVzLlxuICAgICAgICB0aGlzLnNvY2tldD8uc2VuZChcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBvcDogR2F0ZXdheU9wY29kZXMuSGVhcnRiZWF0LFxuICAgICAgICAgICAgZDogdGhpcy5wcmV2aW91c1NlcXVlbmNlTnVtYmVyLFxuICAgICAgICAgIH0pLFxuICAgICAgICApXG5cbiAgICAgICAgdGhpcy5oZWFydC5sYXN0QmVhdCA9IERhdGUubm93KClcblxuICAgICAgICB0aGlzLmV2ZW50cy5oZWFydGJlYXQ/Lih0aGlzKVxuICAgICAgfSwgdGhpcy5oZWFydC5pbnRlcnZhbClcbiAgICB9LCBqaXR0ZXIpXG4gIH1cblxuICAvKiogU3RvcCB0aGUgaGVhcnRiZWF0aW5nIHByb2Nlc3Mgd2l0aCBkaXNjb3JkLiAqL1xuICBzdG9wSGVhcnRiZWF0aW5nKCk6IHZvaWQge1xuICAgIC8vIENsZWFyIHRoZSByZWd1bGFyIGhlYXJ0YmVhdCBpbnRlcnZhbC5cbiAgICBjbGVhckludGVydmFsKHRoaXMuaGVhcnQuaW50ZXJ2YWxJZClcbiAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIFNoYXJkIGdvdCBjbG9zZWQgYmVmb3JlIHRoZSBmaXJzdCBqaXR0ZXJlZCBoZWFydGJlYXQuXG4gICAgLy8gVG8gZ28gc2FmZSB3ZSBzaG91bGQgY2xlYXIgdGhlIHJlbGF0ZWQgdGltZW91dCB0b28uXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuaGVhcnQudGltZW91dElkKVxuICB9XG5cbiAgLyoqXG4gICAqIENvbm5lY3RzIHRoZSBib3QgdXNlciB0byBhIHZvaWNlIG9yIHN0YWdlIGNoYW5uZWwuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gc2VuZHMgdGhlIF9VcGRhdGUgVm9pY2UgU3RhdGVfIGdhdGV3YXkgY29tbWFuZCBvdmVyIHRoZSBnYXRld2F5IGJlaGluZCB0aGUgc2NlbmVzLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdGhlIHZvaWNlIGNoYW5uZWwgdG8gbGVhdmUgaXMgaW4uXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgeW91IHdhbnQgdG8gam9pbi5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBDT05ORUNUYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9Wb2ljZSBTdGF0ZSBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5I3VwZGF0ZS12b2ljZS1zdGF0ZX1cbiAgICovXG4gIGFzeW5jIGpvaW5Wb2ljZUNoYW5uZWwoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIGNoYW5uZWxJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM/OiBBdExlYXN0T25lPE9taXQ8VXBkYXRlVm9pY2VTdGF0ZSwgJ2d1aWxkSWQnIHwgJ2NoYW5uZWxJZCc+PixcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nZ2VyLmRlYnVnKGBbU2hhcmRdIGpvaW5Wb2ljZUNoYW5uZWwgZ3VpbGRJZDogJHtndWlsZElkfSBjaGFubmVsSWQ6ICR7Y2hhbm5lbElkfWApXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuc2VuZCh7XG4gICAgICBvcDogR2F0ZXdheU9wY29kZXMuVm9pY2VTdGF0ZVVwZGF0ZSxcbiAgICAgIGQ6IHtcbiAgICAgICAgZ3VpbGRfaWQ6IGd1aWxkSWQudG9TdHJpbmcoKSxcbiAgICAgICAgY2hhbm5lbF9pZDogY2hhbm5lbElkLnRvU3RyaW5nKCksXG4gICAgICAgIHNlbGZfbXV0ZTogQm9vbGVhbihvcHRpb25zPy5zZWxmTXV0ZSksXG4gICAgICAgIHNlbGZfZGVhZjogb3B0aW9ucz8uc2VsZkRlYWYgPz8gdHJ1ZSxcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBFZGl0cyB0aGUgYm90IHN0YXR1cyBpbiBhbGwgc2hhcmRzIHRoYXQgdGhpcyBnYXRld2F5IG1hbmFnZXMuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBzdGF0dXMgZGF0YSB0byBzZXQgdGhlIGJvdHMgc3RhdHVzIHRvLlxuICAgKiBAcmV0dXJucyBQcm9taXNlPHZvaWQ+XG4gICAqL1xuICBhc3luYyBlZGl0Qm90U3RhdHVzKGRhdGE6IFN0YXR1c1VwZGF0ZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvZ2dlci5kZWJ1ZyhgW1NoYXJkXSBlZGl0Qm90U3RhdHVzIGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9YClcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5lZGl0U2hhcmRTdGF0dXMoZGF0YSlcbiAgfVxuXG4gIC8qKlxuICAgKiBFZGl0cyB0aGUgYm90J3Mgc3RhdHVzIG9uIG9uZSBzaGFyZC5cbiAgICpcbiAgICogQHBhcmFtIHNoYXJkSWQgVGhlIHNoYXJkIGlkIHRvIGVkaXQgdGhlIHN0YXR1cyBmb3IuXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBzdGF0dXMgZGF0YSB0byBzZXQgdGhlIGJvdHMgc3RhdHVzIHRvLlxuICAgKiBAcmV0dXJucyBQcm9taXNlPHZvaWQ+XG4gICAqL1xuICBhc3luYyBlZGl0U2hhcmRTdGF0dXMoZGF0YTogU3RhdHVzVXBkYXRlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nZ2VyLmRlYnVnKGBbU2hhcmRdIGVkaXRTaGFyZFN0YXR1cyBzaGFyZElkOiAke3RoaXMuaWR9IC0+IGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9YClcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zZW5kKHtcbiAgICAgIG9wOiBHYXRld2F5T3Bjb2Rlcy5QcmVzZW5jZVVwZGF0ZSxcbiAgICAgIGQ6IHtcbiAgICAgICAgc2luY2U6IG51bGwsXG4gICAgICAgIGFmazogZmFsc2UsXG4gICAgICAgIGFjdGl2aXRpZXM6IGRhdGEuYWN0aXZpdGllcyxcbiAgICAgICAgc3RhdHVzOiBkYXRhLnN0YXR1cyxcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBsaXN0IG9mIG1lbWJlcnMgZm9yIGEgZ3VpbGQgb3ZlciB0aGUgZ2F0ZXdheS5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbGlzdCBvZiBtZW1iZXJzIGZvci5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIHRoZSBtZW1iZXJzLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBJZiByZXF1ZXN0aW5nIHRoZSBlbnRpcmUgbWVtYmVyIGxpc3Q6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBHVUlMRF9NRU1CRVJTYCBpbnRlbnQuXG4gICAqXG4gICAqIElmIHJlcXVlc3RpbmcgcHJlc2VuY2VzICh7QGxpbmsgUmVxdWVzdEd1aWxkTWVtYmVycy5wcmVzZW5jZXMgfCBwcmVzZW5jZXN9IHNldCB0byBgdHJ1ZWApOlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgR1VJTERfUFJFU0VOQ0VTYCBpbnRlbnQuXG4gICAqXG4gICAqIElmIHJlcXVlc3RpbmcgYSBwcmVmaXggKHtAbGluayBSZXF1ZXN0R3VpbGRNZW1iZXJzLnF1ZXJ5IHwgcXVlcnl9IG5vbi1gdW5kZWZpbmVkYCk6XG4gICAqIC0gUmV0dXJucyBhIG1heGltdW0gb2YgMTAwIG1lbWJlcnMuXG4gICAqXG4gICAqIElmIHJlcXVlc3RpbmcgYSB1c2VycyBieSBJRCAoe0BsaW5rIFJlcXVlc3RHdWlsZE1lbWJlcnMudXNlcklkcyB8IHVzZXJJZHN9IG5vbi1gdW5kZWZpbmVkYCk6XG4gICAqIC0gUmV0dXJucyBhIG1heGltdW0gb2YgMTAwIG1lbWJlcnMuXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIE1lbWJlcnMgQ2h1bmtfIGdhdGV3YXkgZXZlbnQgZm9yIGV2ZXJ5IDEwMDAgbWVtYmVycyBmZXRjaGVkLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy90b3BpY3MvZ2F0ZXdheSNyZXF1ZXN0LWd1aWxkLW1lbWJlcnN9XG4gICAqL1xuICBhc3luYyByZXF1ZXN0TWVtYmVycyhndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBPbWl0PFJlcXVlc3RHdWlsZE1lbWJlcnMsICdndWlsZElkJz4pOiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRNZW1iZXJbXT4+IHtcbiAgICAvLyBZb3UgY2FuIHJlcXVlc3QgMSBtZW1iZXIgd2l0aG91dCB0aGUgaW50ZW50XG4gICAgLy8gQ2hlY2sgaWYgaW50ZW50cyBpcyBub3QgMCBhcyBwcm94eSB3cyB3b24ndCBzZXQgaW50ZW50cyBpbiBvdGhlciBpbnN0YW5jZXNcbiAgICBpZiAodGhpcy5jb25uZWN0aW9uLmludGVudHMgJiYgKCFvcHRpb25zPy5saW1pdCB8fCBvcHRpb25zLmxpbWl0ID4gMSkgJiYgISh0aGlzLmNvbm5lY3Rpb24uaW50ZW50cyAmIEdhdGV3YXlJbnRlbnRzLkd1aWxkTWVtYmVycykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTUlTU0lOR19JTlRFTlRfR1VJTERfTUVNQkVSUycpXG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnM/LnVzZXJJZHM/Lmxlbmd0aCkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBbU2hhcmRdIHJlcXVlc3RNZW1iZXJzIGd1aWxkSWQ6ICR7Z3VpbGRJZH0gLT4gc2V0dGluZyB1c2VyIGxpbWl0IGJhc2VkIG9uIHVzZXJJZHMgbGVuZ3RoOiAke29wdGlvbnMudXNlcklkcy5sZW5ndGh9YClcbiAgICAgIG9wdGlvbnMubGltaXQgPSBvcHRpb25zLnVzZXJJZHMubGVuZ3RoXG4gICAgfVxuXG4gICAgY29uc3Qgbm9uY2UgPSBgJHtndWlsZElkfS0ke0RhdGUubm93KCl9YFxuXG4gICAgLy8gR2F0ZXdheSBkb2VzIG5vdCByZXF1aXJlIGNhY2hpbmcgdGhlc2UgcmVxdWVzdHMgc28gZGlyZWN0bHkgc2VuZCBhbmQgcmV0dXJuXG4gICAgaWYgKCF0aGlzLmNhY2hlLnJlcXVlc3RNZW1iZXJzPy5lbmFibGVkKSB7XG4gICAgICBsb2dnZXIuZGVidWcoYFtTaGFyZF0gcmVxdWVzdE1lbWJlcnMgZ3VpbGRJZDogJHtndWlsZElkfSAtPiBza2lwcGluZyBjYWNoZSAtPiBvcHRpb25zICR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucyl9YClcbiAgICAgIGF3YWl0IHRoaXMuc2VuZCh7XG4gICAgICAgIG9wOiBHYXRld2F5T3Bjb2Rlcy5SZXF1ZXN0R3VpbGRNZW1iZXJzLFxuICAgICAgICBkOiB7XG4gICAgICAgICAgZ3VpbGRfaWQ6IGd1aWxkSWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAvLyBJZiBhIHF1ZXJ5IGlzIHByb3ZpZGVkIHVzZSBpdCwgT1IgaWYgYSBsaW1pdCBpcyBOT1QgcHJvdmlkZWQgdXNlIFwiXCJcbiAgICAgICAgICBxdWVyeTogb3B0aW9ucz8ucXVlcnkgPz8gKG9wdGlvbnM/LmxpbWl0ID8gdW5kZWZpbmVkIDogJycpLFxuICAgICAgICAgIGxpbWl0OiBvcHRpb25zPy5saW1pdCA/PyAwLFxuICAgICAgICAgIHByZXNlbmNlczogb3B0aW9ucz8ucHJlc2VuY2VzID8/IGZhbHNlLFxuICAgICAgICAgIHVzZXJfaWRzOiBvcHRpb25zPy51c2VySWRzPy5tYXAoKGlkKSA9PiBpZC50b1N0cmluZygpKSxcbiAgICAgICAgICBub25jZSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICByZXR1cm4gW11cbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIHRoaXMuY2FjaGUucmVxdWVzdE1lbWJlcnM/LnBlbmRpbmcuc2V0KG5vbmNlLCB7IG5vbmNlLCByZXNvbHZlLCBtZW1iZXJzOiBbXSB9KVxuXG4gICAgICBsb2dnZXIuZGVidWcoYFtTaGFyZF0gcmVxdWVzdE1lbWJlcnMgZ3VpbGRJZDogJHtndWlsZElkfSAtPiByZXF1ZXN0aW5nIG1lbWJlcnMgLT4gZGF0YTogJHtKU09OLnN0cmluZ2lmeShvcHRpb25zKX1gKVxuICAgICAgdGhpcy5zZW5kKHtcbiAgICAgICAgb3A6IEdhdGV3YXlPcGNvZGVzLlJlcXVlc3RHdWlsZE1lbWJlcnMsXG4gICAgICAgIGQ6IHtcbiAgICAgICAgICBndWlsZF9pZDogZ3VpbGRJZC50b1N0cmluZygpLFxuICAgICAgICAgIC8vIElmIGEgcXVlcnkgaXMgcHJvdmlkZWQgdXNlIGl0LCBPUiBpZiBhIGxpbWl0IGlzIE5PVCBwcm92aWRlZCB1c2UgXCJcIlxuICAgICAgICAgIHF1ZXJ5OiBvcHRpb25zPy5xdWVyeSA/PyAob3B0aW9ucz8ubGltaXQgPyB1bmRlZmluZWQgOiAnJyksXG4gICAgICAgICAgbGltaXQ6IG9wdGlvbnM/LmxpbWl0ID8/IDAsXG4gICAgICAgICAgcHJlc2VuY2VzOiBvcHRpb25zPy5wcmVzZW5jZXMgPz8gZmFsc2UsXG4gICAgICAgICAgdXNlcl9pZHM6IG9wdGlvbnM/LnVzZXJJZHM/Lm1hcCgoaWQpID0+IGlkLnRvU3RyaW5nKCkpLFxuICAgICAgICAgIG5vbmNlLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIExlYXZlcyB0aGUgdm9pY2UgY2hhbm5lbCB0aGUgYm90IHVzZXIgaXMgY3VycmVudGx5IGluLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHNlbmRzIHRoZSBfVXBkYXRlIFZvaWNlIFN0YXRlXyBnYXRld2F5IGNvbW1hbmQgb3ZlciB0aGUgZ2F0ZXdheSBiZWhpbmQgdGhlIHNjZW5lcy5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRoZSB2b2ljZSBjaGFubmVsIHRvIGxlYXZlIGlzIGluLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBGaXJlcyBhIF9Wb2ljZSBTdGF0ZSBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5I3VwZGF0ZS12b2ljZS1zdGF0ZX1cbiAgICovXG4gIGFzeW5jIGxlYXZlVm9pY2VDaGFubmVsKGd1aWxkSWQ6IEJpZ1N0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvZ2dlci5kZWJ1ZyhgW1NoYXJkXSBsZWF2ZVZvaWNlQ2hhbm5lbCBndWlsZElkOiAke2d1aWxkSWR9IFNoYXJkICR7dGhpcy5pZH1gKVxuICAgIHJldHVybiBhd2FpdCB0aGlzLnNlbmQoe1xuICAgICAgb3A6IEdhdGV3YXlPcGNvZGVzLlZvaWNlU3RhdGVVcGRhdGUsXG4gICAgICBkOiB7XG4gICAgICAgIGd1aWxkX2lkOiBndWlsZElkLnRvU3RyaW5nKCksXG4gICAgICAgIGNoYW5uZWxfaWQ6IG51bGwsXG4gICAgICAgIHNlbGZfbXV0ZTogZmFsc2UsXG4gICAgICAgIHNlbGZfZGVhZjogZmFsc2UsXG4gICAgICB9LFxuICAgIH0pXG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZENyZWF0ZU9wdGlvbnMge1xuICAvKiogVGhlIHNoYXJkIGlkICovXG4gIGlkOiBudW1iZXJcbiAgLyoqIFRoZSBjb25uZWN0aW9uIGRldGFpbHMgKi9cbiAgY29ubmVjdGlvbjogU2hhcmRHYXRld2F5Q29uZmlnXG4gIC8qKiBUaGUgZXZlbnQgaGFuZGxlcnMgZm9yIGV2ZW50cyBvbiB0aGUgc2hhcmQuICovXG4gIGV2ZW50czogU2hhcmRFdmVudHNcbn1cblxuZXhwb3J0IGRlZmF1bHQgU2hhcmRcbiJdLCJuYW1lcyI6WyJHYXRld2F5Q2xvc2VFdmVudENvZGVzIiwiR2F0ZXdheUludGVudHMiLCJHYXRld2F5T3Bjb2RlcyIsImNhbWVsaXplIiwiQ29sbGVjdGlvbiIsImNyZWF0ZUxlYWt5QnVja2V0IiwiZGVsYXkiLCJsb2dnZXIiLCJpbmZsYXRlU3luYyIsIldlYlNvY2tldCIsIlNoYXJkU29ja2V0Q2xvc2VDb2RlcyIsIlNoYXJkU3RhdGUiLCJTaGFyZCIsIm1heFJlcXVlc3RzUGVyUmF0ZUxpbWl0VGljayIsInByZXZpb3VzU2VxdWVuY2VOdW1iZXIiLCJyYXRlTGltaXRSZXNldEludGVydmFsIiwic3RhdGUiLCJPZmZsaW5lIiwicmVzdW1lR2F0ZXdheVVybCIsImV2ZW50cyIsIm9mZmxpbmVTZW5kUXVldWUiLCJyZXNvbHZlcyIsIk1hcCIsImJ1Y2tldCIsIm1heCIsInJlZmlsbEludGVydmFsIiwicmVmaWxsQW1vdW50IiwiY2FjaGUiLCJyZXF1ZXN0TWVtYmVycyIsImVuYWJsZWQiLCJwZW5kaW5nIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwiaWQiLCJjb25uZWN0aW9uIiwiaGVhcnQiLCJhY2tub3dsZWRnZWQiLCJpbnRlcnZhbCIsImdhdGV3YXlDb25maWciLCJjYWxjdWxhdGVTYWZlUmVxdWVzdHMiLCJzYWZlUmVxdWVzdHMiLCJNYXRoIiwiY2VpbCIsImNoZWNrT2ZmbGluZSIsImhpZ2hQcmlvcml0eSIsImlzT3BlbiIsIlByb21pc2UiLCJyZXNvbHZlIiwidW5zaGlmdCIsInB1c2giLCJjbG9zZSIsImNvZGUiLCJyZWFzb24iLCJzb2NrZXQiLCJyZWFkeVN0YXRlIiwiT1BFTiIsImNvbm5lY3QiLCJJZGVudGlmeWluZyIsIlJlc3VtaW5nIiwiaW5jbHVkZXMiLCJDb25uZWN0aW5nIiwiY29ubmVjdGluZyIsInVybCIsIlVSTCIsIm9yaWdpbiIsInNlYXJjaFBhcmFtcyIsInNldCIsInZlcnNpb24iLCJ0b1N0cmluZyIsIm9uZXJyb3IiLCJldmVudCIsImNvbnNvbGUiLCJsb2ciLCJlcnJvciIsIm9uY2xvc2UiLCJoYW5kbGVDbG9zZSIsIm9ubWVzc2FnZSIsIm1lc3NhZ2UiLCJoYW5kbGVNZXNzYWdlIiwib25vcGVuIiwiVW5pZGVudGlmaWVkIiwiY29ubmVjdGVkIiwiaWRlbnRpZnkiLCJSZUlkZW50aWZ5aW5nIiwiaWRlbnRpZnlpbmciLCJyZXF1ZXN0SWRlbnRpZnkiLCJzZW5kIiwib3AiLCJJZGVudGlmeSIsImQiLCJ0b2tlbiIsImNvbXByZXNzIiwicHJvcGVydGllcyIsImludGVudHMiLCJzaGFyZCIsInRvdGFsU2hhcmRzIiwicHJlc2VuY2UiLCJtYWtlUHJlc2VuY2UiLCJpZGVudGlmaWVkIiwiZGVsZXRlIiwicmVzdW1lIiwiUmVzdW1lQ2xvc2luZ09sZENvbm5lY3Rpb24iLCJzZXNzaW9uSWQiLCJSZXN1bWUiLCJzZXNzaW9uX2lkIiwic2VxIiwiYWNxdWlyZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJzaHV0ZG93biIsIlNodXRkb3duIiwic3RvcEhlYXJ0YmVhdGluZyIsIlRlc3RpbmdGaW5pc2hlZCIsImRpc2Nvbm5lY3RlZCIsIlJlc2hhcmRlZCIsIlpvbWJpZWRDb25uZWN0aW9uIiwiRGlzY29ubmVjdGVkIiwiVW5rbm93bk9wY29kZSIsIk5vdEF1dGhlbnRpY2F0ZWQiLCJJbnZhbGlkU2VxIiwiUmF0ZUxpbWl0ZWQiLCJTZXNzaW9uVGltZWRPdXQiLCJBdXRoZW50aWNhdGlvbkZhaWxlZCIsIkludmFsaWRTaGFyZCIsIlNoYXJkaW5nUmVxdWlyZWQiLCJJbnZhbGlkQXBpVmVyc2lvbiIsIkludmFsaWRJbnRlbnRzIiwiRGlzYWxsb3dlZEludGVudHMiLCJFcnJvciIsIlVua25vd25FcnJvciIsIkRlY29kZUVycm9yIiwiQWxyZWFkeUF1dGhlbnRpY2F0ZWQiLCJoYW5kbGVEaXNjb3JkUGFja2V0IiwicGFja2V0IiwibGFzdEFjayIsIkRhdGUiLCJub3ciLCJsYXN0QmVhdCIsInJ0dCIsIkhlYXJ0YmVhdCIsImhlYXJ0YmVhdCIsIkhlbGxvIiwiaGVhcnRiZWF0X2ludGVydmFsIiwic3RhcnRIZWFydGJlYXRpbmciLCJ3YWl0aW5nIiwiaGVsbG8iLCJIZWFydGJlYXRBQ0siLCJoZWFydGJlYXRBY2siLCJSZWNvbm5lY3QiLCJyZXF1ZXN0ZWRSZWNvbm5lY3QiLCJJbnZhbGlkU2Vzc2lvbiIsInJlc3VtYWJsZSIsImludmFsaWRTZXNzaW9uIiwiZmxvb3IiLCJyYW5kb20iLCJnZXQiLCJ0IiwiQ29ubmVjdGVkIiwicmVzdW1lZCIsIm1hcCIsInBheWxvYWQiLCJyZXN1bWVfZ2F0ZXdheV91cmwiLCJzIiwicHJlUHJvY2Vzc01lc3NhZ2UiLCJkYXRhIiwiQmxvYiIsImFycmF5QnVmZmVyIiwicGFyc2UiLCJqaXR0ZXIiLCJ0aW1lb3V0SWQiLCJzZXRUaW1lb3V0IiwiaW50ZXJ2YWxJZCIsInNldEludGVydmFsIiwiY2xlYXJJbnRlcnZhbCIsImNsZWFyVGltZW91dCIsImpvaW5Wb2ljZUNoYW5uZWwiLCJndWlsZElkIiwiY2hhbm5lbElkIiwiZGVidWciLCJWb2ljZVN0YXRlVXBkYXRlIiwiZ3VpbGRfaWQiLCJjaGFubmVsX2lkIiwic2VsZl9tdXRlIiwiQm9vbGVhbiIsInNlbGZNdXRlIiwic2VsZl9kZWFmIiwic2VsZkRlYWYiLCJlZGl0Qm90U3RhdHVzIiwiZWRpdFNoYXJkU3RhdHVzIiwiUHJlc2VuY2VVcGRhdGUiLCJzaW5jZSIsImFmayIsImFjdGl2aXRpZXMiLCJzdGF0dXMiLCJsaW1pdCIsIkd1aWxkTWVtYmVycyIsInVzZXJJZHMiLCJsZW5ndGgiLCJub25jZSIsIm1lbWJlcnMiLCJSZXF1ZXN0R3VpbGRNZW1iZXJzIiwicXVlcnkiLCJ1bmRlZmluZWQiLCJwcmVzZW5jZXMiLCJ1c2VyX2lkcyIsImxlYXZlVm9pY2VDaGFubmVsIl0sIm1hcHBpbmdzIjoiQUFVQSxPQUFTQSwwQkFBQUEsQ0FBc0IsQ0FBRUMsa0JBQUFBLENBQWMsQ0FBRUMsa0JBQUFBLENBQWMsS0FBUSxtQkFBbUIsQUFDMUYsUUFBU0MsWUFBQUEsQ0FBUSxDQUFFQyxjQUFBQSxDQUFVLENBQUVDLHFCQUFBQSxDQUFpQixDQUFFQyxTQUFBQSxDQUFLLENBQUVDLFVBQUFBLENBQU0sS0FBUSxtQkFBbUIsQUFDMUYsUUFBU0MsZUFBQUEsQ0FBVyxLQUFRLFdBQVcsQUFDdkMsUUFBT0MsTUFBZSxJQUFJLEFBRzFCLFFBQVNDLHlCQUFBQSxDQUFxQixDQUFFQyxjQUFBQSxDQUFVLEtBQVEsWUFBWSxBQUU5RCxRQUFPLE1BQU1DLE1BUVhDLDRCQUFzQyxHQUFHLEFBRXpDQyxDQUFBQSx1QkFBd0MsSUFBSSxBQUU1Q0MsQ0FBQUEsdUJBQWlDLEdBQUssQUFNdENDLENBQUFBLE1BQVFMLEVBQVdNLE9BQU8sQUFFMUJDLENBQUFBLGlCQUEyQixFQUFFLEFBRTdCQyxDQUFBQSxPQUFzQixDQUFDLENBQUMsQUFFeEJDLENBQUFBLGlCQUFpRCxFQUFFLEFBRW5EQyxDQUFBQSxTQUFXLElBQUlDLEdBQXdGLEFBRXZHQyxDQUFBQSxPQUFTbEIsRUFBa0IsQ0FDekJtQixJQUFLLElBQ0xDLGVBQWdCLElBQ2hCQyxhQUFjLEdBQ2hCLEVBQUUsQUFHRkMsQ0FBQUEsTUFBUSxDQUNOQyxlQUFnQixDQUtkQyxRQUFTLENBQUEsRUFFVEMsUUFBUyxJQUFJMUIsQ0FDZixDQUNGLENBQUMsQUFFRDJCLGFBQVlDLENBQTJCLENB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
|
|
1
|
+
import{GatewayCloseEventCodes as e,GatewayIntents as t,GatewayOpcodes as s}from"@discordeno/types";import{camelize as i,Collection as n,createLeakyBucket as a,delay as r,logger as h}from"@discordeno/utils";import{inflateSync as o}from"node:zlib";import d from"ws";import{ShardSocketCloseCodes as c,ShardState as l}from"./types.js";export class DiscordenoShard{maxRequestsPerRateLimitTick=120;previousSequenceNumber=null;rateLimitResetInterval=6e4;state=l.Offline;resumeGatewayUrl="";events={};offlineSendQueue=[];resolves=new Map;bucket=a({max:120,refillInterval:6e4,refillAmount:120});cache={requestMembers:{enabled:!1,pending:new n}};constructor(e){this.id=e.id,this.connection=e.connection,this.events=e.events,this.heart={acknowledged:!1,interval:45e3}}get gatewayConfig(){return this.connection}calculateSafeRequests(){let e=this.maxRequestsPerRateLimitTick-2*Math.ceil(this.rateLimitResetInterval/this.heart.interval);return e<0?0:e}async checkOffline(e){this.isOpen()||await new Promise(t=>{e?this.offlineSendQueue.unshift(t):this.offlineSendQueue.push(t)})}close(e,t){if(this.socket?.readyState===d.OPEN)return this.socket?.close(e,t)}async connect(){[l.Identifying,l.Resuming].includes(this.state)||(this.state=l.Connecting),this.events.connecting?.(this);let e=new URL(this.gatewayConfig.url);"wss://gateway.discord.gg"===e.origin&&(this.state===l.Resuming&&(e=new URL(this.resumeGatewayUrl)),e.searchParams.set("v",this.gatewayConfig.version.toString()),e.searchParams.set("encoding","json"));let t=new d(e.toString());return this.socket=t,t.onerror=e=>console.log({error:e}),t.onclose=async e=>await this.handleClose(e),t.onmessage=async e=>await this.handleMessage(e),await new Promise(e=>{t.onopen=()=>{[l.Identifying,l.Resuming].includes(this.state)||(this.state=l.Unidentified),this.events.connected?.(this),e(this)}})}async identify(){return this.isOpen()&&(console.log(`CLOSING EXISTING SHARD: #${this.id}`),this.close(c.ReIdentifying,"Re-identifying closure of old connection.")),this.state=l.Identifying,this.events.identifying?.(this),this.isOpen()||await this.connect(),await this.requestIdentify(),this.send({op:s.Identify,d:{token:`Bot ${this.gatewayConfig.token}`,compress:this.gatewayConfig.compress,properties:this.gatewayConfig.properties,intents:this.gatewayConfig.intents,shard:[this.id,this.gatewayConfig.totalShards],presence:await this.makePresence?.()}},!0),await new Promise(e=>{this.resolves.set("READY",()=>{this.events.identified?.(this),e()}),this.resolves.set("INVALID_SESSION",()=>{this.resolves.delete("READY"),e()})})}isOpen(){return this.socket?.readyState===d.OPEN}async resume(){return(this.isOpen()&&this.close(c.ResumeClosingOldConnection,"Reconnecting the shard, closing old connection."),this.sessionId)?(this.state=l.Resuming,await this.connect(),this.send({op:s.Resume,d:{token:`Bot ${this.gatewayConfig.token}`,session_id:this.sessionId,seq:this.previousSequenceNumber??0}},!0),await new Promise(e=>{this.resolves.set("RESUMED",()=>e()),this.resolves.set("INVALID_SESSION",()=>{this.resolves.delete("RESUMED"),e()})})):await this.identify()}async send(e,t=!1){await this.checkOffline(t),await this.bucket.acquire(1,t),await this.checkOffline(t),this.socket?.send(JSON.stringify(e))}async shutdown(){this.close(c.Shutdown,"Shard shutting down."),this.state=l.Offline}async handleClose(t){switch(this.stopHeartbeating(),t.code){case c.TestingFinished:this.state=l.Offline,this.events.disconnected?.(this);return;case c.Shutdown:case c.ReIdentifying:case c.Resharded:case c.ResumeClosingOldConnection:case c.ZombiedConnection:this.state=l.Disconnected,this.events.disconnected?.(this);return;case e.UnknownOpcode:case e.NotAuthenticated:case e.InvalidSeq:case e.RateLimited:case e.SessionTimedOut:return this.state=l.Identifying,this.events.disconnected?.(this),await this.identify();case e.AuthenticationFailed:case e.InvalidShard:case e.ShardingRequired:case e.InvalidApiVersion:case e.InvalidIntents:case e.DisallowedIntents:throw this.state=l.Offline,this.events.disconnected?.(this),Error(t.reason||"Discord gave no reason! GG! You broke Discord!");case e.UnknownError:case e.DecodeError:case e.AlreadyAuthenticated:default:return this.state=l.Resuming,this.events.disconnected?.(this),await this.resume()}}async handleDiscordPacket(e){switch(this.heart.lastAck=Date.now(),this.heart.lastBeat&&!this.heart.acknowledged&&(this.heart.rtt=this.heart.lastAck-this.heart.lastBeat),this.heart.acknowledged=!0,e.op){case s.Heartbeat:if(!this.isOpen())return;this.heart.lastBeat=Date.now(),this.socket?.send(JSON.stringify({op:s.Heartbeat,d:this.previousSequenceNumber})),this.events.heartbeat?.(this);break;case s.Hello:{let t=e.d.heartbeat_interval;this.startHeartbeating(t),this.state!==l.Resuming&&(this.bucket=a({max:this.calculateSafeRequests(),refillInterval:6e4,refillAmount:this.calculateSafeRequests(),waiting:this.bucket.waiting})),this.events.hello?.(this);break}case s.HeartbeatACK:this.events.heartbeatAck?.(this);break;case s.Reconnect:this.events.requestedReconnect?.(this),await this.resume();break;case s.InvalidSession:{let n=e.d;if(this.events.invalidSession?.(this,n),await r(Math.floor((4*Math.random()+1)*1e3)),this.resolves.get("INVALID_SESSION")?.(e),this.resolves.delete("INVALID_SESSION"),!n){await this.identify();break}await this.resume()}}if("RESUMED"===e.t)this.state=l.Connected,this.events.resumed?.(this),this.offlineSendQueue.map(e=>e()),this.resolves.get("RESUMED")?.(e),this.resolves.delete("RESUMED");else if("READY"===e.t){let h=e.d;this.resumeGatewayUrl=h.resume_gateway_url,this.sessionId=h.session_id,this.state=l.Connected,this.offlineSendQueue.map(e=>e()),this.resolves.get("READY")?.(e),this.resolves.delete("READY")}null!==e.s&&(this.previousSequenceNumber=e.s),this.events.message?.(this,i(e))}async handleMessage(e){let t=e.data;if(this.gatewayConfig.compress&&t instanceof Blob&&(t=o(await t.arrayBuffer()).toString()),"string"==typeof t)return await this.handleDiscordPacket(JSON.parse(t))}async makePresence(){}async requestIdentify(){}startHeartbeating(e){this.heart.interval=e,[l.Disconnected,l.Offline].includes(this.state)&&(this.state=l.Unidentified);let t=Math.ceil(this.heart.interval*(Math.random()||.5));this.heart.timeoutId=setTimeout(()=>{this.isOpen()&&(this.socket?.send(JSON.stringify({op:s.Heartbeat,d:this.previousSequenceNumber})),this.heart.lastBeat=Date.now(),this.heart.acknowledged=!1,this.heart.intervalId=setInterval(async()=>{if(this.isOpen()){if(!this.heart.acknowledged)return this.close(c.ZombiedConnection,"Zombied connection, did not receive an heartbeat ACK in time."),await this.identify();this.heart.acknowledged=!1,this.socket?.send(JSON.stringify({op:s.Heartbeat,d:this.previousSequenceNumber})),this.heart.lastBeat=Date.now(),this.events.heartbeat?.(this)}},this.heart.interval))},t)}stopHeartbeating(){clearInterval(this.heart.intervalId),clearTimeout(this.heart.timeoutId)}async joinVoiceChannel(e,t,i){return h.debug(`[Shard] joinVoiceChannel guildId: ${e} channelId: ${t}`),await this.send({op:s.VoiceStateUpdate,d:{guild_id:e.toString(),channel_id:t.toString(),self_mute:Boolean(i?.selfMute),self_deaf:i?.selfDeaf??!0}})}async editBotStatus(e){return h.debug(`[Shard] editBotStatus data: ${JSON.stringify(e)}`),await this.editShardStatus(e)}async editShardStatus(e){return h.debug(`[Shard] editShardStatus shardId: ${this.id} -> data: ${JSON.stringify(e)}`),await this.send({op:s.PresenceUpdate,d:{since:null,afk:!1,activities:e.activities,status:e.status}})}async requestMembers(e,i){if(this.connection.intents&&(!i?.limit||i.limit>1)&&!(this.connection.intents&t.GuildMembers))throw Error("MISSING_INTENT_GUILD_MEMBERS");i?.userIds?.length&&(h.debug(`[Shard] requestMembers guildId: ${e} -> setting user limit based on userIds length: ${i.userIds.length}`),i.limit=i.userIds.length);let n=`${e}-${Date.now()}`;return this.cache.requestMembers?.enabled?await new Promise(t=>{this.cache.requestMembers?.pending.set(n,{nonce:n,resolve:t,members:[]}),h.debug(`[Shard] requestMembers guildId: ${e} -> requesting members -> data: ${JSON.stringify(i)}`),this.send({op:s.RequestGuildMembers,d:{guild_id:e.toString(),query:i?.query??(i?.limit?void 0:""),limit:i?.limit??0,presences:i?.presences??!1,user_ids:i?.userIds?.map(e=>e.toString()),nonce:n}})}):(h.debug(`[Shard] requestMembers guildId: ${e} -> skipping cache -> options ${JSON.stringify(i)}`),await this.send({op:s.RequestGuildMembers,d:{guild_id:e.toString(),query:i?.query??(i?.limit?void 0:""),limit:i?.limit??0,presences:i?.presences??!1,user_ids:i?.userIds?.map(e=>e.toString()),nonce:n}}),[])}async leaveVoiceChannel(e){return h.debug(`[Shard] leaveVoiceChannel guildId: ${e} Shard ${this.id}`),await this.send({op:s.VoiceStateUpdate,d:{guild_id:e.toString(),channel_id:null,self_mute:!1,self_deaf:!1}})}}export default DiscordenoShard;
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9TaGFyZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIEF0TGVhc3RPbmUsXG4gIEJpZ1N0cmluZyxcbiAgQ2FtZWxpemUsXG4gIERpc2NvcmRHYXRld2F5UGF5bG9hZCxcbiAgRGlzY29yZEhlbGxvLFxuICBEaXNjb3JkTWVtYmVyLFxuICBEaXNjb3JkUmVhZHksXG4gIFJlcXVlc3RHdWlsZE1lbWJlcnMsXG59IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgR2F0ZXdheUNsb3NlRXZlbnRDb2RlcywgR2F0ZXdheUludGVudHMsIEdhdGV3YXlPcGNvZGVzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBjYW1lbGl6ZSwgQ29sbGVjdGlvbiwgY3JlYXRlTGVha3lCdWNrZXQsIGRlbGF5LCBsb2dnZXIgfSBmcm9tICdAZGlzY29yZGVuby91dGlscydcbmltcG9ydCB7IGluZmxhdGVTeW5jIH0gZnJvbSAnbm9kZTp6bGliJ1xuaW1wb3J0IFdlYlNvY2tldCBmcm9tICd3cydcbmltcG9ydCB0eXBlIHsgUmVxdWVzdE1lbWJlclJlcXVlc3QgfSBmcm9tICcuL21hbmFnZXIuanMnXG5pbXBvcnQgdHlwZSB7IEJvdFN0YXR1c1VwZGF0ZSwgU2hhcmRFdmVudHMsIFNoYXJkR2F0ZXdheUNvbmZpZywgU2hhcmRIZWFydCwgU2hhcmRTb2NrZXRSZXF1ZXN0LCBTdGF0dXNVcGRhdGUsIFVwZGF0ZVZvaWNlU3RhdGUgfSBmcm9tICcuL3R5cGVzLmpzJ1xuaW1wb3J0IHsgU2hhcmRTb2NrZXRDbG9zZUNvZGVzLCBTaGFyZFN0YXRlIH0gZnJvbSAnLi90eXBlcy5qcydcblxuZXhwb3J0IGNsYXNzIERpc2NvcmRlbm9TaGFyZCB7XG4gIC8qKiBUaGUgaWQgb2YgdGhlIHNoYXJkICovXG4gIGlkOiBudW1iZXJcbiAgLyoqIFRoZSBjb25uZWN0aW9uIGNvbmZpZyBkZXRhaWxzIHRoYXQgdGhpcyBzaGFyZCB3aWxsIHVzZWQgdG8gY29ubmVjdCB0byBkaXNjb3JkLiAqL1xuICBjb25uZWN0aW9uOiBTaGFyZEdhdGV3YXlDb25maWdcbiAgLyoqIFRoaXMgY29udGFpbnMgYWxsIHRoZSBoZWFydGJlYXQgaW5mb3JtYXRpb24gKi9cbiAgaGVhcnQ6IFNoYXJkSGVhcnRcbiAgLyoqIFRoZSBtYXhpbXVtIG9mIHJlcXVlc3RzIHdoaWNoIGNhbiBiZSBzZW5kIHRvIGRpc2NvcmQgcGVyIHJhdGUgbGltaXQgdGljay4gVHlwaWNhbGx5IHRoaXMgdmFsdWUgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkLiAqL1xuICBtYXhSZXF1ZXN0c1BlclJhdGVMaW1pdFRpY2s6IG51bWJlciA9IDEyMFxuICAvKiogVGhlIHByZXZpb3VzIHBheWxvYWQgc2VxdWVuY2UgbnVtYmVyLiAqL1xuICBwcmV2aW91c1NlcXVlbmNlTnVtYmVyOiBudW1iZXIgfCBudWxsID0gbnVsbFxuICAvKiogSW4gd2hpY2ggaW50ZXJ2YWwgKGluIG1pbGxpc2Vjb25kcykgdGhlIGdhdGV3YXkgcmVzZXRzIGl0J3MgcmF0ZSBsaW1pdC4gKi9cbiAgcmF0ZUxpbWl0UmVzZXRJbnRlcnZhbDogbnVtYmVyID0gNjAwMDBcbiAgLyoqIEN1cnJlbnQgc2Vzc2lvbiBpZCBvZiB0aGUgc2hhcmQgaWYgcHJlc2VudC4gKi9cbiAgc2Vzc2lvbklkPzogc3RyaW5nXG4gIC8qKiBUaGlzIGNvbnRhaW5zIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiB0byBEaXNjb3JkLCBpZiBjdXJyZW50bHkgY29ubmVjdGVkLiAqL1xuICBzb2NrZXQ/OiBXZWJTb2NrZXRcbiAgLyoqIEN1cnJlbnQgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIHRoaXMuICovXG4gIHN0YXRlID0gU2hhcmRTdGF0ZS5PZmZsaW5lXG4gIC8qKiBUaGUgdXJsIHByb3ZpZGVkIGJ5IGRpc2NvcmQgdG8gdXNlIHdoZW4gcmVzdW1pbmcgYSBjb25uZWN0aW9uIGZvciB0aGlzIHRoaXMuICovXG4gIHJlc3VtZUdhdGV3YXlVcmw6IHN0cmluZyA9ICcnXG4gIC8qKiBUaGUgc2hhcmQgcmVsYXRlZCBldmVudCBoYW5kbGVycy4gKi9cbiAgZXZlbnRzOiBTaGFyZEV2ZW50cyA9IHt9XG4gIC8qKiBDYWNoZSBmb3IgcGVuZGluZyBnYXRld2F5IHJlcXVlc3RzIHdoaWNoIHNob3VsZCBoYXZlIGJlZW4gc2VuZCB3aGlsZSB0aGUgZ2F0ZXdheSB3ZW50IG9mZmxpbmUuICovXG4gIG9mZmxpbmVTZW5kUXVldWU6IEFycmF5PChfPzogdW5rbm93bikgPT4gdm9pZD4gPSBbXVxuICAvKiogUmVzb2x2ZSBpbnRlcm5hbCB3YWl0aW5nIHN0YXRlcy4gTWFwcGVkIGJ5IFNlbGVjdGVkRXZlbnRzID0+IFJlc29sdmVGdW5jdGlvbiAqL1xuICByZXNvbHZlcyA9IG5ldyBNYXA8J1JFQURZJyB8ICdSRVNVTUVEJyB8ICdJTlZBTElEX1NFU1NJT04nLCAocGF5bG9hZDogRGlzY29yZEdhdGV3YXlQYXlsb2FkKSA9PiB2b2lkPigpXG4gIC8qKiBTaGFyZCBidWNrZXQuIE9ubHkgYWNjZXNzIHRoaXMgaWYgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLiBCdWNrZXQgZm9yIGhhbmRsaW5nIHNoYXJkIHJlcXVlc3QgcmF0ZSBsaW1pdHMuICovXG4gIGJ1Y2tldCA9IGNyZWF0ZUxlYWt5QnVja2V0KHtcbiAgICBtYXg6IDEyMCxcbiAgICByZWZpbGxJbnRlcnZhbDogNjAwMDAsXG4gICAgcmVmaWxsQW1vdW50OiAxMjAsXG4gIH0pXG5cbiAgLyoqIFRoaXMgbWFuYWdlcnMgY2FjaGUgcmVsYXRlZCBzZXR0aW5ncy4gKi9cbiAgY2FjaGUgPSB7XG4gICAgcmVxdWVzdE1lbWJlcnM6IHtcbiAgICAgIC8qKlxuICAgICAgICogV2hldGhlciBvciBub3QgcmVxdWVzdCBtZW1iZXIgcmVxdWVzdHMgc2hvdWxkIGJlIGNhY2hlZC5cbiAgICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICAgKi9cbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgLyoqIFRoZSBwZW5kaW5nIHJlcXVlc3RzLiAqL1xuICAgICAgcGVuZGluZzogbmV3IENvbGxlY3Rpb248c3RyaW5nLCBSZXF1ZXN0TWVtYmVyUmVxdWVzdD4oKSxcbiAgICB9LFxuICB9XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogU2hhcmRDcmVhdGVPcHRpb25zKSB7XG4gICAgdGhpcy5pZCA9IG9wdGlvbnMuaWRcbiAgICB0aGlzLmNvbm5lY3Rpb24gPSBvcHRpb25zLmNvbm5lY3Rpb25cbiAgICB0aGlzLmV2ZW50cyA9IG9wdGlvbnMuZXZlbnRzXG5cbiAgICB0aGlzLmhlYXJ0ID0ge1xuICAgICAgYWNrbm93bGVkZ2VkOiBmYWxzZSxcbiAgICAgIGludGVydmFsOiA0NTAwMCxcbiAgICB9XG4gIH1cblxuICAvKiogVGhlIGdhdGV3YXkgY29uZmlndXJhdGlvbiB3aGljaCBpcyB1c2VkIHRvIGNvbm5lY3QgdG8gRGlzY29yZC4gKi9cbiAgZ2V0IGdhdGV3YXlDb25maWcoKTogU2hhcmRHYXRld2F5Q29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uXG4gIH1cblxuICAvKiogQ2FsY3VsYXRlIHRoZSBhbW91bnQgb2YgcmVxdWVzdHMgd2hpY2ggY2FuIHNhZmVseSBiZSBtYWRlIHBlciByYXRlIGxpbWl0IGludGVydmFsLCBiZWZvcmUgdGhlIGdhdGV3YXkgZ2V0cyBkaXNjb25uZWN0ZWQgZHVlIHRvIGFuIGV4Y2VlZGVkIHJhdGUgbGltaXQuICovXG4gIGNhbGN1bGF0ZVNhZmVSZXF1ZXN0cygpOiBudW1iZXIge1xuICAgIC8vICogMiBhZGRzIGV4dHJhIHNhZmV0eSBsYXllciBmb3IgZGlzY29yZHMgT1AgMSByZXF1ZXN0cyB0aGF0IHdlIG5lZWQgdG8gcmVzcG9uZCB0b1xuICAgIGNvbnN0IHNhZmVSZXF1ZXN0cyA9IHRoaXMubWF4UmVxdWVzdHNQZXJSYXRlTGltaXRUaWNrIC0gTWF0aC5jZWlsKHRoaXMucmF0ZUxpbWl0UmVzZXRJbnRlcnZhbCAvIHRoaXMuaGVhcnQuaW50ZXJ2YWwpICogMlxuXG4gICAgcmV0dXJuIHNhZmVSZXF1ZXN0cyA8IDAgPyAwIDogc2FmZVJlcXVlc3RzXG4gIH1cblxuICBhc3luYyBjaGVja09mZmxpbmUoaGlnaFByaW9yaXR5OiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmlzT3BlbigpKSB7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAvLyBIaWdoZXIgcHJpb3JpdHkgcmVxdWVzdHMgZ2V0IGFkZGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFycmF5LlxuICAgICAgICBpZiAoaGlnaFByaW9yaXR5KSB0aGlzLm9mZmxpbmVTZW5kUXVldWUudW5zaGlmdChyZXNvbHZlKVxuICAgICAgICBlbHNlIHRoaXMub2ZmbGluZVNlbmRRdWV1ZS5wdXNoKHJlc29sdmUpXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKiBDbG9zZSB0aGUgc29ja2V0IGNvbm5lY3Rpb24gdG8gZGlzY29yZCBpZiBwcmVzZW50LiAqL1xuICBjbG9zZShjb2RlOiBudW1iZXIsIHJlYXNvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc29ja2V0Py5yZWFkeVN0YXRlICE9PSBXZWJTb2NrZXQuT1BFTikgcmV0dXJuXG5cbiAgICByZXR1cm4gdGhpcy5zb2NrZXQ/LmNsb3NlKGNvZGUsIHJlYXNvbilcbiAgfVxuXG4gIC8qKiBDb25uZWN0IHRoZSBzaGFyZCB3aXRoIHRoZSBnYXRld2F5IGFuZCBzdGFydCBoZWFydGJlYXRpbmcuIFRoaXMgd2lsbCBub3QgaWRlbnRpZnkgdGhlIHNoYXJkIHRvIHRoZSBnYXRld2F5LiAqL1xuICBhc3luYyBjb25uZWN0KCk6IFByb21pc2U8RGlzY29yZGVub1NoYXJkPiB7XG4gICAgLy8gT25seSBzZXQgdGhlIHNoYXJkIHRvIGBDb25uZWN0aW5nYCBzdGF0ZSxcbiAgICAvLyBpZiB0aGUgY29ubmVjdGlvbiByZXF1ZXN0IGRvZXMgbm90IGNvbWUgZnJvbSBhbiBpZGVudGlmeSBvciByZXN1bWUgYWN0aW9uLlxuICAgIGlmICghW1NoYXJkU3RhdGUuSWRlbnRpZnlpbmcsIFNoYXJkU3RhdGUuUmVzdW1pbmddLmluY2x1ZGVzKHRoaXMuc3RhdGUpKSB7XG4gICAgICB0aGlzLnN0YXRlID0gU2hhcmRTdGF0ZS5Db25uZWN0aW5nXG4gICAgfVxuICAgIHRoaXMuZXZlbnRzLmNvbm5lY3Rpbmc/Lih0aGlzKVxuXG4gICAgbGV0IHVybCA9IG5ldyBVUkwodGhpcy5nYXRld2F5Q29uZmlnLnVybClcbiAgICAvLyBJZiBub3QgY29ubmVjdGluZyB0byBhIHByb3h5IGJ1dCBkaXJlY3RseSB0byBkaXNjb3JkIG5lZWQgdG8gaGFuZGxlIHJlc3VtaW5nXG4gICAgaWYgKHVybC5vcmlnaW4gPT09ICd3c3M6Ly9nYXRld2F5LmRpc2NvcmQuZ2cnKSB7XG4gICAgICBpZiAodGhpcy5zdGF0ZSA9PT0gU2hhcmRTdGF0ZS5SZXN1bWluZykge1xuICAgICAgICB1cmwgPSBuZXcgVVJMKHRoaXMucmVzdW1lR2F0ZXdheVVybClcbiAgICAgIH1cbiAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCd2JywgdGhpcy5nYXRld2F5Q29uZmlnLnZlcnNpb24udG9TdHJpbmcoKSlcbiAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdlbmNvZGluZycsICdqc29uJylcbiAgICB9XG5cbiAgICBjb25zdCBzb2NrZXQgPSBuZXcgV2ViU29ja2V0KHVybC50b1N0cmluZygpKVxuXG4gICAgdGhpcy5zb2NrZXQgPSBzb2NrZXRcblxuICAgIC8vIFRPRE86IHByb3BlciBldmVudCBoYW5kbGluZ1xuICAgIHNvY2tldC5vbmVycm9yID0gKGV2ZW50KSA9PiBjb25zb2xlLmxvZyh7IGVycm9yOiBldmVudCB9KVxuXG4gICAgc29ja2V0Lm9uY2xvc2UgPSBhc3luYyAoZXZlbnQpID0+IGF3YWl0IHRoaXMuaGFuZGxlQ2xvc2UoZXZlbnQpXG5cbiAgICBzb2NrZXQub25tZXNzYWdlID0gYXN5bmMgKG1lc3NhZ2UpID0+IGF3YWl0IHRoaXMuaGFuZGxlTWVzc2FnZShtZXNzYWdlKVxuXG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBzb2NrZXQub25vcGVuID0gKCkgPT4ge1xuICAgICAgICAvLyBPbmx5IHNldCB0aGUgc2hhcmQgdG8gYFVuaWRlbnRpZmllZGAgc3RhdGUsXG4gICAgICAgIC8vIGlmIHRoZSBjb25uZWN0aW9uIHJlcXVlc3QgZG9lcyBub3QgY29tZSBmcm9tIGFuIGlkZW50aWZ5IG9yIHJlc3VtZSBhY3Rpb24uXG4gICAgICAgIGlmICghW1NoYXJkU3RhdGUuSWRlbnRpZnlpbmcsIFNoYXJkU3RhdGUuUmVzdW1pbmddLmluY2x1ZGVzKHRoaXMuc3RhdGUpKSB7XG4gICAgICAgICAgdGhpcy5zdGF0ZSA9IFNoYXJkU3RhdGUuVW5pZGVudGlmaWVkXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ldmVudHMuY29ubmVjdGVkPy4odGhpcylcblxuICAgICAgICByZXNvbHZlKHRoaXMpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKiBJZGVudGlmeSB0aGUgc2hhcmQgdG8gdGhlIGdhdGV3YXkuIElmIG5vdCBjb25uZWN0ZWQsIHRoaXMgd2lsbCBhbHNvIGNvbm5lY3QgdGhlIHNoYXJkIHRvIHRoZSBnYXRld2F5LiAqL1xuICBhc3luYyBpZGVudGlmeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBBIG5ldyBpZGVudGlmeSBoYXMgYmVlbiByZXF1ZXN0ZWQgZXZlbiB0aG91Z2ggdGhlcmUgaXMgYWxyZWFkeSBhIGNvbm5lY3Rpb24gb3Blbi5cbiAgICAvLyBUaGVyZWZvcmUgd2UgbmVlZCB0byBjbG9zZSB0aGUgb2xkIGNvbm5lY3Rpb24gYW5kIGhlYXJ0YmVhdGluZyBiZWZvcmUgY3JlYXRpbmcgYSBuZXcgb25lLlxuICAgIGlmICh0aGlzLmlzT3BlbigpKSB7XG4gICAgICBjb25zb2xlLmxvZyhgQ0xPU0lORyBFWElTVElORyBTSEFSRDogIyR7dGhpcy5pZH1gKVxuICAgICAgdGhpcy5jbG9zZShTaGFyZFNvY2tldENsb3NlQ29kZXMuUmVJZGVudGlmeWluZywgJ1JlLWlkZW50aWZ5aW5nIGNsb3N1cmUgb2Ygb2xkIGNvbm5lY3Rpb24uJylcbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlID0gU2hhcmRTdGF0ZS5JZGVudGlmeWluZ1xuICAgIHRoaXMuZXZlbnRzLmlkZW50aWZ5aW5nPy4odGhpcylcblxuICAgIC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIHNoYXJkIGlzIGluIEhlYXJ0YmVhdGluZyBzdGF0ZSBidXQgbm90IGlkZW50aWZpZWQsXG4gICAgLy8gc28gY2hlY2sgd2hldGhlciB0aGVyZSBpcyBhbHJlYWR5IGEgZ2F0ZXdheSBjb25uZWN0aW9uIGV4aXN0aW5nLlxuICAgIC8vIElmIG5vdCB3ZSBuZWVkIHRvIGNyZWF0ZSBvbmUgYmVmb3JlIHdlIGlkZW50aWZ5LlxuICAgIGlmICghdGhpcy5pc09wZW4oKSkge1xuICAgICAgYXdhaXQgdGhpcy5jb25uZWN0KClcbiAgICB9XG5cbiAgICAvLyBXYWl0IHVudGlsIGFuIGlkZW50aWZ5IGlzIGZyZWUgZm9yIHRoaXMgdGhpcy5cbiAgICBhd2FpdCB0aGlzLnJlcXVlc3RJZGVudGlmeSgpXG5cbiAgICB0aGlzLnNlbmQoXG4gICAgICB7XG4gICAgICAgIG9wOiBHYXRld2F5T3Bjb2Rlcy5JZGVudGlmeSxcbiAgICAgICAgZDoge1xuICAgICAgICAgIHRva2VuOiBgQm90ICR7dGhpcy5nYXRld2F5Q29uZmlnLnRva2VufWAsXG4gICAgICAgICAgY29tcHJlc3M6IHRoaXMuZ2F0ZXdheUNvbmZpZy5jb21wcmVzcyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB0aGlzLmdhdGV3YXlDb25maWcucHJvcGVydGllcyxcbiAgICAgICAgICBpbnRlbnRzOiB0aGlzLmdhdGV3YXlDb25maWcuaW50ZW50cyxcbiAgICAgICAgICBzaGFyZDogW3RoaXMuaWQsIHRoaXMuZ2F0ZXdheUNvbmZpZy50b3RhbFNoYXJkc10sXG4gICAgICAgICAgcHJlc2VuY2U6IGF3YWl0IHRoaXMubWFrZVByZXNlbmNlPy4oKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0cnVlLFxuICAgIClcblxuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgdGhpcy5yZXNvbHZlcy5zZXQoJ1JFQURZJywgKCkgPT4ge1xuICAgICAgICB0aGlzLmV2ZW50cy5pZGVudGlmaWVkPy4odGhpcylcbiAgICAgICAgcmVzb2x2ZSgpXG4gICAgICB9KVxuICAgICAgLy8gV2hlbiBpZGVudGlmeWluZyB0b28gZmFzdCxcbiAgICAgIC8vIERpc2NvcmQgc2VuZHMgYW4gaW52YWxpZCBzZXNzaW9uIHBheWxvYWQuXG4gICAgICAvLyBUaGlzIGNhbiBzYWZlbHkgYmUgaWdub3JlZCB0aG91Z2ggYW5kIHRoZSBzaGFyZCBzdGFydHMgYSBuZXcgaWRlbnRpZnkgYWN0aW9uLlxuICAgICAgdGhpcy5yZXNvbHZlcy5zZXQoJ0lOVkFMSURfU0VTU0lPTicsICgpID0+IHtcbiAgICAgICAgdGhpcy5yZXNvbHZlcy5kZWxldGUoJ1JFQURZJylcbiAgICAgICAgcmVzb2x2ZSgpXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICAvKiogQ2hlY2sgd2hldGhlciB0aGUgY29ubmVjdGlvbiB0byBEaXNjb3JkIGlzIGN1cnJlbnRseSBvcGVuLiAqL1xuICBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc29ja2V0Py5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTlxuICB9XG5cbiAgLyoqIEF0dGVtcHQgdG8gcmVzdW1lIHRoZSBwcmV2aW91cyBzaGFyZHMgc2Vzc2lvbiB3aXRoIHRoZSBnYXRld2F5LiAqL1xuICBhc3luYyByZXN1bWUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gICBnYXRld2F5LmRlYnVnKFwiR1cgUkVTVU1JTkdcIiwgeyBzaGFyZElkIH0pO1xuICAgIC8vIEl0IGhhcyBiZWVuIHJlcXVlc3RlZCB0byByZXN1bWUgdGhlIFNoYXJkcyBzZXNzaW9uLlxuICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgc2hhcmQgaXMgc3RpbGwgY29ubmVjdGVkIHdpdGggRGlzY29yZCdzIGdhdGV3YXkgdGhlcmVmb3JlIHdlIG5lZWQgdG8gZm9yY2VmdWxseSBjbG9zZSBpdC5cbiAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgdGhpcy5jbG9zZShTaGFyZFNvY2tldENsb3NlQ29kZXMuUmVzdW1lQ2xvc2luZ09sZENvbm5lY3Rpb24sICdSZWNvbm5lY3RpbmcgdGhlIHNoYXJkLCBjbG9zaW5nIG9sZCBjb25uZWN0aW9uLicpXG4gICAgfVxuXG4gICAgLy8gU2hhcmQgaGFzIG5ldmVyIGlkZW50aWZpZWQsIHNvIHdlIGNhbm5vdCByZXN1bWUuXG4gICAgaWYgKCF0aGlzLnNlc3Npb25JZCkge1xuICAgICAgLy8gZ2F0ZXdheS5kZWJ1ZyhcbiAgICAgIC8vICAgXCJHVyBERUJVR1wiLFxuICAgICAgLy8gICBgW0Vycm9yXSBUcnlpbmcgdG8gcmVzdW1lIGEgc2hhcmQgKGlkOiAke3NoYXJkSWR9KSB0aGF0IHdhcyBub3QgZmlyc3QgaWRlbnRpZmllZC5gLFxuICAgICAgLy8gKTtcblxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaWRlbnRpZnkoKVxuXG4gICAgICAvLyB0aHJvdyBuZXcgRXJyb3IoYFtTSEFSRF0gVHJ5aW5nIHRvIHJlc3VtZSBhIHNoYXJkIChpZDogJHt0aGlzLmlkfSkgd2hpY2ggd2FzIG5ldmVyIGlkZW50aWZpZWRgKTtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlID0gU2hhcmRTdGF0ZS5SZXN1bWluZ1xuXG4gICAgLy8gQmVmb3JlIHdlIGNhbiByZXN1bWUsIHdlIG5lZWQgdG8gY3JlYXRlIGEgbmV3IGNvbm5lY3Rpb24gd2l0aCBEaXNjb3JkJ3MgZ2F0ZXdheS5cbiAgICBhd2FpdCB0aGlzLmNvbm5lY3QoKVxuXG4gICAgdGhpcy5zZW5kKFxuICAgICAge1xuICAgICAgICBvcDogR2F0ZXdheU9wY29kZXMuUmVzdW1lLFxuICAgICAgICBkOiB7XG4gICAgICAgICAgdG9rZW46IGBCb3QgJHt0aGlzLmdhdGV3YXlDb25maWcudG9rZW59YCxcbiAgICAgICAgICBzZXNzaW9uX2lkOiB0aGlzLnNlc3Npb25JZCxcbiAgICAgICAgICBzZXE6IHRoaXMucHJldmlvdXNTZXF1ZW5jZU51bWJlciA/PyAwLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHRydWUsXG4gICAgKVxuXG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICB0aGlzLnJlc29sdmVzLnNldCgnUkVTVU1FRCcsICgpID0+IHJlc29sdmUoKSlcbiAgICAgIC8vIElmIGl0IGlzIGF0dGVtcHRlZCB0byByZXN1bWUgd2l0aCBhbiBpbnZhbGlkIHNlc3Npb24gaWQsXG4gICAgICAvLyBEaXNjb3JkIHNlbmRzIGFuIGludmFsaWQgc2Vzc2lvbiBwYXlsb2FkXG4gICAgICAvLyBOb3QgZXJyb3JpbmcgaGVyZSBzaW5jZSBpdCBpcyBlYXN5IHRoYXQgdGhpcyBoYXBwZW5zLCBhbHNvIGl0IHdvdWxkIGJlIG5vdCBjYXRjaGFibGVcbiAgICAgIHRoaXMucmVzb2x2ZXMuc2V0KCdJTlZBTElEX1NFU1NJT04nLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVzb2x2ZXMuZGVsZXRlKCdSRVNVTUVEJylcbiAgICAgICAgcmVzb2x2ZSgpXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICAvKiogU2VuZCBhIG1lc3NhZ2UgdG8gRGlzY29yZC5cbiAgICogQHBhcmFtIHtib29sZWFufSBbaGlnaFByaW9yaXR5PWZhbHNlXSAtIFdoZXRoZXIgdGhpcyBtZXNzYWdlIHNob3VsZCBiZSBzZW5kIGFzYXAuXG4gICAqL1xuICBhc3luYyBzZW5kKG1lc3NhZ2U6IFNoYXJkU29ja2V0UmVxdWVzdCwgaGlnaFByaW9yaXR5ID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBCZWZvcmUgYWNxdWlyaW5nIGEgdG9rZW4gZnJvbSB0aGUgYnVja2V0LCBjaGVjayB3aGV0aGVyIHRoZSBzaGFyZCBpcyBjdXJyZW50bHkgb2ZmbGluZSBvciBub3QuXG4gICAgLy8gRWxzZSBidWNrZXQgYW5kIHRva2VuIHdhaXQgdGltZSBqdXN0IGdldCB3YXN0ZWQuXG4gICAgYXdhaXQgdGhpcy5jaGVja09mZmxpbmUoaGlnaFByaW9yaXR5KVxuXG4gICAgYXdhaXQgdGhpcy5idWNrZXQuYWNxdWlyZSgxLCBoaWdoUHJpb3JpdHkpXG5cbiAgICAvLyBJdCdzIHBvc3NpYmxlLCB0aGF0IHRoZSBzaGFyZCB3ZW50IG9mZmxpbmUgYWZ0ZXIgYSB0b2tlbiBoYXMgYmVlbiBhY3F1aXJlZCBmcm9tIHRoZSBidWNrZXQuXG4gICAgYXdhaXQgdGhpcy5jaGVja09mZmxpbmUoaGlnaFByaW9yaXR5KVxuXG4gICAgdGhpcy5zb2NrZXQ/LnNlbmQoSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpXG4gIH1cblxuICAvKiogU2h1dGRvd24gdGhlIHRoaXMuIEZvcmNlZnVsbHkgZGlzY29ubmVjdCB0aGUgc2hhcmQgZnJvbSBEaXNjb3JkLiBUaGUgc2hhcmQgbWF5IG5vdCBhdHRlbXB0IHRvIHJlY29ubmVjdCB3aXRoIERpc2NvcmQuICovXG4gIGFzeW5jIHNodXRkb3duKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY2xvc2UoU2hhcmRTb2NrZXRDbG9zZUNvZGVzLlNodXRkb3duLCAnU2hhcmQgc2h1dHRpbmcgZG93bi4nKVxuICAgIHRoaXMuc3RhdGUgPSBTaGFyZFN0YXRlLk9mZmxpbmVcbiAgfVxuXG4gIC8qKiBIYW5kbGUgYSBnYXRld2F5IGNvbm5lY3Rpb24gY2xvc2UuICovXG4gIGFzeW5jIGhhbmRsZUNsb3NlKGNsb3NlOiBXZWJTb2NrZXQuQ2xvc2VFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vICAgZ2F0ZXdheS5kZWJ1ZyhcIkdXIENMT1NFRFwiLCB7IHNoYXJkSWQsIHBheWxvYWQ6IGV2ZW50IH0pO1xuXG4gICAgdGhpcy5zdG9wSGVhcnRiZWF0aW5nKClcblxuICAgIHN3aXRjaCAoY2xvc2UuY29kZSkge1xuICAgICAgY2FzZSBTaGFyZFNvY2tldENsb3NlQ29kZXMuVGVzdGluZ0ZpbmlzaGVkOiB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBTaGFyZFN0YXRlLk9mZmxpbmVcbiAgICAgICAgdGhpcy5ldmVudHMuZGlzY29ubmVjdGVkPy4odGhpcylcblxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIC8vIE9uIHRoZXNlIGNvZGVzIGEgbWFudWFsIHN0YXJ0IHdpbGwgYmUgZG9uZS5cbiAgICAgIGNhc2UgU2hhcmRTb2NrZXRDbG9zZUNvZGVzLlNodXRkb3duOlxuICAgICAgY2FzZSBTaGFyZFNvY2tldENsb3NlQ29kZXMuUmVJZGVudGlmeWluZzpcbiAgICAgIGNhc2UgU2hhcmRTb2NrZXRDbG9zZUNvZGVzLlJlc2hhcmRlZDpcbiAgICAgIGNhc2UgU2hhcmRTb2NrZXRDbG9zZUNvZGVzLlJlc3VtZUNsb3NpbmdPbGRDb25uZWN0aW9uOlxuICAgICAgY2FzZSBTaGFyZFNvY2tldENsb3NlQ29kZXMuWm9tYmllZENvbm5lY3Rpb246IHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNoYXJkU3RhdGUuRGlzY29ubmVjdGVkXG4gICAgICAgIHRoaXMuZXZlbnRzLmRpc2Nvbm5lY3RlZD8uKHRoaXMpXG5cbiAgICAgICAgLy8gZ2F0ZXdheS5kZWJ1ZyhcIkdXIENMT1NFRF9SRUNPTk5FQ1RcIiwgeyBzaGFyZElkLCBwYXlsb2FkOiBldmVudCB9KTtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICAvLyBHYXRld2F5IGNvbm5lY3Rpb24gY2xvc2VzIHdoaWNoIHJlcXVpcmUgYSBuZXcgaWRlbnRpZnkuXG4gICAgICBjYXNlIEdhdGV3YXlDbG9zZUV2ZW50Q29kZXMuVW5rbm93bk9wY29kZTpcbiAgICAgIGNhc2UgR2F0ZXdheUNsb3NlRXZlbnRDb2Rlcy5Ob3RBdXRoZW50aWNhdGVkOlxuICAgICAgY2FzZSBHYXRld2F5Q2xvc2VFdmVudENvZGVzLkludmFsaWRTZXE6XG4gICAgICBjYXNlIEdhdGV3YXlDbG9zZUV2ZW50Q29kZXMuUmF0ZUxpbWl0ZWQ6XG4gICAgICBjYXNlIEdhdGV3YXlDbG9zZUV2ZW50Q29kZXMuU2Vzc2lvblRpbWVkT3V0OiB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBTaGFyZFN0YXRlLklkZW50aWZ5aW5nXG4gICAgICAgIHRoaXMuZXZlbnRzLmRpc2Nvbm5lY3RlZD8uKHRoaXMpXG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaWRlbnRpZnkoKVxuICAgICAgfVxuICAgICAgLy8gV2hlbiB0aGVzZSBjb2RlcyBhcmUgcmVjZWl2ZWQgc29tZXRoaW5nIHdlbnQgcmVhbGx5IHdyb25nLlxuICAgICAgLy8gT24gdGhvc2Ugd2UgY2Fubm90IHN0YXJ0IGEgcmVjb25uZWN0IGF0dGVtcHQuXG4gICAgICBjYXNlIEdhdGV3YXlDbG9zZUV2ZW50Q29kZXMuQXV0aGVudGljYXRpb25GYWlsZWQ6XG4gICAgICBjYXNlIEdhdGV3YXlDbG9zZUV2ZW50Q29kZXMuSW52YWxpZFNoYXJkOlxuICAgICAgY2FzZSBHYXRld2F5Q2xvc2VFdmVudENvZGVzLlNoYXJkaW5nUmVxdWlyZWQ6XG4gICAgICBjYXNlIEdhdGV3YXlDbG9zZUV2ZW50Q29kZXMuSW52YWxpZEFwaVZlcnNpb246XG4gICAgICBjYXNlIEdhdGV3YXlDbG9zZUV2ZW50Q29kZXMuSW52YWxpZEludGVudHM6XG4gICAgICBjYXNlIEdhdGV3YXlDbG9zZUV2ZW50Q29kZXMuRGlzYWxsb3dlZEludGVudHM6IHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNoYXJkU3RhdGUuT2ZmbGluZVxuICAgICAgICB0aGlzLmV2ZW50cy5kaXNjb25uZWN0ZWQ/Lih0aGlzKVxuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihjbG9zZS5yZWFzb24gfHwgJ0Rpc2NvcmQgZ2F2ZSBubyByZWFzb24hIEdHISBZb3UgYnJva2UgRGlzY29yZCEnKVxuICAgICAgfVxuICAgICAgLy8gR2F0ZXdheSBjb25uZWN0aW9uIGNsb3NlcyBvbiB3aGljaCBhIHJlc3VtZSBpcyBhbGxvd2VkLlxuICAgICAgY2FzZSBHYXRld2F5Q2xvc2VFdmVudENvZGVzLlVua25vd25FcnJvcjpcbiAgICAgIGNhc2UgR2F0ZXdheUNsb3NlRXZlbnRDb2Rlcy5EZWNvZGVFcnJvcjpcbiAgICAgIGNhc2UgR2F0ZXdheUNsb3NlRXZlbnRDb2Rlcy5BbHJlYWR5QXV0aGVudGljYXRlZDpcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNoYXJkU3RhdGUuUmVzdW1pbmdcbiAgICAgICAgdGhpcy5ldmVudHMuZGlzY29ubmVjdGVkPy4odGhpcylcblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5yZXN1bWUoKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBIYW5kbGVzIGEgaW5jb21pbmcgZ2F0ZXdheSBwYWNrZXQuICovXG4gIGFzeW5jIGhhbmRsZURpc2NvcmRQYWNrZXQocGFja2V0OiBEaXNjb3JkR2F0ZXdheVBheWxvYWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBFZGdlIGNhc2Ugc3RhcnQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9kaXNjb3JkZW5vL2Rpc2NvcmRlbm8vaXNzdWVzLzIzMTFcbiAgICB0aGlzLmhlYXJ0Lmxhc3RBY2sgPSBEYXRlLm5vdygpXG4gICAgLy8gTWFudWFsbHkgY2FsY3VsYXRpbmcgdGhlIHJvdW5kIHRyaXAgdGltZSBmb3IgdXNlcnMgd2hvIG5lZWQgaXQuXG4gICAgaWYgKHRoaXMuaGVhcnQubGFzdEJlYXQgJiYgIXRoaXMuaGVhcnQuYWNrbm93bGVkZ2VkKSB7XG4gICAgICB0aGlzLmhlYXJ0LnJ0dCA9IHRoaXMuaGVhcnQubGFzdEFjayAtIHRoaXMuaGVhcnQubGFzdEJlYXRcbiAgICB9XG4gICAgdGhpcy5oZWFydC5hY2tub3dsZWRnZWQgPSB0cnVlXG4gICAgLy8gRWRnZSBjYXNlIGVuZCFcblxuICAgIHN3aXRjaCAocGFja2V0Lm9wKSB7XG4gICAgICBjYXNlIEdhdGV3YXlPcGNvZGVzLkhlYXJ0YmVhdDoge1xuICAgICAgICAvLyBUT0RPOiBjYW4gdGhpcyBhY3R1YWxseSBoYXBwZW5cbiAgICAgICAgaWYgKCF0aGlzLmlzT3BlbigpKSByZXR1cm5cblxuICAgICAgICB0aGlzLmhlYXJ0Lmxhc3RCZWF0ID0gRGF0ZS5ub3coKVxuICAgICAgICAvLyBEaXNjb3JkIHJhbmRvbWx5IHNlbmRzIHRoaXMgcmVxdWlyaW5nIGFuIGltbWVkaWF0ZSBoZWFydGJlYXQgYmFjay5cbiAgICAgICAgLy8gVXNpbmcgYSBkaXJlY3Qgc29ja2V0LnNlbmQgY2FsbCBoZXJlIGJlY2F1c2UgaGVhcnRiZWF0IHJlcXVlc3RzIGFyZSByZXNlcnZlZCBieSB1cy5cbiAgICAgICAgdGhpcy5zb2NrZXQ/LnNlbmQoXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgb3A6IEdhdGV3YXlPcGNvZGVzLkhlYXJ0YmVhdCxcbiAgICAgICAgICAgIGQ6IHRoaXMucHJldmlvdXNTZXF1ZW5jZU51bWJlcixcbiAgICAgICAgICB9KSxcbiAgICAgICAgKVxuICAgICAgICB0aGlzLmV2ZW50cy5oZWFydGJlYXQ/Lih0aGlzKVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlIEdhdGV3YXlPcGNvZGVzLkhlbGxvOiB7XG4gICAgICAgIGNvbnN0IGludGVydmFsID0gKHBhY2tldC5kIGFzIERpc2NvcmRIZWxsbykuaGVhcnRiZWF0X2ludGVydmFsXG5cbiAgICAgICAgdGhpcy5zdGFydEhlYXJ0YmVhdGluZyhpbnRlcnZhbClcblxuICAgICAgICBpZiAodGhpcy5zdGF0ZSAhPT0gU2hhcmRTdGF0ZS5SZXN1bWluZykge1xuICAgICAgICAgIC8vIEhFTExPIGhhcyBiZWVuIHNlbmQgb24gYSBub24gcmVzdW1lIGFjdGlvbi5cbiAgICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhlIHNoYXJkIHN0YXJ0cyBhIG5ldyBzZXNzaW9uLFxuICAgICAgICAgIC8vIHRoZXJlZm9yZSB0aGUgcmF0ZSBsaW1pdCBpbnRlcnZhbCBoYXMgYmVlbiByZXNldCB0b28uXG4gICAgICAgICAgdGhpcy5idWNrZXQgPSBjcmVhdGVMZWFreUJ1Y2tldCh7XG4gICAgICAgICAgICBtYXg6IHRoaXMuY2FsY3VsYXRlU2FmZVJlcXVlc3RzKCksXG4gICAgICAgICAgICByZWZpbGxJbnRlcnZhbDogNjAwMDAsXG4gICAgICAgICAgICByZWZpbGxBbW91bnQ6IHRoaXMuY2FsY3VsYXRlU2FmZVJlcXVlc3RzKCksXG4gICAgICAgICAgICAvLyBXYWl0aW5nIGFjcXVpcmVzIHNob3VsZCBub3QgYmUgbG9zdCBvbiBhIHJlLWlkZW50aWZ5LlxuICAgICAgICAgICAgd2FpdGluZzogdGhpcy5idWNrZXQud2FpdGluZyxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ldmVudHMuaGVsbG8/Lih0aGlzKVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlIEdhdGV3YXlPcGNvZGVzLkhlYXJ0YmVhdEFDSzoge1xuICAgICAgICB0aGlzLmV2ZW50cy5oZWFydGJlYXRBY2s/Lih0aGlzKVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlIEdhdGV3YXlPcGNvZGVzLlJlY29ubmVjdDoge1xuICAgICAgICAvLyAgIGdhdGV3YXkuZGVidWcoXCJHVyBSRUNPTk5FQ1RcIiwgeyBzaGFyZElkIH0pO1xuXG4gICAgICAgIHRoaXMuZXZlbnRzLnJlcXVlc3RlZFJlY29ubmVjdD8uKHRoaXMpXG5cbiAgICAgICAgYXdhaXQgdGhpcy5yZXN1bWUoKVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlIEdhdGV3YXlPcGNvZGVzLkludmFsaWRTZXNzaW9uOiB7XG4gICAgICAgIC8vICAgZ2F0ZXdheS5kZWJ1ZyhcIkdXIElOVkFMSURfU0VTU0lPTlwiLCB7IHNoYXJkSWQsIHBheWxvYWQ6IHBhY2tldCB9KTtcbiAgICAgICAgY29uc3QgcmVzdW1hYmxlID0gcGFja2V0LmQgYXMgYm9vbGVhblxuXG4gICAgICAgIHRoaXMuZXZlbnRzLmludmFsaWRTZXNzaW9uPy4odGhpcywgcmVzdW1hYmxlKVxuXG4gICAgICAgIC8vIFdlIG5lZWQgdG8gd2FpdCBmb3IgYSByYW5kb20gYW1vdW50IG9mIHRpbWUgYmV0d2VlbiAxIGFuZCA1XG4gICAgICAgIC8vIFJlZmVyZW5jZTogaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL2dhdGV3YXkjcmVzdW1pbmdcbiAgICAgICAgYXdhaXQgZGVsYXkoTWF0aC5mbG9vcigoTWF0aC5yYW5kb20oKSAqIDQgKyAxKSAqIDEwMDApKVxuXG4gICAgICAgIHRoaXMucmVzb2x2ZXMuZ2V0KCdJTlZBTElEX1NFU1NJT04nKT8uKHBhY2tldClcbiAgICAgICAgdGhpcy5yZXNvbHZlcy5kZWxldGUoJ0lOVkFMSURfU0VTU0lPTicpXG5cbiAgICAgICAgLy8gV2hlbiByZXN1bWFibGUgaXMgZmFsc2Ugd2UgbmVlZCB0byByZS1pZGVudGlmeVxuICAgICAgICBpZiAoIXJlc3VtYWJsZSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuaWRlbnRpZnkoKVxuXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBzZXNzaW9uIGlzIGludmFsaWQgYnV0IGFwcGFyZW50bHkgaXQgaXMgcmVzdW1hYmxlXG4gICAgICAgIGF3YWl0IHRoaXMucmVzdW1lKClcblxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYWNrZXQudCA9PT0gJ1JFU1VNRUQnKSB7XG4gICAgICAvLyBnYXRld2F5LmRlYnVnKFwiR1cgUkVTVU1FRFwiLCB7IHNoYXJkSWQgfSk7XG5cbiAgICAgIHRoaXMuc3RhdGUgPSBTaGFyZFN0YXRlLkNvbm5lY3RlZFxuICAgICAgdGhpcy5ldmVudHMucmVzdW1lZD8uKHRoaXMpXG5cbiAgICAgIC8vIENvbnRpbnVlIHRoZSByZXF1ZXN0cyB3aGljaCBoYXZlIGJlZW4gcXVldWVkIHNpbmNlIHRoZSBzaGFyZCB3ZW50IG9mZmxpbmUuXG4gICAgICB0aGlzLm9mZmxpbmVTZW5kUXVldWUubWFwKChyZXNvbHZlKSA9PiByZXNvbHZlKCkpXG5cbiAgICAgIHRoaXMucmVzb2x2ZXMuZ2V0KCdSRVNVTUVEJyk/LihwYWNrZXQpXG4gICAgICB0aGlzLnJlc29sdmVzLmRlbGV0ZSgnUkVTVU1FRCcpXG4gICAgfSBlbHNlIGlmIChwYWNrZXQudCA9PT0gJ1JFQURZJykge1xuICAgICAgLy8gSW1wb3J0YW50IGZvciBmdXR1cmUgcmVzdW1lcy5cblxuICAgICAgY29uc3QgcGF5bG9hZCA9IHBhY2tldC5kIGFzIERpc2NvcmRSZWFkeVxuXG4gICAgICB0aGlzLnJlc3VtZUdhdGV3YXlVcmwgPSBwYXlsb2FkLnJlc3VtZV9nYXRld2F5X3VybFxuXG4gICAgICB0aGlzLnNlc3Npb25JZCA9IHBheWxvYWQuc2Vzc2lvbl9pZFxuICAgICAgdGhpcy5zdGF0ZSA9IFNoYXJkU3RhdGUuQ29ubmVjdGVkXG5cbiAgICAgIC8vIENvbnRpbnVlIHRoZSByZXF1ZXN0cyB3aGljaCBoYXZlIGJlZW4gcXVldWVkIHNpbmNlIHRoZSBzaGFyZCB3ZW50IG9mZmxpbmUuXG4gICAgICAvLyBJbXBvcnRhbnQgd2hlbiB0aGlzIGlzIGEgcmUtaWRlbnRpZnlcbiAgICAgIHRoaXMub2ZmbGluZVNlbmRRdWV1ZS5tYXAoKHJlc29sdmUpID0+IHJlc29sdmUoKSlcblxuICAgICAgdGhpcy5yZXNvbHZlcy5nZXQoJ1JFQURZJyk/LihwYWNrZXQpXG4gICAgICB0aGlzLnJlc29sdmVzLmRlbGV0ZSgnUkVBRFknKVxuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgc2VxdWVuY2UgbnVtYmVyIGlmIGl0IGlzIHByZXNlbnRcbiAgICAvLyBgc2AgY2FuIGJlIGVpdGhlciBgbnVsbGAgb3IgYSBgbnVtYmVyYC5cbiAgICAvLyBJbiBvcmRlciB0byBwcmV2ZW50IHVwZGF0ZSBtaXNzZXMgd2hlbiBgc2AgaXMgYDBgIHdlIGNoZWNrIGFnYWluc3QgbnVsbC5cbiAgICBpZiAocGFja2V0LnMgIT09IG51bGwpIHtcbiAgICAgIHRoaXMucHJldmlvdXNTZXF1ZW5jZU51bWJlciA9IHBhY2tldC5zXG4gICAgfVxuXG4gICAgLy8gVGhlIG5lY2Vzc2FyeSBoYW5kbGluZyByZXF1aXJlZCBmb3IgdGhlIFNoYXJkcyBjb25uZWN0aW9uIGhhcyBiZWVuIGZpbmlzaGVkLlxuICAgIC8vIE5vdyB0aGUgZXZlbnQgY2FuIGJlIHNhZmVseSBmb3J3YXJkZWQuXG4gICAgdGhpcy5ldmVudHMubWVzc2FnZT8uKHRoaXMsIGNhbWVsaXplKHBhY2tldCkpXG4gIH1cblxuICAvKiogSGFuZGxlIGFuIGluY29taW5nIGdhdGV3YXkgbWVzc2FnZS4gKi9cbiAgYXN5bmMgaGFuZGxlTWVzc2FnZShtZXNzYWdlOiBXZWJTb2NrZXQuTWVzc2FnZUV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IHByZVByb2Nlc3NNZXNzYWdlID0gbWVzc2FnZS5kYXRhXG5cbiAgICAvLyBJZiBtZXNzYWdlIGNvbXByZXNzaW9uIGlzIGVuYWJsZWQsXG4gICAgLy8gRGlzY29yZCBtaWdodCBzZW5kIHpsaWIgY29tcHJlc3NlZCBwYXlsb2Fkcy5cbiAgICBpZiAodGhpcy5nYXRld2F5Q29uZmlnLmNvbXByZXNzICYmIHByZVByb2Nlc3NNZXNzYWdlIGluc3RhbmNlb2YgQmxvYikge1xuICAgICAgcHJlUHJvY2Vzc01lc3NhZ2UgPSBpbmZsYXRlU3luYyhhd2FpdCBwcmVQcm9jZXNzTWVzc2FnZS5hcnJheUJ1ZmZlcigpKS50b1N0cmluZygpXG4gICAgfVxuXG4gICAgLy8gU2FmZWd1YXJkIGluY2FzZSBkZWNvbXByZXNzaW9uIGZhaWxlZCB0byBtYWtlIGEgc3RyaW5nLlxuICAgIGlmICh0eXBlb2YgcHJlUHJvY2Vzc01lc3NhZ2UgIT09ICdzdHJpbmcnKSByZXR1cm5cblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZURpc2NvcmRQYWNrZXQoSlNPTi5wYXJzZShwcmVQcm9jZXNzTWVzc2FnZSkgYXMgRGlzY29yZEdhdGV3YXlQYXlsb2FkKVxuICB9XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlIGluIG9yZGVyIHRvIG1ha2UgdGhlIHNoYXJkcyBwcmVzZW5jZS5cbiAgICogYXN5bmMgaW4gY2FzZSBkZXZzIGNyZWF0ZSB0aGUgcHJlc2VuY2UgYmFzZWQgb24gZWcuIGRhdGFiYXNlIHZhbHVlcy5cbiAgICogUGFzc2luZyB0aGUgc2hhcmQncyBpZCB0aGVyZSB0byBtYWtlIGl0IGVhc2llciBmb3IgdGhlIGRldiB0byB1c2UgdGhpcyBmdW5jdGlvbi5cbiAgICovXG4gIGFzeW5jIG1ha2VQcmVzZW5jZSgpOiBQcm9taXNlPEJvdFN0YXR1c1VwZGF0ZSB8IHVuZGVmaW5lZD4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLXJldHVyblxuICAgIHJldHVyblxuICB9XG5cbiAgLyoqIFRoaXMgZnVuY3Rpb24gY29tbXVuaWNhdGVzIHdpdGggdGhlIG1hbmFnZW1lbnQgcHJvY2VzcywgaW4gb3JkZXIgdG8ga25vdyB3aGV0aGVyIGl0cyBmcmVlIHRvIGlkZW50aWZ5LiBXaGVuIHRoaXMgZnVuY3Rpb24gcmVzb2x2ZXMsIHRoaXMgbWVhbnMgdGhhdCB0aGUgc2hhcmQgaXMgYWxsb3dlZCB0byBzZW5kIGFuIGlkZW50aWZ5IHBheWxvYWQgdG8gZGlzY29yZC4gKi9cbiAgYXN5bmMgcmVxdWVzdElkZW50aWZ5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIFRPRE86IGhvdyB0byBoYW5kbGUgdGhpc1xuICAgIC8vIHJldHVybiBhd2FpdCBvcHRpb25zLnJlcXVlc3RJZGVudGlmeSh0aGlzLmlkKVxuICB9XG5cbiAgLyoqIFN0YXJ0IHNlbmRpbmcgaGVhcnRiZWF0IHBheWxvYWRzIHRvIERpc2NvcmQgaW4gdGhlIHByb3ZpZGVkIGludGVydmFsLiAqL1xuICBzdGFydEhlYXJ0YmVhdGluZyhpbnRlcnZhbDogbnVtYmVyKTogdm9pZCB7XG4gICAgLy8gICBnYXRld2F5LmRlYnVnKFwiR1cgSEVBUlRCRUFUSU5HX1NUQVJURURcIiwgeyBzaGFyZElkLCBpbnRlcnZhbCB9KTtcblxuICAgIHRoaXMuaGVhcnQuaW50ZXJ2YWwgPSBpbnRlcnZhbFxuXG4gICAgLy8gT25seSBzZXQgdGhlIHNoYXJkJ3Mgc3RhdGUgdG8gYFVuaWRlbnRpZmllZGBcbiAgICAvLyBpZiBoZWFydGJlYXRpbmcgaGFzIG5vdCBiZWVuIHN0YXJ0ZWQgZHVlIHRvIGFuIGlkZW50aWZ5IG9yIHJlc3VtZSBhY3Rpb24uXG4gICAgaWYgKFtTaGFyZFN0YXRlLkRpc2Nvbm5lY3RlZCwgU2hhcmRTdGF0ZS5PZmZsaW5lXS5pbmNsdWRlcyh0aGlzLnN0YXRlKSkge1xuICAgICAgdGhpcy5zdGF0ZSA9IFNoYXJkU3RhdGUuVW5pZGVudGlmaWVkXG4gICAgfVxuXG4gICAgLy8gVGhlIGZpcnN0IGhlYXJ0YmVhdCBuZWVkcyB0byBiZSBzZW5kIHdpdGggYSByYW5kb20gZGVsYXkgYmV0d2VlbiBgMGAgYW5kIGBpbnRlcnZhbGBcbiAgICAvLyBVc2luZyBhIGBzZXRUaW1lb3V0KF8sIGppdHRlcilgIGhlcmUgdG8gYWNjb21wbGlzaCB0aGF0LlxuICAgIC8vIGBNYXRoLnJhbmRvbSgpYCBjYW4gYmUgYDBgIHNvIHdlIHVzZSBgMC41YCBpZiB0aGlzIGhhcHBlbnNcbiAgICAvLyBSZWZlcmVuY2U6IGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5I2hlYXJ0YmVhdGluZ1xuICAgIGNvbnN0IGppdHRlciA9IE1hdGguY2VpbCh0aGlzLmhlYXJ0LmludGVydmFsICogKE1hdGgucmFuZG9tKCkgfHwgMC41KSlcbiAgICB0aGlzLmhlYXJ0LnRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmlzT3BlbigpKSByZXR1cm5cblxuICAgICAgLy8gVXNpbmcgYSBkaXJlY3Qgc29ja2V0LnNlbmQgY2FsbCBoZXJlIGJlY2F1c2UgaGVhcnRiZWF0IHJlcXVlc3RzIGFyZSByZXNlcnZlZCBieSB1cy5cbiAgICAgIHRoaXMuc29ja2V0Py5zZW5kKFxuICAgICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgb3A6IEdhdGV3YXlPcGNvZGVzLkhlYXJ0YmVhdCxcbiAgICAgICAgICBkOiB0aGlzLnByZXZpb3VzU2VxdWVuY2VOdW1iZXIsXG4gICAgICAgIH0pLFxuICAgICAgKVxuXG4gICAgICB0aGlzLmhlYXJ0Lmxhc3RCZWF0ID0gRGF0ZS5ub3coKVxuICAgICAgdGhpcy5oZWFydC5hY2tub3dsZWRnZWQgPSBmYWxzZVxuXG4gICAgICAvLyBBZnRlciB0aGUgcmFuZG9tIGhlYXJ0YmVhdCBqaXR0ZXIgd2UgY2FuIHN0YXJ0IGEgbm9ybWFsIGludGVydmFsLlxuICAgICAgdGhpcy5oZWFydC5pbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNPcGVuKCkpIHJldHVyblxuICAgICAgICAvLyBnYXRld2F5LmRlYnVnKFwiR1cgREVCVUdcIiwgYFJ1bm5pbmcgc2V0SW50ZXJ2YWwgaW4gaGVhcnRiZWF0IGZpbGUuIFNoYXJkOiAke3NoYXJkSWR9YCk7XG5cbiAgICAgICAgLy8gZ2F0ZXdheS5kZWJ1ZyhcIkdXIEhFQVJUQkVBVElOR1wiLCB7IHNoYXJkSWQsIHNoYXJkOiBjdXJyZW50U2hhcmQgfSk7XG5cbiAgICAgICAgLy8gVGhlIFNoYXJkIGRpZCBub3QgcmVjZWl2ZSBhIGhlYXJ0YmVhdCBBQ0sgZnJvbSBEaXNjb3JkIGluIHRpbWUsXG4gICAgICAgIC8vIHRoZXJlZm9yZSB3ZSBoYXZlIHRvIGFzc3VtZSB0aGF0IHRoZSBjb25uZWN0aW9uIGhhcyBmYWlsZWQgb3IgZ290IFwiem9tYmllZFwiLlxuICAgICAgICAvLyBUaGUgU2hhcmQgbmVlZHMgdG8gc3RhcnQgYSByZS1pZGVudGlmeSBhY3Rpb24gYWNjb3JkaW5nbHkuXG4gICAgICAgIC8vIFJlZmVyZW5jZTogaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL2dhdGV3YXkjaGVhcnRiZWF0aW5nLWV4YW1wbGUtZ2F0ZXdheS1oZWFydGJlYXQtYWNrXG4gICAgICAgIGlmICghdGhpcy5oZWFydC5hY2tub3dsZWRnZWQpIHtcbiAgICAgICAgICB0aGlzLmNsb3NlKFNoYXJkU29ja2V0Q2xvc2VDb2Rlcy5ab21iaWVkQ29ubmVjdGlvbiwgJ1pvbWJpZWQgY29ubmVjdGlvbiwgZGlkIG5vdCByZWNlaXZlIGFuIGhlYXJ0YmVhdCBBQ0sgaW4gdGltZS4nKVxuXG4gICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaWRlbnRpZnkoKVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oZWFydC5hY2tub3dsZWRnZWQgPSBmYWxzZVxuXG4gICAgICAgIC8vIFVzaW5nIGEgZGlyZWN0IHNvY2tldC5zZW5kIGNhbGwgaGVyZSBiZWNhdXNlIGhlYXJ0YmVhdCByZXF1ZXN0cyBhcmUgcmVzZXJ2ZWQgYnkgdXMuXG4gICAgICAgIHRoaXMuc29ja2V0Py5zZW5kKFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIG9wOiBHYXRld2F5T3Bjb2Rlcy5IZWFydGJlYXQsXG4gICAgICAgICAgICBkOiB0aGlzLnByZXZpb3VzU2VxdWVuY2VOdW1iZXIsXG4gICAgICAgICAgfSksXG4gICAgICAgIClcblxuICAgICAgICB0aGlzLmhlYXJ0Lmxhc3RCZWF0ID0gRGF0ZS5ub3coKVxuXG4gICAgICAgIHRoaXMuZXZlbnRzLmhlYXJ0YmVhdD8uKHRoaXMpXG4gICAgICB9LCB0aGlzLmhlYXJ0LmludGVydmFsKVxuICAgIH0sIGppdHRlcilcbiAgfVxuXG4gIC8qKiBTdG9wIHRoZSBoZWFydGJlYXRpbmcgcHJvY2VzcyB3aXRoIGRpc2NvcmQuICovXG4gIHN0b3BIZWFydGJlYXRpbmcoKTogdm9pZCB7XG4gICAgLy8gQ2xlYXIgdGhlIHJlZ3VsYXIgaGVhcnRiZWF0IGludGVydmFsLlxuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5oZWFydC5pbnRlcnZhbElkKVxuICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgU2hhcmQgZ290IGNsb3NlZCBiZWZvcmUgdGhlIGZpcnN0IGppdHRlcmVkIGhlYXJ0YmVhdC5cbiAgICAvLyBUbyBnbyBzYWZlIHdlIHNob3VsZCBjbGVhciB0aGUgcmVsYXRlZCB0aW1lb3V0IHRvby5cbiAgICBjbGVhclRpbWVvdXQodGhpcy5oZWFydC50aW1lb3V0SWQpXG4gIH1cblxuICAvKipcbiAgICogQ29ubmVjdHMgdGhlIGJvdCB1c2VyIHRvIGEgdm9pY2Ugb3Igc3RhZ2UgY2hhbm5lbC5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBzZW5kcyB0aGUgX1VwZGF0ZSBWb2ljZSBTdGF0ZV8gZ2F0ZXdheSBjb21tYW5kIG92ZXIgdGhlIGdhdGV3YXkgYmVoaW5kIHRoZSBzY2VuZXMuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0aGUgdm9pY2UgY2hhbm5lbCB0byBsZWF2ZSBpcyBpbi5cbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB5b3Ugd2FudCB0byBqb2luLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYENPTk5FQ1RgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX1ZvaWNlIFN0YXRlIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL2dhdGV3YXkjdXBkYXRlLXZvaWNlLXN0YXRlfVxuICAgKi9cbiAgYXN5bmMgam9pblZvaWNlQ2hhbm5lbChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgY2hhbm5lbElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9ucz86IEF0TGVhc3RPbmU8T21pdDxVcGRhdGVWb2ljZVN0YXRlLCAnZ3VpbGRJZCcgfCAnY2hhbm5lbElkJz4+LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsb2dnZXIuZGVidWcoYFtTaGFyZF0gam9pblZvaWNlQ2hhbm5lbCBndWlsZElkOiAke2d1aWxkSWR9IGNoYW5uZWxJZDogJHtjaGFubmVsSWR9YClcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zZW5kKHtcbiAgICAgIG9wOiBHYXRld2F5T3Bjb2Rlcy5Wb2ljZVN0YXRlVXBkYXRlLFxuICAgICAgZDoge1xuICAgICAgICBndWlsZF9pZDogZ3VpbGRJZC50b1N0cmluZygpLFxuICAgICAgICBjaGFubmVsX2lkOiBjaGFubmVsSWQudG9TdHJpbmcoKSxcbiAgICAgICAgc2VsZl9tdXRlOiBCb29sZWFuKG9wdGlvbnM/LnNlbGZNdXRlKSxcbiAgICAgICAgc2VsZl9kZWFmOiBvcHRpb25zPy5zZWxmRGVhZiA/PyB0cnVlLFxuICAgICAgfSxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEVkaXRzIHRoZSBib3Qgc3RhdHVzIGluIGFsbCBzaGFyZHMgdGhhdCB0aGlzIGdhdGV3YXkgbWFuYWdlcy5cbiAgICpcbiAgICogQHBhcmFtIGRhdGEgVGhlIHN0YXR1cyBkYXRhIHRvIHNldCB0aGUgYm90cyBzdGF0dXMgdG8uXG4gICAqIEByZXR1cm5zIFByb21pc2U8dm9pZD5cbiAgICovXG4gIGFzeW5jIGVkaXRCb3RTdGF0dXMoZGF0YTogU3RhdHVzVXBkYXRlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nZ2VyLmRlYnVnKGBbU2hhcmRdIGVkaXRCb3RTdGF0dXMgZGF0YTogJHtKU09OLnN0cmluZ2lmeShkYXRhKX1gKVxuICAgIHJldHVybiBhd2FpdCB0aGlzLmVkaXRTaGFyZFN0YXR1cyhkYXRhKVxuICB9XG5cbiAgLyoqXG4gICAqIEVkaXRzIHRoZSBib3QncyBzdGF0dXMgb24gb25lIHNoYXJkLlxuICAgKlxuICAgKiBAcGFyYW0gc2hhcmRJZCBUaGUgc2hhcmQgaWQgdG8gZWRpdCB0aGUgc3RhdHVzIGZvci5cbiAgICogQHBhcmFtIGRhdGEgVGhlIHN0YXR1cyBkYXRhIHRvIHNldCB0aGUgYm90cyBzdGF0dXMgdG8uXG4gICAqIEByZXR1cm5zIFByb21pc2U8dm9pZD5cbiAgICovXG4gIGFzeW5jIGVkaXRTaGFyZFN0YXR1cyhkYXRhOiBTdGF0dXNVcGRhdGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsb2dnZXIuZGVidWcoYFtTaGFyZF0gZWRpdFNoYXJkU3RhdHVzIHNoYXJkSWQ6ICR7dGhpcy5pZH0gLT4gZGF0YTogJHtKU09OLnN0cmluZ2lmeShkYXRhKX1gKVxuICAgIHJldHVybiBhd2FpdCB0aGlzLnNlbmQoe1xuICAgICAgb3A6IEdhdGV3YXlPcGNvZGVzLlByZXNlbmNlVXBkYXRlLFxuICAgICAgZDoge1xuICAgICAgICBzaW5jZTogbnVsbCxcbiAgICAgICAgYWZrOiBmYWxzZSxcbiAgICAgICAgYWN0aXZpdGllczogZGF0YS5hY3Rpdml0aWVzLFxuICAgICAgICBzdGF0dXM6IGRhdGEuc3RhdHVzLFxuICAgICAgfSxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGxpc3Qgb2YgbWVtYmVycyBmb3IgYSBndWlsZCBvdmVyIHRoZSBnYXRld2F5LlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBsaXN0IG9mIG1lbWJlcnMgZm9yLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZmV0Y2hpbmcgb2YgdGhlIG1lbWJlcnMuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIElmIHJlcXVlc3RpbmcgdGhlIGVudGlyZSBtZW1iZXIgbGlzdDpcbiAgICogLSBSZXF1aXJlcyB0aGUgYEdVSUxEX01FTUJFUlNgIGludGVudC5cbiAgICpcbiAgICogSWYgcmVxdWVzdGluZyBwcmVzZW5jZXMgKHtAbGluayBSZXF1ZXN0R3VpbGRNZW1iZXJzLnByZXNlbmNlcyB8IHByZXNlbmNlc30gc2V0IHRvIGB0cnVlYCk6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBHVUlMRF9QUkVTRU5DRVNgIGludGVudC5cbiAgICpcbiAgICogSWYgcmVxdWVzdGluZyBhIHByZWZpeCAoe0BsaW5rIFJlcXVlc3RHdWlsZE1lbWJlcnMucXVlcnkgfCBxdWVyeX0gbm9uLWB1bmRlZmluZWRgKTpcbiAgICogLSBSZXR1cm5zIGEgbWF4aW11bSBvZiAxMDAgbWVtYmVycy5cbiAgICpcbiAgICogSWYgcmVxdWVzdGluZyBhIHVzZXJzIGJ5IElEICh7QGxpbmsgUmVxdWVzdEd1aWxkTWVtYmVycy51c2VySWRzIHwgdXNlcklkc30gbm9uLWB1bmRlZmluZWRgKTpcbiAgICogLSBSZXR1cm5zIGEgbWF4aW11bSBvZiAxMDAgbWVtYmVycy5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgTWVtYmVycyBDaHVua18gZ2F0ZXdheSBldmVudCBmb3IgZXZlcnkgMTAwMCBtZW1iZXJzIGZldGNoZWQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5I3JlcXVlc3QtZ3VpbGQtbWVtYmVyc31cbiAgICovXG4gIGFzeW5jIHJlcXVlc3RNZW1iZXJzKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IE9taXQ8UmVxdWVzdEd1aWxkTWVtYmVycywgJ2d1aWxkSWQnPik6IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZE1lbWJlcltdPj4ge1xuICAgIC8vIFlvdSBjYW4gcmVxdWVzdCAxIG1lbWJlciB3aXRob3V0IHRoZSBpbnRlbnRcbiAgICAvLyBDaGVjayBpZiBpbnRlbnRzIGlzIG5vdCAwIGFzIHByb3h5IHdzIHdvbid0IHNldCBpbnRlbnRzIGluIG90aGVyIGluc3RhbmNlc1xuICAgIGlmICh0aGlzLmNvbm5lY3Rpb24uaW50ZW50cyAmJiAoIW9wdGlvbnM/LmxpbWl0IHx8IG9wdGlvbnMubGltaXQgPiAxKSAmJiAhKHRoaXMuY29ubmVjdGlvbi5pbnRlbnRzICYgR2F0ZXdheUludGVudHMuR3VpbGRNZW1iZXJzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNSVNTSU5HX0lOVEVOVF9HVUlMRF9NRU1CRVJTJylcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucz8udXNlcklkcz8ubGVuZ3RoKSB7XG4gICAgICBsb2dnZXIuZGVidWcoYFtTaGFyZF0gcmVxdWVzdE1lbWJlcnMgZ3VpbGRJZDogJHtndWlsZElkfSAtPiBzZXR0aW5nIHVzZXIgbGltaXQgYmFzZWQgb24gdXNlcklkcyBsZW5ndGg6ICR7b3B0aW9ucy51c2VySWRzLmxlbmd0aH1gKVxuICAgICAgb3B0aW9ucy5saW1pdCA9IG9wdGlvbnMudXNlcklkcy5sZW5ndGhcbiAgICB9XG5cbiAgICBjb25zdCBub25jZSA9IGAke2d1aWxkSWR9LSR7RGF0ZS5ub3coKX1gXG5cbiAgICAvLyBHYXRld2F5IGRvZXMgbm90IHJlcXVpcmUgY2FjaGluZyB0aGVzZSByZXF1ZXN0cyBzbyBkaXJlY3RseSBzZW5kIGFuZCByZXR1cm5cbiAgICBpZiAoIXRoaXMuY2FjaGUucmVxdWVzdE1lbWJlcnM/LmVuYWJsZWQpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgW1NoYXJkXSByZXF1ZXN0TWVtYmVycyBndWlsZElkOiAke2d1aWxkSWR9IC0+IHNraXBwaW5nIGNhY2hlIC0+IG9wdGlvbnMgJHtKU09OLnN0cmluZ2lmeShvcHRpb25zKX1gKVxuICAgICAgYXdhaXQgdGhpcy5zZW5kKHtcbiAgICAgICAgb3A6IEdhdGV3YXlPcGNvZGVzLlJlcXVlc3RHdWlsZE1lbWJlcnMsXG4gICAgICAgIGQ6IHtcbiAgICAgICAgICBndWlsZF9pZDogZ3VpbGRJZC50b1N0cmluZygpLFxuICAgICAgICAgIC8vIElmIGEgcXVlcnkgaXMgcHJvdmlkZWQgdXNlIGl0LCBPUiBpZiBhIGxpbWl0IGlzIE5PVCBwcm92aWRlZCB1c2UgXCJcIlxuICAgICAgICAgIHF1ZXJ5OiBvcHRpb25zPy5xdWVyeSA/PyAob3B0aW9ucz8ubGltaXQgPyB1bmRlZmluZWQgOiAnJyksXG4gICAgICAgICAgbGltaXQ6IG9wdGlvbnM/LmxpbWl0ID8/IDAsXG4gICAgICAgICAgcHJlc2VuY2VzOiBvcHRpb25zPy5wcmVzZW5jZXMgPz8gZmFsc2UsXG4gICAgICAgICAgdXNlcl9pZHM6IG9wdGlvbnM/LnVzZXJJZHM/Lm1hcCgoaWQpID0+IGlkLnRvU3RyaW5nKCkpLFxuICAgICAgICAgIG5vbmNlLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIHJldHVybiBbXVxuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgdGhpcy5jYWNoZS5yZXF1ZXN0TWVtYmVycz8ucGVuZGluZy5zZXQobm9uY2UsIHsgbm9uY2UsIHJlc29sdmUsIG1lbWJlcnM6IFtdIH0pXG5cbiAgICAgIGxvZ2dlci5kZWJ1ZyhgW1NoYXJkXSByZXF1ZXN0TWVtYmVycyBndWlsZElkOiAke2d1aWxkSWR9IC0+IHJlcXVlc3RpbmcgbWVtYmVycyAtPiBkYXRhOiAke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMpfWApXG4gICAgICB0aGlzLnNlbmQoe1xuICAgICAgICBvcDogR2F0ZXdheU9wY29kZXMuUmVxdWVzdEd1aWxkTWVtYmVycyxcbiAgICAgICAgZDoge1xuICAgICAgICAgIGd1aWxkX2lkOiBndWlsZElkLnRvU3RyaW5nKCksXG4gICAgICAgICAgLy8gSWYgYSBxdWVyeSBpcyBwcm92aWRlZCB1c2UgaXQsIE9SIGlmIGEgbGltaXQgaXMgTk9UIHByb3ZpZGVkIHVzZSBcIlwiXG4gICAgICAgICAgcXVlcnk6IG9wdGlvbnM/LnF1ZXJ5ID8/IChvcHRpb25zPy5saW1pdCA/IHVuZGVmaW5lZCA6ICcnKSxcbiAgICAgICAgICBsaW1pdDogb3B0aW9ucz8ubGltaXQgPz8gMCxcbiAgICAgICAgICBwcmVzZW5jZXM6IG9wdGlvbnM/LnByZXNlbmNlcyA/PyBmYWxzZSxcbiAgICAgICAgICB1c2VyX2lkczogb3B0aW9ucz8udXNlcklkcz8ubWFwKChpZCkgPT4gaWQudG9TdHJpbmcoKSksXG4gICAgICAgICAgbm9uY2UsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogTGVhdmVzIHRoZSB2b2ljZSBjaGFubmVsIHRoZSBib3QgdXNlciBpcyBjdXJyZW50bHkgaW4uXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gc2VuZHMgdGhlIF9VcGRhdGUgVm9pY2UgU3RhdGVfIGdhdGV3YXkgY29tbWFuZCBvdmVyIHRoZSBnYXRld2F5IGJlaGluZCB0aGUgc2NlbmVzLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdGhlIHZvaWNlIGNoYW5uZWwgdG8gbGVhdmUgaXMgaW4uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEZpcmVzIGEgX1ZvaWNlIFN0YXRlIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL2dhdGV3YXkjdXBkYXRlLXZvaWNlLXN0YXRlfVxuICAgKi9cbiAgYXN5bmMgbGVhdmVWb2ljZUNoYW5uZWwoZ3VpbGRJZDogQmlnU3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nZ2VyLmRlYnVnKGBbU2hhcmRdIGxlYXZlVm9pY2VDaGFubmVsIGd1aWxkSWQ6ICR7Z3VpbGRJZH0gU2hhcmQgJHt0aGlzLmlkfWApXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuc2VuZCh7XG4gICAgICBvcDogR2F0ZXdheU9wY29kZXMuVm9pY2VTdGF0ZVVwZGF0ZSxcbiAgICAgIGQ6IHtcbiAgICAgICAgZ3VpbGRfaWQ6IGd1aWxkSWQudG9TdHJpbmcoKSxcbiAgICAgICAgY2hhbm5lbF9pZDogbnVsbCxcbiAgICAgICAgc2VsZl9tdXRlOiBmYWxzZSxcbiAgICAgICAgc2VsZl9kZWFmOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJkQ3JlYXRlT3B0aW9ucyB7XG4gIC8qKiBUaGUgc2hhcmQgaWQgKi9cbiAgaWQ6IG51bWJlclxuICAvKiogVGhlIGNvbm5lY3Rpb24gZGV0YWlscyAqL1xuICBjb25uZWN0aW9uOiBTaGFyZEdhdGV3YXlDb25maWdcbiAgLyoqIFRoZSBldmVudCBoYW5kbGVycyBmb3IgZXZlbnRzIG9uIHRoZSBzaGFyZC4gKi9cbiAgZXZlbnRzOiBTaGFyZEV2ZW50c1xufVxuXG5leHBvcnQgZGVmYXVsdCBEaXNjb3JkZW5vU2hhcmRcbiJdLCJuYW1lcyI6WyJHYXRld2F5Q2xvc2VFdmVudENvZGVzIiwiR2F0ZXdheUludGVudHMiLCJHYXRld2F5T3Bjb2RlcyIsImNhbWVsaXplIiwiQ29sbGVjdGlvbiIsImNyZWF0ZUxlYWt5QnVja2V0IiwiZGVsYXkiLCJsb2dnZXIiLCJpbmZsYXRlU3luYyIsIldlYlNvY2tldCIsIlNoYXJkU29ja2V0Q2xvc2VDb2RlcyIsIlNoYXJkU3RhdGUiLCJEaXNjb3JkZW5vU2hhcmQiLCJtYXhSZXF1ZXN0c1BlclJhdGVMaW1pdFRpY2siLCJwcmV2aW91c1NlcXVlbmNlTnVtYmVyIiwicmF0ZUxpbWl0UmVzZXRJbnRlcnZhbCIsInN0YXRlIiwiT2ZmbGluZSIsInJlc3VtZUdhdGV3YXlVcmwiLCJldmVudHMiLCJvZmZsaW5lU2VuZFF1ZXVlIiwicmVzb2x2ZXMiLCJNYXAiLCJidWNrZXQiLCJtYXgiLCJyZWZpbGxJbnRlcnZhbCIsInJlZmlsbEFtb3VudCIsImNhY2hlIiwicmVxdWVzdE1lbWJlcnMiLCJlbmFibGVkIiwicGVuZGluZyIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImlkIiwiY29ubmVjdGlvbiIsImhlYXJ0IiwiYWNrbm93bGVkZ2VkIiwiaW50ZXJ2YWwiLCJnYXRld2F5Q29uZmlnIiwiY2FsY3VsYXRlU2FmZVJlcXVlc3RzIiwic2FmZVJlcXVlc3RzIiwiTWF0aCIsImNlaWwiLCJjaGVja09mZmxpbmUiLCJoaWdoUHJpb3JpdHkiLCJpc09wZW4iLCJQcm9taXNlIiwicmVzb2x2ZSIsInVuc2hpZnQiLCJwdXNoIiwiY2xvc2UiLCJjb2RlIiwicmVhc29uIiwic29ja2V0IiwicmVhZHlTdGF0ZSIsIk9QRU4iLCJjb25uZWN0IiwiSWRlbnRpZnlpbmciLCJSZXN1bWluZyIsImluY2x1ZGVzIiwiQ29ubmVjdGluZyIsImNvbm5lY3RpbmciLCJ1cmwiLCJVUkwiLCJvcmlnaW4iLCJzZWFyY2hQYXJhbXMiLCJzZXQiLCJ2ZXJzaW9uIiwidG9TdHJpbmciLCJvbmVycm9yIiwiZXZlbnQiLCJjb25zb2xlIiwibG9nIiwiZXJyb3IiLCJvbmNsb3NlIiwiaGFuZGxlQ2xvc2UiLCJvbm1lc3NhZ2UiLCJtZXNzYWdlIiwiaGFuZGxlTWVzc2FnZSIsIm9ub3BlbiIsIlVuaWRlbnRpZmllZCIsImNvbm5lY3RlZCIsImlkZW50aWZ5IiwiUmVJZGVudGlmeWluZyIsImlkZW50aWZ5aW5nIiwicmVxdWVzdElkZW50aWZ5Iiwic2VuZCIsIm9wIiwiSWRlbnRpZnkiLCJkIiwidG9rZW4iLCJjb21wcmVzcyIsInByb3BlcnRpZXMiLCJpbnRlbnRzIiwic2hhcmQiLCJ0b3RhbFNoYXJkcyIsInByZXNlbmNlIiwibWFrZVByZXNlbmNlIiwiaWRlbnRpZmllZCIsImRlbGV0ZSIsInJlc3VtZSIsIlJlc3VtZUNsb3NpbmdPbGRDb25uZWN0aW9uIiwic2Vzc2lvbklkIiwiUmVzdW1lIiwic2Vzc2lvbl9pZCIsInNlcSIsImFjcXVpcmUiLCJKU09OIiwic3RyaW5naWZ5Iiwic2h1dGRvd24iLCJTaHV0ZG93biIsInN0b3BIZWFydGJlYXRpbmciLCJUZXN0aW5nRmluaXNoZWQiLCJkaXNjb25uZWN0ZWQiLCJSZXNoYXJkZWQiLCJab21iaWVkQ29ubmVjdGlvbiIsIkRpc2Nvbm5lY3RlZCIsIlVua25vd25PcGNvZGUiLCJOb3RBdXRoZW50aWNhdGVkIiwiSW52YWxpZFNlcSIsIlJhdGVMaW1pdGVkIiwiU2Vzc2lvblRpbWVkT3V0IiwiQXV0aGVudGljYXRpb25GYWlsZWQiLCJJbnZhbGlkU2hhcmQiLCJTaGFyZGluZ1JlcXVpcmVkIiwiSW52YWxpZEFwaVZlcnNpb24iLCJJbnZhbGlkSW50ZW50cyIsIkRpc2FsbG93ZWRJbnRlbnRzIiwiRXJyb3IiLCJVbmtub3duRXJyb3IiLCJEZWNvZGVFcnJvciIsIkFscmVhZHlBdXRoZW50aWNhdGVkIiwiaGFuZGxlRGlzY29yZFBhY2tldCIsInBhY2tldCIsImxhc3RBY2siLCJEYXRlIiwibm93IiwibGFzdEJlYXQiLCJydHQiLCJIZWFydGJlYXQiLCJoZWFydGJlYXQiLCJIZWxsbyIsImhlYXJ0YmVhdF9pbnRlcnZhbCIsInN0YXJ0SGVhcnRiZWF0aW5nIiwid2FpdGluZyIsImhlbGxvIiwiSGVhcnRiZWF0QUNLIiwiaGVhcnRiZWF0QWNrIiwiUmVjb25uZWN0IiwicmVxdWVzdGVkUmVjb25uZWN0IiwiSW52YWxpZFNlc3Npb24iLCJyZXN1bWFibGUiLCJpbnZhbGlkU2Vzc2lvbiIsImZsb29yIiwicmFuZG9tIiwiZ2V0IiwidCIsIkNvbm5lY3RlZCIsInJlc3VtZWQiLCJtYXAiLCJwYXlsb2FkIiwicmVzdW1lX2dhdGV3YXlfdXJsIiwicyIsInByZVByb2Nlc3NNZXNzYWdlIiwiZGF0YSIsIkJsb2IiLCJhcnJheUJ1ZmZlciIsInBhcnNlIiwiaml0dGVyIiwidGltZW91dElkIiwic2V0VGltZW91dCIsImludGVydmFsSWQiLCJzZXRJbnRlcnZhbCIsImNsZWFySW50ZXJ2YWwiLCJjbGVhclRpbWVvdXQiLCJqb2luVm9pY2VDaGFubmVsIiwiZ3VpbGRJZCIsImNoYW5uZWxJZCIsImRlYnVnIiwiVm9pY2VTdGF0ZVVwZGF0ZSIsImd1aWxkX2lkIiwiY2hhbm5lbF9pZCIsInNlbGZfbXV0ZSIsIkJvb2xlYW4iLCJzZWxmTXV0ZSIsInNlbGZfZGVhZiIsInNlbGZEZWFmIiwiZWRpdEJvdFN0YXR1cyIsImVkaXRTaGFyZFN0YXR1cyIsIlByZXNlbmNlVXBkYXRlIiwic2luY2UiLCJhZmsiLCJhY3Rpdml0aWVzIiwic3RhdHVzIiwibGltaXQiLCJHdWlsZE1lbWJlcnMiLCJ1c2VySWRzIiwibGVuZ3RoIiwibm9uY2UiLCJtZW1iZXJzIiwiUmVxdWVzdEd1aWxkTWVtYmVycyIsInF1ZXJ5IiwidW5kZWZpbmVkIiwicHJlc2VuY2VzIiwidXNlcl9pZHMiLCJsZWF2ZVZvaWNlQ2hhbm5lbCJdLCJtYXBwaW5ncyI6IkFBVUEsT0FBU0EsMEJBQUFBLENBQXNCLENBQUVDLGtCQUFBQSxDQUFjLENBQUVDLGtCQUFBQSxDQUFjLEtBQVEsbUJBQW1CLEFBQzFGLFFBQVNDLFlBQUFBLENBQVEsQ0FBRUMsY0FBQUEsQ0FBVSxDQUFFQyxxQkFBQUEsQ0FBaUIsQ0FBRUMsU0FBQUEsQ0FBSyxDQUFFQyxVQUFBQSxDQUFNLEtBQVEsbUJBQW1CLEFBQzFGLFFBQVNDLGVBQUFBLENBQVcsS0FBUSxXQUFXLEFBQ3ZDLFFBQU9DLE1BQWUsSUFBSSxBQUcxQixRQUFTQyx5QkFBQUEsQ0FBcUIsQ0FBRUMsY0FBQUEsQ0FBVSxLQUFRLFlBQVksQUFFOUQsUUFBTyxNQUFNQyxnQkFRWEMsNEJBQXNDLEdBQUcsQUFFekNDLENBQUFBLHVCQUF3QyxJQUFJLEFBRTVDQyxDQUFBQSx1QkFBaUMsR0FBSyxBQU10Q0MsQ0FBQUEsTUFBUUwsRUFBV00sT0FBTyxBQUUxQkMsQ0FBQUEsaUJBQTJCLEVBQUUsQUFFN0JDLENBQUFBLE9BQXNCLENBQUMsQ0FBQyxBQUV4QkMsQ0FBQUEsaUJBQWlELEVBQUUsQUFFbkRDLENBQUFBLFNBQVcsSUFBSUMsR0FBd0YsQUFFdkdDLENBQUFBLE9BQVNsQixFQUFrQixDQUN6Qm1CLElBQUssSUFDTEMsZUFBZ0IsSUFDaEJDLGFBQWMsR0FDaEIsRUFBRSxBQUdGQyxDQUFBQSxNQUFRLENBQ05DLGVBQWdCLENBS2RDLFFBQVMsQ0FBQSxFQUVUQyxRQUFTLElB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
|
package/dist/types.d.ts
CHANGED
|
@@ -161,7 +161,7 @@ export interface UpdateVoiceState {
|
|
|
161
161
|
/** https://discord.com/developers/docs/topics/gateway-events#update-presence */
|
|
162
162
|
export interface StatusUpdate {
|
|
163
163
|
/** The user's activities */
|
|
164
|
-
activities?: Camelize<Array<Omit<DiscordActivity,
|
|
164
|
+
activities?: Camelize<Array<Omit<DiscordActivity, 'created_at'>>>;
|
|
165
165
|
/** The user's new status */
|
|
166
166
|
status: keyof typeof PresenceStatus;
|
|
167
167
|
}
|
package/dist/types.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export var ShardState;!function(ShardState){ShardState[ShardState.Connected=0]="Connected",ShardState[ShardState.Connecting=1]="Connecting",ShardState[ShardState.Disconnected=2]="Disconnected",ShardState[ShardState.Unidentified=3]="Unidentified",ShardState[ShardState.Identifying=4]="Identifying",ShardState[ShardState.Resuming=5]="Resuming",ShardState[ShardState.Offline=6]="Offline"}(ShardState||(ShardState={}));export var ShardSocketCloseCodes;!function(ShardSocketCloseCodes){ShardSocketCloseCodes[ShardSocketCloseCodes.Shutdown=3e3]="Shutdown",ShardSocketCloseCodes[ShardSocketCloseCodes.ResumeClosingOldConnection=3024]="ResumeClosingOldConnection",ShardSocketCloseCodes[ShardSocketCloseCodes.ZombiedConnection=3010]="ZombiedConnection",ShardSocketCloseCodes[ShardSocketCloseCodes.TestingFinished=3064]="TestingFinished",ShardSocketCloseCodes[ShardSocketCloseCodes.Resharded=3065]="Resharded",ShardSocketCloseCodes[ShardSocketCloseCodes.ReIdentifying=3066]="ReIdentifying"}(ShardSocketCloseCodes||(ShardSocketCloseCodes={}));
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFjdGl2aXR5VHlwZXMsIENhbWVsaXplLCBEaXNjb3JkQWN0aXZpdHksIERpc2NvcmRHYXRld2F5UGF5bG9hZCwgR2F0ZXdheU9wY29kZXMsIFByZXNlbmNlU3RhdHVzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgdHlwZSBTaGFyZCBmcm9tICcuL1NoYXJkLmpzJ1xuXG5leHBvcnQgZW51bSBTaGFyZFN0YXRlIHtcbiAgLyoqIFNoYXJkIGlzIGZ1bGx5IGNvbm5lY3RlZCB0byB0aGUgZ2F0ZXdheSBhbmQgcmVjZWl2aW5nIGV2ZW50cyBmcm9tIERpc2NvcmQuICovXG4gIENvbm5lY3RlZCA9IDAsXG4gIC8qKiBTaGFyZCBzdGFydGVkIHRvIGNvbm5lY3QgdG8gdGhlIGdhdGV3YXkuIFRoaXMgaXMgb25seSB1c2VkIGlmIHRoZSBzaGFyZCBpcyBub3QgY3VycmVudGx5IHRyeWluZyB0byBpZGVudGlmeSBvciByZXN1bWUuICovXG4gIENvbm5lY3RpbmcgPSAxLFxuICAvKiogU2hhcmQgZ290IGRpc2Nvbm5lY3RlZCBhbmQgcmVjb25uZWN0aW9uIGFjdGlvbnMgaGF2ZSBiZWVuIHN0YXJ0ZWQuICovXG4gIERpc2Nvbm5lY3RlZCA9IDIsXG4gIC8qKiBUaGUgc2hhcmQgaXMgY29ubmVjdGVkIHRvIHRoZSBnYXRld2F5IGJ1dCBvbmx5IGhlYXJ0YmVhdGluZy4gQXQgdGhpcyBzdGF0ZSB0aGUgc2hhcmQgaGFzIG5vdCBiZWVuIGlkZW50aWZpZWQgd2l0aCBkaXNjb3JkLiAqL1xuICBVbmlkZW50aWZpZWQgPSAzLFxuICAvKiogU2hhcmQgaXMgdHJ5aW5nIHRvIGlkZW50aWZ5IHdpdGggdGhlIGdhdGV3YXkgdG8gY3JlYXRlIGEgbmV3IHNlc3Npb24uICovXG4gIElkZW50aWZ5aW5nID0gNCxcbiAgLyoqIFNoYXJkIGlzIHRyeWluZyB0byByZXN1bWUgYSBzZXNzaW9uIHdpdGggdGhlIGdhdGV3YXkuICovXG4gIFJlc3VtaW5nID0gNSxcbiAgLyoqIFNoYXJkIGdvdCBzaHV0IGRvd24gc3R1ZGllZCBvciBkdWUgdG8gYSBub3QgKHNlbGYpIGZpeGFibGUgZXJyb3IgYW5kIG1heSBub3QgYXR0ZW1wdCB0byByZWNvbm5lY3Qgb24gaXRzIG93bi4gKi9cbiAgT2ZmbGluZSA9IDYsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmRHYXRld2F5Q29uZmlnIHtcbiAgLyoqIFdoZXRoZXIgaW5jb21pbmcgcGF5bG9hZHMgYXJlIGNvbXByZXNzZWQgdXNpbmcgemxpYi5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGNvbXByZXNzOiBib29sZWFuXG4gIC8qKiBUaGUgY2FsY3VsYXRlZCBpbnRlbnQgdmFsdWUgb2YgdGhlIGV2ZW50cyB3aGljaCB0aGUgc2hhcmQgc2hvdWxkIHJlY2VpdmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIGludGVudHM6IG51bWJlclxuICAvKiogSWRlbnRpZnkgcHJvcGVydGllcyB0byB1c2UgKi9cbiAgcHJvcGVydGllczoge1xuICAgIC8qKiBPcGVyYXRpbmcgc3lzdGVtIHRoZSBzaGFyZCBydW5zIG9uLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJkYXJ3aW5cIiB8IFwibGludXhcIiB8IFwid2luZG93c1wiXG4gICAgICovXG4gICAgb3M6IHN0cmluZ1xuICAgIC8qKiBUaGUgXCJicm93c2VyXCIgd2hlcmUgdGhpcyBzaGFyZCBpcyBydW5uaW5nIG9uLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJEaXNjb3JkZW5vXCJcbiAgICAgKi9cbiAgICBicm93c2VyOiBzdHJpbmdcbiAgICAvKiogVGhlIGRldmljZSBvbiB3aGljaCB0aGUgc2hhcmQgaXMgcnVubmluZy5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFwiRGlzY29yZGVub1wiXG4gICAgICovXG4gICAgZGV2aWNlOiBzdHJpbmdcbiAgfVxuICAvKiogQm90IHRva2VuIHdoaWNoIGlzIHVzZWQgdG8gY29ubmVjdCB0byBEaXNjb3JkICovXG4gIHRva2VuOiBzdHJpbmdcbiAgLyoqIFRoZSBVUkwgb2YgdGhlIGdhdGV3YXkgd2hpY2ggc2hvdWxkIGJlIGNvbm5lY3RlZCB0by5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJ3c3M6Ly9nYXRld2F5LmRpc2NvcmQuZ2dcIlxuICAgKi9cbiAgdXJsOiBzdHJpbmdcbiAgLyoqIFRoZSBnYXRld2F5IHZlcnNpb24gd2hpY2ggc2hvdWxkIGJlIHVzZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDEwXG4gICAqL1xuICB2ZXJzaW9uOiBudW1iZXJcbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBudW1iZXIgb2Ygc2hhcmRzIHRvIGNvbm5lY3QgdG8gYWNyb3NzIHRoZSBlbnRpcmUgYm90LlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICB0b3RhbFNoYXJkczogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmRIZWFydCB7XG4gIC8qKiBXaGV0aGVyIG9yIG5vdCB0aGUgaGVhcnRiZWF0IHdhcyBhY2tub3dsZWRnZWQgYnkgRGlzY29yZCBpbiB0aW1lLiAqL1xuICBhY2tub3dsZWRnZWQ6IGJvb2xlYW5cbiAgLyoqIEludGVydmFsIGJldHdlZW4gaGVhcnRiZWF0cyByZXF1ZXN0ZWQgYnkgRGlzY29yZC4gKi9cbiAgaW50ZXJ2YWw6IG51bWJlclxuICAvKiogSWQgb2YgdGhlIGludGVydmFsLCB3aGljaCBpcyB1c2VkIGZvciBzZW5kaW5nIHRoZSBoZWFydGJlYXRzLiAqL1xuICBpbnRlcnZhbElkPzogTm9kZUpTLlRpbWVyXG4gIC8qKiBVbml4IChpbiBtaWxsaXNlY29uZHMpIHRpbWVzdGFtcCB3aGVuIHRoZSBsYXN0IGhlYXJ0YmVhdCBBQ0sgd2FzIHJlY2VpdmVkIGZyb20gRGlzY29yZC4gKi9cbiAgbGFzdEFjaz86IG51bWJlclxuICAvKiogVW5peCB0aW1lc3RhbXAgKGluIG1pbGxpc2Vjb25kcykgd2hlbiB0aGUgbGFzdCBoZWFydGJlYXQgd2FzIHNlbnQuICovXG4gIGxhc3RCZWF0PzogbnVtYmVyXG4gIC8qKiBSb3VuZCB0cmlwIHRpbWUgKGluIG1pbGxpc2Vjb25kcykgZnJvbSBTaGFyZCB0byBEaXNjb3JkIGFuZCBiYWNrLlxuICAgKiBDYWxjdWxhdGVkIHVzaW5nIHRoZSBoZWFydGJlYXQgc3lzdGVtLlxuICAgKiBOb3RlOiB0aGlzIHZhbHVlIGlzIHVuZGVmaW5lZCB1bnRpbCB0aGUgZmlyc3QgaGVhcnRiZWF0IHRvIERpc2NvcmQgaGFzIGhhcHBlbmVkLlxuICAgKi9cbiAgcnR0PzogbnVtYmVyXG4gIC8qKiBJZCBvZiB0aGUgdGltZW91dCB3aGljaCBpcyB1c2VkIGZvciBzZW5kaW5nIHRoZSBmaXJzdCBoZWFydGJlYXQgdG8gRGlzY29yZCBzaW5jZSBpdCdzIFwic3BlY2lhbFwiLiAqL1xuICB0aW1lb3V0SWQ/OiBOb2RlSlMuVGltZW91dFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJkRXZlbnRzIHtcbiAgLyoqIEEgaGVhcnRiZWF0IGhhcyBiZWVuIHNlbmQuICovXG4gIGhlYXJ0YmVhdD86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIEEgaGVhcnRiZWF0IEFDSyB3YXMgcmVjZWl2ZWQuICovXG4gIGhlYXJ0YmVhdEFjaz86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIFNoYXJkIGhhcyByZWNlaXZlZCBhIEhlbGxvIHBheWxvYWQuICovXG4gIGhlbGxvPzogKHNoYXJkOiBTaGFyZCkgPT4gdW5rbm93blxuICAvKiogVGhlIFNoYXJkcyBzZXNzaW9uIGhhcyBiZWVuIGludmFsaWRhdGVkLiAqL1xuICBpbnZhbGlkU2Vzc2lvbj86IChzaGFyZDogU2hhcmQsIHJlc3VtYWJsZTogYm9vbGVhbikgPT4gdW5rbm93blxuICAvKiogVGhlIHNoYXJkIGhhcyBzdGFydGVkIGEgcmVzdW1lIGFjdGlvbi4gKi9cbiAgcmVzdW1pbmc/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBUaGUgc2hhcmQgaGFzIHN1Y2Nlc3NmdWxseSByZXN1bWVkIGFuIG9sZCBzZXNzaW9uLiAqL1xuICByZXN1bWVkPzogKHNoYXJkOiBTaGFyZCkgPT4gdW5rbm93blxuICAvKiogRGlzY29yZCBoYXMgcmVxdWVzdGVkIHRoZSBTaGFyZCB0byByZWNvbm5lY3QuICovXG4gIHJlcXVlc3RlZFJlY29ubmVjdD86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIFRoZSBzaGFyZCBzdGFydGVkIHRvIGNvbm5lY3QgdG8gRGlzY29yZCdzIGdhdGV3YXkuICovXG4gIGNvbm5lY3Rpbmc/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBUaGUgc2hhcmQgaXMgY29ubmVjdGVkIHdpdGggRGlzY29yZCdzIGdhdGV3YXkuICovXG4gIGNvbm5lY3RlZD86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIFRoZSBzaGFyZCBoYXMgYmVlbiBkaXNjb25uZWN0ZWQgZnJvbSBEaXNjb3JkJ3MgZ2F0ZXdheS4gKi9cbiAgZGlzY29ubmVjdGVkPzogKHNoYXJkOiBTaGFyZCkgPT4gdW5rbm93blxuICAvKiogVGhlIHNoYXJkIGhhcyBzdGFydGVkIHRvIGlkZW50aWZ5IGl0c2VsZiB0byBEaXNjb3JkLiAqL1xuICBpZGVudGlmeWluZz86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIFRoZSBzaGFyZCBoYXMgc3VjY2Vzc2Z1bGx5IGJlZW4gaWRlbnRpZmllZCBpdHNlbGYgd2l0aCBEaXNjb3JkLiAqL1xuICBpZGVudGlmaWVkPzogKHNoYXJkOiBTaGFyZCkgPT4gdW5rbm93blxuICAvKiogVGhlIHNoYXJkIGhhcyByZWNlaXZlZCBhIG1lc3NhZ2UgZnJvbSBEaXNjb3JkLiAqL1xuICBtZXNzYWdlPzogKHNoYXJkOiBTaGFyZCwgcGF5bG9hZDogQ2FtZWxpemU8RGlzY29yZEdhdGV3YXlQYXlsb2FkPikgPT4gdW5rbm93blxufVxuXG5leHBvcnQgZW51bSBTaGFyZFNvY2tldENsb3NlQ29kZXMge1xuICAvKiogQSByZWd1bGFyIFNoYXJkIHNodXRkb3duLiAqL1xuICBTaHV0ZG93biA9IDMwMDAsXG4gIC8qKiBBIHJlc3VtZSBoYXMgYmVlbiByZXF1ZXN0ZWQgYW5kIHRoZXJlZm9yZSB0aGUgb2xkIGNvbm5lY3Rpb24gbmVlZHMgdG8gYmUgY2xvc2VkLiAqL1xuICBSZXN1bWVDbG9zaW5nT2xkQ29ubmVjdGlvbiA9IDMwMjQsXG4gIC8qKiBEaWQgbm90IHJlY2VpdmUgYSBoZWFydGJlYXQgQUNLIGluIHRpbWUuXG4gICAqIENsb3NpbmcgdGhlIHNoYXJkIGFuZCBjcmVhdGluZyBhIG5ldyBzZXNzaW9uLlxuICAgKi9cbiAgWm9tYmllZENvbm5lY3Rpb24gPSAzMDEwLFxuICAvKiogRGlzY29yZGVubydzIGdhdGV3YXkgdGVzdHMgaGFlIGJlZW4gZmluaXNoZWQsIHRoZXJlZm9yZSB0aGUgU2hhcmQgY2FuIGJlIHR1cm5lZCBvZmYuICovXG4gIFRlc3RpbmdGaW5pc2hlZCA9IDMwNjQsXG4gIC8qKiBTcGVjaWFsIGNsb3NlIGNvZGUgcmVzZXJ2ZWQgZm9yIERpc2NvcmRlbm8ncyB6ZXJvLWRvd250aW1lIHJlc2hhcmRpbmcgc3lzdGVtLiAqL1xuICBSZXNoYXJkZWQgPSAzMDY1LFxuICAvKiogU2hhcmQgaXMgcmUtaWRlbnRpZnlpbmcgdGhlcmVmb3JlIHRoZSBvbGQgY29ubmVjdGlvbiBuZWVkcyB0byBiZSBjbG9zZWQuICovXG4gIFJlSWRlbnRpZnlpbmcgPSAzMDY2LFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJkU29ja2V0UmVxdWVzdCB7XG4gIC8qKiBUaGUgT1AtQ29kZSBmb3IgdGhlIHBheWxvYWQgdG8gc2VuZC4gKi9cbiAgb3A6IEdhdGV3YXlPcGNvZGVzXG4gIC8qKiBQYXlsb2FkIGRhdGEuICovXG4gIGQ6IHVua25vd25cbn1cblxuLyoqIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5LWV2ZW50cyN1cGRhdGUtcHJlc2VuY2UgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQm90U3RhdHVzVXBkYXRlIHtcbiAgLy8gLyoqIFVuaXggdGltZSAoaW4gbWlsbGlzZWNvbmRzKSBvZiB3aGVuIHRoZSBjbGllbnQgd2VudCBpZGxlLCBvciBudWxsIGlmIHRoZSBjbGllbnQgaXMgbm90IGlkbGUgKi9cbiAgc2luY2U6IG51bWJlciB8IG51bGxcbiAgLyoqIFRoZSB1c2VyJ3MgYWN0aXZpdGllcyAqL1xuICBhY3Rpdml0aWVzOiBCb3RBY3Rpdml0eVtdXG4gIC8qKiBUaGUgdXNlcidzIG5ldyBzdGF0dXMgKi9cbiAgc3RhdHVzOiBrZXlvZiB0eXBlb2YgUHJlc2VuY2VTdGF0dXNcbn1cblxuLyoqIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5LWV2ZW50cyNhY3Rpdml0eS1vYmplY3QgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQm90QWN0aXZpdHkge1xuICBuYW1lOiBzdHJpbmdcbiAgdHlwZTogQWN0aXZpdHlUeXBlc1xuICB1cmw/OiBzdHJpbmdcbn1cblxuLyoqIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5I3VwZGF0ZS12b2ljZS1zdGF0ZSAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVWb2ljZVN0YXRlIHtcbiAgLyoqIGlkIG9mIHRoZSBndWlsZCAqL1xuICBndWlsZElkOiBzdHJpbmdcbiAgLyoqIGlkIG9mIHRoZSB2b2ljZSBjaGFubmVsIGNsaWVudCB3YW50cyB0byBqb2luIChudWxsIGlmIGRpc2Nvbm5lY3RpbmcpICovXG4gIGNoYW5uZWxJZDogc3RyaW5nIHwgbnVsbFxuICAvKiogSXMgdGhlIGNsaWVudCBtdXRlZCAqL1xuICBzZWxmTXV0ZTogYm9vbGVhblxuICAvKiogSXMgdGhlIGNsaWVudCBkZWFmZW5lZCAqL1xuICBzZWxmRGVhZjogYm9vbGVhblxufVxuXG4vKiogaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL2dhdGV3YXktZXZlbnRzI3VwZGF0ZS1wcmVzZW5jZSAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGF0dXNVcGRhdGUge1xuICAvLyAvKiogVW5peCB0aW1lIChpbiBtaWxsaXNlY29uZHMpIG9mIHdoZW4gdGhlIGNsaWVudCB3ZW50IGlkbGUsIG9yIG51bGwgaWYgdGhlIGNsaWVudCBpcyBub3QgaWRsZSAqL1xuICAvLyBzaW5jZTogbnVtYmVyIHwgbnVsbDtcbiAgLyoqIFRoZSB1c2VyJ3MgYWN0aXZpdGllcyAqL1xuICBhY3Rpdml0aWVzPzogQ2FtZWxpemU8QXJyYXk8T21pdDxEaXNjb3JkQWN0aXZpdHksIFwiY3JlYXRlZF9hdFwiPj4+XG4gIC8qKiBUaGUgdXNlcidzIG5ldyBzdGF0dXMgKi9cbiAgc3RhdHVzOiBrZXlvZiB0eXBlb2YgUHJlc2VuY2VTdGF0dXNcbiAgLy8gLyoqIFdoZXRoZXIgb3Igbm90IHRoZSBjbGllbnQgaXMgYWZrICovXG4gIC8vIGFmazogYm9vbGVhbjtcbn1cbiJdLCJuYW1lcyI6WyJTaGFyZFN0YXRlIiwiQ29ubmVjdGVkIiwiQ29ubmVjdGluZyIsIkRpc2Nvbm5lY3RlZCIsIlVuaWRlbnRpZmllZCIsIklkZW50aWZ5aW5nIiwiUmVzdW1pbmciLCJPZmZsaW5lIiwiU2hhcmRTb2NrZXRDbG9zZUNvZGVzIiwiU2h1dGRvd24iLCJSZXN1bWVDbG9zaW5nT2xkQ29ubmVjdGlvbiIsIlpvbWJpZWRDb25uZWN0aW9uIiwiVGVzdGluZ0ZpbmlzaGVkIiwiUmVzaGFyZGVkIiwiUmVJZGVudGlmeWluZyJdLCJtYXBwaW5ncyI6IkFBQUEsV0FHTyxxQkFBS0EsVUFBVSxFQUFWQSxXQUFBQSxXQUVWQyxVQUFZLEdBQVpBLFlBRlVELFdBQUFBLFdBSVZFLFdBQWEsR0FBYkEsYUFKVUYsV0FBQUEsV0FNVkcsYUFBZSxHQUFmQSxlQU5VSCxXQUFBQSxXQVFWSSxhQUFlLEdBQWZBLGVBUlVKLFdBQUFBLFdBVVZLLFlBQWMsR0FBZEEsY0FWVUwsV0FBQUEsV0FZVk0sU0FBVyxHQUFYQSxXQVpVTixXQUFBQSxXQWNWTyxRQUFVLEdBQVZBLFdBZFVQLGFBQUFBLDJCQWtITCxnQ0FBS1EscUJBQXFCLEVBQXJCQSxzQkFBQUEsc0JBRVZDLFNBQVcsS0FBWEEsV0FGVUQsc0JBQUFBLHNCQUlWRSwyQkFBNkIsTUFBN0JBLDZCQUpVRixzQkFBQUEsc0JBUVZHLGtCQUFvQixNQUFwQkEsb0JBUlVILHNCQUFBQSxzQkFVVkksZ0JBQWtCLE1BQWxCQSxrQkFWVUosc0JBQUFBLHNCQVlWSyxVQUFZLE1BQVpBLFlBWlVMLHNCQUFBQSxzQkFjVk0sY0FBZ0IsTUFBaEJBLGlCQWRVTix3QkFBQUEifQ==
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFjdGl2aXR5VHlwZXMsIENhbWVsaXplLCBEaXNjb3JkQWN0aXZpdHksIERpc2NvcmRHYXRld2F5UGF5bG9hZCwgR2F0ZXdheU9wY29kZXMsIFByZXNlbmNlU3RhdHVzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgdHlwZSBTaGFyZCBmcm9tICcuL1NoYXJkLmpzJ1xuXG5leHBvcnQgZW51bSBTaGFyZFN0YXRlIHtcbiAgLyoqIFNoYXJkIGlzIGZ1bGx5IGNvbm5lY3RlZCB0byB0aGUgZ2F0ZXdheSBhbmQgcmVjZWl2aW5nIGV2ZW50cyBmcm9tIERpc2NvcmQuICovXG4gIENvbm5lY3RlZCA9IDAsXG4gIC8qKiBTaGFyZCBzdGFydGVkIHRvIGNvbm5lY3QgdG8gdGhlIGdhdGV3YXkuIFRoaXMgaXMgb25seSB1c2VkIGlmIHRoZSBzaGFyZCBpcyBub3QgY3VycmVudGx5IHRyeWluZyB0byBpZGVudGlmeSBvciByZXN1bWUuICovXG4gIENvbm5lY3RpbmcgPSAxLFxuICAvKiogU2hhcmQgZ290IGRpc2Nvbm5lY3RlZCBhbmQgcmVjb25uZWN0aW9uIGFjdGlvbnMgaGF2ZSBiZWVuIHN0YXJ0ZWQuICovXG4gIERpc2Nvbm5lY3RlZCA9IDIsXG4gIC8qKiBUaGUgc2hhcmQgaXMgY29ubmVjdGVkIHRvIHRoZSBnYXRld2F5IGJ1dCBvbmx5IGhlYXJ0YmVhdGluZy4gQXQgdGhpcyBzdGF0ZSB0aGUgc2hhcmQgaGFzIG5vdCBiZWVuIGlkZW50aWZpZWQgd2l0aCBkaXNjb3JkLiAqL1xuICBVbmlkZW50aWZpZWQgPSAzLFxuICAvKiogU2hhcmQgaXMgdHJ5aW5nIHRvIGlkZW50aWZ5IHdpdGggdGhlIGdhdGV3YXkgdG8gY3JlYXRlIGEgbmV3IHNlc3Npb24uICovXG4gIElkZW50aWZ5aW5nID0gNCxcbiAgLyoqIFNoYXJkIGlzIHRyeWluZyB0byByZXN1bWUgYSBzZXNzaW9uIHdpdGggdGhlIGdhdGV3YXkuICovXG4gIFJlc3VtaW5nID0gNSxcbiAgLyoqIFNoYXJkIGdvdCBzaHV0IGRvd24gc3R1ZGllZCBvciBkdWUgdG8gYSBub3QgKHNlbGYpIGZpeGFibGUgZXJyb3IgYW5kIG1heSBub3QgYXR0ZW1wdCB0byByZWNvbm5lY3Qgb24gaXRzIG93bi4gKi9cbiAgT2ZmbGluZSA9IDYsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmRHYXRld2F5Q29uZmlnIHtcbiAgLyoqIFdoZXRoZXIgaW5jb21pbmcgcGF5bG9hZHMgYXJlIGNvbXByZXNzZWQgdXNpbmcgemxpYi5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGNvbXByZXNzOiBib29sZWFuXG4gIC8qKiBUaGUgY2FsY3VsYXRlZCBpbnRlbnQgdmFsdWUgb2YgdGhlIGV2ZW50cyB3aGljaCB0aGUgc2hhcmQgc2hvdWxkIHJlY2VpdmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIGludGVudHM6IG51bWJlclxuICAvKiogSWRlbnRpZnkgcHJvcGVydGllcyB0byB1c2UgKi9cbiAgcHJvcGVydGllczoge1xuICAgIC8qKiBPcGVyYXRpbmcgc3lzdGVtIHRoZSBzaGFyZCBydW5zIG9uLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJkYXJ3aW5cIiB8IFwibGludXhcIiB8IFwid2luZG93c1wiXG4gICAgICovXG4gICAgb3M6IHN0cmluZ1xuICAgIC8qKiBUaGUgXCJicm93c2VyXCIgd2hlcmUgdGhpcyBzaGFyZCBpcyBydW5uaW5nIG9uLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJEaXNjb3JkZW5vXCJcbiAgICAgKi9cbiAgICBicm93c2VyOiBzdHJpbmdcbiAgICAvKiogVGhlIGRldmljZSBvbiB3aGljaCB0aGUgc2hhcmQgaXMgcnVubmluZy5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFwiRGlzY29yZGVub1wiXG4gICAgICovXG4gICAgZGV2aWNlOiBzdHJpbmdcbiAgfVxuICAvKiogQm90IHRva2VuIHdoaWNoIGlzIHVzZWQgdG8gY29ubmVjdCB0byBEaXNjb3JkICovXG4gIHRva2VuOiBzdHJpbmdcbiAgLyoqIFRoZSBVUkwgb2YgdGhlIGdhdGV3YXkgd2hpY2ggc2hvdWxkIGJlIGNvbm5lY3RlZCB0by5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJ3c3M6Ly9nYXRld2F5LmRpc2NvcmQuZ2dcIlxuICAgKi9cbiAgdXJsOiBzdHJpbmdcbiAgLyoqIFRoZSBnYXRld2F5IHZlcnNpb24gd2hpY2ggc2hvdWxkIGJlIHVzZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDEwXG4gICAqL1xuICB2ZXJzaW9uOiBudW1iZXJcbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBudW1iZXIgb2Ygc2hhcmRzIHRvIGNvbm5lY3QgdG8gYWNyb3NzIHRoZSBlbnRpcmUgYm90LlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICB0b3RhbFNoYXJkczogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmRIZWFydCB7XG4gIC8qKiBXaGV0aGVyIG9yIG5vdCB0aGUgaGVhcnRiZWF0IHdhcyBhY2tub3dsZWRnZWQgYnkgRGlzY29yZCBpbiB0aW1lLiAqL1xuICBhY2tub3dsZWRnZWQ6IGJvb2xlYW5cbiAgLyoqIEludGVydmFsIGJldHdlZW4gaGVhcnRiZWF0cyByZXF1ZXN0ZWQgYnkgRGlzY29yZC4gKi9cbiAgaW50ZXJ2YWw6IG51bWJlclxuICAvKiogSWQgb2YgdGhlIGludGVydmFsLCB3aGljaCBpcyB1c2VkIGZvciBzZW5kaW5nIHRoZSBoZWFydGJlYXRzLiAqL1xuICBpbnRlcnZhbElkPzogTm9kZUpTLlRpbWVyXG4gIC8qKiBVbml4IChpbiBtaWxsaXNlY29uZHMpIHRpbWVzdGFtcCB3aGVuIHRoZSBsYXN0IGhlYXJ0YmVhdCBBQ0sgd2FzIHJlY2VpdmVkIGZyb20gRGlzY29yZC4gKi9cbiAgbGFzdEFjaz86IG51bWJlclxuICAvKiogVW5peCB0aW1lc3RhbXAgKGluIG1pbGxpc2Vjb25kcykgd2hlbiB0aGUgbGFzdCBoZWFydGJlYXQgd2FzIHNlbnQuICovXG4gIGxhc3RCZWF0PzogbnVtYmVyXG4gIC8qKiBSb3VuZCB0cmlwIHRpbWUgKGluIG1pbGxpc2Vjb25kcykgZnJvbSBTaGFyZCB0byBEaXNjb3JkIGFuZCBiYWNrLlxuICAgKiBDYWxjdWxhdGVkIHVzaW5nIHRoZSBoZWFydGJlYXQgc3lzdGVtLlxuICAgKiBOb3RlOiB0aGlzIHZhbHVlIGlzIHVuZGVmaW5lZCB1bnRpbCB0aGUgZmlyc3QgaGVhcnRiZWF0IHRvIERpc2NvcmQgaGFzIGhhcHBlbmVkLlxuICAgKi9cbiAgcnR0PzogbnVtYmVyXG4gIC8qKiBJZCBvZiB0aGUgdGltZW91dCB3aGljaCBpcyB1c2VkIGZvciBzZW5kaW5nIHRoZSBmaXJzdCBoZWFydGJlYXQgdG8gRGlzY29yZCBzaW5jZSBpdCdzIFwic3BlY2lhbFwiLiAqL1xuICB0aW1lb3V0SWQ/OiBOb2RlSlMuVGltZW91dFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJkRXZlbnRzIHtcbiAgLyoqIEEgaGVhcnRiZWF0IGhhcyBiZWVuIHNlbmQuICovXG4gIGhlYXJ0YmVhdD86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIEEgaGVhcnRiZWF0IEFDSyB3YXMgcmVjZWl2ZWQuICovXG4gIGhlYXJ0YmVhdEFjaz86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIFNoYXJkIGhhcyByZWNlaXZlZCBhIEhlbGxvIHBheWxvYWQuICovXG4gIGhlbGxvPzogKHNoYXJkOiBTaGFyZCkgPT4gdW5rbm93blxuICAvKiogVGhlIFNoYXJkcyBzZXNzaW9uIGhhcyBiZWVuIGludmFsaWRhdGVkLiAqL1xuICBpbnZhbGlkU2Vzc2lvbj86IChzaGFyZDogU2hhcmQsIHJlc3VtYWJsZTogYm9vbGVhbikgPT4gdW5rbm93blxuICAvKiogVGhlIHNoYXJkIGhhcyBzdGFydGVkIGEgcmVzdW1lIGFjdGlvbi4gKi9cbiAgcmVzdW1pbmc/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBUaGUgc2hhcmQgaGFzIHN1Y2Nlc3NmdWxseSByZXN1bWVkIGFuIG9sZCBzZXNzaW9uLiAqL1xuICByZXN1bWVkPzogKHNoYXJkOiBTaGFyZCkgPT4gdW5rbm93blxuICAvKiogRGlzY29yZCBoYXMgcmVxdWVzdGVkIHRoZSBTaGFyZCB0byByZWNvbm5lY3QuICovXG4gIHJlcXVlc3RlZFJlY29ubmVjdD86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIFRoZSBzaGFyZCBzdGFydGVkIHRvIGNvbm5lY3QgdG8gRGlzY29yZCdzIGdhdGV3YXkuICovXG4gIGNvbm5lY3Rpbmc/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBUaGUgc2hhcmQgaXMgY29ubmVjdGVkIHdpdGggRGlzY29yZCdzIGdhdGV3YXkuICovXG4gIGNvbm5lY3RlZD86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIFRoZSBzaGFyZCBoYXMgYmVlbiBkaXNjb25uZWN0ZWQgZnJvbSBEaXNjb3JkJ3MgZ2F0ZXdheS4gKi9cbiAgZGlzY29ubmVjdGVkPzogKHNoYXJkOiBTaGFyZCkgPT4gdW5rbm93blxuICAvKiogVGhlIHNoYXJkIGhhcyBzdGFydGVkIHRvIGlkZW50aWZ5IGl0c2VsZiB0byBEaXNjb3JkLiAqL1xuICBpZGVudGlmeWluZz86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIFRoZSBzaGFyZCBoYXMgc3VjY2Vzc2Z1bGx5IGJlZW4gaWRlbnRpZmllZCBpdHNlbGYgd2l0aCBEaXNjb3JkLiAqL1xuICBpZGVudGlmaWVkPzogKHNoYXJkOiBTaGFyZCkgPT4gdW5rbm93blxuICAvKiogVGhlIHNoYXJkIGhhcyByZWNlaXZlZCBhIG1lc3NhZ2UgZnJvbSBEaXNjb3JkLiAqL1xuICBtZXNzYWdlPzogKHNoYXJkOiBTaGFyZCwgcGF5bG9hZDogQ2FtZWxpemU8RGlzY29yZEdhdGV3YXlQYXlsb2FkPikgPT4gdW5rbm93blxufVxuXG5leHBvcnQgZW51bSBTaGFyZFNvY2tldENsb3NlQ29kZXMge1xuICAvKiogQSByZWd1bGFyIFNoYXJkIHNodXRkb3duLiAqL1xuICBTaHV0ZG93biA9IDMwMDAsXG4gIC8qKiBBIHJlc3VtZSBoYXMgYmVlbiByZXF1ZXN0ZWQgYW5kIHRoZXJlZm9yZSB0aGUgb2xkIGNvbm5lY3Rpb24gbmVlZHMgdG8gYmUgY2xvc2VkLiAqL1xuICBSZXN1bWVDbG9zaW5nT2xkQ29ubmVjdGlvbiA9IDMwMjQsXG4gIC8qKiBEaWQgbm90IHJlY2VpdmUgYSBoZWFydGJlYXQgQUNLIGluIHRpbWUuXG4gICAqIENsb3NpbmcgdGhlIHNoYXJkIGFuZCBjcmVhdGluZyBhIG5ldyBzZXNzaW9uLlxuICAgKi9cbiAgWm9tYmllZENvbm5lY3Rpb24gPSAzMDEwLFxuICAvKiogRGlzY29yZGVubydzIGdhdGV3YXkgdGVzdHMgaGFlIGJlZW4gZmluaXNoZWQsIHRoZXJlZm9yZSB0aGUgU2hhcmQgY2FuIGJlIHR1cm5lZCBvZmYuICovXG4gIFRlc3RpbmdGaW5pc2hlZCA9IDMwNjQsXG4gIC8qKiBTcGVjaWFsIGNsb3NlIGNvZGUgcmVzZXJ2ZWQgZm9yIERpc2NvcmRlbm8ncyB6ZXJvLWRvd250aW1lIHJlc2hhcmRpbmcgc3lzdGVtLiAqL1xuICBSZXNoYXJkZWQgPSAzMDY1LFxuICAvKiogU2hhcmQgaXMgcmUtaWRlbnRpZnlpbmcgdGhlcmVmb3JlIHRoZSBvbGQgY29ubmVjdGlvbiBuZWVkcyB0byBiZSBjbG9zZWQuICovXG4gIFJlSWRlbnRpZnlpbmcgPSAzMDY2LFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJkU29ja2V0UmVxdWVzdCB7XG4gIC8qKiBUaGUgT1AtQ29kZSBmb3IgdGhlIHBheWxvYWQgdG8gc2VuZC4gKi9cbiAgb3A6IEdhdGV3YXlPcGNvZGVzXG4gIC8qKiBQYXlsb2FkIGRhdGEuICovXG4gIGQ6IHVua25vd25cbn1cblxuLyoqIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5LWV2ZW50cyN1cGRhdGUtcHJlc2VuY2UgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQm90U3RhdHVzVXBkYXRlIHtcbiAgLy8gLyoqIFVuaXggdGltZSAoaW4gbWlsbGlzZWNvbmRzKSBvZiB3aGVuIHRoZSBjbGllbnQgd2VudCBpZGxlLCBvciBudWxsIGlmIHRoZSBjbGllbnQgaXMgbm90IGlkbGUgKi9cbiAgc2luY2U6IG51bWJlciB8IG51bGxcbiAgLyoqIFRoZSB1c2VyJ3MgYWN0aXZpdGllcyAqL1xuICBhY3Rpdml0aWVzOiBCb3RBY3Rpdml0eVtdXG4gIC8qKiBUaGUgdXNlcidzIG5ldyBzdGF0dXMgKi9cbiAgc3RhdHVzOiBrZXlvZiB0eXBlb2YgUHJlc2VuY2VTdGF0dXNcbn1cblxuLyoqIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5LWV2ZW50cyNhY3Rpdml0eS1vYmplY3QgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQm90QWN0aXZpdHkge1xuICBuYW1lOiBzdHJpbmdcbiAgdHlwZTogQWN0aXZpdHlUeXBlc1xuICB1cmw/OiBzdHJpbmdcbn1cblxuLyoqIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5I3VwZGF0ZS12b2ljZS1zdGF0ZSAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVWb2ljZVN0YXRlIHtcbiAgLyoqIGlkIG9mIHRoZSBndWlsZCAqL1xuICBndWlsZElkOiBzdHJpbmdcbiAgLyoqIGlkIG9mIHRoZSB2b2ljZSBjaGFubmVsIGNsaWVudCB3YW50cyB0byBqb2luIChudWxsIGlmIGRpc2Nvbm5lY3RpbmcpICovXG4gIGNoYW5uZWxJZDogc3RyaW5nIHwgbnVsbFxuICAvKiogSXMgdGhlIGNsaWVudCBtdXRlZCAqL1xuICBzZWxmTXV0ZTogYm9vbGVhblxuICAvKiogSXMgdGhlIGNsaWVudCBkZWFmZW5lZCAqL1xuICBzZWxmRGVhZjogYm9vbGVhblxufVxuXG4vKiogaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL2dhdGV3YXktZXZlbnRzI3VwZGF0ZS1wcmVzZW5jZSAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGF0dXNVcGRhdGUge1xuICAvLyAvKiogVW5peCB0aW1lIChpbiBtaWxsaXNlY29uZHMpIG9mIHdoZW4gdGhlIGNsaWVudCB3ZW50IGlkbGUsIG9yIG51bGwgaWYgdGhlIGNsaWVudCBpcyBub3QgaWRsZSAqL1xuICAvLyBzaW5jZTogbnVtYmVyIHwgbnVsbDtcbiAgLyoqIFRoZSB1c2VyJ3MgYWN0aXZpdGllcyAqL1xuICBhY3Rpdml0aWVzPzogQ2FtZWxpemU8QXJyYXk8T21pdDxEaXNjb3JkQWN0aXZpdHksICdjcmVhdGVkX2F0Jz4+PlxuICAvKiogVGhlIHVzZXIncyBuZXcgc3RhdHVzICovXG4gIHN0YXR1czoga2V5b2YgdHlwZW9mIFByZXNlbmNlU3RhdHVzXG4gIC8vIC8qKiBXaGV0aGVyIG9yIG5vdCB0aGUgY2xpZW50IGlzIGFmayAqL1xuICAvLyBhZms6IGJvb2xlYW47XG59XG4iXSwibmFtZXMiOlsiU2hhcmRTdGF0ZSIsIkNvbm5lY3RlZCIsIkNvbm5lY3RpbmciLCJEaXNjb25uZWN0ZWQiLCJVbmlkZW50aWZpZWQiLCJJZGVudGlmeWluZyIsIlJlc3VtaW5nIiwiT2ZmbGluZSIsIlNoYXJkU29ja2V0Q2xvc2VDb2RlcyIsIlNodXRkb3duIiwiUmVzdW1lQ2xvc2luZ09sZENvbm5lY3Rpb24iLCJab21iaWVkQ29ubmVjdGlvbiIsIlRlc3RpbmdGaW5pc2hlZCIsIlJlc2hhcmRlZCIsIlJlSWRlbnRpZnlpbmciXSwibWFwcGluZ3MiOiJBQUFBLFdBR08scUJBQUtBLFVBQVUsRUFBVkEsV0FBQUEsV0FFVkMsVUFBWSxHQUFaQSxZQUZVRCxXQUFBQSxXQUlWRSxXQUFhLEdBQWJBLGFBSlVGLFdBQUFBLFdBTVZHLGFBQWUsR0FBZkEsZUFOVUgsV0FBQUEsV0FRVkksYUFBZSxHQUFmQSxlQVJVSixXQUFBQSxXQVVWSyxZQUFjLEdBQWRBLGNBVlVMLFdBQUFBLFdBWVZNLFNBQVcsR0FBWEEsV0FaVU4sV0FBQUEsV0FjVk8sUUFBVSxHQUFWQSxXQWRVUCxhQUFBQSwyQkFrSEwsZ0NBQUtRLHFCQUFxQixFQUFyQkEsc0JBQUFBLHNCQUVWQyxTQUFXLEtBQVhBLFdBRlVELHNCQUFBQSxzQkFJVkUsMkJBQTZCLE1BQTdCQSw2QkFKVUYsc0JBQUFBLHNCQVFWRyxrQkFBb0IsTUFBcEJBLG9CQVJVSCxzQkFBQUEsc0JBVVZJLGdCQUFrQixNQUFsQkEsa0JBVlVKLHNCQUFBQSxzQkFZVkssVUFBWSxNQUFaQSxZQVpVTCxzQkFBQUEsc0JBY1ZNLGNBQWdCLE1BQWhCQSxpQkFkVU4sd0JBQUFBIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@discordeno/gateway",
|
|
3
|
-
"version": "19.0.0-next.
|
|
3
|
+
"version": "19.0.0-next.f072d12",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"test:test-type": "tsc --project tsconfig.test.json"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@discordeno/types": "19.0.0-next.
|
|
28
|
-
"@discordeno/utils": "19.0.0-next.
|
|
27
|
+
"@discordeno/types": "19.0.0-next.f072d12",
|
|
28
|
+
"@discordeno/utils": "19.0.0-next.f072d12",
|
|
29
29
|
"ws": "^8.11.0"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|